前言
写这篇文章目的,就是列出了一个Java的路线图,带刚开始学习Java或需要复习Java的朋友进行系统的学习。
整个体系分为5个阶段:Java基础、Java进阶、JavaWeb、Java框架、分布式,通过这5个阶段的学习,大家能掌握到目前互联网企业所需要的主流技术点。
每个课程后面都有我的博文地址,内容会持续更新,争取完成一个完整的体系。
学习方法方面给初学朋友的建议就是:
1、坚持,Java的知识点多,而且是一个体系,必须一步一步坚持下去
2、思考,每个知识点除了知道怎么用,还需要思考不用行不行、有没有其他办法、实现的原理等
3、练习,学习编程就是多敲代码,每篇博文都有案例、练习和作业,多动手学习起来才有效果
第一阶段 Java基础 | |||
序号 | 课程名称 | 内容简介 | 博客地址 |
1 | Java的安装和配置 | Java语言介绍 | Java基础01 Java的安装和配置_恒哥~Bingo的博客-CSDN博客 |
JDK安装 | |||
环境变量配置 | |||
HelloWorld | |||
Java编译执行过程 | |||
Eclipse的使用 | |||
2 | 变量、标识符和类型转换 | Java标识符的规则和规范 | Java基础02 变量、标识符和类型转换_恒哥~Bingo的博客-CSDN博客 |
Java的关键字 | |||
变量的定义和使用 | |||
变量的数据类型 | |||
自动类型转换 | |||
强制类型转换 | |||
Scanner输入 | |||
3 | Java的运算符 | 赋值运算符 | Java基础03 Java的运算符_恒哥~Bingo的博客-CSDN博客 |
算术运算符 | |||
关系运算符 | |||
逻辑运算符 | |||
三元运算符 | |||
4 | 分支语句 | 基本的 if | Java基础04 分支语句_恒哥~Bingo的博客-CSDN博客 |
if-else | |||
多重if | |||
嵌套if | |||
switch | |||
5 | 循环结构 | for | Java基础05 循环结构_恒哥~Bingo的博客-CSDN博客 |
while | |||
do-while | |||
break和continue | |||
嵌套循环 | |||
6 | 数组基础 | 数组简介 | Java基础06 数组基础_恒哥~Bingo的博客-CSDN博客 |
数组的定义 | |||
数组的初始化 | |||
foreach循环 | |||
Arrays工具 | |||
二维数组的使用 | |||
7 | 数组算法 | 求最大值 | Java基础07 数组算法(顺序查找、冒泡排序、选择排序、二分查找)_恒哥~Bingo的博客-CSDN博客 |
顺序查找 | |||
冒泡排序 | |||
选择排序 | |||
二分查找 | |||
8 | 方法 | 方法的概述 | Java基础08 方法_调用有参方法时传入的值可以为cloud_恒哥~Bingo的博客-CSDN博客 |
无参的方法 | |||
有参的方法 | |||
基本类型和引用类型参数的区别 | |||
方法的重载 | |||
带返回值的方法 | |||
可变参数 | |||
9 | 面向对象~类和对象 | 面向对象的概念 | Java基础09 面向对象~类和对象_恒哥~Bingo的博客-CSDN博客 |
类和对象的概念 | |||
面向对象编程 | |||
属性和方法 | |||
构造方法 | |||
this关键字 | |||
面向对象的内存分配 | |||
10 | 面向对象~封装 | 封装的概念 | Java基础10 面向对象~封装_恒哥~Bingo的博客-CSDN博客 |
访问修饰符 | |||
getter和setter方法 | |||
包 | |||
对象之间的通信 | |||
11 | 面向对象~继承 | 继承的相关概念 | Java基础11 面向对象~继承_恒哥~Bingo的博客-CSDN博客 |
super关键字 | |||
继承中的构造方法 | |||
final关键字 | |||
抽象类 | |||
12 | 面向对象~多态 | 什么是多态 | Java基础12 面向对象~多态_恒哥~Bingo的博客-CSDN博客 |
多态的作用 | |||
如何实现多态 | |||
Object类 | |||
equals和==的区别 | |||
向上向下转型 | |||
instanceof运算符 | |||
13 | 面向对象~static关键字和单例模式 | 静态属性 | Java基础13 面向对象~static关键字和单例模式_恒哥~Bingo的博客-CSDN博客 |
静态属性内存分析 | |||
静态方法 | |||
静态常量 | |||
静态导入 | |||
单例模式 | |||
14 | 面向对象~接口和内部类 | 接口是什么 | Java基础14 面向对象~接口和内部类_恒哥~Bingo的博客-CSDN博客 |
接口的作用 | |||
接口的使用 | |||
接口和抽象类的区别 | |||
静态内部类 | |||
成员内部类 | |||
局部内部类 | |||
匿名内部类 | |||
15 | Java常用类 | String类 | Java基础15 Java常用类_恒哥~Bingo的博客-CSDN博客 |
StringBuffer类和StringBuilder类 | |||
包装类 | |||
日期相关API | |||
Math类 | |||
Random类 | |||
Runtime类
| |||
System类
| |||
16 | 集合 | 集合框架体系介绍 | Java基础16 集合(ArrayList、LinkedList、HashSet、HashMap)_恒哥~Bingo的博客-CSDN博客 |
集合和数组的区别
| |||
Collection接口
| |||
List、Set、Map接口
| |||
ArrayList集合,数据结构和源码分析
| |||
LinkedList集合,数据结构和源码分析
| |||
HashMap集合,数据结构和源码分析
| |||
17 | 集合 | Collections类 | Java基础17 集合(排序和迭代,Lambda表达式)_集合的sorted和foreach_恒哥~Bingo的博客-CSDN博客 |
Comparable接口
| |||
Comparator接口
| |||
Lambda表达式
| |||
18 | 异常 | Java的异常体系 | Java基础18 异常_异常哥后面是什么_恒哥~Bingo的博客-CSDN博客 |
异常的概念及分类 | |||
try-catch的基本用法 | |||
多重catch的用法 | |||
finally的基本用法 | |||
finally和return执行顺序 | |||
throw、throws的基本用法 | |||
自定义异常 | |||
19 | IO |
IO流的分类及体系结构
| Java基础19 IO基础_恒哥~Bingo的博客-CSDN博客 |
字节输入流
| |||
字节输出流
| |||
try with resource
| |||
字节缓冲流 | |||
打印流
| |||
字符流
| |||
字符缓冲流
| |||
数据流 | |||
装饰设计模式
| Java基础20 装饰者模式_恒哥~Bingo的博客-CSDN博客 | ||
序列化
| Java基础21 序列化和反序列化_恒哥~Bingo的博客-CSDN博客 | ||
20 | 网络编程 | 网络编程相关概念 | Java基础22 网络编程(HTTP和UDP)_恒哥~Bingo的博客-CSDN博客 |
HTTP协议 | |||
HTTP网络编程 | |||
TCP/IP协议 | Java基础23 Socket手撸应用服务器_恒哥~Bingo的博客-CSDN博客 | ||
UDP协议 | |||
Socket编程 | |||
UDP编程 | |||
21 | JVM | JVM内存模型 | JVM优化入门_恒哥~Bingo的博客-CSDN博客 |
GC机制 | |||
堆分代 | |||
JVM优化 | |||
类加载机制 | |||
21 | 项目实战:亿度云盘v1 | C/S架构,客户端和服务器端通过网络通信,实现文件查询、上传、下载和删除功能 | https://edu.csdn.net/course/detail/31782 |
第五阶段 分布式 | |||
序号 | 课程名称 | 内容简介 | 博客地址 |
1 | SpringCloud Eureka | 为什么使用微服务 | |
为什么使用注册中心
| |||
Eureka注册中心使用
| |||
Eureka的自我保护机制
| |||
Eureka的安全配置
| |||
Eureka的集群配置
| |||
2 | SpringCloud Ribbon | 负载均衡 | |
服务器端负载均衡和客户端负载均衡
| |||
Ribbon负载均衡策略
| |||
RestTemplate的用法
| |||
3 | SpringCloud Hystrix | 服务可用性 | |
服务雪崩问题
| |||
Hystrix的使用
| |||
Hystrix的隔离模式
| |||
4 | SpringCloud Feign | Feign是什么 | |
Feign怎么用
| |||
Feign处理各种参数
| |||
Feign原理
| |||
Feign优化
| |||
5 | SpringCloud Zuul | 服务网关的作用 | |
Zuul介绍
| |||
Zuul的基本使用
| |||
Zuul的路由规则
| |||
Zuul的过滤器
| |||
Zuul限流
| |||
Zuul超时优化
| |||
6 | SpringCloud Config | Config的介绍 | |
Config的基本使用
| |||
动态更新配置
| |||
7 | Elasticsearch | Elasticsearch介绍 | Elasticsearch的安装和基本使用_恒哥~Bingo的博客-CSDN博客 |
Elasticsearch的安装 | |||
Kibana安装 | |||
安装分词器 | |||
SprngBoot整合Elasticsearch | SpringBoot整合Elasticsearch_恒哥~Bingo的博客-CSDN博客 | ||
ElasticsearchRepository操作索引 | |||
查询操作 | |||
8 | RabbitMQ | 消息队列是什么 | RabbitMQ的安装_恒哥~Bingo的博客-CSDN博客 |
消息队列的作用 | |||
主流的消息队列 | |||
RabbitMQ的安装 | |||
RabbitMQ的几种消息队列模式 | RabbitMQ的五种消息队列_queueingconsumer_恒哥~Bingo的博客-CSDN博客 | ||
SpringBoot整合RabbitMQ | SpringBoot整合RabbitMQ实现数据同步_rabbitmq exchange 同步_恒哥~Bingo的博客-CSDN博客 | ||
9 | Redis | Redis简介 | Redis入门HelloWorld_恒哥~Bingo的博客-CSDN博客 |
Redis安装和使用
| |||
Redis的数据类型
| |||
SpringBoot整合Redis
| SpringBoot整合Redis实现声明式缓存_恒哥~Bingo的博客-CSDN博客 | ||
声明式缓存
| |||
事务 | Redis事务+分布式锁+持久化策略+淘汰策略_分布式锁效率和乐观锁比较_恒哥~Bingo的博客-CSDN博客 | ||
分布式锁 | |||
淘汰策略 | |||
持久化策略 | |||
10 | 微信支付 | 支付流程 | 微信支付的实现_微信支付实现_恒哥~Bingo的博客-CSDN博客 |
实现微信支付接入
| |||
微信平台通知后台 | |||
11 | JWT单点登录 | RSA加密算法 | JWT单点登录_恒哥~Bingo的博客-CSDN博客 |
JWT | |||
单点登录实现流程 | |||
解决cookie写入失败的问题 | |||
12 | SpringCloud Alibaba | Nacos 服务注册与发现 | SpringCloud Alibaba 入坑(一)Nacos 服务注册与发现_恒哥~Bingo的博客-CSDN博客 |
Nacos 配置中心 | SpringCloud Alibaba 入坑(二)Nacos 配置中心_恒哥~Bingo的博客-CSDN博客 | ||
Sentinel入门 | SpringCloud Alibaba 入坑(三)Sentinel入门_恒哥~Bingo的博客-CSDN博客 | ||
Sentinel基本流控规则 | SpringCloud Alibaba 入坑(四)Sentinel基本流控规则_恒哥~Bingo的博客-CSDN博客 | ||
Sentinel高级流控规则 | SpringCloud Alibaba 入坑(五)Sentinel高级流控规则_恒哥~Bingo的博客-CSDN博客 | ||
@SentinelResource注解 | SpringCloud Alibaba 入坑(六)@SentinelResource注解_恒哥~Bingo的博客-CSDN博客 | ||
分布式事务Seata | SpringCloud Alibaba(七)Seata 分布式事务_恒哥~Bingo的博客-CSDN博客 | ||
13 | ShardingSphere分库分表 | 四种分库分表策略 | 使用Sharding-JDBC实现分库分表_恒哥~Bingo的博客-CSDN博客 |
水平分库 | |||
水平分表 | |||
公共表 | |||
读写分离 | |||
15 | 面试题 | Java经典面试题汇总200道_恒哥~Bingo的博客-CSDN博客 |