写点什么

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

用户头像
Silently9527
关注
发布于: 5 小时前
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

用户头像

Silently9527

关注

公众号:贝塔学JAVA 2018.05.09 加入

Simple Programmer, Make the complex simple

评论

发布
暂无评论
Java从入门到升仙的书单推荐,附带读书笔记