java学习路线(超硬核Java学习路线图)
java学习路线(超硬核Java学习路线图)设计模式Java基础一、Java学习路线图1 计算机基础2 Java编程
之前写过很多次关于Java学习指南、Java技术路线图的文章。但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃。
于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来,做成一份非常硬核的Java学习指南 路线图,一篇文章搞定Java学习,360度无死角(可能)如果你们喜欢这类硬核的文章,以后我也会继续这么硬核下去的!不要忘了分享噢。
以下就是本文的主要内容,万字长文,你可悠着点看,拒绝到收藏夹吃灰!
一、Java学习路线图
1 计算机基础
2 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入门学习资源
这里主要推荐的是几个技术学习网站,基本上都是视频学习资源。
1 慕课网
慕课网是做得比较好的程序员学习网站了。里面主要提供的是视频学习资源,主要适用于入门,当然其中也有一些进阶的内容,不过一般都是收费的。
2 极客学院
极客学院是我最早用于视频学习的网站,当时主要是听室友推荐,看了一些之后发现确实还不错。不过比起慕课网,极客学院的内容可能少一点。
3 w3cSchool
这个想必不说大家也知道,最适合入门的学习网站之一,有很多的学习资源,但是也只适合入门,你可以在一天内看完一门语言或技术,大概了解怎么使用。
4 中国MOOC
以前我以为这个和慕课网一样,后来发现这个网站主要是做教育资源的,更像是在学校里上课,里面的很多资源都是高校老师提供的,所以想学习一些计算机基础理论知识可以看看这个网站。
5 网易云课堂&腾讯课堂
这两个网站大家也都知道,只不过他们不是专门做IT学习资源的,相对来说这方面的学习资源也会比较少一点。
Java后端技术专栏
对于校园招聘来说,最重要的还是基础知识。下面的博客专栏出自我的GitHub:
https://github.com/h2pl/Java-Tutorial
这些专栏中有一些文章是我自己原创的,也有一些文章是转载自技术大牛的,基本都是是我在学习Java后端的两年时间内陆续完成的。
总的来说算是比较全面了,做后端方向的同学可以参考一下。
深入浅出Java核心技术
https://Github.com/h2pl/Java-Tutorial
本专栏主要介绍Java基础,并且会结合实现原理以及具体实例来讲解。同时还介绍了Java集合类,设计模式以及Java8的相关知识。
深入理解JVM虚拟机
https://github.com/h2pl/Java-Tutorial
带你走进JVM的世界,整合高质量文章以阐述虚拟机的原理及相关技术,让开发者更好地了解Java的底层运行原理以及相应的调优方法。
Java并发指南
https://github.com/h2pl/Java-Tutorial
本专栏主要介绍Java并发编程相关的基本原理以及进阶知识。主要包括Java多线程基础,Java并发编程基本原理以及JUC并发包的使用和源码解析。
Java网络编程与NIO
https://github.com/h2pl/Java-Tutorial
Java网络编程一直是很重要的一部分内容,其中涉及了socket的使用,以及Java网络编程的IO模型,譬如BIO NIO AIO,当然也包括Linux的网络编程模型。
了解这部分知识对于理解网络编程有很多帮助。另外还补充了两个涉及NIO的重要技术:Tomcat和Netty。
JavaWeb技术世界
https://github.com/h2pl/Java-Tutorial
从这里开始打开去往JavaWeb世界的大门。什么是J2EE,什么是JavaWeb,以及这个生态中常用的一些技术:Maven,Spring,Tomcat,Junit,log4j等等。
我们不仅要了解怎么使用它们,更要去了解它们为什么出现,其中一些技术的实现原理是什么。
Spring与SpringMVC源码解析
https://github.com/h2pl/Java-Tutorial
本专栏主要讲解Spring和SpringMVC的实现原理。Spring是最流行的Java框架之一。
本专栏文章主要包括IOC的实现原理分析,AOP的实现原理分析,事务的实现源码分析等,当然也有SpringMVC的源码解析文章。
重新学习MySQL与Redis
https://github.com/h2pl/Java-Tutorial
本专栏介绍MySQL的基本知识,比如基本架构,存储引擎,索引原理,主从复制,事务等内容。当然也会讲解一些和sql语句优化有关的知识。
同时本专栏里也介绍了Redis的基本实现原理,包括数据结构,主从复制,集群方案,分布式锁等实现。
分布式系统理论与实践
https://github.com/h2pl/Java-Tutorial
本专栏介绍分布式的基本理论和相关技术,比如CAP和BASE理论,一致性算法,以及ZooKeeper这类的分布式协调服务。
在分布式实践方面,我们会讲到负载均衡,缓存,分布式事务,分布式锁,以及Dubbo这样的微服务,也包括消息队列,数据库中间件等等。
后端技术杂谈
https://github.com/h2pl/Java-Tutorial
本专栏涵盖了大后端的众多技术文章,当你在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/h2pl
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-Notes
技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、Java、Python、C
其中还包含了LeetCode和剑指offer题解,可以说是非常硬核;了。
硬核Java工程师面试指南
**https://github.com/Snailclimb/JavaGuide
【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。
https://github.com/h2pl/Java-Tutorial
【Java工程师面试复习指南】本仓库涵盖大部分Java程序员所需要掌握的核心知识,整合了互联网上的很多优质Java技术文章,力求打造为最完整最实用的Java开发者学习指南。
硬核开源,标星30k的硬核电商实战项目
https://github.com/macrozheng/mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
https://github.com/macrozheng/mall-learning
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/spring-boot-examples
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。
https://github.com/ityouknow/spring-cloud-examples
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-Course-Computer-Science-Chinese
这门《Computer Science》一共 40 集,都是英文的可能对英语不好的同学来说难度太大,但是不要慌,国内一些爱好者早已经把它们翻译成中文,也就是我在开头说的《计算机科学速成课》。这门课在 b 站上收获了 6.1 w 收藏,1.3w 点赞,1.3w 投币,在 GitHub 上同样也有 3.9k 的 star,妥妥的超级受欢迎的课!
一份来自亚马逊工程师的Google面试指南,GitHub收获9.8万星,已翻译成中文
https://github.com/jwasham/coding-interview-university/blob/master/translations/README-cn.md
作者Washam本人并非计算机学位,但在儿时就已经展现出对计算机的浓厚兴趣,从事的工作是关于web程序的构建、服务器的构建。
作为一名非专业人士转行,Washam已经算是相当成功。然而,他还是想去Google工作,真正地去理解计算机系统、算法效率、数据结构性能、低级别编程语言及其工作原理。
可对这些知识都不了解的他,怎么会被Google应聘呢?
于是他在网上收集了各类计算机专业知识,以及进入谷歌工作的员工分享的资源,并系统地整理了这些资料。
Washam强调,想去Google工作首先不要妄自菲薄。Google的工程师都是才智过人的。但是,就算是工作在 Google 的他们,仍然会因为觉得自己不够聪明而感到一种不安。
到这里,这份硬核干货就结束啦,如果这些内容还不能让你搞清楚怎么学习Java,那我只能一口老血。。。好啦,别忘了点个在看和分享哦,赞赏随意,希望对你有用。