ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久免费精品,欧美性三三影院,爱看av在线入口http://www.aygfsteel.com/guming123416/java学习天堂,个äh关于其他blogåQšblog.javaworker.cn,‹Æ¢è¿Žå¤§å®¶è®‰K—®zh-cnWed, 11 Jun 2025 22:27:58 GMTWed, 11 Jun 2025 22:27:58 GMT60centos5.4下安装apache+svnhttp://www.aygfsteel.com/guming123416/archive/2010/09/28/333104.html天空苍茫天空苍茫Tue, 28 Sep 2010 00:24:00 GMThttp://www.aygfsteel.com/guming123416/archive/2010/09/28/333104.htmlhttp://www.aygfsteel.com/guming123416/comments/333104.htmlhttp://www.aygfsteel.com/guming123416/archive/2010/09/28/333104.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/333104.htmlhttp://www.aygfsteel.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>然后解析Apache2åQŒå®‰è£?/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>安装命ä×oåQ?/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



]]>
™å¹ç›®å¼€å‘中的进度以及äh员的控制˜q›åº¦æƒ…况http://www.aygfsteel.com/guming123416/archive/2009/10/04/297174.html天空苍茫天空苍茫Sun, 04 Oct 2009 02:37:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/10/04/297174.htmlhttp://www.aygfsteel.com/guming123416/comments/297174.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/10/04/297174.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/297174.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/297174.html阅读全文

]]>
关于™å¹ç›®½Ž¡ç†çš„一些感æƒ?http://www.aygfsteel.com/guming123416/archive/2009/10/03/297127.html天空苍茫天空苍茫Sat, 03 Oct 2009 03:32:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/10/03/297127.htmlhttp://www.aygfsteel.com/guming123416/comments/297127.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/10/03/297127.html#Feedback1http://www.aygfsteel.com/guming123416/comments/commentRss/297127.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/297127.html阅读全文

]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?5)--IndexWrite¾cÀLºä»£ç è§£æžåQˆå››åQ‰RAMDirectory介绍 http://www.aygfsteel.com/guming123416/archive/2009/05/08/269601.html天空苍茫天空苍茫Fri, 08 May 2009 05:56:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/05/08/269601.htmlhttp://www.aygfsteel.com/guming123416/comments/269601.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/05/08/269601.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/269601.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/269601.html阅读全文

]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?5)--IndexWrite¾cÀLºä»£ç è§£æžåQˆä¸‰åQ‰FSDirectory介绍http://www.aygfsteel.com/guming123416/archive/2009/05/05/269036.html天空苍茫天空苍茫Tue, 05 May 2009 10:02:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/05/05/269036.htmlhttp://www.aygfsteel.com/guming123416/comments/269036.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/05/05/269036.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/269036.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/269036.html阅读全文

]]>
windows下设¾|®Resin˜q›å…¥¾pȝ»ŸæœåŠ¡ http://www.aygfsteel.com/guming123416/archive/2009/04/30/268338.html天空苍茫天空苍茫Thu, 30 Apr 2009 05:14:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/04/30/268338.htmlhttp://www.aygfsteel.com/guming123416/comments/268338.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/04/30/268338.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/268338.htmlhttp://www.aygfsteel.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>


]]>
Linux下安装Oracle11G http://www.aygfsteel.com/guming123416/archive/2009/04/17/266195.html天空苍茫天空苍茫Fri, 17 Apr 2009 09:27:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/04/17/266195.htmlhttp://www.aygfsteel.com/guming123416/comments/266195.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/04/17/266195.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/266195.htmlhttp://www.aygfsteel.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.confåQŒåœ¨æ–‡äš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 OracleåQˆä¿®æ”¹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
执行命ä×oåQŒè§£åŽ‹å®‰è£…æ–‡ä»?åQšunzip linux_11gR1_database.zip
然后˜q›å…¥è§£åŽ‹åŽçš„ç›®å½•åQŒæ‰§è¡?br /> $ ./runInstaller



]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?5)--IndexWrite¾cÀLºä»£ç è§£æžåQˆäºŒåQ?-Directory 解析 http://www.aygfsteel.com/guming123416/archive/2009/04/16/266008.html天空苍茫天空苍茫Thu, 16 Apr 2009 09:32:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/04/16/266008.htmlhttp://www.aygfsteel.com/guming123416/comments/266008.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/04/16/266008.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/266008.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/266008.html首先我们看构造函æ•îC¸­çš„第一个类Directory ¾c…R€‚æ ¹æ®è¿™ä¸ªç±»çš„è‹±æ–‡ï¼Œæˆ‘ä»¬èƒ½å¾—å‡ø™¿™ä¸ªç±»ž®±æ˜¯å…³äºŽç›®å½•操作的。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”å›žå·²ç»å­˜åœ¨çš„ä¸€ä¸ªæ–‡ä»¶ã€åÆˆä¸”ä‹É用指定大ž®çš„¾~“冲的IndexInputåQŒä½†æ˜¯å½“前目录也可能忽略该缓冲池的大ž®ï¼Œ
* 当前主要是考虑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;

/**讄¡½®LockFactoryåQŒæ­¤ç›®å½•实例应ä‹Éå…‰™”å®šæ‰§è¡Œã€‚每个LockFactory实例只用于一个目录(卻I¼Œä¸è¦å…Þq”¨ä¸€ä¸ªå®žä¾‹åœ¨å¤šä¸ªç›®å½•åQ?*/
public void setLockFactory(LockFactory lockFactory) {
this.lockFactory = lockFactory;
lockFactory.setLockPrefix(this.getLockID());
}

/** 获得LockFactoryåQŒæ­¤ç›®å½•例实例ä‹É用其锁定执行。请注意åQŒè¿™å¯èƒ½æ˜¯æ— æ•ˆçš„目录执行åQŒæä¾›è‡ªå·±é”æ‰§è¡Œ*/
public LockFactory getLockFactory() {
return this.lockFactory;
}
/**˜q‡åŽ»é”å®žä¾‹çš„å”¯ä¸€è¡¨ç¤ºID的字½W¦ä¸²æè¿°*/
public String getLockID() {
return this.toString();
}
/**// 拯‚´æºç›®å½•src下的文äšgåQŒå¤åˆ¶åˆ°ç›®çš„目录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 />



]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?5)--IndexWrite¾cÀLºä»£ç è§£æžåQˆä¸€åQ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2009/04/07/264298.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/264298.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2009/04/07/264298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/264298.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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="宋体">¾cÖM¸»è¦åŠŸèƒ½æ˜¯å¯¹çƒ¦å¼•çš„åˆ›å¾åQŒåŠ å…¥DocumentåŽï¼ŒåˆåÆˆå„ç§ç´¢å¼•ŒDµï¼Œä»¥åŠæŽ§åˆ¶ä¸Žçƒ¦å¼•相关的其他斚w¢åQŒå®ƒæ˜¯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="宋体">åQšAnalyzer  åˆ†è¯åˆ†æžå™?/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šæ˜¯å¦è¦é‡æ–°å†™å…¥ç´¢å¼•æ–‡äšgåQŒå¦‚æžœäØ“trueåQŒåˆ™é‡å†™ç´¢å¼•æ–‡äšgåQ›å¦‚æžœäØ“falseåQŒåˆ™˜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 dåQŒä¸Ž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™é‡Œä¸»è¦æ˜¯æŒ‡å®šinfoStreamåQŒæ˜¯ä¸€ä¸ª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为trueåQŒè¡¨½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="宋体">è¯Õd–segment信息</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">        // 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="宋体">默认的删除策略实现类为KeepOnlyLastCommitDeletionPolicyåQŒå®ƒåªæ˜¯ä¿è¯ž®†æœ€˜q‘提交删除的索引文äšgåQŒæäº¤åˆ é™¤åЍä½?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="宋体">是IndexWriter¾cȝš„一个私有的成员变量å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="宋体">åˆäh–°DocsBufferã€?/font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">      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.aygfsteel.com/guming123416/aggbug/264298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2009-04-07 17:39 <a href="http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2009/04/01/263282.html天空苍茫天空苍茫Wed, 01 Apr 2009 01:43:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/04/01/263282.htmlhttp://www.aygfsteel.com/guming123416/comments/263282.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/04/01/263282.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/263282.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/263282.htmlä¸çŸ¥é“äØ“ä»€ä¹ˆã€‚ä¸èƒ½åœ¨blogjava上上传,所以将该资源放在自å·Þqš„另一个blog上,如果有需要的用户åQŒå¯ä»¥åº¦ä¸‹è²åœ°å€åQ?a >http://blog.javaworker.cn/read.php/23.htm



]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?4)--Field源代ç ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2009/03/31/263059.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/263059.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2009/03/31/263059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/263059.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/263059.html</trackback:ping><description><![CDATA[<p>Field¾c»ï¼ˆ¾cÖM¼¼æ•°æ®åº“中的字ŒDµä¸Žå±žæ€§ï¼‰<br />     è¯¥ç±»å®žçŽ°æŽ¥å£åQšFieldable    ¾l§æ‰¿é™æ€ç±»: AbstractField<br />     Fieldable接口。主要是描述一些基¼‹€ä¿¡æ¯çš„内å®?br />         è®„¡½®æƒé‡ä»¥åŠèŽ·å–æƒé‡ [void setBoost(float boost), float getBoost();]<br />         èŽ·å–åç§°String name();<br />         èŽ·å–String¾cÕdž‹çš„值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抽象¾cÕd®šä¹‰çš„一些常量:<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;      //是否是åšg˜q?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>Filed¾cÀLºä»£ç è§£æž<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 />  //不对Field˜q›è¡Œç´¢å¼•åQŒæ‰€ä»¥è¿™ä¸ªFieldž®×ƒ¸èƒ½è¢«‹‚€ç´¢åˆ°(一般来è¯ß_¼Œå»ºç«‹ç´¢å¼•而ä‹É它不被检索,˜q™æ˜¯æ²¡æœ‰æ„ä¹‰çš?<br />  //如果对该Field˜q˜è®¾¾|®äº†Field.Store为Field.Store.YES或Field.Store.COMPRESSåQŒåˆ™å¯ä»¥‹‚€ç´?br />     public static final Index NO = new Index("NO");</p> <p>    //对Field˜q›è¡Œç´¢å¼•åQŒåŒæ—¶è¿˜è¦å¯¹å…¶è¿›è¡Œåˆ†è¯?ç”±Analyzer来管理如何分è¯?<br />     public static final Index ANALYZED = new Index("ANALYZED");<br /> //废弃的属性,使用ANALYZED 来替ä»?br />      public static final Index TOKENIZED = ANALYZED;<br /> //对Field˜q›è¡Œç´¢å¼•å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¸€ä¸ªFieldæ·ÕdŠ ä¸€ä¸ªTermVectoråQŒå°±å¯ä»¥åœ¨æ£€ç´¢ä¸­æŠŠè¯¥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 /> 然后‹‚€æŸ¥æ˜¯å¦æ˜¯å­˜å‚¨ä»¥åŠæ˜¯å¦åˆ†è¯å¦‚果两者都是NoåQŒåˆ™æŠ›å‡ºå¼‚常ã€?br /> 然后‹‚€æŸ¥æ˜¯å¦å­˜å‚¨ä»¥åŠæ˜¯å¦å‘量分词,如果两者都是No'åQŒåˆ™æŠ›å‡ºå¼‚常ã€?br /> 然后ž®†è¯¥Filed的名¿U°å‘½ä»¤ä¼ é€’过来的名称源代码(this.name = name.internåQ?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.aygfsteel.com/guming123416/aggbug/263059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-31 10:48 <a href="http://www.aygfsteel.com/guming123416/archive/2009/03/31/263059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?3)--Document源代ç ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2009/03/30/262909.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/262909.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2009/03/30/262909.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/262909.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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。只要用户将不同的文件创建成Document¾cÕdž‹çš„æ–‡ä»Óž¼ŒLucenež®Þpƒ½å¿«é€Ÿæ‰¾åˆ°æŸ¥æ‰‘ÖÆˆä¸”ä‹É用他们ã€?/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æ–‡äšgåQŒå¯ä»¥åŒæ—¶å¢žåŠ å¤šä¸ªField。Lucene中对于每个数据源是ä‹É用Field¾cÀL¥è¡¨ç¤ºçš„。多个Field¾l„成一个DocumentåQŒå¤šä¸ªDocument¾l„成一个烦引文件。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.aygfsteel.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Œæˆ‘们去看看Document˜q™ä¸ª¾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,其主要是保存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'">Boost<font face="宋体">主要是设¾|®è¯¥doc的优先çñ”</font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 21pt; text-align: justify"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">其方法:addåQˆFieldable fieldåQ‰å¢žåŠ ä¸€ä¸ª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="宋体">æ ÒŽ®name¿U»é™¤ä¸€ä¸ª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="宋体">æ ÒŽ®name¿U»é™¤æ‰€æœ‰çš„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子类åQˆFieldableæ˜?/font></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">接口å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”回nullåQ?/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.aygfsteel.com/guming123416/aggbug/262909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-30 16:17 <a href="http://www.aygfsteel.com/guming123416/archive/2009/03/30/262909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?2)--分析事例 http://www.aygfsteel.com/guming123416/archive/2009/03/27/262483.html天空苍茫天空苍茫Fri, 27 Mar 2009 09:54:00 GMThttp://www.aygfsteel.com/guming123416/archive/2009/03/27/262483.htmlhttp://www.aygfsteel.com/guming123416/comments/262483.htmlhttp://www.aygfsteel.com/guming123416/archive/2009/03/27/262483.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/262483.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/262483.html1ã€?/span>我们åŽÕdˆ†æžä¸€ä¸‹è¯¥ŒD늨‹åºã€?br />
a) 首先我们创徏一个类IndexWriter,该类是lucene创徏索引的核心,其主要功能是ž®†æ‰€æœ‰çš„æ•°æ®æºæ‰€æœ‰å†…容,¾lè¿‡åˆ†è¯å¤„理åQŒåˆ›å»ºæˆç´¢å¼•格式的文ä»Óž¼ˆåŒæ•°æ®åº“惛_¯¹æ¯”,一个烦引文件就相当一张表åQ?br />
b) 然后åQŒæˆ‘们定义了document¾c…R€‚Lucene是将所有的数据源都转换成Document¾cÕdž‹çš„æ–‡ä»Óž¼Œlucene内部只能识别出Document¾cÕdž‹çš„æ–‡ä»¶ã€‚(同数据库相比的话åQŒDocumentž®±åƒä¸€ä¸ªè¡¨çš„æ¯ä¸€æ¡è®°å½•。)

c) 然后我们定义了一些File¾c»ï¼Œå…¶ä¸­File是作为真实的数据存储使用åQŒæ¯ä¸€ä¸ªéœ€è¦çƒ¦å¼•的内容都对应一个FiledåQŒï¼ˆå’Œæ•°æ®åº“相比åQŒFieldž®Þq›¸å½“一一条记录的一个属性与其å€û|¼‰ã€?br />
d) 然后ž®†Field增加到Document中,其中每个Document可以增加到多个Field对象。然后将所有的Doc交给IndexWriteråŽÕdˆ›å»ºçƒ¦å¼•,创徏完成后,如图一


图一 lucene索引后的文äšg

E)
然后开始查询,首先使用IndexReader来读取所创徏目录下的索引文äšgåQŒç„¶åŽåˆ›å»ÞZ¸€ä¸ªIndexSearch对象åQŒè¯¥å¯¹è±¡ä¸»è¦åŠŸèƒ½ž®±æ˜¯ä»Žçƒ¦å¼•中查询ã€?br />
F)
然后定义查询½{–ç•¥åQŒæœ¬ä¾‹ä¸­é‡‡ç”¨queryParse来查询,然后循环åQŒå°†æ‰€æœ‰æŸ¥è¯¢çš„¾l“果打印出来ã€?br />


]]>
LuceneåQ?.4.1åQ‰æŠ€æœ¯ç ”½I?1)--lucene技æœ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2009/03/27/262332.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/262332.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2009/03/27/262332.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/262332.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/262332.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.aygfsteel.com/guming123416/archive/2009/03/27/262332.html'>阅读全文</a><img src ="http://www.aygfsteel.com/guming123416/aggbug/262332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2009-03-27 13:18 <a href="http://www.aygfsteel.com/guming123416/archive/2009/03/27/262332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 下的命ä×ohttp://www.aygfsteel.com/guming123416/archive/2008/09/12/228649.html天空苍茫天空苍茫Fri, 12 Sep 2008 12:25:00 GMThttp://www.aygfsteel.com/guming123416/archive/2008/09/12/228649.htmlhttp://www.aygfsteel.com/guming123416/comments/228649.htmlhttp://www.aygfsteel.com/guming123416/archive/2008/09/12/228649.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/228649.htmlhttp://www.aygfsteel.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> 查询命ä×o¿Uç±»
<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> 修改用户¿Uäh信息
<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> 昄¡¤ºæœºå™¨çš„æ ¸å¿ƒæž„æžÓž¼ˆå¦‚i386åQ?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> ¿UÕdŠ¨æ–‡äšg/目录åQŒä¿®æ”ÒŽ–‡ä»¶å
<chown> 更改文äšg/目录的所有è€?br /> <chgrp> 修改文äšg/目录的所有组
<chmod> 修改文äšg/目录的权é™?br /> <touch> 更改文äšgæ—‰™—´
<ln> 建立文äšg/目录链接
<find> 查找文äšg
<whereis> 昄¡¤ºæ–‡äšg存在的èµ\径名
<file> 查询文äšg¿Uç±»
<size> 查询文äšg大小


å…? æ–‡äšg¾~–辑相关命ä×o
<cat> 昄¡¤ºæ–‡äšg内容
<tee> 输出到文件和屏幕
<more> 分屏昄¡¤ºæ–‡äšg内容
<less> 分屏昄¡¤ºæ–‡äšg内容
<head> 昄¡¤ºæ–‡äšg头部内容
<tail> 昄¡¤ºæ–‡äšgž®ùNƒ¨å†…容
<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> ˜q‡æ×o重复部分昄¡¤ºæ–‡äš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‡ç¼–码的文本文äšg˜q˜åŽŸä¸ÞZºŒ˜q›åˆ¶æ–‡äšg


å…? MS-DOS工具集[mtools]命ä×o
<mdir> 昄¡¤ºæ–‡äšg列表
<mcd> 改变当前目录
<mmd> 新徏目录
<mrd> 删除目录
<mdeltree> 删除目录æ ?br /> <mcopy> 复制文äšg
<mdel> 删除文äšg
<mmove> ¿UÕdŠ¨æ–‡äšg
<mren> 更改文äšg或目录名
<mattrib> 修改文äšg属æ€?br /> <mtype> 昄¡¤ºæ–‡äšg内容
<mdu> 查询文äšg或目录大ž®?br /> <minfo> 昄¡¤º¼‚ç›˜ä¿¡æ¯
<mformat> 以MS-DOS方式格式化磁ç›?br /> <mlabel> 讄¡½®¼‚ç›˜æ ‡ç­¾


ä¹? 控制外部讑֤‡ç›¸å…³å‘½ä×o
<mount> mount上设å¤?br /> <umount> 解除已经mount上的讑֤‡
<eject> 弹出åQˆCD/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ˆåˆ é™¤å‘½ä»¤åˆ™æ˜¯removepkgåQ?br /> <XF86Setup,turboxfg,Xconfigurator> 配置 X 服务å™?br /> <startx> 启动 X-Window ¾pȝ»Ÿ

附:¾l„合命ä×o
重定向,�br /> $ ls -l /bin > ls-output
$ more ls-output

½Ž¡é“命ä×oåQŒå¦‚
$ cat file1 file2 | sort | uniq

¾lå¸¸è¢«ç”¨äºŽç®¡é“的命ä×o
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc


]]>
spring源代码学习(2.0.5åQ‰ä¸€åQˆBeanFactoryåQ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2008/07/06/212916.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/212916.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2008/07/06/212916.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/212916.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/212916.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.aygfsteel.com/guming123416/archive/2008/07/06/212916.html'>阅读全文</a><img src ="http://www.aygfsteel.com/guming123416/aggbug/212916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2008-07-06 22:04 <a href="http://www.aygfsteel.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.aygfsteel.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.aygfsteel.com/guming123416/archive/2008/04/11/192149.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/192149.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2008/04/11/192149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/192149.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/192149.html</trackback:ping><description><![CDATA[        åœ¨åš™å¹ç›®ä¸­ä‹É用struts2åQŒæœ¬æ¥ä»¥ä¸ºåœ¨.action中包含的另外的JSP™åµé¢ä¸­ä¸èƒ½é€šè¿‡session.getAttribute()获得相应的属性å€û|¼Œä½†æ˜¯™å¹ç›®çš„小¾l„成员没有考虑到哪么详¾l†ï¼Œž®Þq›´æŽ¥åœ¨è¢«åŒ…含页面中使用session.getAttribute()获得该属性å€û|¼Œç«Ÿç„¶æ­£å¸¸èŽ·å¾—è¯¥å±žæ€§å€¹{€?br />         ä»”细æƒÏxƒ³åQŒæ˜¯å¯ä»¥çš„,在这个页面中是直接调用jspåQŒæœåŠ¡å™¨é¦–å…ˆž®†è¯¥jsp¾~–译åQŒè€Œæœ¬™åµåªæ˜¯ä¸€ä¸ªè¿žæŽ¥åœ°å€ã€‚而页面加载就是直接加载编译时é—ß_¼Œè¢«åŒ…含的jsp™åµé¢ä¸Šçš„信息ž®Þq›´æŽ¥ä»ŽservletåQŒè€Œä¸æ˜¯åœ¨action中,<br /> <br /> <br />                              <span style="color: red">   <strong>看来以后做ä“Q何事情都要好好的‹¹‹è¯•后才能得出结è®?/strong></span><br /> <img src ="http://www.aygfsteel.com/guming123416/aggbug/192149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2008-04-11 12:42 <a href="http://www.aygfsteel.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.aygfsteel.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.aygfsteel.com/guming123416/archive/2007/12/05/struts2.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/165375.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2007/12/05/struts2.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/165375.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/165375.html</trackback:ping><description><![CDATA[最˜q‘学习struts2åQŒä»¥å‰æ›¾¾lå­¦ä¹ è¿‡webwork2.2åQŒå› æ­¤å­¦ä¹ è“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™æ ·çš„一个bugåQ? <br /> <img src ="http://www.aygfsteel.com/guming123416/aggbug/165375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2007-12-05 09:35 <a href="http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2007/09/15/145289.html天空苍茫天空苍茫Sat, 15 Sep 2007 01:07:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/09/15/145289.htmlhttp://www.aygfsteel.com/guming123416/comments/145289.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/09/15/145289.html#Feedback6http://www.aygfsteel.com/guming123416/comments/commentRss/145289.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/145289.html今天在解析htmlæ—‰™—´åQŒåœ¨è°ƒç”¨™åµé¢™åµé¢ä¸­æ›¿æ¢é“¾æŽ¥æ—¶é—´å‘生没有错误,½E‹åºæ‰§è¡Œçš„该步骤åQŒä½†æ˜¯å°±æ˜¯æ²¡æœ‰å°†æˆ‘要求替换的内容¾l™æ›¿æ¢æŽ‰ã€?

˜q™ä¸ªæ˜¯éœ€è¦æ›¿æ¢çš„内容<a href=../../08/19/10483.html>下一½‹‡ï¼š PHP+MySQL应用中ä‹É用XOR˜qç®—加密½Ž—法</a>

不知道是什么原因,replassall竟然不能替换åQŒæ˜¯æ‰¾ä¸åˆ°æºé‡Œçš„æ•°æ®åQŒè¿˜æ˜¯å…¶ä»–有问题呢?其他™åµé¢éƒ½èƒ½æ›¿æ¢æŽ‰ï¼Œž®±æ˜¯æœ?-2个页面不能替换,郁闷。是不是字符¾~–码的问题?有谁知道吗?误‚µæ•?br />


我ä‹É用indexof("")æ—‰™—´å‘现里边¼‹®å®žå­˜åœ¨ã€‚该内容åQŒï¼Œæˆ‘需要替换的字符ž®±æ˜¯‘<a href=../../08/19/10483.html>下一½‹‡ï¼š PHP+MySQL应用中ä‹É用XOR˜qç®—加密½Ž—法</a>’åQŒéš¾é“是‘../’的问é¢?br />
以前使用split拆分的时间发çŽ?#8216;.’有时间是å¤Þqµçš„,˜q™ä¸ªåº”该是关键标½Cºçš„原因åQŒä½†æ˜¯è¿™ä¸ªreplaceall竟然也不能,其他链接和该链接是一致的åQŒæ›¿æ¢çš„只是名称和地址åQŒå…¶ä»–都是一æ ïLš„


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

î‚‘Ö®žçŽ°é™åˆ¶è¾“å…¥å¤§ã€å°å†™è‹±æ–‡ï¼Œæ•°å­—åQŒæÕQ点小敎ͼŒæ—¥æœŸåQŒä¸­æ–‡ï¼Œéƒ¨åˆ†è‹±æ–‡åQŒéƒ¨åˆ†ä¸­æ–‡ç­‰ä¼—多功能。直接加入到html代码中即可ä‹É用ã€?/p>

<script>
function regInput(obj, reg, inputStr)
{
var docSel = documentåQŽselection.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.documentåQŽselection.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="documentåQŽselection.empty()"
oncopy="documentåQŽselection.empty()" onbeforecopy="return false"onmouseup="documentåQŽselection.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">



]]>
åQˆè{帖)利用xfire开发webservice专题[一]http://www.aygfsteel.com/guming123416/archive/2007/09/07/143322.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:51:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/09/07/143322.htmlhttp://www.aygfsteel.com/guming123416/comments/143322.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/09/07/143322.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/143322.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/143322.html
  使用Web Service技术进行系¾lŸé›†æˆå’Œ˜q‡åŽ»ä½¿ç”¨å…¶å®ƒé¢å‘å‡½æ•°å’Œæ–¹æ³•çš„æŠ€æœ¯è¿›è¡Œé›†æˆç±»ä¼û|¼šåœ¨è¿›è¡Œåˆå§‹è®¾è®¡çš„æ—¶å€™ä¸»è¦è€ƒè™‘不同应用之间åQŒç³»¾lŸä¸åŒæ¨¡å—之间消息及数据传递的需求;æ ÒŽ®å…·ä½“需求设¾|®ç›¸åº”的接口åQŒæ˜q°æŽ¥å£ç‰¹æ€§ï¼›é’ˆå¯¹ä¸åŒåº”用的åã^台选择相应的Web Service¾l„äšgåQŒè¿›è¡Œç›¸åº”设¾|®ï¼›å®žçŽ°ä¸åŒåº”ç”¨çš„æŽ¥å£ï¼Œ˜q›è¡Œç›¸åº”调试åQ›å®žé™…运行,应用½E‹åºé—´è¿›è¡ŒååŒè°ƒè¯•ã€?

        webService主要是可以解决站炚w—´çš„æ•°æ®å…±äº«é—®é¢˜ï¼ŒæŠŠå¤æ‚的业务æ–ÒŽ³•åQŒå°è£…在被调用的站点上面åQŒè¿™æ ·ä¸½Ž¡æ˜¯WEB站点和其他的应用½E‹åºåQˆå½“然要能保证上¾|‘)都可以访问到暴露的方法ã€?/p>

myeclipse5.1支持xfire支持的非常棒。这里讲解一个简单的例子åQ?
æ­¤æ–‡ç« äØ“å¼•ç”¨æ–‡ç« åQŒä»…做保留,供学习参考ä‹Éç”?




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

点击finish之后åQŒmyeclipse自动帮你生成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.接下来,现在¾~–写要导出的pojo¾c»ï¼Œé¦–先是接口:
˜q‡ç¨‹åQšFile>New>Other>MyEclipse>Web Service
选择åQšCreate web service from Java beanåQŒæŠŠCreate new javabean也勾ä¸?br />



]]>
(转帖)利用xfire开发webservice专题[三]http://www.aygfsteel.com/guming123416/archive/2007/09/07/143320.html天空苍茫天空苍茫Fri, 07 Sep 2007 01:50:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/09/07/143320.htmlhttp://www.aygfsteel.com/guming123416/comments/143320.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/09/07/143320.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/143320.htmlhttp://www.aygfsteel.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ŒçŽ°åœ¨å¼€å§‹éƒ¨¾|²åˆ°tomcat˜q™é‡Œçœç•¥ã€?/p>

部çÖv好后可以‹¹‹è¯•下:
http://localhost:8080/HelloWorld/services/HelloWorldTest?WSDL




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

新徏工程useWebServiceåQŒåƈ且徏立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.jspåQŒbody部分
-----------------------

<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);
%>
webService˜qœç¨‹è°ƒç”¨¾l“æžœåQ?<%=result %>
------------------------------------------------------------------------
˜qè¡Œä¸‹æµ‹è¯•!OK



]]>
手把手教你制作Google Sitemap(详细制作教程和协议讲è§?http://www.aygfsteel.com/guming123416/archive/2007/08/28/140579.html天空苍茫天空苍茫Tue, 28 Aug 2007 08:36:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/08/28/140579.htmlhttp://www.aygfsteel.com/guming123416/comments/140579.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/08/28/140579.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/140579.htmlhttp://www.aygfsteel.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´æœˆæ—¥å°æ—¶åˆ†é’Ÿç§’åQšYYYY-MM-DDThh:mmTZD(2005-06-04T10:37:30+08:00)
    ˜q™é‡Œéœ€æ³¨æ„çš„æ˜¯TZDåQŒTZD指定ž®±æ˜¯æœ¬åœ°æ—‰™—´åŒºåŸŸæ ‡è®°å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ã€?


]]>
使用DBCP建立的连接池。(直接使用在应用程序用åQ?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2007/08/28/140313.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/140313.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2007/08/28/140313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/140313.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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("‹zÕdŠ¨çš„è¿žæŽ? " + 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.aygfsteel.com/guming123416/aggbug/140313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2007-08-28 09:47 <a href="http://www.aygfsteel.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.aygfsteel.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.aygfsteel.com/guming123416/archive/2007/08/26/139645.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/139645.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2007/08/26/139645.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/139645.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/139645.html</trackback:ping><description><![CDATA[昨天下蝲了myeclipse6.0.试用èµäh¥åQŒæ„Ÿè§‰å¾ˆä¸é”™å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> 在保存文件的旉™—´åQŒeclipse自动关闭了,我重新测试一下,˜q˜æ˜¯ä¸€æ ïLš„¾l“æžœåQŒä¸çŸ¥é“是我¾pȝ»Ÿçš„问题还是myeclipse的问题。我于是替换成myeclipse5.5çš„ï¼Œä¸€åˆ‡æ­£å¸æ€º†åQŒçœ‹æ¥åº”该是myeclipse6.0的一个小bugå?<br><br>今天早晨myeclipse自动升çñ”了,发现˜q™ä¸ªåŠŸèƒ½å·²ç»ä¿®å¤äº†ï¼Œ 但是再次使用的时é—ß_¼Œ˜q˜æ˜¯è‡ªåŠ¨å…³é—­äº†ï¼Œè‰¾ï¼çœ‹æ¥ç‰ˆæœ¬˜q˜æ˜¯è¦ç¨³å®šåŽæ‰èƒ½ä½¿ç”¨å•Šï¼Œ˜q˜ä¸€ä½æƒŠå¤©åœ¨è‡ªåŠ¨å‡çñ”已经更新了该功能<br>真晕 <img src ="http://www.aygfsteel.com/guming123416/aggbug/139645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2007-08-26 22:29 <a href="http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2007/07/27/132763.html天空苍茫天空苍茫Fri, 27 Jul 2007 05:50:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/07/27/132763.htmlhttp://www.aygfsteel.com/guming123416/comments/132763.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/07/27/132763.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/132763.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/132763.html最˜q‘由于struts2比较‹¹è¡Œèµäh¥åQŒæˆ‘开始想学webwork2ä¹îCº†æœ¬ä¹¦ã€Š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;
 }


}



]]>
˜q™æ®µæ—‰™—´å¼€å§‹ç ”½I¶hibernateåQŒå¼€å§‹äº†è§£æœ€æ–°çš„hibernate技术(问题一åQ‰Hibernateçš„No CurrentSessionContext configured 解决æ–ÒŽ¡ˆhttp://www.aygfsteel.com/guming123416/archive/2007/05/10/116458.html天空苍茫天空苍茫Thu, 10 May 2007 05:19:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/05/10/116458.htmlhttp://www.aygfsteel.com/guming123416/comments/116458.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/05/10/116458.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/116458.htmlhttp://www.aygfsteel.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 .



]]>
eclipse搭配Resin开发Struts应用之环境篇 http://www.aygfsteel.com/guming123416/archive/2007/03/30/107472.html天空苍茫天空苍茫Fri, 30 Mar 2007 06:27:00 GMThttp://www.aygfsteel.com/guming123416/archive/2007/03/30/107472.htmlhttp://www.aygfsteel.com/guming123416/comments/107472.htmlhttp://www.aygfsteel.com/guming123416/archive/2007/03/30/107472.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/107472.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/107472.html
JDK下面有一个非帔R‡è¦çš„目录åQŒå³åQ?$JAVA_HOME/jre/libåQŒå¤§å®¶ç”¨å¾—最普遍的就æ˜?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服务器,你会发现myeclipseòq¶ä¸èƒ½å¯åЍresinåQŒè€Œåœ¨æŽ§åˆ¶åîC¸Šæ‰“印出来的是resin.conf:241: Required file '\conf\app-default.xml' can not be read for resin:import.åQŒå¾ˆæ˜Žæ˜¾åQŒæ˜¯¾pȝ»Ÿæ‰¾ä¸åˆ°app-default.xml'æ–‡äšgåQŒè€Œè¿™ä¸ªæ–‡ä»¶ç¡®å®žåœ¨$RESIN_HOME/conf/目录下,打开resin.confåQŒå®šä½åˆ°133行,发现配置文äšg是这æ ïLš„åQ?lt;resin:import path="${resin.home}/conf/app-default.xml"/>åQŒå› ä¸?{resin.home}/ž®±æ˜¯Resin的当前目录,所以我们可以换æˆ?lt;resin:import path="./conf/app-default.xml"/>åQŒå†å¯åЍåQŒOKã€?br />
resin.conf里面˜q˜æœ‰ä¸€ä¸ªåœ°æ–ÒŽ¯”较有意思,且看211行代码:<web-app-deploy path="webapps"/>åQŒç³»¾lŸé…¾|®çš„Web应用目录ä¸?RESIN_HOME/webappsåQŒè€ŒEclipse工程发布后是åœ?RESIN_HOME/deployåQŒæ‰€ä»¥æˆ‘们干脆就不用myeclipse里的站点发布功能åQŒç›´æŽ¥ä¿®æ”¹resin.confæ–‡äšgåQŒåŠ è½½ä¸€ä¸ªå¤–éƒ¨ç›®å½•ï¼Œž®†å®ƒæ‰‹æŒ‡å‘你的工½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Œç„¶åŽå°†ä½ å·¥½E‹lib目录下的xercesImpl.jar拯‚´åˆ°åˆšå»ºçš„那个目录里面åQŒé—®é¢˜å³å¯è§£å†Ÿë€?br />
不推荐在$JAVA_HOME/jre/lib下面新徏内容为javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImplçš„jaxp.propertiesæ–‡äšgåQŒå½“ç„Óž¼Œå¦‚果你准备强行这么干的话åQŒä½ çš„Tomcatž®±åªèƒ½æš—无天日了ã€?br />

下面是附加内�br />
附一åQšApache与Resin集成
1. 更改Apache的文档目录:在httpd.conf中找到DocumentRootåQŒå°†å…¶åŽåŒå¼•号中的内å®ÒŽ¢æˆ?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Œåœ¨å…¶åŽæ·ÕdŠ index.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_HOMEåQŒç„¶åŽåœ¨å‘½ä×o行窗口中˜q›å…¥Resin目录åQŒè¾“å…¥httpd -installåQˆå®‰è£…Resin为Windows¾pȝ»ŸæœåŠ¡åQ‰ï¼Œhttpd -removeåQˆç§»é™¤â€¦â€¦ï¼‰
¾lè¿‡ä»¥ä¸Šæ­¥éª¤åQŒResinž®±å¯ä»¥ç›‘听处理所有Apache不能处理的文ä»Óž¼ŒåŒ…括.jsp, .do及其它控制器路径åQŒåƈ同时解决了用80端口讉K—®æ—¶å›¾ç‰‡ç›¸å¯¹èµ\径不对的问题

附二åQšApache中加入PHP处理模块åQŒåƈ且屏蔽Resin3.1çš„PHP解释模块
1. 屏蔽resinçš„PHP处理模块åQšresinä»?.0开始支持phpåQŒå…¶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/php5åQ?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 />

]]>
StringTokenizer¾cȝš„使用æ–ÒŽ³• http://www.aygfsteel.com/guming123416/archive/2006/11/29/84316.html天空苍茫天空苍茫Wed, 29 Nov 2006 04:28:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/11/29/84316.htmlhttp://www.aygfsteel.com/guming123416/comments/84316.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/11/29/84316.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/84316.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/84316.html StringTokenizeråQšå­—½W¦ä¸²åˆ†éš”解析¾cÕdž‹
属于åQšjava.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. 所有方法均为publicåQ?br />2. 书写格式åQšïËE修饰½W¦ï¼½ã€€<˜q”回¾cÕdž‹> <æ–ÒŽ³•名(åQÕd‚数列表]åQ?gt;
    如:
    static int parseInt(String s) 表示åQšæ­¤æ–ÒŽ³•åQˆparseIntåQ‰äØ“¾cÀL–¹æ³•(staticåQ‰ï¼Œ˜q”回¾cÕdž‹ä¸ºï¼ˆintåQ‰ï¼Œæ–ÒŽ³•所需参数为String¾cÕdž‹ã€?/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šä¸Ž4¾cÖM¼¼åQŒä»¥æŒ‡å®šçš„分隔符˜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


      ]]>StringBuffer¾cȝš„使用æ–ÒŽ³• http://www.aygfsteel.com/guming123416/archive/2006/11/29/84240.html天空苍茫天空苍茫Wed, 29 Nov 2006 02:15:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/11/29/84240.htmlhttp://www.aygfsteel.com/guming123416/comments/84240.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/11/29/84240.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/84240.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/84240.html StringBufferåQšStringBuffer¾cÕdž‹

      描述åQšåœ¨å®žé™…应用中,¾lå¸¸å›žé‡åˆ°å¯¹å­—符串进行动态修攏V€‚这时候,String¾cȝš„功能受到限制åQŒè€ŒStringBuffer¾cÕd¯ä»¥å®Œæˆå­—½W¦ä¸²çš„动态添加、插入和替换½{‰æ“ä½œã€?/span>

      åQ‘、构造函数ã€?/span>
        StringBuffer() åQšæž„é€ ä¸€ä¸ªæ²¡æœ‰ä“Q何字½W¦çš„StringBuffer¾c…R€?br />StringBuffer(int length) åQ?åQšæž„é€ ä¸€ä¸ªæ²¡æœ‰ä“Q何字½W¦çš„StringBuffer¾c»ï¼Œòq¶ä¸”åQŒå…¶é•¿åº¦ä¸ºlengthã€?br />StringBuffer(String str) åQšä»¥str为初始值构造一个StringBuffer¾c…R€?/ul>

        åQ’、方法ã€?/span>
        说明åQ?br />1. 所有方法均为publicåQ?br />2. 书写格式åQšïËE修饰½W¦ï¼½ã€€<˜q”回¾cÕdž‹> <æ–ÒŽ³•名(åQÕd‚数列表]åQ?gt;
        如:
        static int parseInt(String s) 表示åQšæ­¤æ–ÒŽ³•åQˆparseIntåQ‰äØ“¾cÀL–¹æ³•(staticåQ‰ï¼Œ˜q”回¾cÕdž‹ä¸ºï¼ˆintåQ‰ï¼Œæ–ÒŽ³•所需参数为String¾cÕdž‹ã€?/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¦ä¸²å’ŒStringBuffer¾cȝ­‰ã€‚如果添加的字符­‘…出了字½W¦ä¸²¾~“冲区的长度åQŒJavaž®†è‡ªåŠ¨è¿›è¡Œæ‰©å……ã€?/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开始,到end¾l“束的子丌Ӏ?br />15. StringBuffer deleteCharAt(int index) åQšåˆ é™¤å½“前StringBuffer对象中烦引号为index的字½W¦ã€?br />16. void ensureCapacity(int minimumCapacity) åQšé‡æ–°è®¾¾|®å­—½W¦å·ä¸²ç¼“冲区的æ€È©ºé—´ã€‚如果minimumCapacity大于当前的æ€È©ºé—ß_¼Œåˆ™æ–°çš„空间被讄¡½®åQšä¸€¿Uç»“果是minimumCapacityåQ›å¦ä¸€¿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开始,到srcEnd¾l“束的子ä¸ÔŒ¼Œèµ‹å€¼åˆ°å­—符数组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开始,到end¾l“束的位¾|®æ›¿æ¢æˆ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>

                    ]]>JBuilder开发常用的十九个快捷键http://www.aygfsteel.com/guming123416/archive/2006/08/07/62202.html天空苍茫天空苍茫Mon, 07 Aug 2006 09:22:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/08/07/62202.htmlhttp://www.aygfsteel.com/guming123416/comments/62202.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/08/07/62202.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/62202.htmlhttp://www.aygfsteel.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         ‹È€‹zÖM»£ç æ¨¡å?br />
                      13 Ctrl+Shift+H   ˜q›å…¥æ–ÒŽ³•的括å?),昄¡¤ºå‚数提示½H—口

                      14 Ctrl+F         打开查询、替换窗�br />
                      15 Ctrl+-         打开¾cÀLŸ¥è¯¢çª—å?br />
                      16 F5             ½E‹åºåŠ å…¥æ–­ç‚¹

                      17 F8             逐行˜qè¡Œä»£ç 

                      18 F4             多行˜qè¡Œä»£ç 

                      19 Ctrl+鼠标右键  昄¡¤ºè¯¦ç»†çš„变量信æ?br />
                      以上19条是我在开发中常用快捷键,å¯ÒŽé«˜å¼€å‘速度应该有 Â?br />


                    ]]>
                    如何使用log4j常见日志http://www.aygfsteel.com/guming123416/archive/2006/07/04/log4j.html天空苍茫天空苍茫Tue, 04 Jul 2006 06:04:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/07/04/log4j.htmlhttp://www.aygfsteel.com/guming123416/comments/56531.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/07/04/log4j.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/56531.htmlhttp://www.aygfsteel.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);
                     /*
                      * 创徏构造函数PubconnåQŒåœ¨å»ºç«‹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());
                      }
                     }

                    }



                    ]]>
                    使用weblogic数据源大å…?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2006/07/04/weblogic.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/56518.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2006/07/04/weblogic.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/56518.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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 />  * 创徏构造函数PubconnåQŒåœ¨å»ºç«‹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.aygfsteel.com/guming123416/aggbug/56518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2006-07-04 13:28 <a href="http://www.aygfsteel.com/guming123416/archive/2006/07/04/weblogic.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>求救http://www.aygfsteel.com/guming123416/archive/2006/06/27/55324.html天空苍茫天空苍茫Tue, 27 Jun 2006 06:13:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/06/27/55324.htmlhttp://www.aygfsteel.com/guming123416/comments/55324.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/06/27/55324.html#Feedback3http://www.aygfsteel.com/guming123416/comments/commentRss/55324.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/55324.html

                    ]]>
                    今天又遇åˆîC¸€ä¸ªé—®é¢?/title><link>http://www.aygfsteel.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.aygfsteel.com/guming123416/archive/2006/06/24/54837.html</guid><wfw:comment>http://www.aygfsteel.com/guming123416/comments/54837.html</wfw:comment><comments>http://www.aygfsteel.com/guming123416/archive/2006/06/24/54837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/guming123416/comments/commentRss/54837.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/guming123416/services/trackbacks/54837.html</trackback:ping><description><![CDATA[我将服务器配¾|®äº†é›†ç¾¤æœåŠ¡åŽï¼Œå‘çŽ°é‡è§ä¸€ä¸ªé—®é¢˜ï¼Œä¸¤ä¸ªæœåŠ¡å™¨ï¼Œä¸¤ä¸ªweb应用åQŒè¿™æ ·å°±é€ æˆäº†ç”¨æˆ·ä¸Šä¼ å›¾ç‰‡çš„æ—‰™—´åªæœ‰ä¸€ä¸ªæœåŠ¡å¤„ç†äº†åQŒä¸Šä¼ çš„囄¡‰‡ž®±åªèƒ½åˆ°ä¸€ä¸ªweb应用中,˜q™æ ·å¦ä¸€ä¸ªåœ¨å¤„理的时间就找不到图片, ä¸ÞZº†è§£å†³˜q™ä¸ªé—®é¢˜åQŒæˆ‘想用两个服务器同是公用一个web应用åQŒä½†æ˜¯è¿™æ ·åˆé€ æˆäº†sessionæ€ÀL˜¯å‡ºçŽ°é—®é¢˜åQŒä¸çŸ¥é“大家有没有比较好的解å†Ïx–¹æ³?img src ="http://www.aygfsteel.com/guming123416/aggbug/54837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/guming123416/" target="_blank">天空苍茫</a> 2006-06-24 10:29 <a href="http://www.aygfsteel.com/guming123416/archive/2006/06/24/54837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置tomcat集群http://www.aygfsteel.com/guming123416/archive/2006/06/05/50436.html天空苍茫天空苍茫Mon, 05 Jun 2006 02:40:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/06/05/50436.htmlhttp://www.aygfsteel.com/guming123416/comments/50436.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/06/05/50436.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/50436.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/50436.html

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

                    ]]>
                    关于报表¾pȝ»Ÿhttp://www.aygfsteel.com/guming123416/archive/2006/05/30/48932.html天空苍茫天空苍茫Tue, 30 May 2006 04:36:00 GMThttp://www.aygfsteel.com/guming123416/archive/2006/05/30/48932.htmlhttp://www.aygfsteel.com/guming123416/comments/48932.htmlhttp://www.aygfsteel.com/guming123416/archive/2006/05/30/48932.html#Feedback0http://www.aygfsteel.com/guming123416/comments/commentRss/48932.htmlhttp://www.aygfsteel.com/guming123416/services/trackbacks/48932.html

                    ]]>
                    Ö÷Õ¾Ö©Öë³ØÄ£°å£º ƽÀÖÏØ| ¸£º£ÏØ| °ºÈÊÏØ| ÒËÕÂÏØ| ËÉ×ÌÊÐ| °ÍÌÁÏØ| Ñ·¿ËÏØ| ½¨Ë®ÏØ| ºÚÉ½ÏØ| ÀÖ°²ÏØ| ´ïÖÝÊÐ| Ëç½­ÏØ| ÎäÒØÏØ| ¸§Ë³ÊÐ| ²ýÒØÊÐ| ÉÏÈÄÏØ| ÄÏÆ½ÊÐ| µÂÇåÏØ| ·ÚÎ÷ÏØ| ¹ÌÑôÏØ| ¿üÍÍÊÐ| ¶ýÔ´ÏØ| ÖêÖÞÊÐ| ÒÊË®ÏØ| ³Â°Í¶û»¢Æì| ÄϲýÏØ| Í©ÏçÊÐ| ÇçÂ¡ÏØ| ÕòÆ½ÏØ| »ôÁÖ¹ùÀÕÊÐ| ¶«¹âÏØ| Àײ¨ÏØ| ³ÇÊÐ| ·î½ÚÏØ| ÏÉÌÒÊÐ| ÁùÖ¦ÌØÇø| ãôÑôÏØ| ÓñϪÊÐ| À­ÈøÊÐ| лͨÃÅÏØ| ËçÖÐÏØ|