• <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ù)庫訪問的類, 封裝過網(wǎng)絡(luò)通信的類,封裝過日志操作的類, 封裝過文件訪問的類, 封裝過UI界面庫等, 也在實(shí)際的項(xiàng)目中應(yīng)用過, 但是回過頭仔細(xì)想想,其實(shí)以前自己寫過的這些代碼,只能是在特定的項(xiàng)目或者特定的環(huán)境中使用, 對(duì)于自己來說, 在不同的項(xiàng)目中應(yīng)用, 只需要復(fù)制代碼, 改改也就可以了, 因?yàn)樽约簩懙拇a自己很熟悉。問題是, 你封裝的這些庫, 在給別人使用的時(shí)候, 別人用起來是否很方便, 跨平臺(tái)方面是不是也很通用, 性能是不是足夠的好, 是不是支持多線程, 功能是不是也足夠強(qiáng)大,可以適用于各種不同的需求。如果你上面這些都做到了, 證明你在這個(gè)庫上確實(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ò)庫必須掌握 ACE 和 libevent, 一個(gè)是重量級(jí)的網(wǎng)絡(luò)庫, 一個(gè)是輕量級(jí)的網(wǎng)絡(luò)庫。仔細(xì)想想,現(xiàn)在那個(gè)程序不用網(wǎng)絡(luò)啊。不懂網(wǎng)絡(luò), 你將寸步難行啊。 熟悉這兩個(gè)開源庫的前提是你必須懂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ù)庫

             

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

             

                   三、日志操作

             

                         日志操作推薦大家熟悉 log4cpp這個(gè)日志庫, 支持多線程, 日志重定向到網(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)存池庫。nedmalloc是一個(gè)跨平臺(tái)的高性能多線程內(nèi)存分配庫,很多庫都使用它。

             

                   七、緩存庫

             

                         眾所周知, 緩存庫用得最多的就是 memcache 了。在做數(shù)據(jù)庫開發(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)域, 需要掌握不同開源庫, 比如搞游戲開發(fā)的, 可能需要掌握開源的UI庫CEGUI, 開源的3D引擎OGRE等。

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

             

             

             

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

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


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


            日批日出水久久亚洲精品tv| 亚洲国产成人久久精品99| 久久精品成人免费网站| 久久精品桃花综合| 久久天天躁狠狠躁夜夜av浪潮| 国内精品久久久久久中文字幕| 91精品久久久久久无码| 国产成人久久精品激情| 国产精品青草久久久久福利99 | 一本久久免费视频| 94久久国产乱子伦精品免费| 久久婷婷国产剧情内射白浆 | 亚洲欧美成人久久综合中文网| 久久精品aⅴ无码中文字字幕不卡| 亚洲国产精品无码久久久不卡| 久久99中文字幕久久| 亚洲国产综合久久天堂| 国产成人久久精品麻豆一区| 国产精品99久久99久久久| 日韩人妻无码一区二区三区久久99| 午夜精品久久久久久影视riav| 久久99精品久久久久久齐齐| 三上悠亚久久精品| 青青青青久久精品国产| 久久久99精品成人片中文字幕| 亚洲精品国产综合久久一线| 91精品久久久久久无码| 精品国产91久久久久久久a| 99久久久国产精品免费无卡顿| 久久99精品国产| 99热精品久久只有精品| av午夜福利一片免费看久久| 日本欧美久久久久免费播放网| 久久国产劲爆AV内射—百度| 国产香蕉久久精品综合网| 亚洲国产精品综合久久网络 | 中文精品久久久久人妻| 亚洲人成伊人成综合网久久久| 久久成人18免费网站| 色综合久久中文色婷婷| 人妻中文久久久久|