Java从入门到升仙的书单推荐,附带读书笔记

我的建议是看书一定要看经典书,刚才开始也可以配合一下简单的视频教程跟着一起学习,但是要提高肯定是看书,然后按照由浅入深的学习线路来学习(Java语言基础->Java语言进阶->分布式&存储->修炼内功)。

第一阶段、Java入门书单推荐

首先是语言基础,有了扎实的语言基础,才可能写出好的代码。

本阶段主要的学习内容:Java的语言基础、代码规范、能够熟练的使用常用的开发工具,对于开发工具的话,我还是强推Intellij IDEA, IDEA的激活插件可以去我的博客首页种找

推荐书籍1:《head first java》

在以前我学习Java的时候没有看过这本书,网友们给我的推荐的都是《Java编程思想第4版》,对于新手的我来说看的我差点被劝退;工作以后偶然一次机会看到来同事的桌上放了一本《Head First Java》,随意翻开看了一会就 吸引了我(如果入门的时候就看了这本书,我还能是现在这个吊样?)

虽然本书很厚,但是图文并茂看起来很就趣,很少有写编程语言的书籍能够把趣味性融合在一起,做游戏就可以学习一门技术,所以这本书很适合作为Java入门书籍;

  • 第一章主要介绍了 Java 的工作原理、发展简史、程序结构。
  • 第二章主要介绍了 Java 的面向对象,包括继承、覆盖等内容。
  • 第三章主要介绍了 Java 的变量。关键点:引用变量存储的是对象的地址(储存方式)、数组也是对象。
  • 第四章主要介绍了 Java 的方法。关键点:实参和形参、值传递和引用传递、== 和 equals()。
  • 第五章主要介绍了程序设计与实现的步骤。
  • 第六章主要介绍了 Java 的 API。关键点:ArrayList。
  • 第七章主要介绍了继承和多态。关键点:覆盖和重载。
  • 第八章主要介绍了接口和抽象类。关键点:超类 Object。
  • 第九章主要介绍了构造器与垃圾收集器。关键点:对象存储在堆中,对象引用在栈中;当对象失去最后一个引用变量时,它会被回收。第十章主要介绍了静态类、静态方法、静态变量。关键点:final、常量、数字格式化、日期表示法。
  • 第十一章主要介绍了异常处理。
  • 第十二章和第十三章,主要介绍了 GUI 和 Swing。关键点:事件处理机制。
  • 第十四章主要介绍了序列化和文件输入/输出。关键点:Serializable接口。
  • 第十五章主要介绍了网络 Socket 和多线程。
  • 第十六章主要介绍了集合和泛型。
  • 第十七章主要介绍了程序的打包和发布。
  • 第十八章主要介绍了远程服务调用。

学习永远都不能只停留在书本,在看完这本书之后就应该去实战一下,通常Java SE入门学习完之后就可以写一个坦克大战的游戏了

推荐书籍2:《Java编程思想》

这本书我在读大学的时候就买过一本,当时刚入Java坑,不知道看什么书,在网上搜到的推荐都是这本书,当时雄心勃勃计划把要这本书认真看完,看本书的过程还挺痛苦的,最终也没能完全看完;这本书足足有接近900页,我也不推荐完全 从头到位看,本书可以配合《head first java》一起看;而且本书的成书时间是2007年,使用的JDK1.5;

其实本书的作者在17年也有发布第五版,因为改名了,而且只有电子版,所以大家都不知道

推荐书籍3:《Maven实战》

本书是国内第一本公开出版的Maven相关的书籍,系统的讲解了Maven的安装、配置和基本使用方法,以便于初学者参考;

详细讲解了坐标和依赖、maven仓库、生命周期和插件、聚合与继承等Maven的核心概念,建议所有读者仔细阅读;

阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点等实用性较强的高级知识

现在的我们工作所能接触到的Java项目80%都是使用Maven构建的,所以这本书不得不看

推荐书籍4:《Git版本控制管理》

Git是一款免费、开源的分布式版本控制系统,现在已成为了分布式版本控制的主流工具,Github、Gitee都是使用的git;

《Git版本控制管理(第2版)》是学习掌握Git的最佳教程,总共分为21章,其内容涵盖了如何在多种真实开发环境中使用Git;洞察Git的常用案例、初始任务和基本功能; 如何在集中和分布式版本控制中使用Git;使用Git管理合并、冲突、补丁和差异;获得诸如重新定义变基(rebasing)、钩子(hook)以及处理子模块(子项目)等的高级技巧; Git如何与SVN版本库交互(包括SVN向Git的转换);通过GitHub导航、使用开源项目,并对开源项目做贡献。

推荐书籍5:《网络是怎样连接的》

本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。 目的是帮助读者理解网络的本质意义,理解实际的设备和软件,进而熟练运用网络技术。同时,专设了“网络术语其实很简单”专栏,以对话的形式介绍了一些网络术语的词源,颇为生动有趣

推荐书籍6:《图解Http》

好书不一定要厚,本书就是一本短小精干的一本好书,严谨细致地剖析了HTTP协议的结构;通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API

这里也留下一篇我读了本书之后写的文章:

《面试篇》Http协议

针对本书里面提到的大文件的断点续传知识点,我就写了一个开源项目:Java多线程下载大文件

Java实现大文件多线程下载,提速30倍!想学?我教你啊

Gitee仓库: https://gitee.com/silently9527/fast-download


第二阶段、Java语言进阶

推荐书籍1:《Effective Java中文版 第3版》

本书是经过作者实战总结出来的90条具有实用价值的经验规则;读本书可以不同从头到位通读,可以根据自己的兴趣选择不同的章节,章节与章节之间没有必然的联系;反正读过本书的人没有一个人说不好的;

推荐书籍2:《重构——改善既有的代码设计》

这本书依然是一本不朽的经典之作,如果你想要让自己在公司有不可替代性,建议仔细阅读本书中的坏代码味道,写出的代码保证只有你一个人能够看懂,绝对让公司离不开你。。。

我后来有重新翻读了本书,写了一篇简化条件表达式的文章: https://juejin.cn/post/6901814939833335821

推荐书籍3:《Java NIO 中文版》

本书先从操作系统层面由浅入深的逐步引出NIO中实现的关键概念,逐步的阐述了java nio原理以及运用过程中需要注意的细节点;

就程序员所面临的有代表性的I/O问题作了详尽阐述,并讲解了如何才能充分利用新的I/O特性所提供的各种潜能。您将通过实例学会如何使用这些工具来解决现实工作中常常遇到的I/O问题,并了解这些新特性如何对响应速率、可伸缩性和可靠性产生直接影响。

这本书中文版只有电子书,下面是我读这本书以及结合网上的一些文章做的总结

推荐书籍4:《Java并发编程的艺术》

并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,对并发编程有非常深入的研究,《Java并发编程的艺术》是他们多年一线开发经验的结晶。

内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题, 每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。

本书强烈建议精读,内容不多,总共200多页,但本书都是精华干货。这是我读这本书后做的脑图


第三阶段、分布式&存储

推荐书籍1:《MySQL是怎样运行的 : 从根儿上理解 MySQL》

《MySQL是怎样运行的:从根儿上理解 MySQL》采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。

为什么这个SQL语句执行得这么慢?为什么我明明建立了索引,但是查询计划显示没用?为什么IN查询中的参数一多就不使用索引了?为什么我的数据显示成了乱码?

这些问题不仅是工作中经常遇到的,也是在面试中的高频面试题,从豆瓣的评分就可以知道这本书内容不凡;不信? 可以先看下我的笔记

推荐书籍2:《Redis 深度历险:核心原理与应用实践》

《Redis 深度历险:核心原理与应用实践》分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。 基础和应用篇讲解对读者来说最有价值的内容, 可以直接应用到实际工作中; 原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界; 拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习; 源码篇让高阶的读者能够读懂源码,掌握核心技术实力。

这本书强烈建议准备想要换工作面试的同学看看,redis的面试题基本上逃不出本书。本书依然有写读书笔记

推荐书籍3:《Tomcat架构解析》

做Java的兄弟基本上离不开Tomcat,90%的公司应用服务都是使用的Tomcat,所以本书我们必须的看看; 这里我重点推荐第2、3、4、6章,其他章节可以简单了解,其 对本书我印象比较深的是递推式的对各个组件进行分解来阐述tomcat整体架构,这样更容易理解每个组件的实际作用;以及Tomcat在设计时考虑的扩张性。 由外到内:Server、Service、Connector及Engine(Host、Context、Wrapper);责任链的实现通过Pipeline和Valve、BasicValve;

推荐书籍4:《Tomcat内核设计剖析》

本书可以配合《Tomcat架构解析》一起看,前一本书从架构上整体去理解Tomcat的设计,而这本书中对Tomcat中的重要组件有比较细致的讲解,而且基本上都有配上几张图来很 形象的说明该组件是如何工作的。

推荐书籍5: 《深入理解Apache Dubbo与实战》

本书虽然评价不太高,但是是唯一一本dubbo评价最高的书籍,如果只是简单的使用dubbo,那直接看官网文档就可以了,如果要想深入到源码去理解dubbo,那么本书应该是必须了; 这本书中贴了很多的源码,要想看懂这本书的话还必须跟着书中的内容一起断点跟踪源码才行;

看书需要带着目的性去看,这本书建议抓住几个核心的问题在去看:

  1. dubbo的SPI机制,如何实现的动态加载,IOC和AOP
  2. dubbo的服务暴露过程?
  3. dubbo的服务发现过程?
  4. dubbo的服务调用过程?
  5. dubbo的整体架构?

如果要想理解dubbo底层的网络通信,还需要学习netty;netty相关的书籍我没看过,我就不推荐了,这里附上我在网上学习netty之后的笔记,Netty之所以受到这么多人的推崇, 还是因为这个框架确实很强,这个框架做的优化以及需要的知识也比较多;

这里我尤其要强调netty中的一个重点模块"高性能内存分配",理解了Netty的内存管理之后就可以理解redis的内存管理,它们两个的实现思路都是一样的,内存管理通常都是c语言来写的, 而Netty用java写来一个内存管理,Java程序猿也可以内存管理一探究竟

推荐书籍6: 《Spring源码深度解析》

讲Spring源码相关的书籍评价都不是很高,这里我推荐我看过的这本书,本书也不用全部看完,挑选自己有兴趣的来看,这本书通用也需要配合这代码调试来看,当初我在看这本书时主要看的内容是 IOC容器的启动过程、以及获取Bean的过程;Spring实现AOP的机制,以及Spring如何利用AOP实现事物?带着这些问题看书配合这断点调试;

推荐书籍7: 《看透Spring MVC》

本人在工作之后经历过struts2的没落,到SpringMVC的崛起;现在的工作环境SpringMVC几乎是必选框架之一,所以深入理解SpringMVC还是很有必要的

全面介绍Spring MVC的架构、原理、核心概念和操作,系统总结Spring MVC九大组件的处理以及常用的技巧和实践

本人再次重新阅读了SpringMVC的源码之后也写来SpringMVC相关的系列文章;想要深入理解框架莫过于实战手写一个,所以我手写来一个简易版的SmartMVC框架;

Github的仓库地址:https://github.com/silently9527/SmartMvc

相应的我还写了这个框架的开发文档:


第四阶段、修炼内功

推荐书籍1:《算法图解》

本书的例子图文并茂,以让人容易理解的方式阐释了算法;书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。 余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。

看完本书可以对一些常见的经典算法做一个了解,哪种算法解决哪些问题;

推荐书籍2:《算法第四版》

这本书也可以算得上是算法书籍中的不朽制作来,作者在讲解每种算法都是采用的循序渐进的方式,提出问题解决问题,再提出问题在解决这种方式直至得到最优的算法; 作者全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,

提供了算法的实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。

本书总共600多页,而且看算法本书也比较烧脑,如果想要快速的了解本书的内容,大家可以先看我看完本书之后写的一些文章:

推荐书籍3:《深入理解Java虚拟机 第三版》

搞Java的人,如果不了解JVM是不行的;如果学习JVM不看这本书是更不行的;

本书详细讲解了类加载机制、java内存原理、垃圾回收机制等知识。只有掌握了JVM,才能在实际生产环境遇到线上问题如GC频率过高、内存溢出等应对自如、还有应用系统JVM参数合理配置。

看完本书就可以对虚拟机有个比较深入的了解,此时可以配合一起看一下《Java虚拟机规范JAVA SE8版》,这本书详细的描述了Class类文件的规定,内存管理相关的规定比较少,基本都是有虚拟机实现者自行绝对

推荐书籍4:《虚拟机设计与实现 以JVM为例》

本书从一位虚拟机(VM)架构师的角度,以易于理解、层层深入的方式介绍了各种主题和算法,尤其是不同VM通用的主要技术。这些算法用图示充分解释,用便于理解的代码片段实现, 使得这些抽象概念对系统软件工程师而言具像化并可编程。书中还包括一些同类文献中较少涉及的主题,例如运行时辅助、栈展开和本地接口

本书可以配合《深入理解Java虚拟机 第三版》一起看,也能解答很多JVM中相关的问题,比如:面试经常问的锁升级,大多数的人都会说偏向锁、轻量级锁、重量级锁,如果在继续问什么是重量级锁,重量锁是如何实现的?顿时就懵圈了; 这种问题这本书可以帮助解答,以及wait、notify调用之后虚拟机都是如何实现的

推荐书籍5:《自己动手写Java虚拟机》

纸上得来终觉浅,绝知此事要躬行;

在看完《深入理解Java虚拟机 第三版》、《Java虚拟机规范JAVA SE8版》、《虚拟机设计与实现 以JVM为例》之后,我相信很多人对虚拟机里面的概念是如何实现的依然很模糊,比如说Java的多态是如何实现的?在执行main方法的时候加载class的细节是怎样的? 要解决这些心里的疑问,最好的方式动手自己干一个简单版的JVM;

本书是一本实战书籍,可以跟着这本书一起手动写一个简单版的JVM;这本书是有go语言写的,如果对go不熟悉的同学也可以采用Java语言; 我没有听错把Java语言也可以实现jvm? 是的,java可以实现jvm,相关的开源项目也有很多;可以自行到github上去搜索

这里贴上我对这几本JVM书看完之后做的笔记


当然还有很多的好书这里没有写到,欢迎在评论区讨论,写下对你影响最大的一本书

收藏等于白嫖,点赞才是真情!

需要电子书的朋友请到博客中过去找 原文链接:https://silently9527.cn/?p=96