ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产影院,欧美激情五月,日本视频一区在线观看http://www.aygfsteel.com/anticlockwise/zh-cnSat, 07 Jun 2025 08:55:17 GMTSat, 07 Jun 2025 08:55:17 GMT60非结构化‹¹ç¨‹å›‘Öˆ°¾l“构化流½E‹å›¾çš„自动è{æ?/title><link>http://www.aygfsteel.com/anticlockwise/archive/2006/06/03/50110.html</link><dc:creator>举止优雅的猪</dc:creator><author>举止优雅的猪</author><pubDate>Sat, 03 Jun 2006 04:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/anticlockwise/archive/2006/06/03/50110.html</guid><wfw:comment>http://www.aygfsteel.com/anticlockwise/comments/50110.html</wfw:comment><comments>http://www.aygfsteel.com/anticlockwise/archive/2006/06/03/50110.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anticlockwise/comments/commentRss/50110.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anticlockwise/services/trackbacks/50110.html</trackback:ping><description><![CDATA[     摘要: 该文主要介绍了一个我和同学合作的™å¹ç›®åQŒä‹Éž®†éž¾l“构化流½E‹å›¾è½¬æ¢æˆç»“构化‹¹ç¨‹å›„¡š„½E‹åºã€?nbsp; <a href='http://www.aygfsteel.com/anticlockwise/archive/2006/06/03/50110.html'>阅读全文</a><img src ="http://www.aygfsteel.com/anticlockwise/aggbug/50110.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anticlockwise/" target="_blank">举止优雅的猪</a> 2006-06-03 12:11 <a href="http://www.aygfsteel.com/anticlockwise/archive/2006/06/03/50110.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Spring中利用Hibernateä½œäØ“DAO的简åŒ?/title><link>http://www.aygfsteel.com/anticlockwise/archive/2006/03/09/34429.html</link><dc:creator>举止优雅的猪</dc:creator><author>举止优雅的猪</author><pubDate>Thu, 09 Mar 2006 02:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/anticlockwise/archive/2006/03/09/34429.html</guid><wfw:comment>http://www.aygfsteel.com/anticlockwise/comments/34429.html</wfw:comment><comments>http://www.aygfsteel.com/anticlockwise/archive/2006/03/09/34429.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anticlockwise/comments/commentRss/34429.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anticlockwise/services/trackbacks/34429.html</trackback:ping><description><![CDATA[<FONT color=#000000 size=2>在暑假里看了“Refactoring to Patterns”这本书åQŒè§‰å¾—很不错。里边讲åˆîCº†å¾ˆå¤šåœ¨ä¼˜åŒ–编码时可以用到的设计模式以及它们的用法ã€?BR>    我在¾~–程æ—Óž¼Œä¸€èˆ¬éƒ½æ˜¯ç”¨Springä½œäØ“ä¸­é—´å±‚ç®¡ç†èµ„æºï¼Œè€Œç”¨Hibernateä½œäØ“ORM。用˜q‡Springçš„äh都知道Spring对Hibernate的支持方法较多,我常用的是直接ç‘ô承HibernateDaoSupport¾c…R€‚我们先来看一个类图:<BR><IMG alt="Dao Class Diagram" hspace=0 src="D:\JSoftware\eclipseworkspace\Jack's Blog\doc\dao.gif" align=baseline border=0><BR>在是我在应用中常用到的类¾l“构。因为对于一个域模型来说åQŒæœ€åŸºæœ¬çš„就是CRUD操作åQŒæ‰€ä»¥å°†å…¶æ”¾åœ¨Dao接口中,但是对于每个不同的域模型又有其特有的æ–ÒŽ³•åQŒåˆ™ž®†å…¶æ”‘Öœ¨åŸŸæ¨¡åž‹å¯¹åº”的接口åQˆSomeSpecificDaoåQ‰ä¸­ã€?BR>    ˜q™æ ·åQŒå¯¹äºŽæœ€åŸºæœ¬çš„CRUD操作ž®±å¯ä»¥åªéœ€åœ¨BaseHibernateDao中实玎ͼŒ˜q™ä¸€ç‚¹åˆ©ç”¨äº†Template Method设计模式。对于create(), delete()å’Œmodify()三个æ–ÒŽ³•都可以简单实玎ͼŒåŒ™°ƒç”¨HibernateTemplate中相应的æ–ÒŽ³•。对于findAllå’ŒfindByIdåQŒåˆ™å¯ä»¥å€Ÿä½Java的反ž®„来实现。这里如果要利用反射且达到通用的目的,ž®±éœ€è¦å°†æ‰€æœ‰çš„域模型放在一个包中,òq¶ä¸”有相同的命名规则åQŒæ¯”如说如果域模型叫做UseråQŒé‚£ä¹ˆç›¸åº”çš„Dao应该以Userå¼€å¤ß_¼Œä¸è¿‡˜q™ä¹Ÿæ˜¯å¸¸ç”¨çš„æ–ÒŽ³•。下面给å‡ÞZ¸€ž®æ®µä»£ç <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_0_61_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_61_Open_Text.style.display='none'; Codehighlighter1_0_61_Closed_Image.style.display='inline'; Codehighlighter1_0_61_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_0_61_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_61_Closed_Text.style.display='none'; Codehighlighter1_0_61_Open_Image.style.display='inline'; Codehighlighter1_0_61_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN id=Codehighlighter1_0_61_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>     * A convenience and generic method for retrieving all models from the database<BR>         * @throws DataAccessException<BR></SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>     </SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_116_628_Open_Image onclick="this.style.display='none'; Codehighlighter1_116_628_Open_Text.style.display='none'; Codehighlighter1_116_628_Closed_Image.style.display='inline'; Codehighlighter1_116_628_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_116_628_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_116_628_Closed_Text.style.display='none'; Codehighlighter1_116_628_Open_Image.style.display='inline'; Codehighlighter1_116_628_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> List findAll() </SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000"> DataAccessException </SPAN><SPAN id=Codehighlighter1_116_628_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_116_628_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> TODO Auto-generated method stub</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">        List models </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> ArrayList();<BR><IMG id=Codehighlighter1_212_458_Open_Image onclick="this.style.display='none'; Codehighlighter1_212_458_Open_Text.style.display='none'; Codehighlighter1_212_458_Closed_Image.style.display='inline'; Codehighlighter1_212_458_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_212_458_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_212_458_Closed_Text.style.display='none'; Codehighlighter1_212_458_Open_Image.style.display='inline'; Codehighlighter1_212_458_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN id=Codehighlighter1_212_458_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_212_458_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>            models </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> getHibernateTemplate().loadAll(<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                    Class.forName(getClass().getName().replaceAll(<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                            </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">HibernateDao</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">).replaceAll(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">dao.hibernate</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                            </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">model</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)));<BR><IMG id=Codehighlighter1_501_599_Open_Image onclick="this.style.display='none'; Codehighlighter1_501_599_Open_Text.style.display='none'; Codehighlighter1_501_599_Closed_Image.style.display='inline'; Codehighlighter1_501_599_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_501_599_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_501_599_Closed_Text.style.display='none'; Codehighlighter1_501_599_Open_Image.style.display='inline'; Codehighlighter1_501_599_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000"> (ClassNotFoundException exception) </SPAN><SPAN id=Codehighlighter1_501_599_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_501_599_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> TODO Auto-generated catch block</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">            exception.printStackTrace();<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> models;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }</SPAN></SPAN></DIV></FONT>   <FONT size=2> 以上¾l™å‡ºçš„æ˜¯findAll的实玎ͼŒfindById也是一栗÷€‚这样一来,ž®±æ— éœ€å†åœ¨å­ç±»ä¸­é‡å¤ç¼–写CRUD½Ž—法的实çŽîCº†ã€?BR>     再有ž®±æ˜¯åœ¨ç¼–写子¾c»Dao中特有的findæ–ÒŽ³•åQŒå› ä¸ºåˆ©ç”¨HibernateTemplate中的executeæ–ÒŽ³•来实玎ͼŒæ‰€ä»¥å¯ä»¥åœ¨BaseHibernateDao˜q™ä¸ªçˆ¶ç±»ä¸­ç¼–写一个protected的方法,以便子类Dao调用åQŒè¿™ä¸ªæ–¹æ³•中包含了调用HibernateTemplate中executeæ–ÒŽ³•的代码:<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_0_68_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_68_Open_Text.style.display='none'; Codehighlighter1_0_68_Closed_Image.style.display='inline'; Codehighlighter1_0_68_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_0_68_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_68_Closed_Text.style.display='none'; Codehighlighter1_0_68_Open_Image.style.display='inline'; Codehighlighter1_0_68_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN id=Codehighlighter1_0_68_Open_Text><SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>     * Covenience method for retrieving objects by HQL<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>     </SPAN><SPAN style="COLOR: #008000">*/</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000"> Query find(</SPAN><SPAN style="COLOR: #0000ff">final</SPAN><SPAN style="COLOR: #000000"> String query</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_184_486_Open_Image onclick="this.style.display='none'; Codehighlighter1_184_486_Open_Text.style.display='none'; Codehighlighter1_184_486_Closed_Image.style.display='inline'; Codehighlighter1_184_486_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_184_486_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_184_486_Closed_Text.style.display='none'; Codehighlighter1_184_486_Open_Image.style.display='inline'; Codehighlighter1_184_486_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">throws</SPAN><SPAN style="COLOR: #000000"> DataAccessException </SPAN><SPAN id=Codehighlighter1_184_486_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_184_486_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>        Query aQuery </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> (Query) getHibernateTemplate().execute(<BR><IMG id=Codehighlighter1_289_455_Open_Image onclick="this.style.display='none'; Codehighlighter1_289_455_Open_Text.style.display='none'; Codehighlighter1_289_455_Closed_Image.style.display='inline'; Codehighlighter1_289_455_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_289_455_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_289_455_Closed_Text.style.display='none'; Codehighlighter1_289_455_Open_Image.style.display='inline'; Codehighlighter1_289_455_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>                </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> HibernateCallback() </SPAN><SPAN id=Codehighlighter1_289_455_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_289_455_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_356_437_Open_Image onclick="this.style.display='none'; Codehighlighter1_356_437_Open_Text.style.display='none'; Codehighlighter1_356_437_Closed_Image.style.display='inline'; Codehighlighter1_356_437_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_356_437_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_356_437_Closed_Text.style.display='none'; Codehighlighter1_356_437_Open_Image.style.display='inline'; Codehighlighter1_356_437_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>                    </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Object doInHibernate(Session session) </SPAN><SPAN id=Codehighlighter1_356_437_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_356_437_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> session.createQuery(query);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                }</SPAN></SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> aQuery;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }</SPAN></SPAN></DIV>     ˜q™æ ·åœ¨å­¾c»Dao中就可以直接调用该findæ–ÒŽ³•来实玎ͼŒè€Œä¸å¿…每‹Æ¡éƒ½¾~–写¾Jççš„executeæ–ÒŽ³•ã€?BR>     以上的方法我都做˜q‡æµ‹è¯•ï¼Œåœ¨å®žçŽ°å’Œåº”ç”¨ä¸­æ²¡æœ‰é—®é¢˜ã€‚åœ¨æ•ˆçŽ‡ä¸Šå¯èƒ½ä¼šæ¯”åœ¨å­ç±»ä¸­å®žçŽ°è¦å·®ä¸€ç‚¹ï¼Œå› äØ“find*æ–ÒŽ³•中用åˆîCº†Java的反ž®„,å¯ÒŽ•ˆçŽ‡ä¼šä¸€å®šçš„å½±å“åQŒè¿™æ˜¯ç¼ºç‚¹ä¹‹ä¸€ã€‚如果有哪位有更好的办法åQŒè¯·åœ¨è¯„è®ÞZ¸­å†™å‡ºåQŒæ¬¢˜qŽå¤§å®¶è¿›è¡Œè¯„判,谢谢…â€?/FONT><img src ="http://www.aygfsteel.com/anticlockwise/aggbug/34429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anticlockwise/" target="_blank">举止优雅的猪</a> 2006-03-09 10:36 <a href="http://www.aygfsteel.com/anticlockwise/archive/2006/03/09/34429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的JavaåQŒçŽ°åœ¨å’Œæœªæ¥http://www.aygfsteel.com/anticlockwise/archive/2006/03/05/33697.html举止优雅的猪举止优雅的猪Sun, 05 Mar 2006 06:07:00 GMThttp://www.aygfsteel.com/anticlockwise/archive/2006/03/05/33697.htmlhttp://www.aygfsteel.com/anticlockwise/comments/33697.htmlhttp://www.aygfsteel.com/anticlockwise/archive/2006/03/05/33697.html#Feedback10http://www.aygfsteel.com/anticlockwise/comments/commentRss/33697.htmlhttp://www.aygfsteel.com/anticlockwise/services/trackbacks/33697.html    不知道自å·×ƒØ“什么会如此痴迷于JavaåQŒæˆ–者更应该说是¾~–程。现在已¾lå¤§ä¸‰äº†åQŒæœ‰äº†ä¸¤òq´å¤šçš„Java¾léªŒåQŒè™½ç„¶ä¸é•¿ï¼Œä½†å­¦åˆ°çš„东西很多。这主要归功于对Java的热çˆÞp¿˜æœ‰æˆ‘的英语。嘿嘿,本äh初中在英国年的,所以英语还½Ž—不错,看文档和书籍都是英文原版的,所以得到的信息更多ã€?BR>
    刚到大学时对¾~–程一无所知。大学里教的语言是C++åQŒåˆšæŽ¥è§¦æ—¶æ­»‹z»éƒ½å¼„不明白指针åQŒæ¯‹Æ¡ç¼–½E‹æ—¶éƒ½å›žé‡åˆ°˜q™æ ·å’Œé‚£æ ïLš„æŒ‡é’ˆé—®é¢˜åQŒæœ€å¸¸è§çš„å°±æ˜¯æŒ‡é’ˆäØ“½Iºçš„æƒ…况åQŒéƒé—¯‚‡³æž?IMG height=20 src="http://www.aygfsteel.com/Emoticons/hitwall.gif" width=25 border=0>。大概是大二上学期某个时候,½Hç„¶åœ¨å›¾ä¹¦é¦†çœ‹åˆ°å…³äºŽJava的书¾cï¼Œçœ‹äº†å‡ é¡µž®±å·²¾lç€˜q·äº†ã€‚接着的两òq´å¤šé‡Œï¼Œæˆ‘不断的学习JavaåQŒä»Žæœ€å¼€å§‹çš„环境变量的配¾|®ï¼ˆå¤§å®¶å¿…须承认åQŒè¿™æ˜¯Java初学者的最大问题)åQŒåˆ°çŽ°åœ¨å·²ç»ç†Ÿæ‚‰J2EEåQˆJava EEåQ‰ï¼ŒåŒ…括目前‹¹è¡Œçš„Webæ¡†æž¶å’Œä¸€äº›æ¯”è¾ƒæœ‰ç”¨çš„å¼€æºå·¥å…øP¼Œæ¯”如Ant、JUnit、WebUnit的等½{‰ã€?BR>
    我买的第一本Java书是Deitel两äh写的“Java How to Program”。我很庆òq怹°äº†è¿™æœ¬ä¹¦åQŒè¿™æ˜¯æœ¬å¾ˆå¥½çš„初学书¾cï¼Œæ‰€ä»¥çŽ°åœ¨å¦‚æžœæœ‰äººé—®æˆ‘åˆšå¼€å§‹å­¦Java应该用什么书åQŒæˆ‘会推荐他˜q™æœ¬åQŒå½“然前提是要看得懂英文。之后又随之ä¹îCº†Java Advanced How to ProgramåQŒè™½ç„¶è¿™æœ¬ä¹¦æ˜¯è€äº†ä¸€ç‚¹ï¼Œä½†æ˜¯ä¹Ÿå¾ˆæœ‰ç”¨åQŒç»™æˆ‘奠定了较好的J2EE基础ã€?BR>
    学习J2EE大概是在我接触Java一òq´å¤šåŽå¼€å§‹çš„åQŒé‚£æ—¶æˆ‘对开源还不懂åQŒæ‰€ä»¥ä»¥ä¸ºJ2EE只有Servlet、EJBå’ŒJSP。之前我一直ä‹É用的是Antå’ŒEditplusåQŒçŽ°åœ¨æœ‰æ—¶ä¹Ÿç”¨ï¼ŒAnt¼‹®å®žæ˜¯ä¸€é—¨éžå¸¸å¥½çš„工兗÷€‚做J2EE开发就不能只ä‹É用Ant了,我回抓狂的。IDE最开始我选择了NetbeansåQŒåˆšå¼€å§‹è§‰å¾—很好用åQŒå¾ˆæ–¹ä¾¿åQŒä½†éšç€æˆ‘做的东西的规模变大åQŒæœºå™¨å°±å¼€å§‹å¡äº†ï¼ˆNetbeans很消耗内存的åQ‰ã€‚之后在¾|‘上看到Eclipse很流行,便下下来用,ž®Þq”¨åˆîCº†çŽ°åœ¨ã€?BR>
    目前最遗憾的是我没有找到机会去做项目,只是自己做网站,学习而已。不˜q‡è¿™æ ähœ‰ä¸ªå¥½å¤„就是没人限制你åQŒæ‰€ä»¥ä½ å¯ä»¥ž®½æƒ…发挥åQŒå¯ä»¥åŽ»æŽ¢çƒ¦çš„æ›´åŠ é€å½»åQŒæœ‰æ—‰™—´åŽÀLƒ³ã€‚因䏸™¿˜åœ¨å­¦ä¹ é˜¶ŒDµï¼Œæ‰€ä»¥æˆ‘一直没有把¾|‘站攑ֈ°¾|‘上åQŒæˆ‘喜欢把我学过的技术和我自己想出来的模式都¾|‘自å·Þqš„¾|‘站上加åQŒä»¥å¾—到实践。目前我是这æ ïLš„åQšç”¨Springä½œäØ“ä¸­é—´å±‚ç®¡ç†èµ„æºã€DAO、Service½{‰ï¼›ä¸Žæ•°æ®åº“打交道我当然ž®±é€‰æ‹©çš„HibernateåQ›å‰ç«¯æˆ‘用了Strutså’ŒJSFåQŒè§‰å¾—他们各有利åQŒStruts主要接收和处理表单,JSFç”¨æ¥ä½œäØ“View Helper生成™åµé¢åQ›è§†å›¾æˆ‘˜q˜æ˜¯ç”¨çš„JSPåQŒä½†æ˜¯ç”¨äº†Sitemesh˜q›è¡Œè£…饰。开始用的TilesåQŒä½†åŽæ¥å‘现Tiles配置èµäh¥å¾ˆéº»çƒ¦ï¼Œè€Œä¸”限制很多åQ›æˆ‘˜q˜ç”¨äº†ä¸¤ä¸ªå°çš„开源组ä»Óž¼ŒAjaxtagså’ŒDisplaytagåQŒçŸ¥é“这两个东西的äh应该都知道我用它来干嘛的åQŒå°±ä¸è¯´äº†ï¼›å®‰å…¨æ–šw¢æˆ‘目前ä‹É用的AcegiSecurityåQŒæŒºå¥½ç”¨çš„,不过如果要求安全性更高,我还需要手工编码;模版技术我现在使用FreemarkeråQŒå› ä¸ÞZ‹É用Velocity我æ€ÀL˜¯é…ç½®ä¸æˆåŠŸï¼ˆåäh‡’åQ‰ã€‚现在我主要在琢¼‚¨å¦‚何简化代码,现在的结构都是我自己摸烦出来的,后来下了AppfuseåQŒå‘çŽ°å®ƒçš„ç»“æž„ç«Ÿç„¶å’Œæˆ‘å‡ ä¹Žä¸€æ øP¼lol
    说说未来吧,我已¾lå¤§ä¸‰äº†åQŒè¿˜æœ‰ä¸€òq´å°±è¦æ¯•业,我准备出国。开始准备去英国åQŒå› ä¸ºçŽ¯å¢ƒç†Ÿæ‚‰ï¼Œ˜q˜é€‰äº†ä¸€æ‰€è‹±å›½è®¡ç®—机排名第三的“帝国理工(Imperial CollegeåQ‰â€ã€‚去英国ž®Þp¦è€ƒé›…思。后来大家还是推荐我åŽÈ¾Žå›½ï¼Œæ¯•竟¾ŸŽå›½åœ¨è®¡½Ž—机斚w¢æ˜¯è€å¤§ã€‚我又看中了卡耐基·梅隆åQŒè¿™æ‰€å­¦æ ¡ž®×ƒ¸ç”¨ä»‹¾läº†å§ï¼ŒæŽå¼€å¯Œçš„æ¯æ ¡~~~~ åŽÈ¾Žå›½è¦è€ƒæ‰˜¼›å’ŒGRE。这下我三门都要考,托福和雅思我不怕,托福我刚做了å¥?003òq´çš„卷子åQŒåªé”™äº†4道题åQŒä¹Ÿè®¸æœ‰ä¸€ç‚¹è¿æ°”吧åQŒä½†åº”该˜q˜ç®—不错了。最怕的ž®±æ˜¯GREåQŒå¬è¯´æœ‰äº›äh因䨓GREå‡ÞZº†å®?IMG height=19 src="http://www.aygfsteel.com/Emoticons/confused_smile.gif" width=19 border=0>åQŒææ€–啊。我也渐渐感觉到了GRE的难度ã€?BR>    æˆ‘æ˜¯å‰å‡ å¤©åˆšæ³¨å†Œçš„ï¼Œçœ‹åˆ°â€œå“ˆå“ˆçš„æ—¥å­â€å†™çš„ä¸œè¥¿ï¼Œæ„Ÿè§‰å¾ˆæ¸©é¦¨ã€‚æœ¬äºø™¿˜æ²¡æœ‰å¥Ïxœ‹å‹ï¼Œå±žäºŽâ€œåœ£â€ç”·åQˆå‰©ä¸‹æ¥çš„男人)哈哈……能够找åˆîC¸€ä¸ªèƒ½å¤Ÿç†è§£ç¨‹åºå‘˜çš„另一半也是我的未来。我æ€ÀL˜¯åœ¨è¯´â€œæˆ‘ç›®å‰æœ€å¿«ä¹çš„äº‹æƒ…å°±æ˜¯èƒ½å¤ŸäØ“è‡ªå·±çš„æ¢¦æƒŒ™€Œå¥‹æ–—,也许会跌倒,也许会报怨,但那些都是这条èµ\上所固有的”。我快乐åQ?/FONT>

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÓÀÉÆÏØ| ·ï¸ÔÏØ| ÂêÄÉË¹ÏØ| ÆæÌ¨ÏØ| ´óÀóÏØ| êùÎªÏØ| ×Ô¹±ÊÐ| ÁijÇÊÐ| ¸£¹±ÏØ| ·ï»ËÏØ| ¶ë±ß| Óà½­ÏØ| ´ó·½ÏØ| ÑÓ´¨ÏØ| ¿ûÇàÇø| ð¢É½ÏØ| ÍͲýÏØ| ¹ã°²ÊÐ| ÒÀ°²ÏØ| Îâ½­ÊÐ| ÀûÐÁÏØ| ÆîÑôÏØ| ÓÀË³ÏØ| ÆÖ³ÇÏØ| µÇ·âÊÐ| °¢À­ÉÆ×óÆì| ÜìÄÏÏØ| µÂ»¯ÏØ| ·ïɽÊÐ| Ê©±üÏØ| Ú¯°²ÏØ| ÇÒÄ©ÏØ| ÌÒÔ´ÏØ| Ïå·ÚÏØ| ÒËÁ¼ÏØ| Âí±ß| ¸ßÓÊÊÐ| ƽ°²ÏØ| ÉÏÓÝÊÐ| ¿ªÔ¶ÊÐ| ¸ñ¶ûľÊÐ|