歡迎光臨
每天分享高質量文章

一週 Go World 新鮮事-2018W54

01

Golang之美

 

初始golang,語言之美之簡潔之高效,天生具有高併發等特性。 本文來自蔡欣圻、邵聰聰,對go語言的分析很到位全面,在這裡分享出來給go開發者,希望能讓你有一個更深刻的認知。

原文連結:

https://juejin.im/post/5bf50600e51d457dd85460d8

原文二維碼:

02

記憶體分配

glibc用的malloc為ptmalloc2。往往不能滿足我們的需要,造輪子實現一個記憶體池或者記憶體分配器幾乎是家常便飯。對於ptmalloc2,至少有以下缺點:

1. 記憶體碎片多。

2. 記憶體釋放方式不太好。ptmalloc 收縮記憶體是從 top chunk 開始,如果與 top chunk 相鄰的 chunk 不能釋放, top chunk 以下的 chunk 都無法釋放。

3. 鎖的開銷,併發效能低。

4. 記憶體釋放不可控(free後不會立刻把記憶體還給os,而且採用)。

5. 執行緒不均衡。(執行緒A分配的記憶體用完之後free掉,這塊記憶體一般不會立刻歸還os,執行緒B malloc的時候不能用這塊記憶體)

6. 元資料較大。

7. 小物件分配速度低。

原文連結:

https://zhuanlan.zhihu.com/p/53581298

原文二維碼:

03

Go channel 實現原始碼分析

 

1.channel 資料結構

2.建立channel實現

建立channel實體:

ch := make(chan int, 4)

實現函式:

func makechan(t *chantype, size int64) *hchan

大致實現:

執行上面這行程式碼會 new一個hchan 結構,同時建立一個 dataqsiz=4 的 int 型別的迴圈佇列,其實就是一個容納4個元素的陣列,就是按順序往裡面寫資料,寫滿之後又從0開始寫,這個順序索引就是hchan.sendx

……

原文連結:

http://www.cnblogs.com/hlxs/p/10275303.html

原文二維碼:

04

Golang 編譯- ldflags -X 在 vendor 中不生效的問題

 

Golang專案在編譯連結的時候可以透過 -ldflags -X 來給程式碼中的變數賦值,然而這天我卻遇到了一個詭異的問題……

折騰了許久,最後終於搞明白了。Golang 在 1.5 版本時引入了 vendor 屬性,併在 1.6 以後版本預設啟用,於是查詢依賴包的順序就變成了:

  • 當前包下的 vendor 目錄;
  • 向上級目錄查詢,直到找到src下的 vendor 目錄;
  • 查詢 $GOPATH 目錄;
  • 查詢 $GOROOT 目錄;

 

原文連結:

Golang編譯-ldflags -X 在vendor中不生效的問題

原文二維碼:

05

如何評估 Kubernetes 持久化儲存方案

在2018年的Garnter技術成熟度曲線中,容器儲存出現在了技術觸發期,已經開始進入大眾的視野。我相信,在未來的兩年內,容器儲存會隨著Kubernetes的進一步成熟和商業化,其地位會越來越重要。如何在五花八門的儲存產品中,選擇適合自己的一款,將會是IT大佬們必須要面對的問題。本文將會從使用場景角度分析,如何評估容器儲存方案。

原文連結:

https://mp.weixin.qq.com/s/6yg_bt5mYKWdXS0CidY6Rg

原文二維碼:

職位推薦:

廣州-琶洲BAT 創業團隊 誠招後臺開發同學

上海-新天地e 成科技-誠募 Go 語言工程師

 

上海曉信科技招聘Go工程師

招聘詳情地址:https://gocn.vip/explore/category-8

贊(0)

分享創造快樂