书到用时方恨少,平时多读读书吧~!
1《大型网站技术架构 核心原理与案例分析》
rBEhV1I38YQIAAAAAAJ5G7BZzBoAADR6wCEHAcAAnkz594.jpg《大型网站技术架构:核心原理与案例分析》是我非常喜欢的一本书,能够将很多晦涩的概念讲的通俗易懂,全方面阐述如何构建高可用、高性能、高伸缩性和高扩展性的网站系统,并对多个典型的大型网站系统架构设计的案例进行分析,保证让你爱不释手。
《大型网站技术架构 核心原理与案例分析》的作者是李智慧,原阿里巴巴技术专家。
Java的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从一个小型网站成长起来的?如何保证你的网站安全?分布式系统使用到了缓存,有哪些缓存?缓存的使用有哪些值得注意的事项?
关于分布式的知识点,都在这本书里面有体现,只有你想不到,没有他写不到,而且写得非常易懂,基本属于看一两遍,再记一些笔记就知道是怎么一回事儿了。多看几遍,对分布式的理解一定会加深不少。而且里面不仅仅是分布式的知识,还非常接地气地写了如何做一个好的架构师,其实我认为这不仅仅是写给想做架构师的读者看的,就是给读者一些建议,如何更好地提出意见、如何更让别人关注你的声音、如何看到他人的优点,入木三分,让人获益匪浅。
2《大型网站系统与Java中间件实践》
大型网站系统与Java中间件实践.jpg《大型网站系统与Java中间件实践》作者曾宪杰,是淘宝的技术总监,算起来应该在阿里有至少P8的级别了吧。
这本书的部分内容和上面一本李智慧的《大型网站技术架构 核心原理与案例分析》有所重合,像分布式系统的演化、CDN、CAP理论和BASE理论等等,这也更说明这些都是分布式系统或者说是一个大型网站重点关注的内容,当作一次再学习也不错。
本书要突出的重点是中间件三个字,中间件是分布式系统中一个非常重要的东西,其最重要的作用应该就是解耦,降低模块与模块之间的强依赖,不同的模块之间的依赖度降低,便可以各自独立地开发自己的功能,这也可以说是软件工程发展的目标和驱动力。
因此,本书有一部分的内容就是基于中间件,详细讲解了中间件与JMS的各种知识,适合对分布式系统比较熟悉并且想要往中间件方面有一定研究的读者。
3《从Paxos到ZooKeeper 分布式一致性原理与实践》
897247-20161228123622882-546192824.jpg作者倪超,阿里巴巴工程师。
这本书是我最近在研读的一本书,和上面的《大型网站系统与Java中间件实践》一样,属于分布式组件的范畴,属于有些深入的内容,当然也是我自己的个人兴趣。当然,如果有志向做一个出色的大型网站架构师、公司的技术总监之类,这些知识当然是必须掌握的。
这本书对2PC、3PC 和 Paxos 协议进行了详细的分析与对比,对 Zookeeper 基本概念和技术模型、ZAB 协议以及 Zookeeper 应用场景进行了详细描述,同时提供了大量实践源码(如Zookeeper 安装、Java 客户端 API 使用等),形成一套完整的从理论到实践的体系。理论与实践兼重,强力推荐!
4《深入分析Java Web技术内幕》
53f1cd0fN3c47b9d0.jpg《深入分析Java Web技术内幕》,作者许令波,淘宝工程师。
这本书我用一个字概括就是:全。真的非常全,HTTP、DNS、CDN、静态化、Jetty、Tomcat、Servlet、Spring、MyBatis等等,什么都有,涉及知识面非常广,但又不像专门精讲某个知识点的书籍一样讲得非常深入,感觉这本书就是尽量去用短的篇幅讲清楚一些Java Web使用到的技术的内幕,让读者对这些知识点的技术内幕有一个理性的认识。
不过,尽管每个知识点的篇幅都不多,但是重点都基本讲到了,是一本让人真正有收获的书。如果想进一步了解这些技术的技术内幕,就要自己去买相关书籍或者自己上网查资料了,有种抛砖引玉,或者说师傅领进门、修行在个人的感觉。
5《ActiveMQ in Action》
ActiveMQ in Action.jpg这是关于 ActiveMQ 的书(英文),并且是我目前看到的最好的。从 JMS 开始讲起,到ActiveMQ 的配置与部署架构,再到 ActiveMQ 的高级特性,通俗易懂又非常详细,是学习并使用 ActiveMQ 的首选。另外,我不得不在这说一句,如果你觉得自己英文阅读水平不是很好,想找所谓的《ActiveMQ in Action中文版》,请直接放弃吧!
6《Spring源码深度解析》
578317e9N9d0771ca.jpg《Spring源码深度解析》,作者郝佳。
Spring这个框架做得太好了,功能太强大了,以至于很多开发者都只知Spring,不知什么是工厂、什么是单例、什么是代理(我面试别人的真实体会)。这种功能强大的框架内部一定是很复杂的实现,这就导致一旦你的程序使用Spring,出了问题,可能是Error、可能是Exception、可能是程序运行结果不是你的预期的,出现诸如此类问题的时候,将会让你感到困惑,除了上网查资料或者问别人似乎没有更好的解决办法。
研读Spring的源代码不失为一种很好的学习方法,我个人认为这有很多好处:
- 理解框架内部的实现之后,可以主动去解决问题,而不需要依赖别人;
- Spring框架内部实现用到了很多设计模式,很好的代码设计思路,这将会对你写代码、对你理解设计模式有很大的提高;
- 研究Spring框架将会大大增强你读代码的能力,我相信只要你能研究清楚Spring内部是如何实现的,其他任何一个框架的源代码都难不倒你。
总而言之,我认为读代码的能力是一个普通的程序员和一个好的程序员之间最大的差别之一,前者只会把别人写好的东西拿来用,后者不仅能用好,还清楚知道别人写好的东西底层是如何实现的,在出现问题的时候可以轻松解决。
Spring源代码,个人推荐《Spring源码深度解析》一书,真要研究透并且写清楚Spring源代码,恐怕三四本书都不够,作者在近400页的篇幅中尽量去讲解Spring源代码是如何实现的,殊为不易,尽管无法讲得完全,但是相信作者的讲解配合上读者自己的研究,一定可以对Spring的实现有更深度的理解。
7《Effective Java中文版》
Effective Java中文版.jpg《Effective Java中文版》的作者是Joshua Bloch,这个人就很厉害了,他是谷歌的首席架构师,属于超级技术大牛级别了吧,呵呵。从这本书的知名度以及其作者的来头来看(多提一句,这本书也是Java之父James Gosling博士推崇的一本书),我相信这一定是一本值得一看的好书。
好的代码是每个Java程序员都应该去追求的,不是说我今天写一段好代码相比写一段烂代码对性能会有多大的提升,更多的应该是提升了代码的可读性以及可以规避许多潜在的、未知的问题,避免代码上线之后出问题而花时间去维护—-无论从时间成本、人力成本还是风险成本来说,这都是非常高的。
8《Java并发编程实战》
Java并发编程实战.jpg作为一本常常位于Java程序员必读十大书籍排行榜前几名的书,还是一定要推荐给大家的。
本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
9《Java多线程编程核心技术》
Java多线程编程核心.jpg《Java多线程编程核心技术》作者高洪岩。想要学习多线程的朋友,这本书是我大力推荐的。
此书和《Java并发编程实战》相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、Reentrant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解到,非常有实践价值。
有兴趣的朋友们,我相信只要你们跟着这本书里面的代码敲、运行、思考,三步走,对于多线程的使用与理解一定会进几大步。
不过这本书的缺点就是对于Java并发包下的一些类像CountDownLatch、Semphore、CyclicBarrier、Future、Callable等都没有讲到,重点的CAS和AQS也没有触及,重点类的实现原理也没有提。当然,这很深入了,在学习了这本书之后如果能再去对这些知识进行一些学习、研究的话,你一定会慢慢成长为一个很厉害的多线程高手。
10《深入理解Java虚拟机(第2版)》
深入理解Java虚拟机(第2版).jpg评语:本书的亮点在于结合代码讲解各种内存溢出异常及其原理,通过代码实例解释内存分配和回收机制,并详细介绍了几种虚拟机可视化监控工具的使用,理论与实践并重。
11《高性能MySQL》
高性能MySQL.jpgMysql 领域的经典之作,你的书架里必须要有这本书。不要认为掌握了那些基本的用法、能够满足普通工作所需就可以了,这本书将会告诉你你知道的太少了!个人认为这本书不仅仅能让你深度掌握 Mysql 相关知识,你还能从中学到很多思想,而这些思想是可以广泛应用到其他数据库及数据库应用上的。
12《实战Java高并发程序设计》
实战Java高并发程序设计.jpg来了解下Java并发的技术点吧。这里面包括了并发级别、算法、定律,还有开发包。在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。这本书主要介绍基于Java的并行程序设计基础、思路、方法和实战。
在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。
13 《分布式Java应用:基础与实践》
分布式Java应用:基础与实践.png来自淘宝大牛 bluedavy,推荐作为学习分布式应用入门书籍。
阿里巴巴高级研究员林昊早年的书了,这些理论放到今天估计工作一两年的人都耳熟能详了,我个人很早以前就知道此书一直没有找到资源,去年找了电子版通读了一下,里面对于性能调优、分布式部署的实战经验确有可借鉴之处,书很薄,但是知识很重。
14 《Head First Java》
Head First Java.jpgHead First Java是所有编程或者Java初学者最适合的书籍,我很喜欢轻松和寓教于乐的Head First风格,这应该是最有意思的关于Java的书。无论是初级,中级还是高级都能从中有所收获。学习本书,你可以了解到类,对象,线程,集合等编程知识,还可以了解到泛型,枚举,可变参数和自动装箱等语言特性。本书中还涉及到了Java高级编程中的Swing,网络编程,IO操作等,可以让初学者对Java有比较完整地概念。如果你是一位Java初学者,不要犹豫,这本书最适合你了。
15 《Head First 设计模式》
Head First 设计模式.jpgHead First设计模式又是一部Head First系列的书籍。作者为Kathy Sierra及其团队。当我在2006年开始读这本书的时候,我对设计模式并不是很了解。设计模式解决什么问题,怎么解决问题,如何使用设计模式,设计模式有什么好处,这些问题我几乎都无法回答出来。但是当我读完这本书的时候,一切都豁然开朗。在本书介绍继承和组合一章,使用简单有趣的例子,一步一步提出问题并解决问题,最终得出最优解。本书中会有很多要点总结,幽默对话,练习题还有有名的单词接龙等帮助你更好地了解设计模式。如果你想了解Java中的设计模式,请带走这本书。
最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的程序员的道路上,我们可以一起学习、一起进步。
网友评论