我的Blog

万物皆虚,万事皆允

Fabric-ca结构分析

Fabric-ca整体通信架构 上图是Fabric-ca部分通信的流程,整体的流程是: Server端初始化(CA根证书生成) Server端启动服务 Client端向Server端请求登记 Server端向Client端返回登记证书ECert Client端向Server端请求注册节点 Server端向Client端返回节点注册信息结果 Client端...

加密算法

加解密算法是密码学的核心技术,从设计理念上可以分为两大基本类型。 根据加解密过程中所使用的密钥是否相同,算法可以分为对称加密(symmetric cryptography,又称公共密钥加密,common-key cryptography)和非对称加密(asymmetric cryptography,又称公钥加密,public-key cryptography)。两种模式适用于不同的需求,恰...

Go语言的测试

1.go test工具 在一个包目录中,以_test.go结尾的文件不是go build命令编译的目标,而是go test编译的目标。 在*_test.go文件中,有三种函数需要特殊对待: 功能测试函数:以Test前缀命名的函数,用来检测一些程序逻辑的正确性,go test运行测试函数,报告结果是PASS还是FAIL。 基准测试函数:以Benchmark开头,用来测试某些操作的...

Go语言的复合数据类型

1.数组 数组长度固定,Go中很少直接使用,而slice长度可长可短使用的场合更多。 package main import "fmt" func main() { var a [3]int //3个整数的数组 fmt.Println(a[0]) // 输出数组的第一个元素 fmt.Println(a[len(a)-1]) //输出数组的最后一个元素a[2] for i , ...

Go语言的方法

方法中的自己的总结 方法的声明 方法的声明和普通函数的声明类似,只是在函数名字前面多了一个参数。这个参数吧这个方法绑定到这个参数对应的类型上: package main import "math" type Point struct { X, Y float64 } // 普通的函数 func Distance(q, p Point) float64{ return m...

Go语言的反射

reflect的理解

reflect.Type和reflect.Value 反射功能是由reflect包提供的,它定义了两个重要类型:Type和Value。 Type表示Go语言的一个类型,它是一个有很多方法的接口,这些方法可以用来识别类型以及透视类型的组成部分,比如一个结构的各个字段或者一个函数的各个参数。 func main() { t := reflect.TypeOf(3) /...

Go语言的并发

并发基本概念

goroutine 在Go中,每一个并发执行的活动称为goroutine。 当一个程序启动后,只有一个goroutine来调用main函数,称为主goroutine。新的goroutine通过go创建。 f() // 调用f()等待它返回 go f() // 新建一个调用f()的goroutine, 不用等待 下面,go计算第45个斐波那契,spinner作为指示器,指示程序依然...