超硬核Java学习路线图学习资源实战项目汇总看完以后不用再问我怎么学Java了

2次阅读

共计 9524 个字符,预计需要花费 24 分钟才能阅读完成。

之前写过很多次关于 Java 学习指南、Java 技术路线图的文章。但是总还是有小伙伴来问我,Java 怎么学,项目怎么做,资源怎么找,真是让人头秃。

于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来,做成一份非常硬核的 Java 学习指南 + 路线图,一篇文章搞定 Java 学习,360 度无死角(可能)如果你们喜欢这类硬核的文章,以后我也会继续这么硬核下去的!不要忘了分享噢。

以下就是本文的主要内容,万字长文,你可悠着点看,拒绝到收藏夹吃灰!

一、Java 学习路线图

1 计算机基础

Java 编程

Java 基础

设计模式

Java Web 技术

Java 并发技术

Java 网络编程和服务器

Jvm 基础与调优

3 Linux

4 数据相关

关系数据库 Mysql

缓存

搜索引擎

大数据

5 算法和数据结构

6 分布式

大型网站架构

分布式理论

一致性问题

分布式 session

分布式缓存

分布式数据库

负载均衡

消息队列

服务化

虚拟化

二、硬核 Java 学习资源清单

Java 入门学习资源

Java 后端技术专栏

Java 工程师书单

技术社区推荐

技术大牛推荐

三、硬核 Java 实战项目清单

标星 10w+ 超级硬核的技术面试指南

硬核 Java 工程师面试指南

硬核开源,标星 30k 的硬核电商实战项目

技术博主【纯洁的微笑】springboot 和 springcloud 入门 demo

牛客网中级项目课和高级项目课

B站收藏 7.1w+!GitHub 标星 5.1k+!这门神课拯救了我薄弱的计算机基础

一份来自亚马逊工程师的 Google 面试指南,GitHub 收获 9.8 万星,已翻译成中文

一、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 调优问题。

3 Linux

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

4 数据相关

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

关系数据库 Mysql

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

缓存

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

搜索引擎

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

大数据

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

5 算法和数据结构

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

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

6 分布式

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

大型网站架构

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

分布式理论

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

一致性问题

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

分布式 session

一个常见的分布式解决方案,很实用。

分布式缓存

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

分布式数据库

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

负载均衡

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

消息队列

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

服务化

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

虚拟化

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

二、硬核 Java 学习资源清单

学习 Java 和其他技术的资源其实非常多,但是我们需要取其精华去其糟粕,选择那些最好的,最适合我们的,同时也要由浅入深,先易后难。基于这样的一个标准,我在这里为大家提供一份 Java 的学习资源清单。

Java 入门学习资源

这里主要推荐的是几个技术学习网站,基本上都是视频学习资源。

1 慕课网

慕课网是做得比较好的程序员学习网站了。里面主要提供的是视频学习资源,主要适用于入门,当然其中也有一些进阶的内容,不过一般都是收费的。

2 极客学院

极客学院是我最早用于视频学习的网站,当时主要是听室友推荐,看了一些之后发现确实还不错。不过比起慕课网,极客学院的内容可能少一点。

3 w3cSchool

这个想必不说大家也知道,最适合入门的学习网站之一,有很多的学习资源,但是也只适合入门,你可以在一天内看完一门语言或技术,大概了解怎么使用。

4 中国 MOOC

以前我以为这个和慕课网一样,后来发现这个网站主要是做教育资源的,更像是在学校里上课,里面的很多资源都是高校老师提供的,所以想学习一些计算机基础理论知识可以看看这个网站。

5 网易云课堂 & 腾讯课堂

这两个网站大家也都知道,只不过他们不是专门做 IT 学习资源的,相对来说这方面的学习资源也会比较少一点。

Java 后端技术专栏

对于校园招聘来说,最重要的还是基础知识。下面的博客专栏出自我的 GitHub:

https://github.com/h2pl/Java-…

这些专栏中有一些文章是我自己原创的,也有一些文章是转载自技术大牛的,基本都是是我在学习 Java 后端的两年时间内陆续完成的。

总的来说算是比较全面了,做后端方向的同学可以参考一下。

深入浅出 Java 核心技术

https://github.com/h2pl/Java-…

本专栏主要介绍 Java 基础,并且会结合实现原理以及具体实例来讲解。同时还介绍了 Java 集合类,设计模式以及 Java8 的相关知识。

深入理解 JVM 虚拟机

https://github.com/h2pl/Java-…

带你走进 JVM 的世界,整合高质量文章以阐述虚拟机的原理及相关技术,让开发者更好地了解 Java 的底层运行原理以及相应的调优方法。

Java 并发指南

https://github.com/h2pl/Java-…

本专栏主要介绍 Java 并发编程相关的基本原理以及进阶知识。主要包括 Java 多线程基础,Java 并发编程基本原理以及 JUC 并发包的使用和源码解析。

Java 网络编程与 NIO

https://github.com/h2pl/Java-…

Java 网络编程一直是很重要的一部分内容,其中涉及了 socket 的使用,以及 Java 网络编程的 IO 模型,譬如 BIO,NIO,AIO,当然也包括 Linux 的网络编程模型。

了解这部分知识对于理解网络编程有很多帮助。另外还补充了两个涉及 NIO 的重要技术:Tomcat 和 Netty。

JavaWeb 技术世界

https://github.com/h2pl/Java-…

从这里开始打开去往 JavaWeb 世界的大门。什么是 J2EE,什么是 JavaWeb,以及这个生态中常用的一些技术:Maven,Spring,Tomcat,Junit,log4j 等等。

我们不仅要了解怎么使用它们,更要去了解它们为什么出现,其中一些技术的实现原理是什么。

Spring 与 SpringMVC 源码解析

https://github.com/h2pl/Java-…

本专栏主要讲解 Spring 和 SpringMVC 的实现原理。Spring 是最流行的 Java 框架之一。

本专栏文章主要包括 IOC 的实现原理分析,AOP 的实现原理分析,事务的实现源码分析等,当然也有 SpringMVC 的源码解析文章。

重新学习 MySQL 与 Redis

https://github.com/h2pl/Java-…

本专栏介绍 MySQL 的基本知识,比如基本架构,存储引擎,索引原理,主从复制,事务等内容。当然也会讲解一些和 sql 语句优化有关的知识。

同时本专栏里也介绍了 Redis 的基本实现原理,包括数据结构,主从复制,集群方案,分布式锁等实现。

分布式系统理论与实践

https://github.com/h2pl/Java-…

本专栏介绍分布式的基本理论和相关技术,比如 CAP 和 BASE 理论,一致性算法,以及 ZooKeeper 这类的分布式协调服务。

在分布式实践方面,我们会讲到负载均衡,缓存,分布式事务,分布式锁,以及 Dubbo 这样的微服务,也包括消息队列,数据库中间件等等。

后端技术杂谈

https://github.com/h2pl/Java-…

本专栏涵盖了大后端的众多技术文章,当你在 Java 后端方面有一定基础以后,再多了解一些相关技术总是有好处的。

除了 Java 后端的文章以外,还会涉及 Hadoop 生态,云计算技术,搜索引擎,甚至包括一些数据挖掘和 AI 的文章。

总的来说选取了一些不错的基础类文章,能让你对大后端有一个更直观的认识。

Java 工程师书单

我之前专门写了一篇文章介绍了 Java 工程师的书单,可以这里重点列举一些好书,推荐给大家。

《计算机网络:自顶向下》

计算机网络的学习可以用本书,这本从应用层讲到物理层,感觉这种方式学起来更轻松。

《图解算法》《啊哈算法》

这两部书籍非常适合学习算法的入门,前者主要用图解的形式覆盖了大部分常用算法,包括 dp,贪心等等,可以作为入门书,后者则把很多常用算法都进行了实现,包括搜索,图,树等一些比较高级的常用算法。

《剑指 offer》 这本书还是要强烈推荐的,毕竟是面试题经常参考的书籍,当然最好有前面基本的铺垫再看,可能收获更大,这本书在面试之前一般都要嚼烂。如果想看 Java 版本的代码,可以到我的 Github 仓库中查看。

《head first java》 这本书对新手很友好,适合有些基础再看收获可能会更大,学习 Java 不可多得的一本好书。

《Java 核心技术卷一》 这本书还是比较适合入门的,属于比较典型的 Java 技术教科书,当然,这种厚皮书要看完还是很有难度的。

《深入理解 JVM 虚拟机》 这本书是 Java 开发者必须看的书,很多 jvm 的文章都是提取这本书的内容。JVM 是 Java 虚拟机,赋予了 Java 程序生命,所以好好看看把,我自己就已经看了三遍了。

《Java 并发编程艺术》 这本书是国内作者写的 Java 并发书籍,比上面那一本更简单易懂,适合作为并发编程的入门书籍,当然,学习并发原理之前,还是先把 Java 的多线程搞懂吧。

《深入 JavaWeb 技术内幕》 这本书是 Java Web 的集大成之作,涵盖了大部分 Java Web 开发的知识点,不过一本书显然无法把所有细节都讲完,但是作为 Java Web 的入门或者进阶书籍来看的话还是很不错的。

《Redis 设计与实现》 该书全面而完整地讲解了 Redis 的内部运行机制, 对 Redis 的大多数单机功能以及所有多机功能的实现原理进行了介绍。这本书把 Redis 的基本原理讲的一清二楚,包括数据结构,持久化,集群等内容,有空应该看看。

《大型网站技术架构》 这本淘宝系技术指南还是非常值得推崇的,可以说是把大型网站的现代架构进行了一次简单的总结,内容涵盖了各方面,主要讲的是概念,很适合没接触过架构的同学入门。看完以后你会觉得后端技术原来这么博大精深。

《分布式服务框架原理与实践》 上面那本书讲的是分布式架构的实践,而这本书更专注于分布式服务的原理讲解和对应实践,很好地讲述了分布式服务的基本概念,相关技术,以及解决方案等,对于想要学习分布式服务框架的同学来说是本好书。

《从 Paxos 到 Zookeeper 分布式一致性原理与实践》 说起分布式系统,我们需要了解它的原理,相关理论及技术,这本书也是从这个角度出发,讲解了分布式系统的一些常用概念,并且带出了分布式一哥 zookeeper,可以说是想学分布式技术的同学必看的书籍。

《大数据技术原理与应用》 作为大数据方面的一本教材,厦大教授写的这本书还是非常赞的,从最基础的原理方面讲解了 Hadoop 的生态系统,并且把每个组件的原理都讲得比较清楚,另外也加入了 spark,storm 等内容,可以说是大数据入门非常好的一本书了。

技术社区推荐

学习 Java 后端两年的时间里,接触过很多的资料,网站和课程,也走了不少弯路,所以这里也总结一些比较好的资源推荐给大家。

0 CSDN 和博客园

主流的技术交流平台,虽然广告越打越多了,但是还是有很多不错的博文的。

1 importnew

专注 Java 学习资源分享,适合 Java 初学者。

2 并发编程网

主要分享 Java 相关进阶内容,适合 Java 提高。

3 推酷

一个不错的技术分享社区。

4 segmentfault

有点像国内的 Stack Overflow,适合交流代码问题的地方。

5 掘金

一个很有极客范的技术社区,强推,有很多技术大牛分享优质文章。

6 开发者头条

一个整合优质技术博客的社区,里面基本上都是精选的高质量博文,适合技术学习提升。

7 v2ex

一个极客社区,除了交流技术以外还会有很多和程序员生活相关的话题分享。

8 知乎

这个就不必多说了。我在知乎上也有 Java 技术和校招的专栏,有兴趣的同学可以看看:

https://www.zhihu.com/people/…

9 简书

简书上有些技术文章也很不错,有空大家也可以去看看。

10 Github

有一些 GitHub 的项目还是非常不错的,其中也有仓库会分享技术文章。

我的 GitHub:https://github.com/h2pl

技术大牛推荐

1 江南白衣

这位大大绝对是我的 Java 书单启蒙导师,他推荐的 Java 后端书架让我受益匪浅。

2 码农翻身刘欣

一位工作 15 年的 IBM 架构师,用最浅显易懂的文章讲解技术的那些事,力荐,他的文章帮我解决了很多困惑。

3 CoolShell

陈皓老师的博客相信很多人都看过,干货很多,酷壳应该算是国内早期技术人里最有影响力的个人博客之一了。

4 廖雪峰

学习 Git 和 Python,看它的博客就够了。

5 HollisChuang

阿里一位研发大佬的博客,主要分享 Java 技术文章,内容还不错。

6 梁桂钊

阿里另一位研发大佬,博客里的后端技术文章非常丰富。

7 chenssy

这位大佬分享的 Java 技术文章也很多,并且有很多基础方面的文章,新手可以多看看。

8 Java Doop

一位魔都 Java 开发者的技术博客,里面有一些不错的讲解源码的文章,数量不是很多,但是质量都挺不错的。

三、硬核 Java 实战项目清单

给你们安利了 Java 学习路线图和一些学习资源之后,接下来就是最劲爆的实战项目清单了。毕竟学了那么多基础和理论知识后,最终还是要落地到项目中,才能算是一个合格的 Java 工程师。

这里安利的这些项目,基本上都是 GitHub 上的开源项目,包含了很多实战类的硬核项目,比如电商,分布式这类的常用技术方案,除此之外还有技术大牛的实战 demo,比如 springboot 和 springcloud 的 demo 和实现,当然了,我还会推荐一些 Java 面试方面的优质项目,这些项目虽然不是实战类的,但是对于准备求职面试的你来说,也是非常实用,干货满满的。

标星 10w+ 超级硬核的技术面试指南

https://github.com/CyC2018/CS…

技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、Java、Python、C++

其中还包含了 LeetCode 和剑指 offer 题解,可以说是非常硬核;了。

硬核 Java 工程师面试指南

**https://github.com/Snailclimb…

【Java 学习 + 面试指南】一份涵盖大部分 Java 程序员所需要掌握的核心知识。

https://github.com/h2pl/Java-…

【Java 工程师面试复习指南】本仓库涵盖大部分 Java 程序员所需要掌握的核心知识,整合了互联网上的很多优质 Java 技术文章,力求打造为最完整最实用的 Java 开发者学习指南。

硬核开源,标星 30k 的硬核电商实战项目

https://github.com/macrozheng…

mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于 SpringBoot+MyBatis 实现,采用 Docker 容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

https://github.com/macrozheng…

mall 学习教程,架构、业务、技术要点全方位解析。mall 项目(25k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了 SpringBoot2.1.3、MyBatis3.4.6、Elasticsearch6.2.2、RabbitMQ3.7.15、Redis3.2、Mongodb3.2、Mysql5.7 等技术,采用 Docker 容器化部署。

技术博主【纯洁的微笑】springboot 和 springcloud 入门 demo

https://github.com/ityouknow/…

about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。

https://github.com/ityouknow/…

Spring Cloud 学习案例,服务发现、服务治理、链路追踪、服务监控等, 以最简单、最实用为标准

牛客网中级项目课和高级项目课

牛客网的这两个项目课可以说是很接地气了,一个模仿头条一个模仿知乎,下面这两个项目是我跟着课程做的,可能还有一些问题。

https://github.com/h2pl/toutiao

仿照今日头条 toutiao.com 做的一个 Java web 项目,是一个信息流 + 社交的 web 应用。使用 SpringBoot+Mybatis+velocity 开发。数据库使用了 redis 和 mysql,同时加入了异步消息等进阶功能。本项目实现了一个比较完善的信息流 + 社交的网站。

https://github.com/h2pl/zhihu

仿照知乎做的一个 Java web 项目,是一个 sns+ 资讯的 web 应用。使用 SpringBoot+Mybatis+velocity 开发。数据库使用了 redis 和 mysql,同时加入了异步消息等进阶功能,同时使用 python 爬虫进行数据填充。

B站收藏 7.1w+!GitHub 标星 5.1k+!这门神课拯救了我薄弱的计算机基础

https://github.com/1c7/Crash-…

这门《Computer Science》一共 40 集,都是英文的可能对英语不好的同学来说难度太大,但是不要慌,国内一些爱好者早已经把它们翻译成中文,也就是我在开头说的《计算机科学速成课》。这门课在 b 站上收获了 6.1 w+ 收藏,1.3w+ 点赞,1.3w+ 投币,在 GitHub 上同样也有 3.9k+ 的 star,妥妥的超级受欢迎的课!

一份来自亚马逊工程师的 Google 面试指南,GitHub 收获 9.8 万星,已翻译成中文

https://github.com/jwasham/co…

作者 Washam 本人并非计算机学位,但在儿时就已经展现出对计算机的浓厚兴趣,从事的工作是关于 web 程序的构建、服务器的构建。

作为一名非专业人士转行,Washam 已经算是相当成功。然而,他还是想去 Google 工作,真正地去理解计算机系统、算法效率、数据结构性能、低级别编程语言及其工作原理。

可对这些知识都不了解的他,怎么会被 Google 应聘呢?

于是他在网上收集了各类计算机专业知识,以及进入谷歌工作的员工分享的资源,并系统地整理了这些资料。

Washam 强调,想去 Google 工作首先不要妄自菲薄。Google 的工程师都是才智过人的。但是,就算是工作在 Google 的他们,仍然会因为觉得自己不够聪明而感到一种不安。

到这里,这份硬核干货就结束啦,如果这些内容还不能让你搞清楚怎么学习 Java,那我只能一口老血。。。好啦,别忘了点个在看和分享哦,赞赏随意,希望对你有用。

觉得有用就点个在看吧!

正文完
 0