前言:mysql
小編也是從事c方面10多年的工做經驗、今天跟你們分享一下我總結出來的一系列 C/C Linux後臺服務器開發的學習路線。從Linux開發工程師-Linux後臺開發工程師-Linux高級互聯網架構師。ios
想必你們都知道從過後臺開發首先就是要選擇一種語言,小編今天跟你們分享是用C/C++ 作的後臺開發。因此想從事這方面的朋友得有C/C++的基礎。nginx
首先跟你們說的是從學習步驟:(Linux入門到精通篇)c++
1、Linux開發環境git
1.瞭解Linux環境搭建,瞭解LinuxC編程程序員
2.瞭解Linux安裝,命令使用,shell編程github
3.shell腳本實現檢測局域網內哪些ip地址機器宕機golang
2、Linux C編程web
1.Linux C編程 統計文件單詞數量正則表達式
包括:文件操做、文件指針
2.Linux C編程 實現通信錄
包括:結構體
3、Linux環境編程
1.併發下的計數方案
包括:互斥鎖、自旋鎖、原子操做
2.實現線程池
包括:線程隊列,任務隊列,條件變量
3.CPU與進程的關係
包括:進程操做,進程與CPU粘合,進程通訊
4.數據庫操做
包括:數據庫封裝,sql語句封裝,網絡鏈接封裝
4、網絡編程
1.DNS請求器
包括:UDP通訊,DNS協議,協議解析
2.實現http請求器 TCP客戶端
包括:TCP編程,HTTP請求協議
3.百萬級併發服務器 TCP服務器
包括:tcp,網絡io,Linux系統
總結:把以上知識點內容掌握以後你的Linux就已經比較成熟了,達到了一個Linux開發工程師的水平了。
熟練掌握上面的知識點後就能夠來了解一下後面的知識點了:(Linux後臺開發篇)
1、算法於設計
千里之行,始於足下。不積跬步,無以至千里。既能仰望星空又能腳踏實地
1.排序與查找
包括:插入排序、快速排序、希爾排序、桶排序、基數排序、歸併排序
2.經常使用算法
包括:布隆過濾器、字符串匹配KMP算法、回溯算法、貪心算法、推薦算法、深度 廣度優先
3.經常使用的數據結構
包括:平衡二叉樹、紅黑樹、B-樹、KMP算法、棧/隊列
4.經常使用設計模式
包括:單列模式、責任鏈模式、過濾器模式、發佈訂閱模式、代理模式、工廠模式
2、後臺組件編程
工欲善其事,必先利其器。後臺組件是開發的入門石
包括:MySQL安裝配置與遠程鏈接、數據操做源於SQL語句、存儲過程與事務處理、SQL函數,運算,臨時表、防數據丟失 備份與恢復、MySQL建庫建表建索引
2.消息隊列 ZeroMQ
包括:ZMQ編譯安裝與開發環境搭建、publisher-subscriber模式實現、request-response模式實現、Router-Dealer模式實現、消息隊列—性能分析
3.緩存 Redis
包括: Redis編譯安裝配置、客戶端全局惟一ID保存機制、Redis消息隊列機制 發佈訂閱、Redis事務實戰、Redis安全性能,數據備份與恢復、Redis分佈式鎖詳解
包括: Nginx開發介紹、反向代理負載均衡配置詳解、自定義協議upstream開發、子域名映射、服務器後臺攻擊預防、nginx雙虛擬主機
包括:Http第三方接口實現、異步Http請求、ngrok與Restlet、長鏈接與短連接
包括:ZK編譯安裝與C API開發環境、集羣管理與服務註冊、節點建立與監控、分佈式鎖的實現、ZK僞集羣部署與服務管理
7.NoSQL MongoDB
包括:MongDB安裝與開發介紹、MongoDB備份與恢復、MongoDB文檔操做、全文檢索與正則表達式、MongoDB建庫建集合
3、代碼工程化
優秀的工程師有優秀的代碼組織能力與代碼迭代能力。
1.架構工程
包括:工程參數配置與編譯 cmake、代碼規範與命名規則、文件命名與變量命名規則、腳本配置工具 autoconf、代碼工程組織架構 Makefile
包括: 分佈式版本控制系統 git、遠程倉庫,標籤管理、 github與碼雲、建立倉庫,導入,checkout、svn環境搭建與原理、 分支管理 衝突解決、產品代碼版本管理 SVN
4、網絡服務
網絡IO是網絡通訊的血管,數據是血液。血液的流動是不能離開血管的。
1.源碼實現
包括:服務器IO核心— epoll編程實戰、客戶端多網絡鏈接機制poll、文件IO管理select
2.框架
包括:高性能的時間循環 libev、跨平臺異步I/O libuv、跨平臺的C++庫 Boost.Asio、事件通知庫 libevent
3.理論
包括:阻塞型 BIO、異步IO AIO、非阻塞型IO NIO
5、開源框架
欲窮千里目,更上一層樓。站在巨人的肩膀上,看到窗外的景色。
1.TCP協議棧
包括:基於DPDK的高性能用戶態協議棧 f-stack、基於Netmap單線程協議棧 NtyTcp、精簡版tcp協議棧 LWIP
2.併發性
包括:用OpenCL的C++ GPU計算庫 Boost.Compute、Intel線程構件塊 Intel TBB、並行編程的異構系統的開放標準 OpenCL、C++11的反應性編程庫 C++ React
包括:Redis數據庫的C客戶端庫 hiredis、Facebook的嵌入鍵值的快速存儲 RocksDB、用於Sqlite3的C++對象關係映射 hiberlite
包括:Unicode 和全球化支持的C、C++ 和Java庫 IBM ICU、不一樣字符編碼之間的編碼轉換庫 libiconv、GNU gettext
5.壓縮
包括:很是緊湊的數據流壓縮庫 Zlib、快速壓縮和解壓縮 Snappy、很是快速的壓縮算法 LZ四、單一的C源文件,緊縮/膨脹壓縮庫 Miniz
6.日誌
包括:設計很是模塊化,而且具備擴展性 Boost.Log、靈活添加日誌到文件,系統日誌 Log4cpp、添加日誌到你的C++應用程序 templog、C++日誌庫,只包含單一的頭文件 easyloggingpp
7.多媒體庫
包括:開源音頻庫—跨平臺的音頻API OpenAL、網絡實時流媒體通訊 WebRTC、音頻和音樂數字信號處理庫 Maximilian、C++易用和高效的音頻合成 Tonic
包括:快速數據交換格式和RPC系統 Cap’n Proto、協議緩衝,谷歌的數據交換格式 ProtoBuf、高效的跨語言IPC/RPC Thrift、內存高效的序列化庫 FlatBuffers
9.XML庫
包括:Gnome的xml C解析器和工具包 LibXml二、單快速的C++CML解析器 TinyXML二、簡單快速的XML解析器 PugiXML、C++的xml解析器 LibXml++
10.腳本
包括:小型快速腳本引擎 Lua、谷歌的快速JavaScript引擎 V八、嵌入式腳本語言 ChaiScript、
11.Json庫
包括:進行編解碼和處理Jason數據的C語言庫 Jansson、C語言中的JSON解析和打印庫 ibjson、輕量級的JSON庫 libjson、C/C++的Jason解析生成器 Frozen
12.數學庫
包括:高質量的C++線性代數庫 Armadillo、數學圖形模板庫 GMTL、用於個高精度計算的C/C++庫 GMP、高級C++模板頭文件庫 Eigen
13.安全
包括:SSL,TLS和DTLS協議的安全通訊庫 GnuTLS、功能齊全的,開源加密庫 Openssl、有關加密方案的免費的C++庫 Cryto++
14.Web應用框架
包括:安全快速開源Web服務器 Lighttpd、於Qt庫的web框架 QDjango、高性能的HTTP和反向代理web服務器 Nginx
15.網絡庫
包括:C異步網絡開發庫 Dyad.c、多協議文件傳輸庫 Curl、高速模塊化的異步通訊庫 ZeroMQ、C++面向對象網絡工具包 ACE
16.異步事件
包括:事件通知庫 libevent、 跨平臺異步I/O libuv、功能齊全,高性能的時間循環 libev、網絡和底層I/O編程的跨平臺的C++庫 Boost.Asio
17.協程
包括:純c版的協程框架 ntyco、C++11實現協程庫, golang風格 libgo、微信支持8億用戶同時在線的底層IO庫 libco
6、性能測試
學而不思則罔,思而不學則殆。從技術反饋中理解知識的原理。
1.調試庫
包括:Boost測試庫 Boost.Test、內存調試性能分析工具 Valgrind、谷歌C++測試框架 GoogleTest、內存分配跟蹤庫 MemTrack
2.測試庫
包括:單元測試框架 minUnit、測試用例編寫 libtap、輕量級的C++單元測試框架 UnitTest++、自動化測試用例 gtest和luatest
3.性能工具
包括:高性能代碼構建系統 tundra、Http壓測工具 WRK、 網站壓測工具 webbench、高性能構建系統 FASTBuild
7、Linux系統
上帝關閉一扇門,就會打開一扇窗,Linux是程序員世界的另外一扇窗。
1.系統命令工具
包括:進程間通訊設施狀態 ipcs、Linux系統運行時長 uptime、CPU平均負載和磁盤活動 iostat、監控,收集和彙報系統活動 sar、監控多處理器使用狀況 mpstat、監控進程的內存使用狀況 pmap、系統管理員調優和基準測量工具 nmon、密切關注Linux系統 glances、查看系統調用 strace
包括:系統進程狀態 ps、虛擬內存統計工具 vmstat、控制檯的流量監控工具 vnstat、 進程監控工具 atop,htop、內存使用狀態 free
3.網絡參數工具
包括:Linux網絡統計監控工具 netstat、顯示和修改網絡接口控制器 ethtool、網絡數據包分析利刃 tcpdump、遠程登錄服務的標準協議 telnet、獲取實時網絡統計信息 iptraf、顯示主機上網絡接口帶寬使用狀況 iftop
4.磁盤參數工具
包括:磁盤卸載 umount、讀取、轉換並輸出數據 dd、文件系統系統 df、磁盤掛載 mount
5.日誌監控工具
包括:實時網絡日誌分析器 GoAccess、多窗口之下日誌監控 MultiTail、日誌分析系統 LogWatch/Swatch
6.參數監控工具
包括:監控apache網絡服務器總體性能 apachetop、ftp 服務器基本信息 ftptop、IO監控 iotop、電量消耗和電源管理 powertop、監控 mysql 的線程和性能 mytop、系統運行參數分析 htop/top/atop
總結:以上知識點比較多、可是想要真正瞭解後臺開發就必須要了解跟熟悉的掌握這些知識點內容。在你之後的工做中看的是會要用到。熟練掌握以上知識點內容你的水平就達到了後臺開發工程師了。
今天小編就跟你們分享到了這裏、後續還會更新一個c/c++ Linux高級互聯網架構師的學習路線、有興趣的朋友能夠關注一下小編哦。