??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人精品亚洲2020,亚洲国产精品无码久久SM,久久精品国产亚洲AV无码娇色http://www.tkk7.com/guming123416/java学习天堂,个h关于其他blogQblog.javaworker.cn,Ƣ迎大家讉Kzh-cnSun, 11 May 2025 11:19:30 GMTSun, 11 May 2025 11:19:30 GMT60centos5.4下安装apache+svnhttp://www.tkk7.com/guming123416/archive/2010/09/28/333104.html天空苍茫天空苍茫Tue, 28 Sep 2010 00:24:00 GMThttp://www.tkk7.com/guming123416/archive/2010/09/28/333104.htmlhttp://www.tkk7.com/guming123416/comments/333104.htmlhttp://www.tkk7.com/guming123416/archive/2010/09/28/333104.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/333104.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/333104.html

1?/span>首先下蝲apache2.2 下蝲地址Q?/font>http://mirrors.sohu.com/apache/httpd-2.2.16.tar.gz

2?/span>然后下蝲SVN

a) 包:subversion-deps-1.6.12.tar.gz

i. 地址Q?font face="Times New Roman">http://subversion.tigris.org/downloads/subversion-deps-1.6.12.tar.gz

b) susubversion-1.6.12.tar.gz  地址Q?/font>

i. http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz 

3?/span>然后解析Apache2Q安?/font>

4?/span>tar -zxvf httpd-2.2.16.tar.gz

5?/span>安装Apache

a) ./configure -prefix=/opt/web/apache2 --enable-mods-shared=all --enable-so

b) Make

c) Make install

6?/span>?font face="Times New Roman">APACHE是否安装成功Q?/font>

启动apache:/opt/web/apache2/bin/apachectl start

7?/span>安装Svn

8?/span>首先解压Q?nbsp;tar -zxvf subversion-deps-1.6.12.tar.gz

9?/span>然后解压Q?font face="Times New Roman">tar -zxvf susubversion-1.6.12.tar.gz 

10?/span>安装命oQ?/span>

a) ./configure --prefix=/opt/web/subversion --with-apxs=/opt/web/apache2/bin/apxs --with-apr=/opt/web/httpd-2.2.16/srclib/apr  --with-apr-util=/opt/web/httpd-2.2.16/srclib/apr-util

11?/font>make  make install



天空苍茫 2010-09-28 08:24 发表评论
]]>
目开发中的进度以及h员的控制q度情况http://www.tkk7.com/guming123416/archive/2009/10/04/297174.html天空苍茫天空苍茫Sun, 04 Oct 2009 02:37:00 GMThttp://www.tkk7.com/guming123416/archive/2009/10/04/297174.htmlhttp://www.tkk7.com/guming123416/comments/297174.htmlhttp://www.tkk7.com/guming123416/archive/2009/10/04/297174.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/297174.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/297174.html阅读全文

天空苍茫 2009-10-04 10:37 发表评论
]]>
关于目理的一些感?http://www.tkk7.com/guming123416/archive/2009/10/03/297127.html天空苍茫天空苍茫Sat, 03 Oct 2009 03:32:00 GMThttp://www.tkk7.com/guming123416/archive/2009/10/03/297127.htmlhttp://www.tkk7.com/guming123416/comments/297127.htmlhttp://www.tkk7.com/guming123416/archive/2009/10/03/297127.html#Feedback1http://www.tkk7.com/guming123416/comments/commentRss/297127.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/297127.html阅读全文

天空苍茫 2009-10-03 11:32 发表评论
]]>
LuceneQ?.4.1Q技术研I?5)--IndexWritecL代码解析Q四QRAMDirectory介绍 http://www.tkk7.com/guming123416/archive/2009/05/08/269601.html天空苍茫天空苍茫Fri, 08 May 2009 05:56:00 GMThttp://www.tkk7.com/guming123416/archive/2009/05/08/269601.htmlhttp://www.tkk7.com/guming123416/comments/269601.htmlhttp://www.tkk7.com/guming123416/archive/2009/05/08/269601.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/269601.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/269601.html阅读全文

天空苍茫 2009-05-08 13:56 发表评论
]]>
LuceneQ?.4.1Q技术研I?5)--IndexWritecL代码解析Q三QFSDirectory介绍http://www.tkk7.com/guming123416/archive/2009/05/05/269036.html天空苍茫天空苍茫Tue, 05 May 2009 10:02:00 GMThttp://www.tkk7.com/guming123416/archive/2009/05/05/269036.htmlhttp://www.tkk7.com/guming123416/comments/269036.htmlhttp://www.tkk7.com/guming123416/archive/2009/05/05/269036.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/269036.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/269036.html阅读全文

天空苍茫 2009-05-05 18:02 发表评论
]]>
windows下设|Resinq入pȝ服务 http://www.tkk7.com/guming123416/archive/2009/04/30/268338.html天空苍茫天空苍茫Thu, 30 Apr 2009 05:14:00 GMThttp://www.tkk7.com/guming123416/archive/2009/04/30/268338.htmlhttp://www.tkk7.com/guming123416/comments/268338.htmlhttp://www.tkk7.com/guming123416/archive/2009/04/30/268338.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/268338.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/268338.html
C:\> net start ResinA

net stop  ResinA


一个机器安装多个ResinҎ

apache+resin  Ҏ

LoadModule caucho_module \
<installdir>/resin-3.1.x/win32/apache-2.0/mod_caucho.dll
ResinConfigServer localhost 6802
<Location /caucho-status>
SetHandler caucho-status
</Location>


天空苍茫 2009-04-30 13:14 发表评论
]]>
Linux下安装Oracle11G http://www.tkk7.com/guming123416/archive/2009/04/17/266195.html天空苍茫天空苍茫Fri, 17 Apr 2009 09:27:00 GMThttp://www.tkk7.com/guming123416/archive/2009/04/17/266195.htmlhttp://www.tkk7.com/guming123416/comments/266195.htmlhttp://www.tkk7.com/guming123416/archive/2009/04/17/266195.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/266195.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/266195.html

1、首先检查一下linux下是有存在一下YӞ如果不存在,必须这些Y件安?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
2、以root方式登陆Q修?etc/sysctl.confQ在文g中增加一下参?br /> kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range =1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default =262144
net.core.wmem_max =262144

然后创徏数据库的所有者:
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba Oracle 创徏用户Oracle
passwd OracleQ修改Oracle的密码)
修改Oracle用户的限?br /> cd /etc/security
vi limits.conf
在该文g增加一下内?br /> Oracle soft nproc 2047
Oracle hard nproc 16384
Oracle soft nofile 1024
Oracle hard nofile 65536
在文?etc/pam.d/login文g增加一下内?br /> session required /lib/security/pam_limits.so
session required pam_limits.so
在文?etc/profile增加一下内?/p>

if [$USER = "Oracle"] ; then
if [ $SHELL = " /bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65535
else
ulimit -u 16384 -n 65536
fi
fi
创徏安装目录Q?br /> mkdir -p /opt/app/oracle
chown -P Oracle:oinstall /opt/app
chmod -R 755 /opt/app
执行命oQ解压安装文?Qunzip linux_11gR1_database.zip
然后q入解压后的目录Q执?br /> $ ./runInstaller



天空苍茫 2009-04-17 17:27 发表评论
]]>
LuceneQ?.4.1Q技术研I?5)--IndexWritecL代码解析Q二Q?-Directory 解析 http://www.tkk7.com/guming123416/archive/2009/04/16/266008.html天空苍茫天空苍茫Thu, 16 Apr 2009 09:32:00 GMThttp://www.tkk7.com/guming123416/archive/2009/04/16/266008.htmlhttp://www.tkk7.com/guming123416/comments/266008.htmlhttp://www.tkk7.com/guming123416/archive/2009/04/16/266008.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/266008.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/266008.html首先我们看构造函C的第一个类Directory cR根据这个类的英文,我们能得个类是关于目录操作的。Directory 是一个抽象类。其?个子c,分别是:DbDirectory, FSDirectory, JEDirectory, RAMDirectory

首先我们看看Directory 的类
public abstract class Directory {
volatile boolean isOpen = true;
/*** 持有一个LockFactory的实例(实现锁定q个目录实例Q?/
protected LockFactory lockFactory;
/**q回该目录下的所有文件数l?如果q个目录下没有文件存在,或者存在权限问题不能访问,该方法可能返回Null*/
public abstract String[] list() throws IOException;
/** * q回指定名称的文件是不是存在 */
public abstract boolean fileExists(String name)
throws IOException;
/**q回指定名称的文件最后修改的旉
public abstract long fileModified(String name) throws IOException;
/**讄指定文g名的文g最后的修改旉为当前时?/
public abstract void touchFile(String name) throws IOException;

/**删除指定文g?*/
public abstract void deleteFile(String name)throws IOException;
/**q回指定文g的长度?*/
public abstract long fileLength(String name) throws IOException;
/** 在当前目录下使用l定的名U创Z个空的文件。ƈ且返回一个流来写该文件?/
public abstract IndexOutput createOutput(String name) throws IOException;
/** * Lucene使用该方法确保所有的针对该文件的写操作都会存储到Index。ƈ且阻止machine/OS发生故障 破坏该index?/
public void sync(String name) throws IOException {}
/**获取已经存在的一个文件的IndexInput操作该文g?*/
public abstract IndexInput openInput(String name) throws IOException;
/** q回已经存在的一个文件、ƈ且用指定大的~冲的IndexInputQ但是当前目录也可能忽略该缓冲池的大,
* 当前主要是考虑CompoundFileReader和FSDirectory对于ơ参数的需求?/
public IndexInput openInput(String name, int bufferSize) throws IOException {
return openInput(name);
}
/** 创徏一个指定名U的?
public Lock makeLock(String name) {
return lockFactory.makeLock(name);
}
/**
* 清除指定的锁定(解锁和删除)q不仅要求在q个时候当前的锁一定不在用?*/
public void clearLock(String name) throws IOException {
if (lockFactory != null) {
lockFactory.clearLock(name);
}
}
/** l束q个store. */
public abstract void close() throws IOException;

/**讄LockFactoryQ此目录实例应光定执行。每个LockFactory实例只用于一个目录(卻I不要q一个实例在多个目录Q?*/
public void setLockFactory(LockFactory lockFactory) {
this.lockFactory = lockFactory;
lockFactory.setLockPrefix(this.getLockID());
}

/** 获得LockFactoryQ此目录例实例用其锁定执行。请注意Q这可能是无效的目录执行Q提供自己锁执行*/
public LockFactory getLockFactory() {
return this.lockFactory;
}
/**q去锁实例的唯一表示ID的字W串描述*/
public String getLockID() {
return this.toString();
}
/**// 拯源目录src下的文gQ复制到目的目录dest下面Q拷贝完成后关闭源目录src*/
public static void copy(Directory src, Directory dest, boolean closeDirSrc) throws IOException {
final String[] files = src.list();
if (files == null)
throw new IOException("cannot read directory " + src + ": list() returned null");
byte[] buf = new byte[BufferedIndexOutput.BUFFER_SIZE];
for (int i = 0; i < files.length; i++) {
IndexOutput os = null;
IndexInput is = null;
try {
// create file in dest directory
os = dest.createOutput(files[i]);
// read current file
is = src.openInput(files[i]);
// and copy to dest directory
long len = is.length();
long readCount = 0;
while (readCount < len) {
int toRead = readCount + BufferedIndexOutput.BUFFER_SIZE > len ? (int)(len - readCount) : BufferedIndexOutput.BUFFER_SIZE;
is.readBytes(buf, 0, toRead);
os.writeBytes(buf, toRead);
readCount += toRead;
}
} finally {
// graceful cleanup
try {
if (os != null)
os.close();
} finally {
if (is != null)
is.close();
}
}
}
if(closeDirSrc)
src.close();
}

从Directory抽象cȝ定义Q我们可以得到如下几点:
1、管理锁工厂及其锁实例;
2、管理Directory目录实例的基本属性,主要是通过文g名称q行理Q?br /> 3、管理与操作该目录相关的一些流对象Q?br /> 4、管理烦引文件的拯?br />



天空苍茫 2009-04-16 17:32 发表评论
]]>
LuceneQ?.4.1Q技术研I?5)--IndexWritecL代码解析Q一Q?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2009/04/07/264298.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/264298.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2009/04/07/264298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/264298.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/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="宋体">cM要功能是对烦引的创徏Q加入Document后,合ƈ各种索引D,以及控制与烦引相关的其他斚wQ它是lucene索引的主要操U者?/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 IndexWriter(String path, Analyzer a, boolean create, MaxFieldLength 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 IndexWriter(String path, Analyzer a, boolean create)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(File path, Analyzer a, boolean create, MaxFieldLength 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 IndexWriter(File path, Analyzer a, boolean create)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(Directory d, Analyzer a, boolean create, MaxFieldLength 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 IndexWriter(Directory d, Analyzer a, boolean create)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(String path, Analyzer a, MaxFieldLength 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 IndexWriter(String path, Analyzer a)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(File path, Analyzer a, MaxFieldLength 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 IndexWriter(File path, Analyzer a)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(Directory d, Analyzer a, MaxFieldLength 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 IndexWriter(Directory d, Analyzer a)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(Directory d, boolean autoCommit, Analyzer a)(<font face="宋体">废弃Q不提倡?</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 IndexWriter(Directory d, boolean autoCommit, Analyzer a, boolean create)<font face="宋体">Q废弃,不提倡?</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 IndexWriter(Directory d, Analyzer a, IndexDeletionPolicy deletionPolicy, MaxFieldLength 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 IndexWriter(Directory d, boolean autoCommit, Analyzer a, IndexDeletionPolicy deletionPolicy)<font face="宋体">Q废弃,不提倡?</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 IndexWriter(Directory d, Analyzer a, boolean create, IndexDeletionPolicy deletionPolicy, MaxFieldLength 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 IndexWriter(Directory d, boolean autoCommit, Analyzer a, boolean create, IndexDeletionPolicy deletionPolicy)<font face="宋体">Q废弃,不提倡?</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="宋体">l心的读者肯定会发现Q废弃的构造函C提倡用的构造函敎ͼ多了一个MaxFieldLength参数。带有该参数的构造函数都是允许正怋用的?/font></span><span style="font-size: 10.5pt; color: rgb(255,0,0); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">Q注释:废弃的构造函数将在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="宋体">仔细查看其构造函数的实现呢,最l都转化成一个私有的构造函敎ͼ如图Q?/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'">* <font face="宋体">该构造函C要是创徏一个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'">* d <font face="宋体">Q指定的存放建立索引文g的烦引目?/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'">* a <font face="宋体">QAnalyzer  分词分析?/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'">* create <font face="宋体">Q是否要重新写入索引文gQ如果ؓtrueQ则重写索引文gQ如果ؓfalseQ则q加写入索引文g</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'">* closeDir <font face="宋体">Q一个boolean型变量,表示是否关闭索引目录Directory dQ与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'">* deletionPolicy <font face="宋体">Q指定删除烦引文件用的{略</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'">* autoCommit <font face="宋体">Q徏立烦引文件后Q自动提交?/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'">* maxFieldLength <font face="宋体">Q?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 void init(Directory d, Analyzer a, final boolean create, boolean closeDir, IndexDeletionPolicy deletionPolicy, boolean autoCommit, int 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'">    throws CorruptIndexException, LockObtainFailedException, IOException {</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'">    this.closeDir = 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'">    directory = 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'">    analyzer = 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'">    setMessageID(defaultInfoStream);</span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">q里主要是指定infoStreamQ是一个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'">    this.maxFieldLength = 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'">    if (create) {</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'">      // </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="宋体">Q?/font></span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">清除写锁文gwrite.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'">      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'">    }</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'">    Lock writeLock = 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'">    if (!writeLock.obtain(writeLockTimeout)) // </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">获取写锁文g</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'">      throw new LockObtainFailedException("Index locked for write: " + 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'">    this.writeLock = writeLock;             </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'">//<font face="宋体">保存新的写锁文g</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'">    try {</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'">      if (create) {</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'">        // </span><span style="font-size: 10.5pt; color: rgb(51,153,102); font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">如果create为trueQ表C重写烦引文件。重写烦引文件之前,要先d已经存在的烦引文Ӟq且要清除掉历史写入的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'">        try {</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'">          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'">          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'">        } catch (IOException 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'">        }</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'">        segmentInfos.commit(directory);  </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'">   </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'">      } else {</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'">        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="宋体">dsegment信息</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'">        // We assume that this segments_N was 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'">        // properly 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'">        for(int i=0;i<segmentInfos.size();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'">          final SegmentInfo info = 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'">          List files = 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'">          for(int j=0;j<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'">            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'">        }</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'">      }</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'">      this.autoCommit = 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'">      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="宋体">状态信息,q且信息保存到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'">      docWriter = new DocumentsWriter(directory, 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'">      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'">      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'">      //<font face="宋体">默认的删除策略实现类为KeepOnlyLastCommitDeletionPolicyQ它只是保证最q提交删除的索引文gQ提交删除动?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'">      // IndexFileDeleter deleter<font face="宋体">是IndexWritercȝ一个私有的成员变量Q它在org.apache.lucene.index包里面,主要对删除烦引文件进行实现和理 </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'">      deleter = new 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'">                                     deletionPolicy == null ? new KeepOnlyLastCommitDeletionPolicy() : 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'">                                     segmentInfos, infoStream, 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'">      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="宋体">hDocsBuffer?/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'">      if (infoStream != null) {</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'">        message("init: create=" + 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'">        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'">      }</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'">    } catch (IOException 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'">      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'">      this.writeLock = 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'">      throw 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'">    }</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'">  } </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'">  <font face="宋体">通过IndexWrite的构造函敎ͼ以及最l的实现Ҏ的init分发Q其主要是实CҎ指定的徏立烦引的方式(重写、追加写?Q通过create标志位来判断Q从而指定一U在操作索引文g的过E中删除索引文g的策略?/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.tkk7.com/guming123416/aggbug/264298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2009-04-07 17:39 <a href="http://www.tkk7.com/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格式下蝲http://www.tkk7.com/guming123416/archive/2009/04/01/263282.html天空苍茫天空苍茫Wed, 01 Apr 2009 01:43:00 GMThttp://www.tkk7.com/guming123416/archive/2009/04/01/263282.htmlhttp://www.tkk7.com/guming123416/comments/263282.htmlhttp://www.tkk7.com/guming123416/archive/2009/04/01/263282.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/263282.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/263282.html不知道ؓ什么。不能在blogjava上上传,所以将该资源放在自q另一个blog上,如果有需要的用户Q可以度下蝲地址Q?a >http://blog.javaworker.cn/read.php/23.htm



天空苍茫 2009-04-01 09:43 发表评论
]]>
LuceneQ?.4.1Q技术研I?4)--Field源代?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2009/03/31/263059.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/263059.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2009/03/31/263059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/263059.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/263059.html</trackback:ping><description><![CDATA[<p>Fieldc(cM数据库中的字D与属性)<br />     该类实现接口QFieldable    l承静态类: AbstractField<br />     Fieldable接口。主要是描述一些基信息的内?br />         讄权重以及获取权重 [void setBoost(float boost), float getBoost();]<br />         获取名称String name();<br />         获取Stringcd的值public String stringValue();<br />         以Reader方式q回public Reader readerValue();<br />         以二q制或者TokenStream  方式q回public byte[] binaryValue();public TokenStream       tokenStreamValue();<br />         是否被存储boolean  isStored();<br />         是否被烦引boolean  isIndexed();<br />         是否被分词boolean  isTokenized();<br />         是否是压~存?boolean  isCompressed();<br />         是否是二q制boolean  isBinary();<br />            ......其他的读者可以参考源代码<br /> AbstractField抽象cd义的一些常量:<br />           protected String name = "body";                        //表示该Filed的名U?br />           protected boolean storeTermVector = false;    //表示是否存储词条向量<br />           protected boolean storeOffsetWithTermVector = false;  //存储词条向量的偏U量<br />           protected boolean storePositionWithTermVector = false;  //存储词条向量的位|?br />           protected boolean omitNorms = false;     //<br />           protected boolean isStored = false;      //是否存储<br />           protected boolean isIndexed = true;      //是否是烦?br />           protected boolean isTokenized = true;     //是否是分?br />           protected boolean isBinary = false;      //是否是二q制数据<br />           protected boolean isCompressed = false;     //是否是压~?br />           protected boolean lazy = false;      //是否是gq?br />           protected boolean omitTf = false;     //<br />           protected float boost = 1.0f;      //讄Ȁ励因?br />           protected Object fieldsData = null;     //Field的内部属性的具体内容<br />           protected int binaryLength;       //二进制数据长?br />           protected int binaryOffset;       //二进制数据偏U量</p> <p>FiledcL代码解析<br />     首先Filed内部定义了三个静态类Store、Index、TermVector?br /> //定一个静态类Store Q主要ؓ了设|Field的存储属?br /> public static final class Store extends Parameter implements Serializable {<br />     private Store(String name) {<br />       super(name);<br />     }<br />     //使用压羃的方式来存储Field的?br />     public static final Store COMPRESS = new Store("COMPRESS");<br />     //在烦引中存储Field的?br />     public static final Store YES = new Store("YES");<br />     //在烦引中不存贮Field的?br />     public static final Store NO = new Store("NO");<br />   }<br /> //定一个静态类Index Q主要ؓ了设|Field的烦引属?br /> public static final class Index extends Parameter implements Serializable {<br />     private Index(String name) {<br />       super(name);<br />  }<br />  //不对Fieldq行索引Q所以这个Field׃能被索到(一般来_建立索引而它不被检索,q是没有意义?<br />  //如果对该Fieldq设|了Field.Store为Field.Store.YES或Field.Store.COMPRESSQ则可以?br />     public static final Index NO = new Index("NO");</p> <p>    //对Fieldq行索引Q同时还要对其进行分?由Analyzer来管理如何分?<br />     public static final Index ANALYZED = new Index("ANALYZED");<br /> //废弃的属性,使用ANALYZED 来替?br />      public static final Index TOKENIZED = ANALYZED;<br /> //对Fieldq行索引Q但是不对该Field使用分词<br />     public static final Index NOT_ANALYZED = new Index("NOT_ANALYZED");<br /> //废弃的属性,使用NOT_ANALYZED来替?br />     public static final Index UN_TOKENIZED = NOT_ANALYZED;<br /> //即不对Field索引Q也不对其用Analyzer来分?br />     public static final Index NOT_ANALYZED_NO_NORMS = new  Index("NOT_ANALYZED_NO_NORMS");<br /> //废弃的属性,有NOT_ANALYZED_NO_NORMS来替?br />     public static final Index NO_NORMS = NOT_ANALYZED_NO_NORMS;<br /> //对Field属性,使用分词Q但是不是用Analyzer来分?br />     public static final Index ANALYZED_NO_NORMS = new Index("ANALYZED_NO_NORMS");<br />   }<br /> q是一个与词条有关的类。因为在索的时候需要指定检索关键字Q通过Z个Fieldd一个TermVectorQ就可以在检索中把该Field索到?br /> public static final class TermVector  extends Parameter implements Serializable {<br />     private TermVector(String name) {<br />       super(name);<br />     }<br />     //不存?br />     public static final TermVector NO = new TermVector("NO");<br />     //为每个Document都存储一个TermVector<br />     public static final TermVector YES = new TermVector("YES");<br />     //存储Qƈ且存在位|信?br />     public static final TermVector WITH_POSITIONS = new TermVector("WITH_POSITIONS");<br />     //存储Qƈ且存贮偏U量信息<br />     public static final TermVector WITH_OFFSETS = new TermVector("WITH_OFFSETS");<br />     //存储位置、偏U量{所有信?br />     public static final TermVector WITH_POSITIONS_OFFSETS = new TermVector("WITH_POSITIONS_OFFSETS");<br />   }</p> <p>构造函?br />  public Field(String name, String value, Store store, Index index)   <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 />  public Field(String name, byte[] value, Store store) <br /> public Field(String name, byte[] value, int offset, int length, Store store) </p> <p>程Q?br /> 首先查name以及values不能为空以及Nnull?br /> 然后查是否是存储以及是否分词如果两者都是NoQ则抛出异常?br /> 然后查是否存储以及是否向量分词,如果两者都是No'Q则抛出异常?br /> 然后该Filed的名U命令传递过来的名称源代码(this.name = name.internQ?br /> 表示获取JVM String帔R池的地址<br /> 此时ҎStore的|来设|是否存储以及压~的?br /> 然后ҎIndex的|来设|是否烦引、是否分词、omitNorms  的g及置是否是二q制<br /> 然后开始根据TermVector 的|来设|是否存储向量、是否存储偏U量、是否存储位|等信息?br /> <br /> <br /> 以上信息可能存在分析不正,请大家给指证Q本语有不怎么好,<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.tkk7.com/guming123416/aggbug/263059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-31 10:48 <a href="http://www.tkk7.com/guming123416/archive/2009/03/31/263059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LuceneQ?.4.1Q技术研I?3)--Document源代?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2009/03/30/262909.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/262909.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2009/03/30/262909.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/262909.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/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="宋体">文g</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自己定义的一U文件格式,lucene使用docement来代替对应的物理文g或者保存在数据库中的数据。因此Document只能作ؓ数据源在Lucene中的数据存贮的一U文件Ş式?/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。只要用户将不同的文件创建成Documentcd的文ӞLucenep快速找到查扑ƈ且用他们?/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文gQ可以同时增加多个Field。Lucene中对于每个数据源是用FieldcL表示的。多个Fieldl成一个DocumentQ多个Documentl成一个烦引文件。Document与Field关系如果一所C?/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'"><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.tkk7.com/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="宋体">此时Q我们去看看Documentq个cȝ源代码。Document采用默认不带参数的构造函敎ͼ但是我们他在创徏的时_<br />         产生两个变量Q?/font></span><span style="font-size: 10.5pt; background: rgb(255,255,255); color: rgb(0,0,192); font-family: 'ËÎÌå'; 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: 'ËÎÌå'; 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是创Z一个arrayList,其主要是保存Fieldc?/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="宋体">其方法:addQFieldable fieldQ增加一个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'">   </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 name)  <font face="宋体">ҎnameU除一个ield对象Q找C个就q回Q?/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 name)  <font face="宋体">ҎnameU除所有的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 getField(String name)  <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 getFieldable(String name)  <font face="宋体">Ҏ名字扑ֈFieldable子类QFieldable?/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="宋体">接口Q具体有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 get(String name) <font face="宋体">Ҏ名字Q找到给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 final byte[] getBinaryValue(String name) <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="宋体">数据Q如果不存在Q则q回nullQ?/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'">    public final List getFields() <font face="宋体">直接q回该Doc中包含的Field?br /> </font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p>    <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.tkk7.com/guming123416/aggbug/262909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-30 16:17 <a href="http://www.tkk7.com/guming123416/archive/2009/03/30/262909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LuceneQ?.4.1Q技术研I?2)--分析事例 http://www.tkk7.com/guming123416/archive/2009/03/27/262483.html天空苍茫天空苍茫Fri, 27 Mar 2009 09:54:00 GMThttp://www.tkk7.com/guming123416/archive/2009/03/27/262483.htmlhttp://www.tkk7.com/guming123416/comments/262483.htmlhttp://www.tkk7.com/guming123416/archive/2009/03/27/262483.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/262483.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/262483.html1?/span>我们d析一下该D늨序?br />
a) 首先我们创徏一个类IndexWriter,该类是lucene创徏索引的核心,其主要功能是所有的数据源所有内容,l过分词处理Q创建成索引格式的文Ӟ同数据库惛_比,一个烦引文件就相当一张表Q?br />
b) 然后Q我们定义了documentcRLucene是将所有的数据源都转换成Documentcd的文Ӟlucene内部只能识别出Documentcd的文件。(同数据库相比的话QDocument像一个表的每一条记录。)

c) 然后我们定义了一些Filec,其中File是作为真实的数据存储使用Q每一个需要烦引的内容都对应一个FiledQ(和数据库相比QFieldq当一一条记录的一个属性与其|?br />
d) 然后Field增加到Document中,其中每个Document可以增加到多个Field对象。然后将所有的Doc交给IndexWriterd建烦引,创徏完成后,如图一


图一 lucene索引后的文g

E)
然后开始查询,首先使用IndexReader来读取所创徏目录下的索引文gQ然后创Z个IndexSearch对象Q该对象主要功能是从烦引中查询?br />
F)
然后定义查询{略Q本例中采用queryParse来查询,然后循环Q将所有查询的l果打印出来?br />


天空苍茫 2009-03-27 17:54 发表评论
]]>
LuceneQ?.4.1Q技术研I?1)--lucene技?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2009/03/27/262332.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/262332.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2009/03/27/262332.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/262332.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/262332.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.tkk7.com/guming123416/archive/2009/03/27/262332.html'>阅读全文</a><img src ="http://www.tkk7.com/guming123416/aggbug/262332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-27 13:18 <a href="http://www.tkk7.com/guming123416/archive/2009/03/27/262332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 下的命ohttp://www.tkk7.com/guming123416/archive/2008/09/12/228649.html天空苍茫天空苍茫Fri, 12 Sep 2008 12:25:00 GMThttp://www.tkk7.com/guming123416/archive/2008/09/12/228649.htmlhttp://www.tkk7.com/guming123416/comments/228649.htmlhttp://www.tkk7.com/guming123416/archive/2008/09/12/228649.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/228649.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/228649.html
一. 启动,x,d,d相关命o
<login> d
<logout> d
<exit> d
<shutdown> 停止pȝ
<halt> 停止pȝ
<reboot> 重启?br /> <poweroff> 切断甉|
<sync> 把内存里的内容写入磁?br /> <lilo> 安装lilo启动理E序
<grub> 安装lilo启动理E序


? Shell相关命o
<chsh> 切换Shell
<history> 昄命o履历
<alias> 讄命o别名
<unalias> 取消命o别名
<which> 昄命o所在位|?br /> <type> 查询命oU类
<echo> 昄字符串或者变量内?br /> <set> 讄/昄Shell变量
<printenv> 昄环境变量
<export> 讄环境变量
<env> 讄临时环境变量
<unset> 释放环境变量
<setenv> 讄环境变量
<unsetenv> 释放环境变量
<source> 执行文g当中的命?br /> <man> 查询命o手册
<info> 查询文本命令手?br /> <whatis> 昄命o?br /> <apropos> 通过关键字查询手?/font>


? 用户理相关命o
<su> 切换到其他用?br /> <useradd> q加用户
<adduser> q加用户
<userdel> 删除用户
<usermod> 修改用户讄
<chfn> 修改用户Uh信息
<groupadd> q加l?br /> <groupdel> 删除l?br /> <groupmod> 修改l设|?br /> <passwd> 更改密码
<whoami> 昄用户?br /> <logname> 昄d用户帐号
<users> 昄所有登录用户信?br /> <who> 查询d用户信息
<w> 查询d用户信息
<id> 昄指定用户的ID信息
<groups> 昄指定用户的所属组
<finger> 昄指定用户的个Z?br /> <mesg> 开关与他h收发消息
<write> l其他用户发消息
<wall> l所有用户发消息
<talk> 和其他用戯?/font>


? pȝ消息相关命o
<date> 昄/讄当前旉
<uptime> 昄pȝq行旉
<arch> 昄机器的核心构Ӟ如i386Q?br /> <uname> 昄操作pȝ信息
<tty> 昄l端?br /> <last> 昄d/d在?br /> <lastb> 昄非法d信息
<dumpkeys> 昄当前键盘配置
<loadkeys> 变更键盘配置
<df> 查询盘使用信息
<du> 查询盘使用信息
<dmesg> 昄pȝ启动消息
<script> 保存输入输出到文?/font>


? 文g操作相关命o
<ls> 昄文g列表
<tree> 昄目录?
<pwd> 昄当前路径
<cd> 更改当前路径
<pushd> q加路径到目录堆?br /> <popd> 从目录堆栈删除\?br /> <dirs> 昄目录堆栈的内?br /> <mkdir> 创徏路径
<rmdir> 删除路径
<cp> 复制文g/目录
<rm> 删除文g/目录
<mv> Ud文g/目录Q修Ҏ件名
<chown> 更改文g/目录的所有?br /> <chgrp> 修改文g/目录的所有组
<chmod> 修改文g/目录的权?br /> <touch> 更改文g旉
<ln> 建立文g/目录链接
<find> 查找文g
<whereis> 昄文g存在的\径名
<file> 查询文gU类
<size> 查询文g大小


? 文g~辑相关命o
<cat> 昄文g内容
<tee> 输出到文件和屏幕
<more> 分屏昄文g内容
<less> 分屏昄文g内容
<head> 昄文g头部内容
<tail> 昄文gN内容
<fold> 折叠昄长行
<sort> 排列文g的行
<cmp> 比较文g内容
<diff> 昄文g差异
<nkf> 更改日语文g~码
<dd> 变更文g之后复制
<wc> l计文本单词敎ͼ文g大小{?br /> <split> 分割文g
<paste> 以行q接文g
<join> 以字D连接文?br /> <grep> 查询文字
<uniq> qo重复部分昄文g内容
<tr> 替换文字
<sed> 替换文字


? 压羃/解压~相兛_?/strong>
<ar> 压羃/解压~文?br /> <tar> 压羃/解压~文?br /> <compress> 压羃/解压~文?br /> <uncompress> 解压~?br /> <gzip> 压羃/解压~文?br /> <gunzip> 解压~?br /> <zcat> 昄压羃文g的内?br /> <lha> 压羃/解压~文?br /> <uuencode> 把二q制文g~码为文本文?br /> <uudecode> 把经q编码的文本文gq原Zq制文g


? MS-DOS工具集[mtools]命o
<mdir> 昄文g列表
<mcd> 改变当前目录
<mmd> 新徏目录
<mrd> 删除目录
<mdeltree> 删除目录?br /> <mcopy> 复制文g
<mdel> 删除文g
<mmove> Ud文g
<mren> 更改文g或目录名
<mattrib> 修改文g属?br /> <mtype> 昄文g内容
<mdu> 查询文g或目录大?br /> <minfo> 昄盘信息
<mformat> 以MS-DOS方式格式化磁?br /> <mlabel> 讄盘标签


? 控制外部讑֤相关命o
<mount> mount上设?br /> <umount> 解除已经mount上的讑֤
<eject> 弹出QCD/DVD{)
<fdformat> 格式化Y?br /> <fdisk> 配置/昄盘分区
<mkfs> 格式化磁盘分?br /> <fsck> ?修复盘错误
<lpr> 打印到打印机
<lprm> 中断打印d
<lpq> 昄打印d的状?br /> <lpc> 理/控制打印d
<ifconfig> 昄/讑֮NIC配置


? q程及Q务管理相兛_?/strong>
<ps> 昄正在q行的进E?br /> <jobs> 昄后台q行d
<fg> 把Q务切换到前台
<bg> 把Q务切换到后台
<kill> 中止q程或Q?br /> <killall> 中止q程或Q?br /> <wait> {待q程或Q务的l束
<at> 讄定时执行d
<atq> 昄未执行的Q?br /> <atrm> 删除定时执行d
<batch> 在系l负荷减ȝ时候执行Q?br /> <nice> 改变优先度ƈ执行d
<nohup> 在后台执行Q务,Logout之后也不退?br /> <sleep> 休眠一定的旉


十一. |络理相关命o
<netstat> 昄当前|络q接状况
<route> 昄/讄路由
<host> 昄|络L情况
<hostname> 昄/讄当前L的名?br /> <ping> 认和远E机器的q接情况
<traceroute> 昄路由信息
<rwho> 查询|上机器的登陆用?br /> <ruptime> 查询|上机器的系l运行时?br /> <rlogin> 登陆到远E机?br /> <telnet> 用telnet登陆到远E机?br /> <rsh> l远E机器发送命?br /> <rcp> 在远E机器之间复制文?br /> <mail> 收取邮g
<sendmail> 发送邮?br /> <mailq> 认邮g队列
<ftp> 用ftp传输文g


十二. 其他命o
<cal> 昄日历
<clear> 清屏
<gcc> ~译C语言代码
<as> 汇编
<bc> 计算
<rpm> Redhat的包理
<dpkg> Debian的包理
<installpkg> Slackware的包安装Q删除命令则是removepkgQ?br /> <XF86Setup,turboxfg,Xconfigurator> 配置 X 服务?br /> <startx> 启动 X-Window pȝ

附:l合命o
重定向,?br /> $ ls -l /bin > ls-output
$ more ls-output

道命oQ如
$ cat file1 file2 | sort | uniq

l常被用于管道的命o
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc


天空苍茫 2008-09-12 20:25 发表评论
]]>
spring源代码学习(2.0.5Q一QBeanFactoryQ?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2008/07/06/212916.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/212916.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2008/07/06/212916.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/212916.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/212916.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.tkk7.com/guming123416/archive/2008/07/06/212916.html'>阅读全文</a><img src ="http://www.tkk7.com/guming123416/aggbug/212916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2008-07-06 22:04 <a href="http://www.tkk7.com/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.tkk7.com/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.tkk7.com/guming123416/archive/2008/04/11/192149.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/192149.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2008/04/11/192149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/192149.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/192149.html</trackback:ping><description><![CDATA[        在做目中用struts2Q本来以为在.action中包含的另外的JSP面中不能通过session.getAttribute()获得相应的属性|但是目的小l成员没有考虑到哪么详l,q接在被包含页面中使用session.getAttribute()获得该属性|竟然正常获得该属性倹{?br />         仔细xQ是可以的,在这个页面中是直接调用jspQ服务器首先该jsp~译Q而本只是一个连接地址。而页面加载就是直接加载编译时_被包含的jsp面上的信息q接从servletQ而不是在action中,<br /> <br /> <br />                              <span style="color: red">   <strong>看来以后做Q何事情都要好好的试后才能得出结?/strong></span><br /> <img src ="http://www.tkk7.com/guming123416/aggbug/192149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2008-04-11 12:42 <a href="http://www.tkk7.com/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.tkk7.com/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.tkk7.com/guming123416/archive/2007/12/05/struts2.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/165375.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2007/12/05/struts2.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/165375.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/165375.html</trackback:ping><description><![CDATA[最q学习struts2Q以前曾l学习过webwork2.2Q因此学习v来感觉还是蛮快的Q不q,最q遇C个问题。调试了好多天,l于搞定了,问题描述Q(我做的是一个登陆)<br /> 首先输入用户名、密码和验证码,如果有Q何一个输入错误,action执行后,q回到登陆页面,再次修改用户名、密码和验证码后Q在ơ提交。系l竟然没有反应,<br /> 错误前代码:<br /> <br />     if(admin.getSadminName()==null||admin.getSadminName().length() < 1) {<br />             addFieldError("admin.sadminName", "用户名错?");<br />             return INPUT;<br />         }<br />         if(admin.getSadminPass()==null||admin.getSadminPass().length() < 1) {<br />             addFieldError("admin.sadminPass", "密码错误Q?);<br />             return INPUT;<br />         }<br />         if(vn==null||vn.length()<1) {<br />             addFieldError("vn", "验证码输入错误!");<br />             return INPUT;<br />         }<br />         String ValidateNumber = sessionMap.get("ValidateNumber").toString();<br />         logger.info("ValidateNumber="+ValidateNumber);<br />         logger.info("vn="+vn);<br />         if(ValidateNumber==null||ValidateNumber.length()<1) {<br />             addFieldError("vn", "验证码baocun输入错误Q?);<br />             return INPUT;<br />         }<br />         if(ValidateNumber.equalsIgnoreCase(vn)==false) {<br />             addFieldError("vn", "验证码输11入错误!");<br />             return INPUT;<br />         } <br />         Tadmin cAdmin = adminService.validateAdmin(admin.getSadminName(),MD5.getString(admin.getSadminPass()));<br />         if(cAdmin==null) {<br />             addFieldError("admin.sadminName", "用户名或者密码错?);<br />             System.out.println("用户名密码错?);<br />             return INPUT;<br />         }<br />         sessionMap.put(NewsUtil.ADMIN_USERKEY, cAdmin);<br />         return SUCCESS;<br /> 如果是这L。action只能执行一ơ,好像action中的参数一直没有释放,所以再ơ提交,action一直处于运行状态,再次提交Q系l不会改变?br /> 如果修改?br />     //查用户名是不是存?br />         if(NewsUtil.checkNull(admin.getSadminName())){<br />             //addFieldError("admin.sadminName", "您输入的用户名有错误");<br />             //actionMessage.<br />             addActionMessage("您输入的用户名有错误");<br />             System.out.println("您输入的用户名有错误");<br />             return INPUT;<br />         }<br />         //查密码是不是I或者null<br />         if(NewsUtil.checkNull(admin.getSadminPass())){<br />             //addFieldError("admin.sadminPass", "您输入的密码不正?);<br />             System.out.println("您输入的密码不正?);<br />             return INPUT;<br />         }<br />         if(NewsUtil.checkNull(vn)){<br />             //addFieldError("vn", "您输入验证码错误");<br />             System.out.println("您输入验证码错误");<br />             return INPUT;<br />         }<br />         String validateNumber = (String)SessionMap.get("ValidateNumber");<br />         if(NewsUtil.checkNull(validateNumber)){<br />             //addFieldError("vn", "你的验证码不正确。请重新输入");<br />             System.out.println("你的验证码不正确。请重新输入");<br />             return INPUT;<br />         }<br />         if(validateNumber.equalsIgnoreCase(vn)==false){<br />             //addFieldError("vn", "您输入的验证码不正确。请重新输入");<br />             System.out.println("您输入的验证码不正确。请重新输入");<br />             return INPUT;<br />         }<br />         Tadmin cAdmin = adminService.validate(admin.getSadminName(), MD5.getString(admin.getSadminPass()));<br />         if(cAdmin == null){<br />             //addFieldError("admin.sadminName", "对不P您输入的用户名或者密码有问题");<br />             System.out.println("对不P您输入的用户名或者密码有问题");<br />             return INPUT;<br />         }<br />         //开始更新用L陆信息的更新<br />         cAdmin.setIloginTime(cAdmin.getIloginTime()+1);<br />         //cAdmin.setSlastLoginIp(validateNumber)<br />         cAdmin.setSlastLoginTime(new Date());<br />         adminService.update(cAdmin);<br />         SessionMap.put(ShopUtil.TADMIN_LOGINED_KEY, cAdmin);<br />         return SUCCESS;<br /> OKl了,我在怀疑是不是我用的版本中有q样的一个bugQ? <br /> <img src ="http://www.tkk7.com/guming123416/aggbug/165375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2007-12-05 09:35 <a href="http://www.tkk7.com/guming123416/archive/2007/12/05/struts2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷的问题。关于String中replaceAllҎ http://www.tkk7.com/guming123416/archive/2007/09/15/145289.html天空苍茫天空苍茫Sat, 15 Sep 2007 01:07:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/15/145289.htmlhttp://www.tkk7.com/guming123416/comments/145289.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/15/145289.html#Feedback6http://www.tkk7.com/guming123416/comments/commentRss/145289.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/145289.html今天在解析html旉Q在调用面面中替换链接时间发生没有错误,E序执行的该步骤Q但是就是没有将我要求替换的内容l替换掉?

q个是需要替换的内容<a href=../../08/19/10483.html>下一: PHP+MySQL应用中用XORq算加密法</a>

不知道是什么原因,replassall竟然不能替换Q是找不到源里的数据Q还是其他有问题呢?其他面都能替换掉,是?-2个页面不能替换,郁闷。是不是字符~码的问题?有谁知道吗?误?br />


我用indexof("")旉发现里边实存在。该内容Q,我需要替换的字符是‘<a href=../../08/19/10483.html>下一: PHP+MySQL应用中用XORq算加密法</a>’Q难道是‘../’的问?br />
以前使用split拆分的时间发?#8216;.’有时间是q的,q个应该是关键标C的原因Q但是这个replaceall竟然也不能,其他链接和该链接是一致的Q替换的只是名称和地址Q其他都是一L


天空苍茫 2007-09-15 09:07 发表评论
]]>
javascript中的各种输入限制 (转帖)http://www.tkk7.com/guming123416/archive/2007/09/10/144017.html天空苍茫天空苍茫Mon, 10 Sep 2007 07:43:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/10/144017.htmlhttp://www.tkk7.com/guming123416/comments/144017.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/10/144017.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/144017.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/144017.html1.文本框输入限?

֮现限制输入大、小写英文,数字QQ点小敎ͼ日期Q中文,部分英文Q部分中文等众多功能。直接加入到html代码中即可用?/p>

<script>
function regInput(obj, reg, inputStr)
{
var docSel = documentQselection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
</script>

写英文Q?lt;xmp style= "display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[a-z]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[a-z]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[a-z]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled"><br>

大写英文Q?lt;xmp style= "display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[A-Z]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[A-Z]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[A-Z]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">
<br>

L数字Q?lt;xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[0-9]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[0-9]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[0-9]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled"><br>

?位小敎ͼ<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^\d*\.?\d{0,2}$/,
String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^\d*\.?\d{0,2}$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^\d*\.?\d{0,2}$/,
event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">

? 123.12<br>

日  期:<xmp style="display:inline"> </xmp>

<input onkeypress = "return regInput(this, /^\d{1,4}
([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/,
String.fromCharCode(event.keyCode))"

onpaste = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
window.clipboardData.getData('Text'))"

ondrop = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
event.dataTransfer.getData('Text'))"

style="ime-mode:Disabled">

? 2002-9-29<br>

L中文Q?lt;xmp style="display:inline"> </xmp>

<input onkeypress = "return regInput(this, /^$/,
String.fromCharCode(event.keyCode))"

onpaste = "return regInput(this, /^[\u4E00-\u9FA5]*$/,
window.clipboardData.getData('Text'))"

ondrop = "return regInput(this, /^[\u4E00-\u9FA5]*$/,
event.dataTransfer.getData('Text'))"><br>

部分英文Q?lt;xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[a-e]*$/,
String.fromCharCode(event.keyCode))"

onpaste = "return regInput(this, /^[a-e]*$/,
window.clipboardData.getData('Text'))"

ondrop = "return regInput(this, /^[a-e]*$/,
event.dataTransfer.getData('Text'))"

style="ime-mode:Disabled">

范围: a,b,c,d,e<br>

部分中文Q?lt;xmp style="display:inline"> </xmp>
<script language=javascript>

function checkChinese(oldLength, obj)
{
var oTR = window.documentQselection.createRange()
var reg = /[^一二三四五六七八九十]/g
oTR.moveStart("character", -1*(obj.value.length-oldLength))
oTR.text = oTR.text.replace(reg, "")
}
</script>

<input onkeypress="return false" onkeydown=
"setTimeout('checkChinese('+this.value.length+','+this.uniqueID+')',
1)"

onpaste = "return regInput(this, /^[一二三四五六七八九十]*$/,
window.clipboardData.getData('Text'))"

ondrop = "return regInput(this, /^[一二三四五六七八九十]*$/,
event.dataTransfer.getData('Text'))">

范围: 一二三四五六七八九?lt;br>

2.不能展开右键Q不能全选,不能复制的实?

<body oncontextmenu="window.event.returnvalue=false"
onkeypress="window.event.returnvalue=false"
onkeydown="window.event.returnvalue=false"
onkeyup="window.event.returnvalue=false"
ondragstart="window.event.returnvalue=false"
onselectstart="event.returnvalue=false">
...
</body>

3.止面正文内容被选取

<body oncontextmenu="return false" ondragstart="return false"
onselectstart ="return false" onselect="documentQselection.empty()"
oncopy="documentQselection.empty()" onbeforecopy="return false"onmouseup="documentQselection.empty()">

4.避免别h把网|在框架中

<script language=“javascript”><!--if (self!=top){top.location=self.location;}-->< /script>

5.示查看源代?

<frameset>
<frame src="你要保密的文件的URL">
</frameset>

6.关闭输入?

<input style="ime-mode:disabled">

7.止囄下蝲

在这里的最后加入:

oncontextmenu="return false" ondragstart="return false" onselectstart="return
false" scroll="auto"

8.止~存

在HEAD里加入:

<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">



天空苍茫 2007-09-10 15:43 发表评论
]]>
Q{帖)利用xfire开发webservice专题[一]http://www.tkk7.com/guming123416/archive/2007/09/07/143322.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:51:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/07/143322.htmlhttp://www.tkk7.com/guming123416/comments/143322.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/07/143322.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/143322.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/143322.html
  使用Web Service技术进行系l集成和q去使用其它面向函数和方法的技术进行集成类|在进行初始设计的时候主要考虑不同应用之间Q系l不同模块之间消息及数据传递的需求;Ҏ具体需求设|相应的接口Q描q接口特性;针对不同应用的^台选择相应的Web ServicelgQ进行相应设|;实现不同应用的接口,q行相应调试Q实际运行,应用E序间进行协同调试?

        webService主要是可以解决站炚w的数据共享问题,把复杂的业务ҎQ封装在被调用的站点上面Q这样不是WEB站点和其他的应用E序Q当然要能保证上|)都可以访问到暴露的方法?/p>

myeclipse5.1支持xfire支持的非常棒。这里讲解一个简单的例子Q?
此文章ؓ引用文章Q仅做保留,供学习参考?




天空苍茫 2007-09-07 09:51 发表评论
]]>
(转帖)利用xfire开发webservice专题[二]http://www.tkk7.com/guming123416/archive/2007/09/07/143321.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:51:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/07/143321.htmlhttp://www.tkk7.com/guming123416/comments/143321.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/07/143321.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/143321.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/143321.html

点击finish之后Qmyeclipse自动帮你生成services.xml以及web应用目录l构Q其中的services.xml是你导出服务的配|文Ӟ注意在WEB-INF/web.xml文g中配|了xfire自己?/p>

servlet.

 

代码

<servlet>  
   
<servlet-name>XFireServlet</servlet-name>  
         <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>  
         <load-on-startup>0</load-on-startup>  
    </servlet>  
   <servlet-mapping>  
        <servlet-name>XFireServlet</servlet-name>  
         <url-pattern>/services/*</url-pattern>  
    </servlet-mapping>  

 

2.接下来,现在~写要导出的pojoc,首先是接口:
q程QFile>New>Other>MyEclipse>Web Service
选择QCreate web service from Java beanQ把Create new javabean也勾?br />



天空苍茫 2007-09-07 09:51 发表评论
]]>
(转帖)利用xfire开发webservice专题[三]http://www.tkk7.com/guming123416/archive/2007/09/07/143320.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:50:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/07/143320.htmlhttp://www.tkk7.com/guming123416/comments/143320.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/07/143320.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/143320.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/143320.html

3。在D面中,输入

web service name:   HelloWorldTest
java package : services
services Interface : IHelloWorldTest
services impl.class :HelloWorldTestImpl

其他的默认,点finish
最后可以看到Web Services   下面的services.xml的内容如?br /> <beans xmlns=" <service>
   <name>HelloWorldTest</name>
   <serviceClass>services.IHelloWorldTest</serviceClass>
   <implementationClass>
    services.HelloWorldTestImpl
   </implementationClass>
   <style>wrapped</style>
   <use>literal</use>
   <scope>application</scope>
</service>
</beans>

4。services包中的文Ӟ

IHelloWorldTest.java
-----------------------------------------------
package services;
//Generated by MyEclipse

public interface IHelloWorldTest {

public String sayHello(String message);

}
----------------------------------------------------------

HelloWorldTestImpl.java
----------------------------------------------------
package services;
//Generated by MyEclipse

public class HelloWorldTestImpl implements IHelloWorldTest {

public String sayHello(String message) {
   return "Hello,"+message;
}

}
------------------------------------------------------------

到此为止webServices~码工作完成Q现在开始部|到tomcatq里省略?/p>

部v好后可以试下:
http://localhost:8080/HelloWorld/services/HelloWorldTest?WSDL




天空苍茫 2007-09-07 09:50 发表评论
]]>
(转帖)利用xfire开发webservice专题[四]http://www.tkk7.com/guming123416/archive/2007/09/07/143319.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:49:00 GMThttp://www.tkk7.com/guming123416/archive/2007/09/07/143319.htmlhttp://www.tkk7.com/guming123416/comments/143319.htmlhttp://www.tkk7.com/guming123416/archive/2007/09/07/143319.html#Feedback2http://www.tkk7.com/guming123416/comments/commentRss/143319.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/143319.html

新徏工程useWebServiceQƈ且徏立client和services?br /> bulid path中导入,XFire 1.1 core libraries 和XFire 1.1 HTTP client libraries.

SayHello.java
----------------------------------------
package client;
import java.net.MalformedURLException;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import services.IHelloWorldTest;

public class SayHello {
public String say(String name)
{
    String result="";
    Service srvcModel = new ObjectServiceFactory().create(IHelloWorldTest.class);
       XFireProxyFactory factory =  
          new XFireProxyFactory(XFireFactory.newInstance().getXFire());
       String helloWorldURL = "http://localhost:8080/HelloWorld/services/HelloWorldTest";
       try {
          IHelloWorldTest srvc = (IHelloWorldTest)factory.create(srvcModel, helloWorldURL);
           result = srvc.sayHello(name);
       } catch (MalformedURLException e) {
          e.printStackTrace();
       }finally{
        return result;}
}
}
--------------------------------------------------------------

IHelloWorldTest .java
---------------------------------------------------------------
package services;

public interface IHelloWorldTest {
public String sayHello(String message);
}
-----------------------------------------------------------------

创徏index.jspQbody部分
-----------------------

<form name="form1" action="say.jsp" method="POST">
您的大名Q?lt;input name="userName" type="text"/> <input value="提交" type="submit"/>
</form>
-------------------------------

创徏say.jsp,body部分
----------------------------------------------------------------
<%String name=(String)request.getParameter("userName");
String result=new SayHello().say(name);
%>
webServiceq程调用l果Q?<%=result %>
------------------------------------------------------------------------
q行下测试!OK



天空苍茫 2007-09-07 09:49 发表评论
]]>
手把手教你制作Google Sitemap(详细制作教程和协议讲?http://www.tkk7.com/guming123416/archive/2007/08/28/140579.html天空苍茫天空苍茫Tue, 28 Aug 2007 08:36:00 GMThttp://www.tkk7.com/guming123416/archive/2007/08/28/140579.htmlhttp://www.tkk7.com/guming123416/comments/140579.htmlhttp://www.tkk7.com/guming123416/archive/2007/08/28/140579.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/140579.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/140579.htmlGoogle SiteMap Protocol是Google自己推出的一U站点地囑֍议,此协议文件基于早期的robots.txt文g协议Qƈ有所升。在Google官方指南中指出加入了Google SiteMap文g的网站将更有利于Google|页爬行机器人的爬行索引Q这样将提高索引|站内容的效率和准确度。文件协议应用了单的XML格式Q一q?个标{,其中关键标签包括链接地址、更新时间、更新频率和索引优先权?/p> Google SiteMap文g生成后格式如下: <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> XML标签
  • changefreq:面内容更新频率?
  • lastmod:面最后修Ҏ?
  • loc:面怹链接地址
  • priority:相对于其他页面的优先?
  • url:相对于前4个标{父标{?
  • urlset:相对于前5个标{父标{?
我将一句一句分解讲解这个xml文g的每一个标{:
  1. <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    q一行定义了此xml文g的命名空_相当于网|件中?lt;html>标签一L作用?
  2. <url>q是具体某一个链接的定义入口Q你所希望展示在SiteMap文g中的每一个链接都要用<url>?lt;/url>包含在里面,q是必须的?
  3. <loc>http://duduwolf.winzheng.com</loc>?lt;loc>描述出具体的链接地址Q这里需要注意的是链接地址中的一些特D字W必{换ؓXML(HTML)定义的{义字W,如下表:
    字符 转义后的字符
    HTML字符 字符~码
    and(? & &amp; &
    单引?/td> &apos; &apos; '
    双引?/td> " &quot; "
    大于?/td> > &gt; >
    于?/td> < &lt; <
  4. <lastmod>2005-06-03T04:20:32-08:00</lastmod><lastmod>是用来指定该链接的最后更新时_q个很重要。Google的机器h会在索引此链接前先和上次索引记录的最后更新时间进行比较,如果旉一样就会蟩q不再烦引。所以如果你的链接内容基于上ơGoogle索引时的内容有所改变Q应该更新该旉Q让Google下次索引时会重新对该链接内容q行分析和提取关键字。这里必ȝISO 8601中指定的旉格式q行描述Q格式化的时间格式如下:
    • q_YYYY(2005)
    • q和月:YYYY-MM(2005-06)
    • q月日:YYYY-MM-DD(2005-06-04)
    • q月日小时分钟:YYYY-MM-DDThh:mmTZD(2005-06-04T10:37+08:00)
    • q月日小时分钟秒QYYYY-MM-DDThh:mmTZD(2005-06-04T10:37:30+08:00)
    q里需注意的是TZDQTZD指定是本地旉区域标记Q像中国是+08:00?
  5. <changefreq>always</changefreq>用这个标{֑诉Google此链接可能会出现的更新频率,比如首页肯定p用always(l常)Q而对于很久前的链接或者不再更新内容的链接可以用yearly(每年)。这里可以用来描q的单词p几个Q?always", "hourly", "daily", "weekly", "monthly", "yearly"Q具体含义我׃用解释了吧,光看单词的意思就明白了?
  6. <priority>1.0</priority> <priority>是用来指定此链接相对于其他链接的优先权比|此值定?.0 - 1.0之间
  7. q有</url>?lt;/urlset>Q这两个是来关闭xml标签的,q和HTML中的</body>?lt;/html>是一个道?
  8. 另外需要注意的?/strong>Q这个xml文g必须是utf-8的编码格式,不管你是手动生成q是通过代码生成Q徏议最好检查一下xml文g是否是utf-8~码Q最单的Ҏ是用记事本打开xml然后另存为时选择~码(或{换器)为UTF-8?


天空苍茫 2007-08-28 16:36 发表评论
]]>
使用DBCP建立的连接池。(直接使用在应用程序用Q?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2007/08/28/140313.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/140313.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2007/08/28/140313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/140313.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/140313.html</trackback:ping><description><![CDATA[<p>׃在JAVA自动获得新闻Q没有徏立web的环境,徏立的服务器放|在一台服务器上,数据库放在另一台服务器上,l果造成使用JDBC速度~慢Q因此修Ҏq接池:<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> * @author Administrator<br> *<br> */<br>public class DBConnectionFactory {<br> /**<br>  * Logger for this class<br>  */<br> private static final Logger logger = Logger<br>   .getLogger(DBConnectionFactory.class);</p> <p> private static ObjectPool connectionPool=null; <br> private static String sqlJdbc = ""; <br>    private static String sqlUser = ""; <br>    private static String sqlPwd = ""; <br>    @SuppressWarnings("unchecked")<br> private static Class driverClass=null; </p> <p><br>    public static void proDBConnectionFactory(){<br>     if(sqlJdbc.equals("")){<br>      sqlJdbc = "jdbc:jtds:sqlserver://27.0.0.1:1433/finance;tds=8.0;lastupdatecount=true";<br>     }<br>     if(sqlUser.equals("")){<br>      sqlUser = "sa";<br>     }<br>     if(sqlPwd.equals("")){<br>      sqlPwd = "11111";<br>     }<br>     initDataSource();<br>    }<br>     public synchronized static void initDataSource(){ <br>      if(driverClass == null){<br>       try {<br>    driverClass = Class.forName("net.sourceforge.jtds.jdbc.Driver");<br>   } catch (ClassNotFoundException e) {<br>    logger.error("在注册驱动名U的旉发生错误Q?+e.getMessage(),e);<br>   }<br>      }<br>      if(connectionPool == null){<br>       setupDriver(sqlJdbc);<br>       //printDriverStats(); <br>      }else{<br>       System.out.print("q接池已l存?);<br>      }<br>      try { <br>            // printDriverStats(); <br>         } catch (Exception e) { <br>             e.printStackTrace(); <br>         }   <br>     }<br>     <br>     public static Connection getConn(){<br>      proDBConnectionFactory();<br>      Connection conn = null;<br>      try { <br>             conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:FinanceDBPool"); <br>         } catch(SQLException e) { <br>             e.printStackTrace(); <br>         } <br>         return conn; </p> <p>     }<br>     <br>     public static void printDriverStats() throws Exception { <br>         PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:"); <br>         ObjectPool connectionPool = driver.getConnectionPool("FinanceDBPool"); <br>         System.out.println("zd的连? " + connectionPool.getNumActive()); <br>         System.out.println("I闲的连? " + connectionPool.getNumIdle()); <br>     } </p> <p>     <br>     public static void setupDriver(String connectURI){<br>      try {<br>   connectionPool = new GenericObjectPool(null); <br>    ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,sqlUser,sqlPwd); <br>    @SuppressWarnings("unused")<br>   PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory,connectionPool,null,null,false,true); <br>    Class.forName("org.apache.commons.dbcp.PoolingDriver"); <br>    PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");<br>    //driver.registerPool("FinanceDBPool",connectionPool);<br>    driver.registerPool("FinanceDBPool",connectionPool);</p> <p>  } catch (ClassNotFoundException e) {<br>   logger.error("注册q接池的旉发生错误:"+e.getMessage(),e);<br>  } catch (SQLException e) {<br>   logger.error("注册q接池的旉发生错误:"+e.getMessage(),e);<br>  }<br>     }<br> </p> <img src ="http://www.tkk7.com/guming123416/aggbug/140313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2007-08-28 09:47 <a href="http://www.tkk7.com/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.tkk7.com/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.tkk7.com/guming123416/archive/2007/08/26/139645.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/139645.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2007/08/26/139645.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/139645.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/139645.html</trackback:ping><description><![CDATA[昨天下蝲了myeclipse6.0.试用hQ感觉很不错Q,使用ewebedit的的旉Q输入代码:<input name="tNewsContent" type="hidden" id="tNewsContent"><br>      <IFRAME ID="eWebEditor1" src="htmledit/eWebEditor.jsp?id=tNewsContent&style=standard&savepathfilename=nImgPath" frameborder="0" scrolling="no" width="650" height="500"></IFRAME> 在保存文件的旉Qeclipse自动关闭了,我重新测试一下,q是一Ll果Q不知道是我pȝ的问题还是myeclipse的问题。我于是替换成myeclipse5.5的,一切正怺Q看来应该是myeclipse6.0的一个小bug?<br><br>今天早晨myeclipse自动升了,发现q个功能已经修复了, 但是再次使用的时_q是自动关闭了,艾!看来版本q是要稳定后才能使用啊,q一位惊天在自动升已经更新了该功能<br>真晕 <img src ="http://www.tkk7.com/guming123416/aggbug/139645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2007-08-26 22:29 <a href="http://www.tkk7.com/guming123416/archive/2007/08/26/139645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l历一些繁忙的工作Q开始学习webwork.http://www.tkk7.com/guming123416/archive/2007/07/27/132763.html天空苍茫天空苍茫Fri, 27 Jul 2007 05:50:00 GMThttp://www.tkk7.com/guming123416/archive/2007/07/27/132763.htmlhttp://www.tkk7.com/guming123416/comments/132763.htmlhttp://www.tkk7.com/guming123416/archive/2007/07/27/132763.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/132763.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/132763.html最q由于struts2比较行hQ我开始想学webwork2C本书《webwork in action》中文版Q但是却发现Q讲解按照是2.1.7新的Q现在都?.2.6.了,变化最?一个简单的helloworld例子Q?

web.xml
<?xml version="1.0" encoding="GB18030"?>
<web-app version="2.4"
 xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  <filter>
  <filter-name>webwork</filter-name>
  <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>webwork</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"

<xwork>
 <include file="webwork-default.xml"></include>
 <package name="default" extends="webwork-default">
  <action name="helloWorld" class="cn.javaworker.yeming.action.HelloWorld">
   <result name="success">index.jsp</result>
   <result name="input">hello.jsp</result>
  </action>
 </package>
</xwork>

hello.jsp
<%@ taglib prefix="ww" uri="/webwork"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>Enter you name</title>
  </head>
 
  <body>
  <ww:form action="helloWorld">
   <ww:textfield label="please enter user name" name="name"></ww:textfield>
   <input  type="submit"/>
  </ww:form>
   <form action="helloWorld.action">
     please enter you name:<input type="text" name="name" value="<ww:property value="name"/>"/>
    <input type="submit">
   </form>
  </body>
</html>

index.jsp

<%@ taglib prefix="ww" uri="/webwork"%>
<html>
 <head>
  <title>hello page</title>
 </head>
 <body>
  The message generated by my first action is :<ww:property value="message"/>
 </body>
</html>

HelloWorld.java

package cn.javaworker.yeming.action;

import com.opensymphony.xwork.ActionSupport;

/**
* @author $author
*/
@SuppressWarnings("serial")
public class HelloWorld extends ActionSupport{
 
 private String message;
 
 private String name;
 /**
  * @see com.opensymphony.xwork.Action#execute()
  */
 public String execute() throws Exception
 {
  if(name==null||name.equals("")||name.equals("world")){
   addFieldError("name","blank names or names of 'world' are not allowed!");
   return INPUT;
  }
  message ="hello "+name+"!\n";
  message+="this is the time is: "+System.currentTimeMillis();
  return SUCCESS;
 }
 /**
  * @return the name
  */
 public String getName() {
  return name;
 }
 /**
  * @param name the name to set
  */
 public void setName(String name) {
  this.name = name;
 }
 /**
  * @return the message
  */
 public String getMessage() {
  return message;
 }


}



天空苍茫 2007-07-27 13:50 发表评论
]]>
q段旉开始研IhibernateQ开始了解最新的hibernate技术(问题一QHibernate的No CurrentSessionContext configured 解决Ҏhttp://www.tkk7.com/guming123416/archive/2007/05/10/116458.html天空苍茫天空苍茫Thu, 10 May 2007 05:19:00 GMThttp://www.tkk7.com/guming123416/archive/2007/05/10/116458.htmlhttp://www.tkk7.com/guming123416/comments/116458.htmlhttp://www.tkk7.com/guming123416/archive/2007/05/10/116458.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/116458.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/116458.html今天按照满江U翻译的hibernate文档来做W一个简单的E序Q却出现No CurrentSessionContext configured 问题。在google上搜索,却发现是
是由于没有配|:current_session_context_class
在hibernate的配|文件中增加<property name="current_session_context_class">thread</property>
原因Q当你?Hibernate session factory的getCurrentSession() 函数时候,你可能见到过"No CurrentSessionContext configured!"

出现q个问题Q是因ؓ你没有正配|?Hibernate internal session context management .



天空苍茫 2007-05-10 13:19 发表评论
]]>
eclipse搭配Resin开发Struts应用之环境篇 http://www.tkk7.com/guming123416/archive/2007/03/30/107472.html天空苍茫天空苍茫Fri, 30 Mar 2007 06:27:00 GMThttp://www.tkk7.com/guming123416/archive/2007/03/30/107472.htmlhttp://www.tkk7.com/guming123416/comments/107472.htmlhttp://www.tkk7.com/guming123416/archive/2007/03/30/107472.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/107472.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/107472.html
JDK下面有一个非帔R要的目录Q即Q?$JAVA_HOME/jre/libQ大家用得最普遍的就?JAVA_HOME/jre/lib/ext目录Q可以放|常用的JAR扩展包)了,我喜Ƣ将jtds-1.2.jar文g拯到此目录下,当运行打包好的JARӞ不需要ؓ每一个JAR配置数据库驱动加载\径(当然Q你也可以将jtds-1.2.jar加入到系l环境变量中Q只是你得Reboot your computer而已Q?br />
好了Q下面言归正传,如果你用myeclipse配置了resin服务器,你会发现myeclipseq不能启动resinQ而在控制C打印出来的是resin.conf:241: Required file '\conf\app-default.xml' can not be read for resin:import.Q很明显Q是pȝ找不到app-default.xml'文gQ而这个文件确实在$RESIN_HOME/conf/目录下,打开resin.confQ定位到133行,发现配置文g是这LQ?lt;resin:import path="${resin.home}/conf/app-default.xml"/>Q因?{resin.home}/是Resin的当前目录,所以我们可以换?lt;resin:import path="./conf/app-default.xml"/>Q再启动QOK?br />
resin.conf里面q有一个地Ҏ较有意思,且看211行代码:<web-app-deploy path="webapps"/>Q系l配|的Web应用目录?RESIN_HOME/webappsQ而Eclipse工程发布后是?RESIN_HOME/deployQ所以我们干脆就不用myeclipse里的站点发布功能Q直接修改resin.conf文gQ加载一个外部目录,它手指向你的工E,扑ֈ如下代码Q?40行)<web-app id="/" root-directory="webapps/ROOT"/>Q在后面加上<web-app id="/import" root-directory="D:/eclipse/work/Import/WebRoot"/>?br />
好像问题q不止这么简单,因ؓ我的D:/eclipse/work/Import/WebRoot工程是用Struts框架开发的Q所有在resin启动import的时候,报了如下的错误:
javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl
XML解释器的错误Q顺便在Google上一搜,扑ֈ了三U解军_法,受推荐的Ҏ如下Q?br />?$JAVA_HOME/jre/lib目录下新建endorsed目录Q如果没有的话)Q然后将你工Elib目录下的xercesImpl.jar拯到刚建的那个目录里面Q问题即可解冟?br />
不推荐在$JAVA_HOME/jre/lib下面新徏内容为javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl的jaxp.properties文gQ当Ӟ如果你准备强行这么干的话Q你的Tomcat只能暗无天日了?br />

下面是附加内?br />
附一QApache与Resin集成
1. 更改Apache的文档目录:在httpd.conf中找到DocumentRootQ将其后双引号中的内Ҏ?D:/HttpServer/webapps/"
2. 配置Apache的Resin模块Q在httpd.conf最后添加如下代?br />      LoadModule caucho_module "D:/HttpServer/resin/win32/apache-2.2/mod_caucho.dll"
      <IfModule mod_caucho.c>
        ResinConfigServer localhost 6800
        CauchoStatus yes
      </IfModule>
3. 更改默认的访问文Ӟ在httpd.conf中找到DirectoryIndex Q在其后dindex.jsp index.php
      注意Q每个文件之间用I格间隔开
4. Resin虚拟目录配置Q在resin.conf中找到如下行<host id="" root-directory=".">Q然后加?br />      <web-app id="/import" root-directory="D:/HttpServer/webapps/import"/>
      id问\径,root-directory为文档目录所在\?br />5. 讄Resin启动Q你必须先在pȝ环境变量中配|JAVA_HOMEQ然后在命o行窗口中q入Resin目录Q输入httpd -installQ安装Resin为Windowspȝ服务Q,httpd -removeQ移除……)
l过以上步骤QResin可以监听处理所有Apache不能处理的文Ӟ包括.jsp, .do及其它控制器路径Qƈ同时解决了用80端口讉K时图片相对\径不对的问题

附二QApache中加入PHP处理模块Qƈ且屏蔽Resin3.1的PHP解释模块
1. 屏蔽resin的PHP处理模块Qresin?.0开始支持phpQ其3.1版本的PHP解释配置是在app-default.xml中(与resin.conf同一个目录)Q只要对servlet配置比较熟悉的都能在app-default.xml中轻易屏蔽PHP解释功能Q打开app-default.xml后,?lt;!--  -->屏蔽如下代码卛_Q?br />      <servlet servlet-name="resin-php"
           servlet-class="com.caucho.quercus.servlet.QuercusServlet">
      </servlet>
      <servlet-mapping url-pattern="*.php" servlet-name="resin-php"/>
      <welcome-file>index.php</welcome-file>
2. 配置Apache的PHP处理模块Q在httpd.conf最后添加如下代码(我的PHP是装在D:/HttpServer/php5Q?br />      ## Add php5 module
      LoadModule php5_module "D:/HttpServer/php5/php5apache2_2.dll"
      AddType application/x-httpd-php .php
      # Configure php.ini path
      PHPIniDir "D:/HttpServer/php5/"
呵呵Q因为Resin的PHP配置不太熟悉Q网上的资料也比较少Q所以还是用了Apache+PHP的处理方式?br />

天空苍茫 2007-03-30 14:27 发表评论
]]>
StringTokenizercȝ使用Ҏ http://www.tkk7.com/guming123416/archive/2006/11/29/84316.html天空苍茫天空苍茫Wed, 29 Nov 2006 04:28:00 GMThttp://www.tkk7.com/guming123416/archive/2006/11/29/84316.htmlhttp://www.tkk7.com/guming123416/comments/84316.htmlhttp://www.tkk7.com/guming123416/archive/2006/11/29/84316.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/84316.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/84316.html StringTokenizerQ字W串分隔解析cd
属于Qjava.util包?/span>

Q、构造函数?/span>

    1. StringTokenizer(String str) Q构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t?”、“换行符(‘\n?”、“回车符(‘\r?”?br />2. StringTokenizer(String str, String delim) Q构造一个用来解析str的StringTokenizer对象Qƈ提供一个指定的分隔W?br />3. StringTokenizer(String str, String delim, boolean returnDelims) Q构造一个用来解析str的StringTokenizer对象Qƈ提供一个指定的分隔W,同时Q指定是否返回分隔符?/ul>

    Q、方法?/span>
    说明Q?br />1. 所有方法均为publicQ?br />2. 书写格式QE修饰W] <q回cd> <Ҏ名(Qd数列表]Q?gt;
    如:
    static int parseInt(String s) 表示Q此ҎQparseIntQؓcL法(staticQ,q回cd为(intQ,Ҏ所需参数为Stringcd?/span>

      1. int countTokens() Q返回nextTokenҎ被调用的ơ数。如果采用构造函??Q返回的是分隔W数??)?br />2. boolean hasMoreTokens() Q返回是否还有分隔符?br />3. boolean hasMoreElements() Q结果同2?br />4. String nextToken() Q返回从当前位置C一个分隔符的字W串?br />5. Object nextElement() Q结果同4?br />6. String nextToken(String delim) Q与4cMQ以指定的分隔符q回l果?/ul>

      例子Q?/span>
      		String s = new String("The Java platform is the ideal platform for network computing");
      StringTokenizer st = new StringTokenizer(s);
      System.out.println( "Token Total: " + st.countTokens() );
      while( st.hasMoreElements() ){
      System.out.println( st.nextToken() );
                 }
      l果为:
      Token Total: 10
      The
      Java
      platform
      is
      the
      ideal
      platform
      for
      network
      computing

      ?:
      		String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
      StringTokenizer st = new StringTokenizer(s,"=",true);
      System.out.println( "Token Total: " + st.countTokens() );
      while( st.hasMoreElements() ){
      System.out.println( st.nextToken() );
      }
      l果为:
      Token Total: 19
      The
      =
      Java
      =
      platform
      =
      is
      =
      the
      =
      ideal
      =
      platform
      =
      for
      =
      network
      =
      computing


      天空苍茫 2006-11-29 12:28 发表评论
      ]]>StringBuffercȝ使用Ҏ http://www.tkk7.com/guming123416/archive/2006/11/29/84240.html天空苍茫天空苍茫Wed, 29 Nov 2006 02:15:00 GMThttp://www.tkk7.com/guming123416/archive/2006/11/29/84240.htmlhttp://www.tkk7.com/guming123416/comments/84240.htmlhttp://www.tkk7.com/guming123416/archive/2006/11/29/84240.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/84240.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/84240.html StringBufferQStringBuffercd

      描述Q在实际应用中,l常回遇到对字符串进行动态修攏V这时候,Stringcȝ功能受到限制Q而StringBuffercd以完成字W串的动态添加、插入和替换{操作?/span>

      Q、构造函数?/span>
        StringBuffer() Q构造一个没有Q何字W的StringBuffercR?br />StringBuffer(int length) Q?Q构造一个没有Q何字W的StringBufferc,q且Q其长度为length?br />StringBuffer(String str) Q以str为初始值构造一个StringBuffercR?/ul>

        Q、方法?/span>
        说明Q?br />1. 所有方法均为publicQ?br />2. 书写格式QE修饰W] <q回cd> <Ҏ名(Qd数列表]Q?gt;
        如:
        static int parseInt(String s) 表示Q此ҎQparseIntQؓcL法(staticQ,q回cd为(intQ,Ҏ所需参数为Stringcd?/span>

          1. StringBuffer append(boolean b)
          2. StringBuffer append(char c)
          3. StringBuffer append(char[] str)
          4. StringBuffer append(char[] str, int offset, int len)
          5. StringBuffer append(double d)
          6. StringBuffer append(float f)
          7. StringBuffer append(int i)
          8. StringBuffer append(long l)
          9. StringBuffer append(Object obj)
          10. StringBuffer append(String str)
          11. StringBuffer append(StringBuffer sb)


          以上的方法都是向字符串缓冲区“追加”元素,但是Q这个“元素”参数可以是布尔量、字W、字W数l、双_ֺ数、QҎ、整型数、长整型数对象类型的字符丌Ӏ字W串和StringBuffercȝ。如果添加的字符出了字W串~冲区的长度QJava自动进行扩充?/ul>
          		String question = new String("1+1=");
          int answer = 3;
          boolean result = (1+1==3);

          StringBuffer sb = new StringBuffer();
          sb.append(question);
          sb.append(answer);
          sb.append('\t');
          sb.append(result);

          System.out.println(sb);
          l果为:
          1+1=3 false

            12. int capacity() Q返回当前StringBuffer对象Q字W串~冲区)的ȝ_而非字符号串的长度?br />13. char charAt(int index) Q在当前StringBuffer对象中取索引号ؓindex的字W。第一个字W的索引为??br />14. StringBuffer delete(int start, int end) Q删除当前StringBuffer对象中以索引号start开始,到endl束的子丌Ӏ?br />15. StringBuffer deleteCharAt(int index) Q删除当前StringBuffer对象中烦引号为index的字W?br />16. void ensureCapacity(int minimumCapacity) Q重新设|字W号串缓冲区的ȝ间。如果minimumCapacity大于当前的ȝ_则新的空间被讄Q一U结果是minimumCapacityQ另一U结果是{“老空间”乘2?}?/ul>
            		StringBuffer sb1 = new StringBuffer(5);
            StringBuffer sb2 = new StringBuffer(5);

            sb1.ensureCapacity(6);
            sb2.ensureCapacity(100);

            System.out.println( "sb1.Capacity: " + sb1.capacity() );
            System.out.println( "sb2.Capacity: " + sb2.capacity() );
            l果为:
            sb1.Capacity: 12
            sb2.Capacity: 100

              17. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Q从当前StringBuffer对象的烦引号srcBegin开始,到srcEndl束的子Ԍ赋值到字符数组dst中,q且从dst的烦引号dstBegin开始?/ul>
              		StringBuffer sb = new StringBuffer("I love her!");
              char[] i = {'I',' ','l','o','v','e',' ','y','o','u'};

              sb.getChars(7,10,i,7);

              System.out.println( "sb: " + sb );
              l果为:sb: I love her!

                18. int indexOf(String str) Q返回当前StringBuffer对象中,W一个满str子串的位|?br />19. int indexOf(String str, int fromIndex) Q从当前StringBuffer对象的fromIndex开始查找,q回W一个满str子串的位|?br />20. StringBuffer insert(int offset, boolean b)
                21. StringBuffer insert(int offset, char c)
                22. StringBuffer insert(int offset, char[] str)
                23. StringBuffer insert(int index, char[] str, int offset, int len)
                24. StringBuffer insert(int offset, double d)
                25. StringBuffer insert(int offset, float f)
                26. StringBuffer insert(int offset, int i)
                27. StringBuffer insert(int offset, long l)
                28. StringBuffer insert(int offset, Object obj)
                29. StringBuffer insert(int offset, String str)


                以上的方法都是在当前StringBuffer对象中插入一个元素,在烦引号offset处插入相应的倹{?br />30. int lastIndexOf(String str) Q返回当前StringBuffer对象中,最后一个满str子串的位|?br />31. int lastIndexOf(String str, int fromIndex) Q从当前StringBuffer对象的fromIndex开始查找,q回最后一个满str子串的位|?br />32. int length() Q返回当前StringBuffer对象Q字W缓冲区Q中Q字W串的长度?span style="COLOR: red">注意Q此Ҏ与capacity() 不同?/span>
                33. StringBuffer replace(int start, int end, String str) Q替换当前StringBuffer对象的字W串。从start开始,到endl束的位|替换成str?br />34. StringBuffer reverse() Q将字符串翻转?/ul>
                		StringBuffer sb = new StringBuffer("0123456789");
                System.out.println( "sb.reverse(): " + sb.reverse() );
                l果为:sb.reverse(): 9876543210

                  35. void setCharAt(int index, char ch) Q设|烦引号index的字Wؓch?br />36. void setLength(int newLength) Q重新设|字W串~冲Z字符串的长度Q如果newLength于当前的字W串长度Q将截去多余的字W?/ul>
                  		StringBuffer sb = new StringBuffer("0123456789");
                  sb.setLength(5);
                  System.out.println( "sb: " + sb );
                  l果为:sb: 01234

                    37. String substring(int start) Q取当前StringBuffer对象中,从start开始到l尾的子丌Ӏ?br />38. String substring(int start, int end) Q取当前StringBuffer对象中,从start开始到end的子丌Ӏ?br />39. String toString() Q将当前StringBuffer对象转换成String对象?/ul>

                    天空苍茫 2006-11-29 10:15 发表评论
                    ]]>JBuilder开发常用的十九个快捷键http://www.tkk7.com/guming123416/archive/2006/08/07/62202.html天空苍茫天空苍茫Mon, 07 Aug 2006 09:22:00 GMThttp://www.tkk7.com/guming123416/archive/2006/08/07/62202.htmlhttp://www.tkk7.com/guming123416/comments/62202.htmlhttp://www.tkk7.com/guming123416/archive/2006/08/07/62202.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/62202.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/62202.html
                      2  Ctrl+Alt+P     昄/隐藏目面板

                      3  Ctrl+Alt+C     昄/隐藏代码与设计面?br />
                      4  Ctrl+Alt+S     昄/隐藏l构面板

                      5  Ctrl+Alt+M     昄/隐藏消息面板

                      6  Ctrl+Alt+U     昄/隐藏状态栏

                      7  Ctrl+Alt+Z     昄/隐藏目、结构、信息面?br />
                      8  Ctrl+B         选择Window-〉Swich选项

                      9  Ctrl+X         剪切

                      10 Ctrl+V         _脓

                      11 Ctrl+C         复制

                      12 Ctrl+J         ȀzM码模?br />
                      13 Ctrl+Shift+H   q入Ҏ的括?),昄参数提示H口

                      14 Ctrl+F         打开查询、替换窗?br />
                      15 Ctrl+-         打开cL询窗?br />
                      16 F5             E序加入断点

                      17 F8             逐行q行代码

                      18 F4             多行q行代码

                      19 Ctrl+鼠标右键  昄详细的变量信?br />
                      以上19条是我在开发中常用快捷键,Ҏ高开发速度应该有 ?br />


                    天空苍茫 2006-08-07 17:22 发表评论
                    ]]>
                    如何使用log4j常见日志http://www.tkk7.com/guming123416/archive/2006/07/04/log4j.html天空苍茫天空苍茫Tue, 04 Jul 2006 06:04:00 GMThttp://www.tkk7.com/guming123416/archive/2006/07/04/log4j.htmlhttp://www.tkk7.com/guming123416/comments/56531.htmlhttp://www.tkk7.com/guming123416/archive/2006/07/04/log4j.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/56531.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/56531.htmllog4j.properties  配置文g代码Q?br /># Attach appender A1 to root. Set root level to Level.DEBUG.

                    log4j.rootLogger=INFO, A1,A4

                    log4j.appender.A1=org.apache.log4j.ConsoleAppender
                    log4j.appender.A1.Threshold=ERROR

                    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
                    log4j.appender.A1.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) - %m%n


                    log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
                    log4j.appender.A4.file=D:\\Java\\logs\\yeming.log
                    log4j.appender.A4.Encoding=GBK
                    log4j.appender.A4.DatePattern='.'yyyy-MM-dd
                    log4j.appender.A4.layout=org.apache.log4j.PatternLayout
                    log4j.appender.A4.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

                    使用代码Q?br />package com.javawoker.yeming.jiemie.database;
                    import java.sql.Connection;
                    import java.sql.SQLException;
                    import javax.naming.Context;
                    import javax.naming.InitialContext;
                    import javax.sql.DataSource;
                    import org.apache.log4j.Logger;
                    /**
                     *@author 叶明 ---guming123416@gmail.com
                     *@version $Id: v 1.01 2006/06/38 16:09:14 teodord Exp $
                     */
                    public class Pubconn {
                     
                     /*
                      * 创徏U有变量conn为数据库q接对象中Connection
                      * 创徏U有变量dsye为数据库q接池的DataSource
                      */
                     
                     private Connection conn;
                     private DataSource dsye;
                     private static Logger log=Logger.getLogger(Pubconn.class);
                     /*
                      * 创徏构造函数PubconnQ在建立class中加载数据源的InitialContext
                      */
                     public Pubconn()
                     {
                      try{
                       Context initCtx=new InitialContext();
                       if(initCtx==null)
                       {
                        throw new Exception("不能加蝲文gContext");
                       }
                       dsye=(javax.sql.DataSource)initCtx.lookup("jdbc/yeming");
                      }catch(Exception ex)
                      {
                       ex.printStackTrace();
                       log.error("在加栽数据库q接池时间发生错?+ex.getMessage());
                      }
                     }
                     /*
                      * 从连接池中取Z条连接变?br />  *
                      */
                     public Connection getConn()
                     {
                      try{
                       conn=dsye.getConnection();
                      }catch(SQLException ex)
                      {
                       ex.printStackTrace();
                       log.error("获得q接对象CONN旉发生错误"+ex.getMessage());
                      }
                      return conn;
                     }
                     /*
                      * 关闭数据库连接,释放资源
                      */
                     public void closeConn(Connection conn)
                     {
                      try{
                       if(conn!=null)
                       {
                        conn.close();
                        conn=null;
                       }
                      }catch(SQLException ex)
                      {
                       ex.printStackTrace();
                       log.error("关闭CONN旉发生错误"+ex.getMessage());
                      }
                     }

                    }



                    天空苍茫 2006-07-04 14:04 发表评论
                    ]]>
                    使用weblogic数据源大?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2006/07/04/weblogic.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/56518.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2006/07/04/weblogic.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/56518.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/56518.html</trackback:ping><description><![CDATA[ <p>首先创徏weblogic数据源?br />创徏一个javabean取得数据源中的连接CONN<br />代码Q?br />/**<br /> * E序开发日期:2006-6-28-16:09:14 <br /> * javaworker.cn中程序员Q叶明开?br /> * E序作用Q从q接池中取出一条记录,使用创徏数据库连接,以及释放该连?br /> * E序开发:<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 />  * 创徏U有变量conn为数据库q接对象中Connection<br />  * 创徏U有变量dsye为数据库q接池的DataSource<br />  */<br /> <br /> private Connection conn;<br /> private DataSource dsye;<br /> private static Logger log=Logger.getLogger(Pubconn.class);<br /> /*<br />  * 创徏构造函数PubconnQ在建立class中加载数据源的InitialContext<br />  */<br /> public Pubconn()<br /> {<br />  try{<br />   Context initCtx=new InitialContext();<br />   if(initCtx==null)<br />   {<br />    throw new Exception("不能加蝲文gContext");<br />   }<br />   dsye=(javax.sql.DataSource)initCtx.lookup("jdbc/yeming");<br />  }catch(Exception ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("在加栽数据库q接池时间发生错?+ex.getMessage());<br />  }<br /> }<br /> /*<br />  * 从连接池中取Z条连接变?br />  * <br />  */<br /> public Connection getConn()<br /> {<br />  try{<br />   conn=dsye.getConnection();<br />  }catch(SQLException ex)<br />  {<br />   ex.printStackTrace();<br />   log.error("获得q接对象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 />代码如下Q?br /><br /><%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GBK" contentType="text/html charset=gbk"%><br /><jsp:useBean id="yeconn" scope="page" class="com.javawoker.yeming.jiemie.database.Pubconn"></jsp:useBean><br /><%<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 />%><br /></p> <img src ="http://www.tkk7.com/guming123416/aggbug/56518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2006-07-04 13:28 <a href="http://www.tkk7.com/guming123416/archive/2006/07/04/weblogic.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求救http://www.tkk7.com/guming123416/archive/2006/06/27/55324.html天空苍茫天空苍茫Tue, 27 Jun 2006 06:13:00 GMThttp://www.tkk7.com/guming123416/archive/2006/06/27/55324.htmlhttp://www.tkk7.com/guming123416/comments/55324.htmlhttp://www.tkk7.com/guming123416/archive/2006/06/27/55324.html#Feedback3http://www.tkk7.com/guming123416/comments/commentRss/55324.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/55324.html

                    天空苍茫 2006-06-27 14:13 发表评论
                    ]]>
                    今天又遇C个问?/title><link>http://www.tkk7.com/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.tkk7.com/guming123416/archive/2006/06/24/54837.html</guid><wfw:comment>http://www.tkk7.com/guming123416/comments/54837.html</wfw:comment><comments>http://www.tkk7.com/guming123416/archive/2006/06/24/54837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/guming123416/comments/commentRss/54837.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/guming123416/services/trackbacks/54837.html</trackback:ping><description><![CDATA[我将服务器配|了集群服务后,发现遇见一个问题,两个服务器,两个web应用Q这样就造成了用户上传图片的旉只有一个服务处理了Q上传的囄只能到一个web应用中,q样另一个在处理的时间就找不到图片, Z解决q个问题Q我想用两个服务器同是公用一个web应用Q但是这样又造成了sessionL出现问题Q不知道大家有没有比较好的解x?img src ="http://www.tkk7.com/guming123416/aggbug/54837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/guming123416/" target="_blank">天空苍茫</a> 2006-06-24 10:29 <a href="http://www.tkk7.com/guming123416/archive/2006/06/24/54837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置tomcat集群http://www.tkk7.com/guming123416/archive/2006/06/05/50436.html天空苍茫天空苍茫Mon, 05 Jun 2006 02:40:00 GMThttp://www.tkk7.com/guming123416/archive/2006/06/05/50436.htmlhttp://www.tkk7.com/guming123416/comments/50436.htmlhttp://www.tkk7.com/guming123416/archive/2006/06/05/50436.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/50436.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/50436.html

                    天空苍茫 2006-06-05 10:40 发表评论
                    ]]>
                    关于tomcat集群配置问题http://www.tkk7.com/guming123416/archive/2006/06/02/49921.html天空苍茫天空苍茫Fri, 02 Jun 2006 05:23:00 GMThttp://www.tkk7.com/guming123416/archive/2006/06/02/49921.htmlhttp://www.tkk7.com/guming123416/comments/49921.htmlhttp://www.tkk7.com/guming123416/archive/2006/06/02/49921.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/49921.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/49921.html

                    天空苍茫 2006-06-02 13:23 发表评论
                    ]]>
                    关于报表pȝhttp://www.tkk7.com/guming123416/archive/2006/05/30/48932.html天空苍茫天空苍茫Tue, 30 May 2006 04:36:00 GMThttp://www.tkk7.com/guming123416/archive/2006/05/30/48932.htmlhttp://www.tkk7.com/guming123416/comments/48932.htmlhttp://www.tkk7.com/guming123416/archive/2006/05/30/48932.html#Feedback0http://www.tkk7.com/guming123416/comments/commentRss/48932.htmlhttp://www.tkk7.com/guming123416/services/trackbacks/48932.html

                    天空苍茫 2006-05-30 12:36 发表评论
                    ]]>
                    վ֩ģ壺 ҹƵ| ޳aƬ߹ۿ| һƬѿ| ޹Ʒѹۿ| ޹Ʒ۲ӰԺ߹ۿ| ѹۿŮվ| ĻƵ| þþWWW˳ɾƷ| ŷպɫ| ޸Ƶһ| Ļߵ| avƬѿ | պƷר| aëƬȫ| Ƶվѹۿ| ޾Ʒ߹ۿ| պĻ| ޴ɫƵ| ߲޵һĻ| С˵ۺͼ| ½һëƬƵۿi| ߹ۿƵվ| ĻƷַ| ɫҹƵ| vAѾƷ߹ۿ | ߹ۿƵ| þþƷѹƬС| һþƵ| Ůվ| ߹ۿƵ| С˵ɫͼ| ۺƵ| ɫƵۿһ| AVɫ߹ۿ| պAVһ| ۺһƷ| ͵͵߳վý | һƵ| ͵Ƶ߹ۿ99| þþþþ޾Ʒ| WWW޾Ʒþ鶹|