asio網(wǎng)絡(luò)庫 為什么有很多出名開源的C/C 方面的高性能網(wǎng)絡(luò)庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?
為什么有很多出名開源的C/C 方面的高性能網(wǎng)絡(luò)庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?我認為,是構(gòu)建輪子還是直接使用開源庫,很大程度上取決于部門負責人的個人喜好。曾幾何時
為什么有很多出名開源的C/C 方面的高性能網(wǎng)絡(luò)庫,比如libevent,boost-asio,有些企業(yè)還要自己寫?
我認為,是構(gòu)建輪子還是直接使用開源庫,很大程度上取決于部門負責人的個人喜好。曾幾何時,c開發(fā)人員熱衷于重新構(gòu)建輪子,那么為什么有些企業(yè)要自己編寫呢?我在項目開始時不知道這個庫的存在,我不想以后再介紹它。
2)許多第三方庫依賴于許多其他第三方庫。要引進a館,就得引進B館、C館、D館,這無疑增加了院系成員的學習成本。
3)第三方開源庫通常會頻繁更新。如果你知道有一個bug,你想更新它嗎?基礎(chǔ)庫的更新無疑會花費更多的開發(fā)時間和測試時間。
4)使項目整體可控。一旦引入的開放源代碼庫出現(xiàn)問題并且項目團隊不熟悉它,這將是災(zāi)難性的。
5)現(xiàn)有開源庫過于復雜,學習成本高,團隊成員水平參差不齊。
最后,附上一本我前段時間讀過的書。
本文是作者《一個程序員的奮斗史》悟空問答原創(chuàng)文章,未經(jīng)允許轉(zhuǎn)載,抄襲將被追究
boost庫asio網(wǎng)絡(luò)編程,該怎么解決?
簡介助推。阿修是一個跨平臺的C庫,主要用于網(wǎng)絡(luò)等底層I/O編程。
在大量的網(wǎng)絡(luò)編程庫中,助推。阿修它于2005年加入boost,并在許多項目中得到了廣泛的測試和應(yīng)用
技術(shù)的深度和廣度相輔相成,相互促進。
通過增加深度,它可以幫助您通過類比學習,加快您的廣度擴展。
例如,分布式系統(tǒng)。如果你了解分布式系統(tǒng)的原理,比如Kafka分區(qū)和主從備份。當您學習其他分布式系統(tǒng)(如Hadoop)的原理時,您將更容易理解其體系結(jié)構(gòu)設(shè)計。從本質(zhì)上說,他們有同樣的問題要解決。它們也是分布式系統(tǒng)的基本問題。
當您學習到一定的深度時,通過增加廣度,也將幫助您更深入地了解技術(shù)。或者上面的例子。在您了解了Kafka、Hadoop和etcd之后,您會發(fā)現(xiàn)對于同一個問題有不同的解決方案。它們適合不同的場景或有不同的優(yōu)點和缺點。
以JVM的GC為例,有幾種不同的算法。通過比較,可以加深認識,拓展思路。
最后,提高您的系統(tǒng)理解和設(shè)計能力。它還可以幫助你建立一個完整的知識體系。
我分享了很多分布式動畫視頻。特殊演示系統(tǒng)原理。歡迎收看。
對于軟件工程師來說,如何平衡學習技術(shù)的深度和廣度?
例如,您會發(fā)現(xiàn)在開源庫中沒有您想要的接口,或者沒有您期望的方式。例如,如果要使用異步,則庫是同步的。
2. 不是每個開源庫都是可靠的。有時,庫的開發(fā)人員不考慮您的實際使用場景,這會導致庫根本無法使用或偶爾出現(xiàn)無法忍受的bug。
3. 你只需要一個簡單的函數(shù),但是開源庫的引入帶來了大量的接口和模塊,這使得簡單的問題變得復雜。
4. 使用時,需要考慮許可協(xié)議。開源并不意味著你可以自由使用它。
綜上所述:開源庫并非沒有使用成本,在一些實驗代碼或臨時測試工程中使用非常方便,但在企業(yè)產(chǎn)品開發(fā)中使用時需要考慮很多問題。
如果您想充分利用開放源碼庫,您仍然需要真正了解您正在使用的庫。只有當有問題的時候你才有能力去解決它。一旦您真正理解了,是否使用開源庫就無關(guān)緊要了。唯一的區(qū)別是你是否自己敲代碼。
為什么有很多出名開源的C/C 方面的高性能網(wǎng)絡(luò)庫比如libevent、boost-asio,但有些企業(yè)還要自己寫?
STL推薦閱讀侯杰大師的STL教程??赐曛?,你基本上可以開始了。至少整個框架可以自由應(yīng)用。去比力比力搜索。