Java后端学习路线
当前推文的方向为后端,讲解成为Java后端工程师的必备技能
1.前端
与后端
概念
了解学习方向,这是当前互联网行业的分工体制。
1.1 前端
介绍
前端工程师创建WEB页面(页面可以是网站、APP、小程序......)
在创建页面时,使用HTML、CSS、JavaScript及其衍生技术或框架(vue)开发。
创建页面后,将数据(图片、文字、视频......)进行美化展示,完成对用户的交互。
最初所有的开发工作都是由后端工程师完成的,随着业务越来越繁杂,工作量变大,于是我们将项目中的可视化部分和一部分交互功能的开发工作剥离出来,形成了前端开发。


特点
技术发展快(一年一小变,三年一大变)
难度较低(不需要写太过复杂的逻辑,用户满意即可)
成就感高(酷炫的页面不容易产生视觉疲劳)
1.2 后端
介绍
在屏幕上看不到但又被用来为前端提供支持的东西就是后端
为前端WEB网页提供展示的数据
通过对数据进行增删查改(增加C、删除D、查询R、修改U),完成特定的业务逻辑
目前中国的互联网公司都按照该分工机制,一个项目由前端工程师和后端工程师合力完成。项目的部署维护由运维人员(也可以是后端工程师)完成。


特点
技术发展变化不大(不能说发展慢,虽然内容会变,但是它的内部逻辑不会变)
难度高(SQL+框架+微服务+分布式+了解常见业务逻辑)
成就感不是很高 ,没有炫酷的效果,写接口容易疲惫
2.学习方式
在了解完成当前的互联网分工后,如何学习,目前有两种方式
2.1 机构学习(强烈不推荐!!!)
类型于补习班,老师在班上,手把手教你学习,快速掌握(看个人)。
注意:
时间太短,不建议去,一般3个月到半年就结束了,这些机构为了吸引那些没钱的学生,还贴心的推出了贷款学习。
填鸭式教育,时间太少,又教太多了,知识太密集了。普通人非常容易跟不上进度!!!

来自知乎的@IT培训不完整指南用户
2.2 自学(推荐)
A.掌握学习方法
在我看来,作为大学生,有三年的时间学习,三年乌龟爬都可以把后端知识学完。更重要的是掌握学习方法。
互联网行业的知识与高中不同,它的知识量大,难度逐层提高。
需要使用学习方法,而不是像高中那样死记硬背。
知识是死的,人是活的,在这三年的学习中,需要找到适合自己的学习方法,这样,不管知识怎么变化,掌握了学习方法,都可以快速学习,这比知识本身更重要!!!
B.实践比学习更重要
你学习互联网不是为了考试,而是为了找工作。
而找工作,需要根据需求敲代码,就需要经验。
但是学习是为了学习互联网知识而已,经验只能从实践中出来。
说了这么多,就是说:不能光学习,学习到一定程度后,要去找项目做一做,积累实践经验。
学习技术不是靠学习,而是靠练出来的
C.学习<意愿<需求
学习互联网知识技术,主要的动力有三点:
学习:该技术是必备技能,每个人都必须掌握,但是学习了暂时用不到,但是这技术很火,必须学习。 意愿:我想做一个程序,我听说用这个技术做这个程序很方便,我想去学习。 需求:该程序必须由该技术完成。完成不了,进度赶不上,老板会生气。学习完后就能立马用得上。
以上是学习技术的常见动力,在我看来,基于需求动力学习,较为轻松且效率高,并且学习后,可以立刻实践,这种学习效率高。
3.后端学习路线
4.1 培训机构的路线
A.黑马程序员
Java程序员学习路线图_黑马程序员2022版java学习路线 (itheima.com)

B.尚硅谷
2022年度全网最全Java学习路线 - 哔哩哔哩 (bilibili.com)
初学者可按照尚硅谷公开的JAVA视频最快学习路线:
JavaSE --> MySQL--> JDBC --> JavaWeb --> Spring5 --> SpringMVC --> MyBatis--> Maven --> Ssm框架整合案例 --> Git/GitHub --> Redis6 --> MySQL高级优化 --> MyBatisPlus --> Spring注解驱动开发 --> ZooKeeper --> Dubbo --> 消息中间件ActiveMQ --> RabbitMQ -->RocketMQ-->SpringBoot2 --> SpringCloud --> 尚筹网项目 --> 在线教育项目 --> 谷粒商城项目 --> 尚医通项目 --> 尚融宝项目--> 高频面试题第一季 --> 大厂面试题第二季 --> 大厂面试题第三季
C.BOSS直聘
还可以去BOSS直聘去看哪些技术流行,但是最好有基础。
4.2 总结路线
多看几家培训机构,就找到要学什么了。
A.JAVA基础

这个不多说,基础中的基础,不仅要了解Java基础,还要掌握IDEA的使用方法,初步掌握排错的能力,不能一看见控制台上看见红色的报错就害怕。
标识符+关键字
变量+数据类型+运算符
控制语句+循环语句
方法
类和对象
封装+继承+多态
包机制+访问控制权限
Obiect类的五大方法(toString+equals+hashcode+finalize+getclass)
数组
常用包装类
String+StringBuffe、StringBuilder
Byte+Short+Integer+Long+Float+Double+Boolean+Characte
日期处理(Date)+日期格式化
BigDecimal高精度数字类+数字格式化
枚举
异常(try...catch....finally)
集合


I/O流
多线程
反射机制
常用注解
注意:GUI图像界面+Java网络编程(URL+TCP)无需学习
没有捷径,只能不停的敲。并且要把握好力度,实在学不会就先放下,用多就会了。、
B.MySQL 与 JDBC
难度开始提升,需要接触新的概念。
在这个阶段,你需要了解SQL语言,及其数据库MySQL。了解Java程序如何使用JDBC连接数据库
MySQL掌握:
安装+卸载 连接数据库 数据库操作(database) 表操作(table) 常见数据类型 约束(主键、外键、唯一、非空) SELECT+INSERT+UPDATE+DELETE 子查询 连接查询(内连接+外连接)
注意:MySQL需要了解一点事务(4个特性 + 读未提交+读已提交+可重复读+序列化),如果是调优+锁之类的SQL进阶(了解即可,需要配合项目才可以学,没有项目学不了),先跳过。
JDBC:
了解即可,了解Java怎么通过JDBC连接数据库即可
C.JavaWeb

难度进一步提升,不仅需要接触新的概念,还要做人生第一个项目,了解业务。
熟悉四大组件:servlet+filter(过滤器)+Listener(监听器)
在这个阶段,
了解Tomcat的简单配置 cookie+session 做一个简单的JavaWeb项目 了解常见业务逻辑 了解分层架构思想(controller+service+dao) 了解常用的前端(不需要掌握,用到的时候去查即可) 进一步了解线程(ThreadLocal)
但是,现在的培训机构非常卷,为了培养编程思想。一般JavaWeb项目的难度加大,还会穿插源码。
比如:尚硅谷的JavaWeb不仅把前端将了一遍,后端讲了一遍。还讲的Spring的IOC容器,SpringMVC的核心控制器(dispatcherservlet),让小白手写框架。真的卷......
动力节点的JavaWeb对小白好一些,但是也就比尚硅谷的难度低一些。还是会讲源码,讲servlet的源码,也介绍了核心控制器(dispatcherservlet)。
注意:JSP可以了解即可,无需掌握,敲一下就过。

D.SSM(spring+springMvc+MyBatis)
在这个阶段已经是入门了,了解思想+注解+用法+配置文件


Spring:
了解IOC+DI(控制反转 + 依赖注入) AOP(切面编程) 会使用常见注解
springMVC:
怎么编写一个接口
Restful风格
全局异常处理
拦截器
文件上传和下载
MyBatis:
了解怎么在xml编写SQL语句,并且能够编写dao层接口 了解核心配置文件:mybatis-config.xml 会编写CRUD,会写映射 动态SQL 使用分页插件进行分页 代码生成器
SSM整合
在这个阶段,如果遇到源码,可以先放一放,了解即可,重点掌握使用。
如果时间充足,可以去做SSM项目,了解思想即可,在工作时一般不会用SSM,也可以去学习MyBatisPlus增强框架,无需编写SQL语句快速开发。
E.Maven+Git
Maven

配置Maven,配置加速
使用Maven构建项目(pom.xml)
添加依赖+依赖传递+依赖排除
依赖继承+依赖传递
Git项目管理工具:

拉取、克隆、 添加到暂存区本地库、提交代码 了解码云与github,配置git 分支(冲突和合并)
E.SpringBoot
在这个阶段,已经到达了Java程序员的最低门槛,已经可以出师了
约定大于配置的思想,学会配置文件+注解的进一步用法,了解日志的使用,了解项目的进一步配置。
F.做项目

去找SpringBoot项目吧,做一些项目,进一步提高。
在做项目的同时,可以在项目中学习微服务加分布式,项目做完后,再学习分布式与微服务。
G.注意
没有学习上面的技术学习前,禁止学习 微服务 与 分布式 技术
原因:难度高、涉及技术多、在做项目由老师带你接触可以,但是未学完上面的前置技术时,禁止专门学习 其技术有:Linux(项目运行)、Redis(缓存)、Nginx(网关)、SpringCloud与SpringClooudAlibaba(微服务Java实现)、Dokcer(云容器技术,更方便部署项目)、ES分布式搜索 、RabbitMQ(消息中间件) 在学习的过程中,如果学累了,还可以去学习数据结构和算法、计算机网络等。
技术不是一成不变的,技术在进步,随时上面的技术可能被更新或淘汰,在学习时,需要确这个技术是否需要使用。
不能盲目追求新技术(微服务...),打好基础更重要(计算机网络.....)




