日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

曹大带我学 Go(9)—— 开始积累自己的工具库

發(fā)布時(shí)間:2024/4/11 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 曹大带我学 Go(9)—— 开始积累自己的工具库 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

你好,我是小X。

曹大最近開(kāi) Go 課程了,小X 正在和曹大學(xué) Go。

這個(gè)系列會(huì)講一些從課程中學(xué)到的讓人醍醐灌頂?shù)臇|西,撥云見(jiàn)日,帶你重新認(rèn)識(shí) Go。

不知道你有沒(méi)有這樣的經(jīng)驗(yàn):看了很多計(jì)算機(jī)相關(guān)的書(shū),覺(jué)得自己懂得很多,但是一遇到實(shí)際問(wèn)題,就不會(huì)解。

再看身邊的老司機(jī),執(zhí)行幾行命令,看了幾個(gè)指標(biāo),就準(zhǔn)確地定位問(wèn)題了。他可能也沒(méi)看那么多理論,但實(shí)戰(zhàn)能力確實(shí)強(qiáng),心里一下子就失衡了。

這其中有很多原因,我認(rèn)為其中有一個(gè)比較重要的就是:工具的使用。老司機(jī)因?yàn)榻?jīng)驗(yàn)多,積累了很多 命令、shell 腳本、代碼庫(kù)……這些東西就像瑞士軍刀,關(guān)鍵時(shí)刻,直接就可以派上大用場(chǎng)。在線上出問(wèn)題的時(shí)候,云淡風(fēng)輕地說(shuō),這行代碼有問(wèn)題,刪掉就可以了。瀟灑至極!

今天我就把我最近積累的一些工具,包括一些軟件、命令,這些是可以直接用于實(shí)戰(zhàn)的。希望看完之后,能提升你的戰(zhàn)斗力。

效率工具

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

aText

aText 是一個(gè)輸入映射的軟件,輸入預(yù)先設(shè)定的字符串,就可以轉(zhuǎn)成設(shè)定好的目標(biāo)字符串。我用 aText 存了很多有用的映射,例如,我把打開(kāi)博客文章的命令縮寫(xiě)成了 XPosts:

因?yàn)椴┛臀募诘穆窂奖容^長(zhǎng),如果我每次都直接敲出完整路徑的話,會(huì)很麻煩。有了這個(gè)映射后,只用輸入 XPosts 就自動(dòng)變成了我要的文件路徑。

還有很多場(chǎng)景可以使用 aText,尤其是你經(jīng)常要輸入的相同的內(nèi)容,非常方便。

paste

paste 管理剪貼版的歷史,只要是你復(fù)制過(guò)的內(nèi)容,它都會(huì)保存下來(lái),甚至可以對(duì)文本內(nèi)容進(jìn)行搜索。

比如可以把開(kāi)發(fā)、排查問(wèn)題時(shí)常用的鏈接、命令都放到一個(gè) tab 下面,要用的時(shí)候,直接快捷鍵調(diào)出,怎一個(gè)優(yōu)雅了得。


命令

這部分挑了一些非常有用的命令出來(lái),大家可以記在筆記里,關(guān)鍵時(shí)候直接拿出來(lái)用。

查看 cache size

看 Go 源碼的時(shí)候,經(jīng)常能看到一些 pad 字段,這個(gè)字段主要是用來(lái)防止 false sharing,一般是根據(jù) cache line size 來(lái)算 pad 大小的。那么查看這個(gè) size 的大小呢?

getconf?LEVEL1_DCACHE_LINESIZE

查看內(nèi)核版本

有時(shí)候會(huì)遇到一些和內(nèi)核版本相關(guān)的問(wèn)題,例如 Go 語(yǔ)言里面的內(nèi)存歸還策略在 Go 1.12 有一個(gè)改動(dòng),將 MADV_DONTNEED 改成了 MADV_FREE,導(dǎo)致線上應(yīng)?的 RSS ?幅上升。

使用 MADV_FREE 方式,程序內(nèi)存不會(huì)立刻回收,即 RSS 值不會(huì)立刻下降,只有當(dāng) OS 內(nèi)存緊缺時(shí)才會(huì)回收 Go 程序的內(nèi)存;

而 Go 1.11 以及之前的版本默認(rèn)采用的是 MADV_DONTNEED 方式,程序 RSS 值下降很快。

因此如果需要使程序內(nèi)存占用下降很慢的話,可設(shè)置環(huán)境變量 GODEBUG=madvdontneed=1。

另外,MADV_FREE 只在 Linux 4.5 及之后的版本才有,所以當(dāng)你遇到 RSS 一直降不下去的場(chǎng)景時(shí),要想確認(rèn)是不是這個(gè)問(wèn)題導(dǎo)致的,還得看你的內(nèi)核版本是啥。那就用這個(gè)命令:

uname?-a

這個(gè)歸還內(nèi)存的策略在 Go 1.16 又改回去了。因此只有在 Go 1.12-Go 1.15 之間,且是 Linux 4.5 及之后的內(nèi)核版本才會(huì)有這個(gè)問(wèn)題。

輸出代碼行號(hào)

有時(shí)候需要用 cat 命令輸出一段代碼,截圖發(fā)給別人。這時(shí)如果需要對(duì)著代碼行號(hào)做一些說(shuō)明的話,把代碼行號(hào)一并輸出來(lái)是非常 nice 的,只需要用這個(gè)命令:

cat?-n?a.go

匯總展示代碼構(gòu)成

當(dāng)我們想看一個(gè)開(kāi)源項(xiàng)目的代碼行數(shù)的時(shí)候,并且能看到各種類型的語(yǔ)言各占多少的時(shí)候,怎么辦呢?一個(gè)命令搞定:

tokei?./

就問(wèn)你強(qiáng)不強(qiáng)!

這個(gè)用在什么場(chǎng)景呢?太多了,例如你準(zhǔn)備看一個(gè)稍微簡(jiǎn)單一點(diǎn)的框架,有幾個(gè)侯選的:chi, echo, gin……執(zhí)行一下命令,看看代碼行數(shù),選擇一個(gè)最少的。

后記

工具是很重要的,積累了很多前人的智慧,我們拿來(lái)直接用,不需要自己再?gòu)牧汩_(kāi)始。當(dāng)然,適當(dāng)?shù)貙W(xué)習(xí)原理也是必須的。

我們要記住這些命令,存入自己的工具庫(kù),要用的時(shí)候直接調(diào)出來(lái)。它們可以節(jié)省我們大腦的內(nèi)存,把寶貴的資源用在思考真正的問(wèn)題上,而不是記住這些命令。

而且當(dāng)我們有了自己的代碼碼、腳本庫(kù)、工具庫(kù)的時(shí)候,遇到問(wèn)題,拿上相應(yīng)的家伙上場(chǎng),馬上就可以得到很多相關(guān)的信息,我們?cè)俑鶕?jù)這些信息做決策。

今天就先列這些吧,其實(shí)還準(zhǔn)備了好幾個(gè)關(guān)于 Go 的,先不放出來(lái)。如果這篇比較受歡迎,就下期再寫(xiě)了。

最后,也歡迎在留言區(qū)分享你的工具,無(wú)論是軟件,還是一行命令。我會(huì)匯總后再分享給大家,切實(shí)有效地提升大家的能力。

好了,這就是今天全部的內(nèi)容了~ 我是小X,我們下期再見(jiàn)~


歡迎關(guān)注曹大的 TechPaper 以及碼農(nóng)桃花源~

總結(jié)

以上是生活随笔為你收集整理的曹大带我学 Go(9)—— 开始积累自己的工具库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。