﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-zzzhc</title><link>http://www.blogjava.net/zzzhc/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 21 Apr 2026 06:29:52 GMT</lastBuildDate><pubDate>Tue, 21 Apr 2026 06:29:52 GMT</pubDate><ttl>60</ttl><item><title>jk的小毛病</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25247.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25247.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25247.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25247.html</trackback:ping><description><![CDATA[apache 2.0.55<br />jk 1.2.15<br /><br />httpd.conf中设置JkMount /pay/* paycore<br />当form的action(如/pay/do/%ab%df123456)已经用url编码编码过后再提交时，jk无法识别,不能正确转化到对应的tomcat上.<img src ="http://www.blogjava.net/zzzhc/aggbug/25247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 17:32 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]docbook2pdf</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25215.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25215.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25215.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25215.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25215.html</trackback:ping><description><![CDATA[<div><p>由docbook生成pdf,且基本上没有中访问题的简单方法:</p> <p>将hibernate文档部分源码(:pserver:anonymous@cvs.sourceforge.net:/cvsroot/hibernate下的doc/reference)取下,将zh-cn目录下的xml文件用自已的代替,修改zh-cn/styles/fopdf.xsl,将与hibernate相关的部分改为自已的内容,主要是version和logo,通过在文件中查找hibernate很容易找得到,用原来的fopdf.xsl生成的pdf的subtitle为乱码,将fopdf.xsl文件中的</p> <p>&lt;fo:block font-family=&quot;Helvetica&quot; font-size=&quot;22pt&quot; padding-before=&quot;10mm&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;bookinfo/subtitle&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fo:block&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fo:block font-family=&quot;Helvetica&quot; font-size=&quot;12pt&quot; padding=&quot;10mm&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;bookinfo/releaseinfo&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fo:block&gt;</p> <p>修改为</p> <p>&lt;fo:block font-family=&quot;simsun&quot; font-size=&quot;22pt&quot; padding-before=&quot;10mm&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;bookinfo/subtitle&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fo:block&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fo:block font-family=&quot;simsun&quot; font-size=&quot;12pt&quot; padding=&quot;10mm&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;xsl:value-of select=&quot;bookinfo/releaseinfo&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/fo:block&gt;</p> <p>换一下subtitle的字体,就不会有乱码了.删除en目录,修改一下build.xml,去掉&lt;antcall target=&quot;lang.all&quot;&gt;&lt;param name=&quot;lang&quot; value=&quot;en&quot;/&gt;&lt;/antcall&gt;,只生成中文结果.</p> <p>有点难受的是标点还是有可能会出现在句首.</p> <p>参考:</p> <p><a href="http://www.donews.net/limodou/archive/2004/04/01/9917.aspx">http://www.donews.net/limodou/archive/2004/04/01/9917.aspx</a></p> <p><a href="http://www.blogcn.com/user6/caoxg/blog/2402234.html">http://www.blogcn.com/user6/caoxg/blog/2402234.html</a></p></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+docbook2pdf&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!106.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!106.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]fop转换docbook figure的一个小问题</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25214.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25214.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25214.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25214.html</trackback:ping><description><![CDATA[<div><p>用figure表示图形,再用fop转换成pdf时,如果图片的大小比pdf的一页的大小还大时,fop会出错,拒绝工作,它不会把图片缩小一点的,自已把图片缩小一点就可以了.害我找了半天才发现原因,晕啊.</p></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+fop%e8%bd%ac%e6%8d%a2docbook+figure%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8f%e9%97%ae%e9%a2%98&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!121.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!121.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]状态机编译器</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25213.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25213.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25213.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25213.html</trackback:ping><description><![CDATA[<div><p><a href="http://smc.sourceforge.net">smc</a>源自于 Bob Martin 的状态机编译器,能根据定义文件生成c++,java,tcl,vb.net,c#状态机.</p> <p>定义文件一般格式</p> <p>当前状态</p> <p>{</p> <p>状态变迁&nbsp; 变迁后状态 </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 变迁时执行的动作</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p> <p>}</p></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+%e7%8a%b6%e6%80%81%e6%9c%ba%e7%bc%96%e8%af%91%e5%99%a8&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!123.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!123.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]hibernate xml映射</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25212.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25212.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25212.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25212.html</trackback:ping><description><![CDATA[<div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于没有外键关系的简单表,hbm文件中不要做修改就能映射成dom4j的Element,默认每个属性都映射为一个node;有外键关系的要在many-to-one中加入 embed-xml=&quot;false&quot;,要不的话经常会造成堆栈溢出或者dom4j试图给一个节点设置多个父节点.</div>
<div>简单测试:</div>
<div>&lt;?xml version=&quot;1.0&quot;?&gt;<br>&lt;!DOCTYPE hibernate-mapping PUBLIC <br>&nbsp;&quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot;<br>&nbsp;&quot;<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>&quot;&gt;<br>&lt;hibernate-mapping <br>&nbsp;package=&quot;test&quot;&gt;<br>&nbsp;<br>&nbsp;&lt;class name=&quot;Xml&quot; table=&quot;xml&quot; lazy=&quot;true&quot; node=&quot;xml&quot;&gt;<br>&nbsp;&nbsp;&lt;id name=&quot;id&quot; column=&quot;id&quot; type=&quot;long&quot; node=&quot;@id&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;generator class=&quot;native&quot;/&gt;<br>&nbsp;&nbsp;&lt;/id&gt;<br>&nbsp;&nbsp;&lt;property name=&quot;name&quot; column=&quot;name&quot; not-null=&quot;true&quot; length=&quot;250&quot; node=&quot;@name&quot;/&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;bag name=&quot;subs&quot; table=&quot;sub&quot; inverse=&quot;true&quot; node=&quot;subs&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;key column=&quot;parent&quot; /&gt;<br>&nbsp;&nbsp;&nbsp;&lt;one-to-many class=&quot;Sub&quot; node=&quot;sub&quot;/&gt;<br>&nbsp;&nbsp;&lt;/bag&gt;<br>&nbsp;&lt;/class&gt;<br>&nbsp;<br>&lt;/hibernate-mapping&gt;</div>
<div>&nbsp;</div>
<div>&lt;?xml version=&quot;1.0&quot;?&gt;<br>&lt;!DOCTYPE hibernate-mapping PUBLIC <br>&nbsp;&quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot;<br>&nbsp;&quot;<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>&quot;&gt;<br>&lt;hibernate-mapping <br>&nbsp;package=&quot;test&quot;&gt;<br>&nbsp;<br>&nbsp;&lt;class name=&quot;Sub&quot; table=&quot;sub&quot; lazy=&quot;true&quot; node=&quot;sub&quot;&gt;<br>&nbsp;&nbsp;&lt;id name=&quot;id&quot; column=&quot;id&quot; type=&quot;long&quot; node=&quot;@id&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;generator class=&quot;native&quot;/&gt;<br>&nbsp;&nbsp;&lt;/id&gt;<br>&nbsp;&nbsp;&lt;property name=&quot;name&quot; column=&quot;name&quot; not-null=&quot;true&quot; length=&quot;250&quot; node=&quot;@name&quot;/&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;many-to-one name=&quot;parent&quot; column=&quot;parent&quot; class=&quot;Xml&quot; embed-xml=&quot;false&quot;/&gt;<br>&nbsp;&lt;/class&gt;<br>&nbsp;<br>&lt;/hibernate-mapping&gt;</div>
<div>&nbsp;</div>
<div>复杂一点的:</div>
<div>&lt;?xml version=&quot;1.0&quot;?&gt;<br>&lt;!DOCTYPE hibernate-mapping PUBLIC <br>&nbsp;&quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot;<br>&nbsp;&quot;<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>&quot;&gt;<br>&lt;hibernate-mapping <br>&nbsp;package=&quot;test&quot;&gt;</div>
<div>&nbsp;&lt;class name=&quot;Dir&quot; table=&quot;dir&quot; lazy=&quot;true&quot;&gt;<br>&nbsp;&nbsp;&lt;id name=&quot;id&quot; column=&quot;id&quot; type=&quot;long&quot; node=&quot;@id&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;generator class=&quot;native&quot;/&gt;<br>&nbsp;&nbsp;&lt;/id&gt;<br>&nbsp;&nbsp;&lt;property name=&quot;name&quot; column=&quot;name&quot; not-null=&quot;true&quot; length=&quot;50&quot; node=&quot;@name&quot;/&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;many-to-one name=&quot;parent&quot; column=&quot;parent_id&quot; class=&quot;Dir&quot; node=&quot;@parentId&quot; embed-xml=&quot;false&quot;/&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;bag name=&quot;children&quot; inverse=&quot;true&quot; cascade=&quot;all&quot; node=&quot;dirs&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;key column=&quot;parent_id&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&lt;one-to-many class=&quot;Dir&quot;/&gt;<br>&nbsp;&nbsp;&lt;/bag&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;bag name=&quot;files&quot; inverse=&quot;true&quot; table=&quot;file&quot; node=&quot;files&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;key column=&quot;parent_id&quot; /&gt;<br>&nbsp;&nbsp;&nbsp;&lt;one-to-many class=&quot;File&quot;/&gt;<br>&nbsp;&nbsp;&lt;/bag&gt;<br>&nbsp;&nbsp;<br>&nbsp;&lt;/class&gt;<br>&nbsp;<br>&lt;/hibernate-mapping&gt;</div>
<div>&nbsp;</div>
<div>&lt;?xml version=&quot;1.0&quot;?&gt;<br>&lt;!DOCTYPE hibernate-mapping PUBLIC <br>&nbsp;&quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot;<br>&nbsp;&quot;<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>&quot;&gt;<br>&lt;hibernate-mapping <br>&nbsp;package=&quot;test&quot;&gt;<br>&nbsp;<br>&nbsp;&lt;class name=&quot;File&quot; table=&quot;file&quot; lazy=&quot;true&quot;&gt;<br>&nbsp;&nbsp;&lt;id name=&quot;id&quot; column=&quot;id&quot; type=&quot;long&quot; node=&quot;@id&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;generator class=&quot;native&quot;/&gt;<br>&nbsp;&nbsp;&lt;/id&gt;<br>&nbsp;&nbsp;&lt;property name=&quot;title&quot; column=&quot;title&quot; not-null=&quot;true&quot; length=&quot;250&quot;/&gt;<br>&nbsp;&nbsp;&lt;property name=&quot;content&quot; column=&quot;content&quot; not-null=&quot;true&quot; type=&quot;string&quot; <br>&nbsp;&nbsp;&nbsp;lazy=&quot;true&quot; length=&quot;10000&quot;/&gt;<br>&nbsp;&nbsp;&lt;many-to-one name=&quot;parent&quot; column=&quot;parent_id&quot; class=&quot;Dir&quot; not-null=&quot;true&quot; node=&quot;@parentId&quot; embed-xml=&quot;false&quot;/&gt;<br>&nbsp;&lt;/class&gt;<br>&nbsp;<br>&lt;/hibernate-mapping&gt;</div>
<div>&nbsp;</div></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+hibernate+xml%e6%98%a0%e5%b0%84&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!124.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!124.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]百度歌曲MP3 top 500批量下载</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25211.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25211.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25211.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25211.html</trackback:ping><description><![CDATA[<div><div>参考<a href="http://www.wespoke.com/archives/000978.html">http://www.wespoke.com/archives/000978.html</a>,用python重写了一下,可以指定目录,指定保存路径</div>
<div>#! /usr/bin/python<br>import urllib, re,sys,os,os.path,getopt</div>
<div>threadNum = 20<br>savePath = &quot;mp3-2&quot;<br>optlist,left = getopt.getopt(sys.argv[1:], &quot;t:d:&quot;)<br>for opt in optlist:<br>&nbsp;&nbsp;&nbsp; print opt<br>&nbsp;&nbsp;&nbsp; if (opt[0]=='-t'):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; threadNum = int(opt[1])<br>&nbsp;&nbsp;&nbsp; if (opt[0]=='-d'):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; savePath = opt[1]</div>
<div>print &quot;threadnum=&quot;+str(threadNum)<br>print &quot;savePath=&quot;+savePath</div>
<div>if (not os.path.exists(savePath)):<br>&nbsp;&nbsp;&nbsp; os.makedirs(savePath)<br>base = &quot;<a href="http://list.mp3.baidu.com/topso/">http://list.mp3.baidu.com/topso/</a>&quot;<br>url = &quot;<a href="http://list.mp3.baidu.com/topso/mp3topsong.html">http://list.mp3.baidu.com/topso/mp3topsong.html</a>&quot;</div>
<div>def getUrlData(url):<br>&nbsp;&nbsp;&nbsp; num = 0<br>&nbsp;&nbsp;&nbsp; while (num&lt;3):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num = num+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f = urllib.urlopen( url )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = f.readlines()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.close()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return data<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br>&nbsp;&nbsp;&nbsp; return []<br>&nbsp;&nbsp;&nbsp; <br>data = getUrlData(url)<br>pattern = re.compile( r'href=&quot;(.*?tsomp3.htm)' )<br>target = [];<br>for line in data:<br>&nbsp;&nbsp;&nbsp; if ( line.find( &quot;tsomp3.htm&quot; )!=-1 ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; items = pattern.findall( line )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for item in items:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.append( item )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>print &quot;find &quot;,len( target ),&quot; mp3 &quot;</div>
<div>mp3Pattern = re.compile( r'href=&quot;(.*?\.mp3)&quot;' )<br>titlePattern = re.compile( r'&lt;title&gt;.*?_(.*?)\s+&lt;/title&gt;' )</div>
<div>import threading</div>
<div>lock = threading.Lock()</div>
<div>def getMp3():<br>&nbsp;&nbsp;&nbsp; while True:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = &quot;&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock.acquire()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( len( target )&gt;0 ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = target[0]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.remove( t )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock.release()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempUrl = base+t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = getUrlData(tempUrl)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mp3Target = []<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title = &quot;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for line in data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( line.find( &quot;title&quot; )!=-1 ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m = titlePattern.search( line )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( m ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title = m.group( 1 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for line in data:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( len( mp3Target )&gt;10 ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( line.find( &quot;.mp3&quot; )!=-1 ):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; items = mp3Pattern.findall( line )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for item in items:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mp3Target.append( item )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename = savePath+&quot;/&quot;+title+&quot;.mp3&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for t in mp3Target:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;try to get &quot;+title+&quot;.mp3,url=&quot;,t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret = urllib.urlretrieve( t, filename )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size = os.path.getsize(filename)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (size&gt;500*1024):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;done:&quot;+title+&quot;.mp3&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;fail to get &quot;+title+&quot;.mp3 with url &quot;+t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass</div>
<div>for num in range(threadNum):<br>&nbsp;&nbsp;&nbsp; thread = threading.Thread( None, getMp3 )<br>&nbsp;&nbsp;&nbsp; thread.start()<br>&nbsp;&nbsp;&nbsp; print &quot;start thread &quot;,num<br>&nbsp;&nbsp;&nbsp; <br></div></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+%e7%99%be%e5%ba%a6%e6%ad%8c%e6%9b%b2MP3+top+500%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!125.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!125.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]apache(2.0.55) rewrite+proxy</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25210.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25210.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25210.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25210.html</trackback:ping><description><![CDATA[<div>apache(2.0.55) rewrite+proxy 至少需要三个module: rewrite_module, proxy_module, proxy_http_module 配置文件片断: LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/proxy_http.so rewriteengine on #注意 不是proxyrequest proxyrequests on #ProxyPass ^/(.*)$ http://host/$1 rewriterule ^/(.*)$ http://host/$1 [P,L] apache已安装后要新添加module可以用apache安装目录/bin下的apxs ,apxs -i -a –c foo_module.c 参考资料: apxs - APache扩展工具 http://www.uplinux.com/download/doc/apache/ApacheManual/programs/apxs.html Apache 重写规则的常见应用 (rewrite) http://fanqiang.chinaunix.net/a6/b1/20010905/0800001238.html</div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+apache(2.0.55)+rewrite%2bproxy&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!128.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!128.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]简单图形验证码的识别</title><link>http://www.blogjava.net/zzzhc/archive/2005/12/23/25209.html</link><dc:creator>zzzhc</dc:creator><author>zzzhc</author><pubDate>Fri, 23 Dec 2005 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/zzzhc/archive/2005/12/23/25209.html</guid><wfw:comment>http://www.blogjava.net/zzzhc/comments/25209.html</wfw:comment><comments>http://www.blogjava.net/zzzhc/archive/2005/12/23/25209.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/zzzhc/comments/commentRss/25209.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzzhc/services/trackbacks/25209.html</trackback:ping><description><![CDATA[<div><div>&nbsp;</div>
<div>对于简单的图形验证码(字体规则,没有杂点或杂点容易过滤掉),用模板匹配的方式可以比较容易地识别出来.<br>0.图片黑白化,用1表示有字的像素,0表示无字的像素<br>1.字块分隔,将图片分隔成只包含成单字的最小块<br>2.生成模板,将字块与字符关联<br>3.识别,将新图片分块并与模板匹配</div>
<div>java(jdk1.5)实现:<br>//先运行TemplateCreator创建模板,再运行Recognize2识别<br>//图片数据表示,也用来表示字块<br>package pay365;</div>
<div>import java.awt.image.BufferedImage;<br>import java.io.BufferedReader;<br>import java.io.File;<br>import java.io.FileReader;<br>import java.io.IOException;<br>import java.util.ArrayList;<br>import java.util.Iterator;</div>
<div>public class ImageData {<br>&nbsp;&nbsp;&nbsp; public int[][] data;</div>
<div>&nbsp;&nbsp;&nbsp; public int w;</div>
<div>&nbsp;&nbsp;&nbsp; public int h;</div>
<div>&nbsp;&nbsp;&nbsp; public char code;<br>&nbsp;&nbsp;&nbsp; </div>
<div>&nbsp;&nbsp;&nbsp; public ImageData() {</div>
<div>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public ImageData(BufferedImage bi) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this(bi,new WhiteFilter());<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public ImageData(BufferedImage bi,Filter filter) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h = bi.getHeight();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w = bi.getWidth();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = new int[h][w];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int p = bi.getRGB(j, i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[i][j] = p;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filter.doFilter(data);<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public ImageData[] split() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list = new ArrayList();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIterator ite = new ImageIterator(this);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (ite.hasNext()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.add(ite.next());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (ImageData[]) list.toArray(new ImageData[0]);<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; int skipEmpty(int begin, boolean isX, int value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isX) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = begin; i &lt; w; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; h; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[j][i] != value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = begin; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[i][j] != value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; int skipEntity(int begin, boolean isX, int value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isX) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = begin; i &lt; w; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; h; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[j][i] == value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == h - 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = begin; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[i][j] == value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (j == w - 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; class ImageIterator implements Iterator {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData next;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public ImageIterator(ImageData ia) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.ia = ia;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public boolean hasNext() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (next != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next = getNext();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return next != null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData getNext() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x1 = skipEmpty(x, true, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (x1 == -1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x2 = skipEntity(x1, true, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (x2 == -1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2 = w;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x = x2;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y1 = skipEmpty(0, false, 0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (y1 == -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y2 = skipEntity(y1, false, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (y2 == -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y2 = h;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ia.clone(x1, y1, x2 - x1, y2 - y1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Object next() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData temp = next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; next = null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void remove() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; ImageData clone(int x, int y, int w0, int h0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia = new ImageData();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.w = w0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.h = h0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.data = new int[ia.h][ia.w];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h0; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w0; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.data[i][j] = data[i + y][j + x];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ia;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public void show() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print((data[i][j] == 1 ? &quot;1&quot; : &quot; &quot;) + &quot;&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public int hashCode() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int code = w ^ h;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[i][j] == 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; code ^= count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return code;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public boolean equals(Object obj) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this == obj) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (obj instanceof ImageData) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData o = (ImageData) obj;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (o.h != h)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (o.w != w)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (o.data[i][j] != data[i][j])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public static ImageData[] decodeFromFile(String path) throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader reader = new BufferedReader(new FileReader(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new File(path)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String line;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list = new ArrayList();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((line = reader.readLine()) != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia = decode(line);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ia != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.add(ia);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (ImageData[]) list.toArray(new ImageData[0]);<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public static ImageData decode(String s) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] ss = s.split(&quot;\\,&quot;, 4);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ss.length != 4)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ss[0].length() != 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia = new ImageData();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.code = ss[0].charAt(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.w = Integer.parseInt(ss[1]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.h = Integer.parseInt(ss[2]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ss[3].length() != ia.w * ia.h) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.data = new int[ia.h][ia.w];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; ia.h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; ia.w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ss[3].charAt(i * ia.w + j) == '1') {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.data[i][j] = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ia.data[i][j] = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ia;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; public String encode() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer sb = new StringBuffer();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.append(code).append(&quot;,&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.append(w).append(&quot;,&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.append(h).append(&quot;,&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; h; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; w; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (data[i][j] == 1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.append('1');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.append('0');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sb.toString();<br>&nbsp;&nbsp;&nbsp; }<br>}</div>
<div>//像素过滤接口<br>package pay365;</div>
<div>public interface Filter {<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; void doFilter(int[][] data);</div>
<div>}</div>
<div>//<br>package pay365;</div>
<div>public abstract class AbstractFilter&nbsp; implements Filter {</div>
<div>&nbsp;&nbsp;&nbsp; public void doFilter(int[][] data) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int h = data.length;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (h&lt;=0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int w = data[0].length;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (w&lt;=0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;h;i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=0;j&lt;w;j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data[i][j] = filter(data[i][j]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; protected abstract int filter(int p);<br>}</div>
<div>//过滤csdn验证码的过滤器<br>package pay365;</div>
<div>public class CsdnFilter extends AbstractFilter {</div>
<div>&nbsp;&nbsp;&nbsp; protected int filter(int p) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return isNotWhite(p)?1:0;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; private boolean isNotWhite(int p) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean b = (p &amp; 0x0ff) == 255 &amp;&amp; (p &gt;&gt; 8 &amp; 0x0ff) == 255<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (p &gt;&gt; 16 &amp; 0xff) == 255;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return !b;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>}</div>
<div>//过滤前景色为白色的过滤器<br>package pay365;</div>
<div>public class WhiteFilter extends AbstractFilter {<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; protected int filter(int p) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isWhite(p)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; private boolean isWhite(int p) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (p &amp; 0x0ff) &gt; 240 &amp;&amp; (p &gt;&gt; 8 &amp; 0x0ff) &gt; 240<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (p &gt;&gt; 16 &amp; 0xff) &gt; 240;<br>&nbsp;&nbsp;&nbsp; }<br>}</div>
<div>//模板创建类<br>package pay365;</div>
<div>import java.awt.image.BufferedImage;<br>import java.io.BufferedReader;<br>import java.io.File;<br>import java.io.InputStreamReader;<br>import java.io.PrintWriter;<br>import java.net.URL;<br>import java.util.HashSet;<br>import java.util.Iterator;<br>import java.util.Set;</div>
<div>import javax.imageio.ImageIO;</div>
<div>public class TemplateCreator {<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param args<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set set = new HashSet();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String url = &quot;<a href="http://passport.csdn.net/member/ShowExPwd.aspx">http://passport.csdn.net/member/ShowExPwd.aspx</a>&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filterClazz = &quot;pay365.CsdnFilter&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length&gt;=1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url = args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length&gt;=2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filterClazz = args[1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter csdnFilter = (Filter) Class.forName(filterClazz).newInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 1; i &lt; 10; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL u = new URL(url);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage bi = ImageIO.read(u);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia2 = new ImageData(bi,csdnFilter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData[] ii = ia2.split();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; ii.length; x++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData imageArr = ii[x];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set.add(imageArr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set.addAll(Arrays.asList(ia2.split()));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(set.size());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter = set.iterator(); iter.hasNext();) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ele = (ImageData) iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ele.show();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(&quot;char:&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s = readLine();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (s.length() == 1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ele.code = s.charAt(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PrintWriter pw = new PrintWriter(new File(&quot;template.data&quot;));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter = set.iterator(); iter.hasNext();) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ele = (ImageData) iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.println(ele.encode());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.flush();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pw.close();<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; private static BufferedReader reader = new BufferedReader(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new InputStreamReader(System.in));</div>
<div>&nbsp;&nbsp;&nbsp; private static String readLine() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return reader.readLine();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &quot;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}</div>
<div><br>//识别类<br>package pay365;</div>
<div>import java.awt.image.BufferedImage;<br>import java.io.File;<br>import java.io.IOException;<br>import java.net.URL;<br>import java.util.ArrayList;<br>import java.util.HashMap;<br>import java.util.Iterator;</div>
<div>import javax.imageio.ImageIO;</div>
<div>public class Recognize2 {</div>
<div>&nbsp;&nbsp;&nbsp; static String url = &quot;<a href="http://passport.csdn.net/member/ShowExPwd.aspx">http://passport.csdn.net/member/ShowExPwd.aspx</a>&quot;;</div>
<div>&nbsp;&nbsp;&nbsp; static Filter filter;</div>
<div>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length &gt;= 1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url = args[0];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filterClazz = &quot;pay365.CsdnFilter&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (args.length &gt;= 2) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filterClazz = args[1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filter = (Filter) Class.forName(filterClazz).newInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int total = 10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; total; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean b = recognize(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;rate:&quot; + (count * 1.0 / total * 100) + &quot;%100&quot;);<br>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; private static boolean recognize(int num) throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedImage bi = ImageIO.read(new URL(url));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIO.write(bi,&quot;png&quot;,new File(num+&quot;.png&quot;));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData ia2 = new ImageData(bi, filter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData[] ii = ia2.split();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList list = new ArrayList();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData[] template = ImageData.decodeFromFile(&quot;template.data&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap map = new HashMap();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; template.length; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.put(template[i], new Character(template[i].code));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; ii.length; x++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageData imageArr = ii[x];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (imageArr.w &gt; 15)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Character c = (Character) map.get(imageArr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (c != null) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.add(c);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s = &quot;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(num + &quot;:&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter = list.iterator(); iter.hasNext();) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Character c = (Character) iter.next();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s += c;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(c);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return s.length() != 0;<br>&nbsp;&nbsp;&nbsp; }</div>
<div>}</div>
<div>&nbsp;</div></div><img src="http://c.spaces.msn.com/CollectionWebService/c.gif?space=zzzhc&page=RSS%3a+%e7%ae%80%e5%8d%95%e5%9b%be%e5%bd%a2%e9%aa%8c%e8%af%81%e7%a0%81%e7%9a%84%e8%af%86%e5%88%ab&referrer=" width=1 height=1 border=0 alt=""><img style="position:absolute" alt="" width="0px" height="0px" src="http://c.msn.com/c.gif?NC=31263&amp;NA=1149&amp;PI=73329&amp;DI=3919&amp;PS=85545"><br>文章来源:<a href='http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!129.entry'>http://spaces.msn.com/members/zzzhc/Blog/cns!1pPbKg7hHgS7AKKQm6CWG1ZQ!129.entry</a><img src ="http://www.blogjava.net/zzzhc/aggbug/25209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzzhc/" target="_blank">zzzhc</a> 2005-12-23 15:13 <a href="http://www.blogjava.net/zzzhc/archive/2005/12/23/25209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>