軟件是對質量的不懈追求

          #

          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 閱讀(160) | 評論 (0)編輯 收藏

          spring 相關

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

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

          wesphere6.1修改默認端口

          環境->虛擬主機->default_host->其它屬性(主機別名)->修改端口
          服務器->應用程序服務器->server1->端口->WC_defaulthost->修改端口

          posted @ 2010-04-02 10:36 BlakeSu 閱讀(227) | 評論 (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 閱讀(3023) | 評論 (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 閱讀(704) | 評論 (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 閱讀(205) | 評論 (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 閱讀(260) | 評論 (0)編輯 收藏

          firefox3.6擴展和插件安裝位置

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

          posted @ 2010-03-15 09:22 BlakeSu 閱讀(420) | 評論 (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 閱讀(341) | 評論 (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 閱讀(199) | 評論 (0)編輯 收藏

          僅列出標題
          共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 龙胜| 松滋市| 嘉峪关市| 苍溪县| 大方县| 南召县| 和顺县| 阳城县| 名山县| 华池县| 化隆| 绥中县| 安远县| 旬阳县| 黔东| 星子县| 光泽县| 莱阳市| 砀山县| 安福县| 潮州市| 济阳县| 无为县| 绥中县| 普兰县| 泸溪县| 长岛县| 无极县| 巫溪县| 尚志市| 韶关市| 凤城市| 深圳市| 穆棱市| 赤壁市| 基隆市| 永和县| 漯河市| 大英县| 晋宁县| 固阳县|