2021年,Java从入门到升仙的书单推荐,附带读书笔记
2021年,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,那么本书应该是必须了;这本书中贴了很多的源码,要想看懂这本书的话还必须跟着书中的内容一起断点跟踪源码才行;
看书需要带着目的性去看,这本书建议抓住几个核心的问题在去看:
dubbo的SPI机制,如何实现的动态加载,IOC和AOP dubbo的服务暴露过程? dubbo的服务发现过程? dubbo的服务调用过程? 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
相应的我还写了这个框架的开发文档:
00 深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc) 01 SmartMVC总体架构规划 02 RequestMappingHandlerMapping初始化过程 03 拦截器HandlerInterceptor 04 HandlerMapping获取对应的Handler 05 参数解析器HandlerMethodArgumentResolver 06 返回解析器HandlerMethodReturnValueHandler 07 Handler执行器InvocableHandlerMethod 08 实现RequestMappingHandlerAdapter 09 视图InternalResourceView、RedirectView 10 视图解析器ViewResolver 11 DispatcherServlet实现doDispatch来完成请求逻辑 12 全局异常处理器HandlerExceptionResolver 13 核心配置类WebMvcConfigurationSupport 14 SmartMvc与SpringBoot集成(一) 15 SmartMvc与SpringBoot集成(二) 16 SmartMvc项目实战
第四阶段、修炼内功
推荐书籍1:《算法图解》
本书的例子图文并茂,以让人容易理解的方式阐释了算法;书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
看完本书可以对一些常见的经典算法做一个了解,哪种算法解决哪些问题;
推荐书籍2:《算法第四版》
这本书也可以算得上是算法书籍中的不朽制作来,作者在讲解每种算法都是采用的循序渐进的方式,提出问题解决问题,再提出问题在解决这种方式直至得到最优的算法; 作者全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,
提供了算法的实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。
本书总共600多页,而且看算法本书也比较烧脑,如果想要快速的了解本书的内容,大家可以先看我看完本书之后写的一些文章:
老哥是时候来复习下数据结构与算法了 如何检测社交网络中两个人是否是朋友关系(union-find算法) 常见的初级排序算法,这次全搞懂 死磕归并排序算法 快速排序算法实现及优化 原来实现优先级队列如此简单 图解堆排序 基于数组或链表实现Map 基于二叉树实现Map 重点推荐:硬核图解红黑树并手写实现 基于拉链式和线性探测式散列表实现Map 图算法系列之无向图的数据结构 图算法系列之深度优先搜索(一) 图算法系列之深度优先搜索(二) 图算法系列之计算图中最短路径
推荐书籍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