哈喽,大家好。(硬核C++ 以知乎目录为主)
全平台很全的硬核C++ 终于上架了。
这套教程虽然是C++基础入门课程,但在内容是非常硬核,学完了绝对不会出现做不了项目。
这套课程不仅适用5 - 20K程序员面试,同样也适合20-30K程序员C++基础面试。
既然敢称全平台很全的硬核C++,没点真东西,怎么能行。
这套课程是我精益求精的作品,也是死磕两个月多的作品。将我自己的对C++的认识,每个细节每个重要的点,以及我在入门的时候犯过的错误,全部用视频和案例的方式讲解清楚,希望新人在刚入门就比已经入门的程序员强好几个档次。
在学习本套硬核C++之前,确保通过其他途径已经学会了c语言 或者是 通过我们课程安排 已经学会了手把手入门C语言 到 手把手入门C 标准库 这两套教程。
本课程将默认您已经学过这两套基础课程,我们不会讲解什么是int 怎么包含头文件,怎么安装VS 逻辑运算 遍历等基础内容。而我们会直接讲解C++最核心最硬核的知识,最终让学员发现C++还可以如此高大上的设计和玩法。
好,现在带着大家一起看看具体每个章节在讲解什么:
这一章主要讲解c语言和c++的不同点,因为这两种语言非常相似,在日后的工作中我们会大量接触到这两种语言的项目,这一节对我们以后工作有非常重要的作用;
我们经常说c语言是面向过程,而C++是面向对象,这一章我们开始讲解和对象相关的内容比如什么是类,继承。我们还会讲解重载,操作符重置 ,友元,深拷贝和浅拷贝等;
我们会讲解多态在继承中的运用,多态在类中的运用。怎么理解纯虚函数和虚继承多继承,还有Lambda的用法,我们还会讲解如何将自己写的库打包一个成dll,让其他用户调用,实战多态在第三方库开发应用。同样我们还会讲解C++支持的四种转换,以及const和形参如何搭配来达到高效的传值
前三章 是C++基础,掌握前三章,就已经可以进行实战项目了,也可以看懂基础的UE代码,回答6K以内的C++问题,压力不大。
后面的章节我们开始进入C++进阶以及C++变态式的进阶,真正区别你是不是C++高手,都在我们后面的章节里面。
模板大家都会用,但是如何把它用的非常高级,就需要一定的火候。UE源码和STL源码是模板运用最让我佩服的两个库。这章我会为大家展现如何高大上设计模板。我们会讲解什么是模板元编程,如何利用模板特性来为我们进行服务,如何支持可变参数,什么泛化,什么是特化,什么是偏特化等。
这一章我们会讲解如何处理异常,这一章应该算是C++基础,我们在开发第三方库或者程序或者引擎多多少少都会涉及到异常处理,学习异常处理是非常有必要的。
这一章我们来学习C++的IO流。我们在c语言课程中学了C语言的io流,它的操作繁琐,现在我们来学习C++的IO流,C++的IO流也是封装C语言的IO,因为C语言是底层语言,最终化繁琐为简单,在以后的开发中,我们的IO流风格可以是C++也可以是c语言。
这一章我们可以了解C++的信号,以后在开发程序的过程中我们也会多多少少搭建自己的信号框架,这一章我们会讲解如何使用C++信号
这章主要讲解如何分配内存,在前面的课程中我们学习了c风格的内存分配,这章我们会重点讲解C++的风格的内存分配。如何分配一维数组二维数组三维数组等,同样我们还会讲解预分配内存机制,为什么提出要预分配策略,它到底是干什么的。
这章我们会讲解stl容器,这个是C++提供的标准库,重点会讲解常用的 有序列容器 关联容器 无序容器,其中每个库涉及的API我们会详细讲解,同时我们还进行了容器搭建的实战,如何架构迭代器,如何架构一个二维数组容器,方便学员从底层理解容器,使用容器。
这节我们会讲解多线程。我们会详细讲解std多线程和windows多线程。这两种多线程是不一样的,windows的多线程更底层,std多线程里我们会讲解什么是锁,什么是条件锁,如何同步,如何异步,什么是线程的共享状态,什么是线程唤醒和休眠,如何使用保证和未来等,同样我们会实战开发多线程机制,从底层了解多线程。
这章我们重点讲解什么是代理,什么是仿函数以及std的bind是如何使用,同样我们会带着大家手把手通过模板的特性一起封装一套原始的单播系统,多播系统,从底层了解如何封装代理,如何使用和维护代理系统。并且引升到设计模式等。
智能指针一直是面试考察的重点,这里我们会讲解什么是智能指针,为什么要用它,智能指针的转换,同样我们还会讲解如何架构共享指针还有弱指针,从底层了解智能指针的设计,在我们以后的开发中,会大大增强我们的代码功力。
本章会重点讲解UDP架构和TCP架构,以及常见的网络模式,比如iocp完成端口模式 ,select模式 epoll等,每种模式都会以最简单的案例来进行由浅入深的讲解。我们还会讲解HTTP,Mysql。便于学员搞懂分布式服务器基本上涉及的点和面,为我们的第十四章做准备。
本章是含金量最高的一章,一定要好好听,该章节将会彻底让您搞明白什么是分布式,什么是微服务器。有了这个知识,面试底层架构毫无压力。
我们会教会大家如何架构UDP服务器和TCP服务器,并且实现可以自由切换UDP服务器和TCP服务器的功能,还会讲解如何封装自己的数据流,如何写入和读取字节,如何高大上定义我们的协议,如何实现windows 和 linux平台的兼容 .如何部署到真正的线上物理服务器,如何封装数据库db服务器,如何封装网关服务器,如何封装HTTP服务器等。
不管是架构微服务器或者分布式服务器,只要有这个库,只需要关心业务层,底层完全可以交给这个库。
我们讲解的还不止这些,我们还会讲解反射,如何设计反射框架,同样我们还会和我们的代理进行结合,令我们的通讯库功能更易扩展,功能更加强大。
以上就是我们的课程全部内容
我们一直是以性价比最高,诚意满满的方式来讲解编程的底层知识,这个信念一直不变。
通过这套课程您学会了什么:
1.C++基础
2.模板高级运用
3.容器底层知识
4.智能指针底层架构
5.代理底层架构
6.多线程架构
7.网络通信架构
8.分布式和微服务器
9.反射系统
为什么敢称全网最全硬核C++,这套课程绝对会令您眼前一亮,原来程序还可以这么高大上的玩。
第一章 C++入门
1-1 如何编写一个C++的HelloWorld
1-2 c和c++的bool
1-3 C和C++形参的引用和指针不同
1-4 C和C++结构体函数不同
1-5 C和C++继承不同
第二章 类和对象
2-1 结构体成员权限
2-2 类成员函数
2-3 类成员内联函数
2-4类的继承与成员函数
2-5类的多继承与架构
2-6类的虚继承
2-7友元类
2-8 友元函数
2-9 类构造函数和析构函数
2-10 初始化列表
2-11 this指针
2-12 浅拷贝和深拷贝
2-13 namespace的使用技巧
2-14 重载左移操作符实战cout打印
2-15 重载等号操作符的深拷贝问题
2-16 操作符哪些可以重载哪些不可以
第三章 多态
3-1 重载
3-2 重载在继承中的问题
3-3 虚函数和普通函数调用执行区别
3-4 纯虚函数
3-5 final的用法
3-6 override的用法
3-7 面试必考的虚函数原理精讲
3-8 普通函数内的Lambda技巧
3-9 类函数内的Lambda技巧
3-10 如何封C++库
3-11 如何封C库
3-12 正确理解DLL和lib和exe和pdb
3-13 const_cast
3-14 reinterpret_cast
3-15 dynamic_cast
3-16 static_cast
3-17 const和形参连用进行高效的传值策略
3-18 const和类函数连用的高效策略
第四章 模板
4-1 CPP为什么要引入模板
4-2 函数模板和任意参数结合的高级运用
4-3 类模板
4-4 类模板匹配
4-5 什么是hpp文件
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 通过using循环命名的方式来展开可变参数
4-21 通过工厂来构建任意参数对象
4-22 支持任意参数的简单代理实现
4-23 模板元编程
第五章 异常处理
5-1 认识C++异常处理
5-2 封装任意参数打印异常到Output
5-3 自定义任意异常处理类
5-4 std里面自带的异常处理的讲解
5-5 typeid获取类型的反射信息
第六章 C++IO输入输出流
6-1 基本的输入输出
6-2 C++风格的文件读写
6-3 读写标签
6-4 文件拷贝
第七章 信号
7-1 搭建信号框架
7-2 认识信号类型
第八章 内存分配和预分配内存
8-1 认识new和delete
8-2 new和delete和malloc和free的区别
8-3 new和delete与虚析构的问题
8-4一维数组delete[]和delete区别
8-5 理解二维数组内存创建和删除
8-6 理解三维数组内存创建和删除
8-7 为什么要预分配连续的内存
第九章 STL容器
9-1 什么是stl
9-2 vector初始化方式
9-3 vector内置函数详细讲解
9-4 vector的4种访问方式
9-5 vector常见的算法
9-6 认识C++风格的字符串容器
9-7 string常见函数API
9-8 string查找
9-9 map遍历和插入
9-10 map相关的其他API讲解
9-11 实现一套双向链表遍历和移除
9-12 认识标准库的双向链表
9-13 双向链表的其他API讲解
9-14 queue队列API讲解
9-15 stack栈API讲解
9-16 set API讲解
9-17 forward_list单向链表API讲解
9-18 优先级队列
9-19 哈希是如何保护数据的
9-20 multiset
9-21 multimap
9-22 array预分配内存容器
9-23 实战-实现迭代器和TArray容器
9-24 实战-测试容器遍历和迭代器遍历
9-25 unordered_map
9-26 unordered_multimap
9-27 unordered_set
9-28 unordered_multiset
第十章 多线程
10-1 什么是硬件并发和进程并发和线程并发
10-2 什么是同步什么是异步
10-3 什么是锁什么是死锁
10-4 stdthread线程的API全讲解
10-5 向线程里面传递参数的方法
10-6 互斥锁
10-7 try_lock
10-8如何挂起线程和唤醒线程
10-9 如何将主线程资源移动到其他线程
10-10 lock_guard
10-11 unique_lock
10-12 call_once
10-13 condition_variable
10-14 如何获取其他线程的计算结果
10-15 主线程如何将数据发送到其他的线程
10-16 多线程之间如何共享状态
10-17 packaged_task
10-18 时间约束
10-19 windows-创建线程
10-20 windows-互斥锁
10-21 windows-挂起线程和唤醒线程
10-22 实现 STD的Thread 功能
10-23 实现 互斥锁
10-24 实现 条件变量
10-25 实现 异步
第十一章 代理与绑定
11-1 仿函数的运用
11-2 Bind函数的运用
11-3 代理在设计模式中的作用
11-4 什么是单播代理什么是多播代理
11-5 封装代理
11-6 封装单播代理
11-7 封装多播代理
第十二章 智能指针
12 -1 为什么要用智能指针
12 -2 裸指针和共享指针
12 -3 智能指针的释放和访问
12-4 enable_shared_from_this怎么用
12-5 弱指针
12-6 通过工厂模式理解智能指针的运用
12-7 为什么auto_ptr被废弃
12-8 unique_ptr
12-9 实战-架构共享指针
12-10 实战-架构弱指针
12-11 dynamic_pointer_cast
12-12 const_pointer_cast
12-13 static_pointer_cast
12-14 reinterpret_pointer_cast
第十三章 网络模型
13-1 网络通讯
13-1 icop模型图解
13-2 socket-icop模型
13-3 iocp的客户端链接
13-4 iocp-监视完成端口队列接受数据
13-5 iocp-数据发送和接受
13-6 iocp-线程销毁
13-7 最简单好理解的UDP-服务端搭建
13-8 最简单好理解的UDP-客户端搭建
13-9 最简单好理解的TCP-服务端搭建
13-10 最简单好理解的TCP-客户端搭建
13-11 一节可以完全搞懂TCP和UDP视频
13-12 Select网络模式
13-13 Select实现同一线程里面处理服务器和接受客户端
13-14 Mysql服务器架构原理和数据库部署准备
13-15 通过API访问Mysql数据库
13-16 HTTP-TCP-UDP-FTP-KCP协议讲解
13-17 图解mongoose库的Select原理
13-18 mongoose库的Select模式深入讲解
13-19 解决mongoose库编译bug
13-20 HTTP客户端
13-21 Linux环境搭建
13-22 Linux-epoll 服务器
13-23 Linux-epoll 客户端
第十四章 封装库
14-1 服务器分布式架构
14-2 将代理整合到库
14-3 图解我们的服务器架构原理
14-4 网络驱动架构
14-5 兼容c日志系统和连接架构
14-6 服务器TCP初始化
14-7 客户端TCP初始化
14-8 WinSock2和windows库冲突问题
14-9 服务器如何接受客户端投递
14-10 客户端和服务端的接受和发送
14-11 自定义IO写入流和哈希容器
14-12 模板和协议框架
14-13 对客户端链接的监测
14-14 对象通道
14-15 定义登录和验证协议
14-16 网络对象概念
14-17 什么是反射
14-18 设计反射框架
14-19 反射和代理
14-20 通过反射扩展用户对象
14-21 测试TCP上层自定义对象协议
14-22 全局配置
14-23 服务器UDP初始化
14-24 客户端UDP初始化
14-25 UDP的链接和监听
14-26 测试UDP上层自定义对象协议
14-27 什么是db服务器
14-28 封装Mysql查询
14-29 封装Mysq可以返回结果的查询
14-30 封装Mysql存储类型
14-30 封装Mysql配置
14-31 什么是http服务器
14-32 封装HTTPServer类
14-33 将代理和反射融入系统框架
14-34 封装GET请求
14-35 封装POST请求
14-36 封装PUT请求
14-37 封装DELETE请求
14-38 扩展自定义请求
14-39 封装HTTPClient类
14-40 什么是网关
14-41 网关封装
14-42 定义网关协议
14-43 测试网关
14-44 搭建测试客户端环境
14-45 定制客户端协议
14-46 线上部署分布式服务器
14-47 如何压力测试
14-48 什么是微服务器
14-49 微服务器和分布式
14-50 微架构思想
UE4精品课程