go数据类型-空结构体、空接口、nil-牛翰网

go数据类型-空结构体、空接口、nil

空结构体 func main() { a := struct{}{} fmt.Println(unsafe.Sizeof(a)) fmt.Printf("%p\n", &a) } 打印 0 0x117f4e0 有经验的开发人员都知道,所有的空结构体是指向一个 zeroba
9个月前
03111
go读写锁-牛翰网

go读写锁

go读写锁 互斥锁每次只让一 g通过,去读写数据。但是读数据操作,并发其实没有问题。所以诞生了 读写锁。 读协程可以并发,一起读。但是 写协程还是要走互斥锁,只能一个个通过。 先加了读锁 先...
9个月前
0277
go-GMP 协程切换时机 和 协程实战-牛翰网

go-GMP 协程切换时机 和 协程实战

当m在执行某个g的时候,g非常耗时,例如一个for循环,每次循环sleep1分钟,循环1000次。 这个例子看似无聊,却是很难解决的,成功的避开了2个系统切换时机。 如果这个时候,一直执行这个g,别的...
9个月前
1245
go 网络 network poller-牛翰网

go 网络 network poller

网络基础 协议架构 tcp链接 假如需要开发者去实现一套新的网络协议(例如 redis 的resp), 是基于TCP的, 那tcp这层的协议,是否需要开发者自己去实现? 这层如果自己实现, 其实很复杂, 会涉及很多算...
9个月前
12310