<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>做最不无聊的IT人</title>
    <description></description>
    <link>http://kayo.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>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/205656" style="color:red;">http://kayo.javaeye.com/blog/205656</a>&nbsp;
          发表时间: 2008年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>中、日、韩三国教练有幸到上帝的足球博览室参观。 <br />
<br />
三人看到室内布满了两百多个挂钟，但有快有慢。三人甚为不解，于是问原由。上帝的助理解释：这些挂钟代表着每个国家的国家足球队，国家队每输一 场球，挂钟就要转一圈。于是三人便寻找代表自己国家的挂钟。找了半天，日本主教练在中等转速群里找到了挂钟，十分不悦。韩国主教练以为自己的会好些，结果 在高速转动群里的钟表比日本的还要快，表情极为尴尬。中国的主教练看到日韩两个钟表如此之快，心中暗喜，觉得自己是最有面子的。结果找了许久都没有找到代 表中国队的钟表，于是询问上帝的助理，上帝的助理回答：这几天天气太热，上帝拿中国队的钟表做风扇去了！</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/205656#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Jun 2008 10:21:22 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/205656</link>
        <guid>http://kayo.javaeye.com/blog/205656</guid>
      </item>
      <item>
        <title>用友U8发展历程</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204827" style="color:red;">http://kayo.javaeye.com/blog/204827</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: small;">日前，用友软件在上海隆重发布ERP-U8企业应用套件V8.70（简称U870）产品，首次提出业务场景驱动与应用的新模式。U870基于用友
UAP平台，集成了工作流、个性化门户、角色与场景配置器、助手视图等客户化工具，把ERP中复杂的几千个功能点、众多业务流程以及各种业务数据以熟悉的
企业业务场景方式展现，帮助客户实现&ldquo;懂业务就懂ERP&rdquo;。</span>
</p>
<p><span style="font-size: small;"><br />
</span>
</p>
<p><span style="font-size: small;">　　据介绍，U870首创的&ldquo;场景驱动&rdquo;应用模式，是指ERP软件将行业最佳实践提炼成产品中标准、成熟的场景应用模型。以关键应用价值为核心，整
合业务模式、管理角色、业务流程、功能实现、关联业务数据表现、决策指标等应用要素，以角色协同与相关业务信息集成应用为特征，使各项业务以模拟企业真实
管理&ldquo;场景&rdquo;的方式呈现在用户面前。除了U870已预配置的多种关键业务场景外，用户还可以按照自己熟悉的业务进行场景配置，这将大大降低企业的应用风险
和成本，也使快速实施成为可能。</span>
</p>
<p><span style="font-size: small;"><br />
</span>
</p>
<p><span style="font-size: small;">　　用友董事长兼总裁王文京表示，ERP的普及经历了从功能驱动、流程驱动，到角色驱动，再到业务场景驱动的过程。ERP厂商就是要淡化技术，越来
越多地将专业术语&ldquo;封装&rdquo;起来，让用户不用再去理解计算机术语，而只需关注自己的业务。在场景驱动模式下，每个用户都可以站在自己的工作角度理解、使用
ERP，从而缩短技术和业务之间的鸿沟，真正做到&ldquo;懂业务就懂ERP&rdquo;。&ldquo;ERP将向更高端发展，但这里的&lsquo;高端&rsquo;不是规模或用户数的高端，而是指用户所
接触ERP的高端。他们不用关心程序和流程，只要完全按照自己熟悉的方式去工作，甚至感受不到ERP的存在，这才是普及时代的ERP。&rdquo;王文京说。</span>
</p>
<p><img src="http://www.ufida.com.cn/u8/erp/images/grow.GIF" height="404" alt="" width="730" />
</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204827#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jun 2008 21:25:22 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204827</link>
        <guid>http://kayo.javaeye.com/blog/204827</guid>
      </item>
      <item>
        <title>决策树</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204238" style="color:red;">http://kayo.javaeye.com/blog/204238</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
            
            
			决策树是用二叉树形图来表示处理逻辑的一种工具。可以直观、清晰地表达加工的逻辑要求。特别适合于判断因素比较少、逻辑组合关系不复杂的情况。 <br />
 <br />
决策树提供了一种展示类似在什么条件下会得到什么值这类规则的方法。比如，在贷款申请中，要对申请的风险大小做出判断，图是为了解决这个问题而建立的一棵决策树，从中我们可以看到决策树的基本组成部分：决策节点、分支和叶子。<br />
 <br />
　　决策树中最上面的节点称为根节点，是整个决策树的开始。本例中根节点是&ldquo;收入&gt;￥40,000&rdquo;，对此问题的不同回答产生了&ldquo;是&rdquo;和&ldquo;否&rdquo;两个分支。<br />
　　决策树的每个节点子节点的个数与决策树在用的算法有关。如CART算法得到的决策树每个节点有两个分支，这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。<br />
　　每个分支要么是一个新的决策节点，要么是树的结尾，称为叶子。在沿着决策树从上到下遍历的过程中，在每个节点都会遇到一个问题，对每个节点上问题的不
同回答导致不同的分支，最后会到达一个叶子节点。这个过程就是利用决策树进行分类的过程，利用几个变量（每个变量对应一个问题）来判断所属的类别（最后每
个叶子会对应一个类别）。<br />
　　假如负责借贷的银行官员利用上面这棵决策树来决定支持哪些贷款和拒绝哪些贷款，那么他就可以用贷款申请表来运行这棵决策树，用决策树来判断风险的大
小。&ldquo;年收入&gt;￥40,00&rdquo;和&ldquo;高负债&rdquo;的用户被认为是&ldquo;高风险&rdquo;，同时&ldquo;收入&lt;￥40,000&rdquo;但&ldquo;工作时间&gt;5年&rdquo;的申请，则被
认为&ldquo;低风险&rdquo;而建议贷款给他/她。<br />
　　数据挖掘中决策树是一种经常要用到的技术，可以用于分析数据，同样也可以用来作预测（就像上面的银行官员用他来预测贷款风险）。常用的算法有CHAID、 CART、 Quest 和C5.0。<br />
　　建立决策树的过程，即树的生长过程是不断的把数据进行切分的过程，每次切分对应一个问题，也对应着一个节点。对每个切分都要求分成的组之间的&ldquo;差异&rdquo;最大。<br />
　　各种决策树算法之间的主要区别就是对这个&ldquo;差异&rdquo;衡量方式的区别。对具体衡量方式算法的讨论超出了本文的范围，在此我们只需要把切分看成是把一组数据
分成几份，份与份之间尽量不同，而同一份内的数据尽量相同。这个切分的过程也可称为数据的&ldquo;纯化&rdquo;。看我们的例子，包含两个类别--低风险和高风险。如果
经过一次切分后得到的分组，每个分组中的数据都属于同一个类别，显然达到这样效果的切分方法就是我们所追求的。<br />
　　到现在为止我们所讨论的例子都是非常简单的，树也容易理解，当然实际中应用的决策树可能非常复杂。假定我们利用历史数据建立了一个包含几百个属性、输
出的类有十几种的决策树，这样的一棵树对人来说可能太复杂了，但每一条从根结点到叶子节点的路径所描述的含义仍然是可以理解的。决策树的这种易理解性对数
据挖掘的使用者来说是一个显著的优点。<br />
　　然而决策树的这种明确性可能带来误导。比如，决策树每个节点对应分割的定义都是非常明确毫不含糊的，但在实际生活中这种明确可能带来麻烦（凭什么说年收入￥40,001的人具有较小的信用风险而￥40,000的人就没有）。<br />
　　建立一颗决策树可能只要对数据库进行几遍扫描之后就能完成，这也意味着需要的计算资源较少，而且可以很容易的处理包含很多预测变量的情况，因此决策树模型可以建立得很快，并适合应用到大量的数据上。<br />
　　对最终要拿给人看的决策树来说，在建立过程中让其生长的太&ldquo;枝繁叶茂&rdquo;是没有必要的，这样既降低了树的可理解性和可用性，同时也使决策树本身对历史数
据的依赖性增大，也就是说这是这棵决策树对此历史数据可能非常准确，一旦应用到新的数据时准确性却急剧下降，我们称这种情况为训练过度。为了使得到的决策
树所蕴含的规则具有普遍意义，必须防止训练过度，同时也减少了训练的时间。因此我们需要有一种方法能让我们在适当的时候停止树的生长。常用的方法是设定决
策树的最大高度（层数）来限制树的生长。还有一种方法是设定每个节点必须包含的最少记录数，当节点中记录的个数小于这个数值时就停止分割。<br />
　　与设置停止增长条件相对应的是在树建立好之后对其进行修剪。先允许树尽量生长，然后再把树修剪到较小的尺寸，当然在修剪的同时要求尽量保持决策树的准确度尽量不要下降太多。<br />
　　对决策树常见的批评是说其在为一个节点选择怎样进行分割时使用&ldquo;贪心&rdquo;算法。此种算法在决定当前这个分割时根本不考虑此次选择会对将来的分割造成什么
样的影响。换句话说，所有的分割都是顺序完成的，一个节点完成分割之后不可能以后再有机会回过头来再考察此次分割的合理性，每次分割都是依赖于他前面的分
割方法，也就是说决策树中所有的分割都受根结点的第一次分割的影响，只要第一次分割有一点点不同，那么由此得到的整个决策树就会完全不同。那么是否在选择
一个节点的分割的同时向后考虑两层甚至更多的方法，会具有更好的结果呢？目前我们知道的还不是很清楚，但至少这种方法使建立决策树的计算量成倍的增长，因
此现在还没有哪个产品使用这种方法。<br />
　　而且，通常的分割算法在决定怎么在一个节点进行分割时，都只考察一个预测变量，即节点用于分割的问题只与一个变量有关。这样生成的决策树在有些本应很
明确的情况下可能变得复杂而且意义含混，为此目前新提出的一些算法开始在一个节点同时用多个变量来决定分割的方法。比如以前的决策树中可能只能出现类似
&ldquo;收入&lt;￥35,000&rdquo;的判断，现在则可以用&ldquo;收入&lt;(0.35*抵押)&rdquo;或&ldquo;收入&gt;￥35,000或抵押&lt;150,000&rdquo;
这样的问题。<br />
　　决策树很擅长处理非数值型数据，这与神经网络只能处理数值型数据比起来，就免去了很多数据预处理工作。<br />
甚至有些决策树算法专为处理非数值型数据而设计，因此当采用此种方法建立决策树同时又要处理数值型数据时，反而要做把数值型数据映射到非数值型数据的预处理。</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204238#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 17:08:29 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204238</link>
        <guid>http://kayo.javaeye.com/blog/204238</guid>
      </item>
      <item>
        <title>用Java开源项目JOONE实现人工智能编程</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204197" style="color:red;">http://kayo.javaeye.com/blog/204197</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="cnt" id="blog_text">
<p>简介<br />
　　很少有程序员不对这里或者那里所包含的人工智能编程所吸引，然而，许多对AI感兴趣的程序员很快就因其中包含的算法的复杂性而退却。在本文中，我们将讨论一个能大大简化这种复杂性的Java开源工程。<br />
　　Java面向对象的神经网络(JOONE)是一开源工程，它提供给Java程序员一个高适应性的神经网络。该JOONE工程源代码由LGPL所保护。简言之，这意味着源代码是可自由使用的而且你不需要支付版税就可以使用JOONE。JOONE可以从<a href="http://joone.sourceforge.net/">http://joone.sourceforge.net/</a>
处下载。 <br />
JOONE能允许你轻易地从一个Java程序中创建神经网络。JOONE支持许多特征，如多线程和分布式处理。这意味着JOONE能利用多处理机计算机和多台计算机的优势来进行分布式处理。<br />
　　神经网络<br />
　　JOONE用Java实现了一个人工神经网络。一个人工神经网络试图仿效生物学神经网络的功能--神经网络组成今天在地球上几乎所有高等生命的大脑形式。神经网络由神经原组成。</p>
<p><br />
从图1中你可以看出，神经原由一个内核细胞和几个长长的称为触角的连接器组成。神经原之间依靠这些触角进行连接。无论是生物学的还是人工的神经网络，都通过触角把信号从一个神经原传递到另一个神经原来工作。<br />
　　使用JOONE<br />
　　在这篇文章中，你将看到一个简单的怎样使用JOONE的实例。神经网络题目涉及广泛并覆盖许多不同的应用领域。在本文中，我们将展示给你怎样使用JOONE来解决一个很简单的模式识别问题。模式识别是神经网络中的最普遍的应用之一。<br />
　　模式识别提供给神经网络一种模式，判断是否该神经网络能够识别出该模式。这种模式应该能够在某种程度上被扭曲而该神经网络仍然能够识别它。这很像人类
识别东西（如一个交通标志）的能力。人类应该能够识别在下雨天，晴天或者晚上的交通标志。即使这些图像看上去可能相当不同，但人类的大脑仍能够判断出它们
是一样的图像。<br />
　　当进行JOONE编程时，你一般要使用两种类型的对象。你要使用神经原层对象，用于描述一层的一个或多个的具有相似特征的神经原。神经网络经常有一层或两层神经元。这些神经元层通过触角联系在一起。这些触角把这种待识别的模式，从一个神经元层传输到另一个神经元层。<br />
　　触角不仅把这种模式从一个神经元层传输到另一个神经元层。触角还将生成一些指向这种模式的元素的斜线。这些斜线将导致这种模式的某些元素在被传输到下
一个神经元层时不如通过其它方式传递更有效些。这些斜线通常称为权重，它们形成神经网络的存储系统。通过调整存储在触角中的这些权重，可以更改神经网络的
行为。 <br />
　　触角在JOONE中还承担着另外一个角色。在JOONE中，可以把触角看作是数据导管。正如触角把模式从一个神经元层传输到另一个神经元层，指定版本的触角用于把模式传入和传出神经网络。下面将给你展示一个简单的单层的神经网络是怎样被构建并进行模式识别的。<br />
训练神经网络<br />
　　为实现本文的目的，我们将指导JOONE去识别一个很简单的模式。在这种模式中，我们将考察一个二进制的布尔操作，例如XOR。这个XOR操作的真值表列举如下：</p>
<p>X Y X XOR Y <br />
0 0 0 <br />
0 1 1 <br />
1 0 1 <br />
1 1 0 <br />
　　正如你从上表中看到的，XOR运算的结果是只有当X和Y具有不同值时，结果才为真（1）。其它情况下，XOR运算结果均为假（0）。默认地，
JOONE从存储在你的系统中的文本文件中取得输入。这些文本文件通过使用一种称为FileInputSynapse的特殊触角来读取。为了训练XOR运
算问题，你必须建立一个输入文件-该文件包含上面显示的数据。该文件显示在列表1中。<br />
　　列表1:为解决XOR问题的输入文件的内容</p>
<p>0.0;0.0;0.0<br />
0.0;1.0;1.0<br />
1.0;0.0;1.0<br />
1.0;1.0;0.0<br />
　　我们现在分析一个简单的程序，它指导JOONE来识别XOR运算并产生正确的结果。我们现在分析训练该神经网络必须被处理的过程。训练过程包括把
XOR问题提交给神经网络，然后观察结果。如果这个结果不是所预期的，该训练算法将调整存储在触角中的重量。在神经网络的实际输出和预料的输出之间的差距
称为误差。训练将继续到误差小于一个可接受值为止。这个级别通常是一个百分数，如10%。我们现在分析必须用于训练一个神经网络的代码。<br />
　　训练过程通过建立神经网络开始，同时也必须创建隐蔽的输入层和输出层。</p>
<p>// 首先，创造这三个层<br />
input = new SigmoidLayer();<br />
hidden = new SigmoidLayer();<br />
output = new SigmoidLayer(); <br />
　　每个层被使用JOONE对象SigmoidLayer创建。Sigmoidlayer基于自然对数生成一个输出。JOONE还包含另外的层，而不是你可能选择使用的S形的层类型。<br />
　　下一步，每一层被赋于一个名字。这些名字将有助于后面在调试期间识别该层。</p>
<p>input.setLayerName(&quot;input&quot;);<br />
hidden.setLayerName(&quot;hidden&quot;);<br />
output.setLayerName(&quot;output&quot;); <br />
　　现在必须定义每个层。我们将指定在每一层中的&quot;行&quot;号。该&quot;行&quot;号对应于这一层中的神经原的数目。</p>
<p>input.setRows(2);<br />
hidden.setRows(3);<br />
output.setRows(1); <br />
　　从上面的代码看出，输入层有两个神经原，隐蔽层有三个隐蔽神经原，输出层包含一个神经原。这对于神经网络包含两个输入神经原和一个输出神经原是具有重要意义的，因为XOR运算符接收两个参数而产生一个结果。<br />
　　为使用该神经原层，我们也必须创建触角。在本例中，我们要使用多个触角。这些触角用下面的代码实现。</p>
<p>// 输入-&gt; 隐蔽的连接。<br />
FullSynapse synapse_IH = new FullSynapse();<br />
// 隐蔽-&gt; 输出连接。<br />
FullSynapse synapse_HO = new FullSynapse(); <br />
　　就象神经原层的情况一样，触角也可能命名以有助于程序的调试。下面的代码命名新建的触角。</p>
<p>synapse_IH.setName(&quot;IH&quot;);<br />
synapse_HO.setName(&quot;HO&quot;); <br />
　　最后，我们必须把触角联接到适当神经原层。下面的代码实现这一点。</p>
<p>// 联接输入层到隐蔽层<br />
input.addOutputSynapse(synapse_IH);<br />
hidden.addInputSynapse(synapse_IH);<br />
// 联接隐蔽层到输出层<br />
hidden.addOutputSynapse(synapse_HO);<br />
output.addInputSynapse(synapse_HO); <br />
　　现在既然神经网络已被创建，我们必须创建一个用于调节该神经网络的监视器对象。下面的代码创建监视器对象。</p>
<p>//创建监视器对象并且设置学习参数<br />
monitor = new Monitor();<br />
monitor.setLearningRate(0.8);<br />
monitor.setMomentum(0.3); <br />
　　学习速度和动力作为参数以用于指定训练的产生方式。JOONE利用backpropagation学习算法。要更多了解关于学习速度或者动力的信息，你应该参考backpropagation算法。<br />
　　这个监视器对象应该被赋值给每一个神经原层。下面的代码实现这一点。</p>
<p>input.setMonitor(monitor);<br />
hidden.setMonitor(monitor);<br />
output.setMonitor(monitor); <br />
　　就象许多Java对象本身一样，JOONE监视器允许听者可以添加到它上面去。随着训练的进行，JOONE将通知听者有关训练进程的信息。在这个简单的例子中，我们使用:</p>
<p>monitor.addNeuralNetListener(this); <br />
　　我们现在必须建立输入触角。如前所述，我们将使用一个FileInputSynapse来读取一个磁盘文件。磁盘文件不是JOONE唯一能够接受的输
入种类。JOONE对于不同的输入源具有很强的灵活性。为使JOONE能够接收其它输入类型，你只需创建一个新的触角来接受输入。在本例中，我们将简单地
使用FileInputSynapse。FileInputSynapse首先被实例化。</p>
<p>inputStream = new FileInputSynapse(); <br />
　　然后，必须通知FileInputSynapse要使用哪些列。列表1中显示的文件使用了输入数据的前两列。下面代码建立起前两列用于输入到神经网络。</p>
<p>// 前两列包含输入值<br />
inputStream.setFirstCol(1);<br />
inputStream.setLastCol(2); <br />
　　然后，我们必须提供输入文件的名字,这个名字直接来源于用户接口。然后，提供一个编辑控件用于收集输入文件的名字。下面代码为FileInputSynapse设置文件名。</p>
<p>// 这是包含输入数据的文件名<br />
inputStream.setFileName(inputFile.getText()); <br />
　　如前所述，一个触角仅是一个神经原层之间的数据导管。FileInputSynapse正是这里的数据导管，通过它数据进入到神经网络。为了更容易实现这点，我们必须要把FileInputSynapse加到神经网络的输入层。这由下面一行实现。</p>
<p>input.addInputSynapse(inputStream); <br />
　　现在既然已经建立起神经网络，我们必须创建一个训练员和一个监视器。训练员用于训练该神经网络，因为该监视器通过一个事先设置好的训练重复数来运行这
个神经网络。对于每一次训练重复，数据被提供到神经网络，然后就可以观察到结果。该神经网络的权重（存储在穿梭在神经原层之间的触角连接中）将根据误差作
适当调整。随着训练的进行，误差级将下降。下列代码建立训练员并把它依附到监视器。</p>
<p>trainer = new TeachingSynapse();<br />
trainer.setMonitor(monitor); <br />
　　你会记得列表1中提供的输入文件包含三个列。到目前为止，我们仅仅使用了第一、二列，它们指定了到神经网络的输入。第三列包含当提供给神经网络第一列
中的数字时的期盼的输出值。我们必须使得训练员能够存取该列以便能确定误差。该错误是神经网络的实际输出和期盼的输出之间的差距。下列代码创建另外一个
FileInputSynapse并作好准备以读取与前面相同的输入文件。</p>
<p>// 设置包含期望的响应值的文件，这由FileInputSynapse来提供<br />
samples = new FileInputSynapse();<br />
samples.setFileName(inputFile.getText()); <br />
　　这时，我们想指向在第三列的FileInputSynapse。下列代码实现了这一点，然后让训练员使用这个FileInputSynapse。</p>
<p>//输出值在文件中的第三列上<br />
samples.setFirstCol(3);<br />
samples.setLastCol(3);<br />
trainer.setDesired(samples); <br />
　　最后，训练员被连结到神经网络输出层，这将使训练员接收神经网络的输出。</p>
<p>// 连接训练员到网络的最后一层<br />
output.addOutputSynapse(trainer); <br />
　　我们现在已为所有的层准备好后台线程，包括训练员。</p>
<p>input.start();<br />
hidden.start();<br />
output.start();<br />
trainer.start(); <br />
　　最后，我们为训练设置一些参数。我们指定在输入文件中共有四行，而且想训练20，000个周期，而且还在不段学习。如果你设置学习参数为false，该神经网络将简单地处理输入并不进行学习。我们将在下一节讨论输入处理。</p>
<p>monitor.setPatterns(4);<br />
monitor.setTotCicles(20000);<br />
monitor.setLearning(true); <br />
　　现在我们已经为训练过程作好准备。调用监视器的Go方法将在后台启动训练过程。</p>
<p>monitor.Go(); <br />
　　神经网络现在将要被训练20，000个周期。当神经网络训练完成，误差层应该在一个合理的低级别上。一般低于10%的误差级是可接受的。<br />
训练神经网络<br />
　　为实现本文的目的，我们将指导JOONE去识别一个很简单的模式。在这种模式中，我们将考察一个二进制的布尔操作，例如XOR。这个XOR操作的真值表列举如下：</p>
<p>X Y X XOR Y <br />
0 0 0 <br />
0 1 1 <br />
1 0 1 <br />
1 1 0 <br />
　　正如你从上表中看到的，XOR运算的结果是只有当X和Y具有不同值时，结果才为真（1）。其它情况下，XOR运算结果均为假（0）。默认地，
JOONE从存储在你的系统中的文本文件中取得输入。这些文本文件通过使用一种称为FileInputSynapse的特殊触角来读取。为了训练XOR运
算问题，你必须建立一个输入文件-该文件包含上面显示的数据。该文件显示在列表1中。<br />
　　列表1:为解决XOR问题的输入文件的内容</p>
<p>0.0;0.0;0.0<br />
0.0;1.0;1.0<br />
1.0;0.0;1.0<br />
1.0;1.0;0.0<br />
　　我们现在分析一个简单的程序，它指导JOONE来识别XOR运算并产生正确的结果。我们现在分析训练该神经网络必须被处理的过程。训练过程包括把
XOR问题提交给神经网络，然后观察结果。如果这个结果不是所预期的，该训练算法将调整存储在触角中的重量。在神经网络的实际输出和预料的输出之间的差距
称为误差。训练将继续到误差小于一个可接受值为止。这个级别通常是一个百分数，如10%。我们现在分析必须用于训练一个神经网络的代码。<br />
　　训练过程通过建立神经网络开始，同时也必须创建隐蔽的输入层和输出层。</p>
<p>// 首先，创造这三个层<br />
input = new SigmoidLayer();<br />
hidden = new SigmoidLayer();<br />
output = new SigmoidLayer(); <br />
　　每个层被使用JOONE对象SigmoidLayer创建。Sigmoidlayer基于自然对数生成一个输出。JOONE还包含另外的层，而不是你可能选择使用的S形的层类型。<br />
　　下一步，每一层被赋于一个名字。这些名字将有助于后面在调试期间识别该层。</p>
<p>input.setLayerName(&quot;input&quot;);<br />
hidden.setLayerName(&quot;hidden&quot;);<br />
output.setLayerName(&quot;output&quot;); <br />
　　现在必须定义每个层。我们将指定在每一层中的&quot;行&quot;号。该&quot;行&quot;号对应于这一层中的神经原的数目。</p>
<p>input.setRows(2);<br />
hidden.setRows(3);<br />
output.setRows(1); <br />
　　从上面的代码看出，输入层有两个神经原，隐蔽层有三个隐蔽神经原，输出层包含一个神经原。这对于神经网络包含两个输入神经原和一个输出神经原是具有重要意义的，因为XOR运算符接收两个参数而产生一个结果。<br />
　　为使用该神经原层，我们也必须创建触角。在本例中，我们要使用多个触角。这些触角用下面的代码实现。</p>
<p>// 输入-&gt; 隐蔽的连接。<br />
FullSynapse synapse_IH = new FullSynapse();<br />
// 隐蔽-&gt; 输出连接。<br />
FullSynapse synapse_HO = new FullSynapse(); <br />
　　就象神经原层的情况一样，触角也可能命名以有助于程序的调试。下面的代码命名新建的触角。</p>
<p>synapse_IH.setName(&quot;IH&quot;);<br />
synapse_HO.setName(&quot;HO&quot;); <br />
　　最后，我们必须把触角联接到适当神经原层。下面的代码实现这一点。</p>
<p>// 联接输入层到隐蔽层<br />
input.addOutputSynapse(synapse_IH);<br />
hidden.addInputSynapse(synapse_IH);<br />
// 联接隐蔽层到输出层<br />
hidden.addOutputSynapse(synapse_HO);<br />
output.addInputSynapse(synapse_HO); <br />
　　现在既然神经网络已被创建，我们必须创建一个用于调节该神经网络的监视器对象。下面的代码创建监视器对象。</p>
<p>//创建监视器对象并且设置学习参数<br />
monitor = new Monitor();<br />
monitor.setLearningRate(0.8);<br />
monitor.setMomentum(0.3); <br />
　　学习速度和动力作为参数以用于指定训练的产生方式。JOONE利用backpropagation学习算法。要更多了解关于学习速度或者动力的信息，你应该参考backpropagation算法。<br />
　　这个监视器对象应该被赋值给每一个神经原层。下面的代码实现这一点。</p>
<p>input.setMonitor(monitor);<br />
hidden.setMonitor(monitor);<br />
output.setMonitor(monitor); <br />
　　就象许多Java对象本身一样，JOONE监视器允许听者可以添加到它上面去。随着训练的进行，JOONE将通知听者有关训练进程的信息。在这个简单的例子中，我们使用:</p>
<p>monitor.addNeuralNetListener(this); <br />
　　我们现在必须建立输入触角。如前所述，我们将使用一个FileInputSynapse来读取一个磁盘文件。磁盘文件不是JOONE唯一能够接受的输
入种类。JOONE对于不同的输入源具有很强的灵活性。为使JOONE能够接收其它输入类型，你只需创建一个新的触角来接受输入。在本例中，我们将简单地
使用FileInputSynapse。FileInputSynapse首先被实例化。</p>
<p>inputStream = new FileInputSynapse(); <br />
　　然后，必须通知FileInputSynapse要使用哪些列。列表1中显示的文件使用了输入数据的前两列。下面代码建立起前两列用于输入到神经网络。</p>
<p>// 前两列包含输入值<br />
inputStream.setFirstCol(1);<br />
inputStream.setLastCol(2); <br />
　　然后，我们必须提供输入文件的名字,这个名字直接来源于用户接口。然后，提供一个编辑控件用于收集输入文件的名字。下面代码为FileInputSynapse设置文件名。</p>
<p>// 这是包含输入数据的文件名<br />
inputStream.setFileName(inputFile.getText()); <br />
　　如前所述，一个触角仅是一个神经原层之间的数据导管。FileInputSynapse正是这里的数据导管，通过它数据进入到神经网络。为了更容易实现这点，我们必须要把FileInputSynapse加到神经网络的输入层。这由下面一行实现。</p>
<p>input.addInputSynapse(inputStream); <br />
　　现在既然已经建立起神经网络，我们必须创建一个训练员和一个监视器。训练员用于训练该神经网络，因为该监视器通过一个事先设置好的训练重复数来运行这
个神经网络。对于每一次训练重复，数据被提供到神经网络，然后就可以观察到结果。该神经网络的权重（存储在穿梭在神经原层之间的触角连接中）将根据误差作
适当调整。随着训练的进行，误差级将下降。下列代码建立训练员并把它依附到监视器。</p>
<p>trainer = new TeachingSynapse();<br />
trainer.setMonitor(monitor); <br />
　　你会记得列表1中提供的输入文件包含三个列。到目前为止，我们仅仅使用了第一、二列，它们指定了到神经网络的输入。第三列包含当提供给神经网络第一列
中的数字时的期盼的输出值。我们必须使得训练员能够存取该列以便能确定误差。该错误是神经网络的实际输出和期盼的输出之间的差距。下列代码创建另外一个
FileInputSynapse并作好准备以读取与前面相同的输入文件。</p>
<p>// 设置包含期望的响应值的文件，这由FileInputSynapse来提供<br />
samples = new FileInputSynapse();<br />
samples.setFileName(inputFile.getText()); <br />
　　这时，我们想指向在第三列的FileInputSynapse。下列代码实现了这一点，然后让训练员使用这个FileInputSynapse。</p>
<p>//输出值在文件中的第三列上<br />
samples.setFirstCol(3);<br />
samples.setLastCol(3);<br />
trainer.setDesired(samples); <br />
　　最后，训练员被连结到神经网络输出层，这将使训练员接收神经网络的输出。</p>
<p>// 连接训练员到网络的最后一层<br />
output.addOutputSynapse(trainer); <br />
　　我们现在已为所有的层准备好后台线程，包括训练员。</p>
<p>input.start();<br />
hidden.start();<br />
output.start();<br />
trainer.start(); <br />
　　最后，我们为训练设置一些参数。我们指定在输入文件中共有四行，而且想训练20，000个周期，而且还在不段学习。如果你设置学习参数为false，该神经网络将简单地处理输入并不进行学习。我们将在下一节讨论输入处理。</p>
<p>monitor.setPatterns(4);<br />
monitor.setTotCicles(20000);<br />
monitor.setLearning(true);</p>
<p><br />
现在我们已经为训练过程作好准备。调用监视器的Go方法将在后台启动训练过程。</p>
<p>monitor.Go(); <br />
　　神经网络现在将要被训练20，000个周期。当神经网络训练完成，误差层应该在一个合理的低级别上。一般低于10%的误差级是可接受的</p>
<p><br />
转载</p>
<p>用Java开源项目JOONE实现人工智能编程</p>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204197#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 16:22:40 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204197</link>
        <guid>http://kayo.javaeye.com/blog/204197</guid>
      </item>
      <item>
        <title>什么是BeanShell?</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204194" style="color:red;">http://kayo.javaeye.com/blog/204194</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong><span style="font-size: medium;">什么是BeanShell?<br />
<br />
</span>
</strong>
BeanShell是一个小型的，免费的，可嵌入式的，具有面向对象脚本语言特性的Java代码解释器。它是用Java语言写的。它能执行标准的Java语句和表达式，还自带简单的脚本命令和语法。它把编程对象当成一个简单的方法，这很像Perl和JavaScript.<br />
你
可以在写Java测试或调试时使用BeanShell，也可以用它作为你的应用程序的脚本引挚。简而言之，BeanShell可以动态的解释JAVA语
言。也就是说BeanShell在许多方面对于Java的用处就像Tcl/Tk对于C的用处一样：BeanShell是可嵌入式的---你可以在运行时从
你的应用程序调用BeanShell去动态的执行Java代码或是为你的应用程序提供脚本扩展。相反，你也可以从BeanShell调用你的应用程序及其
对象，它可以让JAVA对象和API动态运行。正因为BeanShell是用JAVA写的，所以它可以和你的应用程序运行在同一个JVM空间内，你也可以
自由的传递实时对象的参照(References)到脚本代码中并且作为结果返回。</p>
<p><strong>主要特性<br />
</strong>
<br />
1.使用了JAVA的反射机制，可在运行时解释JAVA语句和表达式。<br />
2.可以透明的存取所有的JAVA物件和API。<br />
4.有四种运行模式：命令行，控制台，Applet,远程会话服务器(Remote Session Server)。<br />
5.可以在Applet和Application中。<br />
6.这个解释器包只有不到175k(不包括约135k的实用工具)。<br />
7.采用纯JAVA语言。<br />
9.它是完全免费的!</p>
<p><strong>JAVA方面的特性<br />
<br />
</strong>
1.覆盖了所有的Java语句和表达式语法。<br />
2.强效的变量类型与方法。<br />
3.原始值到正确数据类型处理能力。<br />
4.完全Java算法，逻辑，与按位操作。<br />
5.对象构造和多 维数组处理。<br />
6.具有break和return的循环及流程控制结构。<br />
7.具有多形/重载特性的方法调用。<br />
8.完全的异常(Exception)处理。</p>
<p><strong>脚本特性<br />
<br />
</strong>
1.动态类型(无类型)的变量。<br />
2.具有参数和返回值的脚本方法。<br />
3.脚本对象。<br />
4.AWT/SWING事件的脚本处理。<br />
5.BeanShell脚本能使用Java Interface的implements属性(要求jdk1.3+)。<br />
6.方便的使用JavaBean的属性，hashtable,和原始数据类型的封装器(Wrapper)。<br />
7.可扩展的工具命令集，像&quot;load/save(bean)&quot;和&quot;eval(String)&quot;。<br />
8.支持namespace/scope修饰：this,super,global。</p>
<p><strong>用途提示<br />
</strong>
<strong><br />
</strong>
1.与JAVA程序交互---试出对象特性，API和GUI对象。<br />
2.作为应用程序的脚本扩展环境---从你的应用程序使用BeanShell代替JAVA编译器来调用。<br />
3.教育用途---放一个JAVA开发环境在你的java教学网页上真是再好不过了。<br />
4.科学和金融应用中的表达式求值程序---可以使用条件和循环计算复杂的表达式。<br />
5.处理JAVABEAN的设置---用BeanShell的save()命令来写。<br />
6.调试用途---深入JVM玩一玩。</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204194#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 16:17:17 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204194</link>
        <guid>http://kayo.javaeye.com/blog/204194</guid>
      </item>
      <item>
        <title>JSP内置对象(9个常用的内置对象) </title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204144" style="color:red;">http://kayo.javaeye.com/blog/204144</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
    JSP内置对象(9个常用的内置对象)  
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
1.request对象
<br />
<br />
<br />
客户端的请求信息被封装在request对象中，通过它才能了解到客户的需求，然后做出响应。它是HttpServletRequest类的实例。 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 object getAttribute(String name) 返回指定属性的属性值 
<br />
<br />
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 
<br />
<br />
3 String getCharacterEncoding() 返回字符编码方式 
<br />
<br />
4 int getContentLength() 返回请求体的长度（以字节数） 
<br />
<br />
5 String getContentType() 得到请求体的MIME类型 
<br />
<br />
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流 
<br />
<br />
7 String getParameter(String name) 返回name指定参数的参数值 
<br />
<br />
8 Enumeration getParameterNames() 返回可用参数名的枚举 
<br />
<br />
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组 
<br />
<br />
10 String getProtocol() 返回请求用的协议类型及版本号 
<br />
<br />
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等 
<br />
<br />
12 String getServerName() 返回接受请求的服务器主机名 
<br />
<br />
13 int getServerPort() 返回服务器接受此请求所用的端口号 
<br />
<br />
14 BufferedReader getReader() 返回解码过了的请求体 
<br />
<br />
15 String getRemoteAddr() 返回发送此请求的客户端IP地址 
<br />
<br />
16 String getRemoteHost() 返回发送此请求的客户端主机名 
<br />
<br />
17 void setAttribute(String key,Object obj) 设置属性的属性值 
<br />
<br />
18 String getRealPath(String path) 返回一虚拟路径的真实路径 
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
2.response对象 
<br />
<br />
<br />
response对象包含了响应客户请求的有关信息，但在JSP中很少直接用到它。它是HttpServletResponse类的实例。 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 String getCharacterEncoding() 返回响应用的是何种字符编码 
<br />
<br />
2 ServletOutputStream getOutputStream() 返回响应的一个二进制输出流 
<br />
<br />
3 PrintWriter getWriter() 返回可以向客户端输出字符的一个对象 
<br />
<br />
4 void setContentLength(int len) 设置响应头长度 
<br />
<br />
5 void setContentType(String type) 设置响应的MIME类型 
<br />
<br />
6 sendRedirect(java.lang.String location) 重新定向客户端的请求 
<br />
<br />
　 
<br />
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
3.session对象 
<br />
<br />
<br />
session对象指的是客户端与服务器的一次会话，从客户连到服务器的一个WebApplication开始，直到客户端与服务器断开连接为止。它是HttpSession类的实例. 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 long getCreationTime() 返回SESSION创建时间 
<br />
<br />
2 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号 
<br />
<br />
3 long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间 
<br />
<br />
4 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms) 
<br />
<br />
5 String[] getValueNames() 返回一个包含此SESSION中所有可用属性的数组 
<br />
<br />
6 void invalidate() 取消SESSION，使SESSION不可用 
<br />
<br />
7 boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入 
<br />
<br />
8 void removeValue(String name) 删除SESSION中指定的属性 
<br />
<br />
9 void setMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取消(ms) 
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
4.out对象 
<br />
<br />
<br />
out对象是JspWriter类的实例,是向客户端输出内容常用的对象 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 void clear() 清除缓冲区的内容 
<br />
<br />
2 void clearBuffer() 清除缓冲区的当前内容 
<br />
<br />
3 void flush() 清空流 
<br />
<br />
4 int getBufferSize() 返回缓冲区以字节数的大小，如不设缓冲区则为0 
<br />
<br />
5 int getRemaining() 返回缓冲区还剩余多少可用 
<br />
<br />
6 boolean isAutoFlush() 返回缓冲区满时，是自动清空还是抛出异常 
<br />
<br />
7 void close() 关闭输出流 
<br />
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
5.page对象 
<br />
<br />
<br />
page对象就是指向当前JSP页面本身，有点象类中的this指针，它是java.lang.Object类的实例 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 class getClass 返回此Object的类 
<br />
<br />
2 int hashCode() 返回此Object的hash码 
<br />
<br />
3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 
<br />
<br />
4 void copy(Object obj) 把此Object拷贝到指定的Object对象中 
<br />
<br />
5 Object clone() 克隆此Object对象 
<br />
<br />
6 String toString() 把此Object对象转换成String类的对象 
<br />
<br />
7 void notify() 唤醒一个等待的线程 
<br />
<br />
8 void notifyAll() 唤醒所有等待的线程 
<br />
<br />
9 void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒 
<br />
<br />
10 void wait() 使一个线程处于等待直到被唤醒 
<br />
<br />
11 void enterMonitor() 对Object加锁 
<br />
<br />
12 void exitMonitor() 对Object开锁 
<br />
<br />
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
6.application对象 
<br />
<br />
<br />
application对象实现了用户间数据的共享，可存放全局变量。它开始于服务器的启动，直到服务器的关闭，在此期间，此对象将一直存在；这
样在用户的前后连接或不同用户之间的连接中，可以对此对象的同一属性进行操作；在任何地方对此对象属性的操作，都将影响到其他用户对此的访问。服务器的启
动和关闭决定了application对象的生命。它是ServletContext类的实例。 <br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 Object getAttribute(String name) 返回给定名的属性值 
<br />
<br />
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举 
<br />
<br />
3 void setAttribute(String name,Object obj) 设定属性的属性值 
<br />
<br />
4 void removeAttribute(String name) 删除一属性及其属性值 
<br />
<br />
5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本号 
<br />
<br />
6 String getRealPath(String path) 返回一虚拟路径的真实路径 
<br />
<br />
7 ServletContext getContext(String uripath) 返回指定WebApplication的application对象 
<br />
<br />
8 int getMajorVersion() 返回服务器支持的Servlet API的最大版本号 
<br />
<br />
9 int getMinorVersion() 返回服务器支持的Servlet API的最大版本号 
<br />
<br />
10 String getMimeType(String file) 返回指定文件的MIME类型 
<br />
<br />
11 URL getResource(String path) 返回指定资源(文件及目录)的URL路径 
<br />
<br />
12 InputStream getResourceAsStream(String path) 返回指定资源的输入流 
<br />
<br />
13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定资源的RequestDispatcher对象 
<br />
<br />
14 Servlet getServlet(String name) 返回指定名的Servlet 
<br />
<br />
15 Enumeration getServlets() 返回所有Servlet的枚举 
<br />
<br />
16 Enumeration getServletNames() 返回所有Servlet名的枚举 
<br />
<br />
17 void log(String msg) 把指定消息写入Servlet的日志文件 
<br />
<br />
18 void log(Exception exception,String msg) 把指定异常的栈轨迹及错误消息写入Servlet的日志文件 
<br />
<br />
19 void log(String msg,Throwable throwable) 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件 
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
7.exception对象 
<br />
<br />
<br />
exception对象是一个例外对象，当一个页面在运行过程中发生了例外，就产生这个对象。如果一个JSP页面要应用此对象，就必须把isErrorPage设为true，否则无法编译。他实际上是java.lang.Throwable的对象 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 String getMessage() 返回描述异常的消息 
<br />
<br />
2 String toString() 返回关于异常的简短描述消息 
<br />
<br />
3 void printStackTrace() 显示异常及其栈轨迹 
<br />
<br />
4 Throwable FillInStackTrace() 重写异常的执行栈轨迹 
<br />
<br />
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
8.pageContext对象 
<br />
<br />
<br />
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问，也就是说他可以访问到本页所在的SESSION，也可以取本页面所在的application的某一属性值，他相当于页面中所有功能的集大成者，它的本类名也叫pageContext。 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 JspWriter getOut() 返回当前客户端响应被使用的JspWriter流(out) 
<br />
<br />
2 HttpSession getSession() 返回当前页中的HttpSession对象(session) 
<br />
<br />
3 Object getPage() 返回当前页的Object对象(page) 
<br />
<br />
4 ServletRequest getRequest() 返回当前页的ServletRequest对象(request) 
<br />
<br />
5 ServletResponse getResponse() 返回当前页的ServletResponse对象(response) 
<br />
<br />
6 Exception getException() 返回当前页的Exception对象(exception) 
<br />
<br />
7 ServletConfig getServletConfig() 返回当前页的ServletConfig对象(config) 
<br />
<br />
8 ServletContext getServletContext() 返回当前页的ServletContext对象(application) 
<br />
<br />
9 void setAttribute(String name,Object attribute) 设置属性及属性值 
<br />
<br />
10 void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值 
<br />
<br />
11 public Object getAttribute(String name) 取属性的值 
<br />
<br />
12 Object getAttribute(String name,int scope) 在指定范围内取属性的值 
<br />
<br />
13 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL 
<br />
<br />
14 void removeAttribute(String name) 删除某属性 
<br />
<br />
15 void removeAttribute(String name,int scope) 在指定范围删除某属性 
<br />
<br />
16 int getAttributeScope(String name) 返回某属性的作用范围 
<br />
<br />
17 Enumeration getAttributeNamesInScope(int scope) 返回指定范围内可用的属性名枚举 
<br />
<br />
18 void release() 释放pageContext所占用的资源 
<br />
<br />
19 void forward(String relativeUrlPath) 使当前页面重导到另一页面 
<br />
<br />
20 void include(String relativeUrlPath) 在当前位置包含另一文件 
<br />
<br />
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
9.config对象 
<br />
<br />
<br />
config对象是在一个Servlet初始化时，JSP引擎向它传递信息用的，此信息包括Servlet初始化时所要用到的参数（通过属性名和属性值构成）以及服务器的有关信息（通过传递一个ServletContext对象） 
<br />
<br />
<br />
序号 方 法 说 明 
<br />
<br />
1 ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象 
<br />
<br />
2 String getInitParameter(String name) 返回初始化参数的值 
<br />
<br />
3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204144#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 14:25:28 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204144</link>
        <guid>http://kayo.javaeye.com/blog/204144</guid>
      </item>
      <item>
        <title>hibernate Session</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204143" style="color:red;">http://kayo.javaeye.com/blog/204143</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="color: darkred;">Session 接口</span>
<br />
Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中，实例
<br />
化的Session是一个轻量级的类，创建和销毁它都不会占用很多资源。这在实际项目中确实很重要，
<br />
因为在客户程序中，可能会不断地创建以及销毁Session 对象，如果Session 的开销太大，会给系
<br />
统带来不良影响。但值得注意的是Session 对象是非线程安全的，因此在你的设计中，最好是一个
<br />
线程只创建一个Session对象。
<br />
在Hibernate 的设计者的头脑中，他们将session看作介于数据连接与事务管理一种中间接口。
<br />
我们可以将session想象成一个持久对象的缓冲区，Hibernate能检测到这些持久对象的改变，并及
<br />
时刷新数据库。我们有时也称Session是一个持久层管理器，因为它包含这一些持久层相关的操作，
<br />
诸如存储持久对象至数据库，以及从数据库从获得它们。请注意，Hibernate 的session不同于JSP
<br />
应用中的HttpSession。当我们使用session这个术语时，我们指的是Hibernate 中的session，而
<br />
我们以后会将HttpSesion 对象称为用户session。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">SessionFactory 接口</span>
<br />
这里用到了一个设计模式――工厂模式，用户程序从工厂类SessionFactory中取得Session 的
<br />
实例。
<br />
令你感到奇怪的是SessionFactory并不是轻量级的！实际上它的设计者的意图是让它能在整个
<br />
应用中共享。典型地来说，一个项目通常只需要一个SessionFactory就够了，但是当你的项目要操
<br />
作多个数据库时，那你必须为每个数据库指定一个SessionFactory。
<br />
SessionFactory在Hibernate中实际起到了一个缓冲区的作用，它缓冲了Hibernate自动生成的SQL
<br />
语句和一些其它的映射数据，还缓冲了一些将来有可能重复利用的数据。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">Configuration 接口</span>
<br />
Configuration 接口的作用是对Hibernate 进行配置，以及对它进行启动。在Hibernate 的启动
<br />
过程中，Configuration 类的实例首先定位映射文档的位置，读取这些配置，然后创建一个
<br />
SessionFactory对象。
<br />
虽然Configuration 接口在整个Hibernate 项目中只扮演着一个很小的角色，但它是启动
<br />
hibernate 时你所遇到的每一个对象。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">Transaction 接口</span>
<br />
Transaction 接口是一个可选的API，你可以选择不使用这个接口，取而代之的是Hibernate 的
<br />
设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象，这些实现包
<br />
括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开
<br />
发者能够使用一个统一事务的操作界面，使得自己的项目可以在不同的环境和容器之间方便地移值。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">Query 和Criteria接口</span>
<br />
Query接口让你方便地对数据库及持久对象进行查询，它可以有两种表达方式：HQL语言或本
<br />
地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量，并最终执行查询操作。
<br />
Criteria接口与Query接口非常类似，它允许你创建并执行面向对象的标准化查询。
<br />
值得注意的是Query接口也是轻量级的，它不能在Session之外使用。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">Callback 接口</span>
<br />
当一些有用的事件发生时――例如持久对象的载入、存储、删除时，Callback 接口会通知
<br />
Hibernate去接收一个通知消息。一般而言，Callback接口在用户程序中并不是必须的，但你要在你
<br />
的项目中创建审计日志时，你可能会用到它。
<br />
<img src="http://bye.javaeye.com/images/smiles/icon_idea.gif" alt="" />
<span style="color: darkred;">策略接口</span>
<br />
Hibernate与某些其它开源软件不同的还有一点――高度的可扩展性，这通过它的内置策略机制
<br />
来实现。当你感觉到Hibernate 的某些功能不足，或者有某些缺陷时，你可以开发一个自己的策略来替换它，而你所要做的仅仅只是继承它的某个策略接口，然后实现你的新策略就可以了，以下是
<br />
它的策略接口：
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
主键的生成 (IdentifierGenerator 接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
本地SQL语言支持 (Dialect 抽象类)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
缓冲机制 (Cache 和CacheProvider 接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
JDBC 连接管理 (ConnectionProvider接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
事务管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
ORM 策略 (ClassPersister 接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
属性访问策略 (PropertyAccessor 接口)
<br />
&middot; <img src="http://bye.javaeye.com/images/smiles/icon_wink.gif" alt="" />
代理对象的创建 (ProxyFactory接口)
<br />
Hibernate为以上所列的机制分别创建了一个缺省的实现，因此如果你只是要增强它的某个策略
<br />
的功能的话，只需简单地继承这个类就可以了，没有必要从头开始写代码。</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204143#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 14:24:42 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204143</link>
        <guid>http://kayo.javaeye.com/blog/204143</guid>
      </item>
      <item>
        <title>上帝的回答</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/204139" style="color:red;">http://kayo.javaeye.com/blog/204139</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>韩国人问上帝：我们什么时候能得世界冠军？ <br />
<br />
上帝答：50年以后。韩国人哭着说：我是等不到了！ <br />
<br />
日本人问上帝：我们什么时候能得世界冠军？ <br />
<br />
上帝答：100年以后。日本人哭着说：我是等不到了！ <br />
<br />
中国人问上帝：我们什么时候能得世界冠军？ <br />
<br />
这次是上帝哭着回答说：我是等不到了！！ <br />
&nbsp;<br />
<br />
1,停球 <br />
<br />
把球停到自己脚下10毫米的后卫，是巴西球员。 <br />
<br />
把球停到自己脚下10厘米的后卫，是西班牙球员。 <br />
<br />
把球停到自己脚下10分米的后卫，是德国球员。 <br />
<br />
把球停到自己脚下100米，并形成射门，迫使对方门将做出扑救的后卫，是中国球员。 <br />
<br />
<br />
2,传球 <br />
<br />
能够做出50米外精确长传，找到场上队友的球员，是英国球员。 <br />
<br />
能够做出5米内精巧二过一的球员，是阿根廷球员。 <br />
<br />
能够做出5米内短传传丢，并且后卫前锋隔着50米就玩二过一的球员，是中国球员。 <br />
<br />
<br />
3,射门 <br />
<br />
能够在30米外劲射破门的球员，是德国球员。 <br />
<br />
能够通过精妙配合在门前3米打空门得手的球员，是葡萄牙球员。 <br />
<br />
能够在罚点球时把角旗打翻的球员，是中国球员。 <br />
<br />
<br />
4,带球 <br />
<br />
能够把球从本方底线带到对方半场的球员，是荷兰球员。 <br />
<br />
能够把球从本方底线带到对方底线的球员，是巴西球员。 <br />
<br />
<br />
能够把球从本方球员脚下抢断，并带到本方球门里的，是中国球员。 <br />
<br />
能够把球带得像亨利一样的，是大帝。 <br />
<br />
<br />
5,球风 <br />
<br />
能够对裁判鼓掌的球员，是欧洲球员。 <br />
<br />
能够对裁判说脏话的球员，是南美球员。 <br />
<br />
能够对裁判吐口水和追打的球员，是中国球员。 <br />
<br />
<br />
6,踩单车 <br />
<br />
能够连踩8个单车，得到点球的球员，是巴西球员。 <br />
<br />
能够连踩3个单车，突入禁区助攻的球员，是葡萄牙球员。 <br />
<br />
能够连踩半个单车，把自己摔成骨折的球员，是中国球员。 <br />
<br />
<br />
7,体能 <br />
<br />
能够狂奔90分钟，面不改色的球员，是韩国球员。 <br />
<br />
能够奔跑90分钟，气喘吁吁的球员，是欧洲球员。 <br />
<br />
能够跑动90分钟，汗流浃背的球员，是南美球员。 <br />
<br />
能够散步90分钟，倒地抽筋的球员，是中国球员。 <br />
<br />
<br />
8,速度 <br />
<br />
能够跑的比球快的球员，是荷兰球员。 <br />
<br />
能够跑的跟球一样快的球员，是英国球员。 <br />
<br />
能够跑的跟裁判一样快的球员，是马尔代夫球员。 <br />
<br />
连裁判都跑不过的球员，是中国球员。 <br />
<br />
<br />
9,态度 <br />
<br />
把足球当成生命的，是非洲球员。 <br />
<br />
把足球当成工作的，是欧洲球员。 <br />
<br />
把足球当成游戏的，是南美球员。 <br />
<br />
把足球当成儿戏的，是中国球员。&nbsp; </p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/204139#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 14:11:10 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/204139</link>
        <guid>http://kayo.javaeye.com/blog/204139</guid>
      </item>
      <item>
        <title>ETL</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/202071" style="color:red;">http://kayo.javaeye.com/blog/202071</a>&nbsp;
          发表时间: 2008年06月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="box2"><span class="Tit">ETL</span>
<div class="kind f14"><strong>开放分类：</strong>
			<a href="http://baike.baidu.com/w?ct=17&amp;lm=0&amp;tn=baiduWikiSearch&amp;pn=0&amp;rn=10&amp;submit=search&amp;word=tag:%BC%C6%CB%E3%BB%FA&amp;tagfromview" target="_blank">计算机</a>
、<a href="http://baike.baidu.com/w?ct=17&amp;lm=0&amp;tn=baiduWikiSearch&amp;pn=0&amp;rn=10&amp;submit=search&amp;word=tag:%C9%CC%D2%B5%D6%C7%C4%DC&amp;tagfromview" target="_blank">商业智能</a>
、<a href="http://baike.baidu.com/w?ct=17&amp;lm=0&amp;tn=baiduWikiSearch&amp;pn=0&amp;rn=10&amp;submit=search&amp;word=tag:%CA%FD%BE%DD%B2%D6%BF%E2&amp;tagfromview" target="_blank">数据仓库</a>
<br />
			</div>
</div>
<p>
	
		
		
			
            
			<strong>ETL</strong>
，<strong>Extraction-Transformation-Loading</strong>
的缩写，中文名称为<strong>数据抽取、转换和加载</strong>
。<br />
<br />
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成，最后加载到数据仓库或数据集市中，成为联机分析处理、数据挖掘的基础。<br />
<br />
ETL是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库，数据仓库技术没有严格的数学理论基础，它更面向实际工程应用。所以从
工程应用的角度来考虑，按着物理数据模型的要求加载数据并对数据进行一些系列处理，处理过程与经验直接相关，同时这部分的工作直接关系数据仓库中数据的质
量，从而影响到联机分析处理和数据挖掘的结果的质量。<br />
<br />
数据仓库是一个独立的数据环境，需要通过抽取过程将数据从联机事务处理环境、外部数据源和脱机的数据存储介质导入到数据仓库中；在技术上，ETL主要涉及
到关联、转换、增量、调度和监控等几个方面；数据仓库系统中数据不要求与联机事务处理系统中数据实时同步，所以ETL可以定时进行。但多个ETL的操作时
间、顺序和成败对数据仓库中信息的有效性至关重要。<br />
<br />
　　ETL(Extract-Transform-Load的缩写，即数据抽取、转换、装载的过程)作为BI/DW（Business
Intelligence）的核心和灵魂，能够按照统一的规则集成并提高数据的价值，是负责完成数据从数据源向目标数据仓库转化的过程，是实施数据仓库的
重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图，数据是砖瓦的话，那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设
计，而ETL规则设计和实施则是工作量最大的，约占整个项目的60%～80%，这是国内外从众多实践中得到的普遍共识。<br />
<br />
&nbsp; &nbsp;&nbsp;
&nbsp;ETL是数据抽取（Extract）、转换（Transform）、清洗（Cleansing）、装载（Load）的过程。是构建数据仓库的重要一环，
用户从数据源抽取出所需的数据，经过数据清洗,最终按照预先定义好的数据仓库模型，将数据加载到数据仓库中去。<br />
<br />
　　信息是现代企业的重要资源，是企业运用科学管理、决策分析的基础。目前，大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公
自动化系统，用来记录事务处理的各种相关数据。据统计，数据量每2～3年时间就会成倍增长，这些数据蕴含着巨大的商业价值，而企业所关注的通常只占在总数
据量的2％～4％左右。因此，企业仍然没有最大化地利用已存在的数据资源，以致于浪费了更多的时间和资金，也失去制定关键商业决策的最佳契机。于是，企业
如何通过各种技术手段，并把数据转换为信息、知识，已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。如何正确选择ETL工具？如何
正确应用ETL？<br />
<br />
　　目前，ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS&hellip;&hellip;<br />
<br />
　　数据集成：快速实现ETL<br />
<br />
　　ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多，由系统集成和历史数
据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致；业务系统不同时期业务过程有变化；旧系统模块在运营、人事、财务、办公系统等相关信息的
不一致；遗留系统和新业务、管理系统数据集成不完备带来的不一致性。<br />
<br />
　　实现ETL，首先要实现ETL转换的过程。它可以集中地体现为以下几个方面：<br />
<br />
　　空值处理 可捕获字段空值，进行加载或替换为其他含义数据，并可根据字段空值实现分流加载到不同目标库。<br />
<br />
　　规范化数据格式 可实现字段格式约束定义，对于数据源中时间、数值、字符等数据，可自定义加载格式。<br />
<br />
　　拆分数据 依据业务需求对字段可进行分解。例，主叫号 861084613409，可进行区域码和电话号码分解。<br />
<br />
　　验证数据正确性 可利用Lookup及拆分功能进行数据验证。例如，主叫号861084613409，进行区域码和电话号码分解后，可利用Lookup返回主叫网关或交换机记载的主叫地区，进行数据验证。<br />
<br />
　　数据替换 对于因业务因素，可实现无效数据、缺失数据的替换。<br />
<br />
　　Lookup 查获丢失数据 Lookup实现子查询，并返回用其他手段获取的缺失字段，保证字段完整性。<br />
<br />
　　建立ETL过程的主外键约束 对无依赖性的非法数据，可替换或导出到错误数据文件中，保证主键惟一记录的加载。<br />
<br />
　　为了能更好地实现ETL，笔者建议用户在实施ETL过程中应注意以下几点：<br />
<br />
　　第一，如果条件允许，可利用数据中转区对运营数据进行预处理，保证集成与加载的高效性；<br />
<br />
　　第二，如果ETL的过程是主动&ldquo;拉取&rdquo;，而不是从内部&ldquo;推送&rdquo;，其可控性将大为增强；<br />
<br />
　　第三，ETL之前应制定流程化的配置管理和标准协议；<br />
<br />
　　第四，关键数据标准至关重要。目前，ETL面临的最大挑战是当接收数据时其各源数据的异构性和低质量。以电信为例，A系统按照统计代码管理数据，B系
统按照账目数字管理，C系统按照语音ID管理。当ETL需要对这三个系统进行集成以获得对客户的全面视角时，这一过程需要复杂的匹配规则、名称/地址正常
化与标准化。而ETL在处理过程中会定义一个关键数据标准，并在此基础上，制定相应的数据接口标准。<br />
<br />
　　ETL过程在很大程度上受企业对源数据的理解程度的影响，也就是说从业务的角度看数据集成非常重要。一个优秀的ETL设计应该具有如下功能：<br />
<br />
　　管理简单；采用元数据方法，集中进行管理；接口、数据格式、传输有严格的规范；尽量不在外部数据源安装软件；数据抽取系统流程自动化，并有自动调度功
能；抽取的数据及时、准确、完整；可以提供同各种数据系统的接口，系统适应性强；提供软件框架系统，系统功能改变时，应用程序很少改变便可适应变化；可扩
展性强。<br />
<br />
<br />
　　数据模型：标准定义数据<br />
<br />
<br />
　　合理的业务模型设计对ETL至关重要。数据仓库是企业惟一、真实、可靠的综合数据平台。数据仓库的设计建模一般都依照三范式、星型模型、雪花模型，无
论哪种设计思想，都应该最大化地涵盖关键业务数据，把运营环境中杂乱无序的数据结构统一成为合理的、关联的、分析型的新结构，而ETL则会依照模型的定义
去提取数据源，进行转换、清洗，并最终加载到目标数据仓库中。<br />
<br />
　　模型的重要之处在于对数据做标准化定义，实现统一的编码、统一的分类和组织。标准化定义的内容包括：标准代码统一、业务术语统一。ETL依照模型进行
初始加载、增量加载、缓慢增长维、慢速变化维、事实表加载等数据集成，并根据业务需求制定相应的加载策略、刷新策略、汇总策略、维护策略。<br />
<br />
<br />
　　元数据：拓展新型应用<br />
<br />
<br />
　　对业务数据本身及其运行环境的描述与定义的数据，称之为元数据（metadata）。元数据是描述数据的数据。从某种意义上说，业务数据主要用于支持
业务系统应用的数据，而元数据则是企业信息门户、客户关系管理、数据仓库、决策支持和B2B等新型应用所不可或缺的内容。<br />
<br />
　　元数据的典型表现为对象的描述，即对数据库、表、列、列属性（类型、格式、约束等）以及主键/外部键关联等等的描述。特别是现行应用的异构性与分布性
越来越普遍的情况下，统一的元数据就愈发重要了。&ldquo;信息孤岛&rdquo;曾经是很多企业对其应用现状的一种抱怨和概括，而合理的元数据则会有效地描绘出信息的关联
性。<br />
<br />
　　而元数据对于ETL的集中表现为：定义数据源的位置及数据源的属性、确定从源数据到目标数据的对应规则、确定相关的业务逻辑、在数据实际加载前的其他
必要的准备工作，等等，它一般贯穿整个数据仓库项目，而ETL的所有过程必须最大化地参照元数据，这样才能快速实现ETL。<br />
<br />
　　ETL体系结构<br />
<br />
　　下图为ETL体系结构，它体现了主流ETL产品框架的主要组成部分。ETL是指从源系统中提取数据，转换数据为一个标准的格式，并加载数据到目标数据存储区，通常是数据仓库。<br />
<br />
　　ETL体系结构图<br />
<br />
　　Design manager 提供一个图形化的映射环境，让开发者定义从源到目标的映射关系、转换、处理流程。设计过程的各对象的逻辑定义存储在一个元数据资料库中。<br />
<br />
　　Meta data management 提供一个关于ETL设计和运行处理等相关定义、管理信息的元数据资料库。ETL引擎在运行时和其它应用都可参考此资料库中的元数据。<br />
<br />
　　Extract 通过接口提取源数据，例如ODBC、专用数据库接口和平面文件提取器，并参照元数据来决定数据的提取及其提取方式。<br />
<br />
　　Transform 开发者将提取的数据，按照业务需要转换为目标数据结构，并实现汇总。<br />
<br />
　　Load 加载经转换和汇总的数据到目标数据仓库中，可实现SQL或批量加载。<br />
<br />
　　Transport services 利用网络协议或文件协议，在源和目标系统之间移动数据，利用内存在ETL处理的各组件中移动数据。<br />
<br />
　　Administration and operation 可让管理员基于事件和时间进行调度、运行、监测ETL作业、管理错误信息、从失败中恢复和调节从源系统的输出。</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/202071#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 11 Jun 2008 11:46:57 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/202071</link>
        <guid>http://kayo.javaeye.com/blog/202071</guid>
      </item>
      <item>
        <title>Session跟踪</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/202021" style="color:red;">http://kayo.javaeye.com/blog/202021</a>&nbsp;
          发表时间: 2008年06月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
    Session跟踪 </p>
<div class="para">Web容器使用了一些方法使用户和特定的session相关联，这些方法在客户端与服务器端之间传递session的标识。这个标识可以作为cookies在客户端被维护，或者Web组件把这个标识包含在每个URL中返回到客户端。</div>
<div class="para">如
果应用需要使用session对象，那么开发人员必须确保在用户关闭cookies的情况下，应用能够改写URL使session跟踪功能激活。在所有返
回给用户URL之前都调用response的encodeURL(URL)方法，这样在用户关闭cookies的情况下URL中就会包含session
ID，否则不改变URL。 例如：</div>
<div class="programlisting">
<pre>   out.println(&quot;&lt;p&gt; &amp;nbsp; &lt;p&gt;&lt;strong&gt;&lt;a href=\&quot;&quot; +      response.encodeURL(request.getContextPath() + &quot;/catalog&quot;) + 
     &quot;\&quot;&gt;&quot; + messages.getString(&quot;ContinueShopping&quot;) + 
     &quot;&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot; + 
     &quot;&lt;a href=\&quot;&quot; +      response.encodeURL(request.getContextPath() + &quot;/cashier&quot;) +  
    &quot;\&quot;&gt;&quot; + messages.getString(&quot;Checkout&quot;) + 
     &quot;&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&quot; +  
    &quot;&lt;a href=\&quot;&quot; +       response.encodeURL(request.getContextPath() + 
     &quot;/showcart?Clear=clear&quot;) +      &quot;\&quot;&gt;&quot; + messages.getString(&quot;ClearCart&quot;) + 
     &quot;&lt;/a&gt;&lt;/strong&gt;&quot;);</pre>
</div>
<div class="para">上面的代码改写了三个URL，如果客户端关闭 cookies，则URL被改写为:</div>
<div class="para">http://localhost:6888/bookstore1/cashier; jsessionid=wKgUUxroPN$HVmpTkhU6YPLTqyMA </div>
<div class="para">如果客户端cookies未关闭，则URL不作任何改变：</div>
<div class="para">http://localhost:6888/bookstore1/cashier </div>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/202021#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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 11 Jun 2008 09:42:34 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/202021</link>
        <guid>http://kayo.javaeye.com/blog/202021</guid>
      </item>
      <item>
        <title>能笑死你</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200994" style="color:red;">http://kayo.javaeye.com/blog/200994</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>熊对能说：穷成这样啦，四个熊掌全卖了；<br />
兵对丘说：兄弟，踩上地雷了吧，两腿咋都没了？<br />
王对皇说：当皇上有什么好处，你看，头发都白了；<br />
口对回说：亲爱的，都怀孕这么久了，也不说一声；<br />
果对裸说：哥们儿，你穿上衣服还不如不穿！<br />
比对北说：夫妻何必闹离婚呢？<br />
巾对币说：戴上博士帽就身价百倍了；<br />
臣对巨说：一样的面积，但我是三室两厅；<br />
我对大家说：端午节到了,祝大家万事如意 </p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/200994#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/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 16:10:17 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/200994</link>
        <guid>http://kayo.javaeye.com/blog/200994</guid>
      </item>
      <item>
        <title>刷卡原理</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200976" style="color:red;">http://kayo.javaeye.com/blog/200976</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>那叫非接触式IC卡（或射频卡），读卡机采用发射交变磁场的形式向IC卡提供能量，IC卡上有感应线圈接收交变磁场的能量（电磁感应变压器原理）并做出回应信号使读卡机接收数据读出卡内信息。 
<br />
<br />
与传统IC卡最大的优势是使用时不需要接触，减少许多接触问题，可靠性高. 
<br />
<br />
<br />
至于有关技术请搜索：非接触式IC卡，或RFID技术就知道了。 
<br />
<br />
资料：公交IC卡(Integrated Circuit Card，集成电路卡)是非接触式的。即IC卡只要距离读卡机一定距离内，读卡机就可以读取卡内的数据，而不需要IC卡芯片与读卡器有物理接触。 
<br />
<br />
非接触式IC卡简介又称射频卡，成功地解决了无源（卡中无电源）和免接触这一难题，是电子器件领域的一大突破。主要用于公交、轮渡、地铁的自动收费系统，也应用在门禁管理、身份证明和电子钱包。 
<br />
&hellip;&hellip; 
<br />
ic卡原理:ic卡工作的基本原理是：射频读写器向IC卡发一组固定频率的电磁波，卡片内有一个IC串联协振电路，其频率与读写器发射的频率相
同，这样在电磁波激励下，LC协振电路产生共振，从而使电容内有了电荷；在这个电荷的另一端，接有一个单向导通的电子泵，将电容内的电荷送到另一个电容内
存储，当所积累的电荷达到2V时，此电容可作为电源为其它电路提供工作电压，将卡内数据发射出去或接受读写器的数据。 <br />
<br />
关于IC卡的信息储存，我还没有看到过很明确的说法，但是我认为相关的信息是储存在IC卡内部的。我认为，目前IC卡的读卡器并非与数据中心实时相连的，否则，这个无线网络的工程量太大，所以，信息必须都存储在卡上。</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/200976#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 06 Jun 2008 15:43:27 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/200976</link>
        <guid>http://kayo.javaeye.com/blog/200976</guid>
      </item>
      <item>
        <title>java时区问题</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200834" style="color:red;">http://kayo.javaeye.com/blog/200834</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h3><a href="http://huiy.javaeye.com/blog/200512">java时区问题  </a>
</h3>
<p>
    
  
  
  
    问题描述：Window XP 系统自己能够读取正确的时间，但是用java获取的时间始终与北京时间相差八个小时。
<br />
原因分析：
<br />
1.系统本身时区设置错误（<span style="color: red;">可以排除,上面已经交代系统能够获取正确时间</span>
）
<br />
2.注册表出现异常。
<br />
注册表对应项：HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
<br />
解决之道：
<br />
1.备份Time Zones这一项
<br />
2.从正常的并且是相同系统的机器中导出该项，然后倒入到自己机器中
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>转自：http://huiy.javaeye.com/blog/200512</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/200834#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 06 Jun 2008 11:25:28 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/200834</link>
        <guid>http://kayo.javaeye.com/blog/200834</guid>
      </item>
      <item>
        <title>鱼和熊掌不能兼得 是出自何处？？？</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200825" style="color:red;">http://kayo.javaeye.com/blog/200825</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>鱼我所欲也 《孟子》
<br />
<br />
鱼，我所欲也，熊掌，亦我所欲也，二者不可得兼，舍鱼而取熊掌者也。生，亦我所欲也，义，亦我所欲也，二者不可得兼，舍生而取义者也。生亦我所
欲，所欲有甚于生者，故不为苟得也。死亦我所恶，所恶有甚于死者，故患有所不避也。如使人之所欲莫甚于生，则凡可以得生者何不用也？使人之所恶莫甚于死
者，则凡可以避患者何不为也？由是则生而有不用也；由是则可以避患而有不为也。是故所欲有甚于生者，所恶有甚于死者。非独贤者有是心也，人皆有之，贤者能
勿丧耳。
<br />
<br />
一箪食，一豆羹，得之则生，弗得则死。呼尔而与之，行道之人弗受；蹴尔而与之，乞人不屑也。
<br />
<br />
万钟则不辨礼义而受之，万钟于我何加焉！为宫室之美，妻妾之奉，所识穷乏者得我欤？向为身死而不受，今为宫室之美为之；向为身死而不受，今为妻妾之奉为之；向为身死而不受，今为所识穷乏者得我而为之：是亦不可以已乎？此之谓失其本心。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/200825#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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, 06 Jun 2008 11:08:27 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/200825</link>
        <guid>http://kayo.javaeye.com/blog/200825</guid>
      </item>
      <item>
        <title>大话西游经典台词2-重温经典</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200503" style="color:red;">http://kayo.javaeye.com/blog/200503</a>&nbsp;
          发表时间: 2008年06月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
<br />
　　你应该这么做，我也应该死。曾经有一份真诚的爱情放在我面前，我没有珍惜，等我失去的时候我才后悔莫及，人世间最痛苦的事莫过于此。你的剑在
我的咽喉上割下去吧！不用再犹豫了！如果上天能够给我一个再来一次的机会，我会对那个女孩子说三个字：我爱你。如果非要在这份爱上加上一个期限，我希望
是&hellip;&hellip;一万年&hellip;&hellip; 唐僧：悟空，你怎么可以这样跟观音姐姐讲话呢？
<br />
　　
<br />
　　　　　悟空：哗！不要吵！
<br />
　　
<br />
　　　　　唐僧：你又在吓我！
<br />
　　
<br />
　　　　　唐僧：喂喂喂！大家不要生气，生气会犯了嗔戒的！悟空你也太调皮了，我跟你说过叫你不要乱扔东西，你怎么又&hellip;你看我还没说完你又把棍子给扔掉了！月光宝盒是宝物，你把他扔掉会污染花草草也是不对的！
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　唐僧：干什么？
<br />
　　
<br />
　　　　　悟空：放手！
<br />
　　
<br />
　　　　　唐僧：你想要啊？悟空，你要是想要的话你就说话嘛，你不说我怎么知道你想要呢，虽然你很有诚意地看着我，可是你还是要跟我说你想要的。你真的想要吗？那你就拿去吧！你不是真的想要吧？难道你真的想要吗？&hellip;&hellip;
<br />
　　
<br />
　　　　　悟空：我Kao！
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　观音：啊？孙悟空！
<br />
　　
<br />
　　　　　悟空：大家看到啦？这个家伙没事就长篇大论婆婆妈妈叽叽歪歪，就好象整天有一只苍蝇，嗡&hellip;&hellip;对不起，不是一只，是一堆苍蝇围着你，嗡&hellip;嗡&hellip;嗡&hellip;嗡&hellip;飞到你
<br />
　　
<br />
　　　　　的耳朵里面，救命啊！
<br />
　　
<br />
　　　　　悟空：所以呢我就抓住苍蝇挤破它的肚皮把它的肠子扯出来再用它的肠子勒住他的脖子用力一拉，呵--！整条舌头都伸出来啦！我再手起刀落哗--！整个世界清
<br />
　　
<br />
　　　　　净了。现在大家明白，为什么我要杀他！
<br />
　　
<br />
　　　　　2 
<br />
　　
<br />
　　　　　至尊宝：谁在说话？
<br />
　　
<br />
　　　　　画外音：五百年前你师傅唐三藏为了赎你一命，牺牲了他自己，...你还没有变成真正的孙悟空托世，这是因为你还没有遇上那个给你三颗痣的人，当你遇上他之后你的一生就会改变。
<br />
　　
<br />
　　　　　至尊宝：跟我说话吗？不是跟我说的吧？认错人啦！
<br />
　　
<br />
　　　　　3 
<br />
　　
<br />
　　　　　至尊宝：刀下留人！原来是自杀的，你为什么要自杀呢？
<br />
　　
<br />
　　　　　白晶晶：我先杀了你！
<br />
　　
<br />
　　　　　至尊宝：英雄啊！你放过我吧！
<br />
　　
<br />
　　　　　白晶晶：放过你？你给我一个不杀你的理由！
<br />
　　
<br />
　　　　　至尊宝：正在想&hellip;&hellip;你给我个杀我的理由先！
<br />
　　
<br />
　　　　　白晶晶：好！你一声不响丢下我，还跟我师姐生下个儿子！
<br />
　　
<br />
　　　　　至尊宝：你完全误会了&hellip;&hellip;
<br />
　　
<br />
　　　　　白晶晶：找死！(挥剑欲砍)
<br />
　　
<br />
　　　　　至尊宝：不要啊英雄！我是回去跟你师姐拿解药救你的，谁知道晚了一步，回去已经找不到你了。
<br />
　　
<br />
　　　　　白晶晶：你骗我！
<br />
　　
<br />
　　　　　至尊宝：你不信？(掏出玉佩)Look！
<br />
　　
<br />
　　　　　4 
<br />
　　
<br />
　　　　　少女：神仙？
<br />
　　
<br />
　　　　　少女：妖怪？
<br />
　　
<br />
　　　　　少女：谢谢！
<br />
　　
<br />
　　　　　5 
<br />
　　
<br />
　　　　　至尊宝：我看今晚不会有月光了。
<br />
　　
<br />
　　　　　少女：是吗？贱人，你跑不出我的五指山，哼哼哼！
<br />
　　
<br />
　　　　　至尊宝：贵姓？
<br />
　　
<br />
　　　　　少女：姓林。
<br />
　　
<br />
　　　　　至尊宝：哦，原来你就是我大哥常说的那个&ldquo;林青霞&rdquo;啊。
<br />
　　
<br />
　　　　　少女：你大哥？
<br />
　　
<br />
　　　　　至尊宝：昨天被你打的那个家伙，叫至尊宝的。
<br />
　　
<br />
　　　　　少女：那你呢？
<br />
　　
<br />
　　　　　至尊宝：我是他的双胞胎弟弟，叫至尊玉。
<br />
　　
<br />
　　　　　少女：至尊宝、至尊玉？想骗我？
<br />
　　
<br />
　　　　　至尊宝：嘻嘻，你真是聪明伶俐。其实我大哥真名叫做秦汉，我叫秦祥林。
<br />
　　
<br />
　　　　　少女：你在这儿干什么？
<br />
　　
<br />
　　　　　至尊宝：我&hellip;&hellip;我很仰慕你。
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　6 
<br />
　　
<br />
　　　　　至尊宝：长夜漫漫无心睡眠，我以为只有我睡不着觉，原来晶晶姑娘你也睡不着啊！
<br />
　　
<br />
　　　　　...... 
<br />
　　
<br />
　　　　　白晶晶：你把胡子剃光干什么？你知不知道你少了胡子一点性格都没有了？
<br />
　　
<br />
　　　　　至尊宝：是吗？
<br />
　　
<br />
　　　　　白晶晶：唉，文也不行武也不行，你不做山贼，你想做状元啊？
<br />
　　
<br />
　　　　　至尊宝：我有想过&hellip;&hellip;
<br />
　　
<br />
　　　　　白晶晶：省省吧你！改变什么形象，好好地做你山贼这份很有前途的职业去吧！
<br />
　　
<br />
　　　　　至尊宝：我知道了，我一定会继续努力的！(转身奔去)
<br />
　　
<br />
　　　　　7 
<br />
　　
<br />
　　　　　八戒：论智慧跟武功呢，我一直比他高一点点，可是现在多了个紫霞仙子，他恐怕
<br />
　　
<br />
　　　　　比我高一点点了。
<br />
　　
<br />
　　　　　沙僧：这边有我嘛！
<br />
　　
<br />
　　　　　八戒：就是因为多了你这个累赘他才会高我一点点！
<br />
　　
<br />
　　　　　8 
<br />
　　
<br />
　　　　　观音：孙悟空，你这个畜生，你为了跟牛魔王的妹妹成亲，居然把你师傅唐三藏作贺礼，还约了妖魔鬼怪一起吃唐僧宴，你认不认错？
<br />
　　
<br />
　　　　　悟空：三八婆！你追了我三天三夜，因为你是女人我才不杀你，不要以为我怕了你了！
<br />
　　
<br />
　　　　　唐僧：悟空，你怎么可以这样跟观音姐姐讲话呢？
<br />
　　
<br />
　　　　　悟空：哗--！闭嘴！
<br />
　　
<br />
　　　　　唐僧：你又吓我！
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　唐僧：悟空你也真调皮呀！我叫你不要乱扔东西，乱扔东西是不对的。哎呀我话没说完你怎么把棍子扔掉了？月光宝盒是宝物，乱扔它会污染环境，砸到小朋友怎么
<br />
　　
<br />
　　　　　办？就算砸不到小朋友砸到花花草草也不好嘛！
<br />
　　
<br />
　　　　　.... 
<br />
　　
<br />
　　　　　唐僧：你干什么？
<br />
　　
<br />
　　　　　悟空：放手！
<br />
　　
<br />
　　　　　唐僧：你想要啊？你想要说清楚不就行了吗？你想要的话我会给你的，你想要我当然不会不给你啦！不可能你说要我不给你，你说不要我却偏要给你，大家讲道理嘛！现在我数三下，你要说清楚你要不要&hellip;&hellip;
<br />
　　
<br />
　　　　　悟空：我Kao！(一拳打倒唐僧)
<br />
　　
<br />
　　　　　观音：啊？孙悟空！
<br />
　　
<br />
　　　　　悟空：哈哈哈哈哈！大家看到啦？这个家伙没事就长篇大论婆婆妈妈叽叽歪歪，就好象整天有一只苍蝇，嗡&hellip;&hellip;对不起，不是一只，是一堆苍蝇围着你，嗡&hellip;嗡&hellip;嗡&lt;&hellip;嗡&hellip;飞到你的耳朵里面，救命啊！(悟空倒地翻滚，异常痛苦。)
<br />
　　
<br />
　　　　　悟空：所以呢我就抓住苍蝇挤破它的肚皮把它的肠子扯出来再用它的肠子勒住他的脖子用力一拉，呵--！整条舌头都伸出来啦！我再手起刀落哗--！整个世界清净了。现在大家明白，为什么我要杀他！
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　唐僧：姐姐，这是你的不对了！
<br />
　　
<br />
　　　　　观音：啊？
<br />
　　
<br />
　　　　　唐僧：悟空他要吃我，只不过是一个构思，还没有成为事实，你又没有证据，他又何罪之有呢？不如等他吃了我之后，你有凭有据，再定他的罪也不迟啊！
<br />
　　
<br />
　　　　　观音：唐三藏，你的罗嗦我早就听说过了，不过没想到你居然这么罗嗦！我给你的金刚圈让你用来制伏这猴子你居然不用！
<br />
　　
<br />
　　　　　唐僧：唉，那个金刚圈尺寸太差，前重后轻左宽右窄，他带上之后很不舒服，整晚失眠，会连累我嘛！他虽然是个猴子，可是你也不能这样对
他，官府知道了会说我虐待动物的！说起那个金刚圈，去年我在陈家村认识了一位铁匠，他手工精美、价钱又公道、童叟无欺，干脆我介绍你再定做一个吧！
<br />
　　
<br />
　　　　　唐僧：我不会使你为难的。请姐姐跟玉皇大帝说一声，贫僧愿意一命赔一命！正所谓我不入地狱谁入地狱？求姐姐你体谅我这样做，无非是想感化劣徒，以配合我佛慈悲的大无畏精神啊！
<br />
　　
<br />
　　　　　9 
<br />
　　
<br />
　　　　　(突然紫霞拔出宝剑抵在至尊宝的咽喉上。)
<br />
　　
<br />
　　　　　画外音：当时那把剑离我的喉咙只有0.01公分，但是四分之一炷香之后，那把剑的女主人将会彻底地爱上我，因为我决定说一个谎话。虽然本人生平说过无数的谎话，但是这一个我认为是最完美的&hellip;&hellip;
<br />
　　
<br />
　　　　　紫霞：你再往前半步我就把你给杀了！
<br />
　　
<br />
　　　　　至尊宝：你应该这么做，我也应该死。曾经有一份真诚的爱情放在我面前，我没有珍惜，等我失去的时候我才后悔莫及，人世间最痛苦的事莫过
于此。你的剑在我的咽喉上割下去吧！不用再犹豫了！如果上天能够给我一个再来一次的机会，我会对那个女孩子说三个字：我爱你。如果非要在这份爱上加上一个
期限，我希望是&hellip;&hellip;一万年！
<br />
　　
<br />
　　　　　10 
<br />
　　
<br />
　　　　　唐僧：悟空，你知不知道什么是铛铛铛铛铛铛？
<br />
　　
<br />
　　　　　至尊宝：什么铛铛铛铛？
<br />
　　
<br />
　　　　　唐僧：铛得铛铛铛铛铛，就是(唱道)On--ly you--！能伴我去西经... 
<br />
　　
<br />
　　　　　至尊宝：哎&hellip;&hellip;
<br />
　　
<br />
　　　　　唐僧：On--ly you--！
<br />
　　
<br />
　　　　　.... 
<br />
　　
<br />
　　　　　背黑锅我来，送死你去，拼全力为众生！
<br />
　　
<br />
　　　　　... 
<br />
　　
<br />
　　　　　至尊宝：我真的不行啊，我跟你说&hellip;&hellip;
<br />
　　
<br />
　　　　　唐僧：On-On--！
<br />
　　
<br />
　　　　　至尊宝：On你妈个头啊！你有完没完啊！(一拳将唐僧打倒)我已经跟你说过我不行了，你还要On-On-！On-On-！完全不理人家受得了受不了，你再On我一刀捅死你！
<br />
　　
<br />
　　　　　唐僧：悟空，你尽管捅死我吧，生又何哀，死又何苦，等你明白了舍生取义，你自然会回来跟我唱这首歌的！喃呒阿弥陀佛、喃呒阿弥陀佛、喃呒阿弥陀佛&hellip;&hellip;
<br />
　　
<br />
　　　　　11 
<br />
　　
<br />
　　　　　至尊宝：我一定是太想念晶晶了。
<br />
　　
<br />
　　　　　菩提：是啊，你昏倒的时候叫了晶晶这个名字九十八次。
<br />
　　
<br />
　　　　　至尊宝：晶晶是我娘子。
<br />
　　
<br />
　　　　　菩提：还有一个名字叫紫霞的你叫了七百八十四次！至尊宝：啊？！
<br />
　　
<br />
　　　　　菩提：七百八十四次&hellip;&hellip;这个紫霞一定欠你很多钱。
<br />
　　
<br />
　　　　　12 
<br />
　　
<br />
　　　　　白晶晶：因为那个臭猴子不会对我这么温柔。你到底是谁？
<br />
　　
<br />
　　　　　至尊宝：我就是你五百年后的老公五百年后你因为我而放弃现在这段感情我千辛万苦回到这儿来和在这儿做的所有这些事情全都是为了你晶晶我想念你我真的想念你我太--想念你了！你相不相信？
<br />
　　
<br />
　　　　　 　13 
<br />
　　
<br />
　　　　　至尊宝：出来吧！葡萄！
<br />
　　
<br />
　　　　　菩提：我不是想监视你，我只不过是想研究一下人与人之间的一些微妙的感情。
<br />
　　
<br />
　　　　　至尊宝：你只是强盗啊大哥，别学人家做学问。
<br />
　　
<br />
　　　　　菩提：强盗也有学问。
<br />
　　
<br />
　　　　　至尊宝：省省吧，睡啦！
<br />
　　
<br />
　　　　　菩提：紫霞在你心目中是不是一个惊叹号，还是一个句号，你脑袋里是不是充满了问号&hellip;&hellip;
<br />
　　
<br />
　　　　　至尊宝：紫霞只不过是一个我认识的人！我以前说过一个谎话骗她，现在只不过心里面有点内疚而已。我越来越讨厌她了！我明天就要结婚了，你想怎么样嘛！
<br />
　　
<br />
　　　　　菩提：有一天当你发觉你爱上一个你讨厌的人，这段感情才是最要命的！
<br />
　　
<br />
　　　　　至尊宝：可是我怎么会爱上一个我讨厌的人呢？请你给我一个理由好不好？拜托！
<br />
　　
<br />
　　　　　菩提：爱一个人需要理由吗？
<br />
　　
<br />
　　　　　至尊宝：不需要吗？
<br />
　　
<br />
　　　　　菩提：需要吗？
<br />
　　
<br />
　　　　　至尊宝：不需要吗？
<br />
　　
<br />
　　　　　菩提：需要吗？
<br />
　　
<br />
　　　　　至尊宝：不需要吗？
<br />
　　
<br />
　　　　　菩提：哎，我是跟你研究研究嘛，干嘛那么认真呢？需要吗？(转身走了)
<br />
　　
<br />
　　　　　 　14 
<br />
　　
<br />
　　　　　唐僧：你有多少兄弟姐妹？你父母尚在吗？你说句话啊，我只是想在临死之前多交一个朋友而已。
<br />
　　
<br />
　　　　　唐僧：所以说做妖就象做人一样，要有仁慈的心，有了仁慈的心，就不再是妖，是人妖。(小妖甲开始呕吐。)
<br />
　　
<br />
　　　　　唐僧：哎，他明白了，你明白了没有？
<br />
　　
<br />
　　　　　唐僧：人和妖精都是妈生的，不同的人是人他妈的，妖是妖他妈的&hellip;&hellip;
<br />
　　
<br />
　　　　　小妖甲：我受不了啦--！(拔刀自尽)
<br />
　　
<br />
　　　　　唐僧：你妈贵姓啊？
<br />
　　
<br />
　　　　　小妖乙：啊--！(精神崩溃)
<br />
　　
<br />
　　　　　唐僧：看，现在是妹妹要救姐姐，等一会那个姐姐一定会救妹妹的。
<br />
　　
<br />
　　　　　唐僧：看，我说对了吧？(这时小妖乙在唐僧身旁上吊自尽了。)
<br />
　　
<br />
　　　　　唐僧：居然比我还快，你真行！
<br />
　　
<br />
　　　　　唐僧：小心啊！打雷喽！下雨收衣服啊！(众小妖晕倒一片。)
<br />
　　
<br />
　　　　　 　15 
<br />
　　
<br />
　　　　　 　紫霞：混球！
<br />
　　
<br />
　　　　　悟空：你又想怎么样？贱人！
<br />
　　
<br />
　　　　　紫霞：混蛋！
<br />
　　
<br />
　　　　　悟空：你才混蛋！
<br />
　　
<br />
　　　　　紫霞：你不是人！
<br />
　　
<br />
　　　　　悟空：你才不是人！你不要再发疯了，我刚才跟你说的你明不明白？
<br />
　　
<br />
　　　　　紫霞：你又明不明白我已经不再是神仙了！我只明白一件事：爱一个人是那么痛苦！
<br />
　　
<br />
　　　　　悟空：不要跟我说这种废话，我说过了你认错人啦！... 
<br />
　　
<br />
　　　　　紫霞：我的意中人是个盖世英雄，有一天他会踩着七色的云彩来娶我，我猜中了前头，可是我猜不着这结局&hellip;&hellip;(头一歪).... 
<br />
　　
<br />
　　　　　 　悟空：我要你的命--！
<br />
　　
<br />
　　　　　16 
<br />
　　
<br />
　　　　　唐僧：走！
<br />
　　
<br />
　　　　　悟空：上哪儿去啊师傅？
<br />
　　
<br />
　　　　　唐僧：天竺！(率先出洞)
<br />
　　
<br />
　　　　　悟空：师傅怎么这么说话？
<br />
　　
<br />
　　　　　八戒：师傅说话一向简单明了！走啦</p>
          <br/>
          <span style="color:red;">
            <a href="http://kayo.javaeye.com/blog/200503#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 05 Jun 2008 14:09:18 +0800</pubDate>
        <link>http://kayo.javaeye.com/blog/200503</link>
        <guid>http://kayo.javaeye.com/blog/200503</guid>
      </item>
      <item>
        <title>大话西游经典台词-重温经典</title>
        <author>kayo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kayo.javaeye.com">kayo</a>&nbsp;
          链接：<a href="http://kayo.javaeye.com/blog/200501" style="color:red;">http://kayo.javaeye.com/blog/200501</a>&nbsp;
          发表时间: 2008年06月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>　请大家重温
<br />
　　
<br />
　　永远的大话
<br />
　　
<br />
　　
<br />
　　观音：孙悟空，你这个畜牲，你本来答应如来佛祖护送你师傅唐三藏去取西经的，你居然跟牛魔王串通要吃你师傅，你知不知道你犯了弥天大罪？
<br />
　　孙悟空：少罗嗦！你追了我三天三夜，因为你是女人我才不杀你，不要以为我怕了你！
<br />
　　唐僧：悟空，你怎么可以这样跟观音姐姐讲话呢？
<br />
　　悟空：哗！不要吵！
<br />
　　唐僧：你又在吓我！
<br />
　　
<br />
　　观音：你不是怕我又为什么要打伤紫霞仙子抢她的月光宝盒呢？你不就是想躲开我吗？
<br />
　　悟空：既然躲不了，那老孙就跟你绝一死战！
<br />
　　(悟空将月光宝盒随手一抛，正好砸在唐僧头上。)
<br />
　　唐僧：又干什么？
<br />
　　
<br />
　　(俩人正要动手，突然&hellip;&hellip;)
<br />
　　唐僧：唉唉唉！大家不要生气，生气会犯了嗔戒的！悟空你也太调皮了，我跟你说过，叫你不要乱扔东西。乱扔东西这么多&hellip;&hellip;你看我还没说完呢，你
把棍子又给扔掉了！月光宝盒是宝物，你把它扔掉会污染环境。唉，要是砸到小朋友呢，怎么办？就算没有砸到小朋友，砸到那些花花草草也是不对的呀！
<br />
　　(悟空一把抓住唐僧手中的月光宝盒)
<br />
　　唐僧：干什么？
<br />
　　悟空：放手！
<br />
　　唐僧：你想要啊？悟空，你想要的话你就说话嘛。你不说我怎么知道你想要呢？虽然你很有诚意地看着我，可是你还是要跟我说你想要的。你真的想要吗？那你就拿去吧！你不是真的想要吧？难道你真的想要吗？&hellip;&hellip;
<br />
　　悟空：我Kao！
<br />
　　(悟空一拳将唐僧打倒。)
<br />
　　观音：啊？孙悟空！
<br />
　　悟空：大家看到啦？这个家伙没事就长篇大论婆婆妈妈叽叽歪歪，就好象整天有一只苍蝇，嗡&hellip;&hellip;对不起，不是一只，是一堆苍蝇围着你呀，嗡&hellip;嗡&hellip;嗡&hellip;嗡&hellip;飞到你的耳朵里面。救命啊！救命啊！
<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 />
　　七伤拳把