那么作為一個從C語言小白摸爬滾打碴开、入坑無數(shù)到成長為如今的高級C++游戲開發(fā)工程師毅该、高級C++服務(wù)端工程師、項目經(jīng)理潦牛、技術(shù)總監(jiān)眶掌、我想跟大家分享下大牛的學(xué)習(xí)心得與體會!
Linus曾說過:“C++是一門很恐怖的語言罢绽,而比它更恐怖的是很多不合格的程序員在使用著它”畏线,這個世界上最難的編程語言可能非C++莫屬了,呵呵良价,雖然有點夸張...... 但是寝殴, 大家記住,難度越高意味著含金量與競爭力越高明垢,越能把你和別人區(qū)分開來蚣常,所以,你在一開始就需要有很小心謹(jǐn)慎的態(tài)度痊银,并把C++當(dāng)成一種難以訓(xùn)服的猛獸來看待抵蚊。
最后,如果大家如果在自學(xué)遇到困難溯革,想找一個C++的學(xué)習(xí)環(huán)境贞绳,可以加入我們的C++學(xué)習(xí)圈,點擊我加入吧致稀,會節(jié)約很多時間冈闭,減少很多在學(xué)習(xí)中遇到的難題。
那么如果你只是一時興起抖单,并沒有真正沉下心來想學(xué)好一門語言萎攒,那么我不建議你學(xué),因為學(xué)習(xí)C++是痛苦的矛绘,沒有興趣耍休,那么這個學(xué)習(xí)過程將是一種折磨與煎熬!
門檻與含金量并存货矮,一旦你學(xué)會了C++羊精,可以說,很多語言對你而言也就不是難事了次屠。
一般呢园匹,學(xué)習(xí)C++的新手學(xué)員有以下幾種情況:
1.純小白(非計算機(jī)專業(yè)雳刺、沒學(xué)過任何編程語言)
2.接觸過C語言、但沒學(xué)好
針對第1裸违、2種情況掖桦,我建議一定要把C語言基礎(chǔ)打牢,如果C沒學(xué)好供汛,學(xué)C++會很受挫枪汪,打擊自信心,可以循序漸進(jìn)怔昨,不知道怎么學(xué)的可以關(guān)注我們雀久,我們有一站式的學(xué)習(xí)方案!
3.C語言已經(jīng)學(xué)的很好了趁舀,但沒接觸過C++
有了扎實的C語言基礎(chǔ)赖捌,恭喜,你可以開始學(xué)習(xí)C++了
4.C++基礎(chǔ)語法都學(xué)會了矮烹,然后想學(xué)點高級的越庇?
以我多年的C++游戲服務(wù)器開發(fā)經(jīng)驗,企業(yè)中真實對開發(fā)者的考察要求無非就那么幾點:
C++數(shù)據(jù)結(jié)構(gòu)奉狈,重點卤唉,最基礎(chǔ)的鏈表、隊列仁期,棧桑驱,排序算法,各種算法跛蛋,此乃程序的核心熬的。
C++泛型編程,模板赊级,各種項目中存在大量模板設(shè)計悦析,特別是框架,
C++多線程此衅,線程同步,線程池亭螟。 99%的項目一定用到挡鞍,列為重點。
Socket網(wǎng)絡(luò)編程预烙,各種并發(fā)網(wǎng)絡(luò)模型(Select WSASelect IOCP)
C++靜態(tài)庫墨微、動態(tài)鏈接庫dll ,開發(fā)項目中90%扁掸、SDK中一定用到翘县,無需精通最域,但必須掌握。
Win32 API 高級編程 锈麸, 重點镀脂,真實企業(yè)項目中大量用到win32 API ,一定有相關(guān)的經(jīng)驗忘伞。
5.C++進(jìn)階知識也會了薄翅,你需要學(xué)習(xí)基礎(chǔ)框架。
MFC框架 氓奈。 可選翘魄,雖說MFC在windows桌面運用中因為其復(fù)雜性越來越顯得過時了。但是其OO思想還是發(fā)揮的淋漓盡致舀奶,可以了解熟悉下暑竟,各種控件、對話框育勺、單文檔程序但荤、多文檔走一遍,不僅可以掌握桌面運用開發(fā)怀大,還可以再次鞏固面向?qū)ο蟮睦砟钌炊遥傊甅FC是個大雜燴,總會學(xué)點東西的化借。
QT框架. 跨平臺的應(yīng)用程序和用戶界面框架潜慎,linux與windows桌面應(yīng)用開發(fā)的優(yōu)秀框架。
GTK+(GIMP Toolkit) GIMP 一個功能強(qiáng)大跨平臺的圖形庫蓖康,是GNU/Linux下開發(fā)圖形界面的應(yīng)用程序的主流開發(fā)工具之一铐炫。
STL庫,優(yōu)秀的跨平臺模板庫STL 包含大量的STL容器蒜焊,算法和函數(shù)等倒信。
Boost庫 一個可移植、提供源代碼的C++庫泳梆,作為STL標(biāo)準(zhǔn)庫的后備鳖悠,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,優(yōu)秀而高效的模板與算法
6.相關(guān)開發(fā)工具优妙、無需深入乘综、會使用即可。
磨刀不誤砍柴工套硼,打仗還得有槍卡辰,下面最常用的工具你必須掌握:
集成開發(fā)環(huán)境: VS2010 ~ VS2017 ,越來越強(qiáng)大的IDE。
代碼配置管理工具: 最簡單易用的SVN 或 最流行的Git
7.有了以上6個方面的基礎(chǔ),說明你已經(jīng)具備企業(yè)開發(fā)的能力了九妈。
但是每一行業(yè)都有其專注的技術(shù)反砌,所以,你需要開始細(xì)分方向了萌朱,仔細(xì)思考你究竟想從事哪個行業(yè)宴树,然后對號入座,
此刻就是術(shù)業(yè)有專攻了!一位嶄新的C++大牛即將誕生......
以下附上真實企業(yè)中相應(yīng)崗位需要掌握的技能:
【流媒體開發(fā)工程師】
熟悉視音頻編解碼算法(如mpeg-4嚷兔、H.264森渐、H.265、G711冒晰、AAC等)同衣;
熟悉流媒體協(xié)議 RTP/RTCP , RTMP, RTSP, SIP ,HLS壶运, HDS耐齐, TS;
熟悉開源多媒體項目 FFmpeg蒋情、GStreamer埠况、 vlc、live555 ,nginx-rtmp 棵癣, WebRTC辕翰、DSS、 ,darwin ;
熟悉流媒體服務(wù)器 Red5狈谊、FMS喜命、Wowza等
熟悉多媒體容器封裝標(biāo)準(zhǔn)mp4, FLV , TS ,MPEG2-TS河劝,mxf壁榕,mov 等流媒體文件封裝協(xié)議
【游戲開發(fā)工程師】
熟練應(yīng)用Cocos2d-x引擎,熟悉c++/cocos2dx開發(fā)模式赎瞎;
Lua/Python腳本開發(fā)經(jīng)驗者優(yōu)先牌里。
OpenGL/DirectX等工作經(jīng)驗者優(yōu)先
商業(yè)引擎 Unity 3D ,CE3和 UE4 务甥, (Unreal Engine 4牡辽, CryENGINE 3 );
【服務(wù)器開發(fā)工程師】
有高性能高并發(fā)系統(tǒng)的開發(fā)經(jīng)驗敞临;
云風(fēng)skynet (基于C跟lua的開源服務(wù)端并發(fā)框架)
IOCP 催享, epoll
具有分布式負(fù)載均衡相關(guān)經(jīng)驗
lua ,python語言
【嵌入式開發(fā)工程師】
MTK平臺 (臺灣聯(lián)發(fā)科技 MediaTek)采用的是Nucleus OS哟绊, 嵌入式實時操作系統(tǒng),使用標(biāo)準(zhǔn)C開發(fā),其中Nucleus Plus提供源代碼下載票髓。
vxworks攀涵、uc/OS等嵌入式操作系統(tǒng)開發(fā)
熟悉嵌入式CPU如STM8、STM32系列處理器的架構(gòu)和應(yīng)用洽沟;
精通ARM以故、AVR、STM32裆操、8051怒详、MSP430中一種MCU的結(jié)構(gòu)和編程;
至少精通ARM踪区、AVR昆烁、STM32、8051缎岗、MSP430中一種MCU的結(jié)構(gòu)和編程静尼;
熟練掌握ARM、MCU等控制器內(nèi)部原理和配置
ZigBee是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議传泊。根據(jù)國際標(biāo)準(zhǔn)規(guī)定鼠渺,ZigBee技術(shù)是一種短距離、低功耗的無線通信技術(shù)眷细。
【人工智能工程師】
數(shù)學(xué)好
有基于Opencv開發(fā)項目經(jīng)驗者優(yōu)先
人工智能拦盹、深度學(xué)習(xí)、模式識別溪椎、 機(jī)器學(xué)習(xí)/機(jī)器視覺/圖像識別/語音識別/自然語言處理等算法開發(fā)普舆;
目標(biāo)檢測、識別算法池磁,有Faster R-CNN奔害,F(xiàn)aceNet等算法
熟悉深度學(xué)習(xí)開源平臺,如TensorFlow地熄、Torth华临、Caffe、Keras端考、Theano 雅潭、Spark、OpenAI却特、Mxnet等
統(tǒng)計機(jī)器學(xué)習(xí)(如深度神經(jīng)網(wǎng)絡(luò)扶供、Boosting, 圖模型,概率統(tǒng)計裂明,最優(yōu)化方法椿浓、等)
計算機(jī)視覺(如圖像識別理解,人臉檢測識別、目標(biāo)檢測和跟蹤扳碍、OCR提岔、增強(qiáng)現(xiàn)實、圖像質(zhì)量評價笋敞,圖像分割增強(qiáng)等)
熟悉主流的通用機(jī)器學(xué)習(xí)算法和大數(shù)據(jù)挖掘算法碱蒙,如SVM,神經(jīng)網(wǎng)絡(luò)夯巷,深度機(jī)器學(xué)習(xí)赛惩,數(shù)學(xué)建模,數(shù)據(jù)特征提取及挖掘等趁餐,并對CNN喷兼,RNN等模型有深入的研究。
【大數(shù)據(jù)工程師】
熟悉大數(shù)據(jù)平臺如Hadoop澎怒、HBase褒搔、Spark、Hive喷面,Storm星瘾,Mahout更佳
使用tomcat/weblogic/WebSphere等中間件,懂得優(yōu)化及集群搭建惧辈;
熟練使用mongodb/redis/Ehcache等流行技術(shù)琳状;
熟悉MapReduce, Spark等基于Hadoop的數(shù)據(jù)架構(gòu)及挖掘分析工具;
熟悉Matlab盒齿、SPSS等軟件工具念逞,熟悉數(shù)種常用挖掘分析算法;
掌握常用的數(shù)據(jù)挖掘算法(貝葉斯边翁、決策樹翎承、k—均值、SVM符匾、邏輯回歸叨咖、時間序列等)
掌握常用數(shù)據(jù)挖掘工具軟件:SPSS/MatLab/Weka等
說了這么多,最后送各位小白一句自己的心得: 堅持學(xué)習(xí)啊胶、不斷學(xué)習(xí)甸各、總有一天你會是真正的大牛!