c++教程



課程模塊

第一階段(Linux C開發)

課程目標:

能使用並管理linux系統,熟悉linux開發環境。熟練掌握C語言語法。掌握LinuxC開發方法。

實訓主題

實訓內容

Linux最佳入門

Linux基本操作、Linux基本命令、bash基礎、Linux文件系統、Linux管理命令、Linux文件權限、vi使用、grep命令與正則表達式、find命令等。

Shell編程

Shell編程基礎、輸入輸出、算術擴展、條件測試、條件與分支語句、循環語句、函數、sedawkShell俄羅斯方塊

Linux開發工具

gccmakegdb

Linux C語言開發

數據類型、控制語句、自定義數據類型、模塊化程序設計、指針

實戰項目

餐管點菜系統(文件版)

第二階段(Linux C深入)

課程目標:

C語言進入深化,掌握Oracle數據庫以及數據庫開發。掌握Linux底下的數據庫開發技術。

實訓主題

實訓內容

數據結構

鏈表、linux內核鏈表、棧和隊列、樹、哈希表、經典查找與排序算法

Oracle數據庫

Oracle數據庫基礎、ER模型、數據庫系統的開發流程、數據庫設計、POWERDESIGNER工具使用、ORACLE體系結構、DDLDMLPLSQL、存儲過程、觸發器、函數、遊標

PRO C編程

PRO C程序設計、宿主變量、指示器變量、錯誤處理、遊標處理、PRO*C調用PL/SQL程序塊、PRO C調用存儲過程、動態SQL

實戰項目

餐管點菜系統(數據庫版)

第三階段(Linux系統編程)

Linux系統編程圍繞Linux操作系統的三大抽象展開講解(文件、虛擬存儲、進程)。並配合一個小型的Shell程序minishell做爲教學項目

實訓主題

實訓內容

Linux系統編程

Linux系統編程之文件篇、Linux系統編程之進程篇、Linux系統編程之信號篇、Linux系統編程之管道篇

實戰項目

Minishell

第四階段(Linux網絡編程)

講解Linux網絡編程基礎知識,socket編程、消息隊列、共享內存、信號量、線程的創建、線程的狀態多線程編程、線程間的通信、線程同步、線程池等。通過這個課程的學習,實現一個小型的ftp服務器miniftpd

實訓主題

實訓內容

Linux網絡編程

Linux網絡編程之TCP/IP基礎篇、Linux網絡編程之socket編程篇、Linux網絡編程之進程間通訊篇、Linux網絡編程之線程篇

實戰項目

Miniftpd項目實戰

第五階段(跟我一起學C++

掌握C++語法、掌握理解面向對象的編程思想與應用、初步掌握面向泛型的編程思想。

實訓主題

實訓內容

C++程序設計

C++面向對象,運算符號重載,模板,異常處理,資源管理

幾個重要的練習:

大整數類、字符串類、ptr_vector實現、面向對象版的表達式計算器、面向泛型版的表達式計算器、俄羅斯方塊的實現

OOAD&UML

UML、面向對象設計原則、設計模式

敏捷開發實踐

XP極限編程(結對編程、測試驅動開發、重構)

實戰項目

表達式計算器、俄羅斯方塊

第六階段(大併發服務器設計)

綜合應用Linux系統編程、Linux網絡編程、與跟我一起學C++所學的知識編寫一個大併發服務器

實訓主題

實訓內容

大併發服務器設計

Mysql編程、Winsock編程、Linux Epoll模型、網絡編程基礎組件封裝

實戰項目

銀行儲蓄系統實現爲大併發、客戶端Windows、服務器端Linux

第七階段(Windows編程)

Windows操作系統環境下使用MFC進行圖形化界面編程,運用MFC中的GDI技術進行圖形圖像開發,學習常用的遊戲開發技術。

實訓主題

實訓內容

Windows程序設計

MFC結構,文檔/視圖結構,消息映射,SDI,對話框,常用控件,圖形繪製,常用遊戲編程技術

實戰項目

單機版連連看

第八階段(Windows網絡編程)

深入學習Windows多線程、網絡編程。

實訓主題

實訓內容

Windows網絡編程

動態鏈接庫,內存管理,進程管理,多線程,進程與線程通信與同步(臨界區,互斥量,信號量等),WinSock編程、完成端口等。

實戰項目

網絡對戰平臺(多人連連看)


Linux最佳入門(共10集)

還在爲Linux入門發愁嗎?還在爲繁雜的Linux知識感到無所適從嗎?《Linux入門視頻》教程將是您最佳的選擇。《Linux入門視頻》從Linux開發者的角度提煉出Linux開發者所必備的Linux知識。

01初識Linux
什麼是Linux
Linux與Unix的關係
Linux系統的特點
Linux系統的組成

02Linux基本操作
登錄
口令文件
簡單命令
man

03Linux基本命令
目錄操作命令(cd mkdir rmdir)
文件操作命令(cp mv rm ln which cat less more head tail wc)

04bash基礎
通配符
輸入輸出重定向
管道
後臺作業
歷史記錄
命令補全
別名

05Linux文件系統
什麼是文件系統
文件類型
mount與umount
軟連接與硬連接

06Linux管理命令
df、du(查看磁盤與目錄容量命令)
free(查看內存使用狀態命令)
ps(查看進程命令)
top(進程監控命令)
kill、killall(向進程發信號命令)
rpm(安裝軟件包命令)
tar(備份與恢復命令)

07linux文件權限
linux用戶類別
組管理
用戶管理
權限管理
suid、sgid、sticky bit
umask

08vi使用
什麼是vi
vi的三種工作方式
編輯模式
插入模式
命令模式(末行模式)

09grep命令與正則表達式
grep命令
正則表達式
grep命令中使用正則表達式
vi中使用正則表達式

10find
find命令一般格式
find常用表達式
find邏輯表達式
find示例

Shell編程入門(共11集)

從程序員的角度來看,Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統溝通的橋樑。對於Linux用戶來說掌握一定的Shell知識是必要的。《Shell編程視頻》總結常用的Shell編程知識,並通過Shell腳本實現一個俄羅斯方塊程序讓大家領略Shell的魅力。

01Shell編程基礎
什麼是Shell程序
本地變量
環境變量
位置參量
數組

02Shell輸入輸出
read
echo
echo輸出顏色與光標定位

03Shell算術擴展
單引號、雙引號、反引號區別
命令替換
算術擴展

04Shell條件測試
字符串測試
整數測試
邏輯測試
文件測試

05Shell條件與分支語句
if語句
case語句

06Shell循環語句
for語句
while語句
until語句
select與菜單

07函數
函數的使用
字符串操作
一些內置命令(expr,shift,eval,trap等)

08sed
什麼是流編輯器sed
sed地址定位方式
sed編輯命令

09awk
什麼是awk
awk簡單用法
awk腳本語法
awk執行過程

10Shell俄羅斯方塊(上)
獲取鍵盤方向按鍵(read)
棋盤繪製(echo)
俄羅斯方塊表示(一維數組)
俄羅斯方塊圖形輸出

11Shell俄羅斯方塊(下)
進程模型(顯式進程,控制進程)
捕捉信號(trap )
俄羅斯方塊源碼分析

Linux開發工具篇(共6集)

工慾善其事必先利其器,《Linux開發工具使用》視頻講解Linux底下C/C++開發工具的使用。主要包括編譯工具gcc、調試工具gdb、make(Makefile)工具。

01gcc入門(上)
什麼是gcc
gcc特點
gcc編譯過程
gcc常用選項
gcc編譯多文件

02gcc入門(下)
使用外部庫
靜態庫與共享庫
生成靜態庫
生成動態庫

03Makefile(上)
make與Makefile介紹
Makefile基本規則
簡單的Makefile編寫
Make自動化變量
Makefile編譯多個可執行文件

04Makefile(下)
make常用內嵌函數
多級目錄Makefile
實用的Makefile

05gdb入門(上)
什麼是gdb
gdb功能
運行程序
查看源碼
設置斷點
單步調試
gdb常用命令總結

06gdb入門(下)
查看運行時數據
程序錯誤
gdb調試邏輯錯誤
gdb調試段錯誤
core文件調試

Linux系統編程(共25集)

Linux系統編程圍繞Linux操作系統的三大抽象展開講解(文件、虛擬存儲、進程)。並配合一個小型的Shell程序minishell做爲教學項目。分以下幾個篇章:
Linux系統編程之文件篇
Linux系統編程之進程篇
Linux系統編程之信號與管道篇

Linux系統編程之文件篇
01認識計算機系統(上)
計算機系統組成
計算機系統硬件組成
總線
I/O設備
內存
處理器(運算器+控制器)

02認識計算機系統(下)
什麼是操作系統
Linux內核模塊
操作系統管理硬件
操作系統三個基本抽象
進程上下文切換
進程虛地址空間
虛擬文件系統(VFS)

03系統編程介紹
系統編程與應用編程
系統資源
系統調用
系統調用與C庫關係
錯誤處理

04文件與I/O(1)
什麼是I/O
文件描述符
文件相關係統調用

05文件與I/O(2)
read、write
lseek
目錄訪問(opendir、readdir、closedir)

06文件與I/O(3)
stat
stat結構體
stat示例

07文件與I/O(4)
文件共享
打開文件內核數據結構
一個進程兩次打開同一個文件
兩個進程打開同一個文件
複製文件描述符(dup、dup2、fcntl)

08文件與I/O(5)
fcntl函數
fcntl常用操作
文件鎖

Linux系統編程之進程篇

09進程(1)
什麼是程序
什麼是進程
進程數據結構
進程與程序區別與聯繫

10進程(2)
進程狀態變遷
進程控制塊
進程創建
進程撤消
終止進程的五種方法

11進程(3)
複製進程映像
fork系統調用
孤兒進程、殭屍進程
寫時複製

12進程(4)
fork之後父子進程共享文件
fork與vfork
exit與_exit
atexit
execve替換進程映像(加載程序)

13進程(5)
exec替換進程映像
exec關聯函數組(execl、execlp、execle、execv、execvp)

14進程(6)
SIGCHLD
wait
waitpid
僵進程
system

15進程(7)
什麼是守護進程
守護進程的創建步驟
daemon
Linux系統編程之信號與管道篇

16信號(一)
中斷
信號
信號與中斷
signal

17信號(二)
信號分類
可靠信號與不可靠信號
信號發送
pause

18信號(三)
更多信號發送函數
可重入函數與不可重入函數
不可重入函數示例

19信號(四)
信號在內核中的表示
信號阻塞與未訣
信號集操作函數
sigprocmask

20信號(五)
sigaction函數
sigaction結構體
sigaction示例

21信號(六)
sigqueue函數
sigval聯合體
sigqueue示例

22信號(七)
三種不同精度的睡眠
三種時間結構
setitimer
getitimer

23管道(一)
管道
匿名管道pipe
管道示例程序

24管道(二)
管道讀寫規則

25管道(三)
命名管道(FIFO)
匿名管道與命名管道區別
命名管道的打開規則
命名管道示例程序

MiniShell實戰(共8集)

帶領大家用C語言動手打造一款MiniShell,通過這個經典案例的實現,讓你透徹瞭解Shell的運作原理。
以代碼驅動地方式進行教學,每一行代碼都是現場敲打出來的,讓你感受minishell程序是如何一步一步實現直至完善的。

第一講:
搭建minishell程序框架
編寫Makefile

第二講:
對簡單命令進行解析並執行

第三講:
搭建複雜命令解析框架
解析輸入重定向、輸出重定向、管道、後臺作業

第四講
解析複雜命令
解析輸入重定向、輸出重定向、管道、後臺作業

第五講
解析並執行帶管道的命令

第六講
解析並通執行帶輸入輸出重定向命令,後臺作業

第七講
梳理程序框架
調試幾個BUG

第八講
內部命令的實現
搭建內部命令的實現框架

Linux網絡編程(共41集)
講解Linux網絡編程基礎知識,通過這個課程的學習,實現一個小型的ftp服務器miniftpd。
Linux網絡編程之TCP/IP基礎篇
Linux網絡編程之socket編程篇
Linux網絡編程之進程間通信篇
Linux網絡編程之線程篇


Linux網絡編程之TCP/IP基礎篇
01TCPIP基礎(一)
ISO/OSI參考模型
TCP/IP四層模型
基本概念(對等通信、封裝、分用、端口)

02TCPIP基礎(二)
最大傳輸單元(MTU)/路徑MTU
以太網幀格式
ICMP
ARP
RARP

03TCPIP基礎(三)
IP數據報格式
網際校驗和
路由

04TCPIP基礎(四)
TCP特點
TCP報文格式
連接建立三次握手
連接終止四次握手
TCP如何保證可靠性

05TCPIP基礎(五)
滑動窗口協議
UDP特點
UDP報文格式

Linux系統編程之socket編程篇

06socket編程(一)
什麼是socket
IPv4套接口地址結構
網絡字節序
字節序轉換函數
地址轉換函數
套接字類型

07socket編程(二)
TCP客戶/服務器模型
回射客戶/服務器
socket、bind、listen、accept、connect

08socket編程(三)
SO_REUSEADDR
處理多客戶連接(process-per-conection)
點對點聊天程序實現

09socket編程(四)
流協議與粘包
粘包產生的原因
粘包處理方案
readn writen
回射客戶/服務器

10socket編程(五)
read、write與recv、send
readline實現
用readline實現回射客戶/服務器
getsockname、getpeername
gethostname、gethostbyname、gethostbyaddr

11socket編程(六)
TCP回射客戶/服務器
TCP是個流協議
僵進程與SIGCHLD信號

12socket編程(七)
TCP 11種狀態
連接建立三次握手、連接終止四次握手
TIME_WAIT與SO_REUSEADDR
SIGPIPE

13socket編程(八)
五種I/O模型
select
用select改進回射客戶端程序

14socket編程(九)
select
讀、寫、異常事件發生條件
用select改進回射服務器程序。

15socket編程(十)
用select改進第八章點對點聊天程序

16socket編程(十一)
套接字I/O超時設置方法
用select實現超時
read_timeout函數封裝
write_timeout函數封裝
accept_timeout函數封裝
connect_timeout函數封裝

17socket編程(十二)
select限制
poll

18socket編程(十三)
epoll使用
epoll與select、poll區別
epoll LT/ET模式

19socket編程(十四)
UDP特點
UDP客戶/服務基本模型
UDP回射客戶/服務器
UDP注意點

20socket編程(十五)
udp聊天室實現

21socket編程(十六)

UNIX域協議特點
UNIX域地址結構
UNIX域字節流回射客戶/服務
UNIX域套接字編程注意點

22socket編程(十七)
socketpair
sendmsg/recvmsg
UNIX域套接字傳遞描述符字

23進程間通信介紹(一)
進程同步與進程互斥
進程間通信目的
進程間通信發展
進程間通信分類
進程間共享信息的三種方式
IPC對象的持續性

24進程間通信介紹(二)
死鎖
信號量
PV原語
用PV原語解決司機與售票員問題
用PV原語解決民航售票問題
用PV原語解決汽車租賃問題

25System V消息隊列(一)
消息隊列
IPC對象數據結構
消息隊列結構
消息隊列在內核中的表示
消息隊列函數

26System V消息隊列(二)
msgsnd函數
msgrcv函數

27System V消息隊列(三)
消息隊列實現回射客戶/服務器

28共享內存介紹
共享內存
共享內存示意圖
管道、消息隊列與共享內存傳遞數據對比
mmap函數
munmap函數
msync函數

29System V共享內存
共享內存數據結構
共享內存函數
共享內存示例

30System V信號量(一)
信號量
信號量集結構
信號量集函數
信號量示例

31System V信號量(二)
用信號量實現進程互斥示例

32System V信號量(三)
用信號集解決哲學家就餐問題

33System V共享內存與信號量綜合
用信號量解決生產者消費者問題
實現shmfifo

34POSIX消息隊列
POSIX消息隊列相關函數
POSIX消息隊列示例

35POSIX共享內存
POSIX共享內存相關函數
POSIX共享內存示例

36線程介紹
什麼是線程
進程與線程
線程優缺點
線程模型
N:1用戶線程模型
1:1核心線程模型
N:M混合線程模型

37POSIX線程(一)
POSIX線程庫相關函數
用線程實現回射客戶/服務器

38POSIX線程(二)
線程屬性
線程特定數據

39POSIX信號量與互斥鎖
POSIX信號量相關函數
POSIX互斥鎖相關函數
生產者消費者問題
自旋鎖與讀寫鎖介紹

40POSIX條件變量
條件變量
條件變量函數
條件變量使用規範
使用條件變量解決生產者消費者問題

41一個簡單的線程池實現
線程池性能分析
線程池實現


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章