……天天向上

好的想法总是无穷无尽

统计

留言簿(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 阅读(9987) | 评论 (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 阅读(1361) | 评论 (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 阅读(10239) | 评论 (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'   日期显示格式,你可以参考自定义格式;可以根据实际需求改成'yyyy-MM-dd HH:mm:ss'

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 阅读(3092) | 评论 (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 阅读(350) | 评论 (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 阅读(293) | 评论 (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 阅读(985) | 评论 (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 阅读(9021) | 评论 (0)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3