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

題圖:開源推薦系統(tǒng)
刊首語
上期題目解析。
以下程序是否會 panic:
package?main
import?"C"
func?main()?{
?var?ch?chan?struct{}
?<-ch
}
A:會;B:不會
正確答案是 B(不會)。如果把第 3 行注釋掉,會 panic。原因是 cgo 會使死鎖檢查失效。
資訊
安全更新版本。
全面支持 Go1.18。
3、Excelize 2.6.0 正式發(fā)布[3]
Go 語言編寫的用于操作 Office Excel 文檔基礎庫,基于 ECMA-376,ISO/IEC 29500 國際標準。
文章
有的時候我們會遇到并發(fā) IO 的情況,例如,并發(fā)爬蟲下載網(wǎng)絡上的圖片。如果并發(fā)度過高或者下載的內(nèi)容過大,會導致網(wǎng)絡 IO 耗時急劇上升。這時候就需要優(yōu)化一下每次網(wǎng)絡IO 的耗時。
http 或 tcp 調(diào)用時的 dial tcp (ip):(port): connect: connection timed out 錯誤是 SYN 的超時重傳機制引起的。如果遇到這種錯誤,一方面需要考慮 server 可以處理請求的 QPS,另一方面也要檢查 client 端重傳相關參數(shù)的設置。
3、從真實事故出發(fā):golang 內(nèi)存問題排查指北
字節(jié)跳動文章分享。
很全,包含了編碼類和非編碼類。
5、gRPC 客戶端長連接機制實現(xiàn)及 keepalive 分析
這篇文章分析如何實現(xiàn)客戶端?;睿╧eepalive)邏輯。
開源項目
1、gorse[4]
開源的推薦系統(tǒng),Go 語言實現(xiàn)。
2、goleveldb[5]
LevelDB 的 Go 實現(xiàn)。
3、disgo[6]
一個現(xiàn)代的 Discord API 包裝。
4、writefreely[7]
一個干凈、基于 Markdown 的發(fā)布平臺,專為作家設計。一起寫作,建立一個社區(qū)。

資源&&工具
1、depth[8]
用于檢索和可視化 Go 源代碼依賴樹的工具。
2、copygen[9]
將值從一個類型復制到另一個類型,并將字段從一個結構復制到另一個結構,無反射拷貝。
3、doko[10]
操作 Docker,基于 TUI 實現(xiàn)。
訂閱
這個周刊每周日發(fā)布,同步更新在Go語言中文網(wǎng)[11]和微信公眾號[12]。
微信搜索"Go語言中文網(wǎng)"或者掃描二維碼,即可訂閱。
參考資料
polaris1119/golangweekly: https://github.com/polaris1119/golangweekly
[2]提交 issue: https://github.com/polaris1119/golangweekly/issues
[3]Excelize 2.6.0 正式發(fā)布: https://xuri.me/excelize/zh-hans/releases/v2.6.0.html
[4]gorse: https://github.com/gorse-io/gorse
[5]goleveldb: https://github.com/syndtr/goleveldb
[6]disgo: https://github.com/disgoorg/disgo
[7]writefreely: https://github.com/writefreely/writefreely
[8]depth: https://github.com/KyleBanks/depth
[9]copygen: https://github.com/switchupcb/copygen
[10]doko: https://github.com/abdfnx/doko
[11]Go語言中文網(wǎng): https://studygolang.com/go/weekly
[12]微信公眾號: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91
