<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>new silk road</title>
    <description>TRULY MADLY DEEPLY LOVELY</description>
    <link>http://dodoflying.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>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/81898" style="color:red;">http://dodoflying.javaeye.com/blog/81898</a>&nbsp;
          发表时间: 2007年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在项目中使用成熟的持久层框架可以带来以下好处：<br />
<ol>
    <li>减少乏味的代码；</li>
    <li>更加面向对象的设计；</li>
    <li>更好的性能；（我在其他项目中使用了C3P0连接池）</li>
    <li>更好的移植性</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/81898#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, 22 May 2007 16:30:07 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/81898</link>
        <guid>http://dodoflying.javaeye.com/blog/81898</guid>
      </item>
      <item>
        <title>Installing Apache Http Server on Linux</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/78150" style="color:red;">http://dodoflying.javaeye.com/blog/78150</a>&nbsp;
          发表时间: 2007年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2><a name="overview" id="overview">Overview for the     impatient</a></h2>
<table>
    <tbody>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#download">Download</a></td>
            <td><code>$ lynx http://httpd.apache.org/download.cgi</code>         </td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#extract">Extract</a></td>
            <td><code>$ gzip -d httpd-<em>NN</em>.tar.gz<br />
            $ tar xvf httpd-<em>NN</em>.tar<br />
            $ cd httpd-<em>NN</em></code></td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#configure">Configure</a></td>
            <td><code>$ ./configure --prefix=<em>PREFIX(<strong><font color="#ff0000">PREFIX指安装目录</font></strong>)</em></code>         </td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#compile">Compile</a></td>
            <td><code>$ make</code> </td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#install">Install</a></td>
            <td><code>$ make install</code> </td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#customize">Customize</a></td>
            <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td>
        </tr>
        <tr>
            <td><a href="http://httpd.apache.org/docs/2.2/install.html#test">Test</a></td>
            <td><code>$ <em>PREFIX</em>/bin/apachectl -k start</code></td>
        </tr>
    </tbody>
</table>
<br />
安装好了后，出现问题如下：<br />
<span id="zoom">
<p>[root at mobile apache]#  dot /bin/apachectl start<br />
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName</p>
<p>结果<br />
Forbidden<br />
You don't have permission to access / on this server.<br />
Additionally, a <font color="#ff0000">403 Forbidden error</font> was encountered while trying to use an ErrorDocument to handle the request.</p>
</span><span id="zoom"><font color="#ff0000">原因可能是</font>：<br />
1、你没有为该目录或者该文件设置guest组权限；<br />
2、你没有将该文件名设置为默认页面，尤其是在仅用域名访问的情况下。 <br />
解决办法:<br />
chmod 701 ／home／www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （apache安装目录，同上面的PREFIX）<br />
chmod 701 ／home／www／*</span>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/78150#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 May 2007 08:13:16 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/78150</link>
        <guid>http://dodoflying.javaeye.com/blog/78150</guid>
      </item>
      <item>
        <title>Open Source Project Management tool-dotproject</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/77858" style="color:red;">http://dodoflying.javaeye.com/blog/77858</a>&nbsp;
          发表时间: 2007年05月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
My boss told me to find some open souce project management software, I found this url<br />
<a href="http://www.open-open.com/22.htm" target="_blank">http://www.open-open.com/22.htm</a><br />
<br />
and found the dotProject . <br />
Have a try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br />
<br />
<a href="http://www.dotproject.net/index.php" title="dotProject"><img src="http://www.dotproject.net/themes/SleekXTE/images/logo_large.png" border="0" alt="logo" /></a><br />
dotProject is a volunteer supported Project Management application. There is no &quot;company&quot; behind this project, it is managed, maintained, developed and supported by a volunteer group and by the users themselves.<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/77858#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, 08 May 2007 15:42:10 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/77858</link>
        <guid>http://dodoflying.javaeye.com/blog/77858</guid>
      </item>
      <item>
        <title>单词记忆方法-词根词缀记忆法</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/76965" style="color:red;">http://dodoflying.javaeye.com/blog/76965</a>&nbsp;
          发表时间: 2007年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="3">笔记摘自[在北京听英语讲座的感悟]</font><br />
<br />
<font size="2"><span style="font-size: 12pt; font-family: 宋体; color: red;">词根词缀记忆法，这是最有效率和效果的记忆方法。使用这种方法可以达到举一反三，四两拨千金的作用。可以在较短的时间内，记住大量的词汇。为什么会这样呢？这就需要从英语发展的历史来分析。</span></font><br />
<br />
<span style="font-size: 12pt; font-family: 宋体;">在追溯英语的历史发展时，我们通常将它分为三个时期：<span lang="EN-US"> <br />
1</span>、古英语<span lang="EN-US">(Old English)</span>，从公元<span lang="EN-US">450</span>年至<span lang="EN-US">1150</span>年。<span lang="EN-US"> <br />
2</span>、中古英语<span lang="EN-US">(Middle English)</span>，从公元<span lang="EN-US">1150</span>年至<span lang="EN-US">1500</span>年。<span lang="EN-US"> <br />
3</span>、现代英语<span lang="EN-US">(Modern English)</span>，从<span lang="EN-US">1500</span>年至今。<br />
<br />
</span><span style="font-size: 12pt; font-family: 宋体;">　　这样的分期当然不是绝对的，但它有助于我们对词汇的理解和记忆。古英语时期英语从罗马文化和东欧文化吸取了大量的借词和派生词，并根据需要产生了一些构成词。罗马文化基本上就是希腊文化的延伸，主要以拉丁语为主。对英语的影响极为深刻。<font color="#ff0000">所以词根词缀的构成以拉丁语居多。</font>而东欧文化又是印欧语系的不同分支。也有拉丁语的血缘。<span lang="EN-US"><br style="" />
<!--[if !supportLineBreakNewLine]--><br style="" />
<!--[endif]--></span></span><span style="font-size: 12pt; font-family: 宋体;">　　中古英语时期则是法国人统治英国的时期，<span style="color: red;">英语又从法语借词和派生与构成词汇</span>。而现代英语时期则是因为英语在全世界的流行，从各种语言中借词与构成。并且随着科技和经济的发展，不断的创造新的词汇。新词汇的创造禀承着一定的规律，到目前，英语的词汇已经超过<span lang="EN-US">200</span>万个，而且每天都在不断的增长。<span lang="EN-US"> <br style="" />
<!--[if !supportLineBreakNewLine]--><br style="" />
</span></span><span style="font-size: 12pt; font-family: 宋体;">&nbsp;&nbsp;&nbsp; 所以，死记硬背单词与旁门左道显然是行不通的，词根词缀大词记忆法则是科学的学习英语词汇的方法，可以达到举一反三的的地步。并且拼写上很少会发生错误。<font color="#ff0000">所以，你只要掌握<span lang="EN-US">3000</span>左右的单音节词和<span lang="EN-US">1000</span>个左右词根词缀，就可以解决你一生的词汇问题。</font><br />
<br />
</span>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/76965#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, 04 May 2007 12:23:33 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/76965</link>
        <guid>http://dodoflying.javaeye.com/blog/76965</guid>
      </item>
      <item>
        <title>How to be a good speaker by  KaiFu Lee</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/73640" style="color:red;">http://dodoflying.javaeye.com/blog/73640</a>&nbsp;
          发表时间: 2007年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>How to be a good speaker&nbsp;&nbsp;&nbsp; KaiFu Lee</strong><br />
<br />
Below is My note :)<br />
<br />
speaking skills(verbal 7%,vocal 38%,visual 55%)&nbsp; Delivery Skills<br />
Most important : Enthusiasm 热情<br />
Don't accept a talk without enthusiasm<br />
Could be from interest,experience,environment<br />
<br />
Verbal 用简单词<br />
Vocal silence,loudness,intonation声调,speed<br />
<br />
Visual Skills<br />
eyes,body,hands,face<br />
eyes：正视观众？如何看？每次看一个脸，看3到6秒钟，随机的<br />
body：stand up when talking,walk around=informal,Don't rock,shake,lean too much<br />
Face: show emotion,<br />
<br />
key point&nbsp; 关键点<br />
Audience Benefit对观众有什么用处？<br />
<br />
Organizaing the story<br />
你是出卖你思想的人<br />
Tell them what you're going to say<br />
<br />
<strong>1.opening开场白</strong>(jerry weissman)一定要讲key point，对观众有什么好处？ <br />
A question<br />
Factoid<br />
anecdote<br />
quotation<br />
analogy<br />
joke<br />
<br />
<strong>2.body</strong><br />
brainstorming into data dump(使用脑图)<br />
the flow(Feature / Benefit)<br />
connect the <br />
<br />
<br />
<strong>3.ending</strong><br />
End with a Bang<br />
Repeat the key point<br />
Say thank you<br />
<br />
好的ppt<br />
keep it simple
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/73640#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, 23 Apr 2007 22:34:05 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/73640</link>
        <guid>http://dodoflying.javaeye.com/blog/73640</guid>
      </item>
      <item>
        <title>[转载]Installing the BIRT Viewer in Tomcat</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/72872" style="color:red;">http://dodoflying.javaeye.com/blog/72872</a>&nbsp;
          发表时间: 2007年04月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          from<br />
<a href="http://www.eclipse.org/birt/phoenix/deploy/viewerSetup.php" target="_blank">http://www.eclipse.org/birt/phoenix/deploy/viewerSetup.php</a><br />
<br />
<h2>Using Tomcat</h2>
<p> 			This page explains how to deploy the BIRT viewer to a J2EE container. 			We'll use <a href="http://jakarta.apache.org/tomcat/">Apache Tomcat</a>, since it is open source and readily available. The same concepts, perhaps with different details, apply to other app servers. These instructions assume you'll install Tomcat on your own machine using the default port number of 8080. </p>
<p> 			If you don&rsquo;t have Tomcat installed on your system you can download it from <a href="http://jakarta.apache.org/tomcat">http://jakarta.apache.org/tomcat</a>. 			BIRT works with the 4.1.x and 5.5.x verisons of Tomcat. 		</p>
<h2><a name="install_viewer"></a>Install the Viewer</h2>
<p> 			Deploy the BIRT Viewer application. Follow these steps: 		</p>
<ul class="midlist">
    <li> 				Download the zip file with the BIRT report engine runtime. The file is named birt-runtime-version#.zip. 			</li>
    <li> 				Unzip the file in a staging area. 			</li>
    <li> 				Look under the birt-runtime-</li>
    <li> Copy the Web Viewer Example directory<font color="#ff0000">（我使用的是birt-runtime-2.1.2版本，目录名是WebViewerExample）</font> to the webapps directory of your Tomcat installation. For ease of reference, rename the directory to &quot;birt-viewer&quot;. </li>
    <li> 				Copy additional files to the directory structure described in the BIRT Runtime Note below (iText and prototype.js).<font color="#ff0000">向下面看</font> 			</li>
    <li> 				Stop, then restart Tomcat. 			</li>
    <li> 				Display the Tomcat manager application to check that the viewer is deployed: <a href="http://localhost:8080/manager/html"> http://localhost:8080/manager/html</a>. 			</li>
    <li> 				Verify that birt-viewer is listed as an application, then click on the birt-viewer link. 			</li>
    <li> A page confirming that the BIRT viewer has been installed should be displayed. Click on the link labeled &quot;View Example&quot; to confirm that your installation is working properly. </li>
</ul>
<p> If you choose to put the Viewer into some other location, you'll need to use a context entry within the server.xml file to indicate the deployment location. See Tomcat documentation for details. </p>
<div class="homeitem3col">
<h3>Birt 2.1 Note: </h3>
<ul>  If you are installing BIRT 2.1 or later the Web Viewer Example has been renamed to WebViewerExample.   </ul>
    </div>
    <h2><a name="xtra"></a>iText and prototype.js</h2>
    <p> 			Verify that you have downloaded <a href="http://prdownloads.sourceforge.net/itext/itext-1.3.jar">iText 1.3</a> and <a href="http://dev.conio.net/repos/prototype/dist/prototype.js">prototype.js v1.4.0</a>(only required for BIRT 2.0.2 and earlier builds) and follow the note below: 		</p>
    <div class="homeitem3col">
    <h3>Birt 2.0.2 Runtime Note: </h3>
    <ul>
        <li>If you are installing the BIRT 2.0.2 Runtime (J2EE Application Server Deployment), The iText and prototype files will need to be copied to the birt-runtime/Web Viewer Example directory structure. </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/itext-1.3.jar">itext-1.3.jar</a> to /Web Viewer Example/plugins/org.eclipse.birt.report.engine.emitter.pdf/lib.  </li>
        <li>Copy <a href="http://dev.conio.net/repos/prototype/dist/prototype.js">prototype.js v1.4.0</a> to /Web Viewer Example/ajax/lib.  </li>
    </ul>
    </div>
    <br />
    <div class="homeitem3col">
    <h3>Birt 2.1 Runtime Note: </h3>
    <ul>
        <li>If you are installing the BIRT 2.1 Runtime (J2EE Application Server Deployment), The iText file will need to be copied to the birt-runtime/WebViewerExample directory structure. </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/itext-1.3.jar">itext-1.3.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.  </li>
    </ul>
    </div>
    <br />
    <div class="homeitem3col">
    <h3>Birt 2.1.1 Runtime Note:（<font color="#ff0000">我使用2.1.2 Runtime</font>） </h3>
    <ul>
        <li>If you are installing the BIRT 2.1.1. or 2.1.2 Runtime (J2EE Application Server Deployment),  </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/itext-1.3.jar">itext-1.3.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.  </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/iTextAsian.jar">iTextAsian.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.   </li>
    </ul>
    </div>
    <br />
    <div class="homeitem3col">
    <h3>Birt 2.2M2 Runtime Note: </h3>
    <ul>
        <li>If you are installing the BIRT 2.2M2 or later Runtime (J2EE Application Server Deployment),  </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/itext-1.4.6.jar">itext-1.4.6.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.  </li>
        <li>Copy <a href="http://prdownloads.sourceforge.net/itext/iTextAsian.jar">iTextAsian.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.   </li>
    </ul>
    </div>
    <br />
    <br />
    <h2><a name="install_jdbc">Install your JDBC Drivers</a></h2>
    <p> 			Add the jar files for your JDBC drivers  to the Viewer. Copy the driver the following directory: 		</p>
    <p> 			 </p>
    <div class="homeitem3col">
    <h3>Birt 2.0.2 Note: </h3>
    <ul> If you are installing BIRT 2.0.2 or earlier the driver needs to be copied to birt-viewer/plugins/org.eclipse.birt.report.data.oda.jdbc/drivers. </ul>
        </div>
        <div class="homeitem3col">
        <h3>Birt 2.1 Note: </h3>
        <ul> If you are installing BIRT 2.1 or later the driver needs to be copied to birt-viewer\WEB-INF\platform\plugins\org.eclipse.birt.report.data.oda.jdbc \drivers.（实际情况和</ul>
            <font color="#ff0000">org.eclipse.birt.report.data.oda.jdbc这个名字不太相同</font>
            <ul> ）  </ul>
                </div>
                <h2><a name="testing">Testing a More Complex Report</a></h2>
                <p> We'll test the viewer further using one of the example reports created for the &quot;Classic Models&quot; database. Note that Classic Models database is included in the birt runtime distribution so no further set-up is required. Follow these steps: </p>
                <ul class="midlist">
                    <li> 				Download the zip file with the BIRT report engine runtime. The file is named birt-runtime-</li>
                    <li> 				Click on the following link to download the example report design, <a href="http://www.eclipse.org/birt/phoenix/examples/solution/SalesInvoice.rptdesign" target="_blank">SalesInvoice.rptdesign</a> into another browser window. Use the &quot;Save as...&quot; command from the file menu to save the report into the birt-viewer/report directory. </li>
                    <li> If you've installed everything in its default location, then click on the following link. If you've changed anything, then copy the following URL into your browser and make the needed changes. <blockquote> 					http://localhost:8080/birt-viewer/run?__report=Report\SalesInvoice.rptdesign  				</blockquote> 				or 				<blockquote> 					http://localhost:8080/birt-viewer/frameset?__report=Report\SalesInvoice.rptdesign 				</blockquote> 			</li>
                    <p> 			The report should run and appear in your browser.  See <a href="http://www.eclipse.org/birt/phoenix/deploy/viewerUsage.php">Viewer Usage</a> for information on the Viewer Operations. 		</p>
                </ul>
                <h2><a name="jboss">Deploying to JBoss</a></h2>
                To deploy the BIRT Viewer application to JBoss, follow these steps:
                <ul class="midlist">
                    <li> 				Download the zip file with the BIRT report engine runtime. The file is named birt-runtime-version#.zip. 			</li>
                    <li> 				Unzip the file in a staging area. 			</li>
                    <li> 				Look under the birt-runtime-</li>
                    <li> Copy the &quot;Web Viewer Example&quot; directory to your JBoss installation, under the deploy directory for your configuration. (eg) C:\jboss-4.0.3SP1\server\default\deploy. </li>
                    <li> 				Rename the Web Viewer Example directory to birt.war, so it will deploy in place. 			</li>
                    <li>Copy <a href="http://prdownloads.sourceforge.net/itext/itext-1.3.jar">itext-1.3.jar (BIRT 2.1)</a> or <a href="http://prdownloads.sourceforge.net/itext/itext-1.4.6.jar">itext-1.4.6.jar (BIRT 2.2)</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib.  </li>
                    <li>(BIRT 2.1.1 or later) Copy <a href="http://prdownloads.sourceforge.net/itext/iTextAsian.jar">iTextAsian.jar</a> to /WebViewerExample/WEB-INF/platform/plugins/com.lowagie.itext/lib. 			 			</li>
                    <li> 				Start up JBoss and enter the URL to BIRT (ie http://localhost:8080/birt) and run the test report.. 			</li>
                </ul>
                <h2><a name="other">Other J2EE Servers</a></h2>
                <p>We are currently working on instructions for other application servers</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/72872#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, 20 Apr 2007 15:50:59 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/72872</link>
        <guid>http://dodoflying.javaeye.com/blog/72872</guid>
      </item>
      <item>
        <title>From JasperReports To Birt</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/72377" style="color:red;">http://dodoflying.javaeye.com/blog/72377</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          I have tried to learn JasperReports for 1 week , but to my surprise, it's not suitable for my project. There are two reasons:<br />
<ol>
    <li>Chinese Font support isn't very good;</li>
    <li>Darwing a table in Jasper isn't a easy thing, but I think in a report , a table is the basic thing.</li>
</ol>
<br />
So , Now I have to say &quot;good bye&quot; to Jasper.<br />
<br />
<br />
Next step , I will try Birt .
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/72377#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, 19 Apr 2007 09:37:14 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/72377</link>
        <guid>http://dodoflying.javaeye.com/blog/72377</guid>
      </item>
      <item>
        <title>[转载]心理学教授谈记忆魔法--艾宾浩斯遗忘曲线</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/71991" style="color:red;">http://dodoflying.javaeye.com/blog/71991</a>&nbsp;
          发表时间: 2007年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1>心理学教授谈记忆魔法--艾宾浩斯遗忘曲线</h1>
来自于：<br />
<a href="http://www.iselong.com/English/0000/945.htm" target="_blank">http://www.iselong.com/English/0000/945.htm</a><br />
<br />
<font class="f14" id="zoom">人的大脑是一个记忆的宝库，人脑经历过的事物，思考过的问题，体验过的情感和情绪，练习过的动 作，都可以成为人们记忆的内容。例如英文的学习中单词、短语和句子，甚至文章的内容都是通过记忆完成的。从&quot;记&quot;到&quot;忆&quot;是有个过程的，这其中包括了识 记、保持、再认和回忆。有很多　<br />
人在学习英语的过程中，只注重了学习当时的记忆效果，孰不知，要想做好学习的记忆工作，是要下一番工夫的，单纯的注重当时的记忆效果，而忽视了后期的保持和再认同样是达不到良好的效果的。<br />
<br />
在信息的处理上，记忆是对输入信息的编码、贮存和提取的过程，从信息处理的角度上，英文的第一次学习和背诵只是一个输入编码的过程。人的记忆的能力从 生理上讲是十分惊人的，它可以存贮1015比特(byte，字节)的信息，可是每个人的记忆宝库被挖掘的只占10%，还有更多的记忆发挥空间。这是因为， 有些人只关注了记忆的当时效果，却忽视了记忆中的更大的问题--即记忆的牢固度问题，那就牵涉到心理学中常说的关于记忆遗忘的规律。<br />
<br />
一、艾宾浩斯记忆规律曲线解释<br />
<br />
德国有一位著名的心理学家名叫艾宾浩斯(Hermann Ebbinghaus，1850-1909)，他在1885年发表了他的实验报告后，记忆研究就成了心理学中被研究最多的领域之一，而艾宾浩斯正是发现记忆遗忘规律的第一人。<br />
<br />
根据我们所知道的，记忆的保持在时间上是不同的，有短时的记忆和长时的记忆两种。而我们平时的记忆的过程是这样的：<br />
<br />
</font>
<div align="center"><font class="f14" id="zoom"><img src="http://www.iselong.com/u/img/2003/1.gif" border="0" alt="" /></font></div>
<font class="f14" id="zoom"><br />
<br />
输入的信息在经过人的注意过程的学习后，便成为了人的短时的记忆，但是如果不经过及时的复习，这些记住过的东西就会遗忘，而经过了及时的复习，这些短 时的记忆就会成为了人的一种长时的记忆，从而在大脑中保持着很长的时间。那么，对于我们来讲，怎样才叫做遗忘呢，所谓遗忘就是我们对于曾经记忆过的东西不 能再认起来，也不能回忆起来，或者是错误的再认和错误的回忆，这些都是遗忘。艾宾浩斯在做这个实验的时候是拿自己作为测试对象的，他得出了一些关于记忆的 结论。他选用了一些根本没有意义的音节，也就是那些不能拼出单词来的众多字母的组合，比如asww，cfhhj，ijikmb，rfyjbc等等。他经过 对自己的测试，得到了一些数据。<br />
<br />
<br />
</font>
<div align="center"><font class="f14" id="zoom"><img src="http://www.iselong.com/u/img/2003/2.gif" border="0" alt="" /></font></div>
<font class="f14" id="zoom"><br />
<br />
然后，艾宾浩斯又根据了这些点描绘出了一条曲线，这就是非常有名的揭示遗忘规律的曲线：艾宾浩斯遗忘曲线，图中竖轴表示学习中记住的知识数量，横轴表示时间(天数)，曲线表示记忆量变化的规律。<br />
<br />
<br />
</font>
<div align="center"><font class="f14" id="zoom"><img src="http://www.iselong.com/u/img/2003/3.gif" border="0" alt="" /></font></div>
<font class="f14" id="zoom"><br />
<br />
这条曲线告诉人们在学习中的遗忘是有规律的，遗忘的进程不是均衡的，不是固定的一天丢掉几个，转天又丢几个的，而是在记忆的最初阶段遗忘的速度很快， 后来就逐渐减慢了，到了相当长的时候后，几乎就不再遗忘了，这就是遗忘的发展规律，即&quot;先快后慢&quot;的原则。观察这条遗忘曲线，你会发现,学得的知识在一天 后，如不抓紧复习,就只剩下原来的25%)。随着时间的推移,遗忘的速度减慢，遗忘的数量也就减少。有人做过一个实验，两组学生学习一段课文，甲组在学习 后不久进行一次复习，乙组不予复习，一天后甲组保持98%，乙组保持56%；一周后甲组保持83%，乙组保持33%。乙组的遗忘平均值比甲组高。<br />
<br />
二、不同性质材料有不同的遗忘曲线<br />
<br />
而且，艾宾浩斯还在关于记忆的实验中发现，记住12个无意义音节，平均需要重复16.5次；为了记住36个无意义章节，需重复54次；而记忆六首诗中 的480个音节，平均只需要重复8次！这个实验告诉我们，凡是理解了的知识，就能记得迅速、全面而牢固。不然，愣是死记硬背，那也是费力不讨好的。因此， 比较容易记忆的是那些有意义的材料，而那些无意义的材料在记忆的时候比较费力气，在以后回忆起来的时候也很不轻松。因此，艾宾浩斯遗忘曲线是关于遗忘的一 种曲线，而且是对无意义的音节而言，对于与其他材料的对比，艾宾浩斯又得出了不同性质材料的不同遗忘曲线，不过他们大体上都是一致的。<br />
<br />
<br />
</font>
<div align="center"><font class="f14" id="zoom"><img src="http://www.iselong.com/u/img/2003/4.gif" border="0" alt="" /></font></div>
<font class="f14" id="zoom"><br />
<br />
<br />
因此，艾宾浩斯的实验向我们充分证实了一个道理，学习要勤于复习，而且记忆的理解效果越好，遗忘的也越慢。<br />
<br />
三、不同的人有不同的艾宾浩斯记忆曲线--个性化的艾宾浩斯<br />
<br />
上述的艾宾浩斯记忆曲线是艾宾浩斯在实验室中经过了大量测试后，产生了不同的记忆数据，从而生成的一种曲线，是一个具有共性的群体规律。此记忆曲线并不考虑接受试验个人的个性特点，而是寻求一种处于平衡点的记忆规律。<br />
<br />
但是记忆规律可以具体到我们每个人，因为我们的生理特点、生活经历不同，可能导致我们有不同的记忆习惯、记忆方式、记忆特点。规律对于自然人改造世界 的行为，只能起一个催化的作用，如果与每个人的记忆特点相吻合，那么就如顺水扬帆，一日千里；如果与个人记忆特点相悖，记忆效果则会大打折扣。因此，我们 要根据每个人的不同特点，寻找到属于自己的艾宾浩斯记忆曲线。<br />
<br />
<br />
(作者系南开大学心理学教授 博士生导师)<br />
</font>
<div class="pageTitle">Hermann Ebbinghaus<br />
<br />
<img src="http://www.indiana.edu/%7Eintell/profileImages/newImages/Ebbinghaus.jpg" align="right" hspace="30" alt="Hermann Ebbinghaus" />http://www.indiana.edu/%7Eintell/ebbinghaus.shtml<br />
</div>
<div align="left"><br />
</div>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/71991#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, 17 Apr 2007 22:42:39 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/71991</link>
        <guid>http://dodoflying.javaeye.com/blog/71991</guid>
      </item>
      <item>
        <title>GENE</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/67704" style="color:red;">http://dodoflying.javaeye.com/blog/67704</a>&nbsp;
          发表时间: 2007年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基因（Gene），一词是希腊语，意为&ldquo;生&rdquo;。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 研究基因，真的可以预知我们的未来吗？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从受精的那一刻起，人类的身上就承载了历史的&ldquo;密码&rdquo;，这些密码，就是由基因组成的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这些基因不仅仅决定了我们的形体、体制，也决定了我们的性格、暴力倾向，甚至，这些基因就表明了</p>
<p>我们的未来。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 研究这些基因，可以研究人类的发展史，人类的迁徙史，这些信息就是保存在我们体内的密码数据，就仿佛</p>
<p>计算机中使用了某种方法加密过的数据，需要通过相应的算法进行解密一样；研究基因，会让我们通晓我们的过去，</p>
<p>隐藏在我们身上的故事。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基因解码，洞悉过去，探究未来，研究进行时.......</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/67704#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, 03 Apr 2007 23:00:49 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/67704</link>
        <guid>http://dodoflying.javaeye.com/blog/67704</guid>
      </item>
      <item>
        <title>JasperReports 笔记（一）</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/65021" style="color:red;">http://dodoflying.javaeye.com/blog/65021</a>&nbsp;
          发表时间: 2007年03月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong><font size="5" color="#ff0000">Requirements</font></strong></p>
<p><strong>JRE </strong></p>
<p>JRE 1.3 or higher </p>
<p>&nbsp;</p>
<p><strong>Commons </strong></p>
<p>Jakarta Commons BeanUtils Component (version 1.7 or later) <br />
<a href="http://jakarta.apache.org/commons/beanutils/" class="external" target="wikiext">http://jakarta.apache.org/commons/beanutils/</a> </p>
<p>Jakarta Commons Collections Component (version 2.1 or later) <br />
<a href="http://jakarta.apache.org/commons/collections/" class="external" target="wikiext">http://jakarta.apache.org/commons/collections/</a> <br />
</p>
<p>Jakarta Commons Javaflow (Sandbox version) <br />
<a href="http://jakarta.apache.org/commons/sandbox/javaflow/" class="external" target="wikiext">http://jakarta.apache.org/commons/sandbox/javaflow/</a> </p>
<p>Jakarta Commons Logging Component (version 1.0 or later) <br />
<a href="http://jakarta.apache.org/commons/logging/" class="external" target="wikiext">http://jakarta.apache.org/commons/logging/</a> </p>
<p>&nbsp;</p>
<p><strong>XML </strong></p>
<p>JAXP 1.1 XML Parser </p>
<p>Jakarta Commons Digester Component (version 1.7 or later) <br />
<a href="http://jakarta.apache.org/commons/digester/" class="external" target="wikiext">http://jakarta.apache.org/commons/digester/</a> </p>
<p><strong>JDBC</strong> </p>
<p>JDBC 2.0 Driver </p>
<p>&nbsp;</p>
<p><strong>PDF </strong></p>
<p>iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares (version 1.01 or later) <br />
<a href="http://www.lowagie.com/iText/" class="external" target="wikiext">http://www.lowagie.com/iText/</a> </p>
<p>&nbsp;</p>
<p><strong>XLS </strong></p>
<p>Jakarta POI (version 2.0 or later) <br />
<a href="http://jakarta.apache.org/poi/" class="external" target="wikiext">http://jakarta.apache.org/poi/</a> </p>
<p>JExcelApi (version 2.5.7 or later) <br />
<a href="http://jexcelapi.sourceforge.net/" class="external" target="wikiext">http://jexcelapi.sourceforge.net/</a> </p>
<p>&nbsp;</p>
<p><strong>Charts </strong></p>
<p>JFreeChart (1.0.0 or later) <br />
<a href="http://www.jfree.org/jfreechart/" class="external" target="wikiext">http://www.jfree.org/jfreechart/</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/65021#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, 23 Mar 2007 17:48:22 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/65021</link>
        <guid>http://dodoflying.javaeye.com/blog/65021</guid>
      </item>
      <item>
        <title>一点感想</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/58075" style="color:red;">http://dodoflying.javaeye.com/blog/58075</a>&nbsp;
          发表时间: 2007年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; javabean(database)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; entity bean</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/58075#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, 07 Mar 2007 22:40:24 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/58075</link>
        <guid>http://dodoflying.javaeye.com/blog/58075</guid>
      </item>
      <item>
        <title>MYSQL创建外键失败的问题 </title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/57729" style="color:red;">http://dodoflying.javaeye.com/blog/57729</a>&nbsp;
          发表时间: 2007年03月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>mysql error number 1005 can't create table errno: 150<br />
<br />
这是建外键的列与要关联的列类型不匹配造成的。<br />
一个表用powerdesigner导入的整型长度为11<br />
另一个直接再mysql中建立的表默认整型长度是10<br />
<br />
造成不能建立外键<br />
</p>
<p>或者</p>
<p>外键的名称重复。</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/57729#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 14:12:25 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/57729</link>
        <guid>http://dodoflying.javaeye.com/blog/57729</guid>
      </item>
      <item>
        <title>搭建Eclipse+MyEclipse开发环境</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/57392" style="color:red;">http://dodoflying.javaeye.com/blog/57392</a>&nbsp;
          发表时间: 2007年03月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol>
    <li>安装jdk</li>
    <li>安装Tomcat</li>
    <li>安装Eclipse</li>
    <li>安装myEclipse</li>
    <li>crack myeclipse</li>
    <li>指定Eclipse+MyEclipse的JRE 和Tomcat 服务器</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设定Eclipse+MyEclipse的JRE<br />
    <br />
    　　一般情况下，Eclipse可以自动找到JRE，我们不用进行过多的设置。</li>
    <li>设定Eclipse+MyEclipse的Tomcat 服务器<br />
    <br />
    　　只需设置图中所标注的两处即可，图中其余部分是自动生成的。<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/q3n61g6q0p77.jpg" alt=" " /><br />
    <br />
    　　到这里，我们的Eclipse+MyEclipse开发环境就搭建完毕了！<br />
    </li>
    <li>新建一个项目来测试一下Eclipse+MyEclipse开发环境是否搭建成功</li>
</ol>
<ul>
    <li>在Eclipse中依次点击&ldquo; File ----&gt; New ----&gt; Project&rdquo; , 在弹出的&ldquo;New Project&rdquo;对话框中依次点击&ldquo;Web Project ----&gt;MyEclipse----&gt;J2EE Projects----&gt;Web Project&rdquo;， 再点&ldquo;Next&rdquo;，在&ldquo;Project Name&rdquo;中输入项目的名字&ldquo;test&rdquo;,最后点&ldquo;Finish&rdquo;。</li>
    <li>在Eclipse左边Package Explorer列表中点击&ldquo;test&rdquo;，将项目test展开。右键点击 WebRoot ----&gt; New ----&gt; JSP , 新建一个名为hello.jsp的 JSP 页面 。 代码如下图（图中标注部分需要我们手动添加，其余部分是系统自动生成的）：<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/25z2ibx7xvua.png" alt=" " /><br />
    </li>
    <li>再用同样的方法， 新建一个叫 hello_result.jsp 的JSP文件， 代码如下图：<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/990kesr30l4x.png" alt=" " /><br />
    </li>
    <li>deploy（部署）项目。 <br />
    <br />
    　　点击 deploy 按钮（用红线画了的按钮就是 deploy 按钮）， 在弹出的窗口中点击Add， 部署test项目（如图所示）。<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/6dhz9hc84r01.jpg" alt=" " /><br />
    </li>
    <li>启动Tomcat服务器。<br />
    <br />
    　　如下图所示（用红线画了的按钮就是 启动Tomcat 的按钮）：<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/426en882l235.jpg" alt=" " /><br />
    <br />
    　　Tomcat 启动输出信息如下图：<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/6o93m9f74993.jpg" alt="??????? ? " /><br />
    </li>
    <li>项目test的运行结果：<br />
    <br />
    <img src="http://dev.yesky.com/imagelist/06/26/2se5y0gnr6su.jpg" alt=" " /></li>
</ul>
<p>我们可以去Eclipse的Workspace目录下看看test项目的代码，也可以去Tomcat的webapps目录下，看看部署之后的 test项目的结构。</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/57392#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, 05 Mar 2007 13:42:28 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/57392</link>
        <guid>http://dodoflying.javaeye.com/blog/57392</guid>
      </item>
      <item>
        <title>CVS commit过程中出现 commit error，sticky tag is not a branch</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56982" style="color:red;">http://dodoflying.javaeye.com/blog/56982</a>&nbsp;
          发表时间: 2007年03月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一直没有办法提交，报错&ldquo;<font face="Arial">sticky tag is not a branch</font>&rdquo;，我猜想已经表明一个版本的结束了，是否是因为tag as a version了？</p>
<p>所以我重新建立了一个branch，就ok了</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56982#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, 02 Mar 2007 13:39:55 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56982</link>
        <guid>http://dodoflying.javaeye.com/blog/56982</guid>
      </item>
      <item>
        <title>String 与 dom4j</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56706" style="color:red;">http://dodoflying.javaeye.com/blog/56706</a>&nbsp;
          发表时间: 2007年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>If you have some XML as a String you can parse it back into a Document again using the helper method DocumentHelper.parseText() </p>
<pre><div class="code_title">java 代码</div><div class="dp-highlighter"><div class="bar"></div><ol class="dp-j"><li class="alt"><span><span>String&nbsp;text&nbsp;=&nbsp;</span><span class="string">&quot;&nbsp;James&nbsp;&quot;</span><span>; &nbsp;&nbsp;</span></span></li><li class=""><span>Document&nbsp;document&nbsp;=&nbsp;DocumentHelper.parseText(text);&nbsp;&nbsp;</span></li></ol></div></pre>
<pre><font face="Arial">而通常情况，如果是文件或者url，则使用如下形式</font></pre>
<pre><div class="code_title">java 代码</div><div class="dp-highlighter"><div class="bar"></div><ol class="dp-j"><li class="alt"><span><span>SAXReader&nbsp;xmlReader&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;SAXReader();&nbsp; &nbsp;&nbsp;</span></span></li><li class=""><span></span><span class="keyword">this</span><span>.doc&nbsp;=&nbsp;xmlReader.read(url);&nbsp;&nbsp;</span></li></ol></div>
</pre>
<pre>在Figo项目中，首先将表示包体的字节流放入bytebuffer中，将其转换为String类型，然后使用dom4j进行解析：）</pre>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56706#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, 01 Mar 2007 11:58:59 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56706</link>
        <guid>http://dodoflying.javaeye.com/blog/56706</guid>
      </item>
      <item>
        <title>dom4j解析xml文件遇到的java.lang.NoClassDefFoundError</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56703" style="color:red;">http://dodoflying.javaeye.com/blog/56703</a>&nbsp;
          发表时间: 2007年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">错误出在List list = document.selectNodes(&quot;//root/author&quot;);</font></p>
<p>缺少包</p>
<p>解决办法：</p>
<p><font face="Arial">dom4j的解压包lib目录下把jaxen.jar放到类路径里去</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56703#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, 01 Mar 2007 11:42:03 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56703</link>
        <guid>http://dodoflying.javaeye.com/blog/56703</guid>
      </item>
      <item>
        <title>[转贴]Java中四种XML解析技术之不完全测试</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56667" style="color:red;">http://dodoflying.javaeye.com/blog/56667</a>&nbsp;
          发表时间: 2007年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          本文来自于:<br />
<a href="http://www.blogjava.net/rosen/archive/2005/08/12/9950.html" target="_blank">http://www.blogjava.net/rosen/archive/2005/08/12/9950.html</a><br />
<br />
在平时工作中，难免会遇到把xml作为数据存储格式。面对目前种类繁多的解决方案，哪个最适合我们呢？在这篇文章中，我对这四种主流方案做一个不完全评测，仅仅针对遍历xml这块来测试，因为遍历xml是工作中使用最多的(至少我认为)。 <br />
<br />
预备 <br />
<br />
测试环境： <br />
<br />
amd毒龙1.4g oc 1.5g、256m ddr333、windows2000 server sp4、sun jdk 1.4.1+eclipse 2.1+resin 2.1.8，在debug模式下测试。 <br />
<br />
xml文件格式如下： <br />
<br />
＜?xml version=&quot;1.0&quot; encoding=&quot;gb2312&quot;?＞＜result＞＜value＞ <br />
<br />
＜no＞a1234＜/no＞ <br />
<br />
＜addr＞四川省xx县xx镇xx路x段xx号＜/addr＞＜/value＞＜value＞ <br />
<br />
＜no＞b1234＜/no＞ <br />
<br />
＜addr＞四川省xx市xx乡xx村xx组＜/addr＞＜/value＞＜/result＞ <br />
<br />
测试方法： <br />
<br />
采用jsp端调用bean(至于为什么采用jsp来调用，请参考：http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx)，让每一种方案分别解析10k、100k、1000k、10000k的xml文件，计算其消耗时间(单位:毫秒)。 <br />
<br />
jsp文件： <br />
<br />
＜%@ page contenttype=&quot;text/html; charset=gb2312&quot; %＞＜%@ page import=&quot;com.test.*&quot;%＞ <br />
<br />
＜html＞＜body＞＜%string args[]={&quot;&quot;};myxmlreader.main(args);%＞＜/body＞＜/html＞ <br />
<br />
测试 <br />
<br />
首先出场的是dom(jaxp crimson解析器) <br />
<br />
dom是用与平台和语言无关的方式表示xml文档的官方w3c标准。dom是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而dom被认为是基于树或基于对象的。dom以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像sax那样是一次性的处理。dom使用起来也要简单得多。 <br />
<br />
另一方面，对于特别大的文档，解析和加载整个文档可能很慢且很耗资源，因此使用其他手段来处理这样的数据会更好。这些基于事件的模型，比如sax。 <br />
<br />
bean文件： <br />
<br />
package com.test; <br />
<br />
import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*; <br />
<br />
public class myxmlreader{ <br />
<br />
public static void main(string arge[]){ <br />
<br />
long lasting =system.currenttimemillis(); <br />
<br />
try{ <br />
<br />
file f=new file(&quot;data_10k.xml&quot;); <br />
<br />
documentbuilderfactory factory=documentbuilderfactory.newinstance(); <br />
<br />
documentbuilder builder=factory.newdocumentbuilder(); <br />
<br />
document doc = builder.parse(f); <br />
<br />
nodelist nl = doc.getelementsbytagname(&quot;value&quot;); <br />
<br />
for (int i=0;i＜nl.getlength();i++){ <br />
<br />
system.out.print(&quot;车牌号码:&quot; + doc.getelementsbytagname(&quot;no&quot;).item(i).getfirstchild().getnodevalue()); <br />
<br />
system.out.println(&quot;车主地址:&quot; + doc.getelementsbytagname(&quot;addr&quot;).item(i).getfirstchild().getnodevalue()); <br />
<br />
} <br />
<br />
}catch(exception e){ <br />
<br />
e.printstacktrace(); <br />
<br />
} <br />
<br />
system.out.println(&quot;运行时间：&quot;+(system.currenttimemillis() - lasting)+&quot;毫秒&quot;);}} <br />
<br />
10k消耗时间：265 203 219 172 <br />
<br />
100k消耗时间：9172 9016 8891 9000 <br />
<br />
1000k消耗时间：691719 675407 708375 739656 <br />
<br />
10000k消耗时间：outofmemoryerror <br />
<br />
接着是sax <br />
<br />
这种处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，sax还比它的替代者dom快许多。 <br />
选择dom还是选择sax？ <br />
<br />
对于需要自己编写代码来处理xml文档的开发人员来说， <br />
<br />
选择dom还是sax解析模型是一个非常重要的设计决策。 <br />
<br />
dom采用建立树形结构的方式访问xml文档，而sax采用的事件模型。 <br />
<br />
dom解析器把xml文档转化为一个包含其内容的树，并可以对树进行遍历。用dom解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation apis访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用dom解析器的时候需要处理整个xml文档，所以对性能和内存的要求比较高，尤其是遇到很大的xml文件的时候。由于它的遍历能力，dom解析器常用于xml文档需要频繁的改变的服务中。 <br />
<br />
sax解析器采用了基于事件的模型，它在解析xml文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。sax对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时，sax这种扩展能力得到了更好的体现。但用sax解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。 <br />
<br />
bean文件： <br />
<br />
package com.test;import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*; <br />
<br />
public class myxmlreader extends defaulthandler { <br />
<br />
java.util.stack tags = new java.util.stack(); <br />
<br />
public myxmlreader() { <br />
<br />
super();} <br />
<br />
public static void main(string args[]) { <br />
<br />
long lasting = system.currenttimemillis(); <br />
<br />
try { <br />
<br />
saxparserfactory sf = saxparserfactory.newinstance(); <br />
<br />
saxparser sp = sf.newsaxparser(); <br />
<br />
myxmlreader reader = new myxmlreader(); <br />
<br />
sp.parse(new inputsource(&quot;data_10k.xml&quot;), reader); <br />
<br />
} catch (exception e) { <br />
<br />
e.printstacktrace(); <br />
<br />
} <br />
<br />
system.out.println(&quot;运行时间：&quot; + (system.currenttimemillis() - lasting) + &quot;毫秒&quot;);} <br />
<br />
public void characters(char ch[], int start, int length) throws saxexception { <br />
<br />
string tag = (string) tags.peek(); <br />
<br />
if (tag.equals(&quot;no&quot;)) { <br />
<br />
system.out.print(&quot;车牌号码：&quot; + new string(ch, start, length));}if (tag.equals(&quot;addr&quot;)) { <br />
<br />
system.out.println(&quot;地址:&quot; + new string(ch, start, length));}} <br />
<br />
public void startelement(string uri,string localname,string qname,attributes attrs) { <br />
<br />
tags.push(qname);}} <br />
<br />
10k消耗时间：110 47 109 78 <br />
<br />
100k消耗时间：344 406 375 422 <br />
<br />
1000k消耗时间：3234 3281 3688 3312 <br />
<br />
10000k消耗时间：32578 34313 31797 31890 30328 <br />
<br />
然后是jdom http://www.jdom.org/ <br />
<br />
jdom的目的是成为java特定文档模型，它简化与xml的交互并且比使用dom实现更快。由于是第一个java特定模型，jdom一直得到大力推广和促进。正在考虑通过&ldquo;java规范请求jsr-102&rdquo;将它最终用作&ldquo;java标准扩展&rdquo;。从2000年初就已经开始了jdom开发。 <br />
<br />
jdom与dom主要有两方面不同。首先，jdom仅使用具体类而不使用接口。这在某些方面简化了api，但是也限制了灵活性。第二，api大量使用了collections类，简化了那些已经熟悉这些类的java开发者的使用。 <br />
<br />
jdom文档声明其目的是&ldquo;使用20%(或更少)的精力解决80%(或更多)java/xml问题&rdquo;(根据学习曲线假定为20%)。jdom对于大多数java/xml应用程序来说当然是有用的，并且大多数开发者发现api比dom容易理解得多。jdom还包括对程序行为的相当广泛检查以防止用户做任何在xml中无意义的事。然而，它仍需要您充分理解xml以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习dom或jdom接口都更有意义的工作。 <br />
<br />
jdom自身不包含解析器。它通常使用sax2解析器来解析和验证输入xml文档(尽管它还可以将以前构造的dom表示作为输入)。它包含一些转换器以将jdom表示输出成sax2事件流、dom模型或xml文本文档。jdom是在apache许可证变体下发布的开放源码。 <br />
<br />
bean文件： <br />
<br />
package com.test; <br />
<br />
import java.io.*;import java.util.*;import org.jdom.*;import org.jdom.input.*; <br />
<br />
public class myxmlreader { <br />
<br />
public static void main(string arge[]) { <br />
<br />
long lasting = system.currenttimemillis(); <br />
<br />
try { <br />
<br />
saxbuilder builder = new saxbuilder(); <br />
<br />
document doc = builder.build(new file(&quot;data_10k.xml&quot;)); <br />
<br />
element foo = doc.getrootelement(); <br />
<br />
list allchildren = foo.getchildren(); <br />
<br />
for(int i=0;i＜allchildren.size();i++) { <br />
<br />
system.out.print(&quot;车牌号码:&quot; + ((element)allchildren.get(i)).getchild(&quot;no&quot;).gettext()); <br />
<br />
system.out.println(&quot;车主地址:&quot; + ((element)allchildren.get(i)).getchild(&quot;addr&quot;).gettext()); <br />
<br />
} <br />
<br />
} catch (exception e) { <br />
<br />
e.printstacktrace(); <br />
<br />
} <br />
<br />
system.out.println(&quot;运行时间：&quot; + (system.currenttimemillis() - lasting) + &quot;毫秒&quot;);}} <br />
<br />
10k消耗时间：125 62 187 94 <br />
<br />
100k消耗时间：704 625 640 766 <br />
<br />
1000k消耗时间：27984 30750 27859 30656 <br />
<br />
10000k消耗时间：outofmemoryerror <br />
<br />
最后是dom4j http://dom4j.sourceforge.net/ <br />
<br />
虽然dom4j代表了完全独立的开发结果，但最初，它是jdom的一种智能分支。它合并了许多超出基本xml文档表示的功能，包括集成的xpath支持、xml schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过dom4j api和标准dom接口具有并行访问功能。从2000下半年开始，它就一直处于开发之中。 <br />
<br />
为支持所有这些功能，dom4j使用接口和抽象基本类方法。dom4j大量使用了api中的collections类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然dom4j付出了更复杂的api的代价，但是它提供了比jdom大得多的灵活性。 <br />
<br />
在添加灵活性、xpath集成和对大文档处理的目标时，dom4j的目标与jdom是一样的：针对java开发者的易用性和直观操作。它还致力于成为比jdom更完整的解决方案，实现在本质上处理所有java/xml问题的目标。在完成该目标时，它比jdom更少强调防止不正确的应用程序行为。 <br />
<br />
dom4j是一个非常非常优秀的java xml api，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的java软件都在使用dom4j来读写xml，特别值得一提的是连sun的jaxm也在用dom4j。 <br />
<br />
bean文件： <br />
<br />
package com.test; <br />
<br />
import java.io.*;import java.util.*;import org.dom4j.*;import org.dom4j.io.*; <br />
<br />
public class myxmlreader { <br />
<br />
public static void main(string arge[]) { <br />
<br />
long lasting = system.currenttimemillis(); <br />
<br />
try { <br />
<br />
file f = new file(&quot;data_10k.xml&quot;); <br />
<br />
saxreader reader = new saxreader(); <br />
<br />
document doc = reader.read(f); <br />
<br />
element root = doc.getrootelement(); <br />
<br />
element foo; <br />
<br />
for (iterator i = root.elementiterator(&quot;value&quot;); i.hasnext();) { <br />
<br />
foo = (element) i.next(); <br />
<br />
system.out.print(&quot;车牌号码:&quot; + foo.elementtext(&quot;no&quot;)); <br />
<br />
system.out.println(&quot;车主地址:&quot; + foo.elementtext(&quot;addr&quot;)); <br />
<br />
} <br />
<br />
} catch (exception e) { <br />
<br />
e.printstacktrace(); <br />
<br />
} <br />
<br />
system.out.println(&quot;运行时间：&quot; + (system.currenttimemillis() - lasting) + &quot;毫秒&quot;);}} <br />
<br />
10k消耗时间：109 78 109 31 <br />
<br />
100k消耗时间：297 359 172 312 <br />
<br />
1000k消耗时间：2281 2359 2344 2469 <br />
<br />
10000k消耗时间：20938 19922 20031 21078 <br />
<br />
jdom和dom在性能测试时表现不佳，在测试10m文档时内存溢出。在小文档情况下还值得考虑使用dom和jdom。虽然jdom的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，dom仍是一个非常好的选择。dom实现广泛应用于多种编程语言。它还是许多其它与xml相关的标准的基础，因为它正式获得w3c推荐(与基于非标准的java模型相对)，所以在某些类型的项目中可能也需要它(如在javascript中使用dom)。 <br />
<br />
sax表现较好，这要依赖于它特定的解析方式。一个sax检测即将到来的xml流，但并没有载入到内存(当然当xml流被读入时，会有部分文档暂时隐藏在内存中)。 <br />
<br />
无疑，dom4j是这场测试的获胜者，目前许多开源项目中大量采用dom4j，例如大名鼎鼎的hibernate也用dom4j来读取xml配置文件。如果不考虑可移植性，那就采用dom4j吧！(
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56667#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 08:05:31 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56667</link>
        <guid>http://dodoflying.javaeye.com/blog/56667</guid>
      </item>
      <item>
        <title>解决CVS在commit过程中出错问题</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56524" style="color:red;">http://dodoflying.javaeye.com/blog/56524</a>&nbsp;
          发表时间: 2007年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>遇到了几次commit过程中出错，原因是我的PC上的版本不是最新版本，就进行了commit操作，这样就会有问题。</p>
<p>在Eclipse的help中有一条建议如下：</p>
<p>It is considered a more ideal workflow to always update before committing in order to ensure that you have the latest state of the repository before committing more changes. </p>
<p>今后就按照这样的流程执行，每次先update再进行改动，最后commit</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56524#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, 28 Feb 2007 16:04:37 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56524</link>
        <guid>http://dodoflying.javaeye.com/blog/56524</guid>
      </item>
      <item>
        <title>九款全球最易网络协作工具 GOOGLE独占六席</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/56504" style="color:red;">http://dodoflying.javaeye.com/blog/56504</a>&nbsp;
          发表时间: 2007年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h5>绝大多数的团队处于使用协作工具的初级阶段，他们所有的协作工具通过电邮传送收发文档。基于网络的工具帮助团体组织实现文档和电子表格的协作，建立具有参考资料的数据库和项目文档，共享记事簿等。Socialtext最多为五名用户免费提供，并为开源项目免费开放，20个用户月收费为95美元。</h5>
<p>KING 编译 </p>
<p>　　计世网2月25日消息　绝大多数的团队处于使用协作工具的初级阶段，他们所有的协作工具通过电邮传送收发文档。但是，互联网为团队组织提供了多样的选择，能提供更强大的技术服务。</p>
<p>　　基于网络的工具帮助团体组织实现文档和电子表格的协作，建立具有参考资料的数据库和项目文档，共享记事簿等。GOOGLE和Zoho等公司开发的协作软件，使企业团队少花钱或是不花钱。这些软件易于操作，无需专业的IT管理者去操作。以下就是最易于操作的九款网络协作软件：</p>
<p>　　一、Google Apps For Your Domain。这种免费产品允许企业实现数个GOOGLE协作服务的整合，比如Gmail、Google Calendar和Google Talk等。可以说，用户能在自己的地盘建立一套GOOGLE服务平台。</p>
<p>　　二、GOOGLE日历。这是一款免费产品，具有共享日历功能。比如，你可以在不关闭孩子时间表，而直接查看你的企业日程安排。</p>
<p>　　三、GOOGLE字处理和电子表格。这款软件允许用户创立兼容微软字处理和电子表格的文件。绝大多数情况下，人们只关注其如何能取代微软办公软件，而忽略了其协作功能：用户可以通过电邮向其它用户发出邀请，共享文档，同时进行编辑以及上传到字处理程序中等。</p>
<p>　　四、Google Apps Premier Edition。该产品整合了Google Apps for Your Domain和GOOGLE字处理及电子表格功能，还具有电邮、日历、聊天等功能，外加10G免费邮箱，每年每位用户的使用价格为50美元。同时，GOOGLE还承诺客户服务。</p>
<p>　　五、GOOGLE笔记本。这款软件允许用户对包括文本、图像和链接在内的网页内容进行编辑，其参考和研究资料可以实现共享。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="4" color="#ff0000">除了Google Apps Premier Edition，我都在用哦，大家呢？</font></p>
<p>　　此外，其它的公司也提供类似GOOGLE协作工具的服务。</p>
<p>　　六、Zoho。Zoho提供免费字处理和电子表格服务，Zoho笔记本软件因其在文本、制图、图像、网页、视频、RSS以及其它媒体方面的出色协作功能而赢得了业界的高度评价。目前，其正在内部进行测试。Zoho　Projects是一款在线管理工具，整合了任务管理、日历、汇报、时间跟踪、论坛以及文件共享等功能。它对开源项目免费开放，每个项目的月收费为5美元。</p>
<p>　　七、BlueTie。BlueTie提供在线协作套件产品，其中包括电邮、日程安排、记事、联系人管理、文件归档以及文件共享等。它最多为20位用户免费提供，每位用户月付费4.99美元。</p>
<p>　　八、Basecamp。37signals开发了Basecamp，这种产品包括文件共享、信息栏、重要日程管理、时间跟踪等功能。Basecamp为单项工程免费提供，月收费为12美元，最多为三项项目服务，有200M的文件共享空间。根据项目的数量和文件共享的空间，价格不断上升。　</p>
<p>　　九、Wikis。Wikis是网络协作工具的最早产品。它允许用户对网页内容进行编辑，控制和管理维客内容，使无意造成的损失最小化。Zoho为用户提供免费服务创建维客。GOOGLE所属的JotSpot则是维客的先驱，现在临时关闭新帐户注册。Socialtext提供维客软件，用户可以把维客复制到桌面，也可以离线进行工作，然后马内容整合到在线版本占。Socialtext基于TiddlyWiki，后者是一款单用户维客产品，在单一网页中它既存储数据，也存储JavaScript代码。Socialtext最多为五名用户免费提供，并为开源项目免费开放，20个用户月收费为95美元。</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/56504#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Feb 2007 14:49:39 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/56504</link>
        <guid>http://dodoflying.javaeye.com/blog/56504</guid>
      </item>
      <item>
        <title>NIO笔记之四</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/52330" style="color:red;">http://dodoflying.javaeye.com/blog/52330</a>&nbsp;
          发表时间: 2007年02月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在经过这一段时间的NIO程序调试之后，终于实现了Dong Lea的ppt上的Reactor模式，单线程实现</p>
<p>如图所示。</p>
<p>Reactor是一个选择器，每一个客户端连接事件对应的响应流程如下：</p>
<ol>
    <li>首先Selector.select()得到新的accepterbla事件；</li>
    <li>调用Acceptor对象;</li>
    <li>调用Handler对象；</li>
    <li>在此之后，每次此连接上有新的read或write事件，在Reactor事件中调用的都是相应的Handler对象。</li>
</ol>
<p>也就是说，每一个连接对应着一个Acceptor对象和一个Handler对象。</p>
<p>整个程序是单线程实现的。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/52330#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 Feb 2007 17:14:49 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/52330</link>
        <guid>http://dodoflying.javaeye.com/blog/52330</guid>
      </item>
      <item>
        <title>NIO 笔记之三</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/51812" style="color:red;">http://dodoflying.javaeye.com/blog/51812</a>&nbsp;
          发表时间: 2007年02月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近这两个礼拜一直在看NIO，也做了大量的测试，怎么说呢？</p>
<p>还是有许多问题，使用Reactor模式写出来的那个程序跑起来总是和我想象的不一样。</p>
<p>我想，对于Selector、SocketChannel、SelectionKey等概念也了解了，这个东西怎么还搞不定呢？</p>
<p>准备看看一个NIO的框架，好好学习一下。</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/51812#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, 02 Feb 2007 13:51:10 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/51812</link>
        <guid>http://dodoflying.javaeye.com/blog/51812</guid>
      </item>
      <item>
        <title>NIO笔记二</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/49449" style="color:red;">http://dodoflying.javaeye.com/blog/49449</a>&nbsp;
          发表时间: 2007年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ol>
    <li>CPU利用率100%，什么原因？ </li>
    <li>Buffer的使用 </li>
</ol>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>&nbsp;</span><span class="comment">/** </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;*&nbsp;@author&nbsp;winter </span>&nbsp;</span></li>
    <li class="alt"><span><span class="comment">&nbsp;*&nbsp;&nbsp;接收线程 </span>&nbsp;</span></li>
    <li class=""><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span></span><span class="keyword">class</span><span>&nbsp;ReceiveThread&nbsp;</span><span class="keyword">extends</span><span>&nbsp;Thread&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;SocketChannel&nbsp;client&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;ByteBuffer&nbsp;buffer&nbsp;=&nbsp;ByteBuffer.allocate(</span><span class="number">50</span><span>); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">boolean</span><span>&nbsp;val&nbsp;=&nbsp;</span><span class="keyword">true</span><span>; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ReceiveThread(SocketChannel&nbsp;client)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.client&nbsp;=&nbsp;client; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;run()&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(val)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</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;</span><span class="keyword">while</span><span>&nbsp;(client.read(buffer)&nbsp;&gt;&nbsp;</span><span class="number">0</span><span>)&nbsp;{&nbsp;<font color="#ff0000">//此处程序进入无限循环直道满足条件</font></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer.flip(); &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;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;decode(buffer); &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;&nbsp;&nbsp;System.out.println(</span><span class="string">&quot;&gt;&quot;</span><span>&nbsp;+&nbsp;result); &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;&nbsp;&nbsp;buffer.flip(); &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></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;ex)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/49449#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, 23 Jan 2007 13:24:13 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/49449</link>
        <guid>http://dodoflying.javaeye.com/blog/49449</guid>
      </item>
      <item>
        <title>NIO 笔记一</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/49024" style="color:red;">http://dodoflying.javaeye.com/blog/49024</a>&nbsp;
          发表时间: 2007年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>周末这两天，集中精力理解NIO</p>
<p>感觉有许多地方需要观念上的改变的</p>
<p>例如连接，在java.io中，连接的概念就用Socket类来表述的，一个Socket连接就是一个Socket对象，很直观；</p>
<p>而在java.nio中，有三个类需要理解。</p>
<ol>
    <li>Selector：是一个选择器，他只关注网络事件：接收、读、写； </li>
    <li>SelectionKey：描述了Selector和Channel之间的一种注册关系； </li>
    <li>Channel：通道，分为ServerSocketChannel和SocketChannel，可以想象成运输通道，每一个Socket连接的运输通道，向Buffer中读、写数据都是通过此通道。 </li>
</ol>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/49024#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, 22 Jan 2007 08:47:33 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/49024</link>
        <guid>http://dodoflying.javaeye.com/blog/49024</guid>
      </item>
      <item>
        <title>[转]CVS配置</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/48314" style="color:red;">http://dodoflying.javaeye.com/blog/48314</a>&nbsp;
          发表时间: 2007年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial"><a href="http://bbscs.laoer.com/read.bbscs?bid=10&amp;id=3862&amp;page=7">http://bbscs.laoer.com/read.bbscs?bid=10&amp;id=3862&amp;page=7</a></font></p>
<p><span class="bt">&nbsp; </span></p>
<p>曾经写过一篇关于CVS配置的文章，后来时间长了，不用了，自己都忘记了，再配置总是出错，后来我仔细研究了一下，终于配制好了，现将配置方法总结一下。</p>
<p>以Linux为例：</p>
<p>一、CVS服务器的安装</p>
<p>首先确认系统中是否安装CVS服务：<br />
[root@localhost /]# rpm -qa|grep cvs<br />
cvs-1.11.2-cvshome.7x.1<br />
如果命令输出类似于上面的输出则说明系统已经安装有cvs，否则就需要从安装光盘中安装cvs的rpm包，或者到<a href="http://www.cvshome.org/">http://www.cvshome.org</a>下载。</p>
<p>1、建立 CVSROOT </p>
<p>目录，因为这里涉及到用户对CVSROOT里的文件读写的权限问题，所以比较简单的方法是建立一个组，然后再建立一个属于该组的帐户，而且以后有读写权限的用户都要属于该组。假设我们建一个组叫cvs，用户名是cvsroot。建组和用户的命令如下</p>
<p>#groupadd cvs <br />
#useradd -g cvs -G cvs -d /home/cvsroot cvsroot</p>
<p>生成的用户宿主目录在/home/cvsroot（根据自己的系统调整）</p>
<p>2、建立CVS仓库，用cvsroot 用户登陆，用下面命令：</p>
<p>$cvs -d /home/cvsroot init</p>
<p>3、仍然是 cvsroot 用户，修改 /home/cvsroot （CVSROOT）的权限，赋与同组人有读写的权限：　 </p>
<p>$chmod 775 -R /home/cvsroot</p>
<p>4、用root登录，加入cvs服务(我的redhath7.3缺省就有cvs服务,所以不用加)</p>
<p>vi /etc/services<br />
cvspserver 2401/tcp #pserver cvs service<br />
cvspserver 2401/udp #pserver cvs service </p>
<p>cvs服务由inted来唤起,因此需要改动inetd提供的服务,如果你的redhat使用的是inetd 方式则在文件/etc/inetd.conf中加入如下的内容:cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver</p>
<p>我的redhat7.3使用的是xinetd方式,所以在xinetd.d目录下添加需要启动的服务:<br />
cd /etc/xinetd.d<br />
vi cvspserver<br />
文件内容:<br />
service cvspserver<br />
{<br />
&nbsp; disable = no<br />
&nbsp; flags = REUSE<br />
&nbsp; socket_type = stream<br />
&nbsp; wait = no<br />
&nbsp; user = cvsroot<br />
&nbsp; server = /usr/bin/cvs<br />
&nbsp; server_args = -f --allow-root=/home/cvsroot pserver<br />
&nbsp; log_on_failure += USERID<br />
}</p>
<p>重新启动inetd或者xinetd:<br />
&nbsp;/etc/rc.d/init.d/xinetd restart</p>
<p>检查cvspserver服务是否已经启动<br />
[root@localhost /]# netstat -lnp|grep 2401<br />
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0.0.0.0:2401&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1041/xinetd&nbsp; <br />
则说明cvs服务器已经运行。</p>
<p>二、管理CVS服务器</p>
<p>服务器可以用了，现在大家最关心的就是如何管理服务器，比如，我想让一些人有读和/或写 CVS 仓库的权限，但是不想给它系统权限怎么办呢？</p>
<p>不难，在 cvs 管理员用户（在我这里是 cvsroot 用户）的家目录里有一个 CVSROOT 目录，这个目录里有三个配置文件，passwd, readers, writers，我们可以通过设置这三个文件来配置 CVS 服务器，下面分别介绍这几个文件的作用： </p>
<p>passwd：cvs 用户的用户列表文件，它的格式很象 shadow 文件： </p>
<p>{cvs 用户名}:[加密的口令]:[等效系统用户名] </p>
<p>readers：有 cvs 读权限的用户列表文件。就是一个一维列表。在这个文件中的用户对 cvs只有读权限。 </p>
<p>writers：有 cvs 写权限的用户的列表文件。和 readers 一样，是一个一维列表。在这个文件中的用户对 cvs 有写权限。 </p>
<p>上面三个文件在缺省安装的时候可能都不存在，需要我们自己创建，好吧，现在还是让我们用一个例子来教学吧。假设我们有下面几个用户需要使用 cvs： </p>
<p>laser, gumpwu, henry, betty, anonymous。 </p>
<p>其中 laser 和 gumpwu 是系统用户，而 henry, betty, anonymous 我们都不想给系统用户权限，并且 betty 和 anonymous 都是只读用户，而且 anonymous 更是连口令都没有。</p>
<p>然后编辑 cvs 管理员家目录里 CVSROOT/passwd 文件（cvsroot用户），加入下面几行： </p>
<p>laser:$xxefajfka;faffa33:cvsroot<br />
gumpwu:$ajfaal;323r0ofeeanv:cvsroot <br />
henry:$fajkdpaieje:cvsroot<br />
betty:fjkal;ffjieinfn/:cvsroot <br />
anonymous::cvsroot</p>
<p>注意：上面的第二个字段（分隔符为 :）是密文口令。 </p>
<p>密码可以有以下方法生成<br />
vi /home/cvsroot/passwdgen.pl<br />
文件内容:<br />
#!/usr/bin/perl<br />
srand (time());<br />
my $randletter = &quot;(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))&quot;;<br />
my $salt = sprintf (&quot;%c%c&quot;, eval $randletter, eval $randletter);<br />
my $plaintext = shift;<br />
my $crypttext = crypt ($plaintext, $salt);<br />
print &quot;${crypttext}\n&quot;;</p>
<p>如果需要密码为:some,则敲入:<br />
./passwdgen.pl some<br />
（注意passwdgen.pl要先设为可执行）<br />
回车即可得到加密密码,用其替换passwd文件中的passwd部分就可以了</p>
<p><br />
编辑 readers 文件，加入下面几行： <br />
anonymous <br />
betty </p>
<p>编辑 writers 文件，加入下面几行： </p>
<p>laser <br />
gumpwu <br />
henry </p>
<p>注意：writers中的用户不能在readers中，要不然不能上传更新文件。</p>
<p><br />
对于使用CVS的用户要修改它的环境变量，例如laser用户的环境变量，打开/home/laser（laser的宿主目录）下的.bash_profile文件，加入</p>
<p>CVSROOT=/home/cvsroot<br />
export CVSROOT</p>
<p>用laser登陆就可以建立CVS项目，如果要root使用，可以修改/etc/profile文件。</p>
<p><br />
现在我们各项都设置好了，那么怎么用呢，我在这里写一个最简单的（估计也是最常用的）命令介绍： </p>
<p>首先，建立一个新的CVS项目，一般我们都已经有一些项目文件了，这样我们可以用下面步骤生成一个新的CVS项目： </p>
<p>进入到你的已有项目的目录，比如叫 cvstest： </p>
<p>$cd&nbsp; cvstest<br />
运行命令： <br />
$cvs import -m &quot;this is a cvstest project&quot; cvstest&nbsp;&nbsp;&nbsp;&nbsp; v_0_0_1&nbsp;&nbsp;&nbsp;&nbsp; start </p>
<p>说明：import 是cvs的命令之一，表示向cvs仓库输入项目文件。 -m参数后面的字串是描述文本，随便写些有意义的东西，如果不加 -m 参数，那么cvs会自动运行一个编辑器（一般是vi，但是可以通过修改环境变量EDITOR来改成你喜欢用的编辑器。）让你输入信息，cvstest 是项目名称（实际上是仓库名，在CVS服务器上会存储在以这个名字命名的仓库里。） <br />
v_0_0_1是这个分支的总标记。没啥用（或曰不常用。） <br />
start 是每次 import 标识文件的输入层次的标记，没啥用。<br />
这样我们就建立了一个CVS仓库了。</p>
<p>　　建立CVS仓库的文件夹应该是&ldquo;干净&rdquo;的文件夹，即只包括源码文件和描述的文件加，而不应该包括编译过的文件代码等！</p>
<br />
<p>&nbsp;</p>
--------------------<br />
<font color="#ff0000">很快就配置好了，但是在用ide做签出的时候，一直提示有问题，后来发现，那个仓库的名字必须是/home/cvsroot</font>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/48314#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, 18 Jan 2007 11:46:45 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/48314</link>
        <guid>http://dodoflying.javaeye.com/blog/48314</guid>
      </item>
      <item>
        <title>XMPP RFC阅读笔记</title>
        <author>dodoflying</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dodoflying.javaeye.com">dodoflying</a>&nbsp;
          链接：<a href="http://dodoflying.javaeye.com/blog/47878" style="color:red;">http://dodoflying.javaeye.com/blog/47878</a>&nbsp;
          发表时间: 2007年01月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://dev.csdn.net/article/60/60495.shtm" target="_blank">http://dev.csdn.net/article/60/60495.shtm</a><br />
<br />
<span id="ArticleContent1_ArticleContent1_lblContent">以下所有内容均是根据自己的记忆和理解，如有不正确甚至谬误之处，请多见谅。 <br />
<br />
1、什么是XMPP ？ <br />
XMPP的前身是Jabber，一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分； <br />
核心的XML流传输协议 <br />
基于XML流传输的即时通讯扩展应用 <br />
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性，使得XMPP的协议能够非常漂亮。 <br />
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的，与其他业已得到广泛使用的即时通讯协议，诸如AIM，QQ等有功能完整，完善等先进性。 <br />
<br />
2、XMPP的基本网络结构是怎样的？ <br />
XMPP 中定义了三个角色，客户端，服务器，网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录，连接管理和信息的路由功能。网关承 担着与异构即时通信系统的互联互通，异构系统可以包括SMS（短信），MSN，ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器，然后 在之上传输XML。 <br />
<br />
3、XMPP通过TCP传什么了？ <br />
传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发 送（比如QQ），要么用纯文本指令加空格加参数加换行苻的方式发送（比如MSN）。而XMPP传输的即时通讯指令的逻辑与以往相仿，只是协议的形式变成了 XML格式的纯文本。这不但使得解析容易了，人也容易阅读了，方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流 协议是XMPP的即时通讯指令的传递基础，也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说，XMPP用TCP传的是XML流。 <br />
<br />
4、举个例子看看所谓的XML流是什么样子的？ <br />
客户端：<!--l version='1.0--> <br />
&nbsp;&nbsp; <stream:stream></stream:stream>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to='example.com' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns='jabber:client' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:stream='http://etherx.jabber.org/streams' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version='1.0'&gt; <br />
服务器：<!--l version='1.0--> <br />
&nbsp;&nbsp; <stream:stream></stream:stream>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from='example.com' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id='someid' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns='jabber:client' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:stream='http://etherx.jabber.org/streams' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version='1.0'&gt; <br />
...其他通信... <br />
客户端：<message from="juliet@example.com"></message> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to='romeo@example.net' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:lang='en'&gt; <br />
客户端：&nbsp;Art thou not Romeo, and a Montague? <br />
客户端： <br />
服务器：<message from="romeo@example.net"></message> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to='juliet@example.com' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml:lang='en'&gt; <br />
服务器：Neither, fair saint, if either thee dislike. <br />
服务器： <br />
客户端： <br />
服务器： <br />
以 文档的观点来看，客户端或服务器发送的所有XML文本连缀在一起，从<stream></stream>到构成了一个完整的 XML文档。其中的stream标签就是所谓的XML Stream。在<stream></stream>与中间的那些<message></message>...&lt; /message&gt;这样的XML元素就是所谓的XML Stanza（XML节）。XMPP核心协议通信的基本模式就是先建立一个stream，然后协商一堆安全之类的东西，中间通信过程就是客户端发送XML Stanza，一个接一个的。服务器根据客户端发送的信息以及程序的逻辑，发送XML Stanza给客户端。但是这个过程并不是一问一答的，任何时候都有可能从一个方发信给另外一方。通信的最后阶段是关闭 流，关闭TCP/IP连接。 <br />
</span>
          <br/>
          <span style="color:red;">
            <a href="http://dodoflying.javaeye.com/blog/47878#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, 16 Jan 2007 17:47:39 +0800</pubDate>
        <link>http://dodoflying.javaeye.com/blog/47878</link>
        <guid>http://dodoflying.javaeye.com/blog/47878</guid>
      </item>
  </channel>
</rss>