我们生活在一个高速发展的社会,在这样的大背景下每个人都需要无时不刻学习新的知识来避免被社会所淘汰,尤其是从事IT行业的开发人员。
但求学之路不是一件容易的事,每当学习新的技术时,往往会有很多因素导致自己没有坚持下去,最典型的原因有这些:
1.没有导师,不知道从哪里开始学起;
2.学习过程中遇到困难,自己无法解决,遂放弃;
3.人的惰性,不能持之以恒
4.不能很好的平衡工作时间和学习时间。
其中第1点原因,不知道如何去学习,没有学习路径,这就已经让80%的开发者放弃了,为此我经过一段时间整理,写了这篇Java的进阶路线,希望这篇文章能帮助到一些初级开发者。
首先送上目录:
1. AWS
2. Java8
3.Spring boot
4. Docker容器和编排治理
5. 数据结构和算法
6. Hackerrank, LeetCode
7. 设计模式和设计原则
8. 系统设计
9. react.js-redux/Angular
10. 其他技术概念
11. 学习1-2门其他编程语言
接下来根据目录中的11条标题一条一条来细说:
1. AWS
为什么把云技术放到第一位?这也是我的一种学习习惯,先难后易,攻破了云技术,那么其他技术都不是问题。云技术栈包含的知识点几乎涵盖了Java高阶中的所有知识点,比如负载平衡器、API 网关、无服务器计算、Docker 容器和编排、弹性搜索索引、异步队列和消息流、存储模型、NoSQL DB、关系 DB、缓存等。
因此,首先做云可以得到一个完整的Java栈技术,这样学习后面的就容易多了。
2. Java8
深入了解 Java8 概念如Lambdas、功能接口、Stream API 等。
但最重要的还是确保Java的基础一定要牢固, 比如收集器、并发和OOPS等基础概念,一定要了解的非常透彻
认清楚一点,无论使用何种技术栈和框架,Java 都是这些技术的支柱
3. Spring Boot
微服务架构现在很热门,它有诸多好处:
1. 高度可扩展
2. 更快的开发和部署
3. 云原生
4. 适配多语种编程语言
5. 每个服务都可以有不同类型的数据库
等等
Spring Boot是在Java中构建微服务的框架。它建在Spring框架之上,和Hibernate ORM 框架可以无缝配合,因此,学习了解微服务架构非常重要,也是进阶必不可少的一部分。
4. Docker容器和编排治理
现在,大多数公司都使用 Docker 容器将微服务部署到在云服务器上,使用Docker提供虚拟化。
标题中我还提到了编排治理,这个词对于很多人来说有点陌生,这里简单介绍一下:
开发微服务时,会有很多服务在Docker中运行,这些服务需要监测,就需要引入编排治理。最受欢迎的工具是Kubernetes。
5. 数据结构和算法
学完上面这些知识后,接下来就要学习数据结构和算法了。很多开发者会很疑惑,我在业务上用不到这些,为什么要学它呢?
我们先要清楚一个问题,任何东西都有其存在的价值。
数据分析和算法几乎就是高级开发者和初级程序员之间的分水岭,比如业务开发需要了解时间,空间复杂度分析来评估代码的性能和资源消耗,又比如key-value数据库Redis的有序集合为什么要用跳表而不用二叉树?如果不了解算法和数据结构,你对这些高阶的操作永远不可能懂。
学习数据结构和算法,可以按照下面的步骤来:
1. 线性数据结构(阵列、列表、哈希、堆栈和队列)
2. 非线性数据结构(二叉树、AVL 树、堆、等)的
3. 排序算法(快速排序、合并排序、气泡排序、桶排序、计数排序等)
4. 搜索算法(线性搜索、二进制搜索、三元搜索、指数搜索等)
5. 字符串操作(字符串操作和字符串操作)
6. Hackerrank, LeetCode
这是两个做面试题的平台,建议大家都收藏起来,跳槽找工作必备,目前国内大厂的面试题大都出自这些平台,平时在这上面刷刷题,练习一下算法也是不错的。
7. 设计模式和设计原则
设计模式和设计原则也很重要,目前很多公司都很重视这一点,面试官经常会根据不同的场景来测试设计技能,最好能在平时学习中使用 UML 图表做一些示例方案,面试中拿出来,会给自己加分不少。
8. 系统设计
学习系统设计是成为架构师最快的办法。系统设计的项目有很多,比如:聊天程序,会议室预订系统,停车场收费系统等等。
9. react-redux/ angular
全栈开发现在是市场的一个趋势,所以进阶过程中学会前端框架也是必经之路,React和angular是两个很好的前端框架。
10. 其他技术概念
上面提到了不少技术,但还是没办法涵盖Java的所有技术,有些东西平常会经常碰到,但时间有限,无法将这些技术学精。比如以下这些技术。
1. Maven build
2. Git
3. TDD
4. BDD
5. DDD
6. 敏捷方法
对于这些技术,我的建议是,不需要精通,但需要了解他们的概念。
11. 学习其他编程语言
现在很多资深的程序员已经不仅仅掌握一门语言,他们在日常中用Python处理数据,Golang做微服务开发,用node做后端的测试工具……
成为一个多语种程序员已经是大势所趋了,我上面提到的三种语言可以选择1-2门去尝试学习一下。
以上就是一个从Java初级开发者进阶高级开发者的学习路线,学习的过程需要极大的耐心和大量的代码练习,希望大家都能坚持下去,祝大家学习顺利!