C 語言前置處理器:無參數巨集定義與編譯預處理實戰
前置處理基礎 所有指令以 # 開頭,巨集名慣例全大寫,行尾無分號。 作用範圍:從出現位置到檔案結尾。 編譯前先展開巨集,產生新原始碼,再進入正式編譯。 無
C 語言儲存類別:自動、靜態與暫存器變數詳解
三種儲存類別 類別關鍵字儲存區生命週期作用域預設初值 自動變數auto (預設)堆疊函數執行期間區域不定值 (Debug 0xCC) 靜態變數static資
C 語言 volatile 關鍵字深度解析與實測
核心語義 volatile 告訴編譯器:該變數可能被「編譯器未知的因素」(硬體暫存器、中斷服務程式、其他執行緒、訊號處理器)隨時修改。因此禁止優化,每次存取必須
Windows 平台用 C 語言獲取進程 CPU、記憶體與 I/O 統計
介面設計 // 回傳 CPU 使用率百分比,失敗回傳 -1 int get_cpu_usage(); // 回傳實體記憶體與虛擬記憶體位元組數,成功 0,失敗
C語言進階:全域變數與區域變數的記憶體模型差異
定義與作用域 區域變數:定義於函數內部,僅在該函數內有效。生命週期隨函數調用動態創建/銷毀,儲存於堆疊。 全域變數:定義於所有函數外部,整個專案可見。生命週期
Muduo網絡編程示例之九:基於 TCP 的簡單發布訂閱廣播服務
應用層廣播與 Pub/Sub 模型 分散式系統除點對點通信,常需一對多廣播。本示例實現一個 Hub 服務:Publisher 發布消息到 Topic,Subsc
Muduo網絡編程示例之八:Timing Wheel 踢掉空閒連接的優雅實現
兩種朴素做法的缺陷 全域掃描:每秒遍歷所有連線檢查 now - lastReceiveTime > 8s,連線數大時開銷大。 每連線一個 One-sho
Muduo網絡編程示例之七:多路複用連接服務器與自動化測試
需求:串並轉換 將多個客戶端連線(Client Connections)多工為單一後端連線(Backend Connection),使後端邏輯服務器無需處理併發
Muduo網絡編程示例之六:限制服務器最大併發連接數的實踐
為何要限制併發連接? 文件描述符是稀缺資源。若耗盡(觸及 ulimit -n 硬限制),程式將無法接受新連線、開啟檔案、建立 Socket,處理邊界條件極其棘手
Muduo網絡編程示例之五:Roundtrip 精準測量網絡延遲與時鐘偏移
RTT 測量原理 測量兩台機器往返延遲(RTT)的經典方法: Client 發送封包,攜帶發送時間戳 T1 Server 收到後立即原封回射,記錄接收時間 T
Muduo網絡編程示例之四:Twisted Finger 協議漸進式實作
從零開始的 Finger 服務 Finger 協議(RFC 1288)是早期用戶資訊查詢服務。本示例以七個漸進步驟,展示如何用 Muduo 從空殼程式構建完整的
Muduo網絡編程示例之三:高精度定時器與 Timerfd 實踐
Linux 時間函數選型 在服務端程式中,時間相關任務主要有三類:獲取當前時間、時區/日期計算、定時操作。Muduo 的選型原則: 計時:僅使用 gettim
Muduo網絡編程示例之二:TCP 分包與聊天服務器實作
TCP 分包:從「偽問題」到核心需求 TCP 是位元組流協議,並不保証應用層訊息的邊界。所謂「黏包問題」其實是偽命題,真正的課題是如何在位元組流中識別並還原出完
Muduo網絡編程示例之一:五個經典 TCP 協議實作
前言 在網絡編程的學習曲線中,掌握幾個最基礎的 TCP 協議是絕佳的切入點。本文將帶領讀者透過 Muduo 網絡庫,逐步實作 Discard、Daytime、T
Muduo 網絡庫入門(零):Echo 服務器三步走,回調驅動極簡體驗
Muduo 設計初衷 簡化 Linux 2.6+ 下並發非阻塞 TCP 編程,讓開發者聚焦業務邏輯,而非與 Socket API 纏鬥——減少「偶發複雜性」(B
鏈表追趕問題全解析:從倒數第 k 節點到環相交判斷,再到微軟機器人智力題
前言:機器人相遇智力題 水平軌道兩點放兩機器人,同一程序控制,指令:左/右移一步、條件判斷(對方曾到過此處?)、無條件跳轉。目標:必相遇。 這是去年微軟工程院題
Linux C/C++ 調試實戰(二):GDB 程序控制全攻略——斷點、觀察點、捕捉點與反向調試
一、讓程序停下的三種模式 斷點:特定代碼位置停下。 觀察點:特定內存地址/表達式值變化時停下。需在變量進棧幀後設置,離開作用域自動刪除。 捕捉點: