2024最新首选C/C++开发教程(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)

适合人群:计算机相关专业在校生、转入互联网开发、转后台开发岗位、有C/C++基础、底层原理理解不够深入。

内容:强化理论知识,并以项目运用,项目实现为主导来教学,1对1学习计划,简历书写/面试复盘指导。

【2024|第15代版本Linux C/C++全栈开发合集(职场常用/面试常问技术点+项目实战)】

目录

数据结构与算法

1.红黑树

  • 红黑树的应用场景,进程调度cfs, 内存管理
  • 红黑树的数学证明与推导
  • 手撕红黑树的左旋与右旋
  • .红黑树添加的实现与添加三种情况的证明
  • 红黑树删除的实现与删除四种情况的证明
  • 红黑树的线程安全的做法
  • 分析红黑树工程实用的特点

2.B树与B+树

  • 磁盘结构分析与数据存储原理
  • 多叉树的运用以及B树的定义证明
  • B树插入的两种分裂
  • B树删除的前后借位与节点合并
  • 手撕B树的插入,删除,遍历,查找
  • B+树的定义与实现
  • B+树叶子节点的前后指针
  • B+树的应用场景与实用特点
  • B+树的线程安全做法

3. HashBloomFilterbitmap

  • hash的原理与hash函数的实现
  • hash的应用场景
  • 分布式hash的实现原理
  • 海量数据去重布隆过滤器
  • 布隆过滤的数学推导与证明

设计模式

1.创建型设计模式

  • 单例模式
  • 策略模式
  • 观察者模式
  • 工厂方法模式与抽象工厂模式
  • 原型模式

2.结构型设计模式

  • 适配器模式
  • 代理模式
  • 责任链模式
  • 状态模式
  • 桥接模式
  • 组合模式

c++新特性

1.STL容器,智能指针,正则表达式

  • unordered_map
  • STL容器
  • hash的用法与原理
  • shared_ptrunique_ptr
  • basic_regexsub_match
  • 函数对象模板functionbind

2.新特性的线程,协程,原子操作,lamda表达式

  • atomic的用法与原理
  • thread_ localcondition_ variable
  • 异常处理exception_ ptr
  • 错误处理error_ category
  • coroutine的用法与原理

Linux工程管理

1.Makefile/cmake/configure

  • Makefile的规则与make的工作原理
  • 单文件编译与多文件编译
  • Makefile的参数传递
  • 多目录文件夹递归编译与嵌套执行make
  • Makefile的通配符,伪目标,文件搜索
  • Makefile的操作函数与特殊语法
  • configure生成makefile的原则
  • cmake的写法

2.分布式版本控制git

  • git的工作流程
  • 创建操作与基本操作
  • 分支管理,查看提交历史
  • git服务器搭建

3.Linux系统运行时参数命令

  • 进程间通信设施状态 ipcs
  • Linux系统运行时长 uptime
  • CPU平均负载和磁盘活动 iostat
  • 监控,收集和汇报系统活动 sar
  • 监控多处理器使用情况 mpstat
  • 监控进程的内存使用情况 pmap
  • 系统管理员调优和基准测量工具 nmon
  • 密切关注Linux系统 glances
  • 查看系统调用 strace
  • ftp 服务器基本信息 ftptop
  • 电量消耗和电源管理 powertop
  • 监控mysql的线程和性能 mytop
  • 系统运行参数分析 htop/top/ atop
  • Linux网络统计监控工具 netstat
  • 显示和修改网络接口控制器 ethtool
  • 网络数据包分析利刃 tcpdump
  • 远程登陆服务的标准协议 telnet
  • 获取实时网络统计信息 iptraf
  • 显示主机上网络接口带宽使用情况 iftop

4.vscode gdb 调试

  • vscode gdb 开发环境
  • gdb 调试准备
  • gdb 调试命令详解
  • gdb 多线程调试
  • gdb 附加进程调试
  • gdb core files 调试

网络编程

1.网络ioio多路复用 select/poll/epoll

  • socket 与文件描述符的关联
  • 多路复用 select/poll
  • 代码实现LT/ET的区别

2.事件驱动 reactor

  • reactor 针对业务实现的优点
  • epoll 封装 send_cb/recv_cb/ accept_cb
  • reactor 多核实现
  • 跨平台(select/epoll/kqueue)的封装reactor
  • redismemcachednginx 网络组件

3.http服务器的实现

  • reactor sendbufferrecvbuffer 封装http协议
  • http 协议格式
  • 有限状态机 fsm 解析 http
  • 其他协议 websocket tcp 文件传输

网络原理

1.服务器百万并发实现(实操)

  • 同步处理与异步处理的数据差异
  • 网络 io 线程池异步处理
  • ulimit fd 的百万级别支持
  • sysctl.confrmemwmem 的调优
  • conntrack 的原理分析

2. Posix API 与网络协议栈

  • connectlistenaccept 与三次握手
  • listen 参数 backlog
  • syn 泛洪的解决方案
  • close 与四次挥手
  • 11个状态迁移
  • 大量 close_waittime_wait 的原因与解决方案
  • tcp keepalive 与应用层心跳包
  • 拥塞控制与滑动窗口

3.UDP的可靠传输协议QUIC

  • udp 的优缺点
  • udp 高并发的设计方案
  • qq早期为什么选择 udp 作为通信协议
  • udp 可靠传输原理
  • quic 协议的设计原理
  • quic 的开源方案 quiche
  • kcp 的设计方案与算法原理

协程框架

1.协程设计原理与汇编实现

  • 协程存在的3个原因
  • 同步与异步性能,服务端异步处理,客户端异步请求
  • 协程原语switch, resume, yield,
  • 协程切换的三种实现方式,setjmp/longjmpucontext, 汇编实现
  • 汇编实现寄存器讲解
  • 协程初始启动 eip 寄存器设置
  • 协程栈空间定义,独立栈与共享栈的做法
  • 协程结构体定义

2.协程调度器实现与性能测试

  • 调度器的定义分析
  • 超时集合,就绪队列,io等待集合的实现
  • 协程调度的执行流程
  • 协程接口实现,异步流程实现
  • hook 钩子的实现
  • 协程实现 mysql 请求
  • 协程多核方案分析
  • 协程性能测试

用户态协议栈

1.用户态协议栈设计实现

  • 用户态协议栈的存在场景与实现原理
  • netmap 开源框架
  • eth协议,ip协议,udp协议实现
  • arp协议实现
  • icmp协议实现

2.tcp的原理实现

  • tcp 11个状态实现
  • 滑动窗口与慢启动
  • 重传定时器,坚持定时器
  • time_wait定时器,keepalive定时器

3.应用层posix api的具体实现

  • socket/bind/listen的实现
  • accept实现
  • recv/send的实现

4.手把手设计实现epoll

  • epoll 数据结构封装与线程安全实现
  • 协议栈fd就绪回调实现
  • epoll 接口实现
  • LT/ET的实现

异步io机制

1.io_uring

  • io_uring系统调用io_uring_setupio_ur ing_registerio_uring_enter
  • liburngio_uring的关 系
  • io_uringepoll性能对比
  • io_uring的共享内存机制

2.io_uring的使用场景

  • io_uringacceptconnectrecvsend 实现机制
  • io_uring网络读写
  • io_uring磁盘读写
  • proactor的实现

池式组件

1.手写线程池与性能分析(项目)

  • 线程池的异步处理使用场景
  • 线程池的组成任务队列执行队列
  • 任务回调与条件等待
  • 线程池的动态防缩
  • nginx线程池实现对比分析

2.内存池的实现与场景分析(项目)

  • 内存池的应用场景与性能分析
  • 内存小块分配与管理
  • 内存大块分配与管理
  • 手写内存池,结构体封装与API实现
  • 避免内存泄漏的两种万能方法
  • 定位内存泄漏的3种工具
  • nginx内存池实现

3.mysql连接池的实现(项目)

  • 连接池性能的影响的2个因素,tcp连接和mysql认证
  • 连接请求归还策略
  • 连接超时未归还策略
  • 链接断开重连策略
  • 连接数量最优策略

高性能组件

1.原子操作CAS与锁实现(项目)

  • 互斥锁的使用场景与原理
  • 自旋锁的性能分析
  • 原子操作的汇编实现

2.无锁消息队列实现(项目)

  • 有锁无锁队列性能
  • 内存屏障Barrier
  • 数组无锁队列设计实现
  • 链表无锁队列设计实现

3.网络缓冲区设计

  • RingBuffer设计
  • 定长消息包
  • ChainBuffer设计
  • 双缓冲区设计

4.定时器方案红黑树,时间轮,最小堆(项目)

  • 定时器的使用场景
  • 定时器的红黑树存储
  • 时间轮的实现
  • 最小堆的实现
  • 分布式定时器的实现

5.手写死锁检测组件(项目)

  • 死锁的现象以及原理
  • pthread_mutex_Iock/pthread_mutex_unlock dIsym的实现
  • 有向图的构建
  • 有向图dfs判断环的存在
  • 三个原语操作lock_beforelock_afterunlock_after
  • 死锁检测线程的实现

6.手写内存泄漏检测组件(项目)

  • 内存泄漏现象
  • 第三方内存泄漏与代码内存泄漏
  • mallocfreedIsym 实现
  • 内存检测策略
  • 应用场景测试

7.手把手实现分布式锁(项目)

  • 多线程资源竞争 互斥锁,自旋锁
  • 加锁的异常情况
  • 非公平锁的实现
  • 公平锁的实现

开源组件

1.异步日志方案spdlog (项目)

  • 日志库性能瓶颈分析
  • 异步日志库设计与实现
  • 批量写入与双缓存冲机制
  • 奔溃后的日志找回

2.应用层协议设计ProtoBuf(项目)

  • IM,云平台,nginx,httpredis 协议设计
  • 如何保证消息完整性
  • 手撕 protobuf IM 通信 协议
  • protobuf 序列化与反序列化
  • protobuf 编码原理

Redis

1.Redis 相关命令详解及其原理

  • stringsetzsetlisthash
  • 分布式锁的实现
  • lua脚本解决ACID原子性
  • Redis事务的ACID性质分析

2.Redis协议与异步方式

  • Redis协议解析
  • 特殊协议操作订阅发布
  • 手撕异步redis协议

3.存储原理与数据模型

  • string的三种编码方式 int, raw, embstr
  • 双向链表的list实现
  • 字典的实现,hash函数
  • 解决键冲突与rehash
  • 跳表的实现与数据论证
  • 整数集合实现
  • 压缩列表原理证明

4.主从同步与对象模型

  • 对象的类型与编码
  • 字符串对象
  • 列表对象
  • 哈希对象
  • 集合对象
  • 有序集合
  • 类型检测与命令多态
  • 内存回收
  • 对象共享
  • 对象空转时长
  • redis的3种集群方式主从复制,sentinel, cluster
  • 4种持久化方案

MySQL

1.SQL语句,索引,视图,存储过程,触发器

  • MySQL体系结构,SQL执行流程
  • SQL CURD与高级查询
  • 视图,触发器,存储过程
  • MySQL权限管理

2.MySQL索引原理以及SQL优化

  • 索引,约束以及之间的区别
  • B+树,聚集索引和辅助索引
  • 最左匹配原则以及覆盖索引
  • 索引失效以及索引优化原则
  • EXPLAIN执行计划以及优化选择过程分析

3.MySQL事务原理分析

  • 事务的ACID特性
  • MySQL并发问题 脏读,不可重复读,幻读
  • 事务隔离级别
  • 锁的类型,锁算法实现以及锁操作对象
  • S锁、X锁、IS锁、IX
  • 记录锁,间隙锁,next-key lock
  • 插入意向锁,自增锁
  • MVCC原理剖析

4.MySQL缓存策略

  • 读写分离,连接池的场景以及其局限a
  • 缓存策略问题分析
  • 缓存策略强一致性解决方案
  • 缓存策略最终一致性解决方案
  • 2种mysql 缓存同步方案从数据库与触发器+udf
  • 缓存同步开源方案 go-mysql-transfer
  • 缓存同步开源方案canal原理分析
  • 3种缓存故障,缓存击穿,缓存穿透,缓存雪崩

Kafka

1.Kafka使用场景与设计原理

  • 发布订阅模式
  • 点对点消息传递
  • Kafka Brokers原理
  • TopicsPartition

2.Kafka存储机制

  • Partition存储分布
  • Partition文件存储机制
  • Segment文件存储结构
  • offset查找message
  • 高效文件存储设计

gRPC

1.gRPC的内部组件关联

  • ClientSideServerSideChannelSerivceStub的概念
  • 异步gRPC的实现
  • 回调方式的异步调用
  • ServerClientRPC的实现

2.基于http2gRPC通信协议

  • 基于http协议构造
  • ABNF语法
  • 请求协议Request -Headers
  • gRPC上下文传递

Nginx

1.Nginx反向代理与系统参数配置conf原理

  • Nginx静态文件的配置
  • Nginx动态接口代理配置
  • NginxMqtt协议转发
  • NginxRtmp推拉流
  • OpenrestyRedis缓存数据代理
  • shmem的三种实现方式
  • 原子操作
  • nginx channel
  • 信号
  • 信号量

2.Nginx过滤器模块实现

  • Nginx Filter模块运行原理
  • 过滤链表的顺序
  • 模块开发数据结构ngx_str_tngx_list_tngx_buf_tngx_chain_t
  • error日志的用法
  • ngx_comond_t的讲解
  • ngx_http_module_t的执行流程
  • 文件锁,互斥锁
  • slab共享内存
  • 如何解决"惊群"问题
  • 如何实现负载均衡

3.Nginx Handler模块实现

  • Nginx Handler模块运行原理
  • ngx_module_t/ngx_ http_module_t的讲解
  • ngx_http_top_body_ filter/ngx_http_top_header_filter的原理
  • ngx_rbtree_ t的使用方法
  • ngx_rbtree自定义添加方法
  • Nginx的核心数据结构ngx_cycle_tngx_event_moule_t
  • http请求的11个处理阶段
  • http包体处理
  • http响应发送
  • Nginx Upstream机制的设计与实现
  • 模块性能测试

skynet

1.Skynet设计原理

  • 多核并发编程-多线程,多进程,csp模型,actor 模型
  • actor模型实现-lua服务和c服务
  • 消息队列实现
  • actor消息调度

2.skynet网络层封装以及lua/c接口编程

  • skynet reactor 网络模型封装
  • socket/socketchannel 封装
  • 手撕高性能c服务
  • lua编程以及lua/c接口编程

3.skynet重要组件以及手撕游戏项目

  • 基础接口 skynet.sendskynet.callskynet.response
  • 广播组件 multicastd
  • 数据共享组件 sharedatad datasheet
  • 手撕万人同时在线游戏

分布式API网关

1.网关Openresty

  • Nginxlua模块
  • Openresty访问RedisMySQL
  • Restful API接口开发
  • Openresty性能分析

2.Kong动态负载均衡与服务发现

  • nginxopenrestyKong之间的“苟且”
  • 动态负载均衡的原理
  • 服务发现实现的原理
  • Serverless
  • 监控,故障检测与恢复
  • 代理层缓存与响应服务
  • 系统日志

SPDK

1.SPDK文件系统设计与实现

  • NVMePCle的原理
  • NVMe Controllerbdev之间的rpc
  • blobstoreblob的关系

2.文件系统的posix api实现

  • 4层结构设计vfs
  • spdk的异步改造posix同步api
  • open/write/read/close的实现

3.文件系统的性能测试与承接mysql业务

  • LD_PRELOAD更好mysql系统调用实现
  • iodepth讲解
  • 随机读,随机写,顺序读,顺序写

CUDA

1.gpu并行计算cuda的开发流程

  • cpu+gpu的异构计算
  • 计算机体系结构中的gpu
  • cucda的环境搭建nvccsrun的使 用
  • cuda的向量加法与矩阵乘法
  • MPICUDA

2.音视频编解码中的并行计算

  • cudah264编解码
  • cudampeg编解码
  • ffmpegcuda支持

workflow

1.workflow的应用场景

  • workflow的编程范式与设计理念
  • mysql/redis/kafka/dns的请求实现
  • parallel处理与任务组装

2.workfIow的组件实现

  • 线程池实现
  • DAG图任务
  • msgqueue的实现
  • cjsonparser实现

通信协议 mqtt

1.mqtt的高效使用场景

  • mqtt的发布订阅模式
  • 解决低带宽网络环境的数据传输
  • 3种Qos等级
  • OAuthJWT的安全认证

2.mqttbroker

  • mqtt的遗嘱机制
  • 发布订阅的过滤器
  • mosquittodocker部署
  • mqtt的日志实时监控

Docker

1. Docker内核功能

  • 进程 namespace
  • UTS namespace
  • IPC namespace
  • 网络 namespace
  • 文件系统 namesapce
  • cgroup 的资源控制

2.Docker容器管理与镜像操作

  • Docker镜像下载与镜像运行
  • Docker存储管理
  • Docker数据卷
  • Docker与容器安全

Docker网络管理

  • 5种 Docker 网络驱动
  • pipework 跨主机通信
  • OvS划分vlan与隧道模式
  • GRE实现跨主机Docker间通信

Docker云与容器编排

  • Dockerfile 的语法流程
  • 编排神器 Fig/Compose
  • FIynn体系架构
  • Docker改变了什么?

Kubernetes

1.k8s环境搭建

  • k8s集群安全设置
  • k8s集群网络设置
  • k8s核心服务配置
  • kubectl命令工具
  • yaml文件语法

2.PodService的用法

  • Pod的管理配置
  • Pod升级与回滚
  • DNS服务之于k8s
  • http 7层策略与TLS安全设置

3.k8s集群管理(项目)

  • Node的管理
  • namespace隔离机制
  • k8s集群日志管理
  • k8s集群监控

4.k8s二次开发与k8s API

  • RESTful 接口
  • API 聚合机制
  • API
  • Go访问k8s API

性能与测试工具

1.测试框架gtest以及内存泄漏检测

  • googletestgooglemock 文件
  • 函数检测以及类测试
  • test fixture 测试夹具
  • 类型参数化
  • 事件测试
  • 内存泄漏
  • 设置期望,期待参数,调用次数,满足期望

2.性能工具与性能分析

  • MySQL性能测试工具 mysqlslap
  • Redis性能测试工具 redis-benchmark
  • http性能测试工具wrk
  • Tcp性能测试工具TCPBenchmarks
  • 磁盘,内存,网络性能分析

3.火焰图的生成原理与构建方式

  • 火焰图工具讲解
  • 火焰图使用场景与原理
  • nginx 动态火焰图
  • MySQL 火焰图
  • Redis 火焰图

观测技术bpfebpf

1.内核bpf的实现原理

  • 跟踪,嗅探,采样,可观测的理解
  • 动态hook:kprobe/uprobe
  • 静态hook:tracepointUSDT
  • 性能监控计时器PMC模式
  • cpu的观测taskset的使用
  • BPF工具bpftraceBCC

2.bpf对内核功能的观测

  • 内存观测kmallocvm_area_struct
  • 文件系统观测vfs的状态
  • 磁盘io的观测bitesizemdflush
  • bpf对网络流量的统计
  • bpfredis-server观测
  • 网络观测tcp_connecttcp_accepttcp_close

内核源码机制

1.进程调度机制哪些事儿

  • qemu调试内存
  • 进程调度cfs与其他的四个调度类
  • task_struct结构体
  • RCU机制与内存优化屏障

2.内核内存管理运行机制

  • 虚拟内存地址布局
  • SMP/NUMA模型
  • 页表与页表缓存原理
  • 伙伴系统实现
  • 块分配(Slab/Slub/Slob) 原理实现
  • brk/kmalloc/vmalloc系统调用流程

3.文件系统组件

  • 虚拟文件系统vfs
  • Proc文件系统
  • super_blockinode结构体
  • 文件描述符与挂载流程

分布式数据库

1.不一样的kv存储RocksDB的使用场景

  • 前缀搜索
  • 低优先级写入
  • 生存时间的支持
  • Transactions
  • 快照存储
  • 日志结构的数据库引擎

2.TiDB存储引擎的原理

  • TiKVKey-Value存储引擎
  • 基于RBAC的权限管理
  • 数据加密

3.TiDB集群方案与Replication原理

  • 集群三个组件TiDB ServerPD ServerTiKV Server
  • Raft协议讲解
  • OLTPOLAP

分布式文件系统

1.内核级支持的分布式存储Ceph

  • ceph的集群部署
  • monitorOSD
  • ceph 5个核心组件
  • ceph集群监控
  • ceph性能调调优与benchmark

2.分布式ceph存储集群部署

  • 同步机制
  • 线性扩容
  • 如何实现高可用
  • 负载均衡

分布式协同

1.注册服务中心Etcd

  • etcd配置服务、服务发现、集群监控、leader选举、分布式锁
  • etcd体系结构详解(gRPCWALSnapshotBoItDBRaft)
  • etcd存储原理深入剖析(B树、B+树)
  • etcd读写机制以及事务的acid特性分析
  • raft共识算法详解(leader选举+日志复制)

2.协同事件用户态文件系统fuse(项目)

  • fuse的使用场景
  • 文件系统读写事件
  • fuse的实现原理
  • /dev/fuse的作用

3.P2P框架的实现

  • 网关NAT表分析
  • NAT类型,完全锥型NAT,对称NAT,端口限制锥形NATIP限制锥型NAT
  • 代码逻辑实现NAT类型检测
  • 网络穿透的原理
  • 网络穿透的3种情况

教程地址:https://xxetb.xet.tech/s/3jDmTD

C/C++全栈开发学习资料、大厂面试题、教学视频和 T9学习路线图
↓↓↓↓↓↓见下面文章底部点击免费领取↓↓↓↓↓↓
包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等)

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值