高质量 Java 程序设计
[绝版]基本信息
编辑推荐
放到读者面前的这本书,包含了以下内容:Java程序的异常处理、编码规则和组织结构、内存管理、面向对象的设计与实现、性能调整,Java编码最佳实践,Java类库的高级用法及与当代软件工程的结合等。圆满完成这六项思想训练之后,您就真正迈进了OO设计师的行列。
这本书最适合一个繁忙的Java程序员,一边进行大量的编程实践,一边进行自我训练和提高。对于一个初级设计师来说,这本书是一本启蒙必读;对于中等程度的设计师来说,这是一本进行理论总结的教程;对于需要对同事进行辅导的资深设计师来说,这是一本不可多得的素材。
如果您是一名学生,读一读这本书,可以学习到只有通过大量实战才能得到的宝贵经验;如果您是一名教员,那么这本书提供了很多的案例供您选做补充教材。
无论是哪一种情况,这本书不应当躺在您的书架上,而应当放到您的随身提包里,为您随时提供忠告,伴随您繁忙的一天。
内容简介回到顶部↑
本书结合作者丰富的实践经验和深厚的理论基础,总结出一系列行之有效的高质量Java编程的规则和建议,指导读者提高Java程序开发的水平。全书共分6章,从全新的角度阐述Java程序的异常处理、编码规则和组织结构、内存管理、面向对象的设计与实现、性能调整,Java编码最佳实践,Java类库的高级用法以及与当代软件工程的结合等。本书各部分均相关联又可独立成章,读者可以顺序阅读也可以只阅读其中感兴趣的部分。书中的代码均短小精悍,易于理解,所有例子都可以直接编译运行,方便读者学习掌握。书中所有实例源代码均可自飞思在线http://www.fecit.com.cn“下载专区”下载。
作译者回到顶部↑
本书提供作译者介绍
顾晓刚1977年生。1996年到2000年,就读于上海交通大学试点班和计算机系。2000年7月加入东方海外有限公司,从事航运业B2B电子商务软件的面向对象分析、设计以及组件开发工作。
谢义军1980年生。1995年至2000年,就读于西安交通大学少年班和电气工程学院。2000年7月加入东方海外有限公司,从事航运业B2B电子商务软件的面向对象分析、设计以及组件开发工作。
林锐1973年生。1990年至1996年,就读于西安电子科技大学,获硕士学位。1997年至2000年,就读于浙江大学计算机系,获博士学位。大.. << 查看详细
谢义军1980年生。1995年至2000年,就读于西安交通大学少年班和电气工程学院。2000年7月加入东方海外有限公司,从事航运业B2B电子商务软件的面向对象分析、设计以及组件开发工作。
林锐1973年生。1990年至1996年,就读于西安电子科技大学,获硕士学位。1997年至2000年,就读于浙江大学计算机系,获博士学位。大.. << 查看详细
目录回到顶部↑
第1章 异常
条款1[规则]用时间频度来确定异常情况
条款2[规则]用不需查异常来强化方法的约定
条款3[规则]用error的子类来表示系统级的异常和程序不必处理的异常
条款4[规则]用不从runtimeexception继承的exception的子类来表示需查异常
条款5[规则]用runtimeexception的子类来表示不需查异常
条款6[规则]用链式异常来保存原始异常信息
小结
第2章 代码风格
条款7[建议]将类的属性按种类分块
条款8[建议]将方法的实现代码按功能分块
条款9[建议]适度地使用对齐
条款10[建议]控制代码的长度
条款11[建议]尽可能不使用 import*
条款12[建议]尽量减少同名的类
条款13[建议]用包名体现类的层次
小结
第3章 内存管理
条款14[规则]为内存分配做好准备
条款15[规则]用 stringbuffer代替迭代使用的string
条款1[规则]用时间频度来确定异常情况
条款2[规则]用不需查异常来强化方法的约定
条款3[规则]用error的子类来表示系统级的异常和程序不必处理的异常
条款4[规则]用不从runtimeexception继承的exception的子类来表示需查异常
条款5[规则]用runtimeexception的子类来表示不需查异常
条款6[规则]用链式异常来保存原始异常信息
小结
第2章 代码风格
条款7[建议]将类的属性按种类分块
条款8[建议]将方法的实现代码按功能分块
条款9[建议]适度地使用对齐
条款10[建议]控制代码的长度
条款11[建议]尽可能不使用 import*
条款12[建议]尽量减少同名的类
条款13[建议]用包名体现类的层次
小结
第3章 内存管理
条款14[规则]为内存分配做好准备
条款15[规则]用 stringbuffer代替迭代使用的string
前言回到顶部↑
学会Java和学会如何以Java来设计并实现高效率的程序,相去不可道以里计。Java同时提供了不寻常的简洁性和强大的功能,继承了C和C++的优点而摒弃两者的缺点。从第一版起,Java就支持标准化的面向对象设计、自动垃圾收集、异常处理、动态加载、并发计算、网络功能、对象持久化和图形界面。在后续版本中,又不断增加了断言处理、数据库连接、XML操作、服务器端计算和移动设备计算等诸多特性。类似C++模板特性的范型计算,预期会在下一版JDK中加入。事实上,Java是第一个拥有如此多的特性,并且每一个特性都是标准化了
的程序设计语言。
面对如此多的特性,如果程序员没有一定的知识沉淀,会导致编写的程序容易出错、缺乏效率,而且也不易维护和理解。在使用一个语言特性的时候,会有打太极拳的感觉。例如异常处理,几乎所有的Java新手都会问:“我们该如何使用异常处理?”你虽然会使用异常处理的语法,程序也编译通过了,但却可能错误地使用了异常,导致程序的行为不可预料。有人为所有的异常都定义一个特殊的类,结果他的程序中代表异常的类比所有其他类的总和还多;有人在所有的方法中都抛出Exception,这和任何异常都不抛出有什么区别呢?
然而,适当地使用Java,会给你带来巨大的成功和满足。各种设计哲学,包括基础的面向对象方法和设计模式,都可以用Java有效地实现;自动的垃圾收集默默地替你照料所有的内存:内建的并发机制让你更容易地编写多线程的程序;Swing提供了可移植的界面:强大的网络功能使得Java被称为“互联网的语言”。是的,人们可以用Java开发出功能强大、快速和健壮的应用程序,程序设计也更加有效,更不容易产生错误。编写高质量的Java程序并不太困难,前提是你知道如何使用Java带给你的强大功能。就像大卫的投石索一样,在大卫手中可以杀死巨人,在侏儒手中却是绊脚绳。
本书的目的,就是指出Java中可能绊倒你的障碍——几乎每一个障碍之后都是鲜美的果实。本书并不教你如何绕开障碍,而是讲述如何跨越障碍登上高峰,即如何正确地使用那些容易出错却强大无比的技术。阅读本书需要对Java语言有某种程度的了解,如果对这方面有疑问,可以试着口答附录中的问题。如果能够回答3个问题——基本上相当于使用Java编写过小的、练习性的程序——就可以开始阅读本书了。
书中的条款分为两大类:规则和建议。规则意味着在绝大多数情况下,都应该按照条款去做;建议则需要你的领会和灵活处理,如果目标不同,建议的可用性也就不同。这些规则和建议集中在两大方面:语言特性的正确使用,设计与开发的重要原则。
语言特性的讨论集中在如何高效地使用Java,以及为什么这样使用。有关语言的语法,本书也会有所提及。但是了解语法的最好方法,还是查阅JDK的文档。除非特别必要,否则本书不会重复帮助文档中的内容。我们会给出一系列的规则和建议,来帮助你正确地使用这些特性。了解语言特性的真正含义和设计目标,以及实现机制是非常必要的。事实上,难以掌握的并不是语言本身,而是语言所代表的概念。例如,如果学过数据结构,那么对于不同的。collection实现之间的性能差异就能一目了然;如果已经有C或C++的socket编程经验,那么掌握Java的网络编程也就易如反掌。通过语言特性的含义和设计目标,以及实现机制,我们会尽量帮助你在脑海中建立起一些基本的模型,然后给出具体的规则和建议。这样在遇到不同情况时,你就可以自己分析这些规则和建议,甚至得出自己的条款来。事实上,本书最重要的部分,并不是每一个单独的条款,而是每个条款的解释和讨论。
设计与开发的原则,并不局限于某一种单独的语言。但是对于Java平台的开发者来说,设计与开发的原则会表现为不同的形式。例如经典的面向对象设计包含很多对于多继承的讨论,而在Java中,多继承被取消了,取而代之的是用接口模拟的新机制。它有大多数多继承的优点,同时避免了其缺点。性能调整的基本原则,对任何语言来说都是相同的,你总是需要发现瓶颈,分析程序的热点等。但是在Java中应该如何有效地做这些工作,并没有现成的文档。由于使用了自动垃圾收集机制,使得Java不是一种时间精确的语言,这给性能调整带来了新的话题。设计与开发是一个微妙的领域,前期错误的决定,可能在开发的后期才会产生影响。而当你意识到错误时,往往已经错过了及时纠正的机会。
本书的目的是要强调那些语法教材一笔带过的内容。其他书籍也许告诉你Java有哪些功能,本书则告诉你如何高质量地使用这些功能,以及如何让这些功能为你的程序服务,而不是让你为这些功能服务。
第1章讨论了如何有效地使用Java的异常处理机制。Java的异常处理的设计目标是让程序在运行时错误不会被隐藏:
.条款1将解释何时使用异常,何时不应该使用异常。
.条款2则讨论了异常的一个优秀但容易被忽略的用处:进行契约化程序
设计。
.条款3解释了Error的用法。
.条款4讨论了异常最重要的周处:强迫检查异常。
.条款5是条款2的延续,解释了unchecked exception的用处。
.条款6则讨论了如何用异常精确地定位错误。
第2章是关于代码风格的。Java有一套标准的代码规范,但是我们们有许多具体的建议和诀窍可以使你做得更好:
.条款7讨论了一种组织方式:声明的分类。
.条款8解释了方法的分块,方法分块是方法重构的基础。
的程序设计语言。
面对如此多的特性,如果程序员没有一定的知识沉淀,会导致编写的程序容易出错、缺乏效率,而且也不易维护和理解。在使用一个语言特性的时候,会有打太极拳的感觉。例如异常处理,几乎所有的Java新手都会问:“我们该如何使用异常处理?”你虽然会使用异常处理的语法,程序也编译通过了,但却可能错误地使用了异常,导致程序的行为不可预料。有人为所有的异常都定义一个特殊的类,结果他的程序中代表异常的类比所有其他类的总和还多;有人在所有的方法中都抛出Exception,这和任何异常都不抛出有什么区别呢?
然而,适当地使用Java,会给你带来巨大的成功和满足。各种设计哲学,包括基础的面向对象方法和设计模式,都可以用Java有效地实现;自动的垃圾收集默默地替你照料所有的内存:内建的并发机制让你更容易地编写多线程的程序;Swing提供了可移植的界面:强大的网络功能使得Java被称为“互联网的语言”。是的,人们可以用Java开发出功能强大、快速和健壮的应用程序,程序设计也更加有效,更不容易产生错误。编写高质量的Java程序并不太困难,前提是你知道如何使用Java带给你的强大功能。就像大卫的投石索一样,在大卫手中可以杀死巨人,在侏儒手中却是绊脚绳。
本书的目的,就是指出Java中可能绊倒你的障碍——几乎每一个障碍之后都是鲜美的果实。本书并不教你如何绕开障碍,而是讲述如何跨越障碍登上高峰,即如何正确地使用那些容易出错却强大无比的技术。阅读本书需要对Java语言有某种程度的了解,如果对这方面有疑问,可以试着口答附录中的问题。如果能够回答3个问题——基本上相当于使用Java编写过小的、练习性的程序——就可以开始阅读本书了。
书中的条款分为两大类:规则和建议。规则意味着在绝大多数情况下,都应该按照条款去做;建议则需要你的领会和灵活处理,如果目标不同,建议的可用性也就不同。这些规则和建议集中在两大方面:语言特性的正确使用,设计与开发的重要原则。
语言特性的讨论集中在如何高效地使用Java,以及为什么这样使用。有关语言的语法,本书也会有所提及。但是了解语法的最好方法,还是查阅JDK的文档。除非特别必要,否则本书不会重复帮助文档中的内容。我们会给出一系列的规则和建议,来帮助你正确地使用这些特性。了解语言特性的真正含义和设计目标,以及实现机制是非常必要的。事实上,难以掌握的并不是语言本身,而是语言所代表的概念。例如,如果学过数据结构,那么对于不同的。collection实现之间的性能差异就能一目了然;如果已经有C或C++的socket编程经验,那么掌握Java的网络编程也就易如反掌。通过语言特性的含义和设计目标,以及实现机制,我们会尽量帮助你在脑海中建立起一些基本的模型,然后给出具体的规则和建议。这样在遇到不同情况时,你就可以自己分析这些规则和建议,甚至得出自己的条款来。事实上,本书最重要的部分,并不是每一个单独的条款,而是每个条款的解释和讨论。
设计与开发的原则,并不局限于某一种单独的语言。但是对于Java平台的开发者来说,设计与开发的原则会表现为不同的形式。例如经典的面向对象设计包含很多对于多继承的讨论,而在Java中,多继承被取消了,取而代之的是用接口模拟的新机制。它有大多数多继承的优点,同时避免了其缺点。性能调整的基本原则,对任何语言来说都是相同的,你总是需要发现瓶颈,分析程序的热点等。但是在Java中应该如何有效地做这些工作,并没有现成的文档。由于使用了自动垃圾收集机制,使得Java不是一种时间精确的语言,这给性能调整带来了新的话题。设计与开发是一个微妙的领域,前期错误的决定,可能在开发的后期才会产生影响。而当你意识到错误时,往往已经错过了及时纠正的机会。
本书的目的是要强调那些语法教材一笔带过的内容。其他书籍也许告诉你Java有哪些功能,本书则告诉你如何高质量地使用这些功能,以及如何让这些功能为你的程序服务,而不是让你为这些功能服务。
第1章讨论了如何有效地使用Java的异常处理机制。Java的异常处理的设计目标是让程序在运行时错误不会被隐藏:
.条款1将解释何时使用异常,何时不应该使用异常。
.条款2则讨论了异常的一个优秀但容易被忽略的用处:进行契约化程序
设计。
.条款3解释了Error的用法。
.条款4讨论了异常最重要的周处:强迫检查异常。
.条款5是条款2的延续,解释了unchecked exception的用处。
.条款6则讨论了如何用异常精确地定位错误。
第2章是关于代码风格的。Java有一套标准的代码规范,但是我们们有许多具体的建议和诀窍可以使你做得更好:
.条款7讨论了一种组织方式:声明的分类。
.条款8解释了方法的分块,方法分块是方法重构的基础。
序言回到顶部↑
文明始于禁忌
混沌的头脑中第一缕清晰的思维,荒原大地上第一堆文明的火,开始于古人类对“有所不为”的认识。文明始于禁忌,禁忌直接导致了野蛮的消退。
当一个程序员掌握了Java语言之后,他就具有了梦想已久的能力,可以向自己设定的任何目标前进,而几乎总是能够征服各种代码怪兽。在这个时候,一个新的从合格的Java程序员到合格的OO(面向对象的)设计师的启蒙就应当开始了。这个启蒙没有新的关键字,没有新的功能库,它是关于设计师何时该“有所为”,何时该“有所不为”的思想训练。这个转变,就象征了OO“文明”的开始和“野蛮”的消退。
放到读者面前的这本书,包含了以下内容:Java程序的异常处理、编码规则和组织结构、内存管理、面向对象的设计与实现、性能调整,Java编码最佳实践,Java类库的高级用法及与当代软件工程的结合等。圆满完成这六项思想训练之后,您就真正迈进了OO设计师的行列。
这本书最适合一个繁忙的Java程序员,一边进行大量的编程实践,一边进行自我训练和提高。对于一个初级设计师来说,这本书是一本启蒙必读:对于中等程度的设计师来说,这是一本进行理论总结的教程;对于需要对同事进行辅导的资深设计师来说,这是一本不可多得的素材。
如果您是一名学生,读一读这本书,可以学习到只有通过大量实战才能得到的宝贵经验;如果您是一名教员,那么这本书提供了很多的案例供您选做补充教材。
无论是哪一种情况,这本书不应当躺在您的书架上,而应当放到您的随身提包里,为您随时提供忠告,伴随您繁忙的一天。
混沌的头脑中第一缕清晰的思维,荒原大地上第一堆文明的火,开始于古人类对“有所不为”的认识。文明始于禁忌,禁忌直接导致了野蛮的消退。
当一个程序员掌握了Java语言之后,他就具有了梦想已久的能力,可以向自己设定的任何目标前进,而几乎总是能够征服各种代码怪兽。在这个时候,一个新的从合格的Java程序员到合格的OO(面向对象的)设计师的启蒙就应当开始了。这个启蒙没有新的关键字,没有新的功能库,它是关于设计师何时该“有所为”,何时该“有所不为”的思想训练。这个转变,就象征了OO“文明”的开始和“野蛮”的消退。
放到读者面前的这本书,包含了以下内容:Java程序的异常处理、编码规则和组织结构、内存管理、面向对象的设计与实现、性能调整,Java编码最佳实践,Java类库的高级用法及与当代软件工程的结合等。圆满完成这六项思想训练之后,您就真正迈进了OO设计师的行列。
这本书最适合一个繁忙的Java程序员,一边进行大量的编程实践,一边进行自我训练和提高。对于一个初级设计师来说,这本书是一本启蒙必读:对于中等程度的设计师来说,这是一本进行理论总结的教程;对于需要对同事进行辅导的资深设计师来说,这是一本不可多得的素材。
如果您是一名学生,读一读这本书,可以学习到只有通过大量实战才能得到的宝贵经验;如果您是一名教员,那么这本书提供了很多的案例供您选做补充教材。
无论是哪一种情况,这本书不应当躺在您的书架上,而应当放到您的随身提包里,为您随时提供忠告,伴随您繁忙的一天。
评论交流
共有10人开贴评论 25人参与评论 8人参与打分 查看
评价等级:



发表于:2003-10-23 16:07:00
同事推荐了《[url="http://www.china-pub.com/computers/common/info.asp?id=9031"]高质量JAVA程序设计[/url]》这本书,花了两个上午的时间看完了,有些感想和笔记记录下来。
关于作者,作者是三个人,两个和我年龄差不多,他们完成了本书大部分的工作,另外一个——林锐一个网上比较有名气的技术顾问完成了构思和修订。关于这样的配置,我不知道出版社是出于什么考虑,是否没有一个有名的人站在背后这本书就不好卖?从直观上看,两个参加工作不久的同学(竟管他们是名校毕业),能否完成和书名相衬的内容对我来说在看书之前仍然不容易回答。
关于印刷,这本书的印刷是相当不错的,除了字体有点大,间隙有点大之外,这样是否可以让整本书看起来比较厚,多卖几块钱?当然关于印刷和定价以前看过很多争议了(侯捷老师的看法我还是比较赞同,书的定价和厚薄没有本质上的联系),我就不再多说了。
关于内容,全书有六个部分,看完后给我印象最深的是如果这些已文章的形式被我看到,还能接受,组合成为一本书,如果是我买下的话,恐怕要心痛一阵子了。从另外的角度看,作者凭着短短几年工作经验能写出这样的文章,也实在让我汗颜,感觉到自己的水平还差得很远很远。即使有些自己理解了解的事情,想这样用正规的语言写下来对我来说仍然是一件很困难的事情,另外作者在这本书上花的心思和文笔也是值得肯定的,起码是很认真严肃地对待这本书和读者,我也对他们的努力表示感谢和佩服。
好了,说了那么多废话,让我来做一些笔记吧,花了一些时间也是有些收获的,时间不能浪费,看过书一定要留下一点东西,才对得起所花费的时间,呵呵。
1. 关于unchecked exception,以前一直没明白它的含义,现在终于明白了,所有从RuntimeException继承的exception都可以不显式的声明(throws, try...catch...)而被抛出。
2. 关于JAVA的内存管理机制和垃圾回收机制以前只有一个比较大概的印象,通过本书关于这方面的说明(第二章),我还是很快了解了这方面内容,我也觉得这是这本书里最值得看的部分。这部分内容比较多,这里的篇幅也不足够写清楚,就算了,总之还是推荐找一本来看看,或者去书店看看这一部分。这一部分也勾起了我对JVM底层和性能调试的兴趣,正在进行的项目我会用到这些概念,到时候会有更多的细节,再来记录补充。
刚好下午看到TSS上说 JSR-174, Monitoring and Management Specification for the Java Virtual Machine这个草案发布了第一个公开评估版本,这个规范允许外部进程和JVM通信监测它的线程运行情况和内存使用情况。还介绍了一个非常有用的JVM监测工具jvmstat,用了一下,非常棒,配合书里刚讲过概念果然很有帮助。联接在下边
[url='http://www.theserverside.com/home/thread.jsp?thread_id=22033']http://www.theserverside.com/home/thread.jsp?thread_id=22033[/url]
3. 第五部分关于JAVA集合类中有一节关于集合性能测试的部分,也比较有意思,作者所用的方法和态度是严谨认真负责的,也再一次让我认识到自己的基础和耐心是很差的,像作者学习。
其他的地方给我的印象也就不是那么深刻了,以前也都在不同的地方看到过,特别是第四章面向对象设计,这两部分按理说都是能扩充为一整本书,而且也有不止一本书有经典的描述,在这里出现只能起到启蒙作用。第二章代码风格所讲到的并不具备普遍意义,我就没遇到一种作者提到的问题。第六章性能调整,在我看来完全是凑数的,内容比较浅显,组织也比较混乱,还是专门找一本性能调试的书来看吧。
怎么好像写歪了,本想写一篇读书收获,怎么写成了书评,哎……
关于作者,作者是三个人,两个和我年龄差不多,他们完成了本书大部分的工作,另外一个——林锐一个网上比较有名气的技术顾问完成了构思和修订。关于这样的配置,我不知道出版社是出于什么考虑,是否没有一个有名的人站在背后这本书就不好卖?从直观上看,两个参加工作不久的同学(竟管他们是名校毕业),能否完成和书名相衬的内容对我来说在看书之前仍然不容易回答。
关于印刷,这本书的印刷是相当不错的,除了字体有点大,间隙有点大之外,这样是否可以让整本书看起来比较厚,多卖几块钱?当然关于印刷和定价以前看过很多争议了(侯捷老师的看法我还是比较赞同,书的定价和厚薄没有本质上的联系),我就不再多说了。
关于内容,全书有六个部分,看完后给我印象最深的是如果这些已文章的形式被我看到,还能接受,组合成为一本书,如果是我买下的话,恐怕要心痛一阵子了。从另外的角度看,作者凭着短短几年工作经验能写出这样的文章,也实在让我汗颜,感觉到自己的水平还差得很远很远。即使有些自己理解了解的事情,想这样用正规的语言写下来对我来说仍然是一件很困难的事情,另外作者在这本书上花的心思和文笔也是值得肯定的,起码是很认真严肃地对待这本书和读者,我也对他们的努力表示感谢和佩服。
好了,说了那么多废话,让我来做一些笔记吧,花了一些时间也是有些收获的,时间不能浪费,看过书一定要留下一点东西,才对得起所花费的时间,呵呵。
1. 关于unchecked exception,以前一直没明白它的含义,现在终于明白了,所有从RuntimeException继承的exception都可以不显式的声明(throws, try...catch...)而被抛出。
2. 关于JAVA的内存管理机制和垃圾回收机制以前只有一个比较大概的印象,通过本书关于这方面的说明(第二章),我还是很快了解了这方面内容,我也觉得这是这本书里最值得看的部分。这部分内容比较多,这里的篇幅也不足够写清楚,就算了,总之还是推荐找一本来看看,或者去书店看看这一部分。这一部分也勾起了我对JVM底层和性能调试的兴趣,正在进行的项目我会用到这些概念,到时候会有更多的细节,再来记录补充。
刚好下午看到TSS上说 JSR-174, Monitoring and Management Specification for the Java Virtual Machine这个草案发布了第一个公开评估版本,这个规范允许外部进程和JVM通信监测它的线程运行情况和内存使用情况。还介绍了一个非常有用的JVM监测工具jvmstat,用了一下,非常棒,配合书里刚讲过概念果然很有帮助。联接在下边
[url='http://www.theserverside.com/home/thread.jsp?thread_id=22033']http://www.theserverside.com/home/thread.jsp?thread_id=22033[/url]
3. 第五部分关于JAVA集合类中有一节关于集合性能测试的部分,也比较有意思,作者所用的方法和态度是严谨认真负责的,也再一次让我认识到自己的基础和耐心是很差的,像作者学习。
其他的地方给我的印象也就不是那么深刻了,以前也都在不同的地方看到过,特别是第四章面向对象设计,这两部分按理说都是能扩充为一整本书,而且也有不止一本书有经典的描述,在这里出现只能起到启蒙作用。第二章代码风格所讲到的并不具备普遍意义,我就没遇到一种作者提到的问题。第六章性能调整,在我看来完全是凑数的,内容比较浅显,组织也比较混乱,还是专门找一本性能调试的书来看吧。
怎么好像写歪了,本想写一篇读书收获,怎么写成了书评,哎……
评价等级:



发表于:2003-2-14 11:28:00
书没有看过,因为没有样章。
但下载了源代码,感觉一般
1就注释风格,也许是赶时间,对绝大部分public类和函数没有提供应该有的注释。
仅有注释的部分代码,是在sample/xml/bind(不含子目录)下的几个文件,但是这几个文件
有几个应当是取自其他项目,其注释中居然仍然存在@roseuid这个标识。faint!!!
不够严谨。
建议看看oreilly出的几本书的源代码。
2 sample/xml/bind下自己实现了一个Logger类,莫名其妙。
既然1.4出来了,没必要吧。
3 发现一个bug
因为本人在jdbc中曾经吃过不少苦头,所以比较关心。例子中没有找到关于jdbc连接池的信息。这是jdbc性能调整最关键的部分。
倒是找到了一个PreparedStatementTest,
但是PreparedStatement是否提高效率,取决于jdbc驱动的具体实现。
该类中有一个bug,如下这块:
finally {
try {
stmt.close();
pstmt.close();
conn.close();
} catch (Exception e) {
}
}
上应当是
finally {
try {
if(stmt!=null) { stmt.close();
}
if(pstmt!=null) {pstmt.close();
}
if(conn != null) {conn.close();
}
} catch (Exception e) {
}
}
否则,如果conn.createStatement()抛出异常,stmt未赋值
在finally部分调用stmt仍然是异常,导致conn不会close().
觉得作者玩jdbc时间太短,没有碰到过这种情形。所以这一部分最好去掉。
jdbc陷阱很多,本书没必要触及自己不熟悉的区域。
此外,Statement那个循环体应当手工优化一下,使用StringBuffer为好。也算是本书前后一致的做法。
不过这里开销主要在statement.execute,优化这个没什么大用。
但下载了源代码,感觉一般
1就注释风格,也许是赶时间,对绝大部分public类和函数没有提供应该有的注释。
仅有注释的部分代码,是在sample/xml/bind(不含子目录)下的几个文件,但是这几个文件
有几个应当是取自其他项目,其注释中居然仍然存在@roseuid这个标识。faint!!!
不够严谨。
建议看看oreilly出的几本书的源代码。
2 sample/xml/bind下自己实现了一个Logger类,莫名其妙。
既然1.4出来了,没必要吧。
3 发现一个bug
因为本人在jdbc中曾经吃过不少苦头,所以比较关心。例子中没有找到关于jdbc连接池的信息。这是jdbc性能调整最关键的部分。
倒是找到了一个PreparedStatementTest,
但是PreparedStatement是否提高效率,取决于jdbc驱动的具体实现。
该类中有一个bug,如下这块:
finally {
try {
stmt.close();
pstmt.close();
conn.close();
} catch (Exception e) {
}
}
上应当是
finally {
try {
if(stmt!=null) { stmt.close();
}
if(pstmt!=null) {pstmt.close();
}
if(conn != null) {conn.close();
}
} catch (Exception e) {
}
}
否则,如果conn.createStatement()抛出异常,stmt未赋值
在finally部分调用stmt仍然是异常,导致conn不会close().
觉得作者玩jdbc时间太短,没有碰到过这种情形。所以这一部分最好去掉。
jdbc陷阱很多,本书没必要触及自己不熟悉的区域。
此外,Statement那个循环体应当手工优化一下,使用StringBuffer为好。也算是本书前后一致的做法。
不过这里开销主要在statement.execute,优化这个没什么大用。
| 我要写评论 |
| 查看所有评论交流(共10条) |








点击看大图




加载中...


