『曹大帶我學(xué) Go 』系列文章匯總
你好,我是小 X。
之前寫了 11 篇跟著曹大學(xué) Go 的文章,今天來匯總一下。
曹大的功力深厚,但能學(xué)到多少全看自己。第一期 Go 訓(xùn)練營也早就結(jié)束了,但學(xué)習(xí)還得繼續(xù)。后面我也會繼續(xù)發(fā)布這個系列,希望大家多多支持。
下面我來一一回顧已經(jīng)發(fā)布的文章,并給出匯總,沒看過的可以看起來。
第 1 篇,調(diào)度的本質(zhì),上課的時候有種醍醐灌頂?shù)母杏X,Go 調(diào)度沒什么神奇的,本質(zhì)就是一個生產(chǎn)者-消費(fèi)者模型。各種策略就是如何讓消費(fèi)者消費(fèi)得更快,宏觀表現(xiàn)就是 Go 的執(zhí)行效率更高。
第 2 篇,迷惑的 goroutine 執(zhí)行順序,通過兩個有意思的代碼片段引出“三級隊(duì)列”,開始有點(diǎn)懵,想個幾秒鐘后才恍然大悟。很有可能某個無聊的面試官會面你這種題,知道考點(diǎn)也就不怕了。
第 3 篇,如何用匯編打同事的臉,通過 go tool 工具生成匯編、dlv 打斷點(diǎn)調(diào)試讓一些“謠言”不攻自破。我們除了可以更清楚地看到執(zhí)行 Go 代碼時底層做了一些什么,還能順帶打一下同事的臉。
第 4 篇,初識 ast 的威力,抽象語法樹非常有用。Go 提供了一些很好的工具讓我們直接上手用,如果學(xué)會了,在工作中的某些場景下有不小的幫助。
第 5 篇,哪里來的 goexit,深入源碼分析了 goroutine 的退出過程,同時也再次展示了 dlv 工具的使用。
第 6 篇,技術(shù)之外,跟著曹大不光能學(xué)習(xí)技術(shù),還能學(xué)到一些場外技能。比如搜索技巧、做動畫的能力。文章最后也展示了解答第 2 篇文章的一個動畫,非常生動,看完秒懂。
第 7 篇,如何優(yōu)雅地指定配置項(xiàng),在一些第三方庫提供的接口里見的比較多,它還有個專門的名字:函數(shù)選項(xiàng)式。
第 8 篇,一個打點(diǎn)引發(fā)的事故,通過一個真實(shí)的線上事故帶出如何用 pprof 來發(fā)現(xiàn)問題,看完后在腦子里就多一個案例,說不定下次就能用上。這個例子在曹大的博客里也有,事故發(fā)生時我的第一反應(yīng)就是 metrics 打點(diǎn)引起的,就因?yàn)槲抑翱催^了。
第 9 篇,開始積累自己的工具庫,推薦了幾個常用的工具庫及命令,本來還想出第二期,但讀者反響不太行,擱置了。如果還有想看的朋友,給點(diǎn)反饋。
第 10 篇,如何給 Go 提性能優(yōu)化的 pr,曹大在上家公司期間,對 tls 做了一些優(yōu)化,這篇文章還原了優(yōu)化的效果,也講了優(yōu)化的原理。
第 11 篇,從 map 的 extra 字段談起,當(dāng) map 的 key/value 是非指針類型時,GC 不會對所有的 bucket 進(jìn)行掃描。當(dāng)線上服務(wù)使用了一個超大的 map ,如果能優(yōu)化成非指針類型,會提升性能。
最后,將目前已經(jīng)發(fā)布的文章匯總列出來,祝大家閱讀愉快。
第 1 篇,調(diào)度的本質(zhì)
第 2 篇,迷惑的 goroutine 執(zhí)行順序
第 3 篇,如何用匯編打同事的臉
第 4 篇,初識 ast 的威力
第 5 篇,哪里來的 goexit
第 6 篇,技術(shù)之外
第 7 篇,如何優(yōu)雅地指定配置項(xiàng)
第 8 篇,一個打點(diǎn)引發(fā)的事故
第 9 篇,開始積累自己的工具庫
第 10 篇,如何給 Go 提性能優(yōu)化的 pr
第 11 篇,從 map 的 extra 字段談起
好了,這就是今天全部的內(nèi)容了~ 我是小X,我們下期再見~

目前專注在 Go 語言、后端、性能優(yōu)化,GTD、效率工具控。開源電子書《Go Questions》已經(jīng)有 3k star 了。期待交流,一起進(jìn)步!
