Go語言愛好者周刊:第 56 期 — 最全 LeetCode 刷題指南
這里記錄每周值得分享的 Go 語言相關(guān)內(nèi)容,周日發(fā)布。
本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟件/資源等,請提交 issue[2] 。
鑒于大部分人可能沒法堅持把英文文章看完,因此,周刊中會盡可能推薦優(yōu)質(zhì)的中文文章。優(yōu)秀的英文文章,我們的 GCTT 組織會進(jìn)行翻譯。
由于微信不支持外鏈,文中大量鏈接可通過文末 「閱讀原文」 查看。

資訊
看看都有哪些值得關(guān)注的變化。
2、mpb v5.3.0 發(fā)布[3]
在終端為 Go 命令行應(yīng)用程序顯示進(jìn)度條。5.3.0 增加裝飾器。
3、Excelize 發(fā)布 2.3.0 版本, Go 語言 Excel 文檔基礎(chǔ)庫[4]
Go 語言編寫的用于操作 Office Excel 文檔基礎(chǔ)庫,基于 ECMA-376,ISO/IEC 29500 國際標(biāo)準(zhǔn)。可以使用它來讀取、寫入由 Microsoft Excel? 2007 及以上版本創(chuàng)建的電子表格文檔。支持 XLSX / XLSM / XLTM 等多種文檔格式,高度兼容帶有樣式、圖片(表)、透視表、切片器等復(fù)雜組件的文檔,并提供流式讀寫 API,用于處理包含大規(guī)模數(shù)據(jù)的工作簿。
4、Go 提案[5]
Go 1.16 將基于棧的函數(shù)調(diào)用約定遷移為基于寄存器的函數(shù)調(diào)用約定(calling convention)。
文章
1、面試題:Go 1.15 中 var i interface{} = 3 會有額外堆內(nèi)存分配嗎?
題目是這樣的:
var?in?int?=?3
//?以下有額外內(nèi)存分配嗎?
var?i?interface{}?=?in
2、學(xué)習(xí) Rob Pike 的 6 條編程原則
過早的優(yōu)化是萬惡之源、拿不準(zhǔn)就窮舉等。
一個開源監(jiān)控系統(tǒng),它本身已經(jīng)成為了云原生中指標(biāo)監(jiān)控的事實標(biāo)準(zhǔn),幾乎所有 k8s 的核心組件以及其它云原生系統(tǒng)都以 Prometheus 的指標(biāo)格式輸出自己的運行時監(jiān)控信息。
4、在 Go 語言中管理 Concurrency 的三種方式
相信大家踏入 Go 語言的世界,肯定是被強大的并發(fā)(Concurrency)所吸引,Go 語言用最簡單的關(guān)鍵字go就可以將任務(wù)丟到后臺處理,但是開發(fā)者怎么有效率的控制并發(fā),這是入門 Go 語言必學(xué)的技能,本章會介紹幾種方式來帶大家認(rèn)識并發(fā),而這三種方式分別對應(yīng)到三個不同的名詞:WaitGroup,Channel,及 Context。
5、Go 的兩級線程模型[6]
再復(fù)習(xí)一下也挺好。
6、優(yōu)化 Golang 服務(wù)來減少 40% 以上的 CPU
通過對 Go 解析服務(wù)進(jìn)行性能測試,我們能夠查明有問題的地方,更好的理解我們的服務(wù)并且確定在哪里(如果有的話)投資時間進(jìn)行改進(jìn)。
7、Go 每日一庫之 fuckdb Lite — 幫助你更快地生成 go struct 代碼
名字很給力!
8、Nodejs 與 Golang 的比較:Web 開發(fā)人員選擇哪個最佳?
在本文,我們將討論 NodeJS 和 Golang 這兩種廣為人知的語言,開發(fā)人員可以選擇這兩種語言開發(fā)出色的軟件和移動應(yīng)用程序。
9、前綴樹算法實現(xiàn)路由匹配原理解析:Go 實現(xiàn)
路由功能是 web 框架中一個很重要的功能,它將不同的請求轉(zhuǎn)發(fā)給不同的函數(shù)(handler)處理,很容易能想到,我們可以用一個字典保存它們之間的對應(yīng)關(guān)系,字典的 key 存放 path,value 存放 handler。當(dāng)一個請求過來后,使用 routers.get(path, None) 就可以找到對應(yīng)的 handler。
10、go trace 剖析 go1.14 異步搶占式調(diào)度
go 1.14 版本帶來了一個非常重要的特性:異步搶占的調(diào)度模式。之前我們通過解釋一個簡單的協(xié)程調(diào)度原理(),并且實現(xiàn)協(xié)程調(diào)度例子都提到了一個點:協(xié)程是用戶態(tài)實現(xiàn)的自我調(diào)度單元,每個協(xié)程都是君子才能維護和諧的調(diào)度秩序,如果出現(xiàn)了流氓(占著 cpu 不放的協(xié)程)你是無可奈何的。
開源項目
1、Dynamo:富有表現(xiàn)力的 DynamoDB 庫[7]
dynamo 是 Go 的富有表現(xiàn)力的 DynamoDB 客戶端,其 API 受 mgo 啟發(fā)很大。dynamo 與官方的 AWS 開發(fā)工具包集成。
2、oscar[8]
下一代構(gòu)建工具 for nothing。是的,這是一個玩笑/輕松的項目!您可以使用它來使自己看起來像在不工作時一樣高效。
3、httpmock[9]
輕松模擬來自外部資源的 http 響應(yīng)。
4、gofmtmd[10]
將 markdown 中的 go 代碼塊進(jìn)行格式化。
還提供了 Vim 插件。
5、kowl[11]
kafka WebUI。
6、wrapcheck[12]
一個 Go linter 檢查器,檢查是外部錯誤是否 Wrap 了。
7、gopdf[13]
pdf 文件生成庫。支持 Unicode 字符 (包括中文, 日語, 朝鮮語, 等等)。
8、 go-quake2[14]
Go 實現(xiàn)的 Quake 2 級別的渲染器。
資源&&工具
1、Go 下載管理器[15]
支持并發(fā)下載。
2、project52[16]
52 周,52 個 Go 項目,厲害!
3、Prometheus-Basics[17]
Prometheus 基礎(chǔ)教程。
4、LeetCode Cookbook[18]
Go 刷 LeetCode。
5、播客第 142 期[19]
Go 與基礎(chǔ)設(shè)施。
6、code-playground[20]
CodePlayground 是用于 Go 和 Rust 語言的 Playground 工具,支持 Vim、VS Code 和 Sublime。
7、interface-type-check[21]
空接口的類型檢查。
訂閱
這個周刊每周日發(fā)布,同步更新在Go 語言中文網(wǎng)[22]和微信公眾號[23]。
微信搜索"Go 語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]mpb v5.3.0 發(fā)布: https://github.com/vbauerster/mpb
[4]Excelize 發(fā)布 2.3.0 版本, Go 語言 Excel 文檔基礎(chǔ)庫: https://studygolang.com/articles/30181
[5]Go 提案: https://github.com/golang/go/issues/40724
[6]Go 的兩級線程模型: https://juejin.im/post/6859312340630929421
[7]Dynamo:富有表現(xiàn)力的 DynamoDB 庫: https://github.com/guregu/dynamo
[8]oscar: https://github.com/chenjiandongx/oscar
[9]httpmock: https://github.com/jarcoal/httpmock
[10]gofmtmd: https://github.com/po3rin/gofmtmd
[11]kowl: https://github.com/cloudhut/kowl
[12]wrapcheck: https://github.com/tomarrell/wrapcheck
[13]gopdf: https://github.com/tiechui1994/gopdf
[14]go-quake2: https://github.com/samuelyuan/go-quake2
[15]Go 下載管理器: https://github.com/usmanhalalit/go-download-manager
[16]project52: https://github.com/kkdai/project52
[17]Prometheus-Basics: https://github.com/yolossn/Prometheus-Basics
[18]LeetCode Cookbook: https://books.halfrost.com/leetcode
[19]播客第 142 期: https://changelog.com/gotime/142
[20]code-playground: https://github.com/Trendyol/code-playground
[21]interface-type-check: https://github.com/siadat/interface-type-check
[22]Go 語言中文網(wǎng): https://studygolang.com/go/weekly
[23]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
