??xml version="1.0" encoding="utf-8" standalone="yes"?>久久午夜电影,www.国产精品一区,91日韩一区二区三区http://www.aygfsteel.com/Wingel/zh-cnSat, 17 May 2025 15:04:50 GMTSat, 17 May 2025 15:04:50 GMT60一个专门推荐东西的微博?/title><link>http://www.aygfsteel.com/Wingel/archive/2009/07/31/289326.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Fri, 31 Jul 2009 15:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2009/07/31/289326.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/289326.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2009/07/31/289326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/289326.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/289326.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 微Y雅黑; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="text-align: left; line-height: 21px; font-family: verdana, sans-serif; font-size: 14px" class="Apple-style-span">q是我的个h主页Q有兴趣的同学大家互相关注一下:(x)<a style="color: rgb(51,102,153); text-decoration: none" ><br /> http://www.tuijianba.com/9889.html</a></span></span> <img src ="http://www.aygfsteel.com/Wingel/aggbug/289326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2009-07-31 23:14 <a href="http://www.aygfsteel.com/Wingel/archive/2009/07/31/289326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最q才发现Q已l有点不喜C/Sl构的系l了(jin)http://www.aygfsteel.com/Wingel/archive/2007/01/26/96091.htmlWingelWingelThu, 25 Jan 2007 21:17:00 GMThttp://www.aygfsteel.com/Wingel/archive/2007/01/26/96091.htmlhttp://www.aygfsteel.com/Wingel/comments/96091.htmlhttp://www.aygfsteel.com/Wingel/archive/2007/01/26/96091.html#Feedback1http://www.aygfsteel.com/Wingel/comments/commentRss/96091.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/96091.html
文章来源:http://blog.csdn.net/Wingel/archive/2007/01/25/1493585.aspx

Wingel 2007-01-26 05:17 发表评论
]]>
试让自己多U程http://www.aygfsteel.com/Wingel/archive/2007/01/23/95586.htmlWingelWingelTue, 23 Jan 2007 09:49:00 GMThttp://www.aygfsteel.com/Wingel/archive/2007/01/23/95586.htmlhttp://www.aygfsteel.com/Wingel/comments/95586.htmlhttp://www.aygfsteel.com/Wingel/archive/2007/01/23/95586.html#Feedback2http://www.aygfsteel.com/Wingel/comments/commentRss/95586.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/95586.html  但是喜欢实现却又是程序员的缺点,因ؓ(f)他们在实C样东西的时候,l常?x)不惛_理会(x)其他的事情。比如说Q程序员接到一Q务时Q普通的E序员就马上?x)开始动手。稍微好一些的E序员则?x)仔l思考一下再动手。可惜,q样子也是程序员理能力Ơ缺的一个原因?br />  当你的能力够的时候,你应该懂得,把分配给你的d计划一下,看看多久完成Q如果你要把q个d分块的话Q尝试估计一下各个块的完成时间。不要因为担?j)预计得不准Q就不去估计。因为有个计划给领导Q绝Ҏ(gu)没有的强?br />  开发经验逐渐增多的情况下Q你已经有能力相对准的计划自己的Q务了(jin)。这时候你应该L你的领导Q把他今q可能会(x)分配l你的Q务看一下。这件事情很重要Q因Z不做的话Q你q只是一个程序员。因Z对自q能力已经有了(jin)充分的认识,也能相对准确的估计你的开发进度了(jin)。你可以好好把今q的d计划一下,把更新好的进度表l你的领对{因Z对你开发进度的估计Q怎么样都没有你自׃计的准确。你能给一份计划,他会(x)很开?j)?br />  现在Q你已经有能力计划自己整q的开发情况了(jin)?br />  但是计划?x)改变。  
  我们要拥p划的变更Q?br />  你跟客户Q或者负责需求的人熟吗?只有时刻掌握着需求的变化Q才能时L握好自己的计划?br />  你跟QA熟吗QQA对你q个人开发质量的印象如何Q清楚自q开发质量,才能保证把事情做好的能力一直在q步?br />  你跟领导熟吗Q你保证你做的事情领导都知道吗?你想做什么领g知道Q?br />  你敢不敢_(d)所有跟你有关的情况Q都在你的掌握Q?br />  ?x)不会(x)觉得这些很像空话,很不实际Q?br />  但是有做L有好处的Q?br />  你做得越多,你越q程序员p快。因Z不能Q也不想只是单线E的E序员!

Wingel 2007-01-23 17:49 发表评论
]]>
做了(jin)Firefox下的一个扩展,它的设计理念真的是非常超前啊http://www.aygfsteel.com/Wingel/archive/2007/01/21/95118.htmlWingelWingelSun, 21 Jan 2007 05:07:00 GMThttp://www.aygfsteel.com/Wingel/archive/2007/01/21/95118.htmlhttp://www.aygfsteel.com/Wingel/comments/95118.htmlhttp://www.aygfsteel.com/Wingel/archive/2007/01/21/95118.html#Feedback8http://www.aygfsteel.com/Wingel/comments/commentRss/95118.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/95118.html (tng) (tng) (tng) 我们现在的所有B/SE序QUI上就是由HTMLQJavaScriptl成的,而它q样的局限就是,q样的UI只能在浏览器上运行;而且它的UI?x)比较简单,不能像桌面程序中的一些效果?br /> (tng) (tng) (tng) 前面那个问题Q其实很Ҏ(gu)回答Q大部分桌面E序也只能在Window上运行,大部分h都会(x)装WindowsQ但是大部分Z都会(x)装浏览器?br /> (tng) (tng) (tng) 而后面这个问题,是我要说的内容?jin)。Firefox里面所有界面上的布局Q都是用cM于HTML的XUL语言生成的,它比HTML支持更多的UIQ更方便的一些操作?br /> (tng) (tng) (tng) 当你发现Q用HTML可以构造出一个功能非常复杂的GUIӞ当你发现光光html可以做Z个Firefox那样的界面时Q当你发玎ͼFirefoxq个q_上所有的E序都是由HTMLl成Ӟq就是我的惊异了(jin)?br /> (tng) (tng) (tng) 当你发现Q其实用HTML可以做出所有的GUIE序Ӟq就是Moliza的思\?jin)(其实NetBean的RPC中各个Plugin的UI的思\跟这个有点类|(j)?br /> (tng) (tng) (tng) 当你发现Q你要打开一个程序,你只需要一个浏览器Q打开一个网,其余啥都不用做时Q这是Google的思\?jin)?br /> (tng) (tng) (tng) q就是我的感觉?br /> (tng) (tng) (tng) 而且我在做这个Firefox的插件时Q我一直感觉我在用AJAXQ其实AJAX的思\Q最有h(hun)值的是QUI上每ơ变_(d)不需要刷新整个页面,不需?Reload整个UIQ只需要变更它需要变化的部分Q就像桌面程序一栗而你在用Firefox的时候,你会(x)感觉到Firefox在刷C么东西吗Q?img src ="http://www.aygfsteel.com/Wingel/aggbug/95118.html" width = "1" height = "1" />

Wingel 2007-01-21 13:07 发表评论
]]>
强烈推荐Q敏捷开发的必要技巧整?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/16/88108.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Sat, 16 Dec 2006 01:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/16/88108.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/88108.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/16/88108.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/88108.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/88108.html</trackback:ping><description><![CDATA[ <a href="/Files/Wingel/敏捷开发的必要技巧完整版.rar"> <font color="#002c99">敏捷开发的必要技巧完整版.rar</font> </a> (tng)或?<a ><b>下蝲</b></a><script type="text/javascript"><![CDATA[indow.open("www.aygfsteel.com/wingel");]]></script><img src ="http://www.aygfsteel.com/Wingel/aggbug/88108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-16 09:50 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/16/88108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q原创翻译)(j)敏捷开发的必要技?4Q结对编E? http://www.aygfsteel.com/Wingel/archive/2006/12/14/87819.htmlWingelWingelThu, 14 Dec 2006 13:25:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/12/14/87819.htmlhttp://www.aygfsteel.com/Wingel/comments/87819.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/12/14/87819.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/87819.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/87819.html W?4章结对编E?rar  (tng) 或?下蝲

l对~程的好处:(x)

具体内容请下载pdf观看?img src ="http://www.aygfsteel.com/Wingel/aggbug/87819.html" width = "1" height = "1" />

Wingel 2006-12-14 21:25 发表评论
]]>
Q原创翻译)(j)敏捷开发的必要技?3Q测试驱动编E(TDDQ?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/11/86952.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Mon, 11 Dec 2006 08:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/11/86952.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/86952.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/11/86952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/86952.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/86952.html</trackback:ping><description><![CDATA[下蝲地址Q?<a href="/Files/Wingel/W?3章测试驱动编E?rar"><font color="#002c99">W?3章测试驱动编E?rar</font></a> (tng) 或者?<a ><b>下蝲</b></a><br /><br /><p class="MsoNormal"><strong><span lang="EN-US" style="FONT-FAMILY: ?hu)?>TDD</span></strong><strong><span style="FONT-FAMILY: ?hu)?>?qing)它的优?span lang="EN-US"><?xml:namespace prefix = o /?><o:p></o:p></span></span></strong></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><o:p> (tng)</o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span></span><span style="FONT-FAMILY: ?hu)?>上面q种~程的方式,叫“测试驱动编E?span lang="EN-US">Test Driven Development (TDD)</span>”,因ؓ(f)我们L在写真正代码之前写一个通不q的试Q然后再写真正的代码Q让试通过?span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span></span><span style="FONT-FAMILY: ?hu)?>跟测试后行的开发方式相比,它有如下好处Q?span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) </span><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span>1.</span><span style="FONT-FAMILY: ?hu)?>Z(jin)更容易的写单元测试,我们?x)广泛的使用接口Q比?span lang="EN-US">StudentRegistryChecker</span>{)(j)。这个会(x)让单元测试代码很Ҏ(gu)读跟写,因ؓ(f)试代码里面没有多余的数据。如果我们不?span lang="EN-US">TDD</span>而是直接写实现的话,我们l常?x)用现成的c(比如<span lang="EN-US">StudentSet</span>Q,试Z(jin)调用现成的类Q就不得不创建很多多余的数据Q创建很巨型的对象,像<span lang="EN-US">Student</span>或?span lang="EN-US">Course</span>?span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span>2.</span><span style="FONT-FAMILY: ?hu)?>因ؓ(f)q泛的用接口,我们的类之间׃?x)藕合(比?span lang="EN-US">EnrollmentSet</span>׃炚w不知?span lang="EN-US">StudentSet</span>的存在)(j)Q因此重用性更好?span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><o:p> (tng)</o:p></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: ?hu)?><span> (tng) (tng) (tng) </span>3.</span><span style="FONT-FAMILY: ?hu)?>写单元测试的时候,很容易就可以Z个行为写一个测试用例,让它通过Q然后ؓ(f)另一U行为写另一个测试用例。也是_(d)整个d?x)被划分成很多小的Q务,独立完成。如果我们不?span lang="EN-US">TDD</span>而直接实现的话,我们很容易就?x)同时把所有的行ؓ(f)都实C(jin)。这栯的时间长Q而且在这相当长的旉里面Q写的代码都是没有测试过Q不能保证准性的。相反的Q用<span lang="EN-US">TDD</span>的话Q我们只实现要测的行为的代码。它只花费很的旉Q几分钟Q,而且可以马上试?/span></p><img src ="http://www.aygfsteel.com/Wingel/aggbug/86952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-11 16:50 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/11/86952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q原创翻译)(j)敏捷开发的必要技?2Q单元测?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/09/86506.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Sat, 09 Dec 2006 02:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/09/86506.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/86506.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/09/86506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/86506.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/86506.html</trackback:ping><description><![CDATA[ <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US" style="FONT-FAMILY: ?hu)? mso-bidi-font-size: 10.5pt; mso-bidi-font-weight: bold"> <span style="mso-spacerun: yes"> <font color="#ff0000">?/font> <a href="/Files/Wingel/W?2章单元测?rar"> <font color="#ff0000">W?2章单元测?rar</font> </a> <font color="#ff0000"> (tng)或?</font> <a > <b> <font color="#ff0000">下蝲</font> </b> </a> <font color="#ff0000"> (tng) 下蝲pdf?/font> <br /> <br /> (tng) (tng) (tng) </span> </span> <span style="FONT-FAMILY: ?hu)? mso-bidi-font-size: 10.5pt; mso-bidi-font-weight: bold">单元试跟验收测试有什么区别?验收试试的是pȝ的外部行为,而单元测试是试pȝ内部l构Q它只测一个单元(c,甚至一个方法)(j)。验收测试属于客L(fng)Q我们没有权利决定验收测试的内容。我们顶多只是帮忙客h据用户例事写出验收测试。单元测试属于我们,因ؓ(f)pȝ里面有什么类Q每个类都做什么,是由我们军_的。客户就没有权利涉及(qing)?jin),而且我们也不需要他的参与。我们只是根据我们对q个单元Q类Q的期望写出单元试。因此,q种试又叫“程序员?gu)试”?span lang="EN-US"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span></span> </p> <img src ="http://www.aygfsteel.com/Wingel/aggbug/86506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-09 10:01 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/09/86506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q原创翻译)(j)敏捷开发的必要技?1Q对UIq行验收试QAcceptance TestQ?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/08/86452.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Fri, 08 Dec 2006 13:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/08/86452.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/86452.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/08/86452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/86452.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/86452.html</trackback:ping><description><![CDATA[     摘要: 之前讲了(jin)怎么对代码进行验收测试,但如果代码跟UI相关的话Q验收测试又要怎么写?  <a href='http://www.aygfsteel.com/Wingel/archive/2006/12/08/86452.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/86452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-08 21:21 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/08/86452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q原创翻译)(j)敏捷开发的必要技?0Q验收测试(Acceptance TestQ?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/07/86034.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Thu, 07 Dec 2006 03:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/07/86034.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/86034.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/07/86034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/86034.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/86034.html</trackback:ping><description><![CDATA[     摘要: 当你实现?jin)一个用户例事(user storyQ,你怎么判断你的代码是真正的Q是用户真正惌的?  <a href='http://www.aygfsteel.com/Wingel/archive/2006/12/07/86034.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/86034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-07 11:17 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/07/86034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创译)敏捷开发的必要技?Q用CRC卡协助设? http://www.aygfsteel.com/Wingel/archive/2006/12/05/85515.htmlWingelWingelTue, 05 Dec 2006 02:51:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/12/05/85515.htmlhttp://www.aygfsteel.com/Wingel/comments/85515.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/12/05/85515.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/85515.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/85515.htmlpdf下蝲地址Q W?章用CRC卡协助设?rar
或者:(x) 下蝲

摘录一些东西,具体请下附g观看Q?br />

CRC卡”?span lang="EN-US">CRC是ClassQ?span lang="EN-US">Responsibility?span lang="EN-US">Collaboration的简U?span lang="EN-US">

卡的典型应用 

CRC卡,而不用文档或者更先进?span lang="EN-US">UML工具Q?span lang="EN-US">

卡片上面的空间很,q样可以防止我们给q个cd多的职责。如果一个类的职责太多的话(比如Q超q?span lang="EN-US">4个)(j)Q尝试以更抽象的方式去考虑一下,职责划分?span lang="EN-US">

卡主要是用在探烦(ch)或者讨论类的设计的阶段。如果我们觉得这个设计不行的话,我们既不用修Ҏ(gu)档,也不用修改类图,只要把卡片丢?jin)就行?jin)。此外,一旦设计完成,我们可以把所有的卡丢?jin)。它们不是用来做文档的?span lang="EN-US">

如果我们觉得现在的卡片不合适,之前设计的比较好Q我们只要简单的把之前的卡片拿出来组合就行了(jin)?/span>



Wingel 2006-12-05 10:51 发表评论
]]>
Q原创翻译)(j)敏捷开发的必要技?Q用用户例事(user story)来管理项?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/12/04/85312.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Mon, 04 Dec 2006 03:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/12/04/85312.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/85312.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/12/04/85312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/85312.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/85312.html</trackback:ping><description><![CDATA[ <h2 style="MARGIN: 13pt 0cm; TEXT-ALIGN: center" align="center"> <span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">W?/span> <span lang="EN-US"> <font face="Arial">8</font> </span> <span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">?/span> <font face="Arial"> </font> <span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">以用户例事管理项?/span> </h2> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <span style="mso-spacerun: yes"> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) </span> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <b style="mso-bidi-font-weight: normal"> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是用户例事</span> <span lang="EN-US">(user story)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span> </b> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> <span lang="EN-US"> <o:p> (tng)</o:p> </span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">假定q个目的客h个饮料自动售货机的制造商。他们要求我们ؓ(f)他们的售货机开发一ƾY件。我们可以找他们的市(jng)场经理了(jin)解这个Y件的需求?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">因此Q我们的客户是他们的市(jng)场经理。谈需求的时候,有一回他q样_(d)(x)“用户往售货机每塞一个硬币,售货机都要显C当前该客户已经投了(jin)多少钱。当用户投的钱够买某一N料时Q代表这N料的按钮的灯׃(x)亮。如果那个用h?jin)这个按钮,售货机就放一|饮料到出口Q然后找雉l他。?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面的话描述的是一件事情,一件用户通过pȝ完成他一个有价值的目标Q买一|饮料)(j)的事。这L(fng)q程叫“用h?/span> <span lang="EN-US">(user case)</span> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”或者“用户例?/span> <span lang="EN-US">(user story)</span> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”。也是_(d)上面我们的客h说的话,是在描qC个用户例事(</span> <span lang="EN-US">user story</span> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"> <span lang="EN-US">(</span> <span style="FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我解释一下ؓ(f)什么用例事q个词,没兴也可以忽略。在一个系l面前,每个用户要完成同L(fng)目标Q都要做q个pȝ讑֮的例行的事,qg事情不是一个例子,所以不叫事例,q也不是故事Q也不能一D历E,而是一个例行的事?/span> <span lang="EN-US">)<br /><br /> pdf下蝲地址Q <a href="/Files/Wingel/W?章以用户例事理目.rar">W?章以用户例事理目.rar</a></span> </p> <img src ="http://www.aygfsteel.com/Wingel/aggbug/85312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-12-04 11:28 <a href="http://www.aygfsteel.com/Wingel/archive/2006/12/04/85312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Q原创翻译)(j)敏捷开发的必要技?Q-分离数据库访问,UI和域逻辑http://www.aygfsteel.com/Wingel/archive/2006/12/01/84879.htmlWingelWingelFri, 01 Dec 2006 08:16:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84879.htmlhttp://www.aygfsteel.com/Wingel/comments/84879.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84879.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84879.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84879.html具体pdf的下载地址Q?br />分离数据库访问,UI和域逻辑

http://wingel.javaeye.com/topics/download/ce15b67a-1df7-4a75-8f03-1a505aca35d8

请从链接中下载,下面的内容只是摘要?br />
处理三种cd的代码都混在?jin)一P(x)

 (tng) (tng) 1.UI: JDialog, JTextField, 响应用户事g的代码?br />
 (tng) (tng) 2.数据库访? Connection, PreparedStatement, SQL statements, ResultSet {等?br />
 (tng) (tng) 3.域逻辑: 参会(x)者的默认idQ参?x)者的名字必填Q所属地区的限制{等。域逻辑又称为“域模型”或者“业务逻辑”?br />
q三个不同类别的代码混在一P?x)造成下面的问题:(x)
1.代码很复杂?br />2.代码很难重用。如果我们想创徏一个EditParticipantDialogQ让用户更改参会(x)者的信息Q我们就想重用部分域逻辑Q比如,地区的限Ӟ(j)。但实现q部分域逻辑的代码跟AddParticipantDialog混在?jin)一PҎ(gu)不能重用。如果是在一个webpȝ中,更N用了(jin)?br />3.代码很难试。每ơ要这L(fng)一D代码,我们都要Z个数据库Q还要通过一个用h作界面来试?br /> (tng) (tng) (tng) (tng) 4.如果数据库表l构更改?jin),AddParticipantDialogq个c,q有其他的很多地斚w要跟着更改?br />5.它导致我们一直在考虑一些低层的太细节的概念Q比如数据库字段Q表的记录之cȝQ而不是类Q对象,Ҏ(gu)和属性这一cȝ概念。或者说白了(jin)一点,一直在考虑怎么往数据库里面装数据Q而没有了(jin)面向对象的概念,没有?jin)徏立业务模型的思维?br />
因此Q我们应该将q三U类别的代码分离开QUIQ数据库讉KQ域逻辑Q。?tng) (tng) (tng) (tng) (tng) (tng) (tng)?a href="/Files/Wingel/%E7%AC%AC7%E7%AB%A0%E5%B0%86%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BF%E9%97%AE%EF%BC%8CUI%E5%92%8C%E5%9F%9F%E9%80%BB%E8%BE%91%E5%88%86%E7%A6%BB.rar">



Wingel 2006-12-01 16:16 发表评论
]]>
(原创译)敏捷开发的必要技? 处理不合适的依赖http://www.aygfsteel.com/Wingel/archive/2006/12/01/84733.htmlWingelWingelFri, 01 Dec 2006 01:28:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84733.htmlhttp://www.aygfsteel.com/Wingel/comments/84733.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84733.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84733.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84733.html下蝲Q?br />http://www.aygfsteel.com/Files/Wingel/W?章处理不合适的引用.rar
or
http://wingel.javaeye.com/topics/download/afd36f87-a11b-4d18-a01b-a843092ec1bc

  如果现在有一个类ParentQ里面有个属性的cd是ChildQadd的方法里面还有个参数的类型是GirlQ?br />  class Parent{
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) Child child;
 (tng)void add(Girl girl){
 (tng) (tng) (tng) ...
 (tng)}
 (tng) (tng) (tng) (tng) }
 (tng) (tng) (tng) (tng) 因ؓ(f)上面Parent里面用到?jin)Child跟Girlq两个类Q我们就_(d)Parent引用?jin)类Child跟类Girl。现在的问题是,如果Childq个cL者Girlq个cȝ译不q的话,那么Parentq个cM~译不了(jin)?jin)。也是_(d)Parent依赖于Child跟Girl。这章讲q的Q就是因Z些类的依赖造成的无法重用的问题?br />
具体的内容在上面的下载链接里面的pdf文g里,内容较多?/font>



Wingel 2006-12-01 09:28 发表评论
]]>
《敏捷开发的必要技巧》各章节都在“敏捷开发”这个分cMhttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84728.htmlWingelWingelFri, 01 Dec 2006 01:22:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84728.htmlhttp://www.aygfsteel.com/Wingel/comments/84728.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/12/01/84728.html#Feedback2http://www.aygfsteel.com/Wingel/comments/commentRss/84728.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84728.html或者点q个链接Q?br />
http://www.aygfsteel.com/Wingel/category/17919.html



Wingel 2006-12-01 09:22 发表评论
]]>
Q原创翻译)(j) 敏捷开发的必要技?Q慎用(h)?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84419.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 12:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84419.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84419.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84419.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84419.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84419.html</trackback:ping><description><![CDATA[     摘要: 当我们要l承一个父cLQ我们要保证父类里面所有了(jin)publicҎ(gu)都是子类惌的,它不应该ȝ(h)承一些它不用的功能?nbsp; <a href='http://www.aygfsteel.com/Wingel/archive/2006/11/29/84419.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 20:40 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]GWT,YUI,dojo,jQuery中挑(xi)?jin)jQueryhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84300.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84300.htmlhttp://www.aygfsteel.com/Wingel/comments/84300.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84300.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84300.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84300.html  仔细回想?jin)这四个框架Q想惌׃ؓ(f)什么会(x)选中jQuery。才发现Q因为jQuery的源代码是最z的Q结构上也是最Ҏ(gu)全部掌握?jin),写JavaScript代码的时候,L希望所有的代码都是在自q手里面控制的Q这U想法,跟一q前的想法一模一P当时AJAX刚火的时候,也想去试一些开源的框架Q但用了(jin)一D|间以后,放弃了(jin)Q全部用了(jin)自己设计的框Ӟ因ؓ(f)框架掌握在自己手里面Q舒坦?br />  JavaScript库丰富固然好Q但是越丰富Q自己就不?jin)解全部层次Q内?j)就不安。不懂这是不是大多数人的通病。可是仔l想惻IZ么Java的开源库用得q么自在Qؓ(f)什么JavaScript的就自在不v来呢?nbsp;
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414843.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
[导入]validate for jqueryhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84299.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84299.htmlhttp://www.aygfsteel.com/Wingel/comments/84299.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84299.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84299.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84299.html目前jQuery|站上已l有?jin)From的验证框ӞFromValidationQ但是一直觉得它的框架ƈ不好用,因ؓ(f)重复写的东西太多?jin)?br />于是再ơ写?jin)自qJavaScript验证框架Q完全废弃掉以前的?br />在新的框架下Q是以这样子的用法设计的Q?br />首先Q要包括自己的js文gQ这点不必说Q,而且在包括自己写Q要先包括jQuery的,如下

<link rel="stylesheet" type="text/css" href="<ww:url value="/layout/css/style.css"/>">
<link rel="stylesheet" type="text/css" href="<ww:url value="/layout/css/thickbox.css"/>" media="screen">
<script type="text/javascript" src="<ww:url value="/layout/js/jquery-latest.js"/>"></script>
<script type="text/javascript" src="<ww:url value="/layout/js/thickbox.js"/>"></script>
<script type="text/javascript" src="<ww:url value="/layout/js/wingel.js"/>"></script>
<decorator:head/>


然后在要验证的Form里面加个属性validatable=true,如下Q?br />

<form id="registerForm" action="user-register.action" validatable="true">

注意Q这边不要加onsubmitҎ(gu)

接下来,好?jin),比如说有个输入框Q?br /><ww:textfield name="name" id="name"/>
我想验证Q让它必填,如下可以了(jin)Q?br /><label for="name" validate="required">请填写名U?lt;/label>  其中 for属性里面填的要是验证的输入框idQvalidate填的是验证方?;label里面的文本就是验证不q的时候要昄的信息?br />如果我想验证一个输入框的输入值长度怎么办,q样子就行了(jin)

<label for="password" validate="lengthRange:6;20">

后面的参数用Q号隔开Q验证的Ҏ(gu)名跟参数? 隔开?br />wingel.js里面已经包括?jin)一些常用的验证Ҏ(gu)Q现在问题来?jin),如果要自定义验证?gu)怎么办,如下办:(x)
比如你想加个验证Ҏ(gu)是hello
则label里面的validate属性写成hello,
然后加一个JavaScriptҎ(gu)Q?br />

<script type="text/javascript">
    wingel.validator.rules.hello
= function(value, element, parameters,utility) {
             ...    }

</script>


里面三个参数,shit , couldn't input Chinese. now English will be used.

The first parameter is the value of the input element you want to validate,the second one is the validated element, the third one, is the parameters you add in validate label, the last one, is a utility class, you can invoke its method to make your code easier.






 
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414856.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
[导入]2005qJava技术记?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84298.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84298.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84298.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84298.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84298.html</trackback:ping><description><![CDATA[<p>HTML解析:Use javax.swing.text.html package, especially HTMLEditorKit.ParserCallback class.</p> <p>菜单生成:struts-menu,q有自己做的JavaScript控g.</p> <p>l计?jfreechart</p> <p>MVC框架:Mytapestry(每次改个界面都要重启服务?,Webwork,Struts</p> <p>持久?hibernate,ibats</p> <p>XML解析:dom4j比较易用,臛_代码可以比较z?但是如果要在里面传输二进制文件的?比较麻?ch)?jin).|上有两U方?一U是二q制用BASE64~码成字W串,或者在MINI头里面传?后者这方式我还?sh)懂要怎么?前者那L(fng)?除了(jin)用Base64以外,直接用十六进制{字符串会(x)更快,不过安全嘛~</p> <p>日记功能:log4j,其实Java关于日记功能的好像就?U包,但是好像q个比较好用.另外直接用Logger.getLogger()生成logc?</p> <p>ajax:dwr可以利用JavaScript讉KJavac?它会(x)自己JavaҎ(gu)q回的类序列?转换成JavaScript变量;dojo则是有很多特?/p> <p>Web service:axis 的Web service不错,不过如果排除那些规范的话,自己做一个轻量的?x)更实?/p> <p>工作?目前没有了(jin)解哪开源的,但是一直想?jin)?/p> <p>XML装:SOAP是XML的一U协?而且利用J2EE提供的api,可以很方便的操作附g,再?臛_规范的Web service是用SOAP传递消息的.</p> <p>惌用模板的?Velocity,至于不明白什么时候用到这U情늚?可以参考一?a >www.blogcn.com</a>中的模板更改q道了(jin)</p> <p>全文搜烦(ch):lucene,它会(x)把关键字索引存在文g?而不是数据库,不过x(chng)数据库不也是把数据存在文件中?lucene的速度比较?而且易用.刚开始也不明白ؓ(f)什么lucene?x)那么?后面?jin)解到是个博士做的这个开源包,呵呵,看来人家是有很精q法.</p> <p>hibernate的session理:利用U程ID的帮助来理该线E的Session,好像大家现在也都是这样子?</p> <p>事务理:spring有一好处就是这个了(jin).而且听说它的JTA理也很不错</p> <p>业务层和DAO层的bean理:spring很好?不过是每个Bean都要写在配置文g?当然,有h喜欢,有h不喜?,如果不想写配|文件中的话,p己写工厂理Bean?我相信会(x)比spring快一?但是spring写在配置中这h点好处就?如果你想把某个接口的实现cL掉的?改一下配|文件就可以?</p> <p>动态bean理:JMX,其实自己也可以写E序来管理内存(sh)的bean或者把bean属性放在配|文仉面的,JMX是多加?jin)一层规?Jboss的JMX机制很方?真的叫热插拔了(jin).</p> <p>消息机制理:JMS,q项我也只是看了(jin)些例子而已,q没在项目中应用q?</p> <p>d调控:quartz,不明白什么是d调控?你想一?比如你想在每天的某一个时间执行一些操?比如定时更新数据库中的某些数据啦.当然数据库系l也有这U功?但是如果想用E序来控制的?q它吧.不好的地方就是文档太了(jin),上回Z(jin)搞明白它怎么用的,源代码就M(jin)好久.</p> <p>重量U的东西:EJB,q个??...............................?sh)信金融行业的可能觉得这东西很重?不过我们?׃说这东西?没有发言?</p> <p>现在的框枉有一个理?那就是可配置,M东西都要可配|的.struts的配|啦,hibernate的配|啦,spring的配|啦,ibats的配|啦.但是有个有东西冒出来?rails on ruby,它有个理?是"?fn)惯优?sh)配置",你不明白?x(chng),自己最好什么东襉K不用配置,一切根据用L(fng)?fn)惯定制?当然,q样对于开发是非常方便?而第二个方便的地?是代码自动生成(脑v里突然想?net?!</p> <p>说到代码自动生成的话,提一个xdoclet:要用q个的话,得先?jin)解一下ant,xdoclet是个很有用的东西.不过我比较俗,我就是用它生成一个业务层或DAO的实现类和接口类代码.如果Java惌有跟Rails on ruby一L(fng)东西的话,一定要用到xdoclet来了(jin)</p> <p>其实现在也有一个框?它号U是Java中的Rails on Ruby,那就是JdonFramework?上回看了(jin)?没啥感觉,没有Rails on Rubyl的震憾?/p> <p>验证码的生成:是在输入页面A中嵌入一个生成验证码的页面B,B里面有Java代码,生成随机字符?再把字符串存入Session?</p> <p>Oracle:一直识别不?jin)本地服务。后面才发现Q是tnsnames.oraq个文g中,有的版本不支持SERVER_NAMEQ而只是支持SERVER?/p> <p>有想q访问dll文g?有个东西叫JDI,步骤ȝ(ch)?jin)点的东?/p> <p>处理囄:sun公司有个开源Y件jimi,是个不错的东?处理囄的开源包有很多种,我那时候ؓ(f)什么选了(jin)jimi也忘?sh)?好像是因为格式支不支持的原因?</p><img src ="http://blog.csdn.net/Wingel/aggbug/756682.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/05/26/756682.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:21 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]transaction in Springhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84297.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84297.htmlhttp://www.aygfsteel.com/Wingel/comments/84297.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84297.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84297.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84297.htmlPropagation behavior:

PROPAGATION_MANDATORY:
 Indicates that the method must run within a transaction. If no
 existing transaction is in progress, an exception will be thrown.


PROPAGATION_NESTED:
 Indicates that the method should be run within a nested transaction
 if an existing transaction is in progress. The nested transaction
 can be committed and rolled back individually from the enclosing
 transaction. If no enclosing transaction exists, behaves like
PROPAGATION_REQUIRED:
 Beware that vendor support for this propagation behavior is spotty at best.
 Consult the documentation for your resource  manager to determine if nested
 transactions are supported.
PROPAGATION_NEVER:
 Indicates that the current method should not run within a transactional
 context. If there is an existing transaction in progress, an
 exception will be thrown.
PROPAGATION_NOT_SUPPORTED:
 Indicates that the method should not run within a transaction. If an
 existing transaction is in progress, it will be suspended for the
 duration of the method. If using JTATransactionManager,
 access to TransactionManager is required.
PROPAGATION_REQUIRED:
 Indicates that the current method must run within a transaction. If
 an existing transaction is in progress, the method will run within
 that transaction. Otherwise, a new transaction will be started.
PROPAGATION_REQUIRES_NEW:
 Indicates that the current method must run within its own transaction.
 A new transaction is started and if an existing transaction is in
 progress, it will be suspended for the duration of the method. If
 using JTATransactionManager, access to Transaction-
 Manager is required.
PROPAGATION_SUPPORTS:
 Indicates that the current method does not require a transactional
 context, but may run within a transaction if one is already in
 progress.


Isolation levels:
In a typical application, multiple transactions run concurrently, often working
with the same data to get their job done. Concurrency, while necessary, can lead
to the following problems:
 ?Dirty read—Dirty reads occur when one transaction reads data that has
 been written but not yet committed by another transaction. If the
 changes are later rolled back, the data obtained by the first transaction
 will be invalid.
 ?Nonrepeatable read—Nonrepeatable reads happen when a transaction performs
 the same query two or more times and each time the data is different.
 This is usually due to another concurrent transaction updating the
 data between the queries.
 ?Phantom reads—Phantom reads are similar to nonrepeatable reads. These
 occur when a transaction (T1) reads several rows, then a concurrent transaction
 (T2) inserts rows. Upon subsequent queries, the first transaction
 (T1) finds additional rows that were not there before.


Isolation level:
ISOLATION_DEFAULT:
 Use the default isolation level of the underlying datastore.
ISOLATION_READ_UNCOMMITTED:
 Allows you to read changes that have not yet been committed. May
 result in dirty reads, phantom reads, and nonrepeatable reads.
ISOLATION_READ_COMMITTED:
 Allows reads from concurrent transactions that have been committed.
 Dirty reads are prevented, but phantom and nonrepeatable
 reads may still occur.
ISOLATION_REPEATABLE_READ:
 Multiple reads of the same field will yield the same results, unless
 changed by the transaction itself. Dirty reads and nonrepeatable
 reads are prevented by phantom reads may still occur.
ISOLATION_SERIALIZABLE:
 This fully ACID-compliant isolation level ensures that dirty reads,
 nonrepeatable reads, and phantom reads are all prevented. This is
 the slowest of all isolation levels because it is typically accomplished
 by doing full table locks on the tables involved in the transaction. 


文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414826.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
[导入]转到hibernate annotationhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84296.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84296.htmlhttp://www.aygfsteel.com/Wingel/comments/84296.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84296.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84296.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84296.html以前的版本是webwork2.2+spring m4+hibernate3.1?
有一回在|上看到hibernate3.2的发布了(jin). 一直都觉得写hibernate的映文件是一件苦力活,于是决定用一下hibernate的annotation.
升的时?q真是出?jin)一堆的问题.
要嘛是ecache的问?要嘛又是hibernate的second level cache的问?用了(jin)spring自带的hibernate包有问题,但用?jin)hibernate|站上下载的包又有问?
最?去spring下了(jin)最新的发布版本,又用?jin)hibernate?.2GA?l于,问题解决?反正都升U了(jin)一部分?后面军_,webwork也升U到?jin)最新版?.24,
然后以前写的自定义标签再升U一?也像webwork一h用freemarker做模?
于是手头上一个在webwork+spring+hibernate的最新开发框架出炉了(jin).
军_,接下来的两个目qq个框架.



 
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414831.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
[导入]?net下的monorailshttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84295.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84295.htmlhttp://www.aygfsteel.com/Wingel/comments/84295.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84295.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84295.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84295.html    上回有一D|?做了(jin)?net的项? 于是׃|查?jin)一?net的开源框?发现很多都是Java下的开源框架改写的。而正如spring在Java语言的地位,.net下比较火的开源框架蛮多是Castle出的。看?jin)一个叫MonoRails的MVC框架Q是从ROR下吸收了(jin)一些思想。大致看?jin)一下,发现q是有很多特性是比较好的?br />    于是有感而发Q就在Java下也做了(jin)一个类似MonoRails的框Ӟ大致是具有了(jin)以下的一些特性:(x)
    Webwork的Interceptor机制?br />    hIOCQ用Setter的注法Q不用配|文Ӟ加annotation卛_
    而比较主要的是Q一ơ请求的程是,servlet自动Ҏ(gu)hL以名字匹配的Model和ControlQ将参数和值注入Model中,转到Controld理,再根据Control的结果去扄应的面。而这里有些是从MonoRails学来的特性:(x)~省的,面的文件名是Control中的Ҏ(gu)名,面所在的文g夹就是Control的类名。这样就省了(jin)很多配置和写跌{l果的代码?br />    如果url中请求的Ҏ(gu)名在q个Control中不存在的话Q就l过interceptor后直接去N面,也就是说Q不l过Control处理?jin)?br />    q有一点,很爽的就是Layout的功能:(x)在Control里面的方法加个AnnotationQLayoutQLayout写上面框架的文件名Q则每个跌{出来的页面,自动内嵌到页面框架中。这点就有点cMsitemesh?jin)?br />    q个MVC框架做完后,大致p些功能。可惜,q个框架是一个自己写着好玩的框Ӟq没有用在实际的开发项目中Q如果有Z(x)的话Q还真希望将q个框架做完_(d)到网上开源?/p>

   

 
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414832.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
技术讲座-QAnnotation的应?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84294.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84294.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84294.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84294.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84294.html</trackback:ping><description><![CDATA[  应上回几位同事的Q决定在q周的技术讲座上讲一下java的annotation的用法。前面讲?jin)annotation和interface,abstract的区别,以及(qing)各自的优~点Q后来就只讲annotation的用法了(jin)Q讲到annotation可以攑֜Q个地方Q类Q属性和Ҏ(gu)Q然后顺便提?jin)一下说Q可以设计这样一个框Ӟ在属性上加一个annotationQ就可以实现验证的功能?br /><!---->  有一位同事听?jin),当场提(gu)Q可不可以写个例子来看看Q怎么实现q个验证?br /><!---->  q倒也难不倒我Q赫拉赫拉,当场开始写Q2Q多分钟后,q个_略的结构就出来?jin),因?f)以前没试q在属性里面加annotationQ结果竟然发C知道怎么取出属性的annotationQ用java.beansq个包,竟然取不出annotaionQ用java.lang.reflect里面的field可以取出annotationQ可是却不知道怎么取java bean的标准属性?br /><!---->最后没办法Q讲座上没时间研IӞ决定把验证的annotation加到每个属性的getterҎ(gu)里面?br /><!---->  q次的讲座讲得倒也不错,赞自׃个?br /><!----> (tng) (tng) (tng) (tng)<img src="http://blog.csdn.net/Wingel/aggbug/1414833.aspx" height="1" width="1" /><br />文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414833.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:21 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又遇hibernate的cache问题http://www.aygfsteel.com/Wingel/archive/2006/11/29/84293.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84293.htmlhttp://www.aygfsteel.com/Wingel/comments/84293.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84293.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84293.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84293.html  因ؓ(f)每次调试的时候,都会(x)重启一下Web服务器,所以都忽略?jin)Cache的问题。看来,q是要注意一下序列化到磁盘(sh)的cache数据的?img src="http://blog.csdn.net/Wingel/aggbug/1414834.aspx" height="1" width="1" />
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414834.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
利用spring RC3的aspectJhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84292.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84292.htmlhttp://www.aygfsteel.com/Wingel/comments/84292.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84292.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84292.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84292.html后来实在受不?jin)这些冗余的代码了(jin),写代码的时候有时候又可能?x)把spring的对象跟非spring的对象顺序弄׃(jin)Q让代码l构不清晎ͼ在springQ的介绍中,听说它连new出来的对象都可以理Q便M?jin)spring rc3来,布v到项目中?br />  研究?jin)半天,才发现其实是很容易的事,可怜我们看文档看了(jin)半天?br />Q。虚拟机加个参数Q?javaagent:lib/aspectjweaver.jarQ后面是spring带的aspectjweaver.jar的\径)(j)
Q。在spring配置文g里面加:(x) (tng) (tng) (tng) <aop:spring-configured/>
Q。在要被理的类中加上annotation:@Configurable(autowire = Autowire.BY_TYPE) autowire应该不用说了(jin)。?tng)?img src="http://blog.csdn.net/Wingel/aggbug/1414836.aspx" height="1" width="1" />
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414836.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
用枚丑ց字典http://www.aygfsteel.com/Wingel/archive/2006/11/29/84291.htmlWingelWingelWed, 29 Nov 2006 03:21:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84291.htmlhttp://www.aygfsteel.com/Wingel/comments/84291.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84291.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84291.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84291.html  我们一般项目中Q都是把字典存到数据库中的。几个月前在做一个政府的目中,觉得其实一些字典是跟开发工E紧密结合在一L(fng)Q也是说字典变?sh)(jin),工程肯定也要变,q样子的字典如果也存到数据库中的话,也是多增加一些麻?ch)而已Q后来但这些字典写成枚举。然后数据库里面取的所谓的字典的key是枚D的nameQ如Q?unsubmited"Q而前台页面显C的Q就是枚丄一个属性text,不过q里用到?jin)webwork里面的ognl语法?br />

/**
 (tng)* (tng)Author: (tng)Wingel
 (tng)* (tng)Date: (tng)2006-7-29
 (tng)* (tng)Time: (tng)15:17:52
 (tng)
*/

public  (tng) enum  (tng)ApplicationState (tng) {
 (tng) (tng) (tng) (tng)unsubmited(
" 未提?/span> " ),submited( " 提交/待审?/span> " ),agreed( " 通过 " ),disagreed( " 未同?/span> " );
 (tng) (tng) (tng) (tng)
private  (tng)String (tng)text;

 (tng) (tng) (tng) (tng)ApplicationState(String (tng)text) (tng)
{
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
this .text (tng) =  (tng)text;
 (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng)
public  (tng) static  (tng)String (tng)getText(String (tng)name) (tng) { // l页面用的方?/span>
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) try  (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng)valueOf(name).text;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
 (tng) catch  (tng)(Exception (tng)e) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng) null ;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}

 (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng)
public  (tng)String (tng)getText() (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng)text;
 (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng)
public  (tng) static  (tng) boolean  (tng)isValidRegisterType(String (tng)name) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
try  (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)valueOf(name);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng) true ;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
 (tng) catch  (tng)(Exception (tng)e) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng) false ;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}

 (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng)
public  (tng) static  (tng)ApplicationState[] (tng)allState() (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng)ApplicationState.values();
 (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng)
public  (tng)String (tng)getName() (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
return  (tng) this .name();
 (tng) (tng) (tng) (tng)}

}



 (tng)

文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414837.aspx

Wingel 2006-11-29 11:21 发表评论
]]>
sitemesh让所有的img昄不正?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84290.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84290.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84290.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84290.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84290.html</trackback:ping><description><![CDATA[ (tng) (tng) (tng) sitemesh的一个问题,在web.xml中设|filter的时候,让sitemesh可以qo(h)/*也就是所有的后缀名,但是在decorate.xml文g里面Qƈ没有lsitemesh增加gif,jpg{后~的patternQ结果在打开面的时候,发现所有的囑փ文g都引用失败,用resin3的话Q它?x)报错说error content lengthQ而用resin2或者tomcat的时候,它连报错都没有。弄?jin)半天,都不明白是怎么回事Q后来才惛_有可能是sitemesh的问题,修改的filter的设|,让它只过滤部分后~名,l果没事了(jin)?br /> (tng)<img src="http://blog.csdn.net/Wingel/aggbug/1414840.aspx" height="1" width="1" /><br />文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414840.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:21 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]早上坐R跟走?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84288.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84288.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84288.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84288.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84288.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84288.html</trackback:ping><description><![CDATA[    C(jin)新公怺(jin)Q上车的地点也不一样了(jin)。以前经怼(x)陪女友一赯到她公司的门口,把她哄进M(jin)Q自己再d车。而今Q女友经常要一个h走到公司?jin),惛_奛_要一个h走那一D\Q竟然会(x)?j)很疹{\是那么一段路,她也l常?x)有自己走\的时候,可是是?x)?j)疹{唉Q也许照一个h久了(jin)Q当有一天看到没有你照顾的她Ӟ不只她会(x)觉得隑֏Q你也会(x)?j)疼的?br /> <img src ="http://blog.csdn.net/Wingel/aggbug/1414820.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414820.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:20 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]又一ơ重大失?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84287.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84287.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84287.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84287.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84287.html</trackback:ping><description><![CDATA[有一位好朋友,告诉我一件事?然后H然跟我?你可不要跟你老婆讲哦,我一?q也是一件挺三八的事?不讲׃讲了(jin),于是p?然后真的没有讲?<br />后来老婆知道?jin)这件事情?Ҏ(gu)大发雷霆,说我们俩Z间怎么可以有事情不说呢.<br />我刚开始还没什么觉(zhn)?后来被老婆的一番教?又一番教?再一番教?q样循环一N啊一N.<br />?l于,<br />觉?zhn)?深深的意识到自己的错?所以我在这Ҏ(gu)?我以后再不做q种事情? <img src ="http://blog.csdn.net/Wingel/aggbug/1414821.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414821.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:20 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]?net下的monorailshttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84285.htmlWingelWingelWed, 29 Nov 2006 03:20:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84285.htmlhttp://www.aygfsteel.com/Wingel/comments/84285.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84285.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84285.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84285.html    上回有一D|?做了(jin)?net的项? 于是׃|查?jin)一?net的开源框?发现很多都是Java下的开源框架改写的。而正如spring在Java语言的地位,.net下比较火的开源框架蛮多是Castle出的。看?jin)一个叫MonoRails的MVC框架Q是从ROR下吸收了(jin)一些思想。大致看?jin)一下,发现q是有很多特性是比较好的?br />    于是有感而发Q就在Java下也做了(jin)一个类似MonoRails的框Ӟ大致是具有了(jin)以下的一些特性:(x)
    Webwork的Interceptor机制?br />    hIOCQ用Setter的注法Q不用配|文Ӟ加annotation卛_
    而比较主要的是Q一ơ请求的程是,servlet自动Ҏ(gu)hL以名字匹配的Model和ControlQ将参数和值注入Model中,转到Controld理,再根据Control的结果去扄应的面。而这里有些是从MonoRails学来的特性:(x)~省的,面的文件名是Control中的Ҏ(gu)名,面所在的文g夹就是Control的类名。这样就省了(jin)很多配置和写跌{l果的代码?br />    如果url中请求的Ҏ(gu)名在q个Control中不存在的话Q就l过interceptor后直接去N面,也就是说Q不l过Control处理?jin)?br />    q有一点,很爽的就是Layout的功能:(x)在Control里面的方法加个AnnotationQLayoutQLayout写上面框架的文件名Q则每个跌{出来的页面,自动内嵌到页面框架中。这点就有点cMsitemesh?jin)?br />    q个MVC框架做完后,大致p些功能。可惜,q个框架是一个自己写着好玩的框Ӟq没有用在实际的开发项目中Q如果有Z(x)的话Q还真希望将q个框架做完_(d)到网上开源?/p>

   

 
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414832.aspx

Wingel 2006-11-29 11:20 发表评论
]]>
[导入]下回写桌面程序一定要用QThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84284.htmlWingelWingelWed, 29 Nov 2006 03:20:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84284.htmlhttp://www.aygfsteel.com/Wingel/comments/84284.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84284.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84284.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84284.html虽然最q一直在写swing的程序,但Java肯定是不能用?jin),因?f)q怎么打包都要8M以上Q?net的winform也是不能用了(jin)Q;只剩三个选择?jin),Delphi,VB跟MFCQMFC实在是不想用Q就先试?jin)下用VB写,正在写得很不爽的时候,在某个地Ҏ(gu)到VBq要拷一些dll文g才能正常q行Q于是就只剩下DelphiQ后来终于在很痛苦的情况下,把程序完成了(jin)Q唉Q好的IDE用习(fn)惯了(jin)Q对它的依赖也变得很多。(没错Q我q里是在暗CDelphiq个IDE真TMD太差?jin)?j)
  后来才听说了(jin)QC++有个库,叫QTQ写桌面E序非常的不错,q很像swing。呜Q真TMD的知道得太迟?jin),q被折磨?jin)很久,查?jin)暴多的资料?nbsp;
文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414851.aspx

Wingel 2006-11-29 11:20 发表评论
]]>
[导入]A frame for MVChttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84283.htmlWingelWingelWed, 29 Nov 2006 03:20:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84283.htmlhttp://www.aygfsteel.com/Wingel/comments/84283.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84283.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84283.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84283.html
文章来源:http://blog.csdn.net/Wingel/archive/2006/05/26/756667.aspx

Wingel 2006-11-29 11:20 发表评论
]]>
[导入][原]q一q的J2EE历程(?005.4~2006.2的ȝ)http://www.aygfsteel.com/Wingel/archive/2006/11/29/84282.htmlWingelWingelWed, 29 Nov 2006 03:20:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84282.htmlhttp://www.aygfsteel.com/Wingel/comments/84282.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84282.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84282.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84282.htmll于Q工作也近一q了(jin)Q从4月䆾的开始实?fn),到现在,唉,l历的不知道多不多Q学到的也不知道多不多Q反正现在就写一ȝQ对自己有个认识吧?br />2005q?月䆾的时候,辞掉?jin)一家在厦门工资q算不错的公司,q入?jin)现在所在的q家公司实习(fn)Q那时候是很肯定的觉得自己做的没有错,现在呢,我还是认为选的没错Q只可惜Q工资一下子少?00多了(jin)。中间也拒了(jin)几家有些名气的公司,说实在,有时候还真不能百分百肯定Q那时候选这家公司是否是最正确的选择?br />M上,被录用的做技术的公司的,q去分别是做q三U技术的东西Q一家是Windows mobileQ一些是.netQ还有现在这家的J2EE?net能学多少东西是不知道啦,不过前半q里在开发J2EEӞ觉得自己真的学到很多Q工作了(jin)半年以后Q就有点qQ自己学的够吗?
4月䆾在这家公司是以实?fn)的w䆾q来的,在实?fn)的q段旉里,学会(x)?jin)struts和hibernate的基本应用,也用q些框架做了(jin)几个模块,׃中间要用C(jin)一个统计图Q去?jin)解q用了(jin)jfreechartQ也是Z学了(jin)q个开源包吧。等我向目l理认我可以像其他员工那样完成dӞ才结束实?fn),回到学校?br />7月䆾毕业出来Q回到这家公司时Q一开始做的,是l护公司自己的OApȝ。第一个周是做原有模块的修改工作,因ؓ(f)在学校玩?jin)一D|_(d)刚开始做的时候还真有一点生疏?br />W一周的d完成后,开始上手了(jin)Q接下来Q就开始增加两个新的客服模块了(jin)。这两个模块用了(jin)三周完成Q这三周里面Q也学会(x)?jin)一个不h技术(后来才知道,q叫AJAXQ,q在剩余的时间里面,比较大的收获是掌握struts-menuq个开源包的普通应用?br />8月䆾的前两周Q开始做一个薪资审批的程Q也是W一ơ接触工作流?jin)。这ơ做的这个模块,q没有学C么新的技术,是业务逻辑很复杂的~码Q但是想惌׃刚工作没几天Q这Ҏ(gu)来说Q益处还是很大的?br />接下来的一个月里,做的是OA上添加一个跟企业的运营^台整合的企业注册模块Q这个模块一开始看业务q是很简单的Q后面功能慢慢添加,竟然做了(jin)一个月才完成,期间抽空?jin)解了(jin)一个在U编辑HTML的东西,而我想主要的Q这个模块有很多H发事情和意外要考虑Q跟以前做的那些相比Q这ơ的q个模块Q才是真正煅炼程序员能力的编E吧。已l到9月䆾的中旬了(jin)Q那个注册企业模块也l于完成?jin),现在回想hQ做那个模块用的最有技术含量的东西Q应该是Ajax吧(我ƈ没有用什么开源的框架Q如果现在有嘲笑我说Q?ldquo;你只是简单的一些不hQ也叫AjaxQ真搞笑”Q那我只能说Q果然不只文人相轻,做技术的也看不v做技术的?br />刚做完这个企业注册模块,目l理问我_(d)(x)“你以前用q?net吧?rdquo;我告诉他是的。没惛_Q一个Q务就来了(jin)Q把一个aspx+CQ做的短信业务管理网站修改一下,因ؓ(f)里面都是适合SQL Server的数据库Q而且用到很多存储q程Q现在想q到Oracle上。而一周后Q终于把q个目Ҏ(gu)适合于大部分数据库的Q去掉所有存储过E,增加?jin)日志功能。这ơ的q个dq没有煅炼到什么J2EE的能力,不过也算再熟(zhn)了(jin)一?netQ再ơ感受了(jin).net的h性化Q可惜有些功能还是没有Jbuilder好。接下来Q又是修改了(jin)一个用EJB做的工程中的一些模块,和调整了(jin)OA中的一部分功能。期间也搭徏?jin)一个Tapetry的工E,是感受?jin)他一把,不过q是觉得它没有struts好用?br />接下来的q个月,是我学得最多的一个月?jin),公司x(chng)以前的C/S二层l构改ؓ(f)Delphi做界面层Q用Java做中间服务层Q最后再数据库服务器。他们最先考虑到的是,用Web service。于是我的Q务就下来?jin),研究一下Web serviceQ看能不能做一个框架满_司的要求。我起先则是用axis搭徏Web serviceQ后面发玎ͼ它实在是太复杂了(jin)Q我们想要的Q是一个轻便的东西?br />于是开始研ISOAPQ因为Web service是用SOAP传输消息的。SOAP然后是javaxmlQ接着是dom4j。后面自׃生一个想法,如果客户端传递一个XMLq来Q里面描qC(jin)要调用的cdQ方法名Q以?qing)传递的参数对象。服务端解析XML出来Q利用反和序列化XML转化为本地化持久c,调用q个Ҏ(gu)Q再把方法返回的对象转化成XMLq回l客L(fng)Q那么不可以实现客L(fng)自由调用Java的类?br />有了(jin)q个x(chng)很兴奋Q开始付诸行动。很q运的是Q我把这个框架做出来?jin),那时候真的很兴奋Q因为在我以为,那个cd的框架还?sh)来没有看见q,甚至x(chng)它放到网上开源去。后来才意识刎ͼ其实我做的这个就是轻量的没有规范的Web service。既然这P后面又给它增加了(jin)cMwsdl的功能,而后在优化过E中Q增加了(jin)cacheQ大大提高(sh)(jin)速度。测试了(jin)一下,完成同样的功能,它的速度是axis web service的十几倍,呵呵呵呵呵,那个叫兴奋啊。那也是一ơ性把Java的几关键技术一起学?jin)顺便用上?br />做完q个框架后,又做?jin)两个项目,一个交通查询的Q一个社区。这两个目倒也没有像上回研IWeb service那样令h兴奋的感觉了(jin)Q不q还是学?jin)很多开源的东西和技术。交通查询很多次用到AjaxQ也在做q个目的期_(d)学到?jin)几J2EE技术,在一ơ用JavaScript做树(wi)状控件的时候,大大?jin)提高?sh)(jin)Javascript一把。而在此,也ȝ刎ͼ其实懂不懂一些新技术ƈ不是主要的,新技术很Ҏ(gu)可以用hQ而难的,是军_用哪些技术,哪些模式Q直臛_何来设计自己的框架。很q运的,在做那个C֌的时候,我有?jin)这个机会(x)?br />除此以外Q做q个C֌的时候其他o(h)人激动的事情Q就是写?jin)几个复杂的标签Q学C(jin)velocity和全文搜索Lucene?jin)?br />之后Q就是发生一些跟技术无关的不如人意的事情了(jin)?br />
文章来源:http://blog.csdn.net/Wingel/archive/2006/05/26/756669.aspx

Wingel 2006-11-29 11:20 发表评论
]]>
[导入]一些网?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84281.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84281.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84281.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84281.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84281.html</trackback:ping><description><![CDATA[一些有名的Java|站<img src ="http://blog.csdn.net/Wingel/aggbug/1046624.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/08/10/1046624.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:20 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]几个W话,好好W啊好好W?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84280.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84280.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84280.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84280.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84280.html</trackback:ping><description><![CDATA[一些笑?img src ="http://blog.csdn.net/Wingel/aggbug/1414818.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414818.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:20 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]再读《大道至?/title><link>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84279.html</link><dc:creator>Wingel</dc:creator><author>Wingel</author><pubDate>Wed, 29 Nov 2006 03:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84279.html</guid><wfw:comment>http://www.aygfsteel.com/Wingel/comments/84279.html</wfw:comment><comments>http://www.aygfsteel.com/Wingel/archive/2006/11/29/84279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Wingel/comments/commentRss/84279.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Wingel/services/trackbacks/84279.html</trackback:ping><description><![CDATA[<p>    今天再一ơ看?jin)《大道至》,觉得q是有挺多地方不懂的,当然,不是说这本书是一本圣l?必须要完完全全的理解,只不q?目前以我的层ơ来?体会(x)得越?走错的步子就?x)越?<br />    <br />    目前,我想C两句?<br />    工具->Ҏ(gu)->工程->q程->l织</p> <p>    我用?jin)一q的旉,从工?>Ҏ(gu).我很?但我又清醒的知道我要E稳的走!唉~</p> <p>    "实现"的欲望是E序员出w的通病.无论是从l构?q是模式?那是l节. </p><img src ="http://blog.csdn.net/Wingel/aggbug/1414822.aspx" width = "1" height = "1" /><br>文章来源:<a >http://blog.csdn.net/Wingel/archive/2006/11/26/1414822.aspx</a><img src ="http://www.aygfsteel.com/Wingel/aggbug/84279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Wingel/" target="_blank">Wingel</a> 2006-11-29 11:20 <a href="http://www.aygfsteel.com/Wingel/archive/2006/11/29/84279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]目中,是用一些开源框Ӟq是用自p熟?zhn)的技术?http://www.aygfsteel.com/Wingel/archive/2006/11/29/84278.htmlWingelWingelWed, 29 Nov 2006 03:20:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84278.htmlhttp://www.aygfsteel.com/Wingel/comments/84278.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84278.html#Feedback2http://www.aygfsteel.com/Wingel/comments/commentRss/84278.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84278.html  其实q种事情都会(x)有两个观炏V?br />一个观Ҏ(gu)Q徏议用自q(zhn)的技术,采用单的架构d现项目,{到你把目做出来了(jin)Q能用v来了(jin)Q客戯可了(jin)。以后的升Q那是你可以比较轻杄采用?它的架构来重构,q样你的风险Q压力就相对减少很多?jin)?
而这回,我想一下第二个观点Q?nbsp; 
  其实如果你对代码要求比较严格的话Q你׃(x)l常发现Q你的代码有很多东西可以抽取出来Q或者做在公q模块Q或者作为框架的底层Q我们就单的拿jdbc来说吧,
    首先Q是connection的管理,q点一般用jdbc熟一些的话,都会(x)有管理connection的公共模块,虽然偶尔?x)碰到性能的问题,但是q点我们暂且压下不表?br />    我们查询的时候,每次都要?br />    rs.get...("name"),
    rs.get...("id"),
    rs.get...("age"),
    rs.get...("gender"),
    rs.get...("hobby"),
    然后修改数据库的时候,q要拼写update语句跟insert语句Q经常还要费很多旉来调试这些多余代码的问题Q这时候你想Q不行,我一定要写一个公共模块,省得让我每次都要定这么多代码Q于是你的第一个公共模块生了(jin)Q然后测试啊试Q改q啊改进Q叮叮响Q过?jin)几天时间的考验Q这个公共模块终于可以放?j)用?jin)Q项目进度开始快一些了(jin)Qȝ不用再拼SQL?jin)?br />   
    后来在做l计模块的时候,H然又发玎ͼ之前在用到的一些SQL函数Q好像在客户要求的数据库上不怎么行啊Q于是又L?jin)一下资料,又过?jin)几天(可能q次不用几天Q,然后l于攑ֿ(j)Q所有的函数都正怺(jin)?br />   
    接着又不可避免的到?jin)分늚问题Q你对自pQ不用怕,我上回就写了(jin)一个分늚Q没有问题!可是Ya的你H然发现Q上回的那个分页是用游标实现的,q回客户是要求用SQLServerQ唉QSQLServer的游标,不提也ŞQ想来想去,只好自己拼SQL语句来写分页?jin),又是count又是topQ测?jin)又之后,又过了(jin)几天,啊哈Q终于分늚公共模块也做好的Q可以放?j)用?jin)Q好Q项目的q度又可以加快了(jin)?/p>

    做着做着的时候,发现Q咦Q好像这表得增加一个字D|行,增加?jin),然后所有查询的SQL语句加一下,所有insert跟update的代码修改一下,面修改一下,嗯,现在应该正常?jin),看v来倒是没什么问题,咦,报表好像不怎么对啊Q靠Q这边还有调用这个表的代码,妈的Q改吧改吧。磨y了(jin)好几个小Ӟ当然Q熟l的话,q不用几个小Ӟ(j)Qȝ看v来都正常?jin)?/p>

    q一回,q个功能中有一ơ用戯求,讉K?jin)好几次数据库,不行Q这里应该用个cacheQ否则性能上会(x)有问题啊Q算?jin),用算法解决一下,量访问数据库好了(jin)Q我对cacheq(sh)熟呢。(写啊写啊QBatch SizeQ这样多Q那样多QFetch Size。。。,l于Q看h正常一些了(jin)Q。过?jin)一D|_(d)靠,q边又要讉K好几ơ数据库QYa的受不鸟?jin),性能爱咋的咋的,反正一个地Ҏ(gu)又不要紧。Oh shit!!!q边也是好几ơ,q边又是好几ơ,那边又是好几ơ。不行了(jin)Q我老老实实写个cache支持吧,于是又叮叮当当了(jin)好几天,l于Q有个粗p的cache出来?jin),l于速度可以看一些了(jin)。后来改q又改进Q测试又试Q篏M(jin)Q老子好不爽啊?/p>

    好像天下有点太^?jin),啊,你说我这个地方忘记更C增加的那个子表啊Q算?jin),没关p,我明天看一下代码,q个Ҏ(gu)解决炏V嗯Q我改了(jin)那边的代码了(jin)Q会(x)更新子表信息?jin)。什么?你说取主表的记录跟相应的子表记录列表ȝ(ch)啊,没关p,我更C下处理resultset的公共模块,明天再说?br />    Oh shit......对这样子复杂的查询好像现在的公共模块支持不了(jin)啊,了(jin)Q这样子的查询不要用q个公共模块Q我们手动写一些代码好啊,别跟我讲q样代码l构很难看,你以为我不知道啊QTMD?/p>

    TMD的,怎么q边的SQL老是q行不了(jin)啊,不会(x)是分底层模块的问题吧,靠,怎么你的SQL语句有这么多order,group byQ靠Q还有top啊,q当然过不了(jin)?jin),不要吵?jin)Q现在时间改Q不理它Q直接用个假分页p?jin)。你又说代码l构隄Q小?j)我抽你哦?/p>

    公司新来一个程序员Q看?jin)几天代码,不停的抱怨说Q这代码写得真差啊。。。。。?nbsp;


文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414852.aspx

Wingel 2006-11-29 11:20 发表评论
]]>
[导入]transaction in Springhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84277.htmlWingelWingelWed, 29 Nov 2006 03:19:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84277.htmlhttp://www.aygfsteel.com/Wingel/comments/84277.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84277.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84277.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84277.htmlPropagation behavior:

PROPAGATION_MANDATORY:
 Indicates that the method must run within a transaction. If no
 existing transaction is in progress, an exception will be thrown.


PROPAGATION_NESTED:
 Indicates that the method should be run within a nested transaction
 if an existing transaction is in progress. The nested transaction
 can be committed and rolled back individually from the enclosing
 transaction. If no enclosing transaction exists, behaves like
PROPAGATION_REQUIRED:
 Beware that vendor support for this propagation behavior is spotty at best.
 Consult the documentation for your resource  manager to determine if nested
 transactions are supported.
PROPAGATION_NEVER:
 Indicates that the current method should not run within a transactional
 context. If there is an existing transaction in progress, an
 exception will be thrown.
PROPAGATION_NOT_SUPPORTED:
 Indicates that the method should not run within a transaction. If an
 existing transaction is in progress, it will be suspended for the
 duration of the method. If using JTATransactionManager,
 access to TransactionManager is required.
PROPAGATION_REQUIRED:
 Indicates that the current method must run within a transaction. If
 an existing transaction is in progress, the method will run within
 that transaction. Otherwise, a new transaction will be started.
PROPAGATION_REQUIRES_NEW:
 Indicates that the current method must run within its own transaction.
 A new transaction is started and if an existing transaction is in
 progress, it will be suspended for the duration of the method. If
 using JTATransactionManager, access to Transaction-
 Manager is required.
PROPAGATION_SUPPORTS:
 Indicates that the current method does not require a transactional
 context, but may run within a transaction if one is already in
 progress.


Isolation levels:
In a typical application, multiple transactions run concurrently, often working
with the same data to get their job done. Concurrency, while necessary, can lead
to the following problems:
 ?Dirty read—Dirty reads occur when one transaction reads data that has
 been written but not yet committed by another transaction. If the
 changes are later rolled back, the data obtained by the first transaction
 will be invalid.
 ?Nonrepeatable read—Nonrepeatable reads happen when a transaction performs
 the same query two or more times and each time the data is different.
 This is usually due to another concurrent transaction updating the
 data between the queries.
 ?Phantom reads—Phantom reads are similar to nonrepeatable reads. These
 occur when a transaction (T1) reads several rows, then a concurrent transaction
 (T2) inserts rows. Upon subsequent queries, the first transaction
 (T1) finds additional rows that were not there before.


Isolation level:
ISOLATION_DEFAULT:
 Use the default isolation level of the underlying datastore.
ISOLATION_READ_UNCOMMITTED:
 Allows you to read changes that have not yet been committed. May
 result in dirty reads, phantom reads, and nonrepeatable reads.
ISOLATION_READ_COMMITTED:
 Allows reads from concurrent transactions that have been committed.
 Dirty reads are prevented, but phantom and nonrepeatable
 reads may still occur.
ISOLATION_REPEATABLE_READ:
 Multiple reads of the same field will yield the same results, unless
 changed by the transaction itself. Dirty reads and nonrepeatable
 reads are prevented by phantom reads may still occur.
ISOLATION_SERIALIZABLE:
 This fully ACID-compliant isolation level ensures that dirty reads,
 nonrepeatable reads, and phantom reads are all prevented. This is
 the slowest of all isolation levels because it is typically accomplished
 by doing full table locks on the tables involved in the transaction. 


文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414826.aspx

Wingel 2006-11-29 11:19 发表评论
]]>
[导入]Transaction Isolation Levelhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84276.htmlWingelWingelWed, 29 Nov 2006 03:19:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84276.htmlhttp://www.aygfsteel.com/Wingel/comments/84276.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84276.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84276.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84276.htmlhere are four isolation levels:

  • READ UNCOMMITTED (在一个事务中Q可能读到别的事务还没提交的数据Q?/font>
  • READ COMMITTEDQ在一个事务中Q同L(fng)语句可能查询C同的数据Q因为在q两个语句之_(d)别的事务更改提交?jin)这两个语句涉?qing)的数据)(j)
  • REPEATABLE READQ保证一个事务A里面d的数据不?x)变Q即使期间别的事务B提交更改?jin)数据,事务A中的语句仍然?x)读到原来的数据Q?/font>
  • SERIALIZABLEQ在事务期间Q会(x)涉?qing)的数据锁掉Q防止别的事务修改)(j)

    SQL server实现?jin)四个?br />Oracle只实C间两个别?/font>  

  • 文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414835.aspx

    Wingel 2006-11-29 11:19 发表评论
    ]]>
    [导入]事务隔离U别http://www.aygfsteel.com/Wingel/archive/2006/11/29/84275.htmlWingelWingelWed, 29 Nov 2006 03:19:00 GMThttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84275.htmlhttp://www.aygfsteel.com/Wingel/comments/84275.htmlhttp://www.aygfsteel.com/Wingel/archive/2006/11/29/84275.html#Feedback0http://www.aygfsteel.com/Wingel/comments/commentRss/84275.htmlhttp://www.aygfsteel.com/Wingel/services/trackbacks/84275.html前几天同事讲?jin)Transaction isolation levelQƈ且大家一起在SQLServerQOracle跟MySQL数据库上实验?jin)一下,发觉q些知识q是挺重要的?br />假如有两个事务ƈ发,序如下
    Transaction A            Transaction B
    begin    begin
    query1 from table A   
    .......                  modify1 to table A(insert/update/delete)
       commit
    query2 from table A
    commit

    那么在事务A中,query1跟query2查询出来的结果是否一样呢Q这p事务隔离U别有关?jin)?br />SQL的标准定义里面,一共有四种U别Q?br />read uncommitedd未提交的数据 是其他事务求提交的数据Q都可以d出来
    read commitedd已提交的数据 query2?x)跟query1d的数据不一?br />repeatable read可重复读取,即query1跟query2d的数据是一L(fng)
    serializable 序列化,

     SQL 标准用三个必dq行的事务之间避免的现象定义?jin)四个别的事务隔离?q些不希望发生的现象是:(x)
    脏读Qdirty readsQ?br />    一个事务读取了(jin)另一个未提交的ƈ行事务写的数据?
    不可重复读(non-repeatable readsQ?br />    一个事务重新读取前面读取过的数据, 发现该数据已l被另一个已提交的事务修改过?
    q读Qphantom readQ?br />    一个事务重新执行一个查询,q回一套符合查询条件的行, 发现q些行因为其他最q提交的事务而发生了(jin)改变?
     隔离U别         脏读QDirty ReadQ?nbsp; 不可重复读(NonRepeatable ReadQ?nbsp; q读QPhantom ReadQ?br />L提交QRead uncommittedQ?nbsp;  可能      可能                           可能
    d提交QRead committedQ?    不可能           可能                        可能
    可重复读QRepeatable readQ?nbsp;   不可?nbsp;            不可?nbsp;                   可能
    可串行化QSerializable Q?nbsp;     不可?nbsp;             不可?nbsp;                 不可?/p>

    SQLServer
    我们首先在SQLServer上做?jin)实验,SQLServer一共支持四U隔ȝ别,read uncommited跟read commited我们没有实验Q我们直接先实验
    repeatable readQ如果事务A定义?jin)如下别,那么当事务B执行到modify1q条语句Ӟ如果modify1是update的话Q就被锁hQ一直等
    C务A提交完以后,锁才?x)被释放Q而如果是insert的话Q刚可以利q行下去Q然后在事务A中,query2查到的数据,是已l被事务B
    修改q的数据Q如果将U别定义在serializable的话Q则在modify1语句中,update,insert或者delete都会(x)被锁掉?br />也就是说QSQLServer对这些别的支持Q是通过锁来做到的,虽然可以保证事务正常q行Q但是ƈ行的性能却很差?br />Oracle
    oracle只支持两个别,read commited跟serializableQ结果这里就不用详细说明Q实验的l果是,oracle的serializable是通过版本
    控制来完成的Q而不是通过锁机Ӟq就保证?jin)ƈ行的性能。Oracle的默认别是read commited
    MySQL
    MySQLServer也支持四个别,而且MySQL也是通过版本控制而非锁机制来完成的?br /> 


    文章来源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414839.aspx

    Wingel 2006-11-29 11:19 发表评论
    ]]>
    վ֩ģ壺 | | ɽ| γ| ߶| | | | | | ԫ| ̩˳| | | | | | ϻ| | | | | ̩| ¡| | | ľ| | Ƕ| | | | ɽ| ˮ| ƽ| | ƽ˳| ͺ| | | ʯ¥|