Linux C++後臺開發自學路線,看完醍醐灌頂

後臺開發包括的知識點很多,包括語言基礎,演算法,linux程式設計基礎,linux核心,網路,資料庫,分散式等等。面面俱到很難,一個領域鑽研的很深也很難。我認識的大神裡有把C++語言吃的非常透的,拿offer都非常輕鬆。

學習路線有點長,但非常的細,爭取做到讓看到的同學有一種相見恨晚的感覺!

Linux C++ 伺服器/後臺開發指的什麼呢,其實就是基於

Linux 上 的 C++ 程式設計

,較於其他語言開發,更著重Linux系統程式設計能力。

這裡我就不講C++基礎了,申明一下,此路線只適合有

C語言基礎或者C++基礎

的人去看。

Linux C++後臺開發自學路線,看完醍醐灌頂

一、基礎知識

(1)資料結構與演算法

面試必聊的排序與KMP

插入排序、快速排序、希爾排序、桶排序、基數排序、歸併排序、字串匹配 KMP演算法

隨處可以見的紅黑樹

紅黑樹的應用場景,程序排程CFS,記憶體管理等等

磁碟儲存鏈式的B樹與B+樹

磁碟結構與資料儲存原理、B樹插入的分裂、B+樹的定義與實現等等

海量資料去重的Hash與布隆過濾器 bitmap

hsah的原理和hash函式的實現、分散式hsah、海量資料去重布隆過濾器

圖論演算法、di jkstra、dfs、bfs、動態規劃

圖的構建與需求應用場景、di jkstra的實現、經典動態規劃問題

這裡推薦大家去看《演算法導論》第三版,講的非常詳細!

(2)設計模式

創作型設計模式

單例模式、工廠方法模式與抽象工廠模式

結構型設計模式

介面卡模式、代理模式、橋接模式、組合模式

行為型設計模式

責任鏈模式、策略模式、觀察者模式、狀態模式

(三)工廠管理

Makefile/cmake/configure

git/svn與持續整合

Linux系統執行時的命令引數

Linux C++後臺開發自學路線,看完醍醐灌頂

二、高效能網路

(1)網路程式設計

網路io與select,poll,epoll

多路複用select/poll、epoll單執行緒多執行緒多程序的多種寫法

reactro的原理和實現

epoll的封裝、reactro的多核實現

http與https伺服器的實現

http協議格式、http2。0與3。0、https的工作流程

websocket協議與伺服器實現

websocket握手流程、websocket協議頭封裝、TCP分包與粘包的解決方案

(2)網路原理

伺服器百萬併發實現

同步與非同步處理、網路io執行緒池非同步處理

Redis、Nginx、memcached網路元件

Redis單執行緒reactro的實現、Nginx多程序reactro的實現

posix API與網路協議棧

UDP可以傳輸、QUIC/KCP

udp的優缺點、udp高併發設計方案、udp可靠傳輸協議

(3)協程框架實現Ntyco

Linux C++後臺開發自學路線,看完醍醐灌頂

福利分享

Linux C++後臺開發自學路線,看完醍醐灌頂

價值199協程框架實現微課

稍等片刻。。。正在載入中

(4)使用者態協議棧NtyTCP

Linux C++後臺開發自學路線,看完醍醐灌頂

推薦大家去看

《TCP詳解捲一捲二卷三》

《Unix高階環境程式設計》

《深入理解計算機系統》

三、基礎元件

池式元件

執行緒池與效能分析

執行緒池的非同步處理使用場景

執行緒池的動態回縮

ringbuffer與記憶體池的實現

手寫記憶體池,結構體封裝與API實現

避免記憶體洩露的兩種方法

定位記憶體洩露的三種工具

Nginx記憶體池的實現

非同步請求池 http/mysql/redis/dns

非同步請求處理流程

MySQL/Redis連線池的實現

高效能元件

原子操作CAS與鎖實現原理實現

互斥鎖

自旋鎖

訊息佇列與無鎖實現

有鎖佇列

記憶體屏障Barr ier

定時器方案

紅黑樹

最小堆

時間輪

開源元件

libevent/libev框架

非同步日誌方案log4cpp

應用層協議設計protoBuf/thrift

openss丨對稱加密與非對稱加密

json資料解析丨Xml資料解析器與工具包

中介軟體開發

MySQL

MySQLSQL語句、索引、檢視、儲存過程、觸發器

MySQL索引原理與SQL最佳化

MySQL事物原理分析

MySQL快取策略

MySQL叢集方案

Redis

Redis相關命令及其原理

Redis協議與非同步方式

儲存原理與資料模型

主從同步與物件模型

叢集方案主從複製

Nginx

Nginx反向代理與系統引數配置

程序間通訊與slab共享機制

Nginx過濾模組實現

推薦書籍

《高效能MySQL 第三版》

《Redis實現與原理》 (黃建宏)

(深入理解Nginx:模組開發與架構分析 第二版)

實際上在騰訊這邊的 C++ 後臺開發,也是類似的,本身有非常成熟的基於 C++ 的微服務體系,大多數開發也只需要關注業務邏輯就好,不過還是會要求 Linux 系統程式設計、網路程式設計等能力。 這裡推薦大家可以看看騰訊課堂零聲學院 Linux C/C++ 高階開發架構的【免費】課程:

C/C++Linux伺服器開發/後臺架構師【零聲學院】-學習影片教程-騰訊課堂

課程內容的話和騰訊C++後臺開發T8職級技術棧對標,圍繞資料結構與演算法、資料庫、網路、作業系統、網路程式設計、分散式架構等方面全面提升,值得學習一波~

還有一份大廠面經集合:

Linux C++後臺開發自學路線,看完醍醐灌頂

和技術路線總結圖:

Linux C++後臺開發自學路線,看完醍醐灌頂

Linux C++後臺開發自學路線,看完醍醐灌頂

稍等片刻。。。正在載入中