﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-叶明的javablog</title><link>http://www.blogjava.net/guming123416/</link><description>java学习天堂,个人关于其他blog：blog.javaworker.cn,欢迎大家访问</description><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 01:34:11 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 01:34:11 GMT</pubDate><ttl>60</ttl><item><title>centos5.4下安装apache+svn</title><link>http://www.blogjava.net/guming123416/archive/2010/09/28/333104.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 28 Sep 2010 00:24:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2010/09/28/333104.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/333104.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2010/09/28/333104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/333104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/333104.html</trackback:ping><description><![CDATA[<div style="layout-grid:  15.6pt none" class="Section0">
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt">1、</span><span style="font-family: '宋体'; font-size: 10.5pt">首先下载<font face="Times New Roman">apache2.2&nbsp;</font><font face="宋体">下载地址：</font></span><a href="http://mirrors.sohu.com/apache/httpd-2.2.16.tar.gz"><span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10pt; text-decoration: underline" class="15">http://mirrors.sohu.com/apache/httpd-2.2.16.tar.gz</a></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt">2、</span><span style="font-family: '宋体'; font-size: 10.5pt">然后下载<font face="Times New Roman">SVN</font></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">a)&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt">包：<font face="Times New Roman">subversion-deps-1.6.12.tar.gz</font></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 63pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">i.&nbsp;</span><span style="font-family: '宋体'; font-size: 10.5pt">地址：<font face="Times New Roman">http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz</font></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 12pt">b)&nbsp;</span><span style="font-family: '宋体'; font-size: 12pt">susubversion-1.6.12.tar.gz&nbsp;&nbsp;<font face="宋体">地址：</font></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 63pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 12pt">i.&nbsp;</span><span style="font-family: '宋体'; font-size: 12pt">http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz&nbsp;</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">3、</span><span style="font-family: '宋体'; font-size: 12pt">然后解析<font face="Times New Roman">Apache2</font><font face="宋体">，安装</font></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">4、</span><span style="font-family: '宋体'; font-size: 12pt">tar&nbsp;-zxvf&nbsp;</span><span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10pt; text-decoration: underline" class="15">httpd-2.2.16.tar.gz</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10pt; text-decoration: underline">5、</span><span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10pt; text-decoration: underline" class="15">安装<font face="Times New Roman">Apache</font></span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Calibri'; font-size: 9pt">a)&nbsp;</span><span style="font-family: '宋体'; font-size: 9pt">./</span><span style="font-family: 'Calibri'; font-size: 9pt">configure&nbsp;-prefix=/opt/web/apache2&nbsp;--enable-mods-shared=all&nbsp;--enable-so</span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 12pt">b)&nbsp;</span><span style="font-family: '宋体'; font-size: 12pt">Make</span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 12pt">c)&nbsp;</span><span style="font-family: '宋体'; font-size: 12pt">Make&nbsp;install</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">6、</span><span style="font-family: '宋体'; font-size: 12pt">检查<font face="Times New Roman">APACHE</font><font face="宋体">是否安装成功：</font></span></p>
<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">启动<font face="Times New Roman">apache:/opt/web/apache2/bin/apachectl&nbsp;start</font></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">7、</span><span style="font-family: '宋体'; font-size: 12pt">安装<font face="Times New Roman">Svn</font></span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">8、</span><span style="font-family: '宋体'; font-size: 12pt">首先解压：&nbsp;<font face="Times New Roman">tar&nbsp;-zxvf&nbsp;</font></span><span style="font-family: '宋体'; font-size: 10.5pt">subversion-deps-1.6.12.tar.gz</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt">9、</span><span style="font-family: '宋体'; font-size: 10.5pt">然后解压：<font face="Times New Roman">t</font></span><span style="font-family: '宋体'; font-size: 12pt">ar&nbsp;-zxvf&nbsp;susubversion-1.6.12.tar.gz&nbsp;</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">10、</span><span style="font-family: '宋体'; font-size: 12pt">安装命令：</span></p>
<p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 42pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 12pt">a)&nbsp;</span><span style="font-family: '宋体'; font-size: 12pt">./configure&nbsp;--prefix=/opt/web/subversion&nbsp;--with-apxs=/opt/web/apache2/bin/apxs&nbsp;--with-apr=/opt/web/httpd-2.2.16/srclib/apr&nbsp;&nbsp;--with-apr-util=/opt/web/httpd-2.2.16/srclib/apr-util</span></p>
<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 12pt">11<font face="宋体">、</font><font face="Times New Roman">make&nbsp;&nbsp;make&nbsp;install</font></span></p>
</div>
<img src ="http://www.blogjava.net/guming123416/aggbug/333104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2010-09-28 08:24 <a href="http://www.blogjava.net/guming123416/archive/2010/09/28/333104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目开发中的进度以及人员的控制进度情况</title><link>http://www.blogjava.net/guming123416/archive/2009/10/04/297174.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sun, 04 Oct 2009 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/10/04/297174.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/297174.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/10/04/297174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/297174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/297174.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 项目研发的问题。&nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2009/10/04/297174.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/297174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-10-04 10:37 <a href="http://www.blogjava.net/guming123416/archive/2009/10/04/297174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于项目管理的一些感想 </title><link>http://www.blogjava.net/guming123416/archive/2009/10/03/297127.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sat, 03 Oct 2009 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/10/03/297127.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/297127.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/10/03/297127.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/297127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/297127.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关于项目管理的一些感想，主要是最近遇到的问题。没有找到方向&nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2009/10/03/297127.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/297127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-10-03 11:32 <a href="http://www.blogjava.net/guming123416/archive/2009/10/03/297127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(5)--IndexWrite类源代码解析（四）RAMDirectory介绍 </title><link>http://www.blogjava.net/guming123416/archive/2009/05/08/269601.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 08 May 2009 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/05/08/269601.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/269601.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/05/08/269601.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/269601.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/269601.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp; RAMDirectory是Directory抽象类在使用内存最为文件存储的实现类，其主要是将所有的索引文件保存到内存中。这样可以提高效率。但是如果索引文件过大的话，则会导致内存不足，因此，小型的系统推荐使用，如果大型的，索引文件达到G级别上，推荐使用FSDirectory首先我们看看该类的源代码：首先该类继承与抽象类Directory，并且实现了序列话接口&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2009/05/08/269601.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/269601.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-05-08 13:56 <a href="http://www.blogjava.net/guming123416/archive/2009/05/08/269601.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(5)--IndexWrite类源代码解析（三）FSDirectory介绍</title><link>http://www.blogjava.net/guming123416/archive/2009/05/05/269036.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 05 May 2009 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/05/05/269036.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/269036.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/05/05/269036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/269036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/269036.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 其中常用的就是FSDirectory：表示对文件系统目录的操作。RAMDirectory&nbsp;：内存中的目录操作。首先我们看看类FSDirectory的源代码import&nbsp;java.io.File;import&nbsp;java.io.FileInputStream;import&nbsp;java.io.FileOutputStream;import&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2009/05/05/269036.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/269036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-05-05 18:02 <a href="http://www.blogjava.net/guming123416/archive/2009/05/05/269036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows下设置Resin进入系统服务 </title><link>http://www.blogjava.net/guming123416/archive/2009/04/30/268338.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Thu, 30 Apr 2009 05:14:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/04/30/268338.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/268338.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/04/30/268338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/268338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/268338.html</trackback:ping><description><![CDATA[C:\&gt; resin-3.1.x\httpd -install-as ResinA&nbsp;&nbsp;-conf conf/myconf.conf&nbsp; &nbsp;-server a <br />
<br />
C:\&gt; net start ResinA <br />
<br />
net stop&nbsp;&nbsp;ResinA <br />
<br />
<br />
一个机器安装多个Resin方法<br />
<br />
apache+resin&nbsp; 方法<br />
<br />
<pre>LoadModule caucho_module \
&lt;installdir&gt;/resin-3.1.x/win32/apache-2.0/mod_caucho.dll
ResinConfigServer localhost 6802
&lt;Location /caucho-status&gt;
SetHandler caucho-status
&lt;/Location&gt;
</pre>
<img src ="http://www.blogjava.net/guming123416/aggbug/268338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-04-30 13:14 <a href="http://www.blogjava.net/guming123416/archive/2009/04/30/268338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下安装Oracle11G </title><link>http://www.blogjava.net/guming123416/archive/2009/04/17/266195.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 17 Apr 2009 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/04/17/266195.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/266195.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/04/17/266195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/266195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/266195.html</trackback:ping><description><![CDATA[<div class="textbox-content" id="zoomtext">
<p>1、首先检查一下linux下是有存在一下软件，如果不存在，必须将这些软件安装<br />
rpm -q compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc- gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel<br />
2、以root方式登陆，修改/etc/sysctl.conf，在文件中增加一下参数<br />
kernel.shmall = 2097152<br />
kernel.shmmax = 2147483648<br />
kernel.shmmni = 4096<br />
kernel.sem = 250 32000 100 128<br />
fs.file-max = 65536<br />
net.ipv4.ip_local_port_range =1024 65000<br />
net.core.rmem_default = 4194304<br />
net.core.rmem_max = 4194304<br />
net.core.wmem_default =262144<br />
net.core.wmem_max =262144</p>
<p>然后创建数据库的所有者：<br />
groupadd oinstall<br />
groupadd dba<br />
useradd -g oinstall -G dba Oracle 创建用户Oracle<br />
passwd Oracle（修改Oracle的密码）<br />
修改Oracle用户的限制<br />
cd /etc/security<br />
vi limits.conf<br />
在该文件增加一下内容<br />
Oracle soft nproc 2047<br />
Oracle hard nproc 16384<br />
Oracle soft nofile 1024<br />
Oracle hard nofile 65536<br />
在文件/etc/pam.d/login文件增加一下内容<br />
session required /lib/security/pam_limits.so<br />
session required pam_limits.so<br />
在文件/etc/profile增加一下内容</p>
<p>if [$USER = "Oracle"] ; then<br />
if [ $SHELL = " /bin/ksh" ]; then<br />
ulimit -p 16384<br />
ulimit -n 65535<br />
else<br />
ulimit -u 16384 -n 65536<br />
fi<br />
fi<br />
创建安装目录：<br />
mkdir -p /opt/app/oracle<br />
chown -P Oracle:oinstall /opt/app<br />
chmod -R 755 /opt/app<br />
执行命令，解压安装文件 ：unzip linux_11gR1_database.zip<br />
然后进入解压后的目录，执行<br />
$ ./runInstaller</p>
</div>
<img src ="http://www.blogjava.net/guming123416/aggbug/266195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-04-17 17:27 <a href="http://www.blogjava.net/guming123416/archive/2009/04/17/266195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(5)--IndexWrite类源代码解析（二）--Directory 解析 </title><link>http://www.blogjava.net/guming123416/archive/2009/04/16/266008.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Thu, 16 Apr 2009 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/04/16/266008.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/266008.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/04/16/266008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/266008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/266008.html</trackback:ping><description><![CDATA[<p>首先我们看构造函数中的第一个类Directory 类。根据这个类的英文，我们能得出这个类就是关于目录操作的。Directory 是一个抽象类。其有4个子类，分别是：DbDirectory, FSDirectory, JEDirectory, RAMDirectory </p>
<p>首先我们看看Directory 的类<br />
public abstract class Directory {<br />
volatile boolean isOpen = true;<br />
/*** 持有一个LockFactory的实例（实现锁定这个目录实例）*/<br />
protected LockFactory lockFactory;<br />
/**返回该目录下的所有文件数组.如果这个目录下没有文件存在，或者存在权限问题不能访问，该方法可能返回Null*/<br />
public abstract String[] list() throws IOException;<br />
/** * 返回指定名称的文件是不是存在 */<br />
public abstract boolean fileExists(String name)<br />
throws IOException;<br />
/**返回指定名称的文件最后修改的时间<br />
public abstract long fileModified(String name) throws IOException;<br />
/**设置指定文件名的文件最后的修改时间为当前时间*/<br />
public abstract void touchFile(String name) throws IOException;</p>
<p>/**删除指定文件。 */<br />
public abstract void deleteFile(String name)throws IOException;<br />
/**返回指定文件的长度。 */<br />
public abstract long fileLength(String name) throws IOException;<br />
/** 在当前目录下使用给定的名称创建一个空的文件。并且返回一个流来写该文件。*/<br />
public abstract IndexOutput createOutput(String name) throws IOException; <br />
/** * Lucene使用该方法确保所有的针对该文件的写操作都会存储到Index。并且阻止machine/OS发生故障 破坏该index。*/<br />
public void sync(String name) throws IOException {}<br />
/**获取已经存在的一个文件的IndexInput流操作该文件。 */<br />
public abstract IndexInput openInput(String name) throws IOException;<br />
/** 返回已经存在的一个文件、并且使用指定大小的缓冲的IndexInput，但是当前目录也可能忽略该缓冲池的大小，<br />
* 当前主要是考虑CompoundFileReader和FSDirectory对于次参数的需求。*/<br />
public IndexInput openInput(String name, int bufferSize) throws IOException {<br />
return openInput(name);<br />
}<br />
/** 创建一个指定名称的锁/<br />
public Lock makeLock(String name) {<br />
return lockFactory.makeLock(name);<br />
}<br />
/**<br />
* 清除指定的锁定（强行解锁和删除）这不仅要求在这个时候当前的锁一定不在使用。 */<br />
public void clearLock(String name) throws IOException {<br />
if (lockFactory != null) {<br />
lockFactory.clearLock(name);<br />
}<br />
}<br />
/** 结束这个store. */<br />
public abstract void close() throws IOException;</p>
<p>/**设置LockFactory，此目录实例应使其锁定执行。每个LockFactory实例只用于一个目录（即，不要共用一个实例在多个目录） */<br />
public void setLockFactory(LockFactory lockFactory) {<br />
this.lockFactory = lockFactory;<br />
lockFactory.setLockPrefix(this.getLockID());<br />
}</p>
<p>/** 获得LockFactory，此目录例实例使用其锁定执行。请注意，这可能是无效的目录执行，提供自己锁执行*/<br />
public LockFactory getLockFactory() {<br />
return this.lockFactory;<br />
}<br />
/**过去锁实例的唯一表示ID的字符串描述*/<br />
public String getLockID() {<br />
return this.toString();<br />
}<br />
/**// 拷贝源目录src下的文件，复制到目的目录dest下面，拷贝完成后关闭源目录src*/<br />
public static void copy(Directory src, Directory dest, boolean closeDirSrc) throws IOException {<br />
final String[] files = src.list();<br />
if (files == null)<br />
throw new IOException("cannot read directory " + src + ": list() returned null");<br />
byte[] buf = new byte[BufferedIndexOutput.BUFFER_SIZE];<br />
for (int i = 0; i &lt; files.length; i++) {<br />
IndexOutput os = null;<br />
IndexInput is = null;<br />
try {<br />
// create file in dest directory<br />
os = dest.createOutput(files[i]);<br />
// read current file<br />
is = src.openInput(files[i]);<br />
// and copy to dest directory<br />
long len = is.length();<br />
long readCount = 0;<br />
while (readCount &lt; len) {<br />
int toRead = readCount + BufferedIndexOutput.BUFFER_SIZE &gt; len ? (int)(len - readCount) : BufferedIndexOutput.BUFFER_SIZE;<br />
is.readBytes(buf, 0, toRead);<br />
os.writeBytes(buf, toRead);<br />
readCount += toRead;<br />
}<br />
} finally {<br />
// graceful cleanup<br />
try {<br />
if (os != null)<br />
os.close();<br />
} finally {<br />
if (is != null)<br />
is.close();<br />
}<br />
}<br />
}<br />
if(closeDirSrc)<br />
src.close();<br />
}</p>
<p>从Directory抽象类的定义，我们可以得到如下几点：<br />
1、管理锁工厂及其锁实例；<br />
2、管理Directory目录实例的基本属性，主要是通过文件名称进行管理；<br />
3、管理与操作该目录相关的一些流对象；<br />
4、管理索引文件的拷贝。<br />
</p>
<img src ="http://www.blogjava.net/guming123416/aggbug/266008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-04-16 17:32 <a href="http://www.blogjava.net/guming123416/archive/2009/04/16/266008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(5)--IndexWrite类源代码解析（一）</title><link>http://www.blogjava.net/guming123416/archive/2009/04/07/264298.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 07 Apr 2009 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/04/07/264298.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/264298.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/04/07/264298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/264298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/264298.html</trackback:ping><description><![CDATA[<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">1、</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">indexWriter<font face="宋体">类主要功能是对索引的创建，加入Document后，合并各种索引段，以及控制与索引相关的其他方面，它是lucene索引的主要操纵者。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">2、</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">我们首先看看IndexWriter的构造函数</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(String&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(String&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(File&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(File&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(String&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(String&nbsp;path,&nbsp;Analyzer&nbsp;a)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(File&nbsp;path,&nbsp;Analyzer&nbsp;a,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(File&nbsp;path,&nbsp;Analyzer&nbsp;a)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;boolean&nbsp;autoCommit,&nbsp;Analyzer&nbsp;a)(<font face="宋体">废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;boolean&nbsp;autoCommit,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create)<font face="宋体">（废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;IndexDeletionPolicy&nbsp;deletionPolicy,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;boolean&nbsp;autoCommit,&nbsp;Analyzer&nbsp;a,&nbsp;IndexDeletionPolicy&nbsp;deletionPolicy)<font face="宋体">（废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create,&nbsp;IndexDeletionPolicy&nbsp;deletionPolicy,&nbsp;MaxFieldLength&nbsp;mfl)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;IndexWriter(Directory&nbsp;d,&nbsp;boolean&nbsp;autoCommit,&nbsp;Analyzer&nbsp;a,&nbsp;boolean&nbsp;create,&nbsp;IndexDeletionPolicy&nbsp;deletionPolicy)<font face="宋体">（废弃，不提倡使用)</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">细心的读者肯定会发现，废弃的构造函数与提倡使用的构造函数，多了一个MaxFieldLength参数。带有该参数的构造函数都是允许正常使用的。</font></span><span style="font-size: 10.5pt; color: rgb(255,0,0); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">（注释：废弃的构造函数将在Lucene3.0中移除）</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">仔细查看其构造函数的实现呢，最终都转化成一个私有的构造函数：如图：</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">/**</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;<font face="宋体">该构造函数主要是创建一个IndexWrite对象</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;d&nbsp;<font face="宋体">：指定的存放建立索引文件的索引目录</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;a&nbsp;<font face="宋体">：Analyzer&nbsp;&nbsp;分词分析器</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;create&nbsp;<font face="宋体">：是否要重新写入索引文件，如果为true，则重写索引文件；如果为false，则追加写入索引文件</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;closeDir&nbsp;<font face="宋体">：一个boolean型变量，表示是否关闭索引目录Directory&nbsp;d，与IndexWriter的一个成员变量相关</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;deletionPolicy&nbsp;<font face="宋体">：指定删除索引文件使用的策略</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;autoCommit&nbsp;<font face="宋体">：建立索引文件后，自动提交。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*&nbsp;maxFieldLength&nbsp;<font face="宋体">：&nbsp;表示索引中Field的最大长度。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">*/</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">private&nbsp;void&nbsp;init(Directory&nbsp;d,&nbsp;Analyzer&nbsp;a,&nbsp;final&nbsp;boolean&nbsp;create,&nbsp;boolean&nbsp;closeDir,&nbsp;IndexDeletionPolicy&nbsp;deletionPolicy,&nbsp;boolean&nbsp;autoCommit,&nbsp;int&nbsp;maxFieldLength)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;throws&nbsp;CorruptIndexException,&nbsp;LockObtainFailedException,&nbsp;IOException&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;this.closeDir&nbsp;=&nbsp;closeDir;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;=&nbsp;d;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;analyzer&nbsp;=&nbsp;a;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;setMessageID(defaultInfoStream);</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">这里主要是指定infoStream，是一个PrintStream输出流对象</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;this.maxFieldLength&nbsp;=&nbsp;maxFieldLength;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">指定Field数据的最大长度</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(create)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">如果是重新创建索引文件</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">，</font></span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">清除写锁文件write.lock</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory.clearLock(WRITE_LOCK_NAME);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;Lock&nbsp;writeLock&nbsp;=&nbsp;directory.makeLock(WRITE_LOCK_NAME);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!writeLock.obtain(writeLockTimeout))&nbsp;//&nbsp;</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">获取写锁文件</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;LockObtainFailedException("Index&nbsp;locked&nbsp;for&nbsp;write:&nbsp;"&nbsp;+&nbsp;writeLock);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;this.writeLock&nbsp;=&nbsp;writeLock;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">保存新的写锁文件</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(create)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">如果create为true，表示重写索引文件。重写索引文件之前，要先读取已经存在的索引文件，并且要清除掉历史写入的segment信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segmentInfos.read(directory);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segmentInfos.clear();</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segmentInfos.commit(directory);&nbsp;&nbsp;</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//&nbsp;<font face="宋体">向指定的索引存放目录中写入segment信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segmentInfos.read(directory);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">读取segment信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;We&nbsp;assume&nbsp;that&nbsp;this&nbsp;segments_N&nbsp;was&nbsp;previously</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;properly&nbsp;sync'd:</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;segmentInfos.size();i++)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;SegmentInfo&nbsp;info&nbsp;=&nbsp;segmentInfos.info(i);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;files&nbsp;=&nbsp;info.files();</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j=0;j&lt;files.size();j++)</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;synced.add(files.get(j));</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.autoCommit&nbsp;=&nbsp;autoCommit;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">执行提交写入索引的标志&nbsp;</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRollbackSegmentInfos(segmentInfos);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">克隆原来的</font></span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">segment<font face="宋体">状态信息，并且将信息保存到HashSet。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docWriter&nbsp;=&nbsp;new&nbsp;DocumentsWriter(directory,&nbsp;this);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">创建一个DocumentsWriter对象</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docWriter.setInfoStream(infoStream);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">设置</font></span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">DocumentsWriter<font face="宋体">对象的</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">infoStream<font face="宋体">信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docWriter.setMaxFieldLength(maxFieldLength);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">设置</font></span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">DocumentsWriter<font face="宋体">对象的</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">maxFieldLength<font face="宋体">信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<font face="宋体">默认的删除策略实现类为KeepOnlyLastCommitDeletionPolicy，它只是保证将最近提交删除的索引文件，提交删除动作&nbsp;</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;IndexFileDeleter&nbsp;deleter<font face="宋体">是IndexWriter类的一个私有的成员变量，它在org.apache.lucene.index包里面，主要对删除索引文件进行实现和管理&nbsp;</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deleter&nbsp;=&nbsp;new&nbsp;IndexFileDeleter(directory,</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deletionPolicy&nbsp;==&nbsp;null&nbsp;?&nbsp;new&nbsp;KeepOnlyLastCommitDeletionPolicy()&nbsp;:&nbsp;deletionPolicy,</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segmentInfos,&nbsp;infoStream,&nbsp;docWriter);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pushMaxBufferedDocs();</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">刷新DocsBuffer。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(infoStream&nbsp;!=&nbsp;null)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">如果infoStream是null</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("init:&nbsp;create="&nbsp;+&nbsp;create);</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messageState();</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.writeLock.release();</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.writeLock&nbsp;=&nbsp;null;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;e;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">&nbsp;&nbsp;<font face="宋体">通过IndexWrite的构造函数，以及最终的实现方法的init分发，其主要是实现了根据指定的建立索引的方式(重写、追加写入)，通过create标志位来判断，从而指定一种在操作索引文件的过程中删除索引文件的策略。</font></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">在理解lucene的时间，必须熟悉其初始化</font></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">IndexWrite<font face="宋体">的原理，才能深入了解该框架在创建索引的核心实现机制。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<!--endfragment-->
<img src ="http://www.blogjava.net/guming123416/aggbug/264298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-04-07 17:39 <a href="http://www.blogjava.net/guming123416/archive/2009/04/07/264298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene2.4.1英文DOC文档CHM格式下载</title><link>http://www.blogjava.net/guming123416/archive/2009/04/01/263282.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Wed, 01 Apr 2009 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/04/01/263282.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/263282.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/04/01/263282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/263282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/263282.html</trackback:ping><description><![CDATA[<p>不知道为什么。不能在blogjava上上传，所以将该资源放在自己的另一个blog上，如果有需要的用户，可以度下载地址：<a href="http://blog.javaworker.cn/read.php/23.htm">http://blog.javaworker.cn/read.php/23.htm</a></p>
 <img src ="http://www.blogjava.net/guming123416/aggbug/263282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-04-01 09:43 <a href="http://www.blogjava.net/guming123416/archive/2009/04/01/263282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(4)--Field源代码</title><link>http://www.blogjava.net/guming123416/archive/2009/03/31/263059.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 31 Mar 2009 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/03/31/263059.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/263059.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/03/31/263059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/263059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/263059.html</trackback:ping><description><![CDATA[<p>Field类（类似数据库中的字段与属性）<br />
&nbsp;&nbsp;&nbsp;&nbsp;该类实现接口：Fieldable&nbsp;&nbsp;&nbsp; 继承静态类: AbstractField<br />
&nbsp;&nbsp;&nbsp;&nbsp;Fieldable接口。主要是描述一些基础信息的内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置权重以及获取权重 [void setBoost(float boost), float getBoost();]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取名称String name();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取String类型的值public String stringValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以Reader方式返回public Reader readerValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以二进制或者TokenStream&nbsp; 方式返回public byte[] binaryValue();public TokenStream &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokenStreamValue();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否被存储boolean&nbsp; isStored();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否被索引boolean&nbsp; isIndexed();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否被分词boolean&nbsp; isTokenized();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否是压缩存储 boolean&nbsp; isCompressed();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否是二进制boolean&nbsp; isBinary();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......其他的读者可以参考源代码<br />
AbstractField抽象类定义的一些常量：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected String name = "body";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //表示该Filed的名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean storeTermVector = false;&nbsp;&nbsp;&nbsp;&nbsp;//表示是否存储词条向量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected boolean storeOffsetWithTermVector = false;&nbsp;&nbsp;//存储词条向量的偏移量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean storePositionWithTermVector = false;&nbsp;&nbsp;//存储词条向量的位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean omitNorms = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean isStored = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否存储<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean isIndexed = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否是索引<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean isTokenized = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否是分词<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean isBinary = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否是二进制数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean isCompressed = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否是压缩<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean lazy = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//是否是延迟<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected boolean omitTf = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected float boost = 1.0f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置激励因子<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected Object fieldsData = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Field的内部属性的具体内容<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected int binaryLength;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//二进制数据长度<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected int binaryOffset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//二进制数据偏移量</p>
<p>Filed类源代码解析<br />
&nbsp;&nbsp;&nbsp;&nbsp;首先Filed内部定义了三个静态类Store、Index、TermVector。<br />
//定一个静态类Store ，主要为了设置Field的存储属性<br />
public static final class Store extends Parameter implements Serializable {<br />
&nbsp;&nbsp;&nbsp; private Store(String name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(name);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //使用压缩的方式来存储Field的值<br />
&nbsp;&nbsp;&nbsp; public static final Store COMPRESS = new Store("COMPRESS");<br />
&nbsp;&nbsp;&nbsp; //在索引中存储Field的值<br />
&nbsp;&nbsp;&nbsp; public static final Store YES = new Store("YES");<br />
&nbsp;&nbsp;&nbsp; //在索引中不存贮Field的值<br />
&nbsp;&nbsp;&nbsp; public static final Store NO = new Store("NO");<br />
&nbsp; }<br />
//定一个静态类Index ，主要为了设置Field的索引属性<br />
public static final class Index extends Parameter implements Serializable {<br />
&nbsp;&nbsp;&nbsp; private Index(String name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(name);<br />
&nbsp;}<br />
&nbsp;//不对Field进行索引，所以这个Field就不能被检索到(一般来说，建立索引而使它不被检索，这是没有意义的)<br />
&nbsp;//如果对该Field还设置了Field.Store为Field.Store.YES或Field.Store.COMPRESS，则可以检索<br />
&nbsp;&nbsp;&nbsp; public static final Index NO = new Index("NO");</p>
<p>&nbsp;&nbsp; &nbsp;//对Field进行索引，同时还要对其进行分词(由Analyzer来管理如何分词)<br />
&nbsp;&nbsp;&nbsp; public static final Index ANALYZED = new Index("ANALYZED");<br />
//废弃的属性，使用ANALYZED 来替代<br />
&nbsp;&nbsp;&nbsp;&nbsp; public static final Index TOKENIZED = ANALYZED;<br />
//对Field进行索引，但是不对该Field使用分词<br />
&nbsp;&nbsp;&nbsp; public static final Index NOT_ANALYZED = new Index("NOT_ANALYZED");<br />
//废弃的属性，使用NOT_ANALYZED来替代<br />
&nbsp;&nbsp;&nbsp; public static final Index UN_TOKENIZED = NOT_ANALYZED;<br />
//即不对Field索引，也不对其使用Analyzer来分词<br />
&nbsp;&nbsp;&nbsp; public static final Index NOT_ANALYZED_NO_NORMS = new&nbsp; Index("NOT_ANALYZED_NO_NORMS");<br />
//废弃的属性，有NOT_ANALYZED_NO_NORMS来替代<br />
&nbsp;&nbsp;&nbsp; public static final Index NO_NORMS = NOT_ANALYZED_NO_NORMS;<br />
//对Field属性，使用分词，但是不是使用Analyzer来分词<br />
&nbsp;&nbsp;&nbsp; public static final Index ANALYZED_NO_NORMS = new Index("ANALYZED_NO_NORMS");<br />
&nbsp; }<br />
这是一个与词条有关的类。因为在检索的时候需要指定检索关键字，通过为一个Field添加一个TermVector，就可以在检索中把该Field检索到。<br />
public static final class TermVector&nbsp; extends Parameter implements Serializable {<br />
&nbsp;&nbsp;&nbsp; private TermVector(String name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(name);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; //不存储<br />
&nbsp;&nbsp;&nbsp; public static final TermVector NO = new TermVector("NO");<br />
&nbsp;&nbsp; &nbsp;//为每个Document都存储一个TermVector<br />
&nbsp;&nbsp;&nbsp; public static final TermVector YES = new TermVector("YES");<br />
&nbsp;&nbsp;&nbsp; //存储，并且存在位置信息<br />
&nbsp;&nbsp;&nbsp; public static final TermVector WITH_POSITIONS = new TermVector("WITH_POSITIONS");<br />
&nbsp;&nbsp;&nbsp; //存储，并且存贮偏移量信息<br />
&nbsp;&nbsp;&nbsp; public static final TermVector WITH_OFFSETS = new TermVector("WITH_OFFSETS");<br />
&nbsp;&nbsp;&nbsp; //存储位置、偏移量等所有信息<br />
&nbsp;&nbsp;&nbsp; public static final TermVector WITH_POSITIONS_OFFSETS = new TermVector("WITH_POSITIONS_OFFSETS");<br />
&nbsp; }</p>
<p>构造函数<br />
&nbsp;public Field(String name, String value, Store store, Index index)&nbsp;&nbsp; <br />
public Field(String name, String value, Store store, Index index, TermVector termVector)<br />
public Field(String name, Reader reader)<br />
public Field(String name, Reader reader, TermVector termVector)<br />
public Field(String name, TokenStream tokenStream) <br />
public Field(String name, TokenStream tokenStream, TermVector termVector)<br />
&nbsp;public Field(String name, byte[] value, Store store) <br />
public Field(String name, byte[] value, int offset, int length, Store store) </p>
<p>流程：<br />
首先检查name以及values不能为空以及Nnull。<br />
然后检查是否是存储以及是否分词如果两者都是No，则抛出异常。<br />
然后检查是否存储以及是否向量分词，如果两者都是No'，则抛出异常。<br />
然后将该Filed的名称命令传递过来的名称源代码（this.name = name.intern）<br />
表示获取JVM String常量池的地址<br />
此时根据Store的值，来设置是否存储以及压缩的值<br />
然后根据Index的值，来设置是否索引、是否分词、omitNorms&nbsp; 的值以及置是否是二进制<br />
然后开始根据TermVector 的值，来设置是否存储向量、是否存储偏移量、是否存储位置等信息。<br />
<br />
<br />
以上信息可能存在分析不正确，请大家给指证，本人英语有不怎么好，<br />
<br />
</p>
<script type="text/javascript"><!--
google_ad_client = "pub-5850191600757552";
/* 728x90, 创建于 09-3-30 */
google_ad_slot = "5627680550";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script><script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
 <img src ="http://www.blogjava.net/guming123416/aggbug/263059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-03-31 10:48 <a href="http://www.blogjava.net/guming123416/archive/2009/03/31/263059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(3)--Document源代码</title><link>http://www.blogjava.net/guming123416/archive/2009/03/30/262909.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Mon, 30 Mar 2009 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/03/30/262909.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/262909.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/03/30/262909.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/262909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/262909.html</trackback:ping><description><![CDATA[<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">1、</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Document<font face="宋体">文件</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Document<font face="宋体">是lucene自己定义的一种文件格式，lucene使用docement来代替对应的物理文件或者保存在数据库中的数据。因此Document只能作为数据源在Lucene中的数据存贮的一种文件形式。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Document<font face="宋体">只是负责收集数据源，因为不同的文件可以构建同一个Document。只要用户将不同的文件创建成Document类型的文件，Lucene就能快速找到查找并且使用他们。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">对于一个Document文件，可以同时增加多个Field。Lucene中对于每个数据源是使用Field类来表示的。多个Field组成一个Document，多个Document组成一个索引文件。Document与Field关系如果一所示</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span>&nbsp;</p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><img height="230" alt="" src="http://www.blogjava.net/images/blogjava_net/guming123416/document.gif" width="604" border="0" /><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">此时，我们去看看Document这个类的源代码。Document采用默认不带参数的构造函数，但是我们他在创建的时间，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;产生两个变量：</font></span><span style="font-size: 10.5pt; background: rgb(255,255,255); color: rgb(0,0,192); font-family: '&#203;&#206;&#204;&#229;'; mso-spacerun: 'yes'">fields</span><span style="font-size: 10.5pt; background: rgb(255,255,255); color: rgb(0,0,192); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">和&nbsp;</font></span><span style="font-size: 10.5pt; background: rgb(192,192,192); color: rgb(0,0,192); font-family: '&#203;&#206;&#204;&#229;'; mso-spacerun: 'yes'">boost</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">其中fields是创建了一个arrayList,其主要是保存Field类</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Boost<font face="宋体">主要是设置该doc的优先级</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">其方法：add（Fieldable&nbsp;field）增加一个field对象</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">removeField(String&nbsp;name)&nbsp;&nbsp;<font face="宋体">根据name移除一个ield对象（找到一个就返回）</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">removeFields(String&nbsp;name)&nbsp;&nbsp;<font face="宋体">根据name移除所有的field对象</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Field&nbsp;getField(String&nbsp;name)&nbsp;&nbsp;<font face="宋体">根据名字找到该Field对象。</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">Fieldable&nbsp;getFieldable(String&nbsp;name)&nbsp;&nbsp;<font face="宋体">根据名字找到Fieldable子类（Fieldable是</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">接口，具体有Filed来实现）</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">String&nbsp;get(String&nbsp;name)&nbsp;<font face="宋体">根据名字，找到给Filed对象中包含的内容</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 21pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">public&nbsp;final&nbsp;byte[]&nbsp;getBinaryValue(String&nbsp;name)&nbsp;<font face="宋体">主要查找Doc中包含有二进制field</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">数据（如果不存在，则返回null）</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><br />
</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;final&nbsp;List&nbsp;getFields()&nbsp;<font face="宋体">直接返回该Doc中包含的Field。<br />
</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p>&nbsp;&nbsp;&nbsp;&nbsp;<br />
</o:p></span></p>
<!--endfragment--><script type="text/javascript"><!--
google_ad_client = "pub-5850191600757552";
/* 728x90, 创建于 08-7-7 */
google_ad_slot = "7437612977";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script><script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<img src ="http://www.blogjava.net/guming123416/aggbug/262909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-03-30 16:17 <a href="http://www.blogjava.net/guming123416/archive/2009/03/30/262909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(2)--分析事例 </title><link>http://www.blogjava.net/guming123416/archive/2009/03/27/262483.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 27 Mar 2009 09:54:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/03/27/262483.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/262483.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/03/27/262483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/262483.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/262483.html</trackback:ping><description><![CDATA[<span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">1、</span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">我们去分析一下该段程序。<br />
<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">a) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">首先我们创建一个类IndexWriter,该类是lucene创建索引的核心，其主要功能是将所有的数据源所有内容，经过分词处理，创建成索引格式的文件（同数据库想对比，一个索引文件就相当一张表）<br />
<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">b) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">然后，我们定义了document类。Lucene是将所有的数据源都转换成Document类型的文件，lucene内部只能识别出Document类型的文件。（同数据库相比的话，Document就像一个表的每一条记录。）<br />
<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">c) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">然后我们定义了一些File类，其中File是作为真实的数据存储使用，每一个需要索引的内容都对应一个Filed，（和数据库相比，Field就相当一一条记录的一个属性与其值）。<br />
<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">d) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">然后将Field增加到Document中，其中每个Document可以增加到多个Field对象。然后将所有的Doc交给IndexWriter去创建索引，创建完成后，如图一<br />
</span></span><img alt="" src="http://www.blogjava.net/images/blogjava_net/guming123416/1.gif" border="0" /><br />
<br />
<span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">图一 lucene索引后的文件<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><br />
E) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">然后开始查询，首先使用IndexReader来读取所创建目录下的索引文件，然后创建一个IndexSearch对象，该对象主要功能就是从索引中查询。<br />
</span></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><br />
F) </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><span style="font-family: 宋体">然后定义查询策略，本例中采用queryParse来查询，然后循环，将所有查询的结果打印出来。<br />
</span></span><!--endfragment--></span><!--endfragment-->
 <img src ="http://www.blogjava.net/guming123416/aggbug/262483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-03-27 17:54 <a href="http://www.blogjava.net/guming123416/archive/2009/03/27/262483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lucene（2.4.1）技术研究(1)--lucene技术</title><link>http://www.blogjava.net/guming123416/archive/2009/03/27/262332.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 27 Mar 2009 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2009/03/27/262332.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/262332.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2009/03/27/262332.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/262332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/262332.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2009/03/27/262332.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/262332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2009-03-27 13:18 <a href="http://www.blogjava.net/guming123416/archive/2009/03/27/262332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 下的命令</title><link>http://www.blogjava.net/guming123416/archive/2008/09/12/228649.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 12 Sep 2008 12:25:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2008/09/12/228649.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/228649.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2008/09/12/228649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/228649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/228649.html</trackback:ping><description><![CDATA[<div>
<div><font color="#000000"><strong>一. 启动,关机,登入,登出相关命令</strong><br />
&lt;login&gt; 登录<br />
&lt;logout&gt; 登出<br />
&lt;exit&gt; 登出<br />
&lt;shutdown&gt; 停止系统<br />
&lt;halt&gt; 停止系统<br />
&lt;reboot&gt; 重启动<br />
&lt;poweroff&gt; 切断电源<br />
&lt;sync&gt; 把内存里的内容写入磁盘<br />
&lt;lilo&gt; 安装lilo启动管理程序<br />
&lt;grub&gt; 安装lilo启动管理程序</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>二. Shell相关命令</strong><br />
&lt;chsh&gt; 切换Shell<br />
&lt;history&gt; 显示命令履历<br />
&lt;alias&gt; 设置命令别名<br />
&lt;unalias&gt; 取消命令别名<br />
&lt;which&gt; 显示命令所在位置<br />
&lt;type&gt; 查询命令种类<br />
&lt;echo&gt; 显示字符串或者变量内容<br />
&lt;set&gt; 设置/显示Shell变量<br />
&lt;printenv&gt; 显示环境变量<br />
&lt;export&gt; 设置环境变量<br />
&lt;env&gt; 设置临时环境变量<br />
&lt;unset&gt; 释放环境变量<br />
&lt;setenv&gt; 设置环境变量<br />
&lt;unsetenv&gt; 释放环境变量<br />
&lt;source&gt; 执行文件当中的命令<br />
&lt;man&gt; 查询命令手册<br />
&lt;info&gt; 查询超文本命令手册<br />
&lt;whatis&gt; 显示命令简介<br />
&lt;apropos&gt; 通过关键字查询手册</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>三. 用户管理相关命令</strong><br />
&lt;su&gt; 切换到其他用户<br />
&lt;useradd&gt; 追加用户<br />
&lt;adduser&gt; 追加用户<br />
&lt;userdel&gt; 删除用户<br />
&lt;usermod&gt; 修改用户设置 <br />
&lt;chfn&gt; 修改用户私人信息 <br />
&lt;groupadd&gt; 追加组<br />
&lt;groupdel&gt; 删除组<br />
&lt;groupmod&gt; 修改组设置<br />
&lt;passwd&gt; 更改密码<br />
&lt;whoami&gt; 显示用户名<br />
&lt;logname&gt; 显示登录用户帐号<br />
&lt;users&gt; 显示所有登录用户信息<br />
&lt;who&gt; 查询登录用户信息<br />
&lt;w&gt; 查询登录用户信息<br />
&lt;id&gt; 显示指定用户的ID信息<br />
&lt;groups&gt; 显示指定用户的所属组<br />
&lt;finger&gt; 显示指定用户的个人信息<br />
&lt;mesg&gt; 开关与他人收发消息<br />
&lt;write&gt; 给其他用户发消息<br />
&lt;wall&gt; 给所有用户发消息<br />
&lt;talk&gt; 和其他用户聊天</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>四. 系统消息相关命令</strong><br />
&lt;date&gt; 显示/设置当前时间<br />
&lt;uptime&gt; 显示系统运行时间<br />
&lt;arch&gt; 显示机器的核心构架（如i386）<br />
&lt;uname&gt; 显示操作系统信息<br />
&lt;tty&gt; 显示终端名<br />
&lt;last&gt; 显示登录/登出在履历<br />
&lt;lastb&gt; 显示非法登录信息<br />
&lt;dumpkeys&gt; 显示当前键盘配置<br />
&lt;loadkeys&gt; 变更键盘配置<br />
&lt;df&gt; 查询磁盘使用信息<br />
&lt;du&gt; 查询磁盘使用信息<br />
&lt;dmesg&gt; 显示系统启动消息<br />
&lt;script&gt; 保存输入输出到文件</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>五. 文件操作相关命令</strong><br />
&lt;ls&gt; 显示文件列表<br />
&lt;tree&gt; 显示目录树 <br />
&lt;pwd&gt; 显示当前路径<br />
&lt;cd&gt; 更改当前路径<br />
&lt;pushd&gt; 追加路径到目录堆栈<br />
&lt;popd&gt; 从目录堆栈删除路径<br />
&lt;dirs&gt; 显示目录堆栈的内容<br />
&lt;mkdir&gt; 创建路径<br />
&lt;rmdir&gt; 删除路径<br />
&lt;cp&gt; 复制文件/目录<br />
&lt;rm&gt; 删除文件/目录<br />
&lt;mv&gt; 移动文件/目录，修改文件名<br />
&lt;chown&gt; 更改文件/目录的所有者<br />
&lt;chgrp&gt; 修改文件/目录的所有组<br />
&lt;chmod&gt; 修改文件/目录的权限<br />
&lt;touch&gt; 更改文件时间<br />
&lt;ln&gt; 建立文件/目录链接<br />
&lt;find&gt; 查找文件<br />
&lt;whereis&gt; 显示文件存在的路径名<br />
&lt;file&gt; 查询文件种类<br />
&lt;size&gt; 查询文件大小</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>六. 文件编辑相关命令</strong><br />
&lt;cat&gt; 显示文件内容<br />
&lt;tee&gt; 输出到文件和屏幕<br />
&lt;more&gt; 分屏显示文件内容<br />
&lt;less&gt; 分屏显示文件内容<br />
&lt;head&gt; 显示文件头部内容<br />
&lt;tail&gt; 显示文件尾部内容<br />
&lt;fold&gt; 折叠显示长行<br />
&lt;sort&gt; 排列文件的行<br />
&lt;cmp&gt; 比较文件内容<br />
&lt;diff&gt; 显示文件差异<br />
&lt;nkf&gt; 更改日语文件编码<br />
&lt;dd&gt; 变更文件之后复制<br />
&lt;wc&gt; 统计文本单词数，文件大小等<br />
&lt;split&gt; 分割文件<br />
&lt;paste&gt; 以行连接文件<br />
&lt;join&gt; 以字段连接文件<br />
&lt;grep&gt; 查询文字<br />
&lt;uniq&gt; 过滤重复部分显示文件内容<br />
&lt;tr&gt; 替换文字<br />
&lt;sed&gt; 替换文字</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>七. 压缩/解压缩相关命令</strong><br />
&lt;ar&gt; 压缩/解压缩文件<br />
&lt;tar&gt; 压缩/解压缩文件<br />
&lt;compress&gt; 压缩/解压缩文件<br />
&lt;uncompress&gt; 解压缩<br />
&lt;gzip&gt; 压缩/解压缩文件<br />
&lt;gunzip&gt; 解压缩<br />
&lt;zcat&gt; 显示压缩文件的内容<br />
&lt;lha&gt; 压缩/解压缩文件<br />
&lt;uuencode&gt; 把二进制文件编码为文本文件<br />
&lt;uudecode&gt; 把经过编码的文本文件还原为二进制文件</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>八. MS-DOS工具集[mtools]命令</strong><br />
&lt;mdir&gt; 显示文件列表<br />
&lt;mcd&gt; 改变当前目录<br />
&lt;mmd&gt; 新建目录<br />
&lt;mrd&gt; 删除目录<br />
&lt;mdeltree&gt; 删除目录树<br />
&lt;mcopy&gt; 复制文件<br />
&lt;mdel&gt; 删除文件<br />
&lt;mmove&gt; 移动文件<br />
&lt;mren&gt; 更改文件或目录名<br />
&lt;mattrib&gt; 修改文件属性<br />
&lt;mtype&gt; 显示文件内容<br />
&lt;mdu&gt; 查询文件或目录大小<br />
&lt;minfo&gt; 显示磁盘信息<br />
&lt;mformat&gt; 以MS-DOS方式格式化磁盘<br />
&lt;mlabel&gt; 设置磁盘标签</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>九. 控制外部设备相关命令</strong><br />
&lt;mount&gt; mount上设备<br />
&lt;umount&gt; 解除已经mount上的设备<br />
&lt;eject&gt; 弹出（CD/DVD等）<br />
&lt;fdformat&gt; 格式化软盘<br />
&lt;fdisk&gt; 配置/显示硬盘分区<br />
&lt;mkfs&gt; 格式化磁盘分区<br />
&lt;fsck&gt; 检查/修复磁盘错误<br />
&lt;lpr&gt; 打印到打印机<br />
&lt;lprm&gt; 中断打印任务<br />
&lt;lpq&gt; 显示打印任务的状态<br />
&lt;lpc&gt; 管理/控制打印任务<br />
&lt;ifconfig&gt; 显示/设定NIC配置</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>十. 进程及任务管理相关命令</strong><br />
&lt;ps&gt; 显示正在运行的进程<br />
&lt;jobs&gt; 显示后台运行任务<br />
&lt;fg&gt; 把任务切换到前台<br />
&lt;bg&gt; 把任务切换到后台<br />
&lt;kill&gt; 中止进程或任务<br />
&lt;killall&gt; 中止进程或任务<br />
&lt;wait&gt; 等待进程或任务的结束<br />
&lt;at&gt; 设置定时执行任务<br />
&lt;atq&gt; 显示尚未执行的任务<br />
&lt;atrm&gt; 删除定时执行任务<br />
&lt;batch&gt; 在系统负荷减轻的时候执行任务<br />
&lt;nice&gt; 改变优先度并执行任务<br />
&lt;nohup&gt; 在后台执行任务，Logout之后也不退出<br />
&lt;sleep&gt; 休眠一定的时间</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>十一. 网络管理相关命令</strong><br />
&lt;netstat&gt; 显示当前网络连接状况<br />
&lt;route&gt; 显示/设置路由<br />
&lt;host&gt; 显示网络主机情况<br />
&lt;hostname&gt; 显示/设置当前主机的名字<br />
&lt;ping&gt; 确认和远程机器的连接情况<br />
&lt;traceroute&gt; 显示路由信息<br />
&lt;rwho&gt; 查询网上机器的登陆用户<br />
&lt;ruptime&gt; 查询网上机器的系统运行时间<br />
&lt;rlogin&gt; 登陆到远程机器<br />
&lt;telnet&gt; 用telnet登陆到远程机器<br />
&lt;rsh&gt; 给远程机器发送命令<br />
&lt;rcp&gt; 在远程机器之间复制文件<br />
&lt;mail&gt; 收取邮件<br />
&lt;sendmail&gt; 发送邮件<br />
&lt;mailq&gt; 确认邮件队列<br />
&lt;ftp&gt; 用ftp传输文件</font></div>
<br />
<div><font color="#000000"></font></div>
<br />
<div><font color="#000000"><strong>十二. 其他命令</strong><br />
&lt;cal&gt; 显示日历<br />
&lt;clear&gt; 清屏<br />
&lt;gcc&gt; 编译C语言代码<br />
&lt;as&gt; 汇编<br />
&lt;bc&gt; 计算<br />
&lt;rpm&gt; Redhat的包管理<br />
&lt;dpkg&gt; Debian的包管理<br />
&lt;installpkg&gt; Slackware的包安装（删除命令则是removepkg）<br />
&lt;XF86Setup,turboxfg,Xconfigurator&gt; 配置 X 服务器<br />
&lt;startx&gt; 启动 X-Window 系统</font></div>
<br />
<div><font color="#000000">附：组合命令<br />
重定向，如<br />
$ ls -l /bin &gt; ls-output<br />
$ more ls-output</font></div>
<br />
<div><font color="#000000">管道命令，如<br />
$ cat file1 file2 | sort | uniq</font></div>
<br />
<div><font color="#000000">经常被用于管道的命令<br />
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc</font></div>
</div>
<img src ="http://www.blogjava.net/guming123416/aggbug/228649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2008-09-12 20:25 <a href="http://www.blogjava.net/guming123416/archive/2008/09/12/228649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring源代码学习（2.0.5）一（BeanFactory）</title><link>http://www.blogjava.net/guming123416/archive/2008/07/06/212916.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sun, 06 Jul 2008 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2008/07/06/212916.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/212916.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2008/07/06/212916.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/212916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/212916.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/guming123416/archive/2008/07/06/212916.html'>阅读全文</a><img src ="http://www.blogjava.net/guming123416/aggbug/212916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2008-07-06 22:04 <a href="http://www.blogjava.net/guming123416/archive/2008/07/06/212916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中关于包含页面中session的问题</title><link>http://www.blogjava.net/guming123416/archive/2008/04/11/192149.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 11 Apr 2008 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2008/04/11/192149.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/192149.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2008/04/11/192149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/192149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/192149.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在做项目中使用struts2，本来以为在.action中包含的另外的JSP页面中不能通过session.getAttribute()获得相应的属性值，但是项目的小组成员没有考虑到哪么详细，就直接在被包含页面中使用session.getAttribute()获得该属性值，竟然正常获得该属性值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仔细想想，是可以的，在这个页面中是直接调用jsp，服务器首先将该jsp编译，而本页只是一个连接地址。而页面加载就是直接加载编译时间，被包含的jsp页面上的信息就直接从servlet，而不是在action中，<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp;&nbsp;&nbsp;<strong>看来以后做任何事情都要好好的测试后才能得出结论</strong></span><br />
 <img src ="http://www.blogjava.net/guming123416/aggbug/192149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2008-04-11 12:42 <a href="http://www.blogjava.net/guming123416/archive/2008/04/11/192149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2遇到的怪问题</title><link>http://www.blogjava.net/guming123416/archive/2007/12/05/struts2.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Wed, 05 Dec 2007 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/12/05/struts2.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/165375.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/12/05/struts2.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/165375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/165375.html</trackback:ping><description><![CDATA[最近学习struts2，以前曾经学习过webwork2.2，因此学习起来感觉还是蛮快的，不过，最近遇到一个问题。调试了好多天，终于搞定了，问题描述：（我做的是一个登陆）<br />
首先输入用户名、密码和验证码，如果有任何一个输入错误，action执行后，返回到登陆页面，再次修改用户名、密码和验证码后，在次提交。系统竟然没有反应，<br />
错误前代码：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(admin.getSadminName()==null||admin.getSadminName().length()&nbsp;&lt;&nbsp;1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("admin.sadminName",&nbsp;"用户名错误!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(admin.getSadminPass()==null||admin.getSadminPass().length()&nbsp;&lt;&nbsp;1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("admin.sadminPass",&nbsp;"密码错误！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(vn==null||vn.length()&lt;1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("vn",&nbsp;"验证码输入错误！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ValidateNumber&nbsp;=&nbsp;sessionMap.get("ValidateNumber").toString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info("ValidateNumber="+ValidateNumber);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info("vn="+vn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ValidateNumber==null||ValidateNumber.length()&lt;1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("vn",&nbsp;"验证码baocun输入错误！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ValidateNumber.equalsIgnoreCase(vn)==false)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("vn",&nbsp;"验证码输11入错误！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tadmin&nbsp;cAdmin&nbsp;=&nbsp;adminService.validateAdmin(admin.getSadminName(),MD5.getString(admin.getSadminPass()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cAdmin==null)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFieldError("admin.sadminName",&nbsp;"用户名或者密码错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("用户名密码错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sessionMap.put(NewsUtil.ADMIN_USERKEY,&nbsp;cAdmin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SUCCESS;<br />
如果是这样的。action只能执行一次，好像action中的参数一直没有释放，所以再次提交，action一直处于运行状态，再次提交，系统不会改变。<br />
如果修改成<br />
&nbsp;&nbsp;&nbsp;&nbsp;//检查用户名是不是存在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(NewsUtil.checkNull(admin.getSadminName())){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("admin.sadminName",&nbsp;"您输入的用户名有错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//actionMessage.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addActionMessage("您输入的用户名有错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("您输入的用户名有错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//检查密码是不是空或者null<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(NewsUtil.checkNull(admin.getSadminPass())){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("admin.sadminPass",&nbsp;"您输入的密码不正确");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("您输入的密码不正确");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(NewsUtil.checkNull(vn)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("vn",&nbsp;"您输入验证码错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("您输入验证码错误");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;validateNumber&nbsp;=&nbsp;(String)SessionMap.get("ValidateNumber");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(NewsUtil.checkNull(validateNumber)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("vn",&nbsp;"你的验证码不正确。请重新输入");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("你的验证码不正确。请重新输入");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(validateNumber.equalsIgnoreCase(vn)==false){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("vn",&nbsp;"您输入的验证码不正确。请重新输入");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("您输入的验证码不正确。请重新输入");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tadmin&nbsp;cAdmin&nbsp;=&nbsp;adminService.validate(admin.getSadminName(),&nbsp;MD5.getString(admin.getSadminPass()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cAdmin&nbsp;==&nbsp;null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//addFieldError("admin.sadminName",&nbsp;"对不起，您输入的用户名或者密码有问题");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("对不起，您输入的用户名或者密码有问题");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始更新用户登陆信息的更新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cAdmin.setIloginTime(cAdmin.getIloginTime()+1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cAdmin.setSlastLoginIp(validateNumber)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cAdmin.setSlastLoginTime(new&nbsp;Date());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adminService.update(cAdmin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SessionMap.put(ShopUtil.TADMIN_LOGINED_KEY,&nbsp;cAdmin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SUCCESS;<br />
就OKl了，我在怀疑是不是我使用的版本中有这样的一个bug，
<br />
 <img src ="http://www.blogjava.net/guming123416/aggbug/165375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-12-05 09:35 <a href="http://www.blogjava.net/guming123416/archive/2007/12/05/struts2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷的问题。关于String中replaceAll方法 </title><link>http://www.blogjava.net/guming123416/archive/2007/09/15/145289.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sat, 15 Sep 2007 01:07:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/15/145289.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/145289.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/15/145289.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/145289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/145289.html</trackback:ping><description><![CDATA[<p>今天在解析html时间，在调用页面页面中替换链接时间发生没有错误，程序执行的该步骤，但是就是没有将我要求替换的内容给替换掉。 </p>
<p>这个是需要替换的内容&lt;a href=../../08/19/10483.html&gt;下一篇： PHP+MySQL应用中使用XOR运算加密算法&lt;/a&gt;</p>
<p>不知道是什么原因，replassall竟然不能替换，是找不到源里的数据，还是其他有问题呢？其他页面都能替换掉，就是有1-2个页面不能替换，郁闷。是不是字符编码的问题？有谁知道吗？请赐教<br />
</p>
<br />
我使用indexof("")时间发现里边确实存在。该内容，，我需要替换的字符就是&#8216;&lt;a href=../../08/19/10483.html&gt;下一篇： PHP+MySQL应用中使用XOR运算加密算法&lt;/a&gt;&#8217;，难道是&#8216;../&#8217;的问题<br />
<br />
以前使用split拆分的时间发现&#8216;.&#8217;有时间是失灵的，这个应该是关键标示的原因，但是这个replaceall竟然也不能，其他链接和该链接是一致的，替换的只是名称和地址，其他都是一样的 <br />
<img src ="http://www.blogjava.net/guming123416/aggbug/145289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-15 09:07 <a href="http://www.blogjava.net/guming123416/archive/2007/09/15/145289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript中的各种输入限制 (转帖)</title><link>http://www.blogjava.net/guming123416/archive/2007/09/10/144017.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Mon, 10 Sep 2007 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/10/144017.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/144017.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/10/144017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/144017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/144017.html</trackback:ping><description><![CDATA[<p>1.文本框输入限制 </p>
<p>实现限制输入大、小写英文，数字，浮点小数，日期，中文，部分英文，部分中文等众多功能。直接加入到html代码中即可使用。</p>
<p>&lt;script&gt;<br />
function regInput(obj, reg, inputStr)<br />
{<br />
var docSel = document．selection.createRange()<br />
if (docSel.parentElement().tagName != "INPUT") return false<br />
oSel = docSel.duplicate()<br />
oSel.text = ""<br />
var srcRange = obj.createTextRange()<br />
oSel.setEndPoint("StartToStart", srcRange)<br />
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)<br />
return reg.test(str)<br />
}<br />
&lt;/script&gt;</p>
<p>小写英文：&lt;xmp style= "display:inline"&gt; &lt;/xmp&gt;<br />
&lt;input onkeypress = "return regInput(this, /^[a-z]*$/, String.fromCharCode(event.keyCode))"<br />
onpaste = "return regInput(this, /^[a-z]*$/, window.clipboardData.getData('Text'))"<br />
ondrop = "return regInput(this, /^[a-z]*$/, event.dataTransfer.getData('Text'))"<br />
style="ime-mode:Disabled"&gt;&lt;br&gt;</p>
<p>大写英文：&lt;xmp style= "display:inline"&gt; &lt;/xmp&gt;<br />
&lt;input onkeypress = "return regInput(this, /^[A-Z]*$/, String.fromCharCode(event.keyCode))"<br />
onpaste = "return regInput(this, /^[A-Z]*$/, window.clipboardData.getData('Text'))"<br />
ondrop = "return regInput(this, /^[A-Z]*$/, event.dataTransfer.getData('Text'))"<br />
style="ime-mode:Disabled"&gt;<br />
&lt;br&gt;</p>
<p>任意数字：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;<br />
&lt;input onkeypress = "return regInput(this, /^[0-9]*$/, String.fromCharCode(event.keyCode))"<br />
onpaste = "return regInput(this, /^[0-9]*$/, window.clipboardData.getData('Text'))"<br />
ondrop = "return regInput(this, /^[0-9]*$/, event.dataTransfer.getData('Text'))"<br />
style="ime-mode:Disabled"&gt;&lt;br&gt;</p>
<p>限2位小数：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;<br />
&lt;input onkeypress = "return regInput(this, /^\d*\.?\d{0,2}$/, <br />
String.fromCharCode(event.keyCode))"<br />
onpaste = "return regInput(this, /^\d*\.?\d{0,2}$/, <br />
window.clipboardData.getData('Text'))"<br />
ondrop = "return regInput(this, /^\d*\.?\d{0,2}$/, <br />
event.dataTransfer.getData('Text'))"<br />
style="ime-mode:Disabled"&gt; </p>
<p>如: 123.12&lt;br&gt;</p>
<p>日　 期：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;</p>
<p>&lt;input onkeypress = "return regInput(this, /^\d{1,4}<br />
([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/, <br />
String.fromCharCode(event.keyCode))"</p>
<p>onpaste = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}<br />
([-\/](\d{1,2})?)?)?)?$/, <br />
window.clipboardData.getData('Text'))"</p>
<p>ondrop = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}<br />
([-\/](\d{1,2})?)?)?)?$/, <br />
event.dataTransfer.getData('Text'))"</p>
<p>style="ime-mode:Disabled"&gt; </p>
<p>如: 2002-9-29&lt;br&gt;</p>
<p>任意中文：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;</p>
<p>&lt;input onkeypress = "return regInput(this, /^$/, <br />
String.fromCharCode(event.keyCode))"</p>
<p>onpaste = "return regInput(this, /^[\u4E00-\u9FA5]*$/, <br />
window.clipboardData.getData('Text'))"</p>
<p>ondrop = "return regInput(this, /^[\u4E00-\u9FA5]*$/, <br />
event.dataTransfer.getData('Text'))"&gt;&lt;br&gt;</p>
<p>部分英文：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;<br />
&lt;input onkeypress = "return regInput(this, /^[a-e]*$/, <br />
String.fromCharCode(event.keyCode))"</p>
<p>onpaste = "return regInput(this, /^[a-e]*$/, <br />
window.clipboardData.getData('Text'))"</p>
<p>ondrop = "return regInput(this, /^[a-e]*$/, <br />
event.dataTransfer.getData('Text'))"</p>
<p>style="ime-mode:Disabled"&gt; </p>
<p>范围: a,b,c,d,e&lt;br&gt;</p>
<p>部分中文：&lt;xmp style="display:inline"&gt; &lt;/xmp&gt;<br />
&lt;script language=javascript&gt;</p>
<p>function checkChinese(oldLength, obj)<br />
{<br />
var oTR = window.document．selection.createRange()<br />
var reg = /[^一二三四五六七八九十]/g<br />
oTR.moveStart("character", -1*(obj.value.length-oldLength))<br />
oTR.text = oTR.text.replace(reg, "")<br />
}<br />
&lt;/script&gt;</p>
<p>&lt;input onkeypress="return false" onkeydown=<br />
"setTimeout('checkChinese('+this.value.length+','+this.uniqueID+')', <br />
1)"</p>
<p>onpaste = "return regInput(this, /^[一二三四五六七八九十]*$/, <br />
window.clipboardData.getData('Text'))"</p>
<p>ondrop = "return regInput(this, /^[一二三四五六七八九十]*$/,<br />
event.dataTransfer.getData('Text'))"&gt; </p>
<p>范围: 一二三四五六七八九十&lt;br&gt;</p>
<p>2.不能展开右键，不能全选，不能复制的实现 </p>
<p>&lt;body oncontextmenu="window.event.returnvalue=false" <br />
onkeypress="window.event.returnvalue=false" <br />
onkeydown="window.event.returnvalue=false" <br />
onkeyup="window.event.returnvalue=false" <br />
ondragstart="window.event.returnvalue=false" <br />
onselectstart="event.returnvalue=false"&gt;<br />
... <br />
&lt;/body&gt;</p>
<p>3.禁止页面正文内容被选取 </p>
<p>&lt;body oncontextmenu="return false" ondragstart="return false" <br />
onselectstart ="return false" onselect="document．selection.empty()" <br />
oncopy="document．selection.empty()" onbeforecopy="return false"onmouseup="document．selection.empty()"&gt;</p>
<p>4.避免别人把网页放在框架中 </p>
<p>&lt;script language=&#8220;javascript&#8221;&gt;&lt;!--if (self!=top){top.location=self.location;}--&gt;&lt; /script&gt;</p>
<p>5.禁示查看源代码 </p>
<p>&lt;frameset&gt; <br />
&lt;frame src="你要保密的文件的URL"&gt; <br />
&lt;/frameset&gt;</p>
<p>6.关闭输入法 </p>
<p>&lt;input style="ime-mode:disabled"&gt;</p>
<p>7.禁止图片下载 </p>
<p>在这里的最后加入： </p>
<p>oncontextmenu="return false" ondragstart="return false" onselectstart="return <br />
false" scroll="auto"</p>
<p>8.禁止缓存 </p>
<p>在HEAD里加入： </p>
<p>&lt;meta http-equiv="Expires" CONTENT="0"&gt; <br />
&lt;meta http-equiv="Cache-Control" CONTENT="no-cache"&gt; <br />
&lt;meta http-equiv="Pragma" CONTENT="no-cache"&gt;</p>
<img src ="http://www.blogjava.net/guming123416/aggbug/144017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-10 15:43 <a href="http://www.blogjava.net/guming123416/archive/2007/09/10/144017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转帖）利用xfire开发webservice专题[一]</title><link>http://www.blogjava.net/guming123416/archive/2007/09/07/143322.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 07 Sep 2007 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/07/143322.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/143322.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/07/143322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/143322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/143322.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 基于Web Service的集成技术作为一种新的面向函数和方法的应用集成技术，在很大程度上解决了原有集成技术在Internet远程通信方面的问题。Web Service基于XML文档进行服务描述，服务请求和反馈结果，可以在Internet上通过HTTP协议进行传递，很容易的被访问和返回结果。同时，由于Web Service的相关标准都是W3C的开放协议，与平台和操作系统无关，不同的平台和操作系统上的Web Service的实现在很大程度上可以做到互操作，这就使异构平台上应用的集成变得很容易。此外，过去使用的基于RPC（RPC - Remote Procedure Call，远程过程调用）和API（Application Programming Interface，程序编程接口）的集成技术都是一种函数级的静态解决方案（即使它们在客户机和服务器通讯时使用XML）；Web Service则是一种动态的集成方案，所有的服务都可以通过UDDI标准动态地被发现、绑定和使用，容易适应系统的变动，提高系统的灵活性和伸缩性。<br />
<br />
　　使用Web Service技术进行系统集成和过去使用其它面向函数和方法的技术进行集成类似：在进行初始设计的时候主要考虑不同应用之间，系统不同模块之间消息及数据传递的需求；根据具体需求设置相应的接口，描述接口特性；针对不同应用的平台选择相应的Web Service组件，进行相应设置；实现不同应用的接口，进行相应调试；实际运行，应用程序间进行协同调试。
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webService主要是可以解决站点间的数据共享问题，把复杂的业务方法，封装在被调用的站点上面，这样不管是WEB站点和其他的应用程序（当然要能保证上网）都可以访问到暴露的方法。</p>
<p>myeclipse5.1支持xfire支持的非常棒。这里讲解一个简单的例子， <br />
此文章为引用文章，仅做保留，供学习参考使用 </p>
<br />
<img src ="http://www.blogjava.net/guming123416/aggbug/143322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-07 09:51 <a href="http://www.blogjava.net/guming123416/archive/2007/09/07/143322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转帖)利用xfire开发webservice专题[二]</title><link>http://www.blogjava.net/guming123416/archive/2007/09/07/143321.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 07 Sep 2007 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/07/143321.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/143321.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/07/143321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/143321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/143321.html</trackback:ping><description><![CDATA[.首先建立一个web service工程：
<p><img src="http://www.blogjava.net/images/blogjava_net/killme2008/new_wizard1.gif" border="0"  alt="" /></p>
<p><img src="http://www.blogjava.net/images/blogjava_net/killme2008/new_wizard2.gif" border="0"  alt="" /></p>
<p><img src="http://www.blogjava.net/images/blogjava_net/killme2008/new_wizard3.gif" border="0"  alt="" /></p>
<p><img src="http://www.blogjava.net/images/blogjava_net/killme2008/4.BMP" border="0"  alt="" /></p>
<p>点击finish之后，myeclipse自动帮你生成services.xml以及web应用目录结构，其中的services.xml是你导出服务的配置文件，注意在WEB-INF/web.xml文件中配置了xfire自己的</p>
<p>servlet.</p>
<p>&nbsp;</p>
<div class="code_title">代码</div>
<div class="code_div">
<div class="bar"></div>
<p class="alt"><span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span></span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>XFireServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span class="tag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>org.codehaus.xfire.transport.http.XFireConfigurableServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span class="tag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>0</span><span class="tag">&lt;/</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span class="tag">&nbsp;&nbsp;&nbsp; &lt;/</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>XFireServlet</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span class="tag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/services/*</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;<br />
</span><span class="tag">&nbsp;&nbsp;&nbsp; &lt;/</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></p>
</div>
<p>&nbsp;</p>
<p>2.接下来，现在编写要导出的pojo类，首先是接口： <br />
过程：File&gt;New&gt;Other&gt;MyEclipse&gt;Web Service<br />
选择：Create web service from Java bean，把Create new javabean也勾上<br />
</p>
<div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/ecspell/pic/item/d5067af0965c67cb7931aad9.jpg" border="0" small="0"  alt="" /></div>
<img src ="http://www.blogjava.net/guming123416/aggbug/143321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-07 09:51 <a href="http://www.blogjava.net/guming123416/archive/2007/09/07/143321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转帖)利用xfire开发webservice专题[三]</title><link>http://www.blogjava.net/guming123416/archive/2007/09/07/143320.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 07 Sep 2007 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/07/143320.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/143320.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/07/143320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/143320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/143320.html</trackback:ping><description><![CDATA[<div class="cnt">
<p>3。在导航页面中，输入</p>
<p>web service name:&nbsp;&nbsp; HelloWorldTest<br />
java package : services<br />
services Interface : IHelloWorldTest<br />
services impl.class :HelloWorldTestImpl</p>
<p>其他的默认，点finish<br />
最后可以看到Web Services&nbsp;&nbsp; 下面的services.xml的内容如下<br />
&lt;beans xmlns="<a href="http://xfire.codehaus.org/config/1.0">http://xfire.codehaus.org/config/1.0</a>"&gt; <br />
&lt;service&gt;<br />
&nbsp;&nbsp; &lt;name&gt;HelloWorldTest&lt;/name&gt;<br />
&nbsp;&nbsp; &lt;serviceClass&gt;services.IHelloWorldTest&lt;/serviceClass&gt;<br />
&nbsp;&nbsp; &lt;implementationClass&gt;<br />
&nbsp;&nbsp;&nbsp; services.HelloWorldTestImpl<br />
&nbsp;&nbsp; &lt;/implementationClass&gt;<br />
&nbsp;&nbsp; &lt;style&gt;wrapped&lt;/style&gt;<br />
&nbsp;&nbsp; &lt;use&gt;literal&lt;/use&gt;<br />
&nbsp;&nbsp; &lt;scope&gt;application&lt;/scope&gt;<br />
&lt;/service&gt;<br />
&lt;/beans&gt;</p>
<p>4。services包中的文件：</p>
<p>IHelloWorldTest.java<br />
-----------------------------------------------<br />
package services;<br />
//Generated by MyEclipse</p>
<p>public interface IHelloWorldTest {<br />
<br />
public String sayHello(String message);<br />
<br />
}<br />
----------------------------------------------------------</p>
<p>HelloWorldTestImpl.java<br />
----------------------------------------------------<br />
package services;<br />
//Generated by MyEclipse</p>
<p>public class HelloWorldTestImpl implements IHelloWorldTest {<br />
<br />
public String sayHello(String message) {<br />
&nbsp;&nbsp; return "Hello,"+message;<br />
}<br />
<br />
}<br />
------------------------------------------------------------</p>
<p>到此为止webServices编码工作完成，现在开始部署到tomcat这里省略。</p>
<p>部署好后可以测试下：<br />
<em><a href="http://localhost:8080/HelloWorld/services/HelloWorldTest?WSDL">http://localhost:8080/HelloWorld/services/HelloWorldTest?WSDL</a><br />
</em></p>
</div>
<br />
<img src ="http://www.blogjava.net/guming123416/aggbug/143320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-07 09:50 <a href="http://www.blogjava.net/guming123416/archive/2007/09/07/143320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转帖)利用xfire开发webservice专题[四]</title><link>http://www.blogjava.net/guming123416/archive/2007/09/07/143319.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 07 Sep 2007 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/09/07/143319.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/143319.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/09/07/143319.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/143319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/143319.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt">
            <p>新建工程useWebService，并且建立client和services包<br />
            bulid path中导入，XFire 1.1 core libraries 和XFire 1.1 HTTP client libraries.</p>
            <p>SayHello.java<br />
            ----------------------------------------<br />
            package client;<br />
            import java.net.MalformedURLException;</p>
            <p>import org.codehaus.xfire.XFireFactory;<br />
            import org.codehaus.xfire.client.XFireProxyFactory;<br />
            import org.codehaus.xfire.service.Service;<br />
            import org.codehaus.xfire.service.binding.ObjectServiceFactory;</p>
            <p>import services.IHelloWorldTest;</p>
            <p>public class SayHello {<br />
            public String say(String name)<br />
            {<br />
            &nbsp;&nbsp;&nbsp; String result="";<br />
            &nbsp;&nbsp;&nbsp; Service srvcModel = new ObjectServiceFactory().create(IHelloWorldTest.class); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XFireProxyFactory factory =&nbsp;&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new XFireProxyFactory(XFireFactory.newInstance().getXFire()); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String helloWorldURL = "<a href="http://localhost:8888/HelloWorld/services/HelloWorldTest">http://localhost:8080/HelloWorld/services/HelloWorldTest</a>"; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IHelloWorldTest srvc = (IHelloWorldTest)factory.create(srvcModel, helloWorldURL); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = srvc.sayHello(name); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (MalformedURLException e) { <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;}<br />
            }<br />
            }<br />
            --------------------------------------------------------------</p>
            <p>IHelloWorldTest .java<br />
            ---------------------------------------------------------------<br />
            package services;</p>
            <p>public interface IHelloWorldTest {<br />
            public String sayHello(String message);<br />
            }<br />
            -----------------------------------------------------------------</p>
            <p>创建index.jsp，body部分<br />
            -----------------------</p>
            <p>&lt;form name="form1" action="say.jsp" method="POST"&gt;<br />
            您的大名：&lt;input name="userName" type="text"/&gt; &lt;input value="提交" type="submit"/&gt; <br />
            &lt;/form&gt;<br />
            -------------------------------</p>
            <p>创建say.jsp,body部分<br />
            ----------------------------------------------------------------<br />
            &lt;%String name=(String)request.getParameter("userName"); <br />
            String result=new SayHello().say(name);<br />
            %&gt;<br />
            webService远程调用结果： &lt;%=result %&gt;<br />
            ------------------------------------------------------------------------<br />
            运行下测试！OK</p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/guming123416/aggbug/143319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-09-07 09:49 <a href="http://www.blogjava.net/guming123416/archive/2007/09/07/143319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手把手教你制作Google Sitemap(详细制作教程和协议讲解)</title><link>http://www.blogjava.net/guming123416/archive/2007/08/28/140579.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 28 Aug 2007 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/08/28/140579.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/140579.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/08/28/140579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/140579.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/140579.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">Google SiteMap Protocol是Google自己推出的一种站点地图协议，此协议文件基于早期的robots.txt文件协议，并有所升级。在Google官方指南中指出加入了Google SiteMap文件的网站将更有利于Google网页爬行机器人的爬行索引，这样将提高索引网站内容的效率和准确度。文件协议应用了简单的XML格式，一共用到6个标签，其中关键标签包括链接地址、更新时间、更新频率和索引优先权。</p>
Google SiteMap文件生成后格式如下： <xmp><urlset xmlns="http://www.google.com/schemas/sitemap
/0.84">
<url>
<loc>http://duduwolf.winzheng.com</loc>
<lastmod>2005-06-03T04:20-08:00</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://duduwolf.winzheng.com/post/140.html</loc>
<lastmod>2005-06-02T20:20:36Z</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>
</xmp>XML标签
<ul>
    <li>changefreq:页面内容更新频率。
    <li>lastmod:页面最后修改时间
    <li>loc:页面永久链接地址
    <li>priority:相对于其他页面的优先权
    <li>url:相对于前4个标签的父标签
    <li>urlset:相对于前5个标签的父标签 </li>
</ul>
我将一句一句分解讲解这个xml文件的每一个标签：
<ol>
    <li>&lt;urlset xmlns="http://www.google.com/schemas/sitemap/0.84"&gt;<br>这一行定义了此xml文件的命名空间，相当于网页文件中的&lt;html&gt;标签一样的作用。
    <li><xmp><url></xmp>这是具体某一个链接的定义入口，你所希望展示在SiteMap文件中的每一个链接都要用&lt;url&gt;和&lt;/url&gt;包含在里面，这是必须的。
    <li><xmp><loc>http://duduwolf.winzheng.com</loc></xmp>用&lt;loc&gt;描述出具体的链接地址，这里需要注意的是链接地址中的一些特殊字符必须转换为XML(HTML)定义的转义字符，如下表：
    <table cellSpacing=0 cellPadding=2 border=1>
        <tbody>
            <tr>
                <th colSpan=2 rowSpan=2>字符</th>
                <th colSpan=2>转义后的字符</th>
            </tr>
            <tr>
                <th>HTML字符</th>
                <th>字符编码</th>
            </tr>
            <tr>
                <td noWrap width=125>and(和)</td>
                <td width=125>&amp;</td>
                <td width=75>&amp;amp;</td>
                <td width=75>&#38;</td>
            </tr>
            <tr>
                <td noWrap width=125>单引号</td>
                <td width=125>&amp;apos;</td>
                <td width=75>&amp;apos;</td>
                <td width=75>&#39;</td>
            </tr>
            <tr>
                <td noWrap width=125>双引号</td>
                <td width=125>"</td>
                <td width=75>&amp;quot;</td>
                <td width=75>&#34;</td>
            </tr>
            <tr>
                <td noWrap width=125>大于号</td>
                <td width=125>&gt;</td>
                <td width=75>&amp;gt;</td>
                <td width=75>&#62;</td>
            </tr>
            <tr>
                <td noWrap width=125>小于号</td>
                <td width=125>&lt;</td>
                <td width=75>&amp;lt;</td>
                <td width=75>&#60;</td>
            </tr>
        </tbody>
    </table>
    <li><xmp><lastmod>2005-06-03T04:20:32-08:00</lastmod></xmp>&lt;lastmod&gt;是用来指定该链接的最后更新时间，这个很重要。Google的机器人会在索引此链接前先和上次索引记录的最后更新时间进行比较，如果时间一样就会跳过不再索引。所以如果你的链接内容基于上次Google索引时的内容有所改变，应该更新该时间，让Google下次索引时会重新对该链接内容进行分析和提取关键字。这里必须用<a title="ISO 8601时间格式详细说明" href="http://www.w3.org/TR/NOTE-datetime"><u><font color=#0000ff>ISO 8601</font></u></a>中指定的时间格式进行描述，格式化的时间格式如下：
    <ul style="LIST-STYLE-TYPE: disc">
        <li>年：YYYY(2005)
        <li>年和月：YYYY-MM(2005-06)
        <li>年月日：YYYY-MM-DD(2005-06-04)
        <li>年月日小时分钟：YYYY-MM-DDThh:mmTZD(2005-06-04T10:37+08:00)
        <li>年月日小时分钟秒：YYYY-MM-DDThh:mmTZD(2005-06-04T10:37:30+08:00) </li>
    </ul>
    这里需注意的是TZD，TZD指定就是本地时间区域标记，像中国就是+08:00了
    <li><xmp><changefreq>always</changefreq></xmp>用这个标签告诉Google此链接可能会出现的更新频率，比如首页肯定就要用always(经常)，而对于很久前的链接或者不再更新内容的链接就可以用yearly(每年)。这里可以用来描述的单词共这几个："always", "hourly", "daily", "weekly", "monthly", "yearly"，具体含义我就不用解释了吧，光看单词的意思就明白了。
    <li><xmp>
    <priority>1.0</priority>
    </xmp>&lt;priority&gt;是用来指定此链接相对于其他链接的优先权比值，此值定于0.0 - 1.0之间
    <li>还有&lt;/url&gt;和&lt;/urlset&gt;，这两个就是来关闭xml标签的，这和HTML中的&lt;/body&gt;和&lt;/html&gt;是一个道理
    <li><strong>另外需要注意的是</strong>，这个xml文件必须是utf-8的编码格式，不管你是手动生成还是通过代码生成，建议最好检查一下xml文件是否是utf-8编码，最简单的方法就是用记事本打开xml然后另存为时选择编码(或转换器)为UTF-8。 </li>
</ol>
<img src ="http://www.blogjava.net/guming123416/aggbug/140579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-08-28 16:36 <a href="http://www.blogjava.net/guming123416/archive/2007/08/28/140579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用DBCP建立的连接池。（直接使用在应用程序用）</title><link>http://www.blogjava.net/guming123416/archive/2007/08/28/140313.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 28 Aug 2007 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/08/28/140313.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/140313.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/08/28/140313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/140313.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/140313.html</trackback:ping><description><![CDATA[<p>由于在JAVA自动获得新闻，没有建立web的环境，将建立的服务器放置在一台服务器上，数据库放在另一台服务器上，结果造成使用JDBC速度缓慢，因此修改成连接池：<br><br>import java.sql.Connection;<br>import java.sql.DriverManager;<br>import java.sql.SQLException;</p>
<p>import org.apache.commons.dbcp.ConnectionFactory;<br>import org.apache.commons.dbcp.DriverManagerConnectionFactory;<br>import org.apache.commons.dbcp.PoolableConnectionFactory;<br>import org.apache.commons.dbcp.PoolingDriver;<br>import org.apache.commons.pool.ObjectPool;<br>import org.apache.commons.pool.impl.GenericObjectPool;<br>import org.apache.log4j.Logger;</p>
<p>/**<br>&nbsp;* @author Administrator<br>&nbsp;*<br>&nbsp;*/<br>public class DBConnectionFactory {<br>&nbsp;/**<br>&nbsp; * Logger for this class<br>&nbsp; */<br>&nbsp;private static final Logger logger = Logger<br>&nbsp;&nbsp;&nbsp;.getLogger(DBConnectionFactory.class);</p>
<p>&nbsp;private static ObjectPool connectionPool=null; <br>&nbsp;private static String sqlJdbc = ""; <br>&nbsp;&nbsp;&nbsp; private static String sqlUser = ""; <br>&nbsp;&nbsp;&nbsp; private static String sqlPwd = ""; <br>&nbsp;&nbsp;&nbsp; @SuppressWarnings("unchecked")<br>&nbsp;private static Class driverClass=null; </p>
<p><br>&nbsp;&nbsp;&nbsp; public static void proDBConnectionFactory(){<br>&nbsp;&nbsp;&nbsp; &nbsp;if(sqlJdbc.equals("")){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;sqlJdbc = "jdbc:jtds:sqlserver://27.0.0.1:1433/finance;tds=8.0;lastupdatecount=true";<br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp; &nbsp;if(sqlUser.equals("")){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;sqlUser = "sa";<br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp; &nbsp;if(sqlPwd.equals("")){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;sqlPwd = "11111";<br>&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp; &nbsp;initDataSource();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; public synchronized static void initDataSource(){ <br>&nbsp;&nbsp;&nbsp; &nbsp; if(driverClass == null){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;driverClass = Class.forName("net.sourceforge.jtds.jdbc.Driver");<br>&nbsp;&nbsp;&nbsp;} catch (ClassNotFoundException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;logger.error("在注册驱动名称的时间发生错误："+e.getMessage(),e);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp; &nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp; if(connectionPool == null){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; setupDriver(sqlJdbc);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //printDriverStats(); <br>&nbsp;&nbsp;&nbsp; &nbsp; }else{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; System.out.print("连接池已经存在");<br>&nbsp;&nbsp;&nbsp; &nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp; try { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // printDriverStats(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; public static Connection getConn(){<br>&nbsp;&nbsp;&nbsp; &nbsp; proDBConnectionFactory();<br>&nbsp;&nbsp;&nbsp; &nbsp; Connection conn = null;<br>&nbsp;&nbsp;&nbsp; &nbsp; try { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:FinanceDBPool"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch(SQLException e) { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return conn; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; public static void printDriverStats() throws Exception { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjectPool connectionPool = driver.getConnectionPool("FinanceDBPool"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("活动的连接: " + connectionPool.getNumActive()); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("空闲的连接: " + connectionPool.getNumIdle()); <br>&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; public static void setupDriver(String connectURI){<br>&nbsp;&nbsp;&nbsp; &nbsp; try {<br>&nbsp;&nbsp;&nbsp;connectionPool = new GenericObjectPool(null); <br>&nbsp;&nbsp;&nbsp; ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd); <br>&nbsp;&nbsp;&nbsp; @SuppressWarnings("unused")<br>&nbsp;&nbsp;&nbsp;PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true); <br>&nbsp;&nbsp;&nbsp; Class.forName("org.apache.commons.dbcp.PoolingDriver"); <br>&nbsp;&nbsp;&nbsp; PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");<br>&nbsp;&nbsp;&nbsp; //driver.registerPool("FinanceDBPool",connectionPool);<br>&nbsp;&nbsp;&nbsp; driver.registerPool("FinanceDBPool",connectionPool);</p>
<p>&nbsp;&nbsp;} catch (ClassNotFoundException e) {<br>&nbsp;&nbsp;&nbsp;logger.error("注册连接池的时间发生错误:"+e.getMessage(),e);<br>&nbsp;&nbsp;} catch (SQLException e) {<br>&nbsp;&nbsp;&nbsp;logger.error("注册连接池的时间发生错误:"+e.getMessage(),e);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;</p>
<img src ="http://www.blogjava.net/guming123416/aggbug/140313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-08-28 09:47 <a href="http://www.blogjava.net/guming123416/archive/2007/08/28/140313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用myeclipse6.0的问题</title><link>http://www.blogjava.net/guming123416/archive/2007/08/26/139645.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sun, 26 Aug 2007 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/08/26/139645.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/139645.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/08/26/139645.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/139645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/139645.html</trackback:ping><description><![CDATA[昨天下载了myeclipse6.0.试用起来，感觉很不错，，使用ewebedit的的时间，输入代码：&lt;input name="tNewsContent" type="hidden" id="tNewsContent"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;IFRAME ID="eWebEditor1" src="htmledit/eWebEditor.jsp?id=tNewsContent&amp;style=standard&amp;savepathfilename=nImgPath" frameborder="0" scrolling="no" width="650" height="500"&gt;&lt;/IFRAME&gt; 在保存文件的时间，eclipse自动关闭了，我重新测试一下，还是一样的结果，不知道是我系统的问题还是myeclipse的问题。我于是替换成myeclipse5.5的，一切正常了，看来应该是myeclipse6.0的一个小bug吧 <br><br>今天早晨myeclipse自动升级了，发现这个功能已经修复了， 但是再次使用的时间，还是自动关闭了，艾！看来版本还是要稳定后才能使用啊，还一位惊天在自动升级已经更新了该功能<br>真晕
<img src ="http://www.blogjava.net/guming123416/aggbug/139645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-08-26 22:29 <a href="http://www.blogjava.net/guming123416/archive/2007/08/26/139645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经历一些繁忙的工作，开始学习webwork.</title><link>http://www.blogjava.net/guming123416/archive/2007/07/27/132763.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 27 Jul 2007 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/07/27/132763.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/132763.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/07/27/132763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/132763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/132763.html</trackback:ping><description><![CDATA[<p>最近由于struts2比较流行起来，我开始想学webwork2买了本书《webwork in action》中文版，但是却发现，讲解按照是2.1.7新的，现在都是2.2.6.了，变化最大(一个简单的helloworld例子：)</p>
<p>web.xml<br>&lt;?xml version="1.0" encoding="GB18030"?&gt;<br>&lt;web-app version="2.4" <br>&nbsp;xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>" <br>&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" <br>&nbsp;xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a> <br>&nbsp;<a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br>&nbsp;&lt;filter&gt;<br>&nbsp;&nbsp;&lt;filter-name&gt;webwork&lt;/filter-name&gt;<br>&nbsp;&nbsp;&lt;filter-class&gt;com.opensymphony.webwork.dispatcher.FilterDispatcher&lt;/filter-class&gt;<br>&nbsp;&lt;/filter&gt;<br>&nbsp;&lt;filter-mapping&gt;<br>&nbsp;&nbsp;&lt;filter-name&gt;webwork&lt;/filter-name&gt;<br>&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br>&nbsp;&lt;/filter-mapping&gt;<br>&nbsp; &lt;welcome-file-list&gt;<br>&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br>&nbsp; &lt;/welcome-file-list&gt;<br>&lt;/web-app&gt;<br><br>xwork.xml<br>&lt;!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"<br>"<a href="http://www.opensymphony.com/xwork/xwork-1.0.dtd">http://www.opensymphony.com/xwork/xwork-1.0.dtd</a>"&gt;</p>
<p>&lt;xwork&gt;<br>&nbsp;&lt;include file="webwork-default.xml"&gt;&lt;/include&gt;<br>&nbsp;&lt;package name="default" extends="webwork-default"&gt;<br>&nbsp;&nbsp;&lt;action name="helloWorld" class="cn.javaworker.yeming.action.HelloWorld"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;result name="success"&gt;index.jsp&lt;/result&gt;<br>&nbsp;&nbsp;&nbsp;&lt;result name="input"&gt;hello.jsp&lt;/result&gt;<br>&nbsp;&nbsp;&lt;/action&gt;<br>&nbsp;&lt;/package&gt;<br>&lt;/xwork&gt;<br><br>hello.jsp<br>&lt;%@ taglib prefix="ww" uri="/webwork"%&gt;<br>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br>&lt;html&gt;<br>&nbsp; &lt;head&gt;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;title&gt;Enter you name&lt;/title&gt;<br>&nbsp; &lt;/head&gt;<br>&nbsp; <br>&nbsp; &lt;body&gt;<br>&nbsp;&nbsp;&lt;ww:form action="helloWorld"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;ww:textfield label="please enter user name" name="name"&gt;&lt;/ww:textfield&gt;<br>&nbsp;&nbsp;&nbsp;&lt;input&nbsp; type="submit"/&gt;<br>&nbsp;&nbsp;&lt;/ww:form&gt;<br>&nbsp; &nbsp;&lt;form action="helloWorld.action"&gt;<br>&nbsp; &nbsp;&nbsp; please enter you name:&lt;input type="text" name="name" value="&lt;ww:property value="name"/&gt;"/&gt;<br>&nbsp; &nbsp;&nbsp;&lt;input type="submit"&gt;<br>&nbsp; &nbsp;&lt;/form&gt;<br>&nbsp; &lt;/body&gt;<br>&lt;/html&gt;<br><br>index.jsp<br><br>&lt;%@ taglib prefix="ww" uri="/webwork"%&gt;<br>&lt;html&gt;<br>&nbsp;&lt;head&gt;<br>&nbsp;&nbsp;&lt;title&gt;hello page&lt;/title&gt;<br>&nbsp;&lt;/head&gt;<br>&nbsp;&lt;body&gt;<br>&nbsp;&nbsp;The message generated by my first action is :&lt;ww:property value="message"/&gt;<br>&nbsp;&lt;/body&gt;<br>&lt;/html&gt;<br><br>HelloWorld.java<br><br>package cn.javaworker.yeming.action;</p>
<p>import com.opensymphony.xwork.ActionSupport;</p>
<p>/**<br>* @author $author<br>*/<br>@SuppressWarnings("serial")<br>public class HelloWorld extends ActionSupport{<br>&nbsp;<br>&nbsp;private String message;<br>&nbsp;<br>&nbsp;private String name;<br>&nbsp;/**<br>&nbsp; * @see com.opensymphony.xwork.Action#execute()<br>&nbsp; */<br>&nbsp;public String execute() throws Exception<br>&nbsp;{<br>&nbsp;&nbsp;if(name==null||name.equals("")||name.equals("world")){<br>&nbsp;&nbsp;&nbsp;addFieldError("name","blank names or names of 'world' are not allowed!");<br>&nbsp;&nbsp;&nbsp;return INPUT;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;message ="hello "+name+"!\n";<br>&nbsp;&nbsp;message+="this is the time is: "+System.currentTimeMillis();<br>&nbsp;&nbsp;return SUCCESS;<br>&nbsp;}<br>&nbsp;/**<br>&nbsp; * @return the name<br>&nbsp; */<br>&nbsp;public String getName() {<br>&nbsp;&nbsp;return name;<br>&nbsp;}<br>&nbsp;/**<br>&nbsp; * @param name the name to set<br>&nbsp; */<br>&nbsp;public void setName(String name) {<br>&nbsp;&nbsp;this.name = name;<br>&nbsp;}<br>&nbsp;/**<br>&nbsp; * @return the message<br>&nbsp; */<br>&nbsp;public String getMessage() {<br>&nbsp;&nbsp;return message;<br>&nbsp;}</p>
<p><br>}</p>
<img src ="http://www.blogjava.net/guming123416/aggbug/132763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-07-27 13:50 <a href="http://www.blogjava.net/guming123416/archive/2007/07/27/132763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这段时间开始研究hibernate，开始了解最新的hibernate技术（问题一）Hibernate的No CurrentSessionContext configured 解决方案</title><link>http://www.blogjava.net/guming123416/archive/2007/05/10/116458.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Thu, 10 May 2007 05:19:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/05/10/116458.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/116458.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/05/10/116458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/116458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/116458.html</trackback:ping><description><![CDATA[<p>今天按照满江红翻译的hibernate文档来做第一个简单的程序，却出现No CurrentSessionContext configured 问题。在google上搜索，却发现是<br>是由于没有配置：current_session_context_class<br>在hibernate的配置文件中增加&lt;property name="current_session_context_class"&gt;thread&lt;/property&gt;<br>原因：当你使用 Hibernate session factory的getCurrentSession() 函数时候，你可能见到过"No CurrentSessionContext configured!" </p>
<p>出现这个问题，是因为你没有正确配置 Hibernate internal session context management .<br></p>
<img src ="http://www.blogjava.net/guming123416/aggbug/116458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-05-10 13:19 <a href="http://www.blogjava.net/guming123416/archive/2007/05/10/116458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse搭配Resin开发Struts应用之环境篇 </title><link>http://www.blogjava.net/guming123416/archive/2007/03/30/107472.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 30 Mar 2007 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2007/03/30/107472.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/107472.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2007/03/30/107472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/107472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/107472.html</trackback:ping><description><![CDATA[大家都知道，无论是Eclipse还是Resin，它们在启动的时候都能自动寻找JDK路径，这里假设JDK路径为$JAVA_HOME。<br /><br />JDK下面有一个非常重要的目录，即： $JAVA_HOME/jre/lib，大家用得最普遍的就是$JAVA_HOME/jre/lib/ext目录（可以放置常用的JAR扩展包）了，我喜欢将jtds-1.2.jar文件拷贝到此目录下，当运行打包好的JAR时，不需要为每一个JAR配置数据库驱动加载路径（当然，你也可以将jtds-1.2.jar加入到系统环境变量中，只是你得Reboot your computer而已）。<br /><br />好了，下面言归正传，如果你用myeclipse配置了resin服务器，你会发现myeclipse并不能启动resin，而在控制台上打印出来的是resin.conf:241: Required file '\conf\app-default.xml' can not be read for resin:import.，很明显，是系统找不到app-default.xml'文件，而这个文件确实在$RESIN_HOME/conf/目录下，打开resin.conf，定位到133行，发现配置文件是这样的：&lt;resin:import path="${resin.home}/conf/app-default.xml"/&gt;，因为${resin.home}/就是Resin的当前目录，所以我们可以换成&lt;resin:import path="./conf/app-default.xml"/&gt;，再启动，OK。<br /><br />resin.conf里面还有一个地方比较有意思，且看211行代码：&lt;web-app-deploy path="webapps"/&gt;，系统配置的Web应用目录为$RESIN_HOME/webapps，而Eclipse工程发布后是在$RESIN_HOME/deploy，所以我们干脆就不用myeclipse里的站点发布功能，直接修改resin.conf文件，加载一个外部目录，将它手指向你的工程，找到如下代码（240行）&lt;web-app id="/" root-directory="webapps/ROOT"/&gt;，在后面加上&lt;web-app id="/import" root-directory="D:/eclipse/work/Import/WebRoot"/&gt;。<br /><br />好像问题还不止这么简单，因为我的D:/eclipse/work/Import/WebRoot工程是用Struts框架开发的，所有在resin启动import的时候，报了如下的错误：<br />javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl<br />XML解释器的错误，顺便在Google上一搜，找到了三种解决办法，受推荐的方案如下：<br />在 $JAVA_HOME/jre/lib目录下新建endorsed目录（如果没有的话），然后将你工程lib目录下的xercesImpl.jar拷贝到刚建的那个目录里面，问题即可解决。<br /><br />不推荐在$JAVA_HOME/jre/lib下面新建内容为javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl的jaxp.properties文件，当然，如果你准备强行这么干的话，你的Tomcat就只能暗无天日了。<br /><br /><br />下面是附加内容<br /><br />附一：Apache与Resin集成<br />1. 更改Apache的文档目录：在httpd.conf中找到DocumentRoot，将其后双引号中的内容换成"D:/HttpServer/webapps/"<br />2. 配置Apache的Resin模块：在httpd.conf最后添加如下代码<br />      LoadModule caucho_module "D:/HttpServer/resin/win32/apache-2.2/mod_caucho.dll"<br />      &lt;IfModule mod_caucho.c&gt;<br />        ResinConfigServer localhost 6800<br />        CauchoStatus yes<br />      &lt;/IfModule&gt;<br />3. 更改默认的访问文件：在httpd.conf中找到DirectoryIndex ，在其后添加index.jsp index.php<br />      注意：每个文件之间用空格间隔开<br />4. Resin虚拟目录配置：在resin.conf中找到如下行&lt;host id="" root-directory="."&gt;，然后加入<br />      &lt;web-app id="/import" root-directory="D:/HttpServer/webapps/import"/&gt;<br />      id为访问路径，root-directory为文档目录所在路径<br />5. 设置Resin为自启动：你必须先在系统环境变量中配置JAVA_HOME，然后在命令行窗口中进入Resin目录，输入httpd -install（安装Resin为Windows系统服务），httpd -remove（移除……）<br />经过以上步骤，Resin就可以监听处理所有Apache不能处理的文件，包括.jsp, .do及其它控制器路径，并同时解决了用80端口访问时图片相对路径不对的问题<br /><br />附二：Apache中加入PHP处理模块，并且屏蔽Resin3.1的PHP解释模块<br />1. 屏蔽resin的PHP处理模块：resin从3.0开始支持php，其3.1版本的PHP解释配置是在app-default.xml中（与resin.conf同一个目录），只要对servlet配置比较熟悉的都能在app-default.xml中轻易屏蔽PHP解释功能，打开app-default.xml后，用&lt;!--  --&gt;屏蔽如下代码即可：<br />      &lt;servlet servlet-name="resin-php"<br />           servlet-class="com.caucho.quercus.servlet.QuercusServlet"&gt;<br />      &lt;/servlet&gt;<br />      &lt;servlet-mapping url-pattern="*.php" servlet-name="resin-php"/&gt;<br />      &lt;welcome-file&gt;index.php&lt;/welcome-file&gt;<br />2. 配置Apache的PHP处理模块：在httpd.conf最后添加如下代码（我的PHP是装在D:/HttpServer/php5）<br />      ## Add php5 module<br />      LoadModule php5_module "D:/HttpServer/php5/php5apache2_2.dll"<br />      AddType application/x-httpd-php .php<br />      # Configure php.ini path<br />      PHPIniDir "D:/HttpServer/php5/" <br />呵呵，因为Resin的PHP配置不太熟悉，网上的资料也比较少，所以还是用了Apache+PHP的处理方式。<br /><img src ="http://www.blogjava.net/guming123416/aggbug/107472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2007-03-30 14:27 <a href="http://www.blogjava.net/guming123416/archive/2007/03/30/107472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>StringTokenizer类的使用方法 </title><link>http://www.blogjava.net/guming123416/archive/2006/11/29/84316.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Wed, 29 Nov 2006 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/11/29/84316.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/84316.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/11/29/84316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/84316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/84316.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<strong>StringTokenizer：字符串分隔解析类型<br /></strong>
				<span style="COLOR: indigo">属于：java.util包。</span>
				<br />
				<br />
				<span style="COLOR: blue">１、构造函数。</span>
				<br />
				<ul>
						<br />1. <span style="COLOR: green">StringTokenizer(String str)</span> ：构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。<br />2. <span style="COLOR: green">StringTokenizer(String str, String delim) </span>：构造一个用来解析str的StringTokenizer对象，并提供一个指定的分隔符。<br />3. <span style="COLOR: green">StringTokenizer(String str, String delim, boolean returnDelims) </span>：构造一个用来解析str的StringTokenizer对象，并提供一个指定的分隔符，同时，指定是否返回分隔符。</ul>
				<br />
				<br />
				<span style="COLOR: blue">２、方法。</span>
				<br />
				<span style="COLOR: red">说明：<br />1. 所有方法均为public；<br />2. 书写格式：［修饰符］　&lt;返回类型&gt; &lt;方法名（［参数列表］）&gt;</span>
				<span style="COLOR: olive">
						<br />如：<br />static int parseInt(String s) 表示：此方法（parseInt）为类方法（static），返回类型为（int），方法所需参数为String类型。</span>
				<br />
				<br />
				<ul>1. <span style="COLOR: green">int countTokens() </span>：返回nextToken方法被调用的次数。如果采用构造函数1和2，返回的就是分隔符数量(例2)。<br />2. <span style="COLOR: green">boolean hasMoreTokens() </span>：返回是否还有分隔符。<br />3. <span style="COLOR: green">boolean hasMoreElements() </span>：结果同2。<br />4. <span style="COLOR: green">String nextToken()</span> ：返回从当前位置到下一个分隔符的字符串。<br />5. <span style="COLOR: green">Object nextElement() </span>：结果同4。<br />6. <span style="COLOR: green">String nextToken(String delim)</span> ：与4类似，以指定的分隔符返回结果。</ul>
				<br />
				<br />
				<span style="COLOR: olive">例子：</span>
				<br />
				<pre>		String s = new String("The Java platform is the ideal platform for network computing");<br />		StringTokenizer st = new StringTokenizer(s);<br />		System.out.println( "Token Total: " + st.countTokens() );<br />		while( st.hasMoreElements() ){<br />			System.out.println( st.nextToken() );<br />　　　　　　　　　　　}<br />结果为：<br />Token Total: 10<br />The<br />Java<br />platform<br />is<br />the<br />ideal<br />platform<br />for<br />network<br />computing<br /></pre>
				<br />
				<span style="COLOR: olive">例2:</span>
				<br />
				<pre>		String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");<br />		StringTokenizer st = new StringTokenizer(s,"=",true);<br />		System.out.println( "Token Total: " + st.countTokens() );<br />		while( st.hasMoreElements() ){<br />			System.out.println( st.nextToken() );<br />		}<br />结果为：<br />Token Total: 19<br />The<br />=<br />Java<br />=<br />platform<br />=<br />is<br />=<br />the<br />=<br />ideal<br />=<br />platform<br />=<br />for<br />=<br />network<br />=<br />computing<br /></pre>
		</div>
<img src ="http://www.blogjava.net/guming123416/aggbug/84316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-11-29 12:28 <a href="http://www.blogjava.net/guming123416/archive/2006/11/29/84316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>StringBuffer类的使用方法 </title><link>http://www.blogjava.net/guming123416/archive/2006/11/29/84240.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Wed, 29 Nov 2006 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/11/29/84240.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/84240.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/11/29/84240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/84240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/84240.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<strong>StringBuffer：StringBuffer类型<br /><br /></strong>
				<span style="COLOR: darkblue">描述：在实际应用中，经常回遇到对字符串进行动态修改。这时候，String类的功能受到限制，而StringBuffer类可以完成字符串的动态添加、插入和替换等操作。</span>
				<br />
				<br />
				<span style="COLOR: blue">１、构造函数。</span>
				<br />
				<ul>
						<span style="COLOR: green">StringBuffer() </span>：构造一个没有任何字符的StringBuffer类。<br /><span style="COLOR: green">StringBuffer(int length) </span>： ：构造一个没有任何字符的StringBuffer类，并且，其长度为length。<br /><span style="COLOR: green">StringBuffer(String str) </span>：以str为初始值构造一个StringBuffer类。</ul>
				<br />
				<br />
				<span style="COLOR: blue">２、方法。</span>
				<br />
				<span style="COLOR: red">说明：<br />1. 所有方法均为public；<br />2. 书写格式：［修饰符］　&lt;返回类型&gt; &lt;方法名（［参数列表］）&gt;</span>
				<span style="COLOR: olive">
						<br />如：<br />static int parseInt(String s) 表示：此方法（parseInt）为类方法（static），返回类型为（int），方法所需参数为String类型。</span>
				<br />
				<br />
				<ul>
						<span style="COLOR: green">1. StringBuffer append(boolean b) <br />2. StringBuffer append(char c) <br />3. StringBuffer append(char[] str) <br />4. StringBuffer append(char[] str, int offset, int len) <br />5. StringBuffer append(double d) <br />6. StringBuffer append(float f) <br />7. StringBuffer append(int i) <br />8. StringBuffer append(long l) <br />9. StringBuffer append(Object obj) <br />10. StringBuffer append(String str) <br />11. StringBuffer append(StringBuffer sb) </span>
						<br />
						<br />以上的方法都是向字符串缓冲区“追加”元素，但是，这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度，Java将自动进行扩充。</ul>
				<br />
				<pre>		String question = new String("1+1=");<br />		int answer = 3;<br />		boolean result = (1+1==3);<br /><br />		StringBuffer sb = new StringBuffer();<br />		sb.append(question);<br />		sb.append(answer);<br />		sb.append('\t');<br />		sb.append(result);<br /><br />		System.out.println(sb);<br />结果为：<br />1+1=3   false</pre>
				<br />
				<ul>12. <span style="COLOR: green">int capacity() </span>：返回当前StringBuffer对象（字符串缓冲区）的总空间，而非字符号串的长度。<br />13. <span style="COLOR: green">char charAt(int index) </span>：在当前StringBuffer对象中取索引号为index的字符。第一个字符的索引为“0”<br />14. <span style="COLOR: green">StringBuffer delete(int start, int end) </span>：删除当前StringBuffer对象中以索引号start开始，到end结束的子串。<br />15. <span style="COLOR: green">StringBuffer deleteCharAt(int index) </span>：删除当前StringBuffer对象中索引号为index的字符。<br />16. <span style="COLOR: green">void ensureCapacity(int minimumCapacity)</span> ：重新设置字符号串缓冲区的总空间。如果minimumCapacity大于当前的总空间，则新的空间被设置：一种结果是minimumCapacity；另一种结果是{“老空间”乘2加2}。</ul>
				<br />
				<pre>		StringBuffer sb1 = new StringBuffer(5);<br />		StringBuffer sb2 = new StringBuffer(5);<br /><br />		sb1.ensureCapacity(6);<br />		sb2.ensureCapacity(100);<br /><br />		System.out.println( "sb1.Capacity: " + sb1.capacity() );<br />		System.out.println( "sb2.Capacity: " + sb2.capacity() );<br />结果为：<br />sb1.Capacity: 12<br />sb2.Capacity: 100</pre>
				<br />
				<ul>17. <span style="COLOR: green">void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)</span> ：从当前StringBuffer对象的索引号srcBegin开始，到srcEnd结束的子串，赋值到字符数组dst中，并且从dst的索引号dstBegin开始。</ul>
				<br />
				<pre>		StringBuffer sb = new StringBuffer("I love her!");<br />		char[] i = {'I',' ','l','o','v','e',' ','y','o','u'};<br /><br />		sb.getChars(7,10,i,7);<br /><br />		System.out.println( "sb: " + sb );<br />结果为：sb: I love her!</pre>
				<br />
				<ul>18. <span style="COLOR: green">int indexOf(String str)</span> ：返回当前StringBuffer对象中，第一个满足str子串的位置。<br />19. <span style="COLOR: green">int indexOf(String str, int fromIndex)</span> ：从当前StringBuffer对象的fromIndex开始查找，返回第一个满足str子串的位置。<br /><span style="COLOR: green">20. StringBuffer insert(int offset, boolean b) <br />21. StringBuffer insert(int offset, char c) <br />22. StringBuffer insert(int offset, char[] str) <br />23. StringBuffer insert(int index, char[] str, int offset, int len) <br />24. StringBuffer insert(int offset, double d) <br />25. StringBuffer insert(int offset, float f) <br />26. StringBuffer insert(int offset, int i) <br />27. StringBuffer insert(int offset, long l) <br />28. StringBuffer insert(int offset, Object obj) <br />29. StringBuffer insert(int offset, String str) </span><br /><br />以上的方法都是在当前StringBuffer对象中插入一个元素，在索引号offset处插入相应的值。<br />30. <span style="COLOR: green">int lastIndexOf(String str) </span>：返回当前StringBuffer对象中，最后一个满足str子串的位置。<br />31. <span style="COLOR: green">int lastIndexOf(String str, int fromIndex)</span> ：从当前StringBuffer对象的fromIndex开始查找，返回最后一个满足str子串的位置。<br />32. <span style="COLOR: green">int length() </span>：返回当前StringBuffer对象（字符缓冲区）中，字符串的长度。<span style="COLOR: red">注意：此方法与capacity() 不同。</span><br />33. <span style="COLOR: green">StringBuffer replace(int start, int end, String str)</span> ：替换当前StringBuffer对象的字符串。从start开始，到end结束的位置替换成str。<br />34. <span style="COLOR: green">StringBuffer reverse() </span>：将字符串翻转。</ul>
				<br />
				<pre>		StringBuffer sb = new StringBuffer("0123456789");<br />		System.out.println( "sb.reverse(): " + sb.reverse() );<br />结果为：sb.reverse(): 9876543210</pre>
				<br />
				<ul>35. <span style="COLOR: green">void setCharAt(int index, char ch)</span> ：设置索引号index的字符为ch。<br />36. <span style="COLOR: green">void setLength(int newLength) </span>：重新设置字符串缓冲区中字符串的长度，如果newLength小于当前的字符串长度，将截去多余的字符。</ul>
				<br />
				<pre>		StringBuffer sb = new StringBuffer("0123456789");<br />		sb.setLength(5);<br />		System.out.println( "sb: " + sb );<br />结果为：sb: 01234</pre>
				<br />
				<ul>37.<span style="COLOR: green"> String substring(int start) </span>：取当前StringBuffer对象中，从start开始到结尾的子串。<br />38. <span style="COLOR: green">String substring(int start, int end) </span>：取当前StringBuffer对象中，从start开始到end的子串。<br />39. <span style="COLOR: green">String toString() </span>：将当前StringBuffer对象转换成String对象。</ul>
		</div>
<img src ="http://www.blogjava.net/guming123416/aggbug/84240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-11-29 10:15 <a href="http://www.blogjava.net/guming123416/archive/2006/11/29/84240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBuilder开发常用的十九个快捷键</title><link>http://www.blogjava.net/guming123416/archive/2006/08/07/62202.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Mon, 07 Aug 2006 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/08/07/62202.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/62202.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/08/07/62202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/62202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/62202.html</trackback:ping><description><![CDATA[F9键           通过创建项目的运行模块<br /><br />　　2  Ctrl+Alt+P     显示/隐藏项目面板<br /><br />　　3  Ctrl+Alt+C     显示/隐藏代码与设计面板<br /><br />　　4  Ctrl+Alt+S     显示/隐藏结构面板<br /><br />　　5  Ctrl+Alt+M     显示/隐藏消息面板<br /><br />　　6  Ctrl+Alt+U     显示/隐藏状态栏<br /><br />　　7  Ctrl+Alt+Z     显示/隐藏项目、结构、信息面板<br /><br />　　8  Ctrl+B         选择Window-〉Swich选项<br /><br />　　9  Ctrl+X         剪切<br /><br />　　10 Ctrl+V         粘贴<br /><br />　　11 Ctrl+C         复制<br /><br />　　12 Ctrl+J         激活代码模块<br /><br />　　13 Ctrl+Shift+H   进入方法的括号(),显示参数提示窗口<br /><br />　　14 Ctrl+F         打开查询、替换窗口<br /><br />　　15 Ctrl+-         打开类查询窗口<br /><br />　　16 F5             程序加入断点<br /><br />　　17 F8             逐行运行代码<br /><br />　　18 F4             多行运行代码<br /><br />　　19 Ctrl+鼠标右键  显示详细的变量信息<br /><br />　　以上19条是我在开发中常用快捷键，对提高开发速度应该有  <br /><br /><img src ="http://www.blogjava.net/guming123416/aggbug/62202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-08-07 17:22 <a href="http://www.blogjava.net/guming123416/archive/2006/08/07/62202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用log4j常见日志</title><link>http://www.blogjava.net/guming123416/archive/2006/07/04/log4j.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 04 Jul 2006 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/07/04/log4j.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/56531.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/07/04/log4j.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/56531.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/56531.html</trackback:ping><description><![CDATA[
		<p>log4j.properties  配置文件代码：<br /># Attach appender A1 to root. Set root level to Level.DEBUG.</p>
		<p>log4j.rootLogger=INFO, A1,A4</p>
		<p>log4j.appender.A1=org.apache.log4j.ConsoleAppender<br />log4j.appender.A1.Threshold=ERROR</p>
		<p>log4j.appender.A1.layout=org.apache.log4j.PatternLayout<br />log4j.appender.A1.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) - %m%n</p>
		<p>
				<br />log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender<br />log4j.appender.A4.file=D:\\Java\\logs\\yeming.log<br />log4j.appender.A4.Encoding=GBK<br />log4j.appender.A4.DatePattern='.'yyyy-MM-dd<br />log4j.appender.A4.layout=org.apache.log4j.PatternLayout<br />log4j.appender.A4.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n<br /><br />使用代码：<br />package com.javawoker.yeming.jiemie.database;<br />import java.sql.Connection;<br />import java.sql.SQLException;<br />import javax.naming.Context;<br />import javax.naming.InitialContext;<br />import javax.sql.DataSource;<br />import org.apache.log4j.Logger;<br />/**<br /> <a href="mailto:*@author">*@author</a> 叶明 <a href="mailto:---guming123416@gmail.com">---guming123416@gmail.com</a><br /> <a href="mailto:*@version">*@version</a> $Id: v 1.01 2006/06/38 16:09:14 teodord Exp $<br /> */<br />public class Pubconn {<br /> <br /> /*<br />  * 创建私有变量conn为数据库连接对象中Connection<br />  * 创建私有变量dsye为数据库连接池的DataSource<br />  */<br /> <br /> private Connection conn;<br /> private DataSource dsye;<br /> private static Logger log=Logger.getLogger(Pubconn.class);<br /> /*<br />  * 创建构造函数Pubconn，在建立class中加载数据源的InitialContext<br />  */<br /> public Pubconn()<br /> {<br />  try{<br />   Context initCtx=new InitialContext();<br />   if(initCtx==null)<br />   {<br />    throw new Exception("不能加载文件Context");<br />   }<br />   dsye=(javax.sql.DataSource)initCtx.lookup("jdbc/yeming");<br />  }catch(Exception ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("在加栽数据库连接池时间发生错误"+ex.getMessage());<br />  }<br /> }<br /> /*<br />  * 从连接池中取出一条连接变量<br />  * <br />  */<br /> public Connection getConn()<br /> {<br />  try{<br />   conn=dsye.getConnection();<br />  }catch(SQLException ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("获得连接对象CONN时间发生错误"+ex.getMessage());<br />  }<br />  return conn;<br /> }<br /> /*<br />  * 关闭数据库连接，释放资源<br />  */<br /> public void closeConn(Connection conn)<br /> {<br />  try{<br />   if(conn!=null)<br />   {<br />    conn.close();<br />    conn=null;<br />   }<br />  }catch(SQLException ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("关闭CONN时间发生错误"+ex.getMessage());<br />  }<br /> }</p>
		<p>}<br /></p>
<img src ="http://www.blogjava.net/guming123416/aggbug/56531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-07-04 14:04 <a href="http://www.blogjava.net/guming123416/archive/2006/07/04/log4j.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用weblogic数据源大全</title><link>http://www.blogjava.net/guming123416/archive/2006/07/04/weblogic.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 04 Jul 2006 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/07/04/weblogic.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/56518.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/07/04/weblogic.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/56518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/56518.html</trackback:ping><description><![CDATA[
		<p>首先创建weblogic数据源。<br />创建一个javabean取得数据源中的连接CONN<br />代码：<br />/**<br /> * 程序开发日期：2006-6-28-16:09:14 <br /> * javaworker.cn中程序员：叶明开发<br /> * 程序作用：从连接池中取出一条记录，使用创建数据库连接，以及释放该连接<br /> * 程序开发：<br /> */<br />package com.javawoker.yeming.jiemie.database;<br />import java.sql.Connection;<br />import java.sql.SQLException;<br />import javax.naming.Context;<br />import javax.naming.InitialContext;<br />import javax.sql.DataSource;<br />import org.apache.log4j.Logger;<br />/**<br /> <a href="mailto:*@author">*@author</a> 叶明 <a href="mailto:---guming123416@gmail.com">---guming123416@gmail.com</a><br /> <a href="mailto:*@version">*@version</a> $Id: v 1.01 2006/06/38 16:09:14 teodord Exp $<br /> */<br />public class Pubconn {<br /> <br /> /*<br />  * 创建私有变量conn为数据库连接对象中Connection<br />  * 创建私有变量dsye为数据库连接池的DataSource<br />  */<br /> <br /> private Connection conn;<br /> private DataSource dsye;<br /> private static Logger log=Logger.getLogger(Pubconn.class);<br /> /*<br />  * 创建构造函数Pubconn，在建立class中加载数据源的InitialContext<br />  */<br /> public Pubconn()<br /> {<br />  try{<br />   Context initCtx=new InitialContext();<br />   if(initCtx==null)<br />   {<br />    throw new Exception("不能加载文件Context");<br />   }<br />   dsye=(javax.sql.DataSource)initCtx.lookup("jdbc/yeming");<br />  }catch(Exception ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("在加栽数据库连接池时间发生错误"+ex.getMessage());<br />  }<br /> }<br /> /*<br />  * 从连接池中取出一条连接变量<br />  * <br />  */<br /> public Connection getConn()<br /> {<br />  try{<br />   conn=dsye.getConnection();<br />  }catch(SQLException ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("获得连接对象CONN时间发生错误"+ex.getMessage());<br />  }<br />  return conn;<br /> }<br /> /*<br />  * 关闭数据库连接，释放资源<br />  */<br /> public void closeConn(Connection conn)<br /> {<br />  try{<br />   if(conn!=null)<br />   {<br />    conn.close();<br />    conn=null;<br />   }<br />  }catch(SQLException ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("关闭CONN时间发生错误"+ex.getMessage());<br />  }<br /> }</p>
		<p>}<br />然后建立调用页面<br />代码如下：<br /><br />&lt;%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GBK" contentType="text/html charset=gbk"%&gt;<br />&lt;jsp:useBean id="yeconn" scope="page" class="com.javawoker.yeming.jiemie.database.Pubconn"&gt;&lt;/jsp:useBean&gt;<br />&lt;%<br />Connection conn=yeconn.getConn();<br />Statement stmt=conn.createStatement();<br />String sql="select * from combasicinfo";<br />ResultSet rs=stmt.executeQuery(sql);<br />while(rs.next())<br />{<br />  out.println(rs.getInt(1));<br />  out.println(rs.getString(2));<br />}<br />rs.close();<br />stmt.close();<br />yeconn.closeConn(conn);<br />%&gt;<br /></p>
<img src ="http://www.blogjava.net/guming123416/aggbug/56518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-07-04 13:28 <a href="http://www.blogjava.net/guming123416/archive/2006/07/04/weblogic.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求救</title><link>http://www.blogjava.net/guming123416/archive/2006/06/27/55324.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 27 Jun 2006 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/06/27/55324.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/55324.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/06/27/55324.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/55324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/55324.html</trackback:ping><description><![CDATA[我做报表的时间，发现JSP中路径总是出问题。
总是不明白，用绝对路径和相对路径都找不到这个
文件确实存在，而且路径也是正确的，但是他总是提示：
Class not found when loading object from file : D:\Java\tomcat5.5\webapps\personjob\report\yefirst.jasper 
代码：
File reportFile =new File(application.getRealPath("/report/yefirst.jasper"));
求高手指点以下<img src ="http://www.blogjava.net/guming123416/aggbug/55324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-06-27 14:13 <a href="http://www.blogjava.net/guming123416/archive/2006/06/27/55324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天又遇到一个问题</title><link>http://www.blogjava.net/guming123416/archive/2006/06/24/54837.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Sat, 24 Jun 2006 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/06/24/54837.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/54837.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/06/24/54837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/54837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/54837.html</trackback:ping><description><![CDATA[我将服务器配置了集群服务后，发现遇见一个问题，两个服务器，两个web应用，这样就造成了用户上传图片的时间只有一个服务处理了，上传的图片就只能到一个web应用中，这样另一个在处理的时间就找不到图片，
为了解决这个问题，我想用两个服务器同是公用一个web应用，但是这样又造成了session总是出现问题，不知道大家有没有比较好的解决方法<img src ="http://www.blogjava.net/guming123416/aggbug/54837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-06-24 10:29 <a href="http://www.blogjava.net/guming123416/archive/2006/06/24/54837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置tomcat集群</title><link>http://www.blogjava.net/guming123416/archive/2006/06/05/50436.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Mon, 05 Jun 2006 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/06/05/50436.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/50436.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/06/05/50436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/50436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/50436.html</trackback:ping><description><![CDATA[今天终于搞定了做tomcat集群服务器。
费了一天的工夫，终于搞定了一个集群和负载平衡.
使用tomcat中遇到很多问题，等我有时间好好的写出来具体怎么操作的没
<img src ="http://www.blogjava.net/guming123416/aggbug/50436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-06-05 10:40 <a href="http://www.blogjava.net/guming123416/archive/2006/06/05/50436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于tomcat集群配置问题</title><link>http://www.blogjava.net/guming123416/archive/2006/06/02/49921.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Fri, 02 Jun 2006 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/06/02/49921.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/49921.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/06/02/49921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/49921.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/49921.html</trackback:ping><description><![CDATA[今天去客户那里，他说他们的服务器有点慢，要不你帮我配置一个集群服务器，回来后赶紧找资料
我用tomcat5.5.16来配置，看了很多文挡，发现出问题，启动只能有一个，好象是他们的路径重复

现在这个问题解决了
我直接下载解压缩包，这个问题搞定了，可是我发现配置有出问题了。
Tomcat5 +apache 怎么分配 负载平衡以及session共享？

至今天还没有解决啊
看来这次有的忙了啊

呵呵，有朋友知道的话，请您指教。怎么配置tomcat5.5.16 的集群。联系msn：guming123416@hotmail.com 
在这里首先表示谢谢，问题是主要不知道该怎么样启动

朋友推荐我用5.0.28看看


另外换想问问5.0.28 与tomcat5.5.16 到底有什么区别，我的英文一般，没有学过。所以问问
<img src ="http://www.blogjava.net/guming123416/aggbug/49921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-06-02 13:23 <a href="http://www.blogjava.net/guming123416/archive/2006/06/02/49921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于报表系统</title><link>http://www.blogjava.net/guming123416/archive/2006/05/30/48932.html</link><dc:creator>天空苍茫</dc:creator><author>天空苍茫</author><pubDate>Tue, 30 May 2006 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/guming123416/archive/2006/05/30/48932.html</guid><wfw:comment>http://www.blogjava.net/guming123416/comments/48932.html</wfw:comment><comments>http://www.blogjava.net/guming123416/archive/2006/05/30/48932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/guming123416/comments/commentRss/48932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/guming123416/services/trackbacks/48932.html</trackback:ping><description><![CDATA[为客户开发报表，因为客户是政府部门，他们好象用word比较多，当时客户要求用word来做报表，做好后，由于要调用本机器上的程序，有一个大大的警告框，而且关于哪个页眉和页脚也不是那么好处理的，感觉不是很好，我就征集朋友的意见，他们推荐我用iReport  和JASPERREPORT，从网络上dowN下来一个看看，学学怎么用，从网络上怎么找不道关于这个的中文介绍，怪只能怪大学英语没有好好的，学，漫漫的研究吧！！<img src ="http://www.blogjava.net/guming123416/aggbug/48932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/guming123416/" target="_blank">天空苍茫</a> 2006-05-30 12:36 <a href="http://www.blogjava.net/guming123416/archive/2006/05/30/48932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>