﻿<?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-DiveInto</title><link>http://www.blogjava.net/mmliu/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 18 Jun 2026 23:47:38 GMT</lastBuildDate><pubDate>Thu, 18 Jun 2026 23:47:38 GMT</pubDate><ttl>60</ttl><item><title>{TODO}面面面之阿里巴巴</title><link>http://www.blogjava.net/mmliu/articles/321420.html</link><dc:creator>mmLiu</dc:creator><author>mmLiu</author><pubDate>Wed, 19 May 2010 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/mmliu/articles/321420.html</guid><wfw:comment>http://www.blogjava.net/mmliu/comments/321420.html</wfw:comment><comments>http://www.blogjava.net/mmliu/articles/321420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mmliu/comments/commentRss/321420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mmliu/services/trackbacks/321420.html</trackback:ping><description><![CDATA[1.<a>merge sort</a><br />
<br />
2.线程安全<br />
<br />
3.冒泡,快排,堆,插入&nbsp; 排序<br />
<br />
4.时间复杂度<br />
<br />
5.二叉树<br />
<br />
6.java=&gt;继承,protected 父子...<br />
<br />
7.Linux 基础 
<img src ="http://www.blogjava.net/mmliu/aggbug/321420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mmliu/" target="_blank">mmLiu</a> 2010-05-19 23:01 <a href="http://www.blogjava.net/mmliu/articles/321420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Silly Window Syndrom[窗口犯傻综合症]  {TCP相关}</title><link>http://www.blogjava.net/mmliu/articles/319904.html</link><dc:creator>mmLiu</dc:creator><author>mmLiu</author><pubDate>Sun, 02 May 2010 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/mmliu/articles/319904.html</guid><wfw:comment>http://www.blogjava.net/mmliu/comments/319904.html</wfw:comment><comments>http://www.blogjava.net/mmliu/articles/319904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mmliu/comments/commentRss/319904.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mmliu/services/trackbacks/319904.html</trackback:ping><description><![CDATA[<p>早期的TCP实现,本来是为了 提高传输效率&amp;&amp;控制传输速率 而存在的滑动窗口[Sliding window] 机制,在发送方和接收方 生产和消耗数据的速率差异较大时,会产生一种比较犯傻的传输状态:发送方发送的数据报文[Segment] 具有一个大大的头部,附带的数据却少得可怜.<br />
<br />
<span style="font-size: 18pt"><span style="font-size: 14pt"><strong style="font-size: 14pt">犯傻症的产生<br />
</strong></span></span><br />
考虑以下两种情况:<br />
&nbsp;&nbsp;&nbsp; 1.接收方的应用程序读取数据老慢老慢,一次只1byte.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以想见,很快,接收方的缓存被填满,于是回发窗口通告[window advtisement]说:已满,勿发.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下来,应用程序慢吞吞的读入1byte,缓存空余出来一字节,兴高采烈的再次回发窗口通告说:一字节可用,快来填满我.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发送方接到通告,生成并传送数据部分只一字节的报文.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后,如此重复.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;很明显,这样不好,效率太低. 一般TCP报文头部大小最少也是<a style="background-color: #99cc00" href="http://www.2808c.cn/wljs/wljczs/04168487.shtml">20字节</a>,结果只拖这么点数据过去,头部的处理(校验和的计算,流的序列号的读取,数据的提取),到IP数据报的封装及相应的解封 又要照行不误,实在效率忒也底下了.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;2.相应的是发送方的应用程序,产出数据慢,一次一字节,一字节一个报文,也会导致效率问题.<br />
<br />
<span style="font-size: 14pt"><strong><span style="font-size: 18pt"><span style="font-size: 14pt"><strong><span style="font-size: 24pt"><strong style="font-size: 14pt"><strong>犯傻症的</strong>防治</strong></span></strong></span></span><br />
</strong>&nbsp;&nbsp;<span style="font-size: 18pt"><span style="font-size: 10pt">&nbsp;</span><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt">1.接收方<br />
</span></span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.对每一个到达的TCP报文回送ACK,但在窗口的空余增大到指定大小之前,我都不会报告窗口的大小,免得回送一个1byte,你就想也不想就发个报文过来.</span></span></span><span style="font-size: 12pt"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.或者,延迟ACK的发送.并不一定对每个TCP报文都回送ACK,而是每个报文到达后,稍等片刻.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;</span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><strong>Adventage</strong>:<br />
</span></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.减少交通流量.一个ACK可能对多个报文做出确认回复,不用一一回复啦.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.Piggyback. 当接收方收到数据后需要回送数据时,可以在回送数据的TCP报文中<strong>捎带[piggyback</strong>] ACK确认,同样减少了网络流量.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.&nbsp;窗口通告[window advertizement]是在数据于缓冲区被读取后才发出的,这和对应的报文的到达时间有一定延后,而ACK的延迟发送就可能等待到窗口大小的改变，两者一起回发（又是piggyback?）,同样减少了数据流量.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><strong>Disadventage</strong></span>:<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.报文重传时间是根据报文来回时间推测而来的.ACK延迟策略影响了对合理重传时间的判断,本来一秒钟就到了的,结果延迟设定的时间太夸张,用了十秒,这边的传送方就说那好吧,就15秒吧,15秒还不到我就算你报文丢失了,直接结果就是反应迟钝,正常的5秒钟就可以判定丢失的,偏要等到15秒,好难等啊...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.另外,延迟时间太夸张了,最直接的结果就是发送方等啊等,没等到,干脆重传了(其实那报文早到了,没回送确认而已),这样添加了无谓的重传,增加网络负担.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 14pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp; </span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><strong>Solve</strong>:<br />
</span></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相应的解决方法简单得很,既然都是延迟时间太夸张导致的,我就把延迟时间设个上限呗,现在的建议是0.5秒.<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">&nbsp;2.发送方&nbsp;<strong>&nbsp;</strong></span><span style="font-size: 18pt"><strong>&nbsp;</strong></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: 10pt">想象一下,为了避免传输小数据报,可以让TCP稍等一会儿,待到数据聚集多后,一起发送,嗯,想法不错,不过等多少时间呢?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.5秒?50秒?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关键是TCP应对的对象是多种多样滴,可以是人,是打字快的人,是半小时打一个字的打字慢的人,是5M/S的文件传输.....<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对人,0.5秒太短,对文件传输,时间又太长.故时间的选择是一个问题.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 想一种自适应的策略出来.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.对打字慢的人来讲,不应该强行奢望说每个报文都携带大量数据,不然应用程序延迟太大,聊QQ我打一行字不一定有20byte呢,结果你强行说100byte我再给你发,我不是很郁闷.所以这种情况理想下应该及时发送,相比人的慢速,网络的ACK是到的快的,所以但凡ACK到达,我就发送下一数据报,而不理睬是否报文数据达到一定大小(这样就没有提高传输效率一说了,不过程序嘛,当然用户体验第一啦,小牺牲一下效率也是值得滴).<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.对传输大户比如文件传输呢?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还发一个报文,乖乖等ACK然后再发下一个就太慢了吧,乖乖,我可是10M/S的速度写入啊,这时就应该藐视ACK,只要缓冲区数据写入填满了最大报文,就立刻发送,毫不等待(当然了,还是得遵循滑动窗口的限制吧,<span style="color: red">猜测,待确认</span>).<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而兼容以上两种情况的策略就诞生了:<br />
</span><br />
</span></span><span style="text-align: center; widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 22px; font-family: Arial, Helvetica, sans-serif; color: rgb(61,61,61); font-size: 14px" class="Apple-style-span"></p>
<p style="padding-bottom: 0px; line-height: 22px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; padding-top: 0px"><font style="line-height: 25px" size="3"><span style="font-size: 12pt"><span style="font-size: 10pt"><span><font style="line-height: 25px"><span style="line-height: 25px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em> </em>1 .</span><span class="Apple-converted-space">&nbsp;对从应用程序收到的第一块数据,</span></font>发送端的</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">TCP</font></span><span style="line-height: 25px; font-family: 宋体">直接将它发送出去，哪怕只有一个字节。</span></span></span></font></p>
<p style="padding-bottom: 0px; line-height: 22px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; padding-top: 0px"><font style="line-height: 25px" size="3"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px"><span style="line-height: 25px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2</span><span class="Apple-converted-space">&nbsp;.此</span></font></span><span style="line-height: 25px; font-family: 宋体">后，发送端的</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">TCP</font></span><span style="line-height: 25px; font-family: 宋体">就在输出缓存中积累数据，并等待：或者接收端的</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">TCP</font></span><span style="line-height: 25px; font-family: 宋体">发送出一个确认，或者数据已积累到可以装成一个最大的报文段。二者满足其一，发送端的</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">TCP</font></span><span style="line-height: 25px; font-family: 宋体">就可以发送这个报文段。</span></span></span></font></p>
<p style="padding-bottom: 0px; line-height: 22px; margin: 0cm 0cm 0pt; padding-left: 0px; padding-right: 0px; padding-top: 0px"><font style="line-height: 25px" size="3"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px"><span style="line-height: 25px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.</span></font></span><span style="line-height: 25px; font-family: 宋体">对剩下的传输，重复步骤</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">2</font></span><span style="line-height: 25px; font-family: 宋体">。这就是：如果收到了对报文段</span><span style="line-height: 25px" lang="EN-US"><font style="line-height: 25px">x</font></span><span style="line-height: 25px; font-family: 宋体">的确认，或者数据已积累到可以装成一个最大的报文段，那么就发送下一个报文段</span></span></span><span><span style="font-size: 12pt"><span style="font-size: 10pt"><font style="line-height: 25px">(x + 1)</font>。<br />
<br />
&nbsp;&nbsp; (我看的《Intenetworking with TCP/IP》中，作者评价这个策略是Surpring and Elegant.赞赏之情溢于言表.</span></span></span></font></p>
</span></span>
<p><br />
<br />
<br />
<br />
<br />
<br />
&nbsp;</p>
</span></span>
 <img src ="http://www.blogjava.net/mmliu/aggbug/319904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mmliu/" target="_blank">mmLiu</a> 2010-05-02 22:37 <a href="http://www.blogjava.net/mmliu/articles/319904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络中基本传输单元的命名:Frame Datagram Segment and Packet</title><link>http://www.blogjava.net/mmliu/articles/319895.html</link><dc:creator>mmLiu</dc:creator><author>mmLiu</author><pubDate>Sun, 02 May 2010 11:52:00 GMT</pubDate><guid>http://www.blogjava.net/mmliu/articles/319895.html</guid><wfw:comment>http://www.blogjava.net/mmliu/comments/319895.html</wfw:comment><comments>http://www.blogjava.net/mmliu/articles/319895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mmliu/comments/commentRss/319895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mmliu/services/trackbacks/319895.html</trackback:ping><description><![CDATA[<br />
不同的网络层对应不同的传输单元,自上而下:<br />
<br />
&nbsp; <span style="color: red">TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>(Transport layer 传输层)&nbsp;&nbsp;==&gt; <span style="color: red">Segment&nbsp; </span>[报文]<br />
&nbsp;&nbsp;&nbsp; <span style="color: red">IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>(Network layer 网际层)&nbsp;&nbsp; ==&gt; <span style="color: red">Datagram&nbsp; </span>[数据报]<br />
<span style="color: red">Ethernet&nbsp;&nbsp; </span>(Link layer&nbsp; 链路层)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ==&gt; <span style="color: red">Frame&nbsp;&nbsp;</span>[帧]<br />
<br />
另外,存在一个泛称,通指所有层的基本传输单元:<br />
<br />
&nbsp; <span style="color: red">Packet </span>[分组]<br />
<br />
<br />
更多可以参考<a style="background-color: #99cc00" href="http://www.nsrc.org/workshops/2004/SANOG-IV/ip-services/presentations/ip-intro/ipbasics/sld013.htm">这里</a>. 
<img src ="http://www.blogjava.net/mmliu/aggbug/319895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mmliu/" target="_blank">mmLiu</a> 2010-05-02 19:52 <a href="http://www.blogjava.net/mmliu/articles/319895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速排序_quickSort</title><link>http://www.blogjava.net/mmliu/articles/319031.html</link><dc:creator>mmLiu</dc:creator><author>mmLiu</author><pubDate>Wed, 21 Apr 2010 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/mmliu/articles/319031.html</guid><wfw:comment>http://www.blogjava.net/mmliu/comments/319031.html</wfw:comment><comments>http://www.blogjava.net/mmliu/articles/319031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mmliu/comments/commentRss/319031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mmliu/services/trackbacks/319031.html</trackback:ping><description><![CDATA[<br />
&nbsp;&nbsp; 感觉义无反顾的再次在边界问题上纠结良久:<br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 到底两边夹击的i和j 相遇之后返回pivot的操作如何处理?<br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 两个极限情况的考虑:<br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1. i一路高歌到底,与j碰头 <br />
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2.j顺流直下,直接到i<br />
&nbsp;&nbsp; 闲话不多说,上代码:
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span></div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span></span></div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><span style="color: #000000; "><br />
</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;*&nbsp;Demo&nbsp;of&nbsp;how&nbsp;to&nbsp;quick&nbsp;sort&nbsp;an&nbsp;array<br />
&nbsp;*&nbsp;<br />
&nbsp;*&nbsp;Author:&nbsp;mmLiu<br />
&nbsp;*&nbsp;Date&nbsp;&nbsp;:&nbsp;2010_4_21<br />
&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getRandom();<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;qSort(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;low,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;high);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">generate&nbsp;random&nbsp;array&nbsp;and&nbsp;print&nbsp;it</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[</span><span style="color: #000000; ">20</span><span style="color: #000000; ">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">20</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">getRandom();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">befor&nbsp;sort\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">20</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">sort&nbsp;the&nbsp;array&nbsp;and&nbsp;print&nbsp;the&nbsp;result&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;qSort(a,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">19</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">befor&nbsp;sort\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">20</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,a[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br />
}<br />
<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">quick&nbsp;sort</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;qSort(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;low,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;high){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;partition(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;low,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;high);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(low</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">high){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;pivot</span><span style="color: #000000; ">=</span><span style="color: #000000; ">partition(a,low,high);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">iterate</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qSort(a,low,pivot</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qSort(a,pivot</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,high);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">seperate&nbsp;the&nbsp;array&nbsp;into&nbsp;2&nbsp;parts,smaller&nbsp;part&nbsp;and&nbsp;bigger&nbsp;part,return&nbsp;the&nbsp;pivot</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;partition(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;low,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;high){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;swap(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">low</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j</span><span style="color: #000000; ">=</span><span style="color: #000000; ">high;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(a[i]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">a[low]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(a[j]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">a[low]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(a,i,j);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">==</span><span style="color: #000000; ">j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(a[i]</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">a[low]){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(a,i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,low);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(a[i]</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">a[low]){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(a,i,low);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">swap&nbsp;position&nbsp;in&nbsp;arrray</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;swap(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a[],</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;temp</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[j]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">temp;<br />
}<br />
<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">get&nbsp;random&nbsp;number&nbsp;</span><span style="color: #008000; "><br />
</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getRandom(){<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">+</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)(</span><span style="color: #000000; ">100.0</span><span style="color: #000000; ">*</span><span style="color: #000000; ">rand()</span><span style="color: #000000; ">/</span><span style="color: #000000; ">(RAND_MAX</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1.0</span><span style="color: #000000; ">));<br />
}</span></div>
<img src ="http://www.blogjava.net/mmliu/aggbug/319031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mmliu/" target="_blank">mmLiu</a> 2010-04-21 22:01 <a href="http://www.blogjava.net/mmliu/articles/319031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 使用体验</title><link>http://www.blogjava.net/mmliu/articles/318898.html</link><dc:creator>mmLiu</dc:creator><author>mmLiu</author><pubDate>Tue, 20 Apr 2010 13:44:00 GMT</pubDate><guid>http://www.blogjava.net/mmliu/articles/318898.html</guid><wfw:comment>http://www.blogjava.net/mmliu/comments/318898.html</wfw:comment><comments>http://www.blogjava.net/mmliu/articles/318898.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mmliu/comments/commentRss/318898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mmliu/services/trackbacks/318898.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>利用反射,根据文件配置,进行对象的实例化操作.<br />
<br />
如下是做Migrate CSV data to DB2 时使用到得spring.xml 配置文件:<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 132.75%; padding-right: 5px; height: 1606px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;beans&nbsp;PUBLIC&nbsp;"-//SPRING//DTD&nbsp;BEAN//EN"<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.springframework.org/dtd/spring-beans.dtd"&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">Configure&nbsp;CSVMigrationManager</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="csvMigrationManager"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="com.ibm.pw.pps.CSVMigrationManager"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;is&nbsp;for&nbsp;filtering&nbsp;csv&nbsp;files&nbsp;in&nbsp;a&nbsp;directory.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="fileFilter"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.filefilter.CSVFileFilter"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">If&nbsp;this&nbsp;is&nbsp;true,&nbsp;the&nbsp;table&nbsp;definition&nbsp;file&nbsp;for&nbsp;each&nbsp;csv&nbsp;file&nbsp;will&nbsp;be&nbsp;generated.&nbsp;The&nbsp;name&nbsp;of&nbsp;the&nbsp;definition&nbsp;file&nbsp;is&nbsp;the&nbsp;csv&nbsp;file's&nbsp;name&nbsp;appended&nbsp;by&nbsp;".def.xml".&nbsp;This&nbsp;is&nbsp;optional,&nbsp;default&nbsp;to&nbsp;false</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="generateTableDefinitionFile"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;path&nbsp;of&nbsp;the&nbsp;input&nbsp;csv&nbsp;file.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="inputPath"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="test_files/in.csv"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;name&nbsp;of&nbsp;the&nbsp;Migrator&nbsp;instance&nbsp;to&nbsp;use&nbsp;to&nbsp;perform&nbsp;migration.&nbsp;The&nbsp;command&nbsp;line&nbsp;can&nbsp;use&nbsp;"-migrator"&nbsp;option&nbsp;to&nbsp;override&nbsp;this&nbsp;property.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="selectedMigratorName"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="xml"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;parameters&nbsp;that&nbsp;are&nbsp;passed&nbsp;into&nbsp;the&nbsp;selected&nbsp;Migrator&nbsp;instance's&nbsp;migrate()&nbsp;method.<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Some&nbsp;migrator&nbsp;might&nbsp;need&nbsp;this.&nbsp;For&nbsp;example,&nbsp;CSVToXMLMigrator&nbsp;needs&nbsp;the&nbsp;output&nbsp;path.&nbsp;This&nbsp;is&nbsp;optional,&nbsp;default&nbsp;to&nbsp;an&nbsp;empty&nbsp;map.</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="migratorParameters"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="outputPath"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="test_files/in.csv.xml"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;is&nbsp;a&nbsp;map&nbsp;of&nbsp;one&nbsp;or&nbsp;more&nbsp;Migrator&nbsp;instances&nbsp;configured&nbsp;to&nbsp;be&nbsp;used.&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Only&nbsp;one&nbsp;of&nbsp;them(named&nbsp;by&nbsp;selectedMigratorName)&nbsp;is&nbsp;used&nbsp;for&nbsp;a&nbsp;call&nbsp;on&nbsp;the&nbsp;no-arg&nbsp;migrate().<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;But&nbsp;caller&nbsp;can&nbsp;specify&nbsp;other&nbsp;Migrator&nbsp;without&nbsp;changing&nbsp;selectedMigratorName&nbsp;by&nbsp;calling&nbsp;the&nbsp;overloaded&nbsp;migrate()&nbsp;method.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="migrators"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;key&nbsp;of&nbsp;the&nbsp;map&nbsp;is&nbsp;the&nbsp;unique&nbsp;identifier&nbsp;of&nbsp;a&nbsp;Migrator.&nbsp;Both&nbsp;'selectedMigratorName'&nbsp;and&nbsp;the&nbsp;'-migrator'&nbsp;option&nbsp;of&nbsp;the&nbsp;command&nbsp;line&nbsp;should&nbsp;use&nbsp;this&nbsp;key&nbsp;to&nbsp;refer&nbsp;to&nbsp;Migrator&nbsp;instances.</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="db2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;bean&nbsp;must&nbsp;be&nbsp;configured&nbsp;if&nbsp;migration&nbsp;to&nbsp;a&nbsp;database&nbsp;needs&nbsp;to&nbsp;be&nbsp;supported</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.migratorimpl.CSVToDB2Migrator"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;must&nbsp;be&nbsp;configured&nbsp;so&nbsp;that&nbsp;CSVToDB2Migrator&nbsp;can&nbsp;get&nbsp;the&nbsp;selected&nbsp;data&nbsp;source.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dataSourceFactory"</span><span style="color: #ff0000">&nbsp;ref</span><span style="color: #0000ff">="dataSoutceFactory"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">A&nbsp;map&nbsp;of&nbsp;Converter&nbsp;instances&nbsp;can&nbsp;be&nbsp;configured,&nbsp;which&nbsp;are&nbsp;used&nbsp;for&nbsp;converting&nbsp;the&nbsp;string&nbsp;field&nbsp;in&nbsp;the&nbsp;csv&nbsp;file&nbsp;into&nbsp;other&nbsp;types.&nbsp;This&nbsp;is&nbsp;optional&nbsp;because&nbsp;ConvertUtils&nbsp;has&nbsp;some&nbsp;default&nbsp;converters.&nbsp;However&nbsp;if&nbsp;there&nbsp;is&nbsp;date&nbsp;value&nbsp;in&nbsp;a&nbsp;csv&nbsp;file,&nbsp;we&nbsp;must&nbsp;configure&nbsp;a&nbsp;DateLocaleConverter&nbsp;to&nbsp;convert&nbsp;string&nbsp;into&nbsp;java.util.Date</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="converters"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="java.util.Date"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;is&nbsp;used&nbsp;for&nbsp;convert&nbsp;string&nbsp;into&nbsp;java.util.Date.&nbsp;Please&nbsp;refer&nbsp;to&nbsp;Apache&nbsp;Commons&nbsp;BeanUtils's&nbsp;doc(http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/locale/converters/DateLocaleConverter.html)&nbsp;for&nbsp;its&nbsp;ctor&nbsp;parameters</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="org.apache.commons.beanutils.locale.converters.DateLocaleConverter"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="java.util.Locale"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="en"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">constructor-arg</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="yyyy-MM-dd"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">entry</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">entry</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="xml"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;bean&nbsp;must&nbsp;be&nbsp;configured&nbsp;if&nbsp;migration&nbsp;to&nbsp;a&nbsp;XML&nbsp;file&nbsp;needs&nbsp;to&nbsp;be&nbsp;supported</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.migratorimpl.CSVToXMLMigrator"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">entry</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;CSVParser&nbsp;instance&nbsp;for&nbsp;parsing&nbsp;a&nbsp;csv&nbsp;file.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="parser"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.csvparser.CSVParserImpl"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;TableDefinitionFactory&nbsp;instance&nbsp;for&nbsp;creating&nbsp;a&nbsp;TableDefinition&nbsp;from&nbsp;the&nbsp;first&nbsp;row&nbsp;of&nbsp;a&nbsp;csv&nbsp;file.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="tableDefinitionFactory"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.tabledefinitionfactoryimpl.TableDefinitionFactoryImpl"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">This&nbsp;must&nbsp;be&nbsp;configured&nbsp;so&nbsp;that&nbsp;TableDefinitionFactoryImpl&nbsp;can&nbsp;get&nbsp;the&nbsp;selected&nbsp;data&nbsp;source.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dataSourceFactory"</span><span style="color: #ff0000">&nbsp;ref</span><span style="color: #0000ff">="dataSoutceFactory"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">The&nbsp;TableDefinitionWriter&nbsp;used&nbsp;for&nbsp;writing&nbsp;a&nbsp;table&nbsp;definition&nbsp;file&nbsp;for&nbsp;a&nbsp;csv&nbsp;file.&nbsp;This&nbsp;is&nbsp;required</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="tableDefinitionWriter"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="com.ibm.pw.pps.tabledefinitionwriter.XMLTableDefinitionWriter"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">beans</span><span style="color: #0000ff">&gt;</span></div>
<br />
重点关注Manager 类的实例化,&lt;bean&gt;&nbsp; csvMigrationManager 下配置了com.ibm.pw.pps.CSVMigrationManager一系列字段的属性.<br />
<br />
源码未曾研究过,猜想应该是利用反射直接设置字段,即使它是private的. <br />
<br />
至于使用,如下:<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Create&nbsp;an&nbsp;ApplicationContext</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileSystemXmlApplicationContext(</span><span style="color: #000000">"</span><span style="color: #000000">test_files</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;System.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">file.separator</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">spring.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Get&nbsp;the&nbsp;Spring-configured&nbsp;CSVMigrationManager</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSVMigrationManager&nbsp;manager&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(CSVMigrationManager)&nbsp;context.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">csvMigrationManager</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<img src ="http://www.blogjava.net/mmliu/aggbug/318898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mmliu/" target="_blank">mmLiu</a> 2010-04-20 21:44 <a href="http://www.blogjava.net/mmliu/articles/318898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>