分享一些 Java 无关基础方面的书籍

我的认为看书有两个点好处:

1. 能出版出来的书必定是通过反复思考,雕琢和审核的,所以从专业性的角度来讲,一本好书的价值超其余资料java

2. 对着书上的代码本身敲的时候方便程序员

“看完书以后再次提高自个人最好途径是看一些相关的好博文”,我我的认为这是学习的第二步,由于一本书每每有好几百页,好的博文是本身看书学习以后的一些总结和提炼,对于梳理学习的内容不少好处,固然这些不是本身的学习方法,就不在扯下去了。面试

不少程序员们每每有看书的冲动,但不知道看哪些书,下面我就给各位的 Java 的程序员们推荐一些好书(每本书都有加粗),其中我绝大多数都是我本身平时再看的书,对于我平时都的书作一个次小总结和读后感把。算法

首先推荐的不是一本书,而是一个博客,也是咱们博客园另一位博友 java my life。数据库

目前市面上讲解设计模式的书不少,虽然我前面讲了看书是最好的,可是对设计模式感兴趣的朋友们,我推荐的是这个博客。这位博友的设计模式讲得很是很是好,我认为 90% 的内容都是没有问题且很值得学习的,其讲解设计模式的大致路线是:编程

  1. 随便开篇点明该设计模式的定义设计模式

  2. 图文并茂讲解该设计模式中的结构缓存

  3. 以详细的代码形式写一下该种设计模式的实现安全

  4. 补充内容性能优化

  5. 讲解该设计模式的优缺点

对于一个设计模式咱们关注、学习的知识点,不就是上面这些吗?

不过我要重点提醒一下网友们,同一种设计模式的写法有多种,并非说只有按某种写法来写才是这种设计模式。比方说适配器模式,咱们关注适配器模式必定要关注 的是什么是适配器模式不是怎么写适配器模式,不要认为某段代码不是按照适配器模式的写法写下来的它就不是适配器模式了,记住这一点,你在学习设计模式的时 候必定会对代码中用到的设计模式有更深刻的理解。

1、《深刻理解 Java 虚拟机:JVM 高级特性与最佳实践》

若是你不知足于作一个只会写 if…else…的 Java 程序员,而是但愿更进一步,我随便举几个例子吧:

一、了解 Java 代码的底层运行机制

二、定位性能问题

三、对整个系统进行性能调优

四、解决各类奇奇怪怪的线上线下问题

五、更加高级别的,为本身的项目量身定作一款适合本身项目的虚拟机

那 么 Java 虚拟机是你必学的一门技术。《深刻理解 Java 虚拟机:JVM 高级特性与最佳实践》做者是周志明,这本书能够说是国内写得最好的有关 Java 虚 拟机的书籍,近半年,前先后后这本书我起码看了有 5 遍。国内写虚拟机的书除了这本,其实还有一些其余的,我也买过,不过粗略看下来,不少内容也是《深刻理 解 Java 虚拟机:JVM 高级特性与最佳实践》此书里面的。

另外值得一提的是,《深刻理解 Java 虚拟机:JVM 高级特性与最佳实践》这本 书,有电子版的,网上搜一下就能下载到了。不过建议有兴趣的朋友仍是去买书看,电子版本下载到的通常是比较老的版本,相比最新修订版的《深刻理解 Java 虚拟机:JVM 高级特性与最佳实践》,有不少做者新补充的知识点是没有的。

2、《HotSpot 实战》

全部的 Java 虚拟机都是遵循着 Java 虚拟机规范来的,市面上的 Java 虚拟机几十款,《深刻理解 Java 虚拟机:JVM 高级特性与最佳实践》一书里面讲的虚拟机并不针对某种特定的虚拟机,而是从 Java 虚拟机规范的角度来说解 Java 虚拟机。

咱们平时使用的乃至商用的大多数 Java 虚拟机都是 Sun 公司的 HotSpot,你们 cmd 进入命令行,使用”java -version”命令就能够看到了。若是但愿在 Java 虚拟机规范的基础上更加深刻地去理解虚拟机的一些细节是怎么实现的,就能够看一下 《HotSpot 实战》一书,做者是陈涛。不过因为 HotSpot 的源码都是 C/C++ 写的,因此要求读者有很是好的 C/C++ 基础,若是对这两门语言不 是很熟悉的朋友,看这本书可能对你帮助不是很大。

最后提一句,若是有兴趣的朋友,不妨先去网上下载一个 openJDK,HotSpot 的源码就在里面。

3、《Java 并发编程实战》

这本书经常被列入 Java 程序员必读十大书籍排行榜前几位,不过我的不是很推荐这本书。

《Java 并发编程实战》做者是 Brian Goetz,怎么说呢,这本书前先后后我也看了两遍左右,我的感觉是:

一、文字多代码少

二、讲解多实践少

我 以为这可能就是老外写书的特色吧,由于 Java 是北美国家(加拿大、美国)开发和维护的,因此老外对 Java 方方面面的理论知识体系都掌握得是很是清楚和 透彻的。翻开这本书看,多线程什么用、什么是死锁、什么是竞争、什么是线程安全等等,方方面面的知识点都用大量的文字篇幅讲解,难免让人感受十分枯燥,也 难让读者有实质性的进步。我这本书看了两遍也属于一目十行意思,有兴趣的地方就重点看一下。

不管如何,做为一本经常位于 Jva 程序员必读十大书籍排行榜前几名的书,仍是必定要推荐给你们的。

4、《Java 多线程编程核心技术》

《Java 多线程编程核心技术》做者高洪岩。想要学习多线程的朋友,这本书是我大力推荐的,个人我的博客里面二十多篇的多线程博文都是基于此书,而且在这本书的基础上进行提炼和总结而写出来的。

此书和《Java 并发编程实战》 相反,这本书的特色是大篇幅的代码 + 小篇幅的精讲解,可能这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、 Reentrant、Timer 等等都用详细的代码进行了讲解,并且每一个大知识点下的多个小知识点都会详细讲解到,很是有实践价值。

有兴趣的朋友们,我相信只要大家跟着这本书里面的代码敲、运行、思考,三步走,对于多线程的使用与理解必定会进几大步。

不 过这本书的缺点就是对于 Java 并发包下的一些类像 CountDownLatch、Semphore、CyclicBarrier、Future、 Callable 等都没有讲到,重点的 CAS 和 AQS 也没有触及,重点类的实现原理也没有提。固然,这很深刻了,在学习了这本书以后若是能再去对这些知识 进行一些学习、研究的话,你必定会慢慢成长为一个很厉害的多线程高手。

5、《Effective Java 中文版》

这是惟一一本我没有买的书。初识这本书,是在个人博文 Java 代码优化(长期更新)里面,底下评论的时候有朋友提到了这本书,当时我说要去买,不过这两个月一直都没时间去逛书店,甚是遗憾,以后确定会找时间去买这本书的。

《Effective Java 中文版》的做者是 Joshua Bloch,这我的就很厉害了,他是谷歌的首席架构师,属于超级技术大牛级别了吧,呵呵。因为没有看过这本书,因此我很差发表评论,可是从这本书的知名度 以及其做者的来头来看(多提一句,这本书也是 Java 之父 James Gosling 博士推崇的一本书),我相信这必定是一本值得一看的好书。

好的代码是每一个 Java 程序员都应该去追求的,不是说我今天写一段好代码相比写一段烂代码对性能会有多大的提高,更多的应该是提高了代码的可读性以及能够规 避许多潜在的、未知的问题,避免代码上线以后出问题而花时间去维护—- 不管从时间成本、人力成本仍是风险成原本说,这都是很是高的。

6、《深刻分析 Java Web 技术内幕》

《深刻分析 Java Web 技术内幕》,做者许令波,淘宝工程师。

这本书我用一个字归纳就是:全。真的很是全,HTTP、DNS、CDN、静态化、Jetty、Tomcat、Servlet、Spring、 MyBatis 等等,什么都有,涉及知识面很是广,但又不像专门精讲某个知识点的书籍同样讲得很是深刻,感受这本书就是尽可能去用短的篇幅讲清楚一些 Java Web 使用到的技术的内幕,让读者对这些知识点的技术内幕有一个理性的认识。

不过,尽管每一个知识点的篇幅都很少,可是重点都基本讲到了,是一本让人真正有收获的书。若是想进一步了解这些技术的技术内幕,就要本身去买相关书籍或者本身上网查资料了,有种抛砖引玉,或者说师傅领进门、修行在我的的感受。

7、《大型网站技术架构 核心原理与案例分析》

一个字评价这本书,屌;两个字评价这本书,很屌;三个字评价这本书,很是屌。呵呵,好了,再说下去可能别人觉得我是水军了。

《大型网站技术架构 核心原理与案例分析》的做者是李智慧,原阿里巴巴技术专家。

Java 的大多数应用都是用在 Web 上的,如今只要稍微大型一点的 Web 应用,都必定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从 一个小型网站成长起来的?如何保证你的网站安全?分布式系统使用到了缓存,有哪些缓存?缓存的使用有哪些值得注意的事项?

关于分布式的知识点,都在这本书里面有体现,只有你想不到,没有他写不到,并且写得很是易懂,基本属于看一两遍,再记一些笔记就知道是怎么一回事儿了。多看 几遍,对分布式的理解必定会加深很多。并且里面不只仅是分布式的知识,还很是接地气地写了如何作一个好的架构师,其实我认为这不只仅是写给想作架构师的读 者看的,就是给读者一些建议,如何更好地提出意见、如何更让别人关注你的声音、如何看到他人的优势,入木三分,让人获益匪浅。

8、《大型网站系统与 Java 中间件实践》

《大型网站系统与 Java 中间件实践》做者曾宪杰,是淘宝的技术总监,算起来应该在阿里有至少 P8 的级别了吧。

这本书的部份内容和上面一本李智慧的《大型网站技术架构 核心原理与案例分析》有所重合,像分布式系统的演化、CDN、CAP 理论和 BASE 理论等等,这也更说明这些都是分布式系统或者说是一个大型网站重点关注的内容,看成一次再学习也不错。

本书要突出的重点是中间件三个字,中间件是分布式系统中一个很是重要的东西,其最重要的做用应该就是解耦,下降模块与模块之间的强依赖,不一样的模块之间的依赖度下降,即可以各自独立地开发本身的功能,这也能够说是软件工程发展的目标和驱动力。

所以,本书有一部分的内容就是基于中间件,详细讲解了中间件与 JMS 的各类知识,适合对分布式系统比较熟悉而且想要往中间件方面有必定研究的读者。

9、《从 Paxos 到 ZooKeeper 分布式一致性原理与实践》

《从 Paxos 到 ZooKeeper 分布式一致性原理与实践》,做者倪超,阿里巴巴工程师。

这本书是我最近在研读的一本书,和上面的《大型网站系统与 Java 中间件实践》同样,属于分布式组件的范畴,属于有些深刻的内容,固然也是我本身的我的兴趣。固然,若是有志向作一个出色的大型网站架构师、公司的技术总监之类,这些知识固然是必须掌握的。

本书从分布式系统基本理论开始讲起,讲到 Paxos 算法,最后慢慢引入到 Zookeeper,按部就班。固然,更多的我目前还不方便发表什么见解,由于这本书的第二张 Paxos 算法我都尚未弄懂(Paxos 算法确实有些难以理解和不太易懂),接下来的章节尚未看下去。

若是网友们所在的公司在使用 Zookeeper,而且你又对 Zookeeper 感兴趣想要研究一下它的原理的,这本书将是不二之选。

10、《MySQL5.6 从零开始学》

《MySQL5.6 从零开始学》,做者刘增杰和李坤。

做为一名 Java 程序员,我认为咱们千万不要以为数据库是 DBA 的事情,数据库对一个 Java 程序员来讲也是必须掌握的一门知识,丰富的数据库性能优化经验是一个顶尖程序员必备技能。

目前主流的数据库有 Oracle 和 MySQL,固然推荐你们的是 MySQL,主要缘由我认为有两点:

一、MySQL 相比 Oracle 更轻量级、更小、安装和卸载更方便,SQL 其实都是差很少的,若是想学数据库,学 MySQL 就能够了,在家里面能够本身方便地研究,若是你的公司使用 Oracle,只要再用对比学习法,关注一下 Oracle 和 MySQL 的差异便可

二、随着 2009 年阿里巴巴去 IOE 的运动的进行,目前国内的不少互联网公司都会选择 MySQL 做为它们使用的数据库,由于 MySQL 免费,因此既省钱又不须要出了问题就依赖甲骨文公司

MySQL 学习我推荐的是这本我本身学习看的《MySQL5.6 从零开始学》,我是以为挺好的这本书,书里面的知识点很细致、很全面,读者选择书籍的标准大多不就是这两点吗?

11、《Spring 源码深度解析》

Spring 这个框架作得太好了,功能太强大了,以致于不少开发者都只知 Spring,不知什么是工厂、什么是单例、什么是代理(我面试别人的真实体会)。这种功能强 大的框架内部必定是很复杂的实现,这就致使一旦你的程序使用 Spring,出了问题,多是 Error、多是 Exception、多是程序运行结果不 是你的预期的,出现诸如此类问题的时候,将会让你感到困惑,除了上网查资料或者问别人彷佛没有更好的解决办法。

研读 Spring 的源代码不失为一种很好的学习方法,我我的认为这有不少好处:

一、理解框架内部的实现以后,能够主动去解决问题,而不须要依赖别人

二、Spring 框架内部实现用到了不少设计模式,很好的代码设计思路,这将会对你写代码、对你理解设计模式有很大的提升

三、研究 Spring 框架将会大大加强你读代码的能力,我相信只要你能研究清楚 Spring 内部是如何实现的,其余任何一个框架的源代码都难不倒你

总而言之,我认为读代码的能力是一个普通的程序员和一个好的程序员之间最大的差异之一,前者只会把别人写好的东西拿来用,后者不只能用好,还清楚知作别人写好的东西底层是如何实现的,在出现问题的时候能够轻松解决。

Spring 源代码,我的推荐《Spring 源码深度解析》一书,真要研究透而且写清楚 Spring 源代码,恐怕三四本书都不够,做者在近 400 页 的篇幅中尽可能去讲解 Spring 源代码是如何实现的,殊为不易,尽管没法讲得彻底,可是相信做者的讲解配合上读者本身的研究,必定能够对 Spring 的实 现有更深度的理解。

后 记

以上就是我推荐给 Java 开发者们的一些值得一看的好书。可是这些书里面并无 Java 基础、Java 教程之类的书,不是我不推荐,而是离我本身学习 Java 基础技术也过去好几年了,我学习的时候看的什么也忘了,因此我不能不负责任地推荐一些我本身都没有看过的书给你们。非原创

相关文章
相关标签/搜索