2008-05-20

尝试用CoScripter做测试

关键字: coscripter
由于以前用过Selenium ,刚接触CoScripter 就发现两者有一些相似之处,同样是用于记录页面操作,生成脚本供重复执行;同样有一个Firefox的插件。最初还以为是IBM提供的一款测试工具,不过仔细看看CoScripter的介绍,才知道它是一个基于Web的流程处理器,用户可以将常用的网站操作流程录制成脚本,供自己日后使用,也可以分享给其他用户。 CoScripter官方有一个购书流程的demo,另外,下面的脚本是我用CoScripter Firefox插件录制的JavaEye登录步骤,大家可以尝试用一下:) http://services.alphaworks.ibm.com ...
2008-04-11

commons-validator在非Web环境中应用

关键字: validator, commons-validator
大部分人都应该知道commons-validator是跟着struts发展起来的,现在已经发布到1.3.1了,主要还是运用在form的验证方面,不过抛开这一部分,也可以在非Web应用环境中应用,不过也丢失了一些功能,比如:详细的报错信息;另外,validator是对表单进行验证,这样的一个Bean是一个平层结构的,如果要对嵌入的对象属性进行验证,则不容易办到。 附件是根据以上想法,做的一个demo,里面包括 Customer.java:被验证对象 Validator.java:验证器,封装commons-validator实现,并提供validate方法 ValidatorRule ...
2008-04-09

又一个Java窍门

关键字: trick, tip
作者的想法很简单,目的就是在return之前,以日志的形式将返回的信息打印出来。实现这个功能并不难,不过处理得非常巧妙得当(见修改后的代码)。 boolean method() { if (conditionA) return resultA; if (conditionB) return resultB; if (conditionC) return resultC; } 改写后的代码如下: boolean method() { boolean ...
2008-03-28

代码注释的13个技巧

关键字: documentation, comment, tips
作者:José M. Aguilar(西班牙语)英文译者:Timm Martin中文译者:numenzq 下面的13个技巧向你展示如何添加代码注释,这些技巧都很容易理解和记忆。1. 逐层注释为每个代码块添加注释,并在每一层使用统一的注释方法和风格。例如:针对每个类:包括摘要信息、作者信息、以及最近修改日期等针对每个方法:包括用途、功能、参数和返回值等在团队工作中,采用标准化的注释尤为重要。当然,使用注释规范和工具(例如C#里的XML,Java里的Javadoc)可以更好的推动注释工作完成得更好。2. 使用分段注释 如果有多个代码块,而每个代码块完成一个单一任务,则 ...
2008-03-15

真想不到StringBuilder这么强

关键字: string, stringbuffer, stringbuilder
今天在 jh's blog上看到一篇名为StringBuilder vs StringBuffer vs String.concat - done right的文章,本以为这个话题没什么意思,因为有太多的文章和最佳实践都提到了字符串连接操作和这几个类性能之间的比较,不过还是把这篇文件看了一遍,因为我想知道他是通过什么方法测试的和测试结果如何。 大家应该很清楚,字符串连接不论是用“+”,还是concat方法效果都是很差的;唯一有得一拼的就是StringBuffer和StringBuilder了,之前只知道StringBuilder是线程安全的,这是跟String ...
Eric Burke在文章里指出了其喜欢Java的十个原因,如下: 1、IDE提供了完善的功能,如:代码补全、上下文提示、文档帮助等功能;2、拥有超强的性能分析工具;3、Sun公司提供了JDK的源码,便于了解相关lib包是如何工作的;4、Java队并发的支持; 5、巨大的lib包集可供选择和使用;6、工作求职比较容易;7、运行时性能;8、开源文化;9、可移植性;10、如果你喜欢Java就有可能去google工作,因为Java是Google使用的语言之一。 看了以上十点,是否有自己的看法,可以谈谈自己对Java的看法:)
2008-02-25

Singleton V2.0

关键字: singleton
从这里看到的,逻辑比较简单,就是通过范型类来实现Singleton,以避免重复的Singleton代码。文中例程代码是通过LINQ实现的,本想改写成用Java实现,却发现Cannot make a static reference to the non-static type T以及Cannot instantiate the type T等问题,看来想在Java里通过Singleton V2.0的思想写个Singleton还不太现实,想“偷懒”少写代码都不行……
2008-02-25

线程安全的Singleton

关键字: singleton, 线程安全
比较老的一篇文章,Dejan Bosanac讲述了原有的Singleton存在的问题,以及如何编写一个线程安全的Singleton。  public class Singleton { static class SingletonHolder { static Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.instance; } } 
2008-02-19

log5j - 在log4j之上的时尚外观

关键字: log5j, log4j
日志器外观(facade)支持兼顾性能和容易使用的格式化消息输出,log5j包支持一个在log4j之上的‘现代化’(modernized)API接口。由于使用了JDK 1.5的特性,它提供一些扩展句法(因此命名为log5j)。名字很搞笑,读起也不顺口,log4j的4是for的谐音和简写,而log5j则是人为比log4j多一点功能,并且需要JDK 1.5的环境,则在4上加了1……。由此,可能会引起一些列项目的名字更新换代……。不过功能还是值得期待的,目前已经有release版了,在下个项目里就用定这个了。项目地址:h ...
2008-02-19

如何选择JBoss Rule规则文件类型?

关键字: jboss rule, drools, 规则引擎
最近在写JBoss Rule,的确比较平民化,上手快,容易理解。比我现在用的Oracle Rule Engine(当时也是由于领导要求用Oracle的,才舍弃了当时的Drools)具有更高的可维护性。 在学习过程中,了解到业务规则可以通过xml文件或drl文件实现,但不太确定这两种形式之间有什么区别?比如说文件数量和内容比较大时,在性能上是否有差异?后期的维护那个更方面?更友好?或者说在某种特定的情况下用那种比较好? 希望各位有时间经验的朋友一起交流一下:)
2008-02-03

An O(ND) Difference Algorithm

关键字: difference algorithm, merge
接着上次提到的jmeld使用的核心算法理论说,当初Myers用了非常精辟的方法解决了如何找到两个字符串的最大公共子串,以及找出最小编辑“脚本”来满足两个字符串相同, 这也可以是An O(ND) Difference Algorithm算法的处理思想。该算法的时间和空间复杂度都比较小,非常具有竞争力。 该算法设计巧妙的地方在于它将两个字符串的比较以图形的形式展示出,通过图形,可以很容易的看出两个字符串的最大公共子串,而通过D-path同样可以很容易的找出最小编辑点。以论文理的例子为例,两个字串分别为:A=abcabba,B=cbabac,将这两个字符串的每个字符为 ...
2008-02-01

火星上的D-Star算法(描述)

关键字: d*, d-star, algorithm
前一节讲到了D*算法的定义,把D*算法的基本概念掌握了,本节内容是学习D*的算法思想,该算法的核心函数是PROCESS-STATE和MODIFY-COST,其中PROCESS-STATE函数用于计算到达目标state的最佳路径;而MODIFY-COST用于当state改变时,重新计算任意两个state之间的arc cost,以及OPEN列表中受影响的state值。本文也将围绕这两个核心函数进行介绍。 首先,我们了解一下算法初始化操作,该操作分为以下几个步骤完成: 将所有state的tag设置为NEW,即tag(°)=NEW 将所有state的h(G)设置为0 ...
2008-01-30

火星上的D-Star算法(定义)

关键字: d*, d-star, algorithm
听闻D*算法是美国火星探测器使用的寻路算法,听起来挺炫,挺洋气的,标题也因此而得名。同时也忍不住在网上搜了搜,找到以下参考资料以及里面提到的两篇论文: http://www.embhelp.com/drew/algorithm/shortpath.htm Optimal and Efficient Path Planning for Partially-Known Environments The Focussed D* Algorithm for Real-Time Replanning 不过感觉Drew讲得不够详细,不够过瘾;因此把两篇论文啃了一遍,将学习到的知 ...
2008-01-08

jmeld

公司用的ClearCase merge时老是出问题,用kdiff3又会导致一些字符编码错误,老火得很,最近闲暇有空,google了一下,碰碰运气,结果还让我找到个可用的家伙:jmeld,一个图形化的桌面应用, 操作比较方面,并且速度也不慢,看了一下核心代码以及该实现的理论依据an o(nd) difference algorithm and its variations,方知该算法之美。http://citeseer.ist.psu.edu/myers86ond.html 
作者:曾巧(numenzq)     最近做的一个项目需要用Java程序读写Zip文件,迫于找不到好的工具类来处理,也只好用java.util.zip包提供的类来实现Zip文件的压缩和解压操作了,在这之前你需要了解以下几个基本概念:     ZipEntry:This class is used to represent a ZIP file entry.     ZipFile:This class is used to read entries from a zip file ...
作者:曾巧(numenzq) 持续集成(Continuous Integration)是极限编程(Extreme Programming)的最佳实践之一。它的首要目标就是及时反馈,能让开发和测试人员更早的发现和解决问题。为了达到这样的效果,你可以选择Anthill、Luntbuild、CruiseControl等工具来辅助你自动完成这些工作。正如标题上提到的,我们今天的主角是CruiseControl,主要会教你如何配置CruiseControl来对你的项目进行持续集成。主要的配置步骤如下:Ø      &nb ...
 作者:曾巧(numenzq)摘要程序中的字符编码问题和路径(相对路径,绝对路径)问题几乎是每个程序员,特别是Java开发人员在开发过程中都会遇到的;本文主要会提及开发过程经常会接触到的几个字符集:ASCII、ISO-8859-1、GBK、UTF-8等。    内容l         Java标准字符集l         US-ASCIIl      ...
作者:曾巧(numenzq) 摘要本文是该系列文章中的最后一篇文章,作为收尾,本文主要讲解如何通过Java反射来获得我们想要的注释信息,如果你对反射比较熟悉,那你应该能轻而易举的读取到想要的注释信息。 读取注释信息    当我们想读取某个注释信息时,我们是在运行时通过反射来实现的,如果你对元注释还有点印象,那你应该记得我们需要将保持性策略设置为RUNTIME,也就是说只有注释标记了@Retention(RetentionPolicy.RUNTIME)的,我们才能通过反射来获得相关信息,下面的例子我们将沿用前面几篇文章中出现的代码,并实现读取An ...
作者:曾巧(numenzq) 摘要在之前的文章中,我们已经了解了Annotation的基本概念,Java的内置Annotation和如何定制自己的Annotation;在这里我们将学习Annotation的另一个特性:元注释,它可以使我们更好的定制我们的注释。 内容l         限定注释使用范围l         注释保持性策略l        ...
作者:曾巧(numenzq) 摘要在前一篇文章中,已经向你介绍了Annotation的基本概念、作用、Java内置注释等,本文将向你展示在J2SE 5.0或更高版本中Annotation(注释)更强大的一面:自定义注释,开发人员可以根据需求编写特定功能的注释。通过对本文的学习,我们将了解到如何创建注释,使用自定义注释等知识。 内容l         定制注释类型l         使用定制的注释类型l &n ...
 作者:曾巧(numenzq) 摘要Annotation(注释)是J2SE 5.0引入的新功能,它被定义为JSR-175规范。简单地说,它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。本文只会介绍注释的基本概念,以及Java内置注释的使用方法;关于定制注释及其他高级主题将在下一篇文章中讲解。 正文编程的一个最新的趋势,尤其是在Java编程方面,就是使用元数据。直到JSR-175 提案的通过,并在J2SE 5.0上实现,你才有了使用注释的机会,在不断的发展和演进中,基于JSR-181的元数据批注标准,能让我们更轻松的开发和部署Web Service了 ...
作者:曾巧(numenzq)摘要A*算法是人工智能中的启发式搜索算法中的典型实践,此文主要介绍了A*算法的思想,并以一个简单的演示程序加以说明,适合于初学者阅读和学习。 正文   A*算法是人工智能运用在游戏中的一个重要实践,它主要是解决路径搜索问题。A*算法通过适当的估价函数(在下文中会提到),寻找到两点间的最短路径,它在一定程度上替代了像深度优先搜索(Deep First Search)和广度优先搜索(Breadth First Search)这样的盲目型搜索算法。    说到两点间的最短路径搜索算法,可能大家都会想到Dijkst ...
作者:曾巧(numenzq) 摘要XPath是XML文档内容寻址语言,由于XPath可应用于不止一个的标准,因此W3C将其独立出来作为XSLT(XSL Transformations)的配套标准颁布,它也是XPointer(XML Pointer Language)的重要组成部分。 正文在众多查询语言之中,结构化查询语言(SQL)是一种针对查询特定类型的关系库而设计和优化的语言。其他不那么常见的查询语言还有对象查询语言(OQL)和 XQuery。但本文的主题是 XPath,一种为查询 XML 文档而设计的查询语言。XPath由W3C制定的XML文档寻址标准,最近W3C发布了 ...
Java通讯框架,有时也被称为网络服务器,其实就是封装IO操作,并提供更高级的API接口。目前比较流行的框架就是:MINA、Cindy、QuickServer等。前段时间为了缩短开发时间,也在项目中加入了这些框架,从最开始使用QuickServer 1.4.7出现的报文接收不全异常;到用Cindy 2.4.4作为临时过渡,到最后确定使用MINA 1.0.1,也经历了一个艰辛而痛苦的时期。下面是整理的目前网上关于Java通讯框架比较好的文章,仅供大家参考。 循证架构之QuickServer篇作者:LeonW“循证架构”一词虽是新创,但也可算是新瓶装老酒了。Rod ...
作者:曾巧(numenzq) ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。这里提到了ProGuard的主要功能是压缩、优化和混淆,下面我就先介绍一下这些概念,然后再介绍ProGuard的基本使用方法。l         什么是压缩:Java源代码(.java ...
 作者:曾巧(numenzq)    最近在与银行做一些应用,由于特定环境的原因,只能用GB2312字符编码,大家都知道,在GB2312编码下,一个中文是占两个字节的,而在java中,字符的处理是用的Unicode编码,所以一个中文只占一个字节。这样的话,我想从String或StringBuffer中取出想要的中文字符就会有一些问题。下面举个例子来说明吧。 String str = "测试数据:正确读取String中指定长度的中文字符";System.out.println("content: " + s ...
原文地址:http://java.sun.com/developer/JDCTechTips/2006/tt0211.html#2日期:2006-02-11 2004年3月16日的技术技巧Best Practices in Exception Handling讲述了几个处理异常的最好实践。在该技巧中,你将学习另外一个处理异常的方法。我们是通过J2SE 5.0 新增的UncaughtExceptionHandler接口来处理。       UncaughtExceptionHandler名字意味着处理未捕获的异常。更明确的说, ...
级别:初级; 基本内容在上一篇文章里已经讲过如何搭建JSP+TOMCAT开发平台。这一篇文章主要会讲到关于jsp连接数据库的基础知识。分别与MySQL和Microsoft SQL Server 2000建立数据库连接,希望大家喜欢和支持。 系统开发平台配置关于JSP+TOMCAT开发平台的配置,在这里就不多提了,如果你任何问题可以参见我上一篇文章或与我联系。为了运行下面的实例,你得确保你机器里安装有MySQL和Microsoft SQL Server 2000,下面是下载软件和驱动的连接:1、MySQL 5.0.19http://dev.mysql.com/download ...
级别:初级; 基本内容首先是用J2SE+TOMCAT搭建开发平台,然后会用实例分别对javabean和servlet进行测试,同时也会谈到一些中文处理上的问题。文章内容可能会有点杂乱和零散,但这也是学习jsp最基础的知识,要想学好jsp还得靠自己多努力学习。 为什么要写这样一篇文章?认识我的朋友可能会知道,我平时只是写和翻译一些J2ME方面的开发的文章,而我为什么要写一篇关于JSP入门的文章呢?原因有二,其一,最近小弟也在学习一些与web相关的知识,有不少收获和心得,想告诉大家,好让后来者少走弯路,其二,有位好友最近正准备学习jsp方面的知识,便有了写这篇文章的想法。由于小 ...
    自IBM公司提供的跨平台GUI开发包SWT以来,越来越多受到广大程序员的亲睐,已经有不少程序员用它开发出美观、高效、实用的桌面应用程序。这让我们更有理由去探索SWT给我们带来的惊奇。         SWT在外观和性能上都超过了awt/swing,为什么这样说呢?下面简单的测试程序会让你一目了然。废话也不多说,让我们看程序。     下面让我们写一个简单的程序来测试一下,程序只做一件事,就是用Label显示”Hello Wor ...
numenzq
搜索本博客
存档
最新评论