
實作 LRU Cache - Clean Architecture in Go
Clean Architecture 提到許多軟體開發的設計模式和原則,當我們將系統一定程度的套用這些設計後,就能得到很不錯的擴充能力。假設現在需要對資料庫的讀取功能加入快取機制,來應付逐漸變大的流量,能如何實作呢?
Clean Architecture 提到許多軟體開發的設計模式和原則,當我們將系統一定程度的套用這些設計後,就能得到很不錯的擴充能力。假設現在需要對資料庫的讀取功能加入快取機制,來應付逐漸變大的流量,能如何實作呢?
使用 sqlc 的前置準備已經完成,我們現在可以透過 sqlc 產生的程式碼直接跟資料庫互動,然而生成的實作和我們在 UseCase 期待的介面不同,因此需要實作 Repository 來將介面統一。
使用 BoltDB(或者 NoSQL)類型的資料庫跟我們原生的 InMemory 模式還是相當接近,那麼利用 Repository 抽象化的特性轉換成 RDBMS(關連式資料庫)是否可行呢?答案是肯定的,我們會使用 sqlc 來支援 SQLite 或者 PostgreSQL 和 MySQL。
最近實際參與了工研院開源事件後被視為延伸的開源授權爭議。起因在初步處理後,有人詢問是否會有後續處理,我認同有後續處理,所以提出了調整用詞的建議,然而後續並未如我預期以更友善的方式繼續進行。
之所以會提出建議做出調整,是希望整個開源社群是朝向更正面、友善的風氣前進,而非無法容錯的方向。
當 Clean Architecture 的實踐完善後,我們在各種功能的抽換就能獲得許多彈性,接下來我們會以 BoltDB 來示範將原本儲存在記憶體的資訊,轉換為保存在硬碟的持久性版本。
在前面的案例中,我們並沒有考量到「輸入檢查」這件事情,因此在 gRPC 的案例中,我們發現即使沒有填寫 Name
也可以順利建立訂單,這並不符合我們的期待。
在上一階段我們完成了可以運行的 gRPC Server 接下來就可以將原本 RESTful API 上的實作移植到 gRPC 上,讓我們可以使用 gRPC 來操作這些功能。
RESTful API 的版本已經實作完畢,我們接下來會實作 gRPC 的版本,我們會透過這次的擴充,來了解為什麼 Controller 和 UseCase 會被切分開來。
AI(人工智慧)領域的發展非常快速,在二月之前我還不覺得以 AI 來寫程式是有效的,因為我需要複製程式碼到編輯器中,然而 My LLM codegen workflow atm 這篇文章改變了我的看法,因為有一些工具已經足夠成熟能直接編輯檔案。
有非常多額外內容,我會把下半年連載的展示專案跟閒聊另外放在 YouTube 影片 裡面討論。
現階段我們已經將 Tokenization(代號化)的機制整合到原本訂單的使用者資訊中,然而在 Token
的紀錄中仍會存在明碼的資料,因此我們還需要加入加密機制來處理,要如何處理也是一個值得思考的問題。