目录
Java基础语法非常重要(花很长时间学习java语法个人认为是很值得的)
Spring Security(不强制学习这个及其他未提及的框架)
Linux 系统安装环境变量文件管理用户管理内存管理磁盘管理进程管理网络管理软件包管理服务管理日志管理Linux 内核常用命令常用环境搭建Shell 脚本编程VIM 的使用
IO 模型(BIO / NIO)ChannelBufferSeletorNetty 模型WebSocket 编程(动手做个聊天室)
引言:
这是一个整体的Java语言的后端学习路线
Java方向参考鱼皮的Java学习路线
原文本百度网盘:
链接:Java学习路线
提取码:soul
每一章节都会慢慢的更新,可以随时查看是否更新
JDK的下载及使用
简介:JDK,全称Java Development Kit,是Java语言的软件开发工具包。它主要用于移动设备、嵌入式设备上的Java应用程序的开发。JDK是整个Java开发的核心,包含了Java的运行环境(JVM+Java系统类库)和Java工具。
IDEA的下载
简介:IDEA,全称IntelliJ IDEA,是一款由JetBrains公司开发的Java集成开发环境(IDE)。它被广泛认为是业界最好的Java开发工具之一,以其强大的功能和卓越的用户体验赢得了开发者的广泛赞誉。
Java基础语法
推荐的学习资源
菜鸟教程:Java 教程 | 菜鸟教程
尚硅谷:
【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
尚硅谷Java零基础全套视频教程(宋红康主讲,java入门自学必备)_哔哩哔哩_bilibili
黑马程序员:
黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili
上面的选一个看就ok
1. 数据类型
- Java的基本数据类型包括整型(int, long等)、浮点型(float, double等)、字符型(char)和布尔型(boolean)。
- 还有引用数据类型,如类(Class)、接口(Interface)、数组(Array)等。
2. 流程控制
- Java支持条件语句(if-else, switch)和循环语句(for, while, do-while)来控制程序的流程。
3. 数组
- 数组是一组相同数据类型的元素的集合,通过索引访问。
- Java数组的大小在创建后是固定的。
4. 面向对象
- Java是一种面向对象的编程语言,所有的代码都是以类(Class)的形式组织。
- 面向对象的特征包括方法、重载、封装、继承和多态。
5. 抽象类
- 抽象类是不能实例化的类,用于定义子类的通用特征。
- 抽象类可以包含抽象方法,子类必须实现这些方法。
6. 接口
- 接口是一种抽象的数据类型,定义了一组方法的签名但没有实现。
- 类可以实现(implement)接口,从而保证了实现类具有接口所定义的行为。
7. 枚举
- 枚举是一种特殊的数据类型,用于定义一组固定的常量。
- 枚举常量在枚举类型中是唯一的,并且可以通过枚举类型名访问。
8. 常用类
- Java提供了许多常用类来处理字符串、日期时间等常见任务,如String和Date等。
9. 集合类
- 集合类是Java中用于存储和操作一组对象的数据结构。
- Java提供了许多集合类,如List、Set、Map等,它们有不同的特点和用途。
10. 泛型
- 泛型提供了编译时类型检查机制,使得代码更加类型安全和灵活。
- 可以在类、接口和方法上使用泛型。
11. 注解
- 注解是Java语言的一种元数据形式,可以用于提供程序的额外信息。
- Java提供了许多内置注解,同时也可以自定义注解。
12. 异常处理
- Java提供了异常处理机制来处理程序中的异常情况。
- 异常可以通过try-catch块捕获和处理,也可以通过throws关键字抛出。
13. 多线程
- Java支持多线程编程,可以通过Thread类或实现Runnable接口来创建线程。
- 多线程可以提高程序的并发性和效率。
14. IO流
- IO流用于在程序和外部设备之间进行数据的输入和输出。
- Java提供了字节流和字符流以及相应的处理类来处理不同类型的IO操作。
15. 反射
- 反射机制允许程序在运行时动态地获取类的信息并操作类的属性和方法。
- 反射可以让程序在编译时不知道要操作的类,从而增加了程序的灵活性。
Java基础语法非常重要(花很长时间学习java语法个人认为是很值得的)
- 面向对象、接口:为以后做项目服务,更容易理解设计模式
- 集合类:集合类提供了类似于C++ STL的便利,能够简化开发过程
- 注解:注解在框架中的广泛应用,使得开发更为灵活
- 异常处理:异常处理帮助定位错误位置,是项目开发中必不可少的一环
- 多线程:多线程作为学习并发编程的核心,为项目提供更好的性能和响应
- IO流:IO流的进阶路径从BIO到NIO再到Netty,可以逐步完善项目的IO处理
- 反射:反射机制在框架中的大量使用,增强了程序的灵活性和可扩展性
- 有些Java的教程会教你一些面试的题目,这个可以给后买你JVM打基础
MySQL 数据库
介绍
数据库是一个结构化的数据集合,它可以方便地存储、管理和检索数据。数据库通常被组织成表的形式,每个表包含若干行数据,每行数据由一组字段组成。MySQL数据库是一个关系型数据库,初始学习就将它看作excel的表格(后面学习专业课能够更加深入的学习)
目标
初始学习不要想着一下学完,只需要做到这几点:
- 数据库的基本概念
- MySQL在windows上的下载和使用
- SQL语句的编写(注意:SQL语句不需要你强制性的记住,会用就行)
- 熟悉几种常见的数据库表的例子,能够有设计一个数据库的能力
- 事务的了解
开发框架
Java Web
介绍:Java Web指的是使用Java技术进行网页应用开发的过程。
XML
JSON
Servlet
Filter
Listener
JSP
JSTL
Cookie
Session
注意:有些东西是可以不深入学习的
- JSP
- JSTL
转折
当我们学习到这里,就该学习一系列框架了,这里有几种不同的学习路线:
- 快速上手:直接学习SpringBoot,MyBatis Plus,Maven
- 按照框架一步步来:Spring,SpringMVC,MyBatis -->第一种路线
- 先学习设计模式,再按照框架一步步来:设计模式 -->第二种路线
注意:
- 第一种是快速上手,主要难点在于报错不好解决,以及知识的断裂感,缺少了从java语言到框架的这个过程,但是非常快速的就能做项目
- 第二种是从java过度到最基本的框架,再过渡到更完善的框架,好处是没有知识的割裂感,但需要多花一些时间
- 第三种是先学习设计模式(就是先了解一些常见的设计原则以及模式),更容易理解框架是如何实现的,好处是有理论再学习框架会掌握的更快更深刻,缺点是花费更多的时间
在这里我要声明一下,会开发第一种道路就可以了,使用第二种,第三种最终的结果和能力可能会和第一种一样,选择任何一条都不要有优越感。
我个人是先采用的第二种道路,然后又学了设计模式,觉得自己更适合先学习美的模式,再学习框架,所以加上了第三条道路,选择第二种主要是个人不喜欢割裂的知识,更喜欢连贯,一想就能想到知识的整体。
Spring
介绍:Spring是一个开源的Java轻量级应用框架,用于构建企业级应用程序。它提供了全面的基础设施支持,包括依赖注入(IoC)、面向切面编程(AOP)、事务管理、Web开发、消息传递等功能,极大地简化了Java应用程序的开发。
IOC(控制反转)
AOP(面向切面编程)
事务
SpringMVC
介绍:Spring MVC是一个基于Java的轻量级Web开发框架,它建立在Spring框架之上,用于开发基于模型-视图-控制器(MVC)架构的Web应用程序。
请求与响应
Restful API
拦截器
配置
执行过程
MyBatis
介绍:MyBatis是一个持久层框架,用于简化Java应用程序与数据库之间的交互。它提供了一种将SQL语句与Java方法进行映射的方式,使得开发人员可以通过编写简单的SQL语句来实现数据库的增删改查等操作。
注意:之前我们学习了数据库,当我们项目想要使用数据库保存数据的时候,需要先连接数据库,我们连接数据库最开始使用的是jdbc,然后是更简单方便的mybatis,最后是mybatisplus
增删改查
全局配置
动态 SQL
缓存
和其他框架的整合
逆向工程
SpringBoot
介绍:Spring Boot是Spring框架的一个扩展,旨在简化Spring应用程序的初始搭建和开发过程,提高开发效率。它通过提供自动配置、起步依赖和简化的部署方式等特性,使得开发人员能够快速地构建基于Spring的应用程序。
常用注解
Spring Boot提供了许多常用的注解,用于简化配置和开发过程。常用的注解包括:
@SpringBootApplication
: 用于标识Spring Boot应用程序的启动类。@RestController
:用于定义RESTful风格的控制器。@Autowired
:用于自动注入依赖。@RequestMapping
:用于映射HTTP请求路径和方法。@GetMapping
、@PostMapping
、@PutMapping
、@DeleteMapping
:用于定义GET、POST、PUT、DELETE等HTTP请求的处理方法。
资源整合
高级特性
本地热部署
MyBatis Plus
介绍:MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它提供了一系列的增强功能,包括通用CRUD操作、条件构造器、代码生成器、插件扩展等,使得开发人员能够更快速地开发和维护MyBatis应用程序。
注意:之前我们学习了数据库,当我们项目想要使用数据库保存数据的时候,需要先连接数据库,我们连接数据库最开始使用的是jdbc,然后是更简单方便的mybatis,最后是mybatisplus,虽然mybatisplus几乎已经不需要我们使用sql语言了,但是还是要保持自己会这些,经常使用mybatis
引入
要使用MyBatis-Plus,首先需要将其引入到项目中。可以通过Maven或Gradle等构建工具将MyBatis-Plus的依赖添加到项目的依赖管理文件中,然后重新构建项目以导入依赖。
通用 CRUD
条件构造器
代码生成器
插件扩展
自定义全局操作
Maven/ Gradle(一般选择Maven)
介绍:Maven 和 Gradle 都是流行的项目管理工具,用于构建、依赖管理和项目配置等任务。
注意:这个知道它在框架是怎么使用的就可以了
构建
依赖管理
插件
配置
子父工程
多模块打包构建
Nexus 私服搭建
Spring Security(不强制学习这个及其他未提及的框架)
介绍:Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护Java应用程序的安全性。
用户认证
权限管理
相关技术:Shiro
开发规范
阿里巴巴 Java 开发手册:Alibaba Java 技术图谱-阿里云开发者社区Alibaba Java 由“Java课程专家组”倾力打造的行业权威图谱,11个知识点 ,近千课时,体验场景练习上手更快。从新手入门,到高级工程师进阶,从理论学习,到实践应用,一张图谱讲透Java ! 限时免费学。https://developer.aliyun.com/graph/java只需要学习这个就可以了(搜索Java开发手册)
链接:Java开发手册
提取码:soul
Git
Git介绍:版本控制工具
安装
使用
操作流程
常用命令
版本控制
分支
代码合并、解决冲突
团队协作
Linux
注意:我们学习linux的目的是部署我们的项目到云服务器上,最开始就使用手动的部署,熟悉linux,后面会学习更方便的docker,或者使用宝塔界面部署项目
Linux 系统安装
环境变量
文件管理
用户管理
内存管理
磁盘管理
进程管理
网络管理
软件包管理
服务管理
日志管理
Linux 内核
常用命令
常用环境搭建
Shell 脚本编程
VIM 的使用
软件工程(不强求一定要学)
设计模式
注意:如果你是从第三条路线过来的,可以选择先只学习软件开发原则和单例模式
学习模式之前一定要了解两个东西:
- 类图
- 软件开发原则
(这些东西极力推荐学习尚硅谷的设计模式,里面有这些)
创建型模式
介绍:创建型模式用于解耦对象的实例化过程
单例模式
工厂方法模式
抽象工厂
建造者模式
原型模式
结构型模式
介绍:结构型模式用于组合类或对象以形成更大的结构,以解决对象之间接口不兼容的问题
适配器模式
组合模式
装饰器模式
代理模式
享元模式
外观模式
桥接模式
行为型模式
介绍:行为型模式描述了类和对象之间的通信模式,以及责任的分配方式
迭代器模式
模板方法模式
策略模式
命令模式
状态模式
责任链模式
备忘录模式
观察者模式
访问者模式
中介者模式
解释器模式
软件
注意:这些软件的东西不需要马上就学,等你用到了再学,没有用到就不用管它
Redis
介绍:Redis(Remote Dictionary Server)是一个开源的内存数据库管理系统,它使用键值对存储数据,并提供多种数据结构的支持
RabbitMQ
介绍:RabbitMQ是一个开源的消息队列系统,实现了高级消息队列协议(AMQP)的标准,用于在分布式应用程序之间传递消息
Nginx
介绍:Nginx(发音为"engine x")是一个高性能的开源的Web服务器,也可以用作反向代理服务器、负载均衡器和HTTP缓存等
Netty 网络编程
介绍:Netty是一个基于Java NIO(Non-blocking I/O,非阻塞I/O)的网络通信框架,提供了高性能、高可靠性的异步事件驱动的网络编程能力
IO 模型(BIO / NIO)
Channel
Buffer
Seletor
Netty 模型
WebSocket 编程(动手做个聊天室)
微服务
简介:微服务(或称微服务架构)是一种云原生架构方法,它将一个大的应用拆分成一系列小的服务,每个服务都运行在独立的进程中,并且服务之间通过轻量级通信机制进行交互。这些服务通常具有自己的业务逻辑和独立的数据存储,可以独立开发、测试、部署和扩展。
注意:微服务将我们原本的应用程序拆分成一组小的服务,每个服务运行在其独立的进程中,服务之间通过轻量级通信机制进行交互
Docker
简介:Docker是一个开源的应用容器引擎,它允许开发者将他们的应用以及依赖包打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上。使用Docker,用户可以迅速地将程序“Docker化”,创建容器来运行应用程序,而且大多数Docker容器可以在不到一秒的时间内启动。这种特性使得Docker容器具有很高的性能,同时使得用户能够充分利用系统资源,在同一台宿主机中运行更多的容器。
注意:docker常用来打包程序,之前我们打包程序是生成jar包,将jar包运行在与服务器上,现在学习了docker可以使用docker进行部署
CI / CD
简介:CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。它的核心概念是持续集成、持续交付和持续部署。
Java 高级
注意:下面的这两个可能大部分是背的面试题,并没有深入学习,这两种方式都可以
并发编程
简介:并发编程是指在一个程序中同时执行多个独立任务的编程方式。这种编程方式相对于顺序执行的程序,能够使程序效率更高、响应更快,从而提高用户体验。
JVM
简介:JVM,全称Java Virtual Machine,即Java虚拟机。它是Java语言的核心运行环境,负责解释执行Java的字节码文件(.class文件),并将其转换成具体的硬件平台上的机器码,从而在不同的平台上运行Java程序。