Go語言愛好者周刊:第 23 期

2021-03-02 Go語言中文網

這裡記錄每周值得分享的 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

相關焦點

  • Go語言愛好者周刊:第 67 期 — Go1.16 相關功能基本完成了
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • Go語言愛好者周刊:第 82 期 — 情人節快樂
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • Go語言愛好者周刊:第 64 期 — goup 這個工具了解下
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • Go語言愛好者周刊:第 77 期 — 這道題目測答對的人不多
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • Go語言愛好者周刊:第 12 期
    點擊上方藍色「Go語言中文網」關注我們,設個星標,每天學習 Go 語言這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:),歡迎投稿,推薦或自薦文章/軟體/資源等,請 。鑑於大部分人可能沒法堅持把英文文章看完,因此,周刊中會儘可能推薦優質的中文文章。優秀的英文文章,我們的 GCTT 組織會進行翻譯。題圖:來源 golangweekly.com刊首語 Go 有語言公認的一個很好的工具是 gofmt,它讓不同人的代碼寫出來風格差不多,這也極大的減少了團隊對代碼風格的要求。
  • Go語言愛好者周刊:第 80 期 — 認真思考下為什麼?
    這裡記錄每周值得分享的 Go 語言相關內容,周日發布。本周刊開源(GitHub:polaris1119/golangweekly[1]),歡迎投稿,推薦或自薦文章/軟體/資源等,請提交 issue[2] 。
  • 科技愛好者周刊:第 73 期
    這是有史以來第一起因為發生在太空的行為,而導致的法律訴訟。(@starshipsea[4] 投稿)3、猴子稅[5](@erossszh[23] 投稿)6、如何安全運行他人的 JavaScript 代碼?[24](英文)Figma 是一個網頁應用程式,有很多第三方開發者寫的插件。如何才能在網頁安全運行第三方代碼,這是 Figma 團隊面臨的重大問題。本文記錄了他們的探索過程,最後使用的是新提出的 Realm API。
  • 科技愛好者周刊:第 86 期
    •一個以色列愛好者[15]設計出紙飛機控制器,可以把這個裝置安裝在紙飛機上,然後用手機遙控紙飛機。這個裝置在 KickStarter 眾籌,已經有超過1萬名支持者,認捐了100多萬美元。7、使用瀏覽器的 AudioContext API 生成用戶指紋[23](英文)很多網站想追蹤用戶,但是瀏覽器對 Cookie 的限制越來越嚴,於是有人想出使用音頻 API,為每個用戶生成一個音頻指紋,通過這個指紋追蹤用戶。本文給出代碼實例。8、Firefox 和 Chrome 為何要革 EV 證書的命[24](中文)
  • 科技愛好者周刊:第 78 期
    8、一句話消息•國際標準化組織 ISO[10] 將圖形資料庫查詢語言 GQL 通過為國際標準,這是繼 SQL 以後第二種成為國際標準的資料庫查詢語言。•Perl6[11] 改名為 Raku 語言。主要原因是,Perl6 的開發拖得太久,超過10年。而 Perl5 也沒停止升級,結果導致兩者語法不兼容。
  • 科技愛好者周刊:第 85 期
    7、代碼移入資料庫[23](英文)作者說,這些年他一直在改變工作語言,1997年是 Perl,1998年是 PHP,2004年是 Rails,2007年又是 PHP,2012年是 JavaScript。每改一次,有些代碼就要重寫一次。但是,後臺的資料庫從來沒有變過,那麼為什麼不把邏輯寫進資料庫呢?
  • 科技愛好者周刊(第 118 期):高考志願怎麼填
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。封面圖元上都遺址位於內蒙古草原,是元朝定都北京之前的首都,距今約750年的歷史。馬可波羅就在這裡,第一次見到了元世祖忽必烈。(來源:Instagram[3])本周話題:高考志願怎麼填前不久,親戚朋友諮詢我,高考志願的填寫建議。
  • 科技愛好者周刊(第 129 期):創業的凸函數和凹函數
    周刊討論區的帖子《誰在招人?》[2],提供大量就業信息,歡迎訪問或發布工作/實習崗位。封面圖荷蘭藝術家 Henk Hofstra 在巴西聖保羅市的作品《大街上的煎蛋》。(via[3])本周話題:創業的凸函數和凹函數著名暢銷書《黑天鵝》[4]的作者納西姆·塔勒布(Nassim Taleb),以前是紐約大學的數學教授,後來從事數理金融和風險管理。
  • 語言戰爭_三聯生活周刊
    語言戰爭 2012-06-14 14:30 作者:薛巍來源:三聯生活周刊 2012年第24期
  • 《三聯生活周刊》 第1000期,2018年8月20日出版
    《三聯生活周刊》 第1000期,2018年8月20日出版 【封面故事】與時代同行
  • 《安徽青年報》學生周刊 第180期
    《安徽青年報》學生周刊 第180期 2010-12-28 14:54:26   來源:未知
  • 保定市詩詞楹聯學會【總第98期】周刊 (26)
    語言雖有異,心曲伴雲棲。夏日池塘王亞輝岸下葭蓬茂,池邊綠葉稠。魚兒欣覓食,釣者喜垂鉤。笑賞鴨鵝戲,樂從船艇遊。人生當自勵,美景任歌謳! 賀保定詩詞楹聯微刊過百開心嘟嘟轉眼百期過,期期情意牽。梧桐招鳳鳥,翰墨結情緣。雅韻三千裡,騷壇十萬篇。群賢多李杜,信筆入于闐。
  • 解讀 Go 語言的 2019:Go 語言不行了嗎?
    而 Go 語言正是我們做這類事情時所需要的強大工具。本文是 InfoQ 「解讀 2019 」年終技術盤點系列文章之一。從 TIOBE Index 來看,Go 語言最近在全球的熱度似乎有所下滑。不過,如果看總體排名的話,截止到 2019 年的 12 月,Go 語言依然排在第 15 位,仍處於主流之列。雖然中途存在一些起落,但總體上還是與去年同期持平的。
  • Golang語言情懷-第46期 Go 語言標準庫翻譯 compress/bzip2
    Index ▾Package filesbit_reader.go bzip2.go huffman.go move_to_front.gofunc NewReaderfunc NewReader(r io.Reader) io.ReaderNewReader returns an io.Reader which decompresses bzip2
  • GO語言入門(第一個go程序)
    作為一門具有明確編碼規範的語言,它要求可以採用不同的編譯器如 gc 和 gccgo(第 2.1 節)進行編譯工作,這對語言本身擁有更好的編碼規範起到很大幫助。LALR 是 Go 語言的語法標準,你也可以在 src/cmd/internal/gc/go.y 中查看到,這種語法標準在編譯時不需要符號表來協助解析。
  • 第 61 期 乾貨滿滿的 Go Modules 和 goproxy.cn
    大家好,我是一隻普通的煎魚,周四晚上很有幸邀請到 goproxy.cn 的作者 @盛傲飛(@aofei) 到 Go 夜讀給我們進行第 61 期