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歲的伙伴一句話:

決定上限的不是年紀,而是技術。

最后:希望學習路線對你有所幫助,希望碼農的我們越來越好!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71901.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71901.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71901.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫索引:缺點與類型全解析

在數據庫的世界里,索引就像是一本書的目錄,它能幫助我們快速定位到所需的數據,極大地提升查詢效率。然而,就如同任何事物都有兩面性一樣,索引也并非完美無缺。今天,我們就來深入探討一下索引的缺點以及常見…

【python】提取word\pdf格式內容到txt文件

一、使用pdfminer提取 import os import re from pdfminer.high_level import extract_text import docx2txt import jiebadef read_pdf(file_path):"""讀取 PDF 文件內容:param file_path: PDF 文件路徑:return: 文件內容文本"""try:text ext…

嵌入式八股文(五)硬件電路篇

一、名詞概念 1. 整流和逆變 (1)整流:整流是將交流電(AC)轉變為直流電(DC)。常見的整流電路包括單向整流(二極管)、橋式整流等。 半波整流:只使用交流電的正…

精選案例展 | 智己汽車—全棧可觀測驅動智能化運營與成本優化

本案例為“觀測先鋒 2024 可觀測平臺創新應用案例大賽”精選案例,同時榮獲IT168“2024技術卓越獎評選-年度創新解決方案”獎。 項目背景 近年來,中國汽車行業進入轉型升級階段,智能網聯技術成為行業發展的核心。車聯網、自動駕駛等技術的加速…

速通HTML

目錄 HTML基礎 1.快捷鍵 2.標簽 HTML進階 1.列表 a.無序列表 b.有序列表 c.定義列表 2.表格 a.內容 b.合并單元格 3.表單 a.input標簽 b.單選框 c.上傳文件 4.下拉菜單 5.文本域標簽 6.label標簽 7.按鈕標簽 8.無語義的布局標簽div與span 9.字符實體 HTML…

【Python模塊】——pymysql

pymysql是python操作mysql的標準庫,可以通過pip install快速導入pymysql包操作數據庫 使用pymysql操作mysql 簡單demo import pymysql connect pymysql.connect(host"localhost",port3306,user"root",password"root",database&quo…

IP離線庫助力破解網絡反詐難題

毫秒級響應識別異常訪問 IP離線庫集成全球全量IP地址的詳細信息,包括地理地址查詢、運營商、經緯度、代理識別等多種維度數據。例如: 當用戶賬號頻繁從北京、越南等多地IP登錄時,系統將自動觸發風險預警; 檢測到訪問IP為已知機…

lattice hdl實現spi接口

在lattice工具鏈中實現SPI接口通常涉及以下步驟: 定義硬件SPI接口的管腳。配置SPI時鐘和模式。編寫SPI主機或從機的控制邏輯。 展示了如何在Lattice工具鏈中使用HDL語言(例如Verilog)來配置SPI接口: lattice工程 頂層:spi_slave_top.v `timescale 1ns/ 1ps module spi_…

Spring 循環依賴解析與解決方案

文章目錄 1. 什么是循環依賴?1.1 概念解析1.2 示例代碼 2. 循環依賴的類型2.1 構造器循環依賴(不可解決 ?)2.2 Setter 方式或 Autowired 方式的循環依賴(可解決 ?) 3. 解決循環依賴的方式3.1 方式一:使用…

Cesium@1.126.0,創建3D瓦片,修改樣式

第一步:添加3D建筑 Cesium.createOsmBuildingsAsync()這是一個異步方法,所以要寫在一個異步函數里 創建一個函數 const create3DBuilding async (viewer) > {try {// 添加3D建筑const tileset await Cesium.createOsmBuildingsAsync();viewer.scen…

力扣-貪心-1005 k次取反后最大化的數組和

思路 找到絕對值最大的,然后如果是負數就變成正的,所有數遍歷完之后,有兩種情況,一種是k已經為0了,不需要再取反了,一種是所有數都為正數,k不為0,此時對絕對值最小的數操作即可 代…

vue2項目打包后js文件過大, 首次加載緩慢

vue2項目打包后js文件過大, 首次加載緩慢 安裝插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…

高級SQL技術在Python項目中的應用:ORM與深度性能優化

引言 在現代Python項目開發中,數據庫交互遠不止是數據的簡單存取,它已成為構建高性能、可維護應用的核心瓶頸和關鍵能力所在。 僅僅依賴基礎SQL查詢,雖然入門簡單,卻難以應對日益增長的應用挑戰。這些挑戰主要體現在以下幾個方面: 性能瓶頸: 數據量劇增: 從百萬到數十億乃…

基于 C++ Qt 的 Fluent Design 組件庫 QFluentWidgets

簡介 QFluentWidgets 是一個基于 Qt 的 Fluent Designer 組件庫,內置超過 150 個開箱即用的 Fluent Designer 組件,支持亮暗主題無縫切換和自定義主題色。 編譯示例 以 Qt5 為例(Qt6 也支持),將 libQFluentWidgets.d…

抖音視頻如何下載保存去水印

隨著短視頻平臺的興起,抖音作為國內最受歡迎的短視頻平臺之一,吸引了大量用戶上傳和觀看各種創意視頻。許多用戶在瀏覽抖音視頻時,往往會想要保存一些有趣或精彩的視頻片段,但抖音視頻通常會有水印,影響觀看體驗。為了…

React 源碼揭秘 | 更新隊列

前面幾篇遇到updateQueue的時候,我們把它先簡單的當成了一個隊列處理,這篇我們來詳細討論一下這個更新隊列。 有關updateQueue中的部分,可以見源碼 UpdateQueue實現 Update對象 我們先來看一下UpdateQueue中的內容,Update對象&…

[SQL] 事務的四大特性(ACID)

🎄事務的四大特性 以下就是事務的四大特性,簡稱ACID。 原子性📢事務時不可分割的最小操作單元,要么全部成功,要么全部失敗。一致性📢事務完成后,必須使所有的數據都保持一致隔離性&#x1f4e2…

DeepSeek 提示詞:基礎結構

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編…

如何使用 Python 連接 MySQL 數據庫?

在Python開發中,連接MySQL數據庫是一個常見的需求。 我們可以使用多種庫來實現這一功能,其中最常用的是mysql-connector-python和PyMySQL。 下面我將詳細介紹如何使用這兩個庫來連接MySQL數據庫,并提供一些實際開發中的建議和注意事項。 1…

Apache DolphinScheduler系列1-單節點部署及測試報告

文章目錄 整體說明一、部署環境二、版本號三、部署方案四、部署步驟4.1、上傳部署包4.2、創建外部數據庫4.3、修改元數據庫配置4.4、上傳MySQLl驅動程序4.5、初始化外部數據庫4.6、啟停服務4.7、訪問頁面五、常見問題及解決方式5.1、時間不一致5.2、異常終止5.3、大量日志5.4、…