Linux下C/C++、ACE、Boost、高性能服務(wù)器端應(yīng)用 開發(fā)技術(shù)
Linux C++培訓(xùn)(現(xiàn)場及遠(yuǎn)程班)
上課方式
現(xiàn)場班:全日制脫產(chǎn)學(xué)習(xí)、歷時4個月,每月開班。
遠(yuǎn)程班:遠(yuǎn)程視頻學(xué)習(xí),學(xué)習(xí)時間自定,隨時開課。
課程模塊
Linux C++全科班課程由以下模塊組成:
Module01 - Linux系統(tǒng)基礎(chǔ)
由于本系列課程基于Linux(或UNIX),熟悉Linux操作系統(tǒng)是必要的前提。 該模塊的課程包含以下方面的內(nèi)容:
常用Unix/Linux命令
熟悉文件管理、文本處理、進程管理、網(wǎng)絡(luò)、系統(tǒng)管理等各個方面大約100個常用的命令。深入了解bash
了解Linux默認(rèn)shell: bash 的語法、命令執(zhí)行、I/O重定向、任務(wù)控制等。正則表達(dá)式基礎(chǔ)
由于UNIX/Linux中很多強大的文本處理命令如:grep、awk、sed,還有vi編輯器等工具配合正則表達(dá)式將產(chǎn)生強大的威力,所以熟悉正則表達(dá)式語法是十分必要的。find、grep、sed、awk
四個強大的UNIX工具,特別是sed、awk在文本處理方面的能力非常強大,在Linux下工作應(yīng)該掌握這幾個命令。
Module02 - Linux開發(fā)環(huán)境
不同系統(tǒng)平臺下的開發(fā)工具、開發(fā)環(huán)境各有不同。該模塊課程關(guān)注的是Linux C++/C開發(fā)所必需的一系列工具:
vi(vim)文本編輯器
一個UNIX世界標(biāo)準(zhǔn)的文本編輯器,簡約而強大,不論作為開發(fā)人員還是系統(tǒng)管理員,熟練使用vi是一項基本的、且不可或缺的技能。gcc/g++ C/C++編譯器
通過具體的示例講解使用gcc/g++編譯單個、多個文件、共享庫、靜態(tài)庫等。gdb 調(diào)試器
通過具體的示例來熟悉通過gdb來調(diào)試C/C++應(yīng)用程序、修正應(yīng)用程序運行期的錯誤。make和makefile
學(xué)習(xí)編寫makefile,使用make來構(gòu)建一個完整的項目。CVS - 版本控制
運用CVS來進行代碼的版本控制。Eclipse CDT
一個非常強大的C/C++ IDE,強大的文本編輯器、與GCC工具鏈的無縫結(jié)合、方便的gdb前端、集成CVS/Subversion等版本控制等,提供眾多的便利,大大減輕開發(fā)者的負(fù)擔(dān)。
Module03 - C++編程語言
深入講解C++編程語言的各個方面,即完整的C++語法講解:
語言基礎(chǔ)
詳細(xì)介紹變量、表達(dá)式、語句、指針、數(shù)組、流程控制、函數(shù)、文件組織等。抽象機制 - 面向?qū)ο缶幊?/strong>
深入講解C++的抽象機制,封裝(類)、繼承、多態(tài);操作符重載、函數(shù)對象、異常處理等。模板 - 泛型編程
詳細(xì)介紹C++的模板機制,類模板、函數(shù)模板、模板特化等方面的內(nèi)容。
Module04 - C++標(biāo)準(zhǔn)庫
完整地講解STL各大組件:容器、算法、函數(shù)對象、容器適配器、迭代器、迭代器適配器等;另外還包括string、I/O stream;為了更好地了解STL容器的特性、排序算法,額外安排:數(shù)據(jù)結(jié)構(gòu)簡介和常用排序算法簡介2個部分的內(nèi)容。
常用數(shù)據(jù)結(jié)構(gòu)簡介
介紹動態(tài)數(shù)組、linked-list、binary search tree、rb-tree、hash table、stack、queue、heap等常用的數(shù)據(jù)結(jié)構(gòu)。STL容器詳細(xì)介紹
vector、list、deque、stack、queue、priority_queue、map、set等容器的特性和用法。常見排序算法介紹
簡要介紹各種常見排序算法的原理,及其實現(xiàn)。STL算法和預(yù)定義函數(shù)對象
標(biāo)準(zhǔn)庫提供了多達(dá)60多個算法函數(shù),涉及排序、搜索、排列組合等多個方面,其中多數(shù)算法會使用如greater、less、binder2nd等函數(shù)對象,該單元的課程詳細(xì)介紹了上述算法的使用和相關(guān)函數(shù)對象的具體作用。迭代器
STL容器和算法高度解耦,而算法之所以能方便的作用于STL容器,維系二者的就是迭代器。
在這個單元的課程中講介紹C++迭代器的類別、各類迭代器適配器的用法。string - 字符串
相對于C風(fēng)格的字符串處理,C++提供了更安全和方便的字符串類型 string,給class提供類眾多的方法確保針對字符串處理的安全、便捷性。該單元的課程講完整地介紹string的使用。I/O stream
C++標(biāo)準(zhǔn)庫提供的一個強大的I/O流框架。本單元詳細(xì)介紹標(biāo)準(zhǔn)輸入/輸出、文件輸入/輸出、字符串輸入/輸出流的運用,利用操控符來控制輸入/輸出的格式。數(shù)值
介紹C++數(shù)值運算的算法,如valarray、4組數(shù)值算法函數(shù)、隨機數(shù)等方面的內(nèi)容。
Module05 - C++ Boost
Boost是由C++標(biāo)準(zhǔn)委員會成員發(fā)起、眾多C++業(yè)界高人參與設(shè)計并實現(xiàn)的一個涉及面廣、質(zhì)量高且業(yè)已廣泛使用的C++標(biāo)準(zhǔn)后備庫,其中 TR1已經(jīng)被納入C++0x標(biāo)準(zhǔn)庫。不論從風(fēng)格和內(nèi)容組織上講,都可以認(rèn)為Boost項目是C++標(biāo)準(zhǔn)庫的延伸。截止到boost 1.43版本,boost項目擁有大約100個用途廣泛的實用庫。這部分課程將介紹服務(wù)器端開發(fā)所需要的幾個組件:
容器與數(shù)據(jù)結(jié)構(gòu)
介紹boost.any, boost.tuple, boost.array, boost.unordered(基于hash table,即hash_map和hash_set)等組件。字符串算法和文字處理
介紹boost.lexical_cast, boost.format, boost.string_algo等組件。正則表達(dá)式
正則表達(dá)式語法(perl正則表達(dá)式語法)的講解,boost.regex庫的使用。智能指針
詳細(xì)介紹shared_ptr、scoped_ptr、weak_ptr等智能指針的使用。函數(shù)對象相關(guān)
詳細(xì)介紹boost.bind, boost.mem_fn, boost.function, boost.ref, boost.lambda等組件。序列化
通過實例熟悉boost.serialization庫的用法。日期與時間
boost.date_time庫的詳細(xì)介紹。多線程
作為服務(wù)器端開發(fā)必不可少的內(nèi)容之一:多線程支持,boost提供了一個跨平臺的線程庫:boost.thread。
本單元的課程詳細(xì)介紹boost.thread。網(wǎng)絡(luò)編程
boost.asio庫,通過對各類操作系統(tǒng)原生的socket API以及事件多路分離、異步I/O API的封裝,構(gòu)成了一個性能優(yōu)秀、便于編程的網(wǎng)絡(luò)編程框架,使復(fù)雜的網(wǎng)絡(luò)編程任務(wù)變得簡單、安全、并且高效。
本單元的課程通過一系列的示例來展示:通過asio來構(gòu)建TCP同步/異步服務(wù)器和客戶端、UDP同步/異步服務(wù)器和客戶端應(yīng)用,從而熟悉asio的接口和編程套路。
Module06 - C++ ACE
ACE是一個被廣泛使用、設(shè)計優(yōu)雅、高性能的C++通信框架(不僅僅是通信框架),其設(shè)計及實現(xiàn)被眾多開源框架所借鑒。是構(gòu)建穩(wěn)定、高性能、高吞吐量、跨平臺的服務(wù)器端程序的優(yōu)秀框架。本模塊的課程包含以下幾個方面:
ACE基礎(chǔ)網(wǎng)絡(luò)I/O相關(guān)對象
詳細(xì)介紹ACE_SOCK、ACE_SOCK_Acceptor、ACE_SOCK_Connector、ACE_INET_Addr等class的使用。Reactor框架
ACE Reactor框架簡化事件驅(qū)動程序的開發(fā),而事件驅(qū)動是很多網(wǎng)絡(luò)化應(yīng)用的基本特征,這些應(yīng)用常見的事件源包括I/O事件、Posix信號或 Windows句柄激發(fā)以及定時器到期等。
本單元介紹ACE_Event_Handler、Timer、ACE_Reactor等類的使用,并使用該框架構(gòu)建一個簡易的多人聊天室應(yīng)用。Task框架
ACE Task框架提供了強大而可擴展的面向?qū)ο蟛l(fā)能力,如在基于對象的上下文(context)中派生線程,以及在執(zhí)行不同線程中的對象之間傳遞消息和對消息進行排隊。Acceptor-Connector框架
ACE Acceptor-Connector框架實現(xiàn)了Acceptor-Connector模式,這種模式通過解除:1,網(wǎng)絡(luò)化應(yīng)用中相互協(xié)作的對等服務(wù)的連 接和初始化所需的活動、2,以及它們一旦連接和初始化后所執(zhí)行的處理的耦合,增強了軟件復(fù)用和可擴展性。Proactor框架
Proactor框架引入異步I/O機制,既保留了Reactor框架的事件多路分離,避免多線程的開銷,同時還緩和了反應(yīng)式的同步I/O的瓶頸效應(yīng)。
Module07 - 數(shù)據(jù)庫開發(fā)
數(shù)據(jù)庫作為服務(wù)器端應(yīng)用數(shù)據(jù)持久化的最重要的部件,在服務(wù)器端應(yīng)用開發(fā)中占有非常重要的地位。本模塊主要針對Oracle 10g和MySQL 5.1兩種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。本模塊包含以下內(nèi)容:
SQL語言
詳細(xì)介紹DML、DDL語句的語法和使用。Oracle PL/SQL
全面介紹Oracle PL/SQL語法,以及使用PL/SQL編寫存儲過程、函數(shù)、觸發(fā)器。MySQL存儲過程
編寫MySQL存儲過程、函數(shù)、觸發(fā)器。C++ OTL
OTL:Oracle、ODBC and DB2-CLI Template Library。通過OTL,可以方便、高效的與各類主流的關(guān)系型數(shù)據(jù)庫如DB2、Oracle、Infomix、Sybase、MySQL等通信。
Module08 - 項目實戰(zhàn)
項目實戰(zhàn)可選以下項目之一:
項目1:X-Messenger Servers
IM(即時通信)服務(wù)器群,類似于MSN、QQ等IM的服務(wù)器。可以基于Boost.asio或ACE實現(xiàn)。項目2:X-Messenger Client
IM(即時通信)客戶端軟件,類似于MSN、QQ等IM的工具。實現(xiàn)Contacts管理、P2P文件傳輸、P2P一對一文本聊天、群聊等現(xiàn)代IM客戶端功能,可以基于Boost.asio或ACE實現(xiàn)。項目3:X-Crawler
一個網(wǎng)絡(luò)爬蟲,即搜索引擎的前端,負(fù)責(zé)收集網(wǎng)絡(luò)上的數(shù)據(jù)(網(wǎng)頁內(nèi)容、解析URL)供搜索引擎使用。其他項目,可由學(xué)員自行定義。
課程資源
可獲取的課程資源見:教學(xué)資源。