Kenny's Blog

這是Kenny's technology blog,歡迎交流_(:3」∠)_

0%

再寫 Golang 的時候常常會需要封裝 struct 的操作,而通常會針對該 struct 做一個 New func 的操作,為的就是方便 inject 相對應的 dependency 進去。那麼就會碰到需要有 option 的時候,所謂 option 的時候,是指說有些欄位的設定是可以給 client 自由設定的,此外如果 client 沒有設定,會有所謂的預設值。那麼這樣的設計在 Golang 要怎麼去實作已經不同方式的優缺點在哪,來看一下吧。

閱讀全文 »

Singleton 的設計模式相信大家都耳熟能詳,我想說做個筆記記錄一下在 Golang 要如何實作。

閱讀全文 »

Database 最值得學習的不外乎是 index 的設計,為什麼呢?因為有了 index 才可以加速查詢,但是內部的 index engine 是怎麼做到的?如果我們可以了解細節的差異的話,我們在設計要怎麼放 index 在什麼欄位,我覺得會更有感覺。

今天這篇文章會介紹 Postgres 內部的 index engine 是怎麼運作,不僅僅單純的 index scan,事實上 Postgres 會因應不同的情況採取不同的 scan 策略。

閱讀全文 »

今天要來介紹的是 Designing Data-Intensive Applications Chapter 03 的筆記,主題是:Storage and Retrieval,這篇文章涵蓋的內容是圍繞著 index structure 的設計,最後介紹到 B-Tree 與 LSM-Tree 兩者的優缺點及應用場景。

閱讀全文 »

強者我同事,最近在公司分享 zero-downtime migration 的細節,避免以後我們上了 migration 使得 Production Postgres 被 lock 住,這樣會讓我們的整個服務,會無法使用。

聽完我覺得這些細節寫成筆記記錄下來比較好,避免自己犯了相同的錯誤。因為公司用的資料庫是 Postgres,所以文章內的例子都是用 Postgres 來示範的~

閱讀全文 »

今天來介紹最近公司讀書會要一起共讀的書本:Designing Data-Intensive Applications,一樣,會把每一章所做的筆記寫成 blog 出來。今天的重點主要是介紹何謂 Reliable,Scalable and Maintainable,這三個元素應該是設計每個系統都需要考量到的三件事情,一起來看看吧。

閱讀全文 »

距離我上次寫文章,已經好幾個月了,最近終於忙完學校的事情,從八月開始算是要邁入社會新鮮人了,當然也希望我的寫 blog 的習慣可以一直持續下去。

今天這篇是開啟將一些我在看的實體書或是電子書的筆記記錄起來,所以之後應該會連續發好幾篇同一本書的筆記,為避免篇幅過長,我會將書本中的每一個章節都分別寫筆記記起來,會在 blog 寫出來的都是我覺得比較需要記起來的。

今天要提的是這本書:Concurrency in Go

個人認為這本書還不錯,它提供了很多寫 Concurrency 有哪一些 pattern 可以使用,之後應該也會將這些 concurrency pattern 放在我的 golib 上,這個 repo 是包含我平常寫專案常用的套件封裝,個人覺得還滿實用的,歡迎大家可以給個 star 並且發個 PR 提供更多好用的工具。

今天的主題是第一章的筆記:An Introduction to Concurrency

閱讀全文 »

上次的文章介紹:單雙向 channel 的差別及宣告方式,可以參考:Golang 教學系列 - channel 裡面資料什麼都能放?單雙向 channel 的差別

今天這篇文章主要介紹如何對 channel 進行關閉以及如何透過 for range 來尋訪 channel 裡面的 element。如果想要詳細的介紹可以參考我的教學影片:Golang 教學系列 - close 與 for range 搭配 channel 觀念教學!| 肯尼攻城獅

閱讀全文 »

上次介紹了如何使用 Replica Set 如何對 Pods 來進行管理,但其實官方並不推薦直接使用 Replica Set 來對 Pods 操作,更推薦可以使用 Deployment 來直接操作 Pods,可以理解當我們建造 Deployment 資源後會自動一併建立好 Replica Set 及 Pods,所以我們可以透過 Deployment 直接進行管理。

閱讀全文 »