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

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

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

    ……天天向上

    好的想法總是無窮無盡

    統計

    留言簿(1)

    閱讀排行榜

    評論排行榜

    #

    checkStyle配置說明、范例和結果分析

         摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1<?xml version="1.0"?>  2<!DOCTYPE module PUBLIC &n...  閱讀全文

    posted @ 2012-05-24 17:50 japper 閱讀(10082) | 評論 (0)編輯 收藏

    Myeclips打開大數據量頁面時出現頁面錯誤的解決辦法

    以前能夠正常運行的程序今天突然出現頁面錯誤,錯誤日志大概如下:
    Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:
    82)
        at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:
    280)
         
    143 more
    Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting 
    for idle object
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:
    104)
        at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:
    880)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:
    113)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:
    79)
         
    144 more
    Caused by: java.util.NoSuchElementException: Timeout waiting 
    for idle object
        at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:
    958)
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:
    96)
         
    147 more
    2012-05-24 09:51:22,359 ERROR com.huawei.wsop.core.ExceptionAdvice - com.huawei.wsop.account.model.CustomerInfo@760c9f 執行 getCustomer 時有異常拋出.org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot get a connection, pool error Timeout waiting for idle object; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:
    83)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:
    80)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:
    80)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:
    424)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:
    410)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:
    424)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:
    343)
    at com.huawei.wsop.account.dao.daoImpl.CustomerDaoImpl.getCustomer(CustomerDaoImpl.java:
    80)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
    39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
    25)
    at java.lang.reflect.Method.invoke(Method.java:
    597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:
    307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:
    182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
    149)
    at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:
    126)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
    171)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:
    89)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
    171)


    該頁面共有5W多條數據,通過如下方法解決了: 
    在Eclipse中選擇
    window->preferences->myeclipse->servers->tomcat->jdk
    里面有個Optional java vm arguments
    在這里設置
    -Xms64m -Xmx500m
    xms標識最小內存  xmx標識最大,根據你服務器的情況自行設置即可.

    posted @ 2012-05-24 10:36 japper 閱讀(1386) | 評論 (0)編輯 收藏

    org.apache.commons.lang.StringUtils類

    (轉)StringUtils 方法的操作對象是 java.lang.String 類型的對象,是 JDK 提供的 String 類型操作方法的補充,并且是 null 安全的(即如果輸入參數 String 為 null 則不會拋出 NullPointerException ,而是做了相應處理,例如,如果輸入為 null 則返回也是 null 等,具體可以查看源代碼)。
    除了構造器,StringUtils 中一共有130多個方法,并且都是 static 的,所以我們可以這樣調用 StringUtils.xxx()
    下面分別對一些常用方法做簡要介紹:
    1. public static boolean isEmpty(String str)
    判斷某字符串是否為空,為空的標準是 str==null 或 str.length()==0
    下面是 StringUtils 判斷是否為空的示例:

    StringUtils.isEmpty(null) = true
    StringUtils.isEmpty("") = true
    StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空處理
    StringUtils.isEmpty(" ") = false
    StringUtils.isEmpty("bob") = false
    StringUtils.isEmpty(" bob ") = false

    2. public static boolean isNotEmpty(String str)
    判斷某字符串是否非空,等于 !isEmpty(String str)
    下面是示例:

    StringUtils.isNotEmpty(null) = false
    StringUtils.isNotEmpty("") = false
    StringUtils.isNotEmpty(" ") = true
    StringUtils.isNotEmpty(" ") = true
    StringUtils.isNotEmpty("bob") = true
    StringUtils.isNotEmpty(" bob ") = true
    3. public static boolean isBlank(String str)
    判斷某字符串是否為空或長度為0或由空白符(whitespace) 構成
    下面是示例:
    StringUtils.isBlank(null) = true
    StringUtils.isBlank("") = true
    StringUtils.isBlank(" ") = true
    StringUtils.isBlank(" ") = true
    StringUtils.isBlank("\t \n \f \r") = true //對于制表符、換行符、換頁符和回車符

    StringUtils.isBlank() //均識為空白符
    StringUtils.isBlank("\b") = false //"\b"為單詞邊界符
    StringUtils.isBlank("bob") = false
    StringUtils.isBlank(" bob ") = false
    4. public static boolean isNotBlank(String str)
    判斷某字符串是否不為空且長度不為0且不由空白符(whitespace) 構成,等于 !isBlank(String str)
    下面是示例:

    StringUtils.isNotBlank(null) = false
    StringUtils.isNotBlank("") = false
    StringUtils.isNotBlank(" ") = false
    StringUtils.isNotBlank(" ") = false
    StringUtils.isNotBlank("\t \n \f \r") = false
    StringUtils.isNotBlank("\b") = true
    StringUtils.isNotBlank("bob") = true
    StringUtils.isNotBlank(" bob ") = true
    5. public static String trim(String str)
    去掉字符串兩端的控制符(control characters, char <= 32) , 如果輸入為 null 則返回null
    下面是示例:
    StringUtils.trim(null) = null
    StringUtils.trim("") = ""
    StringUtils.trim(" ") = ""
    StringUtils.trim(" \b \t \n \f \r ") = ""
    StringUtils.trim(" \n\tss \b") = "ss"
    StringUtils.trim(" d d dd ") = "d d dd"
    StringUtils.trim("dd ") = "dd"
    StringUtils.trim(" dd ") = "dd"
    6. public static String trimToNull(String str)
    去掉字符串兩端的控制符(control characters, char <= 32) ,如果變為 null 或"",則返回 null
    下面是示例:
    StringUtils.trimToNull(null) = null
    StringUtils.trimToNull("") = null
    StringUtils.trimToNull(" ") = null
    StringUtils.trimToNull(" \b \t \n \f \r ") = null
    StringUtils.trimToNull(" \n\tss \b") = "ss"
    StringUtils.trimToNull(" d d dd ") = "d d dd"
    StringUtils.trimToNull("dd ") = "dd"
    StringUtils.trimToNull(" dd ") = "dd"
    7. public static String trimToEmpty(String str)
    去掉字符串兩端的控制符(control characters, char <= 32) ,如果變為 null 或 "" ,則返回 ""
    下面是示例:
    StringUtils.trimToEmpty(null) = ""
    StringUtils.trimToEmpty("") = ""
    StringUtils.trimToEmpty(" ") = ""
    StringUtils.trimToEmpty(" \b \t \n \f \r ") = ""
    StringUtils.trimToEmpty(" \n\tss \b") = "ss"
    StringUtils.trimToEmpty(" d d dd ") = "d d dd"
    StringUtils.trimToEmpty("dd ") = "dd"
    StringUtils.trimToEmpty(" dd ") = "dd"
    8. public static String strip(String str)
    去掉字符串兩端的空白符(whitespace) ,如果輸入為 null 則返回 null
    下面是示例(注意和 trim() 的區別):
    StringUtils.strip(null) = null
    StringUtils.strip("") = ""
    StringUtils.strip(" ") = ""
    StringUtils.strip(" \b \t \n \f \r ") = "\b"
    StringUtils.strip(" \n\tss \b") = "ss \b"
    StringUtils.strip(" d d dd ") = "d d dd"
    StringUtils.strip("dd ") = "dd"
    StringUtils.strip(" dd ") = "dd"
    9. public static String stripToNull(String str)
    去掉字符串兩端的空白符(whitespace) ,如果變為 null 或"",則返回 null
    下面是示例(注意和 trimToNull() 的區別):
    StringUtils.stripToNull(null) = null
    StringUtils.stripToNull("") = null
    StringUtils.stripToNull(" ") = null
    StringUtils.stripToNull(" \b \t \n \f \r ") = "\b"
    StringUtils.stripToNull(" \n\tss \b") = "ss \b"
    StringUtils.stripToNull(" d d dd ") = "d d dd"
    StringUtils.stripToNull("dd ") = "dd"
    StringUtils.stripToNull(" dd ") = "dd"
    10. public static String stripToEmpty(String str)
    去掉字符串兩端的空白符(whitespace) ,如果變為 null 或"" ,則返回""
    下面是示例(注意和 trimToEmpty() 的區別):
    StringUtils.stripToNull(null) = ""
    StringUtils.stripToNull("") = ""
    StringUtils.stripToNull(" ") = ""
    StringUtils.stripToNull(" \b \t \n \f \r ") = "\b"
    StringUtils.stripToNull(" \n\tss \b") = "ss \b"
    StringUtils.stripToNull(" d d dd ") = "d d dd"
    StringUtils.stripToNull("dd ") = "dd"
    StringUtils.stripToNull(" dd ") = "dd"

    以下方法只介紹其功能,不再舉例:
    11. public static String strip(String str, String stripChars)
    去掉 str 兩端的在 stripChars 中的字符。
    如果 str 為 null 或等于"" ,則返回它本身;
    如果 stripChars 為 null 或"" ,則返回 strip(String str) 。
    12. public static String stripStart(String str, String stripChars)
    和11相似,去掉 str 前端的在 stripChars 中的字符。
    13. public static String stripEnd(String str, String stripChars)
    和11相似,去掉 str 末端的在 stripChars 中的字符。
    14. public static String[] stripAll(String[] strs)
    對字符串數組中的每個字符串進行 strip(String str) ,然后返回。
    如果 strs 為 null 或 strs 長度為0,則返回 strs 本身
    15. public static String[] stripAll(String[] strs, String stripChars)
    對字符串數組中的每個字符串進行 strip(String str, String stripChars) ,然后返回。
    如果 strs 為 null 或 strs 長度為0,則返回 strs 本身
    16. public static boolean equals(String str1, String str2)
    比較兩個字符串是否相等,如果兩個均為空則也認為相等。
    17. public static boolean equalsIgnoreCase(String str1, String str2)
    比較兩個字符串是否相等,不區分大小寫,如果兩個均為空則也認為相等。
    18. public static int indexOf(String str, char searchChar)
    返回字符 searchChar 在字符串 str 中第一次出現的位置。
    如果 searchChar 沒有在 str 中出現則返回-1,
    如果 str 為 null 或 "" ,則也返回-1
    19. public static int indexOf(String str, char searchChar, int startPos)
    返回字符 searchChar 從 startPos 開始在字符串 str 中第一次出現的位置。
    如果從 startPos 開始 searchChar 沒有在 str 中出現則返回-1,
    如果 str 為 null 或 "" ,則也返回-1
    20. public static int indexOf(String str, String searchStr)
    返回字符串 searchStr 在字符串 str 中第一次出現的位置。
    如果 str 為 null 或 searchStr 為 null 則返回-1,
    如果 searchStr 為 "" ,且 str 為不為 null ,則返回0,
    如果 searchStr 不在 str 中,則返回-1
    21. public static int ordinalIndexOf(String str, String searchStr, int ordinal)
    返回字符串 searchStr 在字符串 str 中第 ordinal 次出現的位置。
    如果 str=null 或 searchStr=null 或 ordinal<=0 則返回-1
    舉例(*代表任意字符串):
    StringUtils.ordinalIndexOf(null, *, *) = -1
    StringUtils.ordinalIndexOf(*, null, *) = -1
    StringUtils.ordinalIndexOf("", "", *) = 0
    StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0
    StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1
    StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2
    StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5
    StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
    StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
    StringUtils.ordinalIndexOf("aabaabaa", "bc", 1) = -1
    StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0
    StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0
    22. public static int indexOf(String str, String searchStr, int startPos)
    返回字符串 searchStr 從 startPos 開始在字符串 str 中第一次出現的位置。
    舉例(*代表任意字符串):
    StringUtils.indexOf(null, *, *) = -1
    StringUtils.indexOf(*, null, *) = -1
    StringUtils.indexOf("", "", 0) = 0
    StringUtils.indexOf("aabaabaa", "a", 0) = 0
    StringUtils.indexOf("aabaabaa", "b", 0) = 2
    StringUtils.indexOf("aabaabaa", "ab", 0) = 1
    StringUtils.indexOf("aabaabaa", "b", 3) = 5
    StringUtils.indexOf("aabaabaa", "b", 9) = -1
    StringUtils.indexOf("aabaabaa", "b", -1) = 2
    StringUtils.indexOf("aabaabaa", "", 2) = 2
    StringUtils.indexOf("abc", "", 9) = 3
    23. public static int lastIndexOf(String str, char searchChar)
    基本原理同18
    24. public static int lastIndexOf(String str, char searchChar, int startPos)
    基本原理同19
    25. public static int lastIndexOf(String str, String searchStr)
    基本原理同20
    26. public static int lastIndexOf(String str, String searchStr, int startPos)
    基本原理同22
    另附:
    String 的 split(String regex) 方法的用法
    如果我們需要把某個字符串拆分為字符串數組,則通常用 split(String regex) 來實現。
    例如:
    Java代碼 復制代碼

    1. String str = "aa,bb,cc,dd";
    2. String[] strArray = str.split(",");
    3. System.out.println(strArray.length);
    4. for (int i = 0; i < strArray.length; i++) {
    5. System.out.println(strArray[i]);
    6. }

    String str = "aa,bb,cc,dd"; String[] strArray = str.split(","); System.out.println(strArray.length); for (int i = 0; i < strArray.length; i++) { System.out.println(strArray[i]); }



    結果為:
    4
    aa
    bb
    cc
    dd
    如果,
    String str = "aa.bb.cc.dd";
    String[] strArray = str.split(".");
    則結果為:0
    為什么結果不是我們所想的呢,原因是參數 String regex 是正則表達式 (regular expression) 而不是普通字符串,而 "." 在正則表達式中有特殊含義,表示匹配所有單個字符。如果要那樣拆分,我們必須給 "." 進行轉義,String[] strArray = str.split(".") 修改為 String[] strArray = str.split("\\.") 即可。



    另外收藏幾個實用的方法:

    org.apache.commons.lang.StringUtils中提供許多有用的字符串操作方法,了解這些方法,我們可以避免許多不必要的重復工作。下面介紹其中比較有用的幾個方法:

    檢查空字符串:

    01.StringUtils.isBlank(String str);  
    02.StringUtils.isNotBlank(String str);  



    縮寫字符串:

    String test  =   " This is a test of the abbreviation. "   
    02.System.out.println( StringUtils.abbreviate( test,  10  ) );  
    03.  
    04.[Console輸出]  
    05.This is   




    查找嵌套字符串:
    01. String htmlContent  =   " <html>/n "   +   
    02.                      "   <head>/n "   +   
    03.                      "     <title>Test Page</title>/n "   +   
    04.                      "   </head>/n "   +   
    05.                      "   <body>/n "   +   
    06.                      "     <p>This is a TEST!</p>/n "   +   
    07.                      "   </body>/n "   +   
    08.                      " </html> " ;  
    09.  
    10//  Extract the title from this XHTML content     
    11. String title  =  StringUtils.substringBetween(htmlContent,  " <title> " ,  " </title> " );  
    12.System.out.println(  " Title:  "   +  title );  
    13.  
    14.[Console輸出]  
    15.Title: Test Page   



    驗證字符串:
    01. String test1  =   " ORANGE " ;  
    02.  
    03.String test2  =   " ICE9 " ;  
    04.  
    05.String test3  =   " ICE CREAM " ;  
    06.  
    07.String test4  =   " 820B Judson Avenue " ;  
    08.  
    09.//判斷字母   
    10boolean  t1val  =  StringUtils.isAlpha( test1 );  //  returns true    
    11//判斷是不是字母數字   
    12boolean  t2val  =  StringUtils.isAlphanumeric( test2 );  //  returns true    
    13//字母空格   
    14boolean  t3val  =  StringUtils.isAlphaSpace( test3 );  //  returns true    
    15//字母數字空格   
    16boolean  t4val  =    
    17.  
    18.    StringUtils.isAlphanumericSpace( test4 );  //  returns true   


    計算字符串出現頻率:
    01. File manuscriptFile  =   new  File( " manuscript.txt " );  
    02.  
    03.Reader reader  =   new  FileReader( manuscriptFile );  
    04.  
    05.StringWriter stringWriter  =   new  StringWriter( );  
    06.  
    07while ( reader.ready( ) )   { writer.write( reader.read( ) ); }   
    08.   
    09.String manuscript  =  stringWriter.toString( );  
    10.  
    11//  Convert string to lowercase    
    12.   
    13.manuscript  =  StringUtils.lowerCase(manuscript);  
    14.  
    15//  count the occurrences of "futility"    
    16.   
    17int  numFutility  =  StringUtils.countMatches( manuscript,  " futility "  );   



    比較不同字符串:
    01int  dist  =  StringUtils.getLevenshteinDistance(  " Word " ,  " World "  );  
    02.  
    03.String diff  =  StringUtils.difference(  " Word " ,  " World "  );  
    04.  
    05int  index  =  StringUtils.indexOfDifference(  " Word " ,  " World "  );  
    06.  
    07.System.out.println(  " Edit Distance:  "   +  dist );  
    08.  
    09.System.out.println(  " Difference:  "   +  diff );  
    10.  
    11.System.out.println(  " Diff Index:  "   +  index );  
    12.  
    13.[Console輸出]  
    14.Edit Distance:  2   
    15.   
    16.Difference: ld  
    17.  
    18.Diff Index:  3   

    posted @ 2012-05-23 16:01 japper 閱讀(10321) | 評論 (0)編輯 收藏

    關于日歷控件My97DatePicker 在IE6下出現“無法打開站點,已終止操作”

    今天項目測試,發現在IE6下一個頁面打開失敗,提示:“無法打開站點,已終止操作”,測試了下發現是日歷控件My97DatePicker 導致的錯誤,于是看了下My97DatePicker 的相關介紹,無果;最后無意間百度了下,還是找到了解決辦法:

    1、My97DatePicker 官方:http://www.my97.net
    2、在IE6下出現“無法打開站點,已終止操作”的解決辦法(轉):

    My97DatePicker js 日期控件做的確實很優秀,但在ie6上顯示最會有大小的問題,首先是ie6本身的問題,ie6對css的中文注釋并不是很支持.所以如果css文件中有中文注釋,那么這部分的css將會失效。

    My97DatePicker 里面唯一的兩個css文件都是有中文注釋的,所以引用這個日期控件.最好是把它的css文件中的中文注釋給去掉.

    在frame框架中調用這個控件時老是探出“無法打開站點,已終止操作?”消息框,官網也有,綜合下解決方法:
    1、IE6中使用時,如果有 base target標簽 必須在日期控件載入后設置
    <script language="javascript" type="text/javascript" src="../My97DatePicker/WdatePicker.js"></script>
    <base target="_self" />  (將頭部的<base href="<%=basePath%>"> ,放在你引用 WdatePacker.js的下面)
    2、在<script>標簽中加上defer="defer"
    3、將<script>放在頁面<body>后面
    4、將<script>放在頁面</html>后面
    5、這是一個絕對有效的方法,但是會丟失跨越iframe的特性,把WdatePicker.js里面的$crossFrame改成false 

    另外,在IE6下直接輸入日期,會出現輸入從右到左顯示的情況,輸入的日期顯示順序混亂,出現該問題一般是由于該文本框帶有readonly屬性,將該屬性去掉即可恢復正常! 


    使用方法:

    <script type="text/javascript" src="/My97DatePicker/WdatePicker.js"></script> 

    然后就是
    <input class="Wdate" type="text"  name="memberBirth" onClick="WdatePicker()"  />

    加上class
    ="Wdate"在左邊會有個日期的小圖標在文本框中,當然也可以不加。

    3、My97DatePicker 使用需要重點配置介紹:
    http://www.my97.net/dp/demo/resource/3.asp
    比如:dateFmt--string:'yyyy-MM-dd'   日期顯示格式,你可以參考
    4、記錄下簡單的調用方法:
        在<HEAD></HEAD>之間增加:<script defer="defer" language="JavaScript" type="text/javascript" src="<%=basePath%>/sz/My97DatePicker/WdatePicker.js"></script>
        添加調用:<input id="StartTime" name="StartTime" value="<%=startTime1==null?" ":startTime1%>" type="text" class="Wdate"  style="width:160px" onclick="WdatePicker();"/>

    5、記錄一個在當前頁面動態顯示時間的js:
        //添加web時間          

       <script>
       function testDate()
    {
        var date
    =new Date();
        var result
    =date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+"  "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
        document.getElementById(
    "mydate").innerHTML=result;
        }
    ;
        setInterval(
    "testDate()"1000);        
        
    </script> 


     

    posted @ 2012-05-23 10:51 japper 閱讀(3107) | 評論 (1)編輯 收藏

    IO 文本操作記錄

    1、判斷文本目錄或者文件是否存在,如不存在,可以進行創建dir1.mkdir();刪除file.delete();  

    1 File dir = new File(TXTPATH); // TXTPATH 可以是一個目錄或者一個文件的路徑。
    2 if (!dir.exists()) {
    3             flag = false;
    4             if (logger4onln.isInfoEnabled()) {
    5                 logger4onln
    6                         .info("[readtxtfile] the file directory isn't exist. ");
    7             }
    8             return;
    9         }

     2、 獲取該目錄下的文件名 

     

    String[] filename = dir.list();// 獲取該目錄下的文件名,形成一個數組
    for (int i = 0; i < filename.length; i++
    {
    //do something 可以通過遍歷每個文件名,進行處理
    }

    3、這里順便記錄一個獲取日期的方法:

     

    1 Calendar calendarYest = Calendar.getInstance(); // 前一天的日期時間
    2 calendarYest.add(Calendar.DATE, -1);   //將當前時間的日 減一天。 通過//calendarYest.setTimeZone(new Date().getTime()) 來設置一個自定義時間。
    3 int month = calendarYest.get(Calendar.MONTH);  //獲取月份

    4、通過正則表達式判斷文件名格式是否正確

     

    Pattern pattern = Pattern.compile("" + KEY_FILE_NAME
                            
    + "\\d{10}"); //這里的key_file_name是一種文本命名的固定格式
    Matcher matcher 
    = pattern.matcher(fileName);
    if (matcher.find()) 
    {
    //do something.

    5、一個移動文本的方法

     

     1     /**
     2      * 移動文本方法
     3      */
     4     public static boolean removeTo(String from, String to, String fileName) {
     5         File file = new File(from, fileName);
     6         if (file.isFile()) {
     7             file.renameTo(new File(to, file.getName()));
     8             return true;
     9         }
    10         return false// 移動失敗
    11     }

     6、案例:需要每小時生成一個文本記錄,以小時為單位,超過一小時生成另外一個文本

                SimpleDateFormat format=new SimpleDateFormat(rsb.getString("BRASAUTH.DATAFORMAT"));
                
    //SimpleDateFormat format2=new SimpleDateFormat("hhmm");
                String filename=rsb.getString("BRASAUTH.FILENAME");
                String path
    =rsb.getString("BRASAUTH.TXTPATH");
                
                File dir 
    = new File(path);
                
    if(!dir.exists())
                
    {
                    
    //如果目錄不存在
                    dir.mkdir();
                }

                
    /*判斷文本,如已經經過一個小時,則另新建一個文本
                 * 
                 
    */
                
                String fullPath
    =path+filename+format.format(new Date())+".txt";            
                FileOutputStream outStr 
    = new FileOutputStream(new File(fullPath),true);             
                BufferedOutputStream buff 
    = new BufferedOutputStream(outStr); 
                buff.write(authInfo.getBytes());
                



     

     

    posted @ 2012-05-21 11:43 japper 閱讀(366) | 評論 (0)編輯 收藏

    eclipse快捷鍵(轉)

    常用快捷鍵:
    Ctrl+1 快速修復
    Ctrl+D: 刪除當前行
    Ctrl+Alt+↓ 復制當前行到下一行(復制增加)
    Ctrl+Alt+↑ 復制當前行到上一行(復制增加)
    Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
    Alt+↑ 當前行和上面一行交互位置(同上)
    Alt+← 前一個編輯的頁面
    Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
    Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性
    Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最后)
    Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
    Ctrl+Q 定位到最后編輯的地方
    Ctrl+L 定位在某行 (對于程序超過100的人就有福音了)
    Ctrl+M 最大化當前的Edit或View (再按則反之)
    Ctrl+/ 注釋當前行,再按則取消注釋
    Ctrl+O 快速顯示 OutLine
    Ctrl+T 快速顯示當前類的繼承結構
    Ctrl+W 關閉當前Editer
    Ctrl+K 參照選中的Word快速定位到下一個
    Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)
    Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
    Ctrl+×(小鍵盤) 展開當前類中的所有代碼
    Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
    Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作)
    Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)
    Ctrl+Shift+F4 關閉所有打開的Editer
    Ctrl+Shift+X 把當前選中的文本全部變味小寫
    Ctrl+Shift+Y 把當前選中的文本全部變為小寫
    Ctrl+Shift+F 格式化當前代碼
    Ctrl+Shift+P 定位到對于的匹配符(譬如{}) (從前面定位后面時,光標要在匹配符里面,后面到前面,則反之)下面的快捷鍵是重構里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快捷鍵都是Alt+Shift開頭的了)
    Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節省很多勞動力)
    Alt+Shift+M 抽取方法 (這是重構里面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
    Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)
    Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字符串抽取成一個變量,尤其是多處調用的時候)
    Alt+Shift+F 把Class中的local變量變為field變量 (比較實用的功能)
    Alt+Shift+I 合并變量(可能這樣說有點不妥Inline)
    Alt+Shift+V 移動函數和變量(不怎么常用)
    Alt+Shift+Z 重構的后悔藥(Undo)
    編輯
    全局 查找并替換 Ctrl+F
    文本編輯器 查找上一個 Ctrl+Shift+K
    文本編輯器 查找下一個 Ctrl+K
    全局 撤銷 Ctrl+Z
    全局 復制 Ctrl+C
    全局 恢復上一個選擇 Alt+Shift+↓
    全局 剪切 Ctrl+X
    全局 快速修正 Ctrl1+1
    全局 內容輔助 Alt+/
    全局 全部選中 Ctrl+A
    全局 刪除 Delete
    全局 上下文信息 Alt+?
    Alt+Shift+?
    Ctrl+Shift+Space
    java編輯器 顯示工具提示描述 F2
    java編輯器 選擇封裝元素 Alt+Shift+↑
    java編輯器 選擇上一個元素 Alt+Shift+←
    java編輯器 選擇下一個元素 Alt+Shift+→
    文本編輯器 增量查找 Ctrl+J
    文本編輯器 增量逆向查找 Ctrl+Shift+J
    全局 粘貼 Ctrl+V
    全局 重做 Ctrl+Y
    查看
    全局 放大 Ctrl+=
    全局 縮小 Ctrl+-
    窗口
    全局 激活編輯器 F12
    全局 切換編輯器 Ctrl+Shift+W
    全局 上一個編輯器 Ctrl+Shift+F6
    全局 上一個視圖 Ctrl+Shift+F7
    全局 上一個透視圖 Ctrl+Shift+F8
    全局 下一個編輯器 Ctrl+F6
    全局 下一個視圖 Ctrl+F7
    全局 下一個透視圖 Ctrl+F8
    文本編輯器 顯示標尺上下文菜單 Ctrl+W
    全局 顯示視圖菜單 Ctrl+F10
    全局 顯示系統菜單 Alt+-
    導航
    java編輯器 打開結構 Ctrl+F3
    全局 打開類型 Ctrl+Shift+T
    全局 打開類型層次結構 F4
    全局 打開聲明 F3
    全局 打開外部javadoc Shift+F2
    全局 打開資源 Ctrl+Shift+R
    全局 后退歷史記錄 Alt+←
    全局 前進歷史記錄 Alt+→
    全局 上一個 Ctrl+,
    全局 下一個 Ctrl+.
    java編輯器 顯示大綱 Ctrl+O
    全局 在層次結構中打開類型 Ctrl+Shift+H
    全局 轉至匹配的括號 Ctrl+Shift+P
    全局 轉至上一個編輯位置 Ctrl+Q
    java編輯器 轉至上一個成員 Ctrl+Shift+↑
    java編輯器 轉至下一個成員 Ctrl+Shift+↓
    文本編輯器 轉至行 Ctrl+L
    搜索
    全局 出現在文件中 Ctrl+Shift+U
    全局 打開搜索對話框 Ctrl+H
    全局 工作區中的聲明 Ctrl+G
    全局 工作區中的引用 Ctrl+Shift+G
    文本編輯
    文本編輯器 改寫切換 Insert
    文本編輯器 上滾行 Ctrl+↑
    文本編輯器 下滾行 Ctrl+↓
    文件
    全局 保存 Ctrl+X
    Ctrl+S
    全局 打印 Ctrl+P
    全局 關閉 Ctrl+F4
    全局 全部保存 Ctrl+Shift+S
    全局 全部關閉 Ctrl+Shift+F4
    全局 屬性 Alt+Enter
    全局 新建 Ctrl+N
    項目
    全局 全部構建 Ctrl+B
    源代碼
    java編輯器 格式化 Ctrl+Shift+F
    java編輯器 取消注釋 Ctrl+\
    java編輯器 注釋 Ctrl+/
    java編輯器 添加導入 Ctrl+Shift+M
    java編輯器 組織導入 Ctrl+Shift+O
    java編輯器 使用try/catch塊來包圍 未設置,太常用了,所以在這里列出,建議自己設置。也可以使用Ctrl+1自動修正。
    運行
    作用域 功能 快捷鍵
    全局 單步返回 F7
    全局 單步跳過 F6
    全局 單步跳入 F5
    全局 單步跳入選擇 Ctrl+F5
    全局 調試上次啟動 F11
    全局 繼續 F8
    全局 使用過濾器單步執行 Shift+F5
    全局 添加/去除斷點 Ctrl+Shift+B
    全局 顯示 Ctrl+D
    全局 運行上次啟動 Ctrl+F11
    全局 運行至行 Ctrl+R
    全局 執行 Ctrl+U
    重構
    作用域 功能 快捷鍵
    全局 撤銷重構 Alt+Shift+Z
    全局 抽取方法 Alt+Shift+M
    全局 抽取局部變量 Alt+Shift+L
    全局 內聯 Alt+Shift+I
    全局 移動 Alt+Shift+V
    全局 重命名 Alt+Shift+R
    全局 重做 Alt+Shift+Y

    posted @ 2012-05-21 10:58 japper 閱讀(312) | 評論 (0)編輯 收藏

    oracle sql日期比較(轉)

    (轉)oracle sql日期比較:
    在今天之前:
    select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
    select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

    在今天只后:
    select * from up_date where update > to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
    select * from up_date where update >= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

    精確時間:
    select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

    在某段時間內:
    select * from up_date where update between to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss'and to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
    select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss'and update > to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
    select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss'and update >= to_date('2007-07-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

     

    1. 當前系統日期、時間
    select getdate() 
    2. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值
    例如:向日期加上2天
    select dateadd(day,
    2,'2004-10-15') --返回:2004-10-17 00:00:00.000

    3. datediff 返回跨兩個指定日期的日期和時間邊界數。
    select datediff(day,
    '2004-09-01','2004-09-18') --返回:17

    4. datepart 返回代表指定日期的指定日期部分的整數。
    SELECT DATEPART(month, 
    '2004-10-15') --返回 10

    5. datename 返回代表指定日期的指定日期部分的字符串
    SELECT datename(weekday, 
    '2004-10-15') --返回:星期五

    6. day(), month(),year() --可以與datepart對照一下

    select 當前日期=convert(varchar(
    10),getdate(),120)
    ,當前時間=convert(varchar(
    8),getdate(),114)

    7. select datename(dw,'2004-10-15')

    select 本年第多少周=datename(week,getdate())
    ,今天是周幾=datename(weekday,getdate())



    函數 參數/功能 
    GetDate( ) --返回系統目前的日期與時間 
    DateDiff (interval,date1,date2) --以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1 
    DateAdd (interval,number,date) --以interval指定的方式,加上number之后的日期 
    DatePart (interval,date) ---返回日期date中,interval指定部分所對應的整數值 
    DateName (interval,date) --返回日期date中,interval指定部分所對應的字符串名稱 

    參數 interval的設定值如下:

    值 縮 寫(Sql Server) Access 和 ASP 說明 
    Year Yy yyyy 年 
    1753 ~ 9999 
    Quarter Qq q 季 
    1 ~ 4 
    Month Mm m 月1 ~ 
    12 
    Day of year Dy y 一年的日數,一年中的第幾日 
    1-366 
    Day Dd d 日,
    1-31 
    Weekday Dw w 一周的日數,一周中的第幾日 
    1-7 
    Week Wk ww 周,一年中的第幾周 
    0 ~ 51 
    Hour Hh h 時0 ~ 
    23 
    Minute Mi n 分鐘0 ~ 
    59 
    Second Ss s 秒 
    0 ~ 59 
    Millisecond Ms - 毫秒 
    0 ~ 999 

    access 和 asp 中用date()和now()取得系統日期時間;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,這些函數的用法也類似

    舉例:
    1.GetDate() 用于sql server :select GetDate()

    2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值為 514592 秒
    DateDiff(
    'd','2005-07-20','2005-7-25 22:56:32')返回值為 5 天

    3.DatePart('w','2005-7-25 22:56:32')返回值為 2 即星期一(周日為1,周六為7)
    DatePart(
    'd','2005-7-25 22:56:32')返回值為 25即25號
    DatePart(
    'y','2005-7-25 22:56:32')返回值為 206即這一年中第206天
    DatePart(
    'yyyy','2005-7-25 22:56:32')返回值為 2005即2005年 

    SQL Server DATEPART() 函數返回 SQLServer datetime 字段的一部分。 

    SQL Server DATEPART() 函數的語法是: 
    DATEPART(portion, datetime)

    其中 datetime 是 SQLServer datetime 字段和部分的名稱是下列之一: Ms for Milliseconds
    Yy for Year
    Qq for Quarter of the Year
    Mm for Month
    Dy for the Day of the Year
    Dd for Day of the Month
    Wk for Week
    Dw for the Day of the Week
    Hh for Hour
    Mi for Minute
    Ss for Second


    --
    1.編寫函數,實現按照'年月日,星期幾,上午下午晚上'輸出時間信息(2009年3月16日星期一下午)
    select datename(yy,getdate()) + 
    '' +
           datename(mm,getdate()) + 
    '' + 
           datename(dd,getdate()) + 
    '' +
           datename(weekday,getdate()) +
           case when datename(hh,getdate()) < 
    12 then '上午' else '下午'end                                                                                                                          
    --
    2.編寫函數,根據輸入時間。輸出該天是該年的第幾天
    select datepart(dy,getdate())
    --
    3.求出隨機輸出字符‘a-z
    select char(
    97+abs(checksum(newid()))%26)
    select char(
    97+rand()*26)

    posted @ 2012-05-21 10:44 japper 閱讀(1006) | 評論 (0)編輯 收藏

    java 應用程序讀取jar包外自定義配置文件及log4j日志配置文件

    今天忙了一下午,終于把這個讀取方法寫到了,當然引用網絡上的一個方法;其實同事也寫了一個讀取方法,但是感覺過于復雜。
    總結一個:主要分幾個步驟
    1、因為是讀取外部目錄的配置文件,因此不適用該方式:
    ResourceBundle rsb1 = ResourceBundle.getBundle("D:/WORK/XXXX/XXXXCount.properties");默認讀取與該類同路徑的配置文件;
    private static String proFileFoLog4j=Logger.getLogger(XXXXAuth.class);默認讀取jar包中的log4j日志配置文件;

    2、解決方法1:
    1)、重新加載Properties文件:
      Properties pro = new Properties();
      String path=getConf(proFileName);//獲取當前類所在的路徑,該方法請看下面。
            try {
             pro.load(new FileInputStream(path));
      } catch (FileNotFoundException e) {
       e.printStackTrace();
      } catch (IOException e) {
       e.printStackTrace();
      }
    2)、編寫一個獲取當前類路徑的方法,這里直接使用了網友已經寫好的代碼,直接運行,不用修改,省事!當然還有其它的獲取路徑的方法:
     // 其他方法的定義 //
     /**
      * *getAppPath需要一個當前程序使用的Java類的class屬性參數,它可以 返回打包過的
      * *Java可執行文件(jar,war)所處的系統目錄名或非打包Java程 序所處的目錄
      *
      * @param cls為Class類型
      *@return 返回值為該類所在的 Java程序運行的目錄
      */
     public static String getAppPath(Class cls) {
      ClassLoader loader = cls.getClassLoader();
      String clsName = cls.getName() + ".class";
      Package pack = cls.getPackage();
      String path = "";
      if (pack != null)
      {
       String packName = pack.getName();
       clsName = clsName.substring(packName.length() + 1);
       if (packName.indexOf(".") < 0)
        path = packName + "/";
       else {
        int start = 0, end = 0;
        end = packName.indexOf(".");
        while (end != -1) {
         path = path + packName.substring(start, end) + "/";
         start = end + 1;
         end = packName.indexOf(".", start);
        }
        path = path + packName.substring(start) + "/";
       }
      }
      java.net.URL url = loader.getResource(path + clsName);
      String realPath = url.getPath();
      int pos = realPath.indexOf("file:");
      if (pos > -1)
       realPath = realPath.substring(pos + 5);
      pos = realPath.indexOf(path + clsName);
      realPath = realPath.substring(0, pos - 5);
      if (realPath.endsWith("!"))
       realPath = realPath.substring(0, realPath.lastIndexOf("/"));
      return realPath;
     }// getAppPath定義 結束

    3)獲取完整的配置文件路徑名稱: String path=getConf.getAppPath(XXXXAuth.class)+proFileName;被第一步pro.load(new FileInputStream(path));調用即可獲取配置文件。
    4)通過getProperties(proFileFoRead).get("XXXXAUTH.ISENABLE").toString();獲取配置文件信息即可。

    2、解決方法2:
    關于log4j引用外部文件夾的log4j.properties文件,有一種最簡單的方法:直接在main函數中加入如下一句:
    PropertyConfigurator.configure(getConf(proFileFoLog4j)); //設置log4j配置文件的路徑
    其中getConf()方法調用了上面的獲取完整路徑的方法,即可。




    posted @ 2012-05-17 19:10 japper 閱讀(9064) | 評論 (0)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 
    主站蜘蛛池模板: 亚洲人成网站观看在线播放| 免费无码黄动漫在线观看| 免费羞羞视频网站| 国产精品亚洲综合一区在线观看| 无码av免费网站| 亚洲一区二区三区高清不卡| 日韩插啊免费视频在线观看| 亚洲另类激情综合偷自拍图| 特级毛片全部免费播放a一级| 成人免费AA片在线观看| 久久精品国产亚洲av水果派 | a级毛片免费高清毛片视频| 国产精品高清全国免费观看| 最新亚洲精品国偷自产在线| 69堂人成无码免费视频果冻传媒| 麻豆亚洲AV永久无码精品久久| 国产又黄又爽又大的免费视频 | 亚洲a级片在线观看| 日本高清在线免费| 一级A毛片免费观看久久精品| 免费在线不卡视频| 永久在线免费观看| 女人裸身j部免费视频无遮挡| 免费国产成人午夜私人影视| 亚洲欧好州第一的日产suv| 国语成本人片免费av无码| 亚洲成人动漫在线观看| 蜜桃AV无码免费看永久| 亚洲色图黄色小说| 亚洲精品亚洲人成在线观看| 国产成人免费AV在线播放| 国产午夜亚洲不卡| 深夜福利在线视频免费| 中文字幕无码精品亚洲资源网| 日亚毛片免费乱码不卡一区| 久久久久亚洲爆乳少妇无 | 一级毛片免费毛片毛片| 亚洲区小说区激情区图片区| 99麻豆久久久国产精品免费| 亚洲国产精品久久久久婷婷软件 | 成人免费午夜无码视频|