曹大帶我學 Go(9)—— 開始積累自己的工具庫

你好,我是小 X。

曹大最近開 Go 課程了,小 X 正在和曹大學 Go。

這個系列會講一些從課程中學到的讓人醍醐灌頂的東西,撥雲見日,帶你重新認識 Go。

不知道你有沒有這樣的經驗:看了很多計算機相關的書,覺得自己懂得很多,但是一遇到實際問題,就不會解。

再看身邊的老司機,執行幾行命令,看了幾個指標,就準確地定位問題了。他可能也沒看那麼多理論,但實戰能力確實強,心裏一下子就失衡了。

這其中有很多原因,我認爲其中有一個比較重要的就是:工具的使用。老司機因爲經驗多,積累了很多 命令、shell 腳本、代碼庫…… 這些東西就像瑞士軍刀,關鍵時刻,直接就可以派上大用場。在線上出問題的時候,雲淡風輕地說,這行代碼有問題,刪掉就可以了。瀟灑至極!

今天我就把我最近積累的一些工具,包括一些軟件、命令,這些是可以直接用於實戰的。希望看完之後,能提升你的戰鬥力。

效率工具

今天推薦 2 個我日常用得比較多的,提升效率的軟件:aText、paste。

aText

aText 是一個輸入映射的軟件,輸入預先設定的字符串,就可以轉成設定好的目標字符串。我用 aText 存了很多有用的映射,例如,我把打開博客文章的命令縮寫成了 XPosts

因爲博客文件所在的路徑比較長,如果我每次都直接敲出完整路徑的話,會很麻煩。有了這個映射後,只用輸入 XPosts 就自動變成了我要的文件路徑。

還有很多場景可以使用 aText,尤其是你經常要輸入的相同的內容,非常方便。

paste

paste 管理剪貼版的歷史,只要是你複製過的內容,它都會保存下來,甚至可以對文本內容進行搜索。

比如可以把開發、排查問題時常用的鏈接、命令都放到一個 tab 下面,要用的時候,直接快捷鍵調出,怎一個優雅了得。

命令

這部分挑了一些非常有用的命令出來,大家可以記在筆記裏,關鍵時候直接拿出來用。

查看 cache size

看 Go 源碼的時候,經常能看到一些 pad 字段,這個字段主要是用來防止 false sharing,一般是根據 cache line size 來算 pad 大小的。那麼查看這個 size 的大小呢?

getconf LEVEL1_DCACHE_LINESIZE

查看內核版本

有時候會遇到一些和內核版本相關的問題,例如 Go 語言裏面的內存歸還策略在 Go 1.12 有一個改動,將 MADV_DONTNEED 改成了 MADV_FREE,導致線上應⽤的 RSS ⼤幅上升。

使用 MADV_FREE 方式,程序內存不會立刻回收,即 RSS 值不會立刻下降,只有當 OS 內存緊缺時纔會回收 Go 程序的內存;

而 Go 1.11 以及之前的版本默認採用的是 MADV_DONTNEED 方式,程序 RSS 值下降很快。

因此如果需要使程序內存佔用下降很慢的話,可設置環境變量 GODEBUG=madvdontneed=1

另外,MADV_FREE 只在 Linux 4.5 及之後的版本纔有,所以當你遇到 RSS 一直降不下去的場景時,要想確認是不是這個問題導致的,還得看你的內核版本是啥。那就用這個命令:

uname -a

這個歸還內存的策略在 Go 1.16 又改回去了。因此只有在 Go 1.12-Go 1.15 之間,且是 Linux 4.5 及之後的內核版本纔會有這個問題。

輸出代碼行號

有時候需要用 cat 命令輸出一段代碼,截圖發給別人。這時如果需要對着代碼行號做一些說明的話,把代碼行號一併輸出來是非常 nice 的,只需要用這個命令:

cat -n a.go

彙總展示代碼構成

當我們想看一個開源項目的代碼行數的時候,並且能看到各種類型的語言各佔多少的時候,怎麼辦呢?一個命令搞定:

tokei ./

就問你強不強!

這個用在什麼場景呢?太多了,例如你準備看一個稍微簡單一點的框架,有幾個侯選的:chi, echo, gin…… 執行一下命令,看看代碼行數,選擇一個最少的。

後記

工具是很重要的,積累了很多前人的智慧,我們拿來直接用,不需要自己再從零開始。當然,適當地學習原理也是必須的。

我們要記住這些命令,存入自己的工具庫,要用的時候直接調出來。它們可以節省我們大腦的內存,把寶貴的資源用在思考真正的問題上,而不是記住這些命令。

而且當我們有了自己的代碼碼、腳本庫、工具庫的時候,遇到問題,拿上相應的傢伙上場,馬上就可以得到很多相關的信息,我們再根據這些信息做決策。

今天就先列這些吧,其實還準備了好幾個關於 Go 的,先不放出來。如果這篇比較受歡迎,就下期再寫了。

最後,也歡迎在留言區分享你的工具,無論是軟件,還是一行命令。我會彙總後再分享給大家,切實有效地提升大家的能力。

好了,這就是今天全部的內容了~ 我是小 X,我們下期再見~


歡迎關注曹大的 TechPaper 以及碼農桃花源~

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MS0LY9pf3m6p56MtlYyN6A