網(wǎng)絡(luò)io模型的書(shū)籍 為什么有很多出名開(kāi)源的C/C 方面的高性能網(wǎng)絡(luò)庫(kù),比如libevent,boost-asio,有些企業(yè)還要自己寫(xiě)?
為什么有很多出名開(kāi)源的C/C 方面的高性能網(wǎng)絡(luò)庫(kù),比如libevent,boost-asio,有些企業(yè)還要自己寫(xiě)?我認(rèn)為,是構(gòu)建輪子還是直接使用開(kāi)源庫(kù),很大程度上取決于部門(mén)負(fù)責(zé)人的個(gè)人喜好。曾幾何時(shí)
為什么有很多出名開(kāi)源的C/C 方面的高性能網(wǎng)絡(luò)庫(kù),比如libevent,boost-asio,有些企業(yè)還要自己寫(xiě)?
我認(rèn)為,是構(gòu)建輪子還是直接使用開(kāi)源庫(kù),很大程度上取決于部門(mén)負(fù)責(zé)人的個(gè)人喜好。曾幾何時(shí),c開(kāi)發(fā)人員熱衷于重新構(gòu)建輪子,那么為什么有些企業(yè)要自己編寫(xiě)呢?我在項(xiàng)目開(kāi)始時(shí)不知道這個(gè)庫(kù)的存在,我不想以后再介紹它。
2)許多第三方庫(kù)依賴(lài)于許多其他第三方庫(kù)。要引進(jìn)a館,就得引進(jìn)B館、C館、D館,這無(wú)疑增加了院系成員的學(xué)習(xí)成本。
3)第三方開(kāi)源庫(kù)通常會(huì)頻繁更新。如果你知道有一個(gè)bug,你想更新它嗎?基礎(chǔ)庫(kù)的更新無(wú)疑會(huì)花費(fèi)更多的開(kāi)發(fā)時(shí)間和測(cè)試時(shí)間。
4)使項(xiàng)目整體可控。一旦引入的開(kāi)放源代碼庫(kù)出現(xiàn)問(wèn)題并且項(xiàng)目團(tuán)隊(duì)不熟悉它,這將是災(zāi)難性的。
5)現(xiàn)有開(kāi)源庫(kù)過(guò)于復(fù)雜,學(xué)習(xí)成本高,團(tuán)隊(duì)成員水平參差不齊。
最后,附上一本我前段時(shí)間讀過(guò)的書(shū)。
本文是作者《一個(gè)程序員的奮斗史》悟空問(wèn)答原創(chuàng)文章,未經(jīng)允許轉(zhuǎn)載,抄襲將被追究
在windows平臺(tái)網(wǎng)絡(luò)io模型都有哪些?
IO分為網(wǎng)絡(luò)IO和磁盤(pán)IO。對(duì)于網(wǎng)絡(luò)IO,epoll是可以的。但是對(duì)于瓷盤(pán)IO,沒(méi)有完美的方法,所以都采用多線程阻塞模擬。區(qū)別在于windows下的IOCP是系統(tǒng)內(nèi)核提供的線程池,而Linux和其他線程池則是在用戶(hù)層提供的。Libeio和libev由node的早期版本使用。libuv提供之后,它們就不再使用了。
在做程序員的道路上,你掌握了什么概念或技術(shù)使你感覺(jué)自我提升突飛猛進(jìn)?
我是甲方的ERP程序員,公司剛推出ERP系統(tǒng)時(shí),大家都覺(jué)得上帝的存在太復(fù)雜了。
上線后,各種問(wèn)題層出不窮,項(xiàng)目已通過(guò)驗(yàn)收。乙方一聽(tīng)我們的問(wèn)題,就會(huì)有兩個(gè)動(dòng)作:1)這個(gè)問(wèn)題不在需求范圍內(nèi),需要付費(fèi)解決;2)這個(gè)問(wèn)題這個(gè)版本沒(méi)有解決,下一個(gè)版本可以解決。
顯然,這是個(gè)小問(wèn)題。為什么不能解決?核心原因:沒(méi)有源代碼,不知道從哪里開(kāi)始。ERP歸根結(jié)底是對(duì)數(shù)據(jù)庫(kù)的添加、刪除和修改。直到我明白了這兩點(diǎn),ERP的“九字真言”終于越過(guò)了前三個(gè)字。(所謂ERP九字咒語(yǔ)是:先剛性,后固化,再優(yōu)化)。
我理解的兩點(diǎn)如下:1)真正理解ERP邏輯的人不是計(jì)算機(jī)工作者,而是業(yè)務(wù)骨干。ERP構(gòu)建了最常見(jiàn)、最核心的業(yè)務(wù)邏輯,體現(xiàn)在操作流程和功能接口上。只有業(yè)務(wù)骨干才能真正理解這種設(shè)計(jì)的必要性。
2)只要程序員與業(yè)務(wù)主干相結(jié)合,盡管沒(méi)有源代碼,但還是有辦法看到添加、刪除、修改和查詢(xún)的代碼是如何操作數(shù)據(jù)庫(kù)的。這是SQL事件探查器跟蹤程序。
兩者結(jié)合后,ERP維護(hù)將變得非常簡(jiǎn)單。畢竟,一個(gè)已經(jīng)上市幾十年的ERP產(chǎn)品具有很好的穩(wěn)定性和繼承性。那么,各種個(gè)性化報(bào)表的開(kāi)發(fā)就非常簡(jiǎn)單了。
隨著對(duì)業(yè)務(wù)編程越來(lái)越熟悉,這個(gè)團(tuán)隊(duì)將對(duì)ERP產(chǎn)品有非常透徹的了解,終于有一天。乙方要求增加維修費(fèi),我們想了想,沒(méi)有,我們自己維修吧。然后,我們將ERP的生產(chǎn)功能分離,自行定制開(kāi)發(fā),并逐步完善,越來(lái)越喜歡它。這是九字咒語(yǔ)的最后一個(gè)階段:優(yōu)化。
當(dāng)然,這一過(guò)程的實(shí)現(xiàn)得益于ERP產(chǎn)品開(kāi)發(fā)平臺(tái)的支持和自身的開(kāi)發(fā)邏輯。大型工廠(包括國(guó)外SAP)的ERP從財(cái)務(wù)模塊開(kāi)始,再到供應(yīng)鏈,再到制造,再到商業(yè)智能。這決定了每個(gè)模塊是松散耦合的。在演化過(guò)程中,采用了多種接口方式,從硬寫(xiě)數(shù)據(jù)庫(kù)到使用XML交換數(shù)據(jù),再到COM組件接口、API,甚至提出了整體開(kāi)發(fā)平臺(tái),并用開(kāi)發(fā)平臺(tái)重寫(xiě)業(yè)務(wù)文檔。基本上,這些資料可以在網(wǎng)上找到。如果你參加幾次由大工廠組織的開(kāi)發(fā)培訓(xùn),就更容易開(kāi)始。