原创 如何對Docker Image進行審查

本文節選自我的博客文章:構建可靠、安全、最小化的 Docker 鏡像: 原理與實踐. 正如Code Review一樣,代碼審查可以大大提升企業項目的質量。容器鏡像同樣作爲開發人員或是運維人員的產出物,對其進行審查也是必要的。 雖然我們可以通

原创 SUID, SGID 和 Sticky Bit 到底是什麼

對於Linux系統而言,針對可執行文件與目錄存在三個特殊權限設置。分別是: SUID SGID Sticky bit Set-user Identification (SUID) 你是否想過,一個非root用戶是如何通過修改他的密碼,並

原创 像 Awesome-Go 一樣提升企業 Go 項目代碼質量

1. Awesome-Go 項目 參與過awesome-go項目的gopher都知道,每個MR都必須滿足它以下的要求: Make sure that you've checked the boxes below before you su

原创 如何管理系統路由表

1 路由原理 從圖示中可以看出:能夠操作系統路由表的的有三個實體: 路由守護程序 routed 路由命令 route netstat命令 其中,netstat命令只能讀取路由信息無法直接對系統路由表進行操作。 增刪路由表信息,只

原创 Go Module 工程化實踐(三):工程實踐篇

3. 工程實踐篇 如何實現企業內項目的Go Module工程化遷移? 以本人以往所在公司的實際現狀作爲樣例,說明具體的Go Module工程化遷移過程。 原有Go項目均採用單一vendor的模式進行依賴控制,即企業內所有Go項目的第三方依賴

原创 Go Module 工程化實踐(二):go get 取包原理篇

接上篇: Go Module 工程化實踐(一):基礎概念篇。 2. go get 取包原理篇 不論是否開啓Go Module功能,go get從版本控制系統VCS中取包的基礎過程是類似的,除了在新的實現中不再循環拉取submodule子模塊

原创 Go Module 工程化實踐(一):基礎概念篇

1. 基礎概念篇 Go Module已經來了,默認Go Module模式將會在1.13版本發佈。也就是說半年後,就會全面鋪開。鑑於官方提供掃盲文檔中的樣例過於簡單,提供一個更加貼近實際開發過程的例子也許是有必要的。 官方文檔參考:Go Mo

原创 如何管理 Goroutine

爲什麼需要管理Goroutines 有效利用資源 雖然在Golang程序中,使用go func的方式開啓一個goroutine協程是非常輕量級的操作。但是,完全不管理的任意創建,會造成很多資源的浪費。雖然golang本身提供了GC功能,但是