耗时一个月,把Java学习路线、面试题资源和电子书资源都整理好了。
Java 从基础到微服务的学习路线,其中还包括科班知识、学习建议、后续的学习引导和相应的学习资源(视频、书籍、网站),还整理了Java 面试题,资源都在文末。
写这一篇文章的目的很明确,在个人能力的基础上给小伙伴一个循环渐进的 Java全栈学习路线。为小伙伴布好道路,让学习的路途尽可能的通畅。
在这里点缀下个人对编程的三个层次的理解:
-
从学会使用(知其表)
-
到深入架构设计原理(知其理)
-
再到自研技术(思想铸造)
而本文的学习路线只有前面两个层次,关于“自研层面”属于思想的再创作,恕我无能为力。
能力有限,如有不对,还望纠正。
0.知识广度和深度
对于从事技术开发行业,着重的是技术的应用,技术知识使用起来才能实现它的价值。技术知识的广度就像金字塔的底部,深度就像金字塔的高度,金字塔的底面积大小将决定金字塔的高低,知识面的广度决定深度,深度将决定你在这行业能不能混的好的基础,如果你是做技术的话。
广度:可通过不断学习新技术来拓宽;
深度:基于已有知识深入研究其奥妙。
在这学习路线一开始就先拓宽技术知识面,着重技术的基础使用;后续再深入学习,学习其中的架构设计原理,理解设计者的核心思想,从而提高知识的深度,不至于只知其表不知其理。深入学习后渐渐地就会感受到编程思想带来的质变,是编程能力提高最关键的一步,也是迈进“自研层面”的第一步。
每阶段都配有学习网站和相应书籍,还有阶段项目巩固所学知识。
1.第一部分:Java基础
必须理解面向对象编程,并掌握Java基础知识怎么使用,通过Java编程语言实现一些功能。比如:实现程序和文本的读写(内存和磁盘的交互),简单的多人聊天室(客户端和服务端的交互)。
领悟两点:
第一点:有了这些基础,你可以尝试看看源码(比如:String类的源码),部分源码看得懂了,可能比较费劲。
第二点:所有的服务端编程语言都具备IO流、网络编程、多线程等等这些基础能力,掌握一门编程语言基础对于学习其他编程语言基础那就简单多了。
2.第二部分:MySQL基础
掌握命令的方式操作MySQL 的基础使用;通过JDBC 技术实现对MySQL数据库数据的增删查改。
3.第三部分:JavaWeb
前面两部分是学习Java应用的开发,这部分开始学习Java的web系统开发,主要学习JavaWeb 基础和前端基础知识。学习完这部分,可以基于JavaWeb开发网站、管理系统等,比如:基于JavaWeb的后台管理系统、音乐网站。但是目前直接使用JavaWeb 基础技术开发web系统的很少,一般都是使用框架技术快速开发安全又美观的系统。所以接下来学习主流框架技术。
4.第四部分:主流框架和技术
框架技术主要分为前端和后端框架,目前国内前端以Vue全家桶为主,整合各种框架来完成前端开发;后端以SSM框架技术为主,整合其他框架来完成后端开发。开发框架的主要作用是避免重复造轮子,提高开发效率,降低运维难度,降低人员成本,降低项目风险等等。
学到这里应该知道一些网站架构模式:分层模式,集群模式,缓存模式。
-
分层模式:常见的有MVC,MVVM,7层的网络通信协议等等。
-
集群模式:多台服务器部署相同的应用构成一个集群,并通过负载均衡设备共同对外提供服务,提高可用性和并发数。
-
缓存模式:使用缓存技术提高系统性能。
学习这些模式的使用带来新的问题
-
集群模式带来的新问题,如:有/无状态服务。
-
缓存模式带来的新问题,如:缓存穿透。
-
通过缓存模式解决集群模式带来的新问题,如:会话记录。
先学会框架的使用,再通过阅读源码、相关文档来掌握框架中使用到的编程思想、编程技巧和架构设计,最后在开发的过程中是否能使用上这些编程思想、编程技巧和架构设计。
5.第五部分:回顾并进阶
这部分主要是进阶之前的学习内容和学习更多技术,这都是分布式功能实现需要用到的基础技术。当业务服务变得越来越复杂,部署的服务也越来越多,服务之间错综复杂,难于管理时,就需要自动化的东西替代人类劳动力去解决这一系列问题,所以下个部分内容就是学习分布式服务治理和微服务知识。
6.第六部分:微服务篇
学习各种各样的技术来解决分布式带来的新问题,这些技术的实现都是为了治理错综复杂的业务服务,并提高业务响应速度,服务可用性,性能,扩展性和安全性等等。
7.编程基础的扩展--科班知识(内功)
这一部分的学习是枯燥的,是要掉头发的,但又是必须学习的。关于必学的内容都放前面了,尤其是软件工程、计算机网络、操作系统、数据结构和算法。
8.学习更多
不断学习成长,往更高处走。这只是抛砖引玉,真的要深入学这几本书还真不够。比如架构设计,要从程序员走向架构师,这必须得学;想了解更多有关“云技术”,可以到阿里等各大云平台的开发者社区学习等等。这个就看自己的选择了。
9.学习的一些建议
以上是个人的一些建议。在这里给爱拖延的小伙伴一个行之有效的建议:别干想,行动起来。
10.面试篇
面试资源主要都是来源于网络,做了分类整理,也将部分不易于阅读的处理了(很费时间……)
比如:
处理前:朦胧和挡住了部分内容
处理后:
11.总结
从Java基础到微服务的学习路线和相应的电子书,都已经分享到GitHub,
GitHub链接:https://github.com/yuantingyue/JavaLearningRoutes-Books
后续会不断完善学习路线和学习资源,分享更多的知识和更多资源,一起成长,共勉🤝
想获得最新消息可关注WX公众号:Java全栈布道师
原创不易,转载指明出处,违者必究!!!