# 目录

* [![](https://mmbiz.qpic.cn/mmbiz_jpg/XHh0SksQZPNiac1cDGFicIqDTr2PoAq2jmvD3JnkUOiaBzxgZDjh9pcicS0rCKcGaWvGVnm7ZH2LvlODKAtzANlDZg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)](#[]httpsmmbizqpiccnmmbiz_jpgxhh0sksqzpniac1cdgficiqdtr2poaq2jmvd3jnkuoiabzxgzdjh9pcics0rckcgawvgvnm7zh2lvlodkatzanldzg640wx_fmtjpegtpwebpwxfrom5wx_lazy1wx_co1)
* [前言](#前言)
* [1 计算机基础](#1-计算机基础)
* [2 Java编程](#2-java编程)
  * [Java基础](#java基础)
  * [设计模式](#设计模式)
  * [Java Web技术](#java-web技术)
  * [Java并发技术](#java并发技术)
  * [Java网络编程和服务器](#java网络编程和服务器)
  * [Jvm基础与调优](#jvm基础与调优)
* [3 Linux](#3-linux)
* [4 数据相关](#4-数据相关)
  * [关系数据库Mysql](#关系数据库mysql)
  * [缓存](#缓存)
  * [搜索引擎](#搜索引擎)
  * [大数据](#大数据)
* [6 分布式](#6-分布式)
  * [web架构](#web架构)
  * [分布式理论](#分布式理论)
  * [一致性问题](#一致性问题)
  * [分布式session](#分布式session)
  * [分布式缓存](#分布式缓存)
  * [分布式数据库](#分布式数据库)
  * [负载均衡](#负载均衡)
  * [消息队列](#消息队列)
  * [服务化](#服务化)
  * [虚拟化](#虚拟化)
* [微信公众号](#微信公众号)
  * [个人公众号：黄小斜](#个人公众号：黄小斜)
  * [技术公众号：Java技术江湖](#技术公众号：java技术江湖)


# ![](https://mmbiz.qpic.cn/mmbiz_jpg/XHh0SksQZPNiac1cDGFicIqDTr2PoAq2jmvD3JnkUOiaBzxgZDjh9pcicS0rCKcGaWvGVnm7ZH2LvlODKAtzANlDZg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

# 前言

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

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

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

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

**由于图片比较大，如果觉得看不清楚，可以点击原文链接查看原图。**

![](https://mmbiz.qpic.cn/mmbiz_png/XHh0SksQZPNiac1cDGFicIqDTr2PoAq2jmyib9OqSqW30WicXhC1xmMM8YIzUheD2icN0TAyaxBt5pUfyOzk8ZIiahog/640?wx_fmt=png)



# 1 计算机基础

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

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

# 2 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调优问题。

# 3 Linux

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

# 4 数据相关

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

## 关系数据库Mysql

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

## 缓存

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

## 搜索引擎

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

## 大数据

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

  

5 算法和数据结构

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

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

# 6 分布式

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

## web架构

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

## 分布式理论

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

## 一致性问题

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

## 分布式session

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

## 分布式缓存

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

## 分布式数据库

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

## 负载均衡

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

## 消息队列

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

## 服务化

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

## 虚拟化

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


# 微信公众号

## 个人公众号：黄小斜

黄小斜是跨考软件工程的 985 硕士，自学 Java 两年，拿到了 BAT 等近十家大厂 offer，从技术小白成长为阿里工程师。

作者专注于 JAVA 后端技术栈，热衷于分享程序员干货、学习经验、求职心得和程序人生，目前黄小斜的CSDN博客有百万+访问量，知乎粉丝2W+，全网已有10W+读者。

黄小斜是一个斜杠青年，坚持学习和写作，相信终身学习的力量，希望和更多的程序员交朋友，一起进步和成长！

**原创电子书:**
关注公众号【黄小斜】后回复【原创电子书】即可领取我原创的电子书《菜鸟程序员修炼手册：从技术小白到阿里巴巴Java工程师》

**程序员3T技术学习资源：** 一些程序员学习技术的资源大礼包，关注公众号后，后台回复关键字 **“资料”** 即可免费无套路获取。	

**考研复习资料：** 
计算机考研大礼包，都是我自己考研复习时用的一些复习资料,包括公共课和专业的复习视频，这里也推荐给大家，关注公众号后，后台回复关键字 **“考研”** 即可免费获取。	

![](https://img-blog.csdnimg.cn/20190829222750556.jpg)


## 技术公众号：Java技术江湖

如果大家想要实时关注我更新的文章以及分享的干货的话，可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站，作者黄小斜，专注 Java 相关技术：SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程，偶尔讲点Docker、ELK，同时也分享技术干货和学习经验，致力于Java全栈开发！

**Java工程师必备学习资源:** 一些Java工程师常用学习资源，关注公众号后，后台回复关键字 **“Java”** 即可免费无套路获取。

![我的公众号](https://img-blog.csdnimg.cn/20190805090108984.jpg)
