人民幣定價:68 元
定價
:NT$ 408 元優惠價
:87 折 355 元
絕版無法訂購
商品簡介
目次
相關商品
商品簡介
本書主要針對C/C++語言在商用工程開發中的程序實戰進行論述,從需求出發,從商用解決方案的角度來理解C和C++語言的程序設計技巧。商用程序員在實際工作中最為關注的無錯化、並行、時間片、內存池、線程池、任務池、工程庫和跨平臺等相關問題,在本書中都有寶貴的經驗總結和理念梳理。本書不是教科書,更多的是在開發技巧、測試調試、工程代碼庫等方面給出實例與總結。本書也可以說是教科書,作者試圖通過實戰技巧的訓練,幫助讀者升華出一種全新的程序設計理念。本書可以幫助你擺脫“Training”式編程開發思維與方法,培養“商用”和“產品”標準的工程開發技能。
目次
第1章 商用工程開發思路
1.1 系統分析初步
1.1.1 需求理解和溝通
1.1.2 “上家”和“下家”
1.1.3 角色“定名”
1.1.4 初步的拓撲圖
1.1.5 后續的模塊級設計
1.1.6 商用設計思維
1.2 商用程序員對開發的理解
1.2.1 資源和成本
1.2.2 盈利導向
1.2.3 客觀
1.2.4 平衡
1.2.5 服務
1.3 基本開發思路
1.3.1 邊界
1.3.2 “細分”的分析方法
1.3.3 靈活,逆向思維
1.3.4 小內核,大外延,工程庫思維
1.3.5 單筆交易失敗不算失敗
1.4 數據傳輸各個角色的開發思路
1.4.1 服務器的設計原則
1.4.2 PC客戶端的開發思路
1.4.3 嵌入式設備的開發思路
1.4.4 跨平臺軟件模塊的開發思路
第2章 基礎知識
2.1 內存的理解
2.1.1 32位操作系統的內存分配
2.1.2 C/C++語言對內存的使用
2.1.3 內存——bug之源
2.2 並行運算
2.2.1 時間片
2.2.2 進程和線程
2.2.3 同步和異步
2.2.4 禮貌地釋放時間片資源
2.2.5 跨線程通信
2.2.6 跨進程通信
2.2.7 網絡,並行運算的世界
2.3 “鎖”的使用
2.3.1 為什麼要使用鎖
2.3.2 使用鎖容易犯什麼錯誤
2.3.3 “行為鎖”和“資源鎖”
2.3.4 單寫多讀鎖
2.3.5 不可重入鎖
2.3.6 用鎖的最高境界——不用
2.4 “池”的深刻含義
2.4.1 “池”的由來
2.4.2 “池”的使用
2.5 跨平臺、跨語言開發基礎
2.5.1 C/C++跨平臺開發基礎
2.5.2 dll和so
2.5.3 API和NPI
2.5.4 服務無處不在
2.6 debug的重要性
2.6.1 在數據傳輸領域,你親眼看到的都不是真的
2.6.2 如何看到——萬事從debug開始
2.6.3 debug的原則
2.6.4 如何分析數據
2.7 性能統計的重要性
2.7.1 需要統計哪些信息
2.7.2 基本的統計方法
2.7.3 隨機數的產生
2.8 隊列無處不在
2.8.1 數據結構在數據傳輸中的應用分析
2.8.2 需要哪幾種隊列形式
2.9 不要求全責備
第3章 C/C++無錯化程序設計
3.1 “無錯化程序設計”簡介
3.1.1 無錯化程序設計思路
3.1.2 C/C++無錯化設計的解決方案
3.1.3 使用后的效果
3.2 計算機程序的真諦
3.2.1 程序就是“搬數”
3.2.2 程序就是“寫文章”
3.2.3 程序就是“復制”
3.2.4 筆者看程序設計
3.3 定名
3.3.1 匈牙利命名法
3.3.2 函數命名原則
3.3.3 變量命名原則
3.3.4 其他命名規則
3.3.5 定名的折中
3.4 無錯化程序的基本書寫原則
3.4.1 寫簡單易懂的程序
3.4.2 嚴禁變量轉義
3.4.3 嚴禁一語多義
3.4.4 函數只能有一個出口
3.4.5 變量如不使用,保持初值
3.4.6 常量必須定名
3.4.7 太大數組不要用靜態方式
3.4.8 盡量避免使用遞歸
3.4.9 解決方案一套就夠
3.5 基本程序設計原則
3.5.1 函數的設計
3.5.2 類的設計
3.5.3 其他要點
3.6 基本語句的約定
3.6.1 判斷語句,常量永遠在左邊
3.6.2 for (i = 0; i < n; i + +)
3.6.3 while(1)
3.6.4 不要使用do...while( )
3.6.5 i++和++i問題
3.6.6 請不要使用“?(...) :(...)”結構
3.6.7 善用大括號{ }縮小作用域
3.7 請使用goto語句
3.7.1 函數只有一個出口的原則需要goto
3.7.2 誰分配、誰釋放的原則需要goto
3.7.3 商用工程要求goto
3.7.4 程序的易讀性要求goto
3.7.5 break為什麼不能亂用
3.7.6 goto的常規使用手法
3.8 指針的使用原則
3.8.1 商用數據傳輸常見的指針類型
3.8.2 不要使用兩個以上的*號
3.8.3 指針不能參與四則運算
3.9 使用結構體的技巧
3.9.1 結構體傳參的必要性
3.9.2 預防多重指針的隱患
3.9.3 32位到64位移植
3.9.4 彈性內存使用需要結構體傳參
3.9.5 網絡傳輸協議,需要結構體傳參
3.10 使用宏的建議
3.10.1 宏的幾大作用
3.10.2 C+ +的建議
3.10.3 編譯宏——跨平臺開發
3.11 回調函數設計方法
3.11.1 回調模型設計者
3.11.2 回調模型使用者
3.11.3 參數傳遞的常規手法
3.11.4 事件模型和回調模型
3.12 C語言字符串的深入研究
3.12.1 字符串拷貝
3.12.2 字符串構造
3.12.3 關於字符串處理的結論
3.13 C/C+ +語言無錯化程序設計小結
第4章 設計自己的工程庫
4.1 數據傳輸庫中到底需要哪些模塊
4.1.1 跨平臺定義
4.1.2 鎖與安全模塊
4.1.3 內存池
4.1.4 資源管理池
4.1.5 線程池與任務池
4.1.6 隊列管理
4.1.7 其他工具
4.2 工程庫基礎——跨平臺定義
4.2.1 鎖定義
4.2.2 線程控制相關定義
4.2.3 Socket傳輸相關定義
4.2.4 include系統頭文件
第5章 debug工具
5.1 變參函數的設計
5.2 文本輸出
5.2.1 獲得時間戳
5.2.2 同時輸出到文件和屏幕
5.2.3 文本輸出的原則
5.3 二進制輸出的debug函數
5.4 核心debug和日志系統的區別
5.5 統計模塊
5.5.1 累加器
5.5.2 計算模塊
5.5.3 平均值計算
5.5.4 統計平均值計算
5.5.5 輔助功能函數
5.6 CLowDebug工具類
5.6.1 需求分析
5.6.2 數據邊界聲明
5.6.3 類聲明
5.6.4 類工具函數
5.6.5 業務函數
5.7 基本debug工具小結
第6章 鎖
6.1 二元動作理論
6.1.1 二元動作在C語言中的書寫特性
6.1.2 面向對象和面向過程的本質差異
6.1.3 二元動作在C++語言中的特殊要求
6.1.4 二元動作開發關注要點
6.2 鎖對象
6.3 多線程安全的變量
6.3.1 CMint和CMbool試驗
6.3.2 多線程安全的變量模板
6.4 單寫多讀鎖
6.4.1 單寫多讀鎖的來源
6.4.2 單寫多讀鎖C語言實現
6.4.3 單寫多讀鎖的C++實現
6.4.4 TonyXiaoMinSleep
6.4.5 單寫多讀鎖安全變量
6.4.6 單寫多讀鎖的真實意義
6.5 不可重入鎖
6.5.1 需求分析
6.5.2 類實現
6.5.3 使用樣例
6.6 線程控制鎖
6.6.1 線程控制鎖的實現
6.6.2 線程控制鎖的使用
6.7 盡量不用鎖
第7章 內存與資源管理
7.1 內存管理的基本要求
7.1.1 不泄露
7.1.2 不產生碎片
7.1.3 可以自動報警
7.2 內存池的核心邏輯——內存棧
7.2.1 內存管理的數學模型
7.2.2 管理模型的優化
7.2.3 關於鏈表管理的思考
7.2.4 內存塊元素
7.2.5 內存棧
7.3 內存指針注冊管理模塊
7.3.1 內存注冊模塊原理介紹
7.3.2 模塊設計及類聲明
7.3.3 構造函數和析構函數
7.3.4 Add函數
7.3.5 Del函數
7.3.6 Modeify函數
7.3.7 PrintInfo函數
7.3.8 內存注冊模塊的深入使用
7.4 Socket注冊管理模塊
7.4.1 類聲明
7.4.2 構造函數和析構函數
7.4.3 Add函數
7.4.4 Del函數
7.4.5 PrintInfo函數
7.5 內存池類
7.5.1 類聲明
7.5.2 構造函數和析構函數
7.5.3 內存棧公有方法
7.5.4 指針管理方法
7.5.5 Socket管理方法
7.5.6 PrintfInfo方法
7.6 內存管理的深層次含義
7.6.1 資源重用的理念
7.6.2 注冊和反注冊機制
7.6.3 靜態資源的管理思路
7.7 被動池的常見組織形式
7.7.1 被動池的數據特性及需求分析
7.7.2 動態與靜態被動池的差異性
7.7.3 靜態被動池實施原理
7.7.4 被動池的常見組織形式
第8章 隊列
8.1 為什麼單說隊列
8.1.1 網絡同步的需求
8.1.2 協議信令排序的需求
8.1.3 存儲轉發的需求
8.1.4 異步轉同步需要隊列
8.1.5 負載均衡需要隊列
8.1.6 等停需要隊列
8.1.7 特例:實時轉發不需要隊列
8.2 幾種常見的隊列介紹
8.2.1 不是隊列的隊列CBuffer
8.2.2 靜態隊列PopBuffer
8.2.3 動態隊列MenQueue
8.3 動態Buffer類
8.3.1 編程思想的轉變
8.3.2 Buffer類的需求分析
8.3.3 Buffer類聲明
8.3.4 構造和析構函數
8.3.5 緩沖區大小設置函數
8.3.6 二進制拷貝函數
8.3.7 數值轉換函數
8.3.8 二進制數據處理函數
8.3.9 文本字符串處理函數
8.3.10 數據比較函數
8.3.11 小結
8.4 靜態Buffer類
8.4.1 類聲明
8.4.2 構造函數和析構函數
8.4.3 緩沖區設置函數
8.4.4 二進制拷貝函數
8.4.5 數值轉換函數
8.4.6 二進制數據處理函數
8.4.7 文本字符串處理函數
8.4.8 數據比較函數
8.4.9 小結
8.5 PopBuffer
8.5.1 PopBuffer基本需求分析
8.5.2 基本數據結構介紹
8.5.3 基本類模型
8.5.4 構造函數和析構函數
8.5.5 工具服務函數
8.5.6 業務查詢函數
8.5.7 添加AddLast
8.5.8 提取GetAndDeleteFirst
8.5.9 MoveAllData
8.5.10 PopBuffer小結
8.5.11 PopBuffer的不足
8.6 MemQueue
8.6.1 動態隊列的管理原則
8.6.2 基本數據結構介紹以及優化考慮
8.6.3 基本功能類聲明
8.6.4 構造函數和析構函數
8.6.5 輔助工具函數
8.6.6 追加AddLast
8.6.7 提取GetAndDeleteFirst
8.6.8 PopBuffer相關操作
8.6.9 文件保存相關操作
8.6.10 線程安全鎖封裝類
8.7 小結
第9章 時間片管理
9.1 多線程與單線程開發的差異
9.1.1 單任務操作系統運行程序的特點
9.1.2 任天堂遊戲機中斷機制
9.1.3 利用中斷實現多任務
9.1.4 多任務操作系統運行程序的特點
9.1.5 多任務操作系統運行程序的機制
9.1.6 多任務運行環境的世界觀
9.2 多任務操作系統常見線程操作
9.2.1 線程相關變量
9.2.2 線程函數聲明
9.2.3 線程函數啟動
9.2.4 MIN_SLEEP
9.2.5 線程操作總結
9.3 線程池
9.3.1 線程池的來源和需求分析
9.3.2 線程池的設計原理
9.3.3 線程池的基本數據結構
9.3.4 線程池的類設計說明
9.3.5 構造函數和析構函數
9.3.6 管理者線程
9.3.7 服務者線程
9.3.8 注冊函數
9.3.9 線程池小結
9.4 任務池
9.4.1 任務池的原理分析
9.4.2 任務池的需求和設計
9.4.3 任務池的基本定義說明
9.4.4 任務池的類聲明
9.4.5 構造函數和析構函數
9.4.6 管理者線程
9.4.7 服務者線程
9.4.8 任務注冊接口
9.4.9 任務池的小結及實現示例
9.5 任務池的運行體
9.5.1 簡化運行態
9.5.2 任務描述工具類
9.5.3 任務池運行體的設計原理
9.5.4 任務池運行體的類聲明
9.5.5 StartTask
9.5.6 StopAll和PrintInfo
9.5.7 任務執行線程回調
9.5.8 任務池運行體小結及調用示例
9.6 時間片小結
第10章 Log日志管理系統
10.1 日志管理系統需求分析
10.2 設計原理和邊界定義
10.3 類聲明
10.4 構造函數和析構函數
10.4.1 構造函數
10.4.2 析構函數
10.5 文件名控制邏輯
10.6 業務輸出方法函數
10.7 Log日志系統小結
第11章 聚合工具類
11.1 聚合工具類的類聲明
11.2 聚合工具類函數說明
11.3 額外的話題:Linux服務程序怎麼寫
11.3.1 服務器的開發習慣
11.3.2 Linux的開發習慣
11.3.3 Linux下開發服務程序的基本需求
11.3.4 基本設計原理
11.3.5 程序實戰演示
11.3.6 程序使用說明
第12章 細節決定成敗(代結束語)
12.1 工程實踐注重細節
12.2 究竟怎樣才能學好C和C++語言開發
12.3 如何做一名成功的軟件工程師
12.4 關於網絡數據傳輸
12.5 結束語
1.1 系統分析初步
1.1.1 需求理解和溝通
1.1.2 “上家”和“下家”
1.1.3 角色“定名”
1.1.4 初步的拓撲圖
1.1.5 后續的模塊級設計
1.1.6 商用設計思維
1.2 商用程序員對開發的理解
1.2.1 資源和成本
1.2.2 盈利導向
1.2.3 客觀
1.2.4 平衡
1.2.5 服務
1.3 基本開發思路
1.3.1 邊界
1.3.2 “細分”的分析方法
1.3.3 靈活,逆向思維
1.3.4 小內核,大外延,工程庫思維
1.3.5 單筆交易失敗不算失敗
1.4 數據傳輸各個角色的開發思路
1.4.1 服務器的設計原則
1.4.2 PC客戶端的開發思路
1.4.3 嵌入式設備的開發思路
1.4.4 跨平臺軟件模塊的開發思路
第2章 基礎知識
2.1 內存的理解
2.1.1 32位操作系統的內存分配
2.1.2 C/C++語言對內存的使用
2.1.3 內存——bug之源
2.2 並行運算
2.2.1 時間片
2.2.2 進程和線程
2.2.3 同步和異步
2.2.4 禮貌地釋放時間片資源
2.2.5 跨線程通信
2.2.6 跨進程通信
2.2.7 網絡,並行運算的世界
2.3 “鎖”的使用
2.3.1 為什麼要使用鎖
2.3.2 使用鎖容易犯什麼錯誤
2.3.3 “行為鎖”和“資源鎖”
2.3.4 單寫多讀鎖
2.3.5 不可重入鎖
2.3.6 用鎖的最高境界——不用
2.4 “池”的深刻含義
2.4.1 “池”的由來
2.4.2 “池”的使用
2.5 跨平臺、跨語言開發基礎
2.5.1 C/C++跨平臺開發基礎
2.5.2 dll和so
2.5.3 API和NPI
2.5.4 服務無處不在
2.6 debug的重要性
2.6.1 在數據傳輸領域,你親眼看到的都不是真的
2.6.2 如何看到——萬事從debug開始
2.6.3 debug的原則
2.6.4 如何分析數據
2.7 性能統計的重要性
2.7.1 需要統計哪些信息
2.7.2 基本的統計方法
2.7.3 隨機數的產生
2.8 隊列無處不在
2.8.1 數據結構在數據傳輸中的應用分析
2.8.2 需要哪幾種隊列形式
2.9 不要求全責備
第3章 C/C++無錯化程序設計
3.1 “無錯化程序設計”簡介
3.1.1 無錯化程序設計思路
3.1.2 C/C++無錯化設計的解決方案
3.1.3 使用后的效果
3.2 計算機程序的真諦
3.2.1 程序就是“搬數”
3.2.2 程序就是“寫文章”
3.2.3 程序就是“復制”
3.2.4 筆者看程序設計
3.3 定名
3.3.1 匈牙利命名法
3.3.2 函數命名原則
3.3.3 變量命名原則
3.3.4 其他命名規則
3.3.5 定名的折中
3.4 無錯化程序的基本書寫原則
3.4.1 寫簡單易懂的程序
3.4.2 嚴禁變量轉義
3.4.3 嚴禁一語多義
3.4.4 函數只能有一個出口
3.4.5 變量如不使用,保持初值
3.4.6 常量必須定名
3.4.7 太大數組不要用靜態方式
3.4.8 盡量避免使用遞歸
3.4.9 解決方案一套就夠
3.5 基本程序設計原則
3.5.1 函數的設計
3.5.2 類的設計
3.5.3 其他要點
3.6 基本語句的約定
3.6.1 判斷語句,常量永遠在左邊
3.6.2 for (i = 0; i < n; i + +)
3.6.3 while(1)
3.6.4 不要使用do...while( )
3.6.5 i++和++i問題
3.6.6 請不要使用“?(...) :(...)”結構
3.6.7 善用大括號{ }縮小作用域
3.7 請使用goto語句
3.7.1 函數只有一個出口的原則需要goto
3.7.2 誰分配、誰釋放的原則需要goto
3.7.3 商用工程要求goto
3.7.4 程序的易讀性要求goto
3.7.5 break為什麼不能亂用
3.7.6 goto的常規使用手法
3.8 指針的使用原則
3.8.1 商用數據傳輸常見的指針類型
3.8.2 不要使用兩個以上的*號
3.8.3 指針不能參與四則運算
3.9 使用結構體的技巧
3.9.1 結構體傳參的必要性
3.9.2 預防多重指針的隱患
3.9.3 32位到64位移植
3.9.4 彈性內存使用需要結構體傳參
3.9.5 網絡傳輸協議,需要結構體傳參
3.10 使用宏的建議
3.10.1 宏的幾大作用
3.10.2 C+ +的建議
3.10.3 編譯宏——跨平臺開發
3.11 回調函數設計方法
3.11.1 回調模型設計者
3.11.2 回調模型使用者
3.11.3 參數傳遞的常規手法
3.11.4 事件模型和回調模型
3.12 C語言字符串的深入研究
3.12.1 字符串拷貝
3.12.2 字符串構造
3.12.3 關於字符串處理的結論
3.13 C/C+ +語言無錯化程序設計小結
第4章 設計自己的工程庫
4.1 數據傳輸庫中到底需要哪些模塊
4.1.1 跨平臺定義
4.1.2 鎖與安全模塊
4.1.3 內存池
4.1.4 資源管理池
4.1.5 線程池與任務池
4.1.6 隊列管理
4.1.7 其他工具
4.2 工程庫基礎——跨平臺定義
4.2.1 鎖定義
4.2.2 線程控制相關定義
4.2.3 Socket傳輸相關定義
4.2.4 include系統頭文件
第5章 debug工具
5.1 變參函數的設計
5.2 文本輸出
5.2.1 獲得時間戳
5.2.2 同時輸出到文件和屏幕
5.2.3 文本輸出的原則
5.3 二進制輸出的debug函數
5.4 核心debug和日志系統的區別
5.5 統計模塊
5.5.1 累加器
5.5.2 計算模塊
5.5.3 平均值計算
5.5.4 統計平均值計算
5.5.5 輔助功能函數
5.6 CLowDebug工具類
5.6.1 需求分析
5.6.2 數據邊界聲明
5.6.3 類聲明
5.6.4 類工具函數
5.6.5 業務函數
5.7 基本debug工具小結
第6章 鎖
6.1 二元動作理論
6.1.1 二元動作在C語言中的書寫特性
6.1.2 面向對象和面向過程的本質差異
6.1.3 二元動作在C++語言中的特殊要求
6.1.4 二元動作開發關注要點
6.2 鎖對象
6.3 多線程安全的變量
6.3.1 CMint和CMbool試驗
6.3.2 多線程安全的變量模板
6.4 單寫多讀鎖
6.4.1 單寫多讀鎖的來源
6.4.2 單寫多讀鎖C語言實現
6.4.3 單寫多讀鎖的C++實現
6.4.4 TonyXiaoMinSleep
6.4.5 單寫多讀鎖安全變量
6.4.6 單寫多讀鎖的真實意義
6.5 不可重入鎖
6.5.1 需求分析
6.5.2 類實現
6.5.3 使用樣例
6.6 線程控制鎖
6.6.1 線程控制鎖的實現
6.6.2 線程控制鎖的使用
6.7 盡量不用鎖
第7章 內存與資源管理
7.1 內存管理的基本要求
7.1.1 不泄露
7.1.2 不產生碎片
7.1.3 可以自動報警
7.2 內存池的核心邏輯——內存棧
7.2.1 內存管理的數學模型
7.2.2 管理模型的優化
7.2.3 關於鏈表管理的思考
7.2.4 內存塊元素
7.2.5 內存棧
7.3 內存指針注冊管理模塊
7.3.1 內存注冊模塊原理介紹
7.3.2 模塊設計及類聲明
7.3.3 構造函數和析構函數
7.3.4 Add函數
7.3.5 Del函數
7.3.6 Modeify函數
7.3.7 PrintInfo函數
7.3.8 內存注冊模塊的深入使用
7.4 Socket注冊管理模塊
7.4.1 類聲明
7.4.2 構造函數和析構函數
7.4.3 Add函數
7.4.4 Del函數
7.4.5 PrintInfo函數
7.5 內存池類
7.5.1 類聲明
7.5.2 構造函數和析構函數
7.5.3 內存棧公有方法
7.5.4 指針管理方法
7.5.5 Socket管理方法
7.5.6 PrintfInfo方法
7.6 內存管理的深層次含義
7.6.1 資源重用的理念
7.6.2 注冊和反注冊機制
7.6.3 靜態資源的管理思路
7.7 被動池的常見組織形式
7.7.1 被動池的數據特性及需求分析
7.7.2 動態與靜態被動池的差異性
7.7.3 靜態被動池實施原理
7.7.4 被動池的常見組織形式
第8章 隊列
8.1 為什麼單說隊列
8.1.1 網絡同步的需求
8.1.2 協議信令排序的需求
8.1.3 存儲轉發的需求
8.1.4 異步轉同步需要隊列
8.1.5 負載均衡需要隊列
8.1.6 等停需要隊列
8.1.7 特例:實時轉發不需要隊列
8.2 幾種常見的隊列介紹
8.2.1 不是隊列的隊列CBuffer
8.2.2 靜態隊列PopBuffer
8.2.3 動態隊列MenQueue
8.3 動態Buffer類
8.3.1 編程思想的轉變
8.3.2 Buffer類的需求分析
8.3.3 Buffer類聲明
8.3.4 構造和析構函數
8.3.5 緩沖區大小設置函數
8.3.6 二進制拷貝函數
8.3.7 數值轉換函數
8.3.8 二進制數據處理函數
8.3.9 文本字符串處理函數
8.3.10 數據比較函數
8.3.11 小結
8.4 靜態Buffer類
8.4.1 類聲明
8.4.2 構造函數和析構函數
8.4.3 緩沖區設置函數
8.4.4 二進制拷貝函數
8.4.5 數值轉換函數
8.4.6 二進制數據處理函數
8.4.7 文本字符串處理函數
8.4.8 數據比較函數
8.4.9 小結
8.5 PopBuffer
8.5.1 PopBuffer基本需求分析
8.5.2 基本數據結構介紹
8.5.3 基本類模型
8.5.4 構造函數和析構函數
8.5.5 工具服務函數
8.5.6 業務查詢函數
8.5.7 添加AddLast
8.5.8 提取GetAndDeleteFirst
8.5.9 MoveAllData
8.5.10 PopBuffer小結
8.5.11 PopBuffer的不足
8.6 MemQueue
8.6.1 動態隊列的管理原則
8.6.2 基本數據結構介紹以及優化考慮
8.6.3 基本功能類聲明
8.6.4 構造函數和析構函數
8.6.5 輔助工具函數
8.6.6 追加AddLast
8.6.7 提取GetAndDeleteFirst
8.6.8 PopBuffer相關操作
8.6.9 文件保存相關操作
8.6.10 線程安全鎖封裝類
8.7 小結
第9章 時間片管理
9.1 多線程與單線程開發的差異
9.1.1 單任務操作系統運行程序的特點
9.1.2 任天堂遊戲機中斷機制
9.1.3 利用中斷實現多任務
9.1.4 多任務操作系統運行程序的特點
9.1.5 多任務操作系統運行程序的機制
9.1.6 多任務運行環境的世界觀
9.2 多任務操作系統常見線程操作
9.2.1 線程相關變量
9.2.2 線程函數聲明
9.2.3 線程函數啟動
9.2.4 MIN_SLEEP
9.2.5 線程操作總結
9.3 線程池
9.3.1 線程池的來源和需求分析
9.3.2 線程池的設計原理
9.3.3 線程池的基本數據結構
9.3.4 線程池的類設計說明
9.3.5 構造函數和析構函數
9.3.6 管理者線程
9.3.7 服務者線程
9.3.8 注冊函數
9.3.9 線程池小結
9.4 任務池
9.4.1 任務池的原理分析
9.4.2 任務池的需求和設計
9.4.3 任務池的基本定義說明
9.4.4 任務池的類聲明
9.4.5 構造函數和析構函數
9.4.6 管理者線程
9.4.7 服務者線程
9.4.8 任務注冊接口
9.4.9 任務池的小結及實現示例
9.5 任務池的運行體
9.5.1 簡化運行態
9.5.2 任務描述工具類
9.5.3 任務池運行體的設計原理
9.5.4 任務池運行體的類聲明
9.5.5 StartTask
9.5.6 StopAll和PrintInfo
9.5.7 任務執行線程回調
9.5.8 任務池運行體小結及調用示例
9.6 時間片小結
第10章 Log日志管理系統
10.1 日志管理系統需求分析
10.2 設計原理和邊界定義
10.3 類聲明
10.4 構造函數和析構函數
10.4.1 構造函數
10.4.2 析構函數
10.5 文件名控制邏輯
10.6 業務輸出方法函數
10.7 Log日志系統小結
第11章 聚合工具類
11.1 聚合工具類的類聲明
11.2 聚合工具類函數說明
11.3 額外的話題:Linux服務程序怎麼寫
11.3.1 服務器的開發習慣
11.3.2 Linux的開發習慣
11.3.3 Linux下開發服務程序的基本需求
11.3.4 基本設計原理
11.3.5 程序實戰演示
11.3.6 程序使用說明
第12章 細節決定成敗(代結束語)
12.1 工程實踐注重細節
12.2 究竟怎樣才能學好C和C++語言開發
12.3 如何做一名成功的軟件工程師
12.4 關於網絡數據傳輸
12.5 結束語
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。