C++學習進程安排
本人本科不是計算機,不是軟件專業(yè)出身的,研究生階段學的是軟件,基礎很一般。我最近制定了一個學習C++的學習安排,現與大家分享一下,不足之處,歡迎指正!
第一階段(Linux C開發(fā))
目標:能使用并管理linux系統(tǒng),熟悉linux開發(fā)環(huán)境。熟練掌握C語言語法。掌握Linux下C開發(fā)方法。
主題?
內容
Linux最佳入門
Linux基本操作、Linux基本命令、bash基礎、Linux文件系統(tǒng)、Linux管理命令、Linux文件權限、vi使用、grep命令與正則表達式、find命令等。
Shell編程
Shell編程基礎、輸入輸出、算術擴展、條件測試、條件與分支語句、循環(huán)語句、函數、sed、awk、Shell俄羅斯方塊
Linux開發(fā)工具
gcc、make、gdb
Linux C語言開發(fā)
數據類型、控制語句、自定義數據類型、模塊化程序設計、指針
實戰(zhàn)項目
餐館點菜系統(tǒng)(文件版)
第二階段(Linux C深入)
目標:對C語言進入深化,掌握Oracle數據庫以及數據庫開發(fā)。掌握Linux底下的數據庫開發(fā)技術。
主題
內容
數據結構
鏈表、linux內核鏈表、棧和隊列、樹、哈希表、經典查找與排序算法
Oracle數據庫
Oracle數據庫基礎、ER模型、數據庫系統(tǒng)的開發(fā)流程、數據庫設計、POWERDESIGNER工具使用、ORACLE體系結構、DDL、DML、PLSQL、存儲過程、觸發(fā)器、函數、游標
PRO C編程
PRO C程序設計、宿主變量、指示器變量、錯誤處理、游標處理、PRO*C調用PL/SQL程序塊、PRO C調用存儲過程、動態(tài)SQL
實戰(zhàn)項目
餐館點菜系統(tǒng)(數據庫版)
第三階段(Linux系統(tǒng)編程)
Linux系統(tǒng)編程圍繞Linux操作系統(tǒng)的三大抽象展開講解(文件、虛擬存儲、進程)。并配合一個小型的Shell程序minishell做為教學項目
主題
內容
Linux系統(tǒng)編程
Linux系統(tǒng)編程之文件篇、Linux系統(tǒng)編程之進程篇、Linux系統(tǒng)編程之信號篇、Linux系統(tǒng)編程之管道篇
實戰(zhàn)項目
Minishell
第四階段(Linux網絡編程)
Linux網絡編程基礎知識,socket編程、消息隊列、共享內存、信號量、線程的創(chuàng)建、線程的狀態(tài)多線程編程、線程間的通信、線程同步、線程池等。通過這個課程的學習,實現一個小型的ftp服務器miniftpd。
主題
內容
Linux網絡編程
Linux網絡編程之TCP/IP基礎篇、Linux網絡編程之socket編程篇、Linux網絡編程之進程間通訊篇、Linux網絡編程之線程篇
實戰(zhàn)項目
Miniftpd項目實戰(zhàn)
第五階段(認真學C++)
掌握C++語法、掌握理解面向對象的編程思想與應用、初步掌握面向泛型的編程思想。
主題
內容
C++程序設計
C++面向對象,運算符號重載,模板,異常處理,資源管理
幾個重要的練習:
大整數類、字符串類、ptr_vector實現、面向對象版的表達式計算器、面向泛型版的表達式計算器、俄羅斯方塊的實現
OOAD&UML
UML、面向對象設計原則、設計模式
敏捷開發(fā)實踐
XP極限編程(結對編程、測試驅動開發(fā)、重構)
實戰(zhàn)項目
表達式計算器、俄羅斯方塊
第六階段(大并發(fā)服務器設計)
綜合應用Linux系統(tǒng)編程、Linux網絡編程、學C++所學的知識編寫一個大并發(fā)服務器
主題
內容
大并發(fā)服務器設計
Mysql編程、Winsock編程、Linux Epoll模型、網絡編程基礎組件封裝
實戰(zhàn)項目
銀行儲蓄系統(tǒng)實現為大并發(fā)、客戶端Windows、服務器端Linux
第七階段(Windows編程)
在Windows操作系統(tǒng)環(huán)境下使用MFC進行圖形化界面編程,運用MFC中的GDI技術進行圖形圖像開發(fā),學習常用的游戲開發(fā)技術。
主題
內容
Windows程序設計
MFC結構,文檔/視圖結構,消息映射,SDI,對話框,常用控件,圖形繪制,常用游戲編程技術
實戰(zhàn)項目
單機版連連看
第八階段(Windows網絡編程)
深入學習Windows多線程、網絡編程。
內容
Windows網絡編程
動態(tài)鏈接庫,內存管理,進程管理,多線程,進程與線程通信與同步(臨界區(qū),互斥量,信號量等),WinSock編程、完成端口等。
實戰(zhàn)項目
網絡對戰(zhàn)平臺(多人連連看)??
主要往三方面去努力:
?
(1)基礎扎實。注重基礎:語言、數據結構與算法、Linux、操作系統(tǒng)等等。
? ? ? ? ? ? ? ? ? ? ? ? 注重手寫代碼能力,有必要重點強化訓練。
(2)課外知識。課外花時間學習了web服務器Nginx,雖然研究得不是很深入,了解基本的架構和重點模塊。只要能保證對于服務器 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 模型有了基本理解即可。
(3)技術博客。多總結,多交流,多分享經驗心得,相互學習,相互幫助。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??





