﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-罗明的博客-随笔分类-ProgramTech</title><link>http://www.blogjava.net/Andyluo/category/1763.html</link><description>&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;font color="blue"&gt;锻炼身体、提升技能、修身养性&lt;/font&gt;&lt;br&gt;
讨论Eclipse, Java, Linux, Google产品&lt;br&gt;
&lt;/td&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-9685945790422740";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
google_ui_features = "rc:6";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 20 Jul 2007 07:26:41 GMT</lastBuildDate><pubDate>Fri, 20 Jul 2007 07:26:41 GMT</pubDate><ttl>60</ttl><item><title>一个Javascript小把戏（zz）</title><link>http://www.blogjava.net/Andyluo/archive/2007/07/20/coolJS.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Fri, 20 Jul 2007 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2007/07/20/coolJS.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/131402.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2007/07/20/coolJS.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/131402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/131402.html</trackback:ping><description><![CDATA[复制下面的JavaScript代码并粘贴到地址栏。 看看效果&nbsp; : )<br><br><code>
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300;
y4=200; x5=300; y5=200; DI=document.images ; DIL= DI.length; function
A(){for(i=0; i&lt;DIL; i++){DIS=DI[ i ].style; DIS.position='absolute';
DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;
DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0)</code>
<br><br><br>把代码中的images改成links再试试 : )<br><br>转载自<a href="http://weblogs.java.net/blog/kirillcool/archive/2007/07/a_silly_trick_w.html">http://weblogs.java.net/blog/kirillcool/archive/2007/07/a_silly_trick_w.html</a>
<br>  <img src ="http://www.blogjava.net/Andyluo/aggbug/131402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2007-07-20 09:33 <a href="http://www.blogjava.net/Andyluo/archive/2007/07/20/coolJS.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Perl实现HTTP网络下载程序</title><link>http://www.blogjava.net/Andyluo/archive/2007/01/03/perlDown.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Wed, 03 Jan 2007 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2007/01/03/perlDown.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/91628.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2007/01/03/perlDown.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/91628.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/91628.html</trackback:ping><description><![CDATA[
		<p>
		</p>
		<p>先讲讲做这个小程序的动机吧，昨天看了下<a title="哈工大软件学院新闻列表" href="http://software.hit.edu.cn/ch/allnews.aspx" target="_blank">以前学院的新闻</a>，没什么更新，但发现列表很长，保留了2003年1月至今的所有新闻。<br /><br />这个新闻列表是大学期间我们了解学院信息的主要来源，都养成了每天先看新闻再看<a title="哈工大紫丁香BBS" href="http://bbs.hit.edu.cn/" target="_blank">BBS</a>的习惯。在大连实习期间更是如此，也算是产生感情了^__^，所以。。。决定把这700+新闻全部保存下来...<br /><br /><strong>需求：指定一个网址，将这个网页和里面所有的子链接页面都下载下来，保存到指定的文件夹中。<br /><br /></strong>如下图所示：<br /><img alt="news.jpg" src="http://www.blogjava.net/images/blogjava_net/andyluo/news.jpg" border="0" height="316" width="559" /><br /><br /><br />需求有了，怎么完成呢？用<a href="http://www.xunlei.com" target="_blank">迅雷</a>下载全部链接？嗯，这是个好主意，（我确实也这么做了一次，连接数开得太多了，差点被封orz ），但咱们是搞软件的@_@，这个小功能是不是写个程序就能搞定，用<a href="http://www.java.net" target="_blank">Java</a>？想到那一堆Stream的封装（new BufferedReader(new BufferedOutputStream(new FileOutputStream(new File("blabla.html"))))）...我就头晕。<br /><br />小程序用脚本语言？应该不错！<br /><br />用<a href="http://www.perl.com" target="_blank">Perl</a>还是Python？。。。经过一番网上查询论证，似乎：Perl语法复杂，但简练，API库也超级多；Python语法清晰易懂，有点像Java，适合开发大型应用。<br /><br />Java是我的最爱，也算熟悉了，就学点bt的吧，用Perl<br /><br />完成代码期间主要参考了<a href="http://perldoc.perl.org/index-language.html" target="_blank">Perl文档</a>中URL，HTML::LinkExtor，HTTP::Request的用法，<a href="http://www.perlchina.org/" target="_blank">Perl中国</a>的一篇文章<a href="http://www.perlchina.org/archive/archive.php?action=archive&amp;page=15" target="_blank">《LWP与WEB的基本使用》</a>，还占用了J2EE的上课时间来编写程序。。。<br /><br /></p>
		<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
				<span style="color: rgb(0, 128, 128);"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);"> 2</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /># Copyright (C) 2007 罗明 &lt;andyluo197(at)gmail.com&gt;<br /></span>
				<span style="color: rgb(0, 128, 128);"> 3</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />#</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);"> 4</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);"> 5</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> strict </span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">"</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">vars</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">"</span>
				<span style="color: rgb(0, 0, 0);">; </span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);">严格遵循my scope定义</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);"> 6</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);"> 7</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> LWP</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">Simple;<br /></span>
				<span style="color: rgb(0, 128, 128);"> 8</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> HTML</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">LinkExtor;<br /></span>
				<span style="color: rgb(0, 128, 128);"> 9</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> HTTP</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">Request</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">Common;<br /></span>
				<span style="color: rgb(0, 128, 128);">10</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> LWP</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">UserAgent;<br /></span>
				<span style="color: rgb(0, 128, 128);">11</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">use</span>
				<span style="color: rgb(0, 0, 0);"> URI</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">URL;<br /></span>
				<span style="color: rgb(0, 128, 128);">12</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">13</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 从命令行参数中取主网页地址和保存文件夹</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">14</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$url</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$ARGV</span>
				<span style="color: rgb(0, 0, 0);">[</span>
				<span style="color: rgb(128, 0, 0);">0</span>
				<span style="color: rgb(0, 0, 0);">]; <br /></span>
				<span style="color: rgb(0, 128, 128);">15</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$location</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$ARGV</span>
				<span style="color: rgb(0, 0, 0);">[</span>
				<span style="color: rgb(128, 0, 0);">1</span>
				<span style="color: rgb(0, 0, 0);">];<br /></span>
				<span style="color: rgb(0, 128, 128);">16</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">17</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 子程序，解析主网页中的链接地址</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">18</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">@urls</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> ();<br /></span>
				<span style="color: rgb(0, 128, 128);">19</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">sub</span>
				<span style="color: rgb(0, 0, 0);"> urlCallback<br /></span>
				<span style="color: rgb(0, 128, 128);">20</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />{<br /></span>
				<span style="color: rgb(0, 128, 128);">21</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);">(</span>
				<span style="color: rgb(128, 0, 128);">$tag</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">%attr</span>
				<span style="color: rgb(0, 0, 0);">) </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">@_</span>
				<span style="color: rgb(0, 0, 0);">;<br /></span>
				<span style="color: rgb(0, 128, 128);">22</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="color: rgb(0, 0, 255);">return</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">if</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$tag</span>
				<span style="color: rgb(0, 0, 0);"> ne </span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">a</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="color: rgb(0, 0, 0);">;<br /></span>
				<span style="color: rgb(0, 128, 128);">23</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="color: rgb(0, 0, 255);">push</span>
				<span style="color: rgb(0, 0, 0);">(</span>
				<span style="color: rgb(128, 0, 128);">@urls</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">values</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">%attr</span>
				<span style="color: rgb(0, 0, 0);">);<br /></span>
				<span style="color: rgb(0, 128, 128);">24</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />}<br /></span>
				<span style="color: rgb(0, 128, 128);">25</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">26</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 用于解析链接的LinkExtractor</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">27</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$p</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> HTML</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">LinkExtor</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">new(</span>
				<span style="color: rgb(0, 0, 0);">\&amp;</span>
				<span style="color: rgb(0, 0, 0);">urlCallback);<br /></span>
				<span style="color: rgb(0, 128, 128);">28</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">29</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 载入主网页内容，及解析链接地址</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">30</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$ua</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> LWP</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">UserAgent</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">new;<br /></span>
				<span style="color: rgb(0, 128, 128);">31</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$res</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$ua</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">request(HTTP</span>
				<span style="color: rgb(0, 0, 0);">::</span>
				<span style="color: rgb(0, 0, 0);">Request</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">new(GET </span>
				<span style="color: rgb(0, 0, 0);">=&gt;</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$url</span>
				<span style="color: rgb(0, 0, 0);">)</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">sub</span>
				<span style="color: rgb(0, 0, 0);">{</span>
				<span style="color: rgb(128, 0, 128);">$p</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">parse(</span>
				<span style="color: rgb(128, 0, 128);">$_</span>
				<span style="color: rgb(0, 0, 0);">[</span>
				<span style="color: rgb(128, 0, 0);">0</span>
				<span style="color: rgb(0, 0, 0);">])});<br /></span>
				<span style="color: rgb(0, 128, 128);">32</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">33</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 将链接的相对路径转换为绝对路径</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">34</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$base</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$res</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">base;<br /></span>
				<span style="color: rgb(0, 128, 128);">35</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(128, 0, 128);">@urls</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">map</span>
				<span style="color: rgb(0, 0, 0);"> {</span>
				<span style="color: rgb(128, 0, 128);">$_</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> url(</span>
				<span style="color: rgb(128, 0, 128);">$_</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$base</span>
				<span style="color: rgb(0, 0, 0);">) </span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 255);">abs</span>
				<span style="color: rgb(0, 0, 0);">} </span>
				<span style="color: rgb(128, 0, 128);">@urls</span>
				<span style="color: rgb(0, 0, 0);">;<br /></span>
				<span style="color: rgb(0, 128, 128);">36</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">37</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 128, 0);">#</span>
				<span style="color: rgb(0, 128, 0);"> 将网页写入文件</span>
				<span style="color: rgb(0, 128, 0);">
						<br />
				</span>
				<span style="color: rgb(0, 128, 128);">38</span>
				<span style="color: rgb(0, 128, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(128, 0, 128);">$ua</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">request(GET(</span>
				<span style="color: rgb(128, 0, 128);">$url</span>
				<span style="color: rgb(0, 0, 0);">)</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$location</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">.</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">\\index.html</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="color: rgb(0, 0, 0);">);<br /></span>
				<span style="color: rgb(0, 128, 128);">39</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">my</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$index</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">=</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 0);">1</span>
				<span style="color: rgb(0, 0, 0);">;<br /></span>
				<span style="color: rgb(0, 128, 128);">40</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="color: rgb(0, 0, 255);">foreach</span>
				<span style="color: rgb(0, 0, 0);">(</span>
				<span style="color: rgb(128, 0, 128);">@urls</span>
				<span style="color: rgb(0, 0, 0);">)<br /></span>
				<span style="color: rgb(0, 128, 128);">41</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />{<br /></span>
				<span style="color: rgb(0, 128, 128);">42</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="color: rgb(128, 0, 128);">$ua</span>
				<span style="color: rgb(0, 0, 0);">-&gt;</span>
				<span style="color: rgb(0, 0, 0);">request(GET(</span>
				<span style="color: rgb(128, 0, 128);">$_</span>
				<span style="color: rgb(0, 0, 0);">)</span>
				<span style="color: rgb(0, 0, 0);">,</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$location</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">.</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">\\</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">.</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(128, 0, 128);">$index</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="color: rgb(0, 0, 0);">.</span>
				<span style="color: rgb(0, 0, 0);"> </span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">.html</span>
				<span style="font-weight: bold; color: rgb(0, 0, 0);">'</span>
				<span style="color: rgb(0, 0, 0);">);<br /></span>
				<span style="color: rgb(0, 128, 128);">43</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="color: rgb(128, 0, 128);">$index</span>
				<span style="color: rgb(0, 0, 0);">+=</span>
				<span style="color: rgb(128, 0, 0);">1</span>
				<span style="color: rgb(0, 0, 0);">;<br /></span>
				<span style="color: rgb(0, 128, 128);">44</span>
				<span style="color: rgb(0, 0, 0);">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />}</span>
		</div>
		<p>
				<br />主网页保存为index.html，子网页按1、2、3排序生成1.html、2.html等<br /><br />因为有<a href="http://desktop.google.com" target="_blank">Google Desktop</a>，即使文件名是1.html...，搜索起来也是很方便的。也可以扩充下，将&lt;a&gt;&lt;/a&gt;中的新闻主题抽出来作为文件名。但这个程序对我来说已经足够了，所以就不继续做了。<br /><br />总的来说用Perl还是很简单的，库也很多，写起来挺方便！但是要记得常翻翻<a href="http://perldoc.perl.org/index-language.html" target="_blank">Perl手册</a>，呵呵<br /><br />Technorati Tag :  <a href="http://technorati.com/tag/perl" target="_blank">Perl </a><a href="http://technorati.com/tag/LWP" target="_blank">LWP</a>  <a href="http://technorati.com/tag/download" target="_blank">Download</a>  <a href="http://technorati.com/tag/web" target="_blank">web</a>  <a href="http://technorati.com/tag/script" target="_blank">script</a></p>
<img src ="http://www.blogjava.net/Andyluo/aggbug/91628.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2007-01-03 21:00 <a href="http://www.blogjava.net/Andyluo/archive/2007/01/03/perlDown.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么用PreparedStatement而不是直接用"+"连接SQL语句</title><link>http://www.blogjava.net/Andyluo/archive/2006/11/01/78549.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Wed, 01 Nov 2006 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2006/11/01/78549.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/78549.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2006/11/01/78549.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/78549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/78549.html</trackback:ping><description><![CDATA[
		<p>最开始 我在程序里使用SQL访问数据库时，都是直接用“+”将字段值嵌到SQL中。  </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">String sql </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">select s.name from student s where s.id='</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> sId </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">"；</span>
		</div>
		<br />
		<p>
				<br />后来我开始使用<strong>PreparedStatement</strong>，在SQL里使用“？”标记参数，然后用setXXX方法给参数赋值。当时只知道这样用是因为有<strong>setDate，setTimeStamp</strong>这些用“+”连接不能直接嵌入的值。<br /><br />感觉PreparedStatement在<strong>性能</strong>方面应该也能快点，可能DBMS会重用，但不明底层原理。<br /><br />这次《数据库实现》课程终于让我弄懂了：<strong>每个SQL语句都要通过 语法分析 -&gt; 生成逻辑查询计划 -&gt; 逻辑优化 -&gt; 物理优化</strong> 等步骤生成具体的执行计划，用PreparedStatement就可以生成一个执行计划，以后只是参数改变（相当于执行计划的<strong>执行环境改变</strong>），前面的四个步骤也会<strong>省略</strong>，从而提高了效率。<br /><br />如果一个SQL语句要被反复多次执行，或多用户同时操作，则应选用PreparedStatement！</p>
<img src ="http://www.blogjava.net/Andyluo/aggbug/78549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2006-11-01 20:18 <a href="http://www.blogjava.net/Andyluo/archive/2006/11/01/78549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web2.0的时代到来了吗？</title><link>http://www.blogjava.net/Andyluo/archive/2006/03/10/34629.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Fri, 10 Mar 2006 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2006/03/10/34629.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/34629.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2006/03/10/34629.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/34629.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/34629.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有越来越多的迹象表明Web2.0之类的东西渐渐深入网络的各个角落，无论是Google Maps，Gmail，Flickr还是国内的163邮箱、365kit、豆瓣网，都把Ajax之类代表Web2.0的技术发挥得淋漓尽致，撇开他们用的技术不管，单从他们提高的用户交互“流畅感”，就可以说是对Web技术的一次改革。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以前的Web应用从功能方面考虑的因素比较多，对提升用户体验度所做的工作很少，现在的Web2.0应用则从用户的角度入手，把提升用户体验度当成第一目标。以前不喜欢搞Web开发，更不喜欢用JavaScript，感觉那些东东只能做些美化界面的活，做些动画什么的，因为当初认为它只能在客户端发挥作用，而现在JavaScript和异步传输结合，就把服务器的地盘也夺过来了。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如今，Web2.0应用的复杂度已经可以与大型应用媲美了，很多提高用户体验度的东东都要在后台做大量有技术难度的工作，如365kit的通讯录同步功能，就要在与Outlook、MSN、手机交互中下很大工夫。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在还没有时间，要忙着做项目和毕业设计，等过一阵子，一定要研究一下Ajax和JavaScript，并做出个像样的应用来。也希望以后能做出个好的应用，有市场的，慢慢把它做大，推广，现在不流行网络创业吗，呵呵，而且门槛也比较低，要的硬件和资金不多，主要是应用要有市场、有创意！<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Web2.0火了，我们又多了一条路！<BR><BR>（写得不好，欢迎大家拍砖）<BR><BR><BR>续：<BR>RIA应该也是一种实现Web2.0的技术？ <BR><BR>Web2.0应该是一种思想，是通过提高用户体验度来赢得市场，实现它的技术有很多，只要能达到提高用户体验度的目的，我们就可以说它“是”Web2.0，不是吗？ <BR><BR>RIA技术我知道的好像有三种：1、Flex 2、Eclipse RCP 3、Ajax&nbsp; 4、Java Web Start<BR></P><img src ="http://www.blogjava.net/Andyluo/aggbug/34629.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2006-03-10 11:42 <a href="http://www.blogjava.net/Andyluo/archive/2006/03/10/34629.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使应用具有快速更换数据库能力</title><link>http://www.blogjava.net/Andyluo/archive/2005/10/06/14878.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Thu, 06 Oct 2005 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2005/10/06/14878.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/14878.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2005/10/06/14878.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/14878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/14878.html</trackback:ping><description><![CDATA[<P>问题虚拟背景：<BR>A项目组要实现一个基于Sql Server的应用，但工作环境只安装有MySql（公司对开源比较看好: )），而且客户有可能会转移到Oracle数据库环境。要求应用具有数据库移植能力和快速更换能力，使应用在工作环境调试成功后能迅速转移到客户的Sql Server环境，而且将来可以方便地转向Oracle。</P>
<P>Andy提出的可用方案：<BR>1、使用标准JDBC<BR>2、使用抽象类定义数据访问单元<BR>3、定义具体数据源访问单元继承2中接口</P>
<P>代码示例：<BR>定义数据访问单元抽象类，包含数据访问逻辑</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">abstract</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;DataManager<BR><IMG id=Codehighlighter1_34_345_Open_Image onclick="this.style.display='none'; Codehighlighter1_34_345_Open_Text.style.display='none'; Codehighlighter1_34_345_Closed_Image.style.display='inline'; Codehighlighter1_34_345_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_34_345_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_34_345_Closed_Text.style.display='none'; Codehighlighter1_34_345_Open_Image.style.display='inline'; Codehighlighter1_34_345_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_34_345_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_34_345_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;conString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;String&nbsp;urlString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;DataType[&nbsp;]&nbsp;getData()<BR><IMG id=Codehighlighter1_153_224_Open_Image onclick="this.style.display='none'; Codehighlighter1_153_224_Open_Text.style.display='none'; Codehighlighter1_153_224_Closed_Image.style.display='inline'; Codehighlighter1_153_224_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_153_224_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_153_224_Closed_Text.style.display='none'; Codehighlighter1_153_224_Open_Image.style.display='inline'; Codehighlighter1_153_224_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_153_224_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_153_224_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;<IMG src="http://www.blogjava.net/images/dot.gif">&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">fetch&nbsp;data&nbsp;using&nbsp;standard&nbsp;JDBC&nbsp;with&nbsp;conString&nbsp;and&nbsp;urlString</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;setData(DataType[&nbsp;]&nbsp;dataArray)<BR><IMG id=Codehighlighter1_272_343_Open_Image onclick="this.style.display='none'; Codehighlighter1_272_343_Open_Text.style.display='none'; Codehighlighter1_272_343_Closed_Image.style.display='inline'; Codehighlighter1_272_343_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_272_343_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_272_343_Closed_Text.style.display='none'; Codehighlighter1_272_343_Open_Image.style.display='inline'; Codehighlighter1_272_343_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_272_343_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_272_343_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;<IMG src="http://www.blogjava.net/images/dot.gif">&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">store&nbsp;data&nbsp;using&nbsp;standard&nbsp;JDBC&nbsp;with&nbsp;conString&nbsp;and&nbsp;urlString</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN></DIV>
<P>定义具体数据源访问单元</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;HsqlDataManager&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000">&nbsp;DataManager<BR><IMG id=Codehighlighter1_49_153_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_153_Open_Text.style.display='none'; Codehighlighter1_49_153_Closed_Image.style.display='inline'; Codehighlighter1_49_153_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_49_153_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_153_Closed_Text.style.display='none'; Codehighlighter1_49_153_Open_Image.style.display='inline'; Codehighlighter1_49_153_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_49_153_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_49_153_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_60_151_Open_Image onclick="this.style.display='none'; Codehighlighter1_60_151_Open_Text.style.display='none'; Codehighlighter1_60_151_Closed_Image.style.display='inline'; Codehighlighter1_60_151_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_60_151_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_151_Closed_Text.style.display='none'; Codehighlighter1_60_151_Open_Image.style.display='inline'; Codehighlighter1_60_151_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_60_151_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_60_151_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;conString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">org.hsqldb.jdbcDriver</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;urlString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">jdbc:hsqldb:db/YourDatabaseName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;OdbcBlogManager&nbsp;</SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000">&nbsp;AbstractBlogManager<BR><IMG id=Codehighlighter1_213_322_Open_Image onclick="this.style.display='none'; Codehighlighter1_213_322_Open_Text.style.display='none'; Codehighlighter1_213_322_Closed_Image.style.display='inline'; Codehighlighter1_213_322_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_213_322_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_213_322_Closed_Text.style.display='none'; Codehighlighter1_213_322_Open_Image.style.display='inline'; Codehighlighter1_213_322_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_213_322_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_213_322_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_224_320_Open_Image onclick="this.style.display='none'; Codehighlighter1_224_320_Open_Text.style.display='none'; Codehighlighter1_224_320_Closed_Image.style.display='inline'; Codehighlighter1_224_320_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_224_320_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_224_320_Closed_Text.style.display='none'; Codehighlighter1_224_320_Open_Image.style.display='inline'; Codehighlighter1_224_320_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_224_320_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_224_320_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;conString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">sun.jdbc.odbc.JdbcOdbcDriver</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;urlString&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">jdbc:odbc:db/YourDatabaseName</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P><BR>在调用数据访问层时，可以声明一个DataManager的引用，然后在构造器中实例化为具体子类，如：</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Andy<BR><IMG id=Codehighlighter1_18_220_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_220_Open_Text.style.display='none'; Codehighlighter1_18_220_Closed_Image.style.display='inline'; Codehighlighter1_18_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_18_220_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_220_Closed_Text.style.display='none'; Codehighlighter1_18_220_Open_Image.style.display='inline'; Codehighlighter1_18_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_18_220_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_18_220_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;DataManager&nbsp;dataManager&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;Andy<BR><IMG id=Codehighlighter1_77_152_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_152_Open_Text.style.display='none'; Codehighlighter1_77_152_Closed_Image.style.display='inline'; Codehighlighter1_77_152_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_77_152_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_77_152_Closed_Text.style.display='none'; Codehighlighter1_77_152_Open_Image.style.display='inline'; Codehighlighter1_77_152_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_77_152_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_77_152_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;dataManager&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;HsqlDataManager();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">或者在资源文件里填写具体子类，然后在这里动态加载并实例化</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;doSomething()<BR><IMG id=Codehighlighter1_184_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_184_218_Open_Text.style.display='none'; Codehighlighter1_184_218_Closed_Image.style.display='inline'; Codehighlighter1_184_218_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_184_218_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_184_218_Closed_Text.style.display='none'; Codehighlighter1_184_218_Open_Image.style.display='inline'; Codehighlighter1_184_218_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</SPAN><SPAN id=Codehighlighter1_184_218_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_184_218_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;dataManager.getData();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;<IMG src="http://www.blogjava.net/images/dot.gif"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P><BR>以后要迁移到另一个数据库（有JDBC驱动），只需定义具体子类继承DataManager（如HsqlDataManager），然后修改资源文件中的DataManager名称（或者将new的类名改一下），不需要修改代码。</P>
<P>这兴许可以解释另一个问题：不赞成使用存储过程，而应将SQL语句嵌在代码中（适用于Java；微软注定.Net不会有平台移植性，数据库大都用Sql Server，所以写存储过程还是比较好的）。<BR><BR>（我在我的一个Eclipse RCP项目里使用了这种模式，从Sql server 2000到Hsql，特别方便，看起来感觉也比较好）<BR><BR>欢迎大家拍转，^_^</P><img src ="http://www.blogjava.net/Andyluo/aggbug/14878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2005-10-06 15:49 <a href="http://www.blogjava.net/Andyluo/archive/2005/10/06/14878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这样可以使用户不能关闭IE吗？</title><link>http://www.blogjava.net/Andyluo/archive/2005/06/13/6254.html</link><dc:creator>罗明</dc:creator><author>罗明</author><pubDate>Sun, 12 Jun 2005 20:45:00 GMT</pubDate><guid>http://www.blogjava.net/Andyluo/archive/2005/06/13/6254.html</guid><wfw:comment>http://www.blogjava.net/Andyluo/comments/6254.html</wfw:comment><comments>http://www.blogjava.net/Andyluo/archive/2005/06/13/6254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Andyluo/comments/commentRss/6254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Andyluo/services/trackbacks/6254.html</trackback:ping><description><![CDATA[<P>我们在IE里编辑blog时，如果按下关闭按钮，会弹出一个确认对话框，点“取消”之后IE不会关闭。</P>
<P>这是不是能实现rt功能？是什么促使对话框的弹出，是JS还是内嵌的word或其他？</P>
<P>以前有人问过怎么避免用户误关闭IE，当时觉得不可能实现（那不成病毒网页了吗？），现在发现好像还是可以的，山外有山啊！！！</P>
<P>得出一个道理: 多接触一点东西，趁现在年轻</P><img src ="http://www.blogjava.net/Andyluo/aggbug/6254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Andyluo/" target="_blank">罗明</a> 2005-06-13 04:45 <a href="http://www.blogjava.net/Andyluo/archive/2005/06/13/6254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>