『曹大带我学 Go 』系列文章汇总
你好,我是小 X。
之前写了 11 篇跟着曹大学 Go 的文章,今天来汇总一下。
曹大的功力深厚,但能学到多少全看自己。第一期 Go 训练营也早就结束了,但学习还得继续。后面我也会继续发布这个系列,希望大家多多支持。
下面我来一一回顾已经发布的文章,并给出汇总,没看过的可以看起来。
第 1 篇,调度的本质,上课的时候有种醍醐灌顶的感觉,Go 调度没什么神奇的,本质就是一个生产者-消费者模型。各种策略就是如何让消费者消费得更快,宏观表现就是 Go 的执行效率更高。
第 2 篇,迷惑的 goroutine 执行顺序,通过两个有意思的代码片段引出“三级队列”,开始有点懵,想个几秒钟后才恍然大悟。很有可能某个无聊的面试官会面你这种题,知道考点也就不怕了。
第 3 篇,如何用汇编打同事的脸,通过 go tool
工具生成汇编、dlv 打断点调试让一些“谣言”不攻自破。我们除了可以更清楚地看到执行 Go 代码时底层做了一些什么,还能顺带打一下同事的脸。
第 4 篇,初识 ast 的威力,抽象语法树非常有用。Go 提供了一些很好的工具让我们直接上手用,如果学会了,在工作中的某些场景下有不小的帮助。
第 5 篇,哪里来的 goexit,深入源码分析了 goroutine 的退出过程,同时也再次展示了 dlv 工具的使用。
第 6 篇,技术之外,跟着曹大不光能学习技术,还能学到一些场外技能。比如搜索技巧、做动画的能力。文章最后也展示了解答第 2 篇文章的一个动画,非常生动,看完秒懂。
第 7 篇,如何优雅地指定配置项,在一些第三方库提供的接口里见的比较多,它还有个专门的名字:函数选项式。
第 8 篇,一个打点引发的事故,通过一个真实的线上事故带出如何用 pprof 来发现问题,看完后在脑子里就多一个案例,说不定下次就能用上。这个例子在曹大的博客里也有,事故发生时我的第一反应就是 metrics 打点引起的,就因为我之前看过了。
第 9 篇,开始积累自己的工具库,推荐了几个常用的工具库及命令,本来还想出第二期,但读者反响不太行,搁置了。如果还有想看的朋友,给点反馈。
第 10 篇,如何给 Go 提性能优化的 pr,曹大在上家公司期间,对 tls 做了一些优化,这篇文章还原了优化的效果,也讲了优化的原理。
第 11 篇,从 map 的 extra 字段谈起,当 map 的 key/value 是非指针类型时,GC 不会对所有的 bucket 进行扫描。当线上服务使用了一个超大的 map ,如果能优化成非指针类型,会提升性能。
最后,将目前已经发布的文章汇总列出来,祝大家阅读愉快。
第 1 篇,调度的本质
第 2 篇,迷惑的 goroutine 执行顺序
第 3 篇,如何用汇编打同事的脸
第 4 篇,初识 ast 的威力
第 5 篇,哪里来的 goexit
第 6 篇,技术之外
第 7 篇,如何优雅地指定配置项
第 8 篇,一个打点引发的事故
第 9 篇,开始积累自己的工具库
第 10 篇,如何给 Go 提性能优化的 pr
第 11 篇,从 map 的 extra 字段谈起
好了,这就是今天全部的内容了~ 我是小X,我们下期再见~
目前专注在 Go 语言、后端、性能优化,GTD、效率工具控。开源电子书《Go Questions》已经有 3k star 了。期待交流,一起进步!