慕K网体系课-C++中高级工程师
无论你在哪个C++领域,越早提升高阶能力,职业发展越好
以工程实践驱动教学,全方位提升“内功,思维,设计,技术”能力
简历指导+1V1答疑+直播答疑等专属服务保障,学习无忧
目录大纲:
阶段一:C++面向对象编程在工程实战中的应用
第1周 课程简介、环境准备及面向对象的精髓
本周介绍本课程的定位、价值和学习本课程需要的准备知识、环境搭建;并通过面试题来介绍面向对象思维的本质及纠正一些对面向对象编程经典错误的理解。
课程安排:
1、本课程的价值、学习的前置知识、学习的目标和注意事项
2、Windows C++环境的搭建
3、Mac C++环境的搭建
4、Linux Ubuntu发行版环境的搭建
5、QT环境的搭建
6、HelloWorld从面向过程编程到面向对象编程的过渡
7、从微软公司的一道面试题来谈从面向过程到面向对象
8、从面向过程编程到面向对象过渡的理论分析
9、面向对象三大特性及实现一个不能被继承的类
10、少用继承及接口继承的使用
11、少用虚函数及函数指针代替虚函数的方案
12、面向对象编程的两个常见错误理解
13、C++避免钻石继承的方法–虚继承
2、Windows C++环境的搭建
3、Mac C++环境的搭建
4、Linux Ubuntu发行版环境的搭建
5、QT环境的搭建
6、HelloWorld从面向过程编程到面向对象编程的过渡
7、从微软公司的一道面试题来谈从面向过程到面向对象
8、从面向过程编程到面向对象过渡的理论分析
9、面向对象三大特性及实现一个不能被继承的类
10、少用继承及接口继承的使用
11、少用虚函数及函数指针代替虚函数的方案
12、面向对象编程的两个常见错误理解
13、C++避免钻石继承的方法–虚继承
第2周 从工程角度从新审视类的构造,赋值等
通过编写MyString类的3个构造、2个赋值和1个析构,从本上解析C++中比较难以理解但又十分重要的一些概念:隐式转换、左值、右值、左值引用、右值引用及C++11重要的特性move语义。
课程安排:
1、怎么实现一个MyString的Class
2、Class的321实现
3、MyString的move基本实现
4、总结–C++面向对象编程对
5、再看类MyString的构造实现
6、防止构造函数的隐式转换类型
7、C++的值类型和引用类型
8、一些重要概念:左值、右值、左值引用、右值引用等;
9、左值右值相关
9、move语义的意义和使用细节
2、Class的321实现
3、MyString的move基本实现
4、总结–C++面向对象编程对
5、再看类MyString的构造实现
6、防止构造函数的隐式转换类型
7、C++的值类型和引用类型
8、一些重要概念:左值、右值、左值引用、右值引用等;
9、左值右值相关
9、move语义的意义和使用细节
第3周 深度剖析对象的建立过程及优化
从最佳工程的角度解析C++对象创建的过程、说明构造函数的本质,RVO的返回值优化、const关键词的优化等。
课程安排:
1、编译器优化与mov的语义的关系及返回值优化
2、返回值优化:RVO和NRVO
3、返回值优化策略的选择
4、const的基本使用
5、const的修饰对象的引用和函数
6、const、mutable和volatile
7、再谈构造函数–什么该做什么不该做
8、再谈构造函数–初始化顺序和参数列表
9、静态成员变量的初始化
10、CPP11中委托构造函数的使用
2、返回值优化:RVO和NRVO
3、返回值优化策略的选择
4、const的基本使用
5、const的修饰对象的引用和函数
6、const、mutable和volatile
7、再谈构造函数–什么该做什么不该做
8、再谈构造函数–初始化顺序和参数列表
9、静态成员变量的初始化
10、CPP11中委托构造函数的使用
第4周 函数和表达式本质
重点解析函数重载、运算符重载;函数对象、lambda和inline函数的本质及它们的使用场景。
课程安排:
1、函数重载
2、重载函数的本质和实现原理
3、运算符重载
4、Rational类的实现
5、Rational类的运算符重载实现
6、函数对象的本质是什么
7、函数内部怎么定义函数–lambda表达式
8、Lambda表达式实现闭包
9、Lambda表达式和函数对象使用的类比
10、Lambda表达式的意义
11、inline内联函数的使用和本质
2、重载函数的本质和实现原理
3、运算符重载
4、Rational类的实现
5、Rational类的运算符重载实现
6、函数对象的本质是什么
7、函数内部怎么定义函数–lambda表达式
8、Lambda表达式实现闭包
9、Lambda表达式和函数对象使用的类比
10、Lambda表达式的意义
11、inline内联函数的使用和本质
第5周 C++内存分配:堆和栈的详细分析
重点解析C++内存管理的细节,堆和栈及C++推崇的资源分配RAII在实际项目中的运用。
课程安排:
1、几道面试题来看堆和栈在内存分配和传递
2、几道面试题来看堆和栈在内存分配和传递2
3、CPP的内存世界划分
4、从一个经典函数错误起谈谈栈空间调试
5、汇编调试基础1
6、汇编调试基础2
7、从汇编角度看程序函数栈和main函数流程1
8、从汇编角度看程序函数栈和main函数流程2
9、从堆栈角度来分析ShellCode和软件安全1
10、从堆栈角度来分析ShellCode和软件安全2
11、C++中资源分配的方式:RAII
12、析构函数为什么是虚函数及RAII的具体使用
13、在异常情况下RAII如何保证资源的顺利释放
2、几道面试题来看堆和栈在内存分配和传递2
3、CPP的内存世界划分
4、从一个经典函数错误起谈谈栈空间调试
5、汇编调试基础1
6、汇编调试基础2
7、从汇编角度看程序函数栈和main函数流程1
8、从汇编角度看程序函数栈和main函数流程2
9、从堆栈角度来分析ShellCode和软件安全1
10、从堆栈角度来分析ShellCode和软件安全2
11、C++中资源分配的方式:RAII
12、析构函数为什么是虚函数及RAII的具体使用
13、在异常情况下RAII如何保证资源的顺利释放
第6周 C++智能指针、异常、new及对象模型
解析在C++中如何实现智能指针、及C++中异常的使用、new运算符的本质及C++对象模型内部真实的结构。
课程安排:
1、怎么实现智能指针
2、C++中常见的智能指针
3、C++中到底该不该用异常
4、怎么用异常
5、new的实现细节,如果new失败了怎么办,工程中怎么处理new
6、从底层分析C++中虚函数的本质
7、C++对象模型初步
8、动态多态和静态多态
9、C++的模板编程
10、C++11中对模板编程的高级支持
2、C++中常见的智能指针
3、C++中到底该不该用异常
4、怎么用异常
5、new的实现细节,如果new失败了怎么办,工程中怎么处理new
6、从底层分析C++中虚函数的本质
7、C++对象模型初步
8、动态多态和静态多态
9、C++的模板编程
10、C++11中对模板编程的高级支持
第7周 实现C++跨平台爬虫实战
利用上面所学的知识结合一些QT的库,完成一个跨平台的C++爬虫程序。
课程安排:
1、爬虫需求分析
2、QT的基本使用,工程创建等
3、QT怎么实现一个简单的跨平台爬虫
4、爬虫的网络类实现
5、爬虫的数据处理和数据存储
6、爬虫的整体逻辑
8、爬虫的测试、存在待改进的问题
2、QT的基本使用,工程创建等
3、QT怎么实现一个简单的跨平台爬虫
4、爬虫的网络类实现
5、爬虫的数据处理和数据存储
6、爬虫的整体逻辑
8、爬虫的测试、存在待改进的问题
阶段二:C++面向对象设计模式精讲
第8周 面向对象设计模式初步及创建型模式
介绍面向对象设计模式的本质、详解实际解决的问题及创建型的设计模式在工程中的运用。
课程安排:
1、面向对象设计模式的定义,什么时候该使用设计模式
2、一个实例说明设计模式的本质
3、面向对象设计模式的分类
4、除了面向对象设计模式,还有什么模式
5、反模式
6、单例模式及单例模式实现的坑
7、单例模式的例子: 日志和全局配置类
8、抽象工厂模式及示例
9、Builder生成器模式及示例
10、工厂方法模式及示例
2、一个实例说明设计模式的本质
3、面向对象设计模式的分类
4、除了面向对象设计模式,还有什么模式
5、反模式
6、单例模式及单例模式实现的坑
7、单例模式的例子: 日志和全局配置类
8、抽象工厂模式及示例
9、Builder生成器模式及示例
10、工厂方法模式及示例
第9周 结构型模式和行为型模式
详解结构型的设计模式和行为型模式在实际工程中的使用场景和运用。
课程安排:
1、适配器模式及示例
2、如何使用适配器模式搭建一个插件体系
3、装饰器模式及示例
4、组合模式及示例
5、代理模式及示例
6、观察者模式及示例
7、各个框架中的观察者模式例举
8、模板方法模式及示例
9、命令模式及示例
10、解释器模式及示例
11、策略模式及示例
12、迭代器模式及示例
13、职责链链模式及示例
14、备忘录模式及示例
15、状态模式及示例
16、访问者模式及示例
2、如何使用适配器模式搭建一个插件体系
3、装饰器模式及示例
4、组合模式及示例
5、代理模式及示例
6、观察者模式及示例
7、各个框架中的观察者模式例举
8、模板方法模式及示例
9、命令模式及示例
10、解释器模式及示例
11、策略模式及示例
12、迭代器模式及示例
13、职责链链模式及示例
14、备忘录模式及示例
15、状态模式及示例
16、访问者模式及示例
第10周 STL和设计模式
通过对C++基础类库STL的架构设计的理解讲述STL的使用和其常见的设计模式。
课程安排:
1、STL的设计架构和思想
2、STL中的常见容器
3、STL中的常见算法
4、STL的设计模式选讲:迭代器模式
5、STL的设计模式选讲:适配器模式
2、STL中的常见容器
3、STL中的常见算法
4、STL的设计模式选讲:迭代器模式
5、STL的设计模式选讲:适配器模式
第11周 QT设计模式和爬虫项目的设计模式版本
通过对QT的架构设计的理解讲述QT常见的设计模式及使用设计模式改进之前的爬虫项目。
课程安排:
1、QT中的信号和槽机制
2、QT事件处理机制
3、QT中的观察者模式和命令模式
4、使用设计模式将爬虫代码进行重构:使用模板方法模式、观察者模式和适配器模式等;
2、QT事件处理机制
3、QT中的观察者模式和命令模式
4、使用设计模式将爬虫代码进行重构:使用模板方法模式、观察者模式和适配器模式等;
阶段三:C++ QT编程
第12周 QT的基础和UI组
介绍QT框架的历史、使用场景、QT的设计思想及QT常见的UI组件如何使用。
课程安排:
1、QT的历史介绍和应用场景
2、QT的对象体系和架构原理
3、QWidget的介绍
4、QT的UI组件和QML介绍
5、QT的常见类库介绍
6、QLayout布局的使用及示例
7、QBoxLayout的使用及示例
8、QGridLayout的使用及示例
9、QMainWindow的使用及示例
10、对话框QDialog的使用及示例
11、QLabel的使用及示例
12、QListView的使用及示例
13、QTreeView的使用及示例
14、 QMenuBar的使用及示例
15 、 QSta ndardItemModelde的使用及示例
16、QAction的使用及示例
17、 QFileSystemModel的使用及示例
2、QT的对象体系和架构原理
3、QWidget的介绍
4、QT的UI组件和QML介绍
5、QT的常见类库介绍
6、QLayout布局的使用及示例
7、QBoxLayout的使用及示例
8、QGridLayout的使用及示例
9、QMainWindow的使用及示例
10、对话框QDialog的使用及示例
11、QLabel的使用及示例
12、QListView的使用及示例
13、QTreeView的使用及示例
14、 QMenuBar的使用及示例
15 、 QSta ndardItemModelde的使用及示例
16、QAction的使用及示例
17、 QFileSystemModel的使用及示例
第13周 QML编程、文件IO和数据库操作
详解QML语言的架构、设计和使用方法、QT的IO和关系数据库的基本使用及在QT中的实战。
课程安排:
1、QML语言概述和基本语法
2、QML元素和属性
3、QML的布局和组件
4、QML的信号和槽机制
5、QML和C++的交互
6、QT的文件和目录操作
7、读写文本文件和二进制文件
8、QT中数据库模块基本使用
9、QT数据库连接和操作
10、SQL查询和结果处理
11、爬虫中使用Sqlite存储数据
2、QML元素和属性
3、QML的布局和组件
4、QML的信号和槽机制
5、QML和C++的交互
6、QT的文件和目录操作
7、读写文本文件和二进制文件
8、QT中数据库模块基本使用
9、QT数据库连接和操作
10、SQL查询和结果处理
11、爬虫中使用Sqlite存储数据
第14周 QT正则表达式及多进程多线程编程
介绍正则表达式的基本使用及在QT中的实现、多进程多线程的基础知识及QT中如何使用多进程多线程进行编程。
课程安排:
1、正在表达式初步
2、正在表达式实践
3、QT中的正则表达式
4、爬虫项目中使用正则表达式进步一匹配进行
5、正在表达式存在问题的探讨
6、操作系统基础、进程、线程的本质
7、僵尸进程、孤儿进程
8、QProcess进程的实践
9、QThread线程实践
10、著名的哲学家问题及解决
11、进程间通信和线程间通信问题
12、QMutex类的使用
13、QSharedMemory类的使用
2、正在表达式实践
3、QT中的正则表达式
4、爬虫项目中使用正则表达式进步一匹配进行
5、正在表达式存在问题的探讨
6、操作系统基础、进程、线程的本质
7、僵尸进程、孤儿进程
8、QProcess进程的实践
9、QThread线程实践
10、著名的哲学家问题及解决
11、进程间通信和线程间通信问题
12、QMutex类的使用
13、QSharedMemory类的使用
第15周 QT网络编程和其他高级编程
详解TCP/IP网络架构、并详解在QT中实现网络编程的方法。
课程安排:
1、QT的网络编程模块
2、网络基础知识
3、TCP和UDP通信协议和原理
4、HTTP协议和HTTPS协议,顺便说说爬虫的理论基础
5、网络数据传输和编解码
6、编码和国际化问题、本地化多语言问题
7、QT动画和过渡效果
8、QT绑定和模型视图编程
9、QT的自定义组件和样式
10、QT的多媒体处理
11、QT对单元测试和自动化测试的支持
2、网络基础知识
3、TCP和UDP通信协议和原理
4、HTTP协议和HTTPS协议,顺便说说爬虫的理论基础
5、网络数据传输和编解码
6、编码和国际化问题、本地化多语言问题
7、QT动画和过渡效果
8、QT绑定和模型视图编程
9、QT的自定义组件和样式
10、QT的多媒体处理
11、QT对单元测试和自动化测试的支持
阶段四:跨平台浏览器项目实战
第16周 项目架构及Kernel部分的开发
分析跨平台浏览器项目的详细设计,并实现核心kernel部分的代码。
课程安排:
1、项目整体设计,各个组件的说明
2、目各个组件的通信方式:User Interface、Kernel、File System、DataBase和Plugin Manager
3、项目中使用的一些设计模式
4、核心逻辑的设计和开发
5、和各个组件接口部分的开发
6、前进、后退的命令模式开发
7、添加、编辑和删除书签
8、下载功能的管理
2、目各个组件的通信方式:User Interface、Kernel、File System、DataBase和Plugin Manager
3、项目中使用的一些设计模式
4、核心逻辑的设计和开发
5、和各个组件接口部分的开发
6、前进、后退的命令模式开发
7、添加、编辑和删除书签
8、下载功能的管理
第17周 UI部分开发
手把手讲解跨平台浏览器项目的UI部分代码的开发。
课程安排:
1、Menu菜单的开发
2、多个Views的布局部分开发
3、View的右击菜单等部分开发
4、URL地址栏开发
5、用户界面定制部分开发
6、多语言功能的保证(英语、汉语)
2、多个Views的布局部分开发
3、View的右击菜单等部分开发
4、URL地址栏开发
5、用户界面定制部分开发
6、多语言功能的保证(英语、汉语)
第18周 浏览器项目DataBase等开发
手把手讲解跨平台浏览器项目DataBase和File System部分的开发。
课程安排:
1、用户数据的表设计
2、用户数据表的存储
3、用户数据数据表的查询、修改和删除
4、添加、编辑和删除书签
5、日志系统的开发
6、cookie管理的开发和设计
7、历史记录部分开发
8、页面缓存的设计和开发
2、用户数据表的存储
3、用户数据数据表的查询、修改和删除
4、添加、编辑和删除书签
5、日志系统的开发
6、cookie管理的开发和设计
7、历史记录部分开发
8、页面缓存的设计和开发
第19周 用户登录和加密部分组件开发
手把手讲解跨平台浏览器项目Plugins Manger部分和爬虫、截图插件部分的开发;并手把手讲解用户登录和加密组件的的开发。
课程安排:
1、Plugins Manager的设计和开发
2、爬虫插件的开发和集成
3、截图插件的开发和集成
4、多用户登录的设计
5、跨平台兼容开发
6、UI交互的开发
7、加密算法的开发
2、爬虫插件的开发和集成
3、截图插件的开发和集成
4、多用户登录的设计
5、跨平台兼容开发
6、UI交互的开发
7、加密算法的开发
第20周 自动化测试用例的开发及其他一些特性
手把手讲解跨平台浏览器项目自动化测试用例的开发;并讲解用广告和云端同步的功能户登录和加密组件的的开发。
课程安排:
1、自动化测试框架编写
2、自动化测试用例设计和开发
3、去广告特性的设计
4、云端服务、多客户端共享数据部分的设计
2、自动化测试用例设计和开发
3、去广告特性的设计
4、云端服务、多客户端共享数据部分的设计
阶段五:系统层知识进阶
第21周 数据表达底层原理和操作系统、进程和线程
深入剖析计算机内部数据和数学的底层原理、操作系统进程、线程的本质和一些常见误区的解释。
课程安排:
1、程序计算和数学计算的区别
2、溢出问题
3、编程中常见的判断错误和死循环问题
4、C++怎么处理大数运算
5、C++指针引发的各种问题举例
6、虚拟内存是什么
7、共享内存是什么
8、C++对进程、线程的支持:thread、process、mutex和condition_variable
9、怎么让进程和线程可控、进程的调度和资源管理
怎么避免死锁
信号量和银行存取款问题
2、溢出问题
3、编程中常见的判断错误和死循环问题
4、C++怎么处理大数运算
5、C++指针引发的各种问题举例
6、虚拟内存是什么
7、共享内存是什么
8、C++对进程、线程的支持:thread、process、mutex和condition_variable
9、怎么让进程和线程可控、进程的调度和资源管理
怎么避免死锁
信号量和银行存取款问题
第22周 网络编程、国际化和数据库操作
详解TCP/IP的一些协议细节、网络数据传递的字节序问题、UTC问题,国际化的处理;详解关系数据库的原理及对未来大数据处理的一些形势分析。
课程安排:
1、TCP/IP编程
2、网络套接字socket编程
3、网络字节序问题
4、编码总结,怎么写出全世界人都可用的软件
5、怎么处理UTC,chrono和ctime的使用
6、关系型数据库和非关系型数据库
7、常见的数据库和数据库管理系统
8、数据库、表、字段等概念
9、SQL语句基础:CURD
10、数据库设计,各种范式简介
11、主键、外键
12、索引
13、视图
14、事务
15、数据查询优化
16、大数据的原理和展望
2、网络套接字socket编程
3、网络字节序问题
4、编码总结,怎么写出全世界人都可用的软件
5、怎么处理UTC,chrono和ctime的使用
6、关系型数据库和非关系型数据库
7、常见的数据库和数据库管理系统
8、数据库、表、字段等概念
9、SQL语句基础:CURD
10、数据库设计,各种范式简介
11、主键、外键
12、索引
13、视图
14、事务
15、数据查询优化
16、大数据的原理和展望
第23周 译系原理解析和C++代码优化
详解编译器的实现原理,并结合编译器知识分析对C++代码优化的逻辑和思路。
课程安排:
1、词法分析Lexical Analysis原理
2、语法分析Syntax Analysis原理
3、语义分析Semantic Analysis原理
4、代码生成Code Generation的全过程
5、C++编译、链接等过程分析
6、编译器优化原理
7、代码优化的思路和基本原则
8、算法的评估和数学原理
9、实例说明数据结构的选择
10、实例说明算法优化
11、空间换时间、时间换空间的示例
12、C++汇编层面代码分析优化,为什么switch的效率比if语句高
2、语法分析Syntax Analysis原理
3、语义分析Semantic Analysis原理
4、代码生成Code Generation的全过程
5、C++编译、链接等过程分析
6、编译器优化原理
7、代码优化的思路和基本原则
8、算法的评估和数学原理
9、实例说明数据结构的选择
10、实例说明算法优化
11、空间换时间、时间换空间的示例
12、C++汇编层面代码分析优化,为什么switch的效率比if语句高
阶段六:C++新特性及就业指导
第24周 C++新特性和就业方向解析
分析C++11还有哪些值得关注的新特性并剖析C++17、20等未来C++语言的发展方向和趋势,指导未来技术和就业方向。
课程安排:
1、auto/decltype关键词的使用
2、C++11的智能指针
3、基于范围的for循环
4、Lambda表达式可能引引起的革命
5、编译时求值:constexpr
6、编译时断言:static_assert
7、C++17的结构化绑定、折叠表达式、if初始化语句
8、C++ 20的Ranges数据序列处理的未来
9、C++ 20的Bit library可能带来的生产力
10、C++ 23、C++26的未来方向
11、C++到底要把自己变成一门什么样的语言
2、C++11的智能指针
3、基于范围的for循环
4、Lambda表达式可能引引起的革命
5、编译时求值:constexpr
6、编译时断言:static_assert
7、C++17的结构化绑定、折叠表达式、if初始化语句
8、C++ 20的Ranges数据序列处理的未来
9、C++ 20的Bit library可能带来的生产力
10、C++ 23、C++26的未来方向
11、C++到底要把自己变成一门什么样的语言
声明:本站所有资源均收集于网络,如果您对资源版权有争议请联系我们,我们会安排下架