1. gzyueqian
      13352868059

      C/C++程序員的經(jīng)驗分享應(yīng)該怎么學(xué)習(xí)C語言

      更新時間: 2018-10-06 12:00:00來源: C/C++瀏覽量:2500

          作為一個經(jīng)驗豐富的C/C++程序員, 肯定親手寫過各種功能的代碼, 比如封裝過數(shù)據(jù)庫訪問的類, 封裝過網(wǎng)絡(luò)通信的類,封裝過日志操作的類, 封裝過文件訪問的類, 封裝過UI界面庫等, 也在實(shí)際的項目中應(yīng)用過, 但是回過頭仔細(xì)想想,其實(shí)以前自己寫過的這些代碼,只能是在特定的項目或者特定的環(huán)境中使用, 對于自己來說, 在不同的項目中應(yīng)用, 只需要復(fù)制代碼, 改改也就可以了, 因為自己寫的代碼自己很熟悉。問題是, 你封裝的這些庫, 在給別人使用的時候, 別人用起來是否很方便, 跨平臺方面是不是也很通用, 性能是不是足夠的好, 是不是支持多線程, 功能是不是也足夠強(qiáng)大,可以適用于各種不同的需求。如果你上面這些都做到了, 證明你在這個庫上確實(shí)花費(fèi)了一番功夫, 經(jīng)過了持續(xù)的改進(jìn)和優(yōu)化。
          在日常的開發(fā)中, 作為一個程序員, 很多東西已經(jīng)沒有必要再重新開發(fā)了, 可以直接拿過來使用, 畢竟21世紀(jì)都已經(jīng)過了N年了。我們沒有必要重新發(fā)明輪子(不可否認(rèn)發(fā)明輪子的過程可以學(xué)到很多東西,我就是這么走過來的)。
          下面結(jié)合自己多年的開發(fā)經(jīng)驗, 想到哪里寫到哪里, 希望對新人有一定的幫助。
          一、網(wǎng)絡(luò)
          網(wǎng)絡(luò)庫必須掌握 ACE 和 libevent, 一個是重量級的網(wǎng)絡(luò)庫, 一個是輕量級的網(wǎng)絡(luò)庫。仔細(xì)想想,現(xiàn)在那個程序不用網(wǎng)絡(luò)啊。不懂網(wǎng)絡(luò), 你將寸步難行啊。 熟悉這兩個開源庫的前提是你必須懂socket的原理, 給大家推薦的好書就是 《UNIX網(wǎng)絡(luò)編程》,看懂這本書就可以了, 其他的什么《windows網(wǎng)絡(luò)編程》這些都不用看, 因為網(wǎng)絡(luò)編程,你學(xué)會了伯克利的套接字, 你就可以在任何平臺上進(jìn)行網(wǎng)絡(luò)編程了, 不需要學(xué)什么windows下的網(wǎng)絡(luò)編程, 因為windows下的網(wǎng)絡(luò)也是從伯克利套接字搞過來的, 如果你學(xué)習(xí)《windows網(wǎng)絡(luò)編程》, 那么你那天在linux,unix下進(jìn)行網(wǎng)絡(luò)編程,你還得在學(xué)習(xí)一下。沒有那個必要。
           二、數(shù)據(jù)庫
          數(shù)據(jù)庫嘛, 開源的Mysql和開源的PostgreSQL只要懂其中一個就可以了, 商業(yè)數(shù)據(jù)庫在掌握一個Oracle就可以了,文件數(shù)據(jù)庫掌握 sqlite。?不過請大家注意, 不要被上面數(shù)據(jù)庫名字給迷惑了, 數(shù)據(jù)庫的本質(zhì)是SQL語句, 一定要懂?dāng)?shù)據(jù)庫的基本原理,熟練應(yīng)用SQL語言,懂?dāng)?shù)據(jù)庫的優(yōu)化,存儲過程等。數(shù)據(jù)庫的原理搞懂了, 拿什么數(shù)據(jù)庫過來都輕松掌握, 就不會在乎是Mysql還是Oracle了。
          三、日志操作
          日志操作推薦大家熟悉 log4cpp這個日志庫, 支持多線程, 日志重定向到網(wǎng)絡(luò)等都有, 反正你能想到的日志的功能, 都有。
          日志嘛,一個是方便查找問題, 方便記錄程序運(yùn)行的一些情況。這是必須的。
          四、管理后臺
          眾所周知, 寫程序是給其他人用的,不是自己用, 所以在程序的易用性上,多給對方提供一些可以直接查看的管理界面, 顯得分成重要。為程序提供一個web的管理界面,方便用戶登錄上去查看程序的各種信息, 很有必要。
          我這里有一個方便的web后臺管理的http實(shí)現(xiàn), 可以方便的集成到應(yīng)用程序中。在IE里面輸入監(jiān)聽的端口,就可以查看程序的狀態(tài)。代碼還沒有仔細(xì)整理。有需要的弟兄可以給我留言, 給大家發(fā)。
          五、讀取配置文件
          所有的程序都必須有配置文件, 方便配置一些項目, 為程序提供靈活性。 所以寫程序,必須有讀取配置文件的封裝類。
          六、內(nèi)存池
          所有的進(jìn)程都需要分配內(nèi)存, 對C/C++來說, 分配和管理內(nèi)存是已經(jīng)很有挑戰(zhàn)性的工作。
           給大家推薦 nedmalloc 這個開源的內(nèi)存池庫。nedmalloc是一個跨平臺的高性能多線程內(nèi)存分配庫,很多庫都使用它。
          七、緩存庫
          眾所周知, 緩存庫用得多的就是 memcache 了。在做數(shù)據(jù)庫開發(fā)的時候特別有用。
          八、腳本
          腳本是一個很有意思的東西,很多功能,其實(shí)我們只要寫個腳本就可以完成,代碼量少,開發(fā)速度快。
          必須掌握的腳本,比較通用的要算 perl 了, 很古老的語言,但是功能太強(qiáng)大了。?我可以保證的說,.net,java能干的工作,肯定可以讓perl來干。 C能干的, perl不一定能干。 perl作為linux, unix的系統(tǒng)集成的腳本語言,必須學(xué)會。
          lua 語言, 這個語言, 在游戲行業(yè)用得比較多。不推薦學(xué)。
          python 腳本, 功能很強(qiáng)大, 推薦學(xué)。
          上面這些是所有程序都會用到的比較通用的功能。
          在不同的應(yīng)用領(lǐng)域, 需要掌握不同開源庫, 比如搞游戲開發(fā)的, 可能需要掌握開源的UI庫CEGUI, 開源的3D引擎OGRE等。
          搞分布式開發(fā)的可能會有分布式的文件系統(tǒng)庫等。
          今天就為大家介紹到這里, 慢慢完善慢慢補(bǔ)充。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线播放免费人成视频观 | 亚洲人成网在线播 | 色香欲亚洲天天综合网 | 日韩精品中文字幕一区二区三区 | 色一情一乱一交一区 | 亚洲欧美日韩中文在线不卡网 |