﻿<?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/mphome/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 21:13:46 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 21:13:46 GMT</pubDate><ttl>60</ttl><item><title>培训ending</title><link>http://www.blogjava.net/mphome/archive/2009/09/11/294721.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 11 Sep 2009 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/09/11/294721.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/294721.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/09/11/294721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/294721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/294721.html</trackback:ping><description><![CDATA[        天天培训，隔三差五晚上讨论，最近两个月基本都是如此度过，印象中好像已经连续3个多星期没有星期天了吧，星期六就不用谈了直接用来培训。计划的培训流程：体验馆--&gt;文化交流中心（CM企业文化）--&gt;军训---&gt;鼎培---&gt;商务吧。晕啊，一节接一节整个下来都要3个月，来了两个月部门都没去过几次，人都认不全，人家都认得我，我都叫不出人家名字，汗颜。<br />       爽还是有爽的地方，鼎培培训几乎就是休假去，吃得好睡的好还有保健按摩，哎腐败啊。我们zh今年招的人少，到了鼎培才知道什么叫做弱势群体啊，人家都是20多，30多人，我们就5个人，凑一桌麻将打都难。早上培训，晚上人家安排唱K，联谊，泡吧啊，我们就郁闷啦，订场都定不到。不行啊，好歹有140快的消费卷不用岂不可惜。结果我们就跑得去保健，说起来还真丢人，洗脚，推拿，面膜，拔火罐我们一个都没落下。我上次问推拿的师傅为什么保健这么难定，人家说有个zh公司的人天天来，在推拿的时候就有电话叫他去洗脚，洗脚的时候就有电话叫他去面膜，天天混在我们这里（PS:因为所有保健都是要预定的），这样当然定不到啦。接下来人家问我是哪个公司，我那个汗啊，直接说我是省公司的，丢人的事还是摊到省公司去。<br />       军训完后，人黑了一大圈本来就比较黑，现在远看基本上就是一堆碳，五官什么几乎不用考虑啦。上周回了趟广州，和大家坐一桌吃饭，师妹对我旁边的人说“我发现你白了好多哦”，我晕啊明显是说我黑嘛，有资本当绿叶做衬托的工作啦。<br />       终于下个星期要回部门归队啦，在商务吧这里真是闲的无聊，天天玩那个弱智到极点的游戏挣积分换饮料，我读20多年书不是来干这个的，还是给我点事干吧，怎么说也得对得起每个月的工资啊，我这人还是比较厚道的。<br />       <br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/294721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-09-11 14:04 <a href="http://www.blogjava.net/mphome/archive/2009/09/11/294721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>红楼梦</title><link>http://www.blogjava.net/mphome/archive/2009/09/02/293647.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 02 Sep 2009 10:56:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/09/02/293647.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/293647.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/09/02/293647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/293647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/293647.html</trackback:ping><description><![CDATA[看红楼梦<br /><br /><br />经学家看见《易》<br />道学家看见淫<br />才子看见缠绵<br />革命家看见排满<br />流言家看见宫闱秘事<img src ="http://www.blogjava.net/mphome/aggbug/293647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-09-02 18:56 <a href="http://www.blogjava.net/mphome/archive/2009/09/02/293647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毛瓜瓜征婚记</title><link>http://www.blogjava.net/mphome/archive/2009/08/09/290473.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 09 Aug 2009 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/08/09/290473.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/290473.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/08/09/290473.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/290473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/290473.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 串场台词：																																		男：杨芸												你看咱们这次移动培训班俊男靓女都这么多												咱们班男生里面还好几个单身的												瞄上了人家女生												又不好意思亲自去说														...&nbsp;&nbsp;<a href='http://www.blogjava.net/mphome/archive/2009/08/09/290473.html'>阅读全文</a><img src ="http://www.blogjava.net/mphome/aggbug/290473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-08-09 23:26 <a href="http://www.blogjava.net/mphome/archive/2009/08/09/290473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>强迫自己的三个程度：坚持，习惯，信仰</title><link>http://www.blogjava.net/mphome/archive/2009/07/28/288820.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 28 Jul 2009 15:39:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/07/28/288820.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/288820.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/07/28/288820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/288820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/288820.html</trackback:ping><description><![CDATA[
		<p>1.坚持，很费力。为什么要坚持？有点强迫的意思，因为要做些让自己感到不爽抑或至少是不那么情愿的事，所以需要坚持。<br />2.习惯，习惯更像条件反射，形成了习惯，不需要理由就会想要去执行，这个轻松点。<br />3.信仰，可以为之不惜一切的玩意。这个比较强悍了，比如舍身炸碉堡，舍身堵抢眼，舍身当炸弹，舍身开飞机撞大楼之类的。可以说这个是极端了，有信仰的人，我们有时候叫他们英雄，有时候叫他们恐怖分子。</p>
		<p>1.如果你在坚持做某件事，其实你很脆弱，你在强迫自己做一件事，因为你心里有一个度，此时这个度大于这件需要坚持的事，如果有某件事物干扰，超越了这个度呢？就出现所谓的坚持不下去了。<br />2.如果你习惯于做某件事，这时候潜意识里无理由就要做这件事，自动，条件反射，基本上不会不爽，可是，如果有意识觉得某样东西超越这个习惯，这个习惯就被打破了，所以还是度的问题。<br />3.如果你已经形成某种信仰，真正的坚信不移，你就可怕了，你的度是无穷大，给定一个任意大的理由，却总存在一个更大的理由，去执行自己的信仰，毫不动摇。</p>
		<p>所以，信仰&gt;习惯&gt;坚持。<br />……</p>
		<p>传说，看客们有70%会相信以上论调，5%会因此改变自己，只有若干人会建立自己的信仰。</p>
<img src ="http://www.blogjava.net/mphome/aggbug/288820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-07-28 23:39 <a href="http://www.blogjava.net/mphome/archive/2009/07/28/288820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>感觉不再那么young</title><link>http://www.blogjava.net/mphome/archive/2009/07/19/287375.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 19 Jul 2009 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/07/19/287375.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/287375.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/07/19/287375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/287375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/287375.html</trackback:ping><description><![CDATA[         这个星期一直在培训，怎么说呢紧张而忙碌吧。培训的内容有些可以说是不必要的，哎这也就是公司有米啊，新来的员工别的都不干专门培训两个月，这个完全是可以分线条来安排嘛，业务线就专门培训业务线的内容，不要搞得技术线的也跑得来听那些以后工作用不上的东西，呵我无所谓啊，正好抓这个时间再休息休息。讨厌的就是天天写总结，前几天写呢还是有些东西的，后来呢内容都写干了，没办法要写吧就记流水账喽，学什么就写什么，感想啊瞎弄北。<br />         培训的包括技术线和客户线，一起加起来都有35个人。就我们去年实习留下来的5个人算老头子啦，那些营销经理，客户经理都是20岁出头，真是年轻啊。现在的20左右的同学说话真是雷人，碰到我旁边的男的一上来就说“你看起来好老哦，多大啦”，那个牛啊，这说话直接把人家逼到墙角嘛，还没完呢同样也是跟去年一起实习的那个女的，上来直接就叫阿姨，有没有搞错人家还是靓女啦，说话也分个对象嘛。<br />         看到今年过来的10届的实习生，就想起了去年我们实习的时候，喳喳眼一年就过去啦。感觉这届来的整体上好像没有我们去年来的那么强，今年男女分配很和谐嘛，一半男一半女，还是领导有水平。世界还真是小，我老叫成都的同学来我这实习，结果那头猪没机会过来，他同一个导师的跑过来啦，还有去年实习回家火车上碰上的软件学院的师弟，一起聊了会天以后都没怎么来往，今年也跑过来实习啦，还一眼就认出我来了，呵我有给他留下这么深的印象嘛，可惜不是个女的。<br />        还有记得下一次欢迎新同事时，每个人先来三杯酒，虽然不知道以前有没有哈（那些人说有估计是骗我的），反正我是喝了，这个传统我一定记得发扬光大。<br />         <br />        <img src ="http://www.blogjava.net/mphome/aggbug/287375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-07-19 23:08 <a href="http://www.blogjava.net/mphome/archive/2009/07/19/287375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】忽悠新解</title><link>http://www.blogjava.net/mphome/archive/2009/07/11/286407.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sat, 11 Jul 2009 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/07/11/286407.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/286407.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/07/11/286407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/286407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/286407.html</trackback:ping><description><![CDATA[国家忽悠国家，叫外交；　　<br />政府忽悠百姓，叫政策；　　<br />百姓忽悠政府，叫犯罪；　　<br />领导忽悠百姓，叫号召；　　<br />百姓忽悠领导，叫捣乱；　　<br />领导忽悠领导，叫交易；　　<br />百姓忽悠百姓，叫生意；　　<br />男人忽悠女人，叫调戏；　　<br />女人忽悠男人，叫勾引；<img src ="http://www.blogjava.net/mphome/aggbug/286407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-07-11 23:25 <a href="http://www.blogjava.net/mphome/archive/2009/07/11/286407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>上班一星期</title><link>http://www.blogjava.net/mphome/archive/2009/07/11/286389.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sat, 11 Jul 2009 11:27:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/07/11/286389.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/286389.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/07/11/286389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/286389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/286389.html</trackback:ping><description><![CDATA[           来到zh第一个星期还是挺爽的的，做为中国最先开放的海边城市，第一感觉除了环境漂亮，有视野好的海滩，公交车人不多等之外，就是按摩洗脚的地方非常多，嘿嘿！这方面珠海真是发达，专门有莲花路一条街，听说和东莞某些地方有得一比，只是听说呵。就像我第一天到zh，没钥匙进小区，等同事回来开门，哪知道人家跟着营业厅11个女的一起去按摩（当然是正规的啦），弄得我在外面等到12点，一来就给zh的蚊子喂个饱。<br />           不得不骂骂学院那些吃饭不干正事的老师，发个派遣证呗，还纸张打印错误，弄得我晚报道一天，来了后才知道不只是少一天工资啊。早一天来前半年的超市卡，洗衣卡都有份，哎悔死！总体来说住宿条件还是不错，现在一个人住原来寝室这么大的一个单间，有空调有热水有木床，就是少了衣柜和洗衣机。空调那个质量好啊，搞得晚上冷得都可以洗热水澡，不错吧。当然也有麻烦事，第一天大早起来就开始修马桶，问人家都说这个是独立生活的第一课，看来我赶上得还真是及时啊。<br />           一来什么东西都不全，就得花钱买这个买那个，现在还真是穷，公司也不预支点工资给我，浪费那个钱给我们买这个保险那个保险，看得那个保险的赔偿费都是10万，20万，弄得我都想搞个工伤直接去领钱得啦。<br />             到zh不得不去去它的海滨浴场，特别是在天气不好的时候去景色更好，海天一线。虽然水不是那么清澈，但对于我这种不常看海的人还是非常满足的，我这人要求低嘛。海滩当然不能不提到游泳，我就只是去看看，虽然原来小时候还学过游泳，现在都不怎么爱游啦，一个是技巧差不多都忘了，二呢我有近视嘛，游泳又不能带眼镜，那人家能看我不能看别人，多吃亏啊，还是带上眼镜在旁边看别人比较爽，嘿。<br />            第一个星期的工作基本是实习，斌哥直接把我弄到体验馆去了。真的是非常忙碌，第一天同事带我走了几遍体验馆，发些资料给我看，第二天就得要我带来宾做讲解，俗称接客。要讲解完体验馆基本要花一个半钟头的时间，这一个半时间内基本上是你一个人再说，对于才学过一天的人，难度还真是不小，但谁叫我是undergraduate呢，还好基本beyong my ability。本人口才还OK，学习能力也不错，连续四天接客四次，而且接客对象的层次也逐步提升，由开始的学生，变成尊敬的vip客户，某工业集团部长，到最后的地方文化部局长，效果还不错，说不定我还真的是有导游的潜力。<br />           下星期就开始公司培训，接下来应该是会很忙，每天写总结，早上再做汇报，哎这套名堂公司最喜欢搞了，没办法只能自己调整习惯啦。先清空大脑，准备接受洗脑。<img src ="http://www.blogjava.net/mphome/aggbug/286389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-07-11 19:27 <a href="http://www.blogjava.net/mphome/archive/2009/07/11/286389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开路走人啦</title><link>http://www.blogjava.net/mphome/archive/2009/06/30/284692.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 29 Jun 2009 16:58:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/06/30/284692.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/284692.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/06/30/284692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/284692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/284692.html</trackback:ping><description><![CDATA[
		<p>        毕业前几天精神基本处于恍惚状态，大部分由于酒精过度的原因，发现喝多了竟然大腿都会生痛，嘿。毕业聚餐上实在太高兴了，个人发言时基本上讲什么都是不太记得啦，毫无条理性而且站着都是东到西歪的，丢脸啊！<br />       最近听到最多的话就是“一路走好”，不管是老师同学都这么讲，嘿怎么听着像送我上路的感觉，改改口气啦"一路好走"一点歧义都没有的。<br />       写不了头好昏啊，总之祝720各位今天许的愿大家都实现。</p>
		<p>   A DO：<br />   1.好好工作<br />   2.以结婚为目的找一个女朋友，解决个人问题。<br />   3.多运动，成为一个“肌肉男”。<br />   涛哥：<br />   1.租一个大大的房子，大家来广州好好落脚。<br />   2.好好挣钱，为成家做准备。<br />   3.还债。<br />   涛嫂：<br />   1.挣钱。<br />   2.挣钱。<br />   3.还是挣钱。<br />   韩老大：<br />   1.吃遍公司附近的餐馆。<br />   2.还Banner的￥735.00元。<br />   3.半年内保持单身。<br />   老毛：<br />   1.找一女朋友解决单身问题，首当其冲。<br />   2.继续彩票事业，多买多赚，以500W和LAMBORGHINI为目标。<br />   3.任劳任怨，踏实工作。</p>
<img src ="http://www.blogjava.net/mphome/aggbug/284692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-06-30 00:58 <a href="http://www.blogjava.net/mphome/archive/2009/06/30/284692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>哎，真郁闷</title><link>http://www.blogjava.net/mphome/archive/2009/06/24/283956.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 24 Jun 2009 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/06/24/283956.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/283956.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/06/24/283956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/283956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/283956.html</trackback:ping><description><![CDATA[         哎，真是郁闷，接连两天都不爽。先是听说cm要降薪从我们7月份入职的开始，说是考虑到建网期间开始过大，降低公司人力成本花费，风闻变相降薪，延长实习期，很有可能等拿一年的实习工资。我的天啊，一年的实习工资生活咋办啊，招行信用卡隔三差五的打电话叫我还款，还想工作以后尽快还钱呢，看来招行你还是等着吧。cm也太不够意思啦，和之前澳门offer工资相比都差不多要到1：10啦。。。。，哎，过去的事就不说了，希望赶紧转正吧。<br />         昨天打电话给先上班的同事了解情况，结果更让我疯狂，居然把我掉部门啦，现在换到的部门的业务我真是一点都不熟悉的，打个比方就是原来我是搞软件的，现在弄得我去搞硬件，原因说是现在3G网建设紧张，某部门需求人员协调工作，老兄啊你们要调人也调个熟悉业务的过去啊，调我过去还是不是要花老长的时间培训。<br />         静下心来分析一下，换部门对我应该说是有弊有利，好处在于：详细了解通信知识，实践操作基站，对以后的发展应该是有好处的，从经济角度来看的话应该一年也会多一两万块钱。敝处：什么都不懂要从头开始学，上手要慢，工作可能会更辛苦。考，就不是学新东西嘛，老子也是从小学一直念过来的，怕个屁啊，学就学。<br />         23号照了毕业照，天公不作美，照着照着就下大雨，搞得都没怎么和导师照两张（人家看着下雨就开着沃尔沃走人啦），广东这边照毕业照都是拉家里人一起过来的，这传统还正不错看上去挺温馨的。 毕业算起来花费还真是不少，去了一趟凤凰1200多，给导师买个zippo600元，吃饭估计又得500多吧。丢说的好钱嘛不是考省出来的，是考挣出来的，但问题是现在我也挣不出来啊，嘿嘿。<br />           7月1号走人，得赶紧把该办的办完，销卡，领证，请人吃饭等，最好一个都不能少！<br />     <img src ="http://www.blogjava.net/mphome/aggbug/283956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-06-24 16:10 <a href="http://www.blogjava.net/mphome/archive/2009/06/24/283956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>凤凰，张家界旅游</title><link>http://www.blogjava.net/mphome/archive/2009/06/21/283463.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 21 Jun 2009 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/06/21/283463.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/283463.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/06/21/283463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/283463.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/283463.html</trackback:ping><description><![CDATA[          一帮人长途跋涉从广州跑到湖南去旅游，之前没有一位仁兄去过的，都没报个团但旅游下来总体感觉还是不错。最先坐火车到湖南吉首，再转大巴到凤凰古城，一下大巴感觉还真是不错，早上的凤凰从大桥上看过去确实很漂亮。当地的住宿也非常的便宜，考虑到大家都没什么钱没有住在江边的旅社，选了个稍靠内的小院住下，20元/位。到了凤凰你会发现，他们当地所有的服务项都是连在一起的，卖早餐的，住宿的，旅游的，吃饭的互相介绍。我们就是在小店铺内吃了份牛肉粉，就被拉得去看什么她家表姐的旅馆，那个热情劲搞得你都不好拒绝。住下了旅馆的老板又找来了导游安排你们行程，要是你跟着他走的话就倒霉了。我们没经验嘛，就被人家忽悠去看苗寨。去苗寨完全属于去扶贫啊，现实景点和宣传册上图画感觉完全是两个地方，这PS功力佩服佩服。苗寨简单概括呢就是非常穷的一个村庄而且是被放在比较高的山上，去苗寨了锻炼锻炼身体还是不错的其他的呢例如美女山歌对唱就别想了（哦有的，几个老太婆唧唧歪歪唱的不知道是什么）。<br />         苗寨回来后，人也都走不动，旅馆的老板还想介绍其他的苗寨叫我们去玩，当我们是白痴啊肯定不去啦。接下来就分开行动在古城里乱逛，古城说真的true heart是很漂亮。中间一条长长的漓江穿过，岸的两旁都是一些古式的阁楼，要是情侣来意境就更好。晚上的古城就更加热闹，小摊小贩啊都跑出来，10点过后古楼上的酒吧就响个不停，伴着微风喝着啤酒再看看旁边路过的美女，一个字爽啊。反正觉得来景点游玩的美女就特别多，看一个是一个，还很多是几个女人一起游玩的。<br />        在古城待了两天就觉得有些腻了，也不是我一个人有这种看法，大家都这么觉得，古城有一些商业开发过度啦。岸边两旁太多商品店，搞得有点像购物街，而且买的东西都非常的同质化，基本上卖的就是银器，刀，衬衫，血耙鸭啦。小商贩秉着宰一个是一个原则，乱开价，你要是想买的话可以40%就可以拿下。我就买了几只血耙鸭回家，但后来去张家界车上太热鸭好像都坏了，嘿嘿自己都没吃全部送人啦，喔吼吼。<br />        去张家界本来不是在我们的旅游计划之内的，打算是在凤凰多玩几天再在回家的。结算一下总体花费大部分是花在路程上了，不去一趟张家界不是很划不来，粗俗一点形容就是“人都自宫了，还能不练葵花宝典”。张家界之旅于是就在匆促之间决定下来。<br />        有趣的是人家去张家界玩得开心是因为景点漂亮，心情愉悦等等之类，嘿我们不同我们去张家界玩也挺开心，但这种开心来自于和导游起哄，抬杠。学生嘛都没什么钱，报了张家界旅游团，原来是440一位，我们讲价搞成了320一位，心里还挺美。到了张家界玩了第一天，就发现不对劲了，到了一个景点还没玩两分钟，导游就说时间不够了赶紧拍照，要不下山没饭吃了。开始我们还真以为是哦可能景点很多，时间确实比较紧，赶紧拍玩两张照就走人。结果到了山下面，总共游玩时间3个钟头都不到，接下来导游就开始拉着我们去购物啦，还真是种类繁多啊，茶叶，洗脚，珠宝，凉果，牛肉，刀具等等。。。。一直搞到下午6点半，我考搞得老子火大发了。第二天游玩就不那么好说了，导游他说他的我们搞我们自己的，玩得慢点你还能剁我两刀。做这个导游还真是要脸皮厚，当然购物点他还是要拖我们去，我们都不下车他就一个个来说，这本事哎我是服了。我们也不爽本来还欠旅行团1000多，正好导游也不知道，我们也装傻，直到最后也没给。<br />         张家界嘛感觉是没有凤凰好玩，当然可能也是我们报的这个团的问题，旅游团变成了购物团，整个一个变形金刚。有些完全是在扯淡，10步一个景点，你说那些山有什么看的，他还硬给每个山取了个名字，什么八戒娶亲啊，观音送子啊等，我是一个都没看出来，问导游人家说这个嘛“三分靠外形，七分靠想象”。景点照相也很有意思，基本上属于流水线操作，大家一个一个上，“1，2，3好，下一个”，回来整理相片都搞得像照相馆里出来的，背景一模一样的。<br />          玩完张家界我就直接回家，这里要强烈bs一下某几个同学自己钱又不带，都向我借钱弄得我回家的钱都不够。转到长沙本来计划住一晚，在长沙逛逛再回南昌的，现在只能买凌晨4点的火车回家。晚上8点到的长沙，要坐到早上4点上火车，恩这个辛苦我记得，那几个人都躲不掉。在长沙逛到12点就郁闷啦，还有4个多小时干嘛呢，天气又热跑到24小时KFC躲凉去，买了杯可乐，找靠窗一坐。这世界上还真什么人都有，旁边的一个阿哥，咚咚的跑过来要跟我聊天，聊就聊北。我想我跟你不熟，聊天的内容基本上就是我说说广东的发展啊，你说说湖南好玩的地方啊等等。那位阿哥不接我话茬，直接就聊他的感情问题，而且聊的内容非常细致，我塞这人这么open的，估计是憋屈太久啦，这种事找熟人说不太好。回南昌后，他还给我打过电话汇报事情进展，哎这种真性情男人难得啊，祝好运吧！<br />          好不容易回趟家，把本科同学约出来聚聚，4年啊大家都变化不少啊，我还在学校里混着，惭愧惭愧。特别佩服庆铭老兄敢跳出来自己单干，这份激情冲劲自愧不如，感觉可能以后最有米的就要算这位老兄啦。"给自己一次机会",这句话反正我现在是不敢说。好累好累，跟写论文样的，就是废话多。这天气还真是热，在宿舍都像洗桑拿，还是跑地铁里去躲凉去。学校赶紧地发派遣证，我要去zh，我要空调！！<br />         <br /> <br />         <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />         <br />         <br />         <img src ="http://www.blogjava.net/mphome/aggbug/283463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-06-21 17:05 <a href="http://www.blogjava.net/mphome/archive/2009/06/21/283463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>毕业安排</title><link>http://www.blogjava.net/mphome/archive/2009/06/09/281013.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 09 Jun 2009 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/06/09/281013.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/281013.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/06/09/281013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/281013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/281013.html</trackback:ping><description><![CDATA[         终于到了结束学生的时刻，研究生毕业反正是感觉不如本科生毕业有感觉，原来毕业多happy啊，一伙伙人都天天吃吃喝喝，感觉都没有追求，现在想得更多以后该怎么办，自己选择的道路或者说是公司有没有对。年龄不同，处理事件的态度都有很大的区别，也许是荷尔蒙分泌得没有以前多，激情不够嘿嘿！<br />         明天所里的同学集体去湖南凤凰旅行，大家兴致还是挺浓的，唯一的缺憾就是女生太少，哎这种情况一次次在工科学生旁边发生，惨啊。听说苗族的mm还是很水灵的，就近解渴和她们凑合凑合。<br />        看看玩完后时间够不够，还是回家一趟吧。以后上班时间就不太好安排了，再说还要向大姨夫问个事，白白浪费这么好个机会，怪不好意思，回去解释解释，再说有些事也不是我一个人弄说了算的。<br />        23号回来后毕业照，，接下来就是请老师，所里同学大家一起吃饭，还有个校长捻絮仪式，学校还不错这点学人家外国的办得挺像模像样的，就辛苦啦人家校长大人，一整天重复一套动作，握手，捻絮，发证书，微笑，摆pose，最后camera，估计今年得5000遍，换个体力不好的不搞惨才怪。还想看看有没有机会请别人吃个饭，其实也不想怎么的，礼貌而已嘛。<br />        毕业arrange差不多就这样啦，很简单也有些无聊，要问我读研期间最大的遗憾是什么你就可以去换个问法“本科期间最大的遗憾是什么"因为答案都是一样的，有时我也感到无语，按常理来说真的不至于啊。下次弄个面试版的调查，例如研究生期间做过最成功的一件事什么，最后悔的是什么，当然不会像面试时那么冠冕弹簧，尽量做到不虚伪，恩这个一定得做。<br />        另外苏打绿的那个小情歌还正难唱，严重怀疑那个叫青什么峰的是不是个男人。<br /><img src ="http://www.blogjava.net/mphome/aggbug/281013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-06-09 21:48 <a href="http://www.blogjava.net/mphome/archive/2009/06/09/281013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>人物志</title><link>http://www.blogjava.net/mphome/archive/2009/06/08/280585.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 08 Jun 2009 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2009/06/08/280585.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/280585.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2009/06/08/280585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/280585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/280585.html</trackback:ping><description><![CDATA[
		<meta content="Word.Document" name="ProgId" />
		<meta content="Microsoft Word 11" name="Generator" />
		<meta content="Microsoft Word 11" name="Originator" />
		<link href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" rel="File-List" />
		<style>
				<!--
 /* Font Definitions */
 @font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:SimSun;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:3 135135232 16 0 262145 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	mso-pagination:none;
	font-size:10.5pt;
	mso-bidi-font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:宋体;
	mso-font-kerning:1.0pt;}
 /* Page Definitions */
 @page
	{mso-page-border-surround-header:no;
	mso-page-border-surround-footer:no;}
@page Section1
	{size:595.3pt 841.9pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;
	mso-header-margin:42.55pt;
	mso-footer-margin:49.6pt;
	mso-paper-source:0;
	layout-grid:15.6pt;}
div.Section1
	{page:Section1;}
-->
		</style>
		<p class="MsoNormal" style="TEXT-INDENT: 18pt; TEXT-ALIGN: left" align="left">
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">澳门仔自归大陆后，身形愈发消瘦，思循古法于入冬时加以补养。【注意身形愈发消瘦不是去了澳门才造成的，没看到我天天坚持跑步啊，锻炼结果<span lang="EN-US">Keep Fit</span>，知不知啊】小三川之味，已去数次，渐厌之，众人遂奔大巴适。为犒此仔拔毛之举，夜敲此篇<span lang="EN-US">“</span>老毛<span lang="EN-US">”</span>，为<span lang="EN-US">RICA</span>人物列传开刀之作【很荣幸啊，看来钱没有白花啊，虽然钱也是从万恶的</span>
				<span lang="EN-US">Casino</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">拿来的，但谁知下次会不会再还回去呢】。<span lang="EN-US"><br /><span>    </span></span>吾与此猥物同床异枕二载有余，甚悉之。【这话说的，我是和你对脚，不是同床。反正我是没有<span lang="EN-US">gay</span>倾向，至于你有没有我就不知啦】老毛悄然行至身后，吾不待转首即感猥琐之气铺天盖地，料定必是此物，老毛讶之。【对我如此之关切，更加证明你的取向有问题，以后注意和我保持距离】<span lang="EN-US"><br /><span>    </span></span>此君好戴一宠物圈于项，名曰健身，实未见效，【带钛白项圈好处有二：<span lang="EN-US">1.</span>防止腰肌劳损，知不知腰对男人的重要性啊。<span lang="EN-US">2.</span>美观，引领时尚之风，君不见刘德华也开始学样了嘛。】反有阻大脑供养之嫌，何以为证？近日老毛言语迥异于常。涛哥、阿杜皆不堪其扰，存灭其肉体而后快之意。老毛以寡敌众，慷慨应对，屡除其自生大规模杀伤化学武器保险，置于寝室上风处，随即颓势立转。【我有这么残忍嘛，要怪就怪安踏不透气，无心之作。】余窃以为此乃老毛渐归本性之兆。<span lang="EN-US"><br /><span>    </span></span>老毛长于言辩，眼光敏锐，领风气之先（数度拉吾下水），思维极为跳跃，擅伤女仔之心（略去数万言。。。），而讨大妈欢心。【反了反了，从来都是我被别人挫伤。】猛男<span lang="EN-US">CALL</span>之<span lang="EN-US">“</span>猥琐毛<span lang="EN-US">”</span>，颇为传神。【保留申辩的权利】此仔将混迹于珠海某著名<span lang="EN-US">CM</span>公司，余甚忧之。澳门场暗备此仔诸多劣迹，若这厮任职<span lang="EN-US">CM</span>毛总，无间道恐将由其主演【虽然我玩了<span lang="EN-US">5</span>次，大部分是有挣，谁知别人是不是小饵钓大鱼】。。。<span lang="EN-US"><br /><br />PS:</span>觅兔肉于巴适，半饷而不可得，痛憾之<span lang="EN-US">~<?xml:namespace prefix = o /?><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal">
				<span style="FONT-FAMILY: 宋体">【感谢韩老大为我研究生三年做了个简要的总结，虽然大部分不是好话，弄得我都不好到处贴。总是为我整理了下思路，开始写自序了！】</span>
		</p>
<img src ="http://www.blogjava.net/mphome/aggbug/280585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2009-06-08 11:48 <a href="http://www.blogjava.net/mphome/archive/2009/06/08/280585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天真激动</title><link>http://www.blogjava.net/mphome/archive/2008/05/27/203335.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 27 May 2008 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/05/27/203335.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/mphome/archive/2008/05/27/203335.html'>阅读全文</a><img src ="http://www.blogjava.net/mphome/aggbug/203335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-05-27 21:50 <a href="http://www.blogjava.net/mphome/archive/2008/05/27/203335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>龙应台：你应该学会不相信---你来看此花时(好文)</title><link>http://www.blogjava.net/mphome/archive/2008/04/27/196492.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 27 Apr 2008 09:37:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/04/27/196492.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/196492.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/04/27/196492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/196492.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/196492.html</trackback:ping><description><![CDATA[
		<p> </p>
		<p>二十岁之前相信的很多东西，后来一件一件变成不相信。</p>
		<p>曾经相信过爱国，后来知道“国”的定义有问题，通常那循循善诱要你爱国的人所定义的“国”，不一定可爱，不一定值得爱，而且更可能值得推翻。</p>
		<p>曾经相信过历史，后来知道，原来历史的一半是编造。前朝史永远是后朝人在写，后朝人永远在否定前朝，他的后朝又来否定他，但是负负不一定得正，只是累积渐进的扭曲变形移位，使真相永远掩盖，无法复原。说“不容青史尽成灰”，表达的正是，不错，青史往往是要成灰的。指鹿为马，也往往是可以得逞和胜利的。</p>
		<p>曾经相信过文明的力量，后来知道，原来人的愚昧和野蛮不因文明的进展而消失，只是愚昧野蛮有很多不同的面貌：纯朴的农民工人、深沉的知识分子、自信的政治领袖、替天行道的王师，都可能有不同形式的巨大愚昧和巨大野蛮，而且野蛮和文明之间，竟然只有极其细微、随时可以被抹掉的一线之隔。</p>
		<p>曾经相信过正义，后来知道，原来同时完全可以存在两种正义，而且彼此抵触，冰火不容。选择其中之一，正义同时就意味着不正义。而且，你绝对看不出，某些人在某一个特定的时机热烈主张某一个特定的正义，其中隐藏着深不可测的不正义。</p>
		<p>曾经相信过理想主义者，后来知道，理想主义者往往经不起权力的测试：一掌有权力，他或者变成当初自己誓死反对的“邪恶”，或者，他在现实的场域里不堪一击，一下就被弄权者拉下马来，完全没有机会去实现他的理想。理想主义者要有品格，才能不被权力腐化；理想主义者要有能力，才能将理想转化为实践。可是理想主义者兼具品格及能力者，几希。</p>
		<p>曾经相信过爱情，后来知道，原来爱情必须转化为亲情才可能持久，但是转化为亲情的爱情，犹如化入杯水中的冰块---它还是冰块吗？</p>
		<p>曾经相信过海枯石烂作为永恒不灭的表征，后来知道，原来海其实很容易枯，石，原来很容易烂。雨水，很可能不再来，沧海，不会再成桑田。原来，自己脚下所踩的地球，很容易被毁灭。海枯石烂的永恒，原来不存在。</p>
		<p>二十岁之前相信的很多东西，有些其实到今天也还相信。</p>
		<p>
				<strong>譬如国也许不可爱，但是土地和人可以爱。譬如史也许不能信，但是对于真相的追求可以无止尽。譬如文明也许脆弱不堪，但是除文明外我们其实别无依靠。譬如正义也许极为可疑，但是在乎正义比不在乎要安全。譬如理想主义者也许成就不了大事大业，但是没有他们社会一定不一样。譬如爱情总是幻灭的多，但是萤火虫在夜里发光从来就不是为了保持光。譬如海枯石烂的永恒也许不存在，但是如果一粒沙里有一个无穷的宇宙，一刹那里想必也有一个不变不移的时间。</strong>
		</p>
		<p>那么，有没有什么，是我二十岁前不相信的，现在却信了呢？</p>
		<p>有的，不过都是些最平凡的老生常谈。曾经不相信“性格决定命运”，现在相信了。曾经不相信“色即是空”，现在相信了。曾经不相信“船到桥头自然直”，现在有点信了。曾经不相信无法实证的事情，现在也还没准备相信，但是，有些无关实证的感觉，我明白了，譬如李叔同圆寂前最后的手书：“君子之交，其淡如水，执象而求，咫尺千里。问余何适，廓尔忘言，华枝春满，天心月圆。”</p>
		<p>相信与不相信之间，彷佛还有令人沉吟的深度。</p>
<img src ="http://www.blogjava.net/mphome/aggbug/196492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-04-27 17:37 <a href="http://www.blogjava.net/mphome/archive/2008/04/27/196492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;java pitfalls 中文版&gt;读书笔记</title><link>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Mar 2008 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/183563.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/03/03/183563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/183563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/183563.html</trackback:ping><description><![CDATA[
		<p>1.父类的静态方法和最终方法不能被覆盖。<br />2.用静态方法覆盖实例方法是通不过编译的<br />3.String 的intern函数是将该String放入JVM的常量池中，避免出现String类型的多处应用。<br />  例如 b=a.intern();<br />       a==b 等于TRUE<br />4.访问被覆盖的方法，只能用super<br />5.只能通过传递数组来达到，基本数据类型数据引用的效果。<br />6.注意clone的深度，当要克隆一个对象时，若该对象的内部有对象，则需要将内部对象也clone，也就是主要写clone对象。<br />  <br />  <br />7.若以对象作为hashmap的索引值，需要重写该对象的equal，和hashcode函数。        </p>
		<p>8.异常，如果对try{}catch(exception o){}的所有catch情况都考虑到了的话，调用者就不需要添加catch或throw exception啦</p>
		<p>9.文件流： 分为字节流（ 带Input）和字符流（带reader）<br />              例如FileInputStream    例如FileReader<br />           字符流不依赖於编码，全部采用unicode编码<br />           如果需要支持国际化的话就需要采用直接流啦 。<br />           示例：  FileInputStream is=new FileInputStream(f);<br />                   InputStreamReader r=new InputSteamReader(is,"utf-8");</p>
		<p>  另外可以使用System.getProperty("file.endcoding")来获得系统的默认编码<br />10，数组和矢量Vector比较  遍历Vector比较慢，因为Vector是线程安全的，获取值时采用了同步化，解决方法在遍历是toArray（）<br />    例外ArrayList具有vector的动态增加长度的特点，但ArrayList是非同步的矢量。<br />11.在循环体内链接字符串，使用StringBuffer效率更高；其他情况下使用+。</p>
<img src ="http://www.blogjava.net/mphome/aggbug/183563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-03-03 21:32 <a href="http://www.blogjava.net/mphome/archive/2008/03/03/183563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件最大的追求是什么？ (转载)</title><link>http://www.blogjava.net/mphome/archive/2008/02/25/181984.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 25 Feb 2008 06:11:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/02/25/181984.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/181984.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/02/25/181984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/181984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/181984.html</trackback:ping><description><![CDATA[
		<span class="tpc_content">前段时间读了《软件的最大追求是什么》，击节叫好，深以为然，虽然该文章很多地方显得有点极端。 <br /><br />如今的软件系统越来越复杂，如果软件的结构不好会影响软件的可维护性，重构代码是一件极其痛苦的事情。 <br /><br />关于软件的复杂性问题，我做了一些思考： <br /><br />1） Cyclomatic Complexity （圈复杂性 = number of decision points +1 　　 其中number of decision points是指一个if else之类的条件判断语句 （引自《软件的最大追求是什么》）<br /><br />if else 语句可以被行为模式/策略模式代替，不妨看下列的例子： <br /><br />假设我们要根据条件判断来完成不同的行为，用if else 是这样写的：<br /><br />main() { <br /><br />if（case A）{ <br /><br />//do with strategy A <br /><br />}else(case B){<br /><br />//do with strategy B <br /><br />}else(case C){ <br /><br />//do with strategy C <br /><br />}<br /><br />} <br /><br /><br /><br />用策略模式则如下： <br /><br />class runner{ <br /><br />do(); <br /><br />}<br /><br /><br /><br />class A extends runner{ <br /><br />do(){ <br /><br />//do with strategy A <br /><br />} <br /><br />}<br /><br /><br /><br />class B extends runner{ <br /><br />do(){ <br /><br />//do with strategy B <br /><br />} <br /><br />}<br /><br /><br /><br />class C extends runner { <br /><br />do(){ <br /><br />//do with strategy C <br /><br />} <br /><br />}<br /><br /><br /><br />main(){ <br /><br />runner.do(); <br /><br />} <br /><br /><br /><br />用了策略模式后main()中的语句的确简单多了，再也看不到该死的if else了^_^酷～～～ <br /><br /><br /><br />可实际上是这样简单吗？？？仔细研究一下上面的代码就能看出问题出来，首先这两段代码中的A、B、C的实际意义是不一样的：第一段代码中ABC代表的是某一个逻辑条件的值而第二段中的ABC则是具体的类；第二段得到如此简化的前提是它得到的逻辑条件就是一个类；如果得到的仍然只是一个逻辑条件，那么为了达到代码简化的效果，必须由另一个类（或方法）完成这种逻辑条件到具体类的转换，会出现类似下列的代码<br /><br />class RunnerFactory{ <br /><br />runner getInstante(case){ <br /><br />if (case A) return new A(); <br /><br />else if (case B) return new B(); <br /><br />else if (case C) return new C(); } }<br /><br /><br /><br />从测试的角度来说，两者的测试分支都是3，复杂度相同，而第二种方法在很多的时候貌似还要测试借口的有效性。用策略模式还有一个缺点就是会使系统中的类的数量大大的增加，如上的例子，采用if else类的数量为1，而采用策略模式的类个数为5个或6个（主要取决于逻辑映射是否用单独的类）。 <br /><br />如果逻辑判断的条件有三个，每个逻辑条件有三种可能的话，用策略模式系统至少会增加10个新类；如果条件更多的话类的个数也会更多 这么看来GOF的策略模式还要它干嘛？？ <br /><br />当然不是，策略模式在很多情况下是一种非常好的解决方案。 <br /><br />这还要从if else 语句造成程序复杂以至难以维护的真正原因说起。就我个人的感觉真正造成if else语句难以维护的原因是每一个逻辑分支中的处理语句过长。比如我现在工作中维护的代码，常常一个条件下面的业务处理语句有两三千行，每次我光确定某个逻辑分支的结束位置就要找半天，头晕－_－!。如果是多层条件的话情况就更糟了。一个分支就一千多行，几个分支上万行自然很难维护。 if else 语句本质上是程序的流程控制语句，而分支中N长的代码通常是业务处理语句。<br /><br />行为模式/策略模式就是把流程判断和业务处理进行了一次解耦，将业务逻辑封装成一个个单独的类。换句话说，行为模式/策略模式并不是不需要if else 语句（事实上该判断的还是要判断），只不过的换了地方或者是别的代码帮你做了。另一方面，进行逻辑判断的语句被集中起来而不是分散在程序的各个角落，有利于逻辑本身的维护。策略模式/行为模式还有一个明显的好处就是如果新增加了一种状态，我们只需要新增加一个策略类（同上的ABC）就可以了，避免了在程序中改动那些大段大段让人厌烦的if else 语句。 <br /><br />所以对于你的程序来说到底是使用<a title="??" href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=模式" target="_blank"><b>设计模式</b></a>还是简单的使用if else 关键在于你的程序是否复杂，有没有必要将控制逻辑和业务逻辑进行解耦。当然如果你可以用别的方式实现解耦也是非常好的。<br /><br /><br /><br />2) Response for Class(RFC) 当一个类和很多其他类存在依赖时，它就变得复杂甚至难以修改和维护，这样，RFC值越大，表示你的系统味道越坏。（引自《软件的最大追求是什么》） <br /><br /><br /><br />复杂性是由类与类之间的依赖关系（dependency）造成的。<br /><br />具体如下所示：<br /><br />interface Runner； <br /><br />class A implement runner{ do(){}; } <br /><br /><br /><br />一个大型的系统中很多地方用到了runner接口，于是在很多地方出现了如下的相同代码： <br /><br />{ <br /><br />Runner r = new A(); <br /><br />r.do(); <br /><br />}<br /><br /><br /><br />如果因为某种原因runner接口的实现类改为B，则在所有用到runner接口的地方代码都要统统改为： <br /><br />{<br /><br />//Runner r = new A(); <br /><br />Runner r = new B(); r.do(); <br /><br />} <br /><br /><br /><br />这些遍布系统各个角落的改动是繁琐且容易出错的。<br /><br />于是出现了各种框架和模式，其中最著名的当然是<a title="??" href="http://www.jdon.com/jivejdon/key/ioc" target="_blank"><b>IOC</b></a>(Inversion of Control)反转控制或者称之为依赖型注射(Dependency Injection) 那些讨厌的代码变成了如下： <br /><br />{ <br /><br />ApplicationContext ctx = new FileSystemXmlApplicationContext("spring.xml"); <br /><br />Runner r = (Runner)ctx.getBean("Runner"); <br /><br />r.do(); <br /><br />} <br /><br /><br /><br />这样我们就不需要对各个角落的代码进行维护了，容器会自动的为我们选择合适的类。<br /><br />我到觉得维护的工作还是我们的，为了让容器注射入合适的类，我们必须要维护一个叫<a title="??" href="http://www.jdon.com/dl/best/spring.htm" target="_blank"><b>Spring</b></a>.xml的配置文件，或者如果你不喜欢配置文件这个东东的话（比如偶）就得自己写一个注册类，将依赖关系一一注册进去。你还要为使用该接口的类定义一个以该接口为参数的构造函数或者该接口的setter方法，好让容器可以将实现类顺利的注射进来。 <br /><br />该做的还是要做，只不过换了一个地方做而已。但就是换了个地方，实现了对依赖关系的集中维护（又是集中），大大的改善了系统的结构，明确了不同职责单位之间的分工。呵呵，有时自己也极端的觉得设计的工作说到底就是解决代码结构的问题^_^ <br /><br /><br /><br /><a title="??" href="http://www.jdon.com/jivejdon/key/ioc" target="_blank"><b>IOC</b></a>一直是和轻量级框架联系在一起的。所谓的重量级框架<a title="??" href="http://www.jdon.com/jivejdon/key/ejb" target="_blank"><b>EJB</b></a>也有实现相同功能的解决方案：Service Locator Service Locator就是一个定位器，它维护了一个数据结构（比如一个表），通过这个定位器你可以准确的定位到你的接口想要的实现类，Service Locator同样使你免去了改变接口实现类后的维护恶梦： <br /><br />{ <br /><br />Runner r = (Runner)ServiceLocator.lookup("Runner"); <br /><br />r.do(); <br /><br />}<br /><br /><br /><br />无论是<a title="??" href="http://www.jdon.com/jivejdon/key/ioc" target="_blank"><b>IOC</b></a>还是Service Locator都帮助你维护了类之间的依赖关系。那么是否我们在编程中一定要用呢，这又是个权衡的问题，IOC带来了很多的好处，不过我个人认为它的代码是让人费解的（你根本不知道它做了什么），并且为了用它，一方面你要借助于容器，另一方面你要编写配置文件，要为依赖型注射提供合适的途径。 <br /><br />如果你的系统类之间的依赖型错综复杂，需求的变化常常导致实现类的变化，同时你又希望采用测试驱动的快速开发模式，IOC毫无疑问是一个完美的解决方案；如果你的系统不存在上述的问题，为什么不简简单单的在程序中写死呢，何苦去维护一堆配置文件（我所在的开发部门貌似都比较痛恨配置文件这个东东）。Service Locator也有很多缺点，被骂的最多的就是没法快速测试。 <br /><br />反转控制，即转换控制权。依赖关系控制权的转换是对代码结构的一次重构，重构的目标还是解耦，让不同的职责代码集中放到不同的地方，于是程序员可以更加专注的解决特定的问题，比如业务逻辑。 <br /><br />程序设计的发展就是对代码结构的不断调整，不断解耦，让特定的代码解决特定的问题而不是什么都混在一起。从面向过程到面向对象难道不是这样吗，封装的本质也是解耦。 <br /><br /><br /><br />在实际问题的解决当中，最重要的信条就是合适，要记住任何结构的改进都会付出代价，你的改进是否值得你为此付出的代价。比如当你做一个嵌入式程序的时候你首要考虑的自然是效率问题；而如果你做的是一个ERP产品，在系统设计的时候，光系统的可维护性问题就让你不得不绞尽脑汁考虑一下代码的结构。 <br /><br /><br /><br />一句话，只做最对的。 <br /><br />程序设计的最大追求就是在合适的地方做正确的事。</span>
<img src ="http://www.blogjava.net/mphome/aggbug/181984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-02-25 14:11 <a href="http://www.blogjava.net/mphome/archive/2008/02/25/181984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用方法名称执行方法行为的源代码</title><link>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 25 Feb 2008 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/181951.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/02/25/181951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/181951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/181951.html</trackback:ping><description><![CDATA[public class TestReflectCommand {<br /><br /><br />public static void main(String[] args){<br /><br />CommandLoader cl=new DefaultCommandLoader(new DefaultShowCommand());<br />cl.excute("executeShowList",null);<br />}<br />}<br /><br />public interface CommandLoader {<br /><br />void excute(String commandName,Object[] argument);<br />}<br /><br /><br />public class DefaultCommandLoader implements CommandLoader {<br /><br /><br />private ShowCommand showCommand;<br /><br />private HashMap subCommandMap=new HashMap();<br /><br />public DefaultCommandLoader(ShowCommand showCommand){<br />this.showCommand=showCommand;<br />init();<br />}<br /><br /><br />private void init() {<br /><br />Method[] allMethod=this.showCommand.getClass().getMethods();<br />for(int i=0;i&lt;allMethod.length;i++){<br />Method m=allMethod<i>;<br />if(m.getName().startsWith("execute")){<br />subCommandMap.put(m.getName(), m);<br />}<br />}<br />}<br /><br /><br />public void excute(String commandName, Object[] argument) {<br /><br />Method m=(Method) this.subCommandMap.get(commandName);<br /><br />if(m==null){<br />throw new NullPointerException("not found command");<br />}<br />try{<br />m.invoke(this.showCommand,argument);<br />}<br />catch(Exception e){<br />throw new RuntimeException("Load command["+m.getName()+"error");<br />}<br />}<br />}<br /><br />public interface ShowCommand {<br /><br /><br />public void executeShowList();<br /><br />public void excuteShowString();<br /><br />public void executeShowInteger();<br /><br />public void executeShowLong();<br />}<br /><br />public class DefaultShowCommand implements ShowCommand {<br /><br />public void excuteShowString() {<br />System.out.println(String.class.getName());<br />}<br /><br />public void executeShowInteger() {<br />System.out.println(Integer.class.getName());<br />}<br /><br />public void executeShowList() {<br />System.out.println(List.class.getName());<br />}<br /><br />public void executeShowLong() {<br />System.out.println(Long.class.getName());<br />}<br /><br />}</i><img src ="http://www.blogjava.net/mphome/aggbug/181951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-02-25 11:48 <a href="http://www.blogjava.net/mphome/archive/2008/02/25/181951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你还在用if else吗？(转载)</title><link>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 25 Feb 2008 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/181927.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2008/02/25/181927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/181927.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/181927.html</trackback:ping><description><![CDATA[　面向过程设计和面向对象设计的主要区别是：是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else，当然，界面表现层除外，即使你使用Java/C#这样完全面向对象的语言，也只能说明你的思维停留在传统的面向过程语言上。
<p><strong>传统思维习惯分析</strong></p><p>　　为什么会业务逻辑层使用if else，其实使用者的目的也是为了重用，但是这是面向过程编程的重用，程序员只看到代码重用，因为他看到if else几种情况下大部分代码都是重复的，只有个别不同，因此使用if else可以避免重复代码，并且认为这是模板Template模式。</p><p>　　他范的错误是：程序员只从代码运行顺序这个方向来看待它的代码，这种思维类似水管或串行电路，水沿着水管流动（代码运行次序），当遇到几个分管（子管），就分到这几个分管子在流动，这里就相当于碰到代码的if else处了。</p><p>　　而使用OO，则首先打破这个代码由上向下顺序等同于运行时的先后循序这个规律，代码结构不由执行循序决定，由什么决定呢？由OO设计；设计模式会取代这些if else，但是最后总是由一个Service等总类按照运行顺序组装这些OO模块，只有一处，这处可包含事务，一般就是Service，EJB中是Session bean。</p><p>　　一旦需求变化，我们更多的可能是Service中各个OO模块，甚至是只改动Service中的OO模块执行顺序就能符合需求。</p><p>　　这里我们也看到OO分离的思路，将以前过程语言的一个Main函数彻底分解，将运行顺序与代码其他逻辑分离开来，而不是象面向过程那样混乱在一起。所以有人感慨，OO也是要顺序的，这是肯定的，关键是运行顺序要单独分离出来。</p><p>　　是否有if else可以看出你有没有将运行顺序分离到家。</p><p><strong>设计模式的切入口</strong></p><p>　　经常有人反映，设计模式是不错，但是我很难用到，其实如果你使用if else来写代码时（除显示控制以外），就是在写业务逻辑，只不过使用简单的判断语句来作为现实情况的替代者。</p><p>　　 还是以大家熟悉的论坛帖子为例子，如ForumMessage是一个模型，但是实际中帖子分两种性质：主题贴（第一个根贴）和回帖（回以前帖子的帖子），这里有一个朴素的解决方案：<br />建立一个ForumMessage，然后在ForumMessage加入isTopic这样判断语句，注意，你这里一个简单属性的判断引入，可能导致你的程序其他地方到处存在if else 的判断。</p><p>　　如果我们改用另外一种分析实现思路，以对象化概念看待，实际中有主题贴和回帖，就是两种对象，但是这两种对象大部分是一致的，因此，我将ForumMessage设为表达主题贴；然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖，这样，我在程序地方，如Service中，我已经确定这个Model是回帖了，我就直接下溯为ForumMessageReply即可，这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if else的判断语句出现可能。</p><p>　　从这里体现了，如果分析方向错误，也会导致误用模式。</p><p>　　讨论设计模式举例，不能没有业务上下文场景的案例，否则无法决定是否该用模式，下面举两个对比的例子：</p><p>　　第一.<a href="http://www.jdon.com/jive/thread.jsp?forum=91&amp;thread=24681" target="_blank"> 这个帖子</a>中举例的第一个代码案例是没有上下文的，文中只说明有一段代码：</p><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td>main() { 
<p>if（case A）{ </p><p>//do with strategy A </p><p>}else(case B){</p><p>//do with strategy B </p><p>}else(case C){ </p><p>//do with strategy C </p><p>}</p><p>} </p></td><td> </td></tr></tbody></table><p>　　这段代码只是纯粹的代码，没有业务功能，所以，在这种情况下，我们就很难确定使用什么模式，就是一定用策略模式等，也逃不过还是使用if else的命运，设计模式不是魔法，不能将一段毫无意义的代码变得简单了，只能将其体现的业务功能更加容易可拓展了。</p><p>　　第二.在<a href="http://www.jdon.com/jive/thread.jsp?forum=91&amp;thread=24333&amp;message=14484871#14484871" target="_blank">这个帖子</a>中，作者举了一个PacketParser业务案例，这段代码是体现业务功能的，是一个数据包的分析，作者也比较了各种模式使用的不同，所以我们还是使用动态代理模式或Command模式来消灭那些可能存在的if else</p><p>　　由以上两个案例表明：业务逻辑是我们使用设计模式的切入点，而在分解业务逻辑时，我们习惯则可能使用if else来实现，当你有这种企图或者已经实现代码了，那么就应该考虑是否需要重构Refactoring了。<br /></p><p><strong>if else替代者</strong></p><p>　　那么实战中，哪些设计模式可以替代if else呢？其实GoF设计模式都可以用来替代if else，我们分别描述如下：</p><li>状态模式　<br />　　当数据对象存在各种可能性的状态，而且这种状态将会影响到不同业务结果时，那么我们就应该考虑是否使用状态模式，当然，使用状态模式之前，你必须首先有内存状态这个概念，而不是数据库概念，因为在传统的面向过程的/面向数据库的系统中，你很难发现状态的，从数据库中读取某个值，然后根据这个值进行代码运行分流，这是很多初学者常干的事情。参考文章:<a href="http://www.jdon.com/artichect/state.htm" target="_blank">状态对象：数据库的替代者</a><br />　　使用传统语言思维的情况还有：使用一个类整数变量标识状态：<br /><table cellspacing="1" cellpadding="1" width="100%" bgcolor="#cccccc" border="0"><tbody><tr><td><p> </p><p>public class Order{</p><p>private int status;</p><p>//说明： </p><p>//status=1 表示订货但为查看 ；</p><p>//status=2 表示已经查看未处理；</p><p>//status=3 表示已经处理未付款</p><p>//status=4 表示已经付款未发货</p><p>//status=5 表示已经发货</p><p>} </p></td></tr></tbody></table><br />　　上述类设计，无疑是将类作为传统语言的函数来使用，这样导致程序代码中存在大量的if else。<br /><br /></li><li>策略模式　<br />　　当你面临几种算法或者公式选择时，可以考虑策略模式，传统过程语言情况是：从数据库中读取算法数值，数值1表示策略1，例如保存到数据库；数值为2表示策略2，例如保存到XMl文件中。这里使用if else作为策略选择的开关。 <br /><br /></li><li>command模式　<br />　　传统过程的思维情况是：如果客户端发出代号是1或"A"，那么我调用A.java这个对象来处理；如果代号是2或"B"，我就调用B.java来处理，通过if else来判断客户端发送过来的代码，然后按事先约定的对应表，调用相应的类来处理。<br /><br /></li><li>MVC模式　<br />　　MVC模式的传统语言误用和Command模式类似，在一个Action类中，使用if else进行前后台调度，如果客户端传送什么命令；我就调用后台什么结果；如果后台处理什么结构，再决定推什么页面，不过，现在我们使用Struts/JSF这样MVC模式的框架实现者就不必范这种低级错误。<br /><br /></li><li>职责链模式　<br />　　职责链模式和Command模式是可选的，如果你实在不知道客户端会发出什么代号；也没有一个事先定义好的对照表，那么你只能编写一个个类去碰运气一样打开这个包看一下就可以。与Command是不同在<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a>一文中有分析。<br /><br /></li><li>代理或动态代理模式　<br />　　代理对象可以是符合某种条件的代表者，比如，权限检验，传统面向过程思维是：当一个用户登陆后，访问某资源时，使用if else进行判断，只有某种条件符合时，才能允许访问，这样权限判断和业务数据逻辑混乱在一起，使用代理模式可以清晰分离，如果嫌不太好，使用动态代理，或者下面AOP等方式。<br /><br /></li><li>AOP或Decorator模式<br />　　<br />　　其实使用filter过滤器也可以替代我们业务中的if else，过滤器起到一种过滤和筛选作用，将符合本过滤器条件的对象拦截下来做某件事情，这就是一个过滤器的功能，多个过滤器组合在一起实际就是if else的组合。<br />　　所以，如果你实在想不出什么办法，可以使用过滤器，将过滤器看成防火墙就比较好理解，当客户端有一个请求时，经过不同性质的防火墙，这个防火墙是拦截端口的；那个防火墙是安全检查拦截等等。过滤器也如同红蓝白各种光滤镜；红色滤镜只能将通过光线中的红色拦截了；蓝色滤镜将光线中的蓝色拦截下来，这实际上是对光线使用if else进行分解。<br /><br /><img height="182" src="http://www.jdon.com/artichect/images/ifelse.gif" width="285" p="100" h="182" w="285" /><br />　　如图，通过一个个条件过滤器我们立体地实现了对信号的分离，如果你使用if else，说明你是将图中的条件1/2/3/4合并在一起，在同一个地方实现条件判断。<br />　　需要深入了解过滤器的实现细节和微小区别，请参考文章：<a href="http://www.jdon.com/AOPdesign/decorator.htm" target="_blank">AOP vs Decorator</a><br /><p><strong>OO设计的总结</strong>　　 </p><p>　　还有一种伪模式，虽然使用了状态等模式，但是在模式内部实质还是使用if else或switch进行状态切换或重要条件判断，那么无疑说明还需要进一步努力。更重要的是，不能以模式自居，而且出书示人。</p><p>　　真正掌握面向对象这些思想是一件困难的事情，目前有各种属于揪着自己头发向上拔的解说，都是误人子弟的，所以我觉得初学者读Thinking in Java（Java编程思想）是没有用，它试图从语言层次来讲OO编程思想，非常失败，作为语言参考书可以，但是作为Java体现的OO思想的学习资料，就错了。</p><p>　　OO编程思想是一种方法论，方法论如果没有应用比较，是无法体会这个方法论的特点的，禅是古代一个方法论，悟禅是靠挑水砍柴这些应用才能体会。</p><p>　　那么OO思想靠什么应用能够体会到了？是GoF设计模式，GoF设计模式是等于软件人员的挑水砍柴等基本活，所以，如果一个程序员连基本活都不会，他何以自居OO程序员？从事OO专业设计编程这个工作，如果不掌握设计模式基本功，就象一个做和尚的人不愿意挑水砍柴，他何以立足这个行业？早就被师傅赶下山。</p><p>　　最后总结：将if else用在小地方还可以，如简单的数值判断；但是如果按照你的传统习惯思维，在实现业务功能时也使用if else，那么说明你的思维可能需要重塑，你的编程经验越丰富，传统过程思维模式就容易根深蒂固，想靠自己改变很困难；建议接受<a href="http://www.jdon.com/trainning/j2eearchitect.htm" target="_blank">专业头脑风暴培训</a>。</p><p>　　用一句话总结：如果你做了不少系统，很久没有使用if else了，那么说明你可能真正进入OO设计的境地了。（这是本人自己发明的实战性的衡量考核标准）。</p></li><img src ="http://www.blogjava.net/mphome/aggbug/181927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2008-02-25 10:57 <a href="http://www.blogjava.net/mphome/archive/2008/02/25/181927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet的启动顺序</title><link>http://www.blogjava.net/mphome/archive/2007/12/26/170636.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 26 Dec 2007 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/26/170636.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/170636.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/26/170636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/170636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/170636.html</trackback:ping><description><![CDATA[
		<div>当一个web容器产生一个servlet实例时，它的基本顺序如下：</div>
		<div style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt">
				<span>1、 </span>servlet容器首先调用这个servlet的init()方法，它建会初始化一个资源给servlet使用。列如一个logger。这个init()方法在整个servlet的生存周期只会被调用一次。</div>
		<div style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt">
				<span>2、 </span>init()方法初始化了一个对象，对象继承了java.servlet.ServletConfig接口。这个对象使servlet能够初始化那些被声明在部署描述符的参数。ServletConfig也使servlet有权使用一个 javax.servlet.ServletContext 的对象，用这个对象servlet可以记录信息，分派请求到其他的web组件上并且能够使用在同一个应用上的其他web资源。</div>
		<div style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt">
				<span>3、 </span>servlet容器调用这个servlet的service()方法去响应servlet的一些请求。根据HttpServlets,service()自动的调用合适的HTTP方法去处理请求通过调用servlet的doGet()或者doPost()方法。几个例子，用户发送了个Post请求这时servlet通过doPost()方法的执行来响应这个请求。</div>
		<div style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt">
				<span>4、 </span>当调用两个主要的HttpServlet的doPost(),doGet()方法，这个servlet容器将产生javax..servlet.http.HttpServletRequest和HttpServletResponse 的对象并且把它们作为参数传到这些处理请求的方法中。</div>
		<div> </div>
		<div style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt">
				<span>5、 </span>管理一个servlet的生命周期，或者决定这个servlet实例对request请求的处理，在java虚拟机上的存在时间。当一个servlet容器开始移除一个servlet的时候将调用servlet的destroy（）方法，在这个方法中能够释放所有的资源，比如一个数据库连接。</div>
<img src ="http://www.blogjava.net/mphome/aggbug/170636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-26 17:02 <a href="http://www.blogjava.net/mphome/archive/2007/12/26/170636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jetty Servlet 技术</title><link>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 24 Dec 2007 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/170153.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/24/170153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/170153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/170153.html</trackback:ping><description><![CDATA[            jetty开源服务器对serlvet的并发处理添加了比较好的技术，总的来说可以分4大改进点：<br />             1.将NIO概念加入到servlet中，（具体的技术还是不太）<br />             2.引入了continuation 机制。说白了就是将每个连接connection从servlet的suspend换到container的suspend，不在占用servlet的资源，此处需要考虑换入继续执行的问题。用通俗的话来讲就是给serlvet加入了记忆功能。<br />             3.Split buffers：使用改技术的前提是采用continuation，也就是在读写的时候加入缓存块<br />             4.Delayed dispatch：好像这方面的改进作用不大，只是对那些request的请求一起到，在将其发送到servlet去处理。<br /><br /><br /><br />              暂时看懂的就这么多<img src ="http://www.blogjava.net/mphome/aggbug/170153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-24 21:00 <a href="http://www.blogjava.net/mphome/archive/2007/12/24/170153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>12.21 开题报告</title><link>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 21 Dec 2007 10:28:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/169419.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/21/169419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/169419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/169419.html</trackback:ping><description><![CDATA[    需注意的技术：Cache：JBOSSCache<br />                                JGroup<br />                                XMPP COMETD<img src ="http://www.blogjava.net/mphome/aggbug/169419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-21 18:28 <a href="http://www.blogjava.net/mphome/archive/2007/12/21/169419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库master/slave模式</title><link>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 12 Dec 2007 12:40:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/167327.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/167327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/167327.html</trackback:ping><description><![CDATA[mysql的master/slave模式：<br />采用ReplicationConnection链接后，设置Connection.setReadOnly(true)时，读写可以从master,slave中任意读写。<br />设置Connection.setReadOnly(false)只能从master中读取。<br />采用此方法可以做到只在master上更新数据，利用slave来读取数据。<br />详细介绍<br /><a href="http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html">http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-replication-connection.html</a><br /><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/167327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-12 20:40 <a href="http://www.blogjava.net/mphome/archive/2007/12/12/167327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中double运算的问题</title><link>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 10 Dec 2007 12:47:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/166783.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/10/166783.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/166783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/166783.html</trackback:ping><description><![CDATA[
		<p>double t1=34.0;<br />double t2=2.55<br />System.out.println(t1*t2);<br />结果不等于 86.7 <br /><br />解决方案 采用 java.math.BigDecimal<br />此处有一个通用类<br /></p>
		<ol class="dp-j">
				<li class="alt">
						<span>
								<span class="keyword">import</span>
								<span> java.math.BigDecimal;   </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 由于Java的简单类型不能够精确的对浮点数进行运算，这个工具类提供精 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 确的浮点数运算，包括加减乘除和四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">class</span>
						<span> Arith{   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">//默认除法运算精度 </span>
						<span>  </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">private</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">final</span>
						<span> </span>
						<span class="keyword">int</span>
						<span> DEF_DIV_SCALE = </span>
						<span class="number">10</span>
						<span>;   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">//这个类不能实例化 </span>
						<span>  </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">private</span>
						<span> Arith(){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的加法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被加数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 加数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的和 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> add(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.add(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的减法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被减数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 减数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的差 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> sub(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.subtract(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的乘法运算。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被乘数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 乘数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的积 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> mul(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.multiply(b2).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供（相对）精确的除法运算，当发生除不尽的情况时，精确到 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 小数点以后10位，以后的数字四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的商 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> div(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> div(v1,v2,DEF_DIV_SCALE);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供（相对）精确的除法运算。当发生除不尽的情况时，由scale参数指 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 定精度，以后的数字四舍五入。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v1 被除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v2 除数 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param scale 表示表示需要精确到小数点以后几位。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 两个参数的商 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> div(</span>
						<span class="keyword">double</span>
						<span> v1,</span>
						<span class="keyword">double</span>
						<span> v2,</span>
						<span class="keyword">int</span>
						<span> scale){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">if</span>
						<span>(scale&lt;</span>
						<span class="number">0</span>
						<span>){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">throw</span>
						<span> </span>
						<span class="keyword">new</span>
						<span> IllegalArgumentException(   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="string">"The scale must be a positive integer or zero"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b1 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v1));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b2 = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v2));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="comment">/** */</span>
						<span class="comment">/** </span> </li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* 提供精确的小数位四舍五入处理。 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param v 需要四舍五入的数字 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @param scale 小数点后保留几位 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">* @return 四舍五入后的结果 </span> </span>
				</li>
				<li class="">
						<span>
								<span class="comment">
								</span>
						</span>
				</li>
				<li class="alt">
						<span>
								<span class="comment">*/</span>
								<span>  </span>
						</span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">public</span>
						<span> </span>
						<span class="keyword">static</span>
						<span> </span>
						<span class="keyword">double</span>
						<span> round(</span>
						<span class="keyword">double</span>
						<span> v,</span>
						<span class="keyword">int</span>
						<span> scale){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">if</span>
						<span>(scale&lt;</span>
						<span class="number">0</span>
						<span>){   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">throw</span>
						<span> </span>
						<span class="keyword">new</span>
						<span> IllegalArgumentException(   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="string">"The scale must be a positive integer or zero"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal b = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(Double.toString(v));   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>BigDecimal one = </span>
						<span class="keyword">new</span>
						<span> BigDecimal(</span>
						<span class="string">"1"</span>
						<span>);   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>
						</span>
						<span class="keyword">return</span>
						<span> b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
				<li class="">
						<span>  </span>
				</li>
				<li class="alt">
						<span>}   </span>
				</li>
		</ol>
<img src ="http://www.blogjava.net/mphome/aggbug/166783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-10 20:47 <a href="http://www.blogjava.net/mphome/archive/2007/12/10/166783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse快捷键大全</title><link>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Dec 2007 14:05:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/165021.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/03/165021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/165021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/165021.html</trackback:ping><description><![CDATA[
		<h2 class="diaryTitle">eclipse快捷键大全</h2>                                       
<p></p><div class="pgtitle"><a name="1153126290226"></a><strong>eclipse快捷键大全</strong></div><div class="pgcontent"><p>1. 常用快捷键<br />(1)Ctrl+Space<br />说明:内容助理。提供对方法,变量,参数,javadoc等得提示,应运在多种场合,总之需要提示的时候可先按此快捷键。<br />注:避免输入法的切换设置与此设置冲突</p><p>(2)Ctrl+Shift+Space<br />说明:变量提示<br />(3)Ctrl+/<br />说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+\</p><p>(4)Ctrl+Shift+/<br />说明:添加/* */注释</p><p>(5)Ctrl+Shift+\<br />说明:消除/* */注释</p><p>(6)Ctrl+Shift+F<br />说明:自动格式化代码</p><p>(7)Ctrl+1<br />说明:批量修改源代码中的变量名,此外还可用在catch块上.</p><p>(8)Ctril+F6<br />说明:界面切换</p><p>(9)Ctril+Shift+M<br />说明:查找所需要得包</p><p>(10)Ctril+Shift+O<br />说明:自动引入所需要得包</p><p>(11)Ctrl+Alt+S<br />说明:源代码得快捷菜单。其中的Generate getters and setters 和 Surround with try/catch<br />block比较常用.建议把它们添加为快捷键.快捷键设置在windows-&gt;preferences-&gt;Workbench-&gt;Keys</p><p>2. 快捷键列表</p><p>编辑<br />作用域 功能 快捷键<br />全局 查找并替换 Ctrl+F<br />文本编辑器 查找上一个 Ctrl+Shift+K<br />文本编辑器 查找下一个 Ctrl+K<br />全局 撤销 Ctrl+Z<br />全局 复制 Ctrl+C<br />全局 恢复上一个选择 Alt+Shift+↓<br />全局 剪切 Ctrl+X<br />全局 快速修正 Ctrl1+1<br />全局 内容辅助 Alt+/<br />全局 全部选中 Ctrl+A<br />全局 删除 Delete<br />全局 上下文信息 Alt+？Alt+Shift+?Ctrl+Shift+Space<br />Java编辑器 显示工具提示描述 F2<br />Java编辑器 选择封装元素 Alt+Shift+↑<br />Java编辑器 选择上一个元素 Alt+Shift+←<br />Java编辑器 选择下一个元素 Alt+Shift+→<br />文本编辑器 增量查找 Ctrl+J<br />文本编辑器 增量逆向查找 Ctrl+Shift+J<br />全局 粘贴 Ctrl+V<br />全局 重做 Ctrl+Y</p><p>查看<br />作用域 功能 快捷键<br />全局 放大 Ctrl+=<br />全局 缩小 Ctrl+-</p><p>窗口<br />作用域 功能 快捷键<br />全局 激活编辑器 <span class="caps">F12</span><br />全局 切换编辑器 Ctrl+Shift+W<br />全局 上一个编辑器 Ctrl+Shift+F6<br />全局 上一个视图 Ctrl+Shift+F7<br />全局 上一个透视图 Ctrl+Shift+F8<br />全局 下一个编辑器 Ctrl+F6<br />全局 下一个视图 Ctrl+F7<br />全局 下一个透视图 Ctrl+F8<br />文本编辑器 显示标尺上下文菜单 Ctrl+W<br />全局 显示视图菜单 Ctrl+F10<br />全局 显示系统菜单 Alt+-</p><p>导航<br />作用域 功能 快捷键<br />Java编辑器 打开结构 Ctrl+F3<br />全局 打开类型 Ctrl+Shift+T<br />全局 打开类型层次结构 F4<br />全局 打开声明 F3<br />全局 打开外部javadoc Shift+F2<br />全局 打开资源 Ctrl+Shift+R<br />全局 后退历史记录 Alt+←<br />全局 前进历史记录 Alt+→<br />全局 上一个 Ctrl+,<br />全局 下一个 Ctrl+.<br />Java编辑器 显示大纲 Ctrl+O<br />全局 在层次结构中打开类型 Ctrl+Shift+H<br />全局 转至匹配的括号 Ctrl+Shift+P<br />全局 转至上一个编辑位置 Ctrl+Q<br />Java编辑器 转至上一个成员 Ctrl+Shift+↑<br />Java编辑器 转至下一个成员 Ctrl+Shift+↓<br />文本编辑器 转至行 Ctrl+L</p><p>搜索<br />作用域 功能 快捷键<br />全局 出现在文件中 Ctrl+Shift+U<br />全局 打开搜索对话框 Ctrl+H<br />全局 工作区中的声明 Ctrl+G<br />全局 工作区中的引用 Ctrl+Shift+G</p><p>文本编辑<br />作用域 功能 快捷键<br />文本编辑器 改写切换 Insert<br />文本编辑器 上滚行 Ctrl+↑<br />文本编辑器 下滚行 Ctrl+↓</p><p>文件<br />作用域 功能 快捷键<br />全局 保存 Ctrl+X Ctrl+S<br />全局 打印 Ctrl+P<br />全局 关闭 Ctrl+F4<br />全局 全部保存 Ctrl+Shift+S<br />全局 全部关闭 Ctrl+Shift+F4<br />全局 属性 Alt+Enter<br />全局 新建 Ctrl+N</p><p>项目<br />作用域 功能 快捷键<br />全局 全部构建 Ctrl+B</p><p>源代码<br />作用域 功能 快捷键<br />Java编辑器 格式化 Ctrl+Shift+F<br />Java编辑器 取消注释 Ctrl+\<br />Java编辑器 注释 Ctrl+/<br />Java编辑器 添加导入 Ctrl+Shift+M<br />Java编辑器 组织导入 Ctrl+Shift+O<br />Java编辑器 使用try/catch块来包围 未设置，太常用了，所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。</p><p>运行<br />作用域 功能 快捷键<br />全局 单步返回 F7<br />全局 单步跳过 F6<br />全局 单步跳入 F5<br />全局 单步跳入选择 Ctrl+F5<br />全局 调试上次启动 <span class="caps">F11</span><br />全局 继续 F8<br />全局 使用过滤器单步执行 Shift+F5<br />全局 添加/去除断点 Ctrl+Shift+B<br />全局 显示 Ctrl+D<br />全局 运行上次启动 Ctrl+F11<br />全局 运行至行 Ctrl+R<br />全局 执行 Ctrl+U</p><p>重构<br />作用域 功能 快捷键<br />全局 撤销重构 Alt+Shift+Z<br />全局 抽取方法 Alt+Shift+M<br />全局 抽取局部变量 Alt+Shift+L<br />全局 内联 Alt+Shift+I<br />全局 移动 Alt+Shift+V<br />全局 重命名 Alt+Shift+R<br />全局 重做 Alt+Shift+Y</p></div><img src ="http://www.blogjava.net/mphome/aggbug/165021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-03 22:05 <a href="http://www.blogjava.net/mphome/archive/2007/12/03/165021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载：JAVA如何调用DOS命令 </title><link>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Dec 2007 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/165019.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/12/03/165019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/165019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/165019.html</trackback:ping><description><![CDATA[
		<p>用Java编写应用时，有时需要在程序中调用另一个现成的可执行程序或系统命令，这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式： <br />... <br />Process process = Runtime.getRuntime().exec(".\\p.exe"); <br />process.waitfor( ); <br />... <br />在上面的程序中，第一行的“.\\p.exe”是要执行的程序名，Runtime.getRuntime()返回当前应用程序的Runtime对象，该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序，并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。 <br />但在windows平台上，如果处理不当，有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况： <br />1、执行DOS的内部命令 <br />如果要执行一条DOS内部命令，有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如，执行dir命令，在NT上， 可写成exec("cmd.exe /c dir")，在windows 95/98下，可写成“command.exe /c dir”，其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是，把内部命令放在一个批命令my_dir.bat文件中，在Java程序中写成exec("my_dir.bat")。如果仅仅写成exec("dir")，Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性，需要在程序中读取运行的操作系统平台，以调用不同的命令解释器。后一种方法则不需要做更多的处理。 <br />2、打开一个不可执行的文件 <br />打开一个不可执行的文件，但该文件存在关联的应用程序，则可以有两种方式。 以打开一个word文档a.doc文件为例，Java中可以有以下两种写法： <br />exec("start .\\a.doc"); <br />exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc"); <br />显然，前一种方法更为简捷方便。 <br />3、执行一个有标准输出的DOS可执行程序 <br />在windows平台上，运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭，从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是，该可执行程序的标准输出比较多，而运行窗口的标准输出缓冲区不够大。解决的办法是，利用Java提供的Process类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出，在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下： <br />... <br />String ls_1; <br />Process process = Runtime.getRuntime().exec("cmd /c dir \\windows"); <br />BufferedReader bufferedReader = new BufferedReader( \ <br />new InputStreamReader(process.getInputStream()); <br />while ( (ls_1=bufferedReader.readLine()) != null) <br />System.out.println(ls_1); <br /> <br />process.waitfor( ); <br />...</p>
		<p>以上内容为转载~下面内容为原创！</p>
		<p>今天在做客户端程序的自动更新，简单描述一下，就是从服务器上将更新包下载下来，然后在本地解压缩，最后删掉~功能很简单~</p>
		<p>但是问题出在使用JAVA的ZIP模块做文件的解压缩不是想象的那么简单，资源需要释放，一个不小心就没有办法删除掉原有ZIP文件了~资源的占用确实是个大问题，但是好在，客户端程序更新完是要重启的，一切都烟消云散了~对于删除不掉ZIP文件的问题，我也流氓一下~用DEL硬删除~此处一定要注意！</p>
		<p>Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc"); <br />这样的调用是没有问题~</p>
		<p>Process process = Runtime.getRuntime().exec("del f:\\aaa.doc"); <br />这样写是不可能对的~</p>
		<p>记录一下，警告一下后人！<br /><br /><br />Ref from：<a href="/leeguannan/archive/2007/11/29/164044.html">http://www.blogjava.net/leeguannan/archive/2007/11/29/164044.html</a></p>
<img src ="http://www.blogjava.net/mphome/aggbug/165019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-12-03 22:02 <a href="http://www.blogjava.net/mphome/archive/2007/12/03/165019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月12日</title><link>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 12 Nov 2007 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/160072.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/11/13/160072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/160072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/160072.html</trackback:ping><description><![CDATA[         今天总算是静下心来做事啦，因为股票跌的实在是惨不忍睹，看来大半年是白忙啦。现在最好也就是不做任何操作，虽然可能会更惨！但这样也不是没有好处，做事的效率提高啦，以前是想着靠股票发财，现在有打算好好学习找个好工作，呵呵我真是善变。<br />         晚上使用apache的ad压力测试竟然把公司的网站给搞瘫了，出乎意料.学了一招以后看谁不顺眼，给他来一下。这个星期要请别人去吃大餐，，唉可怜的我的那点工资还有我的张学友演唱会门票。<br />         <img src ="http://www.blogjava.net/mphome/aggbug/160072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-11-13 00:08 <a href="http://www.blogjava.net/mphome/archive/2007/11/13/160072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>菩提本无树，明镜亦非台，本来无一物，何处惹尘埃</title><link>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 03 Sep 2007 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/142464.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/09/03/142464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/142464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/142464.html</trackback:ping><description><![CDATA[今天终于可以跟写文档说byby啦，呵呵还好投标不要我去，明天公司没人可以尽情的炒股啦。说起来最近行情还真是挺不错，经过我的努力（虽然爸妈说我在瞎搞）资金总额回到了5.30号之前的高点。下面可要小心了，不能在满仓操作，又来个一夜回到革命前。<br />     9月3日是开学的第一天，很多新生都开始上课啦，怎么感觉现在的大一新生长得都比较成熟啊，看上去和大四的学生精神面貌，个头都差不多。看着他们还真挺怀念都大学的时候，读大学和读研究生还真是区别很大。主要还是人开始考虑现实的东西比较多了。我还真挺佩服那些自由职业者，需要钱的时候就找分工作干两个月，挣够了钱继续开始旅游或干自己想做的事，这还真不是普通人能做到的。<br />     <img src ="http://www.blogjava.net/mphome/aggbug/142464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-09-03 23:00 <a href="http://www.blogjava.net/mphome/archive/2007/09/03/142464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>师弟要来了，新的学年</title><link>http://www.blogjava.net/mphome/archive/2007/08/31/141567.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Thu, 30 Aug 2007 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/31/141567.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/141567.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/31/141567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/141567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/141567.html</trackback:ping><description><![CDATA[     今天看到了下一届学弟的寝室安排，我大学同学竟然被分到别的导师那里去拉，真是奇怪啦，我还带过他去我的导师那里，真不知道那几个导师是怎样安排的。他来了也好，在广州又多了一个老乡。<br />     每天下班吃饭是一个大问题，要不食堂就是关门要不就没菜，老吃方便面，太惨啦。回来的时候碰到女同学，问到她怎么解决吃饭时，她竟然说在寝室弄饭，太强啦。怎么我没有分到和她一个寝室啊。呵呵，这是不可能的！！！<br />    项目需求开始看JBPM,看了一下午感觉还是挺简单的，网上教程挺多，具体怎样利用jbpm定制流程是搞清除啦，明天要开始结合strut来做做简单的公文流转看。<br />    晚上抽空看了《破绽》,发觉里面的女主角罗莎蒙派克（其实戏份很少的）挺漂亮的，是偶喜欢的类型，记录一下。<img src ="http://www.blogjava.net/mphome/aggbug/141567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-31 00:02 <a href="http://www.blogjava.net/mphome/archive/2007/08/31/141567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>差距不是一日形成的</title><link>http://www.blogjava.net/mphome/archive/2007/08/29/141100.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Wed, 29 Aug 2007 13:55:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/29/141100.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/141100.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/29/141100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/141100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/141100.html</trackback:ping><description><![CDATA[           这两天刚下完班就回寝室玩仙剑4，一玩就到了12点，弄得连写日志的时间都没有，惭愧啊。现在终于通关了，呵呵生活一切开始正常。<br />           最近老在写文档，为了画流程图到网上找写素材时无意中逛到了几个在微软工作人的blog而且还都是做UI设计。牛人果然是不同，blog的风格非常独特，从blog的字里行间中能体会出他们对工作的那份激情。看来在好的工作环境中对个人的提高是巨大的。<br />           还有件好玩的事，中午的我在厕所方便碰到同事，随便聊起了上午股票的行情，聊得真起劲的时候，厕所的单间突然走出老总，我和同事都吃了一惊，但老总也没说什么，看了我们一眼就走了。顿时我们无语，我到没什么，反正是实习生，拿得钱又少，管他老总怎么想。可我感觉出来同事肯定要郁闷半天。咳，现在才感觉到实习生也是有好处的。<br />          无意中翻看大学同学的QQ签名，发现原来一个比较闷骚的室友的签名非常有感觉，赶紧copy下来（不是为了谁，只是没有缘故的伤感，这就像某些人见到一个和分手恋人很像的背影而潜然泪下。和软弱无关）. 有点怀疑是抄的，那天问问看。<br />          <img src ="http://www.blogjava.net/mphome/aggbug/141100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-29 21:55 <a href="http://www.blogjava.net/mphome/archive/2007/08/29/141100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无聊的一天</title><link>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sun, 26 Aug 2007 14:08:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/139634.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/26/139634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/139634.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/139634.html</trackback:ping><description><![CDATA[          又过了一个没有活动的周末，还真的挺无聊的。快没钱啦，为什么公司发钱要到12号，弄得我现在搞信用卡透支，苦闷。<br />          明天又开始上班，听说移动的需求又加了不少，妈的又要修改标书，什么时候才能搞完啊 。老大，我是实习生不要叫我老写文档好 不好啊。<br />           为什么我老是对某件事不能专注下去，即时是玩游戏也很难有非常强的耐心通关，但在没有开始却兴趣非常的强。我很怀疑是不是  很少人会这样。<br />          公司要进新人啦，好像有女的哦，暗喜！！！要知道我们公司连做美工的都是男的，老总可能是看不过去啦，调节一下男女比例，虽然我也只是想看看，养眼而已。<br />          <img src ="http://www.blogjava.net/mphome/aggbug/139634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-26 22:08 <a href="http://www.blogjava.net/mphome/archive/2007/08/26/139634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>死灰复燃8.24</title><link>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 24 Aug 2007 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/139129.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2007/08/24/139129.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/139129.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/139129.html</trackback:ping><description><![CDATA[              哦，看一下上次留言的日期已经是2006年，人真懒，好今天重新开始。<br />             8月24日，上班也有一个月啦，本以为刚来实习就可以立马做项目，哪知道刚来开始就看文档，看了一个星期后，又来写投标书，大失所望啊。每天只好之间看看教程啦。<br />            今天主要将WAP程序设计看了一遍，毕竟下一个项目是有关WAP的，临时抱佛脚吧。感觉WAP还是挺简单的，只不过和HTML在标签上有说区别。而且在给变量赋值在=前后竟然不能有空格，不知道那个傻子设计的，怪不得WAP发展的不是很好。<br />            最近正在看JBOSS和MySee，关于JBOSS还真不知道从那里下手，整体的设计理念是了解，但具体如何应用挺费解的。要好好象师兄请教一下。Mysee开源的东东，也已经看看很久啦 ，同志要加紧啊 。<br />            提醒：公司空调很冷，以后要记得带长袖衣服。    <br />                2007.8.24<img src ="http://www.blogjava.net/mphome/aggbug/139129.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2007-08-24 16:36 <a href="http://www.blogjava.net/mphome/archive/2007/08/24/139129.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat　乱码的最终解决方案</title><link>http://www.blogjava.net/mphome/archive/2006/12/03/85107.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Sat, 02 Dec 2006 16:01:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/12/03/85107.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/85107.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/12/03/85107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/85107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/85107.html</trackback:ping><description><![CDATA[
		<p>1.解决POST传送乱码的问题．<br />&lt;filter&gt;<br />    &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />    &lt;filter-class&gt;com.util.filters.SetCharacterEncodingFilter&lt;/filter-class&gt;<br />    &lt;init-param&gt;<br />      &lt;param-name&gt;encoding&lt;/param-name&gt;<br />      &lt;param-value&gt;UTF-8&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />  &lt;/filter&gt;<br />  &lt;filter-mapping&gt;<br />    &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />  &lt;/filter-mapping&gt;</p>
		<p>SetCharacterEncodingFilter:</p>
		<p>package com.util.filters;</p>
		<p>import java.io.IOException;<br />import javax.servlet.Filter;<br />import javax.servlet.FilterChain;<br />import javax.servlet.FilterConfig;<br />import javax.servlet.ServletException;<br />import javax.servlet.ServletRequest;<br />import javax.servlet.ServletResponse;<br />import javax.servlet.UnavailableException;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</p>
		<p>
				<br />public class SetCharacterEncodingFilter<br />    implements Filter {</p>
		<p>
				<br />  protected String encoding = null;</p>
		<p>  protected FilterConfig filterConfig = null;</p>
		<p>  protected boolean ignore = true;</p>
		<p>  public void destroy() {</p>
		<p>    this.encoding = null;<br />    this.filterConfig = null;</p>
		<p>  }</p>
		<p>  public void doFilter(ServletRequest request, ServletResponse response,<br />                       FilterChain chain) throws IOException, ServletException {</p>
		<p>    // Conditionally select and set the character encoding to be used<br />   request.setCharacterEncoding("GBK"); <br />    // Pass control on to the next filter<br />    chain.doFilter(request, response);</p>
		<p>  }</p>
		<p>  public void init(FilterConfig filterConfig) throws ServletException {</p>
		<p>    this.filterConfig = filterConfig;<br />    this.encoding = filterConfig.getInitParameter("encoding");<br />    String value = filterConfig.getInitParameter("ignore");<br />    if (value == null) {<br />      this.ignore = true;<br />    }<br />    else if (value.equalsIgnoreCase("true")) {<br />      this.ignore = true;<br />    }<br />    else if (value.equalsIgnoreCase("yes")) {<br />      this.ignore = true;<br />    }<br />    else {<br />      this.ignore = false;<br />    }</p>
		<p>  }</p>
		<p>  protected String selectEncoding(ServletRequest request) {</p>
		<p>    return (this.encoding);</p>
		<p>  }</p>
		<p>}</p>
		<p>2．解决GET方式出现乱码的方案</p>
		<p>
				<br />tomcat的server.xml中 <br />&lt;Connector connectionTimeout="20000" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443" uRIEncoding="UTF-8" useBodyEncodingForURI="true"&gt; <br />&lt;/Connector&gt; <br />注意其中的useBodyEncodingForURI="true"这句是是解决问题的关键，但缺省情况下没有，自己加进去。 <br />然后再用Filter方案解决 解决GET的问题</p>
		<p>3.乱码字符转换　<br />　　byte[] bytes = str.getBytes("ISO8859-1");<br />    String dept=new String(bytes); </p>
		<p>AJAX<br />在用XMLHttpRequest发送请求时如用post方式传送数据,容易出现中文乱码问题!<br />在Ajax中,默认的编码方式是UTF-8,所以在服务器端用request.setCharacterEncoding("UTF-8");(对于java言,其它语言可能类似方法)设置编码即可解决大部份的编码问题!</p>
		<p> 对于服务器端返回的XML文件在用responseXML读取时也要注意编码问题!</p>
		<p>以下是正确的处理方法：</p>
		<p>response.setCharacterEncoding("UTF-8");-----(1)<br />PrintWriter out=response.getWriter();------(2)<br />out.println("返回内容");</p>
		<p>如上所示,如果1、2的先后顺序发生变化就会产生乱码！</p>
<img src ="http://www.blogjava.net/mphome/aggbug/85107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-12-03 00:01 <a href="http://www.blogjava.net/mphome/archive/2006/12/03/85107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我又来拉</title><link>http://www.blogjava.net/mphome/archive/2006/11/29/84197.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 28 Nov 2006 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/29/84197.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/84197.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/29/84197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/84197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/84197.html</trackback:ping><description><![CDATA[　　　有好久一段时间没有来写东西拉，最近的情绪不太好，老是在思考将来，同时也不满现状．<br />　　　今天终于有一点想通了　，路是自己选的，还是尽量将现在的路走好．将来的事留给明天吧．<br /><br />　　　送一段比较现实的格言，只要有钱，年龄不是问题，身高不是距离．<br /><br />　　　操作CSV文件有用的两个类：CSVprinter,CsvDriver.<br /><br /> <strong><font style="BACKGROUND-COLOR: #a52a2a">getOutputStream() has already been called for this response问题的解决</font></strong>      
<p class="TextColor1" style="MARGIN-BOTTOM: 0px">在jsp向页面输出图片的时候,使用response.getOutputStream()会有这样的提示：<font color="#ff0000">java.lang.IllegalStateException:</font><font color="#ff0000">getOutputStream() has already been called for this response,</font>会抛出Exception</p><div id="msgcns!3B06A8FE4A519EA5!189"><div><font face="Geneva, Arial, Sans-serif" color="#000000">原因一:</font></div><div> <font face="Geneva, Arial, Sans-serif" color="#000000">JSP默认的输出流为PrintWriter ,即&lt;% %&gt;以外的东西所默认的输出方式,如果你尝试在JSP中使用ServletOutputStream就会引起错误.要嘛直接改用Servlet输出(复写service方法),要嘛删除除%&gt;&lt;%中的任何东西(包括HTML标签,空格,回车等东西)应该就可以。</font></div><div></div><div><font face="Geneva, Arial, Sans-serif" color="#000000">对于这样的情况应该这样来解决，删除%&gt;&lt;%之间的所有内容包括空格和换行符，最后也要消除空格和换行符，最好再加上一句response.reset()。</font></div><div></div><div>原因二:</div><div><font face="Geneva, Arial, Sans-serif" color="#000000">    </font> </div><div>在J2EE的API参考里有这么个:<br /><br />ServletResponse的getWriter()方法里会抛出这个异常,<br /><br />IllegalStateException - if the getOutputStream method has already been called <br />for this response object<br /><br />而它的getOutputStream()方法里会抛出这个异常.<br /><br />IllegalStateException - if the getOutputStream method has already been called for this response object<br /><br />并且两者的函数申明里都有这么样的一句<br />Either this method or getOutputStream() may be called to write the body, not both.<br />Either this method or getWriter() may be called to write the body, not both.</div><div><br /></div> 以上说明也解释了为什么在往页面中写入图片的时候要使用如下循环格式</div><div>OutputStream output=response.getOutputStream();<br /> while((len=in.read(b)) &gt;0) <br />  {<br />  output.write(b,0,len);  <br />  <br />  }<br /> output.flush();</div><div>而不是把response.getOutputStream().write()放到循环体内</div><img src ="http://www.blogjava.net/mphome/aggbug/84197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-29 00:49 <a href="http://www.blogjava.net/mphome/archive/2006/11/29/84197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>点滴11月21日</title><link>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Tue, 21 Nov 2006 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/82475.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/21/82475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/82475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/82475.html</trackback:ping><description><![CDATA[关于　split分割＼<br />String s="c:\\dir\\file.txt";<br />System.out.println(s.split(<a>\\\\</a>));<br />得到c:   dir   file.txt<br /><br />终于找到了一片好的AOP教程拉，以前看的教程都是一上来就讲Spring关于AOP的支持，根本看不明白．<br /><br />我认为讲Sping关于AOP的支持的话最好先学习一下ApestJ．个人建议，哈哈！<br /><br />贴上教程地址：<a href="http://www.easyjf.com/spring/spring2-aop.pdf">http://www.easyjf.com/spring/spring2-aop.pdf</a><br /><br /><img src ="http://www.blogjava.net/mphome/aggbug/82475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-21 11:25 <a href="http://www.blogjava.net/mphome/archive/2006/11/21/82475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>记要</title><link>http://www.blogjava.net/mphome/archive/2006/11/21/82407.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Mon, 20 Nov 2006 16:28:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/21/82407.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/82407.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/21/82407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/82407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/82407.html</trackback:ping><description><![CDATA[
		<a class="singleposttitle" id="viewpost1_TitleUrl" href="http://www.cnblogs.com/chinesewind/archive/2005/10/31/265437.html">javascript判断数字</a>
		<br />function isdigit(s)<br />{<br />var r,re;<br />re = /\d*/i; //\d表示数字,*表示匹配多个数字<br />r = s.match(re);<br />return (r==s)?1:0;<br />}<br /><br />request.getParameter("ss") 若ss不存在，值为null<br />                                        若ss的value为空，返回值为""<br /><br />明天要看完AOP, 一定一定<img src ="http://www.blogjava.net/mphome/aggbug/82407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-21 00:28 <a href="http://www.blogjava.net/mphome/archive/2006/11/21/82407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>checkbox选取值的获取</title><link>http://www.blogjava.net/mphome/archive/2006/11/04/79008.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 03 Nov 2006 16:49:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/04/79008.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/79008.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/04/79008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/79008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/79008.html</trackback:ping><description><![CDATA[一：名称不同，值可相同   <br />      &lt;input   type=checkbox   name="a1"   value="1"&gt;CPU   <br />      &lt;input   type=checkbox   name="a2"   value="1"&gt;主板   <br />      &lt;input   type=checkbox   name="a3"   value="1"&gt;内存   <br />  以名称为依据的判断:   <br />      request.getParameter("a1")==null   <br />    <br />  二：名称相同，值不同   <br />      &lt;input   type=checkbox   name="a"   value="1"&gt;CPU   <br />      &lt;input   type=checkbox   name="a"   value="2"&gt;主板   <br />      &lt;input   type=checkbox   name="a"   value="3"&gt;内存   <br />  以值为依据的判断：   <br />      String[]   a   =   request.getParameterValues("a");   <br />      看a数组中是否有相应的值。如果选中"CPU"，则a[0]="1"   <img src ="http://www.blogjava.net/mphome/aggbug/79008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-04 00:49 <a href="http://www.blogjava.net/mphome/archive/2006/11/04/79008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>commons-fileupload用户指南（转）</title><link>http://www.blogjava.net/mphome/archive/2006/11/03/78984.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Fri, 03 Nov 2006 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/03/78984.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/78984.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/03/78984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/78984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/78984.html</trackback:ping><description><![CDATA[
		<font size="2">根据你的应用需求，fileupload可以有许多不同的使用方式。在最简单的情况下，你可以调用一个简单的方法来解析servlet请求，然后在他们提交到你的应用时处理表单列表。在其它规模的终端上，你也可能决定将fileupload进行自定义，以完全控制个别表单项存储的方法。比如，你或许会将内容流化来保存到数据中。<br />在这里。我们将要描述fileupload的基本使用方法，然后解释一些更简单的，以及最常用的使用模式。fileupload的个性化在这里得到了描述。<br /><br /><span style="TEXT-DECORATION: underline">它怎么工作</span><br /><br />一个文件上传请求由有序表单项的列表组成，这些表单是根据RFC1867来编码的，是在html中基于表单的文件上传。fileupload能解析这样一个请求然后向你的应用提供一个单独的上传表单项的列表。每一个这样的表单项实现了FileItem接口，而不需要考虑它潜在的实现方式。每个文件的表单项拥有一系列可能对你的应用有用的属性，比如，每个项目都有一个名字和文件类型，你就可以提供一个InputStream来取它的数据。从另一方面说，你可能需要对这些选项进行不同的处理，这个可以根据对这个选项是不是一个规则的表单项来判断，即可以根据这个数据是否来源于普通的文本框或者一个简单的html表单域，还是一个能被上传的文件。FileItem接口提供了多种方法来判断它是否是一个可上传的文件，然后你就可以用最合适的方式来处理这些数据了。FileUpload使用FileItemFactory来创建新的文件项目。这正是给FileUpload带来灵活性的原因。这个工厂最终控制每个项目的创建。默认的工厂在内存或者磁盘上保存了项目的数据，这个可以根据项目的大小来定（例如，字节数据）。当然，这个动作可以通过自定义来满足你应用的需要。<br /><br /></font>
		<font size="2">
				<span style="TEXT-DECORATION: underline">解析请求<br /><br /></span>在你对要上传的选项处理之前，很显然的你得先解析这些请求本身。很直接的就是要确保这个请求是不是一个要上传的文件，然而FileUpload使这一点简单化了，你只需提供一个静态的方法来做到这一点。<br /><hr style="WIDTH: 100%; HEIGHT: 2px" /></font>
		<p>
				<font size="2">//检查是否是一个文件上传请求<br />boolean isMultipart = FileUpload.isMultipartContent(request);<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">现在我们就可以准备解析这个请求到一个备选的选项了。解析的结果是一个文件选项的List,每个这样的选项都实现了FileItem接口，处理这些选项将在下面得到讨论。<br /><br /><span style="TEXT-DECORATION: underline">最简单的情况</span><br /><br />最简单的使用场景可以参照下面：<br /></font>
		</p>
		<ul>
				<li>
						<font size="2">被上传得选项必须以适度的大小驻留在内存中； </font>
				</li>
				<li>
						<font size="2">比较大的文件上传选项必须写入到磁盘的临时文件中去； </font>
				</li>
				<li>
						<font size="2">大文件上传请求必须不被允许； </font>
				</li>
				<li>
						<font size="2">默认的驻留内存的选项的最大大小，最大允许的上传文件请求，和临时文件的存储地方是可以接受的；</font>
				</li>
		</ul>
		<p>
				<font size="2">在这种情景下处理这样一个请求并不是很简单的：<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">//创建一个新的文件上传句柄<br />DiskFileUpload upload = new DiskFileUpload();<br />//解析请求<br />List /* FileItem */ items = upload.parseRequest(request);<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">这就是所有我们需要做的，真的！<br />解析的结果是一个文件项目的List,每一个都实现了FileItem接口。处理这些项目将在下面讨论。<br /><br /></font>
				<font size="2">
						<span style="TEXT-DECORATION: underline">练习更多的控制<br /><br /></span>如果你的使用情景非常接近最简单的使用方式，在上文中可以看到，但是你需要更多的控制临界的大小和临时文件的驻留地址，你可以使用DiskFileUpload类的方法来自定义这些动作，就像这样：<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">//创建一个新的文件上传句柄<br />DiskFileUpload upload = new DiskFileUpload();<br />//设置上传参数<br />upload.setSizeThrehold(最大内存大小);<br />upload.setSizeMax(最大请求大小);<br />upload.setRepositoryPath(临时目录);<br />//解析请求<br />List /* FileItem */ items = upload.parseRequest(request);<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">当然，每个配置方法都是独立于其它的，但是如果你想一次就配置它们，你可以使用可选的parseRequest()方法，像这样：<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">// 建立一个新的文件上传句柄<br />DiskFileUpload upload = new DiskFileUpload();<br />// 解析请求<br />List /* FileItem */ items = upload.parseRequest(request,<br />        内存大小, 允许上传的最大文件, 临时目录);<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">如果你想更多地控制请求的解析，比如把上传选项存储到其它地方，例如，存到数据库中-你可以参照自定义FileUpload。<br /><br /><span style="TEXT-DECORATION: underline">处理上传选项</span><br /><br />一旦解析过程完毕，你就可以获得一个文件选项的List，以便进一步处理。在大多数情况下，你将会根据规则的表单域来不同地处理文件的上传。所以你可能以这样的方式来处理：<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">// 处理上传的选项<br />Iterator iter = items.iterator();<br />while (iter.hasNext()) {<br />    FileItem item = (FileItem) iter.next();<br /><br />    if (item.isFormField()) {<br />        processFormField(item);<br />    } else {<br />        processUploadedFile(item);<br />    }<br />}<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">对于一个规则的表单域来说，你对它感兴趣的可能就只有它的名字以及它的字符串值。你也会想到，处理它们是简单的:<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">//处理一个规则表单域<br />if (item.isFormField()) {<br />    String name = item.getFieldName();<br />    String value = item.getString();<br />    ...<br />}<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">而对于一个文件的上传，在你处理它的内容之前，可以有好多令你想知道的不同的东西，这里有一个采用了一些你可能感兴趣的方法的例子<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">// 处理一个文件上传<br />if (!item.isFormField()) {<br />    String fieldName = item.getFieldName();<br />    String fileName = item.getName();<br />    String contentType = item.getContentType();<br />    boolean isInMemory = item.isInMemory();<br />    long sizeInBytes = item.getSize();<br />    ...<br />}<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">对于这些上传的文件，你一般不想通过内存来存取它们，除非它们很小，或者你没有其它好的方法，更进一步，你想将内容当作文件流来处理，或者将整个文件写到最终的地址。FileUpload提供了简单的方法来完成这些 操作。<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">// 处理一个文件上传的情况<br />if (writeToFile) {<br />    File uploadedFile = new File(...);<br />    item.write(uploadedFile);<br />} else {<br />    InputStream uploadedStream = item.getInputStream();<br />    ...<br />    uploadedStream.close();<br />}<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<font size="2">注意到，在默认的FileUpload的实现中，write()方法将尝试把文件改名以将它保存到特定的地点，如果数据已经在临时文件中了，如果重命名失败，实际的复制文件就完成了（？），在其它原因看来，或者数据已经在内存中了。如果你的确需要在内存中取上传的数据，你只需简单的调用get()方法来把它当作一个字符数组来获得。<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<br />
				<font size="2">// 在内存中处理一个上传的文件<br />byte[] data = item.get();<br />...<br /></font>
		</p>
		<font size="2">
				<hr style="WIDTH: 100%; HEIGHT: 2px" />
		</font>
		<p>
				<br />
				<font size="2">
						<span style="TEXT-DECORATION: underline">和杀毒软件的相互作用</span>
						<br />
						<br />当web容器在运行时，而杀毒软件又同时运行在同样的系统上，这种情况下在应用中使用FileUpload容易导致一些很难预料的事情.这部分将描述一些你可能要遇到的情况，我们会提供一些方法来处理它们。默认的FileUpload实现将会使超过它在内存中大小的上传的选项写入到磁盘。而当这样的文件关闭后，任何系统中的杀毒软件都会被唤醒,然后去检查它，然后会潜在地隔离这个文件--就是说，将它移动到一个不产生问题的特定地方。这样一来，对开发者来说当然是一个意外，因为刚刚上传的文件将不能被处理了。从另一方面来说，小于设定的内存大小的那些上传的文件将被保持在内存中，这样一来，将不会被杀毒软件所检测到，这样就有可能使病毒以某种方式驻留在了系统中了（虽然如果一旦它被写入到磁盘，杀毒软件就会定位并检测到它）。一个通用的解决方法是在系统中专门设置一个目录来存放这些上传的文件，然后配置杀毒软件忽略这个目录。这样将确保上传的文件在系统中不被隔离，但是这样就把扫描病毒的责任交给了应用程序的开发者了。扫描这些上传的文件的任务可以在外部的处理中实现。这样可以将干净的文件移动到一个“改进”过的地方，或者也可以把杀毒集成到应用中去。至于怎么将外部处理或集成病毒扫描到一个<br />应用，这个已经超出了本文档的讨论范围。<br /><br /></font>
				<font size="2">
						<span style="TEXT-DECORATION: underline">下一步是什么<br /><br /></span>希望这个页面能提供给你一个好的意见，让你在你自己的应用中能使用FileUpload。更多关于这里介绍的方法，以及其它可用的方法，你可以参照api文档。这里介绍的用法已经可以满足大多数的文件上传的需要了，当然，如果你还有更多的复杂的需求，使用它的灵活的自定义配置的能力，FileUpload一定可以能够帮助你。<br /><br /></font>
				<font size="5">
						<strong>另一个实例：<br /><br /><br /></strong>
				</font>
		</p>
		<p>
				<strong>commons.fileupload实现文件的上传，代码如下：<br /></strong>&lt;%! <br /> //服务器端保存上传文件的路径 <br />    String saveDirectory = "g:\\upload\\";<br />    // 临时路径 一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录<br />    String tmpDirectory = "g:\\upload\\tmp\\";<br />    // 最多只允许在内存中存储的数据大小,单位:字节<br />    int maxPostSize = 1024 * 1024; <br />%&gt;<br />&lt;%<br />    // 文件内容 <br />    String FileDescription = null; <br />    // 文件名（包括路径）<br />    String FileName = null;<br />    // 文件大小<br />    long FileSize = 0;<br />    // 文件类型<br />    String ContentType = null;</p>
		<p>%&gt;</p>
		<p>&lt;%<br />   DiskFileUpload fu = new DiskFileUpload();<br />    // 设置允许用户上传文件大小,单位:字节<br />   fu.setSizeMax(200*1024*1024);<br />    // 设置最多只允许在内存中存储的数据,单位:字节<br />   fu.setSizeThreshold(maxPostSize);<br />    // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录<br />   fu.setRepositoryPath("g:\\upload\\tmp\\");<br />    //开始读取上传信息 得到所有文件<br />   try{<br />      List fileItems = fu.parseRequest(request);<br />     }catch(FileUploadException e){<br />         //这里异常产生的原因可能是用户上传文件超过限制、不明类型的文件等<br />         //自己处理的代码<br />     }<br />%&gt;<br />&lt;%<br />   // 依次处理每个上传的文件<br />   Iterator iter = fileItems.iterator();<br />   while (iter.hasNext()) {<br />     FileItem item = (FileItem) iter.next();<br />       //忽略其他不是文件域的所有表单信息<br />     if (!item.isFormField()) {<br />       String name = item.getName();<br />       long size = item.getSize();<br />       String  contentType = item.getContentType();<br />     if((name==null||name.equals("")) &amp;&amp; size==0)<br />       continue;<br />%&gt;<br />&lt;%<br />   //保存上传的文件到指定的目录<br />  String[] names=StringUtils.split(name,"\\");  //对原来带路径的文件名进行分割<br />   name = names[names.length-1];<br />   item.write(new File(saveDirectory+ name));<br />  }<br />}<br />%&gt;<br /> 下面是其简单的使用场景：<br /> A、上传项目只要足够小，就应该保留在内存里。<br /> B、较大的项目应该被写在硬盘的临时文件上。<br /> C、非常大的上传请求应该避免。<br /> D、限制项目在内存中所占的空间，限制最大的上传请求，并且设定临时文件的位置。<br /> <br /> 可以根据具体使用用servlet来重写，具体参数配置可以统一放置到一配置文件<br />  
</p>
		<hr />
		<p>
				<br /> <strong>文件的下载用servlet实现</strong><br />      public void doGet(HttpServletRequest request,<br />                       HttpServletResponse response)<br />     {<br />         String aFilePath = null;    //要下载的文件路径<br />         String aFileName = null;    //要下载的文件名<br />         FileInputStream in = null;  //输入流<br />         ServletOutputStream out = null;  //输出流 </p>
		<p>
		</p>
		<p>         try<br />   {<br />          <br />             aFilePath = getFilePath(request); <br />             aFileName = getFileName(request);</p>
		<p>             response.setContentType(getContentType(aFileName) + "; charset=UTF-8");<br />             response.setHeader("Content-disposition", "attachment; filename=" + aFileName);</p>
		<p>             in = new  FileInputStream(aFilePath + aFileName); //读入文件<br />            out = response.getOutputStream();<br />            out.flush();<br />            int aRead = 0;<br />           while((aRead = in.read()) != -1 &amp; in != null)<br />        {<br />             out.write(aRead);<br />         }<br />           out.flush();<br />      }<br />       catch(Throwable e)<br />     {<br />     log.error("FileDownload doGet() IO error!",e);<br />      }<br />         finally<br />         {<br />             try<br />             {<br />                 in.close();<br />                 out.close();<br />             }<br />             catch(Throwable e)<br />             {<br />              log.error("FileDownload doGet() IO close error!",e);<br />             }<br />         }<br />     }</p>
		<p>
				<br />
				<br />
				<br />
		</p>
<img src ="http://www.blogjava.net/mphome/aggbug/78984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-03 20:51 <a href="http://www.blogjava.net/mphome/archive/2006/11/03/78984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转贴 jsp生成随机图片 </title><link>http://www.blogjava.net/mphome/archive/2006/11/03/78809.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Thu, 02 Nov 2006 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/03/78809.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/78809.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/03/78809.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/78809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/78809.html</trackback:ping><description><![CDATA[   生成有4个随机数字和杂乱背景的图片，数字和背景颜色会改变，服务器端刷新（用history.go(-1)也会变） 
<p>    原型参考ALIBABA <a href="http://china.alibaba.com/member/showimage">http://china.alibaba.com/member/showimage</a> 产生验证码图片的文件image.jsp</p><p>&lt;%@ page contentType="image/jpeg" import="java.awt.*,<br />java.awt.image.*,java.util.*,javax.imageio.*" %&gt;<br />&lt;%!<br />Color getRandColor(int fc,int bc){//给定范围获得随机颜色<br />        Random random = new Random();<br />        if(fc&gt;255) fc=255;<br />        if(bc&gt;255) bc=255;<br />        int r=fc+random.nextInt(bc-fc);<br />        int g=fc+random.nextInt(bc-fc);<br />        int b=fc+random.nextInt(bc-fc);<br />        return new Color(r,g,b);<br />        }<br />%&gt;<br />&lt;%<br />//设置页面不缓存<br />response.setHeader("Pragma","No-cache");<br />response.setHeader("Cache-Control","no-cache");<br />response.setDateHeader("Expires", 0);</p><p>// 在内存中创建图象<br />int width=60, height=20;<br />BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);</p><p>// 获取图形上下文<br />Graphics g = image.getGraphics();</p><p>//生成随机类<br />Random random = new Random();</p><p>// 设定背景色<br />g.setColor(getRandColor(200,250));<br />g.fillRect(0, 0, width, height);</p><p>//设定字体<br />g.setFont(new Font("Times New Roman",Font.PLAIN,18));</p><p>//画边框<br />//g.setColor(new Color());<br />//g.drawRect(0,0,width-1,height-1);</p><p>// 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到<br />g.setColor(getRandColor(160,200));<br />for (int i=0;i&lt;155;i++)<br />{<br /> int x = random.nextInt(width);<br /> int y = random.nextInt(height);<br />        int xl = random.nextInt(12);<br />        int yl = random.nextInt(12);<br /> g.drawLine(x,y,x+xl,y+yl);<br />}</p><p>// 取随机产生的认证码(4位数字)<br />String sRand="";<br />for (int i=0;i&lt;4;i++){<br />    String rand=String.valueOf(random.nextInt(10));<br />    sRand+=rand;<br />    // 将认证码显示到图象中<br />    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));<br />//调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成<br />    g.drawString(rand,13*i+6,16);<br />}</p><p>// 将认证码存入SESSION<br />session.setAttribute("rand",sRand);</p><p>// 图象生效<br />g.dispose();</p><p>// 输出图象到页面<br />ImageIO.write(image, "JPEG", response.getOutputStream());<br />%&gt;</p><p><br />使用验证码图片的文件a.jsp </p><p>&lt;%@ page contentType="text/html;charset=gb2312" %&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;认证码输入页面&lt;/title&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt; <br />&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"&gt; <br />&lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt; <br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form method=post action="check.jsp"&gt;<br />&lt;table&gt;<br />&lt;tr&gt;<br />&lt;td align=left&gt;系统产生的认证码：&lt;/td&gt;<br />&lt;td&gt;&lt;img border=0 src="image.jsp"&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td align=left&gt;输入上面的认证码：&lt;/td&gt;<br />&lt;td&gt;&lt;input type=text name=rand maxlength=4 value=""&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td colspan=2 align=center&gt;&lt;input type=submit value="提交检测"&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p><p><br />验证的页面check.jsp </p><p>&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;认证码验证页面&lt;/title&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"&gt; <br />&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"&gt; <br />&lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt; <br />&lt;/head&gt;</p><p>&lt;body&gt;<br />&lt;% <br /> String rand = (String)session.getAttribute("rand");<br /> String input = request.getParameter("rand");<br />%&gt;<br />系统产生的认证码为： &lt;%= rand %&gt;&lt;br&gt;<br />您输入的认证码为： &lt;%= input %&gt;&lt;br&gt;<br />&lt;br&gt;<br />&lt;%<br />  if (rand.equals(input)) {<br />%&gt;<br />&lt;font color=green&gt;输入相同，认证成功！&lt;/font&gt;<br />&lt;%<br />  } else {<br />%&gt;<br />&lt;font color=red&gt;输入不同，认证失败！&lt;/font&gt;<br />&lt;%<br />  }<br />%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p><img src ="http://www.blogjava.net/mphome/aggbug/78809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-03 00:02 <a href="http://www.blogjava.net/mphome/archive/2006/11/03/78809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Blog开题</title><link>http://www.blogjava.net/mphome/archive/2006/11/02/78785.html</link><dc:creator>昨夜人生</dc:creator><author>昨夜人生</author><pubDate>Thu, 02 Nov 2006 13:45:00 GMT</pubDate><guid>http://www.blogjava.net/mphome/archive/2006/11/02/78785.html</guid><wfw:comment>http://www.blogjava.net/mphome/comments/78785.html</wfw:comment><comments>http://www.blogjava.net/mphome/archive/2006/11/02/78785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mphome/comments/commentRss/78785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mphome/services/trackbacks/78785.html</trackback:ping><description><![CDATA[    持续了几个星期的java学习，大概的将J2EE各方面的框架，和方法掌握了。<br /><br />    记录以下今天写程序时的总结：<br /><br />       1.不要将ResultSet的对象通过setAttribute来传递，应为如果对应的connection关闭的话ResultSet会失效的。<br />       2.Hibernate中的CreateQuery("from Table as a where a.name =?")  中的name是其*.bml.htm中定义的字段和数据库中的字段是不同的。<br />       3.Struts中使用普通的表单元素<br />             &lt;html:form action="/register.do"&gt;<br />                  用户名:&lt;html:text property="username"/&gt;&lt;br/&gt;<br />                  密码1: &lt;html:text property="password1"/&gt;&lt;br/&gt;<br />                  密码2：&lt;html:text property="password2"/&gt;&lt;br/&gt;<br />            <br />                               &lt;html:submit value="Register"/&gt;<br />           &lt;/html:form&gt;   可以<br />            &lt;html:form action="/register.do"&gt;<br />                  用户名:&lt;input type="button"&gt;&lt;br/&gt;<br />                 <br />           &lt;/html:form&gt;   可以<br /><br />        &lt;form action="/register.do"&gt;<br />            &lt;input type="text" name="username" value="" /&gt;&lt;br/&gt;<br />            &lt;input type="text" name="password1" value="" /&gt;&lt;br/&gt;<br />            &lt;input type="text" name="password2" value="" /&gt;&lt;br/&gt;<br />            &lt;input type="submit" value="ok" /&gt;<br />        &lt;/form&gt;  不可以<br />  <br />         注意Form的action，如果用struts标签的话"/"表示当前web应用的根目录，如果用html标记的话"/"表示localhost的根目录。第三种<br />            把/register.do 改成register.do。<br /><br />    感觉自己编写的代码太没有质量拉 ，要多看看别人的代码，学会总结。<br />   <br />   还有英语作文要写，哦还有车牌识别系统  ，事情真多  。<br /><br />   明天继续.byby<img src ="http://www.blogjava.net/mphome/aggbug/78785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mphome/" target="_blank">昨夜人生</a> 2006-11-02 21:45 <a href="http://www.blogjava.net/mphome/archive/2006/11/02/78785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>