Archives
Everything I've written, organized by time.
When the same model writes and reviews code, how strict can it really be? xreview uses codex for cross-model verification to solve the self-review blind spot.
一個模型寫的 code,再用同一個模型 review,它會對自己多嚴格?xreview 用 codex 做交叉驗證,解決 self review 放水問題。
從程式執行順序切入,說明 Race condition 的成因,並介紹 sequenced-before、happens-before、synchronized-with 等多執行緒同步的核心概念。
用暗殺教室與火影忍者的影分身之術,直觀解釋 Concurrency 與 Parallelism 的核心差異,並介紹 context switch、scheduler、preemptive 等重要名詞。
資料庫 ER Model 入門筆記,整理 Entity 與 Attribute 的定義與分類,以及繪製 ERD 圖的基本概念。
DFS 遍歷所有根到葉的路徑,以位元左移方式累積二進位值並求和,解析 Sum of Root To Leaf Binary Numbers。
解讀 Linux kernel v4.14 中 waitqueue 的資料結構與實作原理,了解 kernel 如何管理等待資源的 task。
追蹤 Linux kernel v4.14 排程器 schedule() 的原始碼,梳理從 preempt_disable 到 __schedule 的完整 context switch 執行流程。
從 fork() system call 出發,追蹤 Linux kernel v4.14 中 _do_fork() 的實作流程,理解 process 建立時 task_struct 的初始化細節。
以入度(被信任次數)與出度(信任他人次數)的條件找出唯一滿足鎮長條件的人,解析 Find the Town Judge。
用大小為 60 的 array 記錄每個 time%60 的出現次數,以 O(n) 找出所有兩兩相加為 60 倍數的配對,解析 Pairs of Songs Divisible by 60。
DFS 過程中同時傳遞路徑上的最大值與最小值,在每個節點計算最大差值,解析 Maximum Difference Between Node and Ancestor。
利用 BFS 逐層連結完全二元樹每個節點的 next 指標,解析 Populating Next Right Pointers in Each Node 的思路。
介紹如何用 vagrant 快速建立虛擬機並執行自己編譯的 Linux kernel,適合需要反覆修改核心並測試的開發場景。
使用快慢指標,快指標每次走兩步、慢指標走一步,快指標到終點時慢指標即在中點,解析 Middle of the Linked List。
找出有效位元的最大 mask,再與原數做 XOR 取得補數,解析 Number Complement 的位元操作思路。
DP 經典題:以 dp[i] = max(dp[i-1], dp[i-2]+nums[i]) 在不相鄰的限制下求陣列最大總和,解析 House Robber 的狀態轉移。
直接對距離平方排序後取前 k 個,解析 K Closest Points to Origin 的思路與 C++ 實作。
用 stack 處理乘除的優先計算並延遲加減運算,解析 Basic Calculator II 的思路與 C++ 實作。
先按起始值排序,再以單次掃描合併所有重疊區間,解析 Merge Intervals 的思路與 C++ 實作。
整理 Go 語言定時器的基本用法,介紹 time.Timer 的一次性觸發與 time.Ticker 的週期性觸發,以及常見的使用注意事項。
將課程先修關係建成有向圖,以 DFS 加狀態標記偵測 Cycle,並透過拓樸排序輸出修課順序,解析 Course Schedule II。
以 BFS 從 start 出發標記已訪問位置,判斷能否到達值為 0 的位置,解析 Jump Game III 的思路與 C++ 實作。
利用完全二元樹的結構性質,以 O(log²n) 的時間複雜度計算節點數,解析 Count Complete Tree Nodes 的思路。
介紹 socket programming 中用來存放地址的通用結構 sockaddr,以及 sockaddr_in 等不同 address family 的差異與使用方式。
介紹 socket 作為 IPC 機制的基本概念,以及如何在 Linux 中呼叫 socket() system call 建立一個新的通訊端點。
jserv Linux 核心設計課程第一週第二題解題紀錄,練習以函式指標操作單向 linked list 的各種運算。
jserv Linux 核心設計課程延伸題目:在 Circular Doubly Linked List 上實作 Bubble Sort,練習雙向指標操作與排序邏輯。
記錄如何將 VS Code 環境(套件、設定)備份到 GitHub,方便在多台電腦之間快速同步開發環境。
記錄在使用 Cobra 開發 CLI 工具時,如何在沒有傳入任何參數的情況下自動顯示 help message,而不需要手動輸入 --help。
整理 C 語言 Function Pointer 的宣告語法、作為參數傳遞的用法,以及在回呼函數(callback)等實際場景的應用範例。
記錄使用 Hugo LoveIt 主題架設靜態部落格的過程,整理主題設定的參考資源與各項配置注意事項。
跟著 MIT 6.824 閱讀 The Google File System 論文,整理 GFS 的架構設計、Single Master 理念、Metadata 管理、一致性模型與 Lease 機制。
從 SDN 的發展歷史出發,介紹 Software Defined Networking 的基本架構與 control plane、data plane 分離的核心設計理念。
深入 OpenFlow 1.0 的協定規範,了解 SDN 中 Controller 與 Switch 之間如何透過 flow table 進行流量控制。
紀錄為小專案資料庫做持久化的過程,整理 Docker volume 的建立、掛載指令與 bind mount 等不同 volume 類型的使用方式。
整理 Linux shell 變數的基本操作,包含宣告、echo 輸出、export 匯出環境變數、unset 刪除等常用指令的語法與注意事項。
整理 Linux shell 進階變數操作,介紹 read 讀取使用者輸入、declare 宣告變數型別、array 陣列的使用方式與實際範例。