web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...
C/C++服務(wù)器開(kāi)發(fā)7大常用開(kāi)源庫(kù),在這里簡(jiǎn)單介紹一下。
1、OpenSSL
OpenSSL是一個(gè)開(kāi)放源代碼的安全套接字層密碼軟件庫(kù),囊括主要的密碼算法、常用的密鑰和證書(shū)封裝管理功能及SSL協(xié)議,應(yīng)用程序可以使用這個(gè)包來(lái)進(jìn)行安全通信,避免竊聽(tīng),同時(shí)確認(rèn)另一端連接者的身份。
這個(gè)庫(kù)廣泛被應(yīng)用在互聯(lián)網(wǎng)的網(wǎng)頁(yè)服務(wù)器上,在使用Https的應(yīng)用程序中也需要用到這個(gè)庫(kù)來(lái)支撐Https業(yè)務(wù)。
2、TinyXML
TinyXML是一個(gè)開(kāi)源的原生C++的XML解析庫(kù),能夠在Windows或Linux中編譯,同時(shí)TinyXML提供完整的在線文檔,方便開(kāi)發(fā)和使用。
這個(gè)解析庫(kù)既能構(gòu)建XML格式數(shù)據(jù),也能解析XML數(shù)據(jù)。通過(guò)解析XML文件,然后在內(nèi)存中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹(shù)。
目前,由于其簡(jiǎn)便性和穩(wěn)定性,使用ZLib license(可以用于開(kāi)源和商業(yè))等原因,TinyXML已經(jīng)廣泛被用于開(kāi)源社區(qū)和商業(yè)系統(tǒng)中。
3、JsonCPP
JSON是一個(gè)輕量級(jí)數(shù)據(jù)交換格式,其可讀性好,數(shù)據(jù)量比XML格式小,被廣泛作為網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)格式。
JsonCpp是一個(gè)序列化反序列JSON格式的開(kāi)源C++庫(kù),被C++程序廣泛使用(包括Chromium項(xiàng)目)。JsonCpp還有一個(gè)重要特性是其支持在JSON格式內(nèi)注釋,這對(duì)于使用JSON格式作為配置文件很有意義,可以給配置添加注釋說(shuō)明其用途。
一般情況下,客戶(hù)端在和Web服務(wù)器的交互通信中,交互的數(shù)據(jù)都是用JSON格式,組裝和解析JSON數(shù)據(jù)都需要用到JsonCpp庫(kù)。
4、ProtoBuf
ProtoBuf是google 的一種數(shù)據(jù)交換的格式,它獨(dú)立于語(yǔ)言,獨(dú)立于平臺(tái)。google 提供了多種語(yǔ)言的實(shí)現(xiàn):java、c#、c++、go 和 python,每一種實(shí)現(xiàn)都包含了相應(yīng)語(yǔ)言的編譯器以及庫(kù)文件。由于它是一種二進(jìn)制的格式,比使用 xml 進(jìn)行數(shù)據(jù)交換快許多。可以把它用于分布式應(yīng)用之間的數(shù)據(jù)通信或者異構(gòu)環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進(jìn)制數(shù)據(jù)傳輸格式,可以用于諸如網(wǎng)絡(luò)傳輸、配置文件、數(shù)據(jù)存儲(chǔ)等諸多領(lǐng)域。
5、Libevent
Libevent 是一個(gè)用C語(yǔ)言編寫(xiě)的、輕量級(jí)的開(kāi)源高性能事件通知庫(kù),主要有以下幾個(gè)亮點(diǎn):事件驅(qū)動(dòng)( event-driven),高性能;輕量級(jí),專(zhuān)注于網(wǎng)絡(luò),不如 ACE 那么臃腫龐大;源代碼相當(dāng)精煉、易讀;跨平臺(tái),支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復(fù)用技術(shù), epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時(shí)器和信號(hào)等事件;注冊(cè)事件優(yōu)先級(jí)。
Libevent 已經(jīng)被廣泛的應(yīng)用,作為底層的網(wǎng)絡(luò)庫(kù)。著名分布式緩存軟件memcached也是基于Libevent的,而且libevent在使用上可以做到跨平臺(tái),而且根據(jù)libevent官方網(wǎng)站上公布的數(shù)據(jù)統(tǒng)計(jì),似乎也有著非凡的性能。還有很多諸如Vomit、 Nylon、 Netchat等也在使用Libevent的。
6、TCMalloc
TCMalloc 是 Google 開(kāi)發(fā)的內(nèi)存分配器,在不少項(xiàng)目中都有使用,例如在 Golang 中就使用了類(lèi)似的算法進(jìn)行內(nèi)存分配。它具有現(xiàn)代化內(nèi)存分配器的基本特征:對(duì)抗內(nèi)存碎片、在多核處理器能夠 scale。據(jù)稱(chēng),它的內(nèi)存分配速度是 glibc2.3 中實(shí)現(xiàn)的 malloc的數(shù)倍。現(xiàn)在被廣泛用到各大應(yīng)用系統(tǒng)中。這個(gè)模塊也可以用來(lái)讓MySQL在高并發(fā)下內(nèi)存占用更加穩(wěn)定。
7、memcached
memcached是一套分布式的快取系統(tǒng),與redis相似,當(dāng)初是Danga Interactive為了LiveJournal所發(fā)展的,但被許多軟件(如MediaWiki)所使用。這是一套開(kāi)放源代碼軟件,以BSD license授權(quán)協(xié)議發(fā)布。
memcached缺乏認(rèn)證以及安全管制,這代表應(yīng)該將memcached服務(wù)器放置在防火墻后。
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開(kāi)發(fā)的一款軟件。已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴(kuò)展性的重要因素。許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。
但隨著數(shù)據(jù)量的增大、訪問(wèn)的集中,就會(huì)出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫(kù)響應(yīng)惡化、網(wǎng)站顯示延遲等重大影響。
這時(shí)就該memcached大顯身手了。memcached是高性能的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過(guò)緩存數(shù)據(jù)庫(kù)查詢(xún)結(jié)果,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。
總結(jié)
以上是生活随笔為你收集整理的web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux 谷歌浏览器设置代理_linu
- 下一篇: C++和Rust_Kotlin、Rust