一个月前去华为面试(实际上是去玩玩的),结果面试进了最后一轮,然后告知2个礼拜内给消息…1个月过去了没消息,以为被鄙视了,结果今天发来短信说被录取了…(华为还真够慢的)…

终于保持了去面试就有offer的记录(嘿嘿).

 发现我还真能忽悠人~~

 哈哈

微软公司的董事长比尔·盖茨,曾送给职场新人10句话,摘来与诸位共勉吧:

    1.人生是不公平的,习惯去接受它吧。

  2.这个世界不会在乎你的自尊,这个世界期望你先做出成绩,再去强调自己的感受

  3.你不会一离开学校就有百万年薪,你不会马上就是副总裁,两者你都必须靠努力
赚来。

  4.如果你觉得你的老板很凶,等你当了老板就知道了,老板是没有工作任期保障的

  5.在速食店煎个汉堡并不是作贱自己,你的祖父母对煎汉堡有完全不同的定义。

  6.如果你一事无成,不是你父母的错,所以不要只会对自己犯的错发牢骚,要从错
误中去学习。

  7.在你出生前,你的父母并不像现在这般无趣,他们变成这样是因为忙着付你的开
销,洗你的衣服,听你吹嘘自己有多了不起,所以在你拯救被父母这代人破坏的热带雨
林前,先整理一下自己的房间吧。

  8.在学校里可能有赢家和输家,在人生中却还言之过早,学校可能会不断给你机会
找到正确的答案,现实人生中却完全不是这么回事。

  9.人生不是学期制,人生没有寒假,没有哪个雇主有兴趣协助你寻找自我,请用自
己的空暇做这件事吧。

  10.电视上演的并不是真实的人生,真实人生中每个人都要离开咖啡厅去上班。

 

通过webwork2下载文件,文件名是通过ContentDisposition传到前台,而webwork没有对ContentDisposition做任何处理,所以中文的文件名传到前台就变成乱码了.没办法,webwork不处理那就自己处理好了.

自己写个toUtf8String将文件名转成UTF-8后再附到ContentDisposition,前台终于认了

 public String toUtf8String(String s) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < s.length(); i++) {
   char c = s.charAt(i);
   if (c >= 0 && c <= 255) {
    sb.append(c);
   } else {
    byte[] b;
    try {
     b = Character.toString(c).getBytes("utf-8");
    } catch (Exception ex) {
     System.out.println(ex);
     b = new byte[0];
    }
    for (int j = 0; j < b.length; j++) {
     int k = b[j];
     if (k < 0)
      k += 256;
     sb.append("%" + Integer.toHexString(k).toUpperCase());
    }
   }
  }
  return sb.toString();
 }

 

1 web.xml中
   要增加
   <servlet>
        <servlet-name>JspSupportServlet</servlet-name>
           <servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <taglib>
        <taglib-uri>webwork</taglib-uri>
        <taglib-location>/WEB-INF/webwork.tld</taglib-location>
    </taglib>
   
   否则在ftl文件头部写的<#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] />是不能被正确处理的。
  

2  freemarker的文件一般以后缀ftl,ftl文件的头上要写
    <#assign ww=JspTaglibs["/WEB-INF/webwork.tld"] />
    这样才能在ftl中使用webwork的tag。

3   要注意一个细微的差别!!

    在jsp中用tag,是这样的:
    <ww:text name="login.title"/>
    在ftl中用tag,是这样的:
    <@ww.text name="login.title"/>

    其中<ww:text … 中间是冒号 :
   <@ww.text  …  则是句号.


作者
熊节
发布于
2007年3月26日 上午8时20分

&lt;dl&gt;&lt;dt&gt;社区&lt;/dt&gt;&lt;dd&gt;&lt;a id="743" name="agile" href="http://www.infoq.com/cn/agile/;jsessionid=BF44CA3F76EB782FA602BDA744A82EF7" title="agile"&gt;Agile&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;主题&lt;/dt&gt;&lt;dd&gt;&lt;a id="748" name="delivering_value" href="http://www.infoq.com/cn/delivering_value/;jsessionid=BF44CA3F76EB782FA602BDA744A82EF7" title="delivering_value"&gt;交付价值&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;在开始正文之前,我想先讲两个故事&amp;mdash;&amp;mdash;关于软件项目的故事。&lt;/p&gt;

故事一

有两个软件项目(姑且称之为“项目 A”和“项目 B”),它们在开始时的预算都是 50 个人月,时间是 5 个月。

  • 项目 A 在 5 个月后完工,耗费成本 50 人月 *项目 B 在 6 个月后完工,耗费成本 70 人月

在软件圈子里摸爬滚打多年的读者们对这个故事一定有自己的判断——而且我可以大致猜出是什么样的判断。不过先别着急,我们还有另一个故事。

故事二

有两个软件项目(仍然姑且称之为“项目 A”和“项目 B”),它们在开始时的计划都是交付 200 项功能。

  • 项目 A 在项目结束时一次性交付了最初计划的 200 项功能,但客户发现其中大约 30 项功能没有太大用处,而另外 30 项有用的功能要等到下一个项目才能实现。 *项目 B 在第一个月结束时交付了第一个版本,此后每两周交付一个新的版本。在项目进行的过程中,客户进行了一次业务调整,加入了 90 项新的功能,并搁置了 50 项用处不大的功能。最终该项目交付了 240 项功能。

聪明的读者大概注意到了,前后两个故事讲的是同一回事,同样的两个项目。现在我的问题来了:请问哪个项目是更成功的项目?

这个问题并不容易回答——实际上它没有标准答案。站在很多软件企业的立场上,项目 A 是一个理想的成功项目:按时间、按成本完成预先约定的任务。请注意,我用了“理想的”这个词,稍后我还会解释这个有趣的词,因为实际上的软件项目往往没有那么理想。

而如果换一个角度,站在客户的立场上呢?也许付钱购买软件的客户会有一些不同的想法。项目 B
从开始之后一个月便交付了第一个可工作的版本,从那时起客户就开始使用这个软件的部分功能,并且不断地把自己使用的感受反馈给开发团队。在真实的业务运营
过程中,客户甚至发现了一种新的盈利模式,并进行了一次大规模的业务调整,这次调整的结果也直观地体现在软件项目中。虽然项目B的整体交付速率低于项目
A,但它提供的所有功能都是客户真正需要的,它们为客户提供实实在在的价值——更不用说,客户提前好几个月就开始使用这个软件。

实际上,这是一篇关于软件价值的文章。和“成功项目”一样,对于“软件的价值”,不同的人也会有不同的定义。不过作为付钱购买软件的客户,他对于软件价值的定义是一目了然的:他能够从使用软件中创造多少价值,软件能够为他的业务提供多少价值,这就是软件的价值。或者说得更简明一点:

软件价值源自使用

这正是为什么很多客户青睐“项目
B”的原因——我并不打算声称所有客户都有同样的观点,稍后我也会举出反例,但至少支持这一观点的客户不在少数。因为他们处在一个残酷而快速变化的商业环
境中:他们的供应商在变化,他们的客户在变化,他们所处的经济环境和政策环境也在变化。这一切的变化迫使他们的业务也要随之变化。更要命的是,今天这个经
济全球化的时代是一个“快鱼吃慢鱼”的时代,客户迫切希望新的软件系统为他们带来竞争优势——哪怕这个软件系统尚未完成,只要能够投入使用。最后,客户对
于新的软件系统究竟应该是什么样子并没有百分之百的把握,他们的想法往往要在真正使用软件之后才会浮现成型。几方面的因素加在一起,使得这些客户更愿意尽
快开始使用软件、提出反馈、并不断完善软件,而不是提出一组需求、然后坐等几个月之后原封不动地拿到这些功能。

一个真实的案例

在 ThoughtWorks 的一个项目中,开发者们在项目开始之后一个月内就发布了第一个版本——只有一些简单的数据采集功能。在发布展示会上,发生了这样的对话……

  • 开发者:这是我们的第一个功能。我们从文本文件、Excel 数据表和遗留数据库采集数据,现在我们的数据库中有这些数据……(展示数据库结构) 客户:唔……有意思。要是你能做这样一个查询(写出查询要求),得到的结果可能会有用。 开发者:可是我们的界面上没有地方做这样的查询操作。 客户:啊,我不需要操作界面,只要每天深夜做一次查询,把报表发到我的信箱就可以了。 开发者:这样吗……另一个问题是,这需要花我们几天时间。 客户:不要紧,把别的任务往后放几天好了,我很想看到这份报表。 开发者:那好吧,下周我们就会开始提供这个报表。
    猜猜结果怎么样?一周之后客户就开始每天接收这份报表,并根据报表内容做一些分析和决策。仅仅几个月之后,这份报表给客户带来的收益就已经超过了整个项目的投资——这时项目其他部分的开发甚至还没有完成。

想想这个客户会怎么定义一个“成功的软件项目”?好吧,也许这个项目超过了预期的时间,也许投入了更多的人力,但这些并不意味着“项目失败”——只
是付出更高的成本。关键在于,他投入的这些成本能够带来多大的收益,他的投资回报率是否划算。对于这个客户而言,如果项目能够随时给他提供可用的、能够创
造最大价值的软件,能够随时让——就像故事中提到的——这种有价值的想法得以实现,这就是一个成功的项目。

所以,亲爱的读者,请你忘记本文标题上出现的“敏捷”二字,我们在这里所说的不是别的,就是一种为客户创造最大化价值的软件开发方法。这样的方法有
很多种,但它们有一个共同的特点:尽快、尽可能频繁地交付可以工作的软件,让客户尽快开始使用软件,从使用中创造价值、厘清思路、提出反馈。仍然以
ThoughtWorks
的项目为例,这些项目通常在启动开发阶段之后一个月内就会发布第一个版本,随后每一周或每两周发布一个新版本——每个版本都是一个可以工作的软件,每个版
本都比前一个版本具有更丰富的功能,并且每个版本都包含客户认为迄今为止最有价值的那些功能。用软件开发的“黑话”,“开发下一个版本”的过程叫做“迭
代”,这些开发方法最大的共同点就是“迭代式开发”——不是一股脑地交付全部功能,而是每次增加一点、渐进地交付最有价值的功能。

软件开发的梦想与真实

回到文章开始处的两个故事。我曾经说过,对于很多软件企业而言,项目 A 是一个“理想的”成功项目。那么,是什么让情况变得不那么理想?

答案是一个所有软件开发者耳熟能详的词:需求变更。在真实的项目中,客户通常不会等到最后一天再照单全收整个项目,因为他知道自己的业务正在发生变
化。这时需求变更就出现了,伴随着来回的扯皮和讨价还价。更糟的是,大量的需求变更发生在项目晚期——因为直到这时客户才真正看到、使用到这个软件,他的
很多想法才真正浮现成型。随着这种“最后一分钟的需求变更”,项目超期、超出预算也就成了家常便饭。能够像项目A这样完工交付的,实在是凤毛麟角的幸运
儿。

为了对付需求变更这个噩梦,软件开发者们还发明了另一个词:变更控制。这个有趣的词暗示着:需求变更是一种“不好”的东西,是需要“控制”的东西。
然而站在客户的角度上想想,他在亲身使用了软件之后提出的要求,难道不是最有价值的东西吗?把这种真正创造业务价值的要求“控制”起来,难道是合理的吗?

在前面我也暗示过,并非所有的客户都一定青睐迭代式开发。那么,哪些软件项目不一定需要迭代式开发呢?从整篇文章的内容不难看出,如果客户的业务绝
对不会变化,如果客户的需求巨细靡遗非常明确,如果客户不需要尽快开始使用软件以便收回成本,那么迭代式开发对他的帮助就会小得多。不过,如果读者认真思
考的话,这样的例子也许并不多——也许比你最初认为的要少得多。一个很好的例子是“神州六号”火箭使用的计算机控制系统。还有多少这样的例子?读者不妨试
着自己想想。

如果我足够幸运的话,也许一些读者已经被这篇文章吊起了胃口:既然有这么好的软件开发方法,既然它能够为我们创造更大的价值,那还等什么呢,我们马
上就动手吧。事情不会那么简单。为了让迭代式开发能够成为现实,为了确保尽快、尽可能频繁地交付,为了确保每次交付的都是最有价值的功能,我们——包括软
件开发者、软件企业和客户——需要很多的改变。这里既有职责与权利的划分,也有开发过程和团队的重组,还有技术层面的实践指导。这些正是敏捷方法学所涵盖
的内容。缺少了这些东西,“为客户创造最大价值”就只能成为一句空话。在后续的文章里,我们将结合 ThoughtWorks
的实践经验,逐步介绍敏捷方法的方方面面。

<![CDATA[毕业快六年了,经历了许多事,职场上也是起起伏伏,虽然没有赚到很多钱,但积累

了不少感受。今日心血来潮,把这六年来我的职场经历,包括公司、职位、薪水的变迁过

程写了下了,和职场上的朋友一起来思考,也可以给别人做个借鉴和对比。
  我在中学时属于学习成绩不算太好的学生,没能考上重点高中,但总算在一所普通高

中奋发图强,95年高考,努力加运气使我考上了一所排名在四五十名左右的理工类国家重

点大学。虽然学校不算太差,但我学的是社科文史类专业,只能算是这所大学的点缀,在

全国根本没有任何竞争力。何况这个专业非常偏门,没有对口的工作,大学四年我象其他

同学一样,混到了一张文凭。
  但走运的是,我的家庭境况还不错,有直系亲属在深圳工作了七八年,积累了一些社

会关系,在99年即将毕业之际,帮我联系好了一家公司,可以随带户口一起调入。于是在

那段大家找工作找得焦头烂额时(当然那时候不象现在这样大学生泛滥成灾,找工作还不

至于太困难),我着实悠然自得地享了几个月福。
  99年夏天,我直接来到了深圳。这一年,我22岁。
第一份工作:国企   
说实话,那时我根本不知道自己能做什么。由于我有些亲戚在深圳做业务、拿回扣赚

了不少钱,因此我也幻想着自己能从商赚大钱,加之我厌恶溜须拍马和清闲无聊的生活,

所以我一开始就对进政府机关不感兴趣,只想着能够进企业,在商界叱咤风云。   接纳

我落户的公司是家国有控股的企业,规模不大,每年能够维持微利。由于公司大学生并不

多,我还是挺受重视的,被安排在企业管理部工作,跟随一位50出头的老经理。企业管理

听起来挺有诱惑力,实际上从事的就是工商登记、文件起草等工作。试用期三个月,工资

1500元人民币,此外没有任何福利,这与我的预期相差甚远。不过现在想想非常惭愧,当

时我连WORD都不会使用(大学时学的是DOS),曾经置身于很尴尬的境地。虽然工资很低,

但那段时间也许是我迄今为止工作的最开心的日子。没有任何想法,就是从最低层做起,

所有的工作都觉得是新鲜的,而时刻抱着远大的理想,期望有一天能够实现,这种状态下

的人特别容易满足。
但是这种日子没有维持多久,因为我在即将转正的时候认识了一个人,这个人是我招

聘来的。应该说,公司福利待遇虽然很差,但是我遇见了不错的领导。不错的意思不是指

能力如何不错,而是他们对我都很看重。99年10月份,公司准备招聘几个高级管理人员,

出于对我的欣赏,公司的副总裁带着人事部经理和我去人才市场招聘,于是刚刚毕业两个

月、尚未转正的我,便像模像样地当起了招聘官。那个人姓李,我看过他的简历并和他聊

过后,隐约感觉此人有一定水平,便通知他几天后来复试(第一次招聘感受和经历颇多,

不赘述;曾经有一位上一级的校友来应聘,得知我当年才毕业后,大为惊讶,后来再没有

踪影了,一直不知何故,是否自惭?)。
  再后来,李经理成功进入公司,当起了企业管理部经理,我的直接上司。这个时候我

已经转正,工资涨到了2200元,另外还可以报150元交通补助费,但职务仍然是小职员,这

令我相当不满足,而这种不满足也一定程度来源于李经理。李经理是我见过的职场升迁最

快的人,他毕业两年便在一家总资产20亿的民营企业做到了总裁助理(不知道各位有没有

见过),但后来企业破产。他的眼界和知识远远超过这家死气沉沉的国有企业中的所有人

,和他成为朋友后我才发现自己原来是井底之蛙,才发现自己做的这份事原来没有任何意

义,于是我开始迷茫了,不知道自己该怎么走下去,不知道是否该继续做这份事。我开始

看《经理人》这样的杂志,开始阅读《投资导报》,但是我越看越觉得自己不能在这家只

有老人和女人的企业里呆下去了。   
李经理由于见识和理念与老板不符合,在2000年4月离职,剩下一个茫然无措的我。那

个时候我的工作只剩下跑工商变更登记了,非常无聊,离我那个宏伟的梦想越来越远。期

间调整过一次工资,公司整体水平下降,我也不能避免,每月只能维持2000多一点的水平

,年终奖也从来没见过,年底只发双薪。这样的地方不能再呆了,我多次发誓。想起年初

我还曾招聘过2000届的大学毕业生,曾被小我一级的师弟师妹奉为成功经典,我觉得再不

能自欺欺人了。
  打定主意后,从6月份开始,我频繁地向外投送简历,频繁地奔跑在深圳的各个角落

、写字楼应聘(因为我负责工商变更登记,所以有条件在公司外面跑,没有条件的朋友不

可学我)。我大致估算了一下,面试与投送简历的比例为1:2,也就是说每送出两份简历

就能得到一次面试的机会。面试的经历很多,一言难尽,有几次都是在最后关头功亏一篑

,那时候因为工作经历太简单,没有专业性,我自己都不知道该如何给自己定位,大抵不

过是行政管理、秘书、策划之类的职位,但终因专业不强没有成功。2000年9月份,终于有

一家软件公司答应让我去做市场,该公司有一位高层(女士)大概是我的校友(至今尚没

有证实),对我的母校很熟悉,对我特别关照吧,否则以我既没有IT业经验,又没有市场

经验,缘何肯给我机会?但是这份工作因一个特殊事情,使我耽误了上班时间,待我折回

公司,人家告诉我不再需要人手了;那位招聘我的校友也离开了公司(到现在我也不知道

那半个月中发生了什么事,那位校友为什么突然离开公司,此后我再也没见过她)。
无奈之下,我又回到原来的公司,由于惦记着年底的双薪,我打算过了2000年再做打

算,2001年初无论如何都要离开了,哪怕没有找到工作,我也要先辞职;否则,我怎么能

忍受自己的工资和公司出纳的工资一样高?而那位出纳的学历仅仅是中专,我这样想。

第二份工作:还是国企
  2001年初,我在第一家公司没有得到任何升职,此时距我毕业已经一年半了,看来我

赶超李经理的目标无法实现。正在此时,一个偶然的机会,我的家人帮我联系了一家高科

技的公司,可以为我提供一个机会。我几乎想都没想就答应了,对于那时的我来说,只要

能离开现在这家公司,去哪里都行。
  我以前看过一些专业杂志和报纸,逐渐把我的目标和思路清理了一下,觉得往企业投

资、管理方面发展应该是比较有前途的,因此我在去往这家高科技企业之前,刻意把自己

的简历往这方面描述。果然,这家公司最后把我安排在了资

1.一定要有独立的人格、独立的思想。一个经过独立思考而坚持错误观点的人比一个不假

思索而接受正确观点的人更值得肯定。不要成为灌输教育的牺牲品。

2.仕途,商界,学术。大致说来,每个人都注定要走上三条道路中的某一条。在进行

职业生涯规划的时候,不妨以此作为思考的出发点。根据不同的职业生涯规划来塑造各自
的核心竞争力。只有知道自己以后要做什么,才能知道自己应该学什么。

  3.专业无冷热,学校无高低。没有哪个用人单位会认为你代表了你的学校或者你的专
业。千万不要因为你是名牌大学或者热门专业而沾沾自喜,也大可不必因为你的学校不好
或者专业冷门而自卑。

  4.千招会,不如一招熟。十个百分之十并不是百分之百,而是零。如果你有十项工作
每项都会做百分之十,那么,在用人单位眼中,你什么都不会。所以,你必须要让自己具
备核心竞争力。“通才”只有在“专才”的基础上才有意义。

  5.不逃课的学生不是好学生。什么课都不逃,跟什么课都逃掉没什么两样。一定要掌
握学习的主动性,不要像读中学一样被老师牵着鼻子走。逃课没有错,但是不要逃错课。
同时,既要逃课,又要让老师给高分。

  6.一定要学会理财。对于贫困生来说,首先要做的不是挣钱,而是省钱。很多大学生
读书的时候一掷千金,可是,毕业以后一个月的工资还不够交半个月的房租。

  7.大部分女生将电脑当成了影碟机,大部分男生将电脑当成了游戏机。大学生要掌握
必要的计算机操作能力,但是,很多时候电脑会成为浪费时间的堂而皇之的借口。有电脑
的大学生非常多,可是,这中间很多人可能大学毕业的时候还不会Excel,不会做一个像样
的PPT。

  8.做事不如做人,人脉决定成败。一个人有多少钱并不是指他拥有多少钱的所有权,
而是指他拥有多少钱的使用权。一个人具备多少能力,不只是说他一个人的时候能做什么
,还包括他能通过别人做什么。一个人赚的钱,12.5%是靠自身的知识,87.5%则来自人脉
关系。三十岁以前靠专业赚钱,三十岁以后拿人脉赚钱。所以,请好好珍惜大学期间建立
起来的人脉关系。这几年你认识的朋友可能会是你毕业以后最可宝贵的财富。

  9.互联网固然威力无穷,但是,如果你沉迷于网络聊天,或者沉迷于网络游戏,浪费
的金钱倒是可以弥补,荒废的青春就无可追寻了。轻舞飞扬已经红颜薄命了,而痞子蔡却
继续跟别的女孩发生着一次又一次的亲密接触。对于很多大学生而言,网吧就是一个血淋
淋的黑洞。

  10.爱情是不期而至的,可以期待,但不可以制造。花开堪折方须折,莫让鲜花败残枝
。一个有一万块钱的人为你花掉一百元,你只占了他的百分之一;而一个只有十块钱的人
为你花掉十块,你就成了他的全部。

  11.研究生扩招的速度是30%,也就意味着硕士学历贬值的速度是30%。千万不要以为考
研究生就是积极进取的表现。对于很多人而言,考研不过是一种消极逃避的方式罢了。对
于绝大多数人而言,读研究生纯粹是浪费时间浪费金钱,立志从事科研、学术的人及其他
少数人除外。

  12.不要一门心思想着出国,更加不要迷信外国的月亮比中国圆。削尖脑袋记GRE词汇
很可能是一件非常愚蠢也非常可悲的事情。既然全世界的公司都想到中国的市场上来瓜分
蛋糕,为什么中国人还要一门心思到国外去留学然后给外国人打工?

  13.人才市场就是一个地雷阵。通过多种方式求职固然没有错,但是千万不要饥不择食
。只要用人单位一说要你交钱,你掉头就走便是了。

  14.求职简历必须突出自己的核心竞争力。求职的时候大可不必像严守一那样“有一说
一”,必要的时候恰到好处地说一些谎言是非常有用的。一份求职简历只要用一张A4纸做
个表格就足够了。很多女生的求职简历就像是写真集,不但浪费钱,而且对求职毫无用处
。面试其实是有规律的,每次面试的时候只要背标准答案就行了……

  15.垃圾是放错位置的人才。所以,在找工作的时候一定要把自己放到那个让你成为人
才而不是垃圾的职位上。当然,前提是你要知道自己究竟想做什么、究竟适合做什么。世
界上最大的悲剧莫过于有太多的年轻人从来没有发现自己真正想做什么。骑驴找马固然没
错,可是,并非随便找一头驴就能找到千里马。所以,一定要重视第一份工作。

  16.大公司是做人,小公司是做事。进入公司工作以后,必须尽快融入写字楼政治。职
员能否得到提升,很大程度不在于是否努力,而在于老板对你的赏识程度。在写字楼的政
治斗争中,一定要学会自我保护。

17.瘦死的骆驼比马大。撑死胆大的,饿死胆小的。一定要有创业的勇气和魄力。如果

你一只满足于给别人打工,那么,不管你工资多高,永远都只能是一个可怜的穷光蛋。就
算月薪2万,在深圳上海那种地方,一年的存款还买不来一个小小的洗手间。

  18.大学期间一定要多去图书馆多去自习室。很多书你现在不读,一辈子就再也没有机
会去读了。虽然不是每本书看了都一定有用,但是,因为你不知道究竟哪本书以后会有用
,所以只好多看书,并且抛弃那些过于功利的想法。尽管每次网到鱼的不过是一个网眼,
但要想捕到鱼,就必须要编织一张网。

(1) 父子两住山上,每天都要赶牛车下山卖柴。老父较有经验,坐镇驾车,山路崎
岖,弯道特多,儿子眼神较好,总是在要转弯时提醒道:“爹,转弯啦!”
  有一次父亲因病没有下山,儿子一人驾车。到了弯道,牛怎么也不肯转弯,儿
子用尽各种方法,下车又推又拉,用青草诱之,牛一动不动。
  到底是怎么回事?儿子百思不得其解。最后只有一个办法了,他左右看看无人,
贴近牛的耳朵大声叫道:“爹,转弯啦!”
  牛应声而动。
  牛用条件反射的方式活着,而人则以习惯生活。一个成功的人晓得如何培养好
的习惯来代替坏的习惯,当好的习惯积累多了,自然会有一个好的人生。
(2)一只乌鸦坐在树上,整天无所事事。一只小兔子看见乌鸦,就问:“我能象你一
样整天坐在那里,什么事也不干吗?”乌鸦答道:“当然啦,为什么不呢?”于是,兔
子便坐在树下,开始休息。突然,一只狐狸出现了。狐狸跳向兔子……并把它给吃
了。
  这个故事的寓意是……要想坐在那里什么也不干,你必须坐(做)得非常非常高

(3) 一只小鸟正在飞往南方过冬的途中。天气太冷了,小鸟冻僵了,从天上掉下来
,跌在一大片农田里。它躺在田里的时候,一只母牛走了过来,而且拉了一泡屎在
它身上。冻僵的小鸟躺在牛屎堆里,发掘牛粪真是太温暖了。牛粪让它慢慢缓过劲
儿来了!它躺在那儿,又暖和又开心,不久就开始高兴地唱起歌来了。一只路过的猫
听到了小鸟的歌声,走过来查个究竟。顺着声音,猫发现了躲在牛粪中的小鸟,非
常敏捷地将它刨了出来,并将它给吃了!
  这个故事的寓意是……
  1) 不是每个在你身上拉屎的都是你的敌人。
  2) 不是每个把你从屎堆中拉出来的都是你的朋友。
  3) 而且,当你陷入深深的屎堆当中(身陷困境)的时候,闭上你的鸟嘴!
(4) 有七个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。
  一开始,他们抓阄决定谁来分粥,每天轮一个。于是乎每周下来,他们只有一
天是饱的,就是自己分粥的那一天。后来他们开始推选出一个道德高尚的人出来分
粥。强权就会产生腐败,大家开始挖空心思去讨好他,贿赂他,搞得整个小团体乌
烟障气,高尚的人也腐败了。然后大家开始组成三人的分粥委员会及四人的评选委
员会,但他们常常互相攻击,扯皮下来,粥吃到嘴里全是凉的。最后想出来一个方
法:轮流分粥, 但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己
吃到最少的,每人都尽量分得平均,就算不平,也只能认了。大家快快乐乐,和和
气气,日子越过越好。
  同样是七个人,不同的分配制度,就会有不同的风气。所以一个单位如果有不
好的工作习气,一定是机制问题,一定是没有完全公平公正公开,没有严格的奖勤
罚懒。如何制订这样一个制度,是每个领导需要考虑的问题。
(5)战国时期魏惠王因为齐威王违背了盟约,所以想要发兵攻打齐国。身为国相的
惠施为了劝导魏王息兵,请来了国都的一位贤士戴晋人。戴晋人见了魏王问道:“关
于蜗牛,君王知道吗?”魏王说:“知道。”戴普人说:“蜗牛长着两只触角。左面的
角上有一个国家,称为触氏;右面的角上有一个国家,称为蛮氏。为了争夺领地,两
国交兵开战,伏尸数万,胜者追了十又五天,才收兵回营。”魏王不以为然地笑说
:“这不都是虚假之言吗?”戴晋人说:“不是虚假之言,不信的话,我来为你论证一
下:以君王看来,四方上下有穷尽吗?”魏王说:“没有穷尽。”戴晋人又问:“人的
心巡游过无穷无尽的宇宙之后,返回到人世,可不可以说人世渺小到了似有似无?”
魏王说:“对。”戴晋人紧跟着又问:“人世既然渺小到了可有可无的地步,而魏国
只是人世间的一个很小的地方,国都又是魏国之中很小的一块地方,君王又是国都
中很小的一个形体,那么,相对于无穷无尽的宇宙而言,跟蜗牛右角上蛮氏国的国
王又有什么分别呢?”魏王说:“没有什么分别。”
  戴晋人离去了。魏王好似被引入了空旷无际的太空,看不到人世,更看不到魏
国,体悟到人世和国土的渺小,感受到了征战和扩疆的无聊,认识到交兵争胜,所
得不过蜗牛一角之地,实在没有多大意义。于是称赞戴晋人为“大人”,认为他有
如此眼光,远远超过了圣人。(出自《庄子》)
  故事告诉我们,职场的一切得失都是渺小的,没有人会在临死的时候,后悔自
己没有多花点时间在办公室工作。追求快乐和平安幸福,才是人的一生中最重要的
事情。

Hibernate 与 MySQL 问题还真多..真的差点被搞死..

 

1.Hibernate 在插入数据的时候居然抛出nested exception is org.hibernate.exception.GenericJDBCException: could not insert这样的异常

 而且一些表的好的,一些表会抛出这些异常..

最后搞了老半天知道加上useSeversPrepStmts=false 解决了问题.

 

2.因为和spring整合用了spring推荐的dbcp连接池..我考…居然会卡死..最后用了proxool…还不错

   发现当用 dbcp的时候居然还不支持一对多…………..

 

 

 

 

创建型模式

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory

工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

2、BUILDER—MM
最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM
我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉
克用的翻译机好卖)

建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。

3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。

工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。

4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)

原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。

5、SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)

单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。

结构型模式

6、ADAPTER—在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我)

适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。

7、BRIDGE—早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了

桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。

8、COMPOSITE—Mary
今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买
了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模
式了,你会了没有?

合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。

9、DECORATOR—Mary
过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的
Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是
Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗?

装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。

10、FACADE
我有一个专业的Nikon相机,我就喜欢自己手动调光圈、快门,这样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有Facade设计
模式,把相机调整到自动档,只要对准目标按快门就行了,一切由相机自动调整,这样MM也可以用这个相机给我拍张照片了。

门面模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。

11、FLYWEIGHT—每天跟MM发短信,手指都累死了,最近买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了,再不用一个字一个字敲了。共享的句子就是Flyweight,MM的名字就是提取出来的外部特征,根据上下文情况使用。

享元模式:FLYWEIGHT
在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内
部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从
常规类中区分开来,将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象,而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度
的降低内存中对象的数量。

12、PROXY—跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自动的回答,接收到其他的话时再通知我回答,怎么样,酷吧。

代理模式:
理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不
想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正
的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。

13、CHAIN OF RESPONSIBLEITY—晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑!

责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接


来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况
下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。

14、COMMAND
俺有一个MM家里管得特别严,没法见面,只好借助于她弟弟在我们俩之间传送信息,她对我有什么指示,就写一张纸条让她弟弟带给我。这不,她弟弟又传送过来
一个COMMAND,为了感谢他,我请他吃了碗杂酱面,哪知道他说:“我同时给我姐姐三个男朋友送COMMAND,就数你最小气,才请我吃面。”,:-(

命令模式:命令模式把一个请求或者操作封
装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必
知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。

15、INTERPRETER—俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了。

解释器模式:
定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在
有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文
法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是
一个语言。

 

16、ITERATOR—我爱上了Mary,不顾一切的向她求婚。

Mary:“想要我跟你结婚,得答应我的条件”

我:“什么条件我都答应,你说吧”

Mary:“我看上了那个一克拉的钻石”

我:“我买,我买,还有吗?”

Mary:“我看上了湖边的那栋别墅”

我:“我买,我买,还有吗?”

Mary:“你的小弟弟必须要有50cm长”

我脑袋嗡的一声,坐在椅子上,一咬牙:“我剪,我剪,还有吗?”

……

迭代子模式:
代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子
模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个
迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。

17、MEDIATOR—四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。

调停者模式:
停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的
一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对
象在小尺度的行为上与其他对象的相互作用分开处理。

18、MEMENTO—同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦。

备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

19、OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦

观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。

20、STATE
跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的MM就会说“有事情啦”,对你不讨厌但
还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会说“几点钟?看完电影再去泡吧怎么样?”,当然你看电影过程中表现良好
的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦。

状态模式:
态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个
状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状
态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。

21、STRATEGY—跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,单目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。

策略模式:
略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客
户端。

22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method),但每个步骤针对不同的情况,都有不一样的做法,这就要看你随机应变啦(具体实现);

模板方法模式:模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。

23、VISITOR
情人节到了,要给每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个人的特点,每张卡片也要根据个人的特点来挑,我一个人哪搞得清楚,还是找
花店老板和礼品店老板做一下Visitor,让花店老板根据MM的特点选一束花,让礼品店老板也根据每个人特点选一张卡,这样就轻松多了;

访问者模式
访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。访问者模式适用于数据结
构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增
加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中。当使用访问者模式时,要将尽可能多的对象浏览逻辑放
在访问者类中,而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。