为大家整理了2022最新的Java学习路线图,从学前准备、学习路线、项目实战、面试提升等四个方面给大家分享一些经验,希望可以给学习Java的小伙伴们一些帮助。
个人学习经验:
我本人是计算机科班出身,现在工作三年之后也仍然没有放弃学习,经常在B站上看一些学习教程来温故知新,看的比较多的就是黑马程序员的课程了,下面整理的也有一些是黑马的课程,大家也可以根据自己的学习整理一些常用的资源库来学习进阶呀。下面进入正题:
目录
一、学习Java之前你要准备这些
二、Java从入门到进阶学习路线
1、基础知识
2、Spring相关知识
3、应用服务学习
4、Springboot框架
5、深入理解JVM
6、前端也需要学习
三、10个开源项目带你走进实战
1、eladmin
2、Flappy Bird
3、Hutool
4、Java小游戏
5、XMall商城
6、Piggy Metrics
7、Cloud-Platform
8、seata
9、Jodd
10、Java
四、面试+工作后的自我提升学什么
Java研发书籍推荐,这些可以先收藏呀:
工作之后怎么提升?
一、学习Java之前你要准备这些
学java之前大家一定不能着急,想想想自己是不是真的对java很感兴趣呢,是不是可以真的可以坚持学习呢?这些都是你学java之前一定要想清楚的东西,如果这些你都想清楚了,那么下面一起来和我进入正题……
学java第一件事情,就是系统学习java基础,这个时候你应该准备好你的学习环境,安装JDK很简单,初学可以不用上来就用IDE工具,可以先用文本编辑器来过渡一下,后期的时候再用IDE也是可以的。
这里给大家一些Java必备学习工具(先收藏):
- 开发工具:IDEA、Eclipse、VS Code
- 版本控制工具:Git、SVN
- Docker、K8s
- 命令行工具:iterm2(MacOS)
- 网络测试工具: PostMan、PostWoman
- 网络抓包工具
- 持续集成:Jenkins
- Linux:远程连接Linux,Linux的常用命令(非必备)
对于工具来说是java程序员学习进阶的利器之一,很多工具在后期的项目中都是需要用到的,大家可以提前学习了解一下。
还另外最重要的一件事情就是:不要光看不练习!……对于编程来说理解的唯一方式就是动手,只有这样才能学到技能,学习的过程虽然辛苦,但是一定要坚持,等你能做一些小案例的时候,就会觉得Java其实也非常有意思
二、Java从入门到进阶学习路线
1、基础知识
- 基本程序结构:基本变量类型、运算符、字符串、流程控制、数组
- 类与对象:类的定义和使用、静态属性和方法、继承、包管理、枚举、反射
- 接口和抽象类:接口的定义及实现、抽象类的定义及实现
- 泛型:泛型类、泛型方法
- 集合:Set、List、Map、树、排序和查找
- 异常与调试:内置异常、声明异常、自定义异常、捕获异常、日志
- 多线程:多线程概念、使用线程、同步
- Java 8 之后的新特性:Lambda表达式、Stream(map、filter、reduce、集合)
- Java 网络编程:TCP、UDP
- Java I/O、NIO
学习基础知识最重要的一点就是让大家对java语言有一个基本了解,另外无论大家今后是面试大厂还是面试小厂,基础知识都是考察的重中之重。
大部分语言的基础知识都是大同小异,包含基本的数据类型、程序结构等等。如果是Java这类面向对象的,那么还得掌握面向对象的知识,面向对象是重中之重,面向对象是重中之重,面向对象是重中之重,重要的事情说三遍。只有掌握面向对象的知识,在后续的开发中才会有更好的成长。
2、Spring相关知识
- Maven:Maven与包管理、POM文件、生命周期等
- 单元测试:单元测试的概念,Junit
- Spring Core:依赖注入与控制反转、Spring概述、xml 装配 bean、Spring容器与生命周期、自动装配、注解装配、切面编程(AOP)
- HTTP协议:基本概念、方法(GET/POST)、HttpClist 库
- JSON知识:JSON 概念、JSON 与 HTTP、JSON封装的库(FastJson、jaskson 库)
- Servlet概念:Servlet 概念、Servlet 生命周期、Filter 和 Listener、Tomcat 与 Servlet 容器
- Spring MVC概念:配置Spring MVC、路径映射、参数传递、实现REST、权限控制等
spring是java学习的利器,之前在我刚刚接触java的时候,对后端的认知就是Spring、Struts2、Hibernate三驾马车,但后来六演变成了掌握 Spring、Spring MVC、Mybatis,尤其是 Spring 框架。
这部分内容大家可以从新建一个Spring项目开始,一步步循序渐进,一步步慢慢来就可以稳扎稳打。
3、应用服务学习
- MySQL:关系型数据库概念,数据库的CRUD操作、JDBC API、数据库特性,数据库连接池
- MyBatis:OR映射概念,配置,映射,基本Java库,和Spring集成
- 缓存:缓存概念、Redis的使用、缓存雪崩、缓存穿透、缓存击穿
- NoSQL:NoSQL概念,Mongodb的使用
- 队列:队列概念,RabbitMQ、Kafka
- 搜索引擎:Elasticsearch
- 反向代理:反向代理概念,Nginx的配置和使用
应用服务这一块,涵盖了很多领域,包括持久化、缓存、队列、反向代理等,这些是完善一个程序的重中之重。前面的那几个知识属于基础框架,那么中间件就是给框架里填充一些增强的部分,让程序健壮稳定。
4、Springboot框架
- 第一个SpringBoot项目、核心配置文件properties(yml、yaml)、集成jsp
- SpringBoot的web开发:集成MyBtis、SpringBoot 下的SpringMVC、SpringBoot开发RESTFul风格、集成Redis
- Spring Boot 集成 Dubbo、Spring Boot 非 web 应用程序、SpringBoot 启动Logo修改关闭
- springboot使用拦截器、Servlet、过滤器Filter、Spring Boot 项目配置字符编码、SpringBoot打包部署、集成Logback日志
- SpringBoot集成Thymeleaf
SpringBoot的意义在于它继承了Spring的过去优点,ioc,aop,springmvc,而且快速启动服务器,快速开发单个微服务。最大的重要性是:springcloud是一个基于springboot实现的一系列框架的集合,用来提供全局的服务治理方案。所以学它就对了,没什么好说的。
5、深入理解JVM
- 类的加载机制:什么是类的加载、类的生命周期、类加载器、双亲委派模型
- jvm内存结构:jvm内存结构都是什么、对象分配规则
- GC算法 垃圾回收:对象存活判断、GC算法、垃圾回收器
- GC分析 命令调优:GC日志分析、调优命令、调优工具
只有熟悉JVM,你才能在遇到OutOfMemory等异常时,不会束手无策,不会一脸懵逼得上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。
6、前端也需要学习
- 前端技术:HTML、CSS、JS、JQuery、Bootstrap
- JavaWeb 核心内容:Servlet、JSP、XML、HTTP、AJAX、过滤器、拦截器等
- MySQL 和 JDBC
很多公司都是前后端不分离的,而且学习前端的好处也有很多,我们可以自己写一个测试的Demo,前端请求下,比你用postman这类工具效率来的高,可以走一整套流程。
三、10个开源项目带你走进实战
1、eladmin
地址:https://github.com/elunez/eladmin
项目简介: eladmin是一个基于 Spring Boot + Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由,对于初学者还是比较友好的。
2、Flappy Bird
地址:https://github.com/kingyuluk/FlappyBird
通过学习该项目可以学习到:
- 使用标准库中的一些工具,比如集合、播放音效、加载图片;
- 如何利用多文件,把不同的逻辑拆分到不同的类中去,并相互之间协作构建起整个游戏的状态;
- 一些设计模式的应用,比如单例、对象池;
3、Hutool
地址:https://github.com/dromara/hutool
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当。
4、Java小游戏
地址:https://github.com/AlmasB/FXGLGames
项目中已经内置了一些简单游戏的 Demo,通过学习可以让你快速上手,框架还可以将游戏轻松打包到单个可执行文件。
5、XMall商城
地址:https://github.com/Exrick/xmall
项目所用技术栈:SSM、Elasticsearch、Redis、MySQL、ActiveMQ、Shiro、Dubbo、Zookeeper、Vue.js 等
项目简介:XMall是一个基于SOA架构的分布式电商购物商城,并且前后端分离。包括如下几大模块:
- 后台管理系统:管理商品、订单、类目、商品规格属性、用户、权限、系统统计、系统日志以及前台内容等功能
- 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作
- 会员系统:用户可以在该系统中查询已下的订单、管理订单、我的优惠券等信息
- 订单系统:提供下单、查询订单、修改订单状态、定时处理订单
- 搜索系统:提供商品的搜索功能
- 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息
6、Piggy Metrics
地址:https://github.com/sqshq/piggymetrics
项目所用技术栈:Spring Boot、Spring Cloud、Docker等
项目简介:Piggy Metrics是一个基于Spring Boot, Spring Cloud和Docker等技术实现的微服务脚手架,项目包含了:API网关、服务发现、负载均衡、熔断机制、配置中心、监控服务、认证服务等几大微服务项目基本模块,对学习和练手微服务项目是不错的选择。
7、Cloud-Platform
地址:江离/Cloud-Platform
项目所用技术栈:Spring Boot、Spring Cloud全家桶、Vue.js等
项目简介:Cloud-Platform是国内首个基于Spring Cloud的微服务开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。
8、seata
地址:https://github.com/seata/seata
项目简介: Seata 是一款阿里巴巴开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
9、Jodd
地址:https://github.com/oblac/jodd
Jodd是一个非常易用和好上手的开源Java微框架,里面包含了一系列平时经常会用到的一些核心程序库、工具类/方法、实用程序/框架等等。有了它,开发人员做起事来会变得非常简易和优雅,引入jodd就能帮我们快速实现某些功能。
10、Java
地址:https://github.com/TheAlgorithms/Java
项目简介: 这是一个基于Java的数据结构与算法的实现项目。里面包含了几乎常用所有数据结构的实现,以及诸多算法题和LeetCode习题的Java实现。
四、面试+工作后的自我提升学什么
对面试来说无非就是两方面,第一就是面经,第二就是刷题。
看面经除了在网上进行搜索或者面试平台上看分享,真敢还推荐GitHub上面JavaGuide和CS-Notes这两个仓库,里面覆盖了大部分面试内容,整体比较全面。
传送门:
- JavaGuide: https://github.com/Snailclimb/JavaGuide
- CS-Notes: https://github.com/CyC2018/CS-Notes
刷题网站推荐的话重要就是牛客网以及LeetCode,还有我最近发现的一个趣IT也不错。
趣IT网址:https://www.funit.cn/
涵盖有一些大厂真题以及阶段性能力测试,这些大家都可以自己去刷。
对于大厂来说,除了上面这些还建议大家看书+读源码,因为Java面试如果仅仅看面经的话,遇到源码和更深入一层的问题基本顾及不到,而恰恰现在大厂的面试官都会去深入一步询问。
Java研发书籍推荐,这些可以先收藏呀:
Java高并发程序设计 -> JDK -> 深入理解Java虚拟机 -> MySQL必知必会 -> Redis开发与运维 -> TCP/IP编程 -> 图解HTTP -> Head First 设计模式 -> Java 8实战 -> 大型网站技术架构 -> 高性能MySQL -> 其他
书籍详情:
- JDK的collection,map,concurrent包必看
- Java高并发程序设计:必看,面试中高并发几乎是必问的点,如果没有系统的看过高并发程序如何写,类库如何用很容易被问晕
- 深入理解Java虚拟机:必看,经典中的经典,所有jvm和jmm相关的问题和知识都在这里有答案
- MySQL必知必会:必看,内容为sql语句的基本使用,建议配合牛客网的数据库实战编程[6]来复习
- Redis开发与运维:必看,主要内容为Redis的使用和特点,讲解了Redis都有哪些可用的内容
- TCP/IP编程:必看,书中虽然都是C++,但基本覆盖了网络编程能遇到的问题,包括IO使用,网络字节序等
- 图解HTTP:必看,书很短一天就能看完,能很快的掌握http协议中的字段和含义,面试中也经常被问到
- 大型网站技术架构:必看,面试中常常会遇到秒杀系统设计一类的问题,这时候需要有对分布式系统演化的理解
- Head First 设计模式:选看,讲Java设计模式的,其中单例模式的四种实现被问得最多
- Java 8实战:选看,非常有价值的书籍,Java 8的新特性使得Java函数式编程成为了可能
- 高性能MySQL:选看,内容为mysql的实现原理和性能优化,在面试中经常会被问到,读这本书会有更深刻的理解
- 其他:还有很多进阶的书籍,比如Spring揭秘、Netty权威指南、Redis设计与实现等,这些都可以后续再看
工作之后怎么提升?
【JDK8-15新特性】
- JavaJDK新特性详解系列教程,持续更新
- java基础强化教程,JDK 13新特性全面解读
- java教程JDK14新特性全面剖析,jdk新版本解读
- 黑马程序员java教程JDK15新特性全方位解读
【编程强化】
- 黑马程序员Java设计模式详解,全网最全23种Java设计模式(图解+框架源码分析+实战)
- 黑马程序员Java数据结构与java算法,全网资料最全数据结构+算法教程,154张java数据结构图
- 黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓
- 黑马程序员全面深入学习Java并发编程,JUC并发编程全套教程
- 黑马程序员Netty全套教程,全网最全Netty深入浅出教程,Java网络编程的王者
【数据库强化】
- 黑马程序员MySQL全套教程,超详细的MySQL数据库优化,MySQL面试热点必考问题
- 黑马程序员Oracle数据库精讲,从0到1学会Oracle数据库
【热门技术扩展】
- java进阶教程数据层全栈方案Spring Data高级应用
- 黑马程序员java日志框架教程,全面深入学习多种java日志框架
- 黑马程序员Lucene全文检索技术,从底层到实战应用Lucene
- 黑马程序员Solr从基础到项目实战,Java高薪必备Solr从基础到实战
- 黑马程序员Java高级工程师必备技术栈-由浅入深掌握Shiro权限框架
- 黑马程序员Elastic-Job分布式任务调度深入浅出
- 黑马程序员分布式事务控制解决方案从入门到应用,微服务分布式系统开发教程
- java基础进阶教程3天深入学习分布式事务应用及解决方案
- 黑马程序员Nginx教程,Java进阶从0到1学会Nginx分布式框架
- 黑马程序员Java报表数据可视化教程,从基础到实战(热门HighCharts,Echarts全涵盖)
- 黑马程序员Java进阶VelocityTools全套教程,带你快速进阶模板引擎的深度使用
- 黑马程序员java教程最新工作流引擎Activiti7基础到进阶,Activiti和Spring框架、SpringBoot整合
- java基础教程全面讲解百度地图的原理与案例应用
- java基础进阶-企业开发首选的安全框架Spring Security深入浅出
- 黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权
- 黑马程序员Java在线支付教程,全面掌握Java(微信支付+支付宝支付等)常用支付方式
- 黑马程序员Java教程自动化部署Jenkins从环境配置到项目开发
上述视频来源: https://www.bilibili.com/read/cv9965357?from=articleDetail