万字Java知识地图,助你成为Offer收割机

也是一名日本作者写的 。这本书对 HTTP 协议进行了全面系统的介绍,列举了很多常见通信场景及实战案例,相信读完会有恍然大悟的感觉 。书很薄,几天就可以读完,强烈推荐!
《TCP/IP详解卷1:协议》
计算机网络的经典教材,大部头书籍,很难啃 。建议挑重点看 。
最后安利一款工具,学习网络必备的抓包神奇:,如果你学网络没抓过包,那基本等于白学了(有点严重) 。
(2)操作系统
学什么?
作为一名在平时的工作中可能不会直接跟操作系统打交道,因为 JVM 帮我们屏蔽了众多差异 。但是要想学好 JVM,懂一点操作系统更有助于你深刻理解 JVM 工作原理 。
Java 学习者这部分的要求可以稍微放低,但是你如果是搞 C++的,那这部分可是你的重点 。
怎么学?
想要精通操作系统难度非常大,但是在面试中你要能讲出一些具体的操作系统知识,面试官会对你刮目相看 。
推荐一些视频学习资料:
B 站:麻省理工 MIT 6.828(无字幕):
操作系统(哈工大李治军老师)32讲(全)超清:
推荐书籍资料:
《深入理解计算机系统 CSAPP》
赫赫有名的 CSAPP,全称: :A ‘s。科班同学的圣经,哈哈,黑色大部头书籍,难啃 。
《现代操作系统 (第3版)》
操作系统领域的经典之作,因为是翻译过来的,遇到比较晦涩的先跳过,多读几遍才能消化 。
Java 入门
学什么?
Java 语言从诞生到现在已经有20多年了,从Tiobe排行榜上来看,Java 语言常年霸榜经久不衰,所以不要怕学完 Java 后突然不流行了,至少这几年Java 就业机会非常多 。
如果你有其他语言的基础,比如之前学过 C、C++等,那学起 Java 应该是非常容易的,也容易上手 。如果你没有语言基础,又不想了解太底层的东西,那学 Java 还是不错的 。至于说,光从语言层面上看,确实非常简单,估计你一周内就可以学会并且代码写的还不错,但是 Java 不一样,一周你只能简单了解一下语法,想写好代码几乎不可能 。另外 Go 语言势头很猛,大家也可以关注一下 。
一般来说 Java 入门你需要掌握下面这些知识点:
怎么学?
如果你是零基础,建议你可以找一些 Java 入门的视频看一下,网上视频鱼龙混杂,大家注意甄别 。推荐一个比较好的平台:B 站() 不是让你去看二次元的,里面有很多学习资源 。(嘿哈)
敲黑板啦:视频不要贪多,因为没有一个大牛是看视频看出来的 。看视频是别人将知识点往你脑袋里灌,最大的好处是能让你快速入门,如果你想学到更多,你需要的是自我学习,带有思考的自我学习 。
看书是一种高效的自我学习方式,推荐基本比较好的书:
《Java 核心技术卷I》
这本书建议作为Java 之旅的第一本书,涵盖的内容非常全,比起那些30天学会 Java 之类的书,这边书更加务实 。书中有些章节其实不用看,比如Swing GUI 的直接略过,因为用 Java 写桌面端应用已经过时了 。
《阿里巴巴 Java 开发手册》
大厂阿里巴巴出品的,这其实是一本 Java 编码规范,编码习惯从一开始就要养好 。
《Java 编程思想( In Java)》
这是一本非常非常经典的书,你要问搞 Java 的人如果没听过这本书那算是白学了,哈哈 。其实说实话这本书我试图看过几次,最终都没有看完,一个原因是它太厚了,另外我觉得讲得太啰嗦了,所以我现在拿来垫桌子,高度合适挺好的 。所以呢,建议新人不要一开始看这边书,不然你会怀疑人生还没入门就放弃了,就把它当做编程圣经,等你后面有经验了拿起来再翻翻吧 。
敲黑板了:学习编程要有耐心,不要急于求成,要打好基础 。也许你一个月两个月还在运行一些简单示例,这是正常的,多学习多思考 。
Java 高手进阶
学什么?
恭喜你终于Java 入门了,大牛和菜鸟的区别在于菜鸟永远止步于入门水平,而大牛已经找到新大陆了,翻过这几座山你离高手就不远了 。
Java 高手进阶需要掌握的东西非常非常多,这里列举一些核心知识点,必须全部掌握的 。这是 Java 面试高频考点,也是传说中 Java 八股文的一部分,面好了进入下一面,面不好回家等消息 。
怎么学?
Java 已经入门了,你都想进阶了,建议你不要再找视频看了,一边看书一边思考吧 。
《 Java》
书中列举了很多编程建议,其实就是告诉怎样去写好代码,你需要从能写代码(入门)过渡到会写代码,这本书值得一看 。如果你的编码经验比较少,那这边书你可以稍微往后延,因为看完了你可能没有感同身受 。
《Java8 实战》
都出来了为什么还要学 Java8 ?因为现在很多公司都还停留在 Java8,Java8是继Java5之后改动很大的一个版本,得好好学 。Java8之后的版本非常不给力,换一个 JDK 版本费时费力,收益也不明显,公司肯定不愿意动了 。这边书将 Java8所有的新特性都详细讲解了,非常推荐 。
《深入理解 Java 虚拟机 第3版》
周志明大神写的,非常非常经典,已经更新到第三版了 。Java 虚拟机也就是 JVM,JVM 是Java 面试必考的知识,不懂这个直接回家等消息吧 。这边书我看了很多遍,每次看完都有新的收获,墙裂建议大家看完 。
《Java 并发编程的艺术》
这是一本专门讲解Java并发的书,涉及到各种锁、常见安全的集合类,基本就是将 JUC(java.util.包的简称)里所有的内容覆盖了一遍,看完你一定有收获 。强烈推荐!
上面推荐的几本书可能不太容易读懂,建议多读几遍 。书中看不懂的地方可以在网上搜,多找一些优质的博客或者公众号看 。
至此 Java 语言特性基本学习完了,就算达不到高手的水平,你也在正轨上了 。
基础框架(SSM)
学什么?
学习 Java 语言特性可能比较枯燥,接下来可以学习基础框架动手做一些项目,比如 Java 领域非常流行的框架,这就是为 Java 后端量身定做的,非常好用 。

万字Java知识地图,助你成为Offer收割机

文章插图
在流行之前,还出现这样流行的框架,后面由于种种原因还是被打败了 。
大家在网上应该可以经常看到 SSM 的缩写,其实就是++的缩写了 。
你需要掌握以下这些:
怎么学?
学习 SSM 框架最好是动手完成一个简单的项目,建议跟着视频并且把代码敲出来,一来熟悉项目的开发流程,也可以给自己带来成就感 。
敲黑板:阶段性成就感非常重要,没有这个很容易放弃学习,所以要不定时给自己定个小目标,加加鸡腿啥的 。
有很多新手在做项目的时候非常纠结界面,作为一个 Java 后端程序员,你又不是全栈开发,纠结这个干什么,我的建议:要么不要界面只写接口,要么自己动手写点 html,不需要美观,实现功能即可 。
跟着视频做完项目之后需要干什么?答案是:深入理解框架原理 。会用框架并不代表你懂框架,作为一个有追求的程序员,懂原理是永远的必修课,谁让这一行太卷了呢,人无你有你最棒 。
推荐几本书:《 基础内幕》
首先声明一下这是一本讲解 源码的书,不是教你做项目的书 。如果需要深入理解的技术原理,这是一本非常推荐的书 。有点难啃,多读几遍 。
《 技术内幕》
是 ORM 框架的一种,在国内使用比较多,据说在国外喜欢用。这本书对的使用和基本原理都介绍比较清楚了 。
敲黑板:技术更新迭代很快,抓住技术的本质才能与时俱进 。
关于基础框架这部分,大神们的学习方法是:使用框架 -> 懂框架 -> 造轮子 。
微服务框架
学什么?
近些年微服务架构非常火,究其原因是因为传统的单体架构和面向服务的架构逐渐不能满足互联网快速迭代的需求 。微服务可以更容易提供持续继承和持续部署的能力,让产品更快速交付推向市场 。
面向服务的架构其实在五六年前就已经提出,期间经过了一段低潮期,泡沫散去后逐渐浮现了一些好用的框架,国外以为代表,国内以 Dubbo 为代表 。
和 Dubbo 有区别但是很多基本原理也是类似,大家学习的时候需要掌握技术的本质 。下面列举一些核心知识点:
怎么学?
和 Dubbo 在官网都有很详细的介绍文档:
看官网技术文档大家可能会很懵,但这些确实是最权威的资料,也是一手的 。
和 Dubbo 是这几年刚刚流行的技术,从目前看来相关书籍还是比较少,也缺少一些经典的书,我还是列几本,大家按需获取 。
《深入理解 Dubbo与实战》
Dubbo 最开始是阿里巴巴开源的,后面捐赠给 了 。建议大家读这本配合源码一起看 。
《 Cloud微服务实战》
读这本书之前你最好先学习和boot,不然会很懵 。另外这本书是2017年出版的,稍微显旧,大家注意分辨新旧特性 。
如果技术网站和书籍还不能满足你,建议你去搜一些视频学习,这里不做推荐以免认为是广告 。推荐搜索平台:B 站、慕课网、网易云课堂 。
敲黑板:微服务框架涵盖的内容非常多,也是有难点的技术,大家戒躁保持耐心 。
常用中间件
学什么?
最终用户并不直接使用中间件,换言之中间件不是大众消费类软件产品 。但是在大公司里中间件是不可或缺的,它是支撑大型网站架构的一些基础的组件和服务,所以非常非常有必要学 。
小百科 中间件()通常是指在一个大型分布式的系统中,负责各个不同组件()/服务()之间管理以及交互数据的 。
业界开源的优秀中间件非常多,通常会根据业务的需要在系统中引入若干,下面列举了一些常见的,都是必学的,非可选哈 。
怎么学?
每个中间件涵盖的内容都非常多,要想学精需要大量时间 。
Redis 中文官方网站:
当做字典学习 redis 常见命令
Kafka 官网:
官网:
Mycat 权威指南在线 PDF 版:
推荐几本相关的书:《Redis 设计与实现》
这时Redis 口碑比较好的一本书,书中详细讲解了 Redis 实现原理,如果你只是想学会怎么用,可以跳过一些章节 。
《深入理解Kafka:核心设计与实践原理》
这本书既适合新手入门扫盲也适合高手进阶,想知道怎么用看前四章即可,想深入学习可以从第五章开始看,写的非常好,推荐学习!
《分布式数据库架构及企业实践——基于Mycat中间件》
Mycat 相关的书非常少,这本书是16年写的,有些陈旧了,如果对 Mycat 非常感兴趣可以简单翻一翻,但是不是特别推荐 。
书看完了你还想深入学习,建议大家关注一下极客时间的两门课:胡夕:《Kafka核心技术与实战》,老师是 Kafka,很专业 。蒋德钧:《Redis核心技术与实战》
不过课程是付费的,手头紧的建议慎重哈 。免费资源网上也有,靠大家搜索了~
中间件的学习是一个漫长的过程,不仅需要很多理论知识还需要实践经验 。
比如你学 Redis 的时候,要思考五种基本数据类型各自使用场景、布隆过滤器是什么原理、用 Redis 怎么实现分布式锁,带着问题去学习效率非常高 。
比如你学 Kafka 消息队列,要对比常见消息队列的优缺点、Kafka 为什么吞吐量高、Kafka 会不会丢消息以及怎么解决 。
万字Java知识地图,助你成为Offer收割机

文章插图
比如你学数据库中间件,要想数据库为什么要分库分表、分库分表 ID 如果处理等等 。
数据库
学什么?
数据库非常重要,面试也是必考的,可以考的点非常多,可以考得很浅:问一下 SQL 使用,也可以考的很深:问索引和锁的实现原理 。下面列了一些常见的知识点 。
怎么学?
建议数据库零基础的同学还是要先学习一下数据库的基本理论,因为我看到很多人都是一上来就学 SQL,最终也只是会用而已,到后面 SQL 调优的时候就很迷茫了 。如果你只是想用一用数据库,这部分也可以跳过 。
关于原理部分有一本非常经典的教材《数据库系统概念》以供学习,经典书籍一般都比较难啃坑也比较厚,建议大家先看目录,挑重点看 。大学学过这本书的可以直接跳过了 。
有了一些理论后就可以开始学习 SQL 语法了,这里推荐一本《MySQL 必知必会》,一边看书一边对着电脑敲 。
当然面试大厂肯定会问一下比较难的东西,你需要搞懂索引的原理、事务 ACID、锁,问数据库这些东西必考哦!
MySQL 学习书籍清单:《数据库系统概念》
经典数据库教材,理解一些基本原理,可略看 。
《MySQL必知必会》
SQL 语法入门好书,推荐!
《MySQL技术内幕 : 存储引擎》
数据库进阶必看,理解存储引擎以及事务、锁、索引等原理 。
分布式架构
学什么?
分布式这一部分就是面试的加分项了,答好了面试官会觉得你技术功底深厚,答不好,只要你前面的基础还不错也能过 。所以呢,作为一个有追求的技术人,千万不要放过加分的机会 。
分布式相关的内容非常多,下面列举几个在项目中或者面试中经常会遇到的知识点:
怎么学?
这部分内容学好非常难,在很多书中都是轻轻带过,没有深入讲解原理,所以就不推荐书了 。
那怎么学呢?大家可以针对每个知识点到网上搜索优质的博客,后面我也会逐步更文讲解这些知识点,敬请期待,欢迎催更哟 。
必须掌握的工具软件
工欲善其事,必先利其器 。作为一个 Java 开发人员,你需要学习业界常用的软件,软件工具用得越熟你的编码效率越高,下班的时间可能越早(打工人太难了) 。
这些软件你要是用不好,那只能说明…… 你再多学学吧 。
学习资源网站列表汇总
(1)视频网站
(2)专栏
(3)
(4)技术博客:
(5)搜索引擎:
(6)知识问答:
(7)刷题:
(8)云笔记:
(9)在线画图:
学习常见问题(FAQ)
学了容易忘怎么办?
这是大家学习会遇到的头号大问题,怎么解决?重复学习 。
打个比方,假如你正在学习注解,突然发现了一个注解@,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@ 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了 。
从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步 。
人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍 。哪有那么多天才,他只是比你多看了几遍书 。
推荐这么多书都要看完吗?
当然不是!有一些书都是同类型的,作者写书的侧重点不一样,大家要学会挑重点看 。
拿到一本书,首先要把目录多看一遍,一般而言书的前几章都是介绍型的内容,如果你已经有了基础,可以直接跳到后面原理解析或者实战部分 。
需要学多久才能成为技术大牛?
学习无止境!
业界说法,通过不断努力学习,一到两年可以达到初级水平,三到四年达到中级水平,五年可以达到高级水平 。
实际上每个人的学习能力和精力不一样,时间参考意义不大 。
只要你在一个方向或领域有自己的建树,就可以叫你大牛;如果你在公司是技术骨干、技术专家、架构师,也可以称之为大牛 。
敲黑板:技术学习千万不要浮躁,谦卑一点多学一点,天外有天 。
现在 、Go 语言很火,要不要直接学它们?
不要纠结语言,语言只是工具 。今天 Go 很火,明天会有其他语言 。
【万字Java知识地图,助你成为Offer收割机】我有一个同学毕业去阿里写 Java,后面跳槽到深圳腾讯写 C++,现在又跳到字节跳动写 Go,在大佬面前这些语言只是语法不一样而已 。所以建议大家打好基础,答应我一定打好基础 。