C++程序员技能树
2021-09-19 10:28:31 6 举报
AI智能生成
C++程序技能树,经常会更新。笔者是一名高级C++工程师。
作者其他创作
大纲/内容
C++编程语言
C++语言基础
基础
变量和基础类型
关键字
const/define/mutable/vilatile/const_cast
new和new[]/delete和delete[]
实现原理
new和malloc区别
delete时如何知道释放多少?
有析构函数情况
无析构函数情况
static
explicit
字符串、向量和数组
指针和引用的区别?
表达式
语句
函数
类
构造函数和析构函数能否抛出异常?
C++标准库
IO库
面向对象
继承
虚函数
三大特性
继承
public/protect/private三种继承*三种成员=9种场景
多态
编译器
模板/重载
运行期
虚函数
封装
C++11及以上
智能指针
Lambda表达式
右值引用、移动语义、万能转换(完美转发)、通用引用
移动构造、移动赋值
std::move
universal references
std::forward
《Effective Modern C++》
std::function/std::bind
std::thread
std::regex
《Effective C++》
编程进阶
网络编程
并发
C++对象模型
构造函数
默认构造函数
无用的默认构造函数
两个误解
任何class如果没有定义默认构造函数,就会被合成一个来
默认构造函数会初始化每个成员变量
默认拷贝构造函数
程序转化
构造顺序
初始化列表效率高
数据
成员数据的布局
成员数据的访问
考虑继承
单一继承不含虚函数
单一继承含虚函数
多重继承含虚函数
单个虚继承
多重虚继承
静态绑定和动态绑定
函数
静态成员函数
非静态成员函数
虚函数
内联函数
执行期
内存操作
new
delete
new []
delete[]
数据类型
全局变量和全局静态变量
局部静态变量
局部变量
临时变量
内存区域
分布图
堆和栈的区别
程序库
Boost
asio
Http服务端
入门
《Boost程序库完全开发指南》
STL
空间配置器
一级配置器
二级配置器
内存池
内存基本处理工具
uninitialized_copy
uninitialized_fill
uninitialized_fill_n
迭代器和traits
序列容器
vector
list
deque
stack
queue
heap
priority_queue
关联容器
set
map
multiset
multimap
hashtable
线性探测
二次探测
开链
hash_set
hash_map
hash_multiset
hash_multimap
算法
排序
拷贝
函数对象
配接器
单元测试
Gtest
性能测试
Windows下
Visual Studio
Linux下
valgrind
GPROF
调试
Windows下调试
Visual Studio
windbg
gflags
内存越界
内存泄露
Linux下调试
gdb
数据结构与算法
数据结构
数组(Array)
栈(Stack)
链表(Linked List)
树(Tree)
前缀树
表示方法
数组
map
二叉树
完全二叉树
Binary heap
二叉搜索树(Binary)
平衡二叉搜索树
平衡二叉树
AVLTree
单旋转
双旋转
红黑树
遍历算法
广度优先遍历
深度优先遍历
B-Tree
图(Graph)
拓扑排序
散列表(Hash)
堆(Hrap)
算法
评定
时间复杂度
空间复杂度
通用算法
递归法
穷举法
贪心
分治
动态规划
分支界限
回溯法
排序算法
比较算法
交换排序
冒泡排序
快速排序
选择排序
简单选择排序
堆排序
插入排序
简单插入排序
希尔排序
归并排序
二路归并
多路归并
非比较算法
计数排序
桶排序
基数排序
数据库
SQL
MySQL
索引
索引技术
B-Tree索引
哈希索引
空间索引
全文索引
索引策略
前缀索引
多列索引
聚簇索引
辅助索引
覆盖索引
索引失效
事务
锁
数据库角度
读锁(共享锁)
写锁(更新锁)
排它锁
粒度
表锁
行锁
库锁
程序员角度
乐观锁
悲观锁
ACID
原子性
一致性
隔离性
常见问题
脏读
不可重复读
幻读
读
当前读
快照读
持久性
隔离级别
Read Uncommited
Read Commited
Repeatable Read
Serializable
MVCC
实现
隐藏字段
读视图
高低水位
undo log
可见性
备份与恢复
主备
高可用
共享存储
块复制
主从热备
备份
备份对象
完全备份
增量备份
部分备份
备份方式
mysqldump
cp tar
lvm2 快照
xtrabackup
日志
redo log
bin log
总体架构
Server层
引擎层
InnoDB
MyISAM
MemoryDB
redis
数据结构和对象
对象
字符串
简单动态字符串(SDS)
int
列表
双向链表
压缩列表
字典
hash表
rehash
压缩列表
集合
整数集合
hash表
有序集合
跳跃表
压缩列表
单机数据库
数据库
结构
删除策略
定时删除
定期删除
惰性删除
通知
持久化
RDB
AOF
为什么要持久化
事件
客户端
多机数据库
主从
主备
部分重同步
Sentinel
监控原理
集群
槽
一致性哈希
故障转移
独立功能
发布订阅
事务
分布式锁
加锁方式
常见问题
常见问题
缓存击穿
缓存雪崩
缓存穿透
不一致问题
子主题
兴趣爱好
经济学
书籍
《宏观经济学》
《微观经济学》
《穷爸爸富爸爸》
《小狗钱钱》
《激荡十年,水大鱼大》
保险
医疗险
意外险
重疾险
寿险
养老险
心理学
管理学
自我管理
《自控力》
《高效能人士的七个习惯》
团队管理
《卓有成效的管理者》
行业知识
《浪潮之巅》
《人月神话》
音乐
乐器
弦乐器
小提琴
中提琴
大提琴
低音提琴
管乐器
木管
短笛
长笛
单簧管
双簧管
巴松管
铜管
小号
圆号
低音号
长号
打击乐器
木琴
鼓
铁三角
键盘乐器
钢琴
电子琴
流派
古典音乐(Classical)
作品形式
协奏曲(Concerto)
夜曲(Nocturnes))
歌剧(Opera)
谐谑曲(Scherzos)
小夜曲(Serenade)
奏鸣曲(Sonata)
医学
腰间盘突出
病因
症状
治疗
保守治疗
药物消炎
针灸
推拿
卧床休息
微创手术
胶原酶腰椎间盘溶解术
臭氧消融术
AD射频热凝靶点消融术
椎间孔镜术
开放手术
后期保养
戒烟
渐进式
断崖式
药物
尼古丁贴
尼古丁糖
酒石酸伐尼克兰片
书籍
《这本书可以让你戒烟》
app
戒烟军团
感冒
一些知识
着凉并不会导致感冒
风热风寒是中医的概念,大概对应西医的病毒性感染和细菌性感染
种类
普通感冒
症状
1、病程5-7天,不发热
治疗
1、没有炎症不需要复用抗菌药物。抗生素无法治疗病毒性感冒。
2、基本不需要用药,用药也是缓解症状而不是根治,如阿司匹林和乙酰氨基酚可治疗头痛或发热
3、多喝水多休息
4、如继发细菌感染,需要用药,比如青霉素、头孢、大环内酯类、费喹诺酮
5、两周没好或病情严重需要去医院
2、基本不需要用药,用药也是缓解症状而不是根治,如阿司匹林和乙酰氨基酚可治疗头痛或发热
3、多喝水多休息
4、如继发细菌感染,需要用药,比如青霉素、头孢、大环内酯类、费喹诺酮
5、两周没好或病情严重需要去医院
病因
病毒如鼻病毒、冠状病毒
流感
症状
1、病程5-10天,易发热39+,高烧不退
2、易引起并发症如中耳炎、肺炎等
2、易引起并发症如中耳炎、肺炎等
治疗
1、抗病毒药物如金刚烷胺、奥司他韦、
病因
流感病毒(RNA病毒)
半月板
美食
厨具
刀
酒
调料
酱油
生抽
老抽
味极鲜
蒸鱼豉油
盐
鸡精&味精
醋
米醋
陈醋
白醋
酒
料酒
啤酒
白酒
酱
豆瓣酱
甜面酱
番茄酱
芝麻酱
耗油
香料
干辣椒
花椒&麻椒
八角
胡椒
黑胡椒
白胡椒
香叶
桂皮
小茴香
孜然
五香粉
油
分类
菜籽油
花生油
玉米油
葵花籽油
猪油
橄榄油
芝麻油
牛油
工艺
压榨法
浸出法
糖
架构
架构模式
分层
分割
分布式
集群
缓存
异步
冗余
安全
自动化
架构要素
性能
可用性
可伸缩
负载均衡算法
一致性哈希
可扩展
安全性
中间件
kafka
计算机网络
物理层
RJ45
IEEE802.3
设备
中继器
集线器
数据链路层
以太网协议
设备
交换机
网桥
网络层
IP
Internet地址结构
ABCDE五类地址
ABC三类私有地址
广播地址、组播地址、受限广播地址
子网划分
ICMP
ARP
设备
路由器
三层交换机
传输层
TCP
流量控制
拥塞控制
快重传快恢复
三次握手和四次挥手
状态转换
粘包和拆包问题
UDP
应用层
HTTP
连接管理
串行连接
并行连接
keep-alive
持久连接
管道化连接
代理
《HTTP权威指南》
报文
状态码
报文格式
常见头部
HTTP/2
《HTTP2基础教程》
HTTPS
与HTTP对比
连接建立
加密方法
对称加密
AES
DES
非对称加密
RSA
信息摘要
数字签名
证书
秘钥交换
Websocket
DNS
DHCP
操作系统
概述
中断
多核单处理器
对称多处理器(SMP)
进程
进程
与线程的关系与区别
进程状态
进程描述
操作系统的控制结构
内存表
I/O表
文件表
进程表
进程映像
程序
数据
栈
进程控制块(PCB)
进程标识信息
进程状态信息
进程控制信息
进程控制
创建
切换
中断机制
中断
时钟中断
I/O中断
内存失效
陷阱
系统调用
模式切换
状态切换
执行模式
进程通信
管道
FIFO
消息队列
信号量
共享内存
套接字
信号
线程
分类
用户级线程
内核级线程
混合式线程
线程通信
互斥锁
读写锁
递归锁
条件变量
std::future
soket
线程切换与进程切换的代价
进程调度
调度类型
长程调度
中程调度
短程调度
调度算法
先来先服务(FIFO,非抢占)
轮转(抢占)
最短进程优先(SPN,非抢占)
最短剩余时间(SRT,SPN的抢占版本)
最高响应比(HRRN,非抢占)
反馈(抢占)
死锁
发生条件
互斥
不可抢占
占有且等待
循环等待
死锁避免
一次获取所有锁
避免嵌套锁,如果拥有一个锁,就不改再获取锁
以固定顺序获取锁
占有锁时避免调用用户代码,因为用户代码可能会申请锁
内存
虚拟内存
伙伴系统
分页
分级页表
倒排页表
TLB
分段
段页式
置换算法
最佳(OPT)
最近最少使用(LRU)
先进先出(FIFO)
时钟(CLOCK)
空闲分区分配算法
首次适配
最佳适配
最坏适配
I/O
IO缓冲
磁盘
磁盘调度
FIFO
最短时间优先SSTF
SCAN
C-SCAN
RAID
RAID0
RAID1
RAID5
RAID6
文件系统
Ext2
目录树
Ext3、Ext4
XFS
日志型文件系统
Linux
Shell脚本
常用命令
网络编程
常识
端口
time_wait
字节序
TCP套接字
客户端
soket
bind
connect
write
read
close
shutdown
服务端
soket
bind
listen
accept
read
write
close
shutdown
UDP套接字
客户端
soket
sendto
recvfrom
close
服务端
soket
bind
recvfrom
sendto
POSIX信号处理
SIGTERM信号
SIGCHLD信号
SIGKILL
SIGPIPE
SIGIO
多进程
fork
I/O模型
阻塞式I/O模型
非阻塞I/O模型
I/O复用模型
select
poll
epoll
LT
ET
信号驱动模型
异步IO模型
内核
体系结构
用户态和内核态
用户空间和内核空间
软件设计
设计模式
工厂模式
简单工厂(Simple Factory)
工厂方法(Factory Method)
抽象工厂(Abstract Factory)
策略模式
适配器模式
单例模式
原型模式(ProtoType)
观察者模式(Observer)
代理模式(Proxy)
模板方法模式(Template Method)
建造者模式(Builder)
外观模式
组合模式
享元模式
桥接模式
装饰模式
备忘录模式
中介者模式
责任链模式
状态模式
设计原则
开闭原则
里氏替换原则
依赖倒置原则
单一职责原则
接口隔离原则
迪米特法则
合成复用原则
其他技能
Java
PHP
Python
Go
分布式
前端
《HTML5与CSS3基础教程》
《JavaScript高级程序设计》
0 条评论
下一页
为你推荐
查看更多