年薪20W的C語言C+工程師需要掌握哪些技能,安利一下拴魄!

(一)C語言

作為一名C程序員鱼鸠,熟練掌握C語言是最基本的一項技能。關于如何學好C語言羹铅,以及C語言話題的討論蚀狰,網(wǎng)上有很多經(jīng)典的文章。很多人工作一段時間以后都自認為自己的C語言水平已經(jīng)很高了职员÷樘#可實際在工作中,接觸的東西也多了焊切,開源項目多了以后扮授,才發(fā)現(xiàn)自己的C語言能力太一般了芳室。宏函數(shù)千變?nèi)f化的寫法,指針百花繚亂的用法…等等刹勃。寫代碼時堪侯,應常常問自己:這個行為是C語言規(guī)范定義的嗎?如果是荔仁,是C89還是C99伍宦?我現(xiàn)在用的編譯器支持嗎?如果不是C語言規(guī)范定義的乏梁,那么在程序運行的這個平臺次洼,行為是確定的嗎?所以建議大家平時可以多想想這些問題遇骑,查查資料卖毁,相信一定會對C語言有更深的理解。

(二)UNIX/Linux系統(tǒng)編程

在UNIX/Linux系統(tǒng)上開發(fā)程序落萎,掌握系統(tǒng)編程API是必不可少的技能亥啦。而這方面的經(jīng)典書籍都是一些大部頭的英文著作,讓人望而生畏练链。首先可以先找一本口碑不錯的中文書先看一下禁悠,了解一下都有哪些種類的API。這樣以后用到時兑宇,再去精讀經(jīng)典英文著作里的相關章節(jié)碍侦,或是查man手冊。此外隶糕,如果有時間瓷产,可以學習一下經(jīng)典的開源項目,了解這些開源項目是如何使用這些API的枚驻。舉個例子濒旦,Redis是很多人推薦的一個很不錯的學習C語言的開源項目。在閱讀代碼時再登,會看到保存數(shù)據(jù)到文件時會用到fsync函數(shù)尔邓,再去深入地了解一下這個函數(shù)的作用。這樣比單純地去看那些著作效果要好很多锉矢。

(三)網(wǎng)絡編程及相關知識

關于網(wǎng)絡方面梯嗽,以下三點是必會的技能:

a)網(wǎng)絡協(xié)議。在日常的工作中沽损,大家接觸和使用最多的無疑是TCP/IP協(xié)議族灯节。此外,由于工作領域不同,也可能用到其它的協(xié)議炎疆。比方說卡骂,做電信相關的程序開發(fā),平時可能接觸SCTP協(xié)議會更多一些形入。對于這些協(xié)議全跨,掌握最基本的知識是必須的,其它的邊邊角角知識可以等到用時再查亿遂。舉例來說浓若,TCP協(xié)議的“三次握手”,“四次揮手”崩掘,“TIME-WAIT狀態(tài)”這些基本的知識點要弄明白,其它的邊角知識學完老不用忘得也快少办,還是用時google一下效率更高苞慢。

b)Socket編程。Socket編程的經(jīng)典書籍一點不比講系統(tǒng)編程的書薄英妓,所以可以選一本相對薄點挽放,口碑不錯的精讀一下,這樣基本就掌握的百分之五蔓纠、六十了辑畦。另外有時間還是看一下經(jīng)典的開源代碼。這里還拿Redis舉例腿倚,Redis里關于處理網(wǎng)絡連接和通信的代碼量不大纯出,而且基本涵蓋了所有常見的UNIX平臺,看完以后一定受益匪淺敷燎。

c)協(xié)議分析工具暂筝。TCPdump、snoop(Solaris平臺工具)硬贯、wireshark等這些工具不僅能幫助我們抓取數(shù)據(jù)包焕襟,還能分析數(shù)據(jù)包,這對debug網(wǎng)絡程序有非常大的幫助饭豹。所以鸵赖,我們至少要掌握這些工具最常用的功能。此外拄衰,對于開放源代碼的工具它褪,我們更是可以從代碼中學到很多知識。舉例來說翘悉,做短信相關的項目列赎,可以從wireshark的分析短信協(xié)議的代碼里學到很多東西垛贤,這可以幫助開發(fā)者對短信協(xié)議有了更清晰的理解。

?關于怎么快速學C/C++游戲編程黍聂,有什么方法腹纳,這個問題,想必大家都已經(jīng)心中有數(shù)了诗越,打算深入了解這個行業(yè)的朋友砖瞧,可以加下小編上面的C/C++游戲編程學習裙【五 八 八,零 九 零嚷狞,九 四 二】块促,不管你是小白還是大牛,小編我都歡迎床未,不定期分享干貨竭翠,包括小編自己整理的一份2018最新的C/C++資料和0基礎入門教程,歡迎初學和進階中的小伙伴薇搁。

(四)腳本編程能力

一提到腳本編程斋扰,大家首先想到的可能就是Bash shell腳本編程了。不錯啃洋,在Unix/Linux上传货,Bash shell也許就是用的最廣泛的腳本編程語言。應用開發(fā)工程師主要用Bash shell做兩個方面的工作:a)用于編寫監(jiān)控服務腳本宏娄;b)寫一些簡單的單元測試腳本问裕,比如循環(huán)發(fā)一些命令,等等孵坚。但是Bash shell的功能遠遠要比這些強大粮宛。一些高手用Bash shell編程語言寫出了很好玩的游戲,也有人做出了很cool的網(wǎng)絡應用卖宠。所以建議大家有興趣可以多了解一下Unix/Linux的這層“殼”窟勃。當然,你也可以選擇學習Python逗堵、Perl秉氧、Ruby等。不過相比這些語言蜒秤,Bash shell至少你不用自己去安裝汁咏,而且它能做的事同樣很強大。

(五)操作系統(tǒng)及CPU體系結(jié)構(gòu)

也許有一天作媚,你會碰到這樣的情景:你的程序在Solaris上會發(fā)生core dump攘滩,在Linux上卻運行的好好的。經(jīng)過一番艱苦的debug纸泡,最后得到的原因是兩種操作系統(tǒng)對線程的調(diào)度策略不一樣漂问,這會使一個對全局變量沒有加鎖就訪問的bug在Linux上很難出現(xiàn)。所以你需要盡可能地去了解你使用的操作系統(tǒng),這樣無論對寫程序還是debug都會有很大的幫助蚤假。比如栏饮,你需要了解進程的內(nèi)存布局,這樣你就知道棧和堆到底在內(nèi)存的哪段空間磷仰,為什么內(nèi)存寫越界有時會core dump袍嬉,有時沒事。

除了操作系統(tǒng)灶平,了解CPU的體系結(jié)構(gòu)也是一門必修課伺通。比方說,SPARC CPU要求字節(jié)對齊逢享,而X86 CPU則沒有這個要求罐监。又比如SPARC CPU是大端模式,而X86 CPU是小端模式瞒爬,這就要求你對像位域這樣的定義要格外小心弓柱。你還要了解你使用的CPU的匯編語言,至少能大概看懂疮鲫。因為有些時候吆你,當你從C代碼中找不出bug的原因時弦叶,就需要你“透過現(xiàn)象看本質(zhì)”俊犯,從匯編代碼層面看看到底發(fā)生了什么。

(六)編譯器和調(diào)試器

“工欲善其事伤哺,必先利其器”燕侠。編譯器負責把源代碼生成可執(zhí)行文件,而調(diào)試器則是在程序出現(xiàn)bug時立莉,用來“降妖除魔”的不二神器绢彤。以大家最熟悉的gcc和gdb為例子。

gcc有很多編譯選項蜓耻,除了要熟悉像-O茫舶,-g這些最基本的選項,建議大家可以多了解一些其它不常見的選項刹淌。因為這些選項很可能幫助我們找到程序的一些bug饶氏。舉個例子,在比較新的gcc版本里有勾,增加了-fstack-protector這個選項疹启,而它可以幫助我們檢查到緩沖區(qū)溢出這種bug。此外蔼卡,你還可能碰到這種情況喊崖,一個bug總是發(fā)生在程序優(yōu)化后的版本,而不會出現(xiàn)在沒經(jīng)過優(yōu)化的版本。所以荤懂,多了解你的編譯器茁裙,你就可以更好地了解你的程序是如何生成的。

一個程序員不可能不碰到bug势誊,而這個時候呜达,調(diào)試器就是最好的工具∷诔埽可以說查近,在遇到bug時調(diào)試技巧和手段是否豐富是衡量一個程序員的能力和水平的重要參考。除此以外挤忙,gdb另一個重要用途就是分析程序的core dump文件霜威。程序的core dump文件好比一樁刑事案件的“犯罪現(xiàn)場”,而gdb則是刑偵官員用來在現(xiàn)場提取線索的工具册烈。對gdb越熟悉戈泼,就越能從core dump文件提取有價值的信息,也就越有助于我們定位到程序bug的“root cause”赏僧。

(七)DTrace/SystemTap

DTrace是由Sun的幾位才華橫溢的工程師開發(fā)的大猛,最開始只支持Solaris操作系統(tǒng),現(xiàn)在FreeBSD和Mac OS X也都支持了淀零。Linux上類似的工具有SystemTap挽绩,也有人把DTrace移植到Linux上,不過效果似乎并不好驾中。簡單地說唉堪,DTrace可以幾乎不會在對整個系統(tǒng)有任何性能影響下,讓你了解你的程序所發(fā)生的一切肩民。這對分析程序的熱點(“Hot spot”)唠亚,了解程序的執(zhí)行流程,定位程序bug都有很大的幫助持痰。有些時候灶搜,DTrace可能是你唯一的工具。舉例來說工窍,有個程序只發(fā)生在生產(chǎn)環(huán)境割卖,而在實驗室環(huán)境無法復現(xiàn)(當然,理論上任何bug都可以復現(xiàn)移剪,只是我們沒有找到復現(xiàn)條件究珊。)。你不可能在你懷疑的代碼打上斷點纵苛,然后用gdb去調(diào)試剿涮。這時你只能借助于DTrace言津,通過它去了解程序到底是如何運行的,當時的變量值是什么取试。此外悬槽,DTrace還可以幫你了解操作系統(tǒng)的kernel,這會滿足很多geek的好奇心瞬浓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末初婆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猿棉,更是在濱河造成了極大的恐慌磅叛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萨赁,死亡現(xiàn)場離奇詭異弊琴,居然都是意外死亡,警方通過查閱死者的電腦和手機杖爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門敲董,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人慰安,你說我怎么就攤上這事腋寨。” “怎么了化焕?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵萄窜,是天一觀的道長。 經(jīng)常有香客問我锣杂,道長脂倦,這世上最難降的妖魔是什么番宁? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任元莫,我火速辦了婚禮,結(jié)果婚禮上蝶押,老公的妹妹穿的比我還像新娘踱蠢。我一直安慰自己,他們只是感情好棋电,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布茎截。 她就那樣靜靜地躺著,像睡著了一般赶盔。 火紅的嫁衣襯著肌膚如雪企锌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天于未,我揣著相機與錄音撕攒,去河邊找鬼陡鹃。 笑死,一個胖子當著我的面吹牛抖坪,可吹牛的內(nèi)容都是我干的萍鲸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼擦俐,長吁一口氣:“原來是場噩夢啊……” “哼脊阴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚯瞧,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嘿期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后埋合,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秽五,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年饥悴,在試婚紗的時候發(fā)現(xiàn)自己被綠了坦喘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡西设,死狀恐怖瓣铣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贷揽,我是刑警寧澤棠笑,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站禽绪,受9級特大地震影響蓖救,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜印屁,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一循捺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雄人,春花似錦从橘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旗吁,卻和暖如春踩萎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背很钓。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工香府, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翻具,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓回还,卻偏偏與公主長得像裆泳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柠硕,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容