- 博客(16)
- 收藏
- 关注
原创 Golang GMP调度模型
解释GMP模型含义M结构是Machine,系统线程,它由操作系统管理,goroutine就是跑在M之上的;M是一个很大的结构,里面维护小对象内存cache(mcache)、当前执行的goroutine、随机数发生器等等非常多的信息P结构是Processor,处理器,它的主要用途就是用来执行goroutine,它维护了一个goroutine队列,即runqueue。Processor的让我们从...
2019-09-10 12:51:04
14214
原创 Golang goroutine
协程Coroutine轻量级“线程”非抢占式多任务处理,由协程主动交出控制权编译器/解释器/虚拟机层面的多任务多个协程可以在一个或多个线程上运行func main() { var a [10]int for i := 0; i < 10; i++ { go func(i int) { for { a[i]++ } }(i) } time.Sl...
2019-08-20 13:48:49
221
原创 Golang 表格驱动测试
传统测试测试数据和测试逻辑混在一起出错信息不明确一旦一个数据出错测试全部结束表格驱动测试分离的测试数据和测试逻辑明确的出错信息可以部分失败go语言的语法可以让我们更容易的实践表格驱动测试tests := []struct { a, b, c int32}{ {1, 2, 3}, {0, 2, 2}, {0, 0, 0}, {-1, 1, 0}, {math....
2019-08-20 11:59:37
393
原创 Golang panic
panic 尽量少用panic 特点停止当前函数执行一直向上返回,执行每一层的defer如果没有遇到recover,程序退出 关于recover仅在defer调用中使用获取panic的值如果无法处理,可重新panicfunc tryRecover() { defer func() { r := recover() if err, ok := r....
2019-08-19 21:35:05
165
转载 Golang 各种格式化
/* %v 输出结构体 {10 30} %+v 输出结构体显示字段名 {one:10 tow:30} %#v 输出结构体源代码片段 main.Point{one:10, tow:30} %T 输出值的类型 main.Point %t 输出格式化布尔值 true %d`输...
2019-08-19 21:33:30
2427
原创 Golang defer和错误处理
特点确保调用在函数结束时发生 内部是一个栈,后进先出,例如 defer fmt.Println(1)defer fmt.Println(2)// 会输出2 1 遇到了return、panic依然可以输出,这里的意思是说,如果defer后边有return或panic,依然会在函数的最后执行defer后边的内容,比如 func tryDefer() { defer fm...
2019-08-19 21:10:28
868
原创 Golang 函数式编程
Golang中的函数式编程有这么几个特点函数是一等公民:参数,变量,返回值都可以是函数 高阶函数,函数的参数,返回值也是函数 函数 -> 闭包正统的函数式编程不可变性:不能有状态,只能有常量和函数 函数只能有一个参数func adder() func(int) int { sum := 0 // v是一个局部变量 return func(v int) int {...
2019-08-19 15:52:00
207
原创 Golang 接口组合
// 实现者package faketype Retriever struct{ Contents string}func (r *Retriever) Get(url string) string { return r.Contents}func (r *Retriever) Post(url string, form map[string]string) string...
2019-08-19 13:58:06
278
原创 Golang duck typing(鸭子类型)的概念
“像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子” 描述事物的外部行为而非内部结构 严格说go属于结构化类型系统,类似dock typing先看一个其他语言中的duck typing :python中的duck typing def download(retriever): return retriever.get("www.fabric.com") 运行时才知道传入...
2019-08-19 11:56:20
3115
原创 Golang 值接收者与指针接收者
什么是接收者func (接收者名字 接收者类型) 方法名() { }值接收者示例type treeNode struct { value int left, right *treeNode}func (node treeNode) print() { fmt.Print(node.value)}指针接收者示例func (node...
2019-08-18 19:13:07
208
原创 LeetCode无重复字符的最长子串Go实现
原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/func lengthOfNonRepeatingSubStr(s string) int { lastOccurred := make(map[byte]int) // 使用map记录某个字符上一次出现的位置,这里的ke...
2019-08-18 17:26:11
132
原创 hyperledger fabric 再启动一个节点
前提:已经启动了一个orderer和一个peer节点,但是还有节点为启动例如:orderer节点个数为1个 组织个数2个 Org1 //已经创建 Peer0 //已经创建 Peer1 Org2 Peer0 // 待创建 Peer1 # 新增pee...
2019-08-17 17:37:34
319
原创 hyperledger fabric 部署channel和智能合约的一些命令
# 创建channel频道文件(xxx.tx)configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel# 创建channel命令# 首先进入cli容器docker exec -it cli bash# 创建channel...
2019-08-17 16:55:30
1546
原创 云服务器搭建Fabric网络错误
Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded两种情况:阿里云服务器:$ vim /...
2019-08-16 10:45:03
1021
1
原创 使用SUBMAIL时出现证书问题
最近在使用SUBMAIL进行发送短信验证码的时候出现了如下errorPost https://api.mysubmail.com/message/xsend: x509: certificate signed by unknown authority我这里是部署在服务器上的,服务器没有进行备案也没有CA证书,咨询了SUBMAIL的工作人员后获得如下的解决方案:进入SUBMAIL...
2019-08-15 11:35:27
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人