likes
comments
collection
share

看完这个Java书单,一年胜十年。

作者站长头像
站长
· 阅读数 16

《Java编程思想》

这本书适合那些已经有一定Java编程经验,参与过一两个项目的人来阅读。

首先要说明的是,这本书并不是Java的入门书籍。尽管它确实对Java的语法做了一部分介绍,但更多的内容是关于Java特性的解释和讲解。书中的例子非常高级,对于面向对象、接口、内部类、容器、多线程以及I/O方面的讲解非常透彻和深入。它不仅告诉你该在何种情况下做出何种选择,还解释了各种选择的利弊。这本书并不适合一次从头到尾地阅读,而是适合在遇到困惑时翻阅,跟着自己的问题去阅读。让你的求知欲驱使着你阅读这本书,而不是对自己强加一个Java编程思想的读书计划。

《高性能MySQL》(Mysql技术内幕-Innodb引擎)

适合读者人群:对于SQL熟练,有一般数据库设计经验,对于索引、MySQL原理以及常用优化方法感兴趣,同时对于成为DBA有志之人。

谈到Java编程就不得不提数据库。在开发过程中,我们经常会遇到许多与数据库相关的问题,尤其是索引部分。这本书对此进行了非常透彻的介绍,包括数据类型、索引原理、联合索引设计陷阱和常用的优化方法等等。这些都是可以直接应用到实际工作中的经验。对于后面偏向架构和运维的章节,可以根据个人兴趣和工作需求来决定是否阅读。

第二本书偏向理论,不能直接应用于工作的内容比较少。但是读完之后,仍会感到焕然一新。通过这本书,可以对MySQL的设计有更深入的理解,这对于今后设计类似功能(例如事务实现、缓冲池实现、TODO, UNDO、锁等)会有很大的借鉴意义。

《深入剖析Tomcat》

《深入剖析Tomcat》是一本适合有一定项目经验和面向对象设计了解的人群阅读的书籍,它帮助读者了解什么是面向接口编程,以及Tomcat的加载、映射和整个HTTP请求处理过程。这本书适合那些对自己的知识体系不能存在"黑箱"的人,而不只是满足于Java后台开发中简单的CRUD操作。

Tomcat是一个广为人知的工具,无论是在我们做的小型课程设计项目中,还是像淘宝和天猫这样的每天访问量过亿的大型网站中,都在使用Tomcat。因此,不应轻视它,也不要认为它只是一个入门级的技术。

尽管我们可能会更换数据库框架、MVC框架和容器,但很少有人会去替换Tomcat。为什么呢?因为它是一个非常优秀的设计(尽管在可定制性方面不如Jetty)。

这本书从一个简单的基于Socket的B/S程序入门,作者从头开始编写连接器、处理器、请求和处理的代码,以阐述Tomcat的设计理念。其中介绍了Tomcat4和Tomcat5的源代码,探讨了Tomcat核心设计的四个容器,讲解了Tomcat的安全性、权限和配置文件的读取,还包括了Java对象的管理以及定制Tomcat项目管理后台的技巧(即通过访问Tomcat路径的根路径进入的管理网站)。这本书适合那些心无旁骛、没有项目和太多琐事的人,他们可以结合实际的源代码,逐行阅读并理解处理流程,并了解什么是优秀的代码、扩展性和健壮性。

《深入理解Java虚拟机》

适合人群:有一定兴趣学习并发编程和反射,想了解JVM优化的人。闲暇无聊、没有项目的人。

首先,这本书可能会有些枯燥,对于你目前的实际项目来说并没有直接的应用价值。但是,如果你想在Java方面深入研究,就不能避免地需要去了解JVM及其优化、Java的内存模型、Java类的加载机制,以及字节码文件的本质。并发编程和Java性能优化等方面也应该有所了解。

虽然这本书可能相对枯燥和难懂,但是它是值得你用心阅读的。

《设计模式-可复用软件的设计》 GoF(《设计模式的艺术之道》刘伟)

适 读人群:有三四个项目经验的人,想了解软件、程序和面向对象的概念。只有读过这本书,你才能了解除了算法和性能之外,我们还要注重扩展性。这是因为软件行业的需求变化是一个很大的难题。项目初期的需求和项目开发后期的需求可能会发生天壤之别。所以在设计阶段就要为需求的变动做好准备,方法之一是通过抽象、分层和分工来解决。虽然这样会增加复杂性,但后期会更轻松一些。如果在前期没有进行好设计,项目将无法继续开发。如果你还没有遇到需求变更,那可能是因为你的客户对项目没有很重视,或者客户本身就是程序员。一个只有一个main函数的项目绝对不被认为是一个真正的软件。

作者从创建型、结构性和行为性三个方面详细地介绍了23种设计模式。耐心地阅读,理解每一个字,将这本书和《Java编程思想》一起放在一起,空闲时翻阅一下。也许有一天你在编写程序时会意识到如果按照作者的设计,后面的开发会非常轻松。那时你一定会感谢作者总结了这些设计模式。由于《设计模式》这本书出版已有些时日,其中的设计案例可能有些过时,所以同时阅读《设计模式的艺术之道》可能更容易理解一些。

这是软件行业的圣经作品,如果你从事技术工作,应该经常翻阅。

《深入分析JavaWeb技术内幕》

这本书的水平真的非常高。说实话,当我看这本书时,我几乎流泪了。我能感受到作者写书确实是用心的,他并不是为了出版赚版权费,也不是为了炫耀,而是真心希望别人能少走一些弯路,更轻松地学习。特别是作者的细致和认真程度,用“工匠精神”来形容一点都不为过。再加上作者对于Tomcat源码的深入研究, 我可以总结一句话,优秀的程序员在每一个细节上都追求完美。在他们的知识体系中,绝对不能容忍任何小漏洞的存在,他们会在细节上下功夫,一步一步地写出优秀的代码。对于每一个疑问,他们都能在合适的时机给出解答。作者在细节上完胜我。

同时,不仅仅在细节上,作者也详细讲述了Java Web中各种技术方向,内容丰富而全面,但每一章你都感受不到作者的疏漏和不足之处。博学广博而专精,这正是我们应该学习的。

本书的目录大致包括Java I/O, 字节码,编译,JVM,Tomcat,Spring,Mybatis等等。

《重构改善既有代码的设计》

这本书被认为是软件行业的两本圣经之一,与设计模式齐名。虽然我不完全认同这种说法,但毫无疑问的是,读完这本书后,你会更加关注你所写代码的结构。这两本书都教会了我们如何编写可维护、可扩展且健壮性强的代码。它教授了如何修改代码以减少错误的引入,并使代码更易于维护。作者讲解了许多实用技巧,对于那些经历过需求变更的孩子们来说,可能更有深刻体会。这本书的独立教学性较强,值得一读。

《操作系统设计 xinu方法》

适读人群:已经学习完操作系统课程,希望深入了解操作系统内部细节的人群。他们想了解线程调度、内核态和用户态之间的转换机制、消息循环、进程管理等等内容。如果你对C语言不熟悉,作为Java程序员,至少需要了解一些C语言的知识才能读懂这本书。那么,阅读这本书有什么好处呢?说实话,它对Java语言的面向对象开发并没有太大帮助,它的帮助主要在于加深对操作系统的理解。当你开始学习JVM时,可能会感觉更加轻松一些,同时它还向你展示了,实际上操作系统并没有那么难以理解,你可以从源代码级别上理解操作系统。同时,当你的编程水平达到一定程度之后,如果想走上架构师的道路,操作系统绝对是不可避免的重要知识环节。现在,你可以打好一定的基础,之后再来阅读这本书。总而言之,这本书一点都不难,真的。

《超越传统的软件开发-极限编程的幻想和真实》(《解析极限编程-拥抱变化》《人月神话》)

这三本书均为软件工程领域专著,主要关注于构建高效的开发流程。在这方面,我的了解很有限,所以我计划向其他人寻求帮助,更好地完善自己的知识。然而,这三本书对于有项目领导经验的人来说肯定不难,因为阅读后他们能获得更丰富的经验和收获。对于其他人来说,阅读这些书籍也能获得很多收获,比如测试先行、结对编程、螺旋开发、循环迭代以及不断优化的理念等等。

《Java并发编程》

Java并发编程是一本深入学习并发编程且对JVM内存模型有了解的书籍。如果你对Java已经有了不错的感觉,并且想提升自己的代码水平,那这本书对你来说非常重要。作者是Java并发包的作者,这个包在Java的开发中非常有名。尽管这本书是学习并发编程的圣经,但并不太适合入门者。如果你想入门并发编程,可以先从后面的《Java多线程编程的艺术》开始学习。通过逐行代码分析和小技巧的学习,你可以慢慢提升自己的并发编程能力。并发编程是衡量一个高级程序员的标准,所以你应该时常回头翻阅这本书。

《深入分析Spring 技术内幕》

这本书让我深受震撼,不是因为书中的讲解有多么细致清晰,而是对于Spring开发团队将Spring变得如此复杂而感到困惑。面对一个个的UML图,我真的很焦虑,表示自己看不懂,可能是因为自己相对笨一些。但是要读懂这本书,确实需要花费很长时间来阅读和思考。

正如一句话所说,当你觉得生活困难时,可能是在拔一颗大萝卜。当你真正掌握了Spring,你就会变得无限可能。在国内,应该没有比这本书更详细地从源代码层面解释Spring的了。

《架构探险,从零开始Javaweb框架》

适读人群:有一定反射和集合知识的人,希望学习框架设计的入门者。

这本书能够作为你学习框架设计的入门读物,通过阅读,你可以了解到一个框架的编写过程是多么简单。同时,你也应该学会参与开源项目。尽管这本书并不难,但是需要用心地去阅读,边阅读边编写代码。

书中介绍了Aop、事务处理等等内容,作者的编码实力非常高,讲解也非常深入。

《j2ee核心模式》

适读人群:对开发框架有兴趣及闲暇时间的专家级人士

这本书由Sun公司出版,对J2EE开发提供了非常有指导性的内容。书中总结了许多经过实践验证的实用设计思想和技巧。其中有很多你可能已经在应用中使用了,却没有注意到。例如,控制层中存在太多的逻辑代码是一个不好的实践,因为这会导致视图层需求的变动很容易影响到控制层。但是如果你能善于利用"传输对象"这个设计技巧,就可以将需求变化限制在业务处理层和视图层之间(传输对象就像一个容器,包含了大家所需要的各种数据)。还有很多框架应用了这种技巧,但你可能没有注意到。另外,如果你在微信开发中遇到只能定义一个接口的困惑,后来的实践告诉我,这种模式正是为了让控制层与Servlet解耦。我们可以通过前端控制器拦截请求并将其转发到我们的控制器中。甚至你有兴趣的话,还可以自己封装request、response等。事实上,SpringMVC框架正是通过前端控制器DispatchServlet将请求映射到controller中。

转载自:https://juejin.cn/post/7282696271865266188
评论
请登录