〖Java〗
文章平均质量分 68
holy_phoenix
这个作者很懒,什么都没留下…
展开
-
在 Java 的泛型类型中使用通配符
在 Java 的泛型类型中使用通配符Java 从版本5起开始引入泛型(generics)机制。我们知道,Java 的泛型类型如同 java.lang.String,java.io.File 一样,属于普通的 Java 类型。比方说,下面两个变量的类型就是互不相同的:ListlistObj = new ArrayList();List listStr = ne原创 2005-09-17 10:55:00 · 3863 阅读 · 3 评论 -
RMI 程序能在 Windows 上运行,却在 Linux 上报错的一个原因
上周因为工作需要,写了一个 RMI 程序。程序在我自己的电脑(Windows 平台)上可以正常运行,但是当把程序提交到公司的 Linux 服务器上之后却出了意想不到的问题。在命令行中启动 rmiregistry 之后,启动程序的服务器端,这时 JVM 提示:java.rmi.UnmarshalException: Error unmarshaling return header: java原创 2006-05-21 23:40:00 · 2373 阅读 · 0 评论 -
内码转换:以 GBK 编码到 UTF-8 编码为例
近日做一程序,需要将不同内码的文字转换成为某一种统一编码的文字(例如将 GBK 编码的汉字转换为 UTF-8 编码的汉字)。网上关于不同内码文字处理的文章,大都是关于解决汉字乱码问题的。而我需要做的,类似于 UltraEdit 中的 convertion 中的功能。开始时,尝试了诸如 new String(str.getBytes("GBK"), "UTF-8");之类的方法。对于内码转换来原创 2006-08-08 14:21:00 · 3836 阅读 · 1 评论 -
关于在 Spring 中对 DAO 进行单元测试的一些问题
@page { size: 20.999cm 29.699cm; margin-top: 2cm; margin-bottom: 2cm; margin-left: 2cm; margin-right: 2cm } table { border-collapse:collapse; border-spacing:0; empty-cells:show } td, th { verti原创 2006-12-16 21:45:00 · 2650 阅读 · 2 评论 -
设置 Tomcat 自动重新加载 web 应用程序
Tomcat 中自动重载 web 应用程序的配置:修改 TOMCAT_HOME/conf/server.xml 文件,添加 标签让指定的 web 应用程序自动重载。内容如下: ... /yourwebapp" docBase="youwebapp" debug="0" reloadable="true"/>原创 2007-02-01 18:43:00 · 2925 阅读 · 0 评论 -
有关 org.dom4j.Node.numberValueOf 方法的一个说明
在 org.dom4j.Node 中可以用 numberValueOf 方法根据 XPath 表达式获取指定元素或者属性的数字类型的值。在 dom4j 的 API 文档中是这样注释的: numberValueOfpublic Number numberValueOf(String xpathExpression) numberValueOf evaluates原创 2007-04-04 10:56:00 · 3046 阅读 · 3 评论 -
在项目中为 Spring Framework 配置 Log4j
创建一个基于 Spring Framework 的项目之后,在使用 JUnit 进行单元测试时,控制台中打印出警告信息:log4j:WARN No appenders could be found for logger (org.springframework.util.ClassUtils).log4j:WARN Please initialize the log4j system原创 2007-08-09 17:10:00 · 8938 阅读 · 0 评论 -
Refactoring to Patterns 读书笔记(六)
前一阵公司的事情繁忙,导致这 Refactoring to Patterns 的书看完许久,却没有时间提笔来写这篇读书笔记。现在有点时间,总算是可以继续了。应用 Composite 模式替换隐式树结构在处理数据的程序(例如,生成 XML 文档)中,我们常常会隐式地实现一些树状结构的程序,就像下图左边所显示的那样子: 在这种情况下,构建隐式树的代码和展现隐式树的代码紧密地耦合在一起(不原创 2007-05-19 20:41:00 · 1303 阅读 · 0 评论 -
有关函数返回值类型的问题
李卫公在他的 blog 中讨论了一个有关函数返回值的问题。其在文章中的初始问题,大致可以描述为:需要编写一个函数,从 HMLT 源代码中提取某个节点的文本,在提取失败的情况下,应当返回一个空字符串还是 null 值。李卫公在文中说明了,如果在失败的情况下返回一个空字符串的话,对于该函数的调用者而言,是无法区分出该函数是从目标节点中提取到一个空字符串,还是实际上什么也没有提取到。通常来说,一个函数所原创 2007-08-22 14:29:00 · 3423 阅读 · 0 评论 -
解决 Java 程序的乱码问题
早上来上班,同事问在本机好好的 Java 程序,放到服务器上运行的时候,输出的中文字符总是显示乱码。我大致看了一下,猜测应该是 .java 文件编码和相关 Java 环境引起的问题。同事的本地开发环境是 Windows,默认文件编码为 GBK,服务器为 Redhat Linux,默认文件编码为 ISO-8859-1,两种字符编码并非完全一致。如果要保证 Java 程序中的中文字符能够被正确输出,最原创 2007-05-25 10:47:00 · 1723 阅读 · 0 评论 -
整合 Resin 和 Apache
本文中使用的 Apache httpd 版本为 2.2.4,Resin 为 OS 3.0.24,操作系统为 Redhat AS 4。配置步骤如下:1. 安装 Apache httpd(路径 /usr/local/apache)输入命令/usr/local/apache/bin/httpd -l检查所下载的 Apache httpd 是否支持 DSO 特性。如果以上命令所打印出来的结原创 2007-09-28 12:09:00 · 2635 阅读 · 0 评论 -
Spring with Tomcat 中文编码问题的解决方案
由于各种原因,Java 应用中有关中文编码的问题总是层出不穷,即使是在 i18n 发展已久的今日,为了能够在 Java 应用中良好地使用中文,程序员们仍然要花费许多额外的力气来调试、设置以解决有关中文编码的问题。针对在 Tomcat 服务器上运行的 Spring 应用,我总结了一些相关的经验,希望能帮助其他人在处理该问题时能少走一些弯路。以下条目纯属个人在开发中摸索出来的经验,并不一定适用于所有情原创 2007-10-04 15:47:00 · 2432 阅读 · 0 评论 -
解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。解决这个问题的办法有三种:1. 增加 MySQL 的 wait_timeout 属性的值。修改 /etc/mysql/m原创 2007-11-03 16:40:00 · 9115 阅读 · 0 评论 -
在 console(控制台)下编译和运行 Java 程序
看看一个最简单的程序,其实就是 HelloWorld,只不过在这段程序前声明了一个 package。packagemypackage.example;classHello { public static void main(String[] args) { System.out.println(“Hello World!”);原创 2005-12-29 15:10:00 · 4829 阅读 · 0 评论 -
正在使用 Java 6 (Mustang)
Java Mustang: http://mustang.dev.java.netJava Mustang 将会包含和可能会包含的部分 JSR: Each of the large new components of the Mustang release is specified in its own separate JSR. Smaller additions a原创 2005-12-25 15:03:00 · 2795 阅读 · 8 评论 -
java.io.Reader 和 java.io.InputStream 的区别
java.io.Reader 和 java.io.InputStream 组成了 Java 输入类。Reader 用于读入16位字符,也就是 Unicode 编码的字符;而 InputStream 用于读入 ASCII 字符和二进制数据。在 Java 中,有不同类型的 Reader 输入流对应于不同的数据源: FileReader 用于从文件输入; CharArrayReader 用于原创 2005-10-20 11:01:00 · 2555 阅读 · 0 评论 -
通过实验看 Java 中私有成员是否能被继承
关于 Java 中,子类能不能继承父类中的私有成员的问题,似乎颇有争议。在 SUN 授权 Java Language Specification 一书中,作者认为子类可以继承父类的私有成员,只是不能访问罢了。我们知道,子类可以通过声明具有相同名字的属性来覆盖掉从父类中继承而来的相应属性,也可以声明具有相同名字相同签名的方法来覆盖掉从父类中继承而来的相应方法。也就是说,如果子类可以从父类中继承私有成原创 2005-09-23 12:48:00 · 4949 阅读 · 13 评论 -
Java 中子类是否只继承父类的非私有变量和方法?
今天在 CSDN 论坛中见到有人问在 Java中子类是否只继承父类的非私有变量和方法(原贴在此)。大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的。首先我们明确一下“继承”一词的概念,在 Java 中,继承一词的意义是有限制的。一个子类只能继承其父类的可访问的成员,并且该子类没有覆盖或者说隐藏父类中的那些可访问成员。所以,一个类的成员就是指在这个类中所声明的属性和方法,原创 2005-09-22 00:25:00 · 10739 阅读 · 7 评论 -
WebSphere Studio Application Developer 5版本中如何更改默认的工作区
在默认情况下,WebSphereApplication Developer 5在启动的时候会弹出一个提示窗口让用户选择 workspace。如果,用户选中了窗口下方的“将此工作空间用作缺省值并且不再显示此对话框”,那么下一次客户再运行WSAD的时候将不会弹出提示窗口让用户选择工作区。如果,用户再想更换工作区将无法进行。在Eclipse 3.1 中,File菜单下有 SwitchWo原创 2005-09-25 11:16:00 · 1311 阅读 · 1 评论 -
如何测试一个没有返回值的方法
在 JUnit 中,如果一个方法没有返回值,那么我们就没有办法用assertEquals()直接来比较我们所期望的值和方法执行后的所返回的实际值之间的差别。但是我们知道,一个方法应该要么有返回值要么又可以观察到的副作用,否则这个方法就可以被视作什么事情都没有做。所以,如果一个方法没有返回值,那么我们就应该根据它的可观察的副作用来进行测试。 举一个例子,测原创 2005-09-27 21:05:00 · 10667 阅读 · 0 评论 -
关于 Java 构造器的一些讨论
最近在 CSDN 论坛中看到有人问为什么不能在类的方法中调用 constructor,之后跟贴若干。 其实这个问题的答案可以简单的概括成为一句话:构造器不是类的成员(constructors are notmembers of class1)。 类似于方法,构造器可以拥有一个参数列表,但是和方法不同的是构造器没有返回类型;类似于方法,我们可以为构造器指定访问限定原创 2005-10-03 14:37:00 · 952 阅读 · 0 评论 -
如何更改 WSAD 的界面语种
最近公司开发新项目,使用 WSAD 作为开发工具。日文的界面让我看着头晕,因为已经习惯了英文的 Eclipse。不过操作系统又必须使用日文的,记得以前考证的时候在 CSDN 社区上回答过这个问题,不过现在自己早就忘了答案了。上网找了找,发现关心这个问题的人还不少,正好为我所用,呵呵。更改 WSAD 安装目录下 wsappdev.ini 在行 VMArgs=-Xj9 后加入,为空则与操作系统默认语言原创 2005-09-25 12:34:00 · 988 阅读 · 0 评论 -
Tomcat 中运行 Servlet 报告 resource is unavailable 的解决方法
使用 Tomcat 运行 servlet 时,有可能会报告 HTTP 404 错误,错误描述中写道 resource …/TestServlet isnot available。这个时候,可能需要编辑位于 TOMCAT_HOME/conf 中的 web.xml 文件。在 Eclipse 中,我们首先将该文件链接到当前项目的目录中。打开 web.xml,找到如下内容:原创 2005-09-26 22:20:00 · 1737 阅读 · 0 评论 -
《通过实验看 Java 中私有成员是否能被继承》续
我在蔽文《通过实验看 Java 中私有成员是否能被继承》中所举的例子有一个错误,使用了属性而不是方法来验证私有成员是否能够被子类所继承。在 Java Programming Language 中,有这么一段:“字段(field)只能被隐藏,而不能被覆盖。如果在子类中声明了一个和父类中相同名字的字段,那么父类中的字段仍然存在,但是不能再简单的使用其名字来访问父类中这个被隐藏的字段。”所以,在上文所涉原创 2005-09-24 19:22:00 · 5139 阅读 · 5 评论 -
Java 中的四种嵌套类:嵌套静态类、成员类、本地类和匿名类
嵌套静态类是任何一个在另外一个类或者接口的代码体中声明的类,它作为外嵌类或者接口的静态成员。嵌套静态类的行为类似于顶级类,唯一的差别是嵌套静态类前除了有 Java 包的名字以外还有外嵌类的名字。嵌套静态类是静态成员,因此没有 this 指针指向外嵌类的实例,也就是说嵌套静态类不能访问外嵌类的实例数据。当一个重要的数据结构紧密的关联与外嵌类,并且该数据结构有足够的内容保证它能够拥有一个类的时候,一般原创 2005-09-29 13:21:00 · 4419 阅读 · 0 评论 -
抽象类和接口的区别
在 Java 中,接口用于定义一种必须具有的形式,但实际上又不提供任何方法的实现。在这个方面,有点和抽象类类似——抽象类要求程序员按照抽象方法所规定的相同的方式对之进行扩展(extend)。两者的不同之处在于:1. 抽象类是一个不完整的类,需要进一步细化;而接口只是一个行为的规范。2. 接口基本不具备继承的任何基本特点,它只是承诺了能够调用的方法。3. 一个类一次可以实现多个接口,但是只能继承一原创 2005-09-24 22:55:00 · 1106 阅读 · 0 评论 -
JUnit 中 failure 和 error 的区别
JUnit 中有两种错误类型,一个是 failure,另一个是 error。这两者之间的差别很微妙,但是我们如果能够理解这种差别的话,对我们使用 JUnit 将会非常有帮助的。通常来说,failure 表示所测试的产品代码(production code)有问题,也就是受测的产品代码没有正确的实现设计上所要求的功能。这个时候我们需要对产品代码进行检查、修改,使得它的行为能够符合设计说明原创 2005-09-27 16:42:00 · 1920 阅读 · 0 评论 -
浅析 Java 中的覆盖
覆盖(overriding)作为实现多态的方式,是面向对象的最重要的概念之一。简单说来,方法覆盖是指子类方法的实现替换父类中同名方法的实现,而且两个方法的签名等价。严格说来,Java 中方法覆盖的定义为:在满足下面所有条件的情况下,我们可以说一个在类 C 中声明的实例方法 m1覆盖了在类 A 中声明的另一个实例方法 m2:1. C 是 A 的子类;2.原创 2005-10-10 12:55:00 · 3526 阅读 · 0 评论 -
Maven 的利弊
Ryan Slobojan 在 InfoQ 上张贴了一篇有关 Maven 优劣讨论的文章——《Debate: Is Maven the right tool for builds?》。在我的 Java 开发经历中,最开始使用的 Ant,一个非常简洁而且强大的构建工具,不过 Ant 对于项目所依赖的 jar 包的管理还是非常弱的,项目所依赖的每一个 jar 包都需要自己手工去寻找、下载、组织。就像原创 2008-02-03 16:20:00 · 2715 阅读 · 2 评论