Page 1

盒子圖示

熟悉使用 Go Module 與 Package

從 JavaScript 轉寫 Go 我其實還是不太熟悉 Go 如何模組化處理代碼,雖然它們有大致相似的地方,但使用體驗感覺非常簡單甚至到簡陋的程度,當然簡單並不意味著「容易」或「沒用」,Go 簡單且固執己見的哲學在各方面都感受得到。

資料庫符號

資料庫查詢效能問題:N+1 問題

很早以前接觸資料庫就有聽說過「N+1 問題」,不過一直沒有寫下筆記認真思考過一次,這次撰寫問題成因與詳細解方與圖表。透過:資料結構設計(去正規化)、在 DB 層完成關聯資料查詢、批次查詢並在應用層組裝、ORM ODM Eager Loading 來解決。

资料图示

Go 进行数据序列化与 Marshal 名称的起源

处理传递资料时都快忘了有「序列化与反序列化资料」这个步骤,因为都被套件像是:Axios 抽象掉了,近期在写后端也重新温习相关知识,也延续先前文章:Go Struct Tag 是什么?如何透过 reflect 动态处理栏位?探讨 Go 如何处理序列化资料。

Data icon

What is Marshal in Go?

Revisiting serialization/deserialization in Go and the origin of "Marshal", building on my earlier post about struct tags and reflect.

資料圖示

Go 進行資料序列化與 Marshal 名稱的起源

處理傳遞資料時都快忘了有「序列化與反序列化資料」這個步驟,因為都被套件像是:Axios 抽象掉了,近期在寫後端也重新溫習相關知識,也延續先前文章:Go Struct Tag 是什麼?如何透過 reflect 動態處理欄位?探討 Go 如何處理序列化資料。

堆疊图示

程式如何记忆:Stack 与 Heap

学习高阶程序语言通常都会接受一个观念是:「没用到的变量会自动被垃圾回收掉」。不过越接近底层或开始探讨性能问题,发现自己对于程序语言核心的记忆体概念 Heap 与 Stack 并没有那么清楚。程序语言究竟是如何分配与管理记忆体的?所谓的垃圾回收(Garbage Collection, GC)具体来说又做了哪些事情?

堆疊圖示

程式如何記憶:Stack 與 Heap

學習高階程式語言通常都會接受一個觀念是:「沒用到的變數會自動被垃圾回收掉」。不過越接近底層或開始探討效能問題,發現自己對於程式語言核心的記憶體概念 Heap 與 Stack 並沒有那麼清楚。程式語言究竟是如何分配與管理記憶體的?所謂的垃圾回收(Garbage Collection, GC)具體來說又做了哪些事情?

打勾圆圈图示

为什么需要双重因子验证(2FA)?

随着越来越多的软体推广与强制双重因子验证 2FA,我的手机也装上了 Google Authenticator,但老实说,很长一段时间我只知道「打开 App → 输入六位数字」,对于这组数字为什么会一直变、伺服器又是怎么验证的,其实没有真正了解过。直到最近在测试一些相关登入逻辑才回来补齐这块知识。

打勾圓圈圖示

為什麼需要雙重因子驗證(2FA)?

隨著越來越多的軟體推廣與強制雙重因子驗證 2FA,我的手機也裝上了 Google Authenticator,但老實說,很長一段時間我只知道「打開 App → 輸入六位數字」,對於這組數字為什麼會一直變、伺服器又是怎麼驗證的,其實沒有真正了解過。直到最近在測試一些相關登入邏輯才回來補齊這塊知識。