小白該如何學好C++?

小白該如何學好C++?
那麼做爲一個從C語言小白摸爬滾打、入坑無數到成長爲現在的高級C++遊戲開發工程師、高級C++服務端工程師、項目經理、技術總監、我想跟你們分享下我大牛的學習心得與體會!python

Linus曾說過:「C++是一門很恐怖的語言,而比它更恐怖的是不少不合格的程序員在使用着它」,這個世界上最難的編程語言可能非C++莫屬了,呵呵,雖然有點誇張...... 可是, 你們記住,難度越高意味着含金量與競爭力越高,越能把你和別人區分開來,因此,你在一開始就須要有很當心謹慎的態度,並把C++當成一種難以訓服的猛獸來看待。
最後,若是你們若是在自學遇到困難,想找一個C++的學習環境,能夠加入咱們的C++學習圈,點擊我加入吧,會節約不少時間,減小不少在學習中遇到的難題。linux

clipboard.png

那麼若是你只是一時興起,並無真正沉下心來想學好一門語言,那麼我不建議你學,由於學習C++是痛苦的,沒有興趣,那麼這個學習過程將是一種折磨與煎熬!nginx

門檻與含金量並存,一旦你學會了C++,能夠說,不少語言對你而言也就不是難事了。c++

通常呢,學習C++的新手學員有如下幾種狀況:程序員

clipboard.png

小白該如何學好C++?
1.純小白(非計算機專業、沒學過任何編程語言)web

2.接觸過C語言、但沒學好redis

針對第一、2種狀況,我建議必定要把C語言基礎打牢,若是C沒學好,學C++會很受挫,打擊自信心,能夠按部就班,不知道怎麼學的能夠關注咱們,咱們有一站式的學習方案!算法

3.C語言已經學的很好了,但沒接觸過C++mongodb

有了紮實的C語言基礎,恭喜,你能夠開始學習C++了編程

4.C++基礎語法都學會了,而後想學點高級的?

以我多年的C++遊戲服務器開發經驗,企業中真實對開發者的考察要求無非就那麼幾點:

C++數據結構,重點,最基礎的鏈表、隊列,棧,排序算法,各類算法,此乃程序的核心。

C++泛型編程,模板,各類項目中存在大量模板設計,特別是框架,

C++多線程,線程同步,線程池。 99%的項目必定用到,列爲重點。

Socket網絡編程,各類併發網絡模型(Select WSASelect IOCP)

C++靜態庫、動態連接庫dll ,開發項目中90%、SDK中必定用到,無需精通,但必須掌握。

Win32 API 高級編程 , 重點,真實企業項目中大量用到win32 API ,必定有相關的經驗。

5.C++進階知識也會了,你須要學習基礎框架。

MFC框架 。 可選,雖然說MFC在windows桌面運用中由於其複雜性愈來愈顯得過期了。可是其OO思想仍是發揮的淋漓盡致,能夠了解熟悉下,各類控件、對話框、單文檔程序、多文檔走一遍,不只能夠掌握桌面運用開發,還能夠再次鞏固面向對象的理念,總之MFC是個大雜燴,總會學點東西的。

QT框架. 跨平臺的應用程序和用戶界面框架,linux與windows桌面應用開發的優秀框架。

GTK+(GIMP Toolkit) GIMP 一個功能強大跨平臺的圖形庫,是GNU/Linux下開發圖形界面的應用程序的主流開發工具之一。

STL庫,優秀的跨平臺模板庫STL 包含大量的STL容器,算法和函數等。

Boost庫 一個可移植、提供源代碼的C++庫,做爲STL標準庫的後備,是C++標準化進程的開發引擎之一,優秀而高效的模板與算法

6.相關開發工具、無需深刻、會使用便可。

磨刀不誤砍柴工,打仗還得有槍,下面最經常使用的工具你必須掌握:

集成開發環境: VS2010 ~ VS2017 ,愈來愈強大的IDE。

代碼配置管理工具: 最簡單易用的SVN 或 最流行的Git

7.有了以上6個方面的基礎,說明你已經具有企業開發的能力了。

可是每一行業都有其專一的技術,因此,你須要開始細分方向了,仔細思考你究竟想從事哪一個行業,而後對號入座,

此刻就是術業有專攻了!一位嶄新的C++大牛即將誕生......

clipboard.png

小白該如何學好C++?
如下附上真實企業中相應崗位須要掌握的技能:

【流媒體開發工程師】

熟悉視音頻編解碼算法(如mpeg-四、H.26四、H.26五、G7十一、AAC等);

熟悉流媒體協議 RTP/RTCP , RTMP, RTSP, SIP ,HLS, HDS, TS;

熟悉開源多媒體項目 FFmpeg、GStreamer、 vlc、live555 ,nginx-rtmp , WebRTC、DSS、 ,darwin ;

熟悉流媒體服務器 Red五、FMS、Wowza等

熟悉多媒體容器封裝標準mp4, FLV , TS ,MPEG2-TS,mxf,mov 等流媒體文件封裝協議

【遊戲開發工程師】

熟練應用Cocos2d-x引擎,熟悉c++/cocos2dx開發模式;

Lua/Python腳本開發經驗者優先。

OpenGL/DirectX等工做經驗者優先

商業引擎 Unity 3D ,CE3和 UE4 , (Unreal Engine 4, CryENGINE 3 );

【服務器開發工程師】

有高性能高併發系統的開發經驗;

雲風skynet (基於C跟lua的開源服務端併發框架)

IOCP , epoll

具備分佈式負載均衡相關經驗

lua ,python語言

【嵌入式開發工程師】

MTK平臺 (臺灣聯發科技 MediaTek)採用的是Nucleus OS, 嵌入式實時操做系統,使用標準C開發,其中Nucleus Plus提供源代碼下載。

vxworks、uc/OS等嵌入式操做系統開發

熟悉嵌入式CPU如STM八、STM32系列處理器的架構和應用;

精通ARM、AVR、STM3二、805一、MSP430中一種MCU的結構和編程;

至少精通ARM、AVR、STM3二、805一、MSP430中一種MCU的結構和編程;

熟練掌握ARM、MCU等控制器內部原理和配置

ZigBee是基於IEEE802.15.4標準的低功耗局域網協議。根據國際標準規定,ZigBee技術是一種短距離、低功耗的無線通訊技術。

【人工智能工程師】

數學好

有基於Opencv開發項目經驗者優先

人工智能、深度學習、模式識別、 機器學習/機器視覺/圖像識別/語音識別/天然語言處理等算法開發;

目標檢測、識別算法,有Faster R-CNN,FaceNet等算法

熟悉深度學習開源平臺,如TensorFlow、Torth、Caffe、Keras、Theano 、Spark、OpenAI、Mxnet等

統計機器學習(如深度神經網絡、Boosting, 圖模型,機率統計,最優化方法、等)

計算機視覺(如圖像識別理解,人臉檢測識別、目標檢測和跟蹤、OCR、加強現實、圖像質量評價,圖像分割加強等)

熟悉主流的通用機器學習算法和大數據挖掘算法,如SVM,神經網絡,深度機器學習,數學建模,數據特徵提取及挖掘等,並對CNN,RNN等模型有深刻的研究。

【大數據工程師】

熟悉大數據平臺如Hadoop、HBase、Spark、Hive,Storm,Mahout更佳

使用tomcat/weblogic/WebSphere等中間件,懂得優化及集羣搭建;

熟練使用mongodb/redis/Ehcache等流行技術;

熟悉MapReduce, Spark等基於Hadoop的數據架構及挖掘分析工具;

熟悉Matlab、SPSS等軟件工具,熟悉數種經常使用挖掘分析算法;

掌握經常使用的數據挖掘算法(貝葉斯、決策樹、k—均值、SVM、邏輯迴歸、時間序列等)

掌握經常使用數據挖掘工具軟件:SPSS/MatLab/Weka等

說了這麼多,最後送各位小白一句本身的心得: 堅持學習、不斷學習、總有一天你會是真正的大牛!

相關文章
相關標籤/搜索