Actor 模式:把「同時」變成「排隊」
共享記憶體加鎖為什麼難寫對?Actor 模式用私有狀態與非同步訊息換掉鎖。本文從死結談起,比較 Swift 的編譯器隔離與 Erlang 的行程隔離,並拆解 actor reentrancy 這個容易踩的坑。
改名字換不到封裝:Python 的 __x、JavaScript 的 #x,與 minifier 在做的那件事
Python 的雙底線是編譯期的識別字改寫,JavaScript 的 # 是語言層的硬性私有,minifier 的 mangle 又是第三件事。同一個詞蓋住四種機制,而其中只有一種真的擋得住人。
Python 的 EAFP 與 LBYL:例外處理為什麼貴,又該在哪裡用?
從 Stack Frame、Call Stack、Stack Unwinding、Traceback 與 Heap 拆解 Python 例外的成本,理解 EAFP 與 LBYL 的真正取捨。
編譯期就擋,還是執行期才爆?Java、Python、JavaScript 的 forward reference
同樣是「先用後宣告」,Java 直接編譯失敗,Python 有時候可以有時候噴 NameError,JavaScript 則給你一個 undefined。差別不在語法,而在「名字是什麼時候被解析的」。本文以 Java 的 JLS 規則為主軸,往下對照 Python 與 JavaScript。
Java LDAPS 的 connection pool:以為開了,其實沒開
在 JNDI 環境裡加上 com.sun.jndi.ldap.connect.pool=true,看起來 pool 就開好了。但只要連的是 LDAPS,這行設定完全不會生效,因為 pooling 的預設條件裡沒有 SSL。從驗證方法講起,給出一份完整的設定,並說明 pool key、閒置連線與歸還時機。
Pydantic 入門:用型別註解打造 Python 的執行期資料驗證
從 Java/JavaScript 開發者的視角理解 Pydantic,涵蓋核心概念、常用功能,以及它為何成為 FastAPI 與 LLM structured output 的基石。
從全域污染到 import:CommonJS 與 ESM 的由來、差別與未來
為什麼 Node 用 require,瀏覽器卻用 import?為什麼有些套件叫 .mjs,有些叫 .cjs?這些混亂的根源,是 JavaScript 模組系統一段橫跨十幾年的演進史。本文從沒有模組的年代講起,用實際程式碼對照 CommonJS 與 ESM 的差別,再說清楚為什麼 ESM 是未來。
從 Java 呼叫 .NET 的 SOAP Web Service:把 XML 攤開來看
用 wsdl2java 產 stub、呼叫、收到回應,表面上一切都會動。但只要對方拋一個 Fault,你就得進到 SOAP 信封內部去看 raw XML。從 SOAP 結構切入,示範如何攔截送出與回傳的 XML,最後用純 HTTP POST 把整個請求重現一次。
從 Hoisting 到 Execution Context Stack:揭開 JavaScript 執行機制的面紗
為什麼 var 可以「先用後宣告」?為什麼函式可以倒著呼叫?這些 JavaScript 看似神奇的行為,背後其實都指向同一件事:Execution Context 與它的 Stack。本文從 Hoisting 表象切入,逐層深入引擎的執行機制,搭配圖解徹底釐清。
平行運算的理想與現實:Functional Programming 真的能解決所有麻煩嗎?
平行運算、副作用、不可變資料——函數語言的這些特性常被過度神話。本文拆解三大常見誤解,還原 Functional Programming 典範的真正價值。
用 Functional Programming 的角度理解 Python Decorator
從一等函式、高階函式、閉包出發,揭開 Python decorator 的本質,讓你不只會用,更能看懂它背後的函數式思維。