Linux C 學習之路

2021-07-11 16:18:43 字數 4317 閱讀 3101

module01 - linux系統基礎

由於本系列課程基於linux(或unix),熟悉linux作業系統是必要的前提。 該模組的課程包含以下方面的內容:

常用unix/linux命令

熟悉檔案管理、文字處理、程序管理、網路、系統管理等各個方面大約100個常用的命令。

深入了解bash

了解linux預設shell: bash 的語法、命令執行、i/o重定向、任務控制等。

正規表示式基礎

由於unix/linux中很多強大的文字處理命令如:grep、awk、sed,還有vi編輯器等工具配合正規表示式將產生強大的威力,所以熟悉正規表示式語法是十分必要的。

find、grep、sed、awk

四個強大的unix工具,特別是sed、awk在文字處理方面的能力非常強大,在linux下工作應該掌握這幾個命令。

module02 - linux開發環境

不同系統平台下的開發工具、開發環境各有不同。該模組課程關注的是linux c++/c開發所必需的一系列工具:

vi(vim)文字編輯器

乙個unix世界標準的文字編輯器,簡約而強大,不論作為開發人員還是系統管理員,熟練使用vi是一項基本的、且不可或缺的技能。

gcc/g++ c/c++編譯器

通過具體的示例講解使用gcc/g++編譯單個、多個檔案、共享庫、靜態庫等。

gdb 偵錯程式

通過具體的示例來熟悉通過gdb來除錯c/c++應用程式、修正應用程式執行期的錯誤。

make和makefile

學習編寫makefile,使用make來構建乙個完整的專案。

cvs - 版本控制

運用cvs來進行**的版本控制。

eclipse cdt

乙個非常強大的c/c++ ide,強大的文字編輯器、與gcc工具鏈的無縫結合、方便的gdb前端、整合cvs/subversion等版本控制等,提供眾多的便利,大大減輕開發者的負擔。

module03 - c++程式語言

深入講解c++程式語言的各個方面,即完整的c++語法講解:

語言基礎

詳細介紹變數、表示式、語句、指標、陣列、流程控制、函式、檔案組織等。

抽象機制 - 物件導向程式設計

深入講解c++的抽象機制,封裝(類)、繼承、多型;操作符過載、函式物件、異常處理等。

模板 - 泛型程式設計

詳細介紹c++的模板機制,類模板、函式模板、模板特化等方面的內容。

module04 - c++標準庫

完整地講解stl各大元件:容器、演算法、函式物件、容器介面卡、迭代器、迭代器介面卡等;另外還包括string、i/o stream;為了更好地了解stl容器的特性、排序演算法,額外安排:資料結構簡介和常用排序演算法簡介2個部分的內容。

常用資料結構簡介

介紹動態陣列、linked-list、binary search tree、rb-tree、hash table、stack、queue、heap等常用的資料結構。

stl容器詳細介紹

vector、list、deque、stack、queue、priority_queue、map、set等容器的特性和用法。

常見排序演算法介紹

簡要介紹各種常見排序演算法的原理,及其實現。

stl演算法和預定義函式物件

標準庫提供了多達60多個演算法函式,涉及排序、搜尋、排列組合等多個方面,其中多數演算法會使用如greater、less、binder2nd等函式物件,該單元的課程詳細介紹了上述演算法的使用和相關函式物件的具體作用。

迭代器stl容器和演算法高度解耦,而演算法之所以能方便的作用於stl容器,維繫二者的就是迭代器。

在這個單元的課程中講介紹c++迭代器的類別、各類迭代器介面卡的用法。

string - 字串

相對於c風格的字串處理,c++提供了更安全和方便的字串型別 string,給class提供類眾多的方法確保針對字串處理的安全、便捷性。該單元的課程講完整地介紹string的使用。

i/o stream

c++標準庫提供的乙個強大的i/o流框架。本單元詳細介紹標準輸入/輸出、檔案輸入/輸出、字串輸入/輸出流的運用,利用操控符來控制輸入/輸出的格式。

數值介紹c++數值運算的演算法,如valarray、4組數值演算法函式、隨機數等方面的內容。

module05 - c++ boost

boost是由c++標準委員會成員發起、眾多c++業界高人參與設計並實現的乙個涉及面廣、質量高且業已廣泛使用的c++標準後備庫,其中 tr1已經被納入c++0x標準庫。不論從風格和內容組織上講,都可以認為boost專案是c++標準庫的延伸。截止到boost 1.43版本,boost專案擁有大約100個用途廣泛的實用庫。這部分課程將介紹伺服器端開發所需要的幾個元件:

容器與資料結構

介紹boost.any, boost.tuple, boost.array, boost.unordered(基於hash table,即hash_map和hash_set)等元件。

字串演算法和文書處理

介紹boost.lexical_cast, boost.format, boost.string_algo等元件。

正規表示式

正規表示式語法(perl正規表示式語法)的講解,boost.regex庫的使用。

智慧型指標

詳細介紹shared_ptr、scoped_ptr、weak_ptr等智慧型指標的使用。

函式物件相關

詳細介紹boost.bind, boost.mem_fn, boost.function, boost.ref, boost.lambda等元件。

序列化通過例項熟悉boost.serialization庫的用法。

日期與時間

boost.date_time庫的詳細介紹。

多執行緒作為伺服器端開發必不可少的內容之一:多執行緒支援,boost提供了乙個跨平台的執行緒庫:boost.thread。

本單元的課程詳細介紹boost.thread。

網路程式設計

boost.asio庫,通過對各類作業系統原生的socket api以及事件多路分離、非同步i/o api的封裝,構成了乙個效能優秀、便於程式設計的網路程式設計框架,使複雜的網路程式設計任務變得簡單、安全、並且高效。

本單元的課程通過一系列的示例來展示:通過asio來構建tcp同步/非同步伺服器和客戶端、udp同步/非同步伺服器和客戶端應用,從而熟悉asio的介面和程式設計套路。

module06 - c++ ace

ace是乙個被廣泛使用、設計優雅、高效能的c++通訊框架(不僅僅是通訊框架),其設計及實現被眾多開源框架所借鑑。是構建穩定、高效能、高吞吐量、跨平台的伺服器端程式的優秀框架。本模組的課程包含以下幾個方面: 

ace基礎網路i/o相關物件

詳細介紹ace_sock、ace_sock_acceptor、ace_sock_connector、ace_inet_addr等class的使用。

reactor框架

ace reactor框架簡化事件驅動程式的開發,而事件驅動是很多網路化應用的基本特徵,這些應用常見的事件源包括i/o事件、posix訊號或 windows控制代碼激發以及定時器到期等。

本單元介紹ace_event_handler、timer、ace_reactor等類的使用,並使用該框架構建乙個簡易的多人聊天室應用。

task框架

ace task框架提供了強大而可擴充套件的物件導向併發能力,如在基於物件的上下文(context)中派生執行緒,以及在執行不同執行緒中的物件之間傳遞訊息和對訊息進行排隊。

acceptor-connector框架

ace acceptor-connector框架實現了acceptor-connector模式,這種模式通過解除:1,網路化應用中相互協作的對等服務的連線和初始化所需的活動、2,以及它們一旦連線和初始化後所執行的處理的耦合,增強了軟體復用和可擴充套件性。

proactor框架

proactor框架引入非同步i/o機制,既保留了reactor框架的事件多路分離,避免多執行緒的開銷,同時還緩和了反應式的同步i/o的瓶頸效應。

module07 - 資料庫開發

資料庫作為伺服器端應用資料持久化的最重要的部件,在伺服器端應用開發中占有非常重要的地位。本模組主要針對oracle 10g和mysql 5.1兩種關係型資料庫管理系統。本模組包含以下內容:

sql語言

詳細介紹dml、ddl語句的語法和使用。

oracle pl/sql

全面介紹oracle pl/sql語法,以及使用pl/sql編寫儲存過程、函式、觸發器。

mysql儲存過程

編寫mysql儲存過程、函式、觸發器。

c++ otl

otl:oracle、odbc and db2-cli template library。通過otl,可以方便、高效的與各類主流的關係型資料庫如db2、oracle、infomix、sybase、mysql等通訊。

Linux C 學習之路

linux系統基礎 常用unix linux命令 熟悉檔案管理 文字處理 程序管理 網路 系統管理等各個方面大約100個常用的命令。深入了解bash 了解linux預設shell bash 的語法 命令執行 i o重定向 任務控制等。正規表示式基礎 由於unix linux中很多強大的文字處理命令如...

Linux C 學習筆記

1.linux 程序與訊號 檢視當前系統所有程序的shell命令 ps aux 檢視程序樹 pstree 檢視當前使用者啟動的程序 ps af kill 程序號 kill 9 程序號 強行殺死程序 killall 程序名字 如果乙個程序的父程序被殺死 則init就程式設計當前程序的父程序 了解實時作...

linux c 程序學習

1.fork 由於fork後的父程序與子程序的優先順序是一樣的,所以會存在父程序已經退出了而子程序還在執行,這時候的子程序就是孤兒程序,會被init程序收養,所以這時候getppid得到的1。int main exit 0 2.vfork 由vfork也是用來建立程序,但是子程序是共享父程序的位址空...