注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C/C++及其相關(guān)0 bug:C/C++商用工程之道

0 bug:C/C++商用工程之道

0 bug:C/C++商用工程之道

定 價(jià):¥68.00

作 者: 肖舸 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: VC++

ISBN: 9787121098482 出版時(shí)間: 2010-01-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 561 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  共分12個(gè)章節(jié),主要針對(duì)C/C++語(yǔ)言在商用工程開發(fā)中的程序?qū)崙?zhàn)進(jìn)行論述,從商用解決方案的角度來(lái)理解C和C++語(yǔ)言的程序設(shè)計(jì)技巧。具體內(nèi)容包括商用工程開發(fā)思路、C/C++無(wú)錯(cuò)化程序設(shè)計(jì)、設(shè)計(jì)自己的工程庫(kù)、Log日志管理系統(tǒng)等。該書可供各大專院校作為教材使用,也可供從事相關(guān)工作的人員作為參考用書使用?!? bug:C/C++商用工程之道》主要針對(duì)C/C++語(yǔ)言在商用工程開發(fā)中的程序?qū)崙?zhàn)進(jìn)行論述,從需求出發(fā),從商用解決方案的角度來(lái)理解C和C++語(yǔ)言的程序設(shè)計(jì)技巧。商用程序員在實(shí)際工作中最為關(guān)注的無(wú)錯(cuò)化、并行、時(shí)間片、內(nèi)存池、線程池、任務(wù)池、工程庫(kù)和跨平臺(tái)等相關(guān)問(wèn)題,在《0 bug:C/C++商用工程之道》中都有寶貴的經(jīng)驗(yàn)總結(jié)和理念梳理?!? bug:C/C++商用工程之道》不是教科書,更多的是在開發(fā)技巧、測(cè)試調(diào)試、工程代碼庫(kù)等方面給出實(shí)例與總結(jié)?!? bug:C/C++商用工程之道》也可以說(shuō)是教科書,作者試圖通過(guò)實(shí)戰(zhàn)技巧的訓(xùn)練,幫助讀者升華出一種全新的程序設(shè)計(jì)理念?!? bug:C/C++商用工程之道》可以幫助你擺脫“Training”式編程開發(fā)思維與方法,培養(yǎng)“商用”和“產(chǎn)品”標(biāo)準(zhǔn)的工程開發(fā)技能?!? bug:C/C++商用工程之道》適合作為C和C++的程序員進(jìn)行“商用化開發(fā)”和“工程化開發(fā)”的參考。

作者簡(jiǎn)介

暫缺《0 bug:C/C++商用工程之道》作者簡(jiǎn)介

圖書目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)