学习路线图每每是学习同样技术的入门指南。网上搜到的Java学习路线图也是一抓一大把。前端
今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点。所谓不求最好,但求最全,学习Java后端的同窗彻底能够参考这张图进行学习路线安排。java
固然,有一些知识点是可选的,并非说上面有的你都要会啦。我在复习秋招的过程当中就是基于此图进行复习的,感受效果仍是不错的。python
闲言少叙,咱们仍是看看这张图上都包含哪些有价值的信息吧。再次说明,本文只对路线图作一个简单地解读,仅供参考。你们能够根据自身状况来指定合理的学习计划,相信也会大有裨益。mysql
这部份内容是计算机相关专业同窗的课程,可是非科班的小伙伴(譬如在下)就须要花时间恶补了。特别是计算机网络,操做系统,数据结构这三门课程。linux
至于编译原理,我的大概懂一点就好了,我也只看过简单的概念和状态机相关的内容,并非特别重要。程序员
这里的Java编程部分包含了不少内容。咱们能够分别看看,大概概括一下就是这几个部分。web
这里的Java基础包括基本语法,集合类框架,以及一些高级特性,好比反射,注解等等。面试
Java基础的知识点很是多,因此要真正搞懂也没有那么简单,另外,随着时间推移,一些新特性也须要获得咱们的重视,好比时下流行的JDK8。算法
我一直以为设计模式能够和Java基础一块学,因此我也把它放在这里。固然,一些真正使用到设计模式的地方,譬如JDK的集合类,IO流等等,也须要你足够重视。sql
Java Web技术包括J2EE,以及web框架,乃至一系列经常使用的组件。
1 J2EE主要包括的就是servlet,jsp这些比较复古的web开发组件了。虽然如今直接用它们的状况比较少,可是咱们仍是须要花一些时间去掌握它们的。
2 web框架经常使用的就是Spring了,相应的,hibernate和mybatis也须要了解一下。
3 同时,JavaWeb开发时的经常使用类库,好比jnuit单元测试,log4j日志工具,以及构建工具maven,都属于咱们要掌握的范畴。
4 最后,要注意的是,Web相关的一些基本知识,好比HTTP协议,网络安全基础,也是咱们要考虑的部分。
Java的并发技术泛指Java的多线程技术,以及JUC包里的并发类,好比线程池,并发工具类,阻塞队列等等。
Java并发技术彻底能够独立出来学习,是Java进阶知识的一大重点。
这一块内容是Java中比较复杂但也很重要的一块内容。好比BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是能够去了解和学习的内容。
JVM是提供Java程序运行的一个进程,学习JVM知识,也是咱们的必经之路。除了看懂《深刻理解jvm虚拟机》之外,咱们还要学习的内容就是JVM调优,使用合适的工具诊断问题,最后解决问题。
这部份内容在面试中呈现的不只仅是GC,内存分区,以及类加载器,也包括了我所说的JVM调优问题。
做为后台同窗,常年被面试官问linux相关的问题,因此以为学好linux仍是蛮重要的,除了基本命令之外,最好还能了解一些shell脚本,甚至是内核相关的知识,这方面是个人一个弱项。
在这个路线图里,数据部分囊括了很是多的数据源,咱们能够来看看都有哪些是咱们须要掌握的。
这个没必要多说,人手都要会,不论是基础的crud,索引,抑或是进阶的存储引擎,分布式方案等,咱们都须要对应掌握。
如Redis,memcache一类的缓存,做为后端开发者的咱们也须要对应掌握,固然,它们的高级特性,以及分布式方案,也是必备的知识点。
基于Lucene的solr,elasticsearch这类搜索引擎,本质上也是数据源,可是并非后端必备的内容,不过学一学也没有坏处啦。
海量数据处理的场景愈来愈多,大数据技术如hadoop,storm等也愈来愈火,可是大数据应用通常会由专业的大数据工程师来作,因此咱们学一些基本内容也就足够了。
5 算法和数据结构
算法一直是校招同窗面前的一座大山,做为后端同窗来说,除了基本的数据结构算法之外,也要会一些高级的算法,譬如dp,搜索,贪心等等。
另外,经过LeetCode等题库来刷题的方式来巩固算法也是公认的好办法了。
最后一个部分,也是内容最多,覆盖面最普遍的部分了。分布式相关的技术实在太多了,咱们这里也会作一下简单的概括。
先了解web架构的发展会对分布式的学习有更好的理解,毕竟架构的发展也对应着分布式技术的发展。
这部份内容包括分布式的发展演化,base理论和cap理论等等,学习分布式技术以前,最好能对这部分概念有必定了解。
强一致性的解决方案:事务和锁,弱一致性的方案:消息队列。
一个常见的问题,也有多种解决方案
和上面说的缓存同样,只不过这里侧重缓存的分布式方案
这里指的数据库的分布式方案,也包括hbase这种分布式数据库。
负载均衡也是一个值得探讨的话题,通常咱们讨论的是七层和四层负载均衡。
消息队列是一个比较复杂的分布式组件,咱们能够了解经常使用消息队列好比amq,kafka等的实现。
服务化的核心包括rpc,服务注册中心等等。分布式服务相关技术也是后端同窗必须掌握的内容。
虚拟化一样不是后端同窗必须掌握的内容,只不过如今愈来愈多的服务部署方式使用的是docker和云服务的方式。因此了解一下也没有什么很差的。
黄小斜是 985 硕士,阿里巴巴Java工程师,在自学编程、技术求职、Java学习等方面有丰富经验和独到看法,但愿帮助到更多想要从事互联网行业的程序员们。
做者专一于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得,以及自学编程和Java技术栈的相关干货。
黄小斜是一个斜杠青年,坚持学习和写做,相信终身学习的力量,但愿和更多的程序员交朋友,一块儿进步和成长!
原创电子书:
关注微信公众号【程序员黄小斜】后回复【原创电子书】便可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》这份电子书总结了我2年的Java学习之路,包括学习方法、技术总结、求职经验和面试技巧等内容,已经帮助不少的程序员拿到了心仪的offer!
英雄不问出处,编程不看出身。这里是自学编程爱好者的汇集地,也是程序员IT学习资源的藏经阁。点击关注,一块儿成为更优秀的程序员!
程序员3T技术学习资源: 一些程序员学习技术的资源大礼包,关注公众号【程序员江湖】后,后台回复关键字 “资料” 便可免费无套路获取,包括Java、python、C++、大数据、机器学习、前端、移动端等方向的技术资料。
关注公众号【程序员江湖】后回复「Java」、「Python」、「C++」、「大数据」、「算法」、「AI」、「Android」、「前端」、「iOS」、「BAT」、「校招」、「笔试」、「面试」、「计算机基础」、「LeetCode」 等关键字能够获取对应的免费程序员学习资料。