<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>NetBus 的心得体会</title>
    <description></description>
    <link>http://netbus.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>你的天堂没有喧嚣</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/197621" style="color:red;">http://netbus.javaeye.com/blog/197621</a>&nbsp;
          发表时间: 2008年05月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><img src="http://q.yesky.com/uploads/images/2008-05/23/d8mnm9oo.jpg" border="0" alt="" /> <br /><img src="http://q.yesky.com/uploads/images/2008-05/23/l8gn0ewk.jpg" border="0" alt="" /> <br /><img src="http://q.yesky.com/uploads/images/2008-05/23/49ub15u6.jpg" border="0" alt="" /> <br /><img src="http://q.yesky.com/uploads/images/2008-05/23/c2yz73b3.jpg" border="0" alt="" /> <br /><img src="http://q.yesky.com/uploads/images/2008-05/23/3e43d8ex.jpg" border="0" alt="" /> <br /><img src="http://q.yesky.com/uploads/images/2008-05/23/48cw957c.jpg" border="0" alt="" /></p>
<p><span style="color: #ffffff;">=============================</span></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/197621#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 May 2008 21:27:59 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/197621</link>
        <guid>http://netbus.javaeye.com/blog/197621</guid>
      </item>
      <item>
        <title>携手游人间</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/191800" style="color:red;">http://netbus.javaeye.com/blog/191800</a>&nbsp;
          发表时间: 2008年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>【携手游人间】<br />&nbsp;&nbsp; <br />演唱：张真 </p>
<p><br />不让岁月倦了等待的心 <br />我的世界随你到天涯遥远<br />窗前灯火此刻悄悄熄灭 <br />我心轻轻擦亮你如水的容颜</p>
<p>你的笑容仍甜美依如当年 <br />你的消息是我珍藏的依恋 <br />不管繁华成落叶暂时没荒野<br />承诺永远不如记得每个今天<br />你我相隔遥远人世偷偷改变<br />历尽万水千山是否心意相连<br />不求生生世世不想朝朝暮暮<br />但愿平平淡淡携手游人间 </p>
<p>--------2--------- <br />你的笑容仍甜美依如当年 <br />你的消息是我珍藏的依恋 <br />不管繁华成落叶暂时没荒野<br />承诺永远不如记得每个今天<br />你我相隔遥远人世偷偷改变<br />历尽万水千山是否心意相连<br />不求生生世世不想朝朝暮暮<br />但愿平平淡淡携手同游人间</p>
<p>谁说两地倦最是扰人心田 <br />谁说人海沉浮难有恒久情缘<br />不管分分合合也许聚聚散散<br />只求平平安安携手同游人间</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/191800#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, 10 May 2008 22:28:56 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/191800</link>
        <guid>http://netbus.javaeye.com/blog/191800</guid>
      </item>
      <item>
        <title>使用iBatis的开发者有福了，Intellij Idea下的iBatis插件出来了</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/154721" style="color:red;">http://netbus.javaeye.com/blog/154721</a>&nbsp;
          发表时间: 2008年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>　　自从Idea 7.0推出后，对Hibernate支持非常好。但是一直没有ibatis的插件。<img title="twisted" src="../../../images/smiles/icon_twisted.gif" border="0" alt="twisted" /></p><p>&nbsp;</p><p>　　国内有个高手一直致力于Idea的插件的开发。最近，他推出了Idea下的iBatis插件。经过我试用，功能非常不错。<img title="lol" src="../../../images/smiles/icon_lol.gif" border="0" alt="lol" /></p><p>&nbsp;</p><p>　　主要功能如下：</p><p>&nbsp;</p><p>　　1、代码自动提示。支持sqlmap.xml的property、parameterClass、resultClass、parameterMap、resultMap、cacheModel、include、#开头的变量等等提供代码自动完成。甚至连java代码的select(&quot;xxx.xxx&quot;)也提供了自动完成。<img title="lol" src="../../../images/smiles/icon_lol.gif" border="0" alt="lol" /></p><p>&nbsp;</p><p>　　2、提供了对find usages和refactor的支持。</p><p>&nbsp;</p><p>　　3、提供了从数据库生成java domain class、sqlmap.xml的支持。</p><p>&nbsp;</p><p>　　5、提供了自动生成parameterMap的parameter element和resultMap的result element的支持。</p><p>&nbsp;</p><p>　　6、提供了代码审查，代码纠正的功能(这下不会产生xml中的property等手误的情况)。</p><p>&nbsp;</p><p>　　7、提供了跳转的支持，如：从java代码中可以使用ctrl+鼠标跳到被调用的sqlmap.xml节点上。在sqlmap.xml上点property同样可以跳转到java domain class中。</p><p>&nbsp;</p><p>　　8、更爽的一点的他是免费的。您只需从idea插件管理功能中就能发现，并且下载他。File =&gt; Setting =&gt; plugins =&gt; available =&gt; 下载 =&gt; 重启Idea</p><p>&nbsp;</p><p>　　相关示例见附件，更多内容见 <a href="http://docs.google.com/View?docid=dc73pj2h_6db54mm">http://docs.google.com/View?docid=dc73pj2h_6db54mm</a></p><p>　</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/154721#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, 10 Jan 2008 14:01:35 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/154721</link>
        <guid>http://netbus.javaeye.com/blog/154721</guid>
      </item>
      <item>
        <title>改造iBatis，使其支持自动生成sql语句(3)</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/146692" style="color:red;">http://netbus.javaeye.com/blog/146692</a>&nbsp;
          发表时间: 2007年12月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>　　更新了一下，更新日志：</p>
<ol>
    <li>使generate其支持statment和sql断。 </li>
    <li>insert段支持exclude。 </li>
    <li>delete语句可以不需要parameterMap。 </li>
    <li>generate段支持for属性，可以指定生成哪种类型的sql。 </li>
</ol>
<p>　　更新的是重要目的是只需要一个parametermap。</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span><!--CTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"   </sp--></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">sqlMap</span><span>&nbsp;</span><span class="attribute">namespace</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span>&nbsp;</span><span class="attribute">alias</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;com.cpcw.product.domain.Sort&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameterMap</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SortParameterMap&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;VC&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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;fid&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;fid&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;status&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;status&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;notes&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;notes&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;VC&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;created&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;created&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;TIMESTAMP&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">parameterMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameterMap</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SortParameterDeleteMap&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">parameterMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">select</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;selectSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterMap&quot;</span><span>&nbsp;</span><span class="attribute">resultClass</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;( &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;a&nbsp;order&nbsp;by&nbsp;id&nbsp;desc&nbsp;limit&nbsp;1 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">insert</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;createSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterMap&quot;</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">selectKey</span><span>&nbsp;</span><span class="attribute">keyProperty</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">resultClass</span><span>=</span><span class="attribute-value">&quot;int&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;post&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;last_insert_id()&nbsp;as&nbsp;value &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">selectKey</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">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">excludes</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">insert</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">update</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;updateSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterMap&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">generate</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">excludes</span><span>=</span><span class="attribute-value">&quot;{status,created}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">update</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">sql</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;include&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">for</span><span>=</span><span class="attribute-value">&quot;delete&quot;</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">sql</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;deleteSort&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">include</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;sort.include&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;deleteSortStatus&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">include</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;sort.include&quot;</span><span class="tag">/&gt;</span><span>&nbsp;and&nbsp;</span><span class="attribute">status</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">1</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">sqlMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/146692#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, 07 Dec 2007 15:28:52 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/146692</link>
        <guid>http://netbus.javaeye.com/blog/146692</guid>
      </item>
      <item>
        <title>改造iBatis，使其支持自动生成sql语句(2)</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/146650" style="color:red;">http://netbus.javaeye.com/blog/146650</a>&nbsp;
          发表时间: 2007年12月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">改造iBatis，使其支持自动生成sql语句(2)</font></p>
<p><font face="Arial">　　上篇讲到基本思路和代码修改的切入点。这篇继续讲实现的细节的demo。</font></p>
<p><font face="Arial">　　在生成iql语句时，generate前面和后面的iql语句给予保留，充分保留最大的灵活性。</font></p>
<p><font face="Arial">　　在生成iql语句时候后，在调用insert和update时，转入的parametarObject必须是parametermap规定的Object，在select和delete时，如果parameter只有1个，则会把iql变量替换成#value#。</font></p>
<p><font face="Arial"></font>&nbsp;sql-map 代码</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span><!--CTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"   </sp--></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">sqlMap</span><span>&nbsp;</span><span class="attribute">namespace</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">typeAlias</span><span>&nbsp;</span><span class="attribute">alias</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;com.cpcw.product.domain.Sort&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameterMap</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SortParameterMap&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;VC&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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;fid&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;fid&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;status&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;status&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;notes&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;notes&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;VC&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;created&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;created&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;TIMESTAMP&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">parameterMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameterMap</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SortParameterFulMap&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</span><span>&nbsp;</span><span class="attribute">extends</span><span>=</span><span class="attribute-value">&quot;SortParameterMap&quot;</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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">jdbcType</span><span>=</span><span class="attribute-value">&quot;INTEGER&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">parameterMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">parameterMap</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;SortParameterDeleteMap&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;Sort&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">parameter</span><span>&nbsp;</span><span class="attribute">property</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">column</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">parameterMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">select</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;selectSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterFulMap&quot;</span><span>&nbsp;</span><span class="attribute">resultClass</span><span>=</span><span class="attribute-value">&quot;Sort&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;( &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;a&nbsp;order&nbsp;by&nbsp;id&nbsp;desc&nbsp;limit&nbsp;1 &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">select</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">insert</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;createSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterMap&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">selectKey</span><span>&nbsp;</span><span class="attribute">keyProperty</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">resultClass</span><span>=</span><span class="attribute-value">&quot;int&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;post&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;last_insert_id()&nbsp;as&nbsp;value &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">selectKey</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">insert</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">update</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;updateSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterFulMap&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">generate</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">excludes</span><span>=</span><span class="attribute-value">&quot;{status,created}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">update</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;deleteSort&quot;</span><span>&nbsp;</span><span class="attribute">parameterMap</span><span>=</span><span class="attribute-value">&quot;sort.SortParameterDeleteMap&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">generate</span><span>&nbsp;</span><span class="attribute">table</span><span>=</span><span class="attribute-value">&quot;sort&quot;</span><span>&nbsp;</span><span class="attribute">where</span><span>=</span><span class="attribute-value">&quot;id&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">sqlMap</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;</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;Sort&nbsp;getSortById(</span><span class="keyword">int</span><span>&nbsp;id)&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;(Sort)&nbsp;queryForObject(</span><span class="string">&quot;sort.selectSort&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Integer(id)); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;createSort(Sort&nbsp;sort)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;insert(</span><span class="string">&quot;sort.createSort&quot;</span><span>,&nbsp;sort); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;sort.getId(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;updateSort(Sort&nbsp;sort)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;update(</span><span class="string">&quot;sort.updateSort&quot;</span><span>,&nbsp;sort); &nbsp;&nbsp;</span> </li>
    <li class=""><span>} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;deleteSort(</span><span class="keyword">int</span><span>&nbsp;id)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;delete(</span><span class="string">&quot;sort.deleteSort&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Integer(id)); &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<div class="code_title">生成的IQL&nbsp;代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-sql">
    <li class="alt"><span>&nbsp;&nbsp;select:</span> </li>
    <li class="alt"><span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;*&nbsp;</span><span class="keyword">from</span><span>&nbsp;( &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">select</span><span>&nbsp;</span><span class="keyword">name</span><span>&nbsp;</span><span class="keyword">as</span><span>&nbsp;</span><span class="keyword">name</span><span>,&nbsp;fid&nbsp;</span><span class="keyword">as</span><span>&nbsp;fid,&nbsp;status&nbsp;</span><span class="keyword">as</span><span>&nbsp;status,&nbsp;notes&nbsp;</span><span class="keyword">as</span><span>&nbsp;notes,&nbsp;created&nbsp;</span><span class="keyword">as</span><span>&nbsp;created,&nbsp;id&nbsp;</span><span class="keyword">as</span><span>&nbsp;id&nbsp;</span><span class="keyword">from</span><span>&nbsp;sort&nbsp;</span><span class="keyword">where</span><span>&nbsp;id&nbsp;=&nbsp;#value# &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;a&nbsp;</span><span class="keyword">order</span><span>&nbsp;</span><span class="keyword">by</span><span>&nbsp;id&nbsp;</span><span class="keyword">desc</span><span>&nbsp;limit&nbsp;1 &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>inesrt:</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">insert</span><span>&nbsp;</span><span class="keyword">into</span><span>&nbsp;sort&nbsp;(</span><span class="keyword">name</span><span>,&nbsp;fid,&nbsp;status,&nbsp;notes,&nbsp;created)&nbsp;</span><span class="keyword">values</span><span>&nbsp;(#</span><span class="keyword">name</span><span>:VC#,&nbsp;#fid:</span><span class="keyword">INTEGER</span><span>#,&nbsp;#status:</span><span class="keyword">INTEGER</span><span>#,&nbsp;#notes:VC#,&nbsp;#created:</span><span class="keyword">TIMESTAMP</span><span>#) &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>update:</span> </li>
    <li class="alt"><span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">update</span><span>&nbsp;sort&nbsp;</span><span class="keyword">set</span><span>&nbsp;</span><span class="keyword">name</span><span>&nbsp;=&nbsp;#</span><span class="keyword">name</span><span>:VC#,&nbsp;fid&nbsp;=&nbsp;#fid:</span><span class="keyword">INTEGER</span><span>#,&nbsp;notes&nbsp;=&nbsp;#notes:VC#,&nbsp;id&nbsp;=&nbsp;#id:</span><span class="keyword">INTEGER</span><span>#&nbsp;</span><span class="keyword">where</span><span>&nbsp;id&nbsp;=&nbsp;#id:</span><span class="keyword">INTEGER</span><span># &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>delete</span> </li>
    <li class="alt"><span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">delete</span><span>&nbsp;</span><span class="keyword">from</span><span>&nbsp;sort&nbsp;</span><span class="keyword">where</span><span>&nbsp;id&nbsp;=&nbsp;#value#&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;原创文章，如果要转载请注明出处、原始地址和作者信息。&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/146650#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Dec 2007 13:47:44 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/146650</link>
        <guid>http://netbus.javaeye.com/blog/146650</guid>
      </item>
      <item>
        <title>改造iBatis，使其支持自动生成sql语句(1)</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/146594" style="color:red;">http://netbus.javaeye.com/blog/146594</a>&nbsp;
          发表时间: 2007年12月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">
<p><font face="Arial">什么是iBatis：<br />
　　使用ibatis 提供的ORM机制，对业务逻辑实现人员而言，面对的是纯粹的Java对象， 这一层与通过Hibernate 实现ORM 而言基本一致，而对于具体的数据操作，Hibernate 会自动生成SQL 语句，而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 &ldquo;全自动&rdquo;ORM机制而言，ibatis 以SQL开发的工作量和数据库移植性上的让步，为系统 设计提供了更大的自由空间。作为&ldquo;全自动&rdquo;ORM 实现的一种有益补充，ibatis 的出现显 得别具意义。 </font></p>
<font face="Arial">
<p><br />
　　使用iBatis开发项目工作量比较大，因为每个sql语句都必须自己写。一般的CRUD sql都是sql 92规范，基本上都通用所有数据库。我想如果可以通过hack ibatis源代码实现自动生成iql(ibatis sql)可以简化多少开发量啊。(最开始有这个想法是因为ibatis for .net实现了这个功能，而ibatis for java没有)</p>
<p>　　说干就干，决定依照ibatis for .net的实现方式来实现，通过sql-map的parametermap来实现。以最小代码来实现该功能。</p>
<p>　　查看了相关dtd后，发现《parameter》节点没有column定义，《parameterMap》节点没有extends定义，《result》和《resultMap》这倒是有。于是修改dtd定义和BasicParameterMapping类，使其支持column。并且修改SqlMapParser类，使其初始化的时候支持column和extends。加入column的目的是为了支持java属性对应到不同的字段上。加入extends的目的是为了重用parametermap。</p>
<p>　　parameter修改完成后，就要修改dtd文档定义，使其支持《generate》节点，我们只需要《insert》、《update》、《delete》、《select》这四个节点支持就行，《statement》和《sql》节点考虑在下一版支持。generate需要三个属性，分别是table、where、excludes。其中table表示是对应的表，适用于所有；where表示查询条件字段，适用于select、update、delete；excludes表示要排除哪些parameter，适用于select、update。</p>
<p>　　dtd文档定义修改完成后，就可以修改ibatis加载类，使其支持generate。这个切入点比较难找，因为要仔细分析他的源代码。经过仔细思考后，发现ibatis和sql-map支持《include》，决定在include后面加入generate的解析代码。这样比较方便的找到了切入点。</p>
<p>　　找到SqlStatementParser类，找到了parseDynamicTags方法，里面就有include的解析。这里面的判断代码是else if，我再加入一个generate的else if 就OK啦。经过一天的修改，完成。工作量也不是太大。</p>
<p>　　哈哈，下篇日志发布出hack过后的ibatis代码和demo。</p>
<p>原创文章，如果要转载请注明出处、原始地址和作者信息。</p>
</font>
<p>&nbsp;</p>
</font><font face="Arial"></font>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/146594#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Dec 2007 11:27:07 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/146594</link>
        <guid>http://netbus.javaeye.com/blog/146594</guid>
      </item>
      <item>
        <title>Hibernate，憋脚的ORM框架</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/143690" style="color:red;">http://netbus.javaeye.com/blog/143690</a>&nbsp;
          发表时间: 2007年11月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">　　以前一直使用iBatis，后来看到Hibernate这么火，就研究了一下，使用过一个简单项目，感觉到非常不爽，也许是我没有使用好。来到这里一吐为快，我知道这里的hibernate高手很多，请这些高手手下留情，不要B4我。</font></p>
<p><font face="Arial">　　总结：由于Hibernate的设计思想，他对简单的增、删、改、查询支持不错。对于复杂的SQL支持就欠缺了。适用于留言簿等简单的系统。</font></p>
<font face="Arial">
<p><br />
Hibernate优点：<br />
　　1、配置简单，不用写Sql。<br />
　　2、Cache机制做得好，能够精确Cache、Flush对象。<br />
　　3、简单的增删改的Java代码简单。<br />
　　4、如果不用本地SQl，就可以跨数据库。(不过，谁一天没事做就换数据库啊？)<br />
　　5、简单的开发效率高。</p>
<p>Hibernate缺点：　　<br />
　　1、1对1关联在load的时候，居然用left join 实现，太可怕了(右边对象的单独cache失去作用了)。<br />
　　2、组合查询同jdbc一样，需要写if (xx) {CriteriaSpecification.add(Criterion)}类似语句，Java会显得完全不可读。<br />
　　3、get和load似乎只适用主键，如果表上有其它条件能得到唯一对象，就必须使用list.get(0)了，郁闷。<br />
　　4、由于底层sql不可控，想要优化sql困难太大了(使用本地SQL？)，数据库一般都支持采用哪个索引检索，如mysql的 force index(indexname)。在这种情况下，hibernate用不上(又要写本地SQL？)。<br />
　　5、调用Oracle procedure，如果procedure返回了cursor，接收cursor太复杂了。如果是cursor套cursor，那更加不可想象的复杂。<br />
　　6、DB级的SQL特性很难用上，如函数，特别是insert，有很多缺省值是sysdate()一类语句，hibernate要用上，就必须写本地insertsql，这样又复杂了。<br />
　　7、如果查询采用本地SQL，则你会发现在Java代码中有n多if else，StringBuffer.append，外加一个substring。<br />
　　8、据我所知，99%的DBA 100%反对使用hibernate。<br />
　　9、大型项目不适用。<br />
</p>
</font>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/143690#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, 26 Nov 2007 14:37:43 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/143690</link>
        <guid>http://netbus.javaeye.com/blog/143690</guid>
      </item>
      <item>
        <title>关于Windows的时间同步</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/105787" style="color:red;">http://netbus.javaeye.com/blog/105787</a>&nbsp;
          发表时间: 2007年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">从Windows XP后的操作系统都带了时间同步功能，可以让本机跟原子服务器时间同步。内置了两个同步服务器<font face="Arial">time.nist.gov和<font face="Arial">time.windows.com。但是这两个服务器在国内要连接上是很困难的。</font></font></font></p>
<p>其实除了上面两个服务器之外，还有很多其它服务器可以选择的。如： <font color="#ff0000" face="Arial"><strong><font size="4">asia.pool.ntp.org</font> </strong></font></p>
<p>上面这个服务不错，是在亚洲的。在服务器输入框的中候输入上面的地址，然后再点&ldquo;立即更新&rdquo;就能很快同步啦！</p>
<p>同样，在Linux可以使用：<font face="Arial"><strong><font size="4" color="#ff0000">ntpdate asia.pool.ntp.org</font></strong>&nbsp; 命令来同步时间。</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/105787#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jul 2007 15:42:21 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/105787</link>
        <guid>http://netbus.javaeye.com/blog/105787</guid>
      </item>
      <item>
        <title>电脑报经营公司招聘Java人才</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/96895" style="color:red;">http://netbus.javaeye.com/blog/96895</a>&nbsp;
          发表时间: 2007年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>公司简单：《电脑报》创刊于1992年，已连续11年在我国IT类报刊中保持发行量第一，目前每期阅读人数达350万。2004年8月，《电脑报》与香港TOM集团合资成立重庆电脑报经营有限责任公司，目标是打造全球最大、最具影响、最有实力，能与国内外同行竞争的中文IT传媒集团。公司招揽天下能人，共同发展进取。</p>
<p>工作地点：重庆<br />
招聘人数：4人<br />
待遇：面议<br />
要求：</p>
<p>1、大专以上学历；<br />
2、熟悉Html、JavaScript、Ajax编程；<br />
3、熟悉Java，从事J2ee开发2年以上；<br />
4、熟悉开源框架，如Spring、Hibernate或iBatis、Struts等；<br />
5、熟悉Oracle或者Mysql数据库编程优先；<br />
6、熟悉Linux操作系统优先；<br />
7、责任心强，肯吃苦；</p>
<p>联系人：本人<br />
邮箱：<a href="mailto:yangsy.cq@gmail.com">yangsy.cq@gmail.com</a><br />
QQ：8271892<br />
MSN：<a href="mailto:cqchina@gmail.com">cqchina@gmail.com</a></p>
<p>&nbsp;有意者请把简历发给本人邮箱。</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/96895#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, 02 Jul 2007 13:47:09 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/96895</link>
        <guid>http://netbus.javaeye.com/blog/96895</guid>
      </item>
      <item>
        <title>一个进程能够打开最大文件句柄数设到多大才合适(Linux)？</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/74164" style="color:red;">http://netbus.javaeye.com/blog/74164</a>&nbsp;
          发表时间: 2007年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 在Linux下，我们使用<strong>ulimit -n</strong> 命令可以看到单个进程能够打开的最大文件<font face="Arial">句柄数量(socket连接也算在里面)。系统默认值1024。</font></p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp; 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点<font face="Arial">捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值，就会提到&ldquo;<font face="Arial">too many files open</font>&rdquo;的错误提示。如何知道当前进程打开了多少个文件句柄呢？下面一段小脚本可以帮你查看：</font></font></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>lsof -n&nbsp;|awk&nbsp;'{print&nbsp;$</span><span class="number">2</span><span>}'|sort|uniq&nbsp;-c&nbsp;|sort&nbsp;-nr|more&nbsp; &nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<p>在系统访问高峰时间以root用户执行上面的脚本，可能出现的结果如下：</p>
<div class="code_title"></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>#&nbsp;lsof&nbsp;-n|awk&nbsp;'{print&nbsp;$</span><span class="number">2</span><span>}'|sort|uniq&nbsp;-c&nbsp;|sort&nbsp;-nr|more&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">131</span><span>&nbsp;</span><span class="number">24204</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">57</span><span>&nbsp;</span><span class="number">24244</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">57</span><span>&nbsp;</span><span class="number">24231</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">56</span><span>&nbsp;</span><span class="number">24264</span><span>&nbsp;&nbsp;</span> <span></span></li>
</ol>
</div>
<p>其中第一行是打开的文件句柄数量，第二行是进程号。得到进程号后，我们可以通过ps命令得到进程的详细内容。</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>ps&nbsp;-aef|grep&nbsp;</span><span class="number">24204</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>mysql&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">24204</span><span>&nbsp;</span><span class="number">24162</span><span>&nbsp;</span><span class="number">99</span><span>&nbsp;</span><span class="number">16</span><span>:</span><span class="number">15</span><span>&nbsp;?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="number">00</span><span>:</span><span class="number">24</span><span>:</span><span class="number">25</span><span>&nbsp;/usr/sbin/mysqld&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>哦，原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量，远远底于系统默认值1024。</p>
<p>但是如果系统并发特别大，尤其是squid服务器，很有可能会超过1024。这时候就必须要调整系统参数，以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下，以root用户运行以下命令：</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>ulimit&nbsp;-HSn&nbsp;</span><span class="number">4096</span><span>&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<p>以上命令中，<font color="#ff0000">H</font>指定了硬性大小，<font color="#ff0000">S</font>指定了软性大小，<font color="#ff0000">n</font>表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过<font color="#0000ff">4096</font>，毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后，系统重启后，又会恢复默认值。如果想永久保存下来，<strike><font style="BACKGROUND-COLOR: #800000">可以修改.bash_profile文件</font></strike>，可以修改 /etc/profile 把上面命令加到最后。(findsun提出的办法比较合理)</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/74164#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, 24 Apr 2007 16:59:32 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/74164</link>
        <guid>http://netbus.javaeye.com/blog/74164</guid>
      </item>
      <item>
        <title>关于java.util.Timer</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/72116" style="color:red;">http://netbus.javaeye.com/blog/72116</a>&nbsp;
          发表时间: 2007年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 最开始学习java的时候不知道java还有个定时器，一直使用<font face="Arial">Thread.sleep(xxx);来实现定时，后来认识了Timer后，如果指定任务时设定了<font face="Arial">period，就会一直固定间隔<font face="Arial">period时间段来执行，那时候为了防止上次任务没有结束，下次任务又启动了特意设定了<font face="Arial">synchronized</font>标记。呵呵想起真可笑。。</font></font></font></p>
<p>&nbsp;&nbsp;&nbsp; 再到后来，就发现<font face="Arial">period属性原来是上次任务结束后下次任务启动时的间隔时间。也就是说run方法return后，再到下次调用run方法的间隔时间。而不是固定<font face="Arial">period时间调用</font>run方法。</font></p>
<p>&nbsp;&nbsp;&nbsp; 如果要在固定的间隔时间调用run方法可以采用Linux的crontab。先直接写一个main，main直接调用run方法。然后在crontab中设定间隔时间。</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/72116#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, 18 Apr 2007 09:53:12 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/72116</link>
        <guid>http://netbus.javaeye.com/blog/72116</guid>
      </item>
      <item>
        <title>Idea中你经常使用的功能是哪些？</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/70580" style="color:red;">http://netbus.javaeye.com/blog/70580</a>&nbsp;
          发表时间: 2007年04月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>点击Help菜单中的<font face="Arial">Productivity Guide就能看到你经常使用的功能啦！</font></p>
<p>还可以按照Used，Last Used排序。顺便贴上我的！我使用Idea 7.0不到1个月(M1版以前有测试版可用)扩展选择(ctrl+w)居然使用了接近5000次！代码完成(Ctrl+\) (本来是Ctrl+Space，因为跟中文输入法冲突，我改成了Ctrl+\)也达到了2500次。跳到申明点(Ctrl+Mouse Click)达到了700多次，</p>
<p>以上还映证了2/8原理，20%的功能满足80%的需求。</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/70580#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, 13 Apr 2007 10:10:54 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/70580</link>
        <guid>http://netbus.javaeye.com/blog/70580</guid>
      </item>
      <item>
        <title>Idea 7.0已经出来m1版本了</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/70477" style="color:red;">http://netbus.javaeye.com/blog/70477</a>&nbsp;
          发表时间: 2007年04月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>作为全世界最智能的IDE，前段时间放出来里程碑的7.0 M1版，该版本最明显的地方就是内置对Spring和Hiberbate的支持。</p>
<li>Coding assistance with smart completion </li>
<li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/hibernateCompletion.gif" alt="Coding assistance with smart completion" /> </li>
<li>Code inspections and quick-fixes </li>
<li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/hibernateInspectionsHighlig.gif" alt="Code inspections and quick-fixes" /> </li>
<li>Hibernate mapping structure view </li>
<li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/hibernateViewStructure.gif" alt="Hibernate mapping structure view" /> </li>
<li>Mapping IntelliJ IDEA configured datasources to Hibernate </li>
<li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/hibernateDataSourceMapping.gif" alt="Mapping IntelliJ IDEA configured datasources to Hibernate" />&nbsp;
<p class="screenshots">&nbsp;</p>
<p class="screenshots">Spring</p>
<ul>
    <li>Coding assistance, including smart completion </li>
    <li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/springCompletion.gif" alt="Coding assistance, including smart completion" /> </li>
    <li>Highlighting, inspections and quick-fixes </li>
    <li>Visual diagram for viewing dependencies </li>
    <li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/springDiagram.gif" alt="Visual diagram for viewing dependencies" /> </li>
    <li>Dedicated file set editor </li>
    <li class="screenshots"><img src="http://www.jetbrains.com/idea/img/version7/springFileSetEditor.gif" alt="Dedicated file set editor" />&nbsp; </li>
</ul>
<p class="screenshots">爽，再也不用去使用那个bug n多的IdeaSpring了！</p>
</li>
<p class="screenshots">下载地址：<font face="Arial"><a href="http://www.jetbrains.com/idea/nextversion/">http://www.jetbrains.com/idea/nextversion/</a></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/70477#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 13 Apr 2007 08:27:30 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/70477</link>
        <guid>http://netbus.javaeye.com/blog/70477</guid>
      </item>
      <item>
        <title>恢复被误删的Linux分区表</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/64657" style="color:red;">http://netbus.javaeye.com/blog/64657</a>&nbsp;
          发表时间: 2007年03月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在一次不小心的操作中把Linux的扩展分区表删了，其中扩展分区有3个逻辑分区，有个逻辑分区是Mount到根目录的。</p>
<p>幸好当时机器没有重启，如果重启机器了那么机器上的东西会全部丢失。</p>
<p>在咨询相关人士后，有人提供可以采用fdisk按以前的大小重建分区就能找回来。但是仔细分析后，如果重建分区后，并不知道以前的分区size，文件分配表肯定会丢失。这样肯定不是我想要的结果，</p>
<p>登录上机器后，<font face="Arial">cat /proc/partitions 发现以前的分区信息还在，这时候想利用parted恢复分区表，在创建分区表后，parted无法正确识别原有分区表类型，只好把新创建的分区表删了。这时候心想肯定死定了。</font></p>
<p>怀着最后一丝希望在google上搜索：linux parted ，找到了一线希望，发现有人建议使用testdisk来恢复分区表。下载testdisk在Linux下的二进制代码后，testdisk提示：kernel too old，心想，难道testdisk linux版本是在高版本内核上编译的？幸好testdisk是基于gpl协议发行的，下载linux源代码后，make、make install。再运行，OK！能够正常运行了！</p>
<p>启动testdisk后，按菜单提示使用恢复功能。经过几分钟后，testdisk找到了全部被删除的分区表。爽！</p>
<p>testdisk我爱你！！&nbsp;</p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; <font face="Arial"><a href="http://netbus.javaeye.com/">http://netbus.javaeye.com</a></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/64657#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, 22 Mar 2007 14:01:52 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/64657</link>
        <guid>http://netbus.javaeye.com/blog/64657</guid>
      </item>
      <item>
        <title>HttpClient对URL编码的处理方式解惑！</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/60383" style="color:red;">http://netbus.javaeye.com/blog/60383</a>&nbsp;
          发表时间: 2007年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">HttpClient是Apache基金下jakarta commons项目中的一个小项目，该项目封装了对远程地址下载的一些功能，最新版本为3.0。该项目地址：</font><font face="Arial"><a href="http://jakarta.apache.org/commons/httpclient">http://jakarta.apache.org/commons/httpclient</a></font></p>
<p>最近在编写Spider的时候就用到了<font face="Arial">HttpClient。在使用过程中发现一个有趣现象：</font>有些URL的编码方式是utf-8，有些URL的编码方式是gbk。他总能够正确识别，但是有些他又不能识别(抓取回来后是乱码)。调用的是：<font face="Arial">httpMethod.getResponseBodyAsString();&nbsp; 方法。</font></p>
<p>在进行进一步分析时，发现他对在http头信息中有charset描述的就正确正常识别。如：</p>
<font face="Arial">
<div class="code_title">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>HTTP/</span><span class="number">1.1</span><span>&nbsp;</span><span class="number">200</span><span>&nbsp;OK &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>Connection:&nbsp;close &nbsp;&nbsp;</span> </li>
    <li class="alt"><font color="#ff0000"><span><font color="#ff0000">Content-Type:&nbsp;text/html;&nbsp;charset=</font><font color="#ff0000">utf-</font></span></font><font color="#ff0000"><span class="number">8</span></font><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>Set-Cookie:&nbsp;_session_id=066875c3c0530c06c0204b96db403560;&nbsp;domain=javaeye.com;&nbsp;path=/ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>Vary:&nbsp;Accept-Encoding &nbsp;&nbsp;</span> </li>
    <li class=""><span>Cache-Control:&nbsp;no-cache &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>Content-Encoding:&nbsp;gzip &nbsp;&nbsp;</span> </li>
    <li class=""><span>Content-Length:&nbsp;</span><span class="number">8512</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>Date:&nbsp;Fri,&nbsp;</span><span class="number">16</span><span>&nbsp;Mar&nbsp;</span><span class="number">2007</span><span>&nbsp;</span><span class="number">09</span><span>:</span><span class="number">02</span><span>:</span><span class="number">52</span><span>&nbsp;GMT &nbsp;&nbsp;</span> </li>
    <li class=""><span>Server:&nbsp;lighttpd/</span><span class="number">1.4</span><span>.</span><span class="number">13</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
</div>
<p>&nbsp;而没有charset描述信息时，就会是乱码。再查看相关文档时，可以指定URL的编码方式。如：<font face="Arial">HttpClientParams.<font face="Arial">setContentCharset(&quot;gbk&quot;);，指定了编码后，就能够正确识别对应编码的URL了。问题出现了，因URL编码不一样，Spider不可能把URL的编码方式写死。并且只有在抓取回来后才知道编码是否正确。于是再仔细研究一下httpclient的源代码，发现他使用编码的顺序是：</font></font>http头信息的charset，如果头信息中没有charset，则查找<font face="Arial">HttpClientParams的<font face="Arial">contentCharset，如果没有指定编码，则是ISO-8859-1。</font></font></p>
<div class="code_title"></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">/** </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;*&nbsp;Returns&nbsp;the&nbsp;character&nbsp;set&nbsp;from&nbsp;the&nbsp;<tt>Content-Type</tt>&nbsp;header. </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;*&nbsp; </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;contentheader&nbsp;The&nbsp;content&nbsp;header. </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;String&nbsp;The&nbsp;character&nbsp;set. </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;String&nbsp;getContentCharSet(Header&nbsp;contentheader)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.trace(</span><span class="string">&quot;enter&nbsp;getContentCharSet(&nbsp;Header&nbsp;contentheader&nbsp;)&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;charset&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(contentheader&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HeaderElement&nbsp;values[]&nbsp;=&nbsp;contentheader.getElements(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;I&nbsp;expect&nbsp;only&nbsp;one&nbsp;header&nbsp;element&nbsp;to&nbsp;be&nbsp;there </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;No&nbsp;more.&nbsp;no&nbsp;less </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(values.length&nbsp;==&nbsp;</span><span class="number">1</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;param&nbsp;=&nbsp;values[</span><span class="number">0</span><span>].getParameterByName(</span><span class="string">&quot;charset&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(param&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;If&nbsp;I&nbsp;get&nbsp;anything&nbsp;&quot;funny&quot;&nbsp; </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;&nbsp;&nbsp;</span><span class="comment">//&nbsp;UnsupportedEncondingException&nbsp;will&nbsp;result </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;&nbsp;&nbsp;charset&nbsp;=&nbsp;param.getValue(); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(charset&nbsp;==&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;charset&nbsp;=&nbsp;getParams().getContentCharset(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(LOG.isDebugEnabled())&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.debug(</span><span class="string">&quot;Default&nbsp;charset&nbsp;used:&nbsp;&quot;</span><span>&nbsp;+&nbsp;charset); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;charset; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comment">/**&nbsp;&nbsp; </span>&nbsp; </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;*&nbsp;Returns&nbsp;the&nbsp;default&nbsp;charset&nbsp;to&nbsp;be&nbsp;used&nbsp;for&nbsp;writing&nbsp;content&nbsp;body,&nbsp;&nbsp;&nbsp; </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;*&nbsp;when&nbsp;no&nbsp;charset&nbsp;explicitly&nbsp;specified.&nbsp;&nbsp; </span>&nbsp;</span> </li>
    <li class=""><span><span class="comment">&nbsp;&nbsp;*&nbsp;@return&nbsp;The&nbsp;charset&nbsp;&nbsp; </span>&nbsp;</span> </li>
    <li class="alt"><span><span class="comment">&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getContentCharset()&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;charset&nbsp;=&nbsp;(String)&nbsp;getParameter(HTTP_CONTENT_CHARSET);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(charset&nbsp;==&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOG.warn(</span><span class="string">&quot;Default&nbsp;content&nbsp;charset&nbsp;not&nbsp;configured,&nbsp;using&nbsp;ISO-8859-1&quot;</span><span>);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;charset&nbsp;=&nbsp;</span><span class="string">&quot;ISO-8859-1&quot;</span><span>;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;charset;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>这个该死的iso-8859-1害了多少人啊(Tomcat对提交的数据处理默认也是iso-8859-1)！！</p>
<p>经过仔细思考后，决定httpclient再封装一次，思路如下：</p>
<ol>
    <li>先不设定<font face="Arial">HttpClientParams的charset；</font> </li>
    <li>executemethod后，再检查http头信息中的charset是否存在；&nbsp; </li>
    <li>如果charset存在，返回<font face="Arial">httpMethod.getResponseBodyAsString();&nbsp; ；</font> </li>
    <li>如果charset不存在，则先调用<font face="Arial">httpMethod.getResponseBodyAsString();得到html后，再分析html head的meta的charset<font face="Arial">
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />；</font></font> </li>
    <li>从meta中分析出charset后，设置到<font face="Arial">HttpClientParams的c<font face="Arial">ontentCharset；</font></font> </li>
    <li>再调用<font face="Arial">httpMethod.getResponseBodyAsString()，并返回该值。</font> </li>
</ol>
<p>经过以上思路处理后，发现抓回来的URL再也没有乱码了。爽！</p>
<p>以上步骤中，就是第四步稍微麻烦一些，不过，也可以利用第三方的html paser工具来分析meta的charset！</p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; <font face="Arial"><a href="http://netbus.javaeye.com/">http://netbus.javaeye.com</a></font></p>
</font>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/60383#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Mar 2007 17:37:04 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/60383</link>
        <guid>http://netbus.javaeye.com/blog/60383</guid>
      </item>
      <item>
        <title>关于给Struts的Html link标签的action(或者page、href)属性设置多个动态参数的解决办法</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/58226" style="color:red;">http://netbus.javaeye.com/blog/58226</a>&nbsp;
          发表时间: 2007年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>相信大家对于Struts 1.x中的html:link标签非常熟悉。一般的使用方法是这样子的：<font face="Arial"><font face="Arial"><span><font face="Arial"><font face="Arial"><font face="Arial"><span><font face="Arial"><br />
</font></span></font></font></font></span></font></font></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>LinkObject&nbsp;linkObject&nbsp;&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;LinkObject(); &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>linkObject.setName(</span><span class="string">&quot;monoxide&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>request.setAttribute(</span><span class="string">&quot;linkObject&quot;</span><span>,linkObject); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span><font face="Courier New" style="BACKGROUND-COLOR: #fafafa">&nbsp; &lt; html:link href=&quot;test.jsp&quot; paramName=&quot;linkObject&quot; paramId=&quot;realName&quot; paramProperty=&quot;name&quot; paramScope=&quot;request&quot;&gt;测试 Object&lt; /html:link&gt; <br />
    <br />
    </font></span><span><br />
    &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p dir="ltr">这个表示方法是：</p>
<p dir="ltr">从request中取出linkObject的name的值，然后以realName的参数形式加到test.jsp后面，最后生成的代码看起来是这个样子：<font face="Arial">test.jsp?realName=monoxide</font></p>
<p dir="ltr">这种方法虽然简单，但是有一个缺陷。那就是只能从linkObject中取出一个值来，如果想取2个或者2个以上属性追加到参数后面，该方面就无能为力了。</p>
<p dir="ltr">在研究了struts html link源代码后，发现有个name属性可以利用，但是该属性的值只能放置map类型的对象，而不能放置普通的Object。代码如下：</p>
<div dir="ltr" class="code_title">java 代码</div>
<p dir="ltr" style="MARGIN-RIGHT: 0px">&nbsp;</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>Map&nbsp;map&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HashMap(); &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>map.put(</span><span class="string">&quot;name&quot;</span><span>,</span><span class="string">&quot;一氧华碳&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>map.put(</span><span class="string">&quot;email&quot;</span><span>,</span><span class="string">&quot;monoxide@gmail.com&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>request.setAttribute(</span><span class="string">&quot;map&quot;</span><span>,map); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;<font face="Courier New" style="BACKGROUND-COLOR: #fafafa">&nbsp; &lt; html:link href=&quot;test.jsp&quot; name=&quot;map&quot; useLocalEncoding=&quot;true&quot;&gt;测试 Map&lt; /html:link&gt;<br />
    </font>&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p dir="ltr">&nbsp;最后生成的Link：<font face="Arial">test.jsp?email=monoxide%40gmail.com&amp;name=%D2%BB%D1%F5%BB%AA%CC%BC</font></p>
<p dir="ltr">特别注意：<font face="Arial">useLocalEncoding 该属性如果为true，则以系统的编码来urlencode。如果为false，则以utf-8的编码。默认为false</font></p>
<p dir="ltr">完整测试代码见附件！</p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; <font face="Arial"><a href="http://netbus.javaeye.com/">http://netbus.javaeye.com</a></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/58226#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, 08 Mar 2007 14:32:33 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/58226</link>
        <guid>http://netbus.javaeye.com/blog/58226</guid>
      </item>
      <item>
        <title>Mysql 存贮过程参数中传入汉字乱码的解决办法！</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/57653" style="color:red;">http://netbus.javaeye.com/blog/57653</a>&nbsp;
          发表时间: 2007年03月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这个问题郁闷我了我很久。问题是这样的：</p>
<p>1、我使用insert语句没问题，能够正常插入汉字。</p>
<p>2、把insert语句移到Procedure中后，就无法插入汉字了。在客户端软件中插入的汉字总是为乱码，英文和数字没问题。</p>
<p>3、如果在jdbc中调用这个Procedure总是报错：</p>
<ul dir="ltr" style="MARGIN-RIGHT: 0px">
    <li>在mysql 5.0下错误为：Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'v_title' at row 1，<font color="#0000ff">这个提示完全是错误的。</font> </li>
    <li>在mysql 5.2下错误为：Cause: java.sql.SQLException: Incorrect string value: '\xBA\xBA\xD7\xD6\xB0\xA1' for column 'v_title' at row 1 <font color="#0000ff">这个提示还马马虎虎象样。<br />
    </font></li>
</ul>
<p>存贮过程内容如下：</p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-sql">
    <li class="alt"><span><span>DELIMITER&nbsp;$$ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">DROP</span><span>&nbsp;</span><span class="keyword">PROCEDURE</span><span>&nbsp;IF&nbsp;EXISTS&nbsp;`comments`.`test`$$ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">CREATE</span><span>&nbsp;DEFINER=`root`@`localhost`&nbsp;</span><span class="keyword">PROCEDURE</span><span>&nbsp;`test`( &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="op">in</span><span>&nbsp;v_title&nbsp;</span><span class="keyword">varchar</span><span>(200)&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>) &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">BEGIN</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">insert</span><span>&nbsp;</span><span class="keyword">into</span><span>&nbsp;t1(t)&nbsp;</span><span class="keyword">values</span><span>&nbsp;(v_title); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">END</span><span>$$ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>DELIMITER&nbsp;;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>在查阅了很多相关资料后，发现只需要改动procedure的参数的定义就OK了，改动为：在varchar参数后面加入：<font face="Arial">&nbsp;character set 指定编码</font>。由于服务器编码为gbk，我指定为：<font size="4" color="#ff0000" face="Arial"><strong>in v_title varchar(200)&nbsp; character set gbk</strong></font></p>
<p>&nbsp;修改后procedure内容如下：</p>
<div class="code_title">sql 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-sql">
    <li class="alt"><span><span>DELIMITER&nbsp;$$ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">DROP</span><span>&nbsp;</span><span class="keyword">PROCEDURE</span><span>&nbsp;IF&nbsp;EXISTS&nbsp;`comments`.`test`$$ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">CREATE</span><span>&nbsp;DEFINER=`root`@`localhost`&nbsp;</span><span class="keyword">PROCEDURE</span><span>&nbsp;`test`( &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="op">in</span><span>&nbsp;v_title&nbsp;</span><span class="keyword">varchar</span><span>(200)&nbsp;&nbsp;</span><span class="keyword">character</span><span>&nbsp;</span><span class="keyword">set</span><span>&nbsp;gbk &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>) &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">BEGIN</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">insert</span><span>&nbsp;</span><span class="keyword">into</span><span>&nbsp;t1(t)&nbsp;</span><span class="keyword">values</span><span>&nbsp;(v_title); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">END</span><span>$$ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>DELIMITER&nbsp;;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>修改后，插入汉字一切都正常啦！</p>
<p>BTW：我在google中搜到有很多人提出了这个问题，但是无人回答。今天我在这里也算一个解答吧。</p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; <font face="Arial"><a href="http://netbus.javaeye.com/">http://netbus.javaeye.com</a></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/57653#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, 06 Mar 2007 10:49:53 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/57653</link>
        <guid>http://netbus.javaeye.com/blog/57653</guid>
      </item>
      <item>
        <title>一个Windows下的tail工具(即时查看日志)</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/56769" style="color:red;">http://netbus.javaeye.com/blog/56769</a>&nbsp;
          发表时间: 2007年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Linux操作系统下tail命令非常好用，可以即时跟踪tomcat输出的日志。</p>
<p>很遗憾Windows平台下没有自带类似的小工具(图形化真的能代替一切？)。不过，经过我的努力，终于在网上找到了Windows版本下的tail工具(见附件)。</p>
<p>使用方法：在命令行下输入 tail log文件名</p>
<p>文件帮助如下：</p>
<p><font face="Arial">tail 1.0.0.1 created by Jorgen Bosman<br />
Usage: tail [options] file<br />
Options:<br />
&nbsp; -[x]f : Follow the file and display new lines as they are written to the file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Optionally display the x last lines first (default=10)<br />
&nbsp; -n x&nbsp; : Displays the last x lines of the file<br />
&nbsp; -s x&nbsp; : Sleeps x miliseconds between 2 read attempts for -f option<br />
</font></p>
<p><font face="Arial">作者的个人主页：<font face="Arial"><a href="http://users.pandora.be/jbosman/">http://users.pandora.be/jbosman/</a></font></font></p>
<p><font face="Arial">文件下载见附件</font></p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; <font face="Arial"><a href="http://netbus.javaeye.com/">http://netbus.javaeye.com</a></font></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/56769#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, 01 Mar 2007 16:36:20 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/56769</link>
        <guid>http://netbus.javaeye.com/blog/56769</guid>
      </item>
      <item>
        <title>如何利用Rome parser 163.com的rss的日期</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/55895" style="color:red;">http://netbus.javaeye.com/blog/55895</a>&nbsp;
          发表时间: 2007年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">在利用Rome解析163的rss的时候，发现无法获得rss中的文章的发布日期。</font></p>
<p>查看了163.com的rss源代码后，发现rss以是gbk的编码方式提供(sohu，sina，xinhuanet都是utf-8格式，并且日期格式也是gmt的日期格式，rome直接能把日期解析出来)。</p>
<p>查看了rome的源代码后，发现问题出在<font face="Arial">com.sun.syndication.io.impl.DateParser这个日期解析类上面，</font></p>
<p>再仔细分析了一个这个类，原来rome支持自定义日期格式。</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">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String[]&nbsp;ADDITIONAL_MASKS; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">static</span><span>&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;ADDITIONAL_MASKS&nbsp;=&nbsp;PropertiesLoader.getPropertiesLoader().getTokenizedProperty(</span><span class="string">&quot;datetime.extra.masks&quot;</span><span>,</span><span class="string">&quot;|&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>}&nbsp;&nbsp;</span> </li>
</ol>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;Date&nbsp;parseDate(String&nbsp;sDate)&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;d&nbsp;=&nbsp;parseW3CDateTime(sDate); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(d==</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;parseRFC822(sDate); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(d==</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;ADDITIONAL_MASKS.length&gt;</span><span class="number">0</span><span>)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;parseUsingMask(ADDITIONAL_MASKS,sDate); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;d; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p><font face="Arial">哦，原来只需要在<font face="Arial">rome.properties中定义好自定义日期格式类就可以了。</font></font></p>
<p>我的定义如下：</p>
<p>&nbsp;<font face="Arial">datetime.extra.masks=yyyy-MM-dd HH:mm:ss|yyyy-MM-dd HH:mm</font></p>
<p>前面一段是为了对付163使用，后面一段是为了对付天极网使用。</p>
<p>Rome真方便！</p>
<p>Rome下载地址：<font face="Arial"><a href="http://wiki.java.net/bin/view/Javawsxml/Rome">http://wiki.java.net/bin/view/Javawsxml/Rome</a></font></p>
<p>163的rss地址：<font face="Arial"><a href="http://sports.163.com/special/00051K7F/rss_sportscp.xml">http://sports.163.com/special/00051K7F/rss_sportscp.xml</a></font></p>
<p>天极的rss地址：<font face="Arial"><a href="http://www.yesky.com/index.xml">http://www.yesky.com/index.xml</a>&nbsp;(这个rss不错，更新快)</font></p>
<p>&nbsp;<font face="Arial"><font face="Arial">&nbsp; </font></font><font face="Arial"><a href="http://netbus.javaeye.com">http://netbus.javaeye.com</a></font></p>
<p>如果没有特别注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; </p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/55895#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, 26 Feb 2007 16:01:03 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/55895</link>
        <guid>http://netbus.javaeye.com/blog/55895</guid>
      </item>
      <item>
        <title>小技巧：如何快速的在Linux设定ClassPath</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/53195" style="color:red;">http://netbus.javaeye.com/blog/53195</a>&nbsp;
          发表时间: 2007年02月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">我们要在Linux下启动一个Java应用程序时，如果该应用使用的第三方Java包比较多的话，那么设定ClassPath是一个比较头痛的问题。</font></p>
<p>一般情况下我是这样处理的：</p>
<ol>
    <li>在当前目前下建一个lib目录，把所有的jar(包括程序也要打成一个jar文件)，放到lib目录中 </li>
    <li>写一个shell脚本。脚本内容在后面：&nbsp; </li>
    <li>把脚本改成755 属性。 </li>
    <li>启动这个脚本就OK啦！ </li>
</ol>
<p><font face="Arial">
<table cellspacing="1" border="0" summary="" width="555" cellpadding="1" style="WIDTH: 555px; HEIGHT: 177px">
    <tbody>
        <tr>
            <td bgcolor="#cccccc">
            <p><font face="Arial"></font></p>
            <p><font face="Arial"><font face="Arial">dir=`dirname $0`<br />
            CLASSPATH=$dir<br />
            for jar in $dir/lib/*.jar<br />
            do<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLASSPATH=$CLASSPATH:$jar<br />
            done</font></font></p>
            <p><font face="Arial">$JAVA_HOME/bin/java YouMainClass</font></p>
            </td>
        </tr>
    </tbody>
</table>
</font></p>
<font face="Arial"><font face="Arial">
<p>如果没有注明，本Blog文章岂为原创。</p>
<p>转贴请注明出处：&nbsp;&nbsp;&nbsp; </p>
</font></font><font face="Arial">http://netbus.javaeye.com</font>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/53195#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, 08 Feb 2007 13:52:19 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/53195</link>
        <guid>http://netbus.javaeye.com/blog/53195</guid>
      </item>
      <item>
        <title>庆祝Blog开通</title>
        <author>NetBus</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://netbus.javaeye.com">NetBus</a>&nbsp;
          链接：<a href="http://netbus.javaeye.com/blog/53111" style="color:red;">http://netbus.javaeye.com/blog/53111</a>&nbsp;
          发表时间: 2007年02月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>注册后，好不容易才过完这三天。今天终于可以发贴了！庆祝一下！</p>
<p>我是一个Spring、iBatis、Struts、Tomcat迷。不喜欢Hibernate(我也不知道为什么，可能是我喜欢编写naviteSQL吧)！</p>
<p>以后我会发一些关于Java和Oracle性能优化的贴子，欢迎各位看官品尝。</p>
          <br/>
          <span style="color:red;">
            <a href="http://netbus.javaeye.com/blog/53111#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, 08 Feb 2007 09:33:28 +0800</pubDate>
        <link>http://netbus.javaeye.com/blog/53111</link>
        <guid>http://netbus.javaeye.com/blog/53111</guid>
      </item>
  </channel>
</rss>