<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件是對質(zhì)量的不懈追求

    #

    Java 中serialVersionUID的解釋

    serialVersionUID作用:
           序列化時(shí)為了保持版本的兼容性,即在版本升級(jí)時(shí)反序列化仍保持對象的唯一性。
    有兩種生成方式:
           一個(gè)是默認(rèn)的1L,比如:private static final long serialVersionUID = 1L;
           一個(gè)是根據(jù)類名、接口名、成員方法及屬性等來生成一個(gè)64位的哈希字段,比如:
           private static final   long     serialVersionUID = xxxxL;

    當(dāng)你一個(gè)類實(shí)現(xiàn)了Serializable接口,如果沒有定義serialVersionUID,Eclipse會(huì)提供這個(gè)
         提示功能告訴你去定義 。在Eclipse中點(diǎn)擊類中warning的圖標(biāo)一下,Eclipse就會(huì)
         自動(dòng)給定兩種生成的方式。如果不想定義它,在Eclipse的設(shè)置中也
          可以把它關(guān)掉的,設(shè)置如下:
            Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==>
            Potential programming problems
            將Serializable class without serialVersionUID的warning改成ignore即可。

    如果你沒有考慮到兼容性問題時(shí),就把它關(guān)掉,不過有這個(gè)功能是好的,只要任何類別實(shí)現(xiàn)了Serializable這個(gè)接口的話,如果沒有加入 serialVersionUID,Eclipse都會(huì)給你warning提示,這個(gè)serialVersionUID為了讓該類別 Serializable向后兼容。

    如果你的類Serialized存到硬盤上面后,可是后來你卻更改了類別的field(增加或減少或改名),當(dāng)你Deserialize時(shí),就會(huì)出現(xiàn) Exception的,這樣就會(huì)造成不兼容性的問題。

    但當(dāng)serialVersionUID相同時(shí),它就會(huì)將不一樣的field以type的預(yù)設(shè)值Deserialize,可避開不兼容性問題。

    posted @ 2010-04-08 10:37 BlakeSu 閱讀(158) | 評(píng)論 (0)編輯 收藏

    spring 相關(guān)

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

    posted @ 2010-04-06 13:01 BlakeSu 閱讀(151) | 評(píng)論 (0)編輯 收藏

    wesphere6.1修改默認(rèn)端口

    環(huán)境->虛擬主機(jī)->default_host->其它屬性(主機(jī)別名)->修改端口
    服務(wù)器->應(yīng)用程序服務(wù)器->server1->端口->WC_defaulthost->修改端口

    posted @ 2010-04-02 10:36 BlakeSu 閱讀(225) | 評(píng)論 (0)編輯 收藏

    jquery validate自定義驗(yàn)證方法


     /* 追加自定義驗(yàn)證方法 */   
     
    // 身份證號(hào)碼驗(yàn)證   
     jQuery.validator.addMethod("idcardno"function(value, element) {
       
    return this.optional(element) || isIdCardNo(value);   
     }, 
    "請正確輸入身份證號(hào)碼");
     
      
    //字母數(shù)字
     jQuery.validator.addMethod("alnum"function(value, element) {
       
    return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
     }, 
    "只能包括英文字母和數(shù)字");
     
      
    // 手機(jī)號(hào)碼驗(yàn)證   
     jQuery.validator.addMethod("cellphone"function(value, element) {
       
    var length = value.length;
       
    return this.optional(element) || (length == 11 && /^(1\d{10})$/.test(value));
     }, 
    "請正確填寫手機(jī)號(hào)碼"); 
     
      
    // 電話號(hào)碼驗(yàn)證   
     jQuery.validator.addMethod("telephone"function(value, element) {
       
    var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
       
    return this.optional(element) || (tel.test(value));
     }, 
    "請正確填寫電話號(hào)碼");
     
     
    // 郵政編碼驗(yàn)證
     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));
     }, 
    "請輸入漢字");
     
     
    /**
     * 身份證號(hào)碼驗(yàn)證
     *
     
    */
    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”式的時(shí)期
     *
     
    */
    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”式的時(shí)期
     *
     
    */
    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 閱讀(3020) | 評(píng)論 (2)編輯 收藏

    Mozilla Thunderbird的一些設(shè)置

    為了在windows和linux平臺(tái)公用相同的郵件客戶端和郵件內(nèi)容,主要是有時(shí)候切換操作系統(tǒng)又要看以前的郵件。最后找到了 thunderbird(下面簡稱TB)客戶端。這個(gè)客戶端就是有點(diǎn)慢,倒是能滿足我的要求。但是它的默認(rèn)設(shè)置有時(shí)候有點(diǎn)不符合我們的使用習(xí)慣,我對它的 設(shè)置作了下面的一些修改:

        1:轉(zhuǎn)發(fā)郵件
           默認(rèn)的設(shè)置轉(zhuǎn)發(fā)把郵件的內(nèi)容作為附件轉(zhuǎn)發(fā)。這樣有兩個(gè)不好的地方:第一,如果郵件有附件,這個(gè)附件不能轉(zhuǎn)發(fā);第二,接收方必須要用TB客戶端了,否則打不 開。
           修改:編輯 -> 首選項(xiàng) -> 編寫 -> 常規(guī):轉(zhuǎn)發(fā)消息改成內(nèi)聯(lián)
       
        2:其它郵件客戶端接收TB發(fā)的中文附件是亂碼
           這個(gè)是標(biāo)準(zhǔn)問題,TB使用的是新的標(biāo)準(zhǔn),但是別的客戶端使用的是舊的標(biāo)準(zhǔn)(具體那個(gè)標(biāo)準(zhǔn)忘了,google一下就可以了)。這樣就會(huì)出現(xiàn)亂碼了。
           修改:編輯 -> 首選項(xiàng) -> 高級(jí) -> 配置編輯器:mail.strictly_mime.parm_folding 改成0或者1

        3:自動(dòng)打開附件
           TB默認(rèn)的是在打開郵件的時(shí)候同時(shí)自動(dòng)打開郵件的附件。這樣的話,如果附件大就很頭痛。
           修改:編輯 -> 首選項(xiàng) -> 高級(jí) -> 配置編輯器:
              mail.inline_attachments   改成faulse
              mail.content_disposition.type   改成1

        4:回復(fù)郵件時(shí)回復(fù)的郵件內(nèi)容在下面
           TB默認(rèn)的回復(fù)郵件的回復(fù)內(nèi)容是在下面的,這樣如果郵件來回幾次,回復(fù)比較多,看起來很不方便。
           修改:編輯 -> 首選項(xiàng) -> 高級(jí) -> 配置編輯器:Mail.identify.default.reply_on_top值由0改為1
      
        還有一個(gè)問題沒有解決,就是有時(shí)候在TB中打開一個(gè)文件夾,它會(huì)重新建索引還是什么的,這時(shí)候打開一個(gè)文件夾比較慢。看網(wǎng)上有說把這個(gè)文件夾重命名,再創(chuàng) 建一個(gè)同名的文件夾,最后把老的文件夾的內(nèi)容拷貝到新的里面就好了,這個(gè)沒有試過。不過這個(gè)也不是特別大的問題,就沒有繼續(xù)搞了,什么時(shí)候有空再看看,到 時(shí)候再貼上來。

    posted @ 2010-03-19 16:39 BlakeSu 閱讀(701) | 評(píng)論 (0)編輯 收藏

    tar命令詳解

    格式:  tar  選項(xiàng)  文件目錄列表
    功能:  對文件目錄進(jìn)行打包備份
    選項(xiàng):
    -c  建立新的歸檔文件
    -r  向歸檔文件末尾追加文件
    -x  從歸檔文件中解出文件
    -O  將文件解開到標(biāo)準(zhǔn)輸出
    -v  處理過程中輸出相關(guān)信息
    -f  對普通文件操作
    -z  調(diào)用gzip來壓縮歸檔文件,與-x聯(lián)用時(shí)調(diào)用gzip完成解壓縮
    -Z  調(diào)用compress來壓縮歸檔文件,與-x聯(lián)用時(shí)調(diào)用compress完成解壓縮  
    例如:
    1.將當(dāng)前目錄下所有.txt文件打包并壓縮歸檔到文件this.tar.gz,我們可以使用
    tar czvf this.tar.gz ./*.txt
    2.將當(dāng)前目錄下的this.tar.gz中的文件解壓到當(dāng)前目錄我們可以使用
    tar xzvf this.tar.gz ./

    posted @ 2010-03-18 17:21 BlakeSu 閱讀(203) | 評(píng)論 (0)編輯 收藏

    websphere6.1 設(shè)定虛擬機(jī)參數(shù)

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

    虛擬機(jī)參數(shù)在命令行的形式為 -Dproperty=value,在程序中可以用System.getProperty("property")取值。
    利用這個(gè)特性可以對程序運(yùn)行進(jìn)行控制,避免代碼的修改。




    posted @ 2010-03-15 09:57 BlakeSu 閱讀(259) | 評(píng)論 (0)編輯 收藏

    firefox3.6擴(kuò)展和插件安裝位置

    地址欄輸入about:support,在打開的頁面有打開配置文件夾的按鈕;
    擴(kuò)展在Extensions文件夾下,插件在安裝文件夾下的plugin和其他目錄。

    posted @ 2010-03-15 09:22 BlakeSu 閱讀(419) | 評(píng)論 (0)編輯 收藏

    xfire 動(dòng)態(tài)客戶端


    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 閱讀(339) | 評(píng)論 (0)編輯 收藏

    漢字與utf8編碼相互轉(zhuǎn)換


    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 閱讀(199) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 3344免费播放观看视频 | 亚洲国产精品久久久久婷婷软件 | 国产成人精品日本亚洲网站| 免费特级黄毛片在线成人观看| 无码日韩精品一区二区三区免费 | 9久9久女女免费精品视频在线观看| 国产免费A∨在线播放| 亚洲AV永久无码精品网站在线观看| 亚洲黄色网站视频| 亚洲AV综合色区无码一区| 亚洲国产香蕉人人爽成AV片久久| 日韩精品免费一区二区三区| 国产人在线成免费视频| 久久久久久AV无码免费网站 | 亚洲AV无码之日韩精品| 国产高清在线精品免费软件| 欧美a级成人网站免费| 青娱乐免费在线视频| 国产精品视频免费| 在线永久免费的视频草莓| 亚欧色视频在线观看免费| 一区二区三区观看免费中文视频在线播放 | 亚洲一本之道高清乱码| 亚洲欧洲日产国码www| 亚洲毛片免费观看| 亚洲精彩视频在线观看| 亚洲精品日韩中文字幕久久久| 日韩亚洲AV无码一区二区不卡| 亚洲AV无码乱码国产麻豆| 亚洲AV综合色一区二区三区| 国产亚洲精AA在线观看SEE| 亚洲乱码中文字幕久久孕妇黑人| 亚洲毛片网址在线观看中文字幕| 全亚洲最新黄色特级网站| 免费在线观看a级毛片| 亚洲乱码中文字幕手机在线| 国产亚洲精久久久久久无码AV| 亚洲美女在线国产| 国产亚洲综合久久系列| 亚洲丁香色婷婷综合欲色啪| 久久青青草原亚洲av无码app|