RPC框架:brpc
github地址:https://github.com/apache/incubator-brpc
一句話推薦:如果把grpc理解成good rpc,那么brpc則是當(dāng)之無愧的better rpc!
強(qiáng)烈建議C++同學(xué)使用或?qū)W習(xí)的一個(gè)框架。brpc支持的協(xié)議眾多,不管是grpc還是thrift,亦或是HTTP+JSON都支持。并且是單端口支持多協(xié)議!基本上可以無縫集成到你現(xiàn)有的工作環(huán)境中。
另外brpc也集成http 、redis的client,基本不需要再依賴額外的庫去做請求HTTP服務(wù)或者請求redis的事了。
另外就是brpc的架構(gòu)設(shè)計(jì)上比之其他C++框架也是優(yōu)秀的,即使你公司不使用brpc,你通過閱讀brpc源碼和文檔也是大有收獲的。brpc的文檔堪稱一絕,巨細(xì)無遺。
json庫:rapidjson
github地址:Tencent/rapidjson
一句話推薦:盡管斯人已去,但江(知)湖(乎)永遠(yuǎn)留下他的傳說。
目前見過性能最后的json解析和序列化的庫。比老牌的json-cpp快一個(gè)量級(jí)。缺點(diǎn)是API著實(shí)難用,而且為了追求極致性能,淺拷貝居多,導(dǎo)致稍不注意就踩坑。
另外提醒一下,如果你項(xiàng)目中已經(jīng)使用了brpc那么其實(shí)不用額外安裝rapidjson的。因?yàn)閎rpc的thirdparty已經(jīng)集成了。
內(nèi)存管理庫:jemalloc
github地址:jemalloc/jemalloc
一句話推薦:放著我來!
個(gè)人感覺jemalloc比tcmalloc更好用,性能也更好。當(dāng)然也可能是tcmalloc我沒配置好。AnyWay,jemalloc幾乎不需要你費(fèi)心。直接鏈接進(jìn)去,對代碼無侵入。自動(dòng)就能提高性能。
序列化庫:protobuf
github地址:protocolbuffers/protobuf
一句話推薦:不管protobuf3有多少槽點(diǎn),它終將取代protobuf2,就像你從未聽說過protobuf1一樣
不多說了,在很多時(shí)候pb還是一個(gè)不錯(cuò)的配合rpc使用的序列化解決方案。首先是性能,其次是跨語言通信。當(dāng)然槽點(diǎn)也不少,之前知乎有個(gè)帖子專門吐槽來著。
gflags
github地址:https://github.com/gflags/gflags
一句話推薦:這個(gè)flag,你必須要立!
通過flag(俗稱開關(guān))。可以方便的調(diào)整一些邏輯分支的走向。也可以通過flag來配置一些參數(shù),無需每次新增配置文件和增加配置解析的邏輯。但是有時(shí)候如果依賴的第三方庫也用到了gflags,有同名的flag,編譯啟動(dòng)會(huì)有問題。
官方備胎:boost
github地址:boostorg/boost
一句話推薦:夢想還是要有的,萬一一不小心備胎轉(zhuǎn)正了呢?
我常說boost是C++官方標(biāo)準(zhǔn)的備胎,但這有失偏頗,應(yīng)該說是試金石。當(dāng)然在C++11之后,你用到的boost庫的地方會(huì)越來越少,但是也不是沒有用武之地。另外就是如果你編譯器沒有支持新的C++版本,比如C++17,那么有些特性你可以從boost里找尋。
矩陣計(jì)算庫:Eigen
主頁:Eigen
github地址:PX4/eigen
一句話推薦:感覺這個(gè)庫上手困難,不是因?yàn)槟悴欢瓹++,而是因?yàn)槟悴欢當(dāng)?shù)學(xué)!
這是一個(gè)線性代數(shù)的C++庫,主要采用的模板語法。在涉及到機(jī)器學(xué)習(xí)的一些C++工程中多有使用。