1. 程式人生 > 其它 >服務端學習路線(聽別人說的,記錄以激勵自己)

服務端學習路線(聽別人說的,記錄以激勵自己)

一次學習時,視訊的最後講課老師分享了他的學習路線。覺得很有參考意義,特此記錄下來,以激勵自己。

工作五年以下,分以下幾個水平,其實我覺得可能劃分並不明顯。

1. 資料結構和演算法、設計模式
最小堆、紅黑樹、時間輪、b/b+樹, 布隆過濾器(redis擊穿)
排序(快排、希爾、歸併,堆排序)及時間複雜度和是否穩定
跳錶 redis 中zset的實現手法,通過生成多級的有序列表,達到接近二分查詢的速度。空間換時間。
責任鏈、過濾器、觀察者、代理、單例,工廠等設計模式
2. 中間元件程式設計
資料庫 redis(請求迴應模式,hirides - c driver) mysql(mysqlclient) nginx zeromq(bind, connect, send, recv).
nginx 配置
zeromq
zk (zoomkeeper) (c driver)
3. 網路IO
select poll epoll (邊緣觸發,水平觸發)
同步,非同步
阻塞, 非阻塞
libevent, libuv
reactor(epoll_wait) proactor(訊號 + 回撥)
4. linux 系統
iostat uptime
網路 netstat tcpdump iperf
dd umount
tail mutitail
htop top
vi sed grep awk
shell 指令碼
5. 開源框架
配置 xml json
指令碼 lua
協議 protobuffer, thrift, messagepack, flatbuffer
資料壓縮 zlib snappy
xxtea, openssl , tls
log4 cpp
nginx, lighttpd
協程 —> libco --> hock mysqlclient 同步阻塞操作改成同步非阻塞操作
6. 程式碼工程化
makefile, cmake, autoconf
git, svn
7. 效能測試
gtest, luatest, boost.test
wrk , webbench
對於上述這些,會用這些應用的話,老師說這是初級的水平(啊這,學廢了)。下面記一下五年以上的(也不知道自己能不能幹到那個時候)

0
明確方向
自律
2-3技術基友
1. 從原始碼學習
nginx
redis hash 時間輪 string hash
zeromq
skynet
2. 造輪子能力
中介軟體,記憶體池,執行緒池等
高併發io的實現 epoll reactor 這些
網路協議棧的實現
nginx模組
高併發鎖
3. 叢集能力
資料庫
nginx
zk
4. linux核心
5. 效能優化
mysql
linux
6. 運維部署 docker
7. 一線架構分析 (同樣的功能, 一線大廠怎麼實現的)