??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品韩国美女在线,亚洲精品成人片在线播放,亚洲a在线视频视频http://m.tkk7.com/zhugf000/category/3773.html零碎片断Q杂七杂八?/description>zh-cnSun, 10 Feb 2008 10:15:33 GMTSun, 10 Feb 2008 10:15:33 GMT60一个通用的文仉|框?/title><link>http://m.tkk7.com/zhugf000/archive/2008/02/10/179556.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Sun, 10 Feb 2008 07:44:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2008/02/10/179556.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/179556.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2008/02/10/179556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/179556.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/179556.html</trackback:ping><description><![CDATA[<h1>一个通用的文仉|框?/h1> <br /> <h2>配置需求说?/h2> 在工作中,目需要实现多U程序配|方?每种E序配置均有各自的文件复?变量替换(替换文本文g中的变量占位W?,修改脚本文g的需? 为减重复代?化配|实?我们实现了此配置框架.需求片断示?<br /> <ol> <li>复制文g到某? <li>创徏/append 某个 properties/txt 文本文g <li>修改脚本文g,插入一D|本到脚本文g某处 <li>通过JMX/JNDIq接到远E应用服务器, 用Java code修改应用服务器的配置. </li> </ol> <br /> <h2>需求分?/h2> 从上q需求来?W一印象是用ANT或类ANT XML文g可以很好的满上述需? 但是q需要做下面增强才会好用:<br /> <ol> <li>配置q程需要有cM于事务的机制,以保证多处改动的一致? <li>各种配置q程之间有许多相同之?为减重?可以考虑引入公共配置片断文g. <li>׃配置q程相对固定, ANT BUILD XML文g的多个target以及依赖关系查就不需要了,但是需要更加灵zȝ条g判断机制来控制单个配|动作和变量赋? </li> </ol> <h2>实现?/h2> Ҏ上述分析,目最l的XML配置文g格式如下:<br /> <font style="background-color: #d4d0c8"><span style="font-size: 10pt; font-family: Courier"><font style="font-family: ; background-color: #d4d0c8"><root><br style="font-family: " />     <common><br style="font-family: " />         <resource-bundle>ResourceBundle Message Class</resource-bundle><br style="font-family: " />         <variables><br style="font-family: " />             <!-- If contains CONFIG_XINFO ,copy it to PLATCODE --><br style="font-family: " />             <variable name="PLATCODE" value="${CONFIG_XINFO}"><br style="font-family: " />                 <condition><br style="font-family: " />                     <varexists name="CONFIG_XINFO" /><br style="font-family: " />                 </condition><br style="font-family: " />             </variable><br style="font-family: " />             <!-- Give it a default value --><br style="font-family: " />             <variable name="IS_WINDOWS" value="FALSE" /><br style="font-family: " />             <variable name="IS_WINDOWS" value="TRUE"><br style="font-family: " />                 <condition><br style="font-family: " />                     <or><br style="font-family: " />                        <variable name="PLATCODE" value="windows"/><br style="font-family: " />                        <variable name="PLATCODE" value="windows64"/><br style="font-family: " />                     </or><br style="font-family: " />                 </condition><br style="font-family: " />             </variable><br style="font-family: " />         </variables><br style="font-family: " />     </common><br style="font-family: " />     <configure><br style="font-family: " />         <action-invoke<br style="font-family: " />             class="CustomizedActionClass"<br style="font-family: " />             index="1"<br style="font-family: " />         /><br style="font-family: " />         <action-copy <br style="font-family: " />             file="${Source File Variable}"<br style="font-family: " />             dest="${Dest file Variable}"<br style="font-family: " />             index="60"<br style="font-family: " />             reason="Error Reason Key"<br style="font-family: " />             /><br style="font-family: " />         <action-write<br style="font-family: " />             file="${File to Write}"<br style="font-family: " />             index="20" <br style="font-family: " />             reason="Error Reason Key"<br style="font-family: " />         ><![CDATA[QUALDIR=${QUALDIR}<br style="font-family: " /> ]]></action-write><br style="font-family: " />         <action-expand <br style="font-family: " />             file="${File to be expanded}"<br style="font-family: " />             index="30"<br style="font-family: " />         /><br style="font-family: " />     </configure><br style="font-family: " /> </root></font><br style="font-family: " /> </span></font><br /> <form> 与ANT BUILD XML相类似的,分ؓ变量定义区域和配|动作定义区? 为实现方?变量可以被覆?变量赋D句可以带条g.<br /> 具体配置q程由多个action-***规定,配置框架已经预提供标准动? action-copy/action-write/action-expand {等, action-invoke可以插入自定义Java代码.<br /> <br /> <br /> Z解决问题1,配置框架实现了一套类g两阶D|交的机制. 每个Action实现c需要实C个方?<br /> </form> <ol> <li>Action.performAction(): 实现正常配置动作,如果p|则返回错误码. <li>Action.performCompensation(): 实现回滚动作,负责配|对?如文件内?回滚C改前的状? <li>Action.performComplete(): 实现正常配置完成动作, 负责释放配置q程占用的时资?<br /> </li> </ol> 配置框架依次Ҏ个要执行的动作调用performAction动作,如果当前Actionq回p|错误?则对已经成功执行的Action反向依次调用 performCompensation动作,执行回滚操作,从而保证配|过E的一致? 如果全部成功,则依ơ调用performComplete操作,释放占用的时资?如下?<br /> <img alt="" src="http://m.tkk7.com/images/blogjava_net/zhugf000/configure_actions.gif" border="0" /><br /> <br /> <br /> 决问?,我们为每个action指定了一个index,用它规定执行序,配置框架从公共配|文件和U有配置文g中合qƈ排序所有的配置 action, 通过预先分配common action和private action的index范围, 每个单独的配|过E可以完全抽出重复配|动?<br /> <br /> 决问?, 每个action,每个变量定义(property 标记) 都可以有自己的condition 定义. 如此一?配置文g的写法更cM于程序的执行q程,从开发角度也更加自然.<br /> <br /> <br /> <h2>其它Ҏ?脚本文g自动分析和插入配|行</h2> 应用服务器的启动脚本是用户可定制?我们无法预见文g格式. 册个问?我们采用了如下方?<br /> <ol> <li>对脚本进行语法分?扑և脚本的Java启动?或Windows Service讄?,q而找出可用的shell变量和插入位|? 期望q种方式能够解决大多数用戯定义脚本.<br /> <li>对于复杂或分析条件不充分的脚?如变量位于别的文?, 用户需要在合适位|插入一行有指定格式和参数的注释?UC为anchor),配置框架会自动在该行后插入配|代? q种方式的主要的问题是用L解困?目l支持的工作量大;不过q也是没有办法的办法?<br /> </li> </ol> <br /> <h2>ȝ</h2> 本文介绍了一U多文g操作配置框架的思\,q具体解释类事务的配|动作实现过E? 该配|框架在目实践中达C预期目的,收到不错的效?<br /> <br /> <img src ="http://m.tkk7.com/zhugf000/aggbug/179556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2008-02-10 15:44 <a href="http://m.tkk7.com/zhugf000/archive/2008/02/10/179556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中文全文索的实现以及一些经?Java)http://m.tkk7.com/zhugf000/archive/2007/07/30/133397.htmlW笨W笨Mon, 30 Jul 2007 09:55:00 GMThttp://m.tkk7.com/zhugf000/archive/2007/07/30/133397.htmlhttp://m.tkk7.com/zhugf000/comments/133397.htmlhttp://m.tkk7.com/zhugf000/archive/2007/07/30/133397.html#Feedback7http://m.tkk7.com/zhugf000/comments/commentRss/133397.htmlhttp://m.tkk7.com/zhugf000/services/trackbacks/133397.html中文全文索的实现以及一些经?Java)

最q在目中面临中文全文检索的需求,关键需求如下:

1 支持中文、英文字词的全文索,待检索文本是古文a文?br>2 全文索表辑ּ支持Q?AND,OR,NOT,NEAR,BEFORE q算W,支持()?br>3 速度要求Q?00M文本Q要求在2-5U内能够索完毕?br>


试Lucene以及攑ּ原因Q?/h3> 在尝试Lucene和不同的中文Analyzer后,l告攑ּ?br>原因如下Q?br>׃待检索文本是古文Q中文分词技术无法派上用场。在分隔存储每个汉字后Q发CLucene中检索到的文本远q少于关键字实际匚w的文本,q一问题对于较长的检索关键字其明显?br>因ؓ对于索准程度要求很高,故此攑ּQ但是Lucene出的q个问题的原因尚不清楚,希望能够有h提出解答?br>


自行实现中文全文索原理以及方法:

1 构徏q程Q忽略标点符P自行计算每个汉字在每个文本文件中的偏U量Qƈ保存?br>2 索过E,定位每个汉字的偏U量Q如果检索表辑ּ中每个汉字的预期偏移量与实际偏移量吻合,则匹配成功?br>3 采用 MappedByteBuffer 加快索速度Q采用二分查扑֊快偏U量匚w速度Q?个左右的关键字复合检索能够在1U内完成匚wQ要求操作系l有_大的~存Q?br>

目前实现的一些局限和优势Q?/h3> 0 中文索速度_Q准度比Lucene高(如果有高手能够解册个问题,我会很高兴的废弃掉这些类的)
1 合适于中文Q不适用英文文本
2 全文索烦引文件与原始文本文g的大大Uؓ2:3-3:4之间Q?00M大小Q比Lucene大约?0M?br>3 索引文g的构建时间长Q?00M大约需?时Q同时由于如果Q何文本文件更斎ͼ都需要重新构建烦引文Ӟ
因此不合适要l常变化的文本烦引?br>



全文索代码示?TestFullTextQuery.java)Q?br>File storeDir = new File("C:\\temp\\fulltext\\index");
StoreSearcher searcher = new StoreSearcher(storeDir);
String str = "??& 阉K"; //同时出现 "?? ?"阉K"Q??代表L字符
searcher.queryBegin(str, true);
while(true){
    StoreSearcherResult ssr = searcher.getNextQueryResult();
    if ( ssr == null ){
        break;
    }
    System.out.println("ID "+ssr.docId+":"+ssr.matchedCount);
}
searcher.queryEnd();
searcher.close();

q行l果
ID T01n0001.TXT:320
ID T01n0002.TXT:3
ID T01n0004.TXT:2
ID T01n0005.TXT:202
ID T01n0006.TXT:131
....



附:全文索表辑ּ举例

关键字中间可以出?Q表明匹配Q意字W?br>
q算W名Uͼq算W字W?br>AND:&
OR:,
BEFORE:*
NEAR:+
NOT:-

表达式D例:
(KEY1 <AND|OR|BEFORE|NEAR> KEY2) & (NOT KEY3)
KEY1 KEY2 (关键字之间无q算W假设ؓAND)



附:全文索文件格式信?br>
DocInfoStore(文档信息)
--HEAD--
DocCount:Integer                    文档数目
--DOC HEAD(PER DOC)--
DocSeq:    Integer                        文档序P内部使用
DocId:     Char[128]                    文档唯一IDQ字W串格式
DocSepOfs: Integer                文档分隔W数l的Ofs
--DOC SEP OFS(PER DOC)--
DocOfs:    ArrayOfInteger        文档分隔数组


WordInfoStore(每个汉字信息)
--HEAD--
WordCount:Integer                    汉字?br>--WORD IDX(Per Word)--
WordChar:Integer                    汉字的Unicode?br>WordInfoOfs:Integer                汉字信息在文件中的偏U量
WordInfoSize:Integer            汉字信息大小
--WORD INFO(Per Word)--
DocCount:                                    汉字出现的文档数
DocSeq(Per Doc):                  每个文档的顺序号
WordInDocs:ArrayOfInteger 每个文档中出现的汉字的偏ULl,从小到大排列


源文件及CLASS下蝲地址Q?br>http://m.tkk7.com/Files/zhugf000/foreader2_ftsearch.zip


W笨 2007-07-30 17:55 发表评论
]]>JVM 内存l构的一张小?/title><link>http://m.tkk7.com/zhugf000/archive/2006/02/06/29695.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Mon, 06 Feb 2006 06:21:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2006/02/06/29695.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/29695.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2006/02/06/29695.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/29695.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/29695.html</trackback:ping><description><![CDATA[<P><A HREF="/images/blogjava_net/zhugf000/jvm_mem.gif"><IMG height=457 alt=jvm_mem.gif src="http://m.tkk7.com/images/blogjava_net/zhugf000/jvm_mem.gif" width=391 border=0></A></P><img src ="http://m.tkk7.com/zhugf000/aggbug/29695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2006-02-06 14:21 <a href="http://m.tkk7.com/zhugf000/archive/2006/02/06/29695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式说?/title><link>http://m.tkk7.com/zhugf000/archive/2005/12/12/23414.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Mon, 12 Dec 2005 01:16:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2005/12/12/23414.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/23414.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2005/12/12/23414.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/23414.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/23414.html</trackback:ping><description><![CDATA[ <p align="center"> <font color="#ff0000" size="1">Java 正则表达式的译文档Q附带有中文部分扩展说明Q源代码?a href="/Files/zhugf000/fodian_common.rar">q里</a><br /></font> </p> <h1 align="center">正则表达式说? <hr width="100%" size="2" /></h1> <h3>目录</h3>正则表达式介l?a href="#man_match_mode"><br />匚w模式</a><br /><a href="#man_char_class">字符子集</a><br /><a href="#man_line_terminator">行结束符</a><br /><a href="#man_group">分组和引?/a><br /><a href="#man_unicode">Unicode支持</a><br /><br /><br /><a href="#reference">正则表达式语法参?/a><br /><ol><li><a href="#ref_chars">字符</a></li><li><a href="#ref_logicopr">逻辑操作W?/a></li><li><a href="#ref_backref">向后引用</a></li><li><a href="#ref_boundmeta">边界元字W?/a></li><li><a href="#ref_repeatindicator">重复指示W?/a></li><li><a href="#ref_char_class">字符子集</a></li><li><a href="#ref_predef_meta">预定义子集(元字W)</a></li><li>扩展子集Q元字符Q? </li><li><a href="#ref_chinese_meta">扩展中文子集Q元字符Q?/a></li><li><a href="#ref_posix_subset">POSIX字符子集Q只适用于ASCIIQ?/a></li><li><a href="#ref_unicode_category">Unicode块和分类</a><br /></li></ol><br />替换表达?br /><a href="#man_subexp">替换表达?br /></a><ol><li><a href="#subexp_chars">Ҏ字符</a></li><li><a href="#subexp_custtbl">自定义替换表</a><br /></li></ol><hr width="100%" size="2" /><h3><a name="man_match_mode"></a>匚w模式</h3>匚w模式指得是正则表辑ּ引擎以何种模式匚w字符丌Ӏ?br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">模式名称<br /></td><td valign="top">启用Q禁?br /></td><td valign="top">~省启用<br /></td><td valign="top">说明<br /></td></tr><tr><td valign="top">UNIX_LINES<br /></td><td valign="top">(?d)启用Q??-d)用<br /></td><td valign="top">?br /></td><td valign="top">启用Unix行模式?br />在此模式下,只有 <tt>'\n'</tt>被认为是行结束符。它会媄?tt>.</tt>, <tt>^</tt>, ?<tt>$</tt> 的行为?br /><br /></td></tr><tr><td valign="top">CASE_INSENSITIVE<br /></td><td valign="top">(?i)启用Q??-i)用<br /></td><td valign="top">?br /></td><td valign="top">启用忽略大小写模式?br />~省Ӟ忽略大小写模式只会媄?ASCII字符的匹配?而Unicode范围的忽略大写匚w需要通过 UNICODE_CASE 标志与本标志联合使用?br />启用此模式会影响匚w性能?br /><br /></td></tr><tr><td valign="top">COMMENTS<br /></td><td valign="top">(?x)启用Q??-x)用<br /></td><td valign="top">?br /></td><td valign="top">允许I格和注释出现在正则表达式中?br />在此模式下,I格被忽略,?开始的单行注释被忽略?<br /></td></tr><tr><td valign="top">MULTILINE<br /></td><td valign="top">(?m)启用Q??-m)用<br /></td><td valign="top">?br /></td><td valign="top">启用多行模式?br />In multiline mode the expressions <tt>^</tt> and <tt>$</tt> match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence. <br /><br /></td></tr><tr><td valign="top">DOTALL<br /></td><td valign="top">(?s)启用Q??-s)用<br /></td><td valign="top">?br /></td><td valign="top">?可以匚w行结束符?br />在此模式下,元字W?tt>.</tt>可以匚w行结束符。缺省不允许如此匚w?br /><br /><br /></td></tr><tr><td valign="top">UNICODE_CASE<br /></td><td valign="top">(?u)启用Q??-u)用<br /></td><td valign="top">?br /></td><td valign="top">Enables Unicode-aware case folding.<br />When this flag is specified then case-insensitive matching, when enabled by the <code>CASE_INSENSITIVE</code> flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. 启用此模式会影响性能?br /><br /></td></tr><tr><td valign="top">CANON_EQ<br /></td><td valign="top">(?c)启用Q??-c)用<br /></td><td valign="top">?br /></td><td valign="top">Enables canonical equivalence.<br />When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression <tt>"a\u030A"</tt>, for example, will match the string <tt>"?"</tt> when this flag is specified. By default, matching does not take canonical equivalence into account. <br />启用此模式会影响性能?br /><br /></td></tr></tbody></table><br /><br /><h3><a name="man_char_class"></a>字符子集</h3>字符子集可以含有别的字符子集Qƈ且可以通过联合操作W(~省Q和交集操作W(&&Q实现组合。联合操作符表示某个子集匚w它的子子集所匚w的Q意字W。交集操作符表明某个字符子集只匹配它的子子集都匹配的字符?br />字符子集所能够有的操作W的优先U如下,从高CQ?br /><ol><li>转义W\x </li><li>成组W?[...] </li><li>区间W?a-z </li><li>联合W?[a-e][i-u] </li><li>交集W?[a-z&&[aeiou]]</li></ol>注意Q在字符子集[]内部的语法根本不同于正则表达式其它部分中的语法。例如,在字W子集内部,正则表达?. 失去了它原有的含义,而是成了一个匹?的元字符?<br /><br /><h3><a name="man_line_terminator"></a>行结束符</h3>行结束符是一个或两个字符序列Q用以表明输入字W序列中一行的l束。下面的字符被认为是行结束符Q?br /><ul><li>一个换行符('\n')? </li><li>一个回车符加上一个换行符("\r\n")? </li><li>一个单独的回RW?'\r')? </li><li>代表下一行的字符('\u0085')? </li><li>行分隔符('\u2028')QUnicode中被定义? </li><li>一个分D늬('\u2029)QUnicode中被定义?/li></ul>如果 UNIX_LINES 模式被启用,则只有换行符被认为是行结束符?br />如果 MULTILINE 模式被启用,?br /><br /><h3><a name="man_group"></a>分组和引?/h3>字符分组以它们的左括L出现序来排序。例如在表达?(A)(B(C)))Q有四个分组Q?br /><ol><li>((A)(B(C))) </li><li>(A) </li><li>(B(C)) </li><li>(C)</li></ol>W?l永q表C辑ּ本n?br />分组采用q样的命名方式,是因为,在一ơ匹配过E中Q正则表辑ּ会被匚w多次。以前的匚w子序列有可能在将来被使用Q或者在匚wl束ӞE序有可能需要重新获得所有匹配的子字W序列?br />对于正则表达式中的某个分l而言Q永q只保留最后匹配的字符序列。如果对某个分组匚w试p|Q则会保留上ơ匹配成功的字符序列。例如,对于正则表达?a(b)?)+而言Q字W序?aba"Q将会让分组2匚w的字W序列ؓ"b"?br />??开始的分组Q将不会计入分组数目Q也不会被后l匹配所引用?br /><br /><h3><a name="man_unicode"></a>Unicode支持</h3>本正则表辑ּ匚w引擎的实现遵循了?a >Unicode技术报告:Unicode正则表达式指?/a>》,实现了该指南的第二层所需的功能,但是在细微处有一些简单语法修攏V?br />Unicode?Block)和分c?Category)通过\p和\P通配苻表C。\p{<b><i>prop</i></b>}匚w含有<b><i>prop</i></b>的输入序列,而\P{<b><i>prop</i></b>}匚w不含?b><i>prop</i></b>的输入序列。Unicode块通过前缀<tt>In</tt>表示Q如\p{InMongolian}。Unicode分类通过可选的前缀Is表示Q因此\p{L}和\p{IsL}都代表Unicode分类 letters。Unicode块和分类都可以在正则表达式子集外部和内部使用?br />目前支持的Unicode块和分类是?a >Unicode标准Q第三版</a>》中所指定的块和分cR?Unicode块名U在?a >Unicode 字符数据?/a>》的W?4章被定义Q文件名U叫<a >Blocks-3.txt</a>Q但是名UC的空DL了。例?Basic Latin"成了"BasicLatin"。无论是标准化的q是非标准化的分c,都在该标准的W?8늚W?-5表中被全部定义?br /><br /><h3><a name="man_compare_perl5"></a>与Perl 5正则表达式语法对?</h3>[TBD]<br /><br /><hr width="100%" size="2" /><h2><a name="reference"></a>正则表达式参?/h2><br /><hr width="100%" size="2" /><h3><a name="ref_chars"></a>字符</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%">X<br /></td><td valign="top">字符XQ包?CJK ExtB 区汉?br /></td></tr><tr><td valign="top" width="30%">\\<br /></td><td valign="top">反斜杠\<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>n</i></b></td><td valign="top">八进?<b><i>n</i></b>代表的字W?0<=n<=7)<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>nn</i></b><br /></td><td valign="top">八进?<b><i>nn</i></b>代表的字W?0<=n<=7)<br /></td></tr><tr><td valign="top" width="30%">\0<b><i>mnn</i></b><br /></td><td valign="top">八进?<b><i>mnn</i></b>代表的字W?0<=m<=3,0<=n<=7)<br /></td></tr><tr><td valign="top" width="30%">\x<b><i>hh</i></b><br /></td><td valign="top">十六q制 0x<b><i>hh</i></b>所代表的字W?br /></td></tr><tr><td valign="top" width="30%">\u<b><i>hhhh</i></b><br /></td><td valign="top">十六q制 0x<b><i>hhhh</i></b>所代表的字W?font color="#ff0000">注意</font>Q目前尚不支持CJK ExtB区汉字?br /></td></tr><tr><td valign="top" width="30%">\t<br /></td><td valign="top">制表W?'\u0009')<br /></td></tr><tr><td valign="top">\n<br /></td><td valign="top">换行('\u000A')<br /></td></tr><tr><td valign="top">\r<br /></td><td valign="top">回R('\u000D')<br /></td></tr><tr><td valign="top">\a<br /></td><td valign="top">响铃W?'\u0007')<br /></td></tr><tr><td valign="top">\e<br /></td><td valign="top">取消WEscape('\001B')<br /></td></tr><tr><td valign="top">\c<i><b>x</b></i><br /></td><td valign="top"><i><b>x</b></i>所代表的控制字W?br /></td></tr></tbody></table><br /><h3><a name="ref_logicopr"></a>逻辑操作W?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%"><i>XY</i><br /></td><td valign="top"><i>X</i>后面跟随<i>Y</i><br /></td></tr><tr><td valign="top" width="30%"><i>X</i>|<i>Y</i><br /></td><td valign="top"><i>X</i>或?i>Y</i><br /></td></tr><tr><td valign="top" width="30%">(<i>X</i>)<br /></td><td valign="top"><i>X</i>作ؓ分组表达?br /></td></tr></tbody></table><br /><h3><a name="ref_backref"></a>向后引用</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%">\<b>n</b><br /></td><td valign="top">W?b>n</b>个匹配的分组<br /></td></tr></tbody></table><br /><h3><a name="ref_boundmeta"></a>边界元字W?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">边界字符<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%">^<br /></td><td valign="top">行首<br /></td></tr><tr><td valign="top" width="30%">$<br /></td><td valign="top">行末<br /></td></tr><tr><td valign="top" width="30%">\b </td><td valign="top">字符边界<br /></td></tr><tr><td valign="top" width="30%">\B<br /></td><td valign="top">非字W边?br /></td></tr><tr><td valign="top" width="30%">\A<br /></td><td valign="top">输入的开?br /></td></tr><tr><td valign="top" width="30%">\G<br /></td><td valign="top">上次匚w的结束处<br /></td></tr><tr><td valign="top" width="30%">\Z<br /></td><td valign="top">输入的l束Q或者是最后一个行l束W,参见<a href="file:///D:/source/jtextpro/src/dist/jtextpro/docs/regexp.html#man_line_terminator">行结束符</a>?br /></td></tr><tr><td valign="top" width="30%">\z<br /></td><td valign="top">输入的l束<br /></td></tr></tbody></table><br /><h3><a name="ref_repeatindicator"></a>重复指示W?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>?<br /></td><td valign="top"><b>X</b>重复一ơ,或者不重复<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>*<br /></td><td valign="top"><b>X</b>重复0ơ或多次<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>+ <br /></td><td valign="top"><b>X</b>重复1ơ或多次<br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n}<br /></td><td valign="top"><b>X</b>重复nơ,不多也不?br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n,}<br /></td><td valign="top"><b>X</b>臛_重复n?br /></td></tr><tr><td valign="top" width="30%"><b>X</b>{n,m}<br /></td><td valign="top"><b>X</b>臛_重复nơ,臛_重复mơ?br /></td></tr></tbody></table>注:<b>X</b>{n,m}???方式可以联合使用?br /><br /><h3><a name="ref_char_class"></a>字符子集</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串子集<br /></td><td valign="top" width="50%">匚w的字W串<br /></td><td valign="top" align="left" width="20%">l合方式<br /></td></tr><tr><td valign="top" width="30%">[abc]<br /></td><td valign="top" width="60%">字符a,b或cQ包?CJK ExtB 区汉?br /></td><td valign="top" align="left" width="20%">单子?br /></td></tr><tr><td valign="top" width="30%">[^abc]<br /></td><td valign="top" width="60%">L非a,b或c的字W?br /></td><td valign="top" align="left" width="20%">排除<br /></td></tr><tr><td valign="top" width="30%">[a-zA-Z] </td><td valign="top" width="60%">从a到zQ或者A到ZQ包含a,z,A,Z?br /></td><td valign="top" align="left" width="20%">区间<br /></td></tr><tr><td valign="top" width="30%">[a-d[m-p]]<br /></td><td valign="top" width="60%">从a到dQ或者m到pQ等于[a-dm-p]?br /></td><td valign="top" align="left" width="20%">联合<br /></td></tr><tr><td valign="top" width="30%">[a-z&&[def]]<br /></td><td valign="top" width="60%">d,e或者f?br /></td><td valign="top" align="left" width="20%">交集<br /></td></tr><tr><td valign="top">[a-z&&[^bc]]<br /></td><td valign="top" width="60%">从a到zQ除了b和cQ等于[ad-z]<br /></td><td valign="top" align="left" width="20%">扣除<br /></td></tr><tr><td valign="top">[a-z&&[^m-p]]<br /></td><td valign="top">从a到zQƈ且不包括从m到pQ等于[a-lq-z]<br /></td><td valign="top">扣除<br /></td></tr></tbody></table><br /><h3><a name="ref_predef_meta"></a>预定义子集(元字W)</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">边界字符<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%">.<br /></td><td valign="top">L字符Q可能匹配行l束W?br /></td></tr><tr><td valign="top" width="30%">\d<br /></td><td valign="top">数字[0-9]<br /></td></tr><tr><td valign="top" width="30%">\D </td><td valign="top">非数字[^0-9]<br /></td></tr><tr><td valign="top" width="30%">\s<br /></td><td valign="top">I白W[ \t\n\x0B\f\r]<br /></td></tr><tr><td valign="top" width="30%">\S<br /></td><td valign="top">非空白符[^\s]<br /></td></tr><tr><td valign="top" width="30%">\w<br /></td><td valign="top">单词W,包含有字母和数字[a-zA-Z_0-9]<br /></td></tr><tr><td valign="top" width="30%">\W<br /></td><td valign="top">非单词符Q不包含有字母和数字?br /></td></tr></tbody></table><br /><h3>扩展子集Q元字符Q?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%"><br /></td><td valign="top"><br /></td></tr></tbody></table><br /><br /><h3><a name="ref_chinese_meta"></a>扩展中文子集Q元字符Q?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">名称<br /></td><td valign="top">块名Uͼ\p{InXXX}Q?br /></td><td valign="top">化通配W?br /></td><td valign="top">标准Unicode块,或者汉字列?br /></td></tr><tr><td valign="top">L双字节字W(汉字或全角符P<br /></td><td valign="top">\p{InQuqnJiao}<br /></td><td valign="top">\E<br /></td><td valign="top">L由GBK表示的汉字,不包括GB18030扩展部分Q?br />以及CJK ExtB区的汉字?br /></td></tr><tr><td valign="top">L单字节字W?br /></td><td valign="top">\p{InFQuanJiao}<br /></td><td valign="top">\~E<br /></td><td valign="top">L单字节字W?br /></td></tr><tr><td valign="top">L全角ASCII字符<br /></td><td valign="top">\p{InQJAscii}<br /></td><td valign="top">\H<br /></td><td valign="top">标准HalfwidthandFullwidthForms?br /></td></tr><tr><td valign="top">L收录在BIG5码集中的双字节字W?br /></td><td valign="top">\p{InBig5}<br /></td><td valign="top">\I<br /></td><td valign="top">Big5可编码双字节字符<br /></td></tr><tr><td valign="top">匚w未收录在BIG5码集中的双字节字W?/td><td valign="top">\p{InFBig5}<br /></td><td valign="top">\~I<br /></td><td valign="top">非Big5可编码双字节字符<br /></td></tr><tr><td valign="top">匚wL汉字(不包括符?<br /></td><td valign="top">\p{InHanziOrCJKExtB}<br /></td><td valign="top">\X<br /></td><td valign="top">L汉字Q包括GB18030扩展部分?br /></td></tr><tr><td valign="top">匚wL汉字(不包括符?<br /></td><td valign="top">\p{InHanzi}<br /></td><td valign="top">\M<br /></td><td valign="top">L汉字Q不包括GB18030扩展部分?br /></td></tr><tr><td valign="top">匚w非汉字的双字节字W?br /></td><td valign="top">\p{InFHanzi}<br /></td><td valign="top">\~M<br /></td><td valign="top">L非汉字的双字节字W,<br />包括GB18030扩展部分?br /></td></tr><tr><td valign="top">地支字符<br /></td><td valign="top">\p{InDiZhi}<br /></td><td valign="top">\U<br /></td><td valign="top">子丑寅卯辰埩午未申酉戌亥<br /></td></tr><tr><td valign="top">匚w收录在GB码集中的双字节字W?br /></td><td valign="top">\p{InGB}<br /></td><td valign="top">\g<br /></td><td valign="top">收录在GB码集中的双字节字W,<br />不包括GB18030扩展部分?br /></td></tr><tr><td valign="top">匚w非收录在GB码集中的双字节字W?br /></td><td valign="top">\p{InFGB}<br /></td><td valign="top">\~g<br /></td><td valign="top">未收录在GB码集中的双字节字W,<br />不包括GB18030扩展部分?br /></td></tr><tr><td valign="top">匚w收录在GBK码集中的双字节字W?br /></td><td valign="top">\p{InGBK}<br /></td><td valign="top">\h<br /></td><td valign="top">收录在GBK码集中的双字节字W,<br />不包括GB18030扩展部分?br /></td></tr><tr><td valign="top">匚w非收录在GBK码集中的双字节字W?br /></td><td valign="top">\p{InFGBK}<br /></td><td valign="top">\~h<br /></td><td valign="top">未收录在GBK码集中的双字节字W,<br />不包括GB18030扩展部分?br /></td></tr><tr><td valign="top">大写希腊字母<br /></td><td valign="top">\p{InDaXila}<br /></td><td valign="top">\K<br /></td><td valign="top">ΑΒΓΔΕΖΗΘΙΚΛΜΝ<br />ΞΟΠΡΣf`ΦΨΩ<br /></td></tr><tr><td valign="top">日文片假?br /></td><td valign="top">\p{InPianJia}<br /></td><td valign="top">\j<br /></td><td valign="top">标准Katakana?br /></td></tr><tr><td valign="top">日文q_?br /></td><td valign="top">\p{InPingJia}<br /></td><td valign="top">\J<br /></td><td valign="top">标准Hiragana?br /></td></tr><tr><td valign="top">写希腊字母<br /></td><td valign="top">\p{InXiaoXila}<br /></td><td valign="top">\k<br /></td><td valign="top">βδεζηθικλμ^<br />ξοπρστυφχψω<br /></td></tr><tr><td valign="top">数学W号<br /></td><td valign="top">\p{InMathe}<br /></td><td valign="top">\m<br /></td><td valign="top">u×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒?br />∫∮≡≌≈∽∝≠≮≯≤≥∞∵?br /></td></tr><tr><td valign="top">中文数字<br /></td><td valign="top">\p{InCnDigit}<br /></td><td valign="top">\i<br /></td><td valign="top">〇一二三四五六七八九十百千万亿兆吉京<br /></td></tr><tr><td valign="top">大写中文数字<br /></td><td valign="top">\p{InDaCnDigit}<br /></td><td valign="top">\N<br /></td><td valign="top">零壹贰叁肆伍陆柒捌玖拾䘪仟萬亿兆吉京<br /></td></tr><tr><td valign="top">全角标点W号<br /></td><td valign="top">\p{InQJBiaoDian}<br /></td><td valign="top">\o<br /></td><td valign="top">、。·ˉˇ¨〃々—~‖…‘’“”〔?br />〈〉《》「」『』〖〗【】!Q'Q)Q?br />Q.Q;Q=Q?Q]{|}`H﹊H﹌H﹎H﹐H﹒H﹕H﹗H﹚<br />H﹜H﹞|︶|ؓ|﹀|DH﹂H﹄<br />|Ӈ|P|x|?br /></td></tr><tr><td valign="top">写俄文字母<br /></td><td valign="top">\p{InXiaoEWen}<br /></td><td valign="top">\l<br /></td><td valign="top">аб{Cеёжзийaxмн<br />о\рстуфхцчшщъыьэюя<br /></td></tr><tr><td valign="top">大写俄文字母<br /></td><td valign="top">\p{InDaEWen}<br /></td><td valign="top">\R<br /></td><td valign="top">АБВГДЕЁЖЗИЙКЛМНО<br />ПРСТУФ[ЦЧШЩЪЫЬfy<br /></td></tr><tr><td valign="top">中文序号<br /></td><td valign="top">\p{InCnSN}<br /></td><td valign="top">\q<br /></td><td valign="top">ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ<br />ⅰⅱ⅜yⅴⅵⅶⅷⅸⅹ<br />再加上Unicode标准EnclosedAlphanumerics?br /></td></tr><tr><td valign="top">天干字符<br /></td><td valign="top">\p{InTianGan}<br /></td><td valign="top">\T<br /></td><td valign="top">甲乙丙丁戊己庚辛壬癸<br /></td></tr><tr><td valign="top">竖排标点W号<br /></td><td valign="top">\p{InSPBiaoDian}<br /></td><td valign="top">\V<br /></td><td valign="top">|︶|ؓ|﹀|DH﹂H﹄|Ӈ|P|x|?br /></td></tr><tr><td valign="top">拼音字符<br /></td><td valign="top">\p{InPinyin}<br /></td><td valign="top">\y<br /></td><td valign="top">ā֙ǎàēéě؈īTǐìōQǒòūúǔùǖǘǚǜü^ɑńň<br />GBK -> 0xA8A1- 0xA8C0<br />只是Unicode标准LatinExtended-A块的一部分?br /></td></tr><tr><td valign="top">注音字符<br /></td><td valign="top">\p{InZhuyin}<br /></td><td valign="top">\Y<br /></td><td valign="top">标准Bopomofo?br /></td></tr><tr><td valign="top">制表字符<br /></td><td valign="top">\p{InZhiBiao}<br /></td><td valign="top">\C<br /></td><td valign="top">标准BoxDrawing块?br />l检查发?textpro 的算法含有部分非?br />准Unicode制表W:“∟∣≒≦≧⊎앐”?br /></td></tr></tbody></table><br /><h3><a name="ref_posix_subset"></a>POSIX字符子集Q只适用于ASCIIQ?/h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">正则表达式字W串<br /></td><td valign="top">匚w的字W串<br /></td></tr><tr><td valign="top" width="30%">\p{Lower}<br /></td><td valign="top">写字母[a-z]<br /></td></tr><tr><td valign="top" width="30%">\p{Upper}<br /></td><td valign="top">大写字母[A-Z]<br /></td></tr><tr><td valign="top" width="30%">\p{ASCII}<br /></td><td valign="top">所有的ASCII字符[\x00-\x7F]<br /></td></tr><tr><td valign="top" width="30%">\p{Alpha}<br /></td><td valign="top">大小写字母[\p{Lower}\p{Upper}]<br /></td></tr><tr><td valign="top" width="30%">\p{Digit}<br /></td><td valign="top">数字[0-9]<br /></td></tr><tr><td valign="top" width="30%">\p{Alnum}<br /></td><td valign="top">字母数字W,包含大小写字母和数字[\p{Alpha}\p{Digit}]<br /></td></tr><tr><td valign="top" width="30%">\p{Punct}<br /></td><td valign="top">标点W号Q?"#$%&'()*+,-./:;<=>?@[\]^_`{|}~之一?br /></td></tr><tr><td valign="top" width="30%">\p{Graph}<br /></td><td valign="top">可显C字W[\p{Alnum}\p{Punct}]<br /></td></tr><tr><td valign="top">\p{Print}<br /></td><td valign="top">可打印字W[\p{Graph}]<br /></td></tr><tr><td valign="top">\p{Blank}<br /></td><td valign="top">I格或者制表符[ \t]<br /></td></tr><tr><td valign="top">\p{Cntrl}<br /></td><td valign="top">控制字符[\x00-\x1F\x7F<br /></td></tr><tr><td valign="top">\p{XDigit}<br /></td><td valign="top">十六q制数字[0-9a-fA-F]<br /></td></tr><tr><td valign="top">\p{Space}<br /></td><td valign="top">I白W[ \t\n\x0B\f\r]<br /></td></tr></tbody></table><br /><h3><a name="ref_unicode_category"></a>Unicode块和分类</h3><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">?br /></td><td valign="top">中文名称Q摘自Word XPQ?br /></td><td valign="top">代码区域<br /></td></tr><tr><td valign="top">BasicLatin<br /></td><td valign="top">基本拉丁?br /></td><td valign="top">\u0000-\u007F<br /></td></tr><tr><td valign="top">Latin-1Supplement<br /></td><td valign="top">拉丁?1<br /></td><td valign="top">\u0080-\u00FF<br /></td></tr><tr><td valign="top">LatinExtended-A<br /></td><td valign="top">拉丁语扩?A<br /></td><td valign="top">\u0100-\u017F<br /></td></tr><tr><td valign="top">LatinExtended-Bound<br /></td><td valign="top">拉丁语扩?B<br /></td><td valign="top">\u0180-\u024F<br /></td></tr><tr><td valign="top">IPAExtensions<br /></td><td valign="top">国际x扩充<br /></td><td valign="top">\u0250-\u02AF<br /></td></tr><tr><td valign="top">SpacingModifierLetters<br /></td><td valign="top">q格的修饰字W?br /></td><td valign="top">\u02B0-\u02FF<br /></td></tr><tr><td valign="top">CombiningDiacriticalMarks<br /></td><td valign="top">l合用发音符<br /></td><td valign="top">\u0300-\u036F<br /></td></tr><tr><td valign="top">Greek<br /></td><td valign="top">基本希腊?br /></td><td valign="top">\u0370-\u03FF<br /></td></tr><tr><td valign="top">Cyrillic<br /></td><td valign="top">襉K语<br /></td><td valign="top">\u0400-\u04FF<br /></td></tr><tr><td valign="top">Armenian<br /></td><td valign="top"><br /></td><td valign="top">\u0530-\u058F<br /></td></tr><tr><td valign="top">Hebrew<br /></td><td valign="top"><br /></td><td valign="top">\u0590-\u05FF<br /></td></tr><tr><td valign="top">Arabic<br /></td><td valign="top"><br /></td><td valign="top">\u0600-\u06FF<br /></td></tr><tr><td valign="top">Syriac<br /></td><td valign="top"><br /></td><td valign="top">\u0700-\u074F<br /></td></tr><tr><td valign="top">Thaana<br /></td><td valign="top"><br /></td><td valign="top">\u0780-\u07BF<br /></td></tr><tr><td valign="top">Devanagari<br /></td><td valign="top"><br /></td><td valign="top">\u0900-\u097F<br /></td></tr><tr><td valign="top">Bengali<br /></td><td valign="top"><br /></td><td valign="top">\u0980-\u09FF<br /></td></tr><tr><td valign="top">Gurmukhi<br /></td><td valign="top"><br /></td><td valign="top">\u0A00-\u0A7F<br /></td></tr><tr><td valign="top">Gujarati<br /></td><td valign="top"><br /></td><td valign="top">\u0A80-\u0AFF<br /></td></tr><tr><td valign="top">Oriya<br /></td><td valign="top"><br /></td><td valign="top">\u0B00-\u0B7F<br /></td></tr><tr><td valign="top">Tamil<br /></td><td valign="top"><br /></td><td valign="top">\u0B80-\u0BFF<br /></td></tr><tr><td valign="top">Telugu<br /></td><td valign="top"><br /></td><td valign="top">\u0C00-\u0C7F<br /></td></tr><tr><td valign="top">Kannada<br /></td><td valign="top"><br /></td><td valign="top">\u0C80-\u0CFF<br /></td></tr><tr><td valign="top">Malayalam<br /></td><td valign="top"><br /></td><td valign="top">\u0D00-\u0D7F<br /></td></tr><tr><td valign="top">Sinhala<br /></td><td valign="top"><br /></td><td valign="top">\u0D800-\uDFF<br /></td></tr><tr><td valign="top">Thai<br /></td><td valign="top"><br /></td><td valign="top">\u0E00-\u0E7F<br /></td></tr><tr><td valign="top">Lao<br /></td><td valign="top"><br /></td><td valign="top">\u0E80-\u0EFF<br /></td></tr><tr><td valign="top">Tibetan<br /></td><td valign="top">藏语<br /></td><td valign="top">\u0F00-\u0FFF<br /></td></tr><tr><td valign="top">Myanmar<br /></td><td valign="top"><br /></td><td valign="top">\u1000-\u109F<br /></td></tr><tr><td valign="top">Georgian<br /></td><td valign="top"><br /></td><td valign="top">\u10A0-\u10FF<br /></td></tr><tr><td valign="top">HangulJamo<br /></td><td valign="top"><br /></td><td valign="top">\u1100-\u11FF<br /></td></tr><tr><td valign="top">Ethiopic<br /></td><td valign="top"><br /></td><td valign="top">\u1200-\u137F<br /></td></tr><tr><td valign="top">Cherokee<br /></td><td valign="top"><br /></td><td valign="top">\u13A0-\u13FF<br /></td></tr><tr><td valign="top">UnifiedCanadianAboriginalSyllabics<br /></td><td valign="top"><br /></td><td valign="top">\u1400-\u167F<br /></td></tr><tr><td valign="top">Ogham<br /></td><td valign="top"><br /></td><td valign="top">\u1680-\u169F<br /></td></tr><tr><td valign="top">Runic<br /></td><td valign="top"><br /></td><td valign="top">\u16A0-\u16FF<br /></td></tr><tr><td valign="top">Khmer<br /></td><td valign="top"><br /></td><td valign="top">\u1780-\u17FF<br /></td></tr><tr><td valign="top">Mongolian<br /></td><td valign="top">蒙古?br /></td><td valign="top">\u1800-\u18AF<br /></td></tr><tr><td valign="top">LatinExtendedAdditional<br /></td><td valign="top"><br /></td><td valign="top">\u1E00-\u1EFF<br /></td></tr><tr><td valign="top">GreekExtended<br /></td><td valign="top"><br /></td><td valign="top">\u1F00-\u1FFF<br /></td></tr><tr><td valign="top">GeneralPunctuation<br /></td><td valign="top">q义标点<br /></td><td valign="top">\u2000-\u206F<br /></td></tr><tr><td valign="top">SuperscriptsandSubscripts<br /></td><td valign="top"><br /></td><td valign="top">\u2070-\u209F<br /></td></tr><tr><td valign="top">CurrencySymbols<br /></td><td valign="top">货币W号<br /></td><td valign="top">\u20A0-\u20CF<br /></td></tr><tr><td valign="top">CombiningMarksforSymbols<br /></td><td valign="top"><br /></td><td valign="top">\u20D0-\u20FF<br /></td></tr><tr><td valign="top">LetterlikeSymbols<br /></td><td valign="top">cM字母的符?br /></td><td valign="top">\u2100-\u214F<br /></td></tr><tr><td valign="top">NumberForms<br /></td><td valign="top">数字形式<br /></td><td valign="top">\u2150-\u218F<br /></td></tr><tr><td valign="top">Arrows<br /></td><td valign="top">头<br /></td><td valign="top">\u2190-\u21FF<br /></td></tr><tr><td valign="top">MathematicalOperators<br /></td><td valign="top">数学q算W?br /></td><td valign="top">\u2200-\u22FF<br /></td></tr><tr><td valign="top">MiscellaneousTechnical<br /></td><td valign="top">零杂技术用W号<br /></td><td valign="top">\u2300-\u23FF<br /></td></tr><tr><td valign="top">ControlPictures<br /></td><td valign="top"><br /></td><td valign="top">\u2400-\u243F<br /></td></tr><tr><td valign="top">OpticalCharacterRecognition<br /></td><td valign="top"><br /></td><td valign="top">\u2440-\u245F<br /></td></tr><tr><td valign="top">EnclosedAlphanumerics<br /></td><td valign="top">带括L字母数字<br /></td><td valign="top">\u2460-\u24FF<br /></td></tr><tr><td valign="top">BoxDrawing<br /></td><td valign="top">制表W?br /></td><td valign="top">\u2500-\u257F<br /></td></tr><tr><td valign="top">BlockElements<br /></td><td valign="top">方块囑Ş<br /></td><td valign="top">\u2580-\u259F<br /></td></tr><tr><td valign="top">GeometricShapes<br /></td><td valign="top">几何囑Ş<br /></td><td valign="top">\u25A0-\u25FF<br /></td></tr><tr><td valign="top">MiscellaneousSymbols<br /></td><td valign="top">零杂丁贝W(C意W等Q?br /></td><td valign="top">\u2600-\u26FF<br /></td></tr><tr><td valign="top">Dingbats<br /></td><td valign="top"><br /></td><td valign="top">\u2700-\u27BF<br /></td></tr><tr><td valign="top">BraillePatterns<br /></td><td valign="top"><br /></td><td valign="top">\u2800-\u28FF<br /></td></tr><tr><td valign="top">CJKRadicalsSupplement<br /></td><td valign="top"><br /></td><td valign="top">\u2E80-\u2EFF<br /></td></tr><tr><td valign="top">KangxiRadicals<br /></td><td valign="top"><br /></td><td valign="top">\u2F00-\u2FDF<br /></td></tr><tr><td valign="top">IdeographicDescriptionCharacters<br /></td><td valign="top"><br /></td><td valign="top">\u2FF0-\u2FFF<br /></td></tr><tr><td valign="top">CJKSymbolsandPunctuation<br /></td><td valign="top">CJKW号和标?br /></td><td valign="top">\u3000-\u303F<br /></td></tr><tr><td valign="top">Hiragana<br /></td><td valign="top">q_?br /></td><td valign="top">\u3040-\u309F<br /></td></tr><tr><td valign="top">Katakana<br /></td><td valign="top">片假?br /></td><td valign="top">\u30A0-\u30FF<br /></td></tr><tr><td valign="top">Bopomofo<br /></td><td valign="top">注音<br /></td><td valign="top">\u3100-\u312F<br /></td></tr><tr><td valign="top">HangulCompatibilityJamo<br /></td><td valign="top"><br /></td><td valign="top">\u3130-\u318F<br /></td></tr><tr><td valign="top">Kanbun<br /></td><td valign="top"><br /></td><td valign="top">\u3190-\u319F<br /></td></tr><tr><td valign="top">BopomofoExtended<br /></td><td valign="top">扩展注音<br /></td><td valign="top">\u31A0-\u31BF<br /></td></tr><tr><td valign="top">EnclosedCJKLettersandMonths<br /></td><td valign="top">带括LCJK字母及月?br /></td><td valign="top">\u3200-\u32FF<br /></td></tr><tr><td valign="top">CJKCompatibility<br /></td><td valign="top">CJK兼容字符<br /></td><td valign="top">\u3300-\u33FF <br /></td></tr><tr><td valign="top">CJKUnifiedIdeographsExtensionA<br /></td><td valign="top">CJKl一汉字扩展-A<br /></td><td valign="top">\u3400-\u4dBF<br /></td></tr><tr><td valign="top">CJKUnifiedIdeographs<br /></td><td valign="top">CJKl一汉字<br /></td><td valign="top">\u4E00-\u9fAF<br /></td></tr><tr><td valign="top">YiSyllables<br /></td><td valign="top"><br /></td><td valign="top">\uA000-\uA48F<br /></td></tr><tr><td valign="top">YiRadicals<br /></td><td valign="top"><br /></td><td valign="top">\uA490-\uA4CF<br /></td></tr><tr><td valign="top">HangulSyllables<br /></td><td valign="top"><br /></td><td valign="top">\uAC00-\uD7A3<br /></td></tr><tr><td valign="top">HighSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uD800-\uDB7F<br /></td></tr><tr><td valign="top">HighPrivateUseSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uDB80-\uDBFF<br /></td></tr><tr><td valign="top">LowSurrogates<br /></td><td valign="top"><br /></td><td valign="top">\uDC00-\uDFFF<br /></td></tr><tr><td valign="top">PrivateUse<br /></td><td valign="top">专用?br /></td><td valign="top">\uE000-\uF8FF<br /></td></tr><tr><td valign="top">CJKCompatibilityIdeographs<br /></td><td valign="top">CJK兼容汉字<br /></td><td valign="top">\uF900-\uFAFF<br /></td></tr><tr><td valign="top">AlphabeticPresentationForms<br /></td><td valign="top"><br /></td><td valign="top">\uFB00-\uFB4F<br /></td></tr><tr><td valign="top">ArabicPresentationForms-A<br /></td><td valign="top"><br /></td><td valign="top">\uFB50-\uFDFF<br /></td></tr><tr><td valign="top">CombiningHalfMarks<br /></td><td valign="top"><br /></td><td valign="top">\uFE20-\uFE2F<br /></td></tr><tr><td valign="top">CJKCompatibilityForms<br /></td><td valign="top">CJK兼容形式<br /></td><td valign="top">\uFE30-\uFE4F<br /></td></tr><tr><td valign="top">SmallFormVariants<br /></td><td valign="top">写变体<br /></td><td valign="top">\uFE50-\uFE6F<br /></td></tr><tr><td valign="top">ArabicPresentationForms-Bound<br /></td><td valign="top"><br /></td><td valign="top">\uFE70-\ufeFF<br /></td></tr><tr><td valign="top">Specials<br /></td><td valign="top"><br /></td><td valign="top">\uFFF0-\uFFFF<br /></td></tr><tr><td valign="top">HalfwidthandFullwidthForms<br /></td><td valign="top">半Ş及全形字W?br /></td><td valign="top">\uFF00-\uFFEF<br /></td></tr></tbody></table><br /><br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top">分类<br /></td><td valign="top">全称<br /></td><td valign="top">说明<br /></td></tr><tr><td valign="top">Cn<br /></td><td valign="top"><br /></td><td valign="top">UNASSIGNED<br /></td></tr><tr><td valign="top">Lu<br /></td><td valign="top"><br /></td><td valign="top">UPPERCASE_LETTER<br /></td></tr><tr><td valign="top">Ll<br /></td><td valign="top"><br /></td><td valign="top">LOWERCASE_LETTER<br /></td></tr><tr><td valign="top">Lt<br /></td><td valign="top"><br /></td><td valign="top">TITLECASE_LETTER<br /></td></tr><tr><td valign="top">Lm<br /></td><td valign="top"><br /></td><td valign="top">MODIFIER_LETTER<br /></td></tr><tr><td valign="top">Lo<br /></td><td valign="top"><br /></td><td valign="top">OTHER_LETTER<br /></td></tr><tr><td valign="top">Mn<br /></td><td valign="top"><br /></td><td valign="top">NON_SPACING_MARK<br /></td></tr><tr><td valign="top">Me<br /></td><td valign="top"><br /></td><td valign="top">ENCLOSING_MARK<br /></td></tr><tr><td valign="top">Mc<br /></td><td valign="top"><br /></td><td valign="top">COMBINING_SPACING_MARK<br /></td></tr><tr><td valign="top">Nd<br /></td><td valign="top"><br /></td><td valign="top">DECIMAL_DIGIT_NUMBER<br /></td></tr><tr><td valign="top">Nl<br /></td><td valign="top"><br /></td><td valign="top">LETTER_NUMBER<br /></td></tr><tr><td valign="top">No<br /></td><td valign="top"><br /></td><td valign="top">OTHER_NUMBER<br /></td></tr><tr><td valign="top">Zs<br /></td><td valign="top"><br /></td><td valign="top">SPACE_SEPARATOR<br /></td></tr><tr><td valign="top">Zl<br /></td><td valign="top"><br /></td><td valign="top">LINE_SEPARATOR<br /></td></tr><tr><td valign="top">Zp<br /></td><td valign="top"><br /></td><td valign="top">PARAGRAPH_SEPARATOR<br /></td></tr><tr><td valign="top">Cc<br /></td><td valign="top"><br /></td><td valign="top">CNTRL<br /></td></tr><tr><td valign="top">Cf<br /></td><td valign="top"><br /></td><td valign="top">FORMAT<br /></td></tr><tr><td valign="top">Co<br /></td><td valign="top"><br /></td><td valign="top">PRIVATE_USE<br /></td></tr><tr><td valign="top">Cs<br /></td><td valign="top"><br /></td><td valign="top">SURROGATE<br /></td></tr><tr><td valign="top">Pd<br /></td><td valign="top"><br /></td><td valign="top">DASH_PUNCTUATION<br /></td></tr><tr><td valign="top">Ps<br /></td><td valign="top"><br /></td><td valign="top">START_PUNCTUATION<br /></td></tr><tr><td valign="top">Pe<br /></td><td valign="top"><br /></td><td valign="top">END_PUNCTUATION<br /></td></tr><tr><td valign="top">Pc<br /></td><td valign="top"><br /></td><td valign="top">CONNECTOR_PUNCTUATION<br /></td></tr><tr><td valign="top">Po<br /></td><td valign="top"><br /></td><td valign="top">OTHER_PUNCTUATION<br /></td></tr><tr><td valign="top">Sm<br /></td><td valign="top"><br /></td><td valign="top">MATH_SYMBOL<br /></td></tr><tr><td valign="top">Sc<br /></td><td valign="top"><br /></td><td valign="top">CURRENCY_SYMBOL<br /></td></tr><tr><td valign="top">Sk<br /></td><td valign="top"><br /></td><td valign="top">MODIFIER_SYMBOL<br /></td></tr><tr><td valign="top">So<br /></td><td valign="top"><br /></td><td valign="top">OTHER_SYMBOL<br /></td></tr><tr><td valign="top">L<br /></td><td valign="top"><br /></td><td valign="top">LETTER<br /></td></tr><tr><td valign="top">M<br /></td><td valign="top"><br /></td><td valign="top">MARK<br /></td></tr><tr><td valign="top">N<br /></td><td valign="top"><br /></td><td valign="top">NUMBER<br /></td></tr><tr><td valign="top">Z<br /></td><td valign="top"><br /></td><td valign="top">SEPARATOR<br /></td></tr><tr><td valign="top">C<br /></td><td valign="top"><br /></td><td valign="top">CONTROL<br /></td></tr><tr><td valign="top">P<br /></td><td valign="top"><br /></td><td valign="top">PUNCTUATION<br /></td></tr><tr><td valign="top">S<br /></td><td valign="top"><br /></td><td valign="top">SYMBOL</td></tr><tr><td valign="top">LD<br /></td><td valign="top"><br /></td><td valign="top">LETTER_OR_DIGIT<br /></td></tr><tr><td valign="top">L1<br /></td><td valign="top"><br /></td><td valign="top">Latin-1<br /></td></tr><tr><td valign="top">all<br /></td><td valign="top"><br /></td><td valign="top">ALL<br /></td></tr><tr><td valign="top">ASCII<br /></td><td valign="top"><br /></td><td valign="top">ASCII<br /></td></tr><tr><td valign="top">Alnum<br /></td><td valign="top"><br /></td><td valign="top">字母数字(0-9,a-z,A-Z)<br /></td></tr><tr><td valign="top">Alpha<br /></td><td valign="top"><br /></td><td valign="top">字母(a-z,A-Z)<br /></td></tr><tr><td valign="top">Blank<br /></td><td valign="top"><br /></td><td valign="top">I格和制表符(' '|\t)<br /></td></tr><tr><td valign="top">Cntrl<br /></td><td valign="top"><br /></td><td valign="top">控制字符Q不可打?br /></td></tr><tr><td valign="top">Digit<br /></td><td valign="top"><br /></td><td valign="top">数字(0-9)<br /></td></tr><tr><td valign="top">Graph<br /></td><td valign="top"><br /></td><td valign="top">可打C可视字母Q例如空? '是可打印的但不是可视字母Q?`a' 两者都是。)<br /></td></tr><tr><td valign="top">Lower<br /></td><td valign="top"><br /></td><td valign="top">写字母<br /></td></tr><tr><td valign="top">Print<br /></td><td valign="top"><br /></td><td valign="top">可打印字母(非控制字W)<br /></td></tr><tr><td valign="top">Punct<br /></td><td valign="top"><br /></td><td valign="top">标符P字母、数字、控制、空白符以外的字母)Q如Q?@#$%}{<>,./?[]{等?br /></td></tr><tr><td valign="top">Space<br /></td><td valign="top"><br /></td><td valign="top">I白W?' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20)<br /></td></tr><tr><td valign="top">Upper<br /></td><td valign="top"><br /></td><td valign="top">大写字母<br /></td></tr><tr><td valign="top">XDigit<br /></td><td valign="top"><br /></td><td valign="top">十六q制数字(0-9Qa-f, A-F)<br /></td></tr></tbody></table><br /><hr width="100%" size="2" /><br /><br /><br /><h3><a name="man_subexp"></a>替换表达?/h3><a name="subexp_chars"></a>Ҏ字符<br /><table cellspacing="2" cellpadding="2" width="100%" border="1"><tbody><tr><td valign="top" width="30%">Ҏ字符介绍<br /></td><td valign="top">描述<br /></td></tr><tr><td valign="top" width="30%">\n<br /></td><td valign="top">换行<br /></td></tr><tr><td valign="top" width="30%">\b<br /></td><td valign="top">向前删除一个字W。当q个字符位于替换串之首时Q将删除匚w串之前的一个字W。若匚w串位于行首,匚w串所在行与前一行相合ƈ?br /></td></tr><tr><td valign="top" width="30%">\d<br /></td><td valign="top">向后删除一个字W。当q个字符位于替换串之末时Q将删除匚w串之后的一个字W。若匚w串位于行末,匚w串所在行与下一行相合ƈ?br /></td></tr><tr><td valign="top" width="30%">\e<br /></td><td valign="top">插入一个ESC字符<br /></td></tr><tr><td valign="top">\t<br /></td><td valign="top">插入一个TAB字符<br /></td></tr><tr><td valign="top">\<i><b>n</b></i><br /></td><td valign="top">n代表查找正则表达式中的子表达式(l)。\1代表W一个子表达式,\2代表W二个子表达式,依次cL。\0代表整个匚w到的字符丌Ӏ?br /></td></tr><tr><td valign="top">\v<br /></td><td valign="top">大写下一个字?br /></td></tr><tr><td valign="top">\U<br /></td><td valign="top">全部大写以后的字母,直到到其它指示Wؓ止?br /></td></tr><tr><td valign="top">\l<br /></td><td valign="top">写下一个字?br /></td></tr><tr><td valign="top">\L<br /></td><td valign="top">全部写以后的字母,直到到其它指示Wؓ止?br /></td></tr><tr><td valign="top">\E<br /></td><td valign="top">取消所有的字母大小写指C符?br /></td></tr></tbody></table><br /><br /><a name="subexp_custtbl"></a>自定义替换表<br /><br />在查找/替换中用自定义替换?<br />有的时候,上述单的自定义替换功能是不够的。例如,用户可能希望只把出现在括号内的源串替换ؓ目标丌Ӏ这U文本处理可以通过在查?替换中用自定义替换表来解决?<br /><br />在查?替换功能中用自定义替换表的替换函数是\TnQ其中n?-9的数字, 注意n?表示W?0张替换表。如果略去nQ其效果相当于\T1Q即使用W一张替换表。例如要把所有放在方括号中的汉字替换为拼韻I可以查找“\[(\E)\]”,替换为“\T{\1}”。即把第一个子表达式的匚w内容按自定义替换表{换。注意,如果\T函数的参C在替换表的源串中Q\T函数的结果与源串相同Q即不做M变换?<br /><br />有些情况下,用户可能希望只用替换表的一部分内容。还是以拼音ZQ前面给出的替换表中包含了拼音的韌Q如果在替换时不希望加上q些韌数字Q可以用“过滤”功能。所谓过滤,其实是用一个正则表辑ּd析替换表的目标串Qƈ把其中的某个子表辑ּ取出来?<br /><br />使用“过滤”时Q在“设|自定义替换表”对话框中,点“过滤”按钮,在弹出的对话框中填入一个正则表辑ּ。再以拼音ؓ例,表达式可以写为?\p{Alpha}+)(\d)”,其中W一Ҏ号中的是不含韌的拼韻IW二Ҏh韌。在调用\T函数ӞJTextPro会在目标串中查找q个正则表达式。但是如何把其中的子表达式取出来呢?\T函数q有一个可选的下标Q取Wn个子表达式的值就写作\T{...}[n]。所以,把放在方括号中的汉字替换Z带调的拼韻I可以查找“\[(\E)\]”,替换为“\T{\1}[1]?<br /><br /><br /><br /><br /><img src ="http://m.tkk7.com/zhugf000/aggbug/23414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2005-12-12 09:16 <a href="http://m.tkk7.com/zhugf000/archive/2005/12/12/23414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>减少全局竞争性同步,提高应用的垂直扩展能?/title><link>http://m.tkk7.com/zhugf000/archive/2005/12/12/23411.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Mon, 12 Dec 2005 01:05:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2005/12/12/23411.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/23411.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2005/12/12/23411.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/23411.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/23411.html</trackback:ping><description><![CDATA[<P>减少全局竞争性同步,提高应用的垂直扩展能?/P> <P>垂直扩展Q简单的_是当单一pȝg升扩展Ӟ如增加CPUQ内存,应用E序能够随之U性提高业务处理能力?BR>多线E是服务?Java 应用的标准处理方式,其优点不用赘q。本文要讨论的是Q如何在设计阶段降低多线E之间的竞争性同步开销?/P> <P>假设一个Web应用Q需要ؓ当前用户l护在线用户信息。此用户信息列表会放?Application 范围的一?Map 中,那么我们增加或删除一个在U用L操作会是q样Q?BR>Map clientMap = ...// from Application Context<BR>synchronized(clientMap){<BR> clientMap.put(clientId,clientObject);<BR>}<BR>q是一个典型的全局同步代码Q当q发U程增加Ӟq部分代码就有可能会存在潜在垂直扩展瓉?/P> <P>最单解军_法:?ConcurrentHashMap?BR>ConcurrentHashMap的多U程下的表现要比HashMap好的多,可以做到随着U程数增长性能基本保持E_?BR>参见Q?A >http://www-128.ibm.com/developerworks/cn/java/j-jtp07233/index.html</A><BR>?ConcurrentHashMap 的分析,参见Q?A >http://www-128.ibm.com/developerworks/cn/java/j-jtp08223/index.html</A></P> <P><BR>?ConcurrentMap/ConcurrentLinkedQueue 不能帮助我们的情况下Q我们需要明设计以避免全局竞争?BR>基本原则是:<BR>1 预分配,降低争用出现的频率?BR>2 降低锁的_度Q将全局竞争变ؓ局部竞争?/P> <P>预分配策略示例:<BR>对于一在线交易处理pȝQ需要ؓ每个交易生成交易水P假设有多C易服务器按照集群方式配置Q同时提供服务。那么需要在交易服务器之间进行同步,以保证交易流水号的正常增ѝ?BR>一U处理方式ؓQ在数据库中保存当前交易水L最高|每台机器一ơ预分配1000水Q内部采用线E同步进行分配,用完再从数据库分配。这里数据库充当了全局存储和全局同步工具Q如果每来一条交易,p问一ơ数据库Q考虑到数据库同步和事务的负担Q这里会成ؓ严重的性能瓉?/P> <P>降低锁粒度策略示例:<BR>1 ConcurrentHashMap 本n是个很好的模范。它采用32颗锁Q来代替普?HashMap 的单颗对象锁?BR>2 对于数据库中q发大的表,可以考虑表U锁改ؓ行锁,提高q发性?BR><FONT size=1><BR>暂时想不hCZQ有I再?/FONT></P><img src ="http://m.tkk7.com/zhugf000/aggbug/23411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2005-12-12 09:05 <a href="http://m.tkk7.com/zhugf000/archive/2005/12/12/23411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDK 1.5 对超大字W集的支?/title><link>http://m.tkk7.com/zhugf000/archive/2005/12/09/23108.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Fri, 09 Dec 2005 03:27:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2005/12/09/23108.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/23108.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2005/12/09/23108.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/23108.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/23108.html</trackback:ping><description><![CDATA[<P><STRONG>JDK 1.5 对超大字W集的支?/STRONG></P> <P><STRONG>Unicode 与超大字W集</STRONG><BR>国标 GB18030 规定?字节扩展部分Q这部分区域目前?Unicode 规范中作为CJK Ext B区存在,卛_说的中文大字符集。这部分区域~码?\U20000 - \U2A6D6?/P> <P> </P> <P><STRONG>UTF-16与Java String/Character 对象</STRONG><BR>一个完整的 Unicode 字符?代码?CodePointQ而一?Java char ?代码单元 code unit?BR>String 对象以UTF-16保存 Unicode 字符Q需要用2个字W表CZ?大字符集的汉字Q这q种表示方式UC?SurrogateQ第一个字W叫 Surrogate HighQ第二个是 Surrogate Low?/P> <P>判断一个char是否?Surrogate 区的字符Q用 Character?isHighSurrogate()/isLowSurrogate()Ҏ?BR>从两个Surrogate High/Low 字符Q返回一个完整的 Unicode CodePoint ?Character.toCodePoint()/codePointAt()Ҏ?/P> <P>一?Code Point Q可能需要一个也可能需要两个char表示Q因此不能直接?CharSequence.length()Ҏ直接q回一个字W串到底有多个汉字Q而需要用String.codePointCount()/Character.codePointCount()?/P> <P>要定位字W串中的WN个字W,不能直接?N 作ؓ偏移量,而需要从字符串头部依ơ遍历得刎ͼ需要用String/Character.offsetByCodePoints() Ҏ?/P> <P>从字W串的当前字W,扑ֈ上一个字W,也不能直接用offset -- 实现Q而需要用 String.codePointBefore()/Character.codePointBefore()Q或?String/Character.offsetByCodePoints()</P> <P>从当前字W,找下一个字W,不能直接?offset ++ 实现Q需要判断当?CodePoint 的长度后Q再计算得到Q或?String/Character.offsetByCodePoints() ?/P> <P><BR><STRONG>Swing ?大字符集的支持<BR></STRONG>JTextPane增加了对 大字符集的支持Q只要设|字体正,可以显C和~辑大字符集?BR></P><img src ="http://m.tkk7.com/zhugf000/aggbug/23108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2005-12-09 11:27 <a href="http://m.tkk7.com/zhugf000/archive/2005/12/09/23108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 多线E或内存泄漏~陷排查的一些经?/title><link>http://m.tkk7.com/zhugf000/archive/2005/12/07/22890.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Wed, 07 Dec 2005 09:07:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2005/12/07/22890.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/22890.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2005/12/07/22890.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/22890.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/22890.html</trackback:ping><description><![CDATA[<P><STRONG>Java 多线E或内存泄漏~陷排查的一些经?/STRONG></P> <P><BR><STRONG>JVM Thread DUMP 基本?/STRONG><BR>Windows 下用Ctrl-Break,Unix 下用 kill -3 <pid> 的命令让JVM输出 thread dump?BR>每隔几秒 thread dump 一ơ,多做几次Q分析比较?/P> <P><STRONG>Thread Dump分析的一些经?BR></STRONG>1 扑ևq几ơThread dump 文g中,有哪?Java Thread 处于长时间等待状态,很有可能是问题之所在?BR>2 如果Java U程{在某些不可能出错的地方Q如 java.lang.XXX/java.util.XXX对象的某个方法,则很有可能是因ؓ出现?OutOfMemoryError 异常Q原因不外乎是JVM 堆内存过或出现内存泄漏?BR>3 对于死锁Q最直接的表现就是至两个线E长旉{待怺持有的对象(每个U程所持有的对象和它当前等待的对象都可以从 dump 中看刎ͼ?BR>4 对于d@环,要辅助CPU占用率确定;如果发现CPU臛_一颗用率?00%Qƈ且有U程长时间位于用户代码处Q则很有可能是死循环引v?/P> <P><BR><STRONG>多线E缺h?BR></STRONG>对于Java死锁问题很少出现Q多U程讉K变量时冲H很常见?BR>一般出在多U程׃n同一对象实例如全局MapQServlet,InterceptorQ或如多U程同时讉K某个静态方法,而此静态方法不巧又讉K另一个静态变量?BR>q类问题自测发现不了Q在q发压力试时才能发现。如果代码的入口查做得好Q多半会抛出一些莫名其妙的异常Q要不然׃出现正常q行但数据库记录不对的情c?BR>对这U问题,q无多好的办法解冻I主要q是靠看异常堆栈和静态代码分析来解决?BR><BR><BR><STRONG>内存泄漏排查</STRONG><BR>一般用商用辅助工具排查Q但有可能出现在JVM heap dump 模式下,q行极度~慢的情c?BR>W笨曄用过一个非常简单的工具Q效果不错,它可以做到在不媄响jvm 执行速度的情况下Q做heap dumpQ然后对dump出的文gq行排序Q检查即可?/P> <P>heapprofile(<A >http://www.virtualmachine.de/</A>)</P> <P> </P><img src ="http://m.tkk7.com/zhugf000/aggbug/22890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2005-12-07 17:07 <a href="http://m.tkk7.com/zhugf000/archive/2005/12/07/22890.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>With or Without EJB?http://m.tkk7.com/zhugf000/archive/2005/12/07/22878.htmlW笨W笨Wed, 07 Dec 2005 07:54:00 GMThttp://m.tkk7.com/zhugf000/archive/2005/12/07/22878.htmlhttp://m.tkk7.com/zhugf000/comments/22878.htmlhttp://m.tkk7.com/zhugf000/archive/2005/12/07/22878.html#Feedback2http://m.tkk7.com/zhugf000/comments/commentRss/22878.htmlhttp://m.tkk7.com/zhugf000/services/trackbacks/22878.htmlWith or Without EJB?


EJB q行时所享受?J2EE 基础服务

1 参与AppServer 提供分布式事务管?JTA,JTS)?BR>2 AppServer 提供高性能通讯框架(ZRMI ?IIOP实现)和大q发处理?BR> 1) AppServer ?WebLogic/WebSphere 替换?Sun 标准 RMI 实现Q基于著名的多线E阻塞IOQ,国内?Apusic 4 则基于纯 NIO ?IIOP通讯协议实现EJB q程通讯?
 2) AppServer 提供 EJB 实例池、请求队列、执行线E池{等服务?/P>

3 AppServer 提供透明 EJB 集群理Q负载均衡、故障恢复)Q保证应用的处理能力能够水^扩展?BR>4 J2EE 安全体系
5 AppServer Ҏ的附加增值服?BR> 1) ?WebLogic WTC EJBQ可实现从TUXEDO Service(C语言) 高性能讉K EJB?/P>

 


大型目所x的重?/STRONG>

对于大型目如全国集中这一U别而言Q它所x的重炚w险反而是pȝ的性能、吞吐量、稳定性、高可用性这L一些基本属性,q里q说具体的业务功能׃重要Q而是与上q的基本属性相比,业务功能可以说是相对的不重要?BR>基本属性如果有某一Ҏ有达刎ͼ直接后果是目p|Q或者运行时存在高风险?BR>业务功能则主要是堆时间、堆人、堆代码、堆试人员的问题,如果实在来不及了Q那放到第二期d好了Q不影响L律么?/P>

对于大型目而言Q采用新技术的x点主要是Q?BR>1 能否满基本质量属性,无重大运行时风险?BR>比如_数据讉K层,从性能和稳定性角度而言Q还直接采?JDBC ~码合适,最多采用SQL映射型JDO。对于带~冲的JDO实现则不宜采用,会带来水qx展和E_性风险?/P>

2 目l相关h员是否有此技术的l验Q最好不要付出学习成本,避免因不熟悉所带来的风险?/P>

 


EJB ?IoC 框架?Spring 的定位比?/STRONG>

Spring IoC/Context/AOP 可以认ؓ是一个代码组l?Assembler)框架Q关注代码如何组l和去耦?/P>

EJB 则是q行l构Q关注我们的应用如何q行Q如何做集群Q系l计资源如何分配等{?BR>EJB 3 的改q主要还是从代码l织角度做出的,对于 EJB q行时架构ƈ没有多少变化Q如果说错了Q还h正)QBEA q有q将 EJB 3的代码翻译ؓ EJB 2.1 q行时架构的考虑Q参?BEA 的关?EJB 3 的一文?A >http://www.javaworld.com/javaworld/jw-08-2004/jw-0809-ejb_p.htmlQ?BR>
从上q角度来看,EJB ?Spring 是从不同的角度看待应用,我们完全可以做到?Spring l织代码实现EJB?/P>


With or Without EJB?
从上q讨论可以看出,用Springq是用EJBq不是个问题Q最l还是看用户的实际需求而定。小Web目多半不关注性能、ƈ发、集等{属性,Z开发过E简单和学习成本的考虑Q完全可以不用EJBQ而大型项目可能还是得用EJB?BR>



W笨 2005-12-07 15:54 发表评论
]]>
Java ?C 性能比较的一些经验数?/title><link>http://m.tkk7.com/zhugf000/archive/2005/12/02/22257.html</link><dc:creator>W笨</dc:creator><author>W笨</author><pubDate>Fri, 02 Dec 2005 08:17:00 GMT</pubDate><guid>http://m.tkk7.com/zhugf000/archive/2005/12/02/22257.html</guid><wfw:comment>http://m.tkk7.com/zhugf000/comments/22257.html</wfw:comment><comments>http://m.tkk7.com/zhugf000/archive/2005/12/02/22257.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/zhugf000/comments/commentRss/22257.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/zhugf000/services/trackbacks/22257.html</trackback:ping><description><![CDATA[<P>Java ?C 性能比较的一些经验数?BR><BR>太细的数据也拿不刎ͼ必须要针对具体^台和JVM</P> <P><STRONG>基本代码执行</STRONG><BR>Java与C?1:3-1:5左右Q在Intelq_上用JDK1.4得?BR>JNI不快Q一ơ基本JNI调用差不多等于一ơJavaҎ调用Q未考虑大数据量传输Q?/P> <P><STRONG>数据库访?/STRONG><BR>JDBC与数据库本地接口差距较大Q差不多??个数量左右Q或更多。可以认为在1:10 - 1:50之间</P> <P><STRONG>socket|络传输</STRONG><BR>Java要分普通多U程和NIO方式<BR>多线E方式,q发受限Q一般不会超q?50-200个ƈ发,再多性能不会增加。这U方式下Q网l传输性能与C差距可以认ؓ?个数量左右Q即1:10-1:30?BR>NIO方式Qƈ发不错,能够支持到几千个q发Q性能差距些Q可以做到在1:3 -- 1:5 左右?BR>C 通过select/poll/epoll技术,q发10000没有多少问题Qƈ且通过Zero-Copy技术,可以避开Java 所无法避免~冲区复?Java->C~冲区复?的问题?/P> <P>ȝ来看QJava与C在普通多层Web应用斚wQ差距可以认为在1个数量左右Q关键应用如TP Monitor目前q无法用Java?BR></P><img src ="http://m.tkk7.com/zhugf000/aggbug/22257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/zhugf000/" target="_blank">W笨</a> 2005-12-02 16:17 <a href="http://m.tkk7.com/zhugf000/archive/2005/12/02/22257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中文&~码问题结http://m.tkk7.com/zhugf000/archive/2005/10/09/15068.htmlW笨W笨Sun, 09 Oct 2005 08:52:00 GMThttp://m.tkk7.com/zhugf000/archive/2005/10/09/15068.htmlhttp://m.tkk7.com/zhugf000/comments/15068.htmlhttp://m.tkk7.com/zhugf000/archive/2005/10/09/15068.html#Feedback10http://m.tkk7.com/zhugf000/comments/commentRss/15068.htmlhttp://m.tkk7.com/zhugf000/services/trackbacks/15068.html阅读全文

W笨 2005-10-09 16:52 发表评论
]]>
վ֩ģ壺 wwwƵ| һav| 99re6߾Ʒѹۿ| 㽶þһ| Ļ߹ۿ| ߹ۿվ| þҹƵ| һ| һëƬѲһ| vaþþþ| ۾ƷҹӰ| ޳AVƬ߹ۿ| 鸣ۺĻһƵ1 | ˮƵ߹ۿѲŸ | ŮѾƷëƬ| ˳ëƬ߲| ޹ƷȾþ| ݺɫúݺݺۺ | ޳AVƬ߳ˮ| һɫƬ| Ƶ| þþƷž޾Ʒ| ޸߲| vaþþþúݺ| AVƬ߹ۿ| A뾫ƷAA| 鶹紫ýƷ| | ޾ƷƵѿ| ޹Ʒþþþվ| ޳AVƬ߹ۿ| ˮһ| ޹˾þþƷ| רVAV| þþþ޾Ʒϵ| þþƷavĻ| avŮӰ| ޾Ʒѹۿ| ޾Ʒ߲| ޹Ƶ| Ļ99|