这次的 ascii 图太多了。。。粘到 blog 里毁灭性的不能看,所以还是看原文吧 orz
> https://github.com/cch123/golang-notes/blob/master/map.md
从办了双币信用卡开始买英文原版书以后,陆陆续续已经买了几十本了(看得完吗你。
嗯,其实大多数国外出版社的书质量还是可以的,比如 O'Reilly,NoStarch,Manning,Apress,微软之类的出版社。特别是
NoStarch,虽然每本书上面可能都有一条不明所以的彩边,而且封面以屎黄色(汗为主,不过感觉他们的封面设计的都挺好看的,比如下面这样的:
应该是有专门的封面设计师来做的吧。
manning 出版社的一般都是一些少数民族人物的绘作:
挺好看的。
O'Reilly 嘛,大家都熟悉,就是各种各样的动物书:
Apress 相对就死板一些:
微软也差不多,沉闷的大公司风格:
唯独这个 Packt。。不知道该怎么吐槽了,
系统调用
原文地址:
> https://github.com/cch123/golang-notes/blob/master/syscall.md
概念
一图胜千言:
+ - - - - - - - - - - - - - - - User Mode - - -
去年和董大大聊过两句 Go 的定时器,当时大概看了眼代码是四叉堆,不过实现细节忽略掉了。
前几天和刘丁还有董大又聊起定时器的事情,正好就借这个机会把 Go 的定时器实现完整梳理一遍。不涉及 netpoll,因为我还没有看完这部分代码。
董大的文章网络和定时器怎么结合都提到了,感兴趣的可以看 这里 [https://www.jianshu.com/p/427dfe8ad3c0]。
看到两边有一样的图不要奇怪,所以这篇文章可以算联动吗,哈哈。
定时器算是服务端程序是非常重要的功能,特别是和网络或者文件系统打交道的系统,我们都会对每一次 IO
操作都加上合理的超时,以避免各种特定情况下的资源泄露。所以了解定时器的实现还是挺重要的。
PS: 看来
《concurrency in go》这本书出版于 2017
年八月,里面有些观点还是蛮新颖的,烂大街的我就先不写了,重点写写书里提到的,我之前忽视的观点,以及一些奇技淫巧。
锁的粒度太大的话,有可能造成其它的 goroutine 饥饿
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
var sharedLock sync.Mutex
const runtime