Python、C、Java三大语言学习路线和资源整理
目录
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站:
慕课网:
中国大学MOOC:
资源推荐
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站:
中国大学MOOC:
慕课网:
资源推荐
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和系统管理。本书还将讨论如何在数据库、文本处理、前端脚本层、网络等方面使用该语言。
学习视频
B站:[
中国大学MOOC:
慕课网:
资源推荐
对国内技术社区
CSDN:
博客园
掘金
思否
开源中国
51CTO
V2EX
开发者头条
GitChat
知乎
牛客网
国外技术社区
Stack Overflow
Medium
学编程的教程网站
菜鸟教程
W3Cschool
易百教程
并发编程网
视频教程网站
B站
慕课网
中国大学MOOC
开源社区
GitHub
码云
面试刷题
LeetCode力扣
LintCode
电子书
书栈网
码农之家
接私活赚外块的网站
猪八戒
程序员客栈
码市
开源中国众包平台
人人开发
大佬的博客/网站
阮一峰:
陈浩:
廖雪峰
王垠