Java 之父:把这些 Java 内容掌握以后,你就可以上天了

学习路线图往往是学习一样技术的入门指南。网上搜到的 Java 学习路线图也是一抓一大把。

今天我只选一张图,仅此一图,足以包罗 Java 后端技术的知识点。所谓不求最好,但求最全,学习 Java 后端的同学完全可以参考这张图进行学习路线安排。

当然,有一些知识点是可选的,并不是说上面有的你都要会啦。我在复习秋招的过程中就是基于此图进行复习的,感觉效果还是不错的。

闲言少叙,我们还是看看这张图上都包含哪些有价值的信息吧。再次说明,本文只对路线图做一个简单地解读,仅供参考。大家可以根据自身情况来指定合理的学习计划,相信也会大有裨益。

Java 之父:把这些 Java 内容掌握以后,你就可以上天了

这部分内容是计算机相关专业同学的课程,但是非科班的小伙伴(譬如在下)就需要花时间恶补了。特别是计算机网络,操作系统,数据结构这三门课程。

至于编译原理,个人大概懂一点就行了,我也只看过简单的概念和状态机相关的内容,并不是特别重要。

这里的 Java 编程部分包含了很多内容。我们可以分别看看,大概归纳一下就是这几个部分。

Java 基础

这里的 Java 基础包括基本语法,集合类框架,以及一些高级特性,比如反射,注解等等。

Java 基础的知识点非常多,所以要真正搞懂也没有那么简单,另外,随着时间推移,一些新特性也需要得到我们的重视,比如时下流行的 JDK8。

设计模式

我一直觉得设计模式可以和 Java 基础一块学,所以我也把它放在这里。当然,一些真正使用到设计模式的地方,譬如 JDK 的集合类,IO 流等等,也需要你足够重视。

Java Web 技术

Java Web 技术包括 J2EE,以及 web 框架,乃至一系列常用的组件。

1 J2EE 主要包括的就是 servlet,jsp 这些比较复古的 web 开发组件了。虽然现在直接用它们的情况比较少,但是我们还是需要花一些时间去掌握它们的。

2 web 框架常用的就是 Spring 了,相应的,hibernate 和 mybatis 也需要了解一下。

3 同时,JavaWeb 开发时的常用类库,比如 jnuit 单元测试,log4j 日志工具,以及构建工具 maven,都属于我们要掌握的范畴。

4 最后,要注意的是,Web 相关的一些基本知识,比如 HTTP 协议,网络安全基础,也是我们要考虑的部分。

Java 并发技术

Java 的并发技术泛指 Java 的多线程技术,以及 JUC 包里的并发类,比如线程池,并发工具类,阻塞队列等等。

Java 并发技术完全可以独立出来学习,是 Java 进阶知识的一大重点。

Java 网络编程和服务器

这一块内容是 Java 中比较复杂但也很重要的一块内容。比如 BIO,NIO,AIO 的一些使用和原理,以及 tomcat 这类 web 服务器,甚至是 netty 这种网络编程框架,都是可以去了解和学习的内容。

Jvm 基础与调优

JVM 是提供 Java 程序运行的一个进程,学习 JVM 知识,也是我们的必经之路。除了看懂《深入理解 jvm 虚拟机》以外,我们还要学习的内容就是 JVM 调优,使用合适的工具诊断问题,最后解决问题。

这部分内容在面试中呈现的不仅仅是 GC, 内存分区,以及类加载器,也包括了我所说的 JVM 调优问题。

作为后台同学,常年被面试官问 linux 相关的问题,所以觉得学好 linux 还是蛮重要的,除了基本命令以外,最好还能了解一些 shell 脚本,甚至是内核相关的知识,这方面是我的一个弱项。

在这个路线图里,数据部分囊括了非常多的数据源,我们可以来看看都有哪些是我们需要掌握的。

关系数据库 Mysql

这个不必多说,人手都要会,不管是基础的 crud,索引,抑或是进阶的存储引擎,分布式方案等,我们都需要对应掌握。

缓存

如 Redis,memcache 一类的缓存,作为后端开发者的我们也需要对应掌握,当然,它们的高级特性,以及分布式方案,也是必备的知识点。

搜索引擎

基于 Lucene 的 solr,elasticsearch 这类搜索引擎,本质上也是数据源,但是并不是后端必备的内容,不过学一学也没有坏处啦。

大数据

海量数据处理的场景越来越多,大数据技术如 hadoop,storm 等也越来越火,但是大数据应用一般会由专业的大数据工程师来做,所以我们学一些基本内容也就足够了。

算法一直是校招同学面前的一座大山,作为后端同学来讲,除了基本的数据结构算法以外,也要会一些高级的算法,譬如 dp,搜索,贪心等等。

另外,通过 LeetCode 等题库来刷题的方式来巩固算法也是公认的好办法了。

最后一个部分,也是内容最多,覆盖面最广泛的部分了。分布式相关的技术实在太多了,我们这里也会做一下简单的归纳。

web 架构

先了解 web 架构的发展会对分布式的学习有更好的理解,毕竟架构的发展也对应着分布式技术的发展。

分布式理论

这部分内容包括分布式的发展演化,base 理论和 cap 理论等等,学习分布式技术之前,最好能对这部分概念有一定了解。

一致性问题

强一致性的解决方案:事务和锁,弱一致性的方案:消息队列。

分布式 session

一个常见的问题,也有多种解决方案

分布式缓存

和上面说的缓存一样,只不过这里侧重缓存的分布式方案

分布式数据库

这里指的数据库的分布式方案,也包括 hbase 这种分布式数据库。

负载均衡

负载均衡也是一个值得探讨的话题,一般我们讨论的是七层和四层负载均衡。

消息队列

消息队列是一个比较复杂的分布式组件,我们可以了解常用消息队列比如 amq,kafka 等的实现。

服务化

服务化的核心包括 rpc,服务注册中心等等。分布式服务相关技术也是后端同学必须掌握的内容。

虚拟化

虚拟化同样不是后端同学必须掌握的内容,只不过现在越来越多的服务部署方式使用的是 docker 和云服务的方式。所以了解一下也没有什么不好的。