JAVA程序启动单一实例妙招[转]

每日E读,间隔几天,显的每日E读不每了,新闻过后,精彩继续!

今儿,想起来昨儿,解决的一问题,贴出来大家学习下,由于工作需要,学习,哈哈~!

手头的一个任务,是个java的SWT做的桌面应用程序,有一需求是,程序只能启动一个实例,二次启动会提示启动失败!网上转了一大圈几天也没找到比较理想的解决方法,在CSND等专业程序员网站上查找过,也没有找到!我正要放弃的时候,哈哈,被我找到了!

找了一写方案,总结起来就是,系统单一实例,就是查看共用资源,如果被占用,说明已经启动!有人说用单例模式,那是没有作用的!

网上找到的几种解决方案: 阅读全文 >>

Java 执行 SQL 脚本文件

假定Java 程序中要定期执行 SQL 语句,因需求变更应修改原有 SQL 语句或者加上更多的语句时,不得不修改源代码,然后再次编译。要是把 SQL 语句写在单独的 SQL 脚本文件中,由 Java 程序来定时加载执行,那么每次改动时仅仅修改 SQL 脚本文件就行了。

Java 没有提供现成的东西,所以自己写了一个这样的 SQL 脚本执行类 SqlFileExecutor。支持通用的 SQL 脚本文件,"--" 作为注释前导符,分号 ";" 分隔语句。不支持 MySQL 的 /*...*/ 形式的注释格式。对于 Windows 和 Linux/Unix 下编辑的脚本文件都测试通过。这两个系统文件中的换行符不一样,Windows 是 "\r\n",Linux/Unix 是 "\n"。 阅读全文 >>

为何不直接使用 Oracle 提供的连接池实现

我在 Websphere Application Server (WAS) 下配置 JDBC 提供程序时,选择了 Oracle JDBC Driver 确定之后,看到最后一个选项是:oracle.jdbc.pool.OracleConnectionPoolDataSource。

顾名思义,这是一个 DataSource 实现为,就像 DBCP 的 BasicDataSource 一样。那么能不能也像 BasicDataSource 那样,通过 new BasicDataSource(),然后设置各个必须的属性得到一个数据源 DataSource 呢?这个 OracleConnectionPoolDataSource 又是在哪个包里呢? 阅读全文 >>

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",引出不少话题。 阅读全文 >>

在 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 函数的代码。 阅读全文 >>

较为完美的一种标题缩略显示方法

通常在网页里都有一种这样的需求,为了界面整洁,在显示标题时需要把长标题以部分加省略号连缀显示,就比如中国博客网显示日志标题--下面那样

·在VC6中使用正则表达式解析...(2007-06-24)
·VC中使用CInternet...(2007-06-23)
·开源嵌入式数据库 SQLit...(2007-06-23) 

问题一是前面那部分字符串怎么来确定,上面很明显示的看得出来,因为标题中混杂着中英文,仍然没有达到初衷。 阅读全文 >>

掌握一种Java模板技术 – Velocity

原来的项目中基本都是用 JSP+Tag  来展示内容,有时也有 Jasper Report 做报表,报表也算是一种模板技术,只是有些重量级。看过 Spring 的书籍,都会对 Velocity 和 FreeMaker 有介绍,带动了我对先前看过的 *.vm 文件的研究提上了日程,了解之后,已觉相见恨晚。

下面讲利用 Velocity 怎么更好解决目前项目的一个简单问题:系统在进行支付了支付后,自己按设定的信息模板发送一条短信给责任人。信息模板是:

{单据责任人}:您的 {单据号} 号{单据类型}在 {操作日期} 日已支付 阅读全文 >>

Java Web应用因tld文件损坏出现的错误

部署一个 Web 应用到 WebSphere Application Server 中,浏览 index.jsp 页面时而正常,时而出现500错误,查看服务器输出日志可以看到以下错误,

E SRVE0026E: [Servlet Error]-[This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application]: org.apache.jasper.JasperException: This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application 阅读全文 >>

为何Java的有包名的类不能引用默认包中的类

有两个java类,源代码如下:

 //没指定包名,也就是在默认包中public class B {
  public void print(){
    System.out.println("Printed By B Class");
  }
}
 package com.unmi;
import B; //引用默认包中的B类
public class A {
  public static void main(String[] args) {
    B b = new B(); //在A中想要引用默认包中的B类
  }
}

先不说在IDE中如何编译它们以及会提示什么语法错误,只是用命令javac来编译它们,先是把它们放在同一个目录下,注意的是,虽然A.java有package unmi.com;声明,我们还是先把它放在下B.java同一目录,希望由javac命令来生成相对应的包目录。 阅读全文 >>