<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>2007年我很忙……</title>
    <description></description>
    <link>http://hobitton.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>2007年结束了，是的，当时就是这样……</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/152104" style="color:red;">http://hobitton.javaeye.com/blog/152104</a>&nbsp;
          发表时间: 2008年01月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>中国的2007年可以用一个&ldquo;涨&rdquo;来形容，偶的2007也可以用一个字表示，那就是：忙。</p>
<p>偶的2007年忙，而且，到现在回想起来，还不知道忙了些什么东西出来。今天有些不爽，就干脆都写些2007年不爽的事情。</p>
<p>过年回成都，生病，天天输液，烦死球，一个感冒搞那么大，不爽，生病那么久一个人上医院，一个人回家煮稀饭，心那是倍凉倍凉的。</p>
<p>病好了就出差，天天加班，晚上不整到个2点睡不成。等回到成都的时候，还是加班，而且还没周末，靠，回成都干嘛，不如就在外面出差。上班，天天上班，加班，天天加班，加班还没加班费&hellip;&hellip;这样一直到了7、8月的样子，周末可以不用加班了，但是特别烦周末的早上看到手机上面公司的电话打过来，看到就想把手机给扔了。。。</p>
<p>9月的时候，想换个环境，就给上面的头讲，希望一个月后就离职了，因为合同一个月后到期了。顶头上司不错，比较宽松，让我能够方便的请假去面试，呃。。。每天两次面试，上午去一个地方，下午去一个地方，中午或许要回公司处理事情，或者下午面试完了比较早也要回公司，偶得出了结论，原来找工作和上班一样的累，抓狂了。。。。</p>
<p>国庆，没过完的时候，女朋友生病了，唉。。。华西这个鸟地方挂个号就tmd那么难，，，！！牵挂着吃不好，挂号又睡不好，貌似下来瘦了快十斤。</p>
<p>女朋友病慢慢好了，就11月了，，终于心一横，离职得了，妈的，说辞职说了两个月，没为公司做什么事情，也没找到什么好工作，就白忙了两个月。然后继续忙着找工作，本来说休息下的，可是，闲的时候觉得反正面试也是休闲，就去去得了，结果去了又发现很多公司偶走到门口就想回头睡觉的那种，唉。。。。反正就是天天坐着公交进这个大楼，出来，然后上公交进另外一个大楼。后来吸取教训，干脆老子不投简历了，盯着几个顺眼的才投简历。</p>
<p>然后的某天，大概11月下旬，原来公司的头给我讲有个小项目让帮忙做下，具体东西我自己去谈。当时觉得反正虽然天天到处跑，貌似也不是特别忙，就接下来，这一做，做到现在了&hellip;&hellip;&hellip;&hellip;期间做好了对方不满意，赶工修改，继续给对方看，，然后循环，，，。也懒得投简历，偶尔上上求职网站，，，累，，每天赶工最早12点睡觉，晚的也有3、4点。。我不明白我都是为了什么！！</p>
<p>上周，家里有事情又临时决定回家，，死火车，坐的老子憋死了。。特别是回来成都的时候，对面坐个如花，大摇大摆的捞起衣服就喂儿子，差点吐了。。喂完儿子又用硕大的食指掏鼻孔，，啊啊啊。。。真想从车上跳下去。。。</p>
<p>回到成都，恩，今天，12月31号，最后一天，早上起床，准备去建行补办一张卡，被窝里面想了半天今天的行程：先起床洗脸刷牙拉屎，然后看看抽屉里面还剩下几多钱，再然后到成都商业银行看看还剩下多少钱，再然后骑着偶的坐骑到磨子桥的建行补办卡，然后回来吃午饭，然后，下午踢球。而现实是这样的：起床顺利洗脸刷牙，拉屎完毕，发现厕所没纸了，大喊几声，靠，都不在，怎么办，，不说，反正最后擦了屁股，，翻抽屉的钱，翻抽屉完毕，发现偶的几百大洋不翼而飞，，有些郁闷了，回家前放得好好的就不见了。沉着脸出去商业银行，发现和我预想的不一样，只有两百块钱。。靠，继续到建行，，停车差点摔一跤，日，建行门口tmd路都不修好点。。进去拿了个挂失的号，等着，半小时后，所有比我后到的人都叫到了，就是不叫我，急了，上去柜台问，我靠，不晓得建行哪儿出问题了，居然没办法叫2开头的号，！！后来建行mm居然叫我重新拿存取款的号，毛了，争了一番，同意让我去办，忍着火平静的说：偶补办卡，建行mm给我讲：这个补办卡，需要交xx块钱，需要先挂失，挂失后xx天才能补办，然后还需要&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;偶不听了，偶把拿的号码纸扔了，心里把建行老总家里若干女性问候了一遍。。。去车棚推车，不敢骑了，怕过马路被车子撞死。。。回到家，没心踢球，，，，看rep吧。。就这样看了一下午，啥也不想干。。偶的2007年，，，，的最后一天，真tmd的是一坨屎。</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/152104#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 01 Jan 2008 00:14:57 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/152104</link>
        <guid>http://hobitton.javaeye.com/blog/152104</guid>
      </item>
      <item>
        <title>定一个目标，不知道做不做得到。</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/126751" style="color:red;">http://hobitton.javaeye.com/blog/126751</a>&nbsp;
          发表时间: 2007年09月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>偶现在其实很想学javascript，当然，过段时间可能我又很想学java，再当然，其实两个我都比较喜欢学，但是得有个先后。</p>
<p>so，偶希望偶想学什么的时候（当然需要都比较符合我目前的客观条件），那么我就去学，这样的话效率会高不少。</p>
<p>但是，偶目前还找工作嗒？javascript很多人不怎么看好也不怎么瞧得起。。唉唉，，如当年的php。</p>
<p>so，很两难。</p>
<p>另，重申一遍：态度决定一切。</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/126751#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Sep 2007 23:11:58 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/126751</link>
        <guid>http://hobitton.javaeye.com/blog/126751</guid>
      </item>
      <item>
        <title>累的很，霉的很。。。</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/74773" style="color:red;">http://hobitton.javaeye.com/blog/74773</a>&nbsp;
          发表时间: 2007年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近公司的工作好像一下就多了起来，从去年的悠闲到现在每天加班，简直是天壤之别，简直就让人觉得不是在同一个公司上班。。过年过来就去德阳，紧接着去绵阳，然后回来成都，少有在晚上10点前离开办公地点的。前两天有次下班比较早，和一个同事走在回家路上，忽然对我说了句：&ldquo;哇，太感动了，今天下班居然天还是亮的。。。&rdquo;，直接晕死&hellip;&hellip;</p>
<p>电信的需求太多，公司的安排又有些不科学，搞得忙了个屁颠屁颠还不讨好。。昨天晚上搞到4点半才回家，早上9点就被公司电话吵醒，又到公司去，累的吐血。而且，目前的时间安排，已经确定，五一假期已经没有了，抓狂ing!!</p>
<p>去年到现在一直在玩一个网页游戏：Travian，看起来很休闲的游戏，和几个同学一起玩。。然后玩着玩着当真了，像模像样的带领联盟的人打仗。。这一来，游戏里面大大小小的事情又来了，打仗，外交，联盟内务等等，工作这么忙，还玩这游戏，，，直接想放弃这游戏了，可是又算是个领头的人，不好意思不负责的就一走了之，，目前犹豫中。。。等待隐退。。</p>
<p>唉，累也就算了，不过为什么今年还这么倒霉呢？？</p>
<p>开年过来，一个感冒花了偶￥800，开天辟地了，对感冒我从来持轻视态度，可这次把我整惨了。之前只输过一次液，结果这次到了后面护士在我手上都找不到可以输液的地方了，我郁闷。然后，今天，mm把电瓶车停楼梯口到我这儿玩，一个小时多出去，车子就不见了，￥2000啊。唉，其实钱也不是问题了，但是让人感觉特别的不爽啊。。。逮到这小偷，把丫JJ给剪了！！</p>
<p>唉唉，快1点了，得睡觉啊，明天上班不能去晚了啊。。</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/74773#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Apr 2007 00:50:57 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/74773</link>
        <guid>http://hobitton.javaeye.com/blog/74773</guid>
      </item>
      <item>
        <title>春天来了，感冒好了……</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/63082" style="color:red;">http://hobitton.javaeye.com/blog/63082</a>&nbsp;
          发表时间: 2007年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>写了好多又删了，，感冒没什么说的。</p>
<p>感冒郁闷了，不仅仅是感冒，还有其他的，，，所有的计划都打乱了。。</p>
<p>感冒一好就出差，，不晓得是好事还是坏事。出差可以任意的happy，但是偶的计划，就只有继续往后面拖延，我不喜欢。</p>
<p>我快爱上这次感冒了。无语。</p>
<p>欲语泪先流啊&hellip;&hellip;</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/63082#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 Mar 2007 22:54:00 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/63082</link>
        <guid>http://hobitton.javaeye.com/blog/63082</guid>
      </item>
      <item>
        <title>快过年咯~</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/54433" style="color:red;">http://hobitton.javaeye.com/blog/54433</a>&nbsp;
          发表时间: 2007年02月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          娃哈哈。。明天最后一天班了，，回家好好吃几顿，腊肉啊，香肠啊，，爽死。。。。
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/54433#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 Feb 2007 11:19:09 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/54433</link>
        <guid>http://hobitton.javaeye.com/blog/54433</guid>
      </item>
      <item>
        <title>忽忽，抢楼机完成……</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/44256" style="color:red;">http://hobitton.javaeye.com/blog/44256</a>&nbsp;
          发表时间: 2007年01月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>元旦放了五天，睡了几天好觉，也把抢楼机完成了。现在就天天把程序挂着，看着console里面提示抢到1楼了，就跑去yaoyuan看看，感觉就像是挖了个陷阱，过会儿就去捡东西一样&hellip;&hellip;</p>
<p>程序完成了，对httpClient、jDom、Tidy的使用也熟悉了不少。虽然程序运行的效率应该还行，但是说实在话我对我写的程序结构很不满意。大概是原来的PHP写多了，准确的说是面向过程的编程方式写多了。脑子里面总是想着去写一个个的功能模块，写一个个的function（虽然我实际写的是method），然后拼凑起来，就是一个程序了。。。</p>
<p>我不知道该怎样去写Java的程序，思维方式没有转变过来，也许是我写的Java程序太少，也或许是我看别人的源代码看的太少，反正，什么都是太少&hellip;&hellip;</p>
<p>再说下抢楼机吧：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="comment">//获取一个url的内容&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;InputStream&nbsp;getInputStream(String&nbsp;url){} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//把从url获取的InputStream解析成xml文件并保存下来 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;Node&nbsp;getDocument(InputStream&nbsp;inputStream,&nbsp;String&nbsp;outFileName){} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//登陆yaoyuan并且获取登陆的cookie </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;Cookie[]&nbsp;getCookie(){} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//获取首页上没有回复的帖子ID </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;ArrayList&nbsp;getUnreplyRepId(Document&nbsp;doc){} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//获取已经回复帖子中自己的回复的楼层数 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;ArrayList&nbsp;getReplyFloor(Document&nbsp;doc){} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//从xml文件中获取随机的回复字符串 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;String&nbsp;getRandomReply(String&nbsp;configFile,&nbsp;String&nbsp;replyStringXPath) &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comment">//向没有回复的帖子post随机的回复 </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;doPostReply(String&nbsp;unReplyRepId,&nbsp;String&nbsp;randomReply,Cookie[]&nbsp;cookie){}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>就这些方法，，思路还算清晰，不过该死的cookie浪费了我一天的时间，因为把站点写错了，主要还是因为对httpClient的使用不熟悉，不过httpClient设置cookie的方式也比较搞笑就是了：</p>
<p>已知我有一个&nbsp;Cookie数组cookie[]，一般来说设置cookie应该是：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>HttpState&nbsp;initialState&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HttpState();&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;&nbsp;i &lt; cookie.length; i++){&nbsp;</span></li>
    <li class=""><span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;initialState.addCookie(cookie[i]);&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>但是httpClient必须这样设置：<font face="Arial"><span></span></font>而里面的myName=scu-wangdi完全是多余的，我只是为了方便，反正多加一个cookie过去yaoyuan也不会有什么影响。。。</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>HttpState&nbsp;initialState&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HttpState(); &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;String&nbsp;cookieString&nbsp;=&nbsp;</span><span class="string">&quot;scu-wangdi&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;i&nbsp;&lt;&nbsp;cookie.length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieString&nbsp;+=&nbsp;</span><span class="string">&quot;;&quot;</span><span>&nbsp;+&nbsp;cookie[i]; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;initialState.addCookie(</span><span class="keyword">new</span><span>&nbsp;Cookie(</span><span class="string">&quot;www.yaoyuan.com&quot;</span><span>,&nbsp;</span><span class="string">&quot;myName&quot;</span><span>,&nbsp;cookieString,&nbsp;</span><span class="string">&quot;/&quot;</span><span>,&nbsp;</span><span class="keyword">null</span><span>,&nbsp;</span><span class="keyword">false</span><span>)); &nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p>总之，程序是完成了。。。需要改进的还有很多。。。。。唉。。继续迷茫&hellip;&hellip;</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/44256#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 07 Jan 2007 18:59:26 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/44256</link>
        <guid>http://hobitton.javaeye.com/blog/44256</guid>
      </item>
      <item>
        <title>YY抢楼机……</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/39417" style="color:red;">http://hobitton.javaeye.com/blog/39417</a>&nbsp;
          发表时间: 2006年12月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>喜欢耍星际，喜欢看rep，所以yaoyuan.com我是常常去的。yaoyuan有个风格，就是里面的人喜欢抢楼，当然，抢到第一楼就可以捏楼下所有人的jj，是件很痛快的事情，娃哈哈。。。</p>
<p>想做一个自动抢楼的程序是很久之前的事情了，一直没有着手做，直到最近，前天吧，才开始&hellip;&hellip;</p>
<p>抢楼，对我来说，只有第一楼才是我感兴趣的。所以，抢楼程序需要满足这个需求。</p>
<p>步骤如下：</p>
<ol>
    <li>抓取首页的html进行分析取出最大的有效的SID(yaoyuan首页有rep上传，和rep下载都是用的SID需要分开) </li>
    <li>解析最大的SID对应的页面检查是否有回复 </li>
    <li>没有回复的话post自己定义好的随机字符串 </li>
</ol>
<p>其实，貌似原理简单，用socket连接上去post数据就是了。其实，里面还有很多细节问题。</p>
<ul>
    <li>解析html </li>
</ul>
<p>解析html有几种方式：</p>
<ol>
    <li>一是把html一行行的读出来，通过subString进行截取。 </li>
    <li>还有就是正则表达式获取。 </li>
    <li>另外还有就是把html解析成xml文件 </li>
</ol>
<p>三种方式第一种应该是最简单的，但是效率和扩展性不行，第二种较复杂，解析的速度应该不错，但是扩展性依然不行。第三种是我最倾向的。速度可能会慢些，但是由于把html解析成标准的xml文件，用dom来获取节点数据，是很规范的做法，如果要获取页面的其他数据，可以很方便的取得。</p>
<p>但是三种方式应用到yaoyuan，应用到抢楼来说的话，肯定是第一种占优势了，简单呗。yaoyuan的页面几年了都没有变过，即使变，修改下代码也是很simple的事情。</p>
<ul>
    <li>post数据 </li>
</ul>
<p>yaoyuan的php程序比较烂，连$_POST,$_GET的获取也没有区分开来。发表讨论只需要把什么用户密码搞成一个字符串，浏览器输入就可以了，，这种方式简单是简单，可惜没有办法换行。所以用POST的方式是最好的。</p>
<font face="Arial">
<div class="code_title">代码如下：</div>
</font>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>PostMethod&nbsp;pMethod&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;PostMethod(host); &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="comment">//&nbsp;&nbsp;method.setFollowRedirects(true); </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;SID&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;SID&quot;</span><span>,&nbsp;</span><span class="string">&quot;49997&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;type&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;type&quot;</span><span>,&nbsp;</span><span class="string">&quot;soft&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;act&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;act&quot;</span><span>,&nbsp;</span><span class="string">&quot;post&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;cont&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;cont&quot;</span><span>,&nbsp;reply); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;backurl&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;backurl&quot;</span><span>,&nbsp;</span><span class="string">&quot;/show.php?SID=49997&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;UserName&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;name&quot;</span><span>,&nbsp;username); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair&nbsp;Password&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair(</span><span class="string">&quot;psw&quot;</span><span>,&nbsp;password); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;NameValuePair[]&nbsp;postPair&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;NameValuePair[]&nbsp;{SID,&nbsp;type,&nbsp;act,&nbsp;cont,&nbsp;backurl,&nbsp;UserName,&nbsp;Password}; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;pMethod.setRequestBody(postPair);&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>这样就可以完成一个简单的post数据。其中的String reply是用xml文件定义好，然后自己获取的随机回复，这样就可以解决换行的问题。</p>
<ul>
    <li>线程</li>
</ul>
<p>还有一个就是线程了。要获取最大的SID并且，其他人访问同一个程序的时候直接访问已经获取到的SID，而不用再产生一个获取SID的实例，需要用到线程。不知道这算不算传说中的单值模式，，忽忽，设计模式没有学好&hellip;&hellip;这点我没有做了，什么时候得了解下。</p>
<p>这是用java的httpClient写的，java的socket本来也可以自己写，但是总是感觉没有httpClient爽&hellip;&hellip;</p>
<p>抢楼机没有写一个正式版的出来，因为剩下的都是一些杂七杂八的活了，不想写了。html的parse也搞累了，httpClient的登陆也把我头搞大了。还好，都已经写出demo程序了。</p>
<p>html parse: jTidy/nekoHTML/htmlParser...</p>
<p>http client:apache-commons-httpClient</p>
<p>xml parse:jDom</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/39417#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Dec 2006 14:11:00 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/39417</link>
        <guid>http://hobitton.javaeye.com/blog/39417</guid>
      </item>
      <item>
        <title>结束EOS的学习……</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/36617" style="color:red;">http://hobitton.javaeye.com/blog/36617</a>&nbsp;
          发表时间: 2006年11月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>从开始学习eos到现在快两个月了，之间作了一个项目，全eos开发，感慨颇多，最清楚的结论就是，我以后不用EOS开发了。。。</p>
<p>首先就是小毛病繁多。程序出错了，，往往不晓得是自己错了还是eos错了，只有重启server，我相信作java的都知道java耗内存，这个eos更是如此，512的内存，重启一次需要一分多钟，然后起来了又得重新连起刚刚断了的思维，这是对程序员来说一个很郁闷的过程。。还有断点加不上啊，，等等等等，，</p>
<p>再就是eos的程序开发出来，运行效率低下。eos是通过xml总线来传递各个逻辑层面的数据的，我的理解就是一个个的能实现各个功能的类通过xml传来的参数进行运行。就java来说，本来这个面向对象从这个类转到另外一个类，这数据传送就影响速度，不如php这类语言来的直接，但是java来说那，毕竟是编译型的而且面向对象确实有其不可替代的优点，因为稍微大型的系统，代码的重用和结构是很重要的。但是eos在java上面又多了一个xml总线，速度肯定就更慢了，而逻辑也并没有因此更加清晰。一堆为了操作xml总线的逻辑夹杂期间，这对于程序来说就是额外的开销，不必要的开销&hellip;&hellip;</p>
<p>eos当然也有其亮点，因为它的很多操作都是图元的形式表示出来，确实是很直观的（虽然我不是很喜欢这样的直观，但这或许是我的偏见，别人未必如此看）。它的调试功能不错。我写eos的程序，准确的说不是写出来的，是用eos调试出来的。虽然有时候断点添加不上去&hellip;&hellip;</p>
<p>也许这个亮点也就是一些公司看重的原因吧，所有eos才拿下了那么多的电信的项目。但是能拿下这么多项目并不代表eos就有多优秀（销售人员也有一份不小的功劳吧），相反我最初想学这个eos的，现在不想再花时间在上面，因为我觉得这不值。不如拿这点时间多去熟悉java的api，多去熟悉spring等等这样的优秀的框架。</p>
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/36617#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 29 Nov 2006 20:37:37 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/36617</link>
        <guid>http://hobitton.javaeye.com/blog/36617</guid>
      </item>
      <item>
        <title>对EOS的进一步看法</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/29919" style="color:red;">http://hobitton.javaeye.com/blog/29919</a>&nbsp;
          发表时间: 2006年10月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          到新公司有两周了，学EOS也有两周了，但是昨天才开始真正的用EOS做东西，其实所谓做东西，也仅仅是查询数据、添加数据而已。虽然如此，已经需要我全力以赴去做了，因为，看EOS文档，照着例子做两个东西出来和自己独立做，并且自己独立排错还是有很大区别。昨天今天费了九牛二虎之力总算晓得自己查询、添加数据的原理了。（脸红ing……）<br />我觉得EOS的比较有价值的是它的XML总线，各个逻辑之间不再用参数传递的方式，而是通过XML总线来传递。这也需要个人思维方式的一些转变。也许本来做Java的不是觉得太明显，我这个从PHP过来的人就明显觉得两种思维方式大大的不同。。<br />EOS的断点调试这些功能都不错，调试的时候看着XML数据的变化就知道你每一步是否成功了。这也是我这两天的最大收获了。<br />还有就是EOS的业务等等逻辑层面，用图示表示出来，很清晰，先想好各个流程，然后把组件拖过来，一个个的用线连接起来就ok了，很不错，之前还不是很喜欢这样的方式，现在有些改变看法了。<br />但是，EOS还是不能让我完全相信，总是会有些莫名的问题。现在的2003下面无法安装5.12的server patch，只有在xp下面安装，copy到2003下面，而且不能改目录，因为配置文件把目录都定死了。有时候登陆执行一个页面，它就莫名的跳到首页，虽然你的程序并没有错误，只有你重新启动服务器。还有就是自带的帮助文档啊，里面居然有错误啊，虽然对老手来说一看就看出来了，但是对新手，出了错误都不晓得哪个是错误，现在写一个东西都不敢全部靠文档了，没有安全感啊。再加上，本来就有些成见，唉，不晓得我是不是崇洋媚外了，很少有喜欢国产的软件，不喜欢国产的手机，，不是我不爱国啊，是这些国产的不争气，就像中国足球一样，我不看意甲，难道看中超？？<br />之前是自己学EOS，现在可以有问题问问同事，真正开始做东西，学起来就快了，自己可以感觉到自己的进步。努力，坚持。
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/29919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Oct 2006 23:30:51 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/29919</link>
        <guid>http://hobitton.javaeye.com/blog/29919</guid>
      </item>
      <item>
        <title>EOS印象</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/27173" style="color:red;">http://hobitton.javaeye.com/blog/27173</a>&nbsp;
          发表时间: 2006年10月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          新找了份Java的工作，结果去公司第一件事情是学习普元的EOS，说是要用这个东西开发，于是找文档就开看。<br />第三天结束了，看了三天的文档，看的迷迷糊糊的，大概晓得写程序的流程，懂那么些些EOS运行的机制。但是，不看文档还是写不出个Hello World来。<br />我并没有刻意去记开发流程里面的一些属性设置，一直都是看文档，有个大概印象，再去仔细写写程序。网上关于EOS的文章除了Primeton自己的文档、教程之外，少之又少，即使有也是05年的文章。多是争论EOS这个东东好还是不好，关于开发经验的文章，几乎是没有。<br />EOS提倡的面向构件于我看来就是面向组件，和Delphi的开发差不多。在编辑器里面拖几个框框用线连接起，组成业务逻辑、展现逻辑等等。然后每个框框设置属性，然后浏览器运行……<br />我不喜欢这种开发方式，大概是我从来对这样的图形拖拉方式很反感，何况又是国产货，我更加不信任。第一印象如此。然后真正看了文档，觉得文档写的还是很不错，流程以及运行原理都写的详细并且有不少的例子。虽然有一些错别字但还是不影响阅读的。可是对EOS的看法仍然没有大的改观。<br />展现逻辑、业务逻辑、页面逻辑、数据逻辑、运算逻辑、工作流逻辑，六个部分用XML总线的方式进行通信，从客户端提交请求，经过各个逻辑层的处理最终通过JSP页面呈现出来。业务逻辑、展现逻辑等等可以用图形流程化的方式进行描述，同时各层提供了不少的方便的构件（目前还没有找到各个构件的文档，连每个构件是干什么的都不知道）如果EOS自己带的东西不适应需求，可以扩展，在运算逻辑层写自己的Java代码。EOS主要是让业务流程清晰直观化，然后每层的耦合度都降低，可以适应快速的开发以及适应业务需求的变化。<br />上面就是我目前对EOS的理解，好像也还是清晰可靠，但是，我总是觉得差些什么，这已经算不上第一印象了，不知道是不是因为我对EOS本身提供的工具构件不熟悉的缘故。<br />接下来要做的东西还很多，我不了解的细节也很多，争取在下周一之前把EOS的原理都搞懂，然后可以开发一些小的东东出来吧。<br />公司没有人带，自己学，痛苦啊！！
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/27173#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 12 Oct 2006 21:09:44 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/27173</link>
        <guid>http://hobitton.javaeye.com/blog/27173</guid>
      </item>
      <item>
        <title>对面向对象的理解</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/25500" style="color:red;">http://hobitton.javaeye.com/blog/25500</a>&nbsp;
          发表时间: 2006年10月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          面向对象包括三个特征：继承、封装、多态。<br /><br />类的继承性是指从已有的一个类来extends子类，子类具有了父类的所有特征，同时，子类也可以有新的特性。比如：人是一个类，男人具有了人类的所有的特性，比如思考，比如劳动。同时，男人也有新的特性，比如男人会长胡子。<br /><br />类的封装是指类把所有的操作都封闭起来，仅仅提供接口出来让其他人使用，使用的人没有必要懂得类里面的操作，只需要懂得操作接口就可以了。比如开汽车，我们只需要懂得方向盘、刹车、油门等等的使用就可以了，没有必要知道刹车是如何构成的封闭好的操作。同时，封装也提高了程序的可替换性。比如两个汽车公司实现刹车的方式不一样，但是，只要我们学会了使用刹车，那么，开两个汽车公司的车就都没有问题了，我们不需要考虑他们怎样实现刹车这门技术的。<br /><br />类的多态性是一个对象的某项功能可以处理不同类型的问题，或者一个子类可以将父类的某个功能替换成新的功能，具体到编程的方面来说实现类的多态有override和overload，也就是覆写和重载。<br /><br />同时面向对象还有一个很重要的概念：抽象。抽象就是一个事物的本质。当然对于本质，不同的角度却会有不同的理解。男人，在和女人一起的时候，它的本质是人。在和所有的生物一起的时候，它的本质是动物。（虽然哲学家都说事物的本质只有一个，但是，我仍然坚持我的观点）
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/25500#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Oct 2006 21:12:58 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/25500</link>
        <guid>http://hobitton.javaeye.com/blog/25500</guid>
      </item>
      <item>
        <title>Java传递参数的机制</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/25483" style="color:red;">http://hobitton.javaeye.com/blog/25483</a>&nbsp;
          发表时间: 2006年10月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java究竟是应该按照什么来传递参数？值？引用？还是两者皆有？<br /><br />其实，弄清楚这个问题得从概念入手。什么是按值传递，什么是按照参数传递。<br /><br />定义一个变量TestObject obj = new TestObject(); 然后把 obj 作为参数传递给一个方法。如果在这个方法中，只能改变obj指向的这个对象的内容，那就是“值传递”，传过去的值就是指向这个对象的指针。如果在这个方法中通过操作，使得返回后的obj指向另外一个对象，那就是“引用传递”，传过去的是对这个指针变量的“引用”。<br /><br /><pre name="code" class="java">public class Para1 {
    public static void main(String[] args) {
	StringBuffer sb = new StringBuffer("Hello ");
	System.out.println("Before change, sb = " + sb);
	changeData(sb);
	System.out.println("After changeData(n), sb = " + sb);
    }

    public static void changeData(StringBuffer strBuf) {
	//strBuf = new StringBuffer("Hi ");
	strBuf.append("World!");
    }
}</pre><br /><br />把strBuf = new StringBuffer("Hi ");行注释掉和不注释掉将看到两个不同的结果注释的时候：<br />Before change, sb = Hello <br />After changeData(n), sb = Hello World!<br />不注释掉的时候：<br />Before change, sb = Hello <br />After changeData(n), sb = Hello <br />当不注释掉的时候并没有出现：<br />Before change, sb = Hello <br />After changeData(n), sb = Hi World!<br /><br />这说明了，在strBuf = new StringBuffer("Hi ");这行中，strBuf在内存中开辟了一个新的存储地址，不再和开始的sb指向同一个位置，所以，print出来的sb的值没有改变。这个时候的strBuf为"Hi World!"(可以在changeDate方法里面print出来)，sb为"Hello"。<br /><br />所以，根据上面的概念，Java传递参数是属于按值传递，这种情况下参数的值就是对该对象的引用。
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/25483#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Oct 2006 10:55:40 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/25483</link>
        <guid>http://hobitton.javaeye.com/blog/25483</guid>
      </item>
      <item>
        <title>关于abstract class和interface</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/25481" style="color:red;">http://hobitton.javaeye.com/blog/25481</a>&nbsp;
          发表时间: 2006年10月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java的interface和abstract class都可以定义不提供具体实现的方法。其中一个类不能继承自多个abstract class，但是可以实现多个interface。Java的类没有多重继承，所以用interface的概念来补充，通过实现多个interface来实现多重的继承。<br /><br />在Java中所有的对象都用类来描绘，但是不是每一个类都用来描绘对象的。用来描绘某一类对象共有的本质，这就是抽象。比如：形状存在着圆、三角形这样一些具体概念，它们是不同的，但是它们又都属于形状这样一个概念，形状这个概念在问题领域是不存在的，它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念，所以用以表征抽象概念的抽象类(这儿的抽象类并不是abstract class翻译而来的，它包括interface和abstract class)是不能够实例化的。我们可以构造出一个固定的一组行为的抽象描述，但是这组行为却能够有任意个可能的具体实现方式。<br /><br />从语言层面上面来讲：abstract class可以有自己的数据成员，也可以有非abstarct的成员方法，而在interface方式的实现中，只能够有静态的不能被修改的数据成员（也即interface是static final的），所有的成员方法都是abstract的。从这种角度来说，interface是abstarct class的一种特殊情况。abstract class可以提供某些方法的部分实现，而interface不可以，这大概就是abstract class唯一的优点吧，但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时，那么它所有的子类都一下子都得到了这个新方法，而interface做不到这一点，如果向一个interface里加入一个新方法，所有实现这个接口的类就无法成功通过编译了，因为你必须让每一个类都再实现这个方法才行。<br /><br />而从设计出发：假设在我们的问题领域中有一个关于Door的抽象概念，该Door具有执行两个动作open和close，此时我们可以通过abstract class或者interface来定义一个表示该抽象概念的类型，定义方式分别如下所示：<br />abstract class:<br /><pre name="code" class="java">abstract class Door{
    abstract void open();
    abstract void close();
}</pre><br />interface:<br /><pre name="code" class="java">interface Door{
    void open();
    void close();
}</pre><br />其他具体的Door类型extends absract class或者implements interface就可以了。<br />看起来好像使用abstract class和interface没有大的区别。<br /><br />但是现在如果要求Door加上报警的alarm功能，我们应该如何去设计程序的结构呢？<br />方案一、简单的在abstract class添加abstract void alarm()方法或者在interface中加一个alarm()方法？但是如果这样，在Door的定义中把Door概念本身固有的行为方法和另外一个概念"报警器"的行为方法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为"报警器"这个概念的改变（比如：修改alarm方法的参数）而改变。<br />方案二、既然open()、close()和alarm()是属于两个不同的概念，那么就应该分两个模块来设计。那，这样是应该分成两个abstract class、两个interface还是一个abstract class一个interface呢？<br />在java中，类是不支持多重继承的，所以，第一种方式不行，第二种方式，用两个interface来描绘：当我们明白AlarmDoor是属于alarm或者door的一种的时候，它会有一个侧重点，用两个相同的interface来描绘，很明显是不能够描绘出来问题的特点的。假设AlarmDoor是属于一个具有报警功能的Door，那么它本质上来说，是一个Door，不过是附加了alarm()的功能而已。所以对于Door的概念我们应该用一个abstract class去描绘，而alarm()的功能则用interface去描绘，代码如下：<br /><pre name="code" class="java">abstract class Door{
    abstract void open();
    abstract void close();
}
interface Alarm{
    void alarm();
}
Class AlarmDoor extends Door implements Alarm{
    void open(){...}
    void close(){...}
    void alarm(){...}
}</pre><br /><br />BTW:文章借鉴了csdn的jackrong的一篇文章的例子（原文地址已经不知道了），而本身对于abstarct class和interface的理解有一部分也来自这个文章，当是我模仿加抄袭写成的文章吧。初学Java，对概念确实达不到一个高度的认识，只有通过这样的方式，希望今后可以慢慢提高……
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/25481#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Oct 2006 10:19:12 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/25481</link>
        <guid>http://hobitton.javaeye.com/blog/25481</guid>
      </item>
      <item>
        <title>开始坚持写学习日记以及生活的感悟</title>
        <author>wangdi</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hobitton.javaeye.com">wangdi</a>&nbsp;
          链接：<a href="http://hobitton.javaeye.com/blog/25414" style="color:red;">http://hobitton.javaeye.com/blog/25414</a>&nbsp;
          发表时间: 2006年10月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          夜已经深了，又下起了小雨。成都的天气就是这样，来来往往阴晴不定的。<br /><br />爸爸妈妈暑假来的时候却热的厉害，大概是我关心他们不够，他们过来好多的日常生活用品都没有准备好，现在想起真的很内疚。我工作辞掉了，但是没有给家里人说，怕他们担心，但是每每爸妈打电话问起我工作的事情的时候，我总是很慌张。我不喜欢撒谎，却又总是不得不去撒谎。<br /><br />人生本来也是这样，我不愿意做这样的事情，我却不得不低下头去做。然后，做完事情，再后悔。<br /><br />我现在有房小东在我身边，一个傻傻的女孩子。我很开心，也很快乐。我还是很好耍，但是，至少有了上进的心了。大概是她的原因吧。我喜欢她，想要给她幸福，和她一起分享我的成功，因为她把她最美丽的日子给了我。<br /><br />今后的事情确实说不准，但是我会努力去做。孝敬父母，照顾好房小东，努力去赚多多的钱。<br /><br />难，所以需要坚持，就现在来说，我要学Java，我要找工作，其实蛮难的。毕竟，我没有Java的经验。这些都再说吧，有机会，我就希望自己去尝试一下。
          <br/>
          <span style="color:red;">
            <a href="http://hobitton.javaeye.com/blog/25414#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 01 Oct 2006 00:59:17 +0800</pubDate>
        <link>http://hobitton.javaeye.com/blog/25414</link>
        <guid>http://hobitton.javaeye.com/blog/25414</guid>
      </item>
  </channel>
</rss>