<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>企业、敏捷</title>
    <description>活到死，学到死</description>
    <link>http://jessdy.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>ORACLE XE 字符集修改</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/213820" style="color:red;">http://jessdy.javaeye.com/blog/213820</a>&nbsp;
          发表时间: 2008年07月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><br /></p>
<p>&nbsp;</p>
<pre name="code" class="sql">connect  system/oracle9i  as  sysdba 

shutdown  immediate 

startup  mount 

alter  system  enable  restricted  session  ; 

alter  system  set  JOB_QUEUE_PROCESSES=0; 

alter  system  set  AQ_TM_PROCESSES=0; 

alter  database  open  ; 

alter  database  character  set  internal_use  ZHS16GBK  ; 

shutdown  immediate 

startup 

</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/213820#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, 11 Jul 2008 10:45:46 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/213820</link>
        <guid>http://jessdy.javaeye.com/blog/213820</guid>
      </item>
      <item>
        <title>Ubuntu安装oracle10G</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/196811" style="color:red;">http://jessdy.javaeye.com/blog/196811</a>&nbsp;
          发表时间: 2008年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.下载ORACLE的安装程序： <br />在这里下http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linx8664soft.html <br />这个是FOR 64位系统的。下的时候下10201_database_linux_x86_64.cpio.gz就可以了。 <br />用 gunzip &lt;filename>把文件解包，然后在资源管理器里再解一次，知道解除DATABASE文件夹为止。 <br /><br />2.安装compat libraries and 32-bit libraries： <br />sudo apt-get install gcc libaio1 lesstif2 lesstif2-dev make libc6 libc6-i386 libc6-dev-i386 libstdc++5 lib32stdc++6 lib32z1 ia32-libs <br /><br />3.打开/etc/sysctl.conf文件，在后面加入一以文字： <br /># Oracle stuff <br />kernel.shmall = 2097152 <br />kernel.shmmax = 2147483648 <br />kernel.shmmni = 4096 <br />kernel.sem = 250 32000 100 128 <br />fs.file-max = 65536 <br />net.ipv4.ip_local_port_range = 1024 65000 <br />net.core.rmem_default = 262144 <br />net.core.rmem_max = 262144 <br />net.core.wmem_default = 262144 <br />net.core.wmem_max = 262144 <br />vm.swappiness=10 <br /><br />4.建立ORACLE的用户和用户组： <br />sudo groupadd nobody <br />sudo groupadd oinstall <br />sudo groupadd dba <br />sudo useradd -s /bin/bash -g oinstall -G dba oracle <br />sudo passwd oracle <br /><br />5.打开/etc/security/limits.conf，在文件末尾加入： <br />* soft nproc 2047 <br />* hard nproc 16384 <br />* soft nofile 1024 <br />* hard nofile 65536 <br /><br />6.在终端输入一下命令： <br />sudo ln -s /usr/bin/awk /bin/awk <br />sudo ln -s /bin/true /bin/rpm <br />sudo ln -s /usr/bin/basename /bin/basename <br />sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so <br />sudo mkdir -p /u01/oracle/10g <br />sudo chown -R oracleinstall /u01/oracle/10g <br />sudo chmod -R 775 /u01/oracle <br /><br />7.为了防止ORACLE安装界面出现乱码，在终端执行： <br />export LANG=C <br /><br />8.再创建/etc/redhat-release，添加下面的内容: <br />Red Hat Linux release 4.1 <br />因为Oracle默认是不支持Ubuntu的，所以要把Ubuntu伪装成Redhat <br /><br />9.好了，可以执行安装命令了： <br />./runInstaller -IgnoreSysPrereqs <br /><br />然后就一步一步安装吧，要有耐心，我等了将近一个小时。 <br />安装时参考了一个老外的文章，具体在哪里我忘了，在这里谢谢他吧。
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/196811#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>Sun, 25 May 2008 23:34:07 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/196811</link>
        <guid>http://jessdy.javaeye.com/blog/196811</guid>
      </item>
      <item>
        <title>中文参数问题</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/187949" style="color:red;">http://jessdy.javaeye.com/blog/187949</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          问题的产生：<br />做了这样一个功能，记录所访问过的历史网址，然后放入一个栈中，以便查看历史能顺利返回到曾经访问过的历史页面，由于将所有的参数也一起放在栈中构造了一个带参的URL，所以对于一些参数中存在中文的URL，就不可避免的遇到了中文参数以GET方式提交的情况。<br /><br />开发环境是：Tomcat 5.x<br />生产环境是：Websphere 6.1<br /><br />在web.xml中加入了非常通用的encodingfilter。但是在tomcat中发现这个filter没有发挥其应该发挥的作用，即参数出现中文时，会乱码。但是奇怪的是在websphere中未发现这样的情况，于是，开始搜索网上解决方案。虽然在tomcat中要解决这样的问题很简单，只需要在server.xml中修改Connector：<br /><pre name="code" class="xml">
&lt;Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" <span style="color: red">URIEncoding="GBK" </span> />
</pre><br />就能解决，但是问题的原因究竟在哪里，websphere是否需要同样的配置，或者是否已经有类似的配置了？这些问题必须搞清楚，不然很难控制。<br /><br />问题的原因：<br />首先说说tomcat产生这个问题的原因，在 tomcat4 中 get 与 post 的编码是一样的，所以只要在过滤器中通过 request.setCharacterEncoding 设定一次就可以解决 get 与 post 的问题。然而，在 tomcat5 中，get 与 post 的却进行了不同的处理，对于post方法，采用了和tomcat4的编码处理方法，通过request.setCharacterEncoding进行编码处理，而get方法将通过URI提交处理，tomcat会查找server.xml文件中Connector 元素中的参数URIEncoding的值进行对URI进行encoding，如果没有这个值，将用iso8859-1进行encoding，这样所产生了一个<br /><pre name="code" class="xml">
&lt;filter>
        &lt;filter-name>Set Character Encoding&lt;/filter-name>
        &lt;filter-class>filters.SetCharacterEncodingFilter&lt;/filter-class>
        &lt;init-param>
            &lt;param-name>encoding&lt;/param-name>
            &lt;param-value>GBK&lt;/param-value>
        &lt;/init-param>
    &lt;/filter>
</pre><br />无法同时解决post和get的提交编码。这样一来就说明产生问题的原因并不是encoding的问题，而是tomcat处理的问题，而websphere没有出现这样的问题，可以认为websphere对于post和get方法是一致的，统一通过filter来。<br /><br />问题解决方案2：<br />对于tomcat处理这个问题的方法并不是单一的。tomcat的connector元素中另外提供了useBodyEncodingForURI参数，其值为boolean型，true代表使用处理body的encoding方法（即request.setCharacterEncoding）来处理URI的编码，这样就可以用一个过滤器来同时处理post和get方法了。<br /><br />题外话：<br />中国的程序员始终是很辛苦的，要不断在编码问题上博弈。希望将来会。。。
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/187949#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 11:41:10 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/187949</link>
        <guid>http://jessdy.javaeye.com/blog/187949</guid>
      </item>
      <item>
        <title>getOutputStream()异常的原因和解决方法</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/187448" style="color:red;">http://jessdy.javaeye.com/blog/187448</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法<br /><br />在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流（如输出图片验证码，文件下载等），<br />没有妥善处理好的原因。<br /><br />具体的原因就是<br />在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后<br />有一段这样的代码<br />finally {<br />      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);<br />    }<br />这里是在释放在jsp中使用的对象，会调用response.getWriter(),因为这个方法是和<br />response.getOutputStream()相冲突的！所以会出现以上这个异常。<br /><br />然后当然是要提出解决的办法，其实挺简单的（并不是和某些朋友说的那样--<br />将jsp内的所有空格和回车符号所有都删除掉），<br /><br />在使用完输出流以后调用以下两行代码即可：<br /><br /><pre name="code" class="java">
out.clear();
out = pageContext.pushBody();
</pre><br /><br />最后这里是一个输出彩色验证码例子（这样的例子几乎随处可见）<br />imag.jsp<br /><br /> <br /><pre name="code" class="java">
&lt;% @ page   import = " java.awt.*,java.awt.image.*,java.util.*,javax.imageio.* "   %> 
&lt;% @ page  import = " java.io.OutputStream "   %> 
&lt;%! 
Color getRandColor( int  fc, int  bc){
Random random  =   new  Random();
if (fc > 255 ) fc = 255 ;
if (bc > 255 ) bc = 255 ;
int  r = fc + random.nextInt(bc - fc);
int  g = fc + random.nextInt(bc - fc);
int  b = fc + random.nextInt(bc - fc);
return   new  Color(r,g,b);
}
%> 
&lt;% 
try {
response.setHeader( " Pragma " , " No-cache " );
response.setHeader( " Cache-Control " , " no-cache " );
response.setDateHeader( " Expires " ,  0 );
int  width = 60 , height = 20 ;
BufferedImage image  =   new  BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
OutputStream os = response.getOutputStream();
Graphics g  =  image.getGraphics();
Random random  =   new  Random();
g.setColor(getRandColor( 200 , 250 ));
g.fillRect( 0 ,  0 , width, height);

g.setFont( new  Font( " Times New Roman " ,Font.PLAIN, 18 ));
g.setColor(getRandColor( 160 , 200 ));
for  ( int  i = 0 ;i &lt; 155 ;i ++ )
{
int  x  =  random.nextInt(width);
int  y  =  random.nextInt(height);
int  xl  =  random.nextInt( 12 );
int  yl  =  random.nextInt( 12 );
g.drawLine(x,y,x + xl,y + yl);
}
String sRand = "" ;
for  ( int  i = 0 ;i &lt; 4 ;i ++ ){
String rand = String.valueOf(random.nextInt( 10 ));
sRand += rand;
g.setColor( new  Color( 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 )));
g.drawString(rand, 13 * i + 6 , 16 );
}
session.setAttribute( " rand " ,sRand);
g.dispose();

ImageIO.write(image,  " JPEG " ,os);
os.flush();
os.close();
os = null ;
response.flushBuffer();
out.clear();
out  =  pageContext.pushBody();
}
catch (IllegalStateException e)
{
System.out.println(e.getMessage());
e.printStackTrace();
} %> 
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/187448#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>Mon, 28 Apr 2008 10:27:38 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/187448</link>
        <guid>http://jessdy.javaeye.com/blog/187448</guid>
      </item>
      <item>
        <title>JavaEye Bug截图</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/174129" style="color:red;">http://jessdy.javaeye.com/blog/174129</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          记录一下<img src="/images/smiles/icon_lol.gif"/><br /><img src="http://i26.tinypic.com/2nlefjl.jpg" /><br /><img src="http://i26.tinypic.com/10715d3.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/174129#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, 20 Mar 2008 15:08:03 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/174129</link>
        <guid>http://jessdy.javaeye.com/blog/174129</guid>
      </item>
      <item>
        <title>java的Integer比较果然很妖</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/174011" style="color:red;">http://jessdy.javaeye.com/blog/174011</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先：<pre name="code" class="java">public static void main(String []args) {
     Integer a = 100;
     Integer b = 100;
     System.out.println(a==b);   //true
   }</pre><br /><pre name="code" class="java">public static void main(String []args) {
     Integer a = 200;
     Integer b = 200;
     System.out.println(a==b);   //false
   }</pre><br />原因：<br />1。java在编译的时候 Integer a = 100; 被翻译成-> Integer a = Integer.valueOf(100);<br />2。比较的时候仍然是对象的比较<br />3。在jdk源码中<br /><pre name="code" class="java">
public static Integer valueOf(int i) { 
final int offset = 128; 
if (i >= -128 && i &lt;= 127) { // must cache 
return IntegerCache.cache[i + offset]; 
} 
return new Integer(i); 
} 
</pre><br />而<br /><pre name="code" class="java">
private static class IntegerCache { 
private IntegerCache(){} 
static final Integer cache[] = new Integer[-(-128) + 127 + 1]; 
static { 
for(int i = 0; i &lt; cache.length; i++) 
cache = new Integer(i - 128); 
} 
} 
</pre><br />这边是java为了提高效率，初始化了-128--127之间的整数对象<br />所以在赋值在这个范围内都是同一个对象。<br />再加一句<br />Integer a = 100;<br />a++;<br />//这边a++是新创建了一个对象，不是以前的对象。<br /><pre name="code" class="java">
    public static void main(String []args) {
        Integer a = 100;
        Integer b = a;
        a++;
        System.out.println(a==b);
    }
</pre><br />打印就是false<br />对于127--128没有多大关系，但是在这范围之外就影响性能了吧
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/174011#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, 20 Mar 2008 10:53:50 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/174011</link>
        <guid>http://jessdy.javaeye.com/blog/174011</guid>
      </item>
      <item>
        <title>jBPM的学习（一）</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/160954" style="color:red;">http://jessdy.javaeye.com/blog/160954</a>&nbsp;
          发表时间: 2008年02月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          随着SOA的发展BPM渐渐成为人民关注的部分。 <br />其实很多东西早已存在，只是大家忽视它的存在而已。BPM就是这样，其实有程序出现的时候，BPM就已经出现了，只是没有名字而已。 <br />关于BPM，许多独立的厂商给出了不少的误导： <br />1）BPM系统可以实现无需维护代码，甚至有些厂商鼓吹无需写一行代码就能，只需要画画图就能完成工作。 <br />2）BPM能和系统分开，我觉得适度松耦合是可以做到的，但是完全和业务代码分开是不现实的。否则BPM也不是嵌入式的了。 <br /><br />在目前BPM的市场上出现了诸侯割据的场面，各大厂商都维护着自己的一套标准。开源方面出现了两大阵营SHARK和jBPM，然而我选择了后者，主要原因是jBPM是JBOSS家庭成员，JBOSS家庭已渐渐成为了标准和规范的代名词。另外jBPM也有一个很好的Eclipse插件。 <br /><br />说完废话开始学习 <br />jBPM由核心组件，web控制台，调度组件，身份组件，BPEL扩展组件几大组件组成，核心组件是由纯JAVA编写，所以能很好的和J2SE程序，JAVAEE程序结合。jBPM的持久层采用符合JPA标准的Hibernate框架，身份组件用于管理用户，当对于大部分程序，希望自己维护用户的管理，你大可用自己的身份管理程序。 <br /><br />主要涉及以下几个概念 <br />process definition（流程定义）：工作流的流程的完整定义，包括节点和节点之间的走向等关键信息。通常以xml格式提供。一个具体的系统往往是由许多个流程组成的。 <br /><br />process instance（流程实例）：每个process defination生成的业务层的实例。当process instance创建以后，代表流程的执行路径，并被定义到开始节点。 <br /><br />token（令牌）：表示了一个执行的路径，它是运行时产生的。当实例建立以后，令牌也就产生了。 <br /><br />node：表示流程中的一个节点。 <br /><br />transition：关联两个节点，用于表示节点的走向 <br /><br />signal：让一个token执行下一步。process instance也有signal，当用process instance的signal时，其实就是运行process instance根令牌（root token）的signal <br /><br />当token进入到一个node时，node会被执行，并产生一些事件，比如进入、离开节点等，这也是执行业务逻辑的地方。事件由action来表示。 <br /><br />下面介绍一下流程的定义和持久 <br /><pre name="code" class="java">//解析一个xml为一个ProcessDefinition对象
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(...);
//打开session
JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
//开启事务
jbpmSession.beginTransaction();
//持久化流程定义到数据库
jbpmSession.getGraphSession().saveProcessDefinition(processDefinition);
//提交事务
jbpmSession.commitTransaction();
//关闭session
jbpmSession.close();

</pre>这样，一个流程就被持久化到数据库，可以看到有hibernate的影子。当你需要使用这个流程时：<br /><pre name="code" class="java">JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
jbpmSession.beginTransaction();
//找到刚刚那个流程，processname是流程的名字，在XML文件中定义，findLatestProcessDefinition方法是找到该流程的最新版本，jBPM允许多个流程同样的名字，以版本号区别
ProcessDefinition processDefinition = jbpmSession.getGraphSession()
.findLatestProcessDefinition(processname);
//创建该流程的实例
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//得到实例上下文，上下文用来保存一些属性信息，比如审核流程中的，审核人、审核信息等
ContextInstance contextInstance = 
processInstance.getContextInstance();
//上下文添加属性，这些信息将和上下文绑在一起
contextInstance.setVariable(varName,varValue);
//得到令牌
Token token = processInstance.getRootToken();
/**
操作令牌
//token.signal();
**/
//保存实例
jbpmSession.getGraphSession().saveProcessInstance(processInstance);
jbpmSession.commitTransaction();
jbpmSession.close();
</pre>当需要再次操作这个实例的时候，只需要把<br /><pre name="code" class="java">ProcessInstance processInstance = new ProcessInstance(processDefinition);
</pre>改成<br /><pre name="code" class="java">List processInstances = 
graphSession.findProcessInstances(...);
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/160954#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, 01 Feb 2008 11:42:15 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/160954</link>
        <guid>http://jessdy.javaeye.com/blog/160954</guid>
      </item>
      <item>
        <title>Hibernate配置详解</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/150309" style="color:red;">http://jessdy.javaeye.com/blog/150309</a>&nbsp;
          发表时间: 2007年12月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="table"><a name="configuration-optional-properties"></a>
<p class="title"><strong>表&nbsp;3.3.&nbsp; Hibernate配置属性 </strong></p>
<div class="table-contents">
<table border="1" summary="
    Hibernate配置属性
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>属性名 </th><th>用途 </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="literal">hibernate.dialect</code> </td>
<td>一个Hibernate <code class="literal">Dialect</code>类名允许Hibernate针对特定的关系数据库生成优化的SQL.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">full.classname.of.Dialect</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.show_sql</code> </td>
<td>输出所有SQL语句到控制台. 有一个另外的选择是把<code class="literal">org.hibernate.SQL</code>这个log category设为<code class="literal">debug</code>。
<p><span class="strong"><strong>eg.</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.format_sql</code> </td>
<td>在log和console中打印出更漂亮的SQL。
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.default_schema</code> </td>
<td>在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">SCHEMA_NAME</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.default_catalog</code> </td>
<td>在生成的SQL中, 将给定的catalog附加于非全限定名的表名上.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">CATALOG_NAME</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.session_factory_name</code> </td>
<td><code class="literal">SessionFactory</code>创建后，将自动使用这个名字绑定到JNDI中.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">jndi/composite/name</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.max_fetch_depth</code> </td>
<td>为单向关联(一对一, 多对一)的外连接抓取（outer join fetch）树设置最大深度. 值为<code class="literal">0</code>意味着将关闭默认的外连接抓取.
<p><span class="strong"><strong>取值</strong></span> 建议在<code class="literal">0</code>到<code class="literal">3</code>之间取值 </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.default_batch_fetch_size</code> </td>
<td>为Hibernate关联的批量抓取设置默认数量.
<p><span class="strong"><strong>取值</strong></span> 建议的取值为<code class="literal">4</code>, <code class="literal">8</code>, 和<code class="literal">16</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.default_entity_mode</code> </td>
<td>为由这个<code class="literal">SessionFactory</code>打开的所有Session指定默认的实体表现模式.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">dynamic-map</code>, <code class="literal">dom4j</code>, <code class="literal">pojo</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.order_updates</code> </td>
<td>强制Hibernate按照被更新数据的主键，为SQL更新排序。这么做将减少在高并发系统中事务的死锁。
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.generate_statistics</code> </td>
<td>如果开启, Hibernate将收集有助于性能调节的统计数据.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.use_identifer_rollback</code> </td>
<td>如果开启, 在对象被删除时生成的标识属性将被重设为默认值.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.use_sql_comments</code> </td>
<td>如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为<code class="literal">false</code>.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br class="table-break" /></p>
<div class="table"><a name="configuration-jdbc-properties"></a>
<p class="title"><strong>表&nbsp;3.4.&nbsp; Hibernate JDBC和连接(connection)属性 </strong></p>
<div class="table-contents">
<table border="1" summary="
    Hibernate JDBC和连接(connection)属性
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>属性名 </th><th>用途 </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="literal">hibernate.jdbc.fetch_size</code> </td>
<td>非零值，指定JDBC抓取数量的大小 (调用<code class="literal">Statement.setFetchSize()</code>). </td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.batch_size</code> </td>
<td>非零值，允许Hibernate使用JDBC2的批量更新.
<p><span class="strong"><strong>取值</strong></span> 建议取<code class="literal">5</code>到<code class="literal">30</code>之间的值 </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.batch_versioned_data</code> </td>
<td>如果你想让你的JDBC驱动从<code class="literal">executeBatch()</code>返回正确的行计数 , 那么将此属性设为<code class="literal">true</code>(开启这个选项通常是安全的). 同时，Hibernate将为自动版本化的数据使用批量DML. 默认值为<code class="literal">false</code>.
<p><span class="strong"><strong>eg.</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.factory_class</code> </td>
<td>选择一个自定义的<code class="literal">Batcher</code>. 多数应用程序不需要这个配置属性.
<p><span class="strong"><strong>eg.</strong></span> <code class="literal">classname.of.Batcher</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.use_scrollable_resultset</code> </td>
<td>允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时，这个选项才是必要的, 否则Hibernate会使用连接的元数据.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.use_streams_for_binary</code> </td>
<td>在JDBC读写<code class="literal">binary (二进制)</code>或<code class="literal">serializable (可序列化)</code> 的类型时使用流(stream)(系统级属性).
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.jdbc.use_get_generated_keys</code> </td>
<td>在数据插入数据库之后，允许使用JDBC3 <code class="literal">PreparedStatement.getGeneratedKeys()</code> 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题，请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true|false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.connection.provider_class</code> </td>
<td>自定义<code class="literal">ConnectionProvider</code>的类名, 此类用来向Hibernate提供JDBC连接.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">classname.of.ConnectionProvider</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.connection.isolation</code> </td>
<td>设置JDBC事务隔离级别. 查看<code class="literal">java.sql.Connection</code>来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">1, 2, 4, 8</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.connection.autocommit</code> </td>
<td>允许被缓存的JDBC连接开启自动提交(autocommit) (不建议).
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.connection.release_mode</code> </td>
<td>指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用<code class="literal">after_statement</code>, 这样在每次JDBC调用后，都会主动的释放连接. 对于非JTA的连接, 使用<code class="literal">after_transaction</code>在每个事务结束时释放连接是合理的. <code class="literal">auto</code>将为JTA和CMT事务策略选择<code class="literal">after_statement</code>, 为JDBC事务策略选择<code class="literal">after_transaction</code>.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">auto</code> (默认) | <code class="literal">on_close</code> | <code class="literal">after_transaction</code> | <code class="literal">after_statement</code> </p>
<p>注意,这些设置仅对通过<code class="literal">SessionFactory.openSession</code>得到的<code class="literal">Session</code>起作用。对于通过<code class="literal">SessionFactory.getCurrentSession</code>得到的<code class="literal">Session</code>，所配置的<code class="literal">CurrentSessionContext</code>实现控制这些<code class="literal">Session</code>的连接释放模式。请参阅<a href="http://mce_host/admin/blogs/150309/mk:@MSITStoreD:\C盘文件\help\Hibernate_3.2.0_Reference_zh_CN.chm::" title="2.5.&nbsp;上下文相关的（Contextual）Session">第&nbsp;2.5&nbsp;节 &ldquo;上下文相关的（Contextual）Session&rdquo;</a>。 </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.connection.<span class="emphasis"><em>&lt;propertyName&gt;</em></span></code> </td>
<td>将JDBC属性<code class="literal">propertyName</code>传递到<code class="literal">DriverManager.getConnection()</code>中去. </td>
</tr>
<tr>
<td><code class="literal">hibernate.jndi.<span class="emphasis"><em>&lt;propertyName&gt;</em></span></code> </td>
<td>将属性<code class="literal">propertyName</code>传递到JNDI <code class="literal">InitialContextFactory</code>中去. </td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br class="table-break" /></p>
<div class="table"><a name="configuration-cache-properties"></a>
<p class="title"><strong>表&nbsp;3.5.&nbsp; Hibernate缓存属性 </strong></p>
<div class="table-contents">
<table border="1" summary="
    Hibernate缓存属性
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>属性名 </th><th>用途 </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="literal">hibernate.cache.provider_class</code> </td>
<td>自定义的<code class="literal">CacheProvider</code>的类名.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">classname.of.CacheProvider</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.use_minimal_puts</code> </td>
<td>以频繁的读操作为代价, 优化二级缓存来最小化写操作. 在Hibernate3中，这个设置对的集群缓存非常有用, 对集群缓存的实现而言，默认是开启的.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true|false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.use_query_cache</code> </td>
<td>允许查询缓存, 个别查询仍然需要被设置为可缓存的.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true|false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.use_second_level_cache</code> </td>
<td>能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<code class="literal">&lt;cache&gt;</code>的类，会默认开启二级缓存.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true|false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.query_cache_factory</code> </td>
<td>自定义实现<code class="literal">QueryCache</code>接口的类名, 默认为内建的<code class="literal">StandardQueryCache</code>.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">classname.of.QueryCache</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.region_prefix</code> </td>
<td>二级缓存区域名的前缀.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">prefix</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cache.use_structured_entries</code> </td>
<td>强制Hibernate以更人性化的格式将数据存入二级缓存.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true|false</code> </p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br class="table-break" /></p>
<div class="table"><a name="configuration-transaction-properties"></a>
<p class="title"><strong>表&nbsp;3.6.&nbsp; Hibernate事务属性 </strong></p>
<div class="table-contents">
<table border="1" summary="
    Hibernate事务属性
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>属性名 </th><th>用途 </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="literal">hibernate.transaction.factory_class</code> </td>
<td>一个<code class="literal">TransactionFactory</code>的类名, 用于Hibernate <code class="literal">Transaction</code> API (默认为<code class="literal">JDBCTransactionFactory</code>).
<p><span class="strong"><strong>取值</strong></span> <code class="literal">classname.of.TransactionFactory</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">jta.UserTransaction</code> </td>
<td>一个JNDI名字，被<code class="literal">JTATransactionFactory</code>用来从应用服务器获取JTA <code class="literal">UserTransaction</code>.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">jndi/composite/name</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.transaction.manager_lookup_class</code> </td>
<td>一个<code class="literal">TransactionManagerLookup</code>的类名 - 当使用JVM级缓存，或在JTA环境中使用hilo生成器的时候需要该类.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">classname.of.TransactionManagerLookup</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.transaction.flush_before_completion</code> </td>
<td>如果开启, session在事务完成后将被自动清洗(flush)。 现在更好的方法是使用自动session上下文管理。请参见<a href="http://mce_host/admin/blogs/150309/mk:@MSITStoreD:\C盘文件\help\Hibernate_3.2.0_Reference_zh_CN.chm::" title="2.5.&nbsp;上下文相关的（Contextual）Session">第&nbsp;2.5&nbsp;节 &ldquo;上下文相关的（Contextual）Session&rdquo;</a>。
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.transaction.auto_close_session</code> </td>
<td>如果开启, session在事务完成后将被自动关闭。 现在更好的方法是使用自动session上下文管理。请参见<a href="http://mce_host/admin/blogs/150309/mk:@MSITStoreD:\C盘文件\help\Hibernate_3.2.0_Reference_zh_CN.chm::" title="2.5.&nbsp;上下文相关的（Contextual）Session">第&nbsp;2.5&nbsp;节 &ldquo;上下文相关的（Contextual）Session&rdquo;</a>。
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br class="table-break" /></p>
<div class="table"><a name="configuration-misc-properties"></a>
<p class="title"><strong>表&nbsp;3.7.&nbsp; 其他属性 </strong></p>
<div class="table-contents">
<table border="1" summary="
    其他属性
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>属性名 </th><th>用途 </th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="literal">hibernate.current_session_context_class</code> </td>
<td>为"当前" <code class="literal">Session</code>指定一个(自定义的)策略。关于内置策略的详情，请参见<a href="http://mce_host/admin/blogs/150309/mk:@MSITStoreD:\C盘文件\help\Hibernate_3.2.0_Reference_zh_CN.chm::" title="2.5.&nbsp;上下文相关的（Contextual）Session">第&nbsp;2.5&nbsp;节 &ldquo;上下文相关的（Contextual）Session&rdquo;</a> 。
<p><span class="strong"><strong>eg.</strong></span> <code class="literal">jta</code> | <code class="literal">thread</code> | <code class="literal">managed</code> | <code class="literal">custom.Class</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.query.factory_class</code> </td>
<td>选择HQL解析器的实现.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">org.hibernate.hql.ast.ASTQueryTranslatorFactory</code> or <code class="literal">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.query.substitutions</code> </td>
<td>将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字).
<p><span class="strong"><strong>取值</strong></span> <code class="literal">hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.hbm2ddl.auto</code> </td>
<td>在<code class="literal">SessionFactory</code>创建时，自动检查数据库结构，或者将数据库schema的DDL导出到数据库. 使用 <code class="literal">create-drop</code>时,在显式关闭<code class="literal">SessionFactory</code>时，将drop掉数据库schema.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">validate</code> | <code class="literal">update</code> | <code class="literal">create</code> | <code class="literal">create-drop</code> </p>
</td>
</tr>
<tr>
<td><code class="literal">hibernate.cglib.use_reflection_optimizer</code> </td>
<td>开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在<code class="literal">hibernate.cfg.xml</code>中设置此属性.
<p><span class="strong"><strong>取值</strong></span> <code class="literal">true</code> | <code class="literal">false</code> </p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br class="table-break" /></p>
<div class="sect2" lang="zh-cn">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="configuration-optional-dialects"></a>3.4.1.&nbsp; SQL方言 </h3>
</div>
</div>
</div>
<p>你应当总是为你的数据库将<code class="literal">hibernate.dialect</code>属性设置成正确的 <code class="literal">org.hibernate.dialect.Dialect</code>子类. 如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫. </p>
<div class="table"><a name="sql-dialects"></a>
<p class="title"><strong>表&nbsp;3.8.&nbsp; Hibernate SQL方言 (<code class="literal">hibernate.dialect</code>) </strong></p>
<div class="table-contents">
<table border="1" summary="
    Hibernate SQL方言 (hibernate.dialect)
    ">
<colgroup span="1"><col span="1" /><col span="1" /></colgroup><thead>
<tr>
<th>RDBMS</th><th>方言 </th>
</tr>
</thead>
<tbody>
<tr>
<td>DB2</td>
<td><code class="literal">org.hibernate.dialect.DB2Dialect</code></td>
</tr>
<tr>
<td>DB2 AS/400</td>
<td><code class="literal">org.hibernate.dialect.DB2400Dialect</code></td>
</tr>
<tr>
<td>DB2 OS390</td>
<td><code class="literal">org.hibernate.dialect.DB2390Dialect</code></td>
</tr>
<tr>
<td>PostgreSQL</td>
<td><code class="literal">org.hibernate.dialect.PostgreSQLDialect</code></td>
</tr>
<tr>
<td>MySQL</td>
<td><code class="literal">org.hibernate.dialect.MySQLDialect</code></td>
</tr>
<tr>
<td>MySQL with InnoDB</td>
<td><code class="literal">org.hibernate.dialect.MySQLInnoDBDialect</code></td>
</tr>
<tr>
<td>MySQL with MyISAM</td>
<td><code class="literal">org.hibernate.dialect.MySQLMyISAMDialect</code></td>
</tr>
<tr>
<td>Oracle (any version)</td>
<td><code class="literal">org.hibernate.dialect.OracleDialect</code></td>
</tr>
<tr>
<td>Oracle 9i/10g</td>
<td><code class="literal">org.hibernate.dialect.Oracle9Dialect</code></td>
</tr>
<tr>
<td>Sybase</td>
<td><code class="literal">org.hibernate.dialect.SybaseDialect</code></td>
</tr>
<tr>
<td>Sybase Anywhere</td>
<td><code class="literal">org.hibernate.dialect.SybaseAnywhereDialect</code></td>
</tr>
<tr>
<td>Microsoft SQL Server</td>
<td><code class="literal">org.hibernate.dialect.SQLServerDialect</code></td>
</tr>
<tr>
<td>SAP DB</td>
<td><code class="literal">org.hibernate.dialect.SAPDBDialect</code></td>
</tr>
<tr>
<td>Informix</td>
<td><code class="literal">org.hibernate.dialect.InformixDialect</code></td>
</tr>
<tr>
<td>HypersonicSQL</td>
<td><code class="literal">org.hibernate.dialect.HSQLDialect</code></td>
</tr>
<tr>
<td>Ingres</td>
<td><code class="literal">org.hibernate.dialect.IngresDialect</code></td>
</tr>
<tr>
<td>Progress</td>
<td><code class="literal">org.hibernate.dialect.ProgressDialect</code></td>
</tr>
<tr>
<td>Mckoi SQL</td>
<td><code class="literal">org.hibernate.dialect.MckoiDialect</code></td>
</tr>
<tr>
<td>Interbase</td>
<td><code class="literal">org.hibernate.dialect.InterbaseDialect</code></td>
</tr>
<tr>
<td>Pointbase</td>
<td><code class="literal">org.hibernate.dialect.PointbaseDialect</code></td>
</tr>
<tr>
<td>FrontBase</td>
<td><code class="literal">org.hibernate.dialect.FrontbaseDialect</code></td>
</tr>
<tr>
<td>Firebird</td>
<td><code class="literal">org.hibernate.dialect.FirebirdDialect</code></td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break" /></div>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/150309#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>Sun, 23 Dec 2007 19:57:28 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/150309</link>
        <guid>http://jessdy.javaeye.com/blog/150309</guid>
      </item>
      <item>
        <title>很好的EXT中文网站</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/147404" style="color:red;">http://jessdy.javaeye.com/blog/147404</a>&nbsp;
          发表时间: 2007年12月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司决定要用EXT来作为表示层的UI来替代STRUTS。<br /><br />第一次看见EXT就被它的外表深深吸引，我感觉仿佛能摆脱UI设计师的束缚，自己创建喜欢的样式，我仿佛觉得我再也不必重复造车了。<br /><br />于是我开始疯狂的寻找EXT资源，先看了extjs.com的例子，然后一步步实践。<br /><br />今天我终于找到了一个非常好的EXT学习网站，绝对能帮人快速入门：dojo中国。<br />希望能给同样需要的人一个方便：<br />http://www.dojochina.com/
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/147404#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, 10 Dec 2007 21:59:08 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/147404</link>
        <guid>http://jessdy.javaeye.com/blog/147404</guid>
      </item>
      <item>
        <title>精辟的String与StringBuffer(StringBuilder)的区别</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/142364" style="color:red;">http://jessdy.javaeye.com/blog/142364</a>&nbsp;
          发表时间: 2007年11月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天有空，下了scjp的题目做做，想起了一个本来想写却又没写的问题。这个问题几乎已成为面试必问题，虽然答案很简单，但回答出确又真正理解的人我觉得并不多。</p>
<p>String与StringBuffer的区别？</p>
<p>如果你在网上一搜，会有非常多的答案，其中最多的就是String是不可变而StringBuffer是可变的，但是这可变与不可变究竟是什么意思呢？如果你能用IDE进行debug的话，你就会发现，String实例化以后所有的属性都是final的，而StringBuffer确不是，这就是可变与不可变。下面引用SCJP的试题来解释一下这个例子：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Test&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;stringReplace&nbsp;(String&nbsp;text)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text.replace('j'&nbsp;,&nbsp;'i');&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;bufferReplace&nbsp;(StringBuffer&nbsp;text)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text.append(</span><span class="string">&quot;C&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main&nbsp;(String&nbsp;args[])&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;textString&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String&nbsp;(</span><span class="string">&quot;java&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;textBuffer&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer&nbsp;(</span><span class="string">&quot;java&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;stringReplace&nbsp;(textString);&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;bufferReplace&nbsp;(textBuffer);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;System.out.println&nbsp;(textString&nbsp;+&nbsp;textBuffer);&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>答案是 javajavaC</p>
<p>这是因为第七行text = text.append (&quot;C&quot;)，append方法会改变text中的值,而text与textBuffer指向的地址是相同的。因此会打印javaC</p>
<p>再举个例子：</p>
<p>String a = &quot;a&quot;;&nbsp; //假设a指向地址0x0001</p>
<p>a = &quot;b&quot;;//重新赋值后a指向地址0x0002，但0x0001地址中保存的&quot;a&quot;依旧存在，但已经不再是a所指向的。</p>
<p>因此String的操作都是改变赋值地址而不是改变值操作</p>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/142364#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, 21 Nov 2007 16:34:24 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/142364</link>
        <guid>http://jessdy.javaeye.com/blog/142364</guid>
      </item>
      <item>
        <title>欢迎使用Ubuntu Linux!</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/137869" style="color:red;">http://jessdy.javaeye.com/blog/137869</a>&nbsp;
          发表时间: 2007年11月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ubuntu是目前市面上最好的Linux系统之一，良好的GUI和第三方软件支持。以下我将一些基本的使用方法贴出：<br />
<br />
关于Ubuntu的基本操作：<br />
<a href="http://live.haliluya.org/doc/ubuntutor.html">http://live.haliluya.org/doc/ubuntutor.html<br />
</a><br />
在控制台使用中文的方法（zhcon）：<br />
1.&nbsp;&nbsp; 首先安装zhcon<br />
&nbsp;&nbsp;&nbsp; sudo apt-get install zhcon<br />
2.&nbsp;&nbsp; 可以改写一下配置文件<br />
&nbsp;&nbsp;&nbsp; sudo vim /var/lib/locales/supported.d/zh<br />
&nbsp;&nbsp;&nbsp; 改为以下内容：<blockquote>
<p>zh_CN UTF-8<br />
zh_CN.GBK GBK<br />
zh_CN.UTF-8 UTF-8<br />
zh_CN.GB18030 GB18030<br />
zh_CN.GB2312 GB2312<br />
zh_TW BIG5<br />
zh_TW.BIG5 BIG5<br />
zh_TW.UTF-8 UTF-8 </p>
</blockquote>3.&nbsp;&nbsp; 可以修改配置文件/etc/zhcon.conf<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; defaultencode = gbk<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##默认编码,还可以是gb2312,big5<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; x_resolution = 1024<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##屏幕分辨率<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; y_resolution = 768<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color_cursortype = 0<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##控制台下光标样式,0,块状;1,无; 2,下划线;用3到6可调整光标块大小<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; beep = off<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##还是关掉BB的警告声为好<br />
4.&nbsp;&nbsp; 启动zhcon<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 如果启动死机，用以下命令启动<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; zhcon --utf8 --drv=vga<br />
<br />
创建/关闭root帐户：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sudo passwd root<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; su root<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sudo passwd -l root<br />
<br />
安装JDK<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sudo apt-get install <span class="Code"><span style="FONT-FAMILY: Courier New">sun-java5-jdk<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 配置环境变量<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; </span></span><span class="Code" style="FONT-FAMILY: Courier New">CLASSPATH=/usr/lib/jvm/java-1.5.0-sun/lib</span><br style="FONT-FAMILY: Courier New" />
<span class="Code" style="FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun<br />
<br />
</span><span class="Code"><span style="FONT-FAMILY: Courier New"><br />
</span></span>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/137869#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>Sun, 04 Nov 2007 11:45:23 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/137869</link>
        <guid>http://jessdy.javaeye.com/blog/137869</guid>
      </item>
      <item>
        <title>Acegi框架总结（二）</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/94382" style="color:red;">http://jessdy.javaeye.com/blog/94382</a>&nbsp;
          发表时间: 2007年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>配置完了Acegi的身份验证，接着就要用Acegi来控制访问了</p>
<p>Acegi通过投票管理器来决定是否有访问该资源的权限，投票方式有三种：</p>
<p>一票通过制（AffirmativeBased）：有一票通过即可以访问该资源<br />
全票通过制（ConsensusBased）：只有全部通过才能访问资源<br />
一票否决制（UnanimousBased）：没有拒绝票时允许访问</p>
<p>配置如下:</p>
<div class="code_title">xml 代码</div>
<span><span><span><span><span>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;访问决策投票管理&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;accessDecisionManager&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.acegisecurity.vote.AffirmativeBased&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;allowIfAllAbstainDecisions&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;decisionVoters&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;roleVoter&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.acegisecurity.vote.AuthenticatedVoter&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>其中allowIfAllAbstainDecisions代表了弃权票的解决方式为：所有投票皆弃权，不允许访问</p>
<div class="code_title">xml 代码</div>
<span class="tag">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;roleVoter&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.acegisecurity.vote.RoleVoter&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;rolePrefix&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>AUTH_</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>投票管理器实现了AccessDecisionVoter接口，你可以自己编写投票器</p>
<p>其中常量ACCESS_GRANTED表示允许访问资源、ACCESS_DENIED表示拒绝访问资源，ACCESS_ABSTAIN表示不关心资源。</p>
</span></span></span></span></span></span>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/94382#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, 26 Jun 2007 22:49:02 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/94382</link>
        <guid>http://jessdy.javaeye.com/blog/94382</guid>
      </item>
      <item>
        <title>Acegi框架总结（一）</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/94095" style="color:red;">http://jessdy.javaeye.com/blog/94095</a>&nbsp;
          发表时间: 2007年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>如果你觉得自己写一个安全系统比较累，那建议你试一试Acegi这个开源框架，它与Spring能很好的结合，从多方面保护您的软件系统。</p>
<p>Acegi说穿了也就从两个方面保护资源：</p>
<p>一、是利用Servlet的过滤器，来拦截Servlet的请求</p>
<p>二、是利用Spring的AOP，（其实Servlet的过滤器也是AOP）</p>
<p>先来说说Servlet过滤，Acegi由认证管理器来确定用户身份，Acegi默认提供了一个认证管理器&mdash;&mdash;ProvideManager，ProvideManager的authenticate()方法，认证一个Authentication对象，通过用户名(j_username)和密码(j_password)作为参数进行认证，如果验证通过，将用户名保存在session<font face="Arial">中。当然，你也可以自己写一个认证管理器来实现一些特殊的功能，不过，你需要实现org.acegisecurity.AuthenticationManager接口：</font></p>
<p>当然，你需要再Spring的配置文件中，将这个认证管理器加载进来：</p>
<div class="code_title">xml 代码</div>
<span><span><span><span>
<p>
<list></list>
</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments"><!-- 基础认证 AUTHENTICATION --></span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;authenticationManager&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.acegisecurity.providers.ProviderManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;providers&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">local</span><span>=</span><span class="attribute-value">&quot;daoAuthenticationProvider&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">local</span><span>=</span><span class="attribute-value">&quot;rememberMeAuthenticationProvider&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag">
    <div class="code_title">xml 代码</div>
    <div class="dp-highlighter">
    <div class="bar"></div>
    <ol class="dp-xml">
        <li class="alt"><span><span class="comments">&lt;!--&nbsp;用户列表&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
        <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;jdbcDaoImpl&quot;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.acegisecurity.userdetails.jdbc.JdbcDaoImpl&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;</span><span class="attribute">ref</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;usersByUsernameQuery&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;manager_passport,&nbsp;manager_pwd,&nbsp;isuse&nbsp;FROM &nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb_mms_manager&nbsp;WHERE&nbsp;</span><span class="attribute">isuse</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">1</span><span>&nbsp;and&nbsp;</span><span class="attribute">manager_passport</span><span>&nbsp;=&nbsp;? &nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;authoritiesByUsernameQuery&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;manager_passport,op_code&nbsp;FROM&nbsp;tb_mms_manager&nbsp;m, &nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tb_mms_op&nbsp;o,&nbsp;tb_mms_powergroup&nbsp;p&nbsp;WHERE&nbsp;</span><span class="attribute">m.power_group</span><span>&nbsp;= &nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.group_id&nbsp;and&nbsp;p.group_op&nbsp;like&nbsp;'%|'&nbsp;+ &nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convert(varchar(2),o.op_id)&nbsp;+&nbsp;'|%'&nbsp;and &nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">m.manager_passport</span><span>&nbsp;=&nbsp;? &nbsp;&nbsp;</span></li>
        <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
        <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    </ol>
    </div>
    <p>usersByUsernameQuery属性验证了用户名和密码，值得一提的是usersByUsernameQuery，必须是三个属性，用户名，密码，以及是否可用，除非你重写这个方法，不然三个属性缺一不可。authoritiesByUsernameQuery列举了该用户的所有权限，这里介绍的所有配置，基本上都是用Acegi默认的类来配置的，如果需要扩展功能，完全可以自己定义类来写。</p>
    <p>&nbsp;</p>
    </span></span></span></span></span></li>
</ol>
</div>
<p>中提供了一系列认证提供者，比较常用的认证提供者类型有：DaoAuthenticationProvider（从数据库中获取用户信息）、PasswordDaoAuthenticationProvider（让底层数据源完成）等，他们都是实现了AuthenticationProvider接口。该接口定义了与ProvideManager相同的authenticate()方法。</p>
<p>然后定义<font face="Arial">daoAuthenticationProvider</font></p>
</span></span></span></span>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/94095#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, 25 Jun 2007 22:54:39 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/94095</link>
        <guid>http://jessdy.javaeye.com/blog/94095</guid>
      </item>
      <item>
        <title>static关键字</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/50899" style="color:red;">http://jessdy.javaeye.com/blog/50899</a>&nbsp;
          发表时间: 2007年01月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>当声明一个事物是static时，就意味着这个数据或方法不会与包含它的类的任何对象实例联系在一起。</p>
<p>static可以修饰数据和方法：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;StaticTest&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">47</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>StaticTest&nbsp;st1&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StaticTest(); &nbsp;&nbsp;</span></span></li>
    <li class=""><span>StaticTest&nbsp;st2&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StaticTest(); &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>这时，st1.i和st2.i指向同一个储存空间，同时也可以用StaticTest.i来访问该数据。</p>
<p>同样应用于方法：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">class</span><span>&nbsp;StaticFunction{ &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;incr(){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StaticTest.i++; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>StaticFunction.incr();&nbsp;&nbsp;</span></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/50899#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>Sun, 28 Jan 2007 12:57:38 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/50899</link>
        <guid>http://jessdy.javaeye.com/blog/50899</guid>
      </item>
      <item>
        <title>Java中存储数据的地方及Java的基本类型</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/50896" style="color:red;">http://jessdy.javaeye.com/blog/50896</a>&nbsp;
          发表时间: 2007年01月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="2"><font face="宋体">在</font><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">Java</span></font><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">程序运行时有</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">6</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">个地方可以存储数据：</span></p>
<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">
<ol>
    <li><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">寄存器<font face="Arial">（</font>registers）：这是最快的存储区，因为它位于不同于其他存储区的地方</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&mdash;&mdash;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">处理器内部。</span></li>
    <li><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">堆栈（stack）：位于通用</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">RAM</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">中，但通过</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&ldquo;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">堆栈指针</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&rdquo;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">可以从处理器那里获得直接支持。储存对象的引用。</span></li>
    <li><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">堆（heap）：一种通用的内存池</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">(</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">也位于</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">RAM</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">区</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">)</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">，用于存放所有的</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">Java</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">对象。</span></span></li>
    <li><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"></span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">静态存储（static storage）：</span>这里的<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&ldquo;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">静态</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&rdquo;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">指的是</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&ldquo;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">在固定的位置</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">&rdquo;(</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">尽管也在</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">RAM</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">里</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">)</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">，存放程序运行时一直存在的数据。</span></span></li>
    <li><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">常量存储（constant storage）：常量值通常直接存放在程序代码内部，这样做是安全的，因为它们永远不会被改变。</span></span></li>
    <li><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">非</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">RAM</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">存储（NO-RAM storage）：如果数据完全存活于程序之外，那么它可以不受程序的任何控制，在程序中没有运行时也可以存在。如：流对象，持久化对象。</span></span></li>
</ol>
<p><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">基本类型是数据储存的特例：</span></span></p>
<p><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"><strong>new</strong>将对象储存在&ldquo;堆&rdquo;里，然而对于特别小，或者简单的对象，这样做的效率太低，因此基本数据便不用<strong>new</strong>来创建对象，并存放在&ldquo;堆栈&rdquo;中：</span></span></p>
<p><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"></span></span></p>
<p><br />
</p>
</span><span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">
<table cellspacing="1" border="1" align="center" summary="" width="466" cellpadding="1" style="WIDTH: 466px; HEIGHT: 202px">
    <tbody>
        <tr>
            <td>
            <p align="center">基本类型</p>
            </td>
            <td>
            <p align="center">大小</p>
            </td>
            <td>
            <p align="center">包装类</p>
            </td>
        </tr>
        <tr>
            <td>boolean</td>
            <td>-（true、false）</td>
            <td>Boolean</td>
        </tr>
        <tr>
            <td>char</td>
            <td>16-bit （Unicode 0～Unicode 2<font size="1">16</font>-1）</td>
            <td>Character</td>
        </tr>
        <tr>
            <td>byte</td>
            <td>8-bit（-128～128）</td>
            <td>Byte</td>
        </tr>
        <tr>
            <td>short</td>
            <td>16-bit</td>
            <td>Short</td>
        </tr>
        <tr>
            <td>int</td>
            <td>32-bit</td>
            <td>Integer</td>
        </tr>
        <tr>
            <td>long</td>
            <td>64-bit</td>
            <td>Long</td>
        </tr>
        <tr>
            <td>float</td>
            <td>32-bit</td>
            <td>Float</td>
        </tr>
        <tr>
            <td>double</td>
            <td>64-bit</td>
            <td>Double</td>
        </tr>
        <tr>
            <td>void</td>
            <td>-</td>
            <td>Void</td>
        </tr>
    </tbody>
</table>
</span>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/50896#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>Sun, 28 Jan 2007 12:01:50 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/50896</link>
        <guid>http://jessdy.javaeye.com/blog/50896</guid>
      </item>
      <item>
        <title>面向对象基础（OOP)</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/50857" style="color:red;">http://jessdy.javaeye.com/blog/50857</a>&nbsp;
          发表时间: 2007年01月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="3"><span lang="EN-US">OOP</span><font face="Arial"><span new="" times="" style="FONT-FAMILY: 宋体; mso-ascii-font-family: ">：</span><span lang="EN-US">Object Oriented Programming 面向对象</span></font></font></p>
<ol>
    <li><font face="Arial"><span lang="EN-US">类（Class）：具有相同属性和行为的抽象集合</span></font></li>
    <li><font face="Arial"><span lang="EN-US">对象（Object）：类的实例（<span lang="EN-US"><font face="Times New Roman">instance</font></span>）</span></font></li>
</ol>
<p><font face="Arial"><span lang="EN-US">面向对象的三大特性：</span></font></p>
<ol>
    <li><font face="Arial"><span lang="EN-US"><font color="#ff0000">封装</font>：封装的意思是说对象数据和操作该数据的指令都是对象自身的一部分，封装能够实现尽可能对外部世界隐藏数据。其实任何形式的隐藏都视为封装，包括继承和多态。</span></font></li>
    <li><font face="Arial"><span lang="EN-US"><font color="#ff0000">继承</font>：<font face="宋体">继承是指这样一种能力：它可以使用现有类的所有功能，并在无需重新编写原来的类的情况下对这些功能进行扩展。<span lang="EN-US" style="mso-bidi-font-size: 10.5pt"><o:p></o:p></span></font></span></font></li>
    <li><font face="Arial"><span lang="EN-US"><font color="#ff0000">多态</font>：用&quot;一个接口,多个方法&quot;来描述。</span></font></li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/50857#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>Sat, 27 Jan 2007 22:46:47 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/50857</link>
        <guid>http://jessdy.javaeye.com/blog/50857</guid>
      </item>
      <item>
        <title>JAVA基础</title>
        <author>jessdy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jessdy.javaeye.com">jessdy</a>&nbsp;
          链接：<a href="http://jessdy.javaeye.com/blog/50840" style="color:red;">http://jessdy.javaeye.com/blog/50840</a>&nbsp;
          发表时间: 2007年01月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font color="#0000ff">JAVA的应用可分为三个方面：</font></p>
<ol>
    <li>JAVA桌面软件应用（JAVA SE）：是JAVA开发的基础，但由于开发时的不便基本被摒弃。 </li>
    <li>JAVA企业级开发（JAVA EE）：即热极一时的J2EE，随着JAVA5和JAVA6的推出，所以基本不用J2的名称。 </li>
    <li>JAVA移动应用（JAVA ME）：JAVA的跨平台优势，促使了JAVA成为移动终端最热门的开发语言。 </li>
</ol>
<p><font color="#0000ff">JAVA EE的七层开发结构：</font></p>
<ol>
    <li>表现层（View） </li>
    <li>控制器层（Control） </li>
    <li>模型层或业务逻辑层（Model） </li>
    <li>持久化层（ORM：Hibernate等） </li>
    <li>应用平台层 </li>
    <li>数据库层（DB） </li>
    <li>数据传输层（DTO） </li>
</ol>
<p><font color="#0000ff">JDK环境配置：</font></p>
<p>Windows环境下－环境变量－设置3项属性：JAVA_HOME，PATH，CLASSPATH</p>
<ol>
    <li>JAVA_HOME指明JDK安装路径 </li>
    <li>PATH设为%JAVA_HOME%\bin；%JAVA_HOME%\jre\bin </li>
    <li>CLASSPATH为java加载类(class or lib)路径，设为：.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) </li>
</ol>
<p><font color="#0000ff">编译与运行：</font></p>
<p>&nbsp; 编译：javac <em>filename</em>.java&nbsp; --&gt; 编译后将生成一个&quot;.class&quot;文件</p>
<p>&nbsp; 运行：java <em>classname</em></p>
          <br/>
          <span style="color:red;">
            <a href="http://jessdy.javaeye.com/blog/50840#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>Sat, 27 Jan 2007 20:05:12 +0800</pubDate>
        <link>http://jessdy.javaeye.com/blog/50840</link>
        <guid>http://jessdy.javaeye.com/blog/50840</guid>
      </item>
  </channel>
</rss>