
java
文章平均质量分 74
dongliheng
这个作者很懒,什么都没留下…
展开
-
Command模式
Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse.Command定义n 将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。这是一种两台机器之间通原创 2007-06-23 09:11:00 · 580 阅读 · 0 评论 -
线程无处不在
线程无处不在即使你的程序没有显式地创建任何线程,框架也可能为你创建了一些线程,这些线程调用的代码必须是线程安全的(thread-safe)。这一点给开发人员的设计和实现赋予了更重要的一份责任,因为开发线程安全的类要比非线程安全的类需要更加仔细,进行更多的分析。每一个Java应用程序都使用线程。当JVM启动后,它创建一些线程来进行自身的常规管理(垃圾回收,终结处理),以及一个运行main原创 2007-06-23 22:56:00 · 922 阅读 · 0 评论 -
Java Swing的基础知识全接触
当我们学习过了java中的基本语法,并且熟悉java的面向对象基础以后,我们就可以开始简单的Swing程序的设计,用过Vb的朋友可能会被它的简单的设计用户界面方法所吸引,只需要拖几个控件到窗体上,为每个空件编写event就可以简单的实现界面设计.但是强大的java也不比vb逊色.同样可以设计出精美的界面. 2.Swing概述: 当java1.0刚刚出现时还没有swing,当时的GUI基本编原创 2007-06-23 23:25:00 · 1036 阅读 · 0 评论 -
比较Map的性能
单线程化的ConcurrentHashMap的性能要比同步的HashMap的性能稍好一些,而且在并发应用中,这种作用就十分明显了。ConcurrentHashMap的实现,假定大多数常用的操作都是获取已存在的某个值,因此它的优化是针对get操作,提供最好的性能和并发性。同步的Map实现中,可伸缩性最主要的阻碍在于整个Map存在一个锁,所以一次只有一个线程能够访问map,从另一方面来看,Conc原创 2007-06-23 23:37:00 · 3520 阅读 · 0 评论 -
JDOM
java + XML = JDOM ! 这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了 JDOM技术,题目就是JDOM Makes XML Easy。 获得并安装JDOM 在http://jdom.org可以下载JD原创 2007-06-23 08:37:00 · 615 阅读 · 0 评论 -
线程安全
不可变性为了满足同步的需要,另一种方法是使用不可变对象[EJ Item13]。到目前为止,几乎所有我们已经描述过的原子性与可见性的危险,比如访问过期数据,未及时更新或者观察一个处于不一致状态的对象,它们都产生于多线程下各种难以预测的行为协同工作,多个线程总试图同时访问相同的可变状态。如果对象的状态不能被修改,这些风险与复杂度就自然而然地消失了。创建后状态不能被修改的对象叫做不可变对象。不可原创 2007-06-23 23:10:00 · 1582 阅读 · 0 评论 -
线程锁
通过使用线程安全对象来管理Servlet的全部状态,可以维护Servlet的线程安全性,这样我们只能在Servlet中加入一个状态变量。但是我们如果想加入更多的状态,可以仅仅加入更多的线程安全的状态变量吗?想象下面的情形:我们缓存最新的计算结果,以应对两个连续的客户请求相同的数字进行因数分解,希望由此提高Servlet的性能。(这未必是一个有效的缓存策略;在5.6节我们会提供一个更好的原创 2007-06-23 23:15:00 · 7116 阅读 · 1 评论 -
为什么要用框架
1.什么是模式? 模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。 Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。 模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式原创 2007-06-23 23:29:00 · 3752 阅读 · 0 评论 -
瘦客户机框架简介
瘦客户机框架(Thin Client Framework,TCF)是一种用于 java 客户机应用程序的轻量级、灵活和功能强大的编程框架。在这一由两部分组成的系列文章中,您将从它的两位作者那里了解 TCF。请跟随 Barry Feigenbaum 博士和 PeterBahrs 博士,他们使用详细的讨论、工作示例以及生动的代码样本向您介绍了 TCF 体系结构、设计和实现。瘦客户机框架(TCF)是原创 2007-06-23 23:34:00 · 2561 阅读 · 0 评论 -
Class.forName神秘吗
Class.forName神秘吗?有人觉得Class.forName很神秘,神秘不在于本身,就是打开其编码研究到二进制也不能达到目的,它的神秘之处是因为应用在一个恰当之处,就象一块普通布没什么,但是如果从后面变出花了,你觉得这块布神奇了,Class.forName神奇之处在于其隐藏了对象创建,也一种是工厂模式实现。同样,对于Collection,本来就是那几个种类List和Map,但是发现使用起来原创 2007-06-24 23:04:00 · 612 阅读 · 0 评论 -
内部类和匿名类优化Java代码
java 1.1通过对Java语言规范进行修改,显著简化了一些实用结构的实现。在那些修改中,最引人注目的就是内部类和匿名类。如运用得当,它们可使程序更易理解和维护。下面来看看这些特性具体是如何工作的,如何正确使用它们,以及如何避免一些常见的错误。 内部类 简单地说,“内部类”是在另一个类的内部声明的类。从Java 1.1开始,你可在一个类中声明另一个类,这与声明字段和方法非常相似。包装了内转载 2007-06-23 08:08:00 · 581 阅读 · 0 评论 -
Amdahl定律
有些问题使用越多的资源就能越快地解决——越多的工人参与收割庄稼,那么就能越快地完成收获。另一些任务根本就是串行化的——增加更多的工人根本不可能提高收割速度。如果我们使用线程的重要原因之一是为了支配多处理器的能力,我们必须保证问题被恰当地进行了并行化的分解,并且我们的程序有效地使用了这种并行的潜能。大多数并发程序都与农耕有着很多相似之处,由一系列并行和串行化的片断组成。Amdahl定律描述了在一原创 2007-06-23 23:16:00 · 1439 阅读 · 0 评论 -
JAVA中把WORD文档直接转换成html
jacob是java和windows下的com桥,通过它我们可以在java程序中调用COM组件。如果你的JDK是1.4,那你需要下载jacob1.9的jni库才能正常运行,早期版本在JDK1.4下有些问题。package com; /*** 〈p〉Title:Word文档转html类〈/p〉* 〈p〉Description: 〈/p〉* 〈p〉Copyright:() 2002〈/p〉* @aut原创 2007-06-21 22:03:00 · 945 阅读 · 0 评论 -
Java布局器自动布局画界面
很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题。其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活。下面我就举一个例子。 首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout。 第二,在组件盘内点选Swing Contai原创 2007-06-23 07:16:00 · 2096 阅读 · 0 评论 -
线程安全发布
安全发布目前为止我们都关注确保对象不会被发布。比如,让对象限制在线程中或者另一个对象的内部。当然,有时我们又的确希望跨线程共享对象,这时,我们必须安全地共享它。很不幸,像清单3.14那样简单地将对象的引用存储到公共域中,还不足以安全地发布它。清单3.13 使用到不可变容器对象的volatile类型引用,缓存最新的结果@ThreadSafepublic class Vol原创 2007-06-23 23:12:00 · 2075 阅读 · 1 评论 -
独占锁, 避免热点域,分离锁
缩小锁的范围(“快进快出”)减小竞争发生可能性的有效方式是尽可能缩短把持锁的时间。这可以通过把与锁无关的代码移出synchronized块来实现,尤其是那些花费“昂贵”的操作,以及那些潜在的阻塞操作,比如I/O操作。我们很容易观察到长时间持有“热门”锁究竟是如何限制可伸缩性的;我们在第2章看到了SynchronizedFactorizer的例子。如果一个操作持有锁超过2毫秒并且每一个操作原创 2007-06-23 23:21:00 · 3430 阅读 · 0 评论 -
游戏软件比企业软件复杂
为什么说企业软件时复杂的?因为企业软件是为应付需求而变,与游戏软件等软件相比,虽然一个游戏软件在代码数量级别上比企业软件复杂,但是游戏软件不必考虑跟随游戏用户需求变化,是游戏用户服务游戏设计规则;但是企业软件和其用户则相反,企业软件必须服从用户的变化,打个不是很确切的比喻:企业软件则类似市场经济中的市场人员,需要“看客户脸色”行事。而游戏软件则相反,类似以前朝南坐的政府人员;因此,企业软件在动态概原创 2007-06-24 23:03:00 · 719 阅读 · 0 评论 -
仅会算法就做企业软件吗
仅会算法就做企业软件吗?在实践中,通常表示一个树形关系通过编码实现,例如1122334455表示是代号为11类别下代号为22类别下的代号为33类别下的....然后,在软件各处通过分析这个类别编码获得树形关系,这种将将具体数据和业务耦合在一起做法是受到抨击的。那么如果我们要对树形关系的数据进行访问如何实现呢?首先我们将树形关系的访问分为两个部分:树形关系+功能实现。我们已经知晓树形结构的遍历,但是仅原创 2007-06-24 23:05:00 · 611 阅读 · 0 评论 -
垃圾回收机制
jsp+javabean能否满足100人使用?你这个问题其实分两种情况:1. 100同时使用?2. 总共100人使用,使用频度不高,如果是这个没有问题。下面讨论第一种情况:关键不在于你的CPU有多强,这里要了解一下Java运行原理。Java有一个垃圾回收机制,总是在内存剩余大概5%才启动,因为它中断权限最高,它运行,其他全部停止,因此,我们不希望垃圾回收机制频繁启动,那么就要控制内存不要触碰剩原创 2007-06-25 00:01:00 · 734 阅读 · 0 评论 -
基于Java语言解释器设计模式
一、引言 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的语法的情况。 二、定义与结构 解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。 在GOF的书中指出:如果一种特定类型的问题原创 2007-06-28 17:01:00 · 854 阅读 · 0 评论 -
正则表达式的概述及在JAVA中的使用方法
正则表达式的作用 提供更强大的字符串处理能力,测试字符串内的模式,例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或身份证号码模式。即数据验证替换文本可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 基于模式匹配从字符串中提取子字符串可以查找文档内或输入域内特定的文本。 在JAVA中使用正则表达式 正则表达式在字符串处理上有着强大的功能,sun原创 2007-06-28 17:06:00 · 732 阅读 · 1 评论 -
Java的class文件转为EXE文件的八种方法
将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET) 1. 从www.towerj.com获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。 2. 利用微软的SDK-Java 4.0所提供的jexegen.exe创建EXE文件,这个软件可以从微软的网站免费下载,地址如下: http://www.microsoft.com/java/downl原创 2007-06-28 17:10:00 · 811 阅读 · 0 评论 -
通过JDBC连接Oracle的十大灵活技术
Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。 1、在客户端软件开发中使用Thin驱动程序 在开发Java软件方面,Oracle的数据库提供了四种类型原创 2007-06-28 17:13:00 · 650 阅读 · 0 评论 -
Java SE6.0调用Java编译器的两种新方法
在很多Java应用中需要在程序中调用Java编译器来编译和运行。但在早期的版本中(Java SE5及以前版本)中只能通过tools.jar中的com.sun.tools.javac包来调用Java编译器,但由于tools.jar不是标准的Java库,在使用时必须要设置这个jar的路径。而在Java SE6中为我们提供了标准的包来操作Java编译器,这就是javax.tools包。使用这个包,我们可原创 2007-06-30 09:56:00 · 787 阅读 · 0 评论 -
J2EE技术中标准组件介绍
·Enterprise JavaBeans(EJB)技术使用一个组件模型来简化中间件应用程序的开发,它提供了对事务、安全性和数据库连接等服务的自动支持。(参见教程 “Enterprise JavaBean 基础”;参见 EJB 最佳实践 系列;阅读 “使用 EJB 3.0 java Persistence API 设计企业应用程序”。) ·Portlet Specification 定义了一套原创 2007-06-30 10:28:00 · 1177 阅读 · 0 评论 -
Java SE 6 在 HTTP 方面的新特性
2006 年底,Sun 公司发布了 java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马)。跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升。与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebServ原创 2007-07-01 11:22:00 · 627 阅读 · 0 评论 -
在WEB应用下实现定时任务的简便方法
在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段:p原创 2007-07-01 11:42:00 · 591 阅读 · 0 评论 -
基础知识:Java与XML-基础
JAXP API--嵌入不同的解释器 SAX解释器+DOM解释器+XSL转换器 javax.xml.parsers中加载XML文档的类: DocumentBuilder DocumentBuildrFactory SAXParser SAXParserFactory ===================================== SAX API SAX的XML解释器原创 2007-07-01 23:37:00 · 680 阅读 · 0 评论 -
Windows下读取网卡物理地址
这个例子使用了J2SE5.0的ProcessBuilder类执行外部的程序,相对于 Runtime.exec ,它更方便,可以设置环境变量等。 package com.kuaff.jdk5package;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.原创 2007-07-01 23:38:00 · 1289 阅读 · 0 评论 -
7个软件开发原则
关于代码重复最著名的单词是Kent Beck的Once And Only Once,也就是说软件操作的任何一个片断--不管是一个算法,一个常量集合,用于阅读的文档或者其他东西--应当只出现一次。 软件重复出现至少会导致以下问题: · 其中的一个版本会过期 · 代码的责任会四处散开,导致代码难以理解 · 当你修改代码时,需要重复修改很多地方,一不小心就会遗漏 · 你不能很好地进行性能优化 我以前原创 2007-07-02 00:30:00 · 995 阅读 · 0 评论 -
使用 Acegi 保护 Java 应用程序,第 2 部分: 使用 LDAP 目录服务器
了解了 Acegi 安全系统(Acegi Security System)的 基础知识 后,我们将介绍该系统的更加高级的应用。在本文中,Bilal Siddiqui 向您展示了如何结合使用 Acegi 和一个 LDAP 目录服务器,实现灵活的具有高性能的 java™ 应用程序的安全性。还将了解如何编写访问控制策略并将其存储在 ApacheDS 中,然后配置 Acegi 使其与目录服务器交互,从而实原创 2007-07-03 23:53:00 · 1164 阅读 · 0 评论 -
Java灵活的控制Word
java 控制Office 控件是非常麻烦的一件事情。 自从有了JACOB后,事情变得简单多了。 但是要实现Java灵活的控制Word还是一件非常麻烦的事情。 下面介绍几个WORD常见的对象以及一些典型的处理过程,希望对大家有帮助。 (请注意:JDK1.3.2运行 Jacob比较正常,JDK1.4有问题) /** WORD对象*/ private ActiveXComponent转载 2007-07-04 00:13:00 · 1517 阅读 · 1 评论 -
Servlet 3.0
Java EE 5.0 规范的笔墨在EJB3.0与Web Service上,随着万众期待的Struts2.0揭开面纱,Java在Web应用开发上便变得沉闷乏味起来。 在JavaOne2007 上有篇 The Future of the java Technology Web Tier宣讲了Sun的Servlet 3.0、REST、Comet计划,在大家渐渐失望的时候,又在前面吊了一个红萝卜。Se原创 2007-07-04 00:21:00 · 793 阅读 · 0 评论 -
Swing中的事件处理详细资料
监听器:ActionListener 方 法:actionPerformed 事 件:ActionEvent ● String getActionCommand() actioncommand是控件内部的一个字符串,用于标识控件的状态。 此函数可以取得控件的状态,从而决定到底该做什么。 ● int getModifiers() 取得“产生此事件时,用户同时按下的组合键” ● long getWhe原创 2007-07-04 18:33:00 · 772 阅读 · 0 评论 -
关于Eclipse无法重新编译java文件的处理方法之一
关于Eclipse无法重新编译java文件的处理方法之一 本人使用Eclipse开发已经有一年时间,在最近的项目中遇到了无法编译java文件的情况。在尝试过将项目中的“.project”文件覆盖;也尝试过修改buildpath,但在修该buildpath时出现了一个指向“classes12.jar”的错误,无法指向另一个文件夹。 经过几番尝试后,终于解决了问题,具体步骤如下原创 2007-07-04 18:36:00 · 6546 阅读 · 0 评论 -
Java/J2EE中文问题终极解决之道
Java中文问题一直困扰着很多初学者,如果了解了Java系统的中文问题原理,我们就可以对中文问题能够采取根本的解决之道。 最古老的解决方案是使用String的字节码转换,这种方案问题是不方便,我们需要破坏对象封装性,进行字节码转换。 还有一种方式是对J2EE容器进行编码设置,如果J2EE应用系统脱离该容器,则会发生乱码,而且指定容器配置不符合J2EE应用和容器分离的原则。 在Ja原创 2007-07-04 18:58:00 · 601 阅读 · 0 评论 -
Spring+Struts+Hibernate 架构中对Oracle9i中clob字段的处理之--新增数据篇
在最近的项目中,要使用oracle9i数据库,而且用到clob字段进行数据存取。以下是一个对clob字段插入数据库的处理。前提:1.ParProperty ppro 中有一个getBz()的方法,返回String2.UInfo ui是表对象,有一个pasw属性,是java.sql.Clob类型,对应的xml文件中是这样定义的:property name="pasw"原创 2007-07-04 19:20:00 · 739 阅读 · 0 评论 -
使用Java解析网络数据流的三种特殊方法
介绍用Java解析网络数据的三种特殊方法,希望对正在寻求这方面问题答案的读者有所帮助。 UTF8转换成GB2312 当我们在基于HTTP协议的JSP或Servlet的应用中获取数据或发送请求时,JVM会把输送的数据编码成UTF8格式。如果我们直接从HTTP流中提取中文数据,提取的结果为“????”(可能更多问号),为转换成我们能够理解的中文字符,我们需要把UTF8转换成GB2312,借助ISO原创 2007-07-06 21:12:00 · 550 阅读 · 0 评论 -
多版本软件构建策略分析
主要分析存在多个版本特性时的软件构建策略。多个版本特性在有些情况下仅仅对应于软件的本地化,复杂的情况就是不同版本中模块的业务逻辑、呈现策略都不相 同。这不仅在产品开发过程中增加成本,更多的成本将在维护阶段体现出来。因此,选择一个合适的构建策略对降低开发与维护成本都是非常重要的。一、传统软件构建策略不同的版本采用不同的代码,通过派生或直接使用不同的代码实现。每个版本都会对应到一份的这个版原创 2007-07-06 23:43:00 · 2806 阅读 · 0 评论 -
Util包下常用的数据结构介绍
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。 这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakH原创 2007-07-07 00:26:00 · 852 阅读 · 0 评论