
Java
文章平均质量分 77
hdy007
这个作者很懒,什么都没留下…
展开
-
61条面向对象设计的经验原则(上)
你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。 -----Arthur J.Riel (1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)转载 2006-12-04 14:16:00 · 783 阅读 · 0 评论 -
Hashtable和HashMap的区别
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:Map Col原创 2006-12-05 11:51:00 · 892 阅读 · 0 评论 -
JMX规范(一):JMX概述
JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 JMX体系结构分为以下四个层次: 1)设备层(Instrumentation Level):主要定义了信息模型。在JMX中,各种转载 2006-12-05 13:02:00 · 1496 阅读 · 0 评论 -
JMX规范(四):分布服务层
当前,SUN并没有给出这一层的具体规范,下面给出的只是一个简要描述。 该层规定了实现JMX应用管理平台的接口。这一层定义了能对代理层进行操作的管理接口和组件。这些组件能: 1)为管理应用程序提供一个接口,以便它通过一个连接器能透明和代理层或者JMX管理资源进行交互。 2)通过各种协议的映射(如SNMP、HTML等),提供了一个JMX代理和所有可管理组件的视图。 3)分布管理信息,以便构造一个分转载 2006-12-05 13:12:00 · 981 阅读 · 0 评论 -
JMX规范(六):JMX的当前实现及应用
自从SUN发布了JMX规范,许多大公司纷纷行动起来,实现规范或者实现相应的基于JMX的网络管理系统,下面列出了当前的主要实现及应用情况: 1)SUN为JMX规范了作出了相应的参考实现,并在此基础上开发了一个全新的用于网络管理的产品JDMK(Java动态管理工具集),其中定义了资源的开发过程和方法、动态JMX代理的实现、远程管理应用的实现。同时,JDMK也提供了一个完整的体系结构用来构造分布式的转载 2006-12-05 13:15:00 · 1263 阅读 · 0 评论 -
代码复用的规则(上)
代码复用是绝大多数程序员所期望的,也是OO的目标之一。总结我多年的编码经验,为了使代码能够最大程度上复用,应该特别注意以下几个方面。 对接口编程 "对接口编程"是面向对象设计(OOD)的第一个基本原则。它的含义是:使用接口和同类型的组件通讯,即,对于所有完成相同功能的组件,应该抽象出一个接口,它们都实现该接口。具体到JAVA中,可以是接口(interface),或者是抽象类(a转载 2006-12-05 13:53:00 · 901 阅读 · 0 评论 -
ant的使用(下)
四:编写build.xmlbuild.xml相当Linux下的makefile,具体的实现都在build.xml中实现。我给给例子说明一下。build.xml================================================================com.bingo,com.bingo.database,com.bingo.转载 2006-12-05 15:09:00 · 918 阅读 · 0 评论 -
分清Vector、ArrayList、LinkedList
为全面分析这些类之间的性能差异,我们必须知道它们的实现方法。因此,接下来我首先从性能的角度出发,简要介绍这些类的实现特点。 一、Vector和ArrayList的实现 Vector和ArrayList都带有一个底层的Object[]数组,这个Object[]数组用来保存元素。通过索引访问元素时,只需简单地通过索引访问内部数组的元素:public Object get(int原创 2006-12-06 12:57:00 · 981 阅读 · 0 评论 -
被“哈希”的Java
每个Java对象都有hashCode()和 equals()方法。许多类忽略(Override)这些方法的缺省实施,以在对象实例之间提供更深层次的语义可比性。在Java理念和实践这一部分, Java开发人员Brian Goetz向您介绍在创建Java类以有效和准确定义hashCode()和equals()时应遵循的规则和指南。您可以在讨论论坛与作者和其它读者一 同探讨您对本文的看法。(您还可以点击原创 2006-12-06 15:22:00 · 887 阅读 · 0 评论 -
61条面向对象设计的经验原则(下)
你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。 -----Arthur J.Riel (31)在类的构造函数中实现语义约束时,把约束测试放在构造函数领域所允许的尽量深的包层次中。 (32)约束所依赖的语义信息如果经常改变,那么最好放在一个集中式的第3方对象中。 (33)约束所依赖的语义信息如果转载 2006-12-04 14:18:00 · 866 阅读 · 0 评论 -
设计模式之Observer
Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本站所关注的是Java在电子商务系统中应用,因此想从电子商务实例中原创 2006-12-04 17:38:00 · 767 阅读 · 0 评论 -
实战体会Java多线程编程(二)
synchronized 关键字到目前为止,我们看到的示例都只是以非常简单的方式来利用线程。只有最小的数据流,而且不会出现两个线程访问同一个对象的情况。但是,在大多数有用的程序中,线程之间通常有信息流。试考虑一个金融应用程序,它有一个 Account 对象,如下例中所示:一个银行中的多项活动public class Account { String holderName;转载 2006-12-04 17:58:00 · 891 阅读 · 0 评论 -
深入探讨Iterator模式
java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很多泛型代转载 2006-12-05 10:49:00 · 679 阅读 · 0 评论 -
Java容器类List和Set分析
容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的Joshua Bloch进行了重新设计,丰富了容器类库的功能。 Java2容器类类库的用途是“保存对象”,它分为两类: Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。 Map----一组成对的“键值对”对象,即其元素是成转载 2006-12-05 10:50:00 · 848 阅读 · 0 评论 -
探究需求管理的本质
本文旨在探究需求管理的本质,需求管理所要涉及的任务在文中将适时提及,以阐释"需求管理之需求(requirements for requirements)"的涵义。☆概要 需求管理恰如裁缝的量体裁衣,它直接关系到最终产品的成型。仅从字面出发,如果一个产品满足了客户需求,那它无疑就是成功的。需求管理的过程,从需求分析开始贯穿整个项目始终,力图实现最终产品同需求性的最佳结合(参见Figure 1转载 2006-12-05 13:24:00 · 965 阅读 · 0 评论 -
代码复用的规则(下)
消除case / if语句 要尽量避免在代码中出现判断语句,来测试一个对象是否某个特定类的实例。通常,如果你需要这么做,那么,重新设计可能会有所帮助。我在工作中遇到这样的一个问题:我们在使用JAVA做XML解析时,对每个标签映射了一个JAVA类,采用SAX(简单的XML接口API:Simple API for XML)模型。结果,代码中反复出现了大量的判断语句,来测试当前的标签类型。为此转载 2006-12-05 13:56:00 · 859 阅读 · 0 评论 -
10年回顾:世界各地开发高手谈Java (1)
到今年五月,Java已经走过了它辉煌的十年。我们邀请了世界各地的开发高手一同回顾Java语言发展的第一个十年,评 析她今天所处的位置并预测其今后的发展趋势。与会者(包括知名IT企业Sun、IBM、BEA及Borland等)反映各异,但有一点是共同的?? Java的地位将一如既往举足轻重。 一、简介 2005年5月标记着自从Sun第一个引入Java技术以来经 历了整整10个年头。在过去的10转载 2006-12-06 11:02:00 · 856 阅读 · 0 评论 -
10年回顾:世界各地开发高手谈Java (2)
二、客户端Java及开发工具选择 3.你用Java编写过多少代码?估计你将来的工作有多少会用Java实现? 几乎所的的回答者声称Java是他们主要的产品编码工具,大多数人选择他们的Java使用率超过70%。没有人认为他们下一步的Java开发使用率会降低。 "去年,我们利用Java 技术开发出了800多个商业产品。几乎我们所有的中间件都依赖于Java运行时刻库。"-IBM的Rod Sm转载 2006-12-06 11:04:00 · 874 阅读 · 0 评论 -
抽象类与接口的区别
有以下几个方面:1 自身的定义不同 抽象类可以有属性,接口即使有属性也必须是为常数抽象类是用来继承的,接口是用来实现的2 与使用他们的类的关系不同 抽象类的方法必须实现,而接口则可以不实现 抽象类与子类是父子关系,而接口跟类是没有任何关系的,接口可以让任何类去实现他们的本质区别体现在他们对于一个系统的模型的理解不同转载 2006-12-04 14:55:00 · 1686 阅读 · 0 评论 -
实战体会Java多线程编程(一)
在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持。本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观。读完本文以后,用户应该能够编写简单的多线程程序。 为什么会排队等待?下面的这个简单的 Java 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。此外,因为所需的资源 ?转载 2006-12-04 17:57:00 · 957 阅读 · 0 评论 -
JMX规范(二):设备层
该层定义了如何实现JMX管理资源的规范。一个JMX管理资源可以是一个Java应用、一个服务或一个设备,它们可以用Java开发,或者至少能用Java进行包装,并且能被置入JMX框架中,从而成为JMX的一个管理构件(Managed Bean),简称MBean。管理构件可以是标准的,也可以是动态的,标准的管理构件遵从JavaBeans构件的设计模式;动态的管理构件遵从特定的接口,提供了更大的灵活性。转载 2006-12-05 13:06:00 · 1546 阅读 · 1 评论 -
JMX规范(三):代理层
代理层是一个运行在Java虚拟机上的管理实体,它活跃在管理资源和管理者之间,用来直接管理资源,并使这些资源可以被远程的管理程序所控制。代理层由一个MBean服务器和一系列处理被管理资源的服务所组成。下图表示了代理层的组成: MBean服务器Mbean服务器为代理层的核心,设备层的所有管理构件都在其注册,管理者只用通过它才能访问管理构件。 管理构件可以通过以下三种方法实例化和注册: 1)通转载 2006-12-05 13:09:00 · 1289 阅读 · 0 评论 -
JMX规范(五):附加管理协议API
该层提供了一些API来支持当前已经存在的一些管理协议。 这些附加的协议API并没有定义管理应用的功能,或者管理平台的体系结构,他们仅仅定义了标准的Java API和现存的网络管理技术通信,例如SNMP。 网络管理平台和应用的开发者可以用这些API来和他们的管理环境进行交互,并将这个交互过程封装在一个JMX管理资源中。例如,通过SNMP可以对一个运行有SNMP代理的交换机进行管理,并将这些管转载 2006-12-05 13:13:00 · 979 阅读 · 0 评论 -
ant的使用(上)
一:介绍:ant 是jakarta的一个编译工具,如果你了解linux/Unix下的makefile你就很容易理解ant的用途了。ant最适合你使用UltraEdit(EditPlus)写java程序,然后你使用ant去编译,同时javadoc ,生成一个jar,war,实现文件的copy都可以在build.xml通过不同的tager去实现,还是很方便的一个东东强烈推荐是使用。二:下载你可以从下面转载 2006-12-05 15:08:00 · 978 阅读 · 0 评论 -
Spring AOP中文教程
AOP正在成为软件开发的下一个圣杯。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。 为了理解AOP如何做到这点,考虑一下记日志的工作。日志本身不太可能是你开发的主程序的主要任务。如果能将“不可见的”、通用的日志代码注入主程序中,那该多好啊。AOP可以帮助你做到。 Spring framework是很有前途的AOP技转载 2006-12-05 15:22:00 · 2074 阅读 · 0 评论 -
10年回顾:世界各地开发高手谈Java (3)
三、开源,JCP和对Java的希望列举 6.JCP和开源社群谁在Java更新上的贡献更大? "到目前为止,应该说是开源的贡献更大。而JCP在进行实际的开发实践之前,推崇标准化的作用。EJB,日志以及持久性一直是JCP中的灾难。实际上 JCP在抛弃着Java的根基。很难的问题在拐弯抹角变得易于解决,而容易的问题反而在变得越来越难于解决了。"-Bruce Tate "开放源码的执转载 2006-12-06 11:05:00 · 870 阅读 · 0 评论 -
Java语言中的两种异常
Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的。 它们的不同之处表现在两方面:机制上和逻辑上。 一、机转载 2006-12-07 13:53:00 · 1003 阅读 · 0 评论 -
Decorator模式在java.io包中的应用
JDK为程序员提供了大量的类库,而为了保持类库的可重用性,可扩展性和灵活性,其中使用到了大量的设计模式,本文将介绍JDK的I/O包中使用到的Decorator模式,并运用此模式,实现一个新的输出流类。 Decorator模式简介 Decorator模式又名包装器(Wrapper),它的主要用途在于给一个对象动态的添加一些额外的职责。与生成子类相比,它更具有灵活性。 有时候,我们需要为转载 2006-12-07 13:59:00 · 834 阅读 · 0 评论 -
日历类Calendar
在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在JDK1.1中提供了类Calendar来完成第一种功能,类DateFormat来完成第二项功能。dateFormat是java.text包中的一个类。与Date类有所不同的是,DateFormat类接受用各种语言和不同习惯表示的日期字符转载 2006-12-07 15:08:00 · 1265 阅读 · 0 评论 -
常用算法设计方法之递归
递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,转载 2006-12-17 21:21:00 · 1157 阅读 · 0 评论 -
web.xml配置的详细说明
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。 DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。 所有部署描述符文件的顶层(根)元素为we转载 2006-12-17 21:31:00 · 1026 阅读 · 0 评论 -
野马的性格 Java SE 6.0新特性体验
Mustang(也称作Java SE 6),如今刚进入其第二个测试阶段。本文作者将同你进一步探讨这个新的发行版本中所提供的许多新的特征(从控制台I/O和存取权限控制方法到系统托盘API和表格排序和过滤等)。 一、 引言 Mustang(也称作Java SE 6),如今刚进入其第二个测试阶段。本文中让我们一起进一步探讨这个新的发行版本中所提供的许多新的特征(从控制台I/O和存取权限控制方法到系统转载 2006-12-18 15:53:00 · 1224 阅读 · 0 评论 -
Java SE 6.0新功能:让界面更加绚丽
在这篇文章中我将介绍Java SE 6.0另外几种新的GUI功能。这些功能是: 带有排序和过滤功能的JTable。 增强的JTabbedPane组件 增强的打印功能 增强的拖放功能 带有排序和过滤功能的JTable 在Java SE 6中除了java.awt被更新外,javax.swing同时也有了很大的改进。在C/S转载 2006-12-19 16:08:00 · 1215 阅读 · 0 评论 -
Java性能
D.1 基本方法 只有正确和完整地检测了程序后,再可着手解决性能方面的问题: (1) 在现实环境中检测程序的性能。若符合要求,则目标达到。若不符合,则转到下一步。 (2) 寻找最致命的性能瓶颈。这也许要求一定的技巧,但所有努力都不会白费。如简单地猜测瓶颈所在,并试图进行优化,那么可能是白花时间。 (3) 运用本附录介绍的提速技术,然后返回步骤1。 为使努力不至白费,瓶颈的定位是至关重要的一环。D转载 2006-12-14 14:26:00 · 777 阅读 · 0 评论 -
java中Timer的使用
在应用开发中,经常需要一些周期性的操作,比如每5分钟检查一下新邮件等。对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。比如下面的代码每5分钟检查一遍是否有新邮件:1. private java.util.Timer timer;2. timer = new Timer(true);3. timer.schedu转载 2006-12-18 15:57:00 · 3254 阅读 · 0 评论 -
java读文件的一点见解
做开发的经常碰到文件的操作,特别是文件的“读”操作。在java中,读文件有很多种方法,有FileReader、BufferReader等,当然,各种方法的效率是不一样的,FileReader经BufferReader包装后效率明显提高,在个别时候,我们可以用java.nio包进行文件操作,如下: private static String fileReader(File fileName)原创 2006-12-19 14:17:00 · 3002 阅读 · 0 评论 -
新java:野马的6大新特性
新java 2平台——标准版6.0,包含6大新特性: 1. Java编程语言和工具:扩展平台功能的新JSR和工具; 2. 安全:新增支持XML数字签名,整合Java Generic Security Services及Kerberos;网络,支持国际域名和资源标识符和网络参数标题访问; 3. java管理扩展; 4.服务:支持动态跟踪运行时支持,j控制台更友好,改善诊断,改转载 2006-12-18 15:50:00 · 1019 阅读 · 0 评论 -
减少对象的创建提高java性能
许多通常的 Java 性能问题都起源于在设计过程早期中的类设计的思想, 早在许多开发者开始考虑性能问题之前. 在这个系列中, Brian Goetz 讨论了通常的 Java 性能上的冒险以及怎么在设计时候避免它们. 在第二部分, 他讨论了减少临时对象创建的一些技术。 虽然许多程序员把性能管理一直推迟到开发过程的最后, 性能考虑应该从第一天起就和设计周期结合在一起. 这个系列探索一些转载 2006-12-18 16:16:00 · 3913 阅读 · 1 评论 -
深入Java的异常机制
由于本文旨在探讨Java"异常机制"的深层原理,因此关于"异常"的使用方法都不做详细说明。首先看一段非常熟悉的用于打开一个文件的C程序段: FILE *fp; fp=fopen(filename,"rw"); if(fp==NULL){ printf("cannot open file/n"); exit(0); } 在这段转载 2006-12-21 09:00:00 · 785 阅读 · 0 评论 -
深入visitor模式
一,访问者模式的角色:抽象访问者:声明一个或者多个访问操作,形成所有的具体元素都要实现的接口具体访问者:实现抽象访问者所声明的接口抽象节点:声明一个接受操作,接受一个访问者对象作为参量具体节点:实现了抽象元素所规定的接受操作结构对象:遍历结构中的所有元素,类似List Set等二,在什么情况下应当使用访问者模式访问者模式应该用在被访问类结构比较稳定的时候,换言之系统很少出现增加新节点的情况。因为访转载 2006-12-21 12:03:00 · 725 阅读 · 0 评论