??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品二区二区三区,久久亚洲精选,日本在线播放一区二区三区http://www.aygfsteel.com/migrant/category/35090.html我们的失落…?/description>zh-cnWed, 30 Jun 2010 06:57:59 GMTWed, 30 Jun 2010 06:57:59 GMT60[转]java内部c?/title><link>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Wed, 30 Jun 2010 06:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/324878.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/324878.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/324878.html</trackback:ping><description><![CDATA[     摘要: 提vJava内部c(Inner ClassQ可能很多h不太熟?zhn)Q实际上cM的概念在C++里也有,那就是嵌套类QNested ClassQ,关于q两者的区别与联p,在下文中?x)有?gu)。内部类从表面上看,是在类中又定义了一个类Q下文会(x)看到Q内部类可以在很多地方定义)Q而实际上q没有那么简单,乍看上去内部cM乎有些多余,它的用处对于初学者来说可能ƈ不是那么显著Q但是随着对它的深入了解,你会(x)发现Java?..  <a href='http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html'>阅读全文</a><img src ="http://www.aygfsteel.com/migrant/aggbug/324878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2010-06-30 14:26 <a href="http://www.aygfsteel.com/migrant/archive/2010/06/30/324878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]在JScript中运符"||"?&&"的特D特?/title><link>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Thu, 13 May 2010 07:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/320802.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/320802.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/320802.html</trackback:ping><description><![CDATA[<p>在JScript的众多运符里,提供了三个逻辑q算W?strong>&&</strong>?strong>||</strong>?strong>!</strong>Q噢?! 是高U语a都提供的<img border="0" src="http://www.cnblogs.com/Emoticons/emembarrassed.gif" width="19" height="19" alt="" />。按我们寚w辑q算的正常认识,逻辑q算的结果因该是ture或者f(xi)alse。但是JScript的逻辑q算却不完全是这么定义的Q这里只?q算WLq回<font color="#0000ff">true</font>|<font color="#0000ff">false</font>Q而||?amp;&q算比较的好玩?br /> <br />     JScript对于逻辑q算?font color="#0000ff">true</font>|<font color="#0000ff">false</font>是这么定义的Q?</p> <ul type="disc"> <li>所有对象都被认为是 true? <li>字符串当且仅当ؓ(f)I?""?')时才被认为是 false? <li><strong>null</strong> 和未定义的均被认为是 false? <li>数字当且仅当?0 时才?false?</li> </ul> <p>    可是逻辑q算W?strong>||</strong>?strong>&&</strong>虽然遵@上面的定义规则,但是它们q回的值却很有意思?br />     对于&&q算Q按照上面的规则Q表辑ּ if ( 'abc' && '123' && new Date() ) 是执行true分支Q可是这个表辑ּ如果写成Q?/p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> value </span><span style="color: #000000">=</span><span style="color: #000000"> 'abc' </span><span style="color: #000000">&&</span><span style="color: #000000"> '</span><span style="color: #000000">123</span><span style="color: #000000">' </span><span style="color: #000000">&&</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Date();</span></div> <p> </p> <p>    l果value=Fri Jan 21 00:01:17 UTC+0800 2005Q原它从左到x,如果C最后一个表辑ּ也是为true的,p回那个表辑ּ?/p> <p>    对于||q算同理Q对于下面的表达式:(x)</p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> value1 </span><span style="color: #000000">=</span><span style="color: #000000"> 'abc' </span><span style="color: #000000">||</span><span style="color: #000000"> '</span><span style="color: #000000">123</span><span style="color: #000000">' </span><span style="color: #000000">||</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000"> value2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</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><span style="color: #0000ff">false</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> 'ok';</span></div> <p> </p> <p>    l果value1='abc'Qvalue2='ok'。这是因为||q算?x)?短\"Ҏ(gu),他也是从左向x,只不q它是一但发现有为true的|q卌回该表达式?br />     q样的特性可以帮l我们写出精的代码,可是同时也带来代码不便于阅读l护的问题?br />     ׃我手头暂时没有NS和moz什么的览器,不知道标准JavaScript是否也是q样支持的?如果(zhn)方便的话,请告如我q行后的l果</p> <img src ="http://www.aygfsteel.com/migrant/aggbug/320802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2010-05-13 15:11 <a href="http://www.aygfsteel.com/migrant/archive/2010/05/13/320802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]JavaScript判断变量cdQtypeof函数与constructor属性异?/title><link>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Wed, 14 Apr 2010 06:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/318262.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/318262.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/318262.html</trackback:ping><description><![CDATA[<p><span style="font-family: 新宋?><span style="font-size: 10pt">有时你可能需要对变量q行cd查,或者判断变量是否已定义。有两种Ҏ(gu)可以使用Q?strong>typeof</strong>函数?strong>constructor</strong>属性?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">typeof函数的用法可能不用我多说Q大安知道怎么用。而constructor属性大家可能就陌生炏V在《精通JavaScript》这本书中有提到construct的用法,但我用自q几个览器(IE7.0 / Firefox1.9 / Opera9.50Q测试的l果却和书上说的不一栗但是仍然是有办法通过constructor属性来查变量类型的?br /> q里先补充一下,Z么明明有typeof函数可以很方便地用来类型,q要用constructor呢?<br /> 因ؓ(f)typeof?x)把所有的数组cd以及(qing)用户自定义类型判断ؓ(f)objectQ从而无法知道更切的信息。而constructor却可以解册个问题?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">okQ明白了我们Z么要用constructorQ现在让我带大家一步步认识一下typeof和constructor用法之间的差异吧?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">首先我们q行一下下面这D代码:(x)<br /> </p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> i;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i));<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(i.constructor);</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">q?行代码告诉你什么情况下可以用constructor?br /> 你可以看到第2行返回了字符?undefined'Q而第三行则发生了错误Q原因是i变量q没有类型定义,自然也没有constructor的存在?<br /> 从这一点上看,typeof可以查到变量是否有定义,?strong>construct只能查已定义变量的类?/strong>?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">再运行一下下面这D代码:(x)<br /> </p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i));<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(i.constructor);<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(i.constructor));</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">你会(x)看到W?行返回了字符?number’Q第3行返回了一串类似函数定义的代码字符Ԍq就是跟《精通JavaScript》一书中介绍的不一L(fng)地方Q?br /> 我们再用typeof查一下constructor到底是个什么样cd的属性,W?行返回结?function'Q也是_(d)实际上constructor是一个函敎ͼ更确切地说是一个构造函数。这时你可以知道,Z么constructor可以查出各种cd了?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">有经验的E序员看到这里应该知道要怎么利用constructor来检查变量类型了。方法有多种Q这里提供一U比较容易理解的Ҏ(gu)?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">其实x很简单,是<strong>把construcor转化为字W串Q通过L匚w字符Ԍfunction名)来确定是否指定类?/strong>。如下例子:(x)<br /> </p> <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 id="Codehighlighter1_16_17_Open_Image" onclick="this.style.display='none'; Codehighlighter1_16_17_Open_Text.style.display='none'; Codehighlighter1_16_17_Closed_Image.style.display='inline'; Codehighlighter1_16_17_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_16_17_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_16_17_Closed_Text.style.display='none'; Codehighlighter1_16_17_Open_Image.style.display='inline'; Codehighlighter1_16_17_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="color: #0000ff">function</span><span style="color: #000000"> user() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_16_17_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_16_17_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> user();<br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />alert((i.constructor</span><span style="color: #000000">+</span><span style="color: #000000">'').match(</span><span style="color: #000000">/</span><span style="color: #000000">user</span><span style="color: #000000">/</span><span style="color: #000000">) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">);</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">q仅仅是个简单的例子。如果返回true则变量i不是usercdQ返回false则变量是usercd?br /> </span></span><span style="font-family: 新宋?><span style="font-size: 10pt">当然Q这h是不够_的,比如其实他是一个myusercd的时候,同样?x)被认?f)是usercR所以你需要书写更_的正则表辑ּ去进行匹配?/span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">可以q样单改q你的正则表辑ּQ?br /> </p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">/</span><span style="color: #0000ff">function</span><span style="color: #000000"> user\(\)</span><span style="color: #000000">/</span></div> <p><br /> </span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">替换上面代码D中?user/。当Ӟ如果你的构造函数原型是user(a)Q那么应该这样书写你的正则表辑ּQ?br /> </p> <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 align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #000000">/</span><span style="color: #0000ff">function</span><span style="color: #000000"> user\(a\)</span><span style="color: #000000">/</span></div> <p><br /> <br /> </span></span><span style="font-family: 新宋?><span style="font-size: 10pt">到这里你应该知道怎样使用constructorcdL查变量类型了吧?</span></span></p> <p><span style="font-family: 新宋?><span style="font-size: 10pt">okQ最后再提个醒,如果你要用基于constructor的方法去查一些基本类型,?br /> Object / Array / Function / String / Number / Boolean<br /> 在你的正则表辑ּ中,一定要这些单词的<strong>首字母大?/strong>Q!而如果该cd是自定义cdQ则Ҏ(gu)你定义的时候标识符的写法确定?/span></span></p><img src ="http://www.aygfsteel.com/migrant/aggbug/318262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2010-04-14 14:30 <a href="http://www.aygfsteel.com/migrant/archive/2010/04/14/318262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Spring 2.5中JdbcTemplatecqueryҎ(gu)的三U回调接?/title><link>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Wed, 10 Mar 2010 02:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/315022.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/315022.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/315022.html</trackback:ping><description><![CDATA[<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 id="Codehighlighter1_0_279_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_279_Open_Text.style.display='none'; Codehighlighter1_0_279_Closed_Image.style.display='inline'; Codehighlighter1_0_279_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_0_279_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_279_Closed_Text.style.display='none'; Codehighlighter1_0_279_Open_Image.style.display='inline'; Codehighlighter1_0_279_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_0_279_Closed_Text">/** */</span><span id="Codehighlighter1_0_279_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />使用三种Callback接口作ؓ(f)参数的queryҎ(gu)的返回g?   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以ResultSetExtractor作ؓ(f)Ҏ(gu)参数的queryҎ(gu)q回Object型结果,要用查询结果,我们需要对其进行强制{型;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以RowMapper接口作ؓ(f)Ҏ(gu)参数的queryҎ(gu)直接q回List型的l果Q?nbsp;  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />以RowCallbackHandler作ؓ(f)Ҏ(gu)参数的queryҎ(gu)Q返回gؓ(f)voidQ?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />RowCallbackHandler和RowMapper才是我们最常用的选择   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> * </span><span style="color: #808080">@author</span><span style="color: #008000"> Administrator  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> *   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" /> </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_307_3536_Open_Image" onclick="this.style.display='none'; Codehighlighter1_307_3536_Open_Text.style.display='none'; Codehighlighter1_307_3536_Closed_Image.style.display='inline'; Codehighlighter1_307_3536_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_307_3536_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_307_3536_Closed_Text.style.display='none'; Codehighlighter1_307_3536_Open_Image.style.display='inline'; Codehighlighter1_307_3536_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SpringTest </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_307_3536_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_307_3536_Open_Text"><span style="color: #000000">{   <br /> <img id="Codehighlighter1_313_467_Open_Image" onclick="this.style.display='none'; Codehighlighter1_313_467_Open_Text.style.display='none'; Codehighlighter1_313_467_Closed_Image.style.display='inline'; Codehighlighter1_313_467_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_313_467_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_313_467_Closed_Text.style.display='none'; Codehighlighter1_313_467_Open_Image.style.display='inline'; Codehighlighter1_313_467_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_313_467_Closed_Text">/** */</span><span id="Codehighlighter1_313_467_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  * q回l果是List里装Map,使用参数,使用回调 RowMapperResultSetExtractor用于处理单行记录Q?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  * 它内部持有一个RowMapper实例的引用,当处理结果集的时候, ?x)将单行数据的处理委z其所持有的RowMapper实例Q而其余工作它负责  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_521_1422_Open_Image" onclick="this.style.display='none'; Codehighlighter1_521_1422_Open_Text.style.display='none'; Codehighlighter1_521_1422_Closed_Image.style.display='inline'; Codehighlighter1_521_1422_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_521_1422_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_521_1422_Closed_Text.style.display='none'; Codehighlighter1_521_1422_Open_Image.style.display='inline'; Codehighlighter1_521_1422_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowMapperResultSetExtractor() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_521_1422_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_521_1422_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #008000">//</span><span style="color: #008000"> E:\demoworkspace\spring 为工E主目录   </span><span style="color: #008000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">)); </span><span style="color: #008000">//</span><span style="color: #008000"> 试用的Ҏ(gu)   </span><span style="color: #008000"><br /> <img id="Codehighlighter1_816_821_Open_Image" onclick="this.style.display='none'; Codehighlighter1_816_821_Open_Text.style.display='none'; Codehighlighter1_816_821_Closed_Image.style.display='inline'; Codehighlighter1_816_821_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_816_821_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_816_821_Closed_Text.style.display='none'; Codehighlighter1_816_821_Open_Image.style.display='inline'; Codehighlighter1_816_821_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></span><span style="color: #000000">  Object[] arg </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[] </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_816_821_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_816_821_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">10</span><span style="color: #000000"> }</span></span><span style="color: #000000">;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  List list </span><span style="color: #000000">=</span><span style="color: #000000"> (ArrayList) jt.query(</span><span style="color: #000000">"</span><span style="color: #000000">select * from region where rownum<?</span><span style="color: #000000">"</span><span style="color: #000000">,   <br /> <img id="Codehighlighter1_961_1267_Open_Image" onclick="this.style.display='none'; Codehighlighter1_961_1267_Open_Text.style.display='none'; Codehighlighter1_961_1267_Closed_Image.style.display='inline'; Codehighlighter1_961_1267_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_961_1267_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_961_1267_Closed_Text.style.display='none'; Codehighlighter1_961_1267_Open_Image.style.display='inline'; Codehighlighter1_961_1267_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    arg, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapperResultSetExtractor(</span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapper() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_961_1267_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_961_1267_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object mapRow(ResultSet rs, </span><span style="color: #0000ff">int</span><span style="color: #000000"> index)   <br /> <img id="Codehighlighter1_1047_1258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1047_1258_Open_Text.style.display='none'; Codehighlighter1_1047_1258_Closed_Image.style.display='inline'; Codehighlighter1_1047_1258_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1047_1258_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1047_1258_Closed_Text.style.display='none'; Codehighlighter1_1047_1258_Open_Image.style.display='inline'; Codehighlighter1_1047_1258_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />       </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1047_1258_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1047_1258_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap(); </span><span style="color: #008000">//</span><span style="color: #008000">可以是自qJavaBean值对?单Java对象POJO)   </span><span style="color: #008000"><br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /></span><span style="color: #000000">      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      </span><span style="color: #0000ff">return</span><span style="color: #000000"> u;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />     }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_1334_1416_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1334_1416_Open_Text.style.display='none'; Codehighlighter1_1334_1416_Closed_Image.style.display='inline'; Codehighlighter1_1334_1416_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1334_1416_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1334_1416_Closed_Text.style.display='none'; Codehighlighter1_1334_1416_Open_Image.style.display='inline'; Codehighlighter1_1334_1416_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1334_1416_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1334_1416_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" /> }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img id="Codehighlighter1_1434_1657_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1434_1657_Open_Text.style.display='none'; Codehighlighter1_1434_1657_Closed_Image.style.display='inline'; Codehighlighter1_1434_1657_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1434_1657_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1434_1657_Closed_Text.style.display='none'; Codehighlighter1_1434_1657_Open_Image.style.display='inline'; Codehighlighter1_1434_1657_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1434_1657_Closed_Text">/** */</span><span id="Codehighlighter1_1434_1657_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">q回l果是List里装Map,不用参?使用回调  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  使用RowMapper比直接用ResultSetExtractor要方便的多,只负责处理单行结果就行,现在Q我们只需要将单行的结果组装后q回pQ?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  剩下的工作,全部都是JdbcTemplate内部的事情了?nbsp;实际上,JdbcTemplae内部?x)用一个ResultSetExtractor实现cL做其余的工作Q?nbsp; <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  毕竟Q该做的工作q得有h做不是?Q?nbsp;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_1693_2420_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1693_2420_Open_Text.style.display='none'; Codehighlighter1_1693_2420_Closed_Image.style.display='inline'; Codehighlighter1_1693_2420_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1693_2420_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1693_2420_Closed_Text.style.display='none'; Codehighlighter1_1693_2420_Open_Image.style.display='inline'; Codehighlighter1_1693_2420_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowMapper() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1693_2420_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1693_2420_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  List list </span><span style="color: #000000">=</span><span style="color: #000000"> jt.query(   <br /> <img id="Codehighlighter1_1994_2266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1994_2266_Open_Text.style.display='none'; Codehighlighter1_1994_2266_Closed_Image.style.display='inline'; Codehighlighter1_1994_2266_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_1994_2266_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1994_2266_Closed_Text.style.display='none'; Codehighlighter1_1994_2266_Open_Image.style.display='inline'; Codehighlighter1_1994_2266_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">select * from region where rownum<10</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowMapper() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1994_2266_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1994_2266_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object mapRow(ResultSet rs, </span><span style="color: #0000ff">int</span><span style="color: #000000"> index)   <br /> <img id="Codehighlighter1_2080_2257_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2080_2257_Open_Text.style.display='none'; Codehighlighter1_2080_2257_Closed_Image.style.display='inline'; Codehighlighter1_2080_2257_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2080_2257_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2080_2257_Closed_Text.style.display='none'; Codehighlighter1_2080_2257_Open_Image.style.display='inline'; Codehighlighter1_2080_2257_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />       </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2080_2257_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2080_2257_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />      </span><span style="color: #0000ff">return</span><span style="color: #000000"> u;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />     }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />    }</span></span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_2332_2414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2332_2414_Open_Text.style.display='none'; Codehighlighter1_2332_2414_Closed_Image.style.display='inline'; Codehighlighter1_2332_2414_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2332_2414_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2332_2414_Closed_Text.style.display='none'; Codehighlighter1_2332_2414_Open_Image.style.display='inline'; Codehighlighter1_2332_2414_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2332_2414_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2332_2414_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" /> }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" /> </span><span style="color: #008000">//</span><span style="color: #008000"> q回记录?nbsp;  </span><span style="color: #008000"><br /> <img id="Codehighlighter1_2442_2654_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2442_2654_Open_Text.style.display='none'; Codehighlighter1_2442_2654_Closed_Image.style.display='inline'; Codehighlighter1_2442_2654_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2442_2654_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2442_2654_Closed_Text.style.display='none'; Codehighlighter1_2442_2654_Open_Image.style.display='inline'; Codehighlighter1_2442_2654_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></span><span style="color: #000000"> </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2442_2654_Closed_Text">/** */</span><span id="Codehighlighter1_2442_2654_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000">  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  RowCallbackHandler虽然与RowMapper同是处理单行数据Q不q,除了要处理单行结果,它还得负责最l结果的l装和获取工作,  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  在这里我们是使用当前上下文声明的List取得最l查询结果, 不过Q我们也可以单独声明一个RowCallbackHandler实现c,  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  在其中声明相应的集合c,q样Q我们可以通过该RowCallbackHandler实现cd得最l查询结?nbsp;  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  </span><span style="color: #008000">*/</span></span><span style="color: #000000">  <br /> <img id="Codehighlighter1_2699_3535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2699_3535_Open_Text.style.display='none'; Codehighlighter1_2699_3535_Closed_Image.style.display='inline'; Codehighlighter1_2699_3535_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_2699_3535_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2699_3535_Closed_Text.style.display='none'; Codehighlighter1_2699_3535_Open_Image.style.display='inline'; Codehighlighter1_2699_3535_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> getListRowCallbackHandler() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2699_3535_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_2699_3535_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> FileSystemXmlApplicationContext(   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    </span><span style="color: #000000">"</span><span style="color: #000000">src/database_config.xml</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  JdbcTemplate jt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> JdbcTemplate((DataSource) context   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    .getBean(</span><span style="color: #000000">"</span><span style="color: #000000">oracleDataSourceTest</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  String sql </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">select * from region  where region_id>?</span><span style="color: #000000">"</span><span style="color: #000000">;   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  </span><span style="color: #0000ff">final</span><span style="color: #000000"> List</span><span style="color: #000000"><</span><span style="color: #000000">Map</span><span style="color: #000000">></span><span style="color: #000000"> list</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> ArrayList</span><span style="color: #000000"><</span><span style="color: #000000">Map</span><span style="color: #000000">></span><span style="color: #000000">(); </span><span style="color: #008000">//</span><span style="color: #008000">一定要用final定义   </span><span style="color: #008000"><br /> <img id="Codehighlighter1_3072_3076_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3072_3076_Open_Text.style.display='none'; Codehighlighter1_3072_3076_Closed_Image.style.display='inline'; Codehighlighter1_3072_3076_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3072_3076_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3072_3076_Closed_Text.style.display='none'; Codehighlighter1_3072_3076_Open_Image.style.display='inline'; Codehighlighter1_3072_3076_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" /></span><span style="color: #000000">  Object[] params </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Object[] </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_3072_3076_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3072_3076_Open_Text"><span style="color: #000000">{ </span><span style="color: #000000">0</span><span style="color: #000000"> }</span></span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_3131_3375_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3131_3375_Open_Text.style.display='none'; Codehighlighter1_3131_3375_Closed_Image.style.display='inline'; Codehighlighter1_3131_3375_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3131_3375_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3131_3375_Closed_Text.style.display='none'; Codehighlighter1_3131_3375_Open_Image.style.display='inline'; Codehighlighter1_3131_3375_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  jt.query(sql, params, </span><span style="color: #0000ff">new</span><span style="color: #000000"> RowCallbackHandler() </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_3131_3375_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3131_3375_Open_Text"><span style="color: #000000">{   <br /> <img id="Codehighlighter1_3196_3368_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3196_3368_Open_Text.style.display='none'; Codehighlighter1_3196_3368_Closed_Image.style.display='inline'; Codehighlighter1_3196_3368_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3196_3368_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3196_3368_Closed_Text.style.display='none'; Codehighlighter1_3196_3368_Open_Image.style.display='inline'; Codehighlighter1_3196_3368_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />   </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> processRow(ResultSet rs) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> SQLException </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_3196_3368_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3196_3368_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    Map u </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();     <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_id</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    u.put(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">, rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">region_name</span><span style="color: #000000">"</span><span style="color: #000000">));   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />    list.add(u);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />   }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  }</span></span><span style="color: #000000">);   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />     <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />  Iterator it </span><span style="color: #000000">=</span><span style="color: #000000"> list.iterator();   <br /> <img id="Codehighlighter1_3447_3529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3447_3529_Open_Text.style.display='none'; Codehighlighter1_3447_3529_Closed_Image.style.display='inline'; Codehighlighter1_3447_3529_Closed_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img style="display: none" id="Codehighlighter1_3447_3529_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_3447_3529_Closed_Text.style.display='none'; Codehighlighter1_3447_3529_Open_Image.style.display='inline'; Codehighlighter1_3447_3529_Open_Text.style.display='inline';" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" />  </span><span style="color: #0000ff">while</span><span style="color: #000000"> (it.hasNext()) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_3447_3529_Closed_Text"><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_3447_3529_Open_Text"><span style="color: #000000">{   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   Map map </span><span style="color: #000000">=</span><span style="color: #000000"> (Map) it.next();   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" alt="" />   System.out.println(map.toString());   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" />  }</span></span><span style="color: #000000">   <br /> <img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" /> }</span></span></div> </span> <img src ="http://www.aygfsteel.com/migrant/aggbug/315022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2010-03-10 10:27 <a href="http://www.aygfsteel.com/migrant/archive/2010/03/10/315022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]spring jdbcTemplate使用http://www.aygfsteel.com/migrant/archive/2010/03/09/314985.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Tue, 09 Mar 2010 11:10:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/03/09/314985.htmlhttp://www.aygfsteel.com/migrant/comments/314985.htmlhttp://www.aygfsteel.com/migrant/archive/2010/03/09/314985.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/314985.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/314985.html阅读全文

]]>
[转]JAVA语言的反?Reflection)和内?Introspector)http://www.aygfsteel.com/migrant/archive/2010/02/04/311942.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Thu, 04 Feb 2010 05:42:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/02/04/311942.htmlhttp://www.aygfsteel.com/migrant/comments/311942.htmlhttp://www.aygfsteel.com/migrant/archive/2010/02/04/311942.html#Feedback1http://www.aygfsteel.com/migrant/comments/commentRss/311942.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/311942.html很多朋友在深入的接触JAVA语言后就?x)发现这样两个词Q反?Reflection)和内?Introspector)Q经常搞不清楚这到底是怎么回事Q在什么场合下应用以及(qing)如何使用Q今天把q二者放在一起介l,因ؓ(f)它们二者是相辅相成的?/span>

反射

相对而言Q反比内省更容易理解一炏V用一句比较白的话来概括,反射是让你可以通过名称来得到对?c,属性,Ҏ(gu))的技术。例如我们可以通过cd来生成一个类的实例;知道了方法名Q就可以调用q个Ҏ(gu)Q知道了属性名可以访问这个属性的倹{?/span>

q是写两个例子让大家更直观的了解反射的用方法:(x)

// 通过cd来构造一个类的实?/span>
Class cls_str = Class.forName( "java.lang.String" );
// 上面q句很眼熟,因ؓ(f)使用q?nbsp;JDBC 讉K数据库的人都用过 J
Object str = cls_str.newInstance();
// 相当?nbsp;String str = new String(); 


// 通过Ҏ(gu)名来调用一个方?/span>
String methodName = "length" ;
Method m 
= cls_str.getMethod(methodName, null );
System.out.println( 
"length is " + m.invoke(str, null ));
// 相当?nbsp;System.out.println(str.length()); 


上面的两个例子是比较常用Ҏ(gu)。看C面的例子有发问了:(x)Z么要q么ȝ呢?本来一条语句就完成的事情干吗要整这么复杂?没错Q在上面的例子中实没有必要q么ȝ。不q你惛_q样一个应用程序,它支持动态的功能扩展Q也是说程序不重新启动但是可以自动加蝲新的功能Q这个功能用一个具体类来表C。首先我们必Mؓ(f)q些功能定义一个接口类Q然后我们要求所有扩展的功能cdd现我指定的接口,q个规定了应用程序和可扩展功能之间的接口规则Q但是怎么动态加载呢Q我们必让应用E序知道要扩展的功能cȝcdQ比如是test.Func1Q当我们把这个类?字符?告诉应用E序后,它就可以使用我们W一个例子的Ҏ(gu)来加载ƈ启用新的功能。这是cȝ反射Q请问你有别的选择吗?

内省

内省是Java语言对Beancd性、事件的一U缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设|新的倹{通过getName/setName来访问name属性,q就是默认的规则。Java中提供了一套API用来讉K某个属性的getter/setterҎ(gu)Q通过q些API可以使你不需要了解这个规则(但你最好还是要搞清楚)Q这些API存放于包java.beans中?/span>

一般的做法是通过cIntrospector来获取某个对象的BeanInfo信息Q然后通过BeanInfo来获取属性的描述器(PropertyDescriptorQ,通过q个属性描q器可以获取某个属性对应的getter/setterҎ(gu)Q然后我们就可以通过反射机制来调用这些方法。下面我们来看一个例子,q个例子把某个对象的所有属性名U和值都打印出来Q?br />

/* 
 * Created on 2004-6-29
 
*/
 

package demo; 


import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor; 


/**
  * 内省演示例子
  * 
@author liudong
  
*/
 

public class IntrospectorDemo {
    String name;
    
public static void main(String[] args) throws Exception{
        IntrospectorDemo demo 
= new IntrospectorDemo();
        demo.setName( 
"Winter Lau" );         

        
// 如果不想把父cȝ属性也列出来的话,
        
// ?nbsp;getBeanInfo 的第二个参数填写父类的信?/span>
        BeanInfo bi = Introspector.getBeanInfo(demo.getClass(), Object. class );
        PropertyDescriptor[] props 
= bi.getPropertyDescriptors();
        
for ( int i=0;i<props.length;i++){
            System.out.println(props[i].getName()
+ "=" +
                    props[i].getReadMethod().invoke(demo, 
null ));
        }
 

    }
     

    
public String getName() {
        
return name;
    }
 

    
public void setName(String name) {
        
this .name = name;
    }

}


Web开发框架Struts中的FormBean是通过内省机制来将表单中的数据映射到类的属性上Q因此要求FormBean的每个属性要有getter/setterҎ(gu)。但也ƈ不Lq样Q什么意思呢Q就是说对一个BeancLԌ我可以没有属性,但是只要有getter/setterҎ(gu)中的其中一个,那么Java的内省机制就?x)认为存在一个属性,比如cM有方法setMobileQ那么就认ؓ(f)存在一个mobile的属性,q样可以方便我们把Beanc通过一个接口来定义而不用去关系具体实现Q不用去关系Bean中数据的存储。比如我们可以把所有的getter/setterҎ(gu)攑ֈ接口里定义,但是真正数据的存取则是在具体cMd玎ͼq样可提高系l的扩展性?/span>

ȝ

Java的反以?qing)内省应用到E序设计中去可以大大的提供程序的化和可扩展性。有很多目都是采取q两U技术来实现其核心功能,例如我们前面提到的StrutsQ还有用于处理XML文g的Digester目Q其实应该说几乎所有的目都或多或的采用q两U技术。在实际应用q程中二者要怺l合方能发挥真正的智能化以及(qing)高度可扩展性?/span>



]]>
[转]?join ?CountDownLatch 让主U程{待所有子U程完成http://www.aygfsteel.com/migrant/archive/2010/01/26/310889.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Tue, 26 Jan 2010 10:00:00 GMThttp://www.aygfsteel.com/migrant/archive/2010/01/26/310889.htmlhttp://www.aygfsteel.com/migrant/comments/310889.htmlhttp://www.aygfsteel.com/migrant/archive/2010/01/26/310889.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/310889.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/310889.html阅读全文

]]>
[转]jQuery基础---filter()和find()http://www.aygfsteel.com/migrant/archive/2009/11/09/301714.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Mon, 09 Nov 2009 08:00:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/11/09/301714.htmlhttp://www.aygfsteel.com/migrant/comments/301714.htmlhttp://www.aygfsteel.com/migrant/archive/2009/11/09/301714.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/301714.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/301714.htmlq是jQuery里常用的2个方法?br /> 他们2者功能是完全不同的,而初学者往往?x)被误导?/span>


首先 我们?find()Ҏ(gu)Q?br /> 现在有一个页面,里面HTML代码为:(x)

<div class="css">
    
<class="rain">试1</p>
</div>
<div class="rain">
    
<p>试2</p>
</div>


如果我们使用find()Ҏ(gu)Q?br />

var $find = $("div").find(".rain");
alert( $find.html() );


会(x)输出Q?br />
如果使用filter()Ҏ(gu)Q?br />

var $filter = $("div").filter(".rain");
alert( $filter.html() );


会(x)输出Q?br />

也许你已l看出它们的区别了?br /> find()?x)在div元素?L class为rain 的元素?br /> 而filter()则是{选div的class为rain的元素?br /> 一个是对它的子集操作,一个是对自w集合元素筛选?/strong>

另外find()其实q可以用选择器表C?

var $select = $("div .rain");


]]>
[转]SecureCRT中文字体解决Ҏ(gu)http://www.aygfsteel.com/migrant/archive/2009/09/14/295013.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Mon, 14 Sep 2009 06:14:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/09/14/295013.htmlhttp://www.aygfsteel.com/migrant/comments/295013.htmlhttp://www.aygfsteel.com/migrant/archive/2009/09/14/295013.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/295013.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/295013.html以前在Windows上sshd一直都是用puttyQ虽然它单小巧,但毕竟缺很多特性。今天试了一下SecureCRTQ感觉用h比Putty好多了,但SecureCRT默认的字体超隄Q而且中文字体讄也比较麻烦一点,在这里记录一下以后可能还用得到?/span>

  1. ?#8220;?x)话选项”?#8220;l端->仿真”里面?#8220;Linux”Q如果需要显C颜色的话需要把“ANSI颜色”选上
  2. ?#8220;外观->字体”中选择喜欢的字体,但这里对字体是有要求的,只有{宽字体才行。如果要正常昄中文的话Q所选择的字体还必须包含中文字符?
  3. 另外是Ҏ(gu)你要d的主机的字符~码选择字符~码Q一般是 “UTF-8″

单的几步下来p|好了,如果q有q的话退出然后重新登陆一下。如果你x有的q接都用这个默认配|,可以?#8220;全局选项”中设|?#8220;默认的会(x)话选项”Q这样以后新建的q接?x)自动应用上面的讄了?/span>

PS:

以前用putty的时候,字体q接用我在Linux最qMonacoQ但在SecureCRT中用Monaco字体的话Q中文会(x)昄Zؕ码,q是因ؓ(f)Monaco字体中不包含中文字符Q而SecureCRT也不?x)自动的选择pȝ默认的中文字体?/span>

Z解决q个问题Q我们只要去找一个包含中文的{宽字体来用Q我从网上找了一个Consolas和雅黑的混合字体Q虽然没有Monaco好看Q但效果也还不错。这里有个地斚w要注意一下,在选择q个字体的字体选择对话框中Q字体的默认字符集是“西方”Q需要改成CHINESE_GB2312?/span>

如果你也想用q个字体的话Q可以从q里下蝲?/span>



]]>
[转]Hibernate saveorUpdate与unsaved-valueQsaveQupdateQdeleteȝhttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.htmlJ2EE学习(fn)W记J2EE学习(fn)W记Thu, 27 Aug 2009 06:44:00 GMThttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.htmlhttp://www.aygfsteel.com/migrant/comments/292815.htmlhttp://www.aygfsteel.com/migrant/archive/2009/08/27/292815.html#Feedback0http://www.aygfsteel.com/migrant/comments/commentRss/292815.htmlhttp://www.aygfsteel.com/migrant/services/trackbacks/292815.htmlq些操作对经怋用hibernate的同学已l很熟?zhn)了,我也l常用但一些细节ƈ不了解,
最q遇到问题才开始有看了一下?/span>

在读完robbin的这两个_֍贴的时候,感觉清晰了很多,实好文章?
http://www.javaeye.com/topic/2712
http://www.javaeye.com/topic/1604?page=1
q有q个_֍?
http://www.javaeye.com/topic/7484
也很不错?/span>

里面ȝ的很好了Q我l合以上三个帖子、自q试验Q版本hibernate-3.0.5Q和Hibernate文档也ȝ了一点,加深理解?strong>希望对刚开始学Hibernate的同学有所帮助?/strong>

一、saveorUpdate与unsaved-value
到底是savaq是update
Hibernate需要判断被操作的对象究竟是一个已l持久化q的持久对象q是临时对象?
1Q.主键Hibernate的id generator产生
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
主键是对象类型,hebernate判断project的主键是否位nullQ来判断project是否已被持久?/strong>
是的话,对project对象发送save(project)Q?
若自p|了主键则直接生成update的sqlQ发送update(project)Q即便数据库里没有那条记录?
主键是基本类型如int/long/double/
自己讄unsaved-null="0"?
所以这L(fng)话save和update操作肯定不会(x)报错?/span>

2、unsaved-value="none"Q?
׃不论主键属性ؓ(f)M|都不可能为noneQ因此HibernateL对project对象发送update(project)

3、unsaved-value="any"
׃不论主键属性ؓ(f)M|都肯定ؓ(f)anyQ因此HibernateL对project对象发送save(project)Qhibernate生成主键?/span>

Hibernate文档中写?
saveOrUpdate()完成了如下工作:(x)
如果对象已经在这个session中持久化q了Q什么都不用?
如果对象没有标识|调用save()来保存它
如果对象的标识gunsaved-value中的条g匚wQ调用save()来保存它
如果对象使用了版?version或timestamp),那么除非讄unsaved-value="undefined",版本查会(x)发生在标识符查之?
如果q个session中有另外一个对象具有同L(fng)标识W,抛出一个异?

2Q.主键p己来赋?/strong>
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>

Project project = new Project();
project.setId(XXX);
this.projectDao.saveOrUpdate(project);

1、默认unsaved-value="null"
q时有所不同Qhibernate?x)根据主键生一个selectQ来判断此对象是否已被持久化
已被持久化则updateQ未被持久化则save?
2、unsaved-value="none"Qupdate对象Q同?/span>

3、unsaved-value="any" Qsave对象Q?
如果自己自己讄的ID在数据库中已存在Q则报错?/span>

二、save与update操作
昑ּ的用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-value?
在同一SessionQsave没什么可说得
update对象? 最直接的更改一个对象的Ҏ(gu)是load()它,保持Session打开Q然后直接修改即?
Session s =…
Project p = (Project) sess.load(Project.class, id) );
p.setName(“test”);
s.flush();
不用调用s.update(p);hibernate能察觉到它的变化Q会(x)自动更新。当然显C用的话也不会(x)?/span>

Hibernate文档中写?
update()Ҏ(gu)在下列情形下使用Q?
E序在前面的session中装载了对象
对象被传递到UIQ界面)?
对该对象q行了一些修?
对象被传递回业务?
应用E序在第二个session中调用update()保存修改

三、delete操作
删除时直接自己构造一个project卛_删除
this.projectDao.delete(preojct);

以前删除我是q样写的
public void deleteProject(String id) {
Project project = (Project) this.projectDao.get(Project.class, id);
if (project != null) {
this.projectDao.delete(project);
}
卌样也是可以的
Project project = new Project();
project.setId(id);
this.projectDao.delete(project).

如果有联关p,需要把U联的子cM构造出来addq去Q同样可以删除?/span>

好了Q罗嗦的够多了?/span>



]]>
[转]Hibernate映射配置文g中id标签的unsaved-value属性详?/title><link>http://www.aygfsteel.com/migrant/archive/2009/08/17/291567.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Mon, 17 Aug 2009 14:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2009/08/17/291567.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/291567.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2009/08/17/291567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/291567.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/291567.html</trackback:ping><description><![CDATA[<span style="font-family: 新宋? font-size: 10pt">当你昑ּ的用session.save()或者session.update()操作一个对象的时候,实际上是用不?span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>的。某些情况下(父子表关联保?Q当你在E序中ƈ没有昑ּ的用save或者update一个持久对象,那么<span style="font-family: " class="hilite1">Hibernate</span>需要判断被操作的对象究竟是一个已l持久化q的持久对象Q是一个尚未被持久化过的内存(f)时对象。例如:(x)<br /> <br style="font-family: " /> </span> <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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">Session session </span><span style="color: #000000">=</span><span style="color: #000000"> <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" />;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Transaction tx </span><span style="color: #000000">=</span><span style="color: #000000"> <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" />;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Parent parent </span><span style="color: #000000">=</span><span style="color: #000000"> (Parent); session.load(Parent.</span><span style="color: #0000ff">class</span><span style="color: #000000">, id);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Child child </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Child();;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />child.setParent(parent);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />child.setName(</span><span style="color: #000000">"</span><span style="color: #000000">sun</span><span style="color: #000000">"</span><span style="color: #000000">);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />parent.addChild(child);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.update(parent);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.flush();;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />tx.commit();;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.close();;</span></div> <br /> <span style="font-family: 新宋? font-size: 10pt">在上例中Q程序ƈ没有昑ּ的session.save(child); 那么<span style="font-family: " class="hilite1">Hibernate</span>需要知道childI竟是一个(f)时对象,q是已经在数据库中有的持久对象。如果child是一个新创徏的(f)时对?本例中就是这U情?Q那?span style="font-family: " class="hilite1">Hibernate</span>应该自动产生session.save(child)q样的操作,如果child是已l在数据库中有的持久对象Q那?span style="font-family: " class="hilite1">Hibernate</span>应该自动产生session.update(child)q样的操作?<br style="font-family: " /> <br style="font-family: " /> 因此我们需要暗CZ?span style="font-family: " class="hilite1">Hibernate</span>Q究竟child对象应该对它自动saveq是update。在上例中,昄我们应该暗示<span style="font-family: " class="hilite1">Hibernate</span>对child自动saveQ而不是自动update。那?span style="font-family: " class="hilite1">Hibernate</span>如何判断I竟对child是saveq是update呢?它会(x)取一下child的主键属?child.getId() Q这里假设id?java.lang.Integercd的。如果取到的Id值和hbm映射文g中指定的unsave-<span style="font-family: " class="hilite3">value</span>相等Q那?span style="font-family: " class="hilite1">Hibernate</span>认ؓ(f)child是新的内存(f)时对象,发送saveQ如果不相等Q那?span style="font-family: " class="hilite1">Hibernate</span>认ؓ(f)child是已l持久过的对象,发送update?<br style="font-family: " /> <br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="null" (默认情况Q适用于大多数对象cd主键 Integer/Long/String/...) <br style="font-family: " /> <br style="font-family: " /> ?span style="font-family: " class="hilite1">Hibernate</span>取一下child的IdQ取出来的是null(在上例中肯定取出来的是null)Q和<span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>讑֮值相{,发送save(child) <br style="font-family: " /> <br style="font-family: " /> ?span style="font-family: " class="hilite1">Hibernate</span>取一下child的idQ取出来的不是nullQ那么和<span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>讑֮g相等Q发送update(child) <br style="font-family: " /> <br style="font-family: " /> 例如下面的情况:(x)<br /> <br style="font-family: " /> </span> <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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">Session session </span><span style="color: #000000">=</span><span style="color: #000000"> <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" />;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Transaction tx </span><span style="color: #000000">=</span><span style="color: #000000"> <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" />;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Parent parent </span><span style="color: #000000">=</span><span style="color: #000000"> (Parent); session.load(Parent.</span><span style="color: #0000ff">class</span><span style="color: #000000">, id);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />Child child </span><span style="color: #000000">=</span><span style="color: #000000"> (Child); session.load(Child.</span><span style="color: #0000ff">class</span><span style="color: #000000">, childId);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />child.setParent(parent);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />child.setName(</span><span style="color: #000000">"</span><span style="color: #000000">sun</span><span style="color: #000000">"</span><span style="color: #000000">);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />parent.addChild(child);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.update(parent);;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.flush();;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />tx.commit();;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />s.close();;</span></div> <br /> <span style="font-family: 新宋? font-size: 10pt">child已经在数据库中有了,是一个持久化的对象,不是新创建的Q因此我们希?span style="font-family: " class="hilite1">Hibernate</span>发送update(child)Q在该例中,<span style="font-family: " class="hilite1">Hibernate</span>取一下child.getId()Q和unsave-<span style="font-family: " class="hilite3">value</span>指定的null比对一下,发现不相{,那么发送update(child)?<br style="font-family: " /> <br style="font-family: " /> BTW: parent对象不需要操心,因ؓ(f)E序昑ּ的对parent有load操作和update的操作,不需?span style="font-family: " class="hilite1">Hibernate</span>自己来判断究竟是saveq是update了。我们要注意的只是child对象的操作。另?span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>是定义在Childcȝ主键属性中的?br /> <br style="font-family: " /> </span> <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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff"><</span><span style="color: #800000">class </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Child"</span><span style="color: #ff0000"> table</span><span style="color: #0000ff">="child"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff"><</span><span style="color: #800000">id </span><span style="color: #ff0000">column</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="id"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="integer"</span><span style="color: #ff0000"> unsaved-value</span><span style="color: #0000ff">="null"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />  </span><span style="color: #0000ff"><</span><span style="color: #800000">generator </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="identity"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff"></</span><span style="color: #800000">id</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff"></</span><span style="color: #800000">class</span><span style="color: #0000ff">></span></div> <br /> <span style="font-family: 新宋? font-size: 10pt">如果主键属性不是对象型Q而是基本cdQ如int/long/double/...Q那么你需要指定一个数值型?span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>Q例如:(x)<br style="font-family: " /> </span><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.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">unsaved-value="0"</span></div> <br /> <span style="font-family: 新宋? font-size: 10pt">在此提醒大家Q很多h以ؓ(f)对主键属性定义ؓ(f)int/longQ比定义为Integer/Longq行效率来得高,认ؓ(f)基本cd不需要进行对象的装和解构操作,因此喜欢把主键定义ؓ(f)int/long的。但实际上,<span style="font-family: " class="hilite1">Hibernate</span>内部L把主键{换ؓ(f)对象型进行操作的Q就你定义为int/long型的Q?span style="font-family: " class="hilite1">Hibernate</span>内部也要q行一ơ对象构造操作,q回l你的时候,q要q行解构操作Q效率可能反而低也说不定。因此大家一定要扭{一个观点,?span style="font-family: " class="hilite1">Hibernate</span>中,主键属性定义ؓ(f)基本cdQƈ不能够比定义为对象型效率来的高,而且也多了很多麻烦,因此大家使用对象型的Integer/Long定义主键?<br style="font-family: " /> <br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="none"?<br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="any" <br style="font-family: " /> <br style="font-family: " /> M要用在主键属性不是通过<span style="font-family: " class="hilite1">Hibernate</span>生成Q而是E序自己setId()的时候?<br style="font-family: " /> <br style="font-family: " /> 在这里多说一句,强烈使用<span style="font-family: " class="hilite1">Hibernate</span>的id generatorQ或者你可以自己扩展<span style="font-family: " class="hilite1">Hibernate</span>的id generatorQ特别注意不要用有实际含义的字D当做主键来用!例如用户cUserQ很多h喜欢用用L(fng)陆名U做Z键,q是一个很不好的习(fn)惯,当用L(fng)和其他实体类有关联关pȝ时候,万一你需要修改用L(fng)陆名Uͼ一改就需要改好几张表中的数据。偶合性太高,而如果你使用无业务意义的id generatorQ那么修改用户名Uͼ只修改user表就行了?<br style="font-family: " /> <br style="font-family: " /> p个问题引甛_来,如果你严格按照这个原则来设计数据库,那么你基本上是用不到手工来setId()的,你用<span style="font-family: " class="hilite1">Hibernate</span>的id generatorO(jin)K了。因此你也不需要了解当 <br style="font-family: " /> <br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="none"?<br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="any" <br style="font-family: " /> <br style="font-family: " /> I竟有什么含义了。如果你非要用assigned不可Q那么l解释一下:(x) <br style="font-family: " /> <br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="none" 的时候,׃不论主键属性ؓ(f)M|都不可能为noneQ因?span style="font-family: " class="hilite1">Hibernate</span>L对child对象发送update(child) <br style="font-family: " /> <br style="font-family: " /> <span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="any" 的时候,׃不论主键属性ؓ(f)M|都肯定ؓ(f)anyQ因?span style="font-family: " class="hilite1">Hibernate</span>L对child对象发送save(child) <br style="font-family: " /> <br style="font-family: " /> 大多数情况下Q你可以避免使用assignedQ只有当你用复合主键的时候不得不手工setId()Q这时候需要你自己考虑I竟怎么讄<span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>了,Ҏ(gu)你自q需要来定?<br style="font-family: " /> <br style="font-family: " /> BTW: Gavin King强烈不徏议用composite-idQ强烈徏议用UserType?<br style="font-family: " /> <br style="font-family: " /> 因此Q如果你在系l设计的时候,遵@如下原则Q?<br style="font-family: " /> <br style="font-family: " /> <span style="font-family: ; color: red">1、?span style="font-family: " class="hilite1">Hibernate</span>的id generator来生成无业务意义的主键,不用有业务含义的字D做主键Q不使用assigned?<br style="font-family: " /> <br style="font-family: " /> 2、用对象类?String/Integer/Long/...)来做主键Q而不使用基础cd(int/long/...)做主?<br style="font-family: " /> <br style="font-family: " /> 3、不使用composite-id来处理复合主键的情况Q而用UserType来处理该U情c(din)?/span> <br style="font-family: " /> <br style="font-family: " /> 那么你永q用的是<span style="font-family: " class="hilite2">unsaved</span>-<span style="font-family: " class="hilite3">value</span>="null" Q不可能用到any/none/..了?</span> <img src ="http://www.aygfsteel.com/migrant/aggbug/291567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2009-08-17 22:41 <a href="http://www.aygfsteel.com/migrant/archive/2009/08/17/291567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]java.math.BigDecimal的用?/title><link>http://www.aygfsteel.com/migrant/archive/2009/05/07/269368.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Thu, 07 May 2009 03:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2009/05/07/269368.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/269368.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2009/05/07/269368.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/269368.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/269368.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt; font-family: 新宋?>问题的提出:(x)<br style="font-family: " /> 如果我们~译q行下面q个E序?x)看C么?</span><br /> <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 id="Codehighlighter1_18_210_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_210_Open_Text.style.display='none'; Codehighlighter1_18_210_Closed_Image.style.display='inline'; Codehighlighter1_18_210_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_18_210_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_18_210_Closed_Text.style.display='none'; Codehighlighter1_18_210_Open_Image.style.display='inline'; Codehighlighter1_18_210_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Test </span><span id="Codehighlighter1_18_210_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_18_210_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_60_208_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_208_Open_Text.style.display='none'; Codehighlighter1_60_208_Closed_Image.style.display='inline'; Codehighlighter1_60_208_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_60_208_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_60_208_Closed_Text.style.display='none'; Codehighlighter1_60_208_Open_Image.style.display='inline'; Codehighlighter1_60_208_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String args[]) </span><span id="Codehighlighter1_60_208_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_60_208_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="color: #000000">0.05</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">0.01</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="color: #000000">1.0</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">0.42</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="color: #000000">4.015</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="color: #000000">123.3</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <br /> <span style="font-size: 10pt; font-family: 新宋?>你没有看错!l果实?br style="font-family: " /> <br style="font-family: " /> 0.060000000000000005<br style="font-family: " /> 0.5800000000000001<br style="font-family: " /> 401.49999999999994<br style="font-family: " /> 1.2329999999999999<br style="font-family: " /> <br style="font-family: " /> Java中的单QҎ(gu)cdfloat和double不能够进行运。不光是JavaQ在其它很多~程语言中也有这L(fng)问题。在大多数情况下Q计的l果是准的Q但是多试几ơ(可以做一个@环)可以试出类g面的错误。现在终于理解ؓ(f)什么要有BCD码了?br style="font-family: " /> q个问题相当严重Q如果你?.999999999999元,你的计算机是不会(x)认ؓ(f)你可以购?0元的商品的?br style="font-family: " /> 在有的编E语a中提供了专门的货币类型来处理q种情况Q但是Java没有。现在让我们看看如何解决q个问题?br style="font-family: " /> <br style="font-family: " /> 四舍五入<br style="font-family: " /> 我们的第一个反应是做四舍五入。MathcM的roundҎ(gu)不能讄保留几位数Q我们只能象q样Q保留两位)Q?br style="font-family: " /> </span> <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 id="Codehighlighter1_34_79_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_79_Open_Text.style.display='none'; Codehighlighter1_34_79_Closed_Image.style.display='inline'; Codehighlighter1_34_79_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_34_79_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_34_79_Closed_Text.style.display='none'; Codehighlighter1_34_79_Open_Image.style.display='inline'; Codehighlighter1_34_79_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> round(</span><span style="color: #0000ff">double</span><span style="color: #000000"> value) </span><span id="Codehighlighter1_34_79_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_34_79_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> Math.round(value </span><span style="color: #000000">*</span><span style="color: #000000"> </span><span style="color: #000000">100</span><span style="color: #000000">) </span><span style="color: #000000">/</span><span style="color: #000000"> </span><span style="color: #000000">100.0</span><span style="color: #000000">;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div> <br /> <span style="font-size: 10pt; font-family: 新宋?>非常不幸Q上面的代码q不能正常工作,l这个方法传?.015它将q回4.01而不?.02Q如我们在上面看到的<br style="font-family: " /> 4.015*100=401.49999999999994<br style="font-family: " /> 因此如果我们要做到精的四舍五入Q不能利用简单类型做Mq算<br style="font-family: " /> java.text.DecimalFormat也不能解册个问题:(x)<br style="font-family: " /> System.out.println(new java.text.DecimalFormat("0.00").format(4.025));<br style="font-family: " /> 输出?.02<br style="font-family: " /> <br style="font-family: " /> BigDecimal<br style="font-family: " /> 在《Effective Java》这本书中也提到q个原则Qfloat和double只能用来做科学计或者是工程计算Q在商业计算中我们要用java.math.BigDecimal。BigDecimal一共有4个够造方法,我们不关心用BigInteger来够造的那两个,那么q有两个Q它们是Q?br /> <br style="font-family: " /> BigDecimal(double val) <br style="font-family: " />           Translates a double into a BigDecimal. <br style="font-family: " /> BigDecimal(String val) <br style="font-family: " />           Translates the String repre sentation of a BigDecimal into a BigDecimal.<br /> <br style="font-family: " /> 上面的API要描q相当的明确Q而且通常情况下,上面的那一个用v来要方便一些。我们可能想都不惛_用上了,?x)有什么问题呢Q等到出了问题的时候,才发C面哪个够造方法的详细说明中有q么一D:(x)<br style="font-family: " /> Note: the results of this constructor can be somewhat unpredictable. One might assume that new BigDecimal(.1) is exactly equal to .1, but it is actually equal to .1000000000000000055511151231257827021181583404541015625. This is so because .1 cannot be represented exactly as a double (or, for that matter, as a binary fraction of any finite length). Thus, the long value that is being passed in to the constructor is not exactly equal to .1, appearances nonwithstanding. <br style="font-family: " /> The (String) constructor, on the other hand, is perfectly predictable: new BigDecimal(".1") is exactly equal to .1, as one would expect. Therefore, it is generally recommended that the (String) constructor be used in preference to this one.<br style="font-family: " /> 原来我们如果需要精计,非要用String来够造BigDecimal不可Q在《Effective Java》一书中的例子是用String来够造BigDecimal的,但是书上却没有强调这一点,q也许是一个小的p吧?br style="font-family: " /> <br style="font-family: " /> 解决Ҏ(gu)<br style="font-family: " /> 现在我们已经可以解决q个问题了,原则是用BigDecimalq且一定要用String来够造?br style="font-family: " /> 但是惛_一下吧Q如果我们要做一个加法运,需要先两个QҎ(gu)转ؓ(f)StringQ然后够造成BigDecimalQ在其中一个上调用addҎ(gu)Q传入另一个作为参敎ͼ然后把运的l果QBigDecimalQ再转换为QҎ(gu)。你能够忍受q么烦琐的过E吗Q下面我们提供一个工L(fng)Arith来简化操作。它提供以下静态方法,包括加减乘除和四舍五入:(x)<br style="font-family: " /> public static double add(double v1,double v2)<br style="font-family: " /> public static double sub(double v1,double v2)<br style="font-family: " /> public static double mul(double v1,double v2)<br style="font-family: " /> public static double div(double v1,double v2)<br style="font-family: " /> public static double div(double v1,double v2,int scale)<br style="font-family: " /> public static double round(double v,int scale)<br style="font-family: " /> 附录<br style="font-family: " /> 源文件Arith.javaQ?br style="font-family: " /> </span> <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 alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000"> java.math.BigDecimal;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img id="Codehighlighter1_49_2439_Open_Image" onclick="this.style.display='none'; Codehighlighter1_49_2439_Open_Text.style.display='none'; Codehighlighter1_49_2439_Closed_Image.style.display='inline'; Codehighlighter1_49_2439_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_2439_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_49_2439_Closed_Text.style.display='none'; Codehighlighter1_49_2439_Open_Image.style.display='inline'; Codehighlighter1_49_2439_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Arith </span><span id="Codehighlighter1_49_2439_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_49_2439_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #008000">//</span><span style="color: #008000">默认除法q算_ֺ</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> DEF_DIV_SCALE </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">10</span><span style="color: #000000">;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #008000">//</span><span style="color: #008000">q个cM能实例化</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">    </span><span style="color: #0000ff">private</span><span style="color: #000000"> Arith()<br /> <img id="Codehighlighter1_155_171_Open_Image" onclick="this.style.display='none'; Codehighlighter1_155_171_Open_Text.style.display='none'; Codehighlighter1_155_171_Closed_Image.style.display='inline'; Codehighlighter1_155_171_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_155_171_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_155_171_Closed_Text.style.display='none'; Codehighlighter1_155_171_Open_Image.style.display='inline'; Codehighlighter1_155_171_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_155_171_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_155_171_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        ;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_177_263_Open_Image" onclick="this.style.display='none'; Codehighlighter1_177_263_Open_Text.style.display='none'; Codehighlighter1_177_263_Closed_Image.style.display='inline'; Codehighlighter1_177_263_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_177_263_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_177_263_Closed_Text.style.display='none'; Codehighlighter1_177_263_Open_Image.style.display='inline'; Codehighlighter1_177_263_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_177_263_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">/** */</span><span id="Codehighlighter1_177_263_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供_的加法运?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v1 被加?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v2 加数<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 两个参数的和<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> add(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v1,</span><span style="color: #0000ff">double</span><span style="color: #000000"> v2)<br /> <img id="Codehighlighter1_319_488_Open_Image" onclick="this.style.display='none'; Codehighlighter1_319_488_Open_Text.style.display='none'; Codehighlighter1_319_488_Closed_Image.style.display='inline'; Codehighlighter1_319_488_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_319_488_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_319_488_Closed_Text.style.display='none'; Codehighlighter1_319_488_Open_Image.style.display='inline'; Codehighlighter1_319_488_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_319_488_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_319_488_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v1));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v2));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> b1.add(b2).doubleValue();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_494_580_Open_Image" onclick="this.style.display='none'; Codehighlighter1_494_580_Open_Text.style.display='none'; Codehighlighter1_494_580_Closed_Image.style.display='inline'; Codehighlighter1_494_580_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_494_580_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_494_580_Closed_Text.style.display='none'; Codehighlighter1_494_580_Open_Image.style.display='inline'; Codehighlighter1_494_580_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_494_580_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">/** */</span><span id="Codehighlighter1_494_580_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供_的减法运?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v1 被减?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v2 减数<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 两个参数的差<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_631_805_Open_Image" onclick="this.style.display='none'; Codehighlighter1_631_805_Open_Text.style.display='none'; Codehighlighter1_631_805_Closed_Image.style.display='inline'; Codehighlighter1_631_805_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_631_805_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_631_805_Closed_Text.style.display='none'; Codehighlighter1_631_805_Open_Image.style.display='inline'; Codehighlighter1_631_805_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> sub(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v1,</span><span style="color: #0000ff">double</span><span style="color: #000000"> v2)</span><span id="Codehighlighter1_631_805_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_631_805_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v1));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v2));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> b1.subtract(b2).doubleValue();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_811_897_Open_Image" onclick="this.style.display='none'; Codehighlighter1_811_897_Open_Text.style.display='none'; Codehighlighter1_811_897_Closed_Image.style.display='inline'; Codehighlighter1_811_897_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_811_897_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_811_897_Closed_Text.style.display='none'; Codehighlighter1_811_897_Open_Image.style.display='inline'; Codehighlighter1_811_897_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_811_897_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">/** */</span><span id="Codehighlighter1_811_897_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供_的乘法运?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v1 被乘?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v2 乘数<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 两个参数的积<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> mul(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v1,</span><span style="color: #0000ff">double</span><span style="color: #000000"> v2)<br /> <img id="Codehighlighter1_953_1127_Open_Image" onclick="this.style.display='none'; Codehighlighter1_953_1127_Open_Text.style.display='none'; Codehighlighter1_953_1127_Closed_Image.style.display='inline'; Codehighlighter1_953_1127_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_953_1127_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_953_1127_Closed_Text.style.display='none'; Codehighlighter1_953_1127_Open_Image.style.display='inline'; Codehighlighter1_953_1127_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_953_1127_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_953_1127_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v1));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v2));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> b1.multiply(b2).doubleValue();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_1133_1263_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1133_1263_Open_Text.style.display='none'; Codehighlighter1_1133_1263_Closed_Image.style.display='inline'; Codehighlighter1_1133_1263_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1133_1263_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1133_1263_Closed_Text.style.display='none'; Codehighlighter1_1133_1263_Open_Image.style.display='inline'; Codehighlighter1_1133_1263_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1133_1263_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">/** */</span><span id="Codehighlighter1_1133_1263_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供Q相对)_的除法运,当发生除不尽的情冉|Q精到<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 数点以?0位,以后的数字四舍五入?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v1 被除?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v2 除数<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 两个参数的商<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> div(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v1,</span><span style="color: #0000ff">double</span><span style="color: #000000"> v2)<br /> <img id="Codehighlighter1_1319_1366_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1319_1366_Open_Text.style.display='none'; Codehighlighter1_1319_1366_Closed_Image.style.display='inline'; Codehighlighter1_1319_1366_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1319_1366_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1319_1366_Closed_Text.style.display='none'; Codehighlighter1_1319_1366_Open_Image.style.display='inline'; Codehighlighter1_1319_1366_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1319_1366_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1319_1366_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> div(v1,v2,DEF_DIV_SCALE);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_1372_1540_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1372_1540_Open_Text.style.display='none'; Codehighlighter1_1372_1540_Closed_Image.style.display='inline'; Codehighlighter1_1372_1540_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1372_1540_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1372_1540_Closed_Text.style.display='none'; Codehighlighter1_1372_1540_Open_Image.style.display='inline'; Codehighlighter1_1372_1540_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1372_1540_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">/** */</span><span id="Codehighlighter1_1372_1540_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供Q相对)_的除法运。当发生除不的情况Ӟ由scale参数?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 定精度,以后的数字四舍五入?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v1 被除?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v2 除数<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> scale 表示表示需要精到数点以后几位?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 两个参数的商<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> div(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v1,</span><span style="color: #0000ff">double</span><span style="color: #000000"> v2,</span><span style="color: #0000ff">int</span><span style="color: #000000"> scale)<br /> <img id="Codehighlighter1_1606_1945_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1606_1945_Open_Text.style.display='none'; Codehighlighter1_1606_1945_Closed_Image.style.display='inline'; Codehighlighter1_1606_1945_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1606_1945_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1606_1945_Closed_Text.style.display='none'; Codehighlighter1_1606_1945_Open_Image.style.display='inline'; Codehighlighter1_1606_1945_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1606_1945_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1606_1945_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">if</span><span style="color: #000000">(scale</span><span style="color: #000000"><</span><span style="color: #000000">0</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_1636_1742_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1636_1742_Open_Text.style.display='none'; Codehighlighter1_1636_1742_Closed_Image.style.display='inline'; Codehighlighter1_1636_1742_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1636_1742_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1636_1742_Closed_Text.style.display='none'; Codehighlighter1_1636_1742_Open_Image.style.display='inline'; Codehighlighter1_1636_1742_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_1636_1742_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_1636_1742_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> IllegalArgumentException(</span><span style="color: #000000">"</span><span style="color: #000000">The scale must be a positive integer or zero</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v1));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v2));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_1951_2058_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1951_2058_Open_Text.style.display='none'; Codehighlighter1_1951_2058_Closed_Image.style.display='inline'; Codehighlighter1_1951_2058_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1951_2058_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1951_2058_Closed_Text.style.display='none'; Codehighlighter1_1951_2058_Open_Image.style.display='inline'; Codehighlighter1_1951_2058_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1951_2058_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">/** */</span><span id="Codehighlighter1_1951_2058_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * 提供_的小C四舍五入处理?br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> v 需要四舍五入的数字<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> scale 数点后保留几位<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    * </span><span style="color: #808080">@return</span><span style="color: #008000"> 四舍五入后的l果<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    </span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">double</span><span style="color: #000000"> round(</span><span style="color: #0000ff">double</span><span style="color: #000000"> v,</span><span style="color: #0000ff">int</span><span style="color: #000000"> scale)<br /> <img id="Codehighlighter1_2115_2437_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2115_2437_Open_Text.style.display='none'; Codehighlighter1_2115_2437_Closed_Image.style.display='inline'; Codehighlighter1_2115_2437_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2115_2437_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2115_2437_Closed_Text.style.display='none'; Codehighlighter1_2115_2437_Open_Image.style.display='inline'; Codehighlighter1_2115_2437_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_2115_2437_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2115_2437_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">if</span><span style="color: #000000">(scale</span><span style="color: #000000"><</span><span style="color: #000000">0</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_2145_2251_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2145_2251_Open_Text.style.display='none'; Codehighlighter1_2145_2251_Closed_Image.style.display='inline'; Codehighlighter1_2145_2251_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2145_2251_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2145_2251_Closed_Text.style.display='none'; Codehighlighter1_2145_2251_Open_Image.style.display='inline'; Codehighlighter1_2145_2251_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_2145_2251_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_2145_2251_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">throw</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> IllegalArgumentException(</span><span style="color: #000000">"</span><span style="color: #000000">The scale must be a positive integer or zero</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal b </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(Double.toString(v));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        BigDecimal one </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BigDecimal(</span><span style="color: #000000">"</span><span style="color: #000000">1</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <img src ="http://www.aygfsteel.com/migrant/aggbug/269368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2009-05-07 11:33 <a href="http://www.aygfsteel.com/migrant/archive/2009/05/07/269368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Struts ?Multibox 的用?/title><link>http://www.aygfsteel.com/migrant/archive/2008/03/11/185507.html</link><dc:creator>J2EE学习(fn)W记</dc:creator><author>J2EE学习(fn)W记</author><pubDate>Tue, 11 Mar 2008 14:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/migrant/archive/2008/03/11/185507.html</guid><wfw:comment>http://www.aygfsteel.com/migrant/comments/185507.html</wfw:comment><comments>http://www.aygfsteel.com/migrant/archive/2008/03/11/185507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/migrant/comments/commentRss/185507.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/migrant/services/trackbacks/185507.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 10pt; font-family: "><span style="font-family: 新宋?><span style="font-size: 10pt; font-family: "><span style="font-family: "><span style="font-size: 10pt; font-family: 新宋?>?<span style="font-family: ">ActionForm</span> 中定义一个数l?<span style="font-family: ">String[] selectedOptions </span>用于存放复选框被选中的|<br style="font-family: " /> 数组 <span style="font-family: ">LabelValueBean[] possibleOptions </span>用于昄所有的复选框的倹{?</span></span></span></span><br style="font-family: " /> </span></span><br /> <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; font-family: Arial; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.struts.action.ActionForm;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.struts.util.LabelValueBean;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img id="Codehighlighter1_136_852_Open_Image" onclick="this.style.display='none'; Codehighlighter1_136_852_Open_Text.style.display='none'; Codehighlighter1_136_852_Closed_Image.style.display='inline'; Codehighlighter1_136_852_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_136_852_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_136_852_Closed_Text.style.display='none'; Codehighlighter1_136_852_Open_Image.style.display='inline'; Codehighlighter1_136_852_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> MyActionForm </span><span style="color: #0000ff">extends</span><span style="color: #000000"> ActionForm </span><span id="Codehighlighter1_136_852_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_136_852_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> LabelValueBean[] possibleOptions;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> String[] selectedOptions;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img id="Codehighlighter1_241_596_Open_Image" onclick="this.style.display='none'; Codehighlighter1_241_596_Open_Text.style.display='none'; Codehighlighter1_241_596_Closed_Image.style.display='inline'; Codehighlighter1_241_596_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_241_596_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_241_596_Closed_Text.style.display='none'; Codehighlighter1_241_596_Open_Image.style.display='inline'; Codehighlighter1_241_596_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> MyActionForm() </span><span id="Codehighlighter1_241_596_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_241_596_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #008000">//</span><span style="color: #008000"> Initialise the LabelValueBeans in the possibleOptions array.</span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">        LabelValueBean[] lvBeans </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LabelValueBean[</span><span style="color: #000000">4</span><span style="color: #000000">];<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        lvBeans[</span><span style="color: #000000">0</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LabelValueBean(</span><span style="color: #000000">"</span><span style="color: #000000">Alpha</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">A</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        lvBeans[</span><span style="color: #000000">1</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LabelValueBean(</span><span style="color: #000000">"</span><span style="color: #000000">Beta</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">B</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        lvBeans[</span><span style="color: #000000">2</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LabelValueBean(</span><span style="color: #000000">"</span><span style="color: #000000">Charlie</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">C</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        lvBeans[</span><span style="color: #000000">3</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LabelValueBean(</span><span style="color: #000000">"</span><span style="color: #000000">Delta</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">D</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.possibleOptions </span><span style="color: #000000">=</span><span style="color: #000000"> lvBeans;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img id="Codehighlighter1_645_674_Open_Image" onclick="this.style.display='none'; Codehighlighter1_645_674_Open_Text.style.display='none'; Codehighlighter1_645_674_Closed_Image.style.display='inline'; Codehighlighter1_645_674_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_645_674_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_645_674_Closed_Text.style.display='none'; Codehighlighter1_645_674_Open_Image.style.display='inline'; Codehighlighter1_645_674_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> LabelValueBean[] getPossibleOptions() </span><span id="Codehighlighter1_645_674_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_645_674_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> possibleOptions;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img id="Codehighlighter1_715_744_Open_Image" onclick="this.style.display='none'; Codehighlighter1_715_744_Open_Text.style.display='none'; Codehighlighter1_715_744_Closed_Image.style.display='inline'; Codehighlighter1_715_744_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_715_744_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_715_744_Closed_Text.style.display='none'; Codehighlighter1_715_744_Open_Image.style.display='inline'; Codehighlighter1_715_744_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> String[] getSelectedOptions() </span><span id="Codehighlighter1_715_744_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_715_744_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> selectedOptions;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img id="Codehighlighter1_805_850_Open_Image" onclick="this.style.display='none'; Codehighlighter1_805_850_Open_Text.style.display='none'; Codehighlighter1_805_850_Closed_Image.style.display='inline'; Codehighlighter1_805_850_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_805_850_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_805_850_Closed_Text.style.display='none'; Codehighlighter1_805_850_Open_Image.style.display='inline'; Codehighlighter1_805_850_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> setSelectedOptions(String[] selectedOptions) </span><span id="Codehighlighter1_805_850_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 alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_805_850_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">this</span><span style="color: #000000">.selectedOptions </span><span style="color: #000000">=</span><span style="color: #000000"> selectedOptions;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <br /> <br /> <span style="font-family: 宋体"><span style="font-family: 新宋?><span style="font-family: ">?<span style="font-family: ">JSP</span> 中用以下代码:(x)</span></span><br style="font-family: " /> </span><br /> <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; font-family: Arial; background-color: #eeeeee"><span style="color: #0000ff"><</span><span style="color: #800000">logic:iterate </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="myActionForm"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="item"</span><span style="color: #ff0000"> property</span><span style="color: #0000ff">="possibleOptions"</span><span style="color: #0000ff">></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"><</span><span style="color: #800000">html:multibox </span><span style="color: #ff0000">property</span><span style="color: #0000ff">="selectedOptions"</span><span style="color: #0000ff">></span><span style="color: #000000"><br />         </span><span style="color: #0000ff"><</span><span style="color: #800000">bean:write </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="item"</span><span style="color: #ff0000"> property</span><span style="color: #0000ff">="value"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br />     </span><span style="color: #0000ff"></</span><span style="color: #800000">html:multibox</span><span style="color: #0000ff">></span><span style="color: #000000"><br />         </span><span style="color: #0000ff"><</span><span style="color: #800000">bean:write </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="item"</span><span style="color: #ff0000"> property</span><span style="color: #0000ff">="label"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/><</span><span style="color: #800000">br </span><span style="color: #0000ff">/></span><span style="color: #000000"><br /> </span><span style="color: #0000ff"></</span><span style="color: #800000">logic:iterate</span><span style="color: #0000ff">></span></div> </span> <img src ="http://www.aygfsteel.com/migrant/aggbug/185507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/migrant/" target="_blank">J2EE学习(fn)W记</a> 2008-03-11 22:50 <a href="http://www.aygfsteel.com/migrant/archive/2008/03/11/185507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">;</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Ī</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݳ</a>| <a href="http://" target="_blank">Ǩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽʡ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank">ٸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ָ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>