<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye论坛最新讨论</title>
    <description>JavaEye论坛最新讨论 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.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>终于找到工作，大家也说说现在面试的情况</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wlmouse.javaeye.com">魔力猫咪</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193761" style="color:red;">http://www.javaeye.com/topic/193761</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          终于找到工作了。对方告诉我去体检（指定的地方）。说真的，那里确实比我前年的体检严格得多。<br />公司给出的待遇是税前3000，五险一金，饭费补贴加手机补贴，附加商业医疗与意外保险一份。不过合同签得可有点长，上来就3年，试用6个月。以前遇到的都是1年1签的，撞到长的倒有点不敢签了。估计是试用期太长闹的。毕竟试用期总感觉不保险加只能拿8成。<br />那天是早上去的，因为路不熟加堵车还晚了点。到了之后就是填一个情况表，然后是技术面试，没笔试，就是谈了谈以前的项目，谈了谈SSH。其中说到Hibernate的部分配置文件怎么写，我实在不记得了，只好说需要查开发指南。然后是HR，谈谈公司情况、个人情况、要求等等。然后就说没问题了。结果下午就告诉我通过了，让我赶快体检去。<br />说真的，弄得我都有些晕乎。有点太快了。从前遇到的面试都是折腾笔试+谈谈情况，然后是说等1星期回信，最后没信。突然遇到一个反差这么大的，有些适应不过来。说真的，这家公司从目前来看还是很合适的，除了路有点远，我最快也要2个多小时。<br />从辞职到现在3个月了，经过了差不多10次应聘终于找到了新的工作，不知未来如何。<br />大家现在签约都是几年？今年新签约的是都改成3年的了吗？大家说说在《劳动合同法》实施后，IT开发方面的职位在签约的时候都有哪些新情况出现？<br />最后问一下，如果对方基本上打算要你的话，是否都是当场告诉你或者很快告诉你？如果给出“一个星期以内给信”到底有多大的真实性？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193761#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Fri, 16 May 2008 18:31:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193761</link>
        <guid>http://www.javaeye.com/topic/193761</guid>
      </item>
          <item>
        <title>奇怪的路径</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://caidehen.javaeye.com">CaiDeHen</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193961" style="color:red;">http://www.javaeye.com/topic/193961</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          找了很久，不知道是被地震震晕了还是怎么。郁闷了<br />routes.rb 片段<br /><pre name="code" class="java">
map.namespace :admin do |admin|
  admin.resources :categories do |category|
    category.resources :posts
  end 
end
</pre><br /><br />new.html.erb 里, 片段<br /><pre name="code" class="java">
&lt;% form_for :post, :url => admin_category_posts_path(@category) do |f| %>
</pre><br />问题出来了。提交不是去 create 而是跑去了 index<br />查看页面源文件也是：<br /><pre name="code" class="java">
&lt;form action="/admin/categories/1/posts" method="post">
</pre><br />怪了，为啥跑去index了？？<br />同样的方法在其他地方都是对的，就这个出错。。。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193961#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 21:05:56 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193961</link>
        <guid>http://www.javaeye.com/topic/193961</guid>
      </item>
          <item>
        <title>浏览器是否会解释执行web server的404输出中的JS代码？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://pi1ot.javaeye.com">pi1ot</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193559" style="color:red;">http://www.javaeye.com/topic/193559</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          某个项目需要在客户端调用JS数据文件时，若文件不存在进行一些处理，我修改了apache配置文件的error document设置，改为输出一段JS代码来触发客户端的处理函数，但是虽然IE/FF能看到输出的404 JS，却不执行。<br />或者类似需求有什么其他解决办法？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193559#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Fri, 16 May 2008 10:54:56 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193559</link>
        <guid>http://www.javaeye.com/topic/193559</guid>
      </item>
          <item>
        <title>Jasper Report</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmddl369.javaeye.com">xmddl369</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193959" style="color:red;">http://www.javaeye.com/topic/193959</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p><span style="font-size: small; font-family: courier new,courier;">1.Jasper Report</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193959#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 20:49:48 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193959</link>
        <guid>http://www.javaeye.com/topic/193959</guid>
      </item>
          <item>
        <title>JSF</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xmddl369.javaeye.com">xmddl369</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193956" style="color:red;">http://www.javaeye.com/topic/193956</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p><span style="font-size: small; font-family: courier new,courier;">1.JSF MVC</span></p>
<p><span style="font-size: small; font-family: Courier New;">2.JSF EVENT</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193956#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 20:47:04 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193956</link>
        <guid>http://www.javaeye.com/topic/193956</guid>
      </item>
          <item>
        <title>facebook chat on erlang</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://stackless-stack.javaeye.com">Stackless-Stack</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193955" style="color:red;">http://www.javaeye.com/topic/193955</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <a href="http://www.facebook.com/notes.php?id=9445547199" target="_blank">http://www.facebook.com/notes.php?id=9445547199</a><br />Facebook chat 跟踪报导 —— comet with mochiweb<br />话说 facebook 推出了支持高并发的 web im 引起众“hacker”(与 linux hacker 中的 hacker 相同的那个词)的一片哗然，纷纷出手研究其秘密。互联网上迅速的出现了一批“拆解 facebook webim”的文章。这里就是其中相当有意思的一篇。其中的干货如下：<br /><br />1 作者放出 firebug 发现，http header 的 server 字段赫然写着 MochiWeb/1.0 的字样。<br /><br />2 作者开动脑筋，在 mochiweb 基础之上，写了一个“最简单”的 facebook webim 概念模型，mochi loop 的核心代码如下：<br /><br />...<br />'GET' -><br />  case Path of<br />    "chat" -><br />      % 1) subscribing<br />      Room ! {self(), subscribe},<br />      % 2) waiting<br />      receive<br />        Message -><br />          % 3) everything went right<br />          Req:ok({"text/plain", Message})<br />      after 10000<br />        % 4) oOops, too long buddy.<br />        room ! {self(), unsubscribe},<br />        Req:not_found()<br />    end;<br />...<br />简而言之就是：在 browser 和 mochiweb 之间保持 10 秒的长连接，这(10s的)期间收到的任何消息都会即时发送给 browser ，然后再由 browser 内的代码再次发起下一个连接。作者提供了完整例子代码的下载。PS.关于这一实现方式的更多说明也可以参考拙作“the google way”。<br /><br />当然这只是一个“概念模型”，距离“实用价值”仍有一段距离。比如：这个 web 层如何与 ejabberd 接起来，如何识别同一个用户，如何增加更多的“聊天逻辑”。<br /><br />有兴趣(有时间)深入研究的读者可以移步阅读原文。如果看不到原文，请留言，以便“进行盗版”。<br /><br />http://erlang-china.org/misc/facebook_comet_in_mochiweb.html
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193955#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 20:34:43 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193955</link>
        <guid>http://www.javaeye.com/topic/193955</guid>
      </item>
          <item>
        <title>ruby&amp;rails 开发b/s版人事系统</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tencheer.javaeye.com">tx984471</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193950" style="color:red;">http://www.javaeye.com/topic/193950</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          初学ROR，开发了一个简版的人事系统。<br />主要包括系统设置、人事管理、薪资管理、绩效管理、报表等功能。<br />目前主要是功能的实现，还没进行各项数据的有效性检测和控制！<br />完善中……
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193950#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 20:09:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193950</link>
        <guid>http://www.javaeye.com/topic/193950</guid>
      </item>
          <item>
        <title>请问，大学教师待遇如何？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://torero.javaeye.com">Torero</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193946" style="color:red;">http://www.javaeye.com/topic/193946</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>创业进程受阻，闲来无事，到网上投了几份简历，其中有一份是应聘大学教师，仍然是Java相关职位。可是大学教师待遇如何呢？</p>
<p>&nbsp;</p>
<p>到网上搜索了一下，网上的说法不一，大多偏向于大学教师待遇一般，甚至偏低。更有甚者，说大学教师月薪两千都不到。同时也有人说，大学教师工资偏低，但是可以找很多兼职工作，所以收入一般比较可观。</p>
<p>&nbsp;</p>
<p>那家大学让我下周三去试讲。因为我有一年多的教师经验，又有更久的软件工程师经验，这样，下周三要讲的内容是我擅长的，所以，我觉得把握比较大。</p>
<p>&nbsp;</p>
<p>厦门是一个软件业相对落后的城市，去，可能工资不高；不去呢，又代表着要继续过这种飘摇的生活，两难中。</p>
<p>&nbsp;</p>
<p>现在我觉得，无论如何也要去看看，合适就作教师了。但是，除了薪资外，还应该注意哪些方面呢？</p>
<p>&nbsp;</p>
<p>谁可以给些建议？</p>
<p>&nbsp;</p>
<p>先行谢过！</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193946#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 19:35:01 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193946</link>
        <guid>http://www.javaeye.com/topic/193946</guid>
      </item>
          <item>
        <title>碰到一个钉子户，请大家给点意见</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bulargy.javaeye.com">bulargy</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193218" style="color:red;">http://www.javaeye.com/topic/193218</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          事情是这样的，小弟第1次做TL,带4个人一起做一个平台，其中有一位实习生是某一个公司资格很老的项目经理的亲戚弄进来，此人看上去虽然还算机灵，但是基础很差，并且十分的不虚心。其他组员都对他感到很无奈，我也对他很无奈。曾经向我的老大反应过这个问题，但是老大也没办法，可能是公司高层也很看重那位项目经理的缘故，拉不下面子来。<br />    我和我的老大都找这个实习生谈过，我老大还说他甚至已经把话说的比较重了。但是他好了3天又开始犯毛病了。<br /><br />列举一下他的部分让我郁闷的行为：<br />1. 长期不更新代码或者下载svn上最新的代码。<br />    经常自己改了2，30个类后再提交，我每次更新总能发现有鲜红的叉叉，然后对照的迁入日志找到他，去问他，他就说他的没问题；我一看他的代码还是几天前的。<br />2. 超级喜欢推卸责任<br />    不管是不是他的问题导致了开发中的一些bug或者错误，你只要问他，他连想都不想就脱口而出“肯定是XXX把什么改掉了”或者是“我什么都没动过”。我真的很讨厌这样的行为。作为一个实习生，一个新人，一个基础很差的开发者，犯错的机会是很大的。你做的或者和你的做的相关东西发生的问题，你总该去检查一下看看么。记得我刚工作那会，出了问题我都很紧张，生怕是自己什么地方写错了，影响到别人。<br />3. 超级不虚心<br />    这个也是让人非常受不了了，让他做什么，要么就是讨价还价“这样不好做啊，还是xxx这样吧”，要么就是“这个我不会，你帮我写一下”。有时候有不懂的问我或者其他成员，还没给他解释一半，就开始“这个我知道，那个我知道”，我靠，你都知道你问个xx啊~~~<br />4. 超级贪功<br />    我在我们的部门的confluence上列了一个项目的任务列表，让大家领取并且更新状态。本着开放的心态我让他们都可以更新，结果您猜怎么着，他老人家把我给他分的一个“xxx管理”任务自己拆成了5，6个“xxx查询”、“xxx修改”这样的任务了，生怕人家不知道他做了事情。真是无语啊。。。<br /><br />    其实大家都是从新人过来的，就算现在我也只是算一个比较不那么新的新人；对待新人我都是比较宽容的，不会分太复杂的任务，也不会用要求自己的要求去要求他，但是碰到这样的人，我真的很无奈。并且看样子似乎不可能把他踢出局的。不知大家有没什么好的建议。。。小弟先谢过了
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193218#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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, 15 May 2008 11:17:11 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193218</link>
        <guid>http://www.javaeye.com/topic/193218</guid>
      </item>
          <item>
        <title>让人头疼的新手</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daoger.javaeye.com">daoger</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192520" style="color:red;">http://www.javaeye.com/topic/192520</a>&nbsp;
          发表时间: 2008年05月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          刚进公司没多久时，领导让我带两个新人(07年7月份毕业的)。他们两个是试用期3个月都过了之后才参与到我们现在的项目中来的，算起来他们也工作了快一年了，可是今天无意中修改一个他们写过的一个类文件时，看到他们写的一些代码，让我又好气又好笑。可能也是我以前只注意给他们测试功能了，没怎么注意代码方面的问题吧！<br /><br />晒晒他们的部分代码！<br /><br /><pre name="code" class="java">

/**
	 * 查询方案金额总和
	 * 
	 * @param lottype
	 *            Long
	 * @return double
	 */
	public Double getsummation(Long lottype)
	{
		double sum = 0.00;
		List ls = null;
		String sql = "";
		if (sql != null)
		{
			sql = " select sum(amount) from OccurProj a where a.lottype = '" + lottype + "' ";
		}
		ls = find(sql);
		if (ls != null && ls.isEmpty())
		{
			for (int i = 0; i &lt; ls.size(); i++)
			{
				OccurProj occurproj = (OccurProj) ls.get(i);
				sum = sum + occurproj.getAmount();
			}
		}
		return sum;
	}


</pre><br /><br /><pre name="code" class="java">
/**
	 * 根据主键查询明细信息
	 * 
	 * @param occurproj
	 *            OccurProj
	 * @return String
	 */
	public List queryById(Long id)
	{
		String sql = "";
		if (sql != null)
		{
			sql = " from OccurProj a where a.id=" + id;
		}
		return translateCode2Str(find(sql));
	}

</pre><br /><br /><pre name="code" class="java">
/**
	 * 参数查询
	 * 
	 * @param occurproj
	 *            OccurProj
	 * @param lottype
	 *            Long
	 * @return List
	 */
	public List queryByPara(String username, Long lottype)
	{
		String sql = "";
		if (username != null && username.length() > 0)
		{
			sql += " and a.username like ? ";
		}
		if (sql.length() > 1)
		{
			sql = " from OccurProj a where 1=1 and a.lottype = '" + lottype + "' " + sql;
		} else
			sql = " from OccurProj where lottype = '" + lottype + "' ";
		return translateCode2Str(find(sql));
	}
</pre><br /><br />我现在也体会到当初我找工作的时候为什么那么难了，同时也提醒一下即将毕业的朋友，想找到不错的工作，你的工作态度确实得端正！<br /><br />以前没带过新人，大家也介绍一下，带新人的经验吧！<br /><br /><br />我需要说明一下，我发贴的目的是想提醒一下临近毕业的朋友，不是公司不需要应届毕业生，应届毕业生有优点也有缺点。但是你进入公司以后，自己的发展和进步还是要靠自己的努力。工作了半年还能写出这样令人佩服的代码，那就只能是你自己的问题了，当然也有我自己的责任，毕竟是我带他们。 <br /><br />有则改之，无则加勉，别无他意，仅此而已！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192520#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Tue, 13 May 2008 11:25:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192520</link>
        <guid>http://www.javaeye.com/topic/192520</guid>
      </item>
          <item>
        <title>IBM社会招聘笔试题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://career.javaeye.com">jefferyzb</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193348" style="color:red;">http://www.javaeye.com/topic/193348</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>1．一个粗细均匀的长直管子，两端开口，里面有4个白球和4个黑球，球的直径、两端开口的直径等于管子的内径，现在白球和黑球的排列是wwwwbbbb，要求不取出任何一个球，使得排列变为bbwwwwbb。 <br />
<br />
答：<span style="background-color: #000000;">两端连接，将两个b倒入另一个口</span>
<br />
<br />
2．一只蜗牛从井底爬到井口，每天白天蜗牛要睡觉，晚上才出来活动，一个晚上蜗牛可以向上爬3尺，但是白天睡觉的时候会往下滑2尺，井深10尺，问蜗牛几天可以爬出来？ <br />
<br />
答：<span style="background-color: #000000;">8天</span>
<br />
<br />
3．在一个平面上画1999条直线最多能将这一平面划分成多少个部分？<br />
<br />
答：<span style="background-color: #000000;">1999001</span>
<br />
<br />
4．在太平洋的一个小岛上生活着土人，他们不愿意被外人打扰，一天，一个探险家到了岛上，被土人抓住，土人的祭司告诉他，你临死前还可以有一个机会留下一句话，如果这句话是真的，你将被烧死，是假的，你将被五马分尸，可怜的探险家如何才能活下来？ <br />
<br />
答：<span style="background-color: #000000;">我将会被五马分尸</span>
<br />
<br />
5．怎样种四棵树使得任意两棵树的距离相等。 <br />
<br />
答：<span style="background-color: #000000;">赤道上平均种三棵，南极或北极种一棵</span>
<br />
<br />
6．27个小运动员在参加完比赛后，口渴难耐，去小店买饮料，饮料店搞促销，凭三个空瓶可以再换一瓶，他们最少买多少瓶饮料才能保证一人一瓶？ <br />
<br />
答：<span style="background-color: #000000;">19</span>
<br />
<br />
7．有一座山，山上有座庙，只有一条路可以从山上的庙到山脚，每周一早上8点，有一个聪明的小和尚去山下化缘，周二早上8点从山脚回山上的庙里，小和尚的
上下山的速度是任意的，在每个往返中，他总是能在周一和周二的同一钟点到达山路上的同一点。例如，有一次他发现星期一的8点30和星期二的8点30他都到
了山路靠山脚的3/4的地方，问这是为什么？ <br />
<br />
答：<span style="background-color: #000000;">靠山脚的路难走，山上的庙到山脚不用一个小时</span>
<br />
<br />
8．有两根不均匀分布的香，每根香烧完的时间是一个小时，你能用什么方法来确定一段15分钟的时间？<br />
<br />
答：<span style="background-color: #000000;">弄断，四个头一块点燃，烧完了一根，再弄断，继续上面的过程，保证同时有四个火点，烧完后就是十五分钟。</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193348#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 17:36:01 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193348</link>
        <guid>http://www.javaeye.com/topic/193348</guid>
      </item>
          <item>
        <title>面试被问到了一个SQL问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://robbiet.javaeye.com">Robbiet</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193841" style="color:red;">http://www.javaeye.com/topic/193841</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          昨天去XX公司面试，进去先做一份试卷。其中有一题是让写出SQL语句的,贴出来大家看看<br /><br /><br /><br /><span style="color: red">一个表有三列，A,B,C 请用SQL语句实现如下功能：<br /><br />如果A列大于B列，选择A列，否则选择B列；如果B列大于C列，选择B列，否则选择C列，用<br /><br />SQL语句如何实现？</span><br /><br /><br /><br />昨天看到题，搜索脑子里的所有的SQL语句，也没有想出来。不知道大家知道不？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193841#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 10:01:53 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193841</link>
        <guid>http://www.javaeye.com/topic/193841</guid>
      </item>
          <item>
        <title>一个图像配准的小程序</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zsp.javaeye.com">zuroc</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193505" style="color:red;">http://www.javaeye.com/topic/193505</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <span style="font-size: large">为伊人而coding.<br /><br />源代码/程序见文末附件<br /><br />分享一下,虽然代码很乱,没有什么价值 <br /><br />Powered By Winxgui and Boost .<br /><br />Thanks for 许前辈,Visual FreeCode前辈 !<br /><br /><img src="http://zsp.javaeye.com/topics/download/72ede257-1074-366a-87c4-5650a64156c2" /><br /><br /></span>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193505#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Fri, 16 May 2008 04:36:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193505</link>
        <guid>http://www.javaeye.com/topic/193505</guid>
      </item>
          <item>
        <title>在ARM上搭JAVA平台遇到问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chenfengwu.javaeye.com">chenfengwu</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193853" style="color:red;">http://www.javaeye.com/topic/193853</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我最近在ARM平台上移植了JamVM虚拟机。在上面运行一些简单的程序没有问题，然后在上面运行Aglets，发现 一些AWT、网络等API出现错误。 <br />我现在也不知道哪些API是好用的，如果写程序一个一个的测试工作量太大了，不能用的API也不知道怎么去实现。我想可能是API与本地资源访问的接口上出了问题，在API中却找不到JNI的代码，不知API是怎么访问本地资源的。 <br />现在有如下一些问题想请教： <br />1 API是怎么访问本地资源的? <br />2 怎样来测试JAVA平台？ <br />3　以上分析如有误请指正 <br />谢谢！
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193853#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 10:45:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193853</link>
        <guid>http://www.javaeye.com/topic/193853</guid>
      </item>
          <item>
        <title>IE6/IE7和Firefox对Div处理的差异</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xlongbuilder.javaeye.com">xlongbuilder</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193801" style="color:red;">http://www.javaeye.com/topic/193801</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <h1>IE6/IE7和Firefox对Div处理的差异</h1>
<div class="txt_c">作者：miyiyi[at]gmail[点]com </div>
<div class="author">
<ul>
<li>来源:http://www.blabla.cn/html_ref/firefox_ie_diff01.html </li>
<li>时间：2006-12-20 </li>
</ul>
</div>
<h2>基本HTML代码</h2>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" </pre>
<pre>    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</pre>
<pre>&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;</pre>
<pre>&lt;head&gt;</pre>
<pre>&lt;title&gt;Div Float Sample&lt;/title&gt;</pre>
<pre>&lt;style type="text/css"&gt;</pre>
<pre>div { margin:3px; }</pre>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; }</pre>
<pre>&lt;/style&gt; </pre>
<pre>&lt;/head&gt;</pre>
<pre>&lt;body&gt;</pre>
<pre>&lt;div class="d1"&gt;</pre>
<pre>    &lt;div class="d2"&gt;&amp;nbsp;&lt;/div&gt;</pre>
<pre>    &lt;div class="d3"&gt;&amp;nbsp;&lt;/div&gt;</pre>
<pre>&lt;/div&gt;</pre>
<pre>&lt;/body&gt;</pre>
<pre>&lt;/html&gt;</pre>
<p>以上代码显示的结果如下，很正常，结果相同。</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_01.gif" alt="" /></p>
<p>下面会在这个基础上进行修改，修改的内容都在style中，其他代码就不再重复写了。</p>
<p>请注意，这里的Style中用到了min-height，这个和height是不同的，min-height指定了对象的一个最小高度，当对象的子内容高度超过这个最小高度是，这个对象会自动撑大。这是一个非常牛的style，可惜的是，在这个style和float这个同样牛的style一起使用的时候，就会出现各种问题。</p>
<h2>内部一个Div修改成为float:left</h2>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; }</pre>
<p>显示结果如下。</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_02.gif" alt="" /></p>
<p>这个结果中，Firefox有点离谱了，两个框叠在一起也就罢了，为什么那个红框会变大捏？而且变的大小也很诡异，不知道是按照什么公式计算出来的。IE在这里的显示应当是附和标准的。</p>
<h2>内部两个Div都修改成为float:left</h2>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }</pre>
<p>显示结果如下。</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_03.gif" alt="" width="600" height="180" /></p>
<p>在这种情况下，Firefox的结果尚能解释，可能是float把外层的Div也作为内层float影响的范围，这样内层的就不会将外层的Div撑大了。IE在这里出现了Margin失效的情况，可以解释为内层第二个float造成了影响。</p>
<h2>干脆把外层的Div也修改成为float:left</h2>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }</pre>
<p>显示结果如下，</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_04.gif" alt="" width="600" height="180" /></p>
<p>这种情况下，Firefox正常了，而IE延续了前面的不正常情况。</p>
<h2>外层是float:left，内层最后一个不再float:left</h2>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; }</pre>
<p>显示结果如下，</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_02.gif" alt="" /></p>
<p>这和前面第一种加float:left的情况相同。</p>
<h2>结论</h2>
<p>再重申一次，本文讨论的是一个比较高级的话题。如果在style中用height而不是min-height来设定高度，是不会出现以上这些问题的。不过，不用min-height就失去了div自动撑大这一个很有必要的特性。</p>
<p>在min-height和float:left的情况下，没有一种完美的写法让Firefox和IE结果相同。不过仍然可以发现绕开的方法。</p>
<p>进一步试验可以发现，margin遭到的影响在padding上比较好，所以最好是padding和margin都不用，或者只用padding。</p>
<p>两者相同的代码如下，</p>
<pre>div { padding:3px; }</pre>
<pre>.d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }</pre>
<pre>.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }</pre>
<pre>.d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }</pre>
<p>显示结果如下，</p>
<p align="center"><img src="http://cob.com.cn/tech/web-design/i/div_float_05.gif" alt="" width="600" height="180" /></p>
<p>呵呵，总算是一样了，虽然是凑合着一样了。幸好一样了，否则只好用table了。</p>
<p>当然所有这些情况也许是有合理解释的，说不定增加某一个style的设置，这些问题都迎刃而解了，不过目前我还没有找到这个设置。</p>
<h2>关于Doctype</h2>
<p>以上代码在下面这些Doctype下试验过，结果相同。</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"</pre>
<pre>   "http://www.w3.org/TR/html4/strict.dtd"&gt;</pre>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"</pre>
<pre>   "http://www.w3.org/TR/html4/loose.dtd"&gt;</pre>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"</pre>
<pre>   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</pre>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</pre>
<pre>   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</pre>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193801#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 23:32:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193801</link>
        <guid>http://www.javaeye.com/topic/193801</guid>
      </item>
          <item>
        <title>简单，易于Mock，仅依赖Spring的Domain Model</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://norther.javaeye.com">Norther</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193496" style="color:red;">http://www.javaeye.com/topic/193496</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <p>声明：该贴并不讨论Domain Model对于企业应用是否有意义，JE已经讨论过很多了，有很多优秀的帖供参考，这里仅谈实现。<br /><br />马丁大叔在《企业应用架构模式中》提出Domain Model（领域模型，领域对象，Domain Object）的概念后，我们发现这才是开发企业应用更OO的模式，以前的Transaction Script简直太土了。。。按照领域模型组织起来的面向对象语言代码，简直美极了，而ROR中的ActiveRecord就是一种Domain Model的实现，其威力大家也都见识过了。但是因为Java语言的特性的原因（例如静态类型），一直没有一种好的，优美的，简单的方式去实现，主要的难题就是领域对象和数据库逻辑的依赖关系（例如和Dao的依赖），大家关于这方面的尝试从来就没有断过，目前有以下几种主流的实现方式：<br /><br />1 放弃IOC，在DomainObject里直接去获得Dao的Instance，例如在Domain Object里拿到Spring上下文，直接get所需要的Bean，这样的优势就是简单，缺点就是DomainObject与Dao的实现以及上下文的耦合，领域逻辑的执行依赖数据库，无法单元测试。有的观点认为利用内存数据库，这样比真正的访问数据库要快，要方便，认为mock dao没有意义，这个观点还持保留意见 ：）<br /><br />2 利用一些框架的特性去实现Dao或者数据库访问能力的注入，例如利用Hibernate Interceptor，在Domain Object持久化的时候注入，这个方式有个明显的缺点就是Domain Object的生命周期依赖特定环境，也就是说这个Domain Object必须是由Hibernate构造的，其才会被注入Dao。这点其实很郁闷，我们以前有个项目就是用这种方式，自己写了Hibernate Interceptor去注入Domain Object，初看很爽很EASY，但是表现层这边，DWR将用户提交的表单数据转换成DomainObject后，那个Dao当然就是NULL了，于是自己又写了个DWR的 Convertor，去实现注入，而这个Domain Object真的是很Rich，随后又要通过web serivce传输，又要在webservice框架里加拦截器实现注入，真的是很郁闷。<br /><br />3 将Dao通过方法参数传入，优点就是简单，POJOS In Action里就提到了这种方式，缺点就是会影响方法以及接口的设计，经常会出现一个方法会有6个参数之多，而5个都是Dao，真是很丑陋。<br /><br />4 利用AspectJ等工具实现编译期注入，Spring 2.0刚出的时候，引入了AspectJ，其Reference中就提到了这个方式，我也尝试过，非常的麻烦，而且性能很慢，没记错的话当时大概是06年10月份，用的JDK5，现在不知道有没有改善，我当时还在JE发过新手帖询问过，某大牛说是BEA的虚拟机对其有优化，我也没条件尝试，而且编译期的手脚动太多了，感觉不是很好。<br /><br />上述几种方式都有明显的缺点，我们追求的好的领域模型的实现就是，领域模型不依赖实现，例如可以注入，易于单元测试，而且其生命周期不依赖特定的环境，还要够简单！难道真是Robbin所说的JAVA不适合Rich Domain Model吗？不见得：<br /><br />首先，不依赖实现，可以注入，那么要在领域模型中提供接口dao的set方法，允许被注入，这个很明确。</p>
<p>其次，领域模型的生命周期不依赖环境， 不依赖hibernate的构造，不被spring管理等。一般的情况，dao都是无状态的，单例的，<span style="color: red;">那么把领域模型中的依赖的dao设置为static</span>，static是class级别的，和具体的instance没关系，只要在应用初始化的时候给所有的领域模型的class注入一次，整个应用运行的时间周期，领域模型随意怎么new，在哪new，new出来的Domain Object的都可以访问一开始被注入的static的dao，实现了领域模型的生命周期不依赖环境，这样也易于测试，易于MOCK，和目前传统编程方式差别很小，仅仅把dao改为static的。</p>
<p>&nbsp;</p>
<p><span style="color: #000000;">但是spring可以实现对一个class的静态peroperty注入吗？答案是不能（经</span>bottom<span style="color: #000000;">同学修正，spring是可以静态property注入，但是还是要在所有bean初始化之前注入才行，所以还是要扩展，我在3楼已经回复说明）</span>，但是spring是个优美扩展性强的框架，我们只要稍微扩展一下，就可以达到我们的目的。<br /><br />就拿一个典型的web应用为例，普遍的方式的是在web.xml配置spring的context loader listener和spring的配置文件，这个listener会在应用启动时，创建并初始化spring的上下文，我们需要在所有bean初始化之前注入domain class，那么就在这里找切入点，通过spring的源代码可以发现类AbstractApplicationContext的refresh方法内的finishBeanFactoryInitialization有些重要的东东。</p>
<pre name="code" class="java">/**
 * Finish the initialization of this context's bean factory,
 * initializing all remaining singleton beans.
*/
protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) {
       // 省略
       // Instantiate all remaining (non-lazy-init) singletons.
        // 这里，会初始化所有的单例
       beanFactory.preInstantiateSingletons();
}
</pre>
<p><br />通过观察代码发现，初始化单例其实就是将Spring配置文件中定义的所有不是lazy init的单例初始化了，对一个Bean的初始化就是调用getBean来完成，Spring在调用getBean的时候，会判断如果已经初始化了就直接返回给你Bean的引用，否则就初始化这个Bean再返回给你，很典型的实现LAZY的方式。<br /><br />我们只需要在这个初始化方法之前，主动去扫描所有的领域模型class，并且知道他们需要注入的Dao，直接getBean获得dao的实例，并且注入进Domain Model的class就完成了，那么我们只需要自己实现一个ConfigurableListableBeanFactory接口，也就是继承DefaultListableBeanFactory（其是ConfigurableListableBeanFactory接口的默认实现）， 并且在preInstantiateSingletons方法的时候先注入领域模型，巨简单</p>
<pre name="code" class="java">private class StaticPropertyInjectSupportListableBeanFactory extends DefaultListableBeanFactory {
       @Override//覆盖父类的方法
       public void preInstantiateSingletons() throws BeansException {
              //先注入所有的领域模型的class
              injectStaticPropertyForBasePackage();
              //再调用父类的该方法去初始化所有的非LAZY单例
              super.preInstantiateSingletons();
       }
}
</pre>
<p>继续观察代码，finishBeanFactoryInitialization的方法的参数ConfigurableListableBeanFactory，是通过调用的createBeanFactory方法获得的，默认的实现在AbstractRefreshableApplicationContext中有这样一个方法，去创建DefaultListableBeanFactory，而这个方法是protected的，摆明着让我们去复盖扩展其功能，这也是spring易于扩展的体现，我们只要实现一个自己的ApplicaitonContext，覆盖createBeanFactory方法创建我们刚才自己实现的StaticPropertyInjectSupportListableBeanFactory就OK了，代码也巨简单</p>
<pre name="code" class="java">public class StaticPropertyInjectSupportXmlWebApplicationContext extends XmlWebApplicationContext {
       @Override
       protected DefaultListableBeanFactory createBeanFactory() {
              return new StaticPropertyInjectSupportListableBeanFactory(getInternalParentBeanFactory());
       }
}
</pre>
<p><br />实现了自己的ApplicationContext，怎么让Spring启动的时候初始化你的上下文呢？当然可以了，spring提供了扩展的后门，只要在web.xml配置context parameter "contextClass"告诉spring，他就会用你自己的ApplicationContext去初始化了，不配置该参数默认的ApplicationContext实现是XmlWebApplicationContext。<br /><br />关于自己实现静态property的注入就很简单了，在context parameter里加入个参数configurableBeanBasePackage，获得所有要注入的领域模型的父包，就可以了，如下</p>
<pre name="code" class="xml">&lt;!--加入这两个参数，其余不变 --&gt;
&lt;!--告诉spring用我们自己实现的支持静态bean注入的context --&gt;
&lt;context-param&gt;
        &lt;param-name&gt;contextClass&lt;/param-name&gt;
	&lt;param-value&gt;com.norther.sps.StaticPropertyInjectSupportXmlWebApplicationContext&lt;/param-value&gt;
&lt;/context-param&gt;
&lt;!--注入com.norther包下（包含子包）所有的领域模型的class--&gt;
&lt;context-param&gt;  
	&lt;param-name&gt;configurableBeanBasePackage&lt;/param-name&gt;
	&lt;param-value&gt;com.norther&lt;/param-value&gt;
&lt;/context-param&gt;
</pre>
<p><br />这样就OK了，有人会想到这样还是有一点点点点麻烦，用PostProcessorBean或者Spring的容器初始化完毕的事件去实现注入static
property不是更爽吗？这也是我最先想到的方式，但是这两种方式的注入的时间太靠后了，那个preInstantiateSingletons方法
已经被调用过了，有些bean已经被初始化了，例如quartz的SchedulerFactoryBean，就有可能你部署的quartz或者其他的
job已经开始跑了，但是领域模型还没有被注入，在那些job里调用领域模型都会空指针，所以一定要在preInstantiateSingletons方法调用前去注入。</p>
<p>&nbsp;</p>
<p>那么如何辨别哪些是领域模型呢？就利用了spring的Configurable这个annotation去标识这个是需要静态注入的领域模型，然后自己实现了两种自动装配，BY_TYPE和BY_NAME，以及JSR-250的Resource annotation，例子如下</p>
<pre name="code" class="java">@Configurable
public class Student {
       private Long id;

       @Resource //注入field的名字所代表的bean,
       private static StudentDao studentDao;

       public static void setStudentDao(StudentDao studentDao) {
              Student.studentDao = studentDao;
       }
</pre>
<p>&nbsp;</p>
<pre name="code" class="java">@Configurable
public class Assistant {
       private static StudentDao studentDao;

       @Resource(name = "studentDao") //注入name为studentDao的bean 
       public static void setDao(StudentDao studentDao) {
              Assistant.studentDao = studentDao;
       }
</pre>
<pre name="code" class="java">@Configurable(autowire = Autowire.BY_TYPE)//自动装配
public class SchoolMaster {
       private static StudentDao studentDao;

       // by type
       public static void setDao(StudentDao studentDao) {
              SchoolMaster.studentDao = studentDao;
       }
</pre>
<p>
单元测试以及Mock</p>
<pre name="code" class="java">@Configurable(autowire = Autowire.BY_NAME)//自动装配
public class Teacher {
       private static StudentDao studentDao;

       public static void setStudentDao(StudentDao studentDao) {
              Teacher.studentDao = studentDao;
       }

       public List&lt;Students&gt; getStudents() {
              return studentDao.getByClassId(this.getClassId());
       }
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="java"> StudentDao studentDao = EasyMock.createMock(StudentDao.class);
 EasyMock.expected(studentDao.getByClassId(998877)).andReturn(students);

 Teacher.setStudentDao(studentDao);
 Teacher zhang3 = new Teacher();
 zhang3.setClassId(998877);//设置班级ID
 List&lt;Student&gt; actual = zhang3.getStudents();
 .......

</pre>
<p><br />后半部分说了这么多其实都是实现static property的注入，原理很简单，代码也很简单，就4个类，但是我认为这么简单的东西spring之类的框架可以更容易并且实现的更好，也就是说目前的java可以简单的解决领域对象和dao依赖的问题从而实现rich domain model。</p>
<p>&nbsp;</p>
<p>当然这个代码只是demo性质的，实现的比较简单，只有web方式的实现方法，希望和大家共同讨论。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193496#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Fri, 16 May 2008 00:09:17 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193496</link>
        <guid>http://www.javaeye.com/topic/193496</guid>
      </item>
          <item>
        <title>struts2 &lt;s:if&gt; 标签的疑问</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renavatior.javaeye.com">renavatior</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193839" style="color:red;">http://www.javaeye.com/topic/193839</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我再Action里面用<br /><pre name="code" class="java">ActionContext.getSession().put("loginUserType", user.getType());</pre><br />字段type 是 user 对象的一个String 属性<br />而后我在jsp页面中用<br /><pre name="code" class="java">&lt;s:set name="userType" value="#session['loginUserType']" /></pre><br />得到type的值，再根据type的值来输出相应的下拉菜单<br /><pre name="code" class="java">&lt;s:if test="#userType=='2'">
					&lt;s:select name="result" label="审核意见"
						list="{'Info审核同意','info审核不同意','重新填写信息'}">&lt;/s:select>
				&lt;/s:if>
				&lt;s:elseif test="#userType=='3'">
					&lt;s:select name="result" label="审核意见" list="{'最后审核同意','最后审核不同意'}">&lt;/s:select>
				&lt;/s:elseif>
				&lt;s:else>

				&lt;/s:else></pre><br />但是我的那个下拉菜单没有输出，<br />我用<br /><pre name="code" class="java">&lt;s:property value="#userType" /></pre><br />输出一看已经有值了是  2<br />为什么不行啊？
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193839#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 09:53:37 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193839</link>
        <guid>http://www.javaeye.com/topic/193839</guid>
      </item>
          <item>
        <title>java.lang.NumberFormatException: For input string:</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jiataibin.javaeye.com">jiataibin</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193865" style="color:red;">http://www.javaeye.com/topic/193865</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/upload.jsp at line 46<br /><br />43:       <br />44:        	&lt;logic:present name="allhousepic"><br />45: 	&lt;logic:iterate id="allhousepic" name="allhousepic"><br />46: 	${allhousepic.hppic}<br />47: 	&lt;/logic:iterate><br />48: 	&lt;/logic:present><br />49: 		<br /><br /><br />Stacktrace:<br />	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)<br />	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)<br />	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)<br />	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)<br />	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)<br />	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)<br />	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)<br />	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />	org.feiying.hualong.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:129)<br /><br /><br />root cause <br /><br />java.lang.NumberFormatException: For input string: "hppic"<br />	java.lang.NumberFormatException.forInputString(Unknown Source)<br />	java.lang.Integer.parseInt(Unknown Source)<br />	java.lang.Integer.parseInt(Unknown Source)<br />	javax.el.ListELResolver.coerce(ListELResolver.java:166)<br />	javax.el.ListELResolver.getValue(ListELResolver.java:51)<br />	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)<br />	org.apache.el.parser.AstValue.getValue(AstValue.java:97)<br />	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)<br />	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)<br />	org.apache.jsp.admin.upload_jsp._jspService(upload_jsp.java:129)<br />	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)<br />	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)<br />	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)<br />	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)<br />	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)<br />	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)<br />	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)<br />	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />	org.feiying.hualong.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:129)<br /><br /><br />这个错误非常弱智！！！<br />少了一个&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>调用<br />可悲！！！希望大家别像我啊
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193865#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 11:43:46 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193865</link>
        <guid>http://www.javaeye.com/topic/193865</guid>
      </item>
          <item>
        <title>早上面试的一道数据库问题，请教怎么做</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aimer311.javaeye.com">aimer311</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/192926" style="color:red;">http://www.javaeye.com/topic/192926</a>&nbsp;
          发表时间: 2008年05月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          大概是这样的。<br />两张表：<br />A:id,age,column1,column2<br />B:id,age,column1,column2<br />A.id 与 B.id关联。<br />将B中age>40的column1,column2更新到A的相应记录中，只能写一个语句。<br />写出mysql和oracle两个版本。<br />不知道怎么写。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/192926#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Wed, 14 May 2008 13:50:09 +0800</pubDate>
        <link>http://www.javaeye.com/topic/192926</link>
        <guid>http://www.javaeye.com/topic/192926</guid>
      </item>
          <item>
        <title>在自定义的ＤＯＪＯ　WIDGET中按后退键会触发ＩＥ的后退事件</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sos-2008.javaeye.com">sos_2008</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193860" style="color:red;">http://www.javaeye.com/topic/193860</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          我用ＤＯＪＯ自定义了一个ＡＵＴＯ　ＣＯＭＰＬＥＴＥ　ＢＯＸ，　但发现我按后退键时，在数据库的监视工具里，发现上一页的ＳＱＬ被执行了，但页面并没有返回到上一页，好象按后退键会使ＤＯＪＯ向上一页发一个ＸＭＬ　ＨＴＴＰ　的请求，<br /><br />请问各位高手，有谁知道解决方案吗
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193860#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Sat, 17 May 2008 11:29:07 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193860</link>
        <guid>http://www.javaeye.com/topic/193860</guid>
      </item>
          <item>
        <title>工作流与JBPM开发实例精解（二）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://fjilyfe.javaeye.com">fjilyfe</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193241" style="color:red;">http://www.javaeye.com/topic/193241</a>&nbsp;
          发表时间: 2008年05月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          前几天发了一篇文章，没几个人看也没人留言，看来我这功夫差的还是远啊，今天来一个实际点的吧。可能上回的废话太多。说说这个jbpm应该怎么来用。<br /><br />    首先当你想学一个框架的时候一定是你要有项目来用他了，OK，那么你项目当中的流程是什么你应该清楚吧，那么当你清楚了这些的时候我们就开始我们这个最简单的例子吧。<br /><br />    假如我们现在有这么一个例子，公司员工想报销点出差费，那么他要将他的申请提交给他的第一级领导——部门主管去审批，然后部门主管审批完了之后还要交给这个部门主管的上级公司老总进行审批。那么针对这个简单的流程，我们应该从哪里下手呢？<br /><br />    首先第一件事情就是写流程定义文件，那么这个文件我们用什么来写呢，他就是一个符合某个语法的xml文件，幸运的是jbpm给我们提供了一个集成的开发环境让我们来用。<br /><br />    首先去官网上下一个jbpm-jpdl-suite-3.2.GA包，解压后你会发现他里面有一个designer文件夹，那个里面就是我们写流程定义文件的开发环境，他是一个eclipse的插件，但是好像他给我们的那个eclipse版本有问题，建议大家从新下一个eclipse-SDK-3.2.1-win32.zip这个版本的eclipse，然后覆盖他给我们提供的那个。<br /><br />    准备工作做完了，那么我们就开始吧，首先我们打开解压目录下的designer文件夹中的designer.bat文件，他弹出一个eclipse，然后我们就用这个东西来开发我们的流程定义文件了。<br /><br />    打开之后你就会看见一个他的小例子，不过我们不去用他，我们自己新建一个工程。右键-new-other-jBoss jbpm-process project。这个时候你会看见他弹出一个对话框，输入你的工程名字，然后点击next，这个时候你会发现他已经把jbpm加载进去了，记住要选中Generate simple ......。<br /><br />    工程建立完了，我们开始建立我们的流程定义文件。在工程里面你会发现src/main/jpdl这个source folder，然后你会看见他里面已经有了一个流程定义文件了，但是我们不去用他的，我们自己建立一个，右键src/main/jpdl，然后new-other-jBoss jbpm-process definition。这个时候他就会弹出一个对话框，起一个你要写的流程定义文件的名字输入进去，OK，可以了。这个时候你打开你建立的那个文件夹，里面就有processdefinition.xml文件，ok，打开他。<br /><br />    在右面的图里面你就可以看到一张什么都没有的白纸，我们看看这部分左面的那些东西，什么start啊，end啊，tasknode啊，fork啊，join啊。那我们来解释一下这是个什么东西呢，我们看看我们的需求，员工要写一个报销单，然后交给部门主管来处理，那么部门主管就应该算是一个tasknode，他就是一个任务节点。start和end其实就是一个虚状态，当我们写完报销单的时候我们就提交了，这个时候他就到了第一个tasknode这个节点了。然后他审批完了还要交给总经理审批，那么他又是一个tasknode，然后总经理审批完了结束，ok，是一个end。<br /><br />    start--》tasknode（部门主管审批）--》tasknode（总经理审批）--》end。<br /><br />    如果觉得看的有点模糊可以看看我传上来的那个图。然后你在这个试图框的下面可以看到有个source，点击一下，就会发现他已经自动的给你生成xml代码了。但是这样还是有点不够，我们只是定义了一个tasknode节点，并没有定义tasknode节点的任务由谁来做。那么我们还要定义一个tasknode节点是由谁来做的：<br />    那么这段代码是这么写的：<br /><br /><pre name="code" class="java">&lt;?xml version="1.0" encoding="UTF-8"?>

&lt;process-definition
  xmlns=""  name="test1">
   &lt;start-state name="start">
      &lt;transition name="" to="部门经理审批">&lt;/transition>
   &lt;/start-state>
   &lt;task-node name="部门经理审批">
      &lt;task>
      	&lt;assigment actorId="部门经理">&lt;/assigment>
      &lt;/task>
      &lt;transition name="" to="总经理审批">&lt;/transition>
   &lt;/task-node>
   &lt;task-node name="总经理审批">
      &lt;task>
      	&lt;assigment actorId="总经理">&lt;/assigment>
      &lt;/task>
      &lt;transition name="" to="end1">&lt;/transition>
   &lt;/task-node>
   &lt;end-state name="end1">&lt;/end-state>
&lt;/process-definition></pre><br />    这样的话我们的流程定义文件就定义完了，但是这只是把文件定义完了，系统并不知道啊，所以我们还要把我们的文件部署到系统中去，那么这个过程是这样的：<br /><br />    首先我们在src/main/java里面新建立一个包，然后建立一个class，随便起个名字，就叫TestJBPM_01吧，那么在这个类里面我们要做的是什么呢？我们要先导入表，因为jbpm要运行就要用到很多个表，ok，那么我们这个里面导入表和hibernate导入表是差不多的，它的代码是这样的：<br /><pre name="code" class="java">package com.jbpm.test;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;

public class TestJbpm_01 extends TestCase {
	
	public void testJbpm(){
		
		//创建jbpm数据库表。他就像hibernate里面的哪个export一样。实际上他就是hibernate里面的哪个export。
		//应为他映射了很多个表，所以我们就能创建那么多个表。
		JbpmConfiguration.getInstance().createSchema();
		
	}
}</pre><br />然后呢我们就开始部署我们的流程定义文件，我们将这个文件当中的内容呢放到数据库当中去，当我们以后再用的时候呢我们就随时的将它加载出来。<br /><br /><pre name="code" class="java">package com.jbpm.test;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;

public class TestJbpm_02 extends TestCase {
	
	//jbpmConfiguration对象的创建
	static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
	
	public void testJbpm(){
		
		//然后我们把processDefinition里面相关的对象持久化到数据库里面去。
		//流程定义文件里面有很多个概念，他有node，有transition，还有processDefinition，那么我们不需要一个
		//一个保存，jbpm把保存这么多对象的方法封装成一个接口，叫做deployProcessDefinition。我们只要调用这个
		//方法，传一个processDefinition对象，我们就能将他们存入到数据库里面去。
		
		//这个首先第一步我们要得到一个processDefinition对象，然后我们把他部署到流程中去。
		ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml");
		//我们要存就必须获得一个session对象，而jbpm已经把session对象封装到一个JbpmContext对象里面了。
		//那么这个jbpmContext对象是怎么得到的呢，我们要先有一个jbpmConfiguration对象，我们要对数据库进行
		//操作的时候一定要有jbpmConfiguration这个对象，用他来创建一个类似于hibernate当中的session一样的
		//对象——jbpmContext。他是我们对数据库所有的操作的一个接口。
		JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
		try{
			//然后部署的操作已经由jbpmContext给我们创建好了，我们只需要调一下他的一个方法就可以了。
			jbpmContext.deployProcessDefinition(processDefinition);
		}finally{
			//最后我们还要对他close一下，就像我们用hibernate的时候要close session一样。
			jbpmContext.close();
		}
	}
}</pre><br />Ok，第二步我们也做完了，那么现在我们开始做第三步，也就是说，我们流程定义文件写好了，现在我们的系统当中有了这样一个报销流程，那么就开始实际的去用她吧，一个人小报销了，那么她就要写一个报销的申请，但是这个报销的申请写完了存到数据库当中了还不能算完了，应该和我们的这个流程关联起来啊，那么她应该怎么去关联呢，嘿嘿，是这样地：我们在建立这个申请单这个类的时候应该定义一个processInstanceId属性，她是一个long型的，她就记录这我们的这个流程实例的id，那么什么是流程实例（processInstance）呢，她是我们工作流当中第二重要的概念，他和流程定义的关系就相当于对象和类之间的关系，类是一个抽象的东西，她定义完了是什么也干不了的，要想用她内部定义的东西我们就要new出一个实例来，当然这个里面也是这样的。<br /><br />那么也就是说，当我们创建这个报销申请的时候我们就要先根据这个流程‘new’出一个流程实例来存到数据库当中，然后在把她的id传给报销申请对象然后再将这个报销申请对象存到数据库当中。那么这个代码是这样的：<br /><pre name="code" class="java">package com.jbpm.test;

import junit.framework.TestCase;

import org.hibernate.Session;

public class TestJbpm_03 extends TestCase {
	
	public void testJbpm(){
		Session session = null;
		try{
			session = HibernateUtil.getSession();
			session.beginTransaction();
			
			Document doc = new Document();
			doc.setTitle("title3");
			doc.setContent("this is content3");
			session.save(doc);						
			session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally{
			HibernateUtil.closeSession(session);
		}
	}
}</pre><br /><pre name="code" class="java">package com.jbpm.test;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
/**
/*
/*将申请单和流程实例绑定
/*
public class TestJbpm_04 extends TestCase {
	
	static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
	
	public void testJbpm(){
		
		JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
		jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory());
		try {
			ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("testJbpm");
			ProcessInstance processInstance = new ProcessInstance(processDefinition);
			jbpmContext.save(processInstance);  
			
			
			//将我们的document和instance绑定。
			long processInstanceId = processInstance.getId();
			Document document = (Document)jbpmContext.getSession().load(Document.class,1);
			document.setProcessInstanceId(processInstanceId);
			jbpmContext.getSession().update(document);
			processInstance.getContextInstance().setVariable("document", document.getId());
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			jbpmContext.close();
		}
		
	}
}</pre><br /><br />现在我们的申请已经和实例关联起来了，那么接下来的下一步就开始用啦，就是让这个申请流转起来吧，那么她应该怎么去流转呢，嘿嘿，jbpm给我们提供一个signal方法，每当执行一次这个方法的时候她就流转一下到下一个节点，你可以打印出当前节点试一下，看看是不是执行一次你的当前节点就换一下。这段代码是这样的：<br /><pre name="code" class="java">package com.jbpm.test;

import junit.framework.TestCase;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.exe.ProcessInstance;

public class TestJbpm_05 extends TestCase {
	
	static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
	
	public void testJbpm(){
		JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
		jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory());
		try{
			
			Document document = (Document)jbpmContext.getSession().load(Document.class, 3);
			long processInstanceId = document.getProcessInstanceId();
			ProcessInstance processInstance = jbpmContext.getProcessInstance(processInstanceId);
			processInstance.signal();
		}finally{
			jbpmContext.close();
		}
	}
}</pre><br /><br />好啦，jbpm的简单例子就到这里了，有什么问题大家可以给我留留言，还请大家多多指教小弟啊。后面我还会写点更具体的一些问题，比如说列出提交到这个人这还没有审批的公文啊，还有如果有多个分支的话应该怎么去做啊等等等等。
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193241#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 12:28:56 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193241</link>
        <guid>http://www.javaeye.com/topic/193241</guid>
      </item>
          <item>
        <title>词法分析和语法分析并发的想法</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://run-xiao.javaeye.com">run_xiao</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193852" style="color:red;">http://www.javaeye.com/topic/193852</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          现在看了几个简单的Compiler的源码，发现语法分析的Function都是调用词法分析的过程，一个一个的获得Token，然后构建语法树。<br /><br />今天早上起来上WC，突然脑子里面冒出来一个想法：这不是个典型的生产者-消费者问题么？若是在多线程环境下，起两个线程分别跑词法分析和语法分析的Function，再建个缓冲的Buffer，这样前端分析的效率会不会有所提升呢？<br /><br />欢迎各位拍砖<img src="/images/smiles/icon_biggrin.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193852#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><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 10:32:03 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193852</link>
        <guid>http://www.javaeye.com/topic/193852</guid>
      </item>
          <item>
        <title>微创，群硕，腾源，这三个公司你选择哪一个？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dandansdu-hotmail-com.javaeye.com">小蛋蛋</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193791" style="color:red;">http://www.javaeye.com/topic/193791</a>&nbsp;
          发表时间: 2008年05月16日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          各位哥哥姐姐<br />你们好<br />我是一名大三学生<br />我要准备夏天去实习了<br />你们说下面的三个公司去哪一个比较好呢？<br />上海腾源软件<br />上海微创<br />上海群硕<br />你们能不能给一些有关实习的意见和建议啊<br />谢谢了
          <br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/193791#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><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>Fri, 16 May 2008 22:11:57 +0800</pubDate>
        <link>http://www.javaeye.com/topic/193791</link>
        <guid>http://www.javaeye.com/topic/193791</guid>
      </item>
          <item>
        <title>一个同济的女孩的就业之路,人生感想(同济大学bbs上从06年到现在不沉的帖子） </title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://robbiet.javaeye.com">Robbiet</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/193848" style="color:red;">http://www.javaeye.com/topic/193848</a>&nbsp;
          发表时间: 2008年05月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/>
          <span style="font-size: medium">[size=medium]<br /><span style="color: red">本文转自华理梅陇客栈，觉得很受启发，希望对和我一样的计算机系应届生有帮助。</span><br /><br />看了觉得感触挺深，拿来和大家分享<br />原文如下：<br /><br /><br />我是2005年毕业的，偶尔来这里看看，不常灌水。<br />今天来随意写下一些，如果对各位有任何的帮助，是我衷心所愿。<br />1。考研与就业：<br />2004年的暑假，我和大多数人一样，艰难的抉择，究竟是考研还是找工作。<br />凭良心说，如果我选择考研并不是因为我真得很想读书很想深造，而是我害怕接触社会，<br />想再窝在学校几年。<br />所以，虽然我非常不喜欢我这个专业，我还是决定做个鸵鸟，情愿去干我唯一最擅长的事情-读书。<br />现在想起来，当时太不了解自己。呵呵。<br />我们寝室4个女生，两个决定考研并且每天早出晚归，整天也见不到人。<br />我决定效仿她们，每天大包小包的拎着啃书。<br />不喜欢终究是不喜欢，2个月以后，我在镜子面前看到一个憔悴的自己，<br />想起我这些日子以来的生活状态，究竟是为了什么？我不是一个聪明的小孩，<br />我没有本领过目不忘，我又没有自己想象的那么勤奋，我怕这怕那，天哪，忽然觉得，自己一无是处。。。<br />2004年9月，我很没志气放弃了考研。<br />两个字，怕苦。<br />2004年9月，我在51job上填了我完整的信息，等待工作的降临。<br />2004年9月中旬，我的第一份实习经验开始了。。。<br />2004年9月中旬，一个很甜美的声音从我的手机传来，约我在徐家汇美罗城面试。<br />我无比激动地。。真的是我比激动地。。。去借了正装，提早了半个多小时到。<br />到了以后我才发现，是一家人寿保险公司。<br />那个面试我的经理居然是同济毕业的，<br />有些人就是有这种魅力，寥寥几句话，就让周围的人围着转。<br />像我这样没见过世面的人，轻易的，魂就被勾走了。<br />在我走出那里的时候，我已经答应要留下来做做看了。<br />我没有考证，所以不可以接单，我就是在里面接触他们是怎样工作的。<br />接下来的1个多月里，我亲眼看到一群斗志高昂的人在没有任何签单以后是如何被经理骂的狗血林头。<br />我也亲眼看到，上海滩上一些有钱人的嘴脸。<br />说实在的，以前我是鄙视做保险的人的，我认为他们素质低下只会粘人。<br />现在，我对他们多了一份理解。<br />并且，他们之中确实有就算是放到任何行业也光彩夺目的精英。<br />也许是看出了我不是这块料，一个月以后，我被委婉的驱逐了。<br />呵呵。我是高兴的走的，走了以后还在徐家汇逛了一圈。<br />第一次社会经历，让我很真实的触摸到了钱和人的关系。<br />2004年10月中旬，我迎来了第二次实习，<br />我的一个同学的姐姐，在某知名相机公司做广告的，很急要找人来帮忙处理一个他们举办的赛事。<br />一行找了好几个想我这般年纪的小孩，做的工作无非是更新数据库之类的。<br />我当时是抱着希望，最好做着做着就能留下来的。<br />结果两个礼拜以后，赛事结束，我被驱逐了。。。<br />我拿到了600多元钱，因为我是她弟弟的同学，她算是特别有待我，给我开了一份实习证明。<br />上面写得我是如何如何得好，呵呵，我当时心想，我有着么好？这么好你怎么不留我？！<br /><br />2004年的10月下旬，<br />我迎来了最好一次实习经历，这次实习决定了我的工作。<br />大家都有这个经验，网申一般没用。<br />我在51job上申请过n多网申，统统石沉大海。<br />有礼貌一点地会给我回一封信，说我的资料已经到了数据库，他们会慢慢核对。。。<br />所以我真得确实没有印象，我曾经投过这一家公司。<br />某天早晨当电话通的那头传来，她是某某名气很大的公司的HR的时候，我确实是呆了。<br />因为我根本不记得我投过什么职位。<br />我一路支支吾吾的，居然她也没说什么特别的，最后报了一个很远很远的地方的地址，叫我明天去面试。<br />我挂了电话以后想，这种公司我是肯定没戏的，那就去一次算是锻炼一下我的抗打击能力。<br />第2天面试，没有程序考卷，没有英语面试，什么都没有。两个经理坐在会议室里面，一个在打电话很忙的样子，一个笑容可掬。<br />那个笑容可掬的就问了一句话，你在XX公司（就是那个相机公司）实习过对么？<br />我点点头<br />OK, 就是你了，我们这里时薪10元钱，三个月，有问题么？<br />没问题。<br />好，明天来上班。<br />走出去的时候我彻底晕。<br />接下去的日子我不太记得是怎么过的，就是每天很忙，我就是一个小秘书，什么打杂的都干。<br />我一直都认为，大公司的门槛很高很高。<br />牛人中的牛人才有机会进去。<br />我也一直认为我不是牛人，所以我莫名的对里面所有的人产生敬仰之心。<br />做事异常小心。<br />就是复印个文件，我也要核对n次才敢拿去给他们看。<br />如果被他们抓到了什么错，我会难过半天。。。<br />我心里想着，我是绝不奢望能留下来。<br />不过这里的经历对将来找工作会有帮助的，说出去也好听。呵呵<br />我身边的人变化的也很多。<br />感觉有很多人一夕之间长大，<br />22岁之前，我一直觉得学校就是社会，除了食堂的大妈偶尔会摆脸色给我看，没有人会轻视我。<br />我是家里受重视的小孩，一路顺顺当当，<br />一直坚信读书是唯一的路。<br />我到了22岁才明白过来，我真得除了读书，什么都不会。<br />该说什么呢。。。<br />2004年冬天，他们到同济来做宣讲，其实我心里明白，他们根本就没有要招这么多人。<br />可是即便如此，场面还是摆得很大，一幅要招几百人的腔调。<br />我冷眼旁观着，心里想，何必呢，知道你钱多，别来玩弄我们这些可怜人啊。<br />居然有人叫我，我在公司里不经常能见得到的高级经理。<br />他冲我笑了笑，你要应聘不需要到这里来啊，明天到我办公室来好了。<br />我愣了半天，头一次晚上很没面子的失眠了。<br />原来，我也并不是那么差？！<br />第2天出了办公室以后，我忽然感慨万千，<br />我想在这里说，<br />你的努力，千万不要担心没有人看到，<br />如果让你去做很小很小的事情，千万不要认为不屑做，大材小用，<br />你的价值，点点滴滴的在每一个细微的动作里面体现出来。<br />2004年12月底，我签好了三方协议。<br />2004年1月中旬，我面前堆了一大堆的应届生考卷，需要我对着答案批改。<br />我亲眼看到我的同事们是怎样对付这些考卷的-只看答案，还看一下字迹和学校，然后了事。<br />这个世界就是这样，并不是你不优秀，往往差那么一点点，你就和别人走了不一样的路。<br />所以各位如果谁笔试被刷下来的，千万不要气馁。<br />关于笔试的问题我发过帖子的，这里就不多说了。<br />洋洋洒洒才发现写了很多，我没有什么文学功底，好像没什么中心思想。<br />各位有什么问题可以问我。<br />我想说，很多失败并不是因为你不够好，有的时候就是差那么一点点。但是你怎么知道接下来埃到你的选择不会比你失去的更好？<br />所以，请平心静气的对待埃到你的任何一份工作，<br />你的努力一定会有回报，也许就一点也许早一点。<br /><br />2。工作<br />2005年7月，正式加入，<br />我被分到了一个项目中去，我对项目这个名词没什么概念，貌似就是一份大一点的作业吧<br />我的leader是个严谨的中年人，<br />我见到隔壁桌的同事开着MSN和QQ, 于是很没志气也在自个儿的机器上开了。。<br />结果，被骂了。<br />在leader分配完任务以后，问我有没有问题，我很诚实的回答，时间不够。<br />结果，又被骂了。<br />当时觉得很委屈，为什么别人开msn就没事，我就要挨骂？<br />为什么我说实话也不行？也要挨骂？<br />简直莫名其妙嘛！<br />第2天早上来打开电脑，outlook里面有一封很长很长的信，是leader写给我的。<br />他罗列了一长串我身上的毛病，比如不应该工作场合用聊天工具，<br />不应该在办公室吃早饭，<br />分配的任务应该尽力去完成，确实有困难再提出，不应该一开始就推托，<br />等等等等。<br />他说，我是刚毕业的人，是一张白纸，在一开始就不应该有污渍，这样将来才会越走越好。希望我不要怪他。<br /><br />那天，我把自己关进厕所大哭，<br />我一直认为我是个到哪里都乖巧的人，真的，从来也没有人会挑剔我这么错。<br />今天一个职位很高的人，一个和我接触不到几天的人就一口气说出了我身上这么多弱点，并写这样一封长长的信来告诫我，简直让我受宠若惊。<br />一个人的优秀，不只体现在这个人本身，当他有本领让身边的人惭愧，并且因此而努力的时候，才不愧为精英两字。<br />自那以后，我对工作有了另一番见解，也慢慢开始会留一个心眼，观察身边的人是如何展现Professional的一面。<br /><br />小节，是体现一个人各方面的表现。<br />千万不要忽视他。<br /><br />2005年8月，我第一次加班到深夜<br />因为带着隐形眼镜，晚上不停的流泪水，时间太久，几乎带了一天了。<br />加班是件新奇的事情，以前听人说四大有多么多么恐怖，加班有多么多么厉害。<br />其实，哪里不加班呢？<br />每个人做事情有他自己的底线，有些人觉得做到80分不够，100分达不到的话至少要95分。<br />于是，加班成了自愿的事情，其实没有老板在你背后指着说，你，给我留下来加班！<br />真的没有，但是就是到10点多，仍然有很多人迟迟没有回去。<br />上海的生活压力大，不努力就不会加工资不会升值，你想要混日子也可以，但是看到别人的幸福生活，难道不会懊恼想当年我再努力一点点再一点点，今天就会比他更出色了？<br />所以这里的人，加班很正常。他们的背后有妻有子有沉重的房贷，这一切不见得为了老板，只是为了自己，这个理由已经很充分了。<br />被剥削？奴性？不，这里根本没有愤青，愤青在真实地面对生存的压力之后，我想也会变平和的。<br /><br />你的底线是多少，做到多少分？<br />我做不到100分，但是我愿意尽力做到100分。<br /><br />2005年8月底，我拿到生平第一份工资，<br />我咧着嘴乐了半天，真的，看到卡上多了这么多钱，无比的兴奋。<br />于是，第一个月的钱，我全部捐献给了各种商人。<br />第一次感觉，有钱真好！<br />做学生的时候看到稍微贵一点点的东西，是绝对不敢染指的。<br />现在很豪气的说，买！<br />我很没气质的想，工作为了啥？不就是为了买起东西来豪气一点么？<br />对，就是这样。<br />2005年9月，第一次觉得自己是如此幸运。<br />9月的时候，进来了一个复旦的实习生，据说编程很强，还有口译证书，<br />总之就是很厉害。<br />进来做什么？打杂的。。。<br />由于年龄相仿，我跟她很投缘，于是我鼓励她要好好干，机会无处不在。<br />她真的很厉害，就是那种跟你说几句话，你就能从她散发的气息中感觉出这是一个聪慧的人。<br />2个月以后她拜托我去询问leader的意见，看她是否有机会留下来。<br />leader很简单的说了一句，不好意思，今年不招人。<br />我身边的同事偷偷拉着我说，像这样的公司，招不招人招多少人，都是有计划有名额的。<br />他们并不在乎你有多优秀，多出色，对于管理者来说，他不需要天才，他只需要一些肯干，踏实的人。当然，你最好是这批应征者中最棒的，但是为了最棒的你而增加名额是不可能的。<br />实习生哪里都有，到处有人排队抢着做。他没有必要招成正式员工。<br /><br />很残酷，当你觉得你的才华被这么多迂腐的条条框框给框住的时候，确实令人抓狂！<br />我不禁问，可是我当时就是做实习生然后转正的阿？<br />因为当时正好有人离职，人手不够。<br /><br />呵呵。不知道该说什么好，当自己意识到幸运多过于自个儿的能力以后，<br />不知道该哭还是笑。<br />复旦的那个小女生坚持着没有走，到了第2年春天终于是熬不住了，走了。<br />之后去了一家咨询公司，但愿她的路一切都好！<br /><br />一个萝卜一个坑，如果你为自个儿糟糕的运气而懊恼的时候，<br />一定要对自己说，说不定，下一个坑会更好。<br /><br />2006年3月，<br />我一直觉得自己是个兵，我说话不大声，没有威严<br />我一定不是当领导的料。<br />所以当我被指定为leader的时候，挺激动地。虽然我的组员是外驻，呵呵，不是外驻也轮不到我管。<br />我这边的外驻都是我那年毕业的，大多来自于水产，工技大，上大等等。<br />偶尔会看到几个复旦交大同济的。<br />挑选外驻的时候是我一个人去的，印象比较深的是其中两个女生，<br />第一个是华师大的，说话特溜。感觉很精明的样子。<br />当我问她还有什么问题的时候，她很直接的说，<br />你们这里的人工资待遇怎么样啊，<br />你们是不是配笔记本的阿？什么牌子的阿？<br />你们通常加不加班啊？加班给不给加班费阿。。。<br />我无语。。<br />第二个是水产的，看说话的样子，不精明也不很聪明。<br />可能是受前一个人的影响，我一上来就说，我们这里可能会加班。<br />她连忙一个劲儿的点头，没问题的，我经常加班的。<br />当她准备交卷的时候，又前后扫了一遍，然后递给我<br />卷子上字迹工整，在答不出的题目上写了几个字，抱歉，真的不会。<br />短短的几分钟，我便决定就是她了。<br /><br />我从来都是被面试的人，当我今天坐在面试者的角度看待被面试者的时候，<br />才发现很多东西都是我们面试的时候忽略的，<br />比如你的眼神，<br />你的谈吐，<br />你该关注的问题，<br />你流露出来的你身上的特质。<br />对一个初次见面的人来说，别人没有时间来了解你这个人有多么讲哥们义气，有多么见识广博，有多么善解人意。<br />这是门学问，我们共勉。<br />2006年4月，<br />项目中来了一个新外驻，同济的，<br />在这么多外驻中，她的卷子得分最高，面试的时候也表现最好。<br />我心想，那是，这是咱们学校的呢。呵呵。<br /><br />接下来的日子里，他的各方面表现是最好的，<br />我给他打了最高分。<br />有一次我偷偷问他，为什么会进那个公司？<br />他很腼腆的说，呵呵，大学四年天天打游戏，醉生梦死。<br />到了大肆了才发现自己什么证书都没有，什么都不会，极点又低。<br />但是心高气傲总觉得自己有才华此处不留人自有留人处。<br />结果到了6月份，实在是没有办法了，随便找了一家公司，就是现在的公司。<br />工资1000来元钱，现在涨了一点点了。<br />现在还是打游戏，不过没有以前那么疯了，毕竟还是要努力啊。<br />最近正在张罗着跳槽，希望会有好消息。<br /><br />2个月以后，他在msn上告诉我，他进了ebay<br />我很高兴，走了一小段弯路以后，金子终于还是发光了。<br />所以你是金子，就一定会发光，这是我坚信的。<br /><br />说到游戏，我想这里的男生们一定很委屈，<br />你们女生就可以沉迷于化妆品和衣服的世界里，我们打个游戏找谁惹谁了？<br />确实是，游戏没怎么样。正常娱乐嘛。<br />但是你真的只是把它当作正常娱乐嘛？<br />如果你一天从挣开眼睛到闭上眼睛，都在打游戏，你还觉得这是正常娱乐嘛？<br /><br /><br />3。激情？<br />我是个本地小孩，从小，老爸老妈就教导我，读书要考最高分，这样将来才能有出息。<br />我的老爸老妈是那种天塌下来你都别管，只要给我好好读书就行了的人。<br />我不才，最高分是不可能的，但是倒也不很差就对了。<br />高考填志愿的时候，我从来没想过要走出上海，现在想起来，上海的小孩被保护得太好，以至于觉得自己头顶上的这片天是最蓝的。<br />选专业的时候我彻底晕了，说实在的我根本不知道那些老什子专业出来是干什么的。没有人告诉我，老师也不懂，他就只知道卷子卷子考分考分。<br />当我真正进入大学知道我接下来的四年将要学习什么的时候，真是很郁闷。<br />但是当我知道，我的三个室友都是以绝对的高分考进同济并且被调剂进这个专业的时候，我把我所有的不满都小心翼翼的收藏了起来。<br />外地学生的辛苦我是有耳闻的，但是我真的没有想到竞争这么残酷。<br />我的室友中，有一个高考的时候外语卷是满分的。<br />她们每个人在考试上的建树都是厉害的角色，但是在面对专业的选择时，都跟我一样彷徨无知。最后白白的扼杀了潜藏在身上的特质。<br />我们这一行4个女生，<br />最痛苦的事情并不是在于我们没有选到心仪的专业。<br />而是我们根本不知道自己喜欢什么。<br />并且，直到今天，我对自己的喜好也许有了一些轮廓，但却还是抓不住。<br />不知道各位有没有这样的感觉，就是对什么都没有什么特别的兴趣，<br />但是如果老师或者谁谁谁让你做什么，也还是乖乖的去做，做的质量也不错。仅仅这样而已。<br />我的人生中似乎从未有过一次，因为内心而发的激情碰撞而努力完成一件得意的事情。<br />不知道该说什么，22岁之前，我就是这样一个没有个性的人，不温不火。<br />现在我深深为此自卑，随着年龄的增长，深深感觉到没有激情的努力是绝对没有光彩的。<br />也许你还不赖，但绝不出类拔萃。<br />我的公司里年轻的孩子很多，让我切实的感受到年轻的活力，<br />我不能表达，当我见到一个大男生coding的时候居然眉飞色舞着的样子。<br />我一直认为coding是人世间最悲惨的事情，呵呵。<br />在看到一张张精神饱满的年轻的脸孔，长指在键盘上敲打怡然自乐的样子。我真地感到很惭愧。<br />我偶尔也会问同事，是装的吧？写代码很开心么？<br />他却不以为意：并不喜欢，不喜欢的人多了去了，但还是不得不做。因为你不做有的是人做。既然躲不了，那就坦然一点，去享受它。<br />很有哲理吧？我不敢相信这是一个像我这般年纪的人说出的话。呵呵。<br />也许从那时开始，我开始后悔了。<br />当初是怀着多么沉重的郁闷读着这个专业过完我的大学时光的，现在想想我的郁闷全浪费了。<br />我偶尔会看到你们之中很多人，跟我一样在郁闷着自个儿的专业。<br />我觉得大多数人都郁闷，呵呵。<br />但是既然已经这样了，那就把郁闷转化成别的什么吧。<br />郁闷是会变成习惯的，<br />既然一些事情不能改变，那就去享受它。<br />享受的过程就在酝酿着激情，但你拥有激情的时候，刚好你还拥有一个不错的头脑。那么你一定会成功的。<br /><br />4。工资<br />呵呵~~~工资是个敏感话题。<br />我们这些小孩子理所当然的把工资当作为衡量自己身价的尺码。<br />大四那年，每当有人签了以后，大家伙儿的问话都浓缩成了两句话：<br />哪？多少钱？<br />是啊，钱很重要。<br />当我偶尔去一下百盛，看到n百元钱的衣服仅仅是因为打了5折以后，n多人簇拥而上疯抢的情景，真是不由得感叹，钱阿，都是钱惹得祸。<br />2004年找工作的时候，我的心里想，给我2000元就可以了，<br />住的地方嘛反正我老爸老妈暂时还没有赶我出去的打算，<br />吃嘛，我一个人吃得也不多，<br />就是买买衣服化妆品就行了，反正我也不想存钱买房子，事实上我认为不靠父母资助，现在让一个年轻男生买房子娶老婆养家这是不可能的！<br />但是人既然生活在社会里，真的是不由得自己不去攀比和妒嫉。<br />我一直认为我是一个心平气和的人，<br />当我在听到谁谁谁签了个n高的价之后，还是会身不由己的妒嫉。<br />当然我也只是自个儿生生闷气，呵呵。<br />那时候我身边有很多人，在和我聊天的时候都会有类似的话题，<br />你说那个3200的好，还是2800的好？<br />呵呵，工资成了公司的代名词了。<br />我不能免俗，当时如果是让我选，我一定是要钱多的了，说出去好听，<br />我毕业工资3000多呢。<br />现在，我遇到了很多人，很多已经成家立业，小孩都满街跑了。<br />加班的时候碰到他们心情好，会聊上几句，<br />他们常常很感慨地说，他们当年毕业的时候，大学生是多么的值钱。<br />我说，现在也值钱阿，只是钱增值了而已。<br />-XX，钱是赚不完的，想要赚钱就不该做技术，做技术不会比做销售赚钱。也许你家门口卖牛肉面的阿姨也比你有钱。既然做技术又不想转行卖牛肉面或者其他什么的话，就不要在乎多1百元还是少1百元钱，其实没有区别。多1000元钱少1000元钱也没什么区别。但是4位数和5位数，那就有区别了。这是一个台阶，一个初级技术员和中级技术员的差别，对读书人来说，这是面子问题，能力问题。想要跨上这个台阶，来日方长。<br />不知道我转述的这一番话，对各位有没有启发？<br />我想说，我们大家都在乎钱，呵呵，这个是没办法的。<br />但其实我们这些理工科刚毕业的都是初级技术员，<br />少一点多一点只关乎你一个月多吃几顿大餐，多买几件衣服。<br />就你现在的一点钱买不起房子，买不起车，那还计较什么呢？<br />如果你想早一些突破下一个零的话，就不要太介意眼前的得失。<br />不要为了谁谁谁比你多了几百元钱而耿耿于怀，<br />咱们要竞争的，是几年以后！<br /><br />5。研究生<br />对研究生们，我怀着一颗敬仰的心。<br />这是一条我放弃的路，对坚持到底并取得成功的人，我很钦佩。<br />我常常看到这样的问题，<br />要不要考研究生？研究生值钱还是本科生值钱？<br />正方观点自然是要考，一定要考！这年头本科生都不值钱了，没有个研究生学位怎么镇的住？<br />反方观点是没必要，反正是骡子是马拿出来遛遛，咱有的是能力不需要靠文凭锦上添花。<br />我的见识并不多，<br />以我有限的见识来说说看我个人的想法。<br />我始终认为，<br />只有人跟人的差别，没有学位与学位之间的差别。<br />如果你是一个牛人，你本科毕业找工作会很出色；你读完研究生找工作会更出色。<br />如果你不是牛人但是是个勤劳的人，如果你不想读直接去就业的话，前景也会不错的；如果你想读研究生把自己造就成牛人的话，你一定会比本科更出色。<br />如果你不是牛人但是是个懒惰的人，那我觉得你读了跟没读没有什么区别。你还是不要浪费你的时间了吧。<br />很多人都会把找不到工作归咎为，<br />他们只要研究生呀，他们鄙视我们本科生。<br />我倒不觉得如此，你是不是该考虑一下自己身上是不是出了什么问题？<br />作为一个管理者，除非真的是只有专业的知识要应用非得要研究生的话，<br />对他来说，学历低一些反而降低成本。<br />至于你所认为的硕士毕业比本科毕业多的那么一些钱，<br />我刚才说过了，4位数和5位数是有区别的，除此以外，<br />我们都是初级的，没有什么差别。<br />想读硕士的，我是建议各位读的，做技术嘛，多读点总是好的。<br />但是希望各位不要太过耿耿于怀你的学历，<br />不要把自己短暂的不幸全部归咎于你的学历。<br />你的人生要走怎样的取决于你这个人。<br /><br /><br />6。心胸<br />都说学生单纯，这是真的，<br />学生时代的攀比，嫉妒，甚至是吵架都是单纯的<br />（当然，除了云南大学那个杀人的。。。）<br />就像我妒忌隔壁寝室的哪个人工资比我高，我也就活动活动心眼，要不怎样？拿把刀把他砍了工作就归我了？怎么可能。。。<br />学生时代的谈话也是单纯的，问什么答什么，<br />顶多不乐意告诉你了就骗骗你，顶多这样。<br />我们的道德底线都差不多，以至于我也曾经一度认为社会上的人道德底线都这样，如果你现在还和我当初那么想的话，那就请你快醒醒了呵呵<br />林子大了，各色各样的人也就多了，<br />很多人的确用着不太正大光明的手段取得了比你辉煌得成就，<br />这个时候你该怎么办？<br />走出校门，你的前途不全部由你的实力决定。<br />校园内，老师可能不太认识你，他也不需要和你打交道，<br />他只需要知道你这门课及格还是不及格。<br />老师和学生之间，学生和学生之间是没有或者很少有利益冲突的，<br />缺少利益冲突的关系是纯净的，<br />让你想说什么就说什么。<br />但是校园外，走进公司，是不同的年龄阶层，<br />无论是你的上司还是你的同事，<br />都是直接和你有利益冲突的，<br />利益是什么？就是钱啊，大家都想要买车买房子啊，<br />一牵涉到这些，人就变得尖锐起来了，<br />这是人之常情，你，我都一样。<br />也许你认为某些人工作方面并不如你，<br />什么都没有你好，<br />可是他就是八面玲珑，就是有所谓的手段，最后跑在你前面。<br />这个时候，你身上尖锐得东西会全部都冒了出来，<br />这些刺扎伤了你自己，也扎伤你身边得人。<br />你会开始哀怨，<br />我啊，壮志未酬啊，<br />生不逢时啊，没有伯乐来相中我啊，<br />你们这些人都瞎了眼啊，没看到我这个奇才啊。<br />就着样，慢慢变成怨妇怨夫。。。。<br />渐渐得，你对任何事情都会缺乏积极性，<br />心里想着，<br />反正谁谁谁有后台，他一定会容易就怎么样了，<br />反正是论不到我得，<br />反正。。。。<br />确实，很多人含着金汤匙出身，<br />很多人很虚伪，为达目的不择手段，<br />那怎么办？<br />我就是生下莱没有这么多后台，<br />我就是没有这么虚伪，<br />但是谁知到不会三十年河东三十年河西，风水轮流转？<br />那我跟他们比什么？有什么好比得。<br />这个时候，一定要心平气和，一定要告诉自己，<br />他们已经没有被你列做竞争对象了，<br />他们得行为并不会影响你，<br />并且他们身上一定还有你需要学习得东西，<br />即使他实在身无长处，你就学学他得穿着，谈吐也是好得。<br />把自己尖锐得心沉静下来，就会豁然开朗，<br />心情愉快自然会做事情得心应手，<br />这个时候，机会就不远了，心胸宽广得人是受人欢迎和赏识得！<br />有人提到简历的问题，那我在这里说说我看我的领导是怎么看简历的。<br />我经常能见到的领导有三个，<br />对待简历的方式有一点是不约而同地，<br />他们都不喜欢很长很长的简历。<br />我曾经见过最长的简历中英文加起来居然有12页。。真是让我感觉象论文。<br />通常他们看到这种简历，立马out...<br />一般中英文3页，是他们比较能接受的。<br />其中有一个领导比较在意学校，<br />常常也不看，就问，什么学校的，<br />在我的唠叨下，他现在认为交大和同济是没有区别的^^<br />本来嘛，本来就没有区别，对吧！<br />除了学校之外，比较在意你的实习经历，<br />如果是研究生的话比较关注你曾经跟过的项目，<br />所以如果你有跟过比较重要的项目，一定要写得详细。<br />如果你的本科生的话比较在意你曾经实习过哪些东西，<br />如果你这方面是一张白纸的话，那就要去补补了。<br />他们三位都不看基点<br />通常的做法就是面试前做卷子，基点这个东西在他们觉得。。。比较垃圾<br />因为基点是可以花钱修的很漂亮的，，这个他们知道的。。<br />你在你的简历上要写上你曾经得的奖学金，<br />你的实习经历，<br />这两块是比较重要的！<br />至于你的个性如何，对自己评价。。。这个。。就少一点吧。<br />我曾经见过一个，写对自己的评价写了一张纸，跟写作文一样，晕阿。。。<br />呵呵，今天又一个人的话把我逗乐了<br />现在找工作弄得跟追女生一样，<br />好吧，我不得不承认，还真是形容的很贴切。<br />那你觉得女生好追么？<br />是不是觉得现在的女生越来越不好追了吧？！<br />几百年前，女生哪用追得？反正年龄到了就一颗青菜配一个萝卜。<br />几十年前，一个蛋糕，一部永久牌自行车就可以哄一个女孩子坐在你的车座后面裙角飞扬了。<br />现在。。。我听到越来越多的人抱怨，现在的女生，怎一个唉字了得。。。唉。。。<br />呵呵，像不像大学生找工作？<br />像当年可是怎么着也不愁找不到工作的，<br />现在是挤破了脑袋争取同一份工作。<br />好吧，那我们就用谈恋爱的方法来找工作吧，<br />有很多人恋爱失败败就败在怕丢脸，<br />为啥呢？因为怕丢脸而不敢表达，怕被那个人笑说，哦，原来你喜欢我啊。。。<br />其实有什么关系呢？你只管表达自己的，管他呢，<br />她要是鄙视你，那就别理她，反正这件事情只有她知道你知道；<br />她要是鄙视你，还告诉别人一起来嘲笑你，那这个人素质有够差的，你该买鞭炮庆祝你没有得到她；<br />她要是因此而接受了你，那可是苦尽甘来阿，你就偷偷找个地方美上好几天吧；<br />她要是既不说接受你也不说拒绝你，跟你玩暧昧，这你就。。掂量掂量吧，我个人的意见是，咱不缺这一个！呵呵。<br />拿出你表白时的勇气吧，不要怕，呵呵~~~<br />还是说说找工作把<br />我们大家都一样，找工作的时候，都会有眼看着身边的人一个一个落实了以后的羡慕，都会仿佛从脚底升腾起一股烦躁不安的情绪。<br />有好些人跟我说，我啊，没什么个性，要是群面，一定轮不到我说；<br />或者，我啊，没有谁谁谁性格那么活泼，跟别人相处得那么融恰；<br />很多人都会这样意识无意识的对自己有心理暗示<br />这样的情绪我是带着很多年了，深有感触。<br />我也是一个不很活泼的人，就是那种把我丢在人群里面，没有人会注意到我的那种；<br />如果很多人聚在一起，我常常是聆听的那个人，我不善于也不打算在许多人面前侃侃而谈；<br />我也会偷偷的想，像我这么没个性，会有公司要我么？<br />今天我以我这些日子以来的经历转告各位，<br />真的真的不要把自己的想法套到别人的身上，<br />以自己以为的东西来庸人自扰，是最傻最傻的。<br />别人怎么认为你，怎么想你，太微妙了，又岂是你能揣测的完的，<br />也许你觉得自己这里不好那里不好，但看在别人眼里却是优点，<br />我是一个闷葫芦，不过，据我的同事说，交给我办事很放心，因为我常常闷声不响的，就把事情给做完了。。。<br />呵呵。<br />不要自己给自己心理暗示说，我这个这个是肯定不行的，<br />你就试一下嘛，实在不行就告诉自己这方面自己不是这块料嘛<br />也不要给自己暗示说，HR一定不喜欢我这个样子的，你看，我没有那个人能说会道，<br />你怎么知道他不喜欢？你又不是他？那你瞎猜什么？还烦恼什么？<br />就做你自己嘛，他不喜欢就不喜欢嘛，你又不跟他过一辈子，总有别人喜欢你这样的，对吧？！<br />我有好些个大学里认识的学长，研究生快要毕业了呢，<br />有些问我，面试的时候该注意些什么？<br />这个。。我之前有讲过面试的问题，<br />我自己的面试别人的时候，常常是他说话的时候，我喜欢观察他说话时的眼神。<br />有些人说话喜欢看着地板，<br />有些人说话眼神闪烁，也许是习惯问题，总觉得有意无意的偷偷看你几眼的感觉，<br />有些人边说话喜欢边玩东西，或者衣角，或者头发，<br />有些人说话会下意识的抖脚，<br />如果你有以上的问题，你一定要练习，纠正。<br />说话时眼光还是自然向前为好，但也不用直盯盯的看着对方的眼睛，这样显得很凶。。。<br />最好不要有多余的小动作，这样会显得你似乎很心虚；<br />说话时可以慢一点但一定要逻辑清晰<br /><br /><br />7.投机<br /><br />有好些人问我，<br />说，我现在知道错了，我大学四年没有好好努力，<br />但是，请相信我，我是很强的，我绝对不比别人差，我只不过是没有那些老什子的证书而已；现在看着很多人去修改成绩单，做假证书，我也想做，否则我便没有了机会呀。。我是不是该做呢？<br /><br />问我这些话的人还不在少数，<br />我该说，当你问出这句话的时候可见你早就已了然这是错的，你只是需要有一个人最好肯定一下你的意志，说，这没什么大不了的，大家都这样。然后你便会去做了，是么？<br /><br />我想我可没有这么大的魅力对你传教中国千百年以来的诚信美德，<br />毕竟的确有太多太多的人用着不诚信的手段，让我也深陷于无奈，嫉妒，甚至暴躁的情绪中。<br />我只想说，<br />当你尝到投机取巧而不劳而获的快感后，你不再会去想回头尝尝努力的滋味了。<br />当你做了几个伪证书以后，你还会去考真证书么？<br />我还想说，我至今所见到的精英并不多，以我有限的见地来说，他