(2021干货系列一)最新Java学习路线整合
怎么学 Java
Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。
话不多说,直接上干货:
先推荐一套免费 的 Java 学习视频 100 集:https://www.bilibili.com/video/BV1FK4y1x7Ny
第一阶段
-
JavaSE 编程基础
- DOS 常用命令
- 安装 JDK、设置环境变量
- DOS 系统编译、执行 Java 程序
- Java 的注释
- 标识符、标识符的命名规范
- Java 关键字
- Java 的数据类型
- 变量的定义及初始化
- Java 的运算符
- 表达式
- 转义字符
- 运算符的优先级
- 类型转换
- Java 分支 if...else
- 多重 if、嵌套 if
- Java switch
- Switch vs if
- Java 循环 for、while 、doWhile
- 循环的嵌套
- break、continue、return
- 方法的定义
- 方法的形参和实参
- 无返回值的方法
- 有返回值的方法
- 方法的重载
-
Java 数组
- Java 数组的定义
- 数组的静态赋值
- 数组的动态赋值
- 数组单个元素的访问
- 数组的遍历访问
- 数组的增强 for 循环
- 数组的排序
- 数组的顺序查找
- 数组的二分法查找
- 命令行参数 args 的使用
- 可变参数的应用
- Arrays 工具类的使用
- 二维数组的使用
-
Java 面向对象
- 面向对象的分析与设计
- 面向对象与面向过程的区别
- Java 与面向对象
- 类的定义
- 对象的定义
- 类中成员变量及方法的定义
- 构造方法的定义和调用
- 构造方法的重载
- 面向对象的封装特性
- this 调用属性、方法、构造方法
- 局部变量和成员变量的作用域问题
- static 静态属性、方法、代码块
- 工具类的概念及工具类的制作
- super 关键字的使用及理解
- Java 中访问权限控制机制
- 继承中构造方法的细节
- 方法的重写
- equals 及 toString 方法的正确理解
- Java 中的包机制
- 抽象类,接口,多态
- 对象的转型
- final 修饰类、属性、方法
- 抽象类,接口
- 多态机制
- 内部类
- 通过内部类制作性能检测工具
- Java 的内存分析
-
常用基础类
- 常用数据类型的包装类
- String、StringBuffer、StringBuilder
- Date 的使用
- SimpleDataFormate 对日期和字符
串之间的转换处理 - Calendar 日历类的使用
- Math 常用方法
- Random 类
- Runtime 类
- System 类
- java8 新特性
-
集合
- 集合框架体系介绍
- 集合框架与数组的对比
- 集合框架之 Collection 接口
- 集合框架之 List 接口
- ArrayList 和 LinkedList 的使用
- 深入源码探究 ArrayList 和 LinkedList
的工作原理 - 迭代器的工作原理
- 迭代器的使用
- 集合框架之 Set
- HashSet 和 TreeSet 的使用
- 深入源码探究 HashSet 和 TreeSet
的工作原理 - HashMap 和 TreeMap 的使用
- 分析 Map 和 Set 的之间的关系
- Collections 工具类
-
异常处理
- Java 的异常体系
- 异常的概念及分类
- 异常的处理方式
- 异常设计原则
- 自定义异常
-
线程和 I/O
- I/O
- NIO
- 文件操作
- 多线程
- 线程池
- 同步
- 线程调度
- 多线程下载
- 网络 http、socket
- 基于 HTTP 协议访问网络资源、XML 解析
- 文件的下载
- ThreadLocal
-
项目
- FTP 服务器、多人聊天服务器
第二阶段
-
HTML5
- HTML 的作用
- 全局标签
- 绝对路径与相对路径
- 常见标签
- 字符集
- 表单标签
- 布局指定的网页
-
CSS3
- css 声明类型
- 常见的各种属性
- 圆角属性:border-radius 的使用
- 阴影属性:box-shadow 的用法
- 背景属性扩展: 多背景应用
- 新的颜色表示方式:HSLA 色轮模式
- 浮动
- 完成自己的初级课页面实战
-
Javascript
- JavaScript 基本语法
- JavaScript 数据类型
- JavaScript 对象和常用对象
- history 对象
- location 对象
- bom 对象
- 表单对象
- DOM 对象
- window 对象
- 常用事件
- 选项卡、幻灯片、贪吃蛇、
瀑布流各种特效
-
MySQL 使用
- Mysql 数据库
- MySql 命令行客户端的使用
- MySql 图形化客户端的使用
- SQL 语句介绍
- DDL
- DML
- DQL
- 多表的联合查询
- 子查询
- 排序、聚合、分组
-
JDBC 连接池
- JDBC 的介绍
- 采用 JDBC 实现 CRUD
- 采用 PrepareStatement 防止 SQL 注入,提高安全性
-
Servlet
- Tomcat 与 eclipse 的集成开发
- 什么是 Servlet
- Servlet 接收客户端请求信息
- Servlet 响应客户端信息
- Servlet 的生命周期
- 什么是 JSP
- JSP 的内置对象
- 透析 JSP 的本质
- JSTL+EL
- MVC 介绍
- 分层的重要性
- Mysql 的事务特性
- MySql 的事务实现
- Session 的使用
- Cookie 的使用
- 实现系统的安全控制
- DBCP 连接池的使用
- C3P0 连接池的使用
- DBUils
- 实现用户的自动登录
- 文件的上传
- 文件的下载
- 过滤器解决编码问题
- 过滤器解决安全验证问题
- 监听器
- 反射、注解、泛型
-
MVC
- 设计模式
- ORM 原理
- 自定义框架
-
ajax
- Ajax 的工作原理
- JSON 解析
- Ajax 数据格式(XML 格式、HTML 格式、JSON 格式、各种格式对比)
- 使用 jQuery 实现 Ajax(load()方法、$.get() 方法、$.post() 方法、序列化、Ajax 应用)
- 聊天室小实例
-
jQuery
- jQuery 选择器
- jQuery 的常用事件
- 事件冒泡
- 事件委派
- jQuery 中的动化
- 模拟操作
- jQuery 综合实例
-
BootStrap
- 响应式设计
- BootStrap 安装
- Bootstrap 组件
- 进度条和列表组件
- BootStrap 综合实例
-
项目
- 讲解项目开发流程
- 项目简介
- 项目功能演示
- 项目功能实现分析
- 数据库设计分析
- 项目架构设计分析
- 实现网站首页的商品展示
- 实现商品详情页面
- 实现购物车功能
- 实现我的订单管理
- 项目验收
第三阶段、云计算体系
-
框架和 Maven
- 为什么用框架
- 流行的框架
- Maven 概述
- 使用 Maven 的优势
- maven 的一次构建
- 依赖管理
- 安装配置介绍. 使用 Maven 核心概念介绍 (坐标、依赖、仓库、插件、生命周期等)
- Maven 与第三方 Elicpse 整合及如何在 Eclipse 中使用 Maven、Maven 私服 Nexus 的安装使用
- 如何使用 Maven 构建 Web 应用
- 使用 Maven 构建 SSH 应用
- 使用 Maven 进行多模块和继承使用
-
Hibernate5
- ORM 思想
- hibernate5 与 JPA 关系介绍
- hibernate.cfg.xml 配置
- hbm.xml 映射文件详解
- 主键生成策略 PO 对象三种状态分析与切换
- hibernate5 一级缓存分析与测试
- Hibernate5 高级映射技术
- Hibernate5 多表联合查询
- Hibernate5 的性能优化
- hibernate4 及 hibernate3 区别及新特性介绍
-
JPA
- JPA 概述
- JPA 注解
- JPA 相关 API
- JPA 映射
- JPQL
- 二级缓存
- Spring 整合 JPA
-
Struts2
- Struts2 框架介绍
- 工作原理及架构分析
- 快速掌握 Struts2 开发模式
- Struts.xml 详解
- 通配符的配置模式
- ActionContext 及 ServletActionContext 使用
- 类型自动转换机制
- 多模块的开发模式
- 单文件上传
- 多文件上传
- 文件下载
- 拦截器的介绍
- 默认拦截器
- 自定义拦截器
- Token 机制
-
Spring4
- 框架原理介绍
- 框架环境搭建
- 快速入门
- 创建 Bean 的方式及实现原理
- Bean 种类
- Bean 生命周期
- Bean 的作用域
- Bean 的注值方式
- SpEL
- 整合 Junit 测试
- Web 项目集成 spring
- 注解装配 Bean
- AOP 思想
- AOP 原理解剖
- 传统方式实现 AOP 开发
- AspectJ 介绍及实现 AOP 开发
-
SpringMVC
- Spring MVC 概述
- 使用 @RequestMapping 映射请求
- 请求处理方法签名概述
- 处理方法签名详细说明
- 使用 HttpMessageConverter
- 处理模型数据
- 数据绑定流程剖析
- 数据转换
- 数据格式化
- 数据校验
- 视图和视图解析器
- 处理方法的数据绑定
-
博客、论坛项目整合和富文本编辑器
- 博客或论坛项目在面试中的意义
- 如何使用 Maven 构建框架开始写项目
- 业务流程
- 富文本编辑器整合
- 前后台的业务实现
-
MyBatis
- 安装和配置 MyBatis
- 使用映射语句
- 执行非查询语句
- 使用高级查询技术
- 事务
- 使用动态 SQL
- 使用高速缓存提高性能
- MyBatis 数据访问对象
- DAO 使用进阶
-
项目整合
- 使用 SSM 整合博客或论坛项目
- 体现 MyBatis 的优越性
- 使用对比
-
SpringData
- Spring Data 概述
- Repository
- CrudRepository
- PagingAndSortingRepository
- JpaRepository
- 条件查询
- 使用 @Query 自定义查询
- @Query 与 @Modifying 执行更新操作
- 索引参数与命名参数
- 用 @Query 来指定本地查询
- 为某一个 Repository 上添加自定义方法
- 所有的 Repository 都添加自实现的方法
-
Redis、MongoDB(二选一)
- redis 安装
- redis 数据类型
- redis 操作
- java 操作 redis
- redis 写个带分页好友关系处理系统
- Linux 平台安装 MongDB
- MongDB 插入、更新、删除、查询文档、MongoDB 条件操作符
- MongoDB 排序、索引、聚合、复制、分片
- MongoDB 与 java、MongoDB 数据库引用
- java 写一个 MongoDB 的操作
-
SpringSecurity(二选一)
- 加强 URL 访问安全
- 登录到 Web 应用
- 验证用户
- 加强方法调用的安全
- 做出访问控制决策
- 处理视图中的安全性
- 处理领域对象安全性
-
Shiro(二选一)
- 权限基础
- Shiro 概述
- Shiro 配置基础
- Permissions
- Authentication
- Authorization
- Role
- 编程授权
- Realm
- Realms 的认证实现
- Realms 的授权实现
- Spring 集成 Shiro
- Spring 集成 Shiro
- 基于注解的授权
-
WebService
- WebService 介绍
- WebService 的应用场景
-
WebService
- http 协议
- RestFul 规范
- postman 使用
- spring 实现 RestFul
第四阶段
-
亿级并发架构演进
架构演进特点大并发架构微服务 -
Linux 基础
文件处理命令权限管理命令帮助命令文件搜索命令压缩解压命令命令使用技巧 VIM 使用软件包管理用户和用户组管理服务和进程基本网络设置云服务器搭建和使用 -
搭建 tomcat 环境
在云服务器下搭建 tomcat 和 MySQL 服务器 -
MySQL 主从
MySQL 主从和 binlog 的配置 -
MySQL 主从
nginx 服务器的优势 nginx 服务器配置什么是反向代理什么是负载均衡负载均衡算法构建数十台服务器的负载均衡环境 -
SSL 证书配置
为什么使用 SSL 证书 RSA 算法、DES 算法 Let's Encrypt 证书申请证书续期 -
keepalived 双活
不间断服务的重要性 keepalived 原理 OSI 七层模型和 TCP/IP 四层模型配置 keepalived 服务 -
MySQL 高级
ACID 和 MySQL 的实现原理 SQL 优化技巧 MySQL 分区 Explain 分析 -
memcached
MySQL 引擎 memcached 优势 memcached 与 Java 配使用用 memcached 分布式处理 -
elasticsearch
为什么使用全文索引 elasticsearch 与 solr 的对对实时索引分布式 elasticsearch 写一个自己的搜索引擎 -
ActiveMQ 队列
队列应用场景常用的队列服务器队列服务器的架设压力测试 Java 中使用队列服务器 -
MyCat 分库分表技术
MyCat 介绍分库分开技术讲解其他的数据库中间件配置与自动分表 -
Rpc 和 Dubbo
分布式服务框架简介 Dubbo 主要核心部件 Dubbo-RPC 基本功能 Dubbo- 高级功能远程方法调用软负载均衡及容错机制 linux 上 Dubbo 的部署 -
svn & git & Jenkins 持续集成
svn 介绍 svn 服务器和客户搭建配置如何使用 svn 多人一起进行冲突解决 git 常用命令 git 的 web hooks 为什么要使用持续集成持续集成与 git 的 web hooks 配使使用 -
echarts 图表插件
图表介绍和选择什么样的图表 5 分钟快速上手常用 API 和模块移动端自适应 -
UML 和常用工具的使用
UML 的作用 UML 常用工具的使用 UML 的 3 个要素 UML 的 3 个基本构造块事物是对模型中最具有代表性的成分的抽象 5 种图定义 UML 的应用领域 -
Hadoop
大数据的应用场景 Hadoop 架设 Hadoop 单机配置 Hadoop 伪分布式环境 Hadoop 集群环境 HDFS 的使用和配置分治思想分治思想处理数据 MadReduce 原理 MapReduce 架设和使用云服务器上提供的大数据工具 -
亿人同时在线的抢票系统
大并发系统的应用大并发系统的分析大并发系统的设计大并发系统的开发手把手带着学员完成大并发系统 -
综合项目实战
15 个大型项目选择各种项目特点分析项目设计项目分组选择框架后台搭建使用 Maven 构建项目项目开发压力测试 webhooks 项目自动部署面试中常问到的项目问题项目 bug 收集和解决阿里云、腾讯云项目上线项目验收项目答辩
最后是实战项目,是时候展现真正的技术了!