降龙十八掌——《Java编程思想》
降龙十八掌是金庸武侠小说中最绝顶的武功之一,总共十八式,招数名字取自于《周易》。
降龙十八掌被扫地僧称为天下第一。动作简单无奇,但招招威力无穷,招式简明而劲力精深,精要之处全在运劲发力,凭强猛取胜,每出一掌均有排山倒海之力。
降龙十八掌修练门槛不高,是连郭靖等天资平庸者也可经由苦练而大成,但后面几招须内力深厚至一定程度方可习成。
《Java编程思想》这本书亦是如此。
这本书总共将近九百页,很多人因它的厚度望而却步,会心想不如直接看《x天学完Java》来得快。
然而这本书却没那么简单,一旦能够吃透,那么你会对很多java语法有更深的理解,并且在开发和代码设计上掌握更多用法。
-
原因:书中不仅仅会简单地罗列语法,而是夹杂了很多设计模式,以及一些非常棒的代码设计(注意,是设计思想,而不仅仅只是例子)。
印象最深的一章就是枚举类型那章,其他语法书可能就简单把enum的用法以及各种注意事项灌输给你 ,但是作者却用枚举做了依赖链、状态机、二路分发等事,告诉你有时候结构可以这样设计,你会发现你学的不仅仅是枚举,而是思想了。
-
各章节关联性很强,有一些代码例子,会在章节的递进中进行不断的改进,将java语法不断应用到代码中。
可以看得出里面的例子和章节编排,作者都是精心设计过,有点像在看一部小说的样子。
以一个很经典的数据生成器作为例子。
-
在第15章泛型中, 使用泛型定义了一个Generator接口,引出了泛型的常见用法。
-
接着第16章数组中,深入探讨了如何使用generator接口产生数组,进而引出泛型和数组在使用时的一些冲突和注意事项,加深理解。
-
第17章中高级容器中, 再使用引生成器来介绍如何更好地填充容器,能收获一个非常棒的小技巧。
- 如果希望快速学到java各种精细语法,这本书不适合,太厚了。
- 但你如果希望巩固自己的java基础的同时,扩展一些设计思想、编码思想上的能力,可以一看。至少我是五星推荐的。 豆瓣评论里有很多工作多年的大佬,重新翻读这本书,还能收获不少东西。
九阳真经——《深入理解java虚拟机》
倚天屠龙记中, 有一本秘籍叫《九阳真经》, 虽然只有内功,但神功大成后,却非世上的任何武功招式所能伤害。 张无忌掉落山崖后,就是靠着这本书,解决了 身上的寒毒。
《深入理解java虚拟机》这本书同样如此。
里面学到的东西往往没法直接在业务开发中直接用上。
有些人也会因为平时只接触业务代码,或者项目场景小,认为用不到。
但当你某天碰到java的内存溢出、编译优化、类加载等疑难杂症时, 只要心中有虚拟机的架构和原理,那么这些问题自然都有解决的方向,化解自然只是时间问题。
以第5章和第9章的案例实战为例,可以看出作者确实有丰富的实战经验,并且将相关的例子全部摆出来,你就会发现虚拟机原理离自己是非常近的。
因此这本是是java开发者必看的进阶书籍。
就书籍结构而言, 我概括为三个部分
jvm内存管理(1~5章)、 类的原理和加载机制(6~9章) 、 代码执行的编译和并发原理(10~13)
这三部分你可以按照需求来看, 例如和内存打交道比较多,就优先看内存管理。
如果最近涉及类加载的需求,或者总是被ClassNotFound之类的奇怪问题搞晕, 就可以先看类加载那块。
最后一章编译背后的故事, 相比前面2个部分不会那么常用, 但是可以加深你对泛型、并发之类场景背后的逻辑理解。尽量还是不要漏了,一定要看完。
看的时候,注意不要忽略里面的jvm参数的讲解, 未来很大概率会用到或者看到,最好都记录到自己的小本本里方便快速查阅。
【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241