目錄
C語言
學習路線
基礎階段
基礎階段入門篇,大家通過學習,應該熟練掌握C語言編程的基礎語法知識,這些語法層面的知識是基礎中的基礎,必須熟練,目標是可以開發一些簡單的控制臺小程序。
知識點
- 初識C語言 / 了解C語言的發展史,搭建C開發環境
- 認識一個簡單的C程序 / 一般都從“Helloworld"這個簡單的C程序開始
- 算法入門 / 算法基本概念,簡單程序結構,流程圖等
- 基本數據類型 / 整型,浮點型,字符型
- 運算符與表達式 / 各種運算符以及優先級,表達式和語句等
- 簡單輸入輸出函數 / 目前主要是scanf和printf,getchar和putchar
- 選擇、循環、分支結構 /if while/do while switch
- 數組 / 一維和二維數組定義初始化,元素遍歷訪問,數組相關運算,數組使用
- 函數編程基礎 / 模塊編程,函數聲明、定義、調用
- 指針解析 / 指針初識和理解,指針和數組關系,指針簡單運算和使用
提高階段
提高篇,大家通過學習,應該形成C語言的基本知識框架,目標是可以開發一些基本的應用程序,并能夠掌握開發綜合應用程序的方法。
知識點
- 指針的深刻理解和使用 / 對指針本質的認識,指針的各種使用場合
- 位運算 / 各種位運算符號應用(注意很對妙用),進制轉換
- 存儲管理 / 作用域和存儲類型等
- 預處理 / 主要是#define和#include
- 字符串的處理 / 各種字符串處理函數
- 文件的讀寫操作 / 各種文件處理函數的使用,大量I/O函數使用
- 函數熟練使用 / 模塊化編程思想和能力
- 常用數據結構 / 現階段主要是表、棧和隊列
- 圖形圖像的簡單處理 / 能夠利用C處理簡單圖像
應用階段
應用篇,大家通過學習,應該具備一定的綜合性應用軟件的開發能力,目標是能夠開發例如圖書管理系統,學生信息管理系統,貪吃蛇,俄羅斯方塊等項目。
知識點
- 軟件工程基本知識 / 主要是軟件開發流程
- 數據庫知識 / 具備對常用數據庫的增改刪查等基本能力
- 數據結構知識 / 樹、圖,各種算法優化等
- 程序運維能力 / 代碼調試和優化
- 工程化思維 / 再次深化模塊化編程的能力
學習書籍 基礎
- 《C語言程序設計:現代方法》(第2版)
- 《深入理解計算機系統》(修訂版或第2版)
- 《C語言程序設計》(第2版)
- 《程序員修煉之道》
內核/驅動
- 《Linux內核設計與實現》(第3版)
- 《Linux設備驅動程序》(第3版)
- 《深入Linux內核架構》
應用
- 《UNIX環境高級編程》
- 《UNIX網絡編程》
進階
- 《C陷阱與缺陷》
- 《C專家編程》
- 《ARM嵌入式系統開發:軟件設計與優化》
學習視頻
B站:【C語言】《帶你學C帶你飛》【小甲魚】
翁凱C語言【翁凱】
史上最強最細膩的linux嵌入式C語言學習教程【李慧芹老師】
慕課網:C語言入門
中國大學MOOC:C語言程序員設計
資源推薦
C語言網
該網站有很多C語言相關的教程、資源、博客和練手習題,同時也有很多題庫和比賽,比較實用。
cppreference
cppreference是一個免費網站,上面包含了關于C語言
和C++
的編程知識、庫函數、以及諸多代碼示例,目前連最新的C++20標準都支持了。
Java語言
學習路線
第一階段、Java基礎
JavaEE的學習內容從Java開發介紹開始,為你入門編程語言掃盲;
什么是程序;
如何配置Java開發環境;
Java編程的過程是怎樣的;
Java有什么物特點;
程序是如何運行的;
接下來是介紹Java編程的基礎語法,共分為10個知識點,我們將學習
變量;
基本數據類型;
進制;
轉義字符;
運算符;
分支語句;
循環語句等;
以達到訓練基礎語法和邏輯能力的目的。還有對數組、面向對象和異常處理等。
第二階段、JavaWeb的學習
Web前端開發基礎和框架;
Servlet和JSP在Web后端的應用;
Web后端開發相關專題;
MVC和分層架構以及項目開發流程;
CASE工具的使用等。
第三階段、 Java框架
框架是程序中另一種存儲數據的方式,比直接使用數組來存儲更加的靈活,在項目中應用十分廣泛。
框架整合開發(SSH/SSS);
RESTful架構和移動端接口設計;
第三方接口和在線支付功能;
網站安全和Spring Security應用實戰;
復雜用戶交互處理和Spring Web Flow的應用;
MyBatis的應用和SSM整合;
我們將深入研究其中涉及到的數據結構和算法,對學員的技術深度有了一個質的提升。
第四階段、Java+云數據
億級并發架構演進、
Linux基礎、
搭建tomcat環境
大數據開發
云計算
等高級Java教程,是Java技術的高端知識。其中穿插項目實戰演練,企業真實項目供學員應用學習,進行知識體系的“二次學習”。
學習書籍
1. Head First Java
它是很多程序員的啟蒙書籍,常年霸榜Amazon書籍前十排名。
2. Java8 編程入門官方教程
如果你對編程有所了解,以前有接觸過C++或者C#等語言,覺得第一本書的內容會導致學習進度太拖沓,那這本官方入門教程是不二之選。
\3. Java核心技術
這本Java核心技術是程序員的優選指南,看這本書來學習需要一定的基礎知識,對于Java已經不局限與淺薄的概念,涉及面比較廣,深度也可以。
4. Effective Java
Effective Java應該是每個Java程序員必讀的書,書里包含了78條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。
5. 深入淺出設計模式
這本書就是來教你如何打造編程思維,書中循序漸進的介紹了Java的設計模式和面向對象的設計原理,進階一定要看這本書。
6. Java并發編程實戰
如何利用線程來提高并發應用程序的吞吐量,如何識別可并行執行的任務,如何提高單線程子系統的響應性,如何確保并發程序執行預期任務,如何提高并發代碼的性能和可伸縮性等內容,是開發者不可缺少的參考資料。
7. 代碼整潔之道
本書提出一種觀念:代碼質量與其整潔度成正比。干凈的代碼,既在質量上較為可靠,也為后期維護、升級奠定了良好基礎。
8. 數據結構與算法分析(Java語言描述)
本書把算法分析與最有效率的Java程序的開發有機地結合起來,深入分析每種算法,并細致講解精心構造程序的方法。
9. Java性能優化權威指南
改善Java程序性能,是一個老生常談的問題,但是擁有這項技術的程序員卻不多,看完這本書可以很大的提升自己的競爭力。
10. Java編程思想
原名Thinking in Java,這本書是目前所有Java書籍中獲獎最多的書籍,已然成為編程界的一本經典,這本書最大的優點就是以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。
學習視頻
B站:Java零基礎教程視頻(適合Java 0基礎,Java初學入門)
[【零基礎快速學Java】韓順平零基礎30天學會Java](https://www.bilibili.com/video/BV1fh411y7R8?from=search&seid=12010096235202130081&spm_id_from=333.337.0.0)
老杜帶你學Java,Java零基礎,Java入門者必修課程(Jdk13全網最牛Java基礎視頻)
中國大學MOOC:Java程序設計
慕課網:Java入門第三季
資源推薦
Java World
這個網站包含了大量的Java 教程,涉及各種各樣的話題。其中很多文章都寫的很好,并且有圖片、插圖進行說明。
Github
這是程序員通用的一個網站,現在國內很多程序員都喜歡用這個托管平臺,它提供了訂閱、專業討論組、文本渲染、在線代碼編輯器、協作交流、代碼分享等功能。在這里你可以找到很多的開源項目,可以“依葫蘆畫瓢”的性質,模仿其做一款相似的項目,這對于你技術的成長有很大的幫助,而且還可以避免閉門造車式的學習!
Stack overflow
Stack overflow.com可能是編程界中最流行的網站了,是一個與程序相關的IT技術問答網站,用戶可以在網站免費提交問題,瀏覽問題,索引相關內容,在創建主頁的時候使用簡單的HTML 。一部分的程序員學習API或者編程語言,通常依賴于代碼示例 ,stackoverflow就可以提供大量的代碼片段。
Python語言
學習路線
一、Python基礎階段
技能樹:掌握python腳本、python界面編程能力、數據庫、基本爬蟲、多線程多進程開發能力,可以勝任基本的python開發工作。
知識點細化:
- 數據的存儲:Python概述、進制以及進制轉換、原碼、反碼、補碼、第一個Python程序、終端讀取與打印等。
- 運算符與表達式:關鍵字和標識符、算術運算符、python數據類型、賦值運算符、運算符、復合運算符、條件控制語句(if..else...)、邏輯運算符等。
- 循環:循環語句之while、循環語句之for、break與continue語句等。
- 基礎數據結構:Number與數學函數操作、String(查找,替換,下標索引、列表(常用)、元組、字典(常用)、set集合、迭代器與生成器(常用)、函數概述等。
- 函數:函數的調用、簡單函數的定義、函數的返回值、傳遞參數、關鍵字參數、默認參數、不定長參數、匿名函數、裝飾器、偏函數、回調函數、變量的作用域、遞歸函數、目錄遍歷、遞歸遍歷目錄、棧模擬遞歸遍歷目錄(深度遍歷)、隊列模擬遞歸遍歷目錄(廣度遍歷)等。
- 模塊:模塊概述使用標準庫中的模塊使用自定義模塊name屬性包的概述安裝第三方模塊virtualenv與時間相關模塊。
- 面向對象編程:面向對象思想、類與對象、類的方法與屬性、構造函數與析構函數、self的使用、重寫__ repr__ 與str 函數、訪問限制等。
- 繼承、封裝、多態 :單繼承的實現、多繼承的實現、函數重寫、人開槍射擊子彈小案例、多態、對象屬性與類屬性、類方法與靜態方法等。
- 面向對象高階:動態添加屬性方法、property、運算符重載、發郵件與發短信等。
- 文件操作與異常處理:StringIO與BytesIO、文件的管理操作、文件讀寫(csv、txt)操作、異常處理等。
- 高階函數與測試:調試(打印、斷言、logging、pdb)
- 排列組合與正則表達:破解密碼(排列、組合、排列組合)、正則表達等。
- 網絡編程:TCP/IP簡介、TCP編程、UDP編程等。
二、Linux和數據庫階段
技能樹:掌握Linux操作系統管理技術,可以搭建幾乎所有Linux環境服務器。
知識點細化:
- Linux操作系統:常見操作系統、操作系統發展歷史、系統的使用、Linux版本、Linux應用領域、虛擬機與Vmware的安裝、Linux版本與Ubuntu 16.04、配置自己的Linux系統、編程IDE的安裝、apt-get安裝軟件包。
- 文件系統與用戶管理:目錄訪問、文件與目錄的管理、文件的權限、用戶管理。
- 文本操作命令:文本命令、文本編輯器Vi/Vim。
- 網路命令、進程管理與服務配置:網絡管理命令、系統目錄、重要系統文件、設置開機啟動與登陸啟動、IP配置、服務的啟動停止、防火墻配置。
- Shell編程與bash、源文件編譯:基礎IO操作、流程控制、定義變量與環境變量、腳本傳參、定時任務、定時系統操作。
- 版本控制:Git的安裝與配置、GitHub的注冊與使用、Clone與Fork、Git常用命令、標簽、分支與源、多人協作開發。
- MySQL基本使用:MySQL的安裝、MySQL簡介、MySQL基本命令腳本、MySQL與Python的交互。
- MongoDB的基本使用:MongoDB安裝、MongoDB的基本操作。
- Redis的基本使用:Redis安裝、Redis的基本操作、Redis的數據類型、Redis的備份與恢復。
三、Python web開發
技能樹:掌握Python后端框架,解決前后端Web開發問題。
知識點細化:
- HelloDjango:BS/CS,MVC/MTV、Django請求流程、Admin管理。
- Models:ORM、模型字段屬性、CRUD、聚合函數,F,Q對象。
- Models&Templates:模型對應關系、模板加載、靜態資源、模板語法。
- Views:路由規則、反向解析、請求與響應、會話技術cookie,token,ses-sion、文件上傳。
- Advanced:驗證碼、分頁器、類視圖、中間件、日志、緩存、信號、Cerlery、用戶權限,用戶角色。
- RESTful:REST概念、HelloREST、數據序列化、請求與響應、視圖,轉換器、關系,超鏈接、認證和權限。
知識點細化:
- HelloFlask:Flask介紹、Flask請求、Flask MTV拆分、Flask-Script。
- Views:Flask Blueprint、路由規則、錯誤處理、請求與響應。
- Templates&Models:靜態資源、模板加載、模板語法、ORM、Flask-SQLAlchemy。
- Modesl:Flask-Migrate、CRUD、模型關系、反向引用。
- Extension:Flask-Cache、Flask-Login、Flask- RESTful、Flask- Bootstrap、Flask-Upload。
- Program:需求分析、項目設計、基礎框架搭建、建模。
四、Python爬蟲階段
技能樹:掌握分布式多線程大型爬蟲技術,能開發企業級爬蟲程序。
- 多線程原理:同步與異步、串聯與并發、線程、開辟一個線程、線程安全與線程鎖、多線程隊列。
- 協程:線程的局限、協程的定義與原理、協程的實現。
- 爬蟲的概念及相關工具:爬蟲的概念及作用、HTTP協議原理、工具的安裝、使用。
- Python http libs:urllib的使用、示例requests庫的使用、bs4庫的使用、xpath語法。
- 爬蟲實戰:使用requests編寫-個簡單爬蟲、改造requests爬蟲為多線程版、利用redis改造多線程版爬蟲至分布式。
- scrapy框架:scrapy安裝、創建項目、創建spider文件,編寫parse方法、scrapy子命令、運行scrapy爬蟲程序、命令行傳遞參數、進一步解析二級頁面、parse方法之前傳遞參數、導出json、Csv格式的數據、scrapy爬蟲的狀態保存、item的定義、item的使用、pipeline的使用、使用pipeline將items存儲至MySQ、Lscrapy整體架構、downloadermiddleware、使用downloadermiddleware實現IP代理池、spidermiddleware、scrapy插件、scrapy-redis。
- 量化交易:自動化交易理論、Python量化交易框架。
五、Python機器學習階段
技能樹:掌握Python數據挖掘分析,入門人工智能。
知識點細化:
- jupyter入門:jupyter軟件安裝、jupyter入門、numpy學習。
- pandas:pandas入門、pandas-Series、pandas數據丟失、pandas索引、pandas數據處理、基于Pandas的人臉識別技術。
- scipy:scipy學習
- matpoltlib:數據可視化的概念、可視化圖表的繪制、動畫及交互渲染、數據的合并與分組。
- KNN:臨近算法、預處理、KNN相關函數。
- 線性回歸與邏輯斯蒂回歸:線性回歸、邏輯斯蒂回歸。
- 決策樹與貝葉斯:貝葉斯學習、決策樹學習。
- SVM與K均值聚類:SVC學習
- Kmeans: Kmeans學習
- 機器學習框架TensorFlow:機器學習、權重分配與優選方案、深度學習、自動化神經網絡、AI網絡的描述。
- 自然語言處理與社交網絡處理:文本數據處理、自然語言處理及NLTK、主題模型、LDA、圖論簡介、網絡的操作及數據可視化。
學習書籍
1、《Python編程:從入門到實踐》
本書旨在讓讀者快速上手編寫真正的程序。本書也適用于對語言有模糊理解并希望在嘗試Python編程之前了解其知識的程序員。在學習本書時,你將學習使用Numpy和matplotlib等庫和工具,并使用數據創建令人驚嘆的可視化效果。你還將了解2D游戲和Web應用程序背后的思想以及如何創建它們。
2、《Head-First Python (2nd edition)》
它將幫助你快速掌握Python編程的基礎知識,并使用內置函數和數據結構。然后,本書將幫助你構建自己的Web應用程序,異常處理,數據爭論和其他概念。
3、《“笨方法”學Python》
本書通過幫助你安裝完整的Python環境開始,接著教你如何編寫優化的代碼。然后,本書討論了基礎數學,變量,字符串,文件,循環,程序設計和數據結構等主題。本書非常適合想通過語言的核心來學習Python編程的初學者。
4、《Python程序設計(第3版)》
第三版中最顯著的變化就是幾乎刪除了所有python eval()庫的使用,并增加了一個討論其缺點的部分,最新版本還使用了新的圖形示例。
5、《像計算機科學家一樣思考Python (第2版)》
作者從最基本的編程概念開始講起,包括語言的語法和語義,而且每個編程概念都有清晰的定義,引領讀者循序漸進地學習變量、表達式、語句、函數和數據結構。
6、《A Byte of Python》
這本書首先介紹了這本書是關于什么的,然后介紹Python以及它如何成為編程世界中最強大的語言之一。然后介紹Python概念,并在每個示例的步驟中詳細講解。在閱讀完本書之后,你還需要繼續深入學習Python。
7、《Python Cookbook(第3版)中文版》
這本書包含了大量用Python 3.3測試過的代碼。本書提供了各種主題的完整代碼,包括Python語言及其用途,以及大量應用程序領域的常見示例。
8、《Python機器學習基礎教程》
在本書中,你將了解使用Python和scikit-learn庫創建豐富的機器學習應用程序所需的步驟。向你介紹機器學習的基本概念和用法,然后再介紹流行的機器學習算法的優缺點。
9、《流暢的Python》
本書涵蓋了各種概念,包括python數據模型、數據結構、把函數視作對象、面向對象習慣用法、控制流程和元編程。通過這本書,高級Python程序員將了解Python 3以及如何精通該語言版本。
10、《Programming Python》
這本書包含了關于Python的各種應用領域的深入教程,例如gui、Web和系統管理。本書還將討論如何在數據庫、文本處理、前端腳本層、網絡等方面使用該語言。
學習視頻
[【Python教程】《零基礎入門學習Python》最新版](https://www.bilibili.com/video/BV1c4411e77t?from=search&seid=16081981795735002981&spm_id_from=333.337.0.0)
中國大學MOOC:Python語言程序設計
資源推薦
對國內技術社區
CSDN:CSDN - 專業開發者社區必須排第一哈哈
51CTO https://www.51cto.com/
開發者頭條 https://toutiao.io/
GitChat https://gitbook.cn/
牛客網 https://www.nowcoder.com/ 一個互聯網求職學習交流社區。
國外技術社區
Stack Overflow https://stackoverflow.com/ 全球最活躍的程序員技術問答交流社區,程序員的所有問題都能在上面找到答案。
Medium https://medium.com/
學編程的教程網站
W3Cschool https://www.w3cschool.cn/
并發編程網 https://ifeve.com/
視頻教程網站
中國大學MOOC https://www.icourse163.org/
開源社區
GitHub https://github.com/ 全球最大開源社區,被戲稱為全球最大同性交友網站。
碼云 https://gitee.com/ 可以看做GitHub的國內版,GitHub雖好,但GitHub服務器在美國,網絡方面main一直是個問題,這種情況下,碼云是個不錯的替代者。
面試刷題
LeetCode力扣 https://leetcode-cn.com/ 經典的刷題網站,主要是算法題。
LintCode https://www.lintcode.com/ 和LeetCode類似
電子書
接私活賺外塊的網站
程序員客棧 https://www.proginn.com/
開源中國眾包平臺 https://zb.oschina.net/
人人開發 http://www.rrkf.com/
大佬的博客/網站
阮一峰:http://www.ruanyifeng.com/home.html 計算機科普博主
陳浩:https://www.coolshell.cn/ 左耳朵耗子
廖雪峰 https://www.liaoxuefeng.com/ Python啟蒙老師,Python,Git系列教程作者
王垠 http://www.yinwang.org/ 每寫一篇文章都能引發爭議的前Google程序員