﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-坚定信念</title><link>http://www.blogjava.net/lyadlysys/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 01:49:08 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 01:49:08 GMT</pubDate><ttl>60</ttl><item><title>JAVA开发者应该去的20个英文网站【转】</title><link>http://www.blogjava.net/lyadlysys/archive/2008/04/28/196723.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Mon, 28 Apr 2008 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2008/04/28/196723.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/196723.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2008/04/28/196723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/196723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/196723.html</trackback:ping><description><![CDATA[<h1 class="block_title"><a id="viewpost1_TitleUrl" href="http://www.blogjava.net/Xejuny/archive/2008/04/23/195125.html">JAVA开发者应该去的20个英文网站【转】</a></h1>
<div class="post">
<div class="postcontent">http://www.javaalmanac.com - Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处.<br />
http://www.onjava.com - O&#8216;Reilly的Java网站. 每周都有新文章.<br />
http://java.sun.com - 官方的Java开发者网站 - 每周都有新文章发表.<br />
http://www.developer.com/java - 由Gamelan.com 维护的Java技术文章网站.<br />
http://www.java.net - Sun公司维护的一个Java社区网站.<br />
http://www.builder.com - Cnet的Builder.com网站 - 所有的技术文章, 以Java为主.<br />
http://www.ibm.com/developerworks/java - IBM的Developerworks技术网站; 这是其中的Java技术主页.<br />
http://www.javaworld.com - 最早的一个Java站点. 每周更新Java技术文章.<br />
http://www.devx.com/java - DevX维护的一个Java技术文章网站.<br />
http://www.fawcette.com/javapro - JavaPro在线杂志网站.<br />
http://www.sys-con.com/java - Java Developers Journal的在线杂志网站.<br />
http://www.javadesktop.org - 位于Java.net的一个Java桌面技术社区网站.<br />
http://www.theserverside.com - 这是一个讨论所有Java服务器端技术的网站.<br />
http://www.jars.com - 提供Java评论服务. 包括各种framework和应用程序.<br />
http://www.jguru.com - 一个非常棒的采用Q&amp;A形式的Java技术资源社区.<br />
http://www.javaranch.com - 一个论坛,得到Java问题答案的地方,初学者的好去处.<br />
http://www.ibiblio.org/javafaq/javafaq.html - comp.lang.java的FAQ站点 - 收集了来自comp.lang.java新闻组的问题和答案的分类目录.<br />
http://java.sun.com/docs/books/tutorial/ - 来自SUN公司的官方Java指南 - 对于了解几乎所有的java技术特性非常有帮助.<br />
http://www.javablogs.com - 互联网上最活跃的一个Java Blog网站.<br />
http://java.about.com/ - 来自About.com的Java新闻和技术文章网站.&nbsp; </div>
</div>
<img src ="http://www.blogjava.net/lyadlysys/aggbug/196723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2008-04-28 11:24 <a href="http://www.blogjava.net/lyadlysys/archive/2008/04/28/196723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>12条标准决定你是富是穷！(转载)</title><link>http://www.blogjava.net/lyadlysys/archive/2008/01/31/178666.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Thu, 31 Jan 2008 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2008/01/31/178666.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/178666.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2008/01/31/178666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/178666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/178666.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em"><font face="Verdana"><strong><font size="4">1、自我认知</font></strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：很少想到如何去<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8D5A_u94B1";KeyGate_ads.ShowGgAds(this,"_u8D5A_u94B1",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; color: rgb(0,0,255); padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BkVVBvIWgR-LZKI-YvQOT3dnzDZK_hDSutfyfBMCNtwHwkwkQAhgCIK2F0A0oFDgAUNvCk8X7_____wFgnZnegdQFqgEKMjAwMDAzNjEyN7IBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwMTI3LzExMzE1NC5odG1sqQK-T-yAS6mCPsgC5sLyA6gDAegDROgD9ALoA78B9QMABQAA&amp;num=2&amp;adurl=http://google.08.cn/%3Fg506&amp;client=ca-pub-5186439242807756");GgKwClickStat("赚钱","google.08.cn","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u8D5A_u94B1"'>赚钱</strong></nobr>和如何才能赚到钱，认为自己一辈子就该这样，不相信会有什么改变。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：骨子里就深信自己生下来不是要做穷人，而是要做富人，他有强烈的赚钱意识，这也是他血液里的东西，他会想尽一切办法使自己<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u81F4_u5BCC";KeyGate_ads.ShowGgAds(this,"_u81F4_u5BCC",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; color: rgb(0,0,255); padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BkVVBvIWgR-LZKI-YvQOT3dnzDZK_hDSutfyfBMCNtwHwkwkQAhgCIK2F0A0oFDgAUNvCk8X7_____wFgnZnegdQFqgEKMjAwMDAzNjEyN7IBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwMTI3LzExMzE1NC5odG1sqQK-T-yAS6mCPsgC5sLyA6gDAegDROgD9ALoA78B9QMABQAA&amp;num=2&amp;adurl=http://google.08.cn/%3Fg506&amp;client=ca-pub-5186439242807756");GgKwClickStat("致富","google.08.cn","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u81F4_u5BCC"'>致富</strong></nobr>。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>2、休闲</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：在家看电视，为肥皂剧的剧情感动得痛苦流涕，还要仿照电视里的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u65F6_u5C1A";KeyGate_ads.ShowGgAds(this,"_u65F6_u5C1A",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; color: rgb(0,0,255); padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BtFCKvIWgR-LZKI-YvQOT3dnzDaG6pTXB2OXQA8CNtwGg0RkQARgBIK2F0A0oFDgAUMKdsxVgnZnegdQFoAGH58n8A6oBCjIwMDAwMzYxMjeyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDEyNy8xMTMxNTQuaHRtbKkCvk_sgEupgj7IAv2SngGoAwHoA0ToA_QC6AO_AfUDAAUAAA&amp;num=1&amp;adurl=http://28.com/%3Fcomeid%3D20286&amp;client=ca-pub-5186439242807756");GgKwClickStat("时尚","28.com","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u65F6_u5C1A"'>时尚</strong></nobr>来武装自己。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：在外跑市场，即使打高耳夫球也不忘带者项目合同。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>3、交际</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：喜欢走穷亲戚，穷人的圈子大多是穷人，也排斥与富人交往，久而久之，心态成了穷人的心态，思维成了穷人的思维，做出来的是也就是穷人的模式。大家每天谈论着打折商品，交流着节约技巧，虽然有利于训练生存能利，但你的眼界也就渐渐囿于这样的琐事，而将雄心壮志消磨掉了。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：喜欢交流，但是多半都是同层次的人在交往。进行这半真半假的友情。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>4、学习</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：学手艺</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：学<nobr><strong class="kgb" onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","JavaScript%u4E2D%u7684%u5185%u5B58%u6CC4%u9732%u6A21%u5F0F","-100852","管理","AIX%u4E0A%u5DE5%u4F5C%u8D1F%u8F7D%u7BA1%u7406","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2482", event)' style="border-right: 0px; border-top: 0px; font-weight: normal; border-left: 0px; color: rgb(0,0,255); border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100852&amp;k=%u7BA1%u7406&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20080127/113154.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2482&amp;parm=8AA0A7031C507842DAB527EEF499C200E479F05ADDBAEA81&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">管理</strong></nobr></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>5、时间</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：一个享受充裕时间的人不可能赚大钱，要想悠闲轻松就会失去更多赚钱的机会。穷人的时间是不值钱的，有时甚至多余，不知道怎么打发,怎么混起来不烦。如果你可以因为买一斤白菜多花了一分钱而气恼不已。却不为虚度一天而心痛，这就是典型的穷人思维。　　</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：一个人无论以何种方式赚钱，也无论钱挣得是多还是少，都必须经过时间的积淀。富人的玩也是一种工作方式，是有目的的。富人的闲，闲在身体，修身养性，以利在战，脑袋一刻也没有闲着；穷人的闲，闲在思想，他手脚都在忙，忙着去麻将桌上多摸几把。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>6、归属感</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：是颗螺丝钉。穷人以为出身卑微，缺少安全感，就迫切地希望自己从属于并依赖于一个团体，于是他们以这个团体的标准为自己的标准，让自己的一切合乎规范，为团体的利益而工作，奔波，甚至迁徙。对于穷人来说，在一个著名的企业里稳定的工作几十年，有实习生一直干到高级主管,那简直是美得不能在美的理想。　</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：那些团体的领导者通常都是富人，他们总是一方面向穷人灌输：团结就是力量，如果你不从属于自己的团体，你就什么都不是，一名不文。.但另一方面，他们却从来没有停止过招兵买马，培养新人，以便随时可以把你替换掉。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>7、<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6295_u8D44";KeyGate_ads.ShowGgAds(this,"_u6295_u8D44",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; color: rgb(0,0,255); padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BtFCKvIWgR-LZKI-YvQOT3dnzDaG6pTXB2OXQA8CNtwGg0RkQARgBIK2F0A0oFDgAUMKdsxVgnZnegdQFoAGH58n8A6oBCjIwMDAwMzYxMjeyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDEyNy8xMTMxNTQuaHRtbKkCvk_sgEupgj7IAv2SngGoAwHoA0ToA_QC6AO_AfUDAAUAAA&amp;num=1&amp;adurl=http://28.com/%3Fcomeid%3D20286&amp;client=ca-pub-5186439242807756");GgKwClickStat("投资","28.com","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6295_u8D44"'>投资</strong></nobr>及对待财富</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：经济观点就是少用等于多赚，比如开一家面馆，收益率是100%，投入2万，一年就净赚2万，对于穷人来说很不错了。穷人即使有钱，也舍不得拿出来，即使终于下定决心投资，也不愿意冒风险，最终还是走不出那一步。穷人最津津乐道的就是鸡生蛋，蛋生鸡，一本万利......但是建筑在一只母鸡身上的希望毕竟是那样的脆弱。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：富人的出发点是万本万利。同样的开面馆，富人们会想，一家面馆承载的资本只有2万，如果有一亿资金，岂不是要开 5000家面馆？要一个一个管理好，大老板得操多少心，累白多少根头发呀？还不如投资宾馆。一个宾馆就足以消化全部的资本，哪怕收益率只有20%，一年下来也有2000万利润啊。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>8、激情（能不能干成事，首先要看有没有激情）</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：没有激情。他总是按部就班，很难出大错，也绝对不会做到最好。没有激情就无法兴奋，就不可能全心全意投入工作。大部分的穷人不能说没有激情，看他的激情总是消耗在太具体的事情上：上司表扬了，他会激动；商店打折，他会激动；电视里破镜重圆了，他的眼泪一传一串往下流，穷人有的只是一种情绪。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：燕雀安知鸿鹄之志？王侯将相，宁有种乎？有这样的激情，穷人终将不是穷人！激情是一种天性，是生命力的象征，有了激情才有了灵感的火花，才有了鲜明的个性，才有了人际关系中的强烈感染力，也才有了解决问题的魄力和方法。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>9、自信</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：穷人的自信要通过武装到牙齿，要通过一身高级名牌的穿戴和豪华的配置才能给他们带来更多的自信，穷人的自信往往不是发自内心和自然天成的。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：李嘉成在谈到他的经营秘诀时说：其实也没什么特别的，光景好时，决不过分乐观；光景不好时，也不过度悲观。其实就是一种富人特有的自信。自信才能不被外力所左右，自信才可能有正确的决定。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>10、习惯</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：有个故事，一个富人送给穷人一头牛。穷人满怀希望开始奋斗。可牛要吃草，人要吃饭，日子难过。穷人于是把牛卖了，买了几只羊,吃了一只，剩下来的用来生小羊.可小羊迟迟没有生出来，日子有艰难了。穷人把羊卖了，买成了鸡，想让鸡生蛋赚钱为生，但是日子并没有改变，最后穷人把鸡也杀了，穷人的理想彻底崩溃了，这就是穷人的习惯。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：根据一个投资专家说，富人成功的秘诀就是：没钱时，不管多困难，也不要动用投资和储蓄，压力会使你找到赚钱的新方法，帮你还清帐单。这是个好习惯。性格决定了习惯，习惯决定了成功。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>11、上网</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：上网聊天，穷人聊天，一是穷人时间多，二是穷人的嘴天生就不能闲着；富人讲究荣辱不惊，温柔敦厚，那叫涵养，有涵养才能树大根深。穷人就顾不了那么多，成天受着别人的白眼，浑身沾满了鸡毛蒜皮，多少窝囊气啊，说说都不行？聊天有理！</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：去网上找投资机会。富人上网，更多的是利用网络的低成本高效率，寻找更多的投资机会和项目，把便利运用到自己的生意中来。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4"><strong>12、消费花钱</strong></font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">穷人：买名牌是为了体验满足感，最喜欢试验刚出来的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6D41_u884C_u65F6_u5C1A";KeyGate_ads.ShowGgAds(this,"_u6D41_u884C_u65F6_u5C1A",event)' style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 0px; font-weight: normal; padding-bottom: 0px; margin: 0px; border-left: 0px; color: rgb(0,0,255); padding-top: 0px; border-bottom: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BtFCKvIWgR-LZKI-YvQOT3dnzDaG6pTXB2OXQA8CNtwGg0RkQARgBIK2F0A0oFDgAUMKdsxVgnZnegdQFoAGH58n8A6oBCjIwMDAwMzYxMjeyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDEyNy8xMTMxNTQuaHRtbKkCvk_sgEupgj7IAv2SngGoAwHoA0ToA_QC6AO_AfUDAAUAAA&amp;num=1&amp;adurl=http://28.com/%3Fcomeid%3D20286&amp;client=ca-pub-5186439242807756");GgKwClickStat("流行时尚","28.com","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6D41_u884C_u65F6_u5C1A"'>流行时尚</strong></nobr>产品，相信贵的必然是好的。</font></p>
<p style="text-indent: 2em"><font face="Verdana" size="4">富人：买名牌是为了节省挑选细节的时间，与消费品的售价相比，他更在乎时间成本。</font></p>
<img src ="http://www.blogjava.net/lyadlysys/aggbug/178666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2008-01-31 14:06 <a href="http://www.blogjava.net/lyadlysys/archive/2008/01/31/178666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java.net TCP编程 (转)</title><link>http://www.blogjava.net/lyadlysys/archive/2007/12/14/167662.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Fri, 14 Dec 2007 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/12/14/167662.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/167662.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/12/14/167662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/167662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/167662.html</trackback:ping><description><![CDATA[<br />
客户端:TestTCPClient.java<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 alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.DataOutputStream;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.Socket;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.UnknownHostException;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestTCPClient&nbsp;<br />
<img id="Codehighlighter1_166_554_Open_Image" onclick="this.style.display='none'; Codehighlighter1_166_554_Open_Text.style.display='none'; Codehighlighter1_166_554_Closed_Image.style.display='inline'; Codehighlighter1_166_554_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_166_554_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_166_554_Closed_Text.style.display='none'; Codehighlighter1_166_554_Open_Image.style.display='inline'; Codehighlighter1_166_554_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_166_554_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_166_554_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;<br />
<img id="Codehighlighter1_210_552_Open_Image" onclick="this.style.display='none'; Codehighlighter1_210_552_Open_Text.style.display='none'; Codehighlighter1_210_552_Closed_Image.style.display='inline'; Codehighlighter1_210_552_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_210_552_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_210_552_Closed_Text.style.display='none'; Codehighlighter1_210_552_Open_Image.style.display='inline'; Codehighlighter1_210_552_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_210_552_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_210_552_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_220_423_Open_Image" onclick="this.style.display='none'; Codehighlighter1_220_423_Open_Text.style.display='none'; Codehighlighter1_220_423_Closed_Image.style.display='inline'; Codehighlighter1_220_423_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_220_423_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_220_423_Closed_Text.style.display='none'; Codehighlighter1_220_423_Open_Image.style.display='inline'; Codehighlighter1_220_423_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_220_423_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_220_423_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Socket(</span><span style="color: #000000">"</span><span style="color: #000000">127.0.0.1</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">6767</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataOutputStream&nbsp;dos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataOutputStream(s.getOutputStream());<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dos.writeUTF(</span><span style="color: #000000">"</span><span style="color: #000000">Hello&nbsp;I&nbsp;am&nbsp;bulktree</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dos.flush();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dos.close();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.close();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(UnknownHostException&nbsp;ue)<br />
<img id="Codehighlighter1_460_489_Open_Image" onclick="this.style.display='none'; Codehighlighter1_460_489_Open_Text.style.display='none'; Codehighlighter1_460_489_Closed_Image.style.display='inline'; Codehighlighter1_460_489_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_460_489_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_460_489_Closed_Text.style.display='none'; Codehighlighter1_460_489_Open_Image.style.display='inline'; Codehighlighter1_460_489_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_460_489_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_460_489_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ue.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException&nbsp;ie)<br />
<img id="Codehighlighter1_517_546_Open_Image" onclick="this.style.display='none'; Codehighlighter1_517_546_Open_Text.style.display='none'; Codehighlighter1_517_546_Closed_Image.style.display='inline'; Codehighlighter1_517_546_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_517_546_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_517_546_Closed_Text.style.display='none'; Codehighlighter1_517_546_Open_Image.style.display='inline'; Codehighlighter1_517_546_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_517_546_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_517_546_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ie.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
服务端TestTCPServet.java
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;net;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.DataInputStream;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.ServerSocket;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.net.Socket;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestTCPServer&nbsp;<br />
<img id="Codehighlighter1_157_531_Open_Image" onclick="this.style.display='none'; Codehighlighter1_157_531_Open_Text.style.display='none'; Codehighlighter1_157_531_Closed_Image.style.display='inline'; Codehighlighter1_157_531_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_157_531_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_157_531_Closed_Text.style.display='none'; Codehighlighter1_157_531_Open_Image.style.display='inline'; Codehighlighter1_157_531_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_157_531_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_157_531_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;<br />
<img id="Codehighlighter1_201_529_Open_Image" onclick="this.style.display='none'; Codehighlighter1_201_529_Open_Text.style.display='none'; Codehighlighter1_201_529_Closed_Image.style.display='inline'; Codehighlighter1_201_529_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_201_529_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_201_529_Closed_Text.style.display='none'; Codehighlighter1_201_529_Open_Image.style.display='inline'; Codehighlighter1_201_529_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_201_529_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_201_529_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_211_468_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_468_Open_Text.style.display='none'; Codehighlighter1_211_468_Closed_Image.style.display='inline'; Codehighlighter1_211_468_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_211_468_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_211_468_Closed_Text.style.display='none'; Codehighlighter1_211_468_Open_Image.style.display='inline'; Codehighlighter1_211_468_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_211_468_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_211_468_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerSocket&nbsp;ss&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServerSocket(</span><span style="color: #000000">6767</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ss.accept();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">A&nbsp;Client&nbsp;Connection!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataInputStream&nbsp;dis&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataInputStream(s.getInputStream());<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(dis.readUTF());<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis.close();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.close();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException&nbsp;e)<br />
<img id="Codehighlighter1_495_523_Open_Image" onclick="this.style.display='none'; Codehighlighter1_495_523_Open_Text.style.display='none'; Codehighlighter1_495_523_Closed_Image.style.display='inline'; Codehighlighter1_495_523_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_495_523_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_495_523_Closed_Text.style.display='none'; Codehighlighter1_495_523_Open_Image.style.display='inline'; Codehighlighter1_495_523_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_495_523_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_495_523_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span></div>
<img src ="http://www.blogjava.net/lyadlysys/aggbug/167662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-12-14 09:32 <a href="http://www.blogjava.net/lyadlysys/archive/2007/12/14/167662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GOF设计模式(转载)</title><link>http://www.blogjava.net/lyadlysys/archive/2007/10/29/156591.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Mon, 29 Oct 2007 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/10/29/156591.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/156591.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/10/29/156591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/156591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/156591.html</trackback:ping><description><![CDATA[<font face="Verdana">&nbsp;&nbsp;&nbsp; <a href="http://www.itisedu.com/phrase/200603061811045.html" target="_new">GoF</a>:（Gang of Four，<font face="Verdana"><a href="http://www.itisedu.com/phrase/200604231322005.html" target="_new">GOF设计模式</a></font>）---四人组</font>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.itisedu.com/phrase/200604241216065.html" target="_new">Design Pattern</a>s: Elements of Reusable <a href="http://www.itisedu.com/phrase/200604231338435.html" target="_new">Object</a>-Oriented Software（即后述《<a href="http://www.itisedu.com/phrase/200603061631585.html" target="_new">设计模式</a>》
一书），由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides
合著（Addison-Wesley，1995）。这几位作者常被称为&#8220;四人组（Gang of Four）&#8221;，而这本书也就被称为&#8220;四人组（或
GoF）&#8221;书。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在《设计<a href="http://www.itisedu.com/phrase/200603061709535.html" target="_new">模式</a>》这本书的最大部分是一个目录，该目录列举并描述了 23 种设计模式。另外，近来这一清单又增加了一些<a href="http://www.itisedu.com/phrase/200603090857555.html" target="_new">类</a>别，最重要的是使涵盖范围扩展到更具体的问题<a href="http://www.itisedu.com/phrase/200603051002565.html" target="_new">类型</a>。例如，Mark Grand 在 Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with <a href="http://www.itisedu.com/phrase/200602271429302.html" target="_new">UML</a>（即后述《模式 Java 版》一书）中增加了解决涉及诸如并发等问题的模式，而由 Deepak Alur、John Crupi 和 Dan Malks 合著的 Core <a href="http://www.itisedu.com/phrase/200603091447335.html" target="_new">J2EE</a> Patterns: Best Practices and Design Strategies 一书中主要关注使用 Java 2 企业技术的多层应用<a href="http://www.itisedu.com/phrase/200604232224305.html" target="_new">程序</a>上的模式。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对<a href="http://www.itisedu.com/phrase/200604241215515.html" target="_new">软件设计模式</a>的研究造就了一本可能是<a href="http://www.itisedu.com/phrase/200603050045535.html" target="_new">面向对象设计</a>方面最有影响的书籍：《设计模式》。 </font></p>
<p><font face="Verdana"><strong>GOF的设计模式是一座"桥"</strong></font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就Java语言体系来说，GOF的设计模式是Java基础知识和J2EE<a href="http://www.itisedu.com/phrase/200603061723295.html" target="_new">框架</a>知识之间一座隐性的"桥"。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
会Java的人越来越多，但是一直徘徊在语言层次的程序员不在少数，真正掌握Java中接口或抽象类的应用不是很多，大家经常以那些技术只适合大型项目为
由，避开或忽略它们，实际中，Java的接口或抽象类是真正体现Java思想的核心所在，这些你都将在GoF的设计模式里领略到它们变幻无穷的魔力。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoF的设计模式表面上好象也是一种具体的"技术"，而且新的设计模式不断在出现，设计模式自有其自己的发展轨道，而这些好象和J2EE .Net等技术也无关！</font></p>
<p><font face="Verdana">实际上，GoF的设计模式并不是一种具体"技术",它讲述的是思想，它不仅仅展示了接口或抽象类在实际
案例中的灵活应用和智慧，让你能够真正掌握接口或抽象类的应用，从而在原来的Java语言基础上跃进一步，更重要的是，GoF的设计模式反复向你强调一个
宗旨：要让你的程序尽可能的可重用。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这其实在向一个极限挑战：<a href="http://www.itisedu.com/phrase/200603061756235.html" target="_new">软件需求</a>变幻无穷，计划没有变化快，但是我们还是要寻找出不变的东西，并将它和变化的东西分离开来，这需要非常的智慧和经验。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而GoF的设计模式是在这方面开始探索的一块里程碑。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; J2EE等属于一种框架<a href="http://www.itisedu.com/phrase/200604232134205.html" target="_new">软件</a>，什么是框架软件？它不同于我们以前接触的Java <a href="http://www.itisedu.com/phrase/200604241228185.html" target="_new">API</a>等，那些属于Toolkist(工具箱)，它不再被动的被使用，被调用，而是深刻的介入到一个领域中去，J2EE等框架软件设计的目的是将一个领域中不变的东西先定义好，比如整体结构和一些主要职责(如<a href="http://www.itisedu.com/phrase/200602271218062.html" target="_new">数据库</a>操作 事务跟踪 安全等)，剩余的就是变化的东西，针对这个领域中具体应用产生的具体不同的变化<a href="http://www.itisedu.com/phrase/200603101518295.html" target="_new">需求</a>，而这些变化东西就是J2EE程序员所要做的。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp; 由此可见，设计模式和J2EE在思想和动机上是一脉相承，只不过</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.设计模式更抽象，J2EE是具体的产品代码，我们可以接触到，而设计模式在对每个应用时才会产生具体代码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.设计模式是比J2EE等框架软件更小的<a href="http://www.itisedu.com/phrase/200603122156385.html" target="_new">体系结构</a>，J2EE中许多具体程序都是应用设计模式来完成的，当你深入到J2EE的内部代码研究时，这点尤其明显，因此，如果你不具备设计模式的基础知识(GoF的设计模式)，你很难快速的理解J2EE。不能理解J2EE,如何能灵活应用？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.J2EE只是适合企业计算应用的框架软件，但是GoF的设计模式几乎可以用于任何应用！因此GoF的设计模式应该是J2EE的重要理论基础之一。</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以说，GoF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的"桥"。为什么说隐性的？</font></p>
<p><font face="Verdana"><strong>GOF设计模式是一座隐性的"桥"</strong></font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
因为很多人没有注意到这点，学完Java基础语言就直接去学J2EE,有的甚至鸭子赶架，直接使用起Weblogic等具体J2EE软件，一段时间下来，
发现不过如此，挺简单好用，但是你真正理解J2EE了吗？你在具体案例中的应用是否也是在延伸J2EE的思想？</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
如果你不能很好的延伸J2EE的思想，那你岂非是大炮轰蚊子，认识到J2EE不是适合所有场合的人至少是明智的，但我们更需要将J2EE用对地方，那么只
有理解J2EE此类框架软件的精髓，那么你才能真正灵活应用Java解决你的问题，甚至构架出你自己企业的框架来。(我们不能总是使用别人设定好的框架，
为什么不能有我们自己的框架？)</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此，首先你必须掌握GoF的设计模式。虽然它是隐性，但不是可以越过的。</font></p>
<p><font face="Verdana"><strong>关于23种设计模式的有趣见解</strong></font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作者以轻松的语言比喻了java的23种模式，有很好的启发作用。 </font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建型模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、FACTORY—追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯德基，只管向服务员说&#8220;来四个鸡翅&#8221;就行了。麦当劳和肯德基就是生产鸡翅的Factory <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向<a href="http://www.itisedu.com/phrase/200603082208195.html" target="_new">客户端</a>提供。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2、BUILDER—MM最爱听的就是&#8220;我爱你&#8221;这句话了，见到不同地方的MM,要能够用她们的方言跟她说这句话哦，我有一个多种语言翻译机，上面每种语
言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出&#8220;我爱你&#8221;这句话了，国外的MM也可以轻松搞掂，这就是我的&#8220;我爱你&#8221;
builder。（这一定比美军在伊拉克用的翻译机好卖） <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品<a href="http://www.itisedu.com/phrase/200603090845215.html" target="_new">对象</a>。建造模式使得产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3、FACTORY METHOD—请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory
Method模式，带着MM到服务员那儿，说&#8220;要一个汉堡&#8221;，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、PROTOTYPE—跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是我的情话prototype了。（100块钱一份，你要不要） <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减
少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、SINGLETON—俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道&#8220;老公&#8221;，都是指的同一个人，那就是我(刚才做了个梦啦，哪有这么好的事) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的&#8220;单一实例&#8221;的需求时才可使用。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结构型模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、ADAPTER—在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 适配器（变压器）模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
7、BRIDGE—早上碰到MM，要说早上好，晚上碰到MM，要说晚上好；碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型，要说你的头
发好漂亮哦。不要问我&#8220;早上碰到MM新做了个发型怎么说&#8221;这种问题，自己用BRIDGE组合一下不就行了 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个<a href="http://www.itisedu.com/phrase/200602281706245.html" target="_new">软件系统</a>的抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
8、COMPOSITE—Mary今天过生日。&#8220;我过生日，你要送我一件礼物。&#8221;&#8220;嗯，好吧，去商店，你自己挑。&#8221;&#8220;这件T恤挺漂亮，买，这条裙子好看，
买，这个包也不错，买。&#8221;&#8220;喂，买了三件了呀，我只答应送一件礼物的哦。&#8221;&#8220;什么呀，T恤加裙子加包包，正好配成一套呀，小姐，麻烦你包起来。&#8221;
&#8220;&#8230;&#8230;&#8221;，MM都会用Composite模式了，你会了没有？ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9、DECORATOR—Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个月伙食费肯定玩完，拿出我去年在华山顶上照的照片，在背面写
上&#8220;最好的的礼物，就是爱你的Fita&#8221;，再到街上礼品店买了个像框（卖礼品的MM也很漂亮哦），再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起
来&#8230;&#8230;，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗？ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
10、FACADE—我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出来的照片才专业，但MM可不懂这些，教了半天也不会。幸好相
机有Facade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样MM也可以用这个相机给我拍张照片了。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 门面模式：外部与一个<a href="http://www.itisedu.com/phrase/200604161433025.html" target="_new">子系统</a>的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
11、FLYWEIGHT—每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常用的句子存在手机里，要用的时候，直接拿出来，在前面加上
MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名字就是提取出来的外部特征，根据上下文情况使用。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴
状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态，它们是相互独立的。将可以共享
的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被
共享的对象。享元模式大幅度的降低内存中对象的数量。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12、PROXY—跟MM在网上聊天，一开头总是&#8220;hi,你好&#8221;,&#8220;你从哪儿来呀？&#8221;&#8220;你多大了？&#8221;&#8220;身高多少呀？&#8221;这些话，真烦人，写个程序做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情
况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以
并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不能够创建被代理对象，被代理对象必须有系统的其他角色代为创建并传入。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 行为模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
13、CHAIN OF
RESPONSIBLEITY—晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上&#8220;Hi,可以做我的女朋友
吗？如果不愿意请向前传&#8221;，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处女呀，快跑! <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求，系统可以在不影响客户端的情
况下动态的重新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
14、COMMAND—俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间传送信息，她对我有什么指示，就写一张纸条让她弟弟带给我。
这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说：&#8220;我同时给我姐姐三个男朋友送COMMAND，就数你最小气，
才请我吃面。&#8221;，:-( <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开，委派给不同的对象。命令模式允许请求的一方和
发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收，以及操作是否执行，何时被执行以及是怎么被执行的。系统
支持命令的撤消。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15、INTERPRETER—俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只要做一个Interpreter，照着上面的脚本执行就可以了。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模
式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要
定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象都有一个解释方法，代表对命令对象的解释。命令对象的等级结构中的对象的任
何排列组合都是一个语言。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16、ITERATOR—我爱上了Mary，不顾一切的向她求婚。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mary：&#8220;想要我跟你结婚，得答应我的条件&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我：&#8220;什么条件我都答应，你说吧&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mary：&#8220;我看上了那个一克拉的钻石&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我：&#8220;我买，我买，还有吗？&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mary：&#8220;我看上了湖边的那栋别墅&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我：&#8220;我买，我买，还有吗？&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mary：&#8220;你的小弟弟必须要有50<a href="http://www.itisedu.com/phrase/200604231316585.html" target="_new">cm</a>长&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我脑袋嗡的一声，坐在椅子上，一咬牙：&#8220;我剪，我剪，还有吗？&#8221; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;&#8230; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集，聚集对象是能够包容一组对象的容
器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代
子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17、MEDIATOR—四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时，不会
立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协
作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18、MEMENTO—同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19、OBSERVER—想知道咱们公司最新MM情报吗？加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知我们，直接发布给邮件组，我们作为订阅者（观察者）就可以及时收到情报啦 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时，会通知所有观察者对象，使他们能够自动更新自己。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
20、STATE—跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比如你约她今天晚上去看电影，对你没兴趣的MM就会说&#8220;有事情
啦&#8221;，对你不讨厌但还没喜欢上的MM就会说&#8220;好啊，不过可以带上我同事么？&#8221;，已经喜欢上你的MM就会说&#8220;几点钟？看完电影再去泡吧怎么样？&#8221;，当然你看
电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对
象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候，其行为也随之改变。状态模式需要对每一个系统
可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子类。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21、STRATEGY—跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况
下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中提供。由于算法和环境独立开来，算法的增减，修改都不会影
响到环境和客户端。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22、TEMPLATE
METHOD——看过《如何说服女生上床》这部经典文章吗？女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八
大步骤(Template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具体实现)； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现，然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类
可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而将逻辑的细节留给具体的子类去实现。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
23、VISITOR—情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都要针对她个人的特点，每张卡片也要根据个人的特点来挑，我一
个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点选一束花，让礼品店老板也根据每个人特点选一张卡，这样就轻
松多了； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话，接受这个操作的数据结构可以保持不变。访问者模式
适用于数据结构相对未定的系统，它把数据结构和作用于结构上的操作之间的耦合解脱开，使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很
容易，就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中，而不是分散到一个个的节点类中。当使用访问者模式时，要将尽可能多的对
象浏览逻辑放在访问者类中，而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。</font></p>
<p align="left">（来源：blog.csdn.net，http://www.jdon.com）</p>
<img src ="http://www.blogjava.net/lyadlysys/aggbug/156591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-10-29 10:11 <a href="http://www.blogjava.net/lyadlysys/archive/2007/10/29/156591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>英语资源下载</title><link>http://www.blogjava.net/lyadlysys/archive/2007/10/25/155927.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Thu, 25 Oct 2007 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/10/25/155927.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/155927.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/10/25/155927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/155927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/155927.html</trackback:ping><description><![CDATA[http://www.pass-e.com/article.php?articleid=5629<br />
<img src ="http://www.blogjava.net/lyadlysys/aggbug/155927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-10-25 18:16 <a href="http://www.blogjava.net/lyadlysys/archive/2007/10/25/155927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载 英语900句（经典）</title><link>http://www.blogjava.net/lyadlysys/archive/2007/10/15/152992.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Mon, 15 Oct 2007 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/10/15/152992.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/152992.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/10/15/152992.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/152992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/152992.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第一册一、&nbsp;Greetings&nbsp;问候语&nbsp;1.&nbsp;hello!&nbsp;/&nbsp;hi!&nbsp;你好！&nbsp;2.&nbsp;good&nbsp;morning&nbsp;/&nbsp;afternoon&nbsp;/&nbsp;evening!&nbsp;早晨（下午/晚上）好！&nbsp;3.&nbsp;i'm&nbsp;kath...&nbsp;&nbsp;<a href='http://www.blogjava.net/lyadlysys/archive/2007/10/15/152992.html'>阅读全文</a><img src ="http://www.blogjava.net/lyadlysys/aggbug/152992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-10-15 14:42 <a href="http://www.blogjava.net/lyadlysys/archive/2007/10/15/152992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse优秀插件（转）</title><link>http://www.blogjava.net/lyadlysys/archive/2007/08/26/139639.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Sun, 26 Aug 2007 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/08/26/139639.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/139639.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/08/26/139639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/139639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/139639.html</trackback:ping><description><![CDATA[<br>1 EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在这里下载<br><a href="http://www.eclipse.org/downloads/index.php"><font color=#000000><u>http://www.eclipse.org/downloads/index.php</u></font></a>
<p>2&nbsp; lomboz J2EE插件,开发JSP,EJB<br><a href="http://forge.objectweb.org/projects/lomboz"><font color=#000000><u>http://forge.objectweb.org/projects/lomboz</u></font></a><br></p>
<p>3&nbsp; MyEclipse J2EE开发插件，支持SERVLET/JSP/EJB/数据库操纵等 <br><a href="http://www.myeclipseide.com/"><font color=#000000><u>http://www.myeclipseide.com</u></font></a></p>
<p>4&nbsp; Properties Editor&nbsp; 编辑java的属性文件，并可以自动存盘为Unicode格式 <br><a href="http://propedit.sourceforge.jp/index_en.html"><font color=#000000><u>http://propedit.sourceforge.jp/index_en.html</u></font></a></p>
<p>5&nbsp; Colorer Take&nbsp; 为上百种类型的文件按语法着色 <br><a href="http://colorer.sourceforge.net/"><font color=#000000><u>http://colorer.sourceforge.net/</u></font></a></p>
<p>6&nbsp; XMLBuddy 编辑xml文件<br><a href="http://www.xmlbuddy.com/"><font color=#000000><u>http://www.xmlbuddy.com</u></font></a></p>
<p>7&nbsp; Code Folding&nbsp; 加入多种代码折叠功能（比eclipse自带的更多） <br><a href="http://www.coffee-bytes.com/servlet/PlatformSupport"><font color=#000000><u>http://www.coffee-bytes.com/servlet/PlatformSupport</u></font></a></p>
<p>8&nbsp; Easy Explorer&nbsp; 从eclipse中访问选定文件、目录所在的文件夹 <br><a href="http://easystruts.sourceforge.net/"><font color=#000000><u>http://easystruts.sourceforge.net/</u></font></a></p>
<p>9&nbsp; Fat Jar 打包插件，可以方便的完成各种打包任务，可以包含外部的包等 <br><a href="http://fjep.sourceforge.net/"><font color=#000000><u>http://fjep.sourceforge.net/</u></font></a></p>
<p>10&nbsp; RegEx Test 测试正则表达式 <br><a href="http://brosinski.com/stephan/archives/000028.php"><font color=#000000><u>http://brosinski.com/stephan/archives/000028.php</u></font></a></p>
<p>11&nbsp; JasperAssistant 报表插件(要钱的哦～)<br><a href="http://www.jasperassistant.com/"><font color=#000000><u>http://www.jasperassistant.com/</u></font></a></p>
<p>12&nbsp; Jigloo GUI Builder JAVA的GUI编辑插件 <br><a href="http://cloudgarden.com/jigloo/"><font color=#000000><u>http://cloudgarden.com/jigloo/</u></font></a></p>
<p>13&nbsp; Profiler 性能跟踪、测量工具，能跟踪、测量B/S程序 <br><a href="http://sourceforge.net/projects/eclipsecolorer/"><font color=#000000><u>http://sourceforge.net/projects/eclipsecolorer/</u></font></a></p>
<p>14&nbsp; AdvanQas 提供对if/else等条件语句的提示和快捷帮助(自动更改结构等)<br><a href="http://eclipsecolorer.sourceforge.net/advanqas/index.html"><font color=#000000><u>http://eclipsecolorer.sourceforge.net/advanqas/index.html</u></font></a></p>
<p>15&nbsp; Log4E Log4j插件，提供各种和Log4j相关的任务，如为方法、类添加一个logger等 <br><a href="http://log4e.jayefem.de/index.php/Main_Page"><font color=#000000><u>http://log4e.jayefem.de/index.php/Main_Page</u></font></a></p>
<p>16&nbsp; VSSPlugin VSS插件 <br><a href="http://sourceforge.net/projects/vssplugin"><font color=#000000><u>http://sourceforge.net/projects/vssplugin</u></font></a></p>
<p>17&nbsp; Implementors 提供跳转到一个方法的实现类，而不是接口的功能（实用!） <br><a href="http://eclipse-tools.sourceforge.net/implementors/"><font color=#000000><u>http://eclipse-tools.sourceforge.net/implementors/</u></font></a> </p>
<p>18&nbsp; Call Hierarchy 显示一个方法的调用层次（被哪些方法调，调了哪些方法） <br><a href="http://eclipse-tools.sourceforge.net/call-hierarchy/index.html"><font color=#000000><u>http://eclipse-tools.sourceforge.net/call-hierarchy/index.html</u></font></a> </p>
<p>19&nbsp; EclipseTidy 检查和格式化HTML/XML文件 <br><a href="http://eclipsetidy.sourceforge.net/"><font color=#000000><u>http://eclipsetidy.sourceforge.net/</u></font></a></p>
<p>20&nbsp; Checkclipse 检查代码的风格、写法是否符合规范 <br><a href="http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm"><font color=#000000><u>http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm</u></font></a></p>
<p>21&nbsp; Hibernate Synchronizer Hibernate插件，自动映射等 <br><a href="http://www.binamics.com/hibernatesync/"><font color=#000000><u>http://www.binamics.com/hibernatesync/</u></font></a> </p>
<p>22&nbsp; VeloEclipse&nbsp; Velocity插件 <br><a href="http://propsorter.sourceforge.net/"><font color=#000000><u>http://propsorter.sourceforge.net/</u></font></a>&nbsp;<br>&nbsp; <br>23&nbsp; EditorList 方便的列出所有打开的Editor <br><a href="http://editorlist.sourceforge.net/"><font color=#000000><u>http://editorlist.sourceforge.net/</u></font></a>&nbsp;<br>&nbsp; <br>24&nbsp; MemoryManager 内存占用率的监视 <br><a href="http://cloudgarden.com/memorymanager/"><font color=#000000><u>http://cloudgarden.com/memorymanager/</u></font></a>&nbsp;<br>&nbsp;<br>25&nbsp; swt-designer java的GUI插件<br><a href="http://www.swt-designer.com/"><font color=#000000><u>http://www.swt-designer.com/</u></font></a><br>&nbsp;<br>26&nbsp; TomcatPlugin 支持Tomcat插件 <br><a href="http://www.sysdeo.com/eclipse/tomcatPlugin.html"><font color=#000000><u>http://www.sysdeo.com/eclipse/tomcatPlugin.html</u></font></a><br>&nbsp;<br>27&nbsp; XML Viewer <br><a href="http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html"><font color=#000000><u>http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html</u></font></a><br>&nbsp;<br>28&nbsp; quantum 数据库插件<br><a href="http://quantum.sourceforge.net/"><font color=#000000><u>http://quantum.sourceforge.net/</u></font></a><br>&nbsp;<br>29&nbsp; Dbedit 数据库插件<br><a href="http://sourceforge.net/projects/dbedit"><font color=#000000><u>http://sourceforge.net/projects/dbedit</u></font></a><br>&nbsp;<br>30&nbsp; clay.core 可视化的数据库插件 <br><a href="http://www.azzurri.jp/en/software/index.jsp"><font color=#000000><u>http://www.azzurri.jp/en/software/index.jsp</u></font></a> <br><a href="http://www.azzurri.jp/eclipse/plugins"><font color=#000000><u>http://www.azzurri.jp/eclipse/plugins</u></font></a><br>&nbsp;<br>31&nbsp; hiberclipse hibernate插件 <br><a href="http://hiberclipse.sourceforge.net/"><font color=#000000><u>http://hiberclipse.sourceforge.net</u></font></a><br><a href="http://www.binamics.com/hibernatesync"><font color=#000000><u>http://www.binamics.com/hibernatesync</u></font></a><br>&nbsp;<br>32&nbsp; struts-console Struts插件<br><a href="http://www.jamesholmes.com/struts/console/"><font color=#000000><u>http://www.jamesholmes.com/struts/console/</u></font></a><br>&nbsp;<br>33&nbsp; easystruts Struts插件<br><a href="http://easystruts.sourceforge.net/"><font color=#000000><u>http://easystruts.sourceforge.net</u></font></a>&nbsp;<br>&nbsp;<br>34&nbsp; veloedit Velocity插件<br><a href="http://veloedit.sourceforge.net/"><font color=#000000><u>http://veloedit.sourceforge.net/</u></font></a><br>&nbsp;<br>35&nbsp; jalopy 代码整理插件<br><a href="http://jalopy.sourceforge.net/"><font color=#000000><u>http://jalopy.sourceforge.net/</u></font></a><br>&nbsp;<br>36&nbsp; JDepend 包关系分析<br><a href="http://andrei.gmxhome.de/jdepend4eclipse/links.html"><font color=#000000><u>http://andrei.gmxhome.de/jdepend4eclipse/links.html</u></font></a><br>&nbsp;<br>37&nbsp; Spring IDE Spring插件<br><a href="http://springide-eclip.sourceforge.net/updatesite/"><font color=#000000><u>http://springide-eclip.sourceforge.net/updatesite/</u></font></a><br>&nbsp;<br>38&nbsp; doclipse 可以产生xdoclet 的代码提示<br><a href="http://beust.com/doclipse/"><font color=#000000><u>http://beust.com/doclipse/</u></font></a></p>
<p>39&nbsp; SQLExplorer,在Eclipse 中连接各种数据库进行操作使用<br><a href="http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&amp;threadID=31124" target=_blank><font color=#000000><u>http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=124&amp;threadID=31124</u></font></a></p>
<p><font size=2>40&nbsp; JSEclipse<br></font></p>
<div>插件主页：<a href="http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/"><font color=#000000><u>http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/</u></font></a></div>
<div>插件介绍：JSEclipse是个Eclipse下的免费Javascript脚本编辑器<br>41&nbsp; subversion<br>版本控制，相当于CVS<br>安装：<a href="http://subclipse.tigris.org/install.html"><font color=#000000><u>http://subclipse.tigris.org/install.html</u></font></a><br><font size=2>Name: Subclipse<br>URL:&nbsp; http://subclipse.tigris.org/update_1.0.x<br><br><br></font>42&nbsp;&nbsp; CSS Editor for Eclipse<br><a href="http://csseditor.sourceforge.net/"><font color=#000000><u>http://csseditor.sourceforge.net/</u></font></a><br><br>43&nbsp;&nbsp; FacesIDE<br>FacesIDE是一个用于开发JSF的Eclispe插件.它可以可视化编辑faces-config.xml文件并且提供代码编辑与校验,预览JSF的JSP文件.FacesIDE包含MyFaces来作为JSF的实现<br><a href="http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=FacesIDE"><font color=#000000 size=2><u>http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=FacesIDE</u></font></a><br><br><span><font size=2>44&nbsp;&nbsp;&nbsp; <strong>Eclipse SQLExplorer plugin</strong><br>一个数据库管理插件<br></font></span><a href="http://sourceforge.net/projects/eclipsesql"><font color=#000000 size=2><u>http://sourceforge.net/projects/eclipsesql</u></font></a><br><br><font size=2>45&nbsp;&nbsp;<strong> Poperties Editor</strong><br>一个在编辑完成后可以将资源文件中的中文编码格式转换为unicode编码的插件，在开发国际化应用程序的时候非常有用<br></font><a href="http://propedit.sourceforge.jp/eclipse/updates/"><font color=#000000 size=2><u>http://propedit.sourceforge.jp/eclipse/updates/</u></font></a></div>
<p><font size=2>46&nbsp; <strong>eclipseME</strong><br>&nbsp; </font><a href="http://eclipseme.org/updates/"><font color=#000000><u><font size=2>http://eclipseme.org/updates/</font> </u></font></a><br></p>
<p><font size=2>47&nbsp;&nbsp; <strong>Eclipse加速插件KeepResident</strong></font> <a href="http://suif.stanford.edu/pub/keepresident/"><br><font color=#000000><u><font size=2>http://suif.stanford.edu/pub/keepresident/</font> </u></font></a><br><font size=2>&nbsp;<br>48&nbsp;&nbsp;<strong> MyEclipse&nbsp; J2EE开发插件，支持SERVLET/JSP/EJB/数据库操纵等<br></strong></font><a href="http://www.myeclipseide.com/"><font color=#000000><u><font size=2>www.myeclipseide.com</font> </u></font></a><br><font size=2>&nbsp;<br>49&nbsp;<strong>&nbsp; Properties Editor&nbsp; 编辑java的属性文件，并可以自动存盘为Unicode格式</strong><br></font><a href="http://propedit.sourceforge.jp/index_en.html"><font color=#000000><u><font size=2>http://propedit.sourceforge.jp/index_en.html</font> </u></font></a><br><a href="http://propedit.sourceforge.jp/eclipse/updates/"><font color=#000000><u><font size=2>http://propedit.sourceforge.jp/eclipse/updates/</font> </u></font></a><br><font size=2>&nbsp;<br><strong>50 Colorer Take&nbsp; 为上百种类型的文件按语法着色</strong><br></font><a href="http://colorer.sourceforge.net/"><font color=#000000><u><font size=2>http://colorer.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br><strong>51 XMLBuddy 编辑xml文件</strong><br></font><a href="http://www.xmlbuddy.com/"><font color=#000000><u><font size=2>www.xmlbuddy.com</font> </u></font></a><br><font size=2>&nbsp;<br>52&nbsp;<strong>&nbsp; Code Folding&nbsp; 加入多种代码折叠功能（比eclipse自带的更多）</strong><br></font><a href="http://www.coffee-bytes.com/servlet/PlatformSupport"><font color=#000000><u><font size=2>http://www.coffee-bytes.com/servlet/PlatformSupport</font> </u></font></a><br><font size=2>&nbsp;<br>53 <strong>Easy Explorer&nbsp; 从eclipse中访问选定文件、目录所在的文件夹</strong><br></font><a href="http://easystruts.sourceforge.net/"><font color=#000000><u><font size=2>http://easystruts.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br><strong>54&nbsp; Fat Jar 打包插件，可以方便的完成各种打包任务，可以包含外部的包等</strong><br></font><a href="http://fjep.sourceforge.net/"><font color=#000000><u><font size=2>http://fjep.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br>55 <strong>RegEx Test 测试正则表达式</strong><br></font><a href="http://brosinski.com/stephan/archives/000028.php"><font color=#000000><u><font size=2>http://brosinski.com/stephan/archives/000028.php</font> </u></font></a><br><font size=2>&nbsp;<br>56<strong>&nbsp; JasperAssistant 报表插件（强，要钱的）</strong><br></font><a href="http://www.jasperassistant.com/"><font color=#000000><u><font size=2>http://www.jasperassistant.com/</font> </u></font></a><br><font size=2>&nbsp;<br>57&nbsp;<strong>&nbsp; Jigloo GUI Builder ＪＡＶＡ的ＧＵＩ编辑插件</strong><br></font><a href="http://cloudgarden.com/jigloo/"><font color=#000000><u><font size=2>http://cloudgarden.com/jigloo/</font> </u></font></a><br><font size=2>&nbsp;<br>58&nbsp;&nbsp; <strong>Profiler 性能跟踪、测量工具，能跟踪、测量ＢＳ程序</strong><br></font><a href="http://sourceforge.net/projects/eclipsecolorer/"><font color=#000000><u><font size=2>http://sourceforge.net/projects/eclipsecolorer/</font> </u></font></a><br><font size=2>&nbsp;<br>59&nbsp; <strong>AdvanQas 提供对if/else等条件语句的提示和快捷帮助（自动更改结构等）</strong><br></font><a href="http://eclipsecolorer.sourceforge.net/advanqas/index.html"><font color=#000000><u><font size=2>http://eclipsecolorer.sourceforge.net/advanqas/index.html</font> </u></font></a><br><font size=2>&nbsp;<br>60&nbsp; Log4E&nbsp;&nbsp;&nbsp;&nbsp; Log4j插件，提供各种和Log4j相关的任务，如为方法、类添加一个logger等<br></font><a href="http://log4e.jayefem.de/index.php/Main_Page"><font color=#000000><u><font size=2>http://log4e.jayefem.de/index.php/Main_Page</font>&nbsp;</u></font></a><br><font size=2>&nbsp;</font><font size=2><br>61 Implementors&nbsp;&nbsp; 提供跳转到一个方法的实现类，而不是接中的功能（实用!）<br></font><a href="http://eclipse-tools.sourceforge.net/implementors/"><font color=#000000><u><font size=2>http://eclipse-tools.sourceforge.net/implementors/</font> </u></font></a><br><font size=2>&nbsp;<br>62&nbsp; Call Hierarchy 显示一个方法的调用层次（被哪些方法调，调了哪些方法）<br></font><a href="http://eclipse-tools.sourceforge.net/call-hierarchy/index.html"><font color=#000000><u><font size=2>http://eclipse-tools.sourceforge.net/call-hierarchy/index.html</font> </u></font></a><br><font size=2>&nbsp;<br>63EclipseTidy 检查和格式化HTML/XML文件<br></font><a href="http://eclipsetidy.sourceforge.net/"><font color=#000000><u><font size=2>http://eclipsetidy.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br>64 Checkclipse 检查代码的风格、写法是否符合规范<br></font><a href="http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm"><font color=#000000><u><font size=2>http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm</font> </u></font></a><br><font size=2>&nbsp;<br>64&nbsp; Hibernate Synchronizer Hibernate插件，自动映射等<br></font><a href="http://www.binamics.com/hibernatesync/"><font color=#000000><u><font size=2>http://www.binamics.com/hibernatesync/</font> </u></font></a><br><font size=2>&nbsp;<br>65&nbsp; spring updatesite 插件<br></font><a href="http://springide.org/updatesite/"><font color=#000000><u><font size=2>http://springide.org/updatesite/</font> </u></font></a></p>
<p><font size=2>66 VeloEclipse&nbsp; Velocity插件<br></font><a href="http://propsorter.sourceforge.net/"><font color=#000000><u><font size=2>http://propsorter.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br>67&nbsp; EditorList&nbsp;&nbsp; 方便的列出所有打开的Editor<br></font><a href="http://editorlist.sourceforge.net/"><font color=#000000><u><font size=2>http://editorlist.sourceforge.net/</font> </u></font></a><br><font size=2>&nbsp;<br>68&nbsp; MemoryManager 内存占用率的监视<br></font><a href="http://cloudgarden.com/memorymanager/"><font color=#000000><u><font size=2>http://cloudgarden.com/memorymanager/</font> </u></font></a></p>
<p><font size=2>69 Eclipse的游戏插件<br></font><a href="http://eclipse-games.sourceforge.net/"><font color=#000000><u><font size=2>http://eclipse-games.sourceforge.net/</font> </u></font></a></p>
<p><font size=2>70&nbsp; JBoss-IDE<br></font><a href="http://jboss.sourceforge.net/jbosside/updates/"><font color=#000000><u><font size=2>http://jboss.sourceforge.net/jbosside/updates/</font> </u></font></a></p>
<p><font size=2>71自动反编译class，安装后要设定class文件缺省关联到jode<br></font><a href="http://www.technoetic.com/eclipse/update"><font color=#000000><u><font size=2>http://www.technoetic.com/eclipse/update</font> </u></font></a></p>
<p><br><font size=2>72&nbsp; jigloo swing/sw设计工具，里面自带的form/anchor布局很好用！<br></font><a href="http://cloudgarden.soft-gems.net/update-site/"><font color=#000000><u><font size=2>http://cloudgarden.soft-gems.net/update-site/</font> </u></font></a></p>
<p><font size=2>73&nbsp; jinto的资源文件编辑工具，同时编辑多种语言，而且自动转换成iso8859-1编码。很好用！<br></font><a href="http://www.guh-software.de/eclipse/"><font color=#000000><font size=2><u>http://www.guh-software.de/eclipse/</u></font></font></a><br><br><br>转至：<a href="http://www.blogjava.net/mlh123caoer/archive/2007/08/25/139316.html">http://www.blogjava.net/mlh123caoer/archive/2007/08/25/139316.html</a></p>
<img src ="http://www.blogjava.net/lyadlysys/aggbug/139639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-08-26 22:18 <a href="http://www.blogjava.net/lyadlysys/archive/2007/08/26/139639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用 反射机制和动态代理 实现的ioc内附代码</title><link>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136999.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Wed, 15 Aug 2007 10:00:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136999.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/136999.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/136999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/136999.html</trackback:ping><description><![CDATA[<a  href="http://www.blogjava.net/Files/lyadlysys/alpsframe.rar">http://www.blogjava.net/Files/lyadlysys/alpsframe.rar</a><br><a  href="http://www.blogjava.net/Files/lyadlysys/jdom-1.0.rar">http://www.blogjava.net/Files/lyadlysys/jdom-1.0.rar</a><br>在工程中使用了jdom来读取配置文件所以要将jdom加入到工程中<br><img src ="http://www.blogjava.net/lyadlysys/aggbug/136999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-08-15 18:00 <a href="http://www.blogjava.net/lyadlysys/archive/2007/08/15/136999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新来的报个到</title><link>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136851.html</link><dc:creator>虾米成长中</dc:creator><author>虾米成长中</author><pubDate>Wed, 15 Aug 2007 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136851.html</guid><wfw:comment>http://www.blogjava.net/lyadlysys/comments/136851.html</wfw:comment><comments>http://www.blogjava.net/lyadlysys/archive/2007/08/15/136851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lyadlysys/comments/commentRss/136851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lyadlysys/services/trackbacks/136851.html</trackback:ping><description><![CDATA[刚刚注册到，请大侠们以后多多关照<br><img src ="http://www.blogjava.net/lyadlysys/aggbug/136851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lyadlysys/" target="_blank">虾米成长中</a> 2007-08-15 11:11 <a href="http://www.blogjava.net/lyadlysys/archive/2007/08/15/136851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>