技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。
网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习规划!
就是说,做 Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学?
松哥大二刚开始自学 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,自己一个人摸索了很长时间,后来才逐步建立起自己的知识体系。
所以每次有小伙伴问我 Java 的学习规划时,我都能理解大家所处的困境。
Java 开发涉及到的领域非常多,对于开发者而言要掌握的东西也非常多,初入行的小伙伴甚至觉得这些要掌握的东西非常杂乱,其实不然!所有要学习的东西都是有内在关联的。
松哥今天就来和大家捋一捋 Java 学习路线图,一起来看看都有哪些东西需要掌握,以及要按照什么样的顺序来学习。
Java 企业级开发涉及到的技能点实际上非常多,我将其大致归为以下五类(文末可以获取思维导图):
在这个技术栈的基础上,你可以继续选择走全栈道路或者走大数据方向。
有的小伙伴可能会纠结于要全面还是要精通某一方面,其实这个无所谓好坏,关键是要看你自己。你是想去大厂做一个某一领域的技术专家,还是想自己独当一面,自己喜欢的才是最好的。
话说回来,即使你想钻研某一方面,也不是说这些东西就不用学了,即使精通某一方面,也必然是先广泛涉猎,再慢慢确定自己的方向。
松哥大学自学 Java 的时候就是这样,当我不知道哪些东西重要哪些东西不重要的时候,我就都学,反正大学生有大把时间,我甚至连 Dreamweaver,Fireworks,Flash 三剑客都学了,甚至利用 Dreamweaver 上简陋的功能做了一个动态网站。
这些东西你说学了没用吗?其实不见得。当我学了很多之后,在未来某一天,突然就顿悟了,把这些学过的东西串起来了,有一种醍醐灌顶的感觉。
接下来,这里五大块松哥拆分开来分别给大家介绍。
先来看我画的思维导图(文末可以获取思维导图):
JavaSE 这块其实没啥值得说的,基础的东西很多年都没有变化。而且 JavaSE 这块网上也有很多免费教程,大家在公众号【江南一点雨】后台回复 2TB,也有相关的免费视频教程。
很多公司,用的 Java8/9/10,实际上还是写的 JDK1.5 的代码,但是这并不意味着我们就不用学习了。Java8/9/10/11 中的一些新特性还是有必要去学习下,特别是现在 WebFlux 逐渐被人们重视,一些从 Java8 就开始萌芽的理念与技术还是很有必要掌握一下的。
先来看我画的思维导图(文末可以获取思维导图):
作为一名 Java 工程师,数据库的重要性不言而喻,这算是基本功,我们不能老指望着 DBA,毕竟配有 DBA 的公司只是极少数。有句话叫做“SQL 写得好,下班下得早”。
当然数据库也有很多优化方面的问题,但是在大家刚刚开始学习的时候,我其实是不建议去学习数据库优化、主从、集群、读写分离这些东西的,这些可以等到后面学习微服务的时候再去学习比较合适,在刚学习 Java 没多久的情况下,就去学习数据库优化,极有可能让你对开发这条路打退堂鼓。
数据库这块大家在公众号【江南一点雨】后台回复 2TB,也有相关的免费视频教程
先来看我画的思维导图(文末可以获取思维导图):
学习是给自己学的,不能偷懒,所以你看我这里列出来的知识点比较多,甚至又一些看起来好像过时的技术。
有人会纠结 EasyUI 要不要学,这个有点古老。我的意见是,如果你是在校大学生,那就学,反正有时间;如果你已经工作了,现在查漏补缺,那可以结合公司的技术栈决定要不要学。
其实 EasyUI 也不能算是边缘化的东西,如果你前端不用 Vue、React 或者 Angular,EasyUI 绝对是一个无法忽视的存在,学习一下 EasyUI ,也能让我们理解整个前端的一个发展过程。
一般来说,Web 基础学完其实是可以自己做一些简单的项目的巩固一下知识点,这块网上也有很多开源项目,松哥这里也给大家推荐一个 CoolMeeting:
至于这里列出来的其他技术点,都是常规技术,大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
先来看我画的思维导图(文末可以获取思维导图):
这里涉及到的东西就比较多了,也是学起来最最漫长的一部分。
这里我主要说说关注的几个问题。
- SSH 还要学吗
我们说的 SSH 一般是指 Spring、Struts2 以及 Hibernate。这三个里边,可以确认不用学习的 Struts2,如果你大学刚毕业,进入到一家公司,用 Struts2 做开发,你进去干了三年,Struts2 用的滚瓜烂熟,出来跳槽却发现没有任何优势,所以我不建议大家在 Struts2 上花时间。
至于 Hibernate ,这个我持保留态度。为什么这么说呢?
因为 Hibernate 和 Jpa 之间有着千丝万缕的联系,Spring Data Jpa 结合 Spring Boot,还是有很多公司在用,而如果你掌握了 Hibernate,在后面使用 Jpa 的时候上手很快,关于 Hibernate 和 Jpa 之间的关系,松哥之前专门写过文章介绍:干货|一文读懂 Spring Data Jpa!
- 消息中间件学哪个?
就我目前了解到的情况,JavaEE 项目中,RabbitMQ 和 RocketMQ 使用较多,大数据中 Kafka 用的较多,传统的满足 JMS 规范的 ActiveMQ 使用较少。因此小伙伴们可以结合这样一个实际情况选择合适的消息中间件学习顺序。
这个阶段的知识点都搞定了,做个毕设肯定是绰绰有余了,出了学校校门找个实习肯定也够用了。大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
先来看我画的思维导图(文末可以获取思维导图):
这一块,Spring Boot 和 Spring Cloud 是重点,这两个又分别涉及到诸多知识点:
SpringBoot:
SpringCloud:
学习 Spring Boot 的基础依然是 SSM,不建议跳过 SSM 直接学 Spring Boot,这个松哥之前也专门写文章讲过:Spring Boot 要怎么学?要学哪些东西?要不要先学 SSM?。
Spring Boot 学完之后,也可以做个项目巩固一下,推荐两个开源项目:
当你搞定了 SSM、搞定了 Redis、搞定了中间件,你再去学习 Spring Boot 就会发现他是如此简单!
至于 Spring Cloud,虽然 Netflix 公司的几个组件已经不打算继续开源了,但是对于大家而言,我觉得还是有必要去学习一下的,毕竟也不难,花不了多少时间,而且学习这些组件可以帮助大家快速建立一个 Spring Cloud 知识体系。
出了这两大块之外,剩下的就不用我多说了。MySQL 的进阶我是建议放在这个阶段学习的,像数据优化、主从搭建、读写分离等,我建议放在这个阶段。
大家在公众号【江南一点雨】后台回复 2TB,也有对应的免费视频教程。
上面的都学完之后,你已经可以站在一个比较高的角度来看待 JavaEE 开发了。
这个时候,可以考虑自己是想走 “专” 的道路,当一个技术专家呢,还是想走全栈的道路,以后自己搞个工作室之类的,抑或是想往大数据的方向发展都是可以的。无论小伙伴想走哪个方向,都可以在公众号【江南一点雨】后台回复 2TB,有对应的免费视频教程。
好了,一点点经验和小伙伴们分享,文中涉及到的思维导图大家可以在公众号后台回复 规划 获取下载链接。
好啦,小伙伴们五一快乐哦~
今年 5 月份的时候,松哥发了一个视频资源库,当时和大家说,这个资源库会定期更新,后来却迟迟未更新,其实不是我没资源了,是因为当时的关键字是我一个一个在微信后台配置的,配置到后面发现,后台配置关键字有数量上限,没法继续配置了,所以这事就搁置下来了。
九月份松哥上线了自己的服务,和微信的后台对接起来,具体实现大家可以参考这两篇文章:
现在再配置关键字就没有限制了。于是最近抽空把资源更新了一波,废话不多说,大家在公众号【江南一点雨】后台回复相应的口令,就可以获取相应的视频下载地址。
资源名称 | 口令 |
---|---|
Java 基础语法 | javaboy4096 |
Java 面向对象 | javaboy6148 |
JavaSE 飞机大战项目 | javaboy2053 |
深入面向对象和数组 | javaboy8200 |
Java 常用类详解 | javaboy4105 |
Java 异常机制解析 | javaboy6157 |
Java 集合与数据结构 | javaboy2062 |
JavaIO 流全解析 | javaboy8209 |
深入理解 Java 多线程 | javaboy4114 |
Java 网络编程 | javaboy6166 |
手动开发一个 Web 服务器 | javaboy2071 |
深入理解 Java 注解+反射 | javaboy8218 |
Java23 种设计模式 | javaboy4123 |
学会 Java 正则表达式 | javaboy6175 |
JDBC 详解 | javaboy2080 |
独立开发 SORM 框架 | javaboy8227 |
快人一步,Java10 新特性全解析 | javaboy4132 |
Java 数据结构和算法 | javaboy6184 |
深入理解 Java 虚拟机 | javaboy2089 |
Java 解析XML文件 | javaboy8236 |
资源名称 | 口令 |
---|---|
Oracle 数据库安装及简单 SQL | javaboy4141 |
Oracle 账户管理及查询语句 | javaboy6193 |
Oracle 中的函数 | javaboy2098 |
Oracle 中的子查询 | javaboy8245 |
Oracle 中常见的表操作 | javaboy4150 |
Oracle 中的数据备份 | javaboy6202 |
MySQL 基础 | javaboy2107 |
PowerDesigner 教程 | javaboy8254 |
JDBC 操作数据库 | javaboy4159 |
MySQL 优化 | javaboy6211 |
Oracle 高级课程 | javaboy2116 |
数据库与 SQL 优化 | javaboy6283 |
数据库集群与高并发 | javaboy2188 |
资源名称 | 口令 |
---|---|
HTML 入门教程 | javaboy8263 |
CSS 教程 | javaboy4168 |
JavaScript 视频教程 | javaboy6220 |
jQuery 视频教程 | javaboy2125 |
EasyUI 视频教程 | javaboy8272 |
Servlet 基础 | javaboy4177 |
Servlet 中的 Request 和 Response | javaboy6229 |
Servlet 请求转发与重定向 | javaboy2134 |
Session 和 Cookie | javaboy8281 |
JSP 详解 | javaboy4186 |
用户管理系统实战 | javaboy6238 |
Ajax 详解 | javaboy2143 |
EL 和 JSTL | javaboy8290 |
过滤器详解 | javaboy4195 |
监听器详解 | javaboy6247 |
KnockoutJS 实战视频 | javaboy2152 |
资源名称 | 口令 |
---|---|
IntelliJIDEA 视频教程 | javaboy4285 |
Java 高并发秒杀方案 | javaboy8299 |
Activiti 工作流实战解析 | javaboy4204 |
Java 并发编程与高并发实战 | javaboy6256 |
Linux 快速入门 | javaboy2161 |
Maven 详解 | javaboy8308 |
Git 应用详解 | javaboy4213 |
Svn 入门教程 | javaboy6265 |
高并发编程与线程池 | javaboy2170 |
系统优化与 JVM 调优 | javaboy8317 |
Java 编程规范 | javaboy4222 |
AIO、BIO、NIO 详解 | javaboy6274 |
Netty 高级视频教程 | javaboy2179 |
ActiveMQ 消息中间详解 | javaboy8326 |
单点登录视频教程 | javaboy4231 |
Dubbo 详解 | javaboy8335 |
Redis 全解析 | javaboy4240 |
VSFTPD+NGINX 视频教程 | javaboy6292 |
MyBatis 视频教程 | javaboy2197 |
Spring4 视频教程 | javaboy8344 |
SpringMVC 视频教程 | javaboy4249 |
SSM 框架整合视频教程 | javaboy6301 |
RBAC 权限控制视频教程 | javaboy2206 |
Hibernate4 视频教程 | javaboy8353 |
Jfinal 视频教程 | javaboy4258 |
Shiro 视频教程 | javaboy6310 |
Solr 视频教程 | javaboy2215 |
Struts2 视频教程 | javaboy8362 |
Nginx 视频教程 | javaboy4267 |
Redis 缓存详解 | javaboy6319 |
JVM 虚拟机优化 | javaboy2224 |
Zookeeper 详解视频 | javaboy8371 |
Linux 基本操作 | javaboy6328 |
架构师面试攻略(文档) | javaboy2233 |
架构师面试攻略(视频) | javaboy8380 |
JUC 视频教程 | javaboy6400 |
MySQL 高级教程 | javaboy2305 |
Java 邮件开发教程 | javaboy8452 |
Maven 实战视频 | javaboy8443 |
自己 DIY 一个 Tomcat | javaboy4339 |
资源名称 | 口令 |
---|---|
HTML5 新特性 | javaboy4276 |
AngularJS 视频教程 | javaboy6337 |
Grunt 视频教程 | javaboy2242 |
Gulp 视频教程 | javaboy8389 |
Webpack 视频教程 | javaboy4294 |
Bootstrap 视频教程 | javaboy6346 |
CSS3 视频教程 | javaboy2251 |
ES6 视频教程 | javaboy8398 |
HTML5 核心技术 | javaboy4303 |
HTML5 实战 | javaboy6355 |
HTML5 项目实战 | javaboy2260 |
JS 模块化视频教程 | javaboy8407 |
less 视频教程 | javaboy4312 |
NodeJS 视频教程 | javaboy6364 |
React 视频教程 | javaboy2269 |
Zepto 视频教程 | javaboy8416 |
HTML+CSS 实战视频 | javaboy4321 |
JavaScript140 集 | javaboy6373 |
jQuery 视频教程 | javaboy2278 |
JavaScript 高级语法视频教程 | javaboy8425 |
Vue 项目实战视频 | javaboy4330 |
CSS3 特效实战 | javaboy6382 |
HTML5 特效实战 | javaboy2287 |
HTML5+Canvas 实现刮刮卡 | javaboy8434 |
Gradle 从入门到精通 | javaboy6391 |
mpvue 项目实战 | javaboy2296 |
Vue 最新最全视频教程 | javaboy4348 |
资源名称 | 口令 |
---|---|
Linux 操作系统 | javaboy4357 |
Linux 基本命令 | javaboy6409 |
Linux 文件安装 | javaboy2314 |
Shell 编程 | javaboy8461 |
网络基础知识 | javaboy4366 |
LVS 集群与高并发 | javaboy6418 |
Nginx 和高并发 | javaboy2323 |
keepalive 和单点故障 | javaboy8470 |
HDFS 分布式文件系统 | javaboy4375 |
mapreduce 分布式计算 | javaboy6427 |
YARN 资源管理与任务调度 | javaboy2332 |
mapreduce 计算案例 | javaboy8479 |
HIVE 视频教程 | javaboy4384 |
Hbase 数据库详解 | javaboy6436 |
zookeeper 协同处理 | javaboy2341 |
CDH 使用 | javaboy8488 |
HUE 使用 | javaboy4393 |
IMPALA 详解 | javaboy6445 |
oozie 详解 | javaboy2350 |
elasticsearch 详解 | javaboy8497 |
Redis 内存数据 | javaboy4402 |
Scala 入门 | javaboy6454 |
Spark 详解 | javaboy2359 |
Spark 高级 | javaboy8506 |
Spark-Stream 流式计算 | javaboy4411 |
Kafka 分布式消息队列 | javaboy6463 |
STORM 流式计算框架 | javaboy2368 |
Python 语言基础 | javaboy8515 |
回归算法 | javaboy4420 |
分类算法、决策树 | javaboy6472 |
聚类算法、微博案例 | javaboy2377 |
推荐算法 | javaboy8524 |
大型电商日志分析(项目实战) | javaboy4429 |
智慧交通(项目实战) | javaboy6481 |
智能 App(项目实战) | javaboy2386 |
资源名称 | 口令 |
---|---|
人工智能入门 | javaboy8533 |
线性回归深入与代码实现 | javaboy4438 |
梯度下降算发实现 | javaboy6490 |
逻辑回归详解和应用 | javaboy2395 |
分类项目案例与神经网络算法 | javaboy8542 |
多分类、决策树分类与随机森林分类 | javaboy4447 |
分类评估与聚类 | javaboy6499 |
密度聚类与谱聚类 | javaboy2404 |
Tensorflow 安装并实现线性回归 | javaboy8551 |
TensorFlow 深入、TensorFlow可视化 | javaboy4456 |
DNN 深度神经网络手写图片识别 | javaboy6508 |
TensorBoard 可视化 | javaboy2413 |
卷积神经网络、CNN 识别图片 | javaboy8560 |
卷积神经网络深入,AlexNet 模型实现 | javaboy4465 |
Keras 深度学习框架 | javaboy6517 |
资源名称 | 口令 |
---|---|
ZooKeeper 简介 | javaboy2422 |
ZooKeeper 安装 | javaboy8569 |
ZooKeeper 基本数据模型 | javaboy4474 |
基于 Linux 的 ZK 客户端命令 | javaboy6526 |
选举模式和 ZK 集群安装 | javaboy2431 |
JavaAPI 操作 ZK | javaboy8578 |
ApacheCurator 客户端 | javaboy4483 |
Dubbo 入门到重构服务 | javaboy6535 |
分布式锁 | javaboy2440 |
Zookeeper 总结 | javaboy8587 |
资源名称 | 口令 |
---|---|
OA 办公自动化项目1 | javaboy4492 |
OA 办公自动化项目2 | javaboy6544 |
OA 办公自动化项目3 | javaboy2449 |
OA 办公自动化项目4 | javaboy8596 |
备锋客户关系管理(CRM)系统 | javaboy4501 |
百战客户关系管理系统 | javaboy6553 |
宅急送项目 | javaboy2458 |
高仿人人网项目 | javaboy8605 |
Java 邮件开发项目 | javaboy4510 |
在线支付实战视频 | javaboy6562 |
俄罗斯方块游戏实战 | javaboy2467 |
贪吃蛇视频教程 | javaboy8614 |
交通灯管理系统 | javaboy4519 |
银行业务调度系统实战 | javaboy6571 |
供应链系统实战视频 | javaboy2476 |
网上商城项目实战 | javaboy8623 |
医药采购平台管理系统 | javaboy4528 |
点餐系统实战 | javaboy6580 |
杰信商贸 SSM 版 | javaboy2485 |
国家税务协同平台项目 | javaboy8632 |
javaWeb 聊天室 | javaboy4537 |
网上书店 | javaboy6589 |
手机进销存系统 | javaboy2494 |
QQ 聊天器 | javaboy8641 |
ERP 项目 | javaboy4546 |
坦克大战 | javaboy6598 |
五子棋游戏 | javaboy2503 |
报名系统 Activity | javaboy8650 |
OA 供应链系统 | javaboy4555 |
用户管理系统 | javaboy6607 |
JavaWeb 图书商城 | javaboy2512 |
VIP 商场 | javaboy8659 |
企业招聘系统 | javaboy4564 |
博客系统项目 | javaboy6616 |
超级玛丽 | javaboy2521 |
成绩管理系统 | javaboy8668 |
个人理财系统 | javaboy4573 |
人事管理系统 | javaboy6625 |
JBPM 采购申请系统 | javaboy2530 |
电子商务网站 | javaboy8677 |
跨平台 App 开发 | javaboy4582 |
资源名称 | 口令 |
---|---|
Docker 教程 | docker |
Redis 教程 | redis |
RocketMQ 教程 | rocketmq |
Java8 新特性文档 | java8 |
设计模式教程 | 设计模式 |
网络协议教程 | 网络 |
netty 教程 | netty |
web 全栈指南 | web全栈 |
好了,本次就先更新这么多,如果这里没有你想要的,也也可以留言说说你需要的资料,松哥会及时更新资源哦。 另外,大家在公众号后台回复 资源 ,也可以获取本文电子版。
如果这些资源帮助到你了,欢迎转发给更多小伙伴哦。