《C 專家編程》閱讀筆記(一):C 語言歷史、標準化與經典陷阱
第一章:穿越時空的迷霧 Ken Thompson:創造 B 語言,發明 ++/--。 Dennis Ritchie:基於 B 創造「New B」,後改
終端對非打印字符顯示差異的有趣例子:C++ string 與 char 數組的行為分析
現象代碼 #include <iostream> #include <string> using namespace std; int
面試題解析:從 1 到 n 中缺失 3 個數字,順序打亂,高效找出缺失值
問題描述 有一組數字 1 到 n,隨機移除 3 個數字並打亂順序,放入長度為 n-3 的數組。要求找出缺失的 3 個數字,n=10000,算法盡可能快。 解題
圖像層正常混合模式詳解(下):圖像拼接與直接繪制到 DC 的實現
承接上篇,本文探討基於 ImageMixer 實現圖像拼接(多圖合成到一張畫布)和直接將位圖數據繪制到設備上下文 (DC)。 1. 圖像拼接:帶座標的 Ima
圖像層正常混合模式詳解(上):Alpha 混合算法完整推導與 C 實現
圖像合成是圖像處理中最高頻操作,本質是像素顏色混合。Photoshop 中的「正常混合模式」看似簡單,實則包含多種 Alpha 通道組合情況。 基本混合公式(
Micro2440/Mini2440 Linux 下蜂鳴器 (Beep) 控制 C 程序詳解
關鍵字:Micro2440, Mini2440, Beep, 蜂鳴器 Micro2440/Mini2440 Linux 默認內核已包含蜂鳴器支持(見《Micr
Linux 下網絡編程 Server 端進階:使用 fork()、waitpid() 與 sigaction() 處理僵屍進程
在前一篇基礎服務器代碼基礎上,本文加入 Linux 系統特有的進程管理機制,解決僵屍進程問題。 核心問題 fork() 只有 Unix/Linux 才有(無線
Beej's Guide to Network Programming 系列第19篇:Client/Server 架構背景與簡單服務器實現
6. 客戶/服務器背景知識 網絡世界本質上是客戶進程與服務器進程的對話。以 Telnet 為例:客戶端連接 23 端口,服務端運行的 telnetd 進程處理
網絡編程實戰:基於 Beej's Guide 的 Client/Server 完整代碼示例
翻譯了那麼多章《Beejs Guide to Network Programming》,是時候動手寫一個簡單的客戶端和服務器端程序了! 客戶端流程 getad
Beej's Guide to Network Programming 系列第18篇:gethostname() 獲取本機主機名
5.11 gethostname() —— 我是誰? gethostname() 比 getpeername() 還要簡單。它返回當前程序運行機器的主機名,隨
Beej's Guide to Network Programming 系列第17篇:getpeername() 獲取對端地址
5.10 getpeername() —— 誰在連線的另一端? 這個函數非常簡單,簡單到作者都不想單獨列一節,但為了完整性仍予以介紹。getpeername(
Beej's Guide to Network Programming 系列第16篇:套接字關閉與 shutdown() 精細控制
5.9 close() 與 shutdown() —— 徹底斷開連接的藝術 經過一番 send() 和 recv() 的數據傳輸後,我們需要妥善關閉套接字。最
Beej's Guide to Network Programming 系列第15篇:無連接數據報套接字的 sendto() 與 recvfrom()
上一篇:Beejs Guide to Network Programming 系列第14篇 5.8 sendto() 與 recvfrom() —— 數據報通
非遞歸歸並排序實現:自底向上迭代,穩定排序 5000 萬整數
歸並排序的非遞歸優勢 **天然穩定排序**(相等元素相對順序不變)。 **最壞/平均/最好均為 O(N log N)**,無快排最壞 O(N²) 風險
非遞歸快速排序實現:手動棧模擬遞歸,支援 5000 萬整數排序
為什麼需要非遞歸版? 避免遞歸深度過大導致**棧溢出**(極端情況深度 O(N))。 消除函數調用開銷,性能更穩定。 便於嵌入式/無棧環境移植。
經典面試題:從 1~n 中找出 3 個缺失數字的 O(n) 時間 O(n) 空間解法
問題描述 有數組 A 長度 N-3,包含 1 到 N 中除 3 個缺失數字外的所有數,順序打亂。N=10000。要求快速找出 3 個缺失數。 核心思想:空間換