??xml version="1.0" encoding="utf-8" standalone="yes"?>91成人高清,欧美中文日韩,免费看欧美美女黄的网站http://www.aygfsteel.com/anticlockwise/zh-cnSun, 18 May 2025 11:41:16 GMTSun, 18 May 2025 11:41:16 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。用qSpring的h都知道Spring对Hibernate的支持方法较多,我常用的是直接承HibernateDaoSupportcR我们先来看一个类图:<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则其攑֜域模型对应的接口QSomeSpecificDaoQ中?BR>    q样Q对于最基本的CRUD操作可以只需在BaseHibernateDao中实玎ͼq一点利用了Template Method设计模式。对于create(), delete()和modify()三个Ҏ都可以简单实玎ͼ卌用HibernateTemplate中相应的Ҏ。对于findAll和findByIdQ则可以借住Java的反来实现。这里如果要利用反射且达到通用的目的,需要将所有的域模型放在一个包中,q且有相同的命名规则Q比如说如果域模型叫做UserQ那么相应的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>     再有是在编写子cDao中特有的findҎQ因为利用HibernateTemplate中的executeҎ来实玎ͼ所以可以在BaseHibernateDaoq个父类中编写一个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样在子cDao中就可以直接调用该findҎ来实玎ͼ而不必每ơ都~写J琐的executeҎ?BR>     以上的方法我都做q测试,在实现和应用中没有问题。在效率上可能会比在子类中实现要差一点,因ؓfind*Ҏ中用CJava的反,Ҏ率会一定的影响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>我的JavaQ现在和未来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    不知道自׃ؓ什么会如此痴迷于JavaQ或者更应该说是~程。现在已l大三了Q有了两q多的Javal验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多里,我不断的学习JavaQ从最开始的环境变量的配|(大家必须承认Q这是Java初学者的最大问题)Q到现在已经熟悉J2EEQJava EEQ,包括目前行的Web框架和一些比较有用的开源工P比如Ant、JUnit、WebUnit的等{?BR>
    我买的第一本Java书是Deitel两h写的“Java How to Program”。我很庆q怹了这本书Q这是本很好的初学书c,所以现在如果有人问我刚开始学Java应该用什么书Q我会推荐他q本Q当然前提是要看得懂英文。之后又随之CJava Advanced How to ProgramQ虽然这本书是老了一点,但是也很有用Q给我奠定了较好的J2EE基础?BR>
    学习J2EE大概是在我接触Java一q多后开始的Q那时我对开源还不懂Q所以以为J2EE只有Servlet、EJB和JSP。之前我一直用的是Ant和EditplusQ现在有时也用,Ant实是一门非常好的工兗做J2EE开发就不能只用Ant了,我回抓狂的。IDE最开始我选择了NetbeansQ刚开始觉得很好用Q很方便Q但随着我做的东西的规模变大Q机器就开始卡了(Netbeans很消耗内存的Q。之后在|上看到Eclipse很流行,便下下来用,qC现在?BR>
    目前最遗憾的是我没有找到机会去做项目,只是自己做网站,学习而已。不q这h个好处就是没人限制你Q所以你可以情发挥Q可以去探烦的更加透彻Q有旉L。因在学习阶D,所以我一直没有把|站攑ֈ|上Q我喜欢把我学过的技术和我自己想出来的模式都|自q|站上加Q以得到实践。目前我是这LQ用Spring作ؓ中间层管理资源、DAO、Service{;与数据库打交道我当然选择的HibernateQ前端我用了Struts和JSFQ觉得他们各有利QStruts主要接收和处理表单,JSF用来作ؓView Helper生成面Q视图我q是用的JSPQ但是用了Sitemeshq行装饰。开始用的TilesQ但后来发现Tiles配置h很麻烦,而且限制很多Q我q用了两个小的开源组ӞAjaxtags和DisplaytagQ知道这两个东西的h应该都知道我用它来干嘛的Q就不说了;安全斚w我目前用的AcegiSecurityQ挺好用的,不过如果要求安全性更高,我还需要手工编码;模版技术我现在使用FreemarkerQ因Z用Velocity我L配置不成功(hQ。现在我主要在琢如何简化代码,现在的结构都是我自己摸烦出来的,后来下了AppfuseQ发现它的结构竟然和我几乎一Plol
    说说未来吧,我已l大三了Q还有一q就要毕业,我准备出国。开始准备去英国Q因为环境熟悉,q选了一所英国计算机排名第三的“帝国理工(Imperial CollegeQ”。去英国p考雅思。后来大家还是推荐我ȝ国,毕竟国在计机斚w是老大。我又看中了卡耐基·梅隆Q这所学校׃用介l了吧,李开富的母校~~~~ ȝ国要考托和GRE。这下我三门都要考,托福和雅思我不怕,托福我刚做了?003q的卷子Q只错了4道题Q也许有一点运气吧Q但应该q算不错了。最怕的是GREQ听说有些h因ؓGREZ?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>

]]>
վ֩ģ壺 ƴ| | | | | | | Ȫ| | | ƽ| | | ɽ| | ¤| | ׶| | ԭ| | żҸ| | | | н| ƾ| Ϻ| ˮ| ͼ| | | | ½| | | ƺ| | | հ| Ž|