• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            C/C++程序員必須熟練應(yīng)用的開源項(xiàng)目 -- 轉(zhuǎn)

                   作為一個(gè)經(jīng)驗(yàn)豐富的C/C++程序員, 肯定親手寫過各種功能的代碼, 比如封裝過數(shù)據(jù)庫(kù)訪問的類, 封裝過網(wǎng)絡(luò)通信的類,封裝過日志操作的類, 封裝過文件訪問的類, 封裝過UI界面庫(kù)等, 也在實(shí)際的項(xiàng)目中應(yīng)用過, 但是回過頭仔細(xì)想想,其實(shí)以前自己寫過的這些代碼,只能是在特定的項(xiàng)目或者特定的環(huán)境中使用, 對(duì)于自己來說, 在不同的項(xiàng)目中應(yīng)用, 只需要復(fù)制代碼, 改改也就可以了, 因?yàn)樽约簩懙拇a自己很熟悉。問題是, 你封裝的這些庫(kù), 在給別人使用的時(shí)候, 別人用起來是否很方便, 跨平臺(tái)方面是不是也很通用, 性能是不是足夠的好, 是不是支持多線程, 功能是不是也足夠強(qiáng)大,可以適用于各種不同的需求。如果你上面這些都做到了, 證明你在這個(gè)庫(kù)上確實(shí)花費(fèi)了一番功夫, 經(jīng)過了持續(xù)的改進(jìn)和優(yōu)化。

             

                   在日常的開發(fā)中, 作為一個(gè)程序員, 很多東西已經(jīng)沒有必要再重新開發(fā)了, 可以直接拿過來使用, 畢竟21世紀(jì)都已經(jīng)過了N年了。我們沒有必要重新發(fā)明輪子(不可否認(rèn)發(fā)明輪子的過程可以學(xué)到很多東西,我就是這么走過來的)。

             

                   下面結(jié)合自己多年的開發(fā)經(jīng)驗(yàn), 想到哪里寫到哪里, 希望對(duì)新人有一定的幫助。

             

             

                    一、網(wǎng)絡(luò)

                          網(wǎng)絡(luò)庫(kù)必須掌握 ACE 和 libevent, 一個(gè)是重量級(jí)的網(wǎng)絡(luò)庫(kù), 一個(gè)是輕量級(jí)的網(wǎng)絡(luò)庫(kù)。仔細(xì)想想,現(xiàn)在那個(gè)程序不用網(wǎng)絡(luò)啊。不懂網(wǎng)絡(luò), 你將寸步難行啊。 熟悉這兩個(gè)開源庫(kù)的前提是你必須懂socket的原理, 給大家推薦的好書就是 《UNIX網(wǎng)絡(luò)編程》,看懂這本書就可以了, 其他的什么《windows網(wǎng)絡(luò)編程》這些都不用看, 因?yàn)榫W(wǎng)絡(luò)編程,你學(xué)會(huì)了伯克利的套接字, 你就可以在任何平臺(tái)上進(jìn)行網(wǎng)絡(luò)編程了, 不需要學(xué)什么windows下的網(wǎng)絡(luò)編程, 因?yàn)閣indows下的網(wǎng)絡(luò)也是從伯克利套接字搞過來的, 如果你學(xué)習(xí)《windows網(wǎng)絡(luò)編程》, 那么你那天在linux,unix下進(jìn)行網(wǎng)絡(luò)編程,你還得在學(xué)習(xí)一下。沒有那個(gè)必要。

             

             

                   二、數(shù)據(jù)庫(kù)

             

                         數(shù)據(jù)庫(kù)嘛, 開源的Mysql和開源的PostgreSQL只要懂其中一個(gè)就可以了, 商業(yè)數(shù)據(jù)庫(kù)在掌握一個(gè)Oracle就可以了,文件數(shù)據(jù)庫(kù)掌握 sqlite。 不過請(qǐng)大家注意, 不要被上面數(shù)據(jù)庫(kù)名字給迷惑了, 數(shù)據(jù)庫(kù)的本質(zhì)是SQL語句, 一定要懂?dāng)?shù)據(jù)庫(kù)的基本原理,熟練應(yīng)用SQL語言,懂?dāng)?shù)據(jù)庫(kù)的優(yōu)化,存儲(chǔ)過程等。數(shù)據(jù)庫(kù)的原理搞懂了, 拿什么數(shù)據(jù)庫(kù)過來都輕松掌握, 就不會(huì)在乎是Mysql還是Oracle了。

             

                   三、日志操作

             

                         日志操作推薦大家熟悉 log4cpp這個(gè)日志庫(kù), 支持多線程, 日志重定向到網(wǎng)絡(luò)等都有, 反正你能想到的日志的功能, 都有。

            日志嘛,一個(gè)是方便查找問題, 方便記錄程序運(yùn)行的一些情況。這是必須的。

             

                   四、管理后臺(tái)

             

                         眾所周知, 寫程序是給其他人用的,不是自己用, 所以在程序的易用性上,多給對(duì)方提供一些可以直接查看的管理界面, 顯得分成重要。為程序提供一個(gè)web的管理界面,方便用戶登錄上去查看程序的各種信息, 很有必要。

                         我這里有一個(gè)方便的web后臺(tái)管理的http實(shí)現(xiàn), 可以方便的集成到應(yīng)用程序中。在IE里面輸入監(jiān)聽的端口,就可以查看程序的狀態(tài)。代碼還沒有仔細(xì)整理。有需要的弟兄可以給我留言, 給大家發(fā)。

             

                   五、讀取配置文件

             

                         所有的程序都必須有配置文件, 方便配置一些項(xiàng)目, 為程序提供靈活性。 所以寫程序,必須有讀取配置文件的封裝類。

             

                   六、內(nèi)存池

             

                         所有的進(jìn)程都需要分配內(nèi)存, 對(duì)C/C++來說, 分配和管理內(nèi)存是已經(jīng)很有挑戰(zhàn)性的工作。

                         給大家推薦 nedmalloc 這個(gè)開源的內(nèi)存池庫(kù)。nedmalloc是一個(gè)跨平臺(tái)的高性能多線程內(nèi)存分配庫(kù),很多庫(kù)都使用它。

             

                   七、緩存庫(kù)

             

                         眾所周知, 緩存庫(kù)用得最多的就是 memcache 了。在做數(shù)據(jù)庫(kù)開發(fā)的時(shí)候特別有用。

             

                   八、腳本

             

                         腳本是一個(gè)很有意思的東西,很多功能,其實(shí)我們只要寫個(gè)腳本就可以完成,代碼量少,開發(fā)速度快。

                         必須掌握的腳本,比較通用的要算 perl 了, 很古老的語言,但是功能太強(qiáng)大了。 我可以保證的說,.net,java能干的工作,肯定可以讓perl來干。 C能干的, perl不一定能干。 perl作為linux, unix的系統(tǒng)集成的腳本語言,必須學(xué)會(huì)。

             

                         lua 語言, 這個(gè)語言, 在游戲行業(yè)用得比較多。不推薦學(xué)。

             

                         python 腳本, 功能很強(qiáng)大, 推薦學(xué)。

             

             

                    上面這些是所有程序都會(huì)用到的比較通用的功能。

             

                    在不同的應(yīng)用領(lǐng)域, 需要掌握不同開源庫(kù), 比如搞游戲開發(fā)的, 可能需要掌握開源的UI庫(kù)CEGUI, 開源的3D引擎OGRE等。

            搞分布式開發(fā)的可能會(huì)有分布式的文件系統(tǒng)庫(kù)等。

             

             

             

                    今天就為大家介紹到這里, 慢慢完善慢慢補(bǔ)充。

            posted on 2012-01-30 05:26 大龍 閱讀(580) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品久久久福利| 久久午夜无码鲁丝片秋霞 | 久久天天躁狠狠躁夜夜躁2O2O| 99久久国产亚洲综合精品| 亚洲AV日韩精品久久久久| 久久精品人人做人人爽电影| 久久久久国产精品麻豆AR影院 | 久久亚洲精品国产亚洲老地址 | 中文字幕亚洲综合久久2| 午夜欧美精品久久久久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 三级三级久久三级久久| 久久91精品国产91久久小草| 尹人香蕉久久99天天拍| 久久国产一区二区| 无码精品久久久天天影视 | 国产精品久久久久久久人人看| 久久精品国产亚洲AV高清热| 亚洲精品久久久www| 国产99久久九九精品无码| 久久综合久久综合久久| 麻豆AV一区二区三区久久| 国产精品成人99久久久久91gav| 一级做a爰片久久毛片毛片| 91久久婷婷国产综合精品青草| 免费一级做a爰片久久毛片潮| 国产成人精品久久二区二区| 亚洲AV无码久久精品蜜桃| 久久久精品久久久久影院| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久夜色精品国产网站| 亚洲精品无码久久一线| 日本精品一区二区久久久 | 亚洲AV无码一区东京热久久| 欧美成人免费观看久久| 久久夜色精品国产| 久久免费国产精品| 亚洲v国产v天堂a无码久久| 欧美日韩精品久久久久| 久久午夜福利电影| 久久国产精品99久久久久久老狼|