Go 開發者進階週刊(Dec 2nd)

astaxie發表於2019-12-12

語言學習(Golang 程式設計知識與技巧)

1. 用圖說話:Go語言的協程,系統執行緒以及CPU管理

     

/uploads/article/20191212/98b40af407b4aa21e1bd1ed1835e9ff4.png

訣竅是不要將整個檔案載入到記憶體中,並在繼續移動檔案指標時繼續處理每個單詞。這樣,我們就可以用最少的記憶體資源輕鬆地處理整個檔案。並且在檔案的不同部分保留多個指標,每個執行緒同時讀取檔案的塊。

2.GOMAXPROCS和實時更新

3.Go 標準庫 encoding/json 真的慢嗎?

關於標準庫 encoding/json 效能差的問題在很多地方被討論過,也有很多第三方庫在嘗試解決這個問題,比如easyjsonjsoniterffjson。但是標準庫 encoding/json 真的慢嗎?它一直都這麼慢嗎?

4.譯|併發不是並行

併發性是強大的,但它不是並行性的,但它支援並行性,而且它使並行性變得容易。

5.原始碼閱讀 | 短小精悍的 Once 

   

/uploads/article/20191212/0a7fb0ade32ab43a94ae34d264f7fb43.png

Once 即保證某個動作只執行一次。這很好理解,延遲初始化、單例(懶漢式)就是這種場景。

6.go中defer的一個隱藏功能

你可以使用defer在任何函式開始後和結束前執行配對的程式碼。

7.Go動態作用域變數 

8.GoAdvent2019:使用標準庫中的flag包

在本文中,我們將瞭解如何使用內建標誌包編寫命令列應用程式。

9.在Go中使用Socket.IO

Websocket是全雙工的基於TCP層的通訊協議,為瀏覽器及網站伺服器提供處理流式推送訊息的方式。它不同於HTTP協議,但仍依賴HTTP的Upgrade頭部進行協議的轉換。

10.Golang在runtime中的一些騷東西

11.為什麼golang沒有volatile 

從 java 轉 golang 程式設計師可能會有一個疑問:為什麼 golang 沒有 volatile 關鍵字?這樣的話如何保證可見性?

12.[譯]Go:垃圾回收器是如何監控你的應用的?

Go的垃圾回收器旨在幫助開發者自動清理應用程式的記憶體。然而每次跟蹤記憶體並清理都會影響程式執行的效能。Go的垃圾回收器旨在清理記憶體的同時也關注效能,主要是以下幾個指標:

  • 當程式暫停的時的兩階段儘可能減少
  • 一次垃圾回收的週期少於10ms
  • 一次垃圾回收操作不能佔用超過25%的CPU

工程實踐(Go的專案應用實踐)

1.Go 生成資料庫架構文件

2.Go語言國際電子表格文件格式標準實踐

   

/uploads/article/20191212/1e8546d0acbc1ed6f02d63efb5c05f8d.png

3.使用Go解析180億條JSON行

4.Go 專案結構最佳實踐

提出一系列選項,可以從中選擇如何在新的世界秩序中構建Go應用程式。

5.Go 效能測試驚奇 

6.使用Go,QUIC和Micro建立全球服務網路

分享具體的技術實現細節

/uploads/article/20191212/a33a0d345db519f3bb4df27e605dfc5c.png

7.Go執行時排程程式處理系統呼叫的巧妙方法 

8.Bazel構建Golang專案

Bazel 是一款谷歌開源的非常優秀的構建系統,速度極快、可伸縮、跨語言並且可擴充套件。使用 Bazel 構建 golang 專案,除了 Bazel 本身特性外,還需要了解針對 golang 的擴充套件包 rules_go。另外,可以使用 bazel gazelle 來進行一些自動生成的工作。

9.Go專案的GitlabCI快取

10.Go程式中嵌入靜態資源方案選擇 

用Go編寫的應用程式很容易部署,因為它們是靜態編譯的。如果您需要管理執行web應用程式所需的一組檔案的位置和許可權,那麼這種優勢就會消失。解決方案是將所有必需的檔案編譯到應用程式二進位制檔案本身。這可以在Go中通過使用一個包含檔案中位元組的字串表示的位元組片來實現。

生態擴充(雲原生等 Go 生態體系)

1.Gotty原始碼分析

GoTTY 是一個簡單的基於 Go 語言的命令列工具,它可以將你的終端(TTY)作為 web 程式共享。它會將命令列工具轉換為 web 程式。

2.一文詳解微服務架構

從單體應用到微服務並不是一蹴而就的,這是一個逐漸演變的過程。本文將以一個網上超市應用為例來說明這一過程。

3.把阿里巴巴的核心繫統搬到雲上,架構上的挑戰與演進是什麼?

阿里巴巴核心系統作為全球最大規模、峰值效能要求最高的電商交易系統,在 2018 年之前只通過混合雲彈性上雲方式,為 雙11 節約大量成本。直到 2019 年,阿里巴巴實現了核心交易系統全面上雲並經歷了 雙11 峰值的考驗。

開源專案(社群新湧現的開源成果)

1.Slog:Go的最小日誌記錄庫

2.Cap’n Proto:Protobuf作者新開發的多語言通用資料交換格式

3.JetStream:NATS內建持久化方案進入TP階段 

4.Pion:Go實現不發出訊號的情況下連線兩個WebRTC服務

5.Fvm:Go 打造 Flutter 多版本管理工具:fvm 

 

彩蛋(活動與招聘)

12.24 Gopher Meetup 上海站活動 報名

  •    趣頭條——長連結方面的實踐
  •    訊聯資料——Go 語言的抽象程式設計心得
  •    TutorABC——遠端協同設計
  •    螞蟻金服&攜程——dubbogo的現狀與未來

01.04 Gopher Meetup Plus深圳站活動 報名

  •    Asta——Go在工業領域的應用實踐
  •    騰訊——Go效能優化之路
  •    廣發證券——Go與極限效能實踐
  •    OPPO——雲平臺儲存系統架構設計與容器化實踐
  •    平安科技——從面試題目到Golang彙編
  •    騰訊——如何向Go官方提交程式碼
  •    華為雲——KubeEdge:雲原生邊緣計算平臺的Golang實踐

【螞蟻金服】螞蟻金服研發效能團隊招人啦! 詳情

相關文章