JAVA学习路书-2024年最新版

本文已收录于:https://github.com/danmuking/all-in-one(持续更新)

符号表

大家可以通过路线知识点前的表情字符,根据自己的实际情况选择学习:

  • ⭐⭐⭐⭐ 必须掌握!!!
  • ⭐⭐⭐ 实在没时间,才能不学;目标大厂,必须学习!
  • ⭐⭐ 加分项;目标大厂,建议学习。
  • ⭐ 冷门知识,根据需要学习。
  • 加粗:面试重要知识点

知识本身没有重要或者不重要,只有需要和不需要。

前言

首先,我们要认识到,这几年就业形式确实是不太好,到处都是“Java卷爆了”的言论。对于这些言论,要分为两个部分来看待:

  • 一方面,确实现在的就业形式比较严峻,因此对于我们的要求已经大大提高。作为一名Java开发者,不仅需要掌握扎实的基础知识,还需要熟悉各种框架和工具,并具备解决复杂问题的能力,所以我们要做好长时间学习的准备。
  • 另一方面,现在Java仍然是需求量最大的编程语言。根据各种招聘网站的数据统计,Java相关的职位需求量始终位居前列。Java学好了非常“能打”,不仅在Web开发、企业级应用、大数据等领域有广泛应用,而且掌握Java后,转语言也有极大优势。这是因为Java培养了良好的编程习惯和思维方式,许多概念和技术在其他语言中也有类似的实现。

因此,建议大家根据自己的实际情况来选择。

阶段1:熟悉编程语言

目标

在这一阶段,我们的目标是培养对Java的兴趣了解基本的语法,使你能够运行和编写简单的Java程序

练习方式

  • 速成版:刷算法题能够快速帮你掌握Java的基本语法和常见的数据结构,缺点是刷题相对枯燥。
  • 兴趣培养版:做一个简单的小项目,比如基于命令行的图书管理系统,或者是写一个植物大战僵尸小游戏。

Java 编程基础(⭐⭐⭐⭐ )

需要掌握的知识包括:

Java基础

  • Java 特点(当个故事看看,建立基本了解)
  • 环境搭建
  • IDEA 开发工具(IDEA、Eclipse)
    • 新建项目
    • 运行调试
    • 界面配置
    • 插件管理
  • Java 基础语法
    • 数据类型
    • 流程控制
  • 数组
  • 面向对象(第一道坎,别急,随着使用慢慢理解)
    • 方法
    • 重载
    • 封装
    • 继承
    • 多态
  • 抽象类
  • 接口
  • 枚举
  • 常用类
    • String
    • 日期时间
  • 集合类
  • 泛型
  • 注解
  • 异常处理
  • 多线程
  • IO 流
  • 反射
  • Stream API
  • Lambda 表达式
  • 新日期时间 API
  • 接口默认方法
学习建议
  1. 坚持学习:对于萌新,初学一门语言时,必须持续学习,**不能中断!**如果你已经学习过其他语言,这一块可以适当放松,只需要了解基本语法,在实践中逐步深入。
  2. 多加练习:**要学好编程,就必须多敲代码!“盯”是“盯”不会的!**建议先跟着书上的例子敲一遍,然后尝试自主编写代码,并完成课后练习。
  3. 理解代码:即使暂时不理解代码也没关系,可以学会使用 Debug,一行一行地打断点执行,查看程序的执行过程。这会帮助你节省很多重复学习的时间。
相关资源

练手项目

尾声

到了这一步,你已经半只脚踏入了Java的大门。然而,很多同学在这个阶段可能会开始感到迷茫。虽然学了不少知识,但似乎什么也做不出来,不知道下一步该做什么。现在,许多人会感觉到最初的热情逐渐消磨,甚至怀疑自己的能力。在这个阶段,迷茫和困惑是很常见的。记住,行百里者半九十,坚持下去非常重要。**不要放弃!不要放弃!不要放弃!**继续努力,保持耐心和恒心,你会看到自己的进步和成果。

阶段2:核心框架

目标

在这个阶段,你将学习和掌握实际项目开发中最常用的各类技术和框架。完成这个阶段的学习后,你将能够独立开发各种常见的Web项目,包括商城、管理系统、IM系统等。
通过这一阶段的学习,你将
具备独立完成功能完整的Java Web项目的能力
,成为一名真正能够独立开发后台系统的开发者。

MySQL 数据库(⭐⭐⭐⭐ )

MySQL数据库是目前应用最广泛的关系型数据库之一,因此熟练掌握MySQL成为了后台开发者的重要任务,也是面试中重点考察的知识。

知识

  • 基本概念
  • MySQL 搭建
  • SQL 语句编写
  • 约束
  • 索引
  • 事务
  • 锁机制
  • 设计数据库表
  • 性能优化

学习建议

**实践!实践!还是实践!**学习MySQL最有效的方式是通过实际操作来加深理解,通过练习创建数据库、表格,进行数据查询、更新和删除等操作,将理论知识付诸实践。
除了编写SQL语句外,设计数据库表的能力同样非常重要,但是经常被忽略,这就要求大家多写 SQL、多根据实际的业务场景去练习设计能力。

资源

Redis(⭐⭐⭐⭐ )

缓存在当前高并发系统中扮演着至关重要的角色,能够有效提升系统的性能和并发能力。而Redi是当前实现缓存的主流技术,是后台开发者必须掌握的知识点之一,也是面试中的重点考察内容。

知识

  • Redis 基础
  • 什么是缓存?
  • Redis 分布式缓存
    • 数据类型
    • 常用操作
    • 主从模型搭建
    • 哨兵集群搭建
    • 日志持久化
  • 缓存(Redis)应用场景
    • 数据共享
    • 单点登录
    • 计数器
    • 限流
    • 点赞
    • 实时排行榜
    • 分布式锁
  • 缓存常见问题
    • 缓存雪崩
    • 缓存击穿
    • 缓存穿透
    • 缓存更新一致性

学习建议

Redis的使用并不复杂,与数据库类似,主要是进行增删改查等基本操作。在当前阶段,重点是熟悉Redis的命令,并掌握其五大数据结构的使用方法。通过实践逐步深入了解Redis的底层原理。
首先,要能够独立使用Redis,并了解其在缓存方面的应用场景。接着,学习如何在Java中使用Redis作为缓存中间件,并将其与项目结合,以提高系统的性能。
可以通过跟随视频教程进行实际操作,掌握基本的使用方法。等到面试前再深入了解Redis的原理和高级特性。

资源

开发框架(⭐⭐⭐⭐ )

Java之所以成为主流的企业开发语言,很大程度上得益于其强大的框架生态系统。通过这些框架,可以显著提高开发效率。在实际开发中,这些框架扮演着至关重要的角色。
对于后台开发人员来说,掌握这些开发框架是必不可少的技能,也是面试中的重点考察内容。因此,务必要认真学习并深入理解这些框架的使用。通过学习这些框架,你将全面了解Java的实际应用,充分体会到Java在企业级开发中的强大能力。
接下来,我会向大家介绍一些在企业中应用最广泛的主流开发框架。

知识

Java Web(⭐⭐⭐)

  • 描述:Java 网页应用开发基础,不过已经是比较老的技术了,时间不够可以先不学,面试也很少考察到这方面知识。
  • 一丢丢前端基础
  • XML
  • JSON
  • Servlet
  • Filter
  • Listener
  • JSP
  • JSTL
  • Cookie
  • Session

Spring(⭐⭐⭐⭐)

  • 描述:Java 轻量级应用框架,用于Java对象管理。Spring包含非常多的内容,时间紧张的同学可以先了解基本的概念,等到时间充裕时在进行学习。
  • IOC(⭐⭐⭐⭐⭐),重要到就算不学Java也要能背两句。
  • AOP
  • 事务

SpringMVC(⭐⭐⭐⭐)

  • 描述:Java 轻量级 web 开发框架,相当重要。
  • 什么是 MVC?
  • 请求与响应
  • Restful API
  • 拦截器
  • 配置
  • 执行过程

MyBatis(⭐⭐⭐⭐)

  • 描述:Java中最常用的数据访问框架,操作数据库进行增删改查等操作
  • 增删改查
  • 全局配置
  • 动态 SQL
  • 缓存
  • 和其他框架的整合
  • 逆向工程

SpringBoot(⭐⭐⭐⭐)

  • 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率
  • 常用注解
  • 资源整合
  • 自动装配原理
  • 高级特性
  • 本地热部署

学习建议

这部分技术较多,且框架之间相互存在联系,因此建议大家看同一系列的视频教程,保证内容的连贯。
在学习这些技术时,千万不要懈怠!务必要做好笔记,这部分内容多且散,需要经常查阅。在掌握基础知识的同时,不必过于深究原理,首要目标是能够编写可运行的项目代码。有时,实际动手做出来的东西会更有助于理解理论知识。
就我个人的学习经验来说,我比较建议大家先从SpringBoot开始学习,Springboot实际上是一个框架的框架,提供了快速集成其他框架的能力, 在实际开发中也广泛使用。 “先把代码跑起来,再去慢慢深究原理”我觉得能够更好的把精力集中在重点内容的学习上,如果自己进行集成很容易一个bug改一天,修好一个多出10个,对于初学者来说可能会非常劝退 。

资源

已下资源分为两大类,希望快速做出项目、快速就业的同学请看【速成视频】。

练手项目

尾声

学完这个阶段的知识后,你已经具备了独立开发 Java Web 项目所需的大部分知识。而且这部分知识非常多而且分散,因此必须自己独立开发一个 Java Web 项目把所有知识串起来回忆一遍
完成这个阶段的学习,你已经掌握了Java实际开发的大部分知识,满足小公司的招聘需求。如果你想要冲击大厂,那么征途还要继续。

阶段3:冲刺大厂

目标

在这个阶段,你需要进一步提升对技术的掌握程度,从单纯的“会用”逐步深入到“精通”,并掌握底层原理。同时,不断拓展你的知识边界。在这一阶段,理论知识的重要性将逐渐增加,这些理论知识将帮助你开发出高效、高性能的软件系统。
通过深入理解和应用这些理论,你将不仅能够解决实际开发中的各种复杂问题,还能设计出更加优化和稳定的系统架构。**这些能力对于在大厂中脱颖而出至关重要。**因此,务必要认真学习,持续提升自己的技术水平。

知识

数据结构与算法(⭐⭐⭐)

算法是程序员必须面对的一道重要关卡,大公司在面试中都会考察你的算法能力,并且算法是考核的硬性指标之一。不过,也不要太过于惧怕算法,只要有正确的学习方法和充分的练习,掌握算法并不困难。
7 个数据结构:

  • 数组
  • 链表
  • 队列
  • 哈希表
  • 二叉树

10 个常见算法:

  • 递归
  • 排序
  • 二分查找
  • 搜索
  • 哈希算法
  • 贪心算法
  • 分治算法
  • 回溯算法
  • 动态规划
  • 字符串匹配算法

学习建议

学习算法,要先从基本的数据结构开始,如数组、链表、栈、队列、树、图等。这些是算法的基础,理解和熟练运用这些数据结构是学习算法的前提。 通过刷题平台(如LeetCode、牛客网、HackerRank等)进行大量的实践练习。将理论知识应用到实际问题中,反复练习,逐步提升自己的算法能力。练习时,一定要成体系的批量刷题,这样能够快速提升一类问题的熟练度。对于初学者,一定要在短时间内大量刷题,相信我,你能快速感觉到自己的成长。没见过的题做不出来很正常,不要过于执着。看完题解后一定要自己重新写一遍,在这个过程中可以发现许多你以为已经知道但是没有完全理解的知识点。

资源

操作系统、计算机组成原理(⭐⭐⭐)

这部分建议将操作系统和计算机组成原理放在一起学习,这部分内容概念的纯度极高,可能很多同学会感到枯燥,这确实是一个没有办法避免的问题。如果只是为了找工作,这部分内容其实可以不用进行完整的学习,只需要重点掌握面试中的常见问题即可。

  • 操作系统的组成
  • 进程、线程
  • 进程 / 线程间通讯方式
  • 进程调度算法
  • 进程 / 线程同步方式
  • 进程 / 线程状态
  • 死锁
  • 内存管理
  • 局部性原理
  • 计算机中数据的存储方式
  • 计算机中的缓存

学习建议

这部分内容概念性很强,而且平时很少用到,非常容易忘记,所以学习过程中一定要做好笔记,方便在需要时进行查阅。

资源

  • 视频
  • 书籍
    • 《30天自制操作系统》
    • 《现代操作系统》(难度较大,不推荐新手看)
    • 《深入理解计算机系统》(难度较大,不推荐新手看)
    • 《 自己动手写操作系统》(国产好书,网上可以下载)
  • 网站

计算机网络(⭐⭐⭐)

  • 七层/五层网络模型
  • HTTP / HTTPS 协议
  • UDP / TCP 协议
  • IP、端口的概念
  • 子网掩码
  • DNS

学习建议

这部分内容也是面试中的重点考察对象,同样是概念爆炸多,知识点爆炸多,平时基本不使用的类型。所以和上面一节一样,学习过程中做好笔记,便于随时查阅。

资源

Java并发编程(⭐⭐⭐)

  • 线程和进程
  • 线程状态
  • 并行和并发
  • 同步和异步
  • Synchronized
  • Volatile 关键字
  • Lock 锁
  • 死锁
  • 可重入锁
  • 线程安全
  • 线程池
  • JUC 的使用
  • AQS
  • Fork Join
  • CAS

学习建议

这一阶段难得的实操型知识,不过除了会用以外,能够深入掌握Java实现多线程的理论原理更加重要,所以需要重视理论的学习。并发编程入门不难,依然是先学会使用基础的 Java 并发包,需要注意的是,现在有些公司会在面试时手撕简单的多线程场景题,比如多个线程交替打印,这类题目通常也不会太难,大家只要有所防备即可。

资源

  • 视频
  • 书籍
    • 《Java并发编程实战》(国外的经典)
    • 《Java 并发编程艺术》(国人写的,理论思想内容较多,有时间建议反复看)
    • 《图解 Java 多线程设计模式》

JVM(⭐⭐⭐)

  • JVM 内存结构
  • JVM 生命周期
  • 主流虚拟机
  • Java 代码执行流程
  • 类加载
    • 类加载器
    • 类加载过程
    • 双亲委派机制
  • 垃圾回收
    • 垃圾回收器
    • 垃圾回收策略
    • 垃圾回收算法
    • StopTheWorld
  • 字节码
  • 内存分配和回收
  • JVM 性能调优
    • 性能分析方法
    • 常用工具
    • 参数设置
  • Java 探针
  • 线上故障分析

学习建议

这一块在面试中也是考察的频率极高,但是现实中使用的频率极低,所以我建议,这一块之间面向面试背诵即可,不需要花费太多的尽力去实操。

资源

消息队列(⭐⭐⭐)

消息队列是一种用于传输和存储消息的中间件,在大型分布式系统中被广泛使用。它主要用于解决应用程序之间的耦合问题,实现异步消息处理以及流量削峰等功能。是作为后台开发的必备技能,消息队列也是面试中的重点考察内容。

知识

  • 常见的消息队列
    • RabbitMQ
    • RocketMQ
    • ActiveMQ
    • Kafka

学习建议

消息队列的使用并不难,不外乎就是各种api的调用,这一块的主要学习内容是了解消息队列的使用场景,以及不同消息队列之间的区别。然后在选择一个逐渐深入其原理。

资源

设计模式(⭐⭐⭐)

我们如何写出更优雅,可维护性更好的代码呢?设计模式为我们提供了一个很好的解决方案,设计模式是软件开发中解决一类问题的通用方法,很多框架源码都用到了设计模式,同时设计模式也是面试中一个比较高频的考点。

  • 创建型模式:
    • 单例模式
    • 工厂方法模式
    • 抽象工厂
    • 建造者模式
    • 原型模式
  • 结构型模式:
    • 适配器模式
    • 组合模式
    • 装饰器模式
    • 代理模式
    • 享元模式
    • 外观模式
    • 桥接模式
  • 行为型模式:
    • 迭代器模式
    • 模板方法模式
    • 策略模式
    • 命令模式
    • 状态模式
    • 责任链模式
    • 备忘录模式
    • 观察者模式
    • 访问者模式
    • 中介者模式
    • 解释器模式

学习建议

设计模式的种类相当之多,想要全部都记下来非常困难,因此建议先熟练掌握几个常见的设计模式(加粗部分),然后在平时的时候中逐渐拓展。

资源

尾声

学完以上这些知识,你已经具备了大厂面试所需要的基本知识了,可以应对大部分的面试问题,但是学无止境,通过这些知识点的学习,你已经有了一定的积累,接下来你可以根据自己的需要来进行进一步的学习。

阶段4:持续学习

目标

到了这个阶段,相信你对于如何学习Java已经有了自己的理解。在接下来的学习中,你可以根据自己的需要选择合适的技术进行学习,并且将它添加到自己的简历中,这里的每一项技术都可以为你的简历加分。

开发框架(⭐)

MyBatis Plus

  • 描述:Mybatis 的增强工具,能够简化开发、提高效率
  • 引入
  • 通用 CRUD
  • 条件构造器
  • 代码生成器
  • 插件扩展
  • 自定义全局操作

Spring Security

  • 描述:Spring 的安全管理框架
  • 用户认证
  • 权限管理

Linux(⭐⭐⭐)

  • 安装linux
  • 环境变量
  • 常用命令
  • 常用环境搭建
  • Shell 脚本编程
  • VIM 的使用
  • Linux 内核

资源

开发规范(⭐⭐⭐)

开发规范主要是大家在开发过程当中总结出来的,建议大家遵守的规则。遵守开发规范能够让你写出的代码更加标准,更好维护,同时可以避免因为代码不规范而未被发现的定时炸弹。代码规范不需要死记硬背,稍微看一眼,有一个印象即可。

知识

  • 代码规范
    • 代码风格
    • 命名
    • 注释
  • 提交规范

资源

微服务(⭐⭐)

知识

  • Spring Cloud 框架
    • Consul 注册中心
    • LoadBalance 负载均衡
    • CircuitBeaker 服务限流、降级、熔断
    • Resilience4j 服务容错
    • Gateway 微服务网关
    • Micrometer+ZipKin 分布式链路追踪
  • Spring Cloud Alibaba
    • Nacos 注册、配置中心
    • OpenFeign 服务调用
    • Sentinel 流控
    • Seata 分布式事务

学习建议

这部分内容,主要是各种api的调用,使用起来并不难。在学习的过程中不仅要学会如何使用,同时也要对原理有一定的了解。在面试的时候,通常不会问框架的细节,更多的是通过对场景题考察对微服务思想的认识

资源

Nginx(⭐⭐)

Nginx 是主流的、开源的、高性能的 HTTP 和反向代理 Web 服务器,可以用于挂载网站、请求转发、负载均衡、网关路由等。

知识

  • Nginx 作用
  • 正向代理
  • 反向代理(负载均衡)
  • 常用命令
  • 配置
  • 动静分离(网站部署)
  • 集群搭建

学习建议

Nginx 的基本使用非常简单,主要只要学会配置一些基本参数即可。在实际场景中,Nginx 的使用会更加复杂,作为负载均衡和请求转发的重要组件,常需要针对实际场景编写特定的配置,但是对于我们学习来说,我们很难接触到这些复杂场景,因此,只需要先对这些概念有一个基本印象,等到实际使用时在进行深入学习。

资源

Netty(⭐⭐)

Netty 是一个异步事件驱动的网络应用框架,用于快速开发高性能、高可靠性的网络服务器和客户端程序。

  • Netty 作用
  • Netty 架构
  • 事件驱动模型
  • Channel 和 EventLoop
  • ByteBuf
  • 编解码
  • Pipeline
  • Handler
  • Netty 的线程模型
  • 心跳机制
  • 高性能与零拷贝
  • IO 模型(BIO / NIO)
  • 常见应用场景(如 IM、RPC)

学习建议

Netty 的基本使用相对复杂,需要理解其核心概念和事件驱动模型。建议通过官方文档或系列视频教程进行系统学习,逐步掌握 Netty 的基本架构和常用组件。
在学习 Netty 时,一定要动手实践,编写一些简单的服务器和客户端程序,逐步掌握其编程模型和核心功能。同时,深入理解 Netty 的线程模型和性能优化技巧,了解其在高并发、高性能场景下的应用。

资源

Docker(⭐)

Docker 是一个开源的容器化平台,可以简化应用程序的交付和部署流程。通过容器技术,Docker 能够实现应用程序及其依赖的打包、分发和运行环境的一致性,是现代 DevOps 和云计算的重要组成部分。Docker本身是一个相当热门的技术,不过对于后端开发的面试来说,占比很低。

知识

  • Docker 基本概念
  • Docker 安装
  • Docker 镜像
  • Docker 容器
  • Dockerfile
  • 数据卷
  • 网络配置
  • Docker Compose
  • Docker Registry
  • Docker Swarm
  • 常见操作(启动、停止、删除容器等)

资源

尾声

到这里,这篇Java学习路书就已经结束了,但是编程语言的学习是没有止境的,相信经过这么长时间的学习,你已经对如何学习一门新技术有了自己的理解。祝大家以梦为马,不负韶华。接下来,我给大家分享一些我常用的效率工具,希望能够帮助大家提高编程效率。

工具

项目管理

Git

Git 是目前最流行的分布式版本控制系统,用于跟踪代码变更、协同开发和管理项目历史。掌握 Git 是每个开发者的必备技能 。

知识
  • Git 基本概念
  • Git 安装与配置
  • Git 常用命令
    • 初始化仓库
    • 克隆仓库
    • 提交更改
    • 查看历史
  • 分支管理
    • 创建和切换分支
    • 合并分支
    • 分支策略
  • 远程仓库
    • 远程仓库的添加和删除
    • 推送和拉取
    • 同步本地和远程仓库
  • Git 工作流程
  • Git 标签
  • Git 存储和恢复
  • Git 冲突解决
  • Git Hooks
资源

Maven

Maven 是一个开源的项目管理工具,主要用于构建和管理 Java 项目。通过 POM(Project Object Model)文件,Maven 可以管理项目的依赖、编译、测试和打包等整个生命周期,是 Java 开发者必备的工具之一。

知识

  • Maven 基本概念
  • Maven 安装与配置
  • POM 文件结构
  • 依赖管理
  • 构建生命周期
  • 插件使用
  • 仓库管理
    • 本地仓库
    • 远程仓库
  • 常用命令
  • 构建配置
  • 多模块项目
  • Profiles 配置
  • 集成测试
  • 发布项目

资源

点关注,不迷路

好了,以上就是这篇文章的全部内容了,如果你能看到这里,非常感谢你的支持!
如果你觉得这篇文章写的还不错, 求点赞👍 求关注❤️ 求分享👥 对暖男我来说真的 非常有用!!!
白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
如果本篇博客有任何错误,请批评指教,不胜感激 !

最后推荐我的IM项目DiTinghttps://github.com/danmuking/DiTing-Go),致力于成为一个初学者友好、易于上手的 IM 解决方案,希望能给你的学习、面试带来一点帮助,如果人才你喜欢,给个Star⭐叭!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值