软件是对质量的不懈追求

#

Java 中serialVersionUID的解释

serialVersionUID作用:
       序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式:
       一个是默认的1L,比如:private static final long serialVersionUID = 1L;
       一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
       private static final   long     serialVersionUID = xxxxL;

当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个
     提示功能告诉你去定义 。在Eclipse中点击类中warning的图标一下,Eclipse就会
     自动给定两种生成的方式。如果不想定义它,在Eclipse的设置中也
      可以把它关掉的,设置如下:
        Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==>
        Potential programming problems
        将Serializable class without serialVersionUID的warning改成ignore即可。

如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入 serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别 Serializable向后兼容。

如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现 Exception的,这样就会造成不兼容性的问题。

但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,可避开不兼容性问题。

posted @ 2010-04-08 10:37 BlakeSu 阅读(152) | 评论 (0)编辑 收藏

spring 相关

ApplicationContext wac = WebApplicationContextUtils          .getRequiredWebApplicationContext(config.getServletContext());

posted @ 2010-04-06 13:01 BlakeSu 阅读(148) | 评论 (0)编辑 收藏

wesphere6.1修改默认端口

环境->虚拟主机->default_host->其它属性(主机别名)->修改端口
服务器->应用程序服务器->server1->端口->WC_defaulthost->修改端口

posted @ 2010-04-02 10:36 BlakeSu 阅读(218) | 评论 (0)编辑 收藏

jquery validate自定义验证方法


 /* 追加自定义验证方法 */   
 
// 身份证号码验证   
 jQuery.validator.addMethod("idcardno"function(value, element) {
   
return this.optional(element) || isIdCardNo(value);   
 }, 
"请正确输入身份证号码");
 
  
//字母数字
 jQuery.validator.addMethod("alnum"function(value, element) {
   
return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
 }, 
"只能包括英文字母和数字");
 
  
// 手机号码验证   
 jQuery.validator.addMethod("cellphone"function(value, element) {
   
var length = value.length;
   
return this.optional(element) || (length == 11 && /^(1\d{10})$/.test(value));
 }, 
"请正确填写手机号码"); 
 
  
// 电话号码验证   
 jQuery.validator.addMethod("telephone"function(value, element) {
   
var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
   
return this.optional(element) || (tel.test(value));
 }, 
"请正确填写电话号码");
 
 
// 邮政编码验证
 jQuery.validator.addMethod("zipcode"function(value, element) {
   
var tel = /^[0-9]{6}$/;
   
return this.optional(element) || (tel.test(value));
 }, 
"请正确填写邮政编码");
 
  
// 汉字
 jQuery.validator.addMethod("chcharacter"function(value, element) {
   
var tel = /^[\u4e00-\u9fa5]+$/;
   
return this.optional(element) || (tel.test(value));
 }, 
"请输入汉字");
 
 
/**
 * 身份证号码验证
 *
 
*/
function isIdCardNo(num) {

 
var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
 
var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");
 
var varArray = new Array();
 
var intValue;
 
var lngProduct = 0;
 
var intCheckDigit;
 
var intStrLen = num.length;
 
var idNumber = num;
   
// initialize
     if ((intStrLen != 15&& (intStrLen != 18)) {
         
return false;
     }
     
// check and set value
     for(i=0;i<intStrLen;i++) {
         varArray[i] 
= idNumber.charAt(i);
         
if ((varArray[i] < '0|| varArray[i] > '9') && (i != 17)) {
             
return false;
         } 
else if (i < 17) {
             varArray[i] 
= varArray[i] * factorArr[i];
         }
     }
     
     
if (intStrLen == 18) {
         
//check date
         var date8 = idNumber.substring(6,14);
         
if (isDate8(date8) == false) {
            
return false;
         }
         
// calculate the sum of the products
         for(i=0;i<17;i++) {
             lngProduct 
= lngProduct + varArray[i];
         }
         
// calculate the check digit
         intCheckDigit = parityBit[lngProduct % 11];
         
// check last digit
         if (varArray[17!= intCheckDigit) {
             
return false;
         }
     }
     
else{        //length is 15
         //check date
         var date6 = idNumber.substring(6,12);
         
if (isDate6(date6) == false) {

             
return false;
         }
     }
     
return true;
     
 }
/**
 * 判断是否为“YYYYMM”式的时期
 *
 
*/
function isDate6(sDate) {
   
if(!/^[0-9]{6}$/.test(sDate)) {
      
return false;
   }
   
var year, month, day;
   year 
= sDate.substring(04);
   month 
= sDate.substring(46);
   
if (year < 1700 || year > 2500return false
   
if (month < 1 || month > 12return false
   
return true
}
/**
 * 判断是否为“YYYYMMDD”式的时期
 *
 
*/
function isDate8(sDate) {
   
if(!/^[0-9]{8}$/.test(sDate)) {
      
return false;
   }
   
var year, month, day;
   year 
= sDate.substring(04);
   month 
= sDate.substring(46);
   day 
= sDate.substring(68);
   
var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
   
if (year < 1700 || year > 2500return false
   
if (((year % 4 == 0&& (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
   
if (month < 1 || month > 12return false
   
if (day < 1 || day > iaMonthDays[month - 1]) return false
   
return true
}




posted @ 2010-03-30 11:30 BlakeSu 阅读(3013) | 评论 (2)编辑 收藏

Mozilla Thunderbird的一些设置

为了在windows和linux平台公用相同的邮件客户端和邮件内容,主要是有时候切换操作系统又要看以前的邮件。最后找到了 thunderbird(下面简称TB)客户端。这个客户端就是有点慢,倒是能满足我的要求。但是它的默认设置有时候有点不符合我们的使用习惯,我对它的 设置作了下面的一些修改:

    1:转发邮件
       默认的设置转发把邮件的内容作为附件转发。这样有两个不好的地方:第一,如果邮件有附件,这个附件不能转发;第二,接收方必须要用TB客户端了,否则打不 开。
       修改:编辑 -> 首选项 -> 编写 -> 常规:转发消息改成内联
   
    2:其它邮件客户端接收TB发的中文附件是乱码
       这个是标准问题,TB使用的是新的标准,但是别的客户端使用的是旧的标准(具体那个标准忘了,google一下就可以了)。这样就会出现乱码了。
       修改:编辑 -> 首选项 -> 高级 -> 配置编辑器:mail.strictly_mime.parm_folding 改成0或者1

    3:自动打开附件
       TB默认的是在打开邮件的时候同时自动打开邮件的附件。这样的话,如果附件大就很头痛。
       修改:编辑 -> 首选项 -> 高级 -> 配置编辑器:
          mail.inline_attachments   改成faulse
          mail.content_disposition.type   改成1

    4:回复邮件时回复的邮件内容在下面
       TB默认的回复邮件的回复内容是在下面的,这样如果邮件来回几次,回复比较多,看起来很不方便。
       修改:编辑 -> 首选项 -> 高级 -> 配置编辑器:Mail.identify.default.reply_on_top值由0改为1
  
    还有一个问题没有解决,就是有时候在TB中打开一个文件夹,它会重新建索引还是什么的,这时候打开一个文件夹比较慢。看网上有说把这个文件夹重命名,再创 建一个同名的文件夹,最后把老的文件夹的内容拷贝到新的里面就好了,这个没有试过。不过这个也不是特别大的问题,就没有继续搞了,什么时候有空再看看,到 时候再贴上来。

posted @ 2010-03-19 16:39 BlakeSu 阅读(677) | 评论 (0)编辑 收藏

tar命令详解

格式:  tar  选项  文件目录列表
功能:  对文件目录进行打包备份
选项:
-c  建立新的归档文件
-r  向归档文件末尾追加文件
-x  从归档文件中解出文件
-O  将文件解开到标准输出
-v  处理过程中输出相关信息
-f  对普通文件操作
-z  调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z  调用compress来压缩归档文件,与-x联用时调用compress完成解压缩  
例如:
1.将当前目录下所有.txt文件打包并压缩归档到文件this.tar.gz,我们可以使用
tar czvf this.tar.gz ./*.txt
2.将当前目录下的this.tar.gz中的文件解压到当前目录我们可以使用
tar xzvf this.tar.gz ./

posted @ 2010-03-18 17:21 BlakeSu 阅读(195) | 评论 (0)编辑 收藏

websphere6.1 设定虚拟机参数

Application Servers > server1 > Process Definition > Java Virtual Machine > Custom Properties

虚拟机参数在命令行的形式为 -Dproperty=value,在程序中可以用System.getProperty("property")取值。
利用这个特性可以对程序运行进行控制,避免代码的修改。




posted @ 2010-03-15 09:57 BlakeSu 阅读(252) | 评论 (0)编辑 收藏

firefox3.6扩展和插件安装位置

地址栏输入about:support,在打开的页面有打开配置文件夹的按钮;
扩展在Extensions文件夹下,插件在安装文件夹下的plugin和其他目录。

posted @ 2010-03-15 09:22 BlakeSu 阅读(412) | 评论 (0)编辑 收藏

xfire 动态客户端


import java.net.URL;

import org.codehaus.xfire.client.Client;

public class XfireClient
{

    
public static void main(String[] args)
    {
        DyClient();
    }

    
/**
     * You get a DynamicClient when you create a Client with the URL of a WSDL
     
*/
    
public static void DyClient()
    {
        
try
        {
            Client client 
= new Client(
                    
new URL(
                            
"http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl"));
            Object[] results 
= client.invoke("qqCheckOnline",
                    
new Object[] { "31506173" });
            System.out.println((String) results[
0]);

        }
        
catch ( Exception e)
        {
            e.printStackTrace();
        }
    }
}




必须jar:
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jdom-1.0.jar
wsdl4j-1.6.1.jar
xfire-all-1.2.6.jar
XmlSchema-1.1.jar

posted @ 2010-03-08 16:00 BlakeSu 阅读(335) | 评论 (0)编辑 收藏

汉字与utf8编码相互转换


import java.io.UnsupportedEncodingException;


public class UTF {

    public static void main(String[] args) {
        String s 
= "非常好";
        
try {
            
byte[] b = s.getBytes("UTF-8");
            
for(int i=0; i< b.length; i++){
                System.out.println(Integer.toHexString(b[i]).substring(
6));
                
            }
            System.out.println(
new String(b, "UTF-8"));

        } 
catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } 
        

    }

}

输出:
e9
9d
9e
e5
b8
b8
e5
a5
bd
非常好

posted @ 2010-02-26 13:39 BlakeSu 阅读(193) | 评论 (0)编辑 收藏

仅列出标题
共12页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last