C++程序员内功修炼——Linux C/C++编程技术汇总

在软件开发的宏大版图中,C++ 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C++ 与 Linux 相结合,就如同为开发者配备了一把无坚不摧的利刃,能够在系统级编程、高性能计算、游戏开发等诸多领域披荆斩棘。对于 C++ 程序员而言,掌握 Linux 环境下的 C/C++ 编程技术,不仅仅是提升自身技能的关键一步,更是在激烈的职场竞争中脱颖而出的必备法宝。这就好比一位武林高手,不仅要熟练掌握各种招式,更要修炼深厚的内功。而 Linux C/C++ 编程技术,就是 C++ 程序员的 “内功心法”。

在日常开发中,我们常常会遇到各种挑战:如何优化代码性能,让程序运行得更加高效?怎样利用多线程技术,充分发挥多核处理器的优势?如何与底层系统进行交互,实现更强大的功能?这些问题,都能在 Linux C/C++ 编程技术的世界中找到答案。接下来,就让我们一同踏上这趟 Linux C/C++ 编程技术的探索之旅,从基础语法到高级应用,从文件操作到网络编程,从多线程处理到内存管理,全方位地深入学习,修炼 C++ 程序员的深厚 “内功”。无论你是初出茅庐的编程新手,还是经验丰富的开发老兵,相信都能在这篇文章中收获满满,为自己的编程之路注入强大的动力。

本文福利, 免费领取C++学习资料包、技术视频/代码,1000道大厂面试题,内容包括(C++基础,网络编程,数据库,中间件,后端开发,音视频开发,Qt开发)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓QQqun:1106675687

一、C/C++ Linux全栈开发

大厂标准 , 面试常问, 工作常用技术栈;手写代码实现:sdpk文件系统,dpdk用户态协议栈,异步网络库zvnet ,协程,io_uring,Nginx,bpf,线程池,内存池,连接池,原子操作,ringbuffer,定时器,死锁检测,分布式锁,日志,probuf,kafka,grpc,udp可靠传输;上线项目:KV存储项目,图床项目,即时通讯项目,内网穿透channel,魔兽游戏项目等。

1.1精进基石专栏

(1)数据结构与算法

  • 随处可见的红黑树

  • 红黑树的应用场景进程调度cfs,内存管理

  • 红黑树的数学证明与推导

  • 手撕红黑树的左旋与右旋

  • 红黑树添加的实现与添加三种情况的证明

  • 红黑树删除的实现与删除四种情况的证明

  • 红黑树的线程安全的做法

  • 分析红黑树工程实用的特点

  • 磁盘存储链式的B树与B+树

  • 磁盘结构分析与数据存储原理

  • 多叉树的运用以及B树的定义证明

  • B树插入的两种分裂

  • B树删除的前后借位与节点合并

  • 手撕B树的插入,删除,遍历,查找

  • B+树的定义与实现

  • B+树叶子节点的前后指针

  • B+树的应用场景与实用特点

  • B+树的线程安全做法

  • 海量数据去重的abhloriter bitap

  • hash的原理与hash函数的实现

  • hash的应用场景

  • 分布式hash的实现原理

  • 海量数据去重布隆过滤器

  • 布隆过滤的数学推导与证明

(2)设计模式

  • 创建型设计模式

  • 单例模式

  • 策略模式

  • 观察者模式

  • 工厂方法模式与抽象工厂模式

  • 原型模式

  • 结构型设计模式

  • 适配器模式

  • 代理模式

  • 责任链模式

  • 状态模式

  • 桥接模式

  • 组合模式

(3)c++新特性

  • stI容器,智能指针,正则表达式

  • unordered_ _map

  • stl容器

  • hash的用法与原理

  • shared_ ptr,unique_ ptr

  • basic_ regex,sub_ match

  • 函数对象模板function, bind

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

  • atomic的用法与原理

  • thread_ local 与condition_ var iable

  • 异常处理exception_ _ptr

  • 错误处理error _ category

  • coroutine的用法与原理

(4)Linux工程管理

  • Makefi le/ cmake/conf igure

  • Makefile的规则与make的工作原理

  • 单文件编译与多文件编译

  • Makefile的参数传递

  • 多目录文件夹递归编译与嵌套执行make

  • Makefile的通配符,伪目标,文件搜索

  • Makefile的操作函数与特殊语法

  • configure生成makefile的原则

  • cmake的写法

  • 分布式版本控制git

  • git的工作流程

  • 创建操作与基本操作

  • 分支管理,查看提交历史

  • git服务器搭建

  • Linux系统运行时参数命令

  • 进程间通信设施状态ipcs

  • Linux系统运行时长upt ime

  • CPU平均负载和磁盘活动iostat

  • 监控,收集和汇报系统活动sar

  • 监控多处理器使用情况mpstat

  • 监控进程的内存使用情况pmap

  • 系统管理员调优和基准测量工具nmon

  • 密切关注Linux系统glances

  • 查看系统调用strace

  • ftp服务器基本信息ftptop

  • 电量消耗和电源管理powertop

  • 监控mysq| 的线程和性能mytop

  • 系统运行参数分析htop/top/atop

  • Linux网络统计监控工具netstat

  • 显示和修改网络接口控制器ethtool

  • 网络数据包分析利刃tcpdump

  • 远程登陆服务的标准协议teInet

  • 获取实时网络统计信息iptraf

  • 显示主机上网络接口带宽使用情况iftop

(5)gdb调试

  • vscode远程连接Linux

  • vscode gdb开发环境设置

  • gdb调试概述

  • gdb调试准备

  • gdb调试命令详解

  • gdb多线程调试

  • gdb附加进程调试

  • gdb core fles调试

1.2高性能网络设计专栏

(1)网络编程异步网络库zvnet

  • 网络io与io多路复用select/poll/epoll

  • socket与文件描述符的关联

  • 多路复用select/poll

  • 代码实现LT/ET的区别

  • 事件驱动reactor的原理与实现

  • reactor针对业务实现的优点

  • poll封装send_ cb/recv_ _cb/ accept_ _cb

  • reactor多核实现

  • 跨平台(select/epoll/kqueue)的封装reactor

  • redis,memcached, nginx网 络组件

  • http服务器的实现

  • reactor sendbuffer与recvbuffer封装http协议

  • http协议格式

  • 有限状 态机fsm解析http

  • 其他协议websocket, tcp文件传输

(2)网络原理

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

  • 同步处理与异步处理的数据差异

  • 网络io线程池异步处理

  • ulimit的fd的百万级别支持

  • sysctI. conf的rmem与wmem的调优

  • conntrack的原理分析

  • Posix API与网络协议栈

  • connect,listen, accept与三次握 手

  • listen参数backlog

  • syn泛洪的解决方案

  • close与四次挥手

  • 11个状态迁移

  • 大量close_ wait与time wait的原因与解决方案

  • tcp keepalive与 应用层心跳包

  • 拥塞控制与滑动窗口

  • UDP的可靠传输协议QUIC

  • udp的优缺点

  • udp高并发的设计方案

  • qq早期为什么选择udp作为通信协议

  • udp可靠传输原理

  • quic协议的设计原理

  • quic的开源方案quiche

  • kcp的设计方案与算法原理

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

  • 调度器的定义分析

  • 超时集合,就绪队列,io等待集合的实现

  • 协程调度的执行流程

  • 协程接口实现,异步流程实现

  • hook钩子的实现

  • 协程实现mysql请求

  • 协程多核方案分析

  • 协程性能测试

(3)自研框架:基于dpdk的用户态协议栈的实现(已开源)

  • 用户态协议栈设计实现

  • 用户态协议栈的存在场景与实现原理

  • netmap开源框架

  • eth协议,ip协议, udp协议实现

  • arp协议实现

  • icmp协议实现

  • 应用层posix api的具体实现

  • socket/bind/listen的实现

  • accept实现

  • recv/send的实现

  • 滑动窗口/慢启动讲解

  • 重传定时器,坚持定时器,time_ wait定时器,keepalive定时器

  • 手把手设计实现epoll

  • epoll数据结构封装与线程安全实现

  • 协议栈fd就绪回调实现

  • epoll接口实现

  • LT/ET的实现

  • 高性能异步io机制io_ _uring

  • 与epo1l媲美的io_ uring

  • io_ _uring系统调用io_ _uring_ setup, io_ _ur ing_ register, io_ _ur ing_ enter

  • liburng的io_ uring的关系

  • io_ uring与epoll性能对比

  • io_ _uring的共享内存机制

  • io_ uring的使用场景

  • io_ ur ing的accept, connect, recv, send实现机制

  • io_ uring网络读写

  • io_ uring磁盘读写

  • proactor的实现

  • windows异步机制iocp(以下为新增)

  • iocp完成端口的工作机制

  • iocp的精髓重叠io

  • iocp处理维护连接以及连接上的收发数据

  • iocp多线程处理方案

1.3基础组件设计专栏

(1)池式组件

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

  • 线程池的异步处理使用场景

  • 线程池的组成任务队列执行队列

  • 任务回调与条件等待

  • 线程池的动态防缩

  • 扩展: nginx线程池实现对比分析

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

  • 内存池的应用场景与性能分析

  • 内存小块分配与管理

  • 内存大块分配与管理

  • 手写内存池,结构体封装与API实现

  • 避免内存泄漏的两种万能方法

  • 定位内存泄漏的3种工具

  • 扩展:nginx内存池实现

  • mysq|连接池的实现(项目)

  • 连接池性能的影响的2个因素,top连接和mysq|认证

  • 连接请求归还策略

  • 连接超时未归还策略

  • 链接断开重连策略

  • 连接数量最优策略

(2)高性能组件

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

  • 互斥锁的使用场景与原理

  • 自旋锁的性能分析

  • 原子操作的汇编实现

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

  • 有锁无锁队列性能

  • 内存屏障Barrier

  • 数组无锁队列设计实现

  • 链表无锁队列设计实现

  • 网络缓冲区设计

  • RingBuffer设计

  • 定长消息包

  • ChainBuffer 设计

  • 双缓冲区设计

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

  • 定时器的使用场景

  • 定时器的红黑树存储

  • 时间轮的实现

  • 最小堆的实现

  • 分布式定时器的实现

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

  • 死锁的现象以及原理

  • pthread_ _mutex_ lock/pthread_ _mutex_ _unlock dIsym的实现

  • 有向图的构建

  • 有向图dfs判断环的存在

  • 三个原语操作 lock before, lock_ after, unlock_ after

  • 死锁检测线程的实现

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

  • 内存泄漏现象

  • 第三方内存泄漏与代码内存泄漏

  • malloc与free的dIsym实现

  • 内存检测策略

  • 应用场景测试

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

  • 多线程资源竞争互斥锁

  • 自旋锁

  • 加锁的异常情况

  • 非公平锁的实现

  • 公平锁的实现

(3)开源组件

  • 异步日志方案spdlog (项目)

  • 日志库性能瓶颈分析

  • 异步日志库设计与实现

  • 批量写入与双缓存冲机制

  • 崩溃后的日志找回

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

  • IM, 云平台,nginx, http, redis协议设计

  • 如何保证消息完整性

  • 手撕protobuf IM通信 协议

  • protobuf序列化与反序列化

  • protobuf编码原理

1.4中间件开发专栏

(1)Redis

  • Redis相关命令详解及其原理

  • string,set, zset, Iist,hash

  • 分布式锁的实现

  • Lua脚本解决ACID原子性

  • Redis事务的ACID性质分析

  • Redis协议与异步方式

  • Redis协议解析

  • 特殊协议操作订阅发布

  • 手撕异步redis协议

  • 存储原理与数据模型

  • string的三种编码方 式int, raw, embstr

  • 双向链表的list实现

  • 字典的实现,hash函数

  • 解决键冲突与rehash

  • 跳表的实现 与数据论证

  • 整数集合实现

  • 压缩列表原理证明

  • 主从同步与对象模型

  • 对象的类型与编码

  • 广字符串对象

  • 列表对象

  • 哈希对象

  • 集合对象

  • 有序集合

  • 类型检测与命令多态

  • 内存回收

  • 对象共享

  • 对象空转时长

  • redis的3种集群方式主从复制,sentinel, cluster

  • 4种持久化方案

(2)MySQL

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

  • MySQL体系结构,SQL执行流程.

  • SQL CURD与高 级查询

  • 视图,触发器,存储过程

  • MySQL权限管理

  • MySQL索引原理以及SQL优化

  • 索引,约束以及之间的区别

  • B+树,聚集索引和辅助索引

  • 最左匹配原则以及覆盖索引

  • 索引失效以及索引优化原则

  • EXPLAIN执行计划以及优化选择过程分析

  • MySQL事务原理分析

  • 事务的ACID特性

  • MySQL并发问题脏读,不可重复读,幻读

  • 事务隔离级别

  • 锁的类型,锁算法实现以及锁操作对象

  • S锁X锁|S锁IX锁

  • 记录锁,间隙锁,next-key lock

  • 插入意向锁,自增锁

  • MVCC原理剖析

  • MySQL缓存策略

  • 读写分离,连接池的场景以及其局限a

  • 缓存策略问题分析

  • 缓存策略强一致性解决方案

  • 缓存策略最终一致性解决方案

  • 2种mysql缓存同步方案从数据库与触发器+udf

  • 缓存同步开源方案go-mysql-transfer

  • 缓存同步开源方案canal原理分析

  • 3种缓存故障,缓存击穿,缓存穿透,缓存雪崩

(3)Kafka

  • Kafka使 用场景与设计原理

  • 发布订阅模式

  • 点对点消息传递

  • Kafka Brokers原 理

  • Topi cs和Partition

  • Kafka存 储机制

  • Partition存储分布

  • Partition文件存储机制

  • Segment文件存储结构

  • offset查找message

  • 高效文件存储设计

  • 微服务之间通信基石gRPC

  • gRPC的 内部组件关联

  • CI ientS ide与ServerSide, Channel, Ser ivce, Stub的概念

  • 异步gRPC的实现

  • 回调方式的异步调用

  • Server 与CI ient对RPC的实现

  • 基于http2的gRPC通信协议

  • 基于http协 议构造

  • ABNF语法

  • 请求协议Request-Headers

  • gRPC上下文传递

(4)Nginx

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

  • Nginx静态文件的配置

  • Nginx动态接口代理配置

  • Nginx对Mqtt协议转发

  • Nginx对Rtmp推拉流

  • Openresty对Redis缓存数据代理

  • shmem的三种实现方式

  • 原子操作

  • nginx channel

  • 信号

  • 信号量

  • Nginx过滤 器模块实现

  • Nginx Filter模块运行原理

  • 过滤链表的顺序

  • 模块开发数据结构 ngx_str_t,ngx_ list_ t,ngx_ buf_ t,ngx_ chain_ t

  • error日志的用法

  • ngx_ comond_ t的讲解

  • ngx_http_module_t的执行流程

  • 文件锁,互斥锁

  • slab共享内存

  • 如何解决 "惊群”问题

  • 如何实现负载均衡

  • 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_ t,ngx_ event. _moule_ t

  • http请求的11个处理阶段

  • http包体处理

  • http响应发送

  • Nginx Upstream机制的设计与实现

  • 模块性能测试

1.5开源框架专栏

(1)游戏服务器开发skynet (录播答疑)

  • Skynet设计原理

  • 多核并发编程-多线程,多进程,csp模型,actor模型

  • actor模型实现-lua服务和c服务

  • 消息队列实现

  • actor消息调度

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

  • skynet reactor 网络模型封装

  • socket/ socketchanne|封装

  • 手撕高性能c服务

  • lua编程以及lua/c接口编程

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

  • 基础接口 skynet. send, skynet. cal I, skynet. response

  • 广播组件multicastd

  • 数据共享组件 sharedatad datasheet

  • 手撕万人同时在线游戏

(2)分布式API网关

  • 高性能web网关Openresty

  • Nginx与lua模块

  • Openresty访问Redis,MySQL

  • Restful API接口开发

  • Openresty性能分析

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

  • nginx,openresty, Kong之间的“苟且”

  • 动态 负载均衡的原理

  • 服务发现实现的原理

  • Serverless

  • 监控,故障检测与恢复

  • 二代理层缓存与响应服务

  • 系统日志

(3)SPDK助力MySQL数据落盘, 让性能腾飞(基础设施)

  • SPDK文件系统设计与实现

  • NVMe与PCle的原理

  • NVMe Controller 与bdev之间的rpc

  • blobstore与blob的关系

  • 文件系统的posix api实现

  • 4层结构设计vfs

  • spdk的 异步改造posix同步api

  • open/wr ite/read/close的实现

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

  • LD_ PRELOAD更好mysql系统调用实现

  • iodepth讲解

  • 随机读,随机写,顺序读,顺序写

(4)高性能计算CUDA (录播答疑)

  • gpu并行计算cuda的开发流程

  • cpu+gpu的异构计算

  • 计算机体系结构中的gpu

  • cuda的环境搭建nvcc 与srun的使用

  • cuda的向量加法与矩阵乘法

  • MPI与CUDA

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

  • cuda的h264编解码

  • cuda的mpeg编解码

  • ffmpeg的cuda支持

(5)并行计算与异步网络引擎workflow

  • workflow的应用场景

  • workflow的编程范式与设计理念

  • mysq/redis/kafka/dns的请求实现

  • parallel处理与任务组装

  • workf low的组件实现

  • 线程池实现

  • DAG图任务

  • msgqueue的实现

  • 纯c的jsonparser实现

(6)物联网通信协议mqtt的实现框架mosquitto

  • mqtt的高效使用场景

  • mqtt的 发布订阅模式

  • 解决低带宽网络环境的数据传输

  • 3种Qos等级

  • 0Auth与JWT的安全认证

  • mctt的broker

  • mqtt的遗嘱机制

  • 发布订阅的过滤器.

  • mosqujitto的docker部暑

  • matt的日志实时监控

(7)ZeroMQ

  • 消息队列与ZeroMQ的应用

  • REQ/REP模型原理分析

  • PUB/SUB模型原理分析

  • PUSH/PULL模型原理分析

  • Router/Dealer模型原理分析

  • ZeroMQ源码分析 :消息模型的实现

  • 消息模型.

  • 消息传递模式

  • 消息分帧

  • 中间层代理

  • 消息丢失处理

  • ZeroMQ源码分析:网络机制与性能分析

  • 零拷贝技术

  • 消息高水位标记

  • 无锁队列

  • 可靠性设计

1.6云原生专栏

(1)Docker

  • Docker风光下的内核功能(录播答疑)

  • 进程namespace

  • UTS namespace

  • IPC namespace

  • 网络namespace

  • 文件系统namesapce

  • cgroup的资源控制

  • Docker容器管理与镜像操作(录播答疑)

  • Docker镜像下载与镜像运行

  • Docker存储管理

  • Docker数据卷

  • Docker与容器安全

  • Docker网络管理(项目)

  • 5种Docker网络驱动

  • pipework跨主机通信

  • 0vS划分vlan与隧道模式

  • GRE实现跨主机Docker间通信

  • Docker云与容器编排 (项目)

  • Dockerfile的语法流程

  • 编排神器Fig/Compose

  • FIynn体系 架构

  • Docker改变了什么?

(2)Kubernetes

  • k8s环境搭建(录播答疑)

  • k8s集群安全设置

  • k8s集群网络设置

  • k8s核心服务配置

  • kubectI命令工具.

  • yam|文件语法

  • Pod与Service的用法 (录播答疑)

  • Pod的管理配置

  • Pod升级与回滚

  • DNS服务之于k8s

  • http 7层策略与TLS安全设置

  • k8s集群管理的那些事儿(项目)

  • Node的管理

  • namespace隔离机制

  • k8s集群日志管理

  • k8s集群监控

  • k8s二次开发与k8s API (项目)

  • RESTful接口

  • API聚合机制

  • API组

  • Go访问k8s API

1.7性能分析专栏

(1)性能与测试工具

  • 测试框架gtest以及内存泄漏检测(录播答疑)

  • goog letest与goog lemock文件

  • 函数检测以及类测试

  • test fixture测试夹具

  • 类型参数化

  • 事件测试

  • 内存泄漏

  • 设置期望,期待参数,调用次数,满足期望

  • 性能工具与性能分析(录播答疑)

  • MySQL性能测试工具mysqlslap

  • Redis性能测试工具redis-benchmark

  • http性能测试工具wrk

  • Tcp性能测试工具TCPBenchmarks

  • 磁盘,内存,网络性能分析

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

  • 火焰图工具讲解

  • 火焰图使用场景与原理

  • nginx动态火焰图

  • MySQL火焰图

  • Redis火焰图

(2)观测技术bpf与ebpf(原有的内容增加)

  • bpftrace的实现原理

  • 跟踪,嗅探,采样,可观测的理解

  • 动态hook : kprobe/uprobe

  • 静态hook : tracepoint和USDT

  • cpu的观测taskset的使用

  • bpf对tcp请求的监控(项目)

  • bpf对网络流量的统计

  • 网络观测tcp _connect, tcp_accept,tcp _close

  • tcp_v4_ _connect与tp_v6 connect的探测点

  • struct sock的五元获取

  • bpf实现对goroutine的探测(项目)

  • go webserver的实现

  • uprobe应用层挂载点

  • bpf的ringbuffer原理

  • bpf探测java的垃圾回收(项目)

  • 运行时进程maps /proc/pid/maps

  • libjvm.so信息

  • bpf的usdt的使用

  • java gc的耗时

(3)内核源码机制

  • 进程调度机制哪些事儿

  • qemu调试内存

  • 进程调度cfs与 其他的四个调度类

  • task_ struct结构体

  • RCU机制与内存优化屏障

  • 内核内存管理运行机制

  • 虚拟内存地址布局

  • SMP/NUMA模型

  • 页表与页表缓存原理

  • 伙伴系统实现

  • 块分配(SIab/SIub/Slob) 原理实现

  • brk/kmalloc/vmalloc系统调用流程

  • 文件系统组件

  • 虚拟文件系统vfs

  • Proc文件系统

  • super_ _block与 inode结构体

  • 文件描述符与挂载流程

1.8分布式架构专栏

(1)分布式数据库

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

  • 前缀搜索

  • 低优先级写入

  • 生存时间的支持

  • Transact i ons

  • 快照存储

  • 日志结构的数据库引擎

  • TiDB存储引擎的原理

  • TiKV的Key-Value存储引擎

  • 基于RBAC的权限管理

  • 数据加密

  • TiDB集群方案与Replication原理

  • 集群三个组件 TiDB Server, PD Server, TiKV Server

  • Raft协议讲解

  • OLTP与0LAP

(2)分布式文件系统(录播答疑)

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

  • ceph的集群部署

  • monitor与OSD

  • ceph 5个核心组件

  • ceph集群监控

  • ceph性能调调优与benchmark

  • 分布式ceph存储集群部署

  • 同步机制

  • 线性扩容

  • 如何实现高可用

  • 负载均衡

(3)分布式协同

  • 注册服务中心Etcd

  • etcd配置服务、服务发现、集群监控、leader选举、 分布式锁

  • etcd体系结构详解(gRPC, WAL,Snapshot、 BoItDB、 Raft)

  • etcd存储原理深入剖析(B树、B+树)

  • etcd读写机制以及事务的acid特性分析

  • raft共识算法详解(leader选举+日志复制)

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

  • fuse的使用场景

  • 文件系统读写事件

  • fuse的实现原 理

  • /dev/fuse的 作用

  • 快播核心技术揭秘P2P框架的实现(录播答疑)

  • 网关NAT表分析

  • NAT类型,完全锥型NAT,对称NAT,端口限制锥形NAT,IP限制锥型NAT

  • 代码逻辑实现NAT类型检测

  • 网络穿透的原理

  • 网络穿透的3种情况

(4)分布式监控Prometheus(新增)

  • Prometheus监控系统

  • 数据模型: Metric、Time Series、Sample和label

  • 指标类型 : Counter、Gauge、Histogram、Summary

  • 采集规则和警告规则

  • PromQL查询语言

  • Prometheus对MySQL/Redis的监控

  • Mysql Redis Exporter安装配置

  • go实现自定义应用程序指标

  • PromQL计算Mysq|、 Redis性能指标

  • Prometheus数据远程存储

  • Prometheus数据采集

  • 6种采集点配置方式

  • 动态重写目标采集点

  • Grafana可视化监控仪表盘

  • Prometheus构建企微与邮件的状态告警

  • 邮件和企微的接入

  • Alertmanager配置 与容器化运行

  • 警告信息的分组

1.9上线产品项目(基础架构、从零构建)

(1)dkvstore实现(上线项目,从零构建)

  • kv存储的架构设计

  • 存储节点定义

  • tcp server/client

  • hash数据存储

  • list数据存储

  • skiptable数据存储

  • rbtree数据存储

  • 网络同步与事务序列化

  • 序列化与反序列化格式

  • 建立事务与释放事务

  • 线程安全的处理

  • KV存储的性能测试

  • 网络测试tps

  • 吞吐量测试

  • go, lua, java多语言支持

  • hash/I ist/skiptable/rbtree测试

(2)zrpc的实现(上线项目,从零构建)

  • rpc使用场景与架构设计

  • 分布式核心调度业务

  • 网络与业务分离

  • 网络选型reactor, 协程,io_ uring

  • rpc的协议与序列化

  • json定义函数

  • 数据序列化

  • rpc处理流程

  • rpc的内存池的特性

  • rpc代码自动生成器的实现

  • 调用接口模式统一化

  • float与double调用的差异

  • 第三方语言的支持

  • 性能测试与业务上线

(3)PHS 高性能网关服务(上线项目,从零构建)

  • PHS后端框架构建

  • reactor事件模型

  • 核心的组成部分以及实现

  • 框架基础功能实现

  • 以PHS后端基础组件实现

  • 线程池封装实现

  • 定时器模块实现

  • 高性能web的内存池特性

  • PHS访问静态网页

  • opensssI引入

  • http协议实现

  • 静态资源管理

  • 性能测试与部署上线

(4)DPDK的数据包测试仪(测试工具开发,从零构建)

  • 测试仪架构设计与使用场景

  • 使用场景与测试方案

  • 多核与多线程亲缘性

  • 测试仪使用的命令行参数

  • 协议流组织

  • arp数据组织

  • udp数据包

  • top的syn, rst, fin, ack包

  • icmp协议组织

  • 异常情况与测试标准

  • 异常命令行参数的处理

  • 异常网络数据包的处理

  • cpu与内存不足的异常处理

1.10上线产品项目(开源项目、框架迭代)

(1)SPDK助力MySQL数据落盘,让性能腾飞(基础设施)

  • SPDK文件系统设计与实现

  • NVMe与PCle的原理

  • NVMe Controller 与bdev之间的rpc

  • blobstore与blob的关系

  • 文件系统的posix api实现

  • 4层结构设计vfs

  • spdk的异步改造posix同步api

  • open/wr ite/read/c lose的实现

  • 文件系统的性能测试与承接mysq|业务

  • LD_ PRELOAD更 好mysql系统调用实现

  • iodepth讲解

  • 随机读,随机写,顺序读,顺序写

(2)魔兽世界后端TrinityCore (上线项目,迭代开发)

  • TrinityCore开发调试环境安装

  • linux开发调试环境安装

  • windows开发调试环境安装

  • SRP-6登录协议介绍

  • 基于openresty实现web注册服务

  • TrinityCore 中高性能基础组件应用

  • to高性能定时器方案设计

  • to线程模型以及锁、无锁队列应用

  • 数据库连接池设计

  • 日志库的设计

  • TrinityCore 高性能网络模块设计

  • boost. asio跨平台网络库

  • boost. asio核心命名空间以及异步io接口

  • boost. asio在to中的封装

  • 网络库应用实践

  • TrinityCore 游戏技能模块设计

  • 技能模块设计

  • 技术配置以及数据库表设计

  • 技能模块组成部分

  • 技能生成、处理以及生命周期管理

  • 暴风雪、背击等技能实现详解

  • 游戏AI模块设计

  • Al模块实现层次

  • Al模块三种细分方向以及选择

  • 固定Al设计实现以及幼狼AI案例讲解

  • 脚本Al设计实现以及BossAl案例讲解

  • 游戏副本模块设计

  • 副本模块:管理、匹配、积分结算逻辑实现

  • 副本模块实现的抽象,层次

  • 战歌峡谷副本实现

  • 阿拉希盆地副本实现

(3)网络数据包过滤firewall (从零构建)

  • firewall内核空间netfilter架构设计

  • 内核空间设计与实现分析

  • 设计数据包传递参数值

  • 封装端口及IP规则类型

  • 设计检测规则/IP/协议函数

  • firewall内核空间架构实现

  • 检测规则/IP/协议函数实现

  • 检查权限及规则函数实现

  • 数据包出入站过滤器实现

  • 读写规则/检查规则匹配实现

  • 删除规则/模块加载和知裁

  • firewall用户空间架构设计

  • 用户空间设计与实现分析

  • 设计数据包传递参与宏

  • 封装端口及|P规则类型

  • firewall 应用程序调试与上线

  • Hook入口函数设计与实现

  • IP/掩码/端口函数实现

  • 协议类型/解析/删除规则

  • 用户层访问及bug处理

  • 用户程序测试及调试技巧

(4)BPF网络数据包探测器(从零构建)

  • 监控探测仪的场景与架构设计

  • bpf.c实现tcp数据包探测

  • bpf.c解析tcp与http

  • 内核与应用层的通信数据格式

  • tc数据流记录存储

  • kv存储构建发送与接收的key-value

  • http请求实现集中式存储

  • 数据流记录表关系

  • 测试上线与前端显示

  • 内核与应用程序的通信测试

  • kv的存储测试

  • 数据流记录表的qps测试

  • 前端显示与上线

1.11上线产品项目(产品运营、从零落地)

(1)图床共享云存储(上线项目,从零构建)

  • fastdfs架构分析和配置

  • fastdfs架构分析

  • 快递配查fastdfs

  • 上传文件逻辑分析

  • 下载文件逻辑分析;

  • 文件传输和接口设计

  • 数据库设计

  • 图床接口设计

  • reactor网络模型构建

  • 注册/登录/我的文件功能实现

  • 分布式fastdfs存储集群部署和HTTP上传

  • storage存储原理分析.

  • 上传下载原理

  • 实现文件上传功能

  • 相同文件内容只保存一份

  • 图片分享和短链服务实现

  • 图片分享功能实现

  • 图片分享数据库设计

  • 长链转短链机制

  • Redis缓存优化

  • 分布式FastDFS存储集群部署

  • FastDFS集群部署

  • FastDFS同步原理

  • binlog机制

  • 水平扩容

  • 图床功能查漏补缺

  • 产品上云公网发布/测试用例

  • 使用云服务器的各种坑分析

  • postman模拟请求

  • wrk测试接口吞吐量

  • jmeter压力测试

(2) GitHub仓库话题聊天室(上线项目,迭代开发)

  • 项目框架分析和部暑

  • GitHub话题聊天室需求分析

  • 话题聊天室架构

  • 后端服务部署

  • Web部署

  • 接口设计与实现

  • HTTP RESTful API原 理

  • MySQL用户表设计

  • redis缓存token

  • 客户端缓序token

  • 固定话题聊天实现

  • websocket连按用户校验

  • 话题/用户映射表结构设计

  • 聊天发布到服务器

  • redis缓存房间在线人员

  • 服务器广播新消息

  • 聊天记录拉取设计与实现

  • MySQL消息表设计

  • 聊天消息存储

  • 分页拉取聊天消息

  • 登录自动拉取最新消息

  • 黑名单实现

  • 文件服务器和docker部署

  • 在线文件传输机制分析

  • 离线文件传输机制分析

  • etcd微服务注册与发现

  • docker制作与部署

  • 产品上云公网发布/公网测试上线

  • 单元测试案例

  • testbench如何设计

  • M项目性能压测

  • 定制私有功能

  • 拓展新功能(代码)

  • 云服务器部暑

(3)云原生内网穿透channel (上线项目,从零构建)

  • 系统设计以及frp开源项目

  • 项目背景与需求分析

  • 系统设计与数据库设计

  • frp TCPMUX代理与httpconnect复用器

  • frp ssh. http、https内网穿透

  • frp AuthServerConfig token鉴 权

  • 应用管理与应用配置

  • ssh、http、https等类型的应用维护

  • 应用程序端口分配以及配置生成

  • 导出应用配置为yaml格式的配置文件

  • go客户端实现Swarm集群应用的部署与更新

  • Docker启用TLS客户端访问

  • go客户端根据时间戳创建服务配置

  • go客户端检查并创建overlay网络

  • go客户端设置私有注册中心权限

  • go客户端创建并更新应用服务

  • vite/vue/elementUI实现前端页面

  • Vue组件化开发与ElementUI

  • Typescr ipt的interface的应用

  • axios实例与拦截器.

  • get与post请求封装

  • 配置文件与api调用

  • 自动化域名解析与Swarm集群Tunne|服务部暑

  • 自动化域名解析与域名备注

  • 服务的部署与客户端配置的返回

  • Tunne |服务的容器化部署与更新

  • Tunnel客户端配置部署Tunne|客户端程序

  • certbot生成道配符证书用于Tunnel应用

二、音视频流媒体高级开发

本套学习路线让你全面掌握音视频基础,深入探讨FFmpeg实战,详细讲解编码解码技术,精通流媒体客户端与服务端开发,深入掌握WebRTC实战,并通过Android NDK和IOS音视频扩展实战技能。让你全面掌握音视频处理技术,从基础到高级,从理论到实践,让你成为音视频领域的专家!

2.1音视频基础

(1)音频基础知识

  • 如何采集声音-模数转换原理

  • 为什么高品质音频采样率>=44.1 Khz

  • 什么是PCM

  • 一个采样点用多少位表示

  • 采样值用整数还是浮点数表示

  • 音量大小和采样值大关系

  • 多少个采样点作为一-帧数据

  • 左右通道的采样数据如何排列

  • 什么是PCM (脉冲编码调制)

  • 音频编码原理

(2)视频基础知识

  • RGB彩色原理

  • 为什么需要YUV格式

  • 什么是像素

  • 分辨率、帧率、码率

  • YUV数据存储格式区别

  • YUV内存对齐问题

  • 为什么画面显示绿屏

  • H264编码原理

  • H264IPB帧的关系

注:具体H264编码格式见FFmpeg章节

(3)解复用基础知识

  • 什么是解复用,比如MP4格式

  • 为什么需要不同的复用格式

  • MP4/FLV/TS

  • 常见的复用格式MP4/FLV/TS

注:具体复用格式详解见FFmpeg章节

(4)FFmpeg开发环境搭建

  • Windows、Ubuntu、MAC3三大平台

  • QT安装

  • FFmpeg命令行环境

  • FFmpeg API环境

  • FFmpeg编译

  • vs2019安装(win平台)

(5)音视频开发常用工具

  • Medialnfo,分析视频文件

  • mp4box,分析mp4

  • VLC播放器,播放测试

  • audacity,分析音频PCM

  • EasyICE,分析TS流

  • Elecard_ streamEye, 分析H264

  • flvAnalyser,分析FLV

  • 海康YUVPlayer,分析YUV

2.2FFmpeg实战

(1)FFmpeg命令

  • 音频PCM/AAC文件提取

  • 视频YUV/H264文件提取

  • 解复用、复用

  • 音视频录制

  • 视频裁剪和合并

  • 图片/视频转换

  • 直播推流和拉流

  • 水印/画中画/九宫格滤镜

(2)SDL跨平台

  • 多媒体开发库实战

  • SDL环境搭建

  • SDL事件处理

  • SDL线程处理

  • 视频YUV画面渲染

  • 音频PCM声音输出

注: SDL兼容Win、Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出

(3)FFmpeg基石精讲

  • FFmpeg框架

  • FFmpeg内存引|用计数模型

  • 解复用相关AVFormat XXX等

  • 编解码相关AVCodec XXX等

  • 压缩数据AVPacket

  • 未压缩数据AVFrame

  • FFmpeg面向对象思想

  • Packet/Frame数据零拷贝

注:目的熟悉FFmpeg常用结构体和函数接口

(4)FFmpeg过滤器

  • FFmpeg过滤chain框架

  • 音频过滤器框架

  • 视频过滤器框架

  • 多路音频混音amix

  • 视频水印watermark

  • 视频区域裁剪和翻转

  • 视频添加logo

(5)FFmpeg音视频解复用+解码

  • 解复用流程

  • 音频解码流程

  • 视频解码流程

  • FLV封装格式分析

  • MP4封装格式分析

  • FLV和MP4 seek有什么区别

  • 为什么FLV格式能用于直播

  • 为什么MP4不能用于直播

  • MP4能否用来做点播

  • AAC ADTS分析

  • H264 NALU分析

  • AVIO内存输入模式

  • 音频重采样实战

  • 重采样后的数据播放时长是否一致

  • 重采样后PTS如何表示

  • 视频解码后YUV内存对齐问题

  • 音频解码后PCM排列格式问题

  • 硬件解码dxva2/nvdec/cuvid/qSV

  • 硬件gpu数据转移到cpu

  • H265解码

注: FFmpeg API学习:视频解复用->解码->编码->复用合成视频

(6)ffplay播放器

  • 掌握ffplay.c的意义

  • ffplay框架分析

  • 解复用线程

  • 音频解码线程

  • 视频解码线程

  • 声音输出回调

  • 画面渲染时间间隔

  • 音频重采样

  • 画面尺寸格式变换

  • 音频、视频、外部时钟同步区别

  • 以视频为基准时音频重采样补偿

  • 音量静音、调节大小的本质

  • 音视频packet队列大小限制

  • 音视频packet队列线程安全

  • 音视频frame队列大小限制

  • 音视频frame队列线程安全

  • 暂停、播放实现机制

  • seek播放导致的画面卡住问题.

  • seek播放数据队列、同步时钟处理

  • 如何做到逐帧播放

  • 播放器退出的流程要点

注: ffplay.c是ffplay命 令的源码,掌握fplay对于我们自己开发播放器有事半功倍的效果

(7)FFmpeg音视频编码+复用合成视频

  • AAC音频编码

  • H264视频编码

  • PCM+ YUV复用合成MP4/FLV

  • H264编码原理

  • IDR帧和帧区别

  • 动态修改编码码率

  • GOP间隔参考值

  • 复用合成MP4音视频不同步问题

  • 编码、复用timebase问题

  • MP4合成IOS不能播放问题

  • 重采样后PTS如何表示

  • 视频编码YUV内存对齐问题

  • 硬件编码dxva2/nvenc/cuvid/qsv

  • H265编码原理

  • H264、H265编码互转

(8)ffmpeg多媒体

  • 视频处理工具

  • 掌握fmpeg.c的意义

  • ffmpeg框架分析

  • 音视频编码

  • 封装格式转换

  • 提取音频

  • 提取视频.

  • logo叠加

  • 音视频文件拼接

  • filter机制

  • 命令行解析流程

  • MP4转FLV不重新编码逻辑

  • MP4转FLV重新编码逻辑

  • MP4转FLV scale

注: ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的大体框架对于我们要实现一些不知道怎么编写代码的功能(用ffmepg命令行可以但不知道怎么调用ffmpeg api时可以参考ffmepg.c的逻辑)有极大的帮助,比如要裁剪视频长度。

(9)FFmpeg+ QT播放器

  • 常见开源播放器分析

  • CUVID/D3D11VA硬解

  • 界面和播放核心分离框架分析

  • 音量频谱展示

  • 播放器模块划分

  • 音频均衡器

  • 解复用模块

  • 画面旋转、翻转

  • 音视频解码

  • 画面亮度、饱和度调节

  • 播放器控制

  • 画面4:3 16:9切换

  • 音视频同步

  • 码流信息分析

2.3流媒体客户端

(1)RTMP推拉流项目实战

  • RTMP协议分析

  • wireshark抓包分析

  • H264 RTMP封装

  • AAC RTMP封装

  • RTMP拉流实战

  • H264 RTMP解析

  • AAC RTMP解析

  • RTMP推流实战

  • 0没有MetaData能否播放

  • RTMP推流是否会导致延迟

  • RTMP推流如何动态调整码率

  • RTMP推流如何动态调整帧率

  • RTMP拉流是否会导致延迟

  • 如何检测RTMP拉流延迟

  • 如何解决RTMP播放延迟

  • ffplay. vlc能否用来测试播放延迟

  • ffplay、vlc能否用来测试播放延迟

  • RTMP拉流播放变速策略设置

(2)RTSP流媒体实战

  • RTSP协议分析

  • RTP协议分析

  • H264 RTP封装

  • H264 RTP解析

  • AAC RTP封装

  • AAC RTP解析

  • RTCP协议分析

  • RTSP流媒体服务器搭建

  • RTSP推流实战

  • RTSP拉流实战

  • wireshark抓包分析

  • RTP头部序号的作用

  • RTCP的NTP和RTP的TS的区别

  • RTP头部序号的作用

  • RTCP的NTP和RTP的TS的区别

  • RTSP交互过程

  • 花屏可能的原因

  • SPS PPS如何发送

  • SDP封装音视频信息

(3)HLS拉流分析

  • HLS协议分析

  • HLS拉流实战

  • HTTP协议分析

  • FFmpeg HLS源码分析

  • TS格式分析

  • HLS多码率机制

  • m3u8文件解析

  • 如何解决HL S延迟高的问题

  • wireshark抓包分析

注:理解HL .S的拉流机制,有助于我们解决HL .S播放延迟较高的问题

2.4流媒体服务器

(1)SRS源码剖析协程

  • 整体框架分析

  • 连接和协程的关系

  • RTMP推流分析

  • 如何更快速掌握SRS源码

  • RTMP拉流分析

  • 流媒体服务器是否导致延迟

  • HLS拉流分析

  • 如何降低流媒体服务器的延迟

  • HTTP-FLV拉流分析

  • 怎么获取流媒体服务器推流信息

  • FFmpeg转码分析

  • 怎么获取流媒体服务器拉流信息

  • 首屏秒开技术分析

  • 首屏秒开能降低延迟吗

  • forward集群源码分析

  • 推流->服务器转发->拉流延迟分析

  • edge集群源码分析

  • 负载均衡部署方式

注:对于SRS流媒体服务器,我们长期更新,从3.0->4.0->5.0

(2)ZLMediaKit源码剖析

  • 整体框架分析

  • 数据转发模型

  • 线程模块划分

  • SDP解析

  • RTSP推流连接处理

  • RTP H264解析

  • RTSP拉流连接处理

  • RTP AAC解析

注: ZLMediaKit主要讲解RTSP流媒体服务器相关的模块,其他模块RTMP/HLS等参考SRS。

2.5WebRTC项目实战

(1)WebRTC中级开发手把手写代码

  • WebRTC通话原理分析

  • WebRTC开发环境搭建

  • coturn最佳搭建方法

  • 如何采集音视频数据

  • 一对一通话时序分析

  • 信令服务器设计

  • SDP分析

  • Candidate类型分析

  • Web-对一通话

  • Web和Android通话

  • AppRTC快速演示

  • 如何设置编码器优先级

  • 如何限制最大码率

  • 信令服务器的本质是什么

  • Web和Android的SDP差异

  • A要和B通话, A怎么知道B的存在

  • 新增C++、IOS客户端两大版本

注:学习WebRTC建议从web端入手,可以直接调用js接口(千万别刚接触WebRTC就忙着去编译WebRTC源码) , 对WebRTC通话流程有清晰的理解再考虑其他端。

(2)WebRTC高级开发-SRS 4.0/5.0源码分析

  • RTMP转发WebRTC逻辑

  • WebRTC转发RTMP逻辑

  • WebRTC音视频一对一通话

  • WebRTC多人通话

  • WebRTC SFU模型分析

  • SRTP分析

  • RTCP分析

  • SDP分析

  • NACK分析

  • turn分析

  • stun分析

  • 拥塞控制算法

  • FEC

  • jitter buffer

(3)WebRTC高级开发-MESH模型多人通话

  • 自定义摄像头分辨率

  • 码率限制

  • 调整编码器顺序

  • Mesh模型多方通话分析

  • 多人通话信令服务器开发

  • 动态分配stun/turn服务器

  • Web客户端源码

  • Android客户端源码

(4)WebRTC高级开发-Janus SFU模型多人通话

  • Janus框架分析

  • Janus信令设计

  • 基于Janus实现会议系统

  • Janus Web客户端源码分析

  • Janus Android客户端源码分析

  • Janus Windows客户端源码分析

  • 基于Full ICE的部署

  • 基于Lite ICE的部署

  • Full ICE和Lite ICE的区别

  • 发布订阅模型

1.6Android NDK

(1)Android NDK开发基础

  • So库适配总结

  • GDB调试技巧

  • Makefile_ I程组织

  • CMake工程组织

  • 生成指定CPU平台的so库

  • JNI基础和接口生成

  • JNI Native层构建Java对象

  • JNI异常处理

(2)Android FFmpeg编译和应用

  • 编译x264

  • 编译x265

  • 编译mp3

  • 编译fdk-aac

  • 编译FFmpeg

  • 使用ffmpeg实现mp4转格式

  • 使用FFmpeg开发播放器

(3)Android RTMP推拉流

  • RTMP推流协议实现

  • RTMP拉流协议实现

  • RTMP拉流音视频同步

  • MediaCodec硬件编码

  • MediaCodec硬件解码

  • OpenSL ES播放音频数据

  • MediaCodec硬件解码

  • OpenGL ES Shader显示视频

(4)Android Ijkplayer源码分析

  • 编译jkplayer和实践

  • 项目框架分析

  • 播放状态转换

  • 拉流分析

  • 解码分析

  • 音频播放流程

  • 视频渲染流程

  • OpenSL ES播放音频数据

  • MediaCodec硬件解码

  • OpenGL ES Shader显示视

  • 变速播放实现原理

  • 低延迟播放实现

  • 缓存队列设计机制分析

1.7IOS音视频开发

(1)IOS FFmpeg6.0编译和应用

  • xcode调试FFmpeg

  • IOS调用FFmpeg

  • QT调试FFmpeg

(2)IOS FFmpeg RTMP推拉流

  • AVFoundation视频采集

  • Metal视频渲染

  • Audio Unit音频采集

  • Audio Unit音频播放

  • FFmpeg推流

  • FFmpeg拉流

  • 直播延迟和解决方法

(3)VideoToolbox硬件编解码

  • VideoToolbox框架的流程

  • 硬件编解码步骤

  • CVPixelBuffer解析

  • 如何获取SPS/PPS信息

  • 判断是否关键帧

  • 编码参数优化

(4)IOS jkplayer编译和应用

  • 本地视频播放

  • RTMP拉流播放

  • HTTP点播

  • 音频播放流程

  • 视频渲染流程

(5)IOS ijkplayer编译和应用

  • 基于Mesh一对一通话

  • 基于SFU多人通话

1.8音视频项目实战

(1)0voice播放器

支持播放/暂停,上一/下一视频,变速播放,文件seek播放进度显示,截屏,调节音量,播放列表,显示缓存时间实现直播低延迟播放

图片

(2)0voice录制推流软件

支持屏幕+麦克风RTMP直播,支持本地文件推送;支持录制保存到本地,支持录制预览功能,支持添加图片水印功能;支持文字水印功能,支持屏幕+摄像头同时捕获,支持降噪功能。

图片

 

(3)0voice低延迟拉流直播——实现500毫秒~1秒的低延迟直播

图片

三、DPDK高性能开发

走进高性能世界:探索dpdk、spdk、网络协议栈、vpp、OvS、DDos、SDN、NFV和虚拟化,成为专业的技术大师!

3.1DPDK网络专栏

(1)dpdk基础知识

  • 多队列网卡,vmxnet/e1000

  • igb_ uio与vfio模块

  • kni模块

  • hugepage的理解

  • 零拷贝

  • dpdk与netmap区别

  • dpdk的工作环境

(2)网络协议栈

  • dpdk-arp

  • netsh静态arp表设置

  • dpdk-icmp

  • udp协议格式分析

  • udp协议sendto, recvfrom实现

  • dpdk-ip

  • dpdk-tcp

  • tcp协议栈bind,listen, accept实现

  • tcp协议栈recv, send, close的实现

  • tcp三次握手实现

  • tcp四次挥手实现

  • tcp acknum与seqnum的确认机制实现

  • tcp的并发连接设计

  • epoll并发的实现

  • tcp协议栈与epoll之间的回调实现

(3)dpdk组件项目

  • dpdk-ac

  • dpdk-kni

  • /dev/ kni的原理分析

  • kni_ dev的流程

  • kni的t缓冲区,rx缓冲区

  • kni的用户空间与内核空间映射

  • mbuf如何转化为kernel的sk_ buff

  • dpdk- timer

  • bpftrace的使用

  • dpdk- bpf源码流程

(4)dpdk经典项目

  • dpdk- dns

  • dpdk- gateway

  • dpdk-ddos熵计算源码

  • ddos attach检测精确度调试

  • ddos attach测试T具hping3

  • 布谷鸟hash原理与使用

3.2储存技术专栏

(1)高效磁盘io读写spdk(C)

  • 存储框架spdk,为技术栈打开扇存储的大门

  • spdk运行环境与vhost

  • NVMe与PCl的关系

  • 手把手实现spdk_ server

  • nvme与pcie以及手写nvme读写操作

  • bdev与blob之间的关系

  • 实现blob异步读写

  • blobstore的读写操作实现与rpc的关系

  • fio性能测试性能对比libaio,io_ uring,psync

  • fio plugin工作流程

  • fio plugin开发

(2)spdk文件系统的实现

  • 文件系统功能拆解

  • spdk_ env_ init与spdk_ app init的差别

  • spdk_ _thread_ poll实现rpc回调

  • fs_ operations结构体定义

  • file_ operations结构体定义

  • dir_ operations结构体定义

  • syscall的hook实现

  • 基数树对文件系统内存管理

  • spdk_ blob的open,read,write,close

  • 测试用例与调试入口函数

(3)spdk kv存储的实现

  • KV存储拆解Set, Get, Mod, Del

  • app/.a库/so库对于kv存储的选择

  • bdev与blob对于kv存储的选择

  • kv service启动blob资源操作

  • kv service关闭blob资源回收

  • kv service接口set,get,modify,delete

  • kv遍历与查找实现

  • page存储chunk的管理

  • pagechunk的get与put

  • page单查找与多页查找

  • btree, artree, hashmap,radixtree, rbtree之间的选择

  • slab的实现

  • slab分配slot与释放slot

  • 为kv加上conf文件

  • 测试用例与性能测试

3.3安全与网关开发专栏

(1)可扩展的矢量数据包处理框架vpp(c/c++)

  • vpp命令详解

  • mac/ip转发plugin

  • load_ balance plugin

  • flowtable plugin

  • vpp源码之间的差异

  • 多网卡数据接收与转发

  • 解决plugin编译加载

  • vpp启动load so的流程

  • vpp的结构体vlib_ _main实现分析

  • vpp的结构体vnet_ main

  • vector的操作实现

  • vpp vcl库与LD_ PRELOAD实现分析

  • vcl原理讲解

  • vcl tcpserver实现原理

  • vcl tcpclient实现原理

  • vcl与iperf3的客户端与服务器

  • vcl与nginx的wrk性能测试

  • vcl与haproxy的性能测试

  • vpp 1801版本与vpp 2206版本

  • vpp httpserver的实现源码

  • vpp plugin quic源码分析

  • vpp plugin hs_ app的源码

  • vpp plugin rdma的实现分析

  • vpp plugin loadbalance

  • vpp plugin nat的源码分析

  • vpp host-stack tcp协议实现

  • vpp plugin的测试用例实现

(2)golang的网络开发框架nff-go(golang)

  • nff-go实现的技术原理

  • nff-go/low.h实现分析

  • nff- go数据接收的实现

  • nff-go数据发送的实现

  • ipsec协议解析与strongswan的ipsec

  • nff go的缺陷与不足

3.4虚拟化与云原生专栏

(1)DPDK的虚拟交换机框架OvS

  • ovs编译安装,ovs核心组件内容

  • ovs-vswitchd的工作原理

  • ovs-vswitchd与dpdk的关系

  • ovs-vsctl的网桥,网口操作

  • qemu-system-x86_ 64构建多子网

  • ovs与qemu数据流分发

  • ovs搭建docker跨主机通信

  • ovsdb server与ovsdb协议

  • json-rpc为控制面提供开发

  • ovs-tcpdump/ovs-l3ping

  • OvS 4种数据路径

  • VXL AN数据协议

  • ovs流量统计

(2)高性能4层负载均衡器DPVS

  • dpvs的技术组件与功能边界

  • lvs+keepalived配置高可用server

  • dpvs与|lvs+ keepalived的关系

  • dpvs.conf的配置文件

  • dpvs的FNat/NAT/SNAT模式

  • dpvs的DR模式

  • dpvs的tun模式

  • 通过quagga配置ospf

  • dpvs的tc流控操作与源码实现

  • dpvs代码架构分析

  • dpvs测试用例ipset, tc,mempool

3.5测试工具专栏

(1)perf3

  • vpp vcl的perf3接口hook

  • perf3测网络带宽

  • tcp吞吐量测试

  • udp丢包与延迟测试

  • json测试结果输出

(2)TRex

  • TRex的运行原理

  • TRex与dpdk

  • 构建TRex测试系统

  • t-rex -64- debug gdb调试

  • bg-sim- 64模拟单元测试

  • YAML文件编写

  • 流编排与自动化框架

  • 报文变量设置

(3)dpdk-pktgen

  • pktgen命令讲解

  • default.cfg配置文件分析

  • 120M bits/s的转发速率

(4)fio

  • ioengine的实现

  • ioengine_ ops的分析

  • iodepth的分析

  • spdk_ nvme的fio分析

  • spdk_ bdev的fio分析

  • spdk_ blob的ioengine实现

  • psync,io_ uring, libaio性能对比

3.6性能测试专栏

(1)性能指标

  • 吞吐量bps

  • 拆链/建链pps

  • 并发

  • 最大时延

  • 最小时延

  • 平均时延

  • 负载

  • 包速fps

  • 丢包率

(2)测试方法

  • 测试用例

  • vpp sandbox

  • perf3灌包

  • rfc2544

四、Linux内核开发

本套学习路线精选5大主题深入剖析,提升内核开发者技术水平:进程管理、内存管理、网络协议栈、设备驱动管理以及文件系统及内核组件。学习后,你将掌握内核开发的核心技术,提高自身竞争力。

4.1进程管理专栏

(1)进程管理基础部分

  • Linux内核源码组织结构

  • Linux内核5个子系统关系

  • Linux内核源码目录结构详解

  • 如何快速掌握阅读内核源码方法与技巧

  • 进程原理及系统调用详解

  • 进程/进程生命周期

  • task_ struct数据结构

  • 进程优先级/系统调用

  • 调度器及CFS调度器

  • 实时调度类/SMP/NUMA

  • 进程优先级与调度策略案例分析

  • RCU机制及内存优化屏障

  • 内存布局和堆管理

  • 多核调度分析

  • 内核数据结构:链表和红黑树案例分析

(2)进程管理案例分析

  • 编译自己Linux内核实战分析

  • 进程管理4大常用API案例分析

  • 系统调用API1

  • kthread _create_on_node案例分析

  • wake_up_process案例分析

  • 系统调用API2

  • 获取进程NICE值案例分析

  • 设置进程NICE值案例分析

  • 系统调用API3

  • complete_all案例分析

  • wake_up_sync_key案例分析

  • RCU案例实战分析

  • 模拟cfs调度器案例分析

  • 进程间通信案例分析

  • SMP调度详解

4.2内存管理专栏

(1)内存管理基础部分

  • 拟地址空间布局架构

  • 内存管理架构分析

  • 虚拟地址空间布局

  • 内存映射原理机制

  • 物理内存组织结构

  • 统调用sys mmap/sys_ munmap

  • 内存模块及三级结构

  • 引导内存分配器原理

  • bootmem分配器原理

  • memblock分配器原理

  • 伙伴分配器

  • 伙伴分配器原理

  • 分配页及释放页

  • Slab分配器详解

  • 不连续页分配器及页表

  • 胪空间缺顽异常

  • 页表缓存(TLB)与巨型页

  • TLB表项格式及管理

  • ASID原理/NMID原理

  • 处理器对巨型页的支持

  • 标准巨型页原理及查看

  • 巨型页池

  • 页回收机制详解

  • 发起页回收

  • 回收不活动页

  • 页交换

  • 计算描页数

  • 收缩活动页链表

  • 回收slab缓存

  • 内存反碎片技术

  • 虚拟可移动区域技术原理

  • 内存碎片整理算法

  • Linux内核内存池案例分析

  • 内存检测与死锁检测

(2)内存管理案例分析

  • 伙伴系统算法案例分析

  • 设计per-cpu变量案例分析

  • 缺页异常分析

  • 写时复制缺页异常

  • 文件映射缺页中断

  • 匿名页面缺页异常

  • do_ page_fault函数分析

  • 内核调优参数

  • /proc/sys/kernel/

  • /proc/sys/vm/

  • /proc/sy/fs/

  • 水位调优参数min_ free_kbytes

  • 面分配参数lowmem_reserve _ratio

  • 内存管理meminfo&zoneinfo信息分析

  • 分配物理页实战分析

  • 进程虚拟区间实战分析

  • vmalloc案例实战分析

  • kmalloc案例实战分析

  • kzalloc&kcallolc案例实战分析

  • 创建slab缓存案例实战分析

  • 创建内存池案例实战分析

  • slab分配器案例实战分析

  • 内存映射案例实战分析

  • 统计进程虚拟区间页数案例分析

  • 缓存着色

  • 处理器缓存机制

  • 文件页缓存

  • 内存与Kasan_ I分析

  • 五大常见内存访问错误

  • Kasan内核检测工应用

4.3设备驱动专栏

(1)设备驱动基础部分

  • I/O体系结构

  • 系统总线(PCI、ISA、 SCSI、 USB等)

  • 外设交互及总线控制设备

  • 访问设备深度详解

  • 内核块设备详解

  • 块设备I/O操作及源码分析

  • 通用磁盘及磁盘分区源码分析

  • 文件系统关联及字符设备操作

  • inode/字符设备及块设备操作

  • cdev数据结构及读写操作

  • 资源分配及总线系统

  • 资源分配I/O内存I/O端口

  • device数据结构/PCI总线/USB总线

  • 内核插入模块及删除模块

  • 内核模块基础知识

  • module_ init/module_exit

  • insmod/mmod/dmesg

  • PCI设备驱动讲解

  • PCI基础及拓扑关系

  • pci host _bridge/pci _bus/pci. dev

  • PC驱动讲解与实现

  • USB设备驱动详解

  • 总线速度及主机控制器

  • 传输模式与寻址方法

  • USB驱动总线数据结构分析

  • 字符设备操作

  • 主设备与次设备

  • 开设备文件

  • 分配与注册字符设备

  • 文件操作实现

  • open/release方法

  • read/wite方法

  • lslek/poll防法

  • 填充file operations结构体

(2)设备驱动案例分析

  • USB设备驱动架构分析

  • USB系统架构

  • 传输模式与寻址方法

  • USB驱动总线数据结构分析

  • USB驱动分析

  • USB基础及层次详解

  • USB驱动常见数据结构

  • 以太网驱动分析

  • 网络设备驱动框架

  • sk buff/net_device/napi_struct

  • USB3.0设备控制器驱动分析

  • USB控制器分析

  • dwc3_ event/dwc3 _event_buffer

  • 输入设备驱动程序

  • 输入设备驱动程序基础及分析

  • 核心数据结构input_dev

  • 常用内核编程API接口

  • V4|2视频设备驱动框架

  • V4L2视频设备驱动

  • V4L2驱动数据结构分析

  • V4I2框架常用API详解

  • 字符设备驱动项目实战分析

  • 字符设备驱动通信案例分析

  • 字体设备驱动数据结构设计

  • 数据发送端设计

  • 数据读取端设计

  • Makefile文件设计

  • make及字符设备驱动测试

  • 删除字符设备驱动模块

  • 杂项(MISC)驱动实例分析

4.4文件系统专栏

(1)文件系统基础部分

  • 通用文件模型

  • 磁盘文件系统(DF)

  • 虚拟文件系统(VF)

  • 网络文件系统(NF)

  • 链接

  • API编程接口

  • VFS数据结构

  • 超级块(super. _block)

  • 挂载描述符(mount结构体)

  • 索|结点(inode结构体)

  • 录项缓存(dentry结构体)

  • 处理VFS对象及标准函数

  • Ext2文件系统

  • Ext2物理结构

  • Ext2数据结构分析

  • Ext2文件系统操作

  • Ext4_ 日志JBD2

  • Ext4文件系统特性

  • Ext4文件系统数据结构

  • Ext4_日志JBD2

  • proc文件系统

  • proc数据结构

  • 初始化及装载proc

  • 管理proc数据项

  • 数据读写实现

  • 系统控制机制

  • 简单文件系统

  • 顺序文件

  • 使用libfs编写FS

  • 调试文件系统

  • 文件系统API : vfs fstat/fget/get. max_ files

  • 挂载文件系统

  • 系统调用mount处理流程

  • 绑定挂载/挂载命名空间

  • 挂载/注册rootfs文件系统

  • 文件系统调用

  • 打开/关闭文件

  • 创建/删除文件

  • 读/写文件实现

  • 文件回写技术原理/接口实现

  • sysfs文件系统

  • sysfs数据结构

  • 装载文件系统

  • 文件和目录操作

  • 向sysfs添加数据内容

(2)文件系统案例分析

  • proc文件系统案例实战分析

  • debugfs案例实战分析

  • super_block案例分析

4.5网络协议栈专栏

(1)网络协议栈基础部分

  • 套接字及分层模型

  • 套接字通信基础

  • 网络分层模型

  • 接字缓冲区及net _device

  • sk buff数据结构分析

  • net _device数据结构分析

  • 从套接字缓冲区获取TCP首部

  • 内核邻接子系统

  • 邻接子系统基础

  • ARP协议(IPv4)

  • 内核Netlink套接字案例分析

  • 数据结构设计与API系统调用

  • 内核模块与用户应用程序设计

  • 网络接口及IP地址实现

  • 网络层分析

  • 接收分组原理分析

  • 分组转发原理与分析

  • 发送分组原理与分析

  • TCP/UDP协议栈分析

  • 套接字分析

  • 发送与接收UDP数据包分析

  • 发送与接收TCP数据包分析

  • 传输层分析

  • 流控制传输协议(SCTP)

  • 数据报拥塞控制协议(DCCP)

  • ICMP协议分析

  • 发送/接收ICMPv4消息

  • 发送/接收ICMPv6消息

  • NIC数据包接收与发送分析

  • NIC原理机制

  • NC数据包接收与发送流程分析

  • IPsec(互联网安全协议)

  • IPsec基础知识部分

  • XFRM框架/策略/状态

  • 传输模式/隧道模式/IPsec高可靠性

  • Netfilter框架分析

  • Netfilter架构分析

  • Netfilter挂接点

  • Netfilter连接跟踪

  • epoll分析

  • poll系统调用

  • epoll数据结构

  • epoll内核实现

  • IPv4路由选择子系统

  • FIB表

  • ICMPv4重定向消息

  • 高级路由选择

  • 组播路由选择

  • 策略路由选择

  • IPv6协议分析

  • IPv6协议基础架构

  • 接收IPv6数据包

  • 发送IPv6数据包

  • InfiniBand架构

  • InfiniBand组件与编址

  • InfiniBand功能与数据包

  • 无线子系统分析

  • 802.11 MAC帧结构分析

  • 扫描/身份验证/关联

  • 高郚吐量(802.11n)

  • 网状网络(802.11s)

(2)网络协议栈案例分析

  • epoll原理及系统调用案例分析

  • NIC网-卡驱动案例实战分析

  • NIC网-卡驱动的recv与sk _buff

  • NIC网卡open与stop的实现

  • NIC编译与用户态协议栈

  • RDMA栈架构

  • Netfilter内核防火墙报文处理

  • Iptables基础/表和链及过滤规则

  • Netilter5种挂接点详解

  • netfilter注册和注销钩子函数

4.6中断管理与基础部分

(1)中断管理部分

  • ARM64异常处理技术

  • 异常级别与分类

  • 异常向量表与异常处理

  • 中断及软中断

  • tasklet等待队列工作队列

  • 中断控制器及域

  • 中断处理流程

  • 禁止_开启中断

  • 处理器间中断

  • 软中断分析

  • 审计规则及数据结构

  • 中断管理API案例分析

  • tasklet_init/tasklet_schedule

  • tasklet_hi_ schedule/tasklet_ kill

  • tasklet_disable_ nosync/tasklet _disable

  • setup_irq/request _threaded. irq/irqp_set _chip_data

  • 中断管理之保存中断上下文

  • 内核调试方法printk案例分析

  • gdb调试内核和模块案例分析

  • perf性能分析工具案例分析

  • perf原理机制与安装配置

  • perf采集数据命令29种工具应用

  • perf采集数据至火焰图分析

  • 开源社区

  • 如何参与开源社区

  • 如何提交Linux内核补丁

(2)内核基础

  • Linux操作系统进程

  • 计算机基础技术

  • 进程原理

  • Linux特性与内核版本

  • 进程特征与调度算法

  • 死锁产生必要条件

  • 进程状态及转换

  • 进程调度策略与调度依据

  • 存储器结构与分区存储管理

  • 主存储器结构及技术指标

  • 分区存储管理技术

  • 物理内存与虚拟内存

  • 存储管理

  • 段式存储管理

  • 页式存储管理

  • 文件管理基础架构

  • 文件基础知识

  • Linux文件系统

  • VFS(虚拟文件系统)

  • x86处理器架构

  • CPU(中央处理器)和内存

  • x86平台

  • 64位通用寄存器结构.

  • 汇编基础与寻址方式

  • 汇编基础技术

  • 常用寻址方式

  • 立即寻址

  • 直接寻址

  • 间接寻址

  • 址寻址

  • 相对寻址

  • 基址寻址

  • KVM架构基础

  • CPU虚拟化技术

  • I/O虚拟化技术

  • 内存虚拟化技术

  • 网络虚拟化技术

  • 内核定时器

  • 斥锁分析

  • 自旋锁机制

  • 原子变量案例实战分析

  • 信号量案例实战分析

  • 自旋锁项目实战分析

  • 顺序锁案例实战分析

  • 互斥锁项目实战分析

五、Qt跨平台开发

Qt是一款广泛应用于软件开发领域的跨平台开发框架。课程内容包括核心概念、窗口系统、界面设计、事件处理、绘图等功能,以及多线程编程、数据库访问等高级开发。打造高效Qt开发工作流:Qt5、C++、数据库、OpenCV、Quick、Qt实战技术栈。

5.1Qt C++语言编程基础专栏

(1)Qt C++语言编程基础

  • Visual Studio 2022安装

  • C++语言基础概述

  • C++指针与引用

  • C++类与对象(一)

  • C++类与对象(二)

  • 类的基它特性

  • 构造函数&析构函数&拷贝构造函数

  • C++友元与动态内存

  • 函数重载与运算符重载

(2)Qt C+ +语言进阶

  • 单继承

  • 多继承

  • 虚继承及其它特性

  • 虚函数与抽象类

  • 命名空间与模板

  • C+ +I0流类库

  • STL(vector & deque & stack)

  • STL(queue & set & map)

  • C+ +异常处理

(3)Qt C+ +语言新特性

  • 类型推导: auto & decltype

  • 序列for循环

  • lambda表达式

  • 构造函数:委托构造和继承构造

  • 容器: array & forward list & tuple

  • 垃圾回收机制

  • 正则表达式基础

  • 智能指针: shared_ ptr & unique_ ptr & weak_ ptr

  • 关键字: nullptr & constexpr

  • 共享内存&互斥量mutex

  • C++11: STL hashmap

  • 关联容器: unordered_ map

  • atomic flag & atomic应用

  • 条件变量: condition variable

  • 异常处理: exception

  • is integral应用实战

  • is_ rvalue_ reference应用实战

  • is_ arithmetic应用实战

  • is volatile应用实战

  • is class应用实战

  • 变量模板

  • inline应用实战

5.2Qt编程入门到精通专栏

(1)Qt开发基础体系

  • Qt下载与安装配置

  • Windows Qt环境安装

  • Linux Qt环境安装

  • Qt Creator工具介绍与使用.

  • Qt信号与槽机制

  • Qt字符串&数据类型&容器类

  • 字符串类应用与常见数据类型

  • 常用容器类

  • QMap类& QHash类& QVector类

  • QList类& QLinkedList类

  • QVariant类应用

  • 常用算法及正则表达式

(2)Qt开发常用控件详解

  • Layouts & Spacers

  • Buttons & Containers

  • Item Views

  • Item Widgets

  • Input Widgets

  • Display Widgets

(3)Qt布局及对话框详解

  • 布局管理

  • QLayout & QStackedWidget类

  • QSplitter类& QDockWidget类

  • 对话框

  • 文件对话框

  • 颜色对话框

  • 字体对话框

  • 输入对话框

  • 消息对话框

  • 自己定义消息框

(4)Qt图形&模型&视图

  • 绘图原理双缓冲机制

  • Graphics View特性详解

  • Mode & View & Delegate

(5)Qt文件操作及事件处理

  • 目录操作及文件系统

  • QCoreApplication类

  • QFilelnfo类

  • QDir类

  • QTemporaryDir

  • QTemporaryFile

  • 获取文件特性实现

  • 鼠标及键盘事件

  • 事件过滤处理分析

(6)Qt服务应用操作

  • INI文件操作

  • JSON文件操作

  • XML文件操作

(7)Qt网络及多线程

  • 套接字编程API函数详解

  • UDP协议工作原理

  • TCP服务器设计

  • TCP客户端设计

  • TCP协议工作原理

  • UDP服务器设计

  • UDP客户端设计

  • 多线程编程

  • 互斥量

  • 信号量

  • 多线程C/S模型项目实战

  • HTTP协议编程技术

  • Websocket原理及编程技术

(8)Qt数据分析:图表详解

  • Qt图表基础知识

  • Qt ChartView详解

  • Qt常用图表类型

  • 曲线图

  • 拆线图

  • 柱形图

  • 饼状图

(9)Qt应用程序打包及发布

  • 打包QT应用程序

  • 发布QT应用程序

5.3Qt高级进阶专栏

(1)MySQL数据库编程技术

  • 数据库基础知识

  • MySQL基本操作

  • MySQL运算符

  • 数据类型及存储引擎

  • 表数据增&删&改&查&高级查询

  • MySQL流程控制语句

  • SQL语句详解

  • 索引

  • 视图

  • 存储过程和函数

  • 触发器

  • 事件

  • MySQL备份与恢复

  • Qt操作MySQL数据库实战

(2)sQLite数据库编程技术

  • SQLite下载与安装配置

  • sQLite创建数据库

  • SQL ite附加&分离数据库

  • SQLite数据类型

  • SQLite创建表&删除表

  • SQLite insert into语句详解

  • SQLite select & update & delete语句

  • sQLite Distinct & Orderby & Groupby

  • SQLite触发器

  • sQLite索引

  • SQLite视图

  • sQLite事务

  • Qt操作SQLite数据库实战

(3)OpenCV编程开发常用技术

  • OpenCV与VS2022环境搭建

  • OpenCV常见API及绘图详解

  • OpenCV图像读写技术

  • OpenCV视频读写技术

  • OpenCV图像滤波技术

  • OpenCV视频录制技术

  • OpenCV图像翻转技术

  • OpenCV图像旋转技术

  • OpenCV实现窗口置顶

  • OpenCV边缘检测技术1

  • OpenCV边缘检测技术2

  • OpenCV向上向下采样

  • OpenCV形态学之膨胀

  • OpenCV图像浮雕技术

  • OpenCV图像人脸识别

(4)C++ 23种设计模式

  • 创建型模式(5种)

  • 工厂模式

  • 抽象工厂模式

  • 原型模式

  • 单例模式

  • 建造者模式

  • 结构型模式(7种)

  • 适配器模式

  • 桥接模式

  • 组合实体模式

  • 装饰器模式

  • 外观模式

  • 享元模式

  • 代理模式

  • 行为模式(11种)

  • 责任链模式

  • 中介者模式

  • 策略模式

  • 模板模式

  • 状态模式

  • 观察者模式

  • 备忘录模式

  • 命令模式

  • 访问者模式

  • 解释器模式

  • 迭代器模式

5.4Qt项目开发实战专栏

(1)文字编辑: Word处理软件

  • Word文字编辑软件架构设计分析

  • 菜单栏工具栏状态栏功能模块设计

  • 菜单栏工具栏状态栏动作与实现

  • 系统模块整体功能关联与实现

  • Word文件编辑软件调试及测试

(2)音频项目实战: MP3播放器搜索引擎(Qt5+SQLite)

  • MP3音乐播放器搜索引 |擎设计与实现

  • SQLite数据库 数据表设计与实现歌曲搜索

  • HTTP下载音乐数据解析Json显示歌词

  • 上一曲播放暂停下一 曲循环播放实现

  • 音乐搜索引|擎关于皮肤更换系统托盘

图片

(3)信息管理项目:库存管理系统(Qt5+ MySQL)

  • 商品数据库设计及配置测试

  • 库存新增商品和查询商品

  • 商品入库与商品出库

  • 商品删除与导出数据

  • 数据汇总及数据备份

图片

4)即时通讯项目:腾讯QQ客户端软件

  • 即时通讯项目简介

  • QQ客户端登录设计

  • QQ登录窗口翻转效果实现

  • IP地址控件设置

  • 主界面及窗口移动实现

  • QQ登录逻辑业务处理分析

  • 项目全局类定义与实现

  • 完善MainWindow及托盘技术

  • QQ好友组及U|效果实现

  • QQ聊天窗口和排版设计

  • 头像裁剪技术

  • 音频技术分析与实现

  • QQ添加好友逻辑业务处理

  • QQ聊天逻辑处理分析

  • 消息时序图和头像截图处理技术

  • 即时通讯群组功能实现

  • QQ表情与gif图片处理技术

  • 文件上传功能实现

  • QQ文件传输技术

  • QQ头像显示与添加好友显示实现

图片

(5)视频项目实战:视频播放器(Qt+ FFmpeg)

  • 播放器项目需求分析

  • Player UI主界面设计

  • 播放文件Title设计实现

  • 控制条CtrlBar设计实现

  • 播放文件列表Playlist实现

  • 播放器模块分析与设计

  • 打通UI到播放器核心的通道消息队列

  • 打通Ul到播放器核心的通道类名和接口

  • 状态处理: stream open和stream close

  • 解复用&数据读取read thread设计

  • 解码线程Decoder封装

  • 音频输出及视频渲染输出

  • 音视频同步原理与技术详解

5.5Qt开发工程师提升专栏

(1)Qt开发工程师提升: Quick编程常用技术

  • QML基础知识

  • QML语言基础

  • QML元素1: Image & Rectangle & Text

  • QML元素2: ButtonStyle & ltem & BusyIndicator

  • Quick事件处理

  • 键盘事件

  • 鼠标事件

  • 定时器

  • Quick组件及元素布局

  • Component & Loader

  • 定位器及布局管理器

  • Quick开发常用元素及Canvas(画布)

  • TextField & TextArea & TextInput

  • CheckBox & GroupBox & TabView

  • Canvas(画布)绘制图形

  • 动画及.Mode & View

  • 动画常用元素

  • Animation & PropertyAnimation & NumberAnimation

  • ColorAnimation & PathAnimation & SpringAnimation

  • 组合动画部分: ParallelAnimation & SequentialAnimation

  • 动画协同元素: Behavior & ParentAnimation & AnchorAnimation

(2)Qt开发工程师提升: QSS编程常用技术

  • QSS实战开发1: QSS作用及应用场景

  • QSS实战开发2: QSS常用基本语法

  • QSS实战开发3: QSS控件样式QL abel & QLineEdit & QPushButton

  • QSS实战开发4: QSS控件样式QComboBox

  • QSS实战开发5: QSS控件样式QTableWidget

  • QSS实战开发6: QSS控件样式QProgressBar

  • QSS实战开发7: QSS控件样式QSlider

  • QSS实战开发8: QSS控件样式CheckBox

  • QSS实战开发9: Ubuntu系统控件风格

  • QSS实战开发10: Mac系统控件风格

(3)Qt开发工程师提升:核心技术模块

  • QtConcurrent线程处理(过滤和映射)

  • Qt之QWebEngineView框架分析

  • Qt生成及读取XML文件及应用实战

六、C++后端游戏开发

基于魔兽开源后端框架 TrinityCore 的技术拆解课程;课程涉及 MMORPG 核心模块实现(高性能网络模块、数据库模块、日志模块、地图模块、以及战斗模块等),同时也包括 MMORPG 核心玩法实现(任务、背包、工会、以及副本等)。通过课程学习,将掌握 MMORPG 核心开发技能。

6.1TrinityCore CMake项目构建

(1)CMake的使用

  • 什么是 CMake,CMake的工作流程

  • CMakeLists.txt的编写规则

  • 静态库生成以及链接

  • 动态库生成以及链接

  • 嵌套CMake

(2)Windows和Linux下编译调试环境搭建

  • cmake和graphviz生成目标依赖图

  • linux vscode编程环境搭建

  • cmake和clangd实现精俳跳转

  • C/C++插件实现调试

  • vs2019 windows下编译调试搭建

6.2TrinityCore数据库模块

(1)连接池设计概要

  • 什么是连接池

  • 为什么需要复用连接

  • 为什么固定连接数

  • 主要应用场景

(2)同步连接池实现

  • 同步连接池的线程模型

  • 同步连接池接口封装

  • 同步连接池接口使用

  • 同步连接池应用场景

(3)异步连接池实现

  • 异步连接池的线程模型

  • 异步连接池接口封装

  • 异步连接池接口使用

  • 异步连接池应用场景

(4)事务处理

  • 什么是事务

  • 什么情况下讨论事务

  • 事务操作

  • TrinityCore 中事务处理封装

  • TrinityCore 中事务处理案例

(5)数据库模块实践

  • 剥离可复用数据库模块

  • 应用同步连接池案例

  • 异步连接池-单SQL语句的使用

  • 异步连接池-多SQL语句chain式应用

  • 异步连接池-多SQL语句holder式应用

  • 异步连接池-多SQL语句transaction式应用

6.3TrinityCore日志模块

(1)日志模块概要

  • 日志模块的作用

  • 日志模式核心抽象: logger和appender

  • logger规则:继承关系、日志级别、以及appender列表

  • appender如何定义日志打印目的地

(2)日志模块实现

  • 日志模块单例构建

  • 采用宏定义定制日志使用接口

  • 如何扩展appender

  • appender中设计模式-模板模式

  • 同步日志方式实现

  • 异步日志方式实现

  • 异步日志线程模型

(3)日志模块实践

  • 剥离可复用日志模块

  • 为什么推荐使用异步日志

  • 异步日志日志安全分析及测试

6.4TrinityCore网络模块

(1)阻塞io 网络模型编程

  • 什么是阻塞io网络模型

  • 阻塞io解决连接建立的问题

  • 阻塞 io解决连接断开的问题

  • 阻塞io解决数据接收的问题

  • 阻塞io解决数据发送的问题

  • 阻塞 io解决网络问题的弊端

(2)reactor 网络模型编程

  • 什么是reactor?

  • reactor构成部分

  • reactor解决连接建立的问题

  • reactor解决连接断开的问题

  • reactor解决数据接收的问题

  • reactor解决数据发送的问题

  • reactor解决网络问题的特征: io同步,事件异步

(3)windows iocp 网络编程

  • 什么是完成端口

  • 重叠io的作用

  • iocp解决连接建立的问题

  • iocp解决连接断开的问题

  • iocp解决数据接收的问题

  • iocp解决数据发送的问题

  • iocp编程步骤

  • iocp与reactor在编程处理io时的差异

(3)boost.asio 网络编程

  • boost.asio跨平台网络库

  • cmake如何在项目中引入boost.asio

  • boost.asio中核心命名空间

  • boostasio中核心对象: io_context、socket、endpoint

  • boost.asio中异步io接口

  • asio解决连接建立的问题

  • asio解决连接断开的问题

  • asio解决数据接收的问题

  • asio解决数据发送的问题

(4)网络缓冲区设计

  • 为什么需要在用户层实现网络缓冲区

  • 读缓冲区的工作原理

  • 写缓冲区的工作原理

  • 手撕缓冲区实现

(5)网络模块实践

  • 剥离可复用网络模块

  • AsyncAcceptor职责与实现

  • NetworkThread职责与实现

  • Socket职责与实现

  • 手撕多线程模式下网络模块的应用

6.5TrinityCore地图模块

(1)地图模块概要

  • 哪些功能模块需要用到地图模块

  • 地图模块的功能构成

  • 地冬对象抽象:map、area、grid、cell

  • 网络数据驱动地图模块

  • 定时更新驱动地图模块

(2)地图模块AOI核心算法

  • AOI有哪些实现方式

  • AOI静态数据工具生成

  • AOI静态数据数据划分

  • AOI静态数据组织方式

  • AOI动态数据组织方式

  • AOI动态数据驱动方式

  • AOI地图数据加载

  • grid 网格状态机以及状态转换

  • AOl地图数据卸载

  • 采用访问者模式实现地图数据与算法的隔离

(3)AABB算法实现碰撞检测

  • 轴对称边界盒算法-AABB算法

  • TrinityCore中AABB算法实现

  • AABB算法优化

  • 碰撞检测接口封装以及应用

(4)A*寻路算法

  • A*寻路算法概述

  • recast-detour开源车

  • recast根据模型生成导航数据

  • detour利用导航网格做寻路

  • 寻路接口封装以及应用

6.6TrinityCore战斗模块专栏

(1)技能设计

  • 技能设计概述

  • 技能数据库表设计(配置)

  • 技能触发:距离、冷却时间、消耗等

  • 技能效果:伤害计算、增益效果等

  • 技能释放流程

(2)AI设计

  • AI设计概述

  • 基于行为树的Al设计

  • Al类继承层次关系

  • 04.Al攻击目标选择

  • AIl攻击方式选择

  • Al移动方式选择

  • AI基于事件的驱动机制

(3)怪物管理

  • 怪物数据库设计(配置)-属性和行为

  • 怪物刷新规则设计-时间间隔以及范围

  • 怪物属性、技能、掉落、Al

(4)战场副本设计

  • 创建和加载 battlegrounds场景地图数据

  • battlegrounds规实现

  • battlegrounds队伍匹配、队伍平衡以及角色分配

  • battlegrounds奖励系统和排名机制

6.7TrinityCore mmorpg核心功能与玩法

(1)任务系统设计

  • 任务系统数据库设计(配置)

  • 玩家数据库状态存储

  • 任务类型设计

  • 任务触发机制

(2)背包设计

  • 背包数据结构设计以及数据库表设计

  • 背包容量控制

  • 背包格子管理

  • 背包交互功能实现

(3)工会系统设计

  • 数据库表结构设计

  • 工会创建逻辑实现

  • 工会成员管理

  • 工会资源管理及分配机制

  • 工会活动与事件

  • 工会排名实现

  • 工会权限控制

6.8语言专栏

(1)lua程序设计

  • lua基础

  • lua错误处理

  • lua编译与预编译

  • lua模块与包

  • 元表与元方法

  • 环境

  • lua/c接口编程

(2)c++新特性

  • 智能指针shared_ptr, unique _ptr

  • 函数对象以及闭包

  • 右值引用

  • 原了操作与锁: atomic、mutex、condition_variable

  • 多线星环竟队列设计:MPSCQueue、ProducerConsumerQueue

(3)C++设计模式

  • 单例模式

  • 工厂模式

  • 模板模式

  • 访问者模式

  • 责任链模式

第一份工作不亚于一次高考,珍惜校招,社招的竞争是你目前想象不到的。能去大厂觉不妥协,IT行业第一份工作背景越好,起点越高,后续发展空间越好!

给那些1-3年的安于现状的伙伴一句话:

不要抱怨市场,不要安于现状,在低端,往中端领域看,在中端往高端领域看。认知以及对自身的要求,都会有所改变。

给那些担心35岁的伙伴一句话:

决定上限的不是年纪,而是技术。

最后:希望学习路线对你有所帮助,希望码农的我们越来越好!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu:桌面版磁盘合并扩容

下载gparted磁盘编辑器 apt-get install gparted 打开gparted 更改目标分区大小 当遇到这个报错时,需要在命令行执行原分区的挂载指令 查看该分区信息 记住该目录,并在命令行执行 mount -o remount -rw /# 示例:mount -o remount -rw /v…

使用 Containerd 通过 HTTP 协议拉取 Harbor 私有镜像仓库的镜像

在 Kubernetes 1.24及以上版本环境中,docker不再被支持,主要使用Containerd 是常用的容器运行。默认情况下,Containerd 使用 HTTPS 协议与镜像仓库通信。然而,在某些场景下(如测试环境或内部网络)&#xff…

【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合

Frequency-aware Feature Fusion for Dense Image Prediction 用于密集图像预测的频率感知特征融合 Abstract:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点,现代分层模型通常利用特征融合,直接添加…

PDF扫描档智能方向识别:多模型投票机制的实践测试 救活古典书籍

2025-02-22 20:10物联全栈123 尊敬的诸位!我是一名物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与 AI 的无尽可能 RAG知识库搭建的过程中,扫描档pdf的支持和准确率一直是个大家都不愿主动提起的事情…

【deepseek】本地部署+webui访问

背景 最近deepseek很火,但是官网的老是被限流使用,还有就是自己也想着玩一玩,于是准备在自己电脑跑一个 直接附上结果地址mydeepseek 准备工作 windows和linux都可 我这里选择linux,ubuntu系统 安装ollama 看下图&#xff0…

【Vue工作原理】初始化启动文件加载流程

参考资料:配置参考 | Vue CLI vue-cli项目如果项目根目录下没有vue-config.js文件,默认入口文件entry,模板文件template,以及filename分别是什么?(参考DeepSeek回答) 根据Vue CLI文档,当没有配…

【构建工具】Gradle 8中Android BuildConfig的变化与开启方法

随着Gradle 8的发布,Android开发者需要注意一个重要变化:BuildConfig类的生成现在默认被关闭了!!!。这个变化可能会影响许多依赖于BuildConfig的项目(别问,问就是我也被影响了,多好用…

ESP32S3:参考官方提供的led_strip组件使用 SPI + DMA 方式驱动WS2812 RGB灯的实现思路 (实现各个平台移植使用该方式)

目录 引言使用SPI + DMA 方式实现思路分析1. 查看WS2812的datasheet手册2. 根据官方的led_strip组件的方式,自己手把手实现一遍3.完整的程序(实现霓虹灯效果)引言 参考官方提供的led_strip组件使用 SPI + DMA 方式驱动WS2812 RGB灯的实现思路,只有明白实现的思路,方能将其…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计,采用四个并行分支提取不同维度的信息相比于…

ctfshow——版本控制泄露源码

题目提示:版本控制很重要,但不要部署到生产环境更重要。 题目内容如下图所示 本题结合题目和提示可以知道,我们要通过查看生产环境来查找flag。 所以我们可以在URL上进行操作,这时候就需要目录扫描来查看了。 发现存在一个.git的…

关于网络端口探测:TCP端口和UDP端口探测区别

网络端口探测是网络安全领域中的一项基础技术,它用于识别目标主机上开放的端口以及运行在这些端口上的服务。这项技术对于网络管理和安全评估至关重要。在网络端口探测中,最常用的两种协议是TCP(传输控制协议)和UDP(用…

某住宅小区地下车库安科瑞的新能源汽车充电桩的配电设计与应用方案 安科瑞 耿笠

摘要:纯电动商用车的工作环境存在路况复杂、工况恶劣等情况,导致整车电气设备的磨损速率加快,造成电气设备绝缘电阻持续下降,如不及时处理,可能存在安全隐患或引发重大安全事故。文章从绝缘故障检测原理出发&#xff0…

LeetCode详解之如何一步步优化到最佳解法:14. 最长公共前缀

LeetCode详解系列的总目录(持续更新中):LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客 LeetCode详解系列的上一题链接:LeetCode详解之如何一步步优化到最佳解法&am…

使用VS Code远程开发OpenAI API

由于OpenAI的API在国内不可用,我们要针对API进行开发困难比较大。 如果你有一个能使用OpenAI API的Linux服务器,我们可以方便地使用VS Code的远程开发功能来解决这个问题。 如果没有,你也可以试试获得一个免费的国外服务器,网上有…

代码审计入门学习

简介 HadSky轻论坛程序为个人原创PHP系统,作者为蒲乐天,后端基于puyuetianPHP框架驱动,前端基于 puyuetianUI框架驱动,默认编辑器为puyuetianEditor富文本编辑器,其他非原创框架及驱动JQuery.js 及Font-Awesome字体库…

Java线程池入门03

1. 这3种创建线程池的方式有风险 FixedThreadPool : 固定大小的线程池SingleThreadExecutor : 单个线程的线程池CachedThreadPool : 可缓存的线程池 FixedThreadPool内部其实也是使用ThreadPoolExecutor来创建的 等价于 : new ThreadPoolExecutor(nThreads, nThreads, 0L, Tim…

C#连接sql server

连接时,出现如下提示: ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示: 显示为64位,而c#程序显…

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.1.2典型应用场景:日志分析、实时搜索、推荐系统

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 为什么选择Elasticsearch?——典型应用场景深度解析1. 引言2. 日志分析:海量数据的实时洞察2.1 行业痛点2.2 ES解决方案关键技术实现: 2.…

SQLite 安装教程以及可视化工具介绍

目录 简述 1. Windows 系统安装 1.1 下载预编译的二进制文件 1.2 解压文件 1.3 配置环境变量 1.4 验证安装 2. GUI 可视化工具 2.1 免费工具 2.1.1 DB Browser for SQLite 2.1.2 SQLiteStudio 2.1.3 SQLite Expert 2.1.4 SQLiteGUI 2.1.5 Antares SQL 2.1.6 DbGa…

C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载

下载地址<------完整源码 在数字化转型加速的背景下&#xff0c;企业应用系统对智能服务的需求日益增长。DeepSeek作为先进的人工智能服务平台&#xff0c;其自然语言处理、图像识别等核心能力可显著提升业务系统的智能化水平。传统开发模式下&#xff0c;C#开发者需要耗费大…