<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>caiying</title>
    <description></description>
    <link>http://caiying0504.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>js验证时间</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/215928" style="color:red;">http://caiying0504.javaeye.com/blog/215928</a>&nbsp;
          发表时间: 2008年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1 短时间，形如 (13:04:06) <br />      function isTime(str) <br /><br />      { <br /><br />        var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); <br /><br />        if (a == null) {alert('输入的参数不是时间格式'); return false;} <br /><br />        if (a[1]>24 || a[3]>60 || a[4]>60) <br /><br />        { <br /><br />          alert("时间格式不对"); <br /><br />          return false <br /><br />        } <br /><br />        return true; <br /><br />      } <br /><br />  2 短日期，形如 (2003-12-05) <br /><br />      function strDateTime(str) <br /><br />      { <br /><br />         var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); <br /><br />         if(r==null)return false; <br /><br />         var d= new Date(r[1], r[3]-1, r[4]); <br /><br />         return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); <br /><br />      } <br /><br />  3 长时间，形如 (2003-12-05 13:04:06) <br /><br />      function strDateTime(str) <br /><br />      { <br /><br />        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; <br /><br />        var r = str.match(reg); <br /><br />        if(r==null)return false; <br /><br />        var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); <br /><br />        return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]); <br /><br />      } <br /><br /><br /><br />原文地址：http://jxdyzwh.cnblogs.com/archive/2006/02/07/326625.aspx
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/215928#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jul 2008 18:47:24 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/215928</link>
        <guid>http://caiying0504.javaeye.com/blog/215928</guid>
      </item>
      <item>
        <title>java正则表达式使用</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/215525" style="color:red;">http://caiying0504.javaeye.com/blog/215525</a>&nbsp;
          发表时间: 2008年07月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
package org.ankang06.admin;

import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class CopyOfMainRun {

  public void test(){
    Pattern p=null; //正则表达式 

    Matcher m=null; //操作的字符串 

    boolean b; 

    String s=null; 

    StringBuffer sb=null; 

    int i=0; 

    //字符串匹配，这是不符合的 

     p = Pattern.compile("a*b"); //正则表达式表示首字母是a，中间是任意字符，结尾以b结束

     m = p.matcher("baaaaab"); 

     b = m.matches(); 

    System.out.println(b+"&lt;br>;"); //输出：false

   //字符串匹配，这是符合的 

     p = Pattern.compile("a*b"); 

     m = p.matcher("aaaaab"); 

     b = m.matches(); 

     System.out.println(b+"&lt;br>;"); //输出：ture

   //字符串替换 

     p = Pattern.compile("ab"); 

     m = p.matcher("aaaaab"); 

     s = m.replaceAll("d");    //找到字符串中所有的ad然后替换成d

     System.out.println(s+"&lt;br>;"); //输出：aaaad
     
     

     p = Pattern.compile("a*b"); 

     m = p.matcher("aaaaab"); 

     s = m.replaceAll("d");   

     System.out.println(s+"&lt;br>;"); //输出：d

     p = Pattern.compile("a*b"); 

     m = p.matcher("caaaaab"); 

     s = m.replaceAll("d");   

     System.out.println(s+"&lt;br>;"); //输出：cd

   //字符串查找 

    p = Pattern.compile("cat"); 

    m = p.matcher("one cat two cats in the yard"); 

    sb = new StringBuffer(); 

    while (m.find()) { 

        m.appendReplacement(sb, "dog"); //找到与cat相同的字符用dog代替

        i++; 

    } 

    m.appendTail(sb); //将整个字符串中的cat替换成dog

    System.out.println(sb.toString()+"&lt;br>;"); 

    System.out.println(i+"&lt;br>;"); 

    i=0;  

    p = Pattern.compile("cat"); 

    m = p.matcher("one cat two ca tsi nthe yard"); 

     sb = new StringBuffer(); 

    while (m.find()) { 

        m.appendReplacement(sb, "dog"); 

        i++; 

    } 

    m.appendTail(sb); 

    System.out.println(sb.toString()+"&lt;br>;"); 

    System.out.println(i+"&lt;br>;"); 

     

     

    p = Pattern.compile("cat"); 

    m = p.matcher("one cat two cats in the yard"); 

    p=m.pattern(); 

    m = p.matcher("bacatab"); 

    b = m.matches(); 

    System.out.println(b+"&lt;br>;");  

    s = m.replaceAll("dog");  

    System.out.println(s+"&lt;br>;");  

     

    i=0; 

    p = Pattern.compile("(fds){2,}"); //匹配两个连续的fds

    m = p.matcher("dsa da fdsfds aaafdsafds aaf"); 

     sb = new StringBuffer(); 

    while (m.find()) { 

        m.appendReplacement(sb, "dog"); 

        i++; 

    } 

    m.appendTail(sb); 

    System.out.println(sb.toString()+"&lt;br>;"); 

    System.out.println(i+"&lt;br>;"); 

     

     p = Pattern.compile("cat"); 

     m = p.matcher("one cat two cats in the yard"); 

     sb = new StringBuffer(); 

     while (m.find()) { 

        m.appendReplacement(sb, "&lt;font color=\"red\">;cat&lt;/font>;"); 

     } 

   m.appendTail(sb); 

   System.out.println(sb.toString()+"&lt;br>;"); 

   String aa=sb.toString(); 

   System.out.println(aa+"&lt;br>;"); 

   //字符串分割 

     p = Pattern.compile("a+"); //匹配连续的a字符串

     String[] a=p.split("caaaaaat"); //根据正则表达式将字符串分割

     for(i=0;i&lt;a.length;i++) 

     { 

     System.out.println(a[i]+"&lt;br>;");//输出：c和t 

     } 

     p = Pattern.compile("a+"); 

     a=p.split("c aa aaaa t",0); 

     for(i=0;i&lt;a.length;i++) 

     { 

     System.out.println(a[i]+"&lt;br>;");// 输出"c "," "," t". 

     } 

     p = Pattern.compile(" +"); 

     a=p.split("c aa    aaaa t",0); 

     for(i=0;i&lt;a.length;i++) 

     { 

     System.out.println(a+"&lt;br>;"); 

     } 

     p = Pattern.compile("\\+"); 

     a=p.split("dsafasdfdsafsda+dsagfasdfa+sdafds"); 

     System.out.println(a.length+"&lt;br>;"); 

     for(i=0;i&lt;a.length;i++) 

     { 

     System.out.println(a+"&lt;br>;"); 

     } 

  }
  public static void main(String[] args) {
    Pattern p=null; //正则表达式 

    Matcher m=null; //操作的字符串 

    boolean b; 

    String s=null; 

    StringBuffer sb=null; 

    int i=0; 

    
    //字符串分割 
    

    p = Pattern.compile(" +"); 
    String[] a=p.split("caaaaaat"); 

    a=p.split("c aa    aaaa t",0); 

    for(i=0;i&lt;a.length;i++) 

    { 

    System.out.println(a[i]+"&lt;br>;"); 

    }


   
  }

}

</pre>
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/215525#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Jul 2008 18:53:34 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/215525</link>
        <guid>http://caiying0504.javaeye.com/blog/215525</guid>
      </item>
      <item>
        <title>Hibernate使用到的.jar</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/215026" style="color:red;">http://caiying0504.javaeye.com/blog/215026</a>&nbsp;
          发表时间: 2008年07月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这里主要介绍的是Hibernate使用到的.jar<br /><br />Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。<br /><br />下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包：<br /><br />hibernate2.jar:<br /><br />Hibernate的库，没有什么可说的，必须使用的jar包<br /><br />cglib-asm.jar:<br /><br />CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包<br /><br />dom4j.jar:<br /><br />dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。<br /><br />odmg.jar:<br /><br />ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。<br /><br />commons-collections.jar：<br /><br />Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。<br /><br />commons-beanutils.jar：<br /><br />Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。<br /><br />commons-lang.jar:<br /><br />Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。<br /><br />commons-logging.jar:<br /><br />Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。<br /><br />使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。<br /><br />ant.jar:<br /><br />Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包<br /><br />optional.jar：<br /><br />Ant的一个辅助包。<br /><br />c3p0.jar：<br /><br />C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。<br /><br />proxool.jar：<br /><br />也是一个连接池，同上。<br /><br />commons-pool.jar, commons-dbcp.jar:<br /><br />DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。<br /><br />实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。<br /><br />connector.jar:<br /><br />JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。<br /><br />jaas.jar:<br /><br />JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。<br /><br />jcs.jar：<br /><br />如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。<br /><br />jdbc2_0-stdext.jar:<br /><br />JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。<br /><br />jta.jar：<br /><br />JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。<br /><br />junit.jar:<br /><br />Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。<br /><br />xalan.jar, xerces.jar, xml-apis.jar:<br /><br />Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/215026#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Jul 2008 16:22:12 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/215026</link>
        <guid>http://caiying0504.javaeye.com/blog/215026</guid>
      </item>
      <item>
        <title>js常用的判断函数</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/198238" style="color:red;">http://caiying0504.javaeye.com/blog/198238</a>&nbsp;
          发表时间: 2008年05月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          //****************************************************************<br />//* 名　　称：DataLength<br />//* 功    能：计算数据的长度<br />//* 入口参数：fData：需要计算的数据<br />//* 出口参数：返回fData的长度(Unicode长度为2，非Unicode长度为1)<br />//*****************************************************************<br />function DataLength(fData)<br />{<br />    var intLength=0<br />    for (var i=0;i&lt;fData.length;i++)<br />    {<br />        if ((fData.charCodeAt(i) &lt; 0) || (fData.charCodeAt(i) > 255))<br />            intLength=intLength+2<br />        else<br />            intLength=intLength+1    <br />    }<br />    return intLength<br />}<br /><br /><br />//****************************************************************<br />//* 名　　称：DataLength<br />//* 功    能：计算数据的长度<br />//* 入口参数：fData：需要计算的数据<br />//* 出口参数：返回fData的长度(Unicode长度为2，非Unicode长度为1)<br />//*****************************************************************<br />function DataLength(fData)<br />{<br />    var intLength=0<br />    for (var i=0;i&lt;fData.length;i++)<br />    {<br />        if ((fData.charCodeAt(i) &lt; 0) || (fData.charCodeAt(i) > 255))<br />            intLength=intLength+2<br />        else<br />            intLength=intLength+1    <br />    }<br />    return intLength<br />} <br /><br />//****************************************************************<br />//* 名　　称：IsEmpty<br />//* 功    能：判断是否为空<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：空                              <br />//*           False：非空<br />//*****************************************************************<br />function IsEmpty(fData)<br />{<br />    return ((fData==null) || (fData.length==0) )<br />} <br /><br /><br />//****************************************************************<br />//* 名　　称：IsDigit<br />//* 功    能：判断是否为数字<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：是0到9的数字                              <br />//*           False：不是0到9的数字 <br />//*****************************************************************<br />function IsDigit(fData)<br />{<br />    return ((fData>="0") && (fData&lt;="9"))<br />} <br /><br /><br />//****************************************************************<br />//* 名　　称：IsInteger<br />//* 功    能：判断是否为正整数<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：是整数，或者数据是空的                            <br />//*           False：不是整数<br />//*****************************************************************<br />function IsInteger(fData)<br />{<br />    //如果为空，返回true<br />    if (IsEmpty(fData))<br />        return true<br />    if ((isNaN(fData)) || (fData.indexOf(".")!=-1) || (fData.indexOf("-")!=-1))<br />        return false    <br />    <br />    return true    <br />} <br /><br />//****************************************************************<br />//* 名　　称：IsEmail<br />//* 功    能：判断是否为正确的Email地址<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：正确的Email地址，或者空                              <br />//*           False：错误的Email地址<br />//*****************************************************************<br />function IsEmail(fData)<br />{<br />    if (IsEmpty(fData))<br />        return true<br />    if (fData.indexOf("@")==-1)<br />        return false<br />    var NameList=fData.split("@");<br />    if (NameList.length!=2)<br />        return false  <br />    if (NameList[0].length&lt;1 )<br />        return false   <br />    if (NameList[1].indexOf(".")&lt;=0)<br />        return false <br />    if (fData.indexOf("@")>fData.indexOf(".")) <br /> return false<br />    if (fData.indexOf(".")==fData.length-1)<br /> return false<br />    <br />    return true    <br />} <br /><br />//****************************************************************<br />//* 名　　称：IsPhone<br />//* 功    能：判断是否为正确的电话号码（可以含"()"、"（）"、"+"、"-"和空格）<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：正确的电话号码，或者空                              <br />//*           False：错误的电话号码<br />//* 错误信息：<br />//*****************************************************************<br />function IsPhone(fData)<br />{<br />    var str;<br />    var fDatastr="";<br />    if (IsEmpty(fData))<br />        return true<br />    for (var i=0;i&lt;fData.length;i++)<br />    {<br />        str=fData.substring(i,i+1);<br />        if (str!="(" && str!=")" && str!="（" && str!="）" && str!="+" && str!="-" && str!=" ")<br />           fDatastr=fDatastr+str;<br />    }  <br />    //alert(fDatastr);  <br />    if (isNaN(fDatastr))<br />        return false <br />    return true    <br />} <br /><br />//****************************************************************<br />//* 名　　称：IsPlusNumeric<br />//* 功    能：判断是否为正确的正数（可以含小数部分）<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：正确的正数，或者空                              <br />//*           False：错误的正数<br />//* 错误信息：<br />//*****************************************************************<br />function IsPlusNumeric(fData)<br />{<br />    if (IsEmpty(fData))<br />        return true<br />    if ((isNaN(fData)) || (fData.indexOf("-")!=-1))<br />        return false <br />    return true    <br />} <br /><br />//****************************************************************<br />//* 名　　称：IsNumeric<br />//* 功    能：判断是否为正确的数字（可以为负数，小数）<br />//* 入口参数：fData：要检查的数据<br />//* 出口参数：True：正确的数字，或者空                              <br />//*           False：错误的数字<br />//* 错误信息：<br />//*****************************************************************<br />function IsNumeric(fData)<br />{<br />    if (IsEmpty(fData))<br />        return true<br />    if (isNaN(fData))<br />        return false<br />        <br />    return true    <br />} <br /><br /><br />//****************************************************************<br />//* 名　　称：IsIntegerInRange<br />//* 功    能：判断一个数字是否在指定的范围内<br />//* 入口参数：fInput：要检查的数据<br />//*           fLower：检查的范围下限，如果没有下限，请用null<br />//*           fHigh：检查的上限，如果没有上限，请用null<br />//* 出口参数：True：在指定的范围内                              <br />//*           False：超出指定范围<br />//*****************************************************************<br />function IsIntegerInRange(fInput,fLower,fHigh)<br />{<br />    if (fLower==null)<br />        return (fInput&lt;=fHigh)<br />    else if (fHigh==null)<br />        return (fInput>=fLower) <br />    else         <br />        return ((fInput>=fLower) && (fInput&lt;=fHigh))<br />}
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/198238#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 May 2008 14:14:33 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/198238</link>
        <guid>http://caiying0504.javaeye.com/blog/198238</guid>
      </item>
      <item>
        <title>quartz 定时执行任务</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/195980" style="color:red;">http://caiying0504.javaeye.com/blog/195980</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://daoger.javaeye.com/blog/195486" target="_blank">http://daoger.javaeye.com/blog/195486</a>
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/195980#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 12:00:36 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/195980</link>
        <guid>http://caiying0504.javaeye.com/blog/195980</guid>
      </item>
      <item>
        <title>sql having的用法</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/189661" style="color:red;">http://caiying0504.javaeye.com/blog/189661</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          HAVING<br /><br />用户在使用SQL语言的过程中可能希望解决的一个问题就是对由sum或其它集合函数运算结果的输出进行限制。例如，我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息，这时我们就需要使用HAVING从句。语法格式为：<br /><br />SELECT "column_name1", SUM("column_name2") <br /><br />FROM "table_name" <br /><br />GROUP BY "column_name1" <br /><br />HAVING (arithematic function condition)<br /><br />（GROUP BY从句可选）<br /><br />由此，我们可以使用如下命令实现上述查询目的：<br /><br />SELECT store_name, SUM(sales) <br /><br />FROM Store_Information <br /><br />GROUP BY store_name<br /><br />HAVING SUM(sales) > 1500<br /><br />查询结果显示为：<br /><br />store_name SUM(Sales) <br /><br />Los Angeles $1800 <br /><br />小注：<br /><br />SQL语言中设定集合函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下，HAVING从句被放置在SQL命令的结尾处
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/189661#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 May 2008 12:03:17 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/189661</link>
        <guid>http://caiying0504.javaeye.com/blog/189661</guid>
      </item>
      <item>
        <title>如何通过看源码学习框架</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/188129" style="color:red;">http://caiying0504.javaeye.com/blog/188129</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          出来工作一年多了，框架用了好几个，感觉还是和刚从学校出来时掌握的差不多。对框架也就是会使用而不知道其所以然，就是对错误的处理经验要强点。前辈说要进一步学习就的通过看源码，我尝试着去下载所用框架的src包，遇到问题时去看框架的源码，但好多时候发现根本看不懂，很郁闷，是基础不扎实吗，请各位过来人指点指点。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/188129#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Apr 2008 17:37:28 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/188129</link>
        <guid>http://caiying0504.javaeye.com/blog/188129</guid>
      </item>
      <item>
        <title>struts2中的select标签的使用</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/183895" style="color:red;">http://caiying0504.javaeye.com/blog/183895</a>&nbsp;
          发表时间: 2008年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          struts2的select标签中，常用的有以下几个属性：<br /><br />(1)struts2中的select 标签中，必须设置的属性只有一个，即是list。<br /><br />(2)select标签的list中必须有值，不然会报错。如果没有值，可以加上headerKey, headerValue，这样就可以通过了。如：<br /><br /><pre name="code" class="java">
&lt;s:select   name="geElement.childType" list="childTypeList" listKey="key"  
listValue="value" headerKey="0" headerValue="--请选择子类型--"/>   
</pre><br /><br />其中，即使list中有值，我们也通常会加上headerKey, headerValue，即列表中显示的第一个选项。注意，headerKey不可以为空，不可以为-1。<br /><br />(3)list属性：通常是在action中定义的，必须是一个可以迭代的源，如为一个List, Map, Set等。如果是一个Map，那么map的key就对应于select标签中的value，map中的value就对应于select标签中的option。而如果是一个List或者是一个Set，那么可以通过listKey和listValue指定。<br /><br />(4)listKey和listValue：listKey即对应于select标签中的value， listValue即对应于select标签中的option。<br /><br />(5)name属性：即是表单中select的名称。<br /><br />(6)属性theme="simple"使其不换行显示；
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/183895#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Apr 2008 20:54:26 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/183895</link>
        <guid>http://caiying0504.javaeye.com/blog/183895</guid>
      </item>
      <item>
        <title>java生成指定长度的随机数</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/183428" style="color:red;">http://caiying0504.javaeye.com/blog/183428</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
import java.util.Random;

public class card {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=0 ;i&lt;100;i++){
			System.out.println(genRandomNum(12));
		}		
	}

	/**
	 * 生成随即密码
	 * 
	 * @param pwd_len
	 *            生成的密码的总长度
	 * @return 密码的字符串
	 */
	public static String genRandomNum(int pwd_len) {
		// 35是因为数组是从0开始的，26个字母+10个数字
		final int maxNum = 10;
		int i; // 生成的随机数
		int count = 0; // 生成的密码的长度
		/*char[] str = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
				'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
				'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };*/
		
		char[] str = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

		StringBuffer pwd = new StringBuffer("");
		Random r = new Random();
		while (count &lt; pwd_len) {
			// 生成随机数，取绝对值，防止生成负数，

			i = Math.abs(r.nextInt(maxNum)); // 生成的数最大为36-1

			if (i >= 0 && i &lt; str.length) {
				pwd.append(str[i]);
				count++;
			}
		}

		return pwd.toString();
	}
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/183428#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 16:11:04 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/183428</link>
        <guid>http://caiying0504.javaeye.com/blog/183428</guid>
      </item>
      <item>
        <title>转-结合eclipse使用svn</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/182926" style="color:red;">http://caiying0504.javaeye.com/blog/182926</a>&nbsp;
          发表时间: 2008年04月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          链接地址  http://www.ibm.com/developerworks/cn/opensource/os-ecl-subversion/
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/182926#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Apr 2008 15:19:21 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/182926</link>
        <guid>http://caiying0504.javaeye.com/blog/182926</guid>
      </item>
      <item>
        <title>eclipse在线安装svn插件</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/181767" style="color:red;">http://caiying0504.javaeye.com/blog/181767</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在线安装svn插件<br /><br />菜单栏 Help-- Find and Install-- 按new Remote Site,<br /><br />Name填 svn , URL填http://subclipse.tigris.org/update ,一直next到finished为止 <br /><br />菜单栏 Window-- Show View-- other-- 选择打开SVN目录下的SVN资源库<br />新建-- 资源库位置, URL填http://svn.javascud.org/svn/springside/trunk <br /><br />完成后点finished开始下载svn插件<br />下载后安装然后重启eclipse
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/181767#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 14:26:33 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/181767</link>
        <guid>http://caiying0504.javaeye.com/blog/181767</guid>
      </item>
      <item>
        <title>js获取select选项的值</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/180505" style="color:red;">http://caiying0504.javaeye.com/blog/180505</a>&nbsp;
          发表时间: 2008年04月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;script language="javascript"><br />function chk(){<br />   var obj = document.getElementById("shijian");<br />   var strsel = obj.options[obj.selectedIndex].text;<br /><br />  alert(strsel);<br />}<br />&lt;/script>
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/180505#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 08 Apr 2008 16:12:07 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/180505</link>
        <guid>http://caiying0504.javaeye.com/blog/180505</guid>
      </item>
      <item>
        <title>字符串日期比较和时间差</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/179171" style="color:red;">http://caiying0504.javaeye.com/blog/179171</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          只要格式正确，直接比较字符串就可以了呀，精确到秒的也一样   <br />  String   s1   =   "2003-12-12   11:30:24";   <br />  String   s2   =   "2004-04-01   13:31:40";   <br />  int   res   =   s1.compareTo(s2);   <br />    <br />  求日期差：   <br />  SimpleDateFormat   df   =   new   SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");   <br />  Date   begin=df.parse("2004-01-02   11:30:24");   <br />  Date   end   =   df.parse("2004-03-26   13:31:40");   <br />  long   between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒   <br />  int   day=between/(24*3600);   <br />  int   hour=between%(24*3600)/3600;   <br />  int   minute=between%3600/60;   <br />  int   second=between%60/60;
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/179171#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 13:59:06 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/179171</link>
        <guid>http://caiying0504.javaeye.com/blog/179171</guid>
      </item>
      <item>
        <title>linux下MYSQL备份与恢复</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/177038" style="color:red;">http://caiying0504.javaeye.com/blog/177038</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          数据库备份是很重要的。如果定期做好备份，这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态，把损失减小到最少。MySQLl提供了一个mysqldump命令，我们可以用它进行数据备份，下面假设要备份tm这个数据库：<br /><br /><br /><br />#mysqldump -u root -p tm > tm_050519.sql<br /><br />按提示输入密码，这就把tm数据库所有的表结构和数据备份到tm_050519.sql了，因为要总进行备份工作，如果数据量大会占用很大空间，这时可以利用gzip压缩数据，命令如下：<br /><br />#mysqldump -u root -p tm | gzip > tm_050519.sql.gz<br /><br />系统崩溃，重建系统时，可以这样恢复数据：<br /><br />#mysql -u root -p tm &lt; tm_050519.sql<br /><br />从压缩文件直接恢复：<br /><br />#gzip &lt; tm_050519.sql.gz | mysql -u root -p tm<br /><br />当然，有很多MySQL工具提供更直观的备份恢复功能，比如用phpMyAdmin就很方便。但我认为，mysqldump是最基本、最通用的。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/177038#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 20:55:17 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/177038</link>
        <guid>http://caiying0504.javaeye.com/blog/177038</guid>
      </item>
      <item>
        <title>愚人节搞笑短信</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/176629" style="color:red;">http://caiying0504.javaeye.com/blog/176629</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、关于手机的短信 <br /><br />紧急提醒：近日恐有雷电现象，出门时请把手机放在头上并将充电器连线插上拖于身后，用于避雷，切记！ <br />手机免费通话秘技：有电话呼入时在第二次振铃前按54sg后按关机，此时通话免费。 <br />这是一封精心设计的短信，将你的手机上下颠倒看，将会欣赏到奇妙的图案……手机颠来倒去好玩吗？ <br />据美国麻省理工大研究发现，打手机前把手机在水中泡1分钟，可完全避免电磁波对人体大脑的辐射，切记！ <br />尊敬的用户：您好！因你的手机外型难看，式样过时，已严重影响市容市貌，且阻碍了移动通讯业务的发展，本台决定于10分钟后发射信号摧毁该手机！ <br />你如果收到本信息，证明你手机已感染病毒，请马上取出手机卡，用汽油刷洗。 <br /><br />2、关于笨蛋的短信 <br /><br />考考你：世界上的猪一夜之间都死光了该怎么办？(打一歌名)《至少还有你》呀！ <br />给你讲个故事，从前有个笨蛋，他非常笨，别人问他什么问题他都只会摇头或回答“没有”，这个故事你听过吗？ <br />做家具的是木材，懂诗词的是秀才，众人想的是钱财，被培养的是人才，女人要的是身材，发消息的是天才，正看短信的是蠢才！ <br />你帅呆了，酷毙了，简直无法比喻了，你头顶锅盖手拎白菜，总以为自己是东方不败，其实你是傻瓜二代！ <br />测试一下普通话，请大声朗读下面的诗：暗石绿，暗石竹，暗石透春绿，暗石透春竹。 <br />这是一首李白的诗，请大声朗读：卧室春绿，握梅又闻花，我只会中第，邀文卧室睡，卧室知春绿。 <br /><br />3、关于健康的短信 <br /><br />肺活量自测小技巧：放完屁后，低头猛吸，然后观察周围之人有无闻到异味。如有，则须按此法加强锻炼；如无，则证明你乃超人！ <br />报告：您此时的睡觉姿势不正确。为了您的身体健康，请您起来重睡……手机实时监测系统。 <br />啊！您，是如此的雍容华贵，风情万种，怪不得，大伙儿都说你……臃肿！ <br /><br />4、其他短信 <br /><br />注意了，先看看你的左边，再看看你的右边。请小心一个刚溜出来的精神病，他的特征是：拿着手机东张西望。<br />通知：明天上午有领导视查工作，各位同事请按要求统一着装。男士：西装领带短裤拖鞋；女士：泳装西裤皮鞋！ <br />紧急提醒：近日恐有龙卷风天气，出门时务必随身携带两个10公斤重的哑铃，以免被狂风卷上西天。体重轻于50公斤者须加倍。 <br />地震台预测：今晚至明晨有微型地震，为了您的安全，请今晚包着棉被，头戴马桶，鼻孔插上吸管在床底下睡觉。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/176629#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 10:09:42 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/176629</link>
        <guid>http://caiying0504.javaeye.com/blog/176629</guid>
      </item>
      <item>
        <title>转一篇对spring事务理解的好文</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/176447" style="color:red;">http://caiying0504.javaeye.com/blog/176447</a>&nbsp;
          发表时间: 2008年03月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.javaeye.com/topic/78674" target="_blank">http://www.javaeye.com/topic/78674</a>
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/176447#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Mar 2008 17:54:54 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/176447</link>
        <guid>http://caiying0504.javaeye.com/blog/176447</guid>
      </item>
      <item>
        <title>mysql中的复制（配置主从数据库）</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/176432" style="color:red;">http://caiying0504.javaeye.com/blog/176432</a>&nbsp;
          发表时间: 2008年03月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一般使用MySQL的时候，如果数据量不大，我们都使用一台MySQL服务器，备份的时候使用mysqldump工具就可以了，但是随着业务不断发展，问题出现了： <br />首先：数据量往往直线上升，单独一台数据库服务器开始出现性能的瓶颈，数据访问越来越慢。<br />其次：备份也变得困难了，因为mysqldump是导出一份文本文件，而数据量特别大的时候，这样的备份往往需要很长时间，可能有人会说，我们可以直接通过拷贝数据文件来备份数据库，这样很方便，快捷，不错，这样是比mysqldump方便快捷，但是，直接拷贝数据文件备份的方式要求我们必须先关闭mysql服务，然后再拷贝数据文件，否则，你拷贝的文件很可能是坏的。而实际运行的mysql服务往往要求在任何时候都不可以停止服务，所以这样的备份方式在此情况下不可行。<br />如果你遇到了类似上面的问题，你就可以使用建立MySQL主从服务器的方式来解决，下面先来看看主从服务器的设置：<br />前提：MySQL主从服务器最好使用相同的软件版本，以避免不不可预期的故障。<br />首先设置MySQL主服务器：<br />在主服务器上为从服务器建立一个用户：<br />grant replication slave on *.* to '用户名'@'主机' identified by '密码';<br />编辑主服务器的配置文件：/etc/my.cnf的mysqld处<br /><br />server-id = 1<br />log-bin<br />binlog-do-db=需要备份的数据库名，如果备份多个数据库，重复设置这个选项即可<br />binlog-ignore-db=不需要备份的数据库苦命，如果备份多个数据库，重复设置这个选项即可<br />编辑从服务器的配置文件：/etc/my.cnf<br />server-id=2<br />master-host=主机<br />master-user=用户名<br />master-password=密码<br />master-port=端口<br />replicate-do-db=需要备份的数据库名，如果备份多个数据库，重复设置这个选项即可<br />记得先手动同步一下主从服务器中要备份的数据库，然后重启主，从服务器。<br />要验证主从设置是否已经成功，可以登录从服务器输入如下命令：<br />mysql> show slave status\G<br />会得到类似下面的列表：<br />Slave_IO_Running: Yes<br />Slave_SQL_Running: Yes<br />如果这两个选项不全是Yes，那就说明你前面某个步骤配置错了。<br />如果你的设置是正确的，尝试在主服务器上插入若干条记录，然后你再转到从服务器，会发现相应的新记录已经自动同步过来了。<br />如果你的主从服务器已经配置好了，那么你在应用程序中，只要保证所有的insert/delete/update操作是在主服务器上进行的，那么相应的数据变化会自动同步到从服务器上，这样，我们就可以把select操作分担到多台从数据库上，从而降低服务器的载荷。<br />如果你想使用复制数据文件的方式来备份数据库，只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件，复制好了，再 在mysql命令行键入slave start;启动从服务器，这样就即备份了数据有保证了数据完整性，而且整个过程中主服务器的mysql无需停止。<br />-----------------------------------------------------------------------------------<br />提示：如果修改了主服务器的配置，记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置，可能会导致错误。<br />-----------------------------------------------------------------------------------<br />注意：关于要复制多个数据库时，binlog-do-db和replicate-do-db选项的设置，网上很多人说是用半角逗号分隔，经过测试，这样的说法是错误的，MySQL官方文档也明确指出，如果要备份多个数据库，只要重复设置相应选项就可以了。<br />比如：<br />binlog-do-db=a<br />binlog-do-db=b<br />replicate-do-db=a<br />replicate-do-db=b<br />-----------------------------------------------------------------------------------<br />补充：从服务器上my.cnf中的master-*的设置仅在第一次生效，后保存在master.info文件里。<br />-----------------------------------------------------------------------------------<br />在从服务器上使用show slave status<br />Slave_IO_Running,为No,则说明IO_THREAD没有启动，请执行slave start [IO_THREAD]<br />Slave_SQL_Running为No则复制出错,查看Last_error字段排除错误后执行slave start [SQL_THREAD]<br />查看Slave_IO_State字段<br />空 //复制没有启动<br />Connecting to master//没有连接上master<br />Waiting for master to send event//已经连上<br />-----------------------------------------------------------------------------------<br />可以使用LOAD DATA FROM MASTER语句来建立slave。但有约束条件：<br />数据表要全部是MyISAM表，必须有SUPER权限，master的复制用户必须具备RELOAD和SUPER权限。<br />在master端执行RESET MASTER清除已有的日志变更，<br />此时slave端会因为找不到master日志无法启动IO_THREAD，请清空data目录下<br />relay-log.info,hosname-relay-bin*等文件重新启动mysql<br />中继日志文件默认的文件为hostname-relay-bin.nnn和hostname-relay-bin.index。可用从服务器的--<br />relay-log和--relay-log-index选项修改。在从服务器中还有一个relay-log.info中继信息文件，可用<br />--relay-log-info-file启动选项修改文件名。<br />双机互备则是两个mysql同时配置为master及slave<br />-----------------------------------------------------------------------------------<br />主服务器上的相关命令：<br />show master status<br />show slave hosts<br />show {master|binary} logs<br />show binlog events<br />purge {master|binary} logs to 'log_name'<br />purge {master|binary} logs before 'date'<br />reset master(老版本flush master)<br />set sql_log_bin={0|1}<br />-----------------------------------------------------------------------------------<br />从服务器上的相关命令:<br />slave start<br />slave stop<br />SLAVE STOP IO_THREAD //此线程把master段的日志写到本地<br />SLAVE start IO_THREAD<br />SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库<br />SLAVE start SQL_THREAD<br />reset slave<br />SET GLOBAL SQL_SLAVE_SKIP_COUNTER<br />load data from master<br />show slave status(SUPER,REPLICATION CLIENT)<br />CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息<br />PURGE MASTER [before 'date'] 删除master端已同步过的日志<br />-----------------------------------------------------------------------------------<br />--read-only<br />该选项让从服务器只允许来自从服务器线程或具有SUPER权限的用户的更新。可以确保从服务器不接受来自客户的更新。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/176432#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Mar 2008 17:32:18 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/176432</link>
        <guid>http://caiying0504.javaeye.com/blog/176432</guid>
      </item>
      <item>
        <title>spring2.0+hibernate3.0配置多个数据库</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/170904" style="color:red;">http://caiying0504.javaeye.com/blog/170904</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Spring包装Hibernate的话所有的基本配置都写在applicationContext.xml文件中. <br /><pre name="code" class="java">
&lt;!-- （读） 数据源 -->
        &lt;bean id="readDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        &lt;property name="driverClassName">
        &lt;value>${readDataSource.driver}&lt;/value>
        &lt;/property>
        &lt;property name="url">
        &lt;value>${readDataSource.url}&lt;/value>
        &lt;/property>
        &lt;property name="username">
        &lt;value>${readDataSource.name}&lt;/value>
        &lt;/property>
        &lt;property name="password">
        &lt;value>${readDataSource.password}&lt;/value>
        &lt;/property>
        &lt;/bean>

&lt;!-- （写） 数据源 -->
        &lt;bean id="writeDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        &lt;property name="driverClassName">
        &lt;value>${writeDataSource.driver}&lt;/value>
        &lt;/property>
        &lt;property name="url">
        &lt;value>${writeDataSource.url}&lt;/value>
        &lt;/property>
        &lt;property name="username">
        &lt;value>${writeDataSource.name}&lt;/value>
        &lt;/property>
        &lt;property name="password">
        &lt;value>${writeDataSource.password}&lt;/value>
        &lt;/property>
        &lt;/bean>
        
&lt;!-- hibernate配置文件  -->
         &lt;bean id="hibernateconfig" class="org.springframework.core.io.ClassPathResource">
         &lt;constructor-arg value="hibernate.cfg.xml">&lt;/constructor-arg>
         &lt;/bean>

&lt;!-- （读）hibernate数据库链接  -->
          &lt;bean id="readSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          &lt;property name="dataSource" ref="readDataSource">&lt;/property>
          &lt;property name="configLocation" ref="hibernateconfig">&lt;/property>
          &lt;/bean> 
          
&lt;!-- （写）hibernate数据库链接  -->  
          &lt;bean id="writeSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          &lt;property name="dataSource" ref="writeDataSource">&lt;/property>
          &lt;property name="configLocation" ref="hibernateconfig">&lt;/property>
          &lt;/bean>             

&lt;!-- （读）jdbc模板  -->
          &lt;bean id="readJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
          &lt;property name="dataSource">&lt;ref local="readDataSource"/>&lt;/property>
          &lt;/bean>
        
&lt;!-- （写）jdbc模板  -->
          &lt;bean id="writeJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
          &lt;property name="dataSource">&lt;ref local="writeDataSource"/>&lt;/property>
          &lt;/bean>       

</pre><br />我遇到的情况是配置完后tomcat6能启动，但是访问是就抛出no bean named 'sessionFactory'is defined<br />原因是在web.xml中有配置sessionFilter的过滤器，它用来控制session的开关，它指向的类是<br />org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br />这个类中有个setSessionFactoryBeanName的方法默认值是“sessionFactory”，而我把sessionFactory的名字改为了readSessionFactory和wirteSessionFactory。<br />这时可以去web.xml中设置sessionFactory的beanName为<br />readSessionFactory或wirteSessionFactory，但是只能设置一个值，而我要用的是双数据库。最后的解决方案是我在web.xml配置了两个filter把sessionFactoryBeanName初始化成不同的值代码如下<br /><pre name="code" class="java">
&lt;filter>
	&lt;filter-name>readSessionFilter&lt;/filter-name>
	&lt;filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class>
	&lt;init-param>
	&lt;param-name>sessionFactoryBeanName&lt;/param-name>
	&lt;param-value>readSessionFactory&lt;/param-value>
	&lt;/init-param>
	&lt;/filter>
	&lt;filter-mapping>
	&lt;filter-name>readSessionFilter&lt;/filter-name>
	&lt;url-pattern>*.action&lt;/url-pattern>
	&lt;/filter-mapping>
	
	&lt;filter>
	&lt;filter-name>writeSessionFilter&lt;/filter-name>
	&lt;filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class>
	&lt;init-param>
	&lt;param-name>sessionFactoryBeanName&lt;/param-name>
	&lt;param-value>writeSessionFactory&lt;/param-value>
	&lt;/init-param>
	&lt;/filter>
	&lt;filter-mapping>
	&lt;filter-name>writeSessionFilter&lt;/filter-name>
	&lt;url-pattern>*.action&lt;/url-pattern>
	&lt;/filter-mapping>
</pre><br />这时你在配置dao时就可选择不同的sessionFactory，而且他们的session就交由不同的filter控制开关了。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/170904#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 13 Mar 2008 17:24:38 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/170904</link>
        <guid>http://caiying0504.javaeye.com/blog/170904</guid>
      </item>
      <item>
        <title>关于spring的singleton</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/170766" style="color:red;">http://caiying0504.javaeye.com/blog/170766</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发现一篇帖子对spring的singletion讲解<br />地址：http://topic.csdn.net/t/20060918/07/5028431.html
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/170766#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 13 Mar 2008 11:09:55 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/170766</link>
        <guid>http://caiying0504.javaeye.com/blog/170766</guid>
      </item>
      <item>
        <title>null不能赋值给int类型，Integer可以。</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/170481" style="color:red;">http://caiying0504.javaeye.com/blog/170481</a>&nbsp;
          发表时间: 2008年03月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          报错Null value was assigned to a property of primitive type setter of ...<br /><br /><br />原因：持久化类中使用int定义某个字段，字段又被默认为null。<br /><br /><br />解决方法：你的持久类里别用int类型，用Integer类型。因为Integer是可以被赋给null的，但int不行。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/170481#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Mar 2008 12:00:47 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/170481</link>
        <guid>http://caiying0504.javaeye.com/blog/170481</guid>
      </item>
      <item>
        <title>POJO、VO、PO、FormBean什么关系 （转）</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/170115" style="color:red;">http://caiying0504.javaeye.com/blog/170115</a>&nbsp;
          发表时间: 2008年03月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          POJO、VO、PO、FormBean什么关系 <br />看了一下Web开发的书，发现了这些词。让我很疑惑。这些词汇什么意思，又有什么关系？ <br /><br />看了一些文档之后，对它们的基本概念有了最基础的认识。 <br /><br />POJO：Pure Old Java Object，符合Java Bean属性规范的简单Java对象，通常也称为VO（Value Object，值对象）。 <br /><br />PO：Persistent Object，持久化对象。 <br /><br />VO、PO、FormBean之间的区别：VO是独立的Java Object；而PO是Hibernate纳入其实体容器（Entity Map）的对象。它代表了与数据库中某条记录相对应的Hibernata实体，PO的变化在事务提交时将反映到实际的数据库中。FormBean只是HTML中表单的封装，是为了弱化request中存储数据的作用，将request对象的get()方法转化为对象的存取值。 <br /><br />VO和PO在结构上看，没什么区别。但从本质上看是完全不同的。 <br /><br />VO由new关键字创建，由GC回收。PO则是向数据库中添加新数据时创建，删除数据库中数据时删除，并且它只能存活在一个数据库连接中，断开连接即被销毁。 <br /><br />VO是业务对象，由业务逻辑使用，它存活的目的就是为数据提供一个生存的地方。PO则是数据对象的表现，它可以简化对象数据与物理数据的转换。 <br /><br />VO的属性根据当前的业务不同而不同。PO的属性则是跟数据库表的字段一一对应。PO对象需要实现序列化接口。 <br /><br />在Hibernate中，最核心的概念就是对PO的状态管理。一个PO有三种状态： <br />1.未被持久化的VO，此时就是一个内存对象VO，由JVM管理生命周期。 <br />2.已被持久化的PO，并且在Session生命周期内，此时映射数据库连接，由数据库管理生命周期。 <br />3.曾被持久化过，但现在和Session已经托管（detached）了，以VO的身份在运行。它还可以进入另一个Session，继续PO状态管理。 <br /><br />需要注意的是， PO最好只在持久层使用，如果脱离持久层到处使用，会给Hibernate带来不小的PO对象维护开销。
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/170115#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Mar 2008 12:04:57 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/170115</link>
        <guid>http://caiying0504.javaeye.com/blog/170115</guid>
      </item>
      <item>
        <title>转--Maven入门</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/164132" style="color:red;">http://caiying0504.javaeye.com/blog/164132</a>&nbsp;
          发表时间: 2008年02月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Maven入门--概念与实例 <br />    本文虽然是Maven2的入门文章，但并不涉及Maven的历史、下载与安装，这些内容可以到Maven的官方网站上了解。本文主要是关注Maven中的重要概念，并以一个实例来阐述使用Maven的基本方法。文末有例子代码下载的链接。(2007.01.02最后更新) <br />注：转载出处(http://www.blogjava.net/jiangshachina)！<br /><br />1 关键名词 <br />    Project：任何您想build的事物，Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM，Poject Object Model)。一个工程可以依赖其它的工程；一个工程也可以由多个子工程构成。<br />    POM：POM(pom.xml)是Maven的核心文件，它是指示Maven如何工作的元数据文件，类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。<br />    GroupId：groupId是一个工程的在全局中唯一的标识符，一般地，它就是工程名。groupId有利于使用一个完全的包名，将一个工程从其它有类似名称的工程里区别出来。<br />    Artifact：artifact是工程将要产生或需要使用的文件，它可以是jar文件，源文件，二进制文件，war文件，甚至是pom文件。每个artifact都由groupId和artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中，否则Maven无法找到(识别)它们。<br />    Dependency：为了能够build或运行，一个典型的Java工程会依赖其它的包。在Maven中，这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。<br />    Plug-in：Maven是由插件组织的，它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target)，并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的，但它也支持用Beanshell或Ant脚本写成的插件。<br />    Repository：仓库用于存放artifact，它可以是本地仓库，也可以是远程仓库。Maven有一个默认的远程仓库--central，可以从http://www.ibiblio.org/maven2/下载其中的artifact。在Windows平台上，本地仓库的默认地址是User_Home\.m2\repository。<br />    Snapshot：工程中可以(也应该)有一个特殊版本，它的版本号包括SNAPSHOT字样。该版本可以告诉Maven，该工程正处于开发阶段，会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时，Maven会在仓库中寻找该artifact的最新版本，并自动下载、使用该最新版。<br />2 Maven Build Life Cycle<br />    软件项目一般都有相似的开发过程：准备，编译，测试，打包和部署，Maven将上述过程称为Build Life Cycle。在Maven中，这些生命周期由一系列的短语组成，每个短语对应着一个(或多个)操作；或对应着一个(或多个)goal(类似于Ant中的target)。<br />    如编译源文件的命令mvn compile中的compile是一个生命周期短语。同时该命令也可以等价于mvn compiler:compile，其中的compiler是一个插件，它提供了compile(此compile与mvn compile中的compile意义不同)goal；compiler还可提供另一个goal--testCompile，该goal用于编译junit测试类。<br />    在执行某一个生命周期时，Maven会首先执行该生命周期之前的其它周期。如要执行compile，那么将首先执行validate，generate-source，process-source和generate-resources，最后再执行compile本身。关于Maven中默认的生命周期短语，请见参考资源[6]中的附录B.3。<br />3 标准目录布局<br />    Maven为工程中的源文件，资源文件，配置文件，生成的输出和文档都制定了一个标准的目录结构。Maven鼓励使用标准目录布局，这样就不需要进行额外的配置，而且有助于各个不同工程之间的联接。当然，Maven也允许定制个性的目录布局，这就需要进行更多的配置。关于Maven的标准目录布局，请见参考资源[6]中的附录B.1。<br />4 Maven的优点<br />    [1]build逻辑可以被重用。在Ant中可能需要多次重复地写相同的语句，但由于POM的继承性，可以复用其它的POM文件中的语句。这样既可以写出清晰的build语句，又可以构造出层次关系良好的build工程。<br />    [2]不必关注build工作的实现细节。我们只需要使用一些build生命周期短语就可以达到我们的目标，而不必管Maven是如何做到这些的。如，只需要告诉Maven要安装(install)，那么它自然就会验证，编译，打包，及安装。<br />    [3]Maven会自动加载工程依赖的artifact所依赖的其它artifact(Transitive Dependency)，而不用显示的将这些artifact全部写到dependency中。<br />    [4]如果完全使用Maven的标准目录布局，那么可以极大地减少配置细节。<br />5 实例<br />5.1 构想<br />    由于只是阐述Maven的基本使用方法，所以本文将要设计的实例，只是一个简单的Maven demo。该实例包含两个工程：普通应用程序工程(app)和Web应用工程(webapp)。app工程提供一个简单的Java类；webapp工程只包含一个Servlet，并将使用app中的Java类。<br />    该Demo的目标是能够正确地将webapp制成war包，以供部署时使用。要能够正确制作war，自然首先就必须要能够正确的编译源代码，且要将App模块制成jar包。本文创建的工程所在的目录是D:\maven\demo。<br />5.2 App工程<br />    可以使用Maven的archetype插件来创建新工程，命令如下：<br />    D:\maven\demo>mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=app<br />该工程的groupId是ce.demo.mvn，那么该工程的源文件将放在Java包ce.demo.mvn中。artifactId是app，那么该工程根目录的名称将为app。<br />    当第一次执行该命令时，Maven会从central仓库中下载一些文件。这些文件包含插件archetype，以及它所依赖的其它包。该命令执行完毕后，在目录D:\maven\demo下会出现如下目录布局：<br />app<br />|-- pom.xml<br />`-- src<br />    |-- main<br />    |   `-- java<br />    |       `-- ce<br />    |           `-- demo<br />    |               `-- mvn<br />    |                   `-- App.java<br />    `-- test<br />        `-- java<br />            `-- ce<br />                `-- demo<br />                    `-- mvn<br />                        `-- AppTest.java因本文暂时不涉及JUnit测试，故请将目录app\src\test目录删除(不删除也没关系 ^_^)。然后再修改App.java文件，其完全内容如下：<br />package ce.demo.mvn;<br />public class App {<br />    public String getStr(String str) {<br />        return str;<br />    }<br />}其实，如果我们能够清楚地知道Maven的标准目录布局，就可以不使用archetype插件来创建工程原型；如果我们要定制个性的目录布局，那么就更没有必要使用archetype插件了。<br />5.3 WebApp工程<br />    我们仍然如创建app工程一样使用archetype插件来创建webapp工程，命令如下：<br />    D:\maven\demo>mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=webapp -DarchetypeArtifactId=maven-archetype-webapp<br />    第一次运行此命令时，也会从central仓库中下载一些与Web应用相关的artifact(如javax.servlet)。此命令与创建app的命令的不同之处是，多设置了一个属性archetypeArtifacttId，该属性的值为maven-archetype-webapp。即告诉Maven，将要创建的工程是一个Web应用工程。创建app工程时没有使用该属性值，是由于archetype默认创建的是应用程序工程。同样的，执行完该命令之后，会出现如下标准目录布局：<br />webapp<br />|-- pom.xml<br />`-- src<br />    `-- main<br />        `-- webapp<br />            |-- index.jsp<br />            |-- WEB-INF<br />                `-- web.xml    根据5.1节的构想，webapp工程将只包含一个Servlet，所以我们不需要index.jsp文件，请将其删除。此时大家可以发现，目前的目录布局中并没有放Servlet，即Java源文件的地方。根据参考资源[6]中的附录B.1，以及app工程中Java源文件的布局，可以知道Servlet（它仍然是一个Java类文件）仍然是放在webapp\src\main\java目录中，请新建该目录。此处的Servlet是一个简单HelloServlet，其完整代码如下：<br />package hello;<br /><br />import java.io.IOException;<br />import java.io.PrintWriter;<br />import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />import ce.demo.mvn.App;  // 引用app工程中的App类<br /><br />public class HelloServlet extends HttpServlet {<br />    private static final long serialVersionUID = -3696470690560528247L;<br />    public void doGet(HttpServletRequest request, HttpServletResponse response)<br />            throws ServletException, IOException {<br />        App app = new App();<br />        String str = app.getStr("CE Maven Demo");<br />        PrintWriter out = response.getWriter();<br />        out.print("&lt;html>&lt;body>");<br />        out.print("&lt;h1>" + str);<br />        out.print("&lt;/body>&lt;/html>");<br />    }<br />}5.4 POM文件<br />    大家可以发现，在前面新建工程时，我们并没有提到各个工程中的pom.xml文件。现在将要讨论这个问题。我们先看看app工程中的POM文件，其完整内容如下：<br />&lt;project><br />  &lt;modelVersion>4.0.0&lt;/modelVersion><br />  &lt;groupId>ce.demo.mvn&lt;/groupId><br />  &lt;artifactId>app&lt;/artifactId><br />  &lt;packaging>jar&lt;/packaging><br />  &lt;version>1.0&lt;/version><br />  &lt;name>CE Maven Demo -- App&lt;/name><br />&lt;/project>    大家可以发现此我帖出来的内容与实际由archetype插件生成的POM文件的内容有些不同，但基本上是一致的。只是为了使文件中的语句更清晰，此处删除了一些冗余的内容，并修改了该工程的version和name的值，以与此例子的背景来符合。在目前情况下modelVersion值将被固定为4.0.0，这也是Maven2唯一能够识别的model版本。groupId，artifactId的值与创建工程时使用的命令中的相关属性值是一致的。packaging的值由工程的类型决定，如应用程序工程的packaging值为jar，Web应用工程的packaging值为war。上述情况也可以从webapp的POM文件中看出，下面将看看这个pom的完整内容。<br />&lt;project><br />  &lt;modelVersion>4.0.0&lt;/modelVersion><br />  &lt;groupId>ce.demo.mvn&lt;/groupId><br />  &lt;artifactId>webapp&lt;/artifactId><br />  &lt;packaging>war&lt;/packaging><br />  &lt;version>1.0&lt;/version><br />  &lt;name>CE Maven Demo -- WebApp&lt;/name><br />  <br />  &lt;dependencies><br />      &lt;dependency><br />          &lt;groupId>ce.demo.mvn&lt;/groupId><br />          &lt;artifactId>app&lt;/artifactId><br />          &lt;version>1.0&lt;/version><br />      &lt;/dependency><br />    &lt;dependency><br />        &lt;groupId>javax.servlet&lt;/groupId><br />        &lt;artifactId>servlet-api&lt;/artifactId><br />        &lt;version>2.4&lt;/version><br />        &lt;scope>provided&lt;/scope><br />    &lt;/dependency> <br />  &lt;/dependencies><br />&lt;/project>    比较app与webapp中的POM，除前面已经提过的packaging的差别外，我们还可以发现webapp中的POM多了dependencies项。由于webapp需要用到app工程中的类(见HelloServlet源代码)，它还需要javax.servlet包(因为该包并不默认存在于jsdk中)。故，我们必须要将它们声明到依赖关系中。<br />5.5 执行<br />    上述两个工程创建完毕后，就需要执行一些命令来看看会有什么结果出现。我们首先进入app目录，并执行命令mvn compile，然后会在该目录下发现新生成的目录target\classes，即编译后的class文件(包括它的包目录)就放在了这里。再执行命令mvn package，在目录target中就会生成app-1.0.jar文件。该文件的全名由如下形式确定：artifactId-version.packaging。根据第2章的叙述可以知道，执行命令mvn package时，将首先将产生执行命令mvn compile之后的结果，故如果要打包，那么只需要执行mvn package即可。<br />    在app工程中执行完之后，就需要进入webapp工程了。进入webapp目录，此次将只执行mvn package命令(隐示地执行了compile过程)。此次命令的执行并不成功，会出现如下问题：<br />D:\maven\demo\webapp>mvn package<br />……<br />Downloading: http://repo1.maven.org/maven2/ce/demo/mvn/app/1.0/app-1.0.pom<br />[INFO] ------------------------------------------------------------------------<br />[ERROR] BUILD ERROR<br />[INFO] ------------------------------------------------------------------------<br />[INFO] Error building POM (may not be this project's POM).<br />Project ID: ce.demo.mvn:app<br />Reason: Error getting POM for 'ce.demo.mvn:app' from the repository: Error transferring file<br />  ce.demo.mvn:app:pom:1.0<br />from the specified remote repositories:<br />  central (http://repo1.maven.org/maven2)<br />……    由粗体内容可知，Maven正试图从central仓库下载app工程的artifact，但central仓库肯定不会有这个artifact，其结果只能是执行失败!由第1章artifact名词的解释可知，被依赖的artifact必须存在于仓库(远程或本地)中，但目前webapp所依赖的app必不存在于仓库中，所以执行只能失败。<br />    解决这个问题有两种方法：[1]将app-1.0.jar安装到仓库中，使它成为一个artifact；[2]构建一个更高层次的工程，使app和webapp成为这个工程的子工程，然后从这个更高层次工程中执行命令。<br />    第一种方法比较简单（见http://www.blogjava.net/jiangshachina/admin/EditPosts.aspx中的第一个主题），此处将详细讨论第2种方法(见5.6节)。<br />5.6 更高层次工程<br />    我们可以将app和webapp的上一级目录demo作为这两个工程的 一个 更高层次工程，即使用app和webapp成为这个工程的子工程。为了使demo目录成为一个demo工程，只需要在这个目录下添加一个pom.xml文件，该文件内容如下：<br />&lt;project><br />    &lt;modelVersion>4.0.0&lt;/modelVersion><br />    &lt;groupId>ce.demo&lt;/groupId><br />    &lt;artifactId>mvn-demo&lt;/artifactId><br />    &lt;packaging>pom&lt;/packaging><br />    &lt;version>1.0&lt;/version><br />    &lt;name>CE Maven Demo&lt;/name><br />    <br />    &lt;modules><br />        &lt;module>app&lt;/module><br />        &lt;module>webapp&lt;/module><br />    &lt;/modules><br />&lt;/project>    与app和webapp中的POM相比，demo的POM使用了modules项，modules用于声明本工程的子工程，module中的值对应于子工程的artifact名。而且该POM的packaging类型必须为pom。<br />    有了demo工程后，我们只需要在demo目录下执行相关命令就可以了。通过如下命令即可验证：<br />    [1]mvn clean – 消除工程(包括所有子工程)中产生的所有输出。这本文的实例中，实际上是删除target目录。由于之前的操作只有app工程产生了target目录，而webapp并没有，所以将只会删除app工程中的target目录。<br />    [2]mvn package – 将工程制作成相应的包，app工程是作成jar包(app-1.0.jar)，webapp工程是作成war包(webapp-1.0.war)。打开webapp-1.0.war包，可以发现app-1.0.jar被放到了WEB-INF的lib目录中。<br />6 小结<br />    通过以上的叙述与实例，应该可以对Maven有一个粗略的认识了。使用Maven关键是要弄清楚如何写pom.xml文件，就如同使用Ant要会写build.xml文件一样。在POM中可以直接写入Ant的task脚本，也可以调用Ant的build.xml文件(推荐)，所以Maven也可以完成Ant的绝大多数工作(但不必安装Ant)。注意：使用Maven就不要再过多的使用Ant脚本。<br />    利用好Maven的继承特性及子工程的关系，可以很好地简化POM文件，并能够构建层次结构良好的工程，有利于工程的维护。<br />7 参考资源<br />[1]Maven官方网站. http://maven.apache.org<br />[2]Maven POM文件参考结构. http://maven.apache.org/ref/current/maven-model/maven.html<br />[3]Super POM. http://maven.apache.org/guides/introduction/introduction-to-the-pom.html<br />[4]Maven主要插件的列表. http://maven.apache.org/plugins<br />[5]Maven基本使用指南. http://maven.apache.org/guides/index.html<br />[6]Better Build with Maven. http://www.mergere.com/m2book_download.jsp -- 强烈推荐<br />[7]介绍Maven2. http://www.javaworld.com/javaworld/jw-12-2005 /jw-1205-maven_p.html<br />[8]揭秘Maven2 POM. http://www.javaworld.com/javaworld/jw-05-2006/jw-0529-maven.html<br />[9]Maven让事情变得简单. http://www-128.ibm.com/developerworks/cn/java/j-maven<br />[10]Maven文档集. http://docs.codehaus.org/display/MAVENUSER/Home<br />[11]有效利用Maven2的站点生成功能. http://www.matrix.org.cn/resource/article/44/44491_Maven2.html<br />文中例子程序下载：http://www.blogjava.net/files/jiangshachina/maven.rar
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/164132#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Feb 2008 11:15:49 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/164132</link>
        <guid>http://caiying0504.javaeye.com/blog/164132</guid>
      </item>
      <item>
        <title>家乡话</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/159474" style="color:red;">http://caiying0504.javaeye.com/blog/159474</a>&nbsp;
          发表时间: 2008年01月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          咱们随州方言<br />们扎实(＝做事踏实) <br /><br />苕吃哈胀(＝猛吃很多东西) <br /><br />有两哈(＝有两手，比较厉害) <br /><br />有板眼(＝有能耐) <br /><br />耍痞子（＝无赖＼搞小动作) <br /><br />嘎饭（＝吃饭） <br /><br />么斯（＝什么） <br /><br />冇得(＝没有) <br /><br />是说唦(＝是这么回事，表示赞同) <br /><br />你要咋弄?(＝你想怎么办，语气凶点是：你是不是想打一架？) <br /><br />心里没得数(＝没有自知之明) <br /><br />搞么斯唦(＝搞么名堂唦;你想干什么) <br /><br />敲死(＝找死) <br /><br />翘胯子(＝①翘二郎腿　②呜呼哀哉) <br /><br />心里不得过(＝心里难受) <br /><br />井晕(＝总是慢慢悠悠地) <br /><br />夹生（＝不圆滑，不好商量　也形容饭不熟） <br /><br />腆阿(＝故意地) <br /><br />条子正(＝身材好) <br /><br />灵醒(＝整洁、好看，也有聪明之意) <br /><br />称透（＝整洁，好看之意) <br /><br />苕人（＝笨蛋＼不知好歹的） <br /><br />酣头日脑(＝很笨) <br /><br />半吊子(＝没真本事＼傻瓜) <br /><br />打赤膊(＝光着上半身) <br /><br />排场（＝好看＼体面） <br /><br />浮子(＝毛巾抹布等) <br /><br />猛子(＝跳虱) <br /><br />孩子（=鞋子的意思） <br /><br />幺幺（＝幺姑） <br /><br />外外（＝外甥） <br /><br />噶公（=外公） <br /><br />噶噶（=外婆） <br /><br />一担挑（=连襟的意思） <br /><br />老舅（=大或着小舅子） <br /><br />姑子姐（=丈夫的姐姐） <br /><br />老婆子（=婆婆） <br /><br />磁糙（＝恶心） <br /><br />你个二球！（＝骂人的脏话，就是说别人很苕） <br /><br />你是哪个岔滴？（＝你是哪里人？） <br /><br />聊斤（聪明） <br /><br />背时（＝倒霉） <br /><br />找不倒（＝不知道）
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/159474#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Jan 2008 10:17:13 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/159474</link>
        <guid>http://caiying0504.javaeye.com/blog/159474</guid>
      </item>
      <item>
        <title>IDE快捷键（藏起来先）</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/159163" style="color:red;">http://caiying0504.javaeye.com/blog/159163</a>&nbsp;
          发表时间: 2008年01月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Alt+/:代码提示 <br />Ctrl+/:注释/取消注释 <br />Ctrl+D:删除光标所在行 <br />Ctrl+K:将光标停留在变量上，按Ctrl+K键可以查找到下一个同样的变量 <br />Shift+Ctrl+K:和Ctrl+K查找的方向相反 <br />Shift+Ctrl+F:代码格式化。如果选择了代码，仅对所选代码格式化 <br />Shift+Ctrl+O:快速地导入import <br />Shift+Ctrl+X:将所选字符转为大写 <br />Shift+Ctrl+Y:将所选字符转为小写 <br />Ctrl+M:快速对当前视图最大化 <br />Ctrl+O:在代码中打开类似大纲视图的小窗口 <br />Ctrl+单击:可以跟踪方法和类的源码 <br />Alt+左右方向键:跳到前一次/后一次的编辑位置。 <br />Ctrl+鼠标停留:可以显示类和方法的源码 <br />双击左括号（小括号、中括号、大括号），将选择括号内的所有内容。 <br />Ctrl+1:光标停在某变量上，按Ctrl+1键，可以提供快速重构方案。选中若干行，按Ctrl+1键可将此段代码放入for、while、if、do或try等代码块中。 <br />F3:打开声明该引用的文件 <br />F4:打开类型层次结构 <br />F5:单步跳入 <br />F6:单步跳过 <br />F7:单步跳出 <br />F8:继续，如果后面没有断点，程序将运行完 <br />Ctrl+H:打开搜索窗口 <br />Ctrl+Shift+S:保存全部 <br />Alt+Left:回退一步 <br />Alt+Right:前跳一步 <br />Ctrl+Shift+T:打开类型 <br />Ctrl+Shift+R:打开资源 <br />Ctrl+Q:回到最后一次编辑的地方 <br />Ctrl+Shift+G: 在workspace中搜索引用 <br />Ctrl+Alt+Down: 复制高亮显示的一行或多行 <br />Alt+Up(Down):将一行或者多行向上或者向下移动
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/159163#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jan 2008 17:25:51 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/159163</link>
        <guid>http://caiying0504.javaeye.com/blog/159163</guid>
      </item>
      <item>
        <title>很黄很暴力的留言</title>
        <author>caiying0504</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caiying0504.javaeye.com">caiying0504</a>&nbsp;
          链接：<a href="http://caiying0504.javaeye.com/blog/159151" style="color:red;">http://caiying0504.javaeye.com/blog/159151</a>&nbsp;
          发表时间: 2008年01月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这是一片神奇的土地，每天都发生着令人不可思议的事情，仅以此文记录2007年缺失公信力的中国！ <br /><br />　　来自：天涯杂谈、关天茶社、娱乐八卦、开心乐园等版面的回帖。 <br /><br />　　1.一只河蟹横着爬过来冷冷道：“你找夹吗？！！！” <br /><br />　　2.《走进科学》终于揭开神农架野人之谜——原来这是一群买不起房的中国人！ <br /><br />　　3.中国的新闻比小说还要精彩！！！ <br /><br />　　4.在国外，死人的矿难叫新闻；在国内，救出来的叫新闻！ <br /><br />　　5.功课成绩全A，应聘的时候也竞争不过人家一对C！（天涯开心乐园   作者：Fishland） <br /><br />　　6.两样东西阻碍了中国男足冲出亚洲——他们的左脚和他们的右脚…… <br /><br />　　7.为了做公务员，我生了领导的儿子！ <br /><br />　　8.派出所是中国最大的反*党培训基地！ <br /><br />　　9.某市城管大队长猝死在街头——狗都累死了，可见统治者残忍到什么程度！！！ <br /><br />　　10.售楼大厅里，一位怀抱巨款的母亲哭了。我发自内心的觉得应该好好感谢政府，没有政府的英明决策，哪来的人间这般真情！ <br /><br />　　11.他们说我钉子户是刁民，我就骂他们是刁官，因为只有当年日本鬼子在中国才说刁民和良民。 <br /><br />　　12.威斯特年画——唯一登上美国《科学》杂志的中国年画！ <br /><br />　　13.数据显示，2007年中国男性占全国总人口的52%，女性占43%。（天涯开心乐园   作者：坏玉） <br /><br />　　14.政府说的话就像尼斯湖水怪一样无所谓真假；政府的信用就像我的贞操一样稀罕但不值钱！ <br /><br />　　15.美国自南北战争后就没有奴隶了，黑人奴隶变成自由人和国家公民；而在新中国的山西黑砖窑，却把自由人和国家公民变成了黑人奴隶！ <br /><br />　　16.据国家统计局统计，2007年中国同比没有增长的有：1.工资；2.空气。 <br /><br />　　17.什么节目充满了欺骗谎言却极受广大人民群众的喜爱？答：新闻联播！ <br /><br />　　18.2007年中国股民真实写照：辛辛苦苦两三年，一夜回到解放前，宝宝飚泪把戏演，南海剧组狂搂钱！ <br />　　 <br />　　19.开发商买不起人民群众的房子就让法院强制执行，那么人民群众买不起开发商的房子是否也可以要求法院强制执行？ <br /><br />　　20.商场：不卖镇坪腊肉！（理由：纸虎原产地，假货自然多！） <br />　　企业：不招镇坪工！（理由：一方水土养育一方人！） <br />　　大学：不招镇坪生！（理由：考试作弊，头号嫌疑！） <br />　　部队：不招镇坪兵！（理由：连纸老虎都怕！） <br />　　好男：不娶镇坪女！（理由：买个充气的，强过纸板的！） <br />　　好女：不嫁镇坪男！（理由：除了嘴硬，哪都不硬！） <br /><br />　　21.嫦娥一号发回来的照片不是假的——因为市面上还没有发现月球的年画！ <br /><br />　　22.国家统计局解释说：数据出现偏差并不奇怪，因为1个亿万富翁配上你们99个穷光蛋，平均下来中国人人都是百万富翁！ <br /><br />　　23.世界上最可怕的事情不是生死离别，而是2008年你赶了一群猪浩浩荡荡地去北京换房！ <br /><br />　　24.你们也不能太侮辱周正龙的智慧，至少他自己没顶片树叶，然后宣称自己是华南虎！ <br /><br />　　25.高昂的医疗费用使老百姓得病直接进火葬场的可能将在三年内实现！ <br /><br />　　26.从许霆多取了17万就被判无期徒刑，我们可以得出结论：中国只有法官，没有法律！ <br /><br />　　27.政府动辄说：“我们也难啊，得养活十三亿人。”可问题是我们十三亿人养着政府还是政府养着我们？？？ <br /><br />　　28.汽车、房子、民主、自由，这些现在都已经不是最重要的了，对于绝大多数中国人来说，怎样能在和谐社会下填饱肚子，这才是第一重要的～ <br /><br />　　29.究竟是通货膨胀了，还是政府开始抢劫了？为什么我们这么努力地工作却过得如此艰难？终于明白大宋京都司令部司令员林冲，这么优秀的公务员为什么都上梁山了！ <br />　　 <br />　　30.CCTV1《晚间新闻》：大陆10月物价上涨6.6%，群众一致表示“对生活影响不大”；CCTV4《海峡两岸》：台湾物价增长4.5%，民众大叫“活不了了”！ <br /><br />　　31.民主孕育幽默，独裁引发讽刺！ <br /><br />　　32.靠军队维护政权，靠腐败维持团结！ <br /><br />　　33.世态炎凉鸡最懂，人情冷暖鸭先知。 <br /><br />　　34.矿难在检讨中继续，楼价在控制中上升！ <br /><br />　　35.都是中国人，不用讲素质！ <br /><br />　　36.看了CCTV，觉得中国了不得；上了天涯杂谈，觉得中国不得了！ <br /><br />　　37.英雄不问出路，流氓不看岁数！ <br /><br />　　38.有奶不一定是娘，但有钱一定是爷！ <br /><br />　　39.天亮睁开眼，还活着，真好；天黑闭上眼，能睡觉，值了！ <br /><br />　　40.政治朝鲜化，经济拉美化，物价欧美化，工资非洲化！ <br /><br />　　41.在中国凡是带“民”字的都落不着什么好——譬如民工、农民、民营、股民…… <br /><br />　　42.中国上半年财政收入比去年同期增长32%——掠夺之疯狂可见一斑！ <br /><br />　　43.现如今有钱的不如有权的，有权的不如有枪的，有枪的不如拿斧头镰刀的！ <br /><br />　　44.好人苦不苦，扶个老太四万五；好事累不累，助人为乐是犯罪！ <br /><br />　　45.政府不应该把个人所得税起征点定在2000，而是应该把最低工资定在2000！ <br /><br />　　46.在中国，法律面前人人平等——关键在法律背后就不好说了！ <br /><br />　　47.大陆的高官全世界哪个国家都可以去，但老百姓不一定哪儿都能去；台湾的高官全世界哪个国家都不能去，但老百姓哪儿都可以去！ <br /><br />　　48.政府辟谣的事9.9成是真的，所以宁可相信谣言也不要相信政府，这是生活在现在的中国人的经验总结，血和泪换来的真理！ <br /><br />　　49.在中国，网络代替了民主国家反对党的作用！ <br /><br />　　50.国外官员撞人了一定隐瞒身份，否则就是丑闻；国内官员撞人了肯定理直气壮，拿出证件吓死你！ <br /><br />　　51.方丈说：“出家人不打诳语，相信CCTV还不如来我这里烧香拜佛。” <br /><br />　　52.杭州县长说：“晚上带你去看帝国主义的侵略！”（注：伟大领袖毛主席教导我们：帝国主义的侵略都是赤裸裸的！） <br /><br />　　53.山西洪桐县矿难105人遇难——向中国探地工程殉难的勇士们表示沉痛地哀悼！ <br /><br />　　54.东莞农民骂道：“我们能养政府，为什么就不能养猪！！！” <br /><br />　　55.啥叫韩国人？就是牛逼的都是他家的！啥叫印度人？就是他家的都是牛逼的！ <br /><br />　　56.明年是否真的存在北京奥运会，这事儿还得让陕西林业厅的请专家来鉴定一下！ <br /><br />　　57.上级领导视察浠水县税务局，见到操局长的女秘书关心地问：“今天高潮来了没有？” <br /><br />　　58.气象专家做客电视台辟谣说六月的北京绝对不可能下雪，第二天猪笑着打滚道：“别污辱了俺的智商！” <br /><br />　　59.现在广东的胖人都不敢出门了，因为一出门街上就有数不清的眼睛绿油油地盯着他身上的肉！ <br /><br />　　60.古人云：善有善报，恶有恶报。彭宇案后父母教育孩子：善有恶报，恶有善报，不是不报，南京法官未到！ <br /><br />　　61.语文考试应该取消作文，因为我们人生第一次撒谎都是从作文开始的！ <br /><br />　　62.昨天半夜，我遇到两个推销员，他们问我：“要钱还是要命？” <br /><br />　　63.问个问题，中国有没有哪个领导人的亲戚不当公务员或者不开公司？ <br /><br />　　64.随着肉价再次上涨，以前开玩笑说猪的“四大理想”中的“全国人民信回教”   就快要实现了！ <br /><br />　　65.这次北京奥运会，安全套的尺寸一定要齐全！ <br /><br />　　66.弘扬某党办事雷厉风行的超短篇小说：党员：有发票吗？妓女：有！党员：走！！ <br />　　 <br />　　67.71张照片充分揭示华南虎成为超稀有物种的原因——吐着舌头正面被人拍了半个小时都不带换个姿势的老虎，它不灭绝谁灭绝！ <br /><br />　　68.南京法院的逻辑：赖宁去救火是因为那火是赖宁放的，雷锋帮老大娘买票因为大娘的钱是他偷的，98年抗洪是因为洪水是解放军泄的！ <br /><br />　　69.彭宇案对社会还是有很大贡献的：以前大家如果没有见义勇为、帮老扶幼，事后难免会良心不安，自我折磨。现在不用了，很坦然就可以了～为什么？难道法院说的还会有错？ <br /><br />　　70.张纪中版《西游记》里的天兵天将将在全国各地城管中进行海选，因为城管队员不论是形象作风，还是战斗力都非常有震慑力，非常适合演招之即来、来之即战、战之能胜的威武之师、文明之师！ <br /><br />　　71.山西——中国矿难事故的形象代言人！ <br /><br />　　72.中国的肯德基是用来上厕所的！ <br /><br />　　73.股票赔的只能扮超人出去打劫了！ <br /><br />　　74.XP不发威，你当我是DOS啊！ <br /><br />　　75.比谣言更可怕的是对言论自由的剥夺！ <br /><br />　　76.中国的国旗和煤是红色的！ <br /><br />　　77.爱她——就要喝可乐！ <br /><br />　　78.这个世界上对姚明包夹最紧的，莫过于叶莉！ <br /><br />　　79.她哥哥是黑社会咋了？我靠，你丫就不会入党啊！ <br /><br />　　80.中国只有骗子是真的，因为只有假的才永远假不了！ <br /><br />　　81.中国真的进入法制社会了——过去政府宣扬亩产万斤还受到领袖表扬呢，而现在自己造个纸包子新闻就要被判入狱了。 <br /><br />　　82.封建社会权贵们用“天子犯法与庶民同罪”的空口号来愚弄百姓，新社会无非换了个口号——“法律面前人人平等”！ <br /><br />　　83.一个权威国家的市政府，说话竟然没人信，而一个济南女网友的话却让那么多人相信了，到今天这个地步，最该感到羞耻的应该是谁呢？ <br />　　 <br />　　84.啊，美丽的三峡大坝，感谢政府给重庆装了一个这么大的天然空调，只可惜砖家们把空调散热方向装反了！ <br /><br />　　85.没了天敌，洞庭老鼠泛滥成灾；那没了什么，中国贪官污吏才泛滥成灾？ <br /><br />　　86.和平年代能让一个地方（太湖蓝藻）的居民受到生命威胁，这在任何一个渴望和平的国家人民眼里都是不可思议的事！ <br /><br />　　87.把陈良宇开除党籍也太欺负人了吧！你们党员杂碎就往我们群众队伍里推呀，和着我们群众就是藏污纳垢的地方啊！你经过我们群众同意了吗？他本来是公仆，这么大的罪怎么反倒变成主人了？？？ <br /><br />　　88.正常的事发生在正常的体制中或不正常的事发生在不正常的体制中都是正常的，正常的事发生在不正常的体制中或不正常的事发生在正常的体制中都是不正常的！ <br /><br />　　89.傻*逼应该是这样的：一个丑陋的男青年，穿了个两块钱的耳环，头顶用刺鼻的东西把黄毛竖得高高的，然后耳发和后颈留得又长又脏，一身假NIKE，手上一个NOKLA   N73，手机的破喇叭里用最大音量播放着《求佛》，然后坐在公共汽车上一边抽烟一边对身边站着的孕妇老人熟视无睹，接着把嘴里的瓜子壳吐在地上，然后把瓜子袋扔到窗户外面，嘴里脏话连篇，然后盘算着回家去看个辫子戏！ <br /><br />　　90.堂堂一个大国政府，干的却不是人事，要调印花税你就公开大胆地调呗，提前通知一声，大家都有个心理准备，你却拼命的装婊子接客还死装处女，拒不承认！等大家都认为谣言澄清了，你半夜蹦起来调了。你TMD是不是想要股市崩盘！！！ <br />　　 <br />　　91.我生活在一个由封建阶级统治下用资本主义生产方式发展的人权状况比美国好五倍且被定义为社会主义国家的奴隶制国家里！ <br /><br />　　92.“和谐”之所以成了一个讽刺，在于执政者口号喊得和现实反差太大了！ <br /><br />　　93.组织之所以不可战胜，是因为组织不是人！ <br />　　 <br />　　94.中国没有一部法律是行之有效的，因为每出台一部法律向来都是自取其辱的！ <br /><br />　　95.对制造纸包子新闻的记者判刑并不是因为他侮辱了中国新闻记者的名声，而是因为他侮辱了我国广大无良商贩们的智慧！ <br /><br />　　96.恶意讨薪、恶意取款、恶意打工，只要和老百姓有关的都是恶意的；合理贪污、合理违法、合理拆迁，只要和政府相关的都是合理的！ <br /><br />　　97.不要去见义勇为——这样本来就不是很好的社会风气就会更糟！ <br /><br />　　98.我出生在中国，死了葬在中国，真是祸不单行啊～ <br />　 <br />　　99.当笑话变得不再可笑,   笑话本身也就失去了它的意义；当人民变得不再信任，再美丽的谎言也会显得苍白无力。 <br /><br />　　100.不知我们看了这些该哭还是该笑，但这就是我们天涯人眼中的2007，所谓盛世出国虎，虎啸振国威。国危多妖孽，群丑闹中华！
          <br/>
          <span style="color:red;">
            <a href="http://caiying0504.javaeye.com/blog/159151#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Jan 2008 17:08:56 +0800</pubDate>
        <link>http://caiying0504.javaeye.com/blog/159151</link>
        <guid>http://caiying0504.javaeye.com/blog/159151</guid>
      </item>
  </channel>
</rss>