2020最新全面Java学习路线及视频(万字长文)
声明,本人能力有限,只是列出来参考,不对之处欢迎指正。
一门永不过时的编程语言——Java 软件开发。
Java编程语言占比:
据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!
Java工程师就业:
1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师
2.北京Java开发工程师平均薪资,即19208元
3.全国Java开发薪资前三:北京 上海 深圳
Java到底学什么?
很多人可以刚学完Java时完全不知道Java的结构是怎样的,导致学习的知识点零星、散落,这也是为什么明明很基础的内容,但是一段时间之后自己却想不起来是怎么写的。没有梳理知识的脉络,将所学打通,融汇于一处。废话了一通。
Java学习路线
共细分16个部分
第一阶段_java开篇
第2阶段 :JAVA语言语法
第3阶段:集成开发工具的使用
第4阶段:面向对象
第5阶段:JavaSE进阶学习
第6阶段 :数据库+JDBC
第7阶段 :前端精讲
第8阶段 :算法篇
第9阶段 :JavaEE
第10阶段 :工具的使用
第11阶段 :Linux
第12阶段 :SSM框架的使用
第13阶段 :SpringBoot的使用
第14阶段 : 面试篇
第15阶段:微服务阶段
第16阶段:分布式
第一阶段_java开篇
java初步 计算机语言的发展历史
- 程序中常见错误
- 编译方式扩展: classpath环境变量
- 扩展 : JAVA_HOME 环境变量
- API
- 代码量统计工具的使用
- 单行注释和多行注释
- 文档注释
- 反编译工具的使用
- 本章最后一段代码
- 扩展面试题 :JDK ,JRE
- JAVA简史
- JAVA体系结构
- JAVA特性和优势
- JAVA核心机制之垃圾收集机制
- 核心机制之 JAVA跨平台原理
- JAVA核心机制之对比C语言的跨平台原理
- JAVA常用的DOS命令
- notepad++的安装
- 第一段程序_ 编译 _执行
学习视频私信“学习”免费领取
第2阶段 :JAVA语言语法
数据类型 标识符
- 关键字
- 常量_字面常量
- 变量的声明,赋值,使用 (重要
- 变量的内存(重要)
- 变量的作用域
- 基本数据类型之整数类型变量
- 基本数据类型之浮点类型常量的两种形式
- 基本数据类型之浮点类型变量
- 基本数据类型之字符类型(1-2)
- 解释乱码问题
- 基本数据类型之布尔类型
- 基本数据类型转换问题
- 习题:fifinal_字符常量
- 习题 _ 加深对Scanner的使用
运算符
- JAVA中的运算符概述
- 算数运算符_除法 _取余
- 算数运算符_加号
- 算数运算符 _自增
- 赋值运算符
- 扩展数值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
- 位运算符
- 运算符_总结
- 运算符的优先级别
流程控制
- 引入
- 分支结构_if单分支
- 分支结构_if多分支
- 随机数
- 分支的嵌套使用_练习1
- 分支的嵌套使用_练习2
- 分支结构_switch分支
- 循环结构_while循环
- 循环结构_while循环练习
- 循环结构_do-while循环
- 循环结构_for循环
- 循环结构_关键字break
- 循环结构_关键字continue
- 循环结构_循环练习
- 循环结构_循环嵌套
学习视频私信“学习”免费领取
阶段项目:小鲨鱼记账软件
- 引入
- 项目最终效果演示
- 整体结构完成
- 登记收入
- 登记支出
- 收支明细错误细节
- 退出功能
学习视频私信“学习”免费领取
方法的定义,调用,重载
- 方法的定义和调用
- 方法提取的练习
- 面试题 _两个数交换是否成功
- 方法的重载
数组
- 数组的引用
- 数组的学习
- 数组习题完善_数组的遍历方式
- 数组的三种初始化方式
- 数组的应用_最值问题
- 数组的应用_查询问题
- 数组的应用_添加元素
- 数组的应用_删除元素
- 详述main方法
- 可变参数
- Arrays工具类的使用
- 数组的复制
- 二维数组的定义和遍历
- 二维数组的初始化方式
阶段项目:双色球**模拟系统
- 需求介绍
- 涉及技能点
- 项目演示
- 菜单展示
- 购买**
- 开奖整体结构完善
- 生成中奖单号细节
- 对比号码细节和完善
学习视频私信“学习”免费领取
第3阶段:集成开发工具的使用
IDEA的基本使用教程
- IDE的概念
- JetBrains公司介绍
- Intellij IEDA介绍
- IDEA的下载_安装前的准备工作
- IDEA的卸载
- IDEA的安装和**
- IDEA页面展示
- Module 的概念和使用
- IDEA的常用设置
- IDEA的常用快捷键
- 代码模板是什么
- 常用的代码模板
- 修改代码模板
- 创建代码模板
- 断电调试_常用断点调试快捷键
- 断点调试_条件判断
- 断点调试_查看表达式值
- 创建JavaWeb项目
- 在IDEA中添加Tomcat的镜像
- 在IDEA中配置Git
- 在IDEA中配置Maven
第4阶段:面向对象
面向对象
- 面向对象_面向过程和面向对象的区别
- 面向对象_类和对象的关系
- 面向对象_面向对象三个阶段
- 面向对象_创建类
- 面向对象_创建对象
- 面向对象_局部变量和成员变量的区别
- 面向对象_构造器
- 面向对象_构造器的重载
- 面向对象_内存分析
- 面向对象_this的使用
- 面向对象_static修饰属性
- 面向对象_static修饰方法
- 面向对象_代码块
- 面向对象_ 包 _import _
封装
- 封装的总结
- 继承的引入
- 继承的代码演示
- 继承总结
- 继承的内存分析
- 权限修饰符
- 方法的重写
- super修饰属性 ,方法
- super修饰构造器
- super修饰构造器补充
- 继承条件下构造方法的执行过程
- Object类的toSring方法
- Object类的equals方法(1)
- Object类的equals方法(2)_ instanceof
- Object类的equals方法(3)
- 类和类之间的关系1
- 多态
- 多态内存分析
- 向上转型_ 向下转型
- 简单工厂设计模式
- fifinal修饰符
- 抽象类_抽象方法
- 接口(JDK1.8之前)
- 接口(JDK1.8之后新增)
- 内部类_ 成员内部类
- 内部类_ 局部内部类
阶段项目:比萨点餐系统
- 项目需求
- 项目结构分析
- 父类子类创建
- 测试类逻辑
- 工厂类的提取
学习视频私信“学习”免费领取
阶段项目:贪吃蛇小游戏
- 引入
- 小蛇行动原理图
- 将图片加载到程序中来
- 创建窗体
- 创建面板
- 画静态的小蛇
- 将蛇头按照行走方向改变
- 加入监听,空格来控制游戏是否开
- 小蛇向右动起来
- 小蛇上下左右动起来
- 画食物吃食物
- 画积分
- 死亡判定
- 游戏打包
图片中的学习视频私信“资料”免费领取
第5阶段:JavaSE进阶学习
异常
- 异常的案例引入
- 处理异常方式:if-else
- 处理异常方式:try-catch捕获
- catch中处理异常的几种方式
- fifinally讲解
- 多重catch
- 异常的分类/层次结构
- throw和throws的区别
- 异常练习
- 重载和重写异常的区别
- 自定义异常
常用类
- 包装类_引入
- 包装类常用属性常用构造器
- 包装类自动装箱自动拆箱
- 包装类_常用方法
- 日期相关_java.util.Date
- 日期相关_java.sql.Date
- 日期相关_SimpleDateFormat
- 日期相关_Calendar
- 日期相关_Calendar练习需求
- 日期相关_Calendar练习完成
- 日期相关_JDK1.8新增日期时间API的原因
- 日期相关_JDK1.8新增LocalDateTime
- 日期相关_JDK1.8新增LocalDateTim
- 日期相关_JDK1.8新增DateTimeFormatter
- Math类
- Random类
- String的底层本质
集合
- 什么是算法什么是数据结构
- 紧密结构,跳转结
- 集合的引入
- 简要集合结构图
- 集合的应用场合
- Cllection接口的常用方法
- Cllection接口的遍历方式
- List接口
- ArrayList实现类JDK1.7源码
- ArrayList实现类JDK1 .8源码
- Vector实现类源码
- 泛型的引入
- 自定义泛型结构泛型类泛型接口
- 自定义泛型结构泛型类泛型接口细节
- 自定义泛型结构泛型方法
- 自定义泛型结构泛型参数存在继承关系的情况
- 自定义泛型结构通配符
- 自定义泛型结构通配符使用的细节
- 自定义泛型结构泛型受限
- LinkedList实现类的使用
- LinkedL ist简要底层原理图
- 模拟LinkedList源码
- LinkedL ist源码解析(JDK1.8)
- iterator()面试题
- 迭代器具体实现
- Listlterator迭代器
- Set接口介绍
- HashSet的特点
- HashSet的简要原理
- HashSet原理留下的疑问
- LinkedHashSet的使用
- 比较器的使用
- TreeSet的使用及原理
- Map接口中常用方法1
- Map接口中常用方法2
- Hashtable的使用
- TreeMap的使用
- HashMap的原理简单介绍
- HashMap中重要属性
- HashMap的构造器
- HashMap的put方法
- HashMap底层数组的扩容
- HashMap的两个经典面试题
- HashSet底层原理
- TreeMap底层源码
- TreeSet底层源码
- Collections工具类
IO流
- File类的引入
- File对文件的操作
- File对目录的操作
- I0流的引入
- FileReader读取文件内容(1.2)
- FileWriter写出数据操作
- FileReader,FileWriter完成文件复制
- 警告-不要用字符流去操作非文本文件
- 利用try-catch-fifinally处理异常方式
- FilelnputStream读取文件中内容
- FilelnputStream,FileOutputStream完成非文本文件的复制缓冲字节流(处理流)- BufferedInputStream ,BufferedOutputStream
- 比对非文本文件复制的三种方法的效率
- 缓冲字符流(处理流)-BufferedReader,BufferedWriter完成文本文件的复制
- 转换流-InputStreamReader,OutputStreamWriter
- 转换流-InputStreamReader,OutputStreamWriter实现文本文件的复制
- System类对I0流的支持
- 练习:键盘录入内容输出到文件中
- 数据流- DatalnputStream,DataOutputStream
- 对象流序列化和反序列化
- 实现Serializable接口
- serialVersionUlD
- IDEA中配置序列化版本号
- 序列化细节
多线程
网络编程
- 网络编程的引入
- InetAddress,InetSocketAddress
- 网络通信原理套接字的引入
- TCP通信单向通信
- TCP通信对象流传送
- TCP通信加入完整的处理异常方式
- TCP通信_多线程接收用户请求
- UDP通信_单向通信
- UDP通信_双向通信
- UDP通信加入完整的异常处理方式
- UDP通信完整正常通信
阶段项目:坦克大战
- new出一个窗口
- 设定标题栏内容
- TankFrame从Frame继承+显示
- 认识paint方法,重写
- 学习graphics类,画图
- 学习repaint方法
- 实现MyKeyListener,对键盘作出响应
- MyKeyListener
- 取得具体按键信息
- 根据具体按键调整坦克位置,持有对方引用
- 抽象出坦克类,学习使用枚举类型
- MyKeyListener,TankFrame
- 用匿名内部类处理窗口关闭
- 根据按键状态,改变坦克方向
- 用双缓冲消除闪烁
- 加一堆敌人坦克
- 做碰撞检测
- 显示爆炸
- 加入声音
- 让敌人坦克更加智能
- 对坦克和子弹加入 Group属性
- 测试Properties类的使用
- 建立PropertyMgr类
- MV分开 Model View分离
- GameModel 改成单例模式
- 对于碰撞的处理
- 创建实例
- 抽象出游戏物体的父类
- 合成GameModel中的各种不同物体
- 完善责任链模式
- 加入墙
- 按键切换发射策略
- 实现暂停功能
- 实现存盘功能
- 使用Junit测试服务器loop
- 去掉敌人的坦克(机器控制的坦克)
- 处理接收到的消息
- player新的构造方法
- 让后来人能看到先加入者
- 加入坦克方向改变的消息
- 重构代码
- 处理改变坦克方向的消息
- 发送主战坦克停止的消息
- 发送主战坦克开始移动的消息(方向没变)
- 加入子弹和Player的撞击逻辑
- 把主战坦克也加入到List中
- 完成坦克大战网络版
- 根据坦克方向移动位置
- 能停,能动
- test包,关于classloader的知识
- 将坦克换成图片版
- 画出一颗子弹,让子弹飞一会儿
- 按下ctrl键,主战坦克打出一发炮弹
- 打出多发子弹
- 子弹从坦克中心位置打出
- 子弹消亡(飞出游戏区)
- 定义rectangle属性,不用每次都new
- 炮弹new出来自动加入容器,死掉后自动去除
- 分离玩家和机器人,对边界进行不同的处理
JUnit
- Junit单元测试引入
- 没有Junit的情况下如何测试
- Junit的使用
- @Before_ @After
枚举
- 引入自定义枚举类
- JDK1.5后使用enum关键字定义枚举类
- enum定义枚举类补充
- Enum类的常用方法
- 枚举类实现接口
- 枚举的应用
注解
- 注解的引入
- 注解实例_Junit注解
- 注解实例_文档注解
- 注解实例_JDK内置的3个注解
- 注解实例_替代配置文件的注解
- 自定义注解
- 元注解的概念解释
- 元注解_Retention
- 元注解_Retention补充
- 元注解_Target
- 元注解_Documented
- 元注解_Inherited
反射机制
- 反射的引入
- 反射概念
- Class类
- 提供丰富的类
- 获取字节码信息的四种方式
- 可以作为Class类的实例的种类
- 补充上面的丰富的类中的内容
- 获取构造器和创建对象
- 获取属性和对属性进行赋值
- 获取方法和调用方法
- 获取类的接口,所在包,注解
- 关于反射的面试题
第6阶段 :数据库+JDBC
Oracle+MySQL+JDBC
- oracle安装介绍
- oracle SQL
- oracle函数和多表连接
- oracle的join语法及行专列
- oracle视图、用户管理、序列、DML
- 数据库的事务
- 数据库表的创建、表的约束、索引、数据库
- JDBC及代码分层
- 反射技术实现及封装
- DBUtil及数据库连接池(dbcp、c3p0)
- 数据库连接池(druid、hikariCP)及索引
- mysql的执行计划
- mysql的锁机制
- mysql的主从复制和读写分离
MyCat
- MyCat第一讲.第二讲.第三讲
第7阶段 :前端精讲
HTML
- HTML和CSS的引入
- 网络传输三大基石
- 什么是HTML
- HTML的标准结构
- HBuilder的使用
- html_head_body标签
- head中可用标签
- 文本标签
- 多媒体标签
- 超链接标签
- +
- 超链接设置锚点
- 列表标签
- 列表标签
- 内嵌框架
- 内嵌框架练习 (1.2)
- 框架集合
- form表单的作用
- form表单细节
- form表单练习模拟百度搜索
- 表单元素(1)
- 表单元素(2)
- HTML5新增type类型
- HTML5新增属性
CSS
- CSS的引入
- CSS的三种书写方式
- 明白学习CSS的重点
- 选择器_基本选择器
- 选择器关系选择器
- 选择器_属性选择器
- 选择器_伪类选择器
- 练习:百度导航栏
- 浮动的原理
- 消除浮动影响
- 定位_静态定位相对定位
- 定位绝对定位
- 定位_固定定位
- 盒子模型引入
- 盒子模型代码演示
- 盒子模型练习题
JS
- js介绍及内置功能函数、数据类型、变量
- js的变量及运算符
- js的流程控制语句
- js的函数基本使用
- js的数组和字符串的基本使用
- dom操作、常用方法、事件绑定
- echarts和js对象、函数上下文
- js构造函数、js原型链、继承及实战案例
JQuery
- jquery简介、选择器、常用方法
- jquery的节点关系及函数操作
- jquery轮播图及函数库介绍)
Ajax
- Http协议、php的基本介绍
- ajax基本原理及使用
- ajax的接受数据的方式及三级联通案例
- Vue框架的介绍及使用
- vue框架的介绍及使用
- vue框架的调色板、属性值监听、函数
- vue框架的生命周期、组件使用
- vue框架的高阶使用
因文章内容过多分上下篇
文章中图片真实可靠,需要学习视频私信“资料”二字免费领取
如果觉得还不错的话,可以点点关注,和转发
此文章为原创, 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。