Go语言中文网 为您找到相关结果 281

golang[36]-区块链-数据签名生成

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475package mainimport ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "crypto/elliptic" "log" "fmt")//生成私钥和公钥,生成的私钥为结构体ecdsa.PrivateKey的指针//type PrivateKey struct {// PublicKey// D *big.Int//}func newKeyPair2() (e...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

简明笔记:指针传递和值传递

# 简明笔记:指针传递和值传递 值传递,拷贝一份值接收者的副本。指针传递,则直接指向值接收者。 一个超级简单的列子: ```go package main import ( "fmt" ) type myself struct { name string } func (u myself) self_change_name(name string){ // 注意: 这里是拷贝一份 myself u.name = name fmt.Println(u.name) } func (u *myself) police_station_change_name(name string){ //指向myself u.name = name } func main() { ms := myself{"Po...阅读全文

博文 2019-05-04 14:20:17 faceNL

golang[37]-blockchain-验证数据签名

验证数据签名1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192package mainimport ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "crypto/elliptic" "log" "fmt" "math/big")//生成私钥和公钥,生成的私钥为结构体ecdsa.PrivateKey的指针//type PrivateKey struct...阅读全文

博文 2018-12-13 00:35:45 jonson_jackson

6、 reactor

Reactor 简介 前面提到的 RxJava 库是 JVM 上反应式编程的先驱,也是反应式流规范的基础。RxJava 2 在 RxJava 的基础上做了很多的更新。不过 RxJava 库也有其不足的地方。RxJava 产生于反应式流规范之前,虽然可以和反应式流的接口进行转换,但是由于底层实现的原因,使用起来并不是很直观。RxJava 2 在设计和实现时考虑到了与规范的整合,不过为了保持与 RxJava 的兼容性,很多地方在使用时也并不直观。Reactor 则是完全基于反应式流规范设计和实现的库,没有 RxJava 那样的历史包袱,在使用上更加的直观易懂。Reactor 也是 Spring 5 中反应式编程的基础。学习和掌握 Reactor 可以更好地理解 Spring 5 中的相关概念。 ...阅读全文

博文 2018-10-15 08:34:37 lesline

Golang从入门到精通(十一):Golang方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangxianghehe/article/details/78790601 方法 在 Go 语言中有一个概念和函数极其相似,叫做方法 。Go 语言的方法其实是作用在接收者(receiver)上的一个函数,接收者是某种非内置类型的变量。因此方法是一种特殊类型的函数。 接收者类型可以是(几乎)任何类型,不仅仅是结构体类型:任何类型都可以有方法,甚至可以是函数类型,可以是 int、bool、string 或数组的别名类型。但是接收者不能是一个接口类型。 方法的声明和普通函数的声明类似,只是在函数名称前面多了一个参数,这个参数把这个方法绑定到这个参数对应的类型上。 和函数关系 方法是特殊的函数,定义...阅读全文

博文 2018-12-06 19:31:34 xiangxianghehe

[译] Go:方法接收者应该使用 T 还是 *T

文地址:dave.cheney.net/2016/03/19/… 原文作者:Dave Cheney 译文地址:github.com/watermelo/d… 译者:咔叽咔叽 译者水平有限,如有翻译或理解谬误,烦请帮忙指出 这篇文章是我几天前在 Twitter 上提出的建议的延续。 在 Go 中,对于任何类型 T 都存在类型 *T,表示获取 T 类型(T 表示你声明的类型)变量的地址。例如: type T struct { a int; b bool } var t T // t's type is T var p = &t // p's type is *T 复制代码这两种类型,T 和 *T 是不同的,*T 不能替代 T(此规则是递归的,**T 会返回 *T 地址指向的值)。 你可以在任何类...阅读全文

博文 2019-08-21 13:04:16 咔叽咔叽

区块链密码学

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 区块链密码学11一 、概念主要介绍非对称加密的一些概念。公钥、私钥:均可加密或解密。私钥用来解密和签名,给自己用的。公钥由本人公开,用于加密和验证签名,给他人用的。验签:用公钥解密签名得到摘要,然后用原始文件经过hash得到摘要,与解密出的摘要进行对比。 签名:内容->hash->digest->私钥加密->签名 证书:数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章,即CA的私钥加密生成)后形成的一个数字文件。二、举例说明假设X给Y写一份信,那么这封将...阅读全文

博文 2019-06-21 16:02:43 链客区块链技术问答社区

Golang学习笔记之错误处理error、panic (抛出错误),recover(捕获错误)

一、error 错误表示程序中出现了异常情况。Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 • error类型是go语言的一种内置类型,使用的时候不用特定去import因为它本质上是一个接口 error类型是一个接口类型,这是它的定义: type error interface { Error() string } (1)一个例子理解error package main import ( "fmt" "os" ) func main() { //试图打开一个并不存在的文件,这将会返回一个error f, err := os.Open("/test.txt") if err != nil { fmt.Println(err) //no such file or directory...阅读全文

博文 2018-12-10 21:34:44 学生黄哲

Go语言实战笔记(九)| Go 接口

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 接口是一种约定,它是一个抽象的类型,和我们见到的具体的类型如int、map、slice等不一样。具体的类型,我们可以知道它是什么,并且可以知道可以用它做什么;但是接口不一样,接口是抽象的,它只有一组接口方法,我们并不知道它的内部实现,所以我们不知道接口是什么,但是我们知道可以利用它提供的方法做什么。 抽象就是接口的优势,它不用和具体的实现细节绑定在一起,我们只需定义接口,告诉编码人员它可以做什么,这样我们可以把具体实现分开,这样编码就会更加灵活方面,适应能力也会非常强。 12345func main() { var b bytes.Buffer fmt.Fprint(&b,"Hello Wor...阅读全文

博文 2017-08-25 07:47:02 飞雪无情

golang main 和 init,函数和方法

在golang中有两个特殊的函数,main函数和init函数,main函数不用介绍在所有语言中都一样,它作为一个程序的入口,只能有一个。init函数在每个package是可选的,可有可无,甚至可以有多个(但是强烈建议一个package中一个init函数),init函数在你导入该package时程序会自动调用init函数,所以init函数不用我们手动调用,l另外它只会被调用一次,因为当一个package被多次引用时,它只会被导入一次。 package mypackage import ( "fmt" ) var I int func init() { I = 0 fmt.Println("Call mypackage init1") } func init() { I = 1 fmt.Prin...阅读全文

博文 2018-07-20 00:30:00 huangliang-hb

go语言-常见并发模式

生产者-消费者模型并发编程中最常见的例子就是生产者/消费者模型,该模型主要通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。简单的说,就是生产者生产一些数据,然后放到队列中,同时消费者从队列中来取这些数据。这样就让生产和消费变成了异步的两个过程。当队列中没有数据是,消费者就进入饥饿的等待中;而当对立中数据已满时,生产者则面临产品积压导致CPU被剥夺的问题。//生产者 func Producer(factor int, out chan <- int) { for i := 0; ; i++ { out <- i * factor } } //消费者 func Consumer(in <- chan int) { for v := range in { fmt.Println...阅读全文

博文 2020-03-15 16:33:17 guoguocto

golang-操作不同状态的chan会引起状态总结

panic: 向已经关闭的通道写数据会导致panic。 重复关闭通道会导致panic 死锁 fatal error: all goroutines are asleep - deadlock! 无缓冲通道:需要同时有提供者(chan <- ) 和消费者(<-chan),假如有一方不同时存在,就会死锁. 有缓冲通道:通道缓冲区已满,并且还有goroutine向通道写(chan <- ),但是没有goroutine 读通道(<-chan)到导致死锁. 有缓冲通道:通道内无数据,并且没有goroutine向通道写,但是还有goroutine 读通道(<-chan)道会导致死锁. 阻塞 向未初始化的通道写数据或读写数据会导致当前goroutine的永久阻塞 消费者存在情况下,提供者向缓冲区已满的通道...阅读全文

博文 2020-04-03 20:32:59 崔天浩

Ethereum学习笔记3--以太坊用到的加密技术

一 加密技术总结 "crypto/ecdsa":用与数字签名 "golang.org/x/crypto/sha3" "crypto/rand" "github.com/ethereum/go-ethereum/crypto/bn256/google" "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare" "crypto/elliptic" "github.com/ethereum/go-ethereum/crypto/secp256k1" "crypto/pbkdf2" "crypto/aes" "crypto/cipher" "crypto/hmac "crypto/subtle" "crypto/cipher" "crypto...阅读全文

博文 2019-08-02 21:32:38 陈兴强

go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别?如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗?如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" } M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两个方...阅读全文

博文 2016-09-07 17:00:07 qq_35902556

golang 基础(29) 接口

square-gopher.png 在 go 语言接口更重视使用者,使用者是否承认和使用接口才是重要的,这里定义 Retriever 接口提供 Get 方法,所有具有 Get 方法的都可以认为是接口 package main import ( "fmt" "com.zidea/util/mock" ) type Retriever interface{ Get(url string) string } func download(r Retriever) string { return r.Get("www.baidu.com") } func main() { var r Retriever r = mock.Retriever{"this is fake baidu com"} fmt....阅读全文

博文 2019-04-03 08:34:39 zidea

Golang学习 - io/ioutil 包

// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情 // 并且始终成功返回。 var Discard io.Writer = devNull(0) // ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。 // 如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取 // 所有数据,所以不会把 EOF 当做错误处理。 func ReadAll(r io.Reader) ([]byte, error) // ReadFile 读取文件中的所有数据,返回读取的数据和遇到的错误。 // 如果读取成功,则 err 返回 nil,而不是 EOF func ReadFile(filename string)...阅读全文

博文 2019-04-19 18:34:41 佛心看世界

kingshard SQL黑名单功能介绍

kingshard SQL黑名单功能介绍 1. 应用场景介绍 在kingshard开源之后,有用户多次提到能不能在kingshard中加入SQL黑名单机制,让kingshard能够根据特定的规则来拦截在黑名单中的SQL。有几个比较典型的应用场景: DBA定义一些比较危险的SQL,放在SQL黑名单文件中。可以避免前端应用发过来的SQL对数据库造成危害。这种SQL有可能是开发者粗心编写的,也有可能是被SQL注入生成的SQL。例如:delete from mytable,这种不带where条件的SQL,会把整个表删除。 在kingshard项目上线后,通过log发现存在大量某条SQL给DB造成了很大的压力。这时候可以动态地将这条SQL加入黑名单,阻止该SQL的执行,从而使数据库压力降低。例如:se...阅读全文

博文 2017-02-09 08:11:01 flike

go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别?如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗?如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" } M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两个方...阅读全文

博文 2016-09-08 05:00:02 qq_35902556

Hyperledger Fabric 1.3 特性调研之Identity Mixer(一)

Idemix(Identity Mixer)是一套协议加密组件,提供更强大的身份验证和隐私保护特性。 适用场景 用户发送交易时,需要隐藏自己的身份信息,并且不希望其他人通过追踪交易记录查找到自己发送的交易。即用户的保密要求比较严格,具体为用户在需要以下保密要求时,建议使用该功能: 匿名性(anonymity):不暴露交易者的身份; 无关联性(unlinkability):无法通过多个交易确定发送者身份,即一个身份发送多条交易不会暴露这些交易来自相同的身份。 原理 发行方(issuer)颁发给用户证书,认证用户的一些属性。 用户生成ZKP(zero-knowledge proof),证明自己拥有该证书,并选择性地暴露自己的部分属性;将此ZKP发送给验证方(verifier)即可。 具体在Fab...阅读全文

博文 2019-07-03 17:35:19 RaeSnow

golang模拟带超时的信号量

最近写项目,需要用到信号量等待一些资源完成,但是最多等待N毫秒。 在C语言里,有如下的API来实现带超时的信号量等待: C 12345 SYNOPSIS #include int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); 然后在查看golang的document后,发现golang里并没有实现带超时的信号量,官方文档在这里。 原理 我的业务场景是这样的:我有一个缓存字典,当多个用户请求1个不存在的key时,只有1个请求会穿透到后端,而所有用户都要排队等这个请求完成,或者超时返回。 怎么实现呢?其实稍微想一想c...阅读全文

博文 2017-09-30 09:21:19 鱼儿的博客

知识更新越来越快,但是学习起来越来越困

我是一个着迷于产品和运营的技术人,乐于跨界的终身学习者。欢迎关注我的个人公众号「跨界架构师」 每周五11:45 按时送达~ 我的第「140」篇原创敬上 ​大家好,我是Z哥,先祝大家节日快乐。不知道这个假期你打算出门吗?Z哥我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。并且,随着最近几年知识付费的兴起,提倡「终身学习」的声音越来越大了。不管是出于什么目的在鼓吹「终身学习」,这个观点的价值取向总是正向的。但是对于学习这个问题,困扰我们大部分人的并不是学什么或者怎么学。而是,总是学着学着没动力,半...阅读全文

博文 2020-05-02 23:33:11 跨界架构师

Go面试必考题目之method篇

  在Go的类方法中,分为值接收者方法和指针接收者方法,对于刚开始接触Go的同学来说,有时对Go的方法会感到困惑。下面我们结合题目来学习Go的方法。  为了方便叙述,下文描述的值接收者方法简写为值方法,指针接收者方法简写为指针方法。  下面代码中,哪段编号的代码会报错?具体报什么错误?```Gotype Animal interface { Bark()}type Dog struct {}func (d Dog) Bark() { fmt.Println("dog")}type Cat struct {}func (c *Cat) Bark() { fmt.Println("cat")}func Bark(a Animal) { ...阅读全文

博文 2019-05-23 07:34:41 deletelazy

【运维经】第8章——go get 加速

运维经--目录 go get加速 近几期一直在讲加速,今天该轮到golang了,因为 Go 1.13 将 GOPROXY 默认成了中国大陆无法访问的 https://proxy.golang.org ,所以我们国内的开发者以后必须先修改 GOPROXY 才能正常使用 go 来开发应用了。好在七牛提供了国内代理。 设置环境变量,修改GOPROXY: export GOPROXY=https://goproxy.cn 阿里源 go env -w GO111MODULE=on go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direc...阅读全文

博文 2020-04-13 08:32:40 夏洛克

【go共识算法】-Raft

介绍 Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower :所有结点都以 follower 的状态开始。如果没收到 leader消息则会变成 candidate状态。 candidate:会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)。 leader:所有对系统的修改都会先经过leader。 Raft 一致性算法 Raft通过选出一个leader来简化日志副本的管理,例如,日志项(log entry)只允许从leader流向follower。 基于leader的方法,Raft算法可以分解成三个子问题: L...阅读全文

博文 2018-10-10 20:34:39 jincheng828

【Go语言】【11】GO语言的包和函数

还记得《【2】Sublime配置GO开发环境》的入门例子吗?当然不记得了:) 这篇文章距离上篇时间太久远了,遥远的我都快忘记了。还是把截图贴上吧该例子中的func main()表示这是一个名称叫main的方法,而package main表示这个方法在main包内,这两部分的内容就是本节要分享的知识。这么简单?是的,简单而不简约,呵呵,接着往下看! 开发一个应用系统,考虑到代码的可读性,往往会把代码拆分到不同的包,再给包起一个好记的名字,这样一眼就能明白该包的用途,比如math包,这个就是Go语言本身的数学相关包,该包下面有求绝对值的源文件abs.go,还有求正弦的asin.go等...... 1、那么什么是包?先看个例子: 在E:\GO\workspace\pwm\src\util下创建一个...阅读全文

博文 2017-02-09 15:59:35 qingkechina

golang中crypto/dsa包

DSA是用于数字签名的一种算法,私钥进行签名,公钥进行验证。关于更多dsa内容以及dsa实现移步www.baidu.com。 那么go语言中怎么进行数字签名呢?go语言中怎么进行数字验证呢?下面给出这两个操作的案例代码: package main import ( "crypto/dsa" "crypto/rand" "fmt" ) func main() { // parameters 是私钥的参数 var param dsa.Parameters // L1024N160是一个枚举,根据L1024N160来决定私钥的长度(L N) dsa.GenerateParameters(¶m, rand.Reader, dsa.L1024N160) // 定义私钥的变量 var priva...阅读全文

博文 2018-12-09 11:34:43 laijh

BitKan

梅克尔树(Merkle trees)是区块链的基本组成部分。虽说从理论上来讲,没有梅克尔树的区块链当然也是可能的,你只需创建直接包含每一笔交易的巨大区块头(block header)就可以实现,但这样做无疑会带来可扩展性方面的挑战,从长远发展来看,可能最后将只有那些最强大的计算机,才可以运行这些无需受信的区块链。 正是因为有了梅克尔树,以太坊节点才可以建立运行在所有的计算机、笔记本、智能手机,甚至是那些由Slock.it生产的物联网设备之上。那么,究竟梅克尔树是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的? 首先,咱们先来讲点基础知识。梅克尔树,一般意义上来讲,它是哈希大量聚集数据“块”(chunk)的一种方式,它依赖于将这些数据“块”分裂成较小单位(bucket)的数据块,每一...阅读全文

博文 2017-12-06 03:34:43 谈谈以太坊的Merkle树

golang 接口

1、自定义类型存入接口的内存布局 接口值是一个两个字节长度数据结构,第一个字节包含一个指向内部表的指针(iTable),包含了存储的值的类型信息及和这个值判刑的一组方法。第二个字节指向所存储值的指针。如果将指针赋值给接口,则类信息会存储一个指向保存的类型的指针,接口的第二个字节依旧保存指向实体值的指针。(图B) 图A 图B 2、方法接收者(方法集) 自定义类型 T 的值的指针(t *T)的方法集,由接收者为 T 和 *T 的组成,如果在指针上调用一个接受值类型的方法,go会自动将该指针解引用,并将指针所指的底层值作为方法的接收者 自定义类型 T 的值(t T)的方法集,由接收者为 T的组成。如果我们只有一个值 T,仍然可以调用一个接收者为指针类型的方法,这可以借助于go语言传值的地址的能力实...阅读全文

博文 2018-08-13 16:31:32 convict_eva

新人好迷惑。关于方法中的指针接收者的问题。

type Point struct { x,y int } func main(){ p:=&Point{2,4} p.double()//可以 (*p).double()//可以 (&Point{2,4}).double()//可以 (Point{2,4}).double()//报错 } func (p *Point)double()int{ return p.x+p.y } 编译报错无法获得Point类型字面量的地址。 不明白为什么手动加了&就可以了呢?我看教程上面的解释是无法获取临时变量的地址。 但&不就是取地址操作吗?为什么对Point类型字面量手动取地址就可以调用它的方...阅读全文

Go语言的类型系统

Go语言允许用户定义类型。当用户声明一个类型时,这个声明就给编译器提供了一个框架,告知必要的内存大小和信息。 声明结构类型 type user struct { name string email string } 上述代码声明的结构类型有2个字段,每个字段都基于一个内置类型。一旦声明了类型,就可以使用这个类型创建值。 使用结构类型声明变量 var zuckjet user 我们用关键字var创建了类型为user且名为zuckjet的变量。当声明变量时,这个变量对应的值总是会被初始化。这个值要么是用指定的值初始化,要么用零值来初始化。对数值来类型来说,零值是0;对字符串来说,零值是空字符串。下面我们来看一下如何声明一个user类型的变量,并使用某个非零值作为初始值。 zuckberg := ...阅读全文

博文 2018-07-31 18:34:47 大猪熬药

兄弟连区块链教程Fabric1.0源代码分析Peer peer chaincode命令及子命令实现

兄弟连区块链教程Fabric1.0源代码分析Peer peer chaincode命令及子命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。# Fabric 1.0源代码笔记 之 Peer #peer chaincode命令及子命令实现## 1、peer chaincode install子命令实现(安装链码)### 1.0、peer chaincode install子命令概述peer chaincode install,将链码的源码和环境封装为一个链码安装打包文件,并传输到背书节点。peer chaincode install支持如下两种方式:* 指...阅读全文

博文 2018-11-06 19:34:39 兄弟连区块链培训

go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别?如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗?如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" } M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两个方...阅读全文

博文 2016-10-27 10:00:03 qq_35902556

Golang语言中的method是什么

什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。method的语法:func (r Receiver) funcName (parameters) (result)。receiver可以看作是method的第一个参数,method并且支持继承和重写。 ``` /** * 什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。 * method的语法:func (r Receiver) funcName (parameters) (result)。 * receiver可以看作是method的第一个参数,method并且支持继承和重写。 */ package main import ( "fmt" ) type Human st...阅读全文

博文 2019-04-29 16:37:40 frankphper

阿里云移动数据分析服务使用教程

课程介绍 移动数据分析 (Mobile Analytics) 是阿里云推出的一款移动App数据统计分析产品,为开发者提供一站式数据化运营服务:通用的多维度用户行为分析、数据开放并支持自定义分析、数据无缝对接其他数据应用产品,助力移动开发者实现基于大数据技术的精细化运营、提升产品质量和体验、增强用户黏性。 产品详情:https://www.aliyun.com/product/man/ 课时列表 • 课时1:开通服务及创建应用 • 课时2:集成SDK及初始化应用 • 课时3:页面及自定义事件埋点 • 课时4:业务分析报表 • 课时5:数据自定义分析 开始学习http://click.aliyun.com/m/27867/ ...阅读全文

区块链开发者教程大汇总,Php/Python/C#/Node/Go

Mixin Network是一个免费,1秒确认的高速转账网络。我们撰写了基于多种语言的系列教程,开发者可以15分钟搭建一个比特币收款应用。 教程 PHP Go Node.js C# Python 创建机器人接收发送消息 php 1 Go 1 Node.js 1 C# 1 python 1 机器人接收发送比特币 php 2 Go 2 Node.js 2 C# 2 python 2 创建比特币钱包,转账 php 3 Go 3 Node.js 3 C# 3 python 3 买卖比特币 php 4 Go 4 Node.js 4 C# 4 Mixin Network开发者资料汇...阅读全文

博文 2019-04-12 14:34:44 Mixin_Network

观察者模式实战

本文转自“雨夜随笔”公众号,欢迎关注。 在上一篇文章中,我们简单了讲了一下设计模式和观察者模式。那么这次让我们详细了解一下观察者模式和我们如何进行使用。 内容 还记得上一篇文章中,我们说过了解或者设计一个设计模式的时候,要按照下面四点进行分析: image.png 意图 在实际业务场景中,我们经常遇到这样的稳定,也就是在某个对象发生某种事件时,通知其他相关的对象。所以观察者模式就允许你定义一种订阅机制,使得订阅某种事件的对象能够在事件发生时得到通知。 动机 我们来分析一种常见的业务场景,也就是购物APP中经常遇到的货物上架提醒,如果为了实现这种需求,我们可以按照下面的方式来实现: 成本最低:我们知道在开发中成本最低的就是不做这个需求,当然这个是开玩笑,不过一般在开发初期,我们可能会分析需求的...阅读全文

博文 2020-05-03 12:32:44 soolaugust

Golang面试之HTTPS

引用 HTTPS协议详解(一):HTTPS基础知识 TLS/SSL工作原理 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 深入HTTPS系列四(中间人攻击) HTTPS中间人攻击及防御 建议阅读 SSL/TLS 握手过程详解 细说 CA 和证书 扯一扯HTTPS单向认证、双向认证、抓包原理、反抓包策略 HTTPS协议 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 TLS/SSL全称安全传输层协议Transport Layer Security, 是介于T...阅读全文

博文 2020-05-11 19:32:50 网管同学

初识Clef

初识Clef 以太坊版本1.8.4开始,增加了独立签名人Clef功能,该功能目前尚处在alpha阶段。它主要实现了签署交易、签署数据和管理账户。它的README中是这样描述的: Clef可以用来签署交易和数据,并且可以代替geth的账户管理。这使DApps不依赖于geth的账户管理。 当DApp想要签署数据时,它可以将数据发送给签名者,然后签名者将向用户提供上下文并要求用户签署数据。 如果用户授予签名请求,签名者将签名发送回DApp。 此设置允许DApp连接到远程以太坊节点并发送本地签名的事务。 这可以在DApp连接到远程节点的情况下提供帮助,因为本地以太坊节点不可用,不与同步链或没有内置(或有限)帐户管理的特定以太坊节点同步。 Clef可以在同一台机器上作为守护进程运行,也可以在usb-s...阅读全文

博文 2018-06-03 17:34:38 alphaqiu

玩游戏的大神?学习上的残疾?再不学习2020Android没凉,你凉了

前言 大家好,五一到了,在这里先祝大家节日快乐。不知道这个假期你打算出门吗?我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。 相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。 并且,随着最近几年知识付费的兴起,提倡「终身学习」的声音越来越大了。不管是出于什么目的在鼓吹「终身学习」,这个观点的价值取向总是正向的。 但是对于学习这个问题,困扰我们大部分人的并不是学什么或者怎么学。而是,总是学着学着没动力,半途而废了。甚至是一开始学习就犯困、打瞌睡。 不瞒你说,我之前也在这种状态困扰过好久,深知这种感受的滋味。 毕竟,再好的美食,吃不下去对你来说...阅读全文

博文 2020-05-04 23:32:43 Android进阶小言

GO基础:method相关

// method相关 // method是特殊的function,带有reciever参数。 // https://tour/golang.org package main import ( "fmt" "math" ) type Vertex struct{ X, Y float64 } // go 中没有类的概念 // method 方法,有接受者参数的函数 func (v Vertex) AbsMethod1() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } // function 普通的函数, func AbsFunc1(v Vertex) float64{ return math.Sqrt(v.X*v.X + v.Y*v.Y) }...阅读全文

博文 2016-09-14 16:00:00 Wolfanature

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-12 15:49:11 kxg3030

Delve代码分析笔记(3)——config

Delve程序运行起来以后,首先就会加载和解析配置文件: func New() *cobra.Command { // Config setup and load. conf = config.LoadConfig() ...... } Delve的配置文件位于用户home目录下的.dlv文件夹下,文件名是config.yml。例如,如果是root用户,则配置文件的全路径是:/root/.dlv/config.yml。目前配置文件只支持为命令指定别名。 config包只包含一个config.go文件。代码也比较简单,归纳起来就是:如果用户没有创建配置文件,则替用户创建一个(里面没有实质内容),然后读取配置文件内容,并把Config结构体(定义如下)返回给调用者。 // Config defi...阅读全文

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-09 12:09:07 kxg3030

Go 语言学习5 - 面向接口

一、接口 1.1、定义接口 // notifier 是一个定义了通知类行为的接口 type notifier interface { // 接口方法 notify() } 1.2、实现接口 使用值接收者实现接口 // notify 是使用值接收者实现 notifier interface 接口的方法 // sendNotification(&u) 和 sendNotification(u) 都可 func (u user) notify() { fmt.Println("notify", u) } 对于值接收者,sendNotification(&u) 和 sendNotification(u) 都可 使用指针接收者实现接口 // notify 是使用指针接收者实现 notifier int...阅读全文

博文 2018-11-11 22:34:41 原水寒

Go 之旅四: 方法与接口篇

本文是学习 A Tour of Go (中文参考 Go 之旅中文 ) 整理的笔记,介绍Go 语言方法,接口,类型的基本概念和使用。 1. 方法 $GOPATH/src/go_note/gotour/methods/method/method.go 源码如下: /** * go 语言 方法 */ package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } /** * 方法名: Abs_method * 方法接收者: Vertex */ func (v Vertex) Abs_method() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } // 传指针 func...阅读全文

博文 2017-03-10 05:51:09 xugang

Hyperledger-Fabric源码分析(加入通道)

前一篇讲完通道创建,接下来马上趁热打铁来看下加入通道这部分的实现,先看下命令。 peer channel join -b mychannel.block 可以看到,这里用上了上一步所生成的通道的genesisblock。 peer executeJoin func executeJoin(cf *ChannelCmdFactory) (err error) { spec, err := getJoinCCSpec() if err != nil { return err } // Build the ChaincodeInvocationSpec message invocation := &pb.ChaincodeInvocationSpec{ChaincodeSpec: spec} cr...阅读全文

博文 2019-04-09 09:34:40 Pillar_Zhong

fabric msp架构概览

基本概念 MSP,全称Membership Service Provider,即成员关系服务提供者,是 Hyperledger Fabric 1.0版本开始抽象出来的一个模块化组件,用来管理Fabric中的众多参与者(peer、order等)。 MSP将颁发证书和校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。对fabric网络中的成员进行身份的管理(身份验证)与认证(签名与验签)。 image organization 和 MSP 组织ORG1拥有的MSP叫ORG1.MSP,而组织ORG2业务复杂,所以维护了3个MSP。 organization与MSP之间的专一性关系,使得在organization之后命名MSP是明智的,在大多数policy配置中,您会发现这一个惯例。 例...阅读全文

博文 2020-03-11 13:33:16 框框下山

golang 邮件发送代码片段

//1 获取当前发送邮件的时间 t := time.Now() s := t.Format("2006-01-02 15:04:05") //2准备发送人的邮箱信息(用户名,密码等,以及发送者邮箱域名) hostname := "smtp.bszhihui.com" auth := smtp.PlainAuth("", "yunwei@bszhihui.com", "xxxxxx", hostname) //3 组织发送内容 msg := []byte("From: DevOps\r\n" + "Subject: Notice " + sub + " - " + s + "\r\n" + "\r\n" + mesg + "\r\n") //4 发送邮...阅读全文

博文 2017-08-22 10:03:19 牛牛张

新手练习-消费者生产者模型

``` package main import ( "fmt" "math/rand" "sync" ) func main() { c := sync.NewCond(&sync.Mutex{}) queueList := make(chan int, 10) //producer go func() { for { c.L.Lock() if len(queueList) == 5 { c.Wait() } num := rand.Intn(100) fmt.Println("Producer:", num) queueList <- num if len(queueList) == 5 { c.Signal() } c.L.Unlock() } }() //consumer go fu...阅读全文

博文 2018-12-29 10:36:07 liuzhang

高级 PHP、Swoole、Go 开发者的聚集地,期待你的加入!

##### 为什么要创建这个群? * 有众多的PHP开发人员在同时学习Swoole和Go,但目前没有一个综合的群出现 * 很多Swoole的群对PHP开发人员不是很友好,都在推广自己的开源产品,很少解答新手的问题 * 在这个开发技术日新月异的时代,只有向优秀人学习和交流,才能真正理解一些前沿的技术 * 群内有资深并且热情的golang大佬,第一时间解答疑问,解答但不限于操作系统,网络协议,服务架构方面的问题。 * 群内有资深并且热情的Swoole大佬,第一时间解答疑问,解答但不限于swoole方面的问题。 * 定位于高级PHP和希望通过学习swoole和golang来提升自己的初中级PHP,摆脱低级curd。 ##### 热情邀请你的加入 ![高级 PHP、Swoole、Go 开发者的聚集地...阅读全文

博文 2019-04-04 14:44:01 kxg3030