01 Golang之美
初始golang,語言之美之簡潔之高效,天生具有高併發等特性。 本文來自蔡欣圻、邵聰聰,對go語言的分析很到位全面,在這裡分享出來給go開發者,希望能讓你有一個更深刻的認知。
原文連結:
https://juejin.im/post/5bf50600e51d457dd85460d8
原文二維碼:
02 記憶體分配
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 資料結構glibc
用的malloc為ptmalloc2。往往不能滿足我們的需要,造輪子實現一個記憶體池或者記憶體分配器幾乎是家常便飯。對於ptmalloc2,至少有以下缺點:
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 目錄;
原文連結:
原文二維碼:
05
如何評估 Kubernetes 持久化儲存方案
在2018年的Garnter技術成熟度曲線中,容器儲存出現在了技術觸發期,已經開始進入大眾的視野。我相信,在未來的兩年內,容器儲存會隨著Kubernetes的進一步成熟和商業化,其地位會越來越重要。如何在五花八門的儲存產品中,選擇適合自己的一款,將會是IT大佬們必須要面對的問題。本文將會從使用場景角度分析,如何評估容器儲存方案。
原文連結:
https://mp.weixin.qq.com/s/6yg_bt5mYKWdXS0CidY6Rg
原文二維碼:
職位推薦:
【廣州-琶洲】BAT 創業團隊 誠招後臺開發同學
【上海-新天地】e 成科技-誠募 Go 語言工程師
【上海】曉信科技招聘Go工程師
招聘詳情地址:https://gocn.vip/explore/category-8