在軟件開發的宏大版圖中,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歲的伙伴一句話:
決定上限的不是年紀,而是技術。
最后:希望學習路線對你有所幫助,希望碼農的我們越來越好!