這裡記錄每周值得分享的 Go 語言相關內容,周日發布。
本周刊開源(GitHub:),歡迎投稿,推薦或自薦文章/軟體/資源等,請 。
由於微信公眾號不支持外鏈,文章連結可通過文末 「閱讀原文」 查看。
鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。
題圖:這是 reddit 上發布者從女友那得到的聖誕禮物,是不是很可愛?!
刊首語快過年了,又面臨搶票這個難題。這不,GitHub 上這周趨勢排行榜 1、2 位都是 12306 相關,不過都是 Python 的,沒人用 Go 搞搞呢?
你搶到回家的車票了嗎?反正我是沒搶到。
資訊1、
Prometheus 2.15.0 發布了,Prometheus 是一個 Go 語言開發的開源的服務監控系統和時間序列資料庫。該版本引入了一些新特性,比如記錄其他組件、增強功能和修復 bug,這些都是為了提高可用性。
2、
1)sps 代理增加了當系統是 Linux 的時候,支持通過 iptables 透明轉發過來的 tcp 連接請求。利用此功能實現路由器等網關設備為其它設備實現全局透明代理,詳細教程可以參考項目主頁 wiki 裡面的《透明代理》。2)修復使用代理後,網易雲音樂 UWP 應用無法正常使用的問題。3)修復了 http/sps 反向代理 https 不能工作的問題。4)優化了 http 代理,兼容一些舊的 http 客戶端發送 http 代理請求時,使用不標準的 URL 情況。
3、
做 github 最好用的 http client 庫,讓你體會到還沒有爽玩,活已經幹玩。
4、
用 Go 編寫的 XMPP 伺服器。
5、
我們仍在嘗試可能的方法,以簡化 Go 的未來版本中的錯誤處理。
6、
此版本帶來 Markdown Render Hooks。
文章1、Go:我應該用指針替代結構體的副本嗎?
對於許多 Go 開發者來說,考慮到性能,最佳實踐是系統地使用指針而非結構體副本。我們將回顧兩個用例,來理解使用指針而非結構體副本的影響。
2、大神是如何學習 Go 語言系列
1)大神是如何學習 Go 語言之淺談 select 的實現原理
2)大神是如何學習 Go 語言之 panic 和 recover 的原理
3)大神是如何學習 Go 語言之淺入淺出接口的原理
4)大神是如何學習 Go 語言之寫出優雅的 Go 代碼
3、使用多年的 go pprof 檢查內存洩漏的方法居然是錯的?!
另一種使用方式可以了解一下。
4、別告訴我這是真的?goroutine 可能使程序變慢
我們將會展示一個關於 for 循環的代碼,將輸入分成幾個序列添加到 Goroutines 裡面!我敢打賭你之前可能有過幾次這種情況,但是每次引入 gorountine 都讓你的代碼變得更快嗎?
5、我是如何在大型代碼庫上使用 pprof 探索 Go 中的內存洩漏
我們知道 Go 擁有一個良好的社區和一個非常棒的工具集,所以我們選擇了 Go。
6、100 行左右有效 Go 代碼實現 tcp server & graceful shutdown
工作需要快速寫了個tcpserver的框架,有效代碼差不多 100 行左右,寫篇文章分享下實現思路, 順便解釋一下如何實現類似網絡服務的Graceful Shutdown功能。
7、利用 CPU cache 特性優化 Go 程序
cache line padding 適用於多個相鄰的變量頻繁被並發讀寫的場景。
8、
豐富的圖講解。
9、
讀寫鎖區別與互斥鎖的主要區別就是讀鎖之間是共享的,多個 goroutine 可以同時加讀鎖,但是寫鎖與寫鎖、寫鎖與讀鎖之間則是互斥的。
10、
在我印象中有個錯誤的認知:如果 GORM 沒有找到 record,則會返回 ErrRecordNotFound 的錯誤,直到上次業務中出現了 bug,我才發現這個印象中的認知是錯誤的,且沒有官方文檔的支持。那麼,ErrRecordNotFound 到底在什麼時候返回呢,這篇文章將會根據源碼來進行分析一下。
11、
並發是個比較難理解的東西。Go 是谷歌創建的一門程式語言,它通過輕量級線程(協程)提供了容易理解的並發抽象。減輕了並發編程的難度。為了支持這些 Goroutine,Go 使用 runtime 將 Goroutine 多路復用到 OS 線程上,為了簡化磁碟 IO,Go 保留了一組 IO 線程,用於阻塞 IO 以提升 CPU 的使用率。
12、
本文從 Docker 和 Kubernetes 對 CPU 資源的限制出發,利用實驗的方式驗證了這一問題,並且給出了一些個人看法。
13、
眾所周知,Go 在做依賴管理時會創建兩個文件,go.mod 和 go.sum。相比於 go.mod,關於 go.sum 的資料明顯少得多。自然,go.mod 的重要性不言而喻,這個文件幾乎提供了依賴版本的全部信息。而 go.sum 看上去就是 go module 構建出來的天書,而不是什麼人類可讀的數據。
開源項目1、
在 Go 應用嵌入小型腳本引擎。
2、
一個簡單,安全和現代的加密工具。
3、
驅動瀏覽器的 Go 語言庫,支持 Chrome DevTools 協議。抓取動態網頁利器。
4、
採集 sql.DBStats 並以 Prometheus 格式導出。
5、
一種新的 Protobuf 處理庫。
6、
Coca 是一個用於系統重構、系統遷移和系統分析的瑞士軍刀。它可以分析代碼中的 badsmell,行數統計,分析調用與依賴,進行 Git 分析,以及自動化重構等。
7、
提供了一種更好的方式來處理,跟蹤和記錄 Go 中的錯誤。
8、
Go Markdown 終端渲染庫。
9、
可以在 CSV,LTSV,JSON 和 TBLN 上執行 SQL 查詢的 CLI 工具。可以輸出各種格式。
資源&&工具1、
國內似乎還沒有類似的大會?
2、
基於 flutter 構建桌面應用。
3、
Go 與圖資料庫。
4、(英文)
硬體編程的人員應該很少吧。
5、
官方 Wiki 總結的。
6、
通過 CLI 獲取容器 鏡像、標籤等信息。
7、
1)fib 函數根本不執行任何操作,因此基準測試實際上是在測量函數調用的開銷;
2)而 Go 語言因為 goroutine 的機制,每個函數調用會多一些指令,同時在必要時會擴展堆棧,這是有開銷的。
你怎麼看?
8、
對算法感興趣,特別是大學生,建議學習學習。
訂閱這個周刊每周日發布,同步更新在、 和 。
微信搜索"Go 語言中文網"或者掃描二維碼,即可訂閱。
wechat