Home

0

12 Factor筆記

現在大型專案和容器化服務的盛行, 且很多都做成微服務上到雲端平台.Heroku提出The Twelve-Factor App這些準則讓開發者參考一個Saas應該遵守哪些準則. 1. Codebaseone application <=> one codebase codebase(git repository) 跟 application存在著1on1的關聯.如果有多個repo, 則

0

Go go mod 終於不會再被GOPATH綁死了

Go ModulesGo modules 出現原因 解除對GOPATH的完全依賴, 有go modules就能在$GOPATH外開專案了. 不同環境或者是多專案, 需要一套切換vendor目錄. 同一個依賴包的多種版本共存問題, 加入了版本化的支援. 可以使用GOProxy來解決某些地區無法使用go get的問題. 以往需要將vendor目錄一起提交到git, 避免CI/CD去拉到外部的依賴包.

0

Go govendor 好多依賴要管理

回憶一下之前Day01提到的 Go WorkSpace 工作目錄我們安裝好Go之後進去預設的GOPATH目錄下, 就會看到這樣的目錄結構. 123456789101112131415- GOPATH | -- bin/ | -- pkg/ | -- src/ | -- project1/ |

0

Go Package 使用多個套件之前必須要懂的包

這次聊Package, 主要是因為接著都會需要對業務面向作模組的拆分.或者對功能作拆分, 甚至是第三方套件的引入.一個專案只要不是只有一個main.go, 就一定會有其他的package. Package(包)程式碼的目錄, 可以重複利用程式的方案, 方便維護。Go默認提供很多package, 像是fmt、is等。開發者也可以創建自己的package。 package要求所有檔案的第一行添加p

0

Go Type & Struct, 從單細胞生物, 來到多細胞生物了

Typetype這關鍵字用來聲明宣告一些東西 struct等下就介紹 interface下次介紹 基礎型別 123456789101112131415161718192021222324252627282930313233343536package mainimport ( "fmt")// 宣告別名type name = string// 定義新的基礎型別type newStr strin

0

Go 映射Map

MapMap是一種透過Key來取得Value的一種資料結構, 目的是為了快速查找用O(1).為什麼MAP能這麼快定位到資料是否存在,或資料本身的位置因為它使用更多資訊來紀錄資料放在哪邊就像關聯式資料庫的索引,以空間來換取時間 (反正現在記憶體夠大夠便宜XD)而Key具唯一性,在Map中若Key重複, 會把Value作後蓋前的更新. Java的話是HashMap, C# & Python則

0

Go Container 3兄弟-Ring

這隻又跑出來了XDRing其實就是雙向環鏈(circular doubled linked list)用這圖, 是想表達, 我們有一個歌單可以單向依序放到完, 當然也能選擇循環依序播放阿 !!!Ring可以滿足這行為的操作!! Ring只有一個Value屬性,開發者可以任意操作.prev, next都是給操作方法操作用的. 1234type Ring struct { next, pr

0

Go Container 3兄弟-Heap

HeapHeap(堆積)其實是一個Complete Binary Tree(完全二元樹).Go的Heap特性是 各個節點都自己是其子樹的根, 且值是最小的.同個根節點的左子樹的值會小於右子樹.所以根節點的值是最小的, 位於索引0的位置.也有另一種是最大的(max heap), 只是Go這裡是最小的(min heap).定義 : n個元素 k1, k2,…ki…kn, 並且若且唯若滿足下列關係時稱為

0

Go Container 3兄弟-List

Go有提供幾種 List、Heap、Ring來依序玩看看 List 因為上篇講Array & Slice, 這兩種底層都需要連續的記憶體空間來配置.List則是可以非連續空間的容器, 也可以支援快速增刪元素.List由多個節點所組成的, 節點之間透過一些變數紀錄彼此的關係.且List並沒有限制每個節點的元素類型. 所以可以是任意類型.但後續轉換時就要注意. List有多種實現方式 : S

0

Go Array & Slice

Array 123// n 陣列元素數量// type 陣列元素類型var array變數 [n]type 長度是固定的, 聲明後無法被改變 長度是陣列類型的一部份, 所以兩個長度不同但元素類型相同的陣列, 是不同的類型, ex: [2]int 跟[3]int是不同的類型.初始化方式1234567891011121314a := [3]int{1,2,3} b :=