一个顶好用的 JavaDoc Api 查看软件 JavaDOCHelper

一般我们查阅 JDK API 都是用的 CHM 版的帮助文件,记得想想刚接触 Java 那时要在网上找个 CHM 版的 JDK 帮助文档都要费几番周折,甚至还经常在线查某个 AP I说明。现在好了,连中文的 JDK API 帮助都能及时出来,要找个 CHM 版的帮助也方便多了。

可是对于大多数的 Java 组件都只提供 HTML 版的 JavaDoc API 帮助,查阅起来很不顺手。没有快速索引查找的功能,而且看不同组件的 API 帮助需要同时打开多个窗口。

下面向大家介绍一款软件,JavaDOCHelper,它不仅能提供像 CHM 文件那般快速索引查找,而且提供一个界面里查阅多个 Java Doc API。该软件未注册版本,只限 30 次的查找功能的使用(不是指索引),现已对该软件完成了破解,并提供更换安装目录时更方便的提示功能,以及免安装,EXE 文件无控制台方式启动。 阅读全文 >>

Java中类C/C++的sizeof()操作,知晓实例大小

在C/C++中有sizeof()操作,可轻易获知某个类型或实例占用内存大小,sizeof(int) 或者 sizeof(new TestClass)。可是Java中可没有这么直观的方法可用。

因本人看过不少人写代码总爱写成

List userList = new ArrayList();   //注:声明时即初始化一个空 ArrayList
userList = userDao.getAllUsers();  //注:方法getAllUsers()中会生成一个ArrayList的

上面就造成平白多了一个空的 ArrayList(),创建完后即刻就推向GC处置,我就在想这样一个空的 ArrayList 会占用多少内存,于是找来了 Optimizeit 观察后发现一个空的 ArrayList 要占去 24b 内存。那 Java 中有没有更便的捷的方法呢,于是在网上 google "java sizeof",引出不少话题。 阅读全文 >>

对iTracker的小修正,使之正确显示描述中的空格(解决代码退格显示)

ITracker 是基于 J2EE 的 issue/bug 跟踪系统,支持多用户、多项目、邮件通知等,更多特征请查看http://www.cowsultants.com/features.html 。这里还有一个在线 demo 可以试用,用户名和密码都是 guest。

类似的产品还有 ScarabELIPSBugtrackerBugRatAbukyTrackItjTracBugzillaJTracProject Dune.

iTracker确实是个好东西,但对一个东西过熟了,难免期望值就更高了。如果你用 iTracker 作过 Code Review 的话,你就会发现,你贴上去的代码,浏览显示出来的是代码中的空格少了,尤其是没了退格规范显示了。例如,你贴的代码是: 阅读全文 >>

利用JDOM把两个XML合并生得到一个Document对象

通常一些应用框架都会用 XML 作为配置,而且很多都支持多个 XML 文件,例如 Struts 框架可以配置多个 struts-config-xxx.xml 文件,Spring 也允许你用多个 applicationContext-xxx.xml 文件,再比如 DWR 也是可以由多个 dwr-xxx.xml 依功能或其他方式分开来配置。我们知道,这样的多个 XML 有相同的规范定义,那么程序如何一并解析它们呢?我看过 ActionServlet 是对 struts-config-xxx.xml 逐个解析的。我这里介绍的一种方法是把那些有着相同规范定义的 XML 合成一个 Document 然后对这个 Document 对象进行处理,如 XPath 查找、进行 DOM 对象操作,就不需要每次到多个 Document 中去查找一遍。

众所周知,对 XML 的操作有两种方式,DOM:XML 映射在内存中一颗树;SAX:基于事件的方式。常用的 XML Java 解析组件有 DOM4J(Apache的)、JDOM、和JAXP(Sun的),它们都提供了 DOM 和 SAX 实现和 Xpath 查找。 阅读全文 >>

利用 JWhich 掌握类路径,确定类路径中的什么类将被载入

下面是我 2002 年刚开始学 Java,因不太理解 Classpath,常被它困扰时看的一篇文章,拿出来与初学者共勉。

作者 Mike Clark

摘要
尽管 Java 类路径看上去是个很简单的概念,但它也经常是困惑和麻烦的源泉。本文将向您展示一个简单的工具,它可以清楚地确定类装载器从您的类路径中载入了什么 Java 类。(1,000 字)
开发人员在处理 Java 类路径时经常会遇到一些尴尬:他们不总是很清楚类装载器将要载入什么类,尤其是在应用程序的类路径被大量的路径和文件充斥的情况下更是如此。在本文中,我将介绍一个工具,它可以显示被载入的类文件的绝对路径。 阅读全文 >>

在 Java 中操作 Windows 注册表

想做个东西,要获IE的代理设置,看网上介绍基本都是读取注册表的方式,没提到说借助于特定的 Win32 API。而 JDK 提供操作 Windows 的 API 也就是 Preferences,因为这个 API 也是跨平台的,所功能比较弱,在 Win32 下只能用来操作 HKCU\Software\JavaSoft 和 HKLM\Software\JavaSoft 下及子节点的数据。

自由访问注册表其他键的值光用 Java 是做不到的,必然方案就是 JNI,一开始也自己来实现这个 JNI 动态库,后来懒了一下,想着网上应该用现成的实现,Google 了一下,果然不出所望,就是 http://www.trustice.com/java/jnireg/index.shtml 下的 registry-3.1.3.zip(包含源代码)。可以利用它访问、修改、导出注册表项到文件等。解开 registry-3.1.3.zip,在 bin 目录中可以看到两个文件 ICE_JNIRegistry.dll 和 registry.jar,动态库就是本地代码实现。

阅读全文 >>

java版本的escape和unescape函数

有时候我们在处理页面提交过来的中文产生乱码不容易解决时,比如页面选择了别的编码,而 AJAX 是用的 UTF-8 字符集,我们可以对要发送到服务器的中文用 Javascript 的 escape 函数进行编码,然而 Java 中又没有相应的 unescape 函数。

而且 Java 中的 java.net.URLDecoder/java.net.URLEncoder 也对应不上 javascript 的 encodeURI/decodeURI 和 encodeURIComponent/decodeURIComponent 函数。

所以我去网上找来了一段能够与 Javascript 的 escape/unescape 函数的代码。 阅读全文 >>

Spring 整合 Hibernate 的一处简化配置[转]

在过去使用 Spring 整合 Hibernate 的时候,都是用这样的配置方式。

阅读全文 >>

jsp:include page="" 和 include file="" 的区别

下面用三个实验,更清淅的理解 <jsp:include page=""/> 和 <%@ include file="" %> 的区别。
<jsp:include page=""/> 包含被 include 文件的输出
<%@ include file="" %> 包含被 include 文件的代码

a.jsp 内容:

b.jsp 内容:(空)

_a.class a.jsp编译成类的内容: 阅读全文 >>

Hibernate 保存对象出现 org.hibernate.NonUniqueObjectException 及解决

Hibernate save 在 session 中已存在相同 OID(主键) 的对象,会出现异常,详细内容如下:

Exception in thread "main" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.unmi.LoanDetail#1]
 at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:168)
 at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
 at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
 at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
 at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient 阅读全文 >>