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
这里也留下一篇我读了本书之后写的文章:
针对本书里面提到的大文件的断点续传知识点,我就写了一个开源项目:Java多线程下载大文件
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书看完之后做的笔记
当然还有很多的好书这里没有写到,欢迎在评论区讨论,写下对你影响最大的一本书
收藏等于白嫖,评论点赞才是真情!
xmind图片太大,上传之后比较模糊,需要高清图片的朋友欢迎关注我的公众号:
贝塔学Java
;找我要私发给大家
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。