<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sunshow Life &#187; Java</title>
	<atom:link href="http://blog.sunshow.net/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sunshow.net</link>
	<description>回到最初的美好</description>
	<lastBuildDate>Mon, 16 Aug 2010 03:49:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Tomcat支持SSI和软链接</title>
		<link>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/</link>
		<comments>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 03:23:12 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[链接]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=740</guid>
		<description><![CDATA[一. 启用SSI（Server Side Include） 1. 编辑Tomcat的web.xml，查找SSI，去掉相应的servlet和servlet-mapping的注释，或者也可以去掉filter的，二选一 2. 给相应的Context添加privileged="true"属性 点评：不知道这个SSI有毛用，直接jsp:include多好，而且一启用这个就影响所有的Context 二. 允许软链接 给相应的Context添加allowLinking="true"属性 标签：Context, servlet, Tomcat, 链接 相关日志 [Expression Engine]去除URL里的index.php (0) 更改Permalink (6) 解决Tomcat下Context重复启动 (3) 给Tomcat的Connector设置URIEncoding (1)]]></description>
			<content:encoded><![CDATA[<p>一. 启用SSI（Server Side Include）</p>
<p>1. 编辑Tomcat的web.xml，查找SSI，去掉相应的servlet和servlet-mapping的注释，或者也可以去掉filter的，二选一<br />
2. 给相应的Context添加privileged="true"属性</p>
<p>点评：不知道这个SSI有毛用，直接jsp:include多好，而且一启用这个就影响所有的Context</p>
<p>二. 允许软链接</p>
<p>给相应的Context添加allowLinking="true"属性</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/context/" title="Context" rel="tag">Context</a>, <a href="http://blog.sunshow.net/tag/servlet/" title="servlet" rel="tag">servlet</a>, <a href="http://blog.sunshow.net/tag/tomcat/" title="Tomcat" rel="tag">Tomcat</a>, <a href="http://blog.sunshow.net/tag/%e9%93%be%e6%8e%a5/" title="链接" rel="tag">链接</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2010/06/remove-index-php-from-urls-of-expression-engine/" title="[Expression Engine]去除URL里的index.php (2010-06-17)">[Expression Engine]去除URL里的index.php</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2009/03/modify-permalink/" title="更改Permalink (2009-03-25)">更改Permalink</a> (6)</li>
	<li><a href="http://blog.sunshow.net/2008/06/tomcat-context-repeated-starups/" title="解决Tomcat下Context重复启动 (2008-06-08)">解决Tomcat下Context重复启动</a> (3)</li>
	<li><a href="http://blog.sunshow.net/2008/05/tomcat-connector-uriencoding/" title="给Tomcat的Connector设置URIEncoding (2008-05-30)">给Tomcat的Connector设置URIEncoding</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse 3.4 Released</title>
		<link>http://blog.sunshow.net/2008/06/eclipse-34-released/</link>
		<comments>http://blog.sunshow.net/2008/06/eclipse-34-released/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 05:11:45 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Ganymede]]></category>
		<category><![CDATA[特性]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=607</guid>
		<description><![CDATA[下载：http://www.eclipse.org/downloads/ eclipse 3.4 代号为Ganymede（Ganymede为最大的木星已知卫星，也是第七颗发现的木星卫星，在伽利略发现的卫星中离木星第三近,在希腊神话中 Ganymede是一个特洛伊美人的男孩(一个美少男)，被宙斯带去给众神斟酒）。 新特性：http://www.javaeye.com/news/2713 标签：eclipse, Ganymede, 特性 相关日志 Eclipse 3.2 released (0) 传说中的Eclipse 4？ (3)]]></description>
			<content:encoded><![CDATA[<p>下载：<a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>
<blockquote><p>eclipse 3.4 代号为Ganymede（Ganymede为最大的木星已知卫星，也是第七颗发现的木星卫星，在伽利略发现的卫星中离木星第三近,在希腊神话中 Ganymede是一个特洛伊美人的男孩(一个美少男)，被宙斯带去给众神斟酒）。</p></blockquote>
<p>新特性：<a href="http://www.javaeye.com/news/2713">http://www.javaeye.com/news/2713</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/eclipse/" title="eclipse" rel="tag">eclipse</a>, <a href="http://blog.sunshow.net/tag/ganymede/" title="Ganymede" rel="tag">Ganymede</a>, <a href="http://blog.sunshow.net/tag/%e7%89%b9%e6%80%a7/" title="特性" rel="tag">特性</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2006/07/eclipse-32-released/" title="Eclipse 3.2 released (2006-07-01)">Eclipse 3.2 released</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/03/eclipse-4/" title="传说中的Eclipse 4？ (2008-03-21)">传说中的Eclipse 4？</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2008/06/eclipse-34-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Tomcat下Context重复启动</title>
		<link>http://blog.sunshow.net/2008/06/tomcat-context-repeated-starups/</link>
		<comments>http://blog.sunshow.net/2008/06/tomcat-context-repeated-starups/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 01:57:36 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[appBase]]></category>
		<category><![CDATA[Context]]></category>
		<category><![CDATA[docBase]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[启动]]></category>
		<category><![CDATA[重复]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=599</guid>
		<description><![CDATA[配置了个定时抓取任务，结果总是抓取三次 从Tomcat的log上看到该任务所在的Context有三次启动的过程，计划任务也被创建了三次 问题原来出在Host的appBase设置上，原来的设置是这样的 &#60;Host name=&#34;www.xxx.com&#34; appBase=&#34;/usr/local/projects/xxx/&#34;&#160;&#160; &#160;unpackWARs=&#34;false&#34; autoDeploy=&#34;true&#34;&#160;&#160; &#160;xmlValidation=&#34;false&#34; xmlNamespaceAware=&#34;false&#34;&#62;&#160;&#160; &#160;&#60;Context docBase=&#34;web&#34; path=&#34;&#34; reloadable=&#34;true&#34; workDir=&#34;work&#34;&#62;&#160;&#160; &#160; &#160; &#160;&#60;!-- Others --&#62;&#160;&#160; &#160;&#60;/Context&#62;&#60;/Host&#62;&#160;&#60;Host name=&#34;admin.xxx.com&#34; appBase=&#34;/usr/local/projects/xxx/&#34;&#160;&#160; &#160;unpackWARs=&#34;false&#34; autoDeploy=&#34;true&#34;&#160;&#160; &#160;xmlValidation=&#34;false&#34; xmlNamespaceAware=&#34;false&#34;&#62;&#160;&#160; &#160;&#60;Context docBase=&#34;admin&#34; path=&#34;&#34; reloadable=&#34;true&#34; workDir=&#34;work&#34;&#62;&#160;&#160; &#160; &#160; &#160;&#60;!-- Others --&#62;&#160;&#160; &#160;&#60;/Context&#62;&#60;/Host&#62; 改成不设置appBase，只对指定的Context设置docBase就ok了 &#60;Host name=&#34;www.xxx.com&#34; appBase=&#34;&#34;&#160;&#160; &#160;unpackWARs=&#34;false&#34; autoDeploy=&#34;true&#34;&#160;&#160; &#160;xmlValidation=&#34;false&#34; xmlNamespaceAware=&#34;false&#34;&#62;&#160;&#160; &#160;&#60;Context docBase=&#34;/usr/local/projects/xxx/web&#34; path=&#34;&#34; reloadable=&#34;true&#34; workDir=&#34;work&#34;&#62;&#160;&#160; &#160; &#160; &#160;&#60;!-- Others [...]]]></description>
			<content:encoded><![CDATA[<p>配置了个定时抓取任务，结果总是抓取三次<br />
从Tomcat的log上看到该任务所在的Context有三次启动的过程，计划任务也被创建了三次</p>
<p>问题原来出在Host的appBase设置上，原来的设置是这样的</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">Host</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">www.xxx.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">appBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/usr/local/projects/xxx/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">unpackWARs</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autoDeploy</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">xmlValidation</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">xmlNamespaceAware</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">Context</span><span style="color: Gray;"> </span><span style="color: #00008b;">docBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">web</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">reloadable</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">workDir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">work</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">&lt;!-- Others --&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Context</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Host</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">Host</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">admin.xxx.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">appBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/usr/local/projects/xxx/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">unpackWARs</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autoDeploy</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">xmlValidation</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">xmlNamespaceAware</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">Context</span><span style="color: Gray;"> </span><span style="color: #00008b;">docBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">admin</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">reloadable</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">workDir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">work</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">&lt;!-- Others --&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Context</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Host</span><span style="color: Olive;">&gt;</span></div></div>
<p>改成不设置appBase，只对指定的Context设置docBase就ok了</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">Host</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">www.xxx.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">appBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">unpackWARs</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autoDeploy</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">xmlValidation</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">xmlNamespaceAware</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">Context</span><span style="color: Gray;"> </span><span style="color: #00008b;">docBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/usr/local/projects/xxx/web</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">reloadable</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">workDir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">work</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">&lt;!-- Others --&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Context</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Host</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;<br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">Host</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">admin.xxx.com</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">appBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">unpackWARs</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">autoDeploy</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: #00008b;">xmlValidation</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">xmlNamespaceAware</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">Context</span><span style="color: Gray;"> </span><span style="color: #00008b;">docBase</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/usr/local/projects/xxx/admin</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">reloadable</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">workDir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">work</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #ffa500;">&lt;!-- Others --&gt;</span><span style="color: Gray;"><br />&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Context</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">Host</span><span style="color: Olive;">&gt;</span></div></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/appbase/" title="appBase" rel="tag">appBase</a>, <a href="http://blog.sunshow.net/tag/context/" title="Context" rel="tag">Context</a>, <a href="http://blog.sunshow.net/tag/docbase/" title="docBase" rel="tag">docBase</a>, <a href="http://blog.sunshow.net/tag/tomcat/" title="Tomcat" rel="tag">Tomcat</a>, <a href="http://blog.sunshow.net/tag/%e5%90%af%e5%8a%a8/" title="启动" rel="tag">启动</a>, <a href="http://blog.sunshow.net/tag/%e9%87%8d%e5%a4%8d/" title="重复" rel="tag">重复</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2008/05/tomcat-connector-uriencoding/" title="给Tomcat的Connector设置URIEncoding (2008-05-30)">给Tomcat的Connector设置URIEncoding</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2010/07/tomcat-enable-ssi-and-symbolic-links/" title="Tomcat支持SSI和软链接 (2010-07-21)">Tomcat支持SSI和软链接</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2008/06/tomcat-context-repeated-starups/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>给Tomcat的Connector设置URIEncoding</title>
		<link>http://blog.sunshow.net/2008/05/tomcat-connector-uriencoding/</link>
		<comments>http://blog.sunshow.net/2008/05/tomcat-connector-uriencoding/#comments</comments>
		<pubDate>Fri, 30 May 2008 10:20:16 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Connector]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[URIEncoding]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[编码]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/?p=598</guid>
		<description><![CDATA[&#60;Connector port=&#34;8080&#34;&#160;&#160; &#160; &#160; &#160;#####Other parameters#####&#160;&#160; &#160; &#160; &#160;URIEncoding=&#34;UTF-8&#34;&#160; /&#62; 如果不设置，URL上传递的中文就不能被正确解码 在我测试的情况下即使我预先用URLEncoder进行了encode处理也无法正确解析，折腾了我老半天 标签：Connector, Tomcat, URIEncoding, 中文, 编码 相关日志 Get Recent Comments 2.0.5 (0) [Ubuntu]从安装说起 (1) Java工作环境 (0) Ubuntu 8.04 LTS (0) fcitx or scim? (1)]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><div class="hl-main">&lt;Connector port=&quot;8080&quot;<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;#####Other parameters#####<br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;URIEncoding=&quot;UTF-8&quot;&nbsp; /&gt;</div></div>
<p>如果不设置，URL上传递的中文就不能被正确解码<br />
在我测试的情况下即使我预先用URLEncoder进行了encode处理也无法正确解析，折腾了我老半天</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/connector/" title="Connector" rel="tag">Connector</a>, <a href="http://blog.sunshow.net/tag/tomcat/" title="Tomcat" rel="tag">Tomcat</a>, <a href="http://blog.sunshow.net/tag/uriencoding/" title="URIEncoding" rel="tag">URIEncoding</a>, <a href="http://blog.sunshow.net/tag/%e4%b8%ad%e6%96%87/" title="中文" rel="tag">中文</a>, <a href="http://blog.sunshow.net/tag/%e7%bc%96%e7%a0%81/" title="编码" rel="tag">编码</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2009/03/get-recent-comments-205/" title="Get Recent Comments 2.0.5 (2009-03-30)">Get Recent Comments 2.0.5</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/02/ubuntu%e4%bb%8e%e5%ae%89%e8%a3%85%e8%af%b4%e8%b5%b7/" title="[Ubuntu]从安装说起 (2007-02-05)">[Ubuntu]从安装说起</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2006/07/java%e5%b7%a5%e4%bd%9c%e7%8e%af%e5%a2%83/" title="Java工作环境 (2006-07-19)">Java工作环境</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/04/ubuntu-804-lts/" title="Ubuntu 8.04 LTS (2008-04-25)">Ubuntu 8.04 LTS</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/01/fcitx-or-scim/" title="fcitx or scim? (2008-01-23)">fcitx or scim?</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2008/05/tomcat-connector-uriencoding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>传说中的Eclipse 4？</title>
		<link>http://blog.sunshow.net/2008/03/eclipse-4/</link>
		<comments>http://blog.sunshow.net/2008/03/eclipse-4/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 01:57:13 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.sunshow.net/archives/576.html</guid>
		<description><![CDATA[看来基于Web的应用程序是未来的主流 但是我很怀疑其易用性能否达到或者超越传统IDE？ 谨慎预测在其发布的时候将包括Web和传统在内的两个版本 标签：eclipse, ide, web 相关日志 Eclipse 3.4 Released (0) Eclipse 3.2 released (0) [转]重要的不是技术 (0) Internet Explorer Developer Toolbar (0) IE Web Developer (2)]]></description>
			<content:encoded><![CDATA[<p><a href='http://blog.sunshow.net/wp-content/uploads/2008/03/e4-web.png' title='eclipse-e4'><img src='http://blog.sunshow.net/wp-content/uploads/2008/03/e4-web.thumbnail.png' alt='eclipse-e4' /></a></p>
<p>看来基于Web的应用程序是未来的主流<br />
但是我很怀疑其易用性能否达到或者超越传统IDE？<br />
谨慎预测在其发布的时候将包括Web和传统在内的两个版本</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/eclipse/" title="eclipse" rel="tag">eclipse</a>, <a href="http://blog.sunshow.net/tag/ide/" title="ide" rel="tag">ide</a>, <a href="http://blog.sunshow.net/tag/web/" title="web" rel="tag">web</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2008/06/eclipse-34-released/" title="Eclipse 3.4 Released (2008-06-26)">Eclipse 3.4 Released</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/07/eclipse-32-released/" title="Eclipse 3.2 released (2006-07-01)">Eclipse 3.2 released</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/04/%e8%bd%ac%e9%87%8d%e8%a6%81%e7%9a%84%e4%b8%8d%e6%98%af%e6%8a%80%e6%9c%af/" title="[转]重要的不是技术 (2008-04-14)">[转]重要的不是技术</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/05/internet-explorer-developer-toolbar-v10021880/" title="Internet Explorer Developer Toolbar (2007-05-11)">Internet Explorer Developer Toolbar</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/12/ie-web-developer/" title="IE Web Developer (2008-12-10)">IE Web Developer</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2008/03/eclipse-4/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu Gutsy安装MapXtreme</title>
		<link>http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/</link>
		<comments>http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/#comments</comments>
		<pubDate>Tue, 20 Nov 2007 13:08:59 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MapXtreme]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[安装]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/509.html</guid>
		<description><![CDATA[首先从官方网站下载MapInfo® MapXtreme® Java Edition（需要注册用户） 目前最新版是4.8.0，推荐使用最新版，之前安装4.7会提示NoClassDefineFound 下载完了如果直接安装会报一大堆librt.so.1之类的找不到的错误，实际上在/lib目录下都有， 具体解决办法参考这篇文章，是因为2.6的内核启用了LinuxThread线程库的原因 下面以下载完的安装文件install.bin为例， /* 把原本安装文件中的LD_ASSUME_KERNEL操作注释掉，并写入新文件 */cat ./install.bin &#124; sed &#34;s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/&#34; &#62; ./installnew.bin 接下来就可以通过运行生成的installnew.bin来安装MapXtreme了, sudo sh ./installnew.bin 一切顺利就会启动图形安装界面，按照提示安装即可，如果不顺利我也不知道了 需要注意的是安装程序默认使用安装文件自带的jre，中文显示有问题，最好在安装过程中设置使用其他的jre（安装完成后也可以修改启动脚本中的JRE_HOME环境变量进行修改） 标签：Java, Linux, MapXtreme, ubuntu, 安装 相关日志 a joke (2) linux下的resin定时重启 (4) fcitx or scim? (1) [zz]在Server版系统上安装Kaspersky (0) [Ubuntu]从安装说起 (1)]]></description>
			<content:encoded><![CDATA[<p>首先从官方网站下载<a href="http://extranet.mapinfo.com/products/Overview.cfm?productid=1162&#038;productcategoryid=1">MapInfo® MapXtreme® Java Edition</a>（需要注册用户）<br />
目前最新版是4.8.0，推荐使用最新版，之前安装4.7会提示NoClassDefineFound</p>
<p>下载完了如果直接安装会报一大堆librt.so.1之类的找不到的错误，实际上在/lib目录下都有，<br />
具体解决办法<a href="http://blog.csdn.net/xport/archive/2007/02/09/1505855.aspx">参考这篇文章</a>，是因为2.6的内核启用了LinuxThread线程库的原因</p>
<p>下面以下载完的安装文件install.bin为例，</p>
<div class="hl-surround"><div class="hl-main">/* 把原本安装文件中的LD_ASSUME_KERNEL操作注释掉，并写入新文件 */<br />cat ./install.bin | sed &quot;s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/&quot; &gt; ./installnew.bin</div></div>
<p>接下来就可以通过运行生成的installnew.bin来安装MapXtreme了,</p>
<div class="hl-surround"><div class="hl-main">sudo sh ./installnew.bin</div></div>
<p>一切顺利就会启动图形安装界面，按照提示安装即可，如果不顺利我也不知道了<br />
需要注意的是安装程序默认使用安装文件自带的jre，中文显示有问题，最好在安装过程中设置使用其他的jre（安装完成后也可以修改启动脚本中的JRE_HOME环境变量进行修改）</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://blog.sunshow.net/tag/mapxtreme/" title="MapXtreme" rel="tag">MapXtreme</a>, <a href="http://blog.sunshow.net/tag/ubuntu/" title="ubuntu" rel="tag">ubuntu</a>, <a href="http://blog.sunshow.net/tag/%e5%ae%89%e8%a3%85/" title="安装" rel="tag">安装</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2006/12/a-joke/" title="a joke (2006-12-07)">a joke</a> (2)</li>
	<li><a href="http://blog.sunshow.net/2006/11/linux-reboot-resin-timing/" title="linux下的resin定时重启 (2006-11-09)">linux下的resin定时重启</a> (4)</li>
	<li><a href="http://blog.sunshow.net/2008/01/fcitx-or-scim/" title="fcitx or scim? (2008-01-23)">fcitx or scim?</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2006/11/zz%e5%9c%a8server%e7%89%88%e7%b3%bb%e7%bb%9f%e4%b8%8a%e5%ae%89%e8%a3%85kaspersky/" title="[zz]在Server版系统上安装Kaspersky (2006-11-09)">[zz]在Server版系统上安装Kaspersky</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/02/ubuntu%e4%bb%8e%e5%ae%89%e8%a3%85%e8%af%b4%e8%b5%b7/" title="[Ubuntu]从安装说起 (2007-02-05)">[Ubuntu]从安装说起</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>了解UUID</title>
		<link>http://blog.sunshow.net/2007/04/learn-about-uuid/</link>
		<comments>http://blog.sunshow.net/2007/04/learn-about-uuid/#comments</comments>
		<pubDate>Mon, 09 Apr 2007 02:47:43 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[UUID]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/413.html</guid>
		<description><![CDATA[UUID是指在一台机器上生成的数字，它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算，用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合：当前日期和时间(UUID的第一个部分与时间有关，如果你在生成一个UUID之后，过几秒又生成一个UUID，则第一个部分不同，其余相同)，时钟序列，全局唯一的IEEE机器识别号（如果有网卡，从网卡获得，没有网卡以其他方式获得），UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。 UUID 在所有计算机上都是唯一的。不过，它们的值是完全随机的，因此不能用来确定添加值的时间或值的顺序。另外，UUID 值比其它方法（包括全局自动增量）所需的值大得多，并且在主键表和外键表中都需要更多的表空间。使用 UUID 建立表索引的效率也更低。 标准的UUID格式为：xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12) JDK中的UUID实现 从JDK 5.0开始自带了UUID的实现 java.util.UUID，示例用法如下： import java.util.UUID; &#160; public&#160;class TestUUID { &#160; &#160; &#160; /** &#160; &#160;&#160; * @param args &#160; &#160;&#160; */ &#160; &#160; public&#160;static void main(String[] args) { &#160; &#160; &#160; &#160; // TODO Auto-generated method stub &#160; &#160; &#160; &#160; for&#160;(int [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
UUID是指在一台机器上生成的数字，它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算，用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合：当前日期和时间(UUID的第一个部分与时间有关，如果你在生成一个UUID之后，过几秒又生成一个UUID，则第一个部分不同，其余相同)，时钟序列，全局唯一的IEEE机器识别号（如果有网卡，从网卡获得，没有网卡以其他方式获得），UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。<br />
<br />
UUID 在所有计算机上都是唯一的。不过，它们的值是完全随机的，因此不能用来确定添加值的时间或值的顺序。另外，UUID 值比其它方法（包括全局自动增量）所需的值大得多，并且在主键表和外键表中都需要更多的表空间。使用 UUID 建立表索引的效率也更低。<br />
<br />
标准的UUID格式为：xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
</p></blockquote>
<p><strong>JDK中的UUID实现</strong></p>
<p>从JDK 5.0开始自带了UUID的实现 <a href="http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/UUID.html">java.util.UUID</a>，示例用法如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">java</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">UUID</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">TestUUID</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; *</span><span style="color: Blue;"> @param </span><span style="color: #ffa500;">args</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; */</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Olive;">[]</span><span style="color: Gray;"> </span><span style="color: Blue;">args</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// TODO Auto-generated method stub</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">10</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> ++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">out</span><span style="color: Gray;">.</span><span style="color: Blue;">println</span><span style="color: Olive;">(</span><span style="color: Blue;">UUID</span><span style="color: Gray;">.</span><span style="color: Blue;">randomUUID</span><span style="color: Olive;">()</span><span style="color: Gray;">.</span><span style="color: Blue;">toString</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>输出如下结果：</p>
<div class="hl-surround"><div class="hl-main">2bc58ecd-dd48-4144-b5aa-2ebebaad300c<br />468a36ed-2eec-42fc-9524-d04a404a5d94<br />e43ea34d-3768-4ad0-8f28-dd8e61267103<br />dba317d5-688e-4656-bea5-4542b414481d<br />f40408bb-df92-4118-8265-1e83f2810ae2<br />386e7c9d-b2af-4787-a171-6b1d9f350193<br />77a2eb19-0541-4fc3-a014-1b70840c42ec<br />4a00304e-d7e7-4a6f-bef3-4fb40ed7e1c2<br />631fdb01-1505-44e9-9e1b-3d84083651da<br />bdb68883-ff9b-4b56-a825-940f45b3b3db</div></div>
<p><strong>Hibernate中的使用</strong></p>
<blockquote><p>UUID algorithm<br />
The UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and a<br />
counter value (unique within the JVM). It's not possible to obtain a MAC address or memory address from Java<br />
code, so this is the best we can do without using JNI.</p></blockquote>
<p>从hibernate reference中抄了个例子如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">eg.Person</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">table</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">person</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">id</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Key</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">column</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">pid</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">string</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">generator</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">uuid</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">id</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">birthday</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">date</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">component</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Name</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">eg.Name</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: #ffa500;">&lt;!-- class attribute optional --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">initial</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">first</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">last</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">component</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">class</span><span style="color: Olive;">&gt;</span></li></ol></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/hibernate/" title="hibernate" rel="tag">hibernate</a>, <a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/uuid/" title="UUID" rel="tag">UUID</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2007/01/linux-resin-autostart/" title="linux下的Resin自启动问题 (2007-01-08)">linux下的Resin自启动问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2009/01/%e5%a4%a7%e6%9d%82%e7%83%a9actionscript3/" title="大杂烩ActionScript3 (2009-01-17)">大杂烩ActionScript3</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/" title="[Java]复杂对象的clone (2006-12-19)">[Java]复杂对象的clone</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/07/java%e5%b7%a5%e4%bd%9c%e7%8e%af%e5%a2%83/" title="Java工作环境 (2006-07-19)">Java工作环境</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/04/learn-about-uuid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java获取随机字符串</title>
		<link>http://blog.sunshow.net/2007/03/java-random-string/</link>
		<comments>http://blog.sunshow.net/2007/03/java-random-string/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 02:01:15 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[随机]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/405.html</guid>
		<description><![CDATA[import java.util.Random; &#160; public&#160;static String getRandomString(int length) { &#160; &#160; StringBuffer&#160;buffer = new StringBuffer(&#34;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#34;); &#160; &#160; StringBuffer&#160;sb = new StringBuffer(); &#160; &#160; Random&#160;r = new Random(); &#160; &#160; int&#160;range = buffer.length(); &#160; &#160; for&#160;(int i = 0; i &#60; length; i ++) { &#160; &#160; &#160; &#160; sb.append(buffer.charAt(r.nextInt(range))); &#160; &#160; } &#160; &#160; return&#160;sb.toString(); } [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">java</span><span style="color: Gray;">.</span><span style="color: Blue;">util</span><span style="color: Gray;">.</span><span style="color: Blue;">Random</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">getRandomString</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">length</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">StringBuffer</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">buffer</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">StringBuffer</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">StringBuffer</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sb</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">StringBuffer</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">Random</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">r</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Random</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">range</span><span style="color: Gray;"> = </span><span style="color: Blue;">buffer</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> ++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">sb</span><span style="color: Gray;">.</span><span style="color: Blue;">append</span><span style="color: Olive;">(</span><span style="color: Blue;">buffer</span><span style="color: Gray;">.</span><span style="color: Blue;">charAt</span><span style="color: Olive;">(</span><span style="color: Blue;">r</span><span style="color: Gray;">.</span><span style="color: Blue;">nextInt</span><span style="color: Olive;">(</span><span style="color: Blue;">range</span><span style="color: Olive;">)))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sb</span><span style="color: Gray;">.</span><span style="color: Blue;">toString</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>这个没啥意思，就是随机数用的不多，每次要用都记不住，在这里备个份@@</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/random/" title="random" rel="tag">random</a>, <a href="http://blog.sunshow.net/tag/%e9%9a%8f%e6%9c%ba/" title="随机" rel="tag">随机</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2009/01/%e5%a4%a7%e6%9d%82%e7%83%a9actionscript3/" title="大杂烩ActionScript3 (2009-01-17)">大杂烩ActionScript3</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/" title="PreparedStatement的怪异问题 (2007-03-29)">PreparedStatement的怪异问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/" title="[Java]复杂对象的clone (2006-12-19)">[Java]复杂对象的clone</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/12/java-chm-doc/" title="Java CHM Doc (2006-12-21)">Java CHM Doc</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/03/java-random-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PreparedStatement的怪异问题</title>
		<link>http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/</link>
		<comments>http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 14:46:55 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[PreparedStatement]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/403.html</guid>
		<description><![CDATA[详细代码和数据库(Oracle)见附件，本来很简单的事情没想到让我碰到了诡异的问题。 PreparedStatement pstmt = conn.prepareStatement(&#34;update followcase set customitems=? where id=?&#34;);pstmt.setString(1, customItems);pstmt.setString(2, &#34;4788&#34;); 这么写必然报java.sql.SQLException: ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值。 如果把第二个参数值直接写入sql里就没问题，可以肯定的是原因必然是因为customItems超过一定长度，据smth上大大说当长度超过4000/3的时候可能会出问题。 现在为了解决无法插入的问题，只能先把除了customitems字段的insert进去，然后再来update它，晕。 PreparedStatement有什么特殊限制吗？ 下载：测试代码及数据库 标签：Java, jdbc, PreparedStatement, sql 相关日志 a joke (2) linux下的Resin自启动问题 (0) Ubuntu Gutsy安装MapXtreme (1) [Java]复杂对象的clone (0) Java工作环境 (0)]]></description>
			<content:encoded><![CDATA[<p>详细代码和数据库(Oracle)见附件，本来很简单的事情没想到让我碰到了诡异的问题。</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Blue;">PreparedStatement</span><span style="color: Gray;"> </span><span style="color: Blue;">pstmt</span><span style="color: Gray;"> = </span><span style="color: Blue;">conn</span><span style="color: Gray;">.</span><span style="color: Blue;">prepareStatement</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">update followcase set customitems=? where id=?</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">pstmt</span><span style="color: Gray;">.</span><span style="color: Blue;">setString</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Gray;">, </span><span style="color: Blue;">customItems</span><span style="color: Olive;">)</span><span style="color: Gray;">;<br /></span><span style="color: Blue;">pstmt</span><span style="color: Gray;">.</span><span style="color: Blue;">setString</span><span style="color: Olive;">(</span><span style="color: Maroon;">2</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">4788</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></div></div>
<p>这么写必然报java.sql.SQLException: ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值。<br />
如果把第二个参数值直接写入sql里就没问题，可以肯定的是原因必然是因为customItems超过一定长度，据smth上大大说当长度超过4000/3的时候可能会出问题。<br />
现在为了解决无法插入的问题，只能先把除了customitems字段的insert进去，然后再来update它，晕。</p>
<p>PreparedStatement有什么特殊限制吗？</p>
<p>下载：<a href='http://www.sunshow.net/blog/wp-content/uploads/2007/03/testjdbc.zip' title='testjdbc.zip'>测试代码及数据库</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/jdbc/" title="jdbc" rel="tag">jdbc</a>, <a href="http://blog.sunshow.net/tag/preparedstatement/" title="PreparedStatement" rel="tag">PreparedStatement</a>, <a href="http://blog.sunshow.net/tag/sql/" title="sql" rel="tag">sql</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2006/12/a-joke/" title="a joke (2006-12-07)">a joke</a> (2)</li>
	<li><a href="http://blog.sunshow.net/2007/01/linux-resin-autostart/" title="linux下的Resin自启动问题 (2007-01-08)">linux下的Resin自启动问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/" title="[Java]复杂对象的clone (2006-12-19)">[Java]复杂对象的clone</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/07/java%e5%b7%a5%e4%bd%9c%e7%8e%af%e5%a2%83/" title="Java工作环境 (2006-07-19)">Java工作环境</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FTPClient中retrieveFileStream的用法</title>
		<link>http://blog.sunshow.net/2007/03/ftpclient-retrievefilestream-usage/</link>
		<comments>http://blog.sunshow.net/2007/03/ftpclient-retrievefilestream-usage/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 03:45:53 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[FTPClient]]></category>
		<category><![CDATA[retrieveFileStream]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/398.html</guid>
		<description><![CDATA[工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP，记录一下心得。 这个类封装的很完善，使用起来也很简单，只是在使用retrieveFileStream的时候碰到了一点小问题，就是不知道怎么完成传输状态，尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题： * You must close the InputStream when you * finish reading from it. The InputStream itself will take care of * closing the parent data connection socket upon being closed. To * finalize the file transfer you must call * {@link #completePendingCommand completePendingCommand } and * check its return value to verify success. [...]]]></description>
			<content:encoded><![CDATA[<p>工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP，记录一下心得。</p>
<p>这个类封装的很完善，使用起来也很简单，只是在使用retrieveFileStream的时候碰到了一点小问题，就是不知道怎么完成传输状态，尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题：</p>
<blockquote><p>
     * You must close the InputStream when you<br />
     * finish reading from it.  The InputStream itself will take care of<br />
     * closing the parent data connection socket upon being closed.  To<br />
     * finalize the file transfer you must call<br />
     * {@link #completePendingCommand  completePendingCommand } and<br />
     * check its return value to verify success.
</p></blockquote>
<p>代码如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">apache</span><span style="color: Gray;">.</span><span style="color: Blue;">commons</span><span style="color: Gray;">.</span><span style="color: Blue;">net</span><span style="color: Gray;">.</span><span style="color: Blue;">ftp</span><span style="color: Gray;">.</span><span style="color: Blue;">FTPClient</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">TestFTP</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Olive;">[]</span><span style="color: Gray;"> </span><span style="color: Blue;">args</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">try</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">FTPClient</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ftp</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">FTPClient</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// initialize ftp connection</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">/*</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * </span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">String</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">remotefile</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">test.xml</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">InputStream</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">is</span><span style="color: Gray;"> = </span><span style="color: Blue;">ftp</span><span style="color: Gray;">.</span><span style="color: Blue;">retrieveFileStream</span><span style="color: Olive;">(</span><span style="color: Blue;">remotefile</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">is</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">is</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">ftp</span><span style="color: Gray;">.</span><span style="color: Blue;">completePendingCommand</span><span style="color: Olive;">())</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">ftp</span><span style="color: Gray;">.</span><span style="color: Blue;">logout</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">ftp</span><span style="color: Gray;">.</span><span style="color: Blue;">disconnect</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// continue</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">catch</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">SocketException</span><span style="color: Gray;"> </span><span style="color: Blue;">e</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// TODO Auto-generated catch block</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">printStackTrace</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">catch</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">IOException</span><span style="color: Gray;"> </span><span style="color: Blue;">e</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// TODO Auto-generated catch block</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">e</span><span style="color: Gray;">.</span><span style="color: Blue;">printStackTrace</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/ftpclient/" title="FTPClient" rel="tag">FTPClient</a>, <a href="http://blog.sunshow.net/tag/retrievefilestream/" title="retrieveFileStream" rel="tag">retrieveFileStream</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/03/ftpclient-retrievefilestream-usage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>linux下的Resin自启动问题</title>
		<link>http://blog.sunshow.net/2007/01/linux-resin-autostart/</link>
		<comments>http://blog.sunshow.net/2007/01/linux-resin-autostart/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 02:31:01 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[jstl]]></category>
		<category><![CDATA[resin]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/279.html</guid>
		<description><![CDATA[我们使用的是resin-2.1.17 首先按照bin/httpd.sh里的说明将resin配置为服务 # To install, you'll need to configure JAVA_HOME and RESIN_HOME and # copy httpd.sh to /etc/rc.d/init.d as resin.&#160; Then # use &#34;unix# /sbin/chkconfig resin on&#34; cp&#160;httpd.sh /etc/rc.d/init.d/resin /sbin/chkconfig&#160;resin on 配置JAVA_HOME 和 RESIN_HOME JAVA_HOME=/opt/j2sdk1.4.2_10 export&#160;JAVA_HOME &#160; RESIN_HOME=/opt/resin-2.1.17 export&#160;RESIN_HOME 自动启动的时候必须把变量export进来 修改 bin=`dirname $script` 为 bin=$RESIN_HOME/bin 理论上这样应该已经能作为服务启动了 事实上也确实启动了 但是发现所有使用了类似 &#60;fmt:formatDate value='${rptDate}' type='date'/&#62; 的jstl表达式的地方日期格式都是英文的，而不是期望中的yyyy-MM-dd的格式 一开始以为是系统重新启动默认使用的自带的jdk的问题 于是将系统默认jdk设置成/opt/j2sdk1.4.2_10 结果问题还是一样 [...]]]></description>
			<content:encoded><![CDATA[<p>我们使用的是resin-2.1.17</p>
<p>首先按照bin/httpd.sh里的说明将resin配置为服务</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;"># To install, you'll need to configure JAVA_HOME and RESIN_HOME and</span></li>
<li><span style="color: #ffa500;"># copy httpd.sh to /etc/rc.d/init.d as resin.&nbsp; Then</span></li>
<li><span style="color: #ffa500;"># use &quot;unix# /sbin/chkconfig resin on&quot;</span></li>
<li><span style="color: Blue;">cp</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">httpd</span><span style="color: Gray;">.</span><span style="color: Blue;">sh</span><span style="color: #8b0000;"> /</span><span style="color: Red;">etc</span><span style="color: #8b0000;">/</span><span style="color: Blue;">rc</span><span style="color: Gray;">.</span><span style="color: Blue;">d</span><span style="color: Gray;">/</span><span style="color: Blue;">init</span><span style="color: Gray;">.</span><span style="color: Blue;">d</span><span style="color: Gray;">/</span><span style="color: Blue;">resin</span></li>
<li><span style="color: Gray;">/</span><span style="color: Blue;">sbin</span><span style="color: Gray;">/</span><span style="color: Blue;">chkconfig</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">resin</span><span style="color: Gray;"> </span><span style="color: Blue;">on</span></li></ol></div>
<p>配置JAVA_HOME 和 RESIN_HOME</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">JAVA_HOME</span><span style="color: Gray;">=/</span><span style="color: Blue;">opt</span><span style="color: Gray;">/</span><span style="color: Blue;">j2sdk1</span><span style="color: Maroon;">.4.2</span><span style="color: Blue;">_10</span></li>
<li><span style="color: Blue;">export</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">JAVA_HOME</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">RESIN_HOME</span><span style="color: Gray;">=/</span><span style="color: Blue;">opt</span><span style="color: Gray;">/</span><span style="color: Blue;">resin</span><span style="color: Gray;">-</span><span style="color: Maroon;">2.1.17</span></li>
<li><span style="color: Blue;">export</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">RESIN_HOME</span></li></ol></div>
<p>自动启动的时候必须把变量export进来</p>
<p>修改</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">bin</span><span style="color: Gray;">=</span><span style="color: #8b0000;">`</span><span style="color: Red;">dirname </span><span style="color: #00008b;">$script</span><span style="color: #8b0000;">`</span></li></ol></div>
<p>为</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">bin</span><span style="color: Gray;">=</span><span style="color: #00008b;">$RESIN_HOME</span><span style="color: Gray;">/</span><span style="color: Blue;">bin</span></li></ol></div>
<p>理论上这样应该已经能作为服务启动了<br />
事实上也确实启动了<br />
但是发现所有使用了类似</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">fmt:formatDate</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">='${</span><span style="color: #00008b;">rptDate</span><span style="color: Gray;">}' </span><span style="color: #00008b;">type</span><span style="color: Gray;">='</span><span style="color: #00008b;">date</span><span style="color: Gray;">'</span><span style="color: Olive;">/&gt;</span></li></ol></div>
<p>的jstl表达式的地方日期格式都是英文的，而不是期望中的yyyy-MM-dd的格式</p>
<p>一开始以为是系统重新启动默认使用的自带的jdk的问题<br />
于是将系统默认jdk设置成/opt/j2sdk1.4.2_10<br />
结果问题还是一样<br />
这时候可能是某个同事操作cms系统的时候重建了页面<br />
首页的中文全变成了??<br />
这样就很明显是jdk的编码问题了<br />
google之</p>
<p>在最末行启动参数加上强制指定编码，即修改为</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">exec</span><span style="color: Gray;"> </span><span style="color: #00008b;">$perl</span><span style="color: Gray;"> </span><span style="color: #00008b;">$bin</span><span style="color: Gray;">/</span><span style="color: Blue;">wrapper</span><span style="color: Gray;">.</span><span style="color: Blue;">pl</span><span style="color: Gray;"> -</span><span style="color: Green;">chdir</span><span style="color: Gray;"> -</span><span style="color: Blue;">name</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: #00008b;">$name</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> -</span><span style="color: Blue;">class</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: #00008b;">$class</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> -</span><span style="color: Blue;">Dclient</span><span style="color: Gray;">.</span><span style="color: Blue;">encoding</span><span style="color: Gray;">.</span><span style="color: Blue;">override</span><span style="color: Gray;">=</span><span style="color: Blue;">GBK</span><span style="color: Gray;"> -</span><span style="color: Blue;">Dfile</span><span style="color: Gray;">.</span><span style="color: Blue;">encodin</span></li>
<li><span style="color: Blue;">g</span><span style="color: Gray;">=</span><span style="color: Blue;">GBK</span><span style="color: Gray;"> -</span><span style="color: Blue;">Duser</span><span style="color: Gray;">.</span><span style="color: Blue;">language</span><span style="color: Gray;">=</span><span style="color: Blue;">zh</span><span style="color: Gray;"> -</span><span style="color: Blue;">Duser</span><span style="color: Gray;">.</span><span style="color: Blue;">region</span><span style="color: Gray;">=</span><span style="color: Blue;">CN</span><span style="color: Gray;"> -</span><span style="color: Blue;">Djava</span><span style="color: Gray;">.</span><span style="color: Blue;">awt</span><span style="color: Gray;">.</span><span style="color: Blue;">headless</span><span style="color: Gray;">=</span><span style="color: Blue;">true</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$args</span><span style="color: Gray;"> $*</span></li></ol></div>
<p>其中“ -Djava.awt.headless=true”是为了在linux下jfreechart的图像能正常显示<br />
问题解决</p>
<p>以上所做的修改都是针对httpd.sh<br />
别忘了改完重新copy一份到/etc/rc.d/init.d</p>
<p>造成这个问题的原因可能是因为服务加载的顺序问题<br />
因为jdk的默认编码设置是跟系统设置一样的</p>
<p>这件事情教育我们要使用</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">fmt:formatDate</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">='${</span><span style="color: #00008b;">rptDate</span><span style="color: Gray;">}' </span><span style="color: #00008b;">pattern</span><span style="color: Gray;">='</span><span style="color: #00008b;">yyyy-MM-dd</span><span style="color: Gray;">'</span><span style="color: Olive;">/&gt;</span></li></ol></div>
<p>补充：<br />
一些地方还是出现乱码<br />
发现数据中心的linux没有设置LC_ALL<br />
修改/etc/sysconfig/i18n</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">LANG</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">zh_CN.GB18030</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">LANGUAGE</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">zh_CN.GB18030:zh_CN.GB2312:zh_CN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">LC_ALL</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">zh_CN.GB18030</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">SUPPORTED</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">en_US.UTF-8:en_US:en:zh_CN.GB18030:zh_CN:zh:zh_TW.big5:zh_TW:zh:ja_JP.UTF-8:ja_JP:ja:ko_KR.eucKR:ko_KR:ko</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">SYSFONT</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">lat0-sun16</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">SYSFONTACM</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">8859-15</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Blue;">export</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">LC_ALL</span></li></ol></div>
<p>当然编码具体情况具体分析</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a>, <a href="http://blog.sunshow.net/tag/jstl/" title="jstl" rel="tag">jstl</a>, <a href="http://blog.sunshow.net/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://blog.sunshow.net/tag/resin/" title="resin" rel="tag">resin</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2008/01/fcitx-or-scim/" title="fcitx or scim? (2008-01-23)">fcitx or scim?</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2007/03/java-random-string/" title="Java获取随机字符串 (2007-03-30)">Java获取随机字符串</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2006/08/%e8%bd%ac%e8%bd%bdphpgd%e7%9a%84%e5%ae%89%e8%a3%85/" title="[转载]PHP+GD的安装 (2006-08-26)">[转载]PHP+GD的安装</a> (2)</li>
	<li><a href="http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/" title="PreparedStatement的怪异问题 (2007-03-29)">PreparedStatement的怪异问题</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2007/01/linux-resin-autostart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java CHM Doc</title>
		<link>http://blog.sunshow.net/2006/12/java-chm-doc/</link>
		<comments>http://blog.sunshow.net/2006/12/java-chm-doc/#comments</comments>
		<pubDate>Thu, 21 Dec 2006 03:47:35 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[chm]]></category>
		<category><![CDATA[doc]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/270.html</guid>
		<description><![CDATA[http://www.allimant.org/javadoc/ 标签：chm, doc, Java 相关日志 大杂烩ActionScript3 (0) 了解UUID (3) PreparedStatement的怪异问题 (0) Java工作环境 (0) Ubuntu Gutsy安装MapXtreme (1)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.allimant.org/javadoc/">http://www.allimant.org/javadoc/</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/chm/" title="chm" rel="tag">chm</a>, <a href="http://blog.sunshow.net/tag/doc/" title="doc" rel="tag">doc</a>, <a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2009/01/%e5%a4%a7%e6%9d%82%e7%83%a9actionscript3/" title="大杂烩ActionScript3 (2009-01-17)">大杂烩ActionScript3</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/04/learn-about-uuid/" title="了解UUID (2007-04-09)">了解UUID</a> (3)</li>
	<li><a href="http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/" title="PreparedStatement的怪异问题 (2007-03-29)">PreparedStatement的怪异问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/07/java%e5%b7%a5%e4%bd%9c%e7%8e%af%e5%a2%83/" title="Java工作环境 (2006-07-19)">Java工作环境</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/12/java-chm-doc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Java]复杂对象的clone</title>
		<link>http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/</link>
		<comments>http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 01:46:27 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.sunshow.net/blog/archives/267.html</guid>
		<description><![CDATA[除了自己手工实现以外 有什么好的现成的东西吗？ 标签：Java 相关日志 Ubuntu Gutsy安装MapXtreme (1) PreparedStatement的怪异问题 (0) 大杂烩ActionScript3 (0) linux下的Resin自启动问题 (0) a joke (2)]]></description>
			<content:encoded><![CDATA[<p>除了自己手工实现以外<br />
有什么好的现成的东西吗？</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/java/" title="Java" rel="tag">Java</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2007/11/install-mapxtreme-in-ubuntu-gutsy/" title="Ubuntu Gutsy安装MapXtreme (2007-11-20)">Ubuntu Gutsy安装MapXtreme</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2007/03/preparedstatement%e7%9a%84%e6%80%aa%e5%bc%82%e9%97%ae%e9%a2%98/" title="PreparedStatement的怪异问题 (2007-03-29)">PreparedStatement的怪异问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2009/01/%e5%a4%a7%e6%9d%82%e7%83%a9actionscript3/" title="大杂烩ActionScript3 (2009-01-17)">大杂烩ActionScript3</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2007/01/linux-resin-autostart/" title="linux下的Resin自启动问题 (2007-01-08)">linux下的Resin自启动问题</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2006/12/a-joke/" title="a joke (2006-12-07)">a joke</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/12/java%e5%a4%8d%e6%9d%82%e5%af%b9%e8%b1%a1%e7%9a%84clone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[SWT]指定Table单元格的宽度和高度</title>
		<link>http://blog.sunshow.net/2006/10/swt-specify-table-cell-width-height/</link>
		<comments>http://blog.sunshow.net/2006/10/swt-specify-table-cell-width-height/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 02:42:14 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[swt]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://sunshow.net/blog/?p=223</guid>
		<description><![CDATA[import org.eclipse.jface.viewers.TableViewer; import&#160;org.eclipse.swt.SWT; import&#160;org.eclipse.swt.widgets.Event; import&#160;org.eclipse.swt.widgets.Listener; import&#160;org.eclipse.swt.widgets.Table; &#160; TableViewer&#160;tv; //初始化tv final&#160;Table table = tv.getTable(); &#160; &#160; &#160; &#160; table.addListener(SWT.MeasureItem, new&#160;Listener() {&#160; &#160; //向表格增加一个SWT.MeasureItem监听器，每当需要单元内容的大小的时候就会被调用。 &#160; &#160; public&#160;void handleEvent(Event event) { &#160; &#160; &#160; &#160; event.width = table.getGridLineWidth();&#160; &#160; //设置宽度 &#160; &#160; &#160; &#160; event.height = (int)&#160;Math.floor(event.gc.getFontMetrics().getHeight() * 1.5);&#160; &#160; //设置高度为字体高度的1.5倍 &#160; &#160; }}); 如果只是要默认效果则只要添加监听器就可以了 handleEvent方法里头留空就行 标签：swt, table]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">eclipse</span><span style="color: Gray;">.</span><span style="color: Blue;">jface</span><span style="color: Gray;">.</span><span style="color: Blue;">viewers</span><span style="color: Gray;">.</span><span style="color: Blue;">TableViewer</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">eclipse</span><span style="color: Gray;">.</span><span style="color: Blue;">swt</span><span style="color: Gray;">.</span><span style="color: Blue;">SWT</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">eclipse</span><span style="color: Gray;">.</span><span style="color: Blue;">swt</span><span style="color: Gray;">.</span><span style="color: Blue;">widgets</span><span style="color: Gray;">.</span><span style="color: Blue;">Event</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">eclipse</span><span style="color: Gray;">.</span><span style="color: Blue;">swt</span><span style="color: Gray;">.</span><span style="color: Blue;">widgets</span><span style="color: Gray;">.</span><span style="color: Blue;">Listener</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">eclipse</span><span style="color: Gray;">.</span><span style="color: Blue;">swt</span><span style="color: Gray;">.</span><span style="color: Blue;">widgets</span><span style="color: Gray;">.</span><span style="color: Blue;">Table</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">TableViewer</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tv</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//初始化tv</span></li>
<li><span class="hl-types">final</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Table</span><span style="color: Gray;"> </span><span style="color: Blue;">table</span><span style="color: Gray;"> = </span><span style="color: Blue;">tv</span><span style="color: Gray;">.</span><span style="color: Blue;">getTable</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Blue;">table</span><span style="color: Gray;">.</span><span style="color: Blue;">addListener</span><span style="color: Olive;">(</span><span style="color: Blue;">SWT</span><span style="color: Gray;">.</span><span style="color: Blue;">MeasureItem</span><span style="color: Gray;">, </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Listener</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//向表格增加一个SWT.MeasureItem监听器，每当需要单元内容的大小的时候就会被调用。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">handleEvent</span><span style="color: Olive;">(</span><span style="color: Blue;">Event</span><span style="color: Gray;"> </span><span style="color: Blue;">event</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;"> = </span><span style="color: Blue;">table</span><span style="color: Gray;">.</span><span style="color: Blue;">getGridLineWidth</span><span style="color: Olive;">()</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//设置宽度</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Blue;">height</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Math</span><span style="color: Gray;">.</span><span style="color: Blue;">floor</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Gray;">.</span><span style="color: Blue;">getFontMetrics</span><span style="color: Olive;">()</span><span style="color: Gray;">.</span><span style="color: Blue;">getHeight</span><span style="color: Olive;">()</span><span style="color: Gray;"> * </span><span style="color: Maroon;">1.5</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//设置高度为字体高度的1.5倍</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}})</span><span style="color: Gray;">;</span></li></ol></div>
<p>如果只是要默认效果则只要添加监听器就可以了<br />
handleEvent方法里头留空就行</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/swt/" title="swt" rel="tag">swt</a>, <a href="http://blog.sunshow.net/tag/table/" title="table" rel="tag">table</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/10/swt-specify-table-cell-width-height/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[JFace]自定义Dialog的按钮</title>
		<link>http://blog.sunshow.net/2006/10/swt%e8%87%aa%e5%ae%9a%e4%b9%89dialog%e7%9a%84%e6%8c%89%e9%92%ae/</link>
		<comments>http://blog.sunshow.net/2006/10/swt%e8%87%aa%e5%ae%9a%e4%b9%89dialog%e7%9a%84%e6%8c%89%e9%92%ae/#comments</comments>
		<pubDate>Thu, 19 Oct 2006 08:05:57 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jface]]></category>

		<guid isPermaLink="false">http://sunshow.net/blog/?p=221</guid>
		<description><![CDATA[/** * 重载默认的按钮建立方法，让其在本地的执行失效 */&#160; protected&#160;Button createButton(Composite parent, int id, String label, boolean defaultButton) { &#160; &#160; return&#160;null; } &#160; /** * 利用父类的createButton方法建立按钮 */ protected&#160;void initializeBounds() { &#160; &#160; /* &#160; &#160;&#160; * 参数1:取得放按钮的面板， &#160; &#160;&#160; * 参数2:按钮的id值 &#160; &#160;&#160; * 参数3:按钮上的文字 &#160; &#160;&#160; * 参数4:是否为Dialog的默认按钮 &#160; &#160;&#160; */ &#160; &#160; super.createButton((Composite)&#160;this.getButtonBar(), &#160; &#160; IDialogConstants.OK_ID, &#34;保存&#34;, [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * 重载默认的按钮建立方法，让其在本地的执行失效</span></li>
<li><span style="color: #ffa500;"> */</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">protected</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Button</span><span style="color: Gray;"> </span><span style="color: Blue;">createButton</span><span style="color: Olive;">(</span><span style="color: Blue;">Composite</span><span style="color: Gray;"> </span><span style="color: Blue;">parent</span><span style="color: Gray;">, </span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">id</span><span style="color: Gray;">, </span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">label</span><span style="color: Gray;">, </span><span class="hl-types">boolean</span><span style="color: Gray;"> </span><span style="color: Blue;">defaultButton</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">/** </span></li>
<li><span style="color: #ffa500;"> * 利用父类的createButton方法建立按钮 </span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Green;">protected</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">initializeBounds</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">/* </span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * 参数1:取得放按钮的面板， </span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * 参数2:按钮的id值</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * 参数3:按钮上的文字 </span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * 参数4:是否为Dialog的默认按钮 </span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; */</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">super</span><span style="color: Gray;">.</span><span style="color: Blue;">createButton</span><span style="color: Olive;">((</span><span style="color: Blue;">Composite</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">getButtonBar</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">IDialogConstants</span><span style="color: Gray;">.</span><span style="color: Blue;">OK_ID</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">保存</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">super</span><span style="color: Gray;">.</span><span style="color: Blue;">createButton</span><span style="color: Olive;">((</span><span style="color: Blue;">Composite</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">getButtonBar</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">IDialogConstants</span><span style="color: Gray;">.</span><span style="color: Blue;">OK_ID</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">重填</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Green;">false</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">super</span><span style="color: Gray;">.</span><span style="color: Blue;">createButton</span><span style="color: Olive;">((</span><span style="color: Blue;">Composite</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">getButtonBar</span><span style="color: Olive;">()</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">IDialogConstants</span><span style="color: Gray;">.</span><span style="color: Blue;">CANCEL_ID</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">退出</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">super</span><span style="color: Gray;">.</span><span style="color: Blue;">initializeBounds</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/jface/" title="jface" rel="tag">jface</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/10/swt%e8%87%aa%e5%ae%9a%e4%b9%89dialog%e7%9a%84%e6%8c%89%e9%92%ae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>面向对象的设计原则</title>
		<link>http://blog.sunshow.net/2006/09/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e8%ae%be%e8%ae%a1%e5%8e%9f%e5%88%99/</link>
		<comments>http://blog.sunshow.net/2006/09/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e8%ae%be%e8%ae%a1%e5%8e%9f%e5%88%99/#comments</comments>
		<pubDate>Sat, 09 Sep 2006 07:12:41 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[对象]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://sunshow.net/blog/?p=116</guid>
		<description><![CDATA[单一职责原则(SRP) 就一个类而言，应该仅有一个引起它变化的原因。 开放-封闭原则(OCP) 软件实体应该是可以扩展的，但是不可修改。 Liskov替换原则(LSP) 子类型必须能够替换掉它们的基类型。 依赖倒置原则(DIP) 抽象不应该依赖于细节。细节应该依赖于抽象。 接口隔离原则(ISP) 不应该强迫客户依赖于它们不用的方法。接口属于客户，不属于它所在的类层次结构。 重用发布等价原则(REP) 重用的粒度就是发布的粒度。 共同封闭原则(CCP) 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响，则将对该包中的所有类产生影响，而对于其他的包不造成任何影响。 共同重用原则(CRP) 一个包中的所有类应该是共同重用的。如果重用了包中的一个类，那么就要重用包中的所有类。 无环依赖原则(ADP) 在包的依赖关系图中不允许存在环。 稳定依赖原则(SDP) 朝着稳定的方向进行依赖。 稳定抽象原则(SAP) 包的抽象程度应该和其稳定程度一致。 这些以我目前的水平还只能是一知半解…… 标签：对象, 设计 相关日志 ID设计稿之一 (1) 栅格系统 (0)]]></description>
			<content:encoded><![CDATA[<blockquote>
<ul>
<li>单一职责原则(SRP) <br />就一个类而言，应该仅有一个引起它变化的原因。</li>
<li>开放-封闭原则(OCP) <br />软件实体应该是可以扩展的，但是不可修改。</li>
<li>Liskov替换原则(LSP) <br />子类型必须能够替换掉它们的基类型。</li>
<li>依赖倒置原则(DIP) <br />抽象不应该依赖于细节。细节应该依赖于抽象。</li>
<li>接口隔离原则(ISP) <br />不应该强迫客户依赖于它们不用的方法。接口属于客户，不属于它所在的类层次结构。</li>
<li>重用发布等价原则(REP) <br />重用的粒度就是发布的粒度。 </li>
<li>共同封闭原则(CCP) <br />包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响，则将对该包中的所有类产生影响，而对于其他的包不造成任何影响。 </li>
<li>共同重用原则(CRP) <br />一个包中的所有类应该是共同重用的。如果重用了包中的一个类，那么就要重用包中的所有类。 </li>
<li>无环依赖原则(ADP) <br />在包的依赖关系图中不允许存在环。 </li>
<li>稳定依赖原则(SDP) <br />朝着稳定的方向进行依赖。 </li>
<li>稳定抽象原则(SAP) <br />包的抽象程度应该和其稳定程度一致。</li>
</ul>
</blockquote>
<p>这些以我目前的水平还只能是一知半解……</p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/%e5%af%b9%e8%b1%a1/" title="对象" rel="tag">对象</a>, <a href="http://blog.sunshow.net/tag/%e8%ae%be%e8%ae%a1/" title="设计" rel="tag">设计</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2006/04/id%e8%ae%be%e8%ae%a1%e7%a8%bf%e4%b9%8b%e4%b8%80/" title="ID设计稿之一 (2006-04-25)">ID设计稿之一</a> (1)</li>
	<li><a href="http://blog.sunshow.net/2009/01/%e6%a0%85%e6%a0%bc%e7%b3%bb%e7%bb%9f/" title="栅格系统 (2009-01-13)">栅格系统</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/09/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1%e7%9a%84%e8%ae%be%e8%ae%a1%e5%8e%9f%e5%88%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关闭jfreechart的文字抗锯齿</title>
		<link>http://blog.sunshow.net/2006/08/disable-jfreechart-anti-alias/</link>
		<comments>http://blog.sunshow.net/2006/08/disable-jfreechart-anti-alias/#comments</comments>
		<pubDate>Fri, 04 Aug 2006 01:13:50 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jfreechart]]></category>

		<guid isPermaLink="false">http://sunfee.net/blog/?p=84</guid>
		<description><![CDATA[import java.awt.RenderingHints; &#160; import&#160;org.jfree.chart.ChartFactory; import&#160;org.jfree.chart.ChartUtilities; import&#160;org.jfree.chart.JFreeChart; &#160; final&#160;JFreeChart chart; /* chart = .... */ &#160; //chart.setAntiAlias(false);&#160; &#160; //关闭全部反锯齿 chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);&#160; &#160; //关闭文字的抗锯齿 标签：jfreechart]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">java</span><span style="color: Gray;">.</span><span style="color: Blue;">awt</span><span style="color: Gray;">.</span><span style="color: Blue;">RenderingHints</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">jfree</span><span style="color: Gray;">.</span><span style="color: Blue;">chart</span><span style="color: Gray;">.</span><span style="color: Blue;">ChartFactory</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">jfree</span><span style="color: Gray;">.</span><span style="color: Blue;">chart</span><span style="color: Gray;">.</span><span style="color: Blue;">ChartUtilities</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">org</span><span style="color: Gray;">.</span><span style="color: Blue;">jfree</span><span style="color: Gray;">.</span><span style="color: Blue;">chart</span><span style="color: Gray;">.</span><span style="color: Blue;">JFreeChart</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span class="hl-types">final</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">JFreeChart</span><span style="color: Gray;"> </span><span style="color: Blue;">chart</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">/*</span></li>
<li><span style="color: #ffa500;">chart = ....</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">//chart.setAntiAlias(false);&nbsp; &nbsp; //关闭全部反锯齿</span></li>
<li><span style="color: Blue;">chart</span><span style="color: Gray;">.</span><span style="color: Blue;">getRenderingHints</span><span style="color: Olive;">()</span><span style="color: Gray;">.</span><span style="color: Blue;">put</span><span style="color: Olive;">(</span><span style="color: Blue;">RenderingHints</span><span style="color: Gray;">.</span><span style="color: Blue;">KEY_TEXT_ANTIALIASING</span><span style="color: Gray;">, </span><span style="color: Blue;">RenderingHints</span><span style="color: Gray;">.</span><span style="color: Blue;">VALUE_TEXT_ANTIALIAS_OFF</span><span style="color: Olive;">)</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//关闭文字的抗锯齿</span></li></ol></div>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/jfreechart/" title="jfreechart" rel="tag">jfreechart</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/08/disable-jfreechart-anti-alias/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse 3.2 released</title>
		<link>http://blog.sunshow.net/2006/07/eclipse-32-released/</link>
		<comments>http://blog.sunshow.net/2006/07/eclipse-32-released/#comments</comments>
		<pubDate>Sat, 01 Jul 2006 10:59:34 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://sunfee.net/blog/?p=47</guid>
		<description><![CDATA[Download:http://www.eclipse.org/downloads/ 标签：eclipse 相关日志 Eclipse 3.4 Released (0) 传说中的Eclipse 4？ (3)]]></description>
			<content:encoded><![CDATA[<p>Download:<a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/eclipse/" title="eclipse" rel="tag">eclipse</a><br /><br />

	<div style="clear:both;"></div><strong>相关日志</strong>
	<ul class="st-related-posts">
	<li><a href="http://blog.sunshow.net/2008/06/eclipse-34-released/" title="Eclipse 3.4 Released (2008-06-26)">Eclipse 3.4 Released</a> (0)</li>
	<li><a href="http://blog.sunshow.net/2008/03/eclipse-4/" title="传说中的Eclipse 4？ (2008-03-21)">传说中的Eclipse 4？</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/07/eclipse-32-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]你还在用if else吗？</title>
		<link>http://blog.sunshow.net/2006/04/%e8%bd%ac%e8%bd%bd%e4%bd%a0%e8%bf%98%e5%9c%a8%e7%94%a8if-else%e5%90%97%ef%bc%9f/</link>
		<comments>http://blog.sunshow.net/2006/04/%e8%bd%ac%e8%bd%bd%e4%bd%a0%e8%bf%98%e5%9c%a8%e7%94%a8if-else%e5%90%97%ef%bc%9f/#comments</comments>
		<pubDate>Thu, 27 Apr 2006 02:00:51 +0000</pubDate>
		<dc:creator>Sunshow</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[设计模式]]></category>

		<guid isPermaLink="false">http://sunfee.net/blog/?p=10</guid>
		<description><![CDATA[你还在用if else吗？ 板桥里人 http://www.jdon.com 2006/1/11（转载请保留） 　　面向过程设计和面向对象设计的主要区别是：是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else，当然，界面表现层除外，即使你使用Java/C#这样完全面向对象的语言，也只能说明你的思维停留在传统的面向过程语言上。 传统思维习惯分析 　　为什么会业务逻辑层使用if else，其实使用者的目的也是为了重用，但是这是面向过程编程的重用，程序员只看到代码重用，因为他看到if else几种情况下大部分代码都是重复的，只有个别不同，因此使用if else可以避免重复代码，并且认为这是模板Template模式。 　　他范的错误是：程序员只从代码运行顺序这个方向来看待它的代码，这种思维类似水管或串行电路，水沿着水管流动（代码运行次序），当遇到几个分管（子管），就分到这几个分管子在流动，这里就相当于碰到代码的if else处了。 　　而使用OO，则首先打破这个代码由上向下顺序等同于运行时的先后循序这个规律，代码结构不由执行循序决定，由什么决定呢？由OO设计；设计模式会取代这些if else，但是最后总是由一个Service等总类按照运行顺序组装这些OO模块，只有一处，这处可包含事务，一般就是Service，EJB中是Session bean。 　　一旦需求变化，我们更多的可能是Service中各个OO模块，甚至是只改动Service中的OO模块执行顺序就能符合需求。 　　这里我们也看到OO分离的思路，将以前过程语言的一个Main函数彻底分解，将运行顺序与代码其他逻辑分离开来，而不是象面向过程那样混乱在一起。所以有人感慨，OO也是要顺序的，这是肯定的，关键是运行顺序要单独分离出来。 　　是否有if else可以看出你有没有将运行顺序分离到家。 设计模式的切入口 　　经常有人反映，设计模式是不错，但是我很难用到，其实如果你使用if else来写代码时（除显示控制以外），就是在写业务逻辑，只不过使用简单的判断语句来作为现实情况的替代者。 　　 还是以大家熟悉的论坛帖子为例子，如ForumMessage是一个模型，但是实际中帖子分两种性质：主题贴（第一个根贴）和回帖（回以前帖子的帖子），这里有一个朴素的解决方案： 建立一个ForumMessage，然后在ForumMessage加入isTopic这样判断语句，注意，你这里一个简单属性的判断引入，可能导致你的程序其他地方到处存在if else 的判断。 　　如果我们改用另外一种分析实现思路，以对象化概念看待，实际中有主题贴和回帖，就是两种对象，但是这两种对象大部分是一致的，因此，我将ForumMessage设为表达主题贴；然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖，这样，我在程序地方，如Service中，我已经确定这个Model是回帖了，我就直接下溯为ForumMessageReply即可，这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if else的判断语句出现可能。 　　从这里体现了，如果分析方向错误，也会导致误用模式。 　　讨论设计模式举例，不能没有业务上下文场景的案例，否则无法决定是否该用模式，下面举两个对比的例子： 第一. 这个帖子中举例的第一个代码案例是没有上下文的，文中只说明有一段代码： main() { &#160; &#160; if(case&#160;A){ &#160; &#160; // do with strategy A &#160; &#160; }else(case&#160;B){ &#160; &#160; // do [...]]]></description>
			<content:encoded><![CDATA[<p><strong>你还在用if else吗？</strong><strong><br />
</strong><a href="http://www.jdon.com/aboutme.htm">板桥里人</a> http://www.jdon.com 2006/1/11（转载请保留）<br />
　　面向过程设计和面向对象设计的主要区别是：是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else，当然，界面表现层除外，即使你使用Java/C#这样完全面向对象的语言，也只能说明你的思维停留在传统的面向过程语言上。<br />
<strong>传统思维习惯分析</strong><br />
　　为什么会业务逻辑层使用if else，其实使用者的目的也是为了重用，但是这是面向过程编程的重用，程序员只看到代码重用，因为他看到if else几种情况下大部分代码都是重复的，只有个别不同，因此使用if else可以避免重复代码，并且认为这是模板Template模式。<br />
　　他范的错误是：程序员只从代码运行顺序这个方向来看待它的代码，这种思维类似水管或串行电路，水沿着水管流动（代码运行次序），当遇到几个分管（子管），就分到这几个分管子在流动，这里就相当于碰到代码的if else处了。<br />
　　而使用OO，则首先打破这个代码由上向下顺序等同于运行时的先后循序这个规律，代码结构不由执行循序决定，由什么决定呢？由OO设计；设计模式会取代这些if else，但是最后总是由一个Service等总类按照运行顺序组装这些OO模块，只有一处，这处可包含事务，一般就是Service，EJB中是Session bean。<br />
　　一旦需求变化，我们更多的可能是Service中各个OO模块，甚至是只改动Service中的OO模块执行顺序就能符合需求。<br />
　　这里我们也看到OO分离的思路，将以前过程语言的一个Main函数彻底分解，将运行顺序与代码其他逻辑分离开来，而不是象面向过程那样混乱在一起。所以有人感慨，OO也是要顺序的，这是肯定的，关键是运行顺序要单独分离出来。<br />
　　是否有if else可以看出你有没有将运行顺序分离到家。<br />
<strong>设计模式的切入口</strong><br />
　　经常有人反映，设计模式是不错，但是我很难用到，其实如果你使用if else来写代码时（除显示控制以外），就是在写业务逻辑，只不过使用简单的判断语句来作为现实情况的替代者。<br />
　　 还是以大家熟悉的论坛帖子为例子，如ForumMessage是一个模型，但是实际中帖子分两种性质：主题贴（第一个根贴）和回帖（回以前帖子的帖子），这里有一个朴素的解决方案：<br />
建立一个ForumMessage，然后在ForumMessage加入isTopic这样判断语句，注意，你这里一个简单属性的判断引入，可能导致你的程序其他地方到处存在if else 的判断。<br />
　　如果我们改用另外一种分析实现思路，以对象化概念看待，实际中有主题贴和回帖，就是两种对象，但是这两种对象大部分是一致的，因此，我将ForumMessage设为表达主题贴；然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖，这样，我在程序地方，如Service中，我已经确定这个Model是回帖了，我就直接下溯为ForumMessageReply即可，这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if else的判断语句出现可能。<br />
　　从这里体现了，如果分析方向错误，也会导致误用模式。<br />
　　讨论设计模式举例，不能没有业务上下文场景的案例，否则无法决定是否该用模式，下面举两个对比的例子：<br />
第一.<a href="http://www.jdon.com/jive/thread.jsp?forum=91&#038;thread=24681" target="_blank"> 这个帖子</a>中举例的第一个代码案例是没有上下文的，文中只说明有一段代码：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">main</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">A</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// do with strategy A</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">(</span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">B</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// do with strategy B</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">(</span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">C</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// do with strategy C</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>　　这段代码只是纯粹的代码，没有业务功能，所以，在这种情况下，我们就很难确定使用什么模式，就是一定用策略模式等，也逃不过还是使用if else的命运，设计模式不是魔法，不能将一段毫无意义的代码变得简单了，只能将其体现的业务功能更加容易可拓展了。<br />
　　第二.在<a href="http://www.jdon.com/jive/thread.jsp?forum=91&#038;thread=24333&#038;message=14484871#14484871" target="_blank">这个帖子</a>中，作者举了一个PacketParser业务案例，这段代码是体现业务功能的，是一个数据包的分析，作者也比较了各种模式使用的不同，所以我们还是使用动态代理模式或Command模式来消灭那些可能存在的if else<br />
　　由以上两个案例表明：业务逻辑是我们使用设计模式的切入点，而在分解业务逻辑时，我们习惯则可能使用if else来实现，当你有这种企图或者已经实现代码了，那么就应该考虑是否需要重构Refactoring了。<br />
<strong>if else</strong><strong>替代者</strong><br />
　　那么实战中，哪些设计模式可以替代if else呢？其实GoF设计模式都可以用来替代if else，我们分别描述如下：<br />
·  状态模式　<br />
　　当数据对象存在各种可能性的状态，而且这种状态将会影响到不同业务结果时，那么我们就应该考虑是否使用状态模式，当然，使用状态模式之前，你必须首先有内存状态这个概念，而不是数据库概念，因为在传统的面向过程的/面向数据库的系统中，你很难发现状态的，从数据库中读取某个值，然后根据这个值进行代码运行分流，这是很多初学者常干的事情。参考文章:<a href="http://www.jdon.com/artichect/state.htm" target="_blank">状态对象：数据库的替代者</a><br />
　　使用传统语言思维的情况还有：使用一个类整数变量标识状态：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Order</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">status</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 说明：</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// status=1 表示订货但为查看 ；</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// status=2 表示已经查看未处理；</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// status=3 表示已经处理未付款</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// status=4 表示已经付款未发货</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// status=5 表示已经发货</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>　　上述类设计，无疑是将类作为传统语言的函数来使用，这样导致程序代码中存在大量的if else。<br />
·  策略模式　<br />
　　当你面临几种算法或者公式选择时，可以考虑策略模式，传统过程语言情况是：从数据库中读取算法数值，数值1表示策略1，例如保存到数据库；数值为2表示策略2，例如保存到XMl文件中。这里使用if else作为策略选择的开关。<br />
·  command模式　<br />
　　传统过程的思维情况是：如果客户端发出代号是1或"A"，那么我调用A.java这个对象来处理；如果代号是2或"B"，我就调用B.java来处理，通过if else来判断客户端发送过来的代码，然后按事先约定的对应表，调用相应的类来处理。<br />
·  MVC模式　<br />
　　MVC模式的传统语言误用和Command模式类似，在一个Action类中，使用if else进行前后台调度，如果客户端传送什么命令；我就调用后台什么结果；如果后台处理什么结构，再决定推什么页面，不过，现在我们使用Struts/JSF这样MVC模式的框架实现者就不必范这种低级错误。<br />
·  职责链模式　<br />
　　职责链模式和Command模式是可选的，如果你实在不知道客户端会发出什么代号；也没有一个事先定义好的对照表，那么你只能编写一个个类去碰运气一样打开这个包看一下就可以。与Command是不同在<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a>一文中有分析。<br />
·  代理或动态代理模式　<br />
　　代理对象可以是符合某种条件的代表者，比如，权限检验，传统面向过程思维是：当一个用户登陆后，访问某资源时，使用if else进行判断，只有某种条件符合时，才能允许访问，这样权限判断和业务数据逻辑混乱在一起，使用代理模式可以清晰分离，如果嫌不太好，使用动态代理，或者下面AOP等方式。</p>
<p align="left">·  AOP或Decorator模式<br />
　　<br />
　　其实使用filter过滤器也可以替代我们业务中的if else，过滤器起到一种过滤和筛选作用，将符合本过滤器条件的对象拦截下来做某件事情，这就是一个过滤器的功能，多个过滤器组合在一起实际就是if else的组合。<br />
　　所以，如果你实在想不出什么办法，可以使用过滤器，将过滤器看成防火墙就比较好理解，当客户端有一个请求时，经过不同性质的防火墙，这个防火墙是拦截端口的；那个防火墙是安全检查拦截等等。过滤器也如同红蓝白各种光滤镜；红色滤镜只能将通过光线中的红色拦截了；蓝色滤镜将光线中的蓝色拦截下来，这实际上是对光线使用if else进行分解。</p>
<p><span /><img id="image11" alt="ifelse" src="http://sunfee.net/blog/wp-content/uploads/2006/04/ifelse.gif" /><br />
　　如图，通过一个个条件过滤器我们立体地实现了对信号的分离，如果你使用if else，说明你是将图中的条件1/2/3/4合并在一起，在同一个地方实现条件判断。<br />
　　需要深入了解过滤器的实现细节和微小区别，请参考文章：<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a><br />
<strong>OO</strong><strong>设计的总结</strong>　　<br />
　　还有一种伪模式，虽然使用了状态等模式，但是在模式内部实质还是使用if else或switch进行状态切换或重要条件判断，那么无疑说明还需要进一步努力。更重要的是，不能以模式自居，而且出书示人。<br />
　　真正掌握面向对象这些思想是一件困难的事情，目前有各种属于揪着自己头发向上拔的解说，都是误人子弟的，所以我觉得初学者读Thinking in Java（Java编程思想）是没有用，它试图从语言层次来讲OO编程思想，非常失败，作为语言参考书可以，但是作为Java体现的OO思想的学习资料，就错了。<br />
　　OO编程思想是一种方法论，方法论如果没有应用比较，是无法体会这个方法论的特点的，禅是古代一个方法论，悟禅是靠挑水砍柴这些应用才能体会。<br />
　　那么OO思想靠什么应用能够体会到了？是GoF设计模式，GoF设计模式是等于软件人员的挑水砍柴等基本活，所以，如果一个程序员连基本活都不会，他何以自居OO程序员？从事OO专业设计编程这个工作，如果不掌握设计模式基本功，就象一个做和尚的人不愿意挑水砍柴，他何以立足这个行业？早就被师傅赶下山。<br />
　　最后总结：将if else用在小地方还可以，如简单的数值判断；但是如果按照你的传统习惯思维，在实现业务功能时也使用if else，那么说明你的思维可能需要重塑，你的编程经验越丰富，传统过程思维模式就容易根深蒂固，想靠自己改变很困难；建议接受<a href="http://www.jdon.com/trainning/j2eearchitect.htm" target="_blank">专业头脑风暴培训</a>。<br />
　　用一句话总结：如果你做了不少系统，很久没有使用if else了，那么说明你可能真正进入OO设计的境地了。（这是本人自己发明的实战性的衡量考核标准）。<br />
<font face="Times New Roman" size="3"> </font></p>

	<div style="clear:both;"></div>标签：<a href="http://blog.sunshow.net/tag/else/" title="else" rel="tag">else</a>, <a href="http://blog.sunshow.net/tag/if/" title="if" rel="tag">if</a>, <a href="http://blog.sunshow.net/tag/%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f/" title="设计模式" rel="tag">设计模式</a><br /><br />
]]></content:encoded>
			<wfw:commentRss>http://blog.sunshow.net/2006/04/%e8%bd%ac%e8%bd%bd%e4%bd%a0%e8%bf%98%e5%9c%a8%e7%94%a8if-else%e5%90%97%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
