c網路編程ace
① ACE是指什麼
哦,是被褥的牌子呀
② C++黑客開發使用什麼類庫 ACE嗎
你要是想玩玩的話,隨便你用什麼類庫都行,反正無論如何你要涉及的就是windows下c語言程序設計和網路編程等等。如果安全開發的話,ACE沒有多大價值,畢竟不是底層庫,還是用winsock2本身比較多,當然也有很大一部分使用MFC寫的。
linux下的話,隨意吧,基本上工具集都是用C寫的,C++工具比較少,畢竟緩沖區溢出、提權漏洞攻擊都是通過底層操作的,高層抽象庫的能力非常有限。
③ 網路編程用 c還是c++
網路的底層API都是C語言的,不管是Linux還是Windows都是這樣。用C++是為了封裝代碼,達到復用和擴展的目的。簡單的項目用C足夠了,C++適合開發復雜的大型項目。據說ACE的結構很復雜,不太適合學習,我反正是沒有接觸過,只用過 Berkeley Socket
④ ACE任務定時器丟失問題求助,ACE網路編程開發
個需要配置調試符號:
方法如下:
運行WinDbg->菜單->File->Symbol File Path->按照下面的方法設置_NT_SYMBOL_PATH變數:
在彈出的框中輸入「C:\MyCodesSymbols; SRV*C:\MyLocalSymb om/download/symbols」(按照這樣設置,WinDbg將先從本地文件夾C:\MyCodesSymbols中查找Symbol,如果找不到,則自動從MS的Symbol Server上下載Symbols)。另一種做法是從這個Symbol下載地址中 whdc/devtools/debugging/symbolpkg.mspx,下載相應操作系統所需要的完整的Symbol安裝包,並進行安裝,例如我將其安裝在
⑤ 畫模型的ACE是什麼的縮寫是什麼軟體
Adaptive Communication Environment
C++ 網路編程庫套件
Adaptive Communication Environment(自適配通信環境),簡稱ACE。為一個以C++的Template技術所做成的開放源代碼的可跨平台的網路應用程序的程序庫套件。它提供了socket/threading/memory management等多種系統調用的面對對象的wrapper,使C++通信軟體開發更加簡單。
⑥ 如何編譯,配置ACE
ACE是個很有用的開放源代碼的C++網路編程開發包,利用它比直接用API更有利於代碼的健壯性,可移植性,並相對簡單。
估計大家剛接觸ACE時,都有一定難度,說不定就半途放棄了,這是我學ACE兩天中的總結,基本上不成文,但我想研究到ACE的你一定會明白下文的意思。
一、ACE官方主頁: http://www.cs.wustl.e/~schmidt/ACE.html
下載地址: http://deuce.doc.wustl.e/Download.html
Building and Installing ACE:http://www.dre.vanderbilt.e/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html
我下載的是Latest Beta Kit中的ACE.zip(Latest Release中的壓縮包好像有問題,我有WinRAR3.30解壓縮報錯)
二、解壓縮後放在D盤
D:\ACE_wrappers
三、在D:\ACE_wrappers\ace目錄下新建文件config.h加入一行
#include "ace/config-win32.h"
四、編譯:用VC6.0打開D:\ACE_wrappers\ace\ace.dsw
左側顯示 ACE DLL classes
ACE LIB classes
或1、從菜單上選擇「編譯」,「放置可遠行配置」,選擇你需要的工程配置
「編譯」,「重建全部」(或任一,如ACE DLL - Win32 MFC Debug)
此過程可能持續半小時至一個小時不等
或2、從菜單上選擇「編譯」,「批構建」,選擇你需要的工程配置
此過程可能持續二至四個鍾頭
產生的.lib文件位於D:\ACE_wrappers\ace\下,
產生的.dll文件位於D:\ACE_wrappers\bin\下
同樣打開ace_static.dsw
編譯
ACEs.lib
ACEsd.lib
ACE_RMCasts.lib
ACE_RMCastsd.lib
TMCasts.lib
TMCastsd.lib
ACE生成的dll和lib文件的命名規則:(d = debug,s = static)
debug - aced.lib、debug+static - acesd.lib、release - ace.lib、 release+static - aces.lib
五、樣常式序的編譯
用VC打開D:\ACE_wrappers\tests\tests.dsw
「編譯」,「批構建」
六、自寫程序的工程配置
中篇:ACE程序員教程.pdf中的樣常式序:
網址:http://www.cs.wustl.e/~schmidt/ACE_wrappers/docs/tutorials/guide-tutorials.html
將網頁上的原代碼復制到一新建文件,並命名為server.cpp
用VC打開,編譯,重建全部,彈出對話框,「This build command require ...「,點」是「
會出現以下錯誤
如果有「Cannot open include file: 'ace/SOCK_Acceptor.h': No such file or directory」
工程-設置-C/C++: Preprocessor,附加包含路徑:D:/ACE_wrappers
如果有「 You must link against multi-threaded libraries when using ACE (check your project settings)」
工程-設置-C/C++: Code Generation - Use run-time library : Debug Multithreaded Dll
如果有「error C2065: 'ACE_ERROR' : undeclared identifier」
error C2065: 'ACE_DEBUG' : undeclared identifier
#include "ace/Log_Msg.h"
error C4716: 'ace_main_i' : must return a value
在main中加入
return 0;
「error LNK2001: unresolved external symbol "__declspec(dllimport) int __cdecl」
工程-設置-Link-Input: 對象/庫模塊:添加aced.lib 附加庫路徑:D:\ACE_wrappers\ace
編譯client中遇到的問題
1、error C2039: 'sprintf' : is not a member of 'ACE_OS'
#include "ace/OS_NS_stdio.h"
2、error C2039: 'strlen' : is not a member of 'ACE_OS'
#include "ace/OS_NS_string.h"
3、error C2059: syntax error : '?'
錯誤在這一句: ACE_DEBUG((LM_DEBUG,?Usage egX <hostname> <port_number>\n?));
將?改為"
4、無法找到動態鏈接庫aced.dll於指定的路徑
為系統變數PATH加上D:\ACE_wrappers\bin
靜態包含:
工程-設置-C/C++-預處理程序定義中加入 ,ACE_AS_STATIC_LIBS
例1server編譯後生成
server.exe 16K serverd.exe 97K servers.exe 124K serversd.exe 669K
(servers.exe較適合發布)
例2 client編譯後生成
client.exe 16K clientd.exe 97K clients.exe 124K clientsd.exe 669K
(clients.exe較適合發布)
測試 clients 127.0.0.1 1919
servers 1919
下面是馬維達老師寫的:(轉自huihoo)
發表於: 3/31/2003 - 04:24
翻譯的一點小東西,希望能對大家有幫助。
其實也不敢稱為是翻譯的,水平太爛了,大家將就著看吧 :)
使用Microsoft Visual C++ 在win32平台上生成和安裝ACE:
注意:關於MSVC5.0和Service Pack 3的使用有一些問題,過去一些用戶在sp2中使用良好的代碼在sp3種卻會引發一些問題。感謝Bill 的細心查找,這一神秘的問題被解決了。答案?(哦,這兒有一個好答案。。。)這可能是因為有多個版本的sp3較早版本的sp3有一些bug,而後來的版本修正了這些錯誤,從微軟網站上下載的1998年6月16日版本的sp3是一個良好的版本。如果X03-50158是那些擁有sp3的光碟序列號的一部分,那麼這些版本也是良好的。但是不管任何版本的sp3,其STL的實現都有錯誤,詳細情況請瀏覽http://www.dinkumware.com/vc_fixes.html。感謝Ben Eng對這些錯誤的修正。
現在的SP4(希望只有一個版本)已經修正了STL中的死鎖問題。
我們現在將不再積極的支持MSVC 4.X以及以前的版本,ACE可和這些編譯器一起工作但是可能會丟失一些好處。
1. 將ACE分發包界壓縮到一個目錄中,這將在那個目錄中生成一個包含ACE的目錄ACE_wrappers。接下來的步驟中假設ACE分發包被解壓縮到ACE_ROOT=C:\ACE_wrappers中,因此ACE將會存在於ACE_ROOT\ace目錄中。
2. 在ACE_ROOT\ace目錄中創建一個文件,命名為config.h,其內容為:
#include "ace/config-win32.h"
3. 在VC++中載入ACE的工程文件(ACE_ROOT\ace\ace.dsw)
4. 每個工程都會包含多個配置,這些配置是Debug/Release, MFC/Non-MFCh和Static/Dynamic庫版本等選項的混合。確定你所需要的構造(例如,調試代碼需要ACE的調試版本)。所有這些不同的配置可以為你提供一些便利,你可以或者採用不同的模式以構造不同配置的應用,或者通過改變ace\config.h來改變在NT上的不同配置。
注意:如果你使用動態連接,請保證ACE_ROOT\bin被添加到你的path環境變數中,否則你將在運行程序的時候碰到尋找ace.dll或者aced.dll的問題。
5. 如果你在Windows NT或者Windows 2k上構建ACE,你可以馬上開始構造她而不需任何改變,如果你在Windows 9x/me上構建,那麼你必須在
ACE_ROOT\ace\config.h.的#include塊之前添加一行:
#define ACE_HAS_WINNT4 0
這將在ACE中移掉一些WinNT/Win2K中特有的代碼。
6. 如果你希望使用MSVC自帶的標准C++頭文件(C++ Standard Draft 2種定義的iostream,cstdio…..),則應該在
ACE_ROOT\ace\config.h.的#include塊之前添加一行:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
7. 如果需要和MFC一起使用,增加如下定義到你的config.h文件中,注意,如果你想使用spawn一個新的線程,則必須保證使用THR_USE_AFX標志來spawn線程。
#define ACE_HAS_MFC 1
預設的,ACE工程使用MSVC運行時的動態DLL版本,你也可以選擇使用ACE的不關心運行時庫的靜態(LIB)版本。我們選擇僅與動態運行時庫連接的原因在於基本上所有的NT機器上都會安裝這些庫,而我們則可以因此而減小代碼的大小。如果你希望ACE與MFC的靜態版本連接,則可以在config.h中定義ACE_USES_STATIC_MFC。然而,如果你希望靜態的連接所有的庫(包括MSVC運行時庫),就需要自己修改工程文件了。
8. 如果要構建ACE的靜態版本,則需要在config.h中定義ACE_AS_STATIC_LIBS,此宏在那些希望使用ACE的靜態版本的應用工程中也必須定義。
作為一個可選項,你可以在
#include statement in ACE_ROOT\ace\config.h.之前添加一行:
#define ACE_NO_INLINE
來取消函數內聯從而減小靜態庫(和你的運行碼)的大小。
9. ACE DLL和LIB庫的命名規則:
我們使用如下的規則明明使用MSVC的ACE的DLL和LIB文件。
"Library/DLL name" + (是靜態庫嗎 ? "s" : "") + (包含調試信息 ? "d" : "") + {".dll"|".lib"}
在MSVC環境中使用ACE的更多信息可以在這里找到。
-----------------------------------------------------------------------
一、安裝TAO,需要先編譯並安裝ACE。
二、ACE的編譯和安裝步驟見http://www.cs.wustl.e/~schmidt/ACE_wrappers/ACE-INSTALL.html。TAO的編譯和安裝步驟見http://www.cs.wustl.e/~schmidt/ACE_wrappers/TAO/TAO-INSTALL.html。如果你英文程度還可以的話,最好直接閱讀這兩篇文檔。說到底,中文文檔只是「權宜之計」;漢語並不太適合進行邏輯性的表述。
但我還是把其中的一些段落編譯如下(VC 6.0 + ACE-5.2.1 + TAO-1.2.1):
ACE的編譯與安裝
一般規則
ACE中的許多特性可以通過在$ACE_ROOT/ace/config.h中定義一些宏來進行修改。這些宏應該總是在包括針對你的平台的配置文件之前出現。
但是,如果你想要取消/重定義在針對特定平台的配置文件中定義的宏,#undef應該在配置文件之後出現。
如果你計劃在多種平台上編譯ACE,你也許需要考慮克隆源碼樹。
步驟:
1. 將ACE發布文件解壓縮到某個目錄中,在其中將會創建含有所有文件的ACE_wrappers目錄。在下面的步驟中,ACE_wrappers目錄將以ACE_ROOT為名來指稱。
2. 在ACE_ROOT\ace目錄中創建一個名為config.h的文件,在其中包含:
#include 「ace/config-win32.h」
3. 現在載入ACE的項目文件(ACE_ROOT\ace\ace.dsw)。
4. 其中的每個項目都含有若干不同的配置(可混合Debug/Release、MFC/Non-MFC、Static/Dynamic library版本)。你可以從中選擇你所需的配置,或是使用ace/config.h來進行調整。
注意:如果你使用動態鏈接庫,在運行使用ACE的程序時,確定你在PATH中包括了ACE_ROOT\bin。
5. 如果你的系統平台是WinNT或2000,那麼無需任何改動你就可以開始編譯了。如果是Windows 9x/Me,你需要在ACE_ROOT\ace\config.h中的#include語句之前增加:
#define ACE_HAS_WINNT4 0
6. 如果你想要使用MSVC標准C++頭(iostream、cstdio……),在ACE_ROOT\ace\config.h中的#include語句之前增加:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
7. 要與MFC一起使用ACE,再增加下面的定義:
#define ACE_HAS_MFC 1
注意如果你想要通過CWinThread派生新線程,一定要設置THR_USE_AFX。在預設情況下,所有的ACE項目都使用DLL版本的MSVC運行時庫。盡管如此,你仍然可以選擇使用static(LIB)版本的ACE庫。如果你想要將MFC作為靜態庫鏈接進ACE,你可以在config.h文件中定義ACE_USES_STATIC_MFC。但如果你想要靜態鏈接所有的東西(包括MSVC運行時庫),你就需要自己修改ACE的項目文件。
8. ACE的靜態版本是通過定義ACE_AS_STATIC_LIBS來編譯的。在鏈接靜態ACE庫的應用項目中也應該使用這個宏。
你也可以在config.h文件中增加
#define ACE_NO_INLINE
來取消函數內聯並減小靜態庫(和你的可執行程序)的大小。
9. ACE DLL和LIB的命名方案:
"Library/DLL名" + (是否為靜態庫 ? "s" : "") + (是否啟用了Debugging ? "d" : "") + {".dll"|".lib"}
10. 配置完畢後編譯即可。選擇dll版本,編譯生成的dll文件在ACE_ROOT\bin中,相應的lib文件在ACE_ROOT\ace中。
ACE測試
各測試程序在ACE_ROOT\tests中。在其中也有一個工作空間文件可用來編譯所有的測試程序(tests.dsw)。
一旦你編譯了所有測試程序(可使用批編譯),你可以運行tests目錄中的perl腳本run_test.pl或批處理文件run_tests.bat來進行所有測試。
TAO的編譯與安裝
確定VC的CL.EXE在你的訪問路徑上。設置ACE_ROOT或TAO_ROOT環境變數。例如:
set ACE_ROOT=C:\ACE_wrappers
TAO最好放置在ACE_wrappers(這也是預設情況)。
1.確定ACE已經編譯和安裝。
2.確定ACE_wrappers\bin已在「Tools|Options」中的「Executable Directories」中列出。如果在MSVC下使用TAO_IDL編譯器就需要進行此設置。
3.載入tao\TAO.dsw,並編譯TAO庫。
4.要編譯Cubit測試,載入performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw,並編譯客戶和伺服器。
TAOACE.dsw
TAOACE.dsw是一個Visual C++ 5.0/6.0工作空間文件,它載入的項目包括ACE、TAO、TAO_IDL(編譯器)、gperf、orb服務庫,以及一些單獨的可執行程序(比如Naming Service,等等)。它可以用於編譯所有的用於編譯/運行TAO應用的文件。
三、我選擇編譯的是dll版本(Release),並在ACE的config.h文件中定義了「#define ACE_HAS_STANDARD_CPP_LIBRARY 1」。編譯後我所得到的ace.dll的大小是1.13MB,相應的ace.lib的大小是1.77MB;TAO.dll的大小是1.47MB,相應的TAO.lib的大小是2.74MB。所有文件約有 MB,包括源程序、編譯生成的中間文件,等等,但有些例子及服務我沒有編譯。
祝學有所成!
馬維達
-------------------------------------
將ACE與VC6集成在一起
一.打開 Tools>Options>Directories
加入以下內容:
Executable File:
C:\ACE_wrappers\bin
Include File:
C:\ACE_wrappers\
C:\ACE_wrappers\TAO
C:\ACE_wrappers\TAO\orbsvcs
Library Files:
C:\ACE_wrappers\ace
C:\ACE_wrappers\TAO\tao
C:\ACE_wrappers\TAO\orbsvcs\orbsvcs
Source Files:
C:\ACE_wrappers\ace
C:\ACE_wrappers\TAO\tao
C:\ACE_wrappers\TAO\orbsvcs\orbsvcs
二.加入 C:\ACE_wrappers\bin 到系統環境變數 path中
三.設置系統變數
ACE_ROOT=C:\ACE_wrappers
TAO_ROOT=C:\ACE_wrappers\TAO
⑦ 怎麼用c語言實現網路編程
有一本叫《windows網路編程》的書籍,你可以看看,上面講得很全面。在網上可以找到電子版的
⑧ 考c++程序員應看哪些書
《The C++ Standard Library: A Tutorial and
Reference》原文版
中文版:《C++標准程序庫:自修教程與參考手冊》
這是一本網路全書式的C++標准庫著作,是一本需要一再查閱的參考大全。它在完備性、細致性以及精確性方面都是無與倫比的。本書詳細介紹了每一標准庫組件的規格和用法,內容涵蓋包括流和本地化在內的整個標准庫而不僅僅是STL。正如本書副標題所示,它首先適合作為教程閱讀,爾後又可用作參考手冊。
淺顯易懂的寫作風格使得這本書非常易讀。如果你希望學習標准庫的用法並盡可能地發揮其潛能,那你必須擁有這本書。正如網路上所言,這本書不僅僅應該擺在你的書櫥中,更應該放到你的電腦桌上。我向每一位職業C++程序員強烈推薦。
《Standard C++ IOStreams and Locales: Advanced
Programmer's Guide and Reference》原文版
中文版《標准C++輸入輸出流與本地化》
C++標准庫由STL、流和本地化三部分構成。關於STL的書市面上已經有不少,但罕見流和本地化方面的專著。本書是這兩個領域中最優秀的一本,迄今為止沒有任何一本書比這一本更全面詳盡地討論了流和本地化。如果你不滿足於停留在「會用」流庫的層面,千萬不要錯過它。
2001年夏天,我草草翻閱過這本書的中文版,從內容到包裝都給我留下了比較深刻的印象——不過負面的居多一些。2003年秋天,無意中得知某網路書店正以超低價格甩賣這本書的中譯本,情不自禁,一陣唏噓。
《Effective STL》影印版、中文版
讀完Scott 的《Effective C++》和《More Effective
C++》的中譯本之後,我一直期待這本書的中文版。我從潘愛民先生的個人主頁上了解到,他和他的合作夥伴似乎早已完成了這本書的翻譯工作,可惜至今市面上仍不得見。幸運的是,我們可以看到它的原版。
本書是使用STL的程序員必讀之作。在這本書中,Scott向我們講述STL容器和演算法的工作機制以及如何以最佳方式使用它們。和Scott的其他作品一樣,這本書的寫作風格清晰、精確,具有極佳的可讀性。看過這本書以後,我想你也許會和我以及其他C++程序員一樣產生這樣的想法:Scott什麼時候會寫出一本「More
Effective STL」?
《Generic Programming and the STL: Using and Extending the C++
Standard Template Library》影印版、中文版《泛型編程與STL》
關於STL,我還提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and
Extending the C++ Standard Template
Library》(《泛型編程與STL》,中國電力出版社)。這本書散發著濃厚的學院氣息。Andrew Koenig和Barbara
Moo在《Accelerated C++: Practical Programming by
Example》一書末尾鄭重推薦另外兩本進階好書(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書!
網路編程
在網路編程時代,C++應該扮演著怎樣的角色,讓ACE(Adaptive Communications Environment)來告訴你。
Douglas C. Schmidt, Stephen D. Huston,《C++ Network Programming》Volume 1:
Mastering Complexity with ACE and Patterns、Volume 2: Systematic Reuse with ACE
and Frameworks
中文版:,《C++網路編程》卷1:運用ACE和模式消除復雜性、卷2:基於 ACE 和框架的系統化復用
採用C++進行企業級網路編程,目前ACE(以及這兩本書)是一個值得考慮的選擇。ACE是一個面向對象、跨平台、開放源碼的網路編程框架,目標在於構建高性能網路應用和中間件。Douglas是ACE的創始人,Stephen則已為ACE提供了數年的技術支持和顧問服務,兩位都是ACE社群(是的,ACE的影響和實際應用的程度已經形成了一個社群)的專家。
ACE並不單單被大學和研究所追捧,它已經被成功地應用於世界上成千上萬個商業應用中。在電信、宇航、醫葯和財經領域的網路系統中,ACE已經並繼續發揮著重要的作用。如果你准備開發高性能通訊系統,你應該考慮考慮這一匯集世界頂尖專家智慧的成果。
除了使用C++面向對象設計技術和模板等高級語言特性外,ACE還運用了大量的模式。《C++網路編程》卷1和卷2並不僅僅教你關於ACE的方方面面,它還會教給你模式和通用框架設計等高級技術等。所以,作為一名中、高級C++程序員,即使你很少進行正兒八經的C++網路程序設計,閱讀這兩本書同樣可以從中受益。
是的,並非所有網路應用都要使用Web伺服器(以及其他應用伺服器)和重量級組件模型,換個思路,它們或許也可以從輕量級的ACE組件中獲益。
雜項
以下幾本書所以被列入「雜項」單元,是因為我沒有考慮到合適的歸類方法,它們和上面的書籍一樣,值得一讀。
Bruce Eckel,《Thinking in C++》影印版二版、三版(又名卷二)
中文《C++編程思想》二版、卷一:標准C++導引 卷二:實用編程技術
《Thinking in
C++》的第1版於1996年榮獲「軟體研發」雜志評選的圖書震撼大獎。最新推出的第2版對內容進行了大幅改寫和調整,以反映C++標准化帶來的影響以及近幾年面向對象領域最新研究和實踐成果。「輸入輸入流」、「多重繼承」、「異常處理」和「運行時類型識別」等高級主題連同C++標准化以後增加的一些內容則被放入第二卷中。Bruce是一名經驗豐富的C++講師和顧問,其培訓和寫作經驗都是世界一流水準,他的作品比那些「玩票」的技術人員寫的東西更能吸引讀者。事實上,在同類圖書中,對於大多數讀者而言,這本書的可讀性要超過TCPL和《C++
Primer》。順帶一提,訪問作者的站點,你可以先睹第二卷的風采。
Andrew Koenig, Barbara E. Moo,,《Ruminations on C++: A Decade of Programming
Insight and Experience》原版、中文版《C++沉思錄》
Andrew是世界上屈指可數的C++專家。這是一本關於C++編程思想和程序設計技術而非語言細節的著作。如果你已經具有一定的基礎,這本書將教你在進行C++編程時應該怎樣思考,應該如何表達解決方案。整本書技術表達透徹,文字通俗易懂。Bjarne這樣評價這本書:本書遍布「C++是什麼、C++能夠做什麼」的真知灼見。
Stanley B. Lippman,《Inside The C++ Object Model》影印版、中文版《深度探索C++對象模型》
從編譯器的角度觀察C++可以使你知其然並知其所以然。本書探討了大量的C++面向對象程序設計的底層運作機制,包括構造函數、函數、臨時對象、繼承、虛擬、模板的實例化、異常處理、運行期類型識別等,另外還介紹了一些在實現C++對象模型過程中做出的權衡折衷。喜歡刨根問底的C++程序員不要錯過這本書。
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns:
Elements of Reusable Object-Oriented software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,《Design Patterns:
Elements of Reusable Object-Oriented software》影印版、中文版《設計模式:可復用面向對象軟體的基礎》
設計可復用的面向對象的軟體,你需要掌握設計模式。本書並非專為C++程序員而寫,但它採用了C++(以及Smalltalk)作為主要示例語言,C++程序員尤其易於從中受益。四位作者都是國際公認的面向對象軟體領域專家,他們將面向對象軟體的設計經驗作為設計模式詳細記錄下來。這本書影響是如此深遠,以至於四位作者以及本書都被昵稱為GoF(Gang
of
Four)。本書學院氣息濃厚,行文風格嚴謹簡潔,雖然它不如某些講解模式的書籍易讀,但真正要精準地理解設計模式,本書是終極權威。學習設計模式,這本書需要一而再、再而三的咀嚼。順帶一句:請將設計模式化作開拓思維的鑰匙,切莫成為封閉思維的枷鎖。
John Lakos,《Large-Scale C++ Software Design》中文版《大規模C++程序設計》、候捷:《STL 源碼剖析》
還有一些C++好書值得一讀,恕此處無法一一列出。例如John Lakos的著作《Large-Scale C++ Software
Design》(《大規模C++程序設計》,中國電力出版社)和侯捷先生的《STL 源碼剖析》(華中科技大學出版社)等。
《STL
源碼剖析》是一本很有特色的書,但我認為它還可以更好。我個人期待侯捷先生自第一版發行以來經過對模板技術的沉澱和再思考之後,再寫一本剖析得更深入、更透徹並且更全面的「第二版」。遺憾的是,侯捷先生在完成《C++
Templates: The Complete Guide》一書的翻譯後似乎決定暫時告別模板、泛型編程和STL領域。
使用C++成功開發大規模軟體系統,不僅需要很好地理解大多數C++書籍中講述的邏輯設計問題,更需要掌握《大規模C++程序設計》中講述的物理設計技術。當然,這本書的確有點過時了,不過,如果你的精力和金錢都比較寬綽,買一本看看並無壞處。
至此,我想有必要聲明一下,有一些(好)書沒有得到推薦,主要原因如下:
以上這些書已經足夠多、足夠好了。
我不會推薦通過正常渠道很難購買到的書籍 ——不管是中文版還是英文版。
作(譯)者名氣大小不影響我的推薦。我們是在看書,不是看人。
我不會推薦我從來沒有看過的書。我至少要看過其中的某個版本(包括電子檔)。這個「看」,一般指「認真閱讀」,不過有一些也只能算是「瀏覽」。
結語
作為一名普通技術寫譯者,我深知技術創作和翻譯的艱辛(和快樂),並多多少少了解一些有關技術書籍創作、翻譯、製作、出版以及市場推介背後的細節。今天,我不會再對一本看上去差強人意的圖書信口開河。羅列同一本書的各種版本的用意只在於為你多提供一些信息,讓你多一種選擇。
在本文成文的後期,我給Bjarne寫了一封信,請教如果他來寫這篇文章會怎麼寫。他給了我簡明扼要的建議。在肯定以上列出的絕大部分圖書都是世界頂尖水平的C++著作的同時,Bjarne提醒我別忘了向專家級程序員推薦《The
C++ Standard : Incorporating Technical Corrigenm No. 1》
《The C++ Standard : Incorporating Technical Corrigenm No. 1》
Bjarne還友好地提醒我,在我的推薦列表中沒有哪一本有助於C++程序員進行Windows編程——這正是我的本意。在這篇文章中,我只推薦、點評平台中立的C++著作(網路編程除外)——和操作系統無關,和集成開發環境無關,我甚至幻想它們和編譯器也無關。你可以根據業務開發需要,選讀自己喜愛的領域相關的C++書籍。
說到「系統無關、平台中立」,我不由得想起了「抽象層」的概念。開發實際應用的C++程序員通常工作於特定操作系統、特定開發環境和特定業務領域之中,而對標准C++和C++標准庫扎實而深刻的把握,無疑是你得以在不同的操作系統、不同的開發環境以及不同的業務領域之間縱橫馳騁的「抽象」本錢。
⑨ linux下C語言網路編程 如何入門
1.
可以.
說實話,我不太明白你意思...如果說GCC
能不能編譯CPP程序..我告訴你可以..GCC
G++都是鏈接..它們根據後綴來確定是什麼語言..
如果說,網路程序能不能用C++寫..那就太多了..ACE就是明顯的一例..BOOST:ASIO也是一例..
2
我建議你用GCC
實際上GDB沒什麼大用..你後面就懂了..一般用在看CORE文件上...如GCC的好處是,,你可以對編譯過程有個了解..真的不難..常用的總共不超過5個參數......ECLIPSE,不建議用,你初學,精力全浪費到那上面了