網易雲 微專業C++系統工程師
一、學前基礎
1.曾經學過某種程式設計語言(C語言最佳)
2.了解基本的變量、類型、作用域、循環和控制流程;了解基本資料類型(整數、浮點、字元串、數組等)
3.知道如何編譯和連結一個可運作程式
4.了解面向對象更佳(類、封裝、繼承、多态)
請在開班前自行預習免費基礎課程:《程式設計入門—C語言》、《C語言程式設計進階》
二、課程介紹
2.1 C++面向對象進階程式設計(上)
課程時長:3周
課程負載:2.5-3.5小時每周
内容類型:視訊 文檔 随堂測驗 讨論
課程分類:程式設計
程式設計基礎 程式設計語言 技術開發 C++本課程涵蓋,C++對象模型、關鍵機制、優良程式設計風格、記憶體管理,讓學員從一無所知到具備大家風範,讓學員對于C++有更深入的了解和體會,徹底掌握C++的面向對象與底層運作。
2.2 C++面向對象進階程式設計(下)
課程時長:2周
課程負載:2-3小時每周
内容類型:讨論
課程分類**:程式設計
程式設計基礎 程式設計語言 技術開發 C++C++語言博大精深,同時也暗藏各種陷阱,稍有不慎,便會錯誤百出。本課程主要分析C++開發過程中的常見陷阱,它們的幕後原理,以及如何避免這些陷阱的最佳程式設計實踐。
2.3 STL與泛型程式設計
課程時長:5周
課程負載:3-5小時每周
内容類型:視訊 文檔 随堂測驗 富文本 讨論
課程分類:程式設計 程式設計基礎 技術開發
C++标準庫是C++程式員不可或缺的生産工具和技術寶庫。其中的大體量成份,我們稱為STL (Standard Template Library/标準模闆庫),STL之外則是若幹獨立個件或用來與STL搭配的小零件。
2.4 C++設計模式
程式設計基礎 技術開發
C++設計模式(Design Pattern)是軟體開發設計經驗的概括與提煉,它使得軟體開發人員可以友善地複用已經被證明成功的軟體設計方法與思想,是提高程式可讀性、可維護性和可擴充性最有效的手段,也是當代優秀軟體工程師必備的一項素質。課程從設計之道(松耦合設計思想)
和設計之術(重構與疊代式設計)兩方面,通過大量的代碼實踐與演練,深入剖析經典GOF 23種設計模式。
三、課程體系
章節 | 内容 | Notes |
---|---|---|
(1)C++面向對象進階程式設計(上)(必修) | 1.1 C++程式設計簡介 1.2 頭檔案與類的聲明 1.3. 構造函數 1.4. 參數傳遞與傳回值 1.5. 操作符重載與臨時對象 1.6. 複習Complex類的實作過程 1.7. 三大函數:拷貝構造,拷貝複制,析構 1.8. 堆,棧與記憶體管理 1.9. 複習String類的實作過程 1.10. 擴充補充:類模闆,函數模闆,及其 1.11. 組合與繼承 1.12. 虛函數與多态 1.13. 委托相關設計 | Note1 |
(2)C++面向對象進階程式設計(下)(必修) | 2.1. 導讀 2.2. Conversion Function 2.3. non-explicit one argument constructor 2.4. pointer-like classes 2.5. Function-like classes 2.6. namespace經驗談 2.7. class template 2.8. Funtion Template 2.9. Member Template 2.10. specialization 2.11. 模闆偏特化 2.12. 模闆模闆參數 2.13. 關于C++标準庫 2.14. 三個主題 2.15. Reference 2.16. 複合&繼承關系下的構造和析構 2.17. 對象模型:關于vptr和vtbl 2.18. 對象模型:關于this 2.19. 對象模型:關于Dynamic Binding 2.20. 談談const 2.21. 關于New,Delete 2.22. 重載Operator new,operator delete... 2.23. 示例 2.24. 重載new(),delete()$示例 2.25. Basic_String使用new(extra)擴充申請量 | Note2 |
(3)STL與泛型程式設計 | 3.1.認識headers、版本、重要資源 3.2.STL體系結構基礎介紹 3.3.容器之分類與各種測試(一) 3.4.容器之分類與各種測試(二) 3.5.容器之分類與各種測試(三) 3.6.容器之分類與各種測試(四) 3.7.配置設定器之測試 3.8.源代碼之分布 (VC, GCC) 3.9.OOP (面向對象程式設計) vs. GP (泛型程式設計) 3.10.技術基礎: 操作符重載and模闆(泛化, 全特化, 偏特化) 3.11.配置設定器 3.12.容器之間的實作關系與分類 3.13.深度探索list上 3.14.深度探索list下 3.15.疊代器的設計原則和Iterator Traits的作用與設計 3.16.vector深度探索 3.17.array&forward_list深度探索 3.18.deque&queue和 stack深度探索上 3.19.deque&queue和 stack深度探索下 3.20.RB-tree深度探索 3.21.set/multiset深度探索 3.22.map/multimap深度探索 3.23.hashtable深度探索上 3.24.hashtable深度探索下 3.25.hash_set/hash_multiset, hash_map/hash_multimap概念 3.26.unordered容器概念 3.27.算法的形式 3.28.疊代器的分類 (category) 3.29.疊代器分類 (category) 對算法的影響 3.30.算法源代碼剖析 (11個例子) 3.31.仿函數/函數對象 3.32.存在多種Adapter 3.33.Binder2nd 3.34.not1 3.35.bind 3.36.reverse_iterator 3.37.inserter 3.38.ostream_iterator 3.39.istream_iterator 3.40.一個萬用的hash function 3.41.Tuple用例 3.42.Type traits 3.43.Type traits實作 3.44.cout 3.45.moveable元素對于deque速度效能的影響 3.46.測試函數 | Note3 |
(4)C++設計模式 | 4.1.設計模式簡介 4.2.面向對象設計原則 4.3.模闆方法 4.4.政策模式 4.5.觀察者模式 4.6.裝飾模式 4.7.橋模式 4.8.工廠方法 4.9.抽象工廠 4.10.原型模式 4.11.建構器 4.12.門面模式 4.13.代理模式 4.14.擴充卡 4.15.中介者 4.16.單件模式 4.17.享元模式 4.18.狀态模式 4.19.備忘錄 4.20.組合模式 4.21.疊代器 4.22.職責鍊 4.23.指令模式 4.24.通路器 4.25.解析器 4.26.設計模式總結 | Note4 |
(5)C++新标準C++-14(選修) | 5.1.演進、環境與資源 5.2.Variadic Templates 5.3.Spaces in Template Expression、 nullptr and std::nullptr_t、 Automatic Type Deduction with auto 5.4.Unifrom Initialization 5.5.Initializer_list(上) 5.6.Initializer_list(下) 5.7.Explicit for ctors taking more than one argument 5.8.Range-based for statement 5.9.=default, =delete 5.10.Alias Template 5.11.Template template parameter 5.12.Type Alias 5.13.decltype 5.14.lambdas 5.15.Variadic_Templates_1 5.16.Variadic_Templates_2 5.17.Variadic_Templates_3 5.18.Variadic_Templates_4 5.19.Variadic_Templates_5 5.20.Variadic_Templates_6 5.21.Variadic_Templates_7&C++Keywords 5.22.标準庫源代碼分布 5.23.Rvalue references and Move Semantics 5.24.Perfect Forwarding 5.25.寫一個move aware class 5.26.Move-aware class對容器的效能測試 5.27.容器—結構與分類_舊與新的比較 — 關于實作手法 5.28.容器array 5.29.容器Hashtable 5.30.Unordered 5.31.Hash function 5.32.Forward_list 5.33.一個萬用的Hash Function 5.34.Tuple 5.35.shared_pointer 5.36.Type traits | Note5 |
(6)系統設計與實踐(選修) | 6.1.系統設計介紹 6.2.實戰演練(短URL設計) 6.3.系統設計七劍客(上) 6.4.系統設計七劍客(下) 6.5.案例分析 6.6.搭建大規模可擴充系統(一) 6.7.搭建大規模可擴充系統(二) 6.8.搭建大規模可擴充系統(三) 6.9.搭建大規模可擴充系統(四) 6.10.大資料系統 6.11.海量資料處理方法 6.12.海量資料案例1 6.13.海量資料案例2 6.14.資料推薦與案例分析 | Note6 |
Talk is cheap. Show me the code