导图社区 Java后端工程师学习路线
Java后端工程师学习路线,包括Java语言基础、MySQL数据库、idea开发工具教程、Maven、GIT等等。
编辑于2022-05-12 14:07:04Java后端学习路线
Java语言基础
视频:https://www.bilibili.com/video/BV1Kb411W75N
书:《Java核心技术 卷1》《Java核心技术 卷2》《Head first Java》 《effective Java》
此阶段学习目标:熟悉Java语言相关的基本开发环境,掌握Java语言的基本语法,重点学习语言的特性,常用类库的调用与基本原理。八大基本数据类型,多线程,集合,IO流,异常处理,流程控制,类,接口,抽象类,反射,面向对象的思想,枚举与注解等。
MYSQL数据库
视频:https://www.bilibili.com/video/BV1iq4y1u7vj
书:《高性能MYSQL》《MYSQL技术内幕:Innodb存储引擎》
学习目标:重点掌握SQL语句的编写,需要熟悉常见业务的SQL语句编写方法(增删改查),熟练掌握数据库和表的创建,在学习阶段尽量使用Linux环境安装MYSQL服务进行练习,重点了解主键的概念,存储过程和视图了解即可,实际开发用的不多。理论方面重点学习数据库的三大范式概念,索引的概念,索引优化方案,索引的底层数据结构原理,数据库的事务,MVCC概念,脏读,不可重复读,幻读问题等。
IDEA开发工具教程
视频:https://www.bilibili.com/video/BV1PW411X75p
学习目标:了解常见的快捷方式,创建项目的方式,debug调试,插件安装方法,maven配置
这一项学习可以放在第一个顺序,直接使用IDEA进行Java开发的学习,不要使用Eclipse
Maven
视频:https://www.bilibili.com/video/BV12q4y147e4
学习目标:Maven是后面Java项目进行构建的时候所需要的一个Jar包管理工具,在前期学习中可以通过手动引入Jar包文件的方式进行项目的运行,后期需要大量的Jar包,且不同的包之间还要进行版本匹配,所以需要一个包管理工具。(Jar包就是第三方服务的Java程序打成了包,我们项目中需要引入这些第三方的组件来帮助我们写代码)
GIT
视频:https://www.bilibili.com/video/BV1vy4y1s7k6?spm_id_from=..search-card.all.click
学习目标:掌握常用的Git命令,对这项工具需要有使用意义上的深入了解,比如git这个工具为我们企业协同开发,个人私有库开发提供了什么帮助。需要创建自己的github账号,并且将自己学习过程中写的代码提交到库中,留下记录。
JavaWeb
视频:https://www.bilibili.com/video/BV1AS4y177xJ
学习目标:从这块开始将进入Java项目正式开发的学习,Javaweb阶段会学一些简单的前端代码,后端重点理解servelet,mvc概念,体会前端与后端是如何交互工作,联系在一起的。体会一个web网页程序是如何工作的,如何呈现在浏览器中的。
Spring
视频:https://www.bilibili.com/video/BV1Vf4y127N5
书:《spring5 核心原理》《spring源码深度解析》
学习目标:这是Java企业级开发最重要的一个框架,后续重点学习的springboot就是在它的基础上进行的扩展。这是学习到目前为止所接触的第一个Java后端框架,所以在学习它如何使用的时候更要思考框架为我们带来了什么,理解框架到底是什么东西。此部分重点学习spring的日常使用方法,在视频中都有介绍,IOC,AOP概念是面试重点。
SpringMVC
视频:https://www.bilibili.com/video/BV1Ry4y1574R
学习目标:前面在Javaweb阶段已经初步了解了mvc开发的概念,此处需要在spring的基础上更深刻的体会,熟练掌握SpringMVC框架的搭建和使用,理解SpringMVC的各个组件及执行流程,具备开发SpringMVC企业级项目的能力。
Mybatis
视频:https://www.bilibili.com/video/BV1VP4y1c7j7
书:《通用源码阅读指导书:mybatis源码详解》
学习目标:Java后端开发一定会跟数据库打交道,而mybatis帮助我们进行了对象与数据库表之间的管理映射,这就是ORM对象管理映射。这块主要根据视频学习了解mybatis的编写流程,方法。基本掌握如何使用mybatis进行业务开发。
Mybatis-plus
视频:https://www.bilibili.com/video/BV12R4y157Be
学习目标:mybatis-plus是对mybatis做了一个增强实现,只做增强,不做修改,也就是说学完mybatis后再学mybatis-plus不会对前面学过的内容产生冲击,只会对它做一些功能扩展。
Spring注解驱动开发
视频:https://www.bilibili.com/video/BV1gW411W7wy
学习目标:这个是尚硅谷单独开出来的一门课,旨在提升前面spring开发的一些习惯,比如这门课会教你更多的使用注解的方式使用spring,这门课中也会大量讲解spring的流程源码。该模块学习优先级较低,可以放在后面作为进阶提升。
SpringBoot2
视频:https://www.bilibili.com/video/BV19K4y1L7MT
学习目标:springboot是实际项目开发的重中之重,需要完全掌握springboot的实际开发代码的编写流程,掌握核心基础,web原理,单元测试,数据访问,指标监控等。后续在面试前需要了解springboot的基本原理,源码。
SpringCloud
视频:https://www.bilibili.com/video/BV18E411x7eT
学习目标:springcloud并不是一个单独的框架,而是许多为springboot项目做支撑与维护的一堆周边生态的总称。既有传统Eureka、Ribbon、OpenFeign、Hystrix、Config,又有Consul、Gateway、Bus、Stream、Sleuth、zipkin和阿里巴巴新的的Nacos、Sentinel、Seata等技术。需要深刻理解这些组件为项目的运行提供了哪些帮助,需要能熟练按需引入这些组件为项目做支撑与扩展。服务降级、服务熔断、服务限流、hotkey控制、分布式统一配置管理、分布式全局事务控制、RabbitMQ与Stream整合、Nacos和Nginx配置高可用集群。在面试前适当掌握部分原理。
项目
项目部分具体看哪一个无所谓,找项目需要重点关注项目所使用的技术栈。对于Java程序员,大部分项目应该学习Springboot2 + vue为基础的分布式微服务项目。主要技术栈为springboot,mybatis-plus,redis,springcloud,rocketmq,nginx,mysql,mongodb,elasticsearch,xxl-job,vue等。注意项目必须为前后端分离开发方式。
我的Github:https://github.com/LJLintermittent
Gitee:https://gitee.com/LJLintermittent
数据接口与算法分析
书:《算法 第四版》ps:《算法导论》难度过高 初学可以不看
刷题网站:leetcode & codetop.cc
刷题前需要对数据结构进行完整而系统的学习,这是前提。刷题的方法是对某一个数据结构的类型的题进行专攻,比如今天学完了数组这种数据结构,那么可以用三天的时间专门做数组的算法题,以此类推。重点掌握数组,字符串,链表,栈,堆,二叉树,哈希表等数据结构,重点掌握回溯,动态规划,双指针,排序,二分查找,深度优先,广度优先,矩阵,递归等算法。
ShardingSphere
视频:https://www.bilibili.com/video/BV1LK411s7RX
学习目标:ShardingSphere的基本概念、Sharding-JDBC、Sharding-Proxy。了解分库分表的概念,以及这些工具组件的基本使用即可。
Elasticsearch
视频:https://www.bilibili.com/video/BV1hh411D7sb
学习目标:Elasticsearch是一个全文检索引擎,常用于项目中的检索功能,比如电商项目首页中输入商品名称,然后在海量商品中检索出你需要的商品进行页面展示。该阶段需要学习ES的基本使用,如何在Java程序中调用ES的接口进行业务功能的开发。
JVM
视频:https://www.bilibili.com/video/BV1PJ411n7xZ
书:《深入理解Java虚拟机 第二版》
学习目标:JVM是Java工程师面试重点,涉及大量的八股文背诵,但是依然需要掌握如何使用JDK中提供的工具进行微服务Java进程的堆栈信息的查看,要有基本的排错能力,熟悉常用的垃圾回收器原理,熟悉Java内存结构,熟悉字节码文件结构。
Kubernetes
视频:https://www.bilibili.com/video/BV13Q4y1C7hS/
学习目标:该技术主要用来运维Java微服务,做自动化打包部署,流水线,灰度发布,热发布等。可以放在所有技术点的最后一项进行学习。内容非常多。
Docker
视频:https://www.bilibili.com/video/BV1gr4y1U7CY
书:《Docker技术入门与实战》
学习目标:服务器安装docker,docker常用的操作镜像与容器的命令,本地镜像发布到阿里云托管,容器数据卷,dockerfile的编写,docker-compose服务编排等。
Nginx
视频:https://www.bilibili.com/video/BV1yS4y1N76R
书:《深入理解Nginx:模块开发与架构解析(第2版)》
学习目标:Nginx安装部署,配合大量在线实操,搞定Nginx七大核心应用场景:反向代理、虚拟主机、域名解析、负载均衡、防盗链、url重定向、https。
Spring security
视频:https://www.bilibili.com/video/BV15a411A7kP
学习目标:这个视频对这项技术的原理并没有足够的讲解,可以只通过视频快速入门。需要理解spring security帮助我们做了哪些安全管理。掌握基本使用流程,基本代码编写。
Dubbo
视频:https://www.bilibili.com/video/BV1ns411c7jV
书:《深入理解apache dubbo与实战》《深入剖析apache dubbo核心技术内幕》
学习目标:dubbo这个技术的视频有些过时,建议视频只快速的过一遍,了解dubbo的使用方法,后面通过书和博客的方式来对它进行深入了解。
Kafka
视频:https://www.bilibili.com/video/BV1vr4y1677k
书:《kafka权威指南》
学习目标:Kafka是高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。主要学习Kafka架构原理、安装配置使用、详细的Kafka写入数据和处理数据以及写出数据的流程、新旧版本对比及运用等。
RabbitMQ
视频:https://www.bilibili.com/video/BV1cb4y1o7zz
学习目标:RabbitMQ是一款老牌的消息中间件,由于编写它的语言是erlang,所以不利于Java工程师对它的底层原理进行深入了解,但是一些老项目依然还在使用它,如果有时间的话可以再对它进行学习。
RocketMQ
视频:https://www.bilibili.com/video/BV1L4411y7mn
书:《RocketMQ技术内幕》《RocketMQ 分布式消息中间件》
学习目标:RocketMQ是阿里巴巴开源的一款分布式消息中间件,主要用作项目中的异步通知,达到系统功能模块解耦的作用,通过异步,还可以用来削峰填谷,消息通讯。
Redis
视频:https://www.bilibili.com/video/BV1Rv41177Af
书:《Redis设计与实现》
学习目标:Redis是一个缓存中间件,当然功能不只有缓存,还可以用来做非重点数据的数据库,分布式锁等。也是企业开发必备的一项技术。需要掌握Redis的基本概念,Redis安装与部署、Redis常用数据类型操作和底层结构、Redis客户端Jedis和整合SpringBoot项目、Redis事务和锁,Redis持久化RDB和AOF、Redis主从复制和集群、Redis应用中的问题和解决方案(缓存穿透、击穿、雪崩、分布式锁)、Redis的新数据类型以及Redis 6的新特性等。
Linux
视频:https://www.bilibili.com/video/BV1Sv411r7vd
书:《鸟哥的Linux私房菜 基础学习篇》 《Linux内核设计与实现》
Java后端程序员应该对Linux系统进行更深入的学习,深入到内核源码阶段。熟练掌握Linux系统(centos7及以上)常用操作命令。