<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Ozone</title>
    <description></description>
    <link>http://ozone.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>代理模式（Proxy）</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/191339" style="color:red;">http://ozone.javaeye.com/blog/191339</a>&nbsp;
          发表时间: 2008年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          代理模式，个人认为就是把你要使用的一个对象尽享封装，包装。编程原对象的一个副本，在使用的时候直接使用他这个副本就可以了！他的作用用专业点的语言描述就是为其他的对象提供一个代理方便控制这个对象。当我们不能直接调用另外一个对象，但是又不得不用这个对象的某些功能，此时代理对象就能起到链接客户和目标对象的一个代理.<br />代理模式一般涉及到三个角色，分别为：<br />1. 抽象角色：他提供真实对象和代理对象的共同接口。<br />2. 代理角色：通俗地说，代理角色是对原对象（目标对象）进行包装，他有着和原对象相同的接口，并且可以执行真实对象的操作。<br />3. 真实角色:即目标对象，最终我们需要对他的操作。<br />代理模式分为两种，一 静态代理，二 动态代理。<br /><br />接下来我们介绍一下两种代理模式：<br /><br />一 静态代理<br />   静态代理即 代理对象和被代理对象在代理之前已经确定好了。他们一起实现相同的接口或者是继承相同的抽象类。例如：<br /><pre name="code" class="java">
//定义抽象角色
public abstract class AbsRole{
  abstract public void work();
}
</pre><br /><br /><pre name="code" class="java">
//定义真实角色
public class RealRole extends AbsRole{
  public RealRole(){ }

  public void work(){
    System.out.println("调用真实角色中函数！");
  }
}
</pre><br /><pre name="code" class="java">
//代理角色
public class ProxyRole extends AbsRole{
  public RealRole real ;
  
  public ProxyRole(){
  }

  public void work(){
    this.beforeMethod();
    if(real == null){
      real = new RealRole();
    }
    real.work();
    this.endMethod();
  }

  public void beforeMethod(){
    System.out.println("代理前执行函数->beforeMethod()");
  }
  
  public void endMethod(){
    System.out.println("代理时候后执行函数->endMethod()");
  }
}
</pre><br /><br />各种角色我们都已经定义好了，我们开始测试一下。<br /><br /><pre name="code" class="java">
public class Main(){
  public static void main(String[] args){
    AbsRole ar = new ProxyRole();
    ar.work();
  }
}
</pre><br /><br />二 动态代理<br />  顾名思义，就是不知道到底那个类需要做代理，在使用的时候，更具情况临时决定。<br />   java动态代理主要是使用java.lang.reflect包中的两个类。<br /> 1. interface InvocationHandler： 他中定义了一个方法 <br /><pre name="code" class="java">
  public Object invoke(Object obj,Method method,Object[] obs)
</pre><br />  其中第一个参数 obj 指的是代理类，method是被代理的方法，obs是指被代理的方法的参数组。此方法由代理类来实现。<br /> 2. Proxy：该类为动态代理类，主要包括以下内容：<br /><br /><pre name="code" class="java">
  protected Proxy(InvocationHandler h);

  static Class getProxyClass(ClassLoader loader,Class[] interfaces);

  static Object newProxyInstance(ClassLoader loader,Class[]interfaces,InvocationHandler h);
</pre><br /><br />动态代理其实是在运行时生成class，所以，我们必须提供一组interface，然后告诉他class已经实现了这些interface，而且在生成Proxy的时候，必须给他提供一个handler，让他来接管实际的工作。<br />现在我们把静态代理的例子修改一下：<br /><pre name="code" class="java">
//定义抽象角色；
public interface AbsRole{
  public void work();
}
</pre><br /><br />接下来定义真实角色；<br /><pre name="code" class="java">
public class RealRole implements AbsRole{
  public RealRole(){};
  
  public void work(){
    System.out.println("调用真实角色方法：RealRole.work()");
  }
}
</pre><br />然后书写动态代理编码<br /><pre name="code" class="java">
public class DynamicProxyRole implements InvocationHandler{
  private Object sub;
  
  public DynamicProxyRole(){}

  public DynamicProxyRole(Object ob){
    this.sub = ob;
  }

  public Object invoke(Object proxy, Method method, Object[] obs) throws Throwable{
    method.invke(sub,obs);
    return null;
  }
}
</pre><br />代理类已经书写完毕，看看是否能正常运行。<br /><pre name="code" class="java">
public class Main{
  public static void main(String[] args){
    RealRole  rr  = new RealRole();
    InvocationHandler dynamicProxy = new DynamicProxyRole(rr);
    Class&lt;?> cls = rr.getClass();
    
    AbsRole r = (AbsRole)Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),DynamicProxyRole);
    r.work();
  }
}

</pre><br /><br />调试成功，动态代理功能完成。<br /><br />通过静态代理和动态代理学习，我们小结一下：<br /> 静态代理需要事先确定代理对象和被代理对象，他们要一起继承或者是实现相同的抽象类。动态代理可以在使用的时候传入真实对象，得到代理。动态代理还是主要依靠java本身的语言特性，实现代理，更加方便
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/191339#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 09 May 2008 10:56:47 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/191339</link>
        <guid>http://ozone.javaeye.com/blog/191339</guid>
      </item>
      <item>
        <title>Adapter模式（Class Adapter） </title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/189954" style="color:red;">http://ozone.javaeye.com/blog/189954</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天讨论了Adapter模式的一种情况Object Adapter，他比较适用于某些时候的二次开发，但我们拿到某一个组件的class文件，没有源码，只有功能列表的情况时，某些时候整合需要Object adapter。Adapter还有另外一种情况 Class Adapter。<br />我们现在的程序使用接口 PutBags<br /><pre name="code" class="java">
public interface PutBags {
  public void putAllBags();
}
</pre><br />如果我们有一个类的class文件PutFootBall，而无法适用其源码。只能适用其中的putAllFootBall()方法。<br /><pre name="code" class="java">
public class PutFootBall {
  public void putAllFootBall(){
    System.out.println("Put Football....");
  }
}
</pre><br />而在我们现有的程序所适用的方式是<br /><pre name="code" class="java">
public class Put implements PutBags{
  public void putAllBags(){
    System.out.println("Realize method....");
  }
  public void putOther(){
    System.out.println("Other....");
  }
}
</pre><br />如果我们现在不想改变PutBags接口，并且不希望改变PutAllFootBall()此时<br /><br />我们考虑，如何让Put类既有第三方类的功能，又不改变原有的接口继承？简<br /><br />单的讲，要想某个类拥有其他的类的功能继承是最普遍的方法。所以我们使用<br /><br />继承并实现的方式<br /><pre name="code" class="java">
public class Put extends PutFootBall implements PutBags{
  public void putAllBags(){
    putBall();  
}
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/189954#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 05 May 2008 23:07:32 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/189954</link>
        <guid>http://ozone.javaeye.com/blog/189954</guid>
      </item>
      <item>
        <title>Adapter模式（Object Adapter）</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/189561" style="color:red;">http://ozone.javaeye.com/blog/189561</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Adapter模式使原本由于接口不兼容而不能在一起工作的类可以一起工作，即为一个内容合适但接口不匹配的对象创建一个新的接口.Adapter模式让现存的对象适应新的类结构,而不受他们的接口限制.<br />例如现在，我们有一个球袋类BasketballBag负责完成装入篮球。<br /><pre name="code" class="java">
public class BasketballBag{
    public void putBasketball(){
        System.out.println("Put in BasketBall....");
    }
}
</pre><br />有一个专门负责装入操作的类的方法putBalls()来调用BasketballBag类中方法来放入篮球。<br /><pre name="code" class="java">
public class PutBall{
    public void putBalls(BasketballBag bb){
        bb.putBasketball();
    }
}
</pre><br />此时我们有一个足球类FootballBag负责装入完成装入足球。<br /><pre name="code" class="java">
public class FootballBag{
    public void putFootball(){
        System.out.println("Put in FootBall....");
    }
}
</pre><br />前面提到的类中的方法putBalls()用来调用BaskballBag中的方法来放入篮球，我们能不能使用同一个方法来放入足球呢？我们试一试<br /><pre name="code" class="java">
public class Main {
    public static void main(String[] args){
        PutBall pb = new PutBall();
		
        System.out.println("BasketBall");
        BasketballBag bb = new BasketballBag();
        pb.putBalls(bb);
		
        System.out.println("FootBall")
        FootballBag fb = new FootballBag();
        pb.putBalls(fb);
    }

}
</pre><br />运行报错，告诉我们参数类型不匹配。在上述程序中，如何使用<br /><pre name="code" class="java">
FootballBag fb = new FootballBag();
pb.putBalls(fb);
</pre><br />来执行呢？<br />  那我们可以考虑使用一种办法是的pb.putBalls(fb) 中的 fb 参数类型能够和函数需要的类型相匹配。我们可以考虑让单独使用一个新的类，让他继承BasketballBag，并且加入扩展功能（调用/实例 FootballBag）。<br /><pre name="code" class="java">
public class BallBag extends BasketballBag{
    FootballBag fb;
    public BallBag(FootballBag fb){
        this.fb = fb;
    }
    public void putFootballs(){
        fb.putFootball();
    }
} 
</pre><br />类写好了，感觉不错，看看调试情况,修改一下刚刚的 Main类<br /><pre name="code" class="java">
public class Main {
    public static void main(String[] args){
        PutBall pb = new PutBall();
		
        System.out.println("BasketBall");
        BasketballBag bb = new BasketballBag();
        pb.putBalls(bb);
		
        System.out.println("FootBall")
        FootballBag fb = new FootballBag();
        BallBag bbag = new BallBag(fb);
        pb.putBalls(fb);
    }

}
</pre><br />ok，测试通过。通过这个例子，我们得到一种把接口不兼容的类混合在一起使用的方法，而这种方法可以被称作Adapter模式。
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/189561#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 May 2008 00:12:46 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/189561</link>
        <guid>http://ozone.javaeye.com/blog/189561</guid>
      </item>
      <item>
        <title>Decorator模式</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/189547" style="color:red;">http://ozone.javaeye.com/blog/189547</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近遇到一个需求，是要对一个类增加一些新的功能，原则上讲是不改变这个类的代码，不改变这个类的继承关系。以前了解过Decorator模式，所以特意又深入学习一会。<br />什么时候需要Decorator模式：它的主要功能是不改变类的代码和继承关系，为这个类增加功能。<br />例如我要计划做一件事情（例如 打印某段文字）<br /><pre name="code" class="java">
public class DoWork(){
    public void doWork(){
        System.out.prinln("Do Work.....");
    }
}
</pre>]<br />可是由于工作变化，我需要在DoWork之前做另外一件事（打印一段特殊文字），并且在做完DoWork以后还要做一些简单的处理（同样是打印文字）。如何在不改变原有的继承关系的前提下实现此功能？<br />首先我们观察，所有的工作都是围绕做某件事情，所以我们可以抽象出一个接口。<br /><pre name="code" class="java">
public interface Work(){
    public void doWork();
}
</pre><br />所以原有的类可以更改为<br /><pre name="code" class="java">
public class DoWork implements Work(){
  public void doWork(){
      System.out.println("Do Work....");
  }
}
</pre><br />我们可以考虑按照要求，我们所要添加的两个动作也是围绕的doWork()来做文章，只是具体的实现办法有些变换，我们可以不可以另外添加一个辅助的类 OtherWork,通过他来实现要求中的两个功能，并且调用原来计划要执行的工作。<br /><pre name="code" class="java">
public class DoAllWork implements Work(){
    private Work work;
    //为调用原来计划需要执行的任务做准备
    public DoAllWork(Work work){
        this.work = work;
    }
    public void beforeWork(){
        System.out.println("Before Work....");
    }
    public void endWork(){
        System.out.println("End Work....");
    }
    public void doWork(){
        beforeWork();
        work.doWork();
        endWork();
    }
}
</pre><br />我们测试一下，这个DoAllWork是不是能完成我们的需要<br /><pre name="code" class="java">
public class Main(){
    public static void main(String[] args){
        Work work = new DoWork();
        DoAllWork daw = new DoAllWork(work);
        daw.doWork;
    }
}
</pre><br />OK,运行一下，一切都以实现 ：） 这种通过简单的一个实现类，帮助我们达到了要求，这种模式就是Decorator模式。
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/189547#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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>Sun, 04 May 2008 22:48:56 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/189547</link>
        <guid>http://ozone.javaeye.com/blog/189547</guid>
      </item>
      <item>
        <title>郁闷啊！</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/137497" style="color:red;">http://ozone.javaeye.com/blog/137497</a>&nbsp;
          发表时间: 2007年11月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近一直忙着学习新技术。以前总是感觉自己喜欢去研究那学比较成熟的技术，最近突然迷恋上学习一些新的，比较陌生得东西。在这过程中清楚的感觉的自己的基础知识太过贫乏了，开始怀疑自己这两年都在什么？时间就这么荒废了。到头来虽然看看自己有很多参与和负责的项目，但是想想技术，自己总是觉得自己比较空虚。和股市中“只赚指数，不赚钱”的感觉差不多。 所以从现在开始给自己一个六个月的计划，补充基础知识。从最简单的 jsp + servlet +java基础知识开始。不要放过一些细节。研究一下以前参与的过的项目。好好总结一下！<br />     希望从明年下半年开始有个新的开始！
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/137497#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 02 Nov 2007 09:21:13 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/137497</link>
        <guid>http://ozone.javaeye.com/blog/137497</guid>
      </item>
      <item>
        <title>javascript中document学习[转载]</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/104699" style="color:red;">http://ozone.javaeye.com/blog/104699</a>&nbsp;
          发表时间: 2007年07月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JS中document对象详解<br />document 文挡对象 - JavaScript脚本语言描述<br /><strong>对象属性</strong><br /><pre name="code" class="java">  document.title              //设置文档标题等价于HTML的&lt;title>标签
  document.bgColor            //设置页面背景色
  document.fgColor            //设置前景色(文本颜色)
  document.linkColor          //未点击过的链接颜色
  document.alinkColor         //激活链接(焦点在此链接上)的颜色
  document.vlinkColor         //已点击过的链接颜色
  document.URL                //设置URL属性从而在同一窗口打开另一网页
  document.fileCreatedDate    //文件建立日期，只读属性
  document.fileModifiedDate   //文件修改日期，只读属性
  document.fileSize           //文件大小，只读属性
  document.cookie             //设置和读出cookie
  document.charset            //设置字符集 简体中文:gb2312</pre><br /><strong>对象方法</strong><br /><pre name="code" class="java">  document.write()                   //动态向页面写入内容
  document.createElement(Tag)        //创建一个html标签对象
  document.getElementById(ID)        //获得指定ID值的对象
  document.getElementsByName(Name)   //获得指定Name值的对象</pre><br /><strong>images集合(页面中的图象)</strong><br /><br />  a)通过集合引用<br /><pre name="code" class="java">    document.images              //对应页面上的&lt;img>标签
    document.images.length       //对应页面上&lt;img>标签的个数
    document.images[0]           //第1个&lt;img>标签           
    document.images[i]           //第i-1个&lt;img>标签</pre><br /><br />  b)通过nane属性直接引用<br />   <pre name="code" class="java"> &lt;img name="oImage">
     document.images.oImage       //document.images.name属性</pre><br /><br />  c)引用图片的src属性<br />   <pre name="code" class="java"> document.images.oImage.src   //document.images.name属性.src</pre><br /><br />  d)创建一个图象<br /><pre name="code" class="java">    var oImage
    oImage = new Image()
    document.images.oImage.src="/1.jpg"</pre><br />  同时在页面上建立一个&lt;img>标签与之对应就可以显示<br /><pre name="code" class="java">
&lt;html>
&lt;img name=oImage>
&lt;script language="javascript">
    var oImage
    oImage = new Image()
    document.images.oImage.src="/1.jpg"
&lt;/script>
&lt;/html>
</pre><br /><strong>forms集合(页面中的表单)</strong><br /><br />  a)通过集合引用<br /><pre name="code" class="java">    document.forms                  //对应页面上的&lt;form>标签
    document.forms.length           //对应页面上&lt;form>标签的个数
    document.forms[0]               //第1个&lt;form>标签
    document.forms[i]               //第i-1个&lt;form>标签
    document.forms[i].length        //第i-1个&lt;form>中的控件数
    document.forms[i].elements[j]   //第i-1个&lt;form>中第j-1个控件</pre><br /><br />  b)通过标签name属性直接引用<br /><pre name="code" class="java">    &lt;form name="Myform">&lt;input name="myctrl">&lt;/form>
    document.Myform.myctrl          //document.表单名.控件名</pre><br /><br /><pre name="code" class="java">&lt;html>
&lt;!--Text控件相关Script-->
&lt;form name="Myform">
&lt;input type="text" name="oText">
&lt;input type="password" name="oPswd">
&lt;form>
&lt;script language="javascript">
//获取文本密码框的值
document.write(document.Myform.oText.value)
document.write(document.Myform.oPswd.value)
&lt;/script>
&lt;/html></pre><br /><br /><pre name="code" class="java">&lt;html>
&lt;!--Select控件相关Script-->
&lt;form name="Myform">
&lt;select name="oSelect">
&lt;option value="1">1&lt;/option>
&lt;option value="2">2&lt;/option>
&lt;option value="3">3&lt;/option>
&lt;/select>
&lt;/form>

&lt;script language="javascript">
    //遍历select控件的option项
    var length
    length=document.Myform.oSelect.length
    for(i=0;i&lt;length;i++)
    document.write(document.Myform.oSelect[i].value)
&lt;/script>

&lt;script language="javascript">
    //遍历option项并且判断某个option是否被选中
    for(i=0;i&lt;document.Myform.oSelect.length;i++){
    if(document.Myform.oSelect[i].selected!=true)
    document.write(document.Myform.oSelect[i].value)
    else
    document.write("&lt;font color=red>"+document.Myform.oSelect[i].value+"&lt;/font>")   
    }
&lt;/script>

&lt;script language="javascript">
    //根据SelectedIndex打印出选中的option
    //(0到document.Myform.oSelect.length-1)
    i=document.Myform.oSelect.selectedIndex
    document.write(document.Myform.oSelect[i].value)
&lt;/script>

&lt;script language="javascript">
    //动态增加select控件的option项
    var oOption = document.createElement("OPTION");
    oOption.text="4";
    oOption.value="4";
    document.Myform.oSelect.add(oOption);
&lt;/script>
&lt;html></pre><br /><pre name="code" class="java">&lt;Div id="oDiv">Text&lt;/Div>
  document.all.oDiv                        //引用图层oDiv
  document.all.oDiv.style                 
  document.all.oDiv.style.display=""       //图层设置为可视
  document.all.oDiv.style.display="none"   //图层设置为隐藏</pre><br />  /*document.all表示document中所有对象的集合<br />  只有ie支持此属性，因此也用来判断浏览器的种类*/
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/104699#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jul 2007 12:45:00 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/104699</link>
        <guid>http://ozone.javaeye.com/blog/104699</guid>
      </item>
      <item>
        <title>javascript页面表格排序</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/103272" style="color:red;">http://ozone.javaeye.com/blog/103272</a>&nbsp;
          发表时间: 2007年07月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          javascript页面排序<br /><br />今天项目中需要页面点击表头,按升降排序,查找了各方面资料,根据网上实例,自己改写了一个简单的例子<br />说到排序,肯定少不了Array Methods 中的 sort(),简单的介绍一下.<br />sort()方法可用来排列数组中的元素,语法是<br /><pre name="code" class="java">
    arrayObject.sort(sortByRequest)
</pre><br />注释: 1.sortByRequeset是可选项，指定排列次序。必须是一个函数。<br />      2.sort()默认是没有参数，函数按照字母大小排列。如果是数字按照默认情况排列，会出现错误（e.g：1,11,2,21）<br />      3.当使用sort()后，array发生改变。<br /><br />页面表格js排序，首先要得到具体哪个表格，这个不需要讲了吧！<br /><pre name="code" class="java">
    sTable = document.getElementById(tableId);
</pre><br />表格找到后必须对表格的内容进行应用,即得到表格tbodies的集合.<br /><pre name="code" class="java">
    var tbody = table.tBodies[0];
    var colRows = tbody.rows;
</pre><br /><br />得到tbodies集合以后放入Array里面<br /><pre name="code" class="java">
    var aTrs = new Array;
    for (var i=0; i &lt; colRows.length; i++) {
	      aTrs[i] = colRows[i];
    }
</pre><br />所有信息已经准备完毕,我们对array进行排序(也就是上面代码中的aTrs)<br /><pre name="code" class="java">
     aTrs.sort(compareEle());
</pre><br />   其中compareEle()是指定排列次序的函数。<br /> 当把数字（aTrs）排列完毕以后，需要重新生成表格<br /><br /><pre name="code" class="java">
    var oFragment = document.createDocumentFragment();            
    for(var i=0; i &lt; aTrs.length; i++) {
        oFragment.appendChild(aTrs[i]);
    }
        tbody.appendChild(oFragment);
</pre><br />这样，基本的功能已经介绍已经完成。<br />如果要在项目中加入这项功能需要考虑以下基本内容<br />1.浏览器的类型<br />2.需要定位是对哪一列进行排列<br />3.需要排列的列的数据类型。<br />4.是否连续排序（eg：如果按照升序排列以后，再次点击，应该按照降序列）<br />所以最终详细设计<br /><pre name="code" class="java">
function ieOrFireFox(ob)
{
    if (ob.textContent != null)
	return ob.textContent;
    var s = ob.innerText;
    return s.substring(0, s.length);
}

//排序 tableId: 表的id,iCol:第几列 ；dataType：iCol对应的列显示数据的数据类型
function sortAble(tableId, iCol, dataType) {
	var table = document.getElementById(tableId);
	var tbody = table.tBodies[0];
	var colRows = tbody.rows;
	var aTrs = new Array;
         //将将得到的列放入数组，备用
	for (var i=0; i &lt; colRows.length; i++) {
		aTrs[i] = colRows[i];
	}
                      
                 
	//判断上一次排列的列和现在需要排列的是否同一个。
	if (table.sortCol == iCol) {
		aTrs.reverse();
	} else {
		//如果不是同一列，使用数组的sort方法，传进排序函数
		aTrs.sort(compareEle(iCol, dataType));
	}
        
	var oFragment = document.createDocumentFragment();
                
	for (var i=0; i &lt; aTrs.length; i++) {
		oFragment.appendChild(aTrs[i]);
	}                
	tbody.appendChild(oFragment);
	//记录最后一次排序的列索引
	table.sortCol = iCol;
}
//将列的类型转化成相应的可以排列的数据类型
function convert(sValue, dataType) {
	switch(dataType) {
	case "int":
		return parseInt(sValue);
	case "float":
		return parseFloat(sValue);
	case "date":
		return new Date(Date.parse(sValue));
	default:
		return sValue.toString();
    }
}
            
//排序函数，iCol表示列索引，dataType表示该列的数据类型
function compareEle(iCol, dataType) {
	return  function (oTR1, oTR2) {
		var vValue1 = convert(ieOrFireFox(oTR1.cells[iCol]), dataType);
		var vValue2 = convert(ieOrFireFox(oTR2.cells[iCol]), dataType);
		if (vValue1 &lt; vValue2) {
			return -1;
		} else if (vValue1 > vValue2) {
			return 1;
		} else {
			return 0;
		}
       };
}
</pre><br /><br />具体使用:<br />  将上述代码保存为 sortable.js,在同一目录下新建sortable.html<br /><pre name="code" class="java">
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
&lt;HTML>
 &lt;HEAD>
  &lt;TITLE> New Document &lt;/TITLE>
  &lt;script src="sortable.js" type="text/javascript">&lt;/script>
 &lt;/HEAD>

 &lt;BODY>
 &lt;p>Sortable demo:&lt;/p>
        &lt;table border="1" id="tableId">
            &lt;thead>
                &lt;tr>
                    &lt;th onclick="sortAble('tableId', 0)"  
                         style="cursor:pointer">name&lt;/th>
                    &lt;th onclick="sortAble('tableId', 1, 'date')"
                         style="cursor:pointer">Birthday&lt;/th>
                    &lt;th onclick="sortAble('tableId', 2, 'int')" 
                         style="cursor:pointer">Age&lt;/th>
                &lt;/tr>
            &lt;/thead>
            &lt;tbody>
                &lt;tr>
                    &lt;td>Ozone&lt;/td>
                    &lt;td>01/12/1982&lt;/td>
                    &lt;td>25&lt;/td>
                &lt;/tr>
                &lt;tr>
                    &lt;td>OnlyBlue3&lt;/td>
                    &lt;td>10/24/1983&lt;/td>
                    &lt;td>23&lt;/td>
                &lt;/tr>
                &lt;tr>
                    &lt;td>Momo&lt;/td>
                    &lt;td>10/14/1999&lt;/td>
                    &lt;td>8&lt;/td>
                &lt;/tr>
            &lt;/tbody>
        &lt;/table>
  
 &lt;/BODY>
&lt;/HTML>

</pre><br /><br />以上例子经过 ie6 和 firefox2.0.0.5调试通过
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/103272#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</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, 20 Jul 2007 16:29:33 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/103272</link>
        <guid>http://ozone.javaeye.com/blog/103272</guid>
      </item>
      <item>
        <title>java 5.0 tiger学习笔记(二)  </title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/101856" style="color:red;">http://ozone.javaeye.com/blog/101856</a>&nbsp;
          发表时间: 2007年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          generic 学习<br /><br />一.使用Type-safe的list。<br />例如：<br /><pre name="code" class="java">
List&lt;E> list = new List&lt;E>();
public boolean addMessage(E o){    };
</pre><br /> 其中E只是一个占位符，上例中，List&lt;E> 中E表示list的参数可以接受的数据的类型。第二个表示函数addMessage声明了一个变量<br /> E,并将它参数化。<br /><pre name="code" class="java">
   //表示listOfString可以存入String实例，但是必须指定一个可以接受相同类型的实例给他。
   List&lt;String> listStrings ;
   // 表示可以将String加入到listOfString中，但是无法加入其他的类型。
   List&lt;String> listStrings = new LinkedList&lt;String>();
</pre><br />   例:<br /><pre name="code" class="java">
      List&lt;String> onlyStrings = new LinkedList&lt;String>;
      onlyStrings.add("Hello");
      //onlyStrings.add(new StringBuilder("World")); 编译出现错误
      onlyStrings.add("Welcome to java");
</pre><br />注意：List所容许的是所有类型的对象，所以List不接受初始值，所以 primitive 类型的List。<br /><pre name="code" class="java">
      //错误定义
      List&lt;int> intOfList = new LinkedList&lt;int>();

      //正确定义
      List&lt;Integer> integerOfList = new LinkedList&lt;Integer>();
 </pre><br /> 二.使用Type-sefe的Map。<br /> 例如：<br /><pre name="code" class="java">
       Map&lt;Integer , Integer> map = new HashMap&lt;Integer,Integer>();
       Map&lt;E,T> map = new HashMap&lt;E,T>();
</pre><br />其中E,T与上例中的相似，只是占位符。<br /><br />   语法：<br /><pre name="code" class="java">
        Map&lt;Integer,Integer> intOfMap ;
        Map&lt;Integer,Integer> intOfMap = new Map&lt;Integer,Integer>();
</pre><br />   例子：<br /><pre name="code" class="java">
        Map&lt;Integer,Integer> intOfMap = new Map&lt;Integer,Integer>();
        for(int i = 0;i&lt;10;i++){
            intOfMap.put(i,i*3);
        }
        for(int i = 0;i&lt;10;i++){

            System.Out.println("Map--->"+i+"  "+intOfMap.get(i));

       }
</pre><br />注意:此处我们加入的是int的i,默认情况下,java会在幕后把int自动转化成Integer.<br /><br />三. 参数类型的遍历.<br /><br />当遍历已经参数化的 List的时候,修要参数化你的Iterator.<br /><br />例如:<br /><pre name="code" class="java">
    List&lt;String> stringOfList = new LinkedList&lt;String>();
    stringOfList.add("Welcome");
    stringOfList.add("To");
    stringOfList.add("Java World");
    for(Iterator&lt;String> i = stringOfList.iterator();i.hasNext();){
        String s = i.next();
        System.out.println("---s---〉"+s);
    }
</pre><br />四. 以参数类型作为参数：（接受参数类型；返回参数类型；参数类型作类型参数）<br />   1. 接受参数类型：<br /><pre name="code" class="java">
      public String getString（List&lt;String> stringOfList）{
        for(Iterator&lt;String> i = stringOfList.iterator();i.hasNext();){
            String s = i.next();
            System.out.println("---s---〉"+s);
         }
      }
</pre><br />   2.返回参数类型 ：<br /><pre name="code" class="java">
      public List&lt;String> getList(){
            List&lt;String> sList = new LinkedList&lt;String>();
            sList.add("Hello");
            sList.add("Java");
            return sList;
      }
</pre><br />     上述方法发挥安全类型的List，所以可以立即按照安全类型方式使用。<br /><br />   3.参数类型作类型参数：<br /><pre name="code" class="java">
      Map&lt;Integer,List&lt;String>> mMap = new HashMap&lt;Integer,List&lt;String>>();
</pre><br />五.generic与类型转换<br /><br />      generic类型转化是按照非generic 的类型转化的，即是依照他本身的层次类型转化，而不是参数类型的层次类型<br />转化。<br />  类如：<br /><pre name="code" class="java">
     LinkedList&lt;Float> floatList = new LinkedList&lt;Float>();
</pre><br />     转化是基于LinkedList的层次类型转化的，而不是参数 Float类型转化。<br /><br /><br />六.类型通配符<br />   普通应用：<br /><pre name="code" class="java">
       public void printList(List list){
            for(Iterator i = list.iterator();i.hasNext();){
                System.out.println("--print---"+i.next().toString());
            }
       }
</pre><br />如果使用generic类型,是函数可以接受所有类型的List.可以使用generic中的通配符号 ? 来表示"通配"的目的<br /><br />  即<br /><pre name="code" class="java">
        public void printList（List&lt;?> list）{
            for(Iterator&lt;?> i = list.iterator();i.hasNext();){
                System.out.println("---print---->"+i.next().toString());
            }
        }
</pre><br />  注意:  List&lt;?> list   和 List&lt;Object> list 是两种不同的概念。<br /><br />七 撰写自己的generic<br /><pre name="code" class="java">
     public class Ball&lt;T>{
        public List&lt;T>  list;
        public Ball(){
            list = new ArrayList&lt;T>();
        }

        public int getLenght(){
            return list.size();

        }
        public boolean isEmpty(){
            return (list.size()==0);
        }
        public void add(T o){
            list.add();
        }       
     }
</pre><br />     如果你想使用String类型，用String替换 T 的<br /><pre name="code" class="java">
       Ball&lt;String> ball = new Ball&lt;String>();
</pre><br />八：限制类型参数<br /><pre name="code" class="java">
     public class IntBall&lt;N extends Number> extends Ball&lt;N>{

     }
</pre><br />   如果使用<br /><pre name="code" class="java">
     IntBall&lt;String> ball = new IntBall&lt;String>();
</pre><br />     也可以在参数中使用限制。<br /><pre name="code" class="java">
     public  static public sum(Ball&lt;? extends Number> ball_1,Ball&lt;? extends Number> ball_2){

     }
</pre><br />     也可以换成另外形式 ：<br /><pre name="code" class="java">
      public static &lt;A extends Number> public sum(Ball&lt;A> ball_1,Ball&lt;A> ball_2){

      }
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/101856#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jul 2007 09:45:00 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/101856</link>
        <guid>http://ozone.javaeye.com/blog/101856</guid>
      </item>
      <item>
        <title>java 5.0 tiger学习笔记(一)</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/93237" style="color:red;">http://ozone.javaeye.com/blog/93237</a>&nbsp;
          发表时间: 2007年06月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一.使用Arrays的操作.<br />
1. toString(Object[] a) :返回指定数组的内容的字符串表示形式.<br />
2. deepToString(Object[] a) ：返回指定数组&ldquo;深层内容&rdquo;的字符串表示形式，他接受的对象是数组，也就是说他可以打印出数组中的数组。<br />
3.deepEquals(Object[] a,Object[] b) :比较两数组是不是深层相等，相等返回true,否则false;<br />
4. fill() :主要是把指定的制，分配给数组中制定的制。参数形式不定，具体看javaDoc.<br />
5. clone() 创建并返回此对象的一个副本<br />
<strong>例子: <br />
<div class="code_title"><strong>java 代码</strong></div>
<div class="dp-highlighter">
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="keyword"><strong>import</strong></span><span><strong>&nbsp;java.util.Arrays;&nbsp;&nbsp;</strong></span></span></li>
    <li class=""><span><strong>&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;ArrayEG&nbsp;{&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;arry[];&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;ArrayEG(</span><span class="keyword">int</span><span>&nbsp;num){&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arry&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;</span><span class="keyword">int</span><span>[num];&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arry[i]&nbsp;=&nbsp;i&nbsp;*&nbsp;i;&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;</strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>[]&nbsp;getArray(){&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;arry;&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;</strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;arg){&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayEG&nbsp;test&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;ArrayEG(</span><span class="number">3</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>[]&nbsp;myArray&nbsp;=&nbsp;test.getArray();&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>[]&nbsp;myArray1&nbsp;=&nbsp;test.getArray().clone();&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(Arrays.equals(myArray,myArray1)){&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;---Arrays&nbsp;are&nbsp;equal--&quot;</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;----Arrays&nbsp;are&nbsp;not&nbsp;equal----&quot;</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;--print&nbsp;array[]--&gt;&quot;</span><span>+Arrays.toString(myArray));&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.fill(myArray,<span class="number">1</span><span>,</span><span class="number">2</span><span>,</span><span class="number">9</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[][]&nbsp;number&nbsp;=&nbsp;{{<span class="string">&quot;X&quot;</span><span>,</span><span class="string">&quot;Y&quot;</span><span>},{</span><span class="string">&quot;O&quot;</span><span>,</span><span class="string">&quot;P&quot;</span><span>}};&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[][]&nbsp;number1&nbsp;=&nbsp;{{<span class="string">&quot;X&quot;</span><span>,</span><span class="string">&quot;Y&quot;</span><span>},{</span><span class="string">&quot;P&quot;</span><span>,</span><span class="string">&quot;O&quot;</span><span>}};&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;</strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(Arrays.deepEquals(number,number1)){&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;-------Array&nbsp;are&nbsp;equal-----&quot;</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;-----&nbsp;Array&nbsp;are&nbsp;not&nbsp;equal--------&quot;</span><span>);&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;---print&nbsp;arrays[][]---&gt;&quot;</span><span>+Arrays.deepToString(number));&nbsp;&nbsp;</span></strong></span></li>
    <li class="alt"><span><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
    <li class=""><span><strong>&nbsp;&nbsp;}&nbsp;&nbsp;</strong></span></li>
</ol>
</div>
<br />
</strong>二.queue 使用(frist in first out or list in first out)<br />
特点：1.添加删除和传统的collection不相同。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.queue有固定的大小，使得在添加和删除的时候注意异常抛出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.LinkedList 被改造实现queue接口，也可以把它当作一般的　list来使用<br />
方法摘要：<br />
&nbsp;&nbsp;&nbsp; 1.element() : 检索，但是不移除此队列的头。<br />
&nbsp;&nbsp;&nbsp; 2.offer(E o) : 如果可能，将指定的元素插入此队列。<br />
&nbsp;&nbsp;&nbsp; 3.peek() : 检索，但是不移除此队列的头，如果此队列为空，则返回 null。<br />
&nbsp;&nbsp;&nbsp; 4.poll() : 检索并移除此队列的头，如果此队列为空，则返回 null。<br />
&nbsp;&nbsp;&nbsp; 5.remove() : 检索并移除此队列的头。<br />
Queue排序:<br />
&nbsp;&nbsp;&nbsp; PriorityQueue另外一种Queue的实现，PriorityQueue使用Comparator来排序他的项目。默认是现实&quot;自然排序&quot;从小到大<br />
<br />
&nbsp; 例子:<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.util.Queue;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">import</span><span>&nbsp;java.util.LinkedList;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.util.PriorityQueue;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">import</span><span>&nbsp;java.util.Comparator;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;java.io.PrintStream;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;QueueTest&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;Queue&nbsp;q;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;QueueTest(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;LinkedList();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//测试FIFO</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;testFIFO(PrintStream&nbsp;out){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.offer(<span class="string">&quot;Event_1&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.offer(<span class="string">&quot;Event_2&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.offer(<span class="string">&quot;Event_3&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>((o=q.poll())!=</span><span class="keyword">null</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.println(o);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;arg){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueTest&nbsp;qt&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;QueueTest();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;Test&nbsp;first&nbsp;in&nbsp;first&nbsp;out....................&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qt.testFIFO(System.out);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;Test&nbsp;queue......................&nbsp;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qt.testPriorityQueue();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;Test&nbsp;queue&nbsp;by&nbsp;comparator....................&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qt.testPriorityQueueByComparator();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;&nbsp;testPriorityQueue(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PriorityQueue<integer>&nbsp;pq&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;PriorityQueue<integer>(</integer></span><span class="number">20</span><span>);&nbsp;&nbsp;</span></integer></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;i&lt;</span><span class="number">20</span><span>;i++){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pq.offer(<span class="number">20</span><span>-i*</span><span class="number">2</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&lt;</span><span class="number">20</span><span>;i++){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;----Queue&nbsp;print----&gt;&quot;</span><span>+pq.poll());&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;testPriorityQueueByComparator(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PriorityQueue<integer>&nbsp;pg&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;PriorityQueue<integer>(</integer></span><span class="number">20</span><span>,</span><span class="keyword">new</span><span>&nbsp;Comparator<integer>(){&nbsp;&nbsp;</integer></span></integer></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;compare(Integer&nbsp;i,Integer&nbsp;j){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;i&gt;j&nbsp;?&nbsp;i&nbsp;:&nbsp;j;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;i&lt;</span><span class="number">20</span><span>&nbsp;;i++){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pg.offer(<span class="number">15</span><span>-i);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i&nbsp;=&nbsp;</span><span class="number">0</span><span>;i&lt;</span><span class="number">20</span><span>;i++){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class="string">&quot;-----Queue&nbsp;print&nbsp;with&nbsp;comparator-------〉&quot;</span><span>+pg.poll());&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
<strong>注释: 对comparator还不太理解,正在研究,有结果后和大家一起共享,那位朋友有相关资料,可以留言</strong>
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/93237#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Jun 2007 19:17:00 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/93237</link>
        <guid>http://ozone.javaeye.com/blog/93237</guid>
      </item>
      <item>
        <title>(转)一个最珍贵的故事——职场人不得不看</title>
        <author>Ozone</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ozone.javaeye.com">Ozone</a>&nbsp;
          链接：<a href="http://ozone.javaeye.com/blog/91043" style="color:red;">http://ozone.javaeye.com/blog/91043</a>&nbsp;
          发表时间: 2007年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一对新婚夫妇生活贫困，要靠亲友的接济才能活下去。一天，丈夫对妻子说：&ldquo;亲爱的，我要离开家了。我要去很远的地方找一份工作，直到我有条件给你一种舒适体面的生活才会回来。我不知到会去多久，我只求你一件事，等着我，我不在的时候要对我忠诚，我也会对你忠诚的。&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多天后，来到一个正在招工的庄园，他被录用了。他要老板答应他一个请求：&ldquo;请允许我在这里想干多久就多久，当我觉得应该离开的时候，您就要放我走。我平时不想支取报酬，请您将我的工资存在我的账户里，在我离开的那天，您在把我挣的钱给我。&rdquo;双方达成协议。 <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 年轻人在那里一工作就是20年，中间没有休假。一天，他对老板说：&ldquo;我想拿回我的钱，我要回家了。&rdquo;老板说：&ldquo;好吧，我们有协议，我会照协议办的。不过我有个建议，要么我给你钱，你走人；要么我给你三条忠告，不给你钱，然后你走人。你回房间好好想想再给我答复。&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他想了两天，然后找到老板说：&ldquo;我想要你那三条忠告。&rdquo;老板提醒说：&ldquo;如果给你忠告，我就不给你钱了。&rdquo;年轻人坚持说：&ldquo;我想要忠告。&rdquo; <br />
&nbsp;&nbsp;&nbsp; 于是老板给了他&ldquo;三条忠告&rdquo;: <br />
&nbsp;&nbsp;&nbsp; 第一，永远不要走捷径。便捷而陌生的道路可能要了你的命。 <br />
&nbsp;&nbsp;&nbsp; 第二，永远不要对可能是坏事的事情好奇，否则也会要了你的命。 <br />
&nbsp;&nbsp;&nbsp; 第三，永远不要在仇恨和痛苦的时候作决定，否则你以后一生会后悔的。 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 老板接着说：&ldquo;这里有三个面包，两个给你路上吃，另一个等你回家后和妻子一起吃吧。&rdquo; <br />
在远离自己深爱的妻子和家庭20年后，男人踏上了回家的路。一天后，他遇到了一个人，那人问他：&ldquo;你去哪里？&rdquo;他回答：&ldquo;我要去一个沿着这条路要走20 多天的地方。&rdquo;那人说：&ldquo;这条路太远了，我认识一条捷径，几天就能到。&rdquo;他高兴极了，正准备走捷径的时候，想起老板的第一条忠告，他回到了原来的路上。后 来，他得知那个人让他走的所谓捷径完全是个圈套。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 几天后，他走累了，发现路边有家旅馆，他打算住一夜，付过房钱后他躺下睡了。睡 梦中他被声惨叫惊醒，他跳了起来，正想开门看看发生了什么事，但他想起了第二条忠告，于是回到床上继续睡觉。起床后喝完咖啡，店主问他是否听到了叫声，他 说听到了，店主问：&ldquo;您不好奇吗？&rdquo;他回答说不好奇。店主说：&ldquo;您是第一个活着从这里出去的客人。我的独子有疯病，他经常大声叫着引客人出来，然后将他杀 死埋掉。&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他接着赶路，终于在一天的黄昏时分，远远望见了自己的小屋。屋里的烟囱正冒着炊烟，还依稀可以看见妻子的身影，虽然天 色昏暗，但他依然看清了妻子不是一个，还有一个男子伏在她的膝头，她抚摸着他的头发。看到这一幕，他的内心充满仇恨和痛苦，他想跑过去杀了他们，他深吸一 口气，快步走了过去，这时他想起了第三条忠告，于是停下来，决定在原地露宿一晚，第二天在做决定。天亮后，已恢复冷静的他对自己说：&ldquo;我不能杀死我的妻 子，我要回到老板那里，求他收留我，在这之前，我想告诉我的妻子我始终忠于她。&rdquo;她走到家门口敲了敲门，妻子打开门，认出了他，扑到他的怀里，紧紧的抱住 了他。他想把妻子推开，但没有做到。他眼含泪水对妻子说：&ldquo;我对你是忠诚的，可你背叛了我......&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 妻子吃惊的说：&ldquo;什么？我从未背叛过你，我等了你20年。&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他说：&ldquo;那么昨天下午你爱抚的那个男人是谁？&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 妻子说：&ldquo;那是我们的儿子。你走的时候我刚刚怀孕，今年他已经20岁了。&rdquo; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 丈夫走进家门，拥抱了自己的儿子。在妻子忙着做晚饭的时候，他给儿子讲述了自己的经历。一家人坐下来一起吃面包，他把老板送的面包掰开，发现里面有一沓钱-那是他20年辛辛苦苦劳动得来的工钱。<br />
-------------------------------------------------------------------------(2007/01/16转载)----------------------------<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看过了,在深深的思考.一直没有明白.,大家一起讨论!!!&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://ozone.javaeye.com/blog/91043#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/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 16 Jun 2007 15:33:02 +0800</pubDate>
        <link>http://ozone.javaeye.com/blog/91043</link>
        <guid>http://ozone.javaeye.com/blog/91043</guid>
      </item>
  </channel>
</rss>