<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>shxiao</title>
    <description></description>
    <link>http://shxiao.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>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/186011" style="color:red;">http://shxiao.javaeye.com/blog/186011</a>&nbsp;
          发表时间: 2008年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          heap， 堆是一个特殊的基于树的数据结构，他满足堆属性，如果b是a的节点，那么key(a) >= key(b),这也暗示了键值最大的<br /><br /> 元素在根节点，这种堆叫做大堆，另外一种情况叫小堆，一般用堆来实现优先级队列，堆有很多实现方式。<br /><br />      用数组实现堆，一个元素放根根节点，后2个元素放子节点，依次类推,n节点的子节点在2n+1和2n+2上，factor中的堆就是用数组实现的， java中有一个优先级队列，是个极大堆<br /><br />   TUPLE: heap data ;<br /><br />   <br /><br /><br /><br />栈stack是一种先进后出的数据结构<br /><br /><br /><br />堆栈(the stack)是动态分配内存的区域
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/186011#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Apr 2008 17:04:27 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/186011</link>
        <guid>http://shxiao.javaeye.com/blog/186011</guid>
      </item>
      <item>
        <title>程序设计语言</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/183481" style="color:red;">http://shxiao.javaeye.com/blog/183481</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看了好多语言，发现基础都差不多，看来看去好无聊。<br /><br />   语言内容大致可以划分为3大类，<br /> 数字<br /> 容器<br /> 对象（对象单个个对象的抽象）   <br />   <br /><br />数字，<br /><br />   每个语言都内置了对数字操作的支持，只是有的把它当作对象(为了和抽象对象一致)，而有的就像是天生的，数字大致<br /><br />   分为整数，浮点数，还有复数，根据其容纳数字的能力又可以细分。 大部分都把数字当成常量，数字操作的结构是生成另外的  常量。所以数字就是无穷枚举而已。数字的用途是什么呢？就我写过的程序而言，好像只有计数，用来表示某个对象的量，以及量的复合。<br /><br />   数是一个抽象对象，是一个计数和测量的符号。表示一个数的符号叫做数字，（也就是说数字只是一个符号，符号自然是常量了）<br /><br />（wiki上好多资料，可惜看不懂)<br /><br />容器，<br /><br />表示的是可以容纳多个对象的对象，容器在程序中很有用，可以把多个对象抽象成一个对象，从而对他们进行一个公共的操作。容器的种类很多，但常用的就那么几个。每个语言的内置容器都不一样，内置越多的感觉功能更大些。<br /><br />    容器又分为数列，集合， <br /><br />    常用容器<br /><br />       数组， 常用语言都内置都了这个结构，在静态类型语言中，只能容纳同类型对象，即声明数字的对象，它是逻辑和物理上都连续的容器， 索引效率高，但是修改低，在动态语言中,例如python就没有提供，当然可以用list来替换，在javascript中数字是一个泛型容器，可以容纳任何对象。<br /><br />    数列，有序列表，其实现大致有数组列表，链式列表。<br /><br />    关联列表（map), 通过键值来关联对象的对象。<br /><br />    集合，没有重复的对象集合。<br /><br /><br /><br />    特殊集合:<br /><br />       联合， 紧凑的联合<br /><br />        ........<br /><br /><br /><br />对象，<br /><br />  表示一个抽象的概念，什么是抽象呢？ 关注一类事物的共同点而忽略掉细节，从高层看事务。<br /><br />    这里的对象表示的是对当类事务的抽象<br /><br />    常用对象抽象。<br /><br />       模块， 表示一个功能类或函数的集合，模块一般都单身汉<br /><br />       函数， 表示的一个计算过程，输入，计算，输出，不同的语言对函数不同的待遇，在把函数当作头等公民的语言中，函数就是对象，在其他的里面例如java中就是抽象的对象，如果想把它也当作头等，只有通过包装（内因类）来实现。还可以通过对象函数的所属来看待它， 没有属主只是一个过程，如果依附与一个对象，就是它的接口（要想调用这个函数，必须首先获得那个对象），当然还有多属主的情况，那就是多分派了。结构依赖与多个对象。<br /><br />     类，在面向对象语言中用来模拟某种抽象。<br /><br />     参数，用来传递信息的对象。<br /><br />   <br /><br />    常用技术抽象。<br /><br />        迭代器， 顺序访问数列的对象。<br /><br />        产生器， 连续的实现者<br /><br />        访问者， 某些结构上的一组操作<br /><br /><br />        连续， 程序执行中某点，目前的连续也就是将来的计算。<br /><br />        函数对象， 模拟头等公民<br /><br />        闭包， 函数对象，可以访问调用者的内部变量
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/183481#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 18:00:41 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/183481</link>
        <guid>http://shxiao.javaeye.com/blog/183481</guid>
      </item>
      <item>
        <title>角色分析</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/173412" style="color:red;">http://shxiao.javaeye.com/blog/173412</a>&nbsp;
          发表时间: 2008年03月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          面向角色的分析<br />     关注点的分离，单个现象的静，动属性<br />  类关注对象的能力，而角色关注的是（在对象社会中）对象的职位和责任。编程是个费力的活儿，所以我们应该<br />尽力让单个的对象来在其社会中扮演不同的角色（职位）。<br />  在角色分析中我们要考虑对象的环境，<br />  角色模型关注交互的角色如何完成目标。<br />     角色模型是拥有静，动属性的协作对象的结构化描述，属性包括，协作的目的，对象之间的关系，对象发送给<br /> 协作者的消息，以及消息是如何处理的。<br />     角色模型表示一个受关注的有界现实。她模拟协作对象的模式（那些不变的）作为协作角色的结构。<br /><br />   角色模型分析过程， 把整个系统分割成单个关注点的区域，对每个区域用角色模型来模拟感兴趣的场景。<br />   要抛弃不相关的内容，高度集中与关注的焦点上。<br />   任何对象模式作用与角色模型上都是其实例，对象(类)自己是角色的实例。<br />   角色模型可以通过不同的关注点来观察，呈现出不同的内容同时忽略其他的，关注点可以是静态（目的）的，<br />  也可以是动态的（角色的交互)，也可以是一个场景（一系列消息)<br /><br />  divide and conquer
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/173412#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Mar 2008 15:24:15 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/173412</link>
        <guid>http://shxiao.javaeye.com/blog/173412</guid>
      </item>
      <item>
        <title>对象学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/173046" style="color:red;">http://shxiao.javaeye.com/blog/173046</a>&nbsp;
          发表时间: 2008年03月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对象有3个属性，使它成为简单并且有力的模型建造快，状态能够模拟内存，行为能够模拟动态过程，封装能够<br />隐藏对象的复杂性。<br />一个对象有标识，在其生命周期内是唯一的<br />对象有属性封装信息<br />对象能够和其他的对象交互通过发送或接受消息，每个消息都有接受者和发送者<br />消息是有目的性的意图。它告诉接受者完成某些事情确不告诉她如何做。<br />消息的功能由3部分组成<br />1： 消息是一个触发器，她使得接受对象选择自己的一个方法并执行它，执行的结构可能包括改变对象的属性，发送消息给更多的协作者还有新对象的创建。<br />2：消息也可能是单向数据载体，她给接受者提供一些新的数据信息。数据通过消息的参数来描述，当然，参数也可能是引用别的对象。 构造函数好像就是这一类<br />3：接受处理完信息后很可能把结构返回给信息的发送者。<br /><br />既然消息都有接受者和发送者，那最初的发送者是谁呢？所以执行环境会提供一个激发消息，通过这个激发消息来产生活动，譬如main()函数。
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/173046#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 17 Mar 2008 16:03:48 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/173046</link>
        <guid>http://shxiao.javaeye.com/blog/173046</guid>
      </item>
      <item>
        <title>factor学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/164227" style="color:red;">http://shxiao.javaeye.com/blog/164227</a>&nbsp;
          发表时间: 2008年02月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1： 如果目前的字符是一个双引号，"分析词被执行，然后读入一个字符串<br />2:  否则，读入其名字，并在目前的词汇集合中寻找与之匹配的词，如果找到，<br />执行下面两个动作<br />  1：如果这个词是普通词，把它追加到分析书中<br />  2：如果是一个分析词，则执行这个词<br />3：如果没有找到与之匹配的词，分析器把它看做数字，如果真实数字，把它追加到<br />分析书上去，否则报错并且停止分析。<br /><br />分析词在分析过程中扮演着关键角色，普通词和 数据<br />只追加到分析书上,而分析词能够在分析过程中执行，并且可以有自己的分析书。<br /><br />常词，把一个追加到分析树上并不执行它（\, POSTPONE)<br />[ ] 语录，相当与匿名函数。<br />{ } 数组<br />V{ } 向量 可扩展的对象序列<br />字符和字符串, CHAR: "<br />SUUF" 缓存字符<br />B{ } 字节数组<br />?{ } 位数组<br />H{ }<br />TUPLE: 元组是由有名槽组成的类， 一个分析词定义元组类
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/164227#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Feb 2008 14:59:47 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/164227</link>
        <guid>http://shxiao.javaeye.com/blog/164227</guid>
      </item>
      <item>
        <title>为失去的岁月哭泣</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/160393" style="color:red;">http://shxiao.javaeye.com/blog/160393</a>&nbsp;
          发表时间: 2008年01月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          2007年大学毕业，进入了这纷杂的社会，真正拉开这平庸生命的序幕了。<br /><br />   想想过去的24年中，得到什么又失去了什么，想想以后又会怎样，满脑迷漫，<br /><br />  我的人生到底是来做什么的呢？<img src="/images/smiles/icon_cry.gif"/><img src="/images/smiles/icon_cry.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/160393#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 30 Jan 2008 15:14:17 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/160393</link>
        <guid>http://shxiao.javaeye.com/blog/160393</guid>
      </item>
      <item>
        <title>state 学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/155140" style="color:red;">http://shxiao.javaeye.com/blog/155140</a>&nbsp;
          发表时间: 2008年01月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          state 学习<br /><br />1：对状态的访问， 直接访问，对内直接访问，对外间接访问<br /><br />2：公共状态， 所有对象共享的状态，对于部分方法才会使用到的状态最好使用别的方式存储状态，例如参数或者助手<br />   类。 all common state in an object should have the same lifetime.<br /><br />3：变化的状态集合，不仅对象使用的状态变化，而且状态的数量也变化时，通常使用一个map集合来存储此类的状态。<br />   Use common state whereever possible, Use variable state for the fields in an object that<br /> may or may not be needed  depending on usage.<br /><br />4: 外来状态。 某个特别的对象感兴趣的状态，如果把他放在类中，将会违反对称性，把此类状态和其主人存储在map中。 缺点时对象复制时比较困难。<br /><br />5：局部变量的类型<br />     a: Collector(收集者)， 通常是为了所有的计算而收集信息。收集的结果通常被作为计算结果返回给调用者。<br />         通常命名为result 或者results.<br />     b: Count(计数器), 一个用来收集某些对象的次数的收集者。<br />     c: Explaining.  用来解释复杂表达式的中间结构，利于理解代码。通常时助手类的接入点，减少代码重复。<br />     d: Reuse(复用). 一个表达式的变化随着时间而变化，这时需要一个临时的住所来暂住一下<br />     e: Element(元素)  一个集合中的单个元素，例如迭代器<br /><br />6：数据域(field)<br />         常见域扮演的角色<br />        a: 助手(Helper)，保持对别人的引用，帮助主人和别人通信，当主人的很多行为都涉及到某个别人(当作<br />         参数传递的),可以重构为助手域，通过助手和别人通信。<br />        b: 标帜域(Flag)，用来区分对象的行为，可以重构为策略模式<br />        c: 策略域(Strategy), 对象的行为根据策略对象的变化而变化，如果对象的其生命周期内的行为不变化，<br />         只是在同类不同对象间变化时，通过构造函数注入策略对象<br />        d:状态域(state)<br />        f: 组件(Components); 一个具有自主能力的对象<br /><br />7: 参数(Parameter)<br />         耦合性较小的通信方式，当一个对象和某个对象的交互次数较少时通过参数通信较少，但交互次数较多时<br />      就该把别人招纳为手下了。<br />     常见参数类型<br />      a: 收集参数(Collecting Parameter),  就像个无底麻袋，把他轮流传递给每个人，把他们的money放到袋<br />        子里，最后把他再返回到我这里，看看袋子，就知道其作用了。<br />      b: 可选参数(Optional Parameter), 可有可无，无时认为其默认的， 可变参数可以当成一个集合作为一个<br />      对象传递过去。<br />      c: 参数对象， 太多的对象经常一起出入的话，那就把他们当成一个对象吧！<br /><br />8：类的全局常量Const  （static final）<br /><br />9: 通过变量的角色来命名（scope, lifetime, role）<br /><br />10：类型声明<br /><br />11：初始化<br />        a: eager initialization, 在声明出初始化，在构造函数中初始化<br />        b: Lazy initialization 懒初始化，在真正需要的时候再去初始化。<br /><br /><br />tips:<br />      variables (scope, lifetime, role, runtime type of variables)<br />      role-suggesting name<br /><br />从Implementation patterns中学到的
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/155140#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Jan 2008 17:36:51 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/155140</link>
        <guid>http://shxiao.javaeye.com/blog/155140</guid>
      </item>
      <item>
        <title> JfreeChart学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/149654" style="color:red;">http://shxiao.javaeye.com/blog/149654</a>&nbsp;
          发表时间: 2007年12月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="western" align="center" style="margin-left: 0.14in;">   <strong><font size="5">JfreeChart</font></strong><span lang="zxx"><font size="5"><font face="宋体, SimSun"><strong>学习</strong></font></font></span><br />
</p>
<p class="western" align="left" style="margin-left: 0.14in;">JfreeChart<font face="宋体, SimSun">设计原则：</font></p>
<h1 class="western"><font face="HG Mincho Light J, msmincho"><span lang="zxx"> </span></font> </h1>
<p class="western" style="margin-bottom: 0.2in;">   <span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">图形和显示图像所需数据的清晰分离</font></span> </font></span> </p>
<p class="western">   <font size="3">a clear separation between the data and its presentation ( controlled by the plot and renderer) . </font> </p>
<h1 class="western">   JFreeChart<font face="HG Mincho Light J, msmincho"><span lang="zxx"><font face="宋体, SimSun">制图主要由</font></span></font>4<font face="HG Mincho Light J, msmincho"><span lang="zxx"><font face="宋体, SimSun">部分组成</font> </span></font> </h1>
<p class="western" style="margin-left: 0.14in;">   <font size="3">1</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">：</font></font></span><font size="3">JFreeChart</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">类</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <font size="3">2</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">：</font></font></span><font size="3">Plot</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">绘制区类</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <font size="3">3: Renderer</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">单个图形绘制者</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <font size="3">4</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">：</font></font></span><font size="3">Dataset</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">数据持有者。</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <a href="http://picasaweb.google.com/shxiao.work/JFreeChart/photo#5145894875704162594"><img src="http://lh3.google.com/shxiao.work/R2nkIBXZeSI/AAAAAAAAACk/GZXXSvJj4v4/s800/File1.png" alt="" /></a>  <img src="http://lh3.google.com/shxiao.work/R2nkIBXZeTI/AAAAAAAAACs/KxmL8WkSvAM/s800/File.png" alt="" /></p>
<p class="western" style="margin-left: 0.14in;">   <br clear="left" />
<font face="宋体, SimSun">主要类介绍</font></p>
<h1 class="western"><font face="HG Mincho Light J, msmincho"><span lang="zxx"> </span></font> </h1>
<p class="western" style="margin-left: 0.14in;">   <font size="3">JFreeChart </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">表示绘制的整个图形，拥有</font></font></span><font size="3">1&hellip;n</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">个</font></font></span><font size="3">plot</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">，通常是一个</font></font></span><font size="3">Plot</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">表示图形的绘</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <span lang="zxx"><font size="3"><font face="宋体, SimSun">制区域，主要有</font></font></span><font size="3">3</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">种：</font> </font></span> </p>
<h2 class="western">   Plot </h2>
<p class="western">   <font size="3"><strong>PiePlot</strong>: PiePlot3D, </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">饼形绘制区域。没有渲染器。数据集使用</font></font></span><font size="3">PieDataset, </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">添加数据</font> </font></span> </p>
<p class="western">   <span lang="zxx"><font size="3"><font face="宋体, SimSun">后，通过</font></font></span><font size="3">ChartFactory</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">来创建相应的图形，图形的属性都是通过</font></font></span><font size="3"><span lang="zxx">Plot</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">的设置的。</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <font size="3"><span lang="zxx"><strong>CategoryPlot</strong>: </span></font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">一个通用的使用</font></span></font></span><font size="3"><span lang="zxx">CategoryDataset</span></font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">和</font></span></font></span><font size="3"><span lang="zxx">CategoryItemRenderer</span></font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">的绘制区。</font></span> </font></span> </p>
<p class="western" lang="zxx" style="margin-left: 0.92in;">   <font size="3">A general plotting class that uses data from a CategoryDataset and renders each data item using a CategoryItemRenderer. </font> </p>
<p class="western">   <span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">在</font></span></font></span><font size="3"><span lang="zxx">CategoryPlot</span></font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">上绘制的图形</font></span> </font></span> </p>
<p class="western" style="margin-left: 1.08in;">   <font size="3"><span lang="zxx">Bar chart: DefaultCategoryDataset, </span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">实现的数据集。 </font></font></span><font size="3"><span lang="zxx">Bar chart has two axes, one that dipplays categories from the dataset( a CategoryAxis) and another that provides the numerical scale against which the data values are plotted( a NumberAxis).</span> </font> </p>
<p class="western" style="margin-left: 1.14in;">   <font size="3"><span lang="zxx">Line chart: 1: </span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">基于</font></font></span><font size="3"><span lang="zxx">CategoryDataset</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">在</font></font></span><font size="3"><span lang="zxx">CategoryPlot</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">上绘制，使用</font></font></span><font size="3"><span lang="zxx">LineAndShapeRanderer</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">渲染器 </font></font></span><font size="3"><span lang="zxx">2</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">：基于</font></font></span><font size="3"><span lang="zxx">XYDataset</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">在</font></font></span><font size="3"><span lang="zxx">XYPlot</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">上绘制</font> </font></span> </p>
<p class="western" style="margin-left: 0.14in;">   <font size="3"><span lang="zxx">Time Series Chart</span></font><span lang="zxx"><font size="3"><font face="宋体, SimSun">：</font> </font></span> </p>
<p class="western" style="margin-left: 1.06in;">   <font size="3">a time series chart is really just a line chart using data obtained via the XYDataset interface, the difference is that the x-values are displayed as dates on the domain axis. </font> </p>
<p class="western" style="margin-left: 0.89in;">   <font size="3"><strong>XYPlot</strong>, a general class for plotting data in the form of (x,y) pairs, this plot can use data from any class that implements the XYDataset interfacr, make use of an XYItemRender to draw each point on the point on the plot. </font> </p>
<h2 class="western">   Dataset<font face="HG Mincho Light J, msmincho"><span lang="zxx"><font face="宋体, SimSun">介绍：</font> </span></font> </h2>
<p class="western">   <font size="3"><br />
CategoryDataset, </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">表格式的数据集， </font></font></span><font size="3">each column heading is a category, and each row in </font> </p>
<p class="western" style="margin-left: 0.83in;">   <font size="3">the table is series. each row heading is a series name( or series name). common to create bar chart. </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">主要实现是类</font></font></span><font size="3">DefaultCategoryDataset</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">类。主要函数是</font></font></span>    </p>
<p class="western"><font size="3">add(Number value, rowKey, columnKey). </font><font size="3"><br />
PieDataset, </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">饼式数据集。</font></font></span><font size="3">a collection of value where each value is associated with a key . </font> </p>
<p class="western" style="margin-left: 0.83in;">   <font size="3">create PieChart. </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">主要实现是</font></font></span><font size="3">DefaultPieDataset.</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">添加数据的方法是 </font></font></span><font size="3">setValue(Comparable key, Number value) </font> </p>
<p class="western">   <font size="3"><br />
XYDataset, a collection of data in the form of (x, y) values.</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">主要被</font></font></span><font size="3">XYPlot</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">使用，扩展的</font> </font></span> </p>
<p class="western">   <span lang="zxx"><font size="3"><font face="宋体, SimSun">接口有</font></font></span><font size="3">IntervalXYDataset, OHLCDataset, XYZDataset, TableXYDataset.</font> </p>
<h2 class="western">   Renderer, <font face="HG Mincho Light J, msmincho"><span lang="zxx"><font face="宋体, SimSun">渲染器。</font> </span></font> </h2>
<p class="western">   <span lang="zxx"><font size="3"><font face="宋体, SimSun">这个类做真正的绘制。</font> </font></span> </p>
<p class="western">   <font size="3">drawing individual data items on behalf of a plot. Renderers offer a lot of scope </font> </p>
<p class="western" style="margin-left: 0.67in;">   <font size="3">for changing the appearance of your charts, either by changing the attributes of an existing renderer, or by implementing a completely new renderer. </font> </p>
<p class="western">   <font size="3">CategoryItemRenderer </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">表格式数据中当个数据的渲染器</font> </font></span> </p>
<p class="western">   <font size="3">XYItemRenderer </font><span lang="zxx"><font size="3"><font face="宋体, SimSun">单个点的渲染器</font> </font></span> </p>
<p class="western">   <font size="3">PiePlot</font><span lang="zxx"><font size="3"><font face="宋体, SimSun">没有渲染器。</font> </font></span> </p>
<p class="western">   <font size="3">PieChart</font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">使用过程：</font></span> </font></span> </p>
<p class="western">   <font size="3">//</font><span lang="zxx"><font size="3"><span lang="zh-CN"><font face="宋体, SimSun">创建数据集对象，用来保存显示的数据</font></span> </font></span> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000">DefaultPieDataset dataset = </font><strong><font color="#7f0055">new</font></strong><font color="#000000"> DefaultPieDataset();</font></font> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000">dataset.setValue(</font><font color="#2a00ff">&quot;1&quot;</font><font color="#000000">, 20.0);</font></font> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000">dataset.setValue(</font><font color="#2a00ff">&quot;2&quot;</font><font color="#000000">, 30);</font></font> </p>
<p class="western">   <font size="2" style="font-size: 11pt;">//</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">获取整个图形对象</font></span></font> </span> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000">JFreeChart chart = ChartFactory.<em>createPieChart</em>(</font><font color="#2a00ff">&quot;&quot;</font><font color="#000000">, dataset, </font><strong><font color="#7f0055">false</font></strong><font color="#000000">,</font><strong><font color="#7f0055">false</font></strong><font color="#000000">,</font><strong><font color="#7f0055">false</font></strong><font color="#000000">);</font></font> </p>
<p class="western">   <font size="2" style="font-size: 11pt;">//</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">在</font></span></font></span><font size="2" style="font-size: 11pt;">chart</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">中设置图像的全局属性，例如标题，背景色</font></span></font> </span> </p>
<p class="western" style="margin-left: 0.99in;">   <font size="2" style="font-size: 11pt;">//</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">从</font></span></font></span><font size="2" style="font-size: 11pt;">chart</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">可以获得</font></span></font></span><font size="2" style="font-size: 11pt;">Plot</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">对象，此时要使用向下转换。在</font></span></font></span><font size="2" style="font-size: 11pt;">plot</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">上可以设置画布的属性，例如标签字体</font></span></font> </span> </p>
<p class="western" style="margin-left: 0.99in;">   <font size="2" style="font-size: 11pt;">PiePlot plot = (PiePlot) chart.getPlot( );</font> </p>
<p class="western" style="margin-left: 0.99in;">   <font size="2" style="font-size: 11pt;"><font color="#000000">//</font></font><span lang="zxx"><font size="2" style="font-size: 11pt;"><font color="#000000"><span lang="zh-CN"><font face="宋体, SimSun">从</font></span></font></font></span><font size="2" style="font-size: 11pt;"><font color="#000000">plot</font></font><span lang="zxx"><font size="2" style="font-size: 11pt;"><font color="#000000"><span lang="zh-CN"><font face="宋体, SimSun">中获取单个图像的渲染器，单个图像的属性在这个设置</font></span></font></font> </span> </p>
<p class="western" style="margin-left: 0.99in;">   <font size="2" style="font-size: 11pt;"><font color="#000000">LineAndShapeRender renderer = (LineAndShapeRenderer) plot.getRenderer();</font></font> </p>
<p class="western" style="margin-left: 0.99in;">   <font size="2" style="font-size: 11pt;">//</font><span lang="zxx"><font size="2" style="font-size: 11pt;"><span lang="zh-CN"><font face="宋体, SimSun">把图像转换成图片显示出来</font></span></font> </span> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000">ChartFrame <span style="background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">frame</span> = </font><strong><font color="#7f0055">new</font></strong><font color="#000000"> ChartFrame(</font><font color="#2a00ff">&quot;&quot;</font><font color="#000000">, chart);</font></font> </p>
<p class="western">   <font size="2" style="font-size: 11pt;"><font color="#000000"><span style="background: rgb(192, 192, 192) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">frame</span>.<strike>show</strike>(</font><strong><font color="#7f0055">true</font></strong><font color="#000000">);</font></font> </p>
<p class="western">   AbstractRenderer中的lookupSeriesPaint(int serials)获取serials的涂料<br />
</p>
&nbsp; Row代表series,Column代表categoryKey<br />
<br />
<br />
<br />
<a href="http://picasaweb.google.com/shxiao.work/JFreeChart/photo#5139948257013140978"><img src="http://lh6.google.com/shxiao.work/R1TDtQcoDfI/AAAAAAAAAB8/xx5H73honj8/s800/jfreeChart.gif" alt="" /></a>  <a href="http://picasaweb.google.com/shxiao.work/JFreeChart/photo#5139948261308108290"><img src="http://lh3.google.com/shxiao.work/R1TDtgcoDgI/AAAAAAAAACE/OqPUcjSz-h4/s800/jfreechart.jpg" alt="" /></a>
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/149654#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Dec 2007 11:47:54 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/149654</link>
        <guid>http://shxiao.javaeye.com/blog/149654</guid>
      </item>
      <item>
        <title>JDBC日期类型学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/147750" style="color:red;">http://shxiao.javaeye.com/blog/147750</a>&nbsp;
          发表时间: 2007年12月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java时间日期类型学习<br />   java.sql.Date, Time, Timestamp对应sql中的date, time, timestamp.<br />  但是很多数据库中用date不只表示年月日,还表示时分秒，但jdbc通过getDate从结果集中<br />获取date时会把时分秒的信息截取掉，以对应sql中date的标准，所以从数据库中的date字段获取信息且信息包含时分秒时，要通过timestamp来获取，这样不至于丢失信息，同样对于Time也可能是同样的道理吧！。java.sql.Date只保存年月日，时分秒都会设置成默认的，不管之前是什么。因为Date是根据sql规范而来的类，所以比较理想一点<br /><br /><br />抽象：<br />  当一个对象超过本身应该拥有的信息， 对于其客户端而言，就应该把她当作比对象本身的类型更泛型的类型 <br /><br />后面学习<br /><br />   java.util.Date  表示特定的瞬间，精确到毫秒，使用DateFormat类格式化和分析日期字符串，解释年月等字段的功能已废弃，使用Calendar来实现日期和时间字段之间的转换。<br />          构造函数  Date(), 初始化的时间<br />                       Date(long)<br /><br /><br />   java.util.Calendar(日历) 为特定瞬间与时间字段之间的转换提供方法,还可以修改时间字段，通过工厂方法getInstance()来获取默认Local的日历。通过 get(int)来获取时间字段，通过setTime()和getTime()向java.util.Date相互转化。<br /> <br />   java.util.Local final类。与区域敏感的操作包装类<br /><br />java.sql.Date java.util.Date的年月日的装饰者，与sql中的date相对应，当通过setDate(),getDate()与数据库交互是jdbc会根据sql的规范把date的时分秒清零。<br /><br />java.sql.Time 是时分秒的装饰者，<br /><br />java.sql.Timestamp是年月日时分秒的装饰者(秒后面还有个0)。 使用setTimestamp()设置查询参数时，会混淆优化器使对应的字段无法做索引。<br /><br />java.text.DateFormat 格式化Date和解析Date字符串的抽象类。<br /><br />java.text.SimpleFormat Date格式化的基本实现， 有2种方式构造格式划器<br />      1： 直接通过构造函数 SimpleFormat(pattern)<br />       2:通过工厂方法获取默认格式化类，在通过applyPattern(pattern)来设置格式化格式(文档中看的)。但是通过工厂类获取的实例是抽象类类型，要使用applyPattern()还要向下转型。<br /><br />职责分析与设计<br />     java.util.Date只表示瞬间，而这一瞬间的字段表示和区域有关系，不易于国际化。所以把这个瞬间的字段获取和国际化的变化从瞬间中隔离出来，也就是Calendar存在的理由，而Calendar中有聚合一个Local表示与本地有关的信息。这样怎么了，不知道。纯属乱写。:-(<br /><br />    由于格式化的格式变化无穷，因此把这个变化单独提取出来，应付格式的变化，再想。如果A在方面B上有结果A.f(B),而B又可以参数化，因此可以把B当作一个主题提取出来，参数,f为其手下，从而可以应付手下的简单替换B.f(A, param)<br /><br />   java.sql.时间类型，都是特定类型的Date,比Date的使用范围窄了，所有感觉设计的不是很好，应该使用对象的适配而不是类的适配，新手很容易混淆，尤其想我这样的。及时继承也应该是私有，不应该对sql.时间类型的签名为util.Date.
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/147750#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Dec 2007 11:41:35 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/147750</link>
        <guid>http://shxiao.javaeye.com/blog/147750</guid>
      </item>
      <item>
        <title>java函数式编程</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/146423" style="color:red;">http://shxiao.javaeye.com/blog/146423</a>&nbsp;
          发表时间: 2007年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java中的函数式编程主要通过模拟函数子functor来实现，通过一个接口来声明函数子调用的接口(<br />    例如call(ReturnType, ParameterList)),其中ReturnType表示函数返回的类型（通过参数多态实现), ParameterList表示参数列表。<br /><br />    functor一般有3种<br /><br />        * 1：谓词，返回值为boolean类型，表示判断是非的。<br />        *  2：过程， 没有返回类型，表示计算的，在commons集合用闭包表示这个。<br />        *  3：转换，有返回类型为非boolean类型，表示把参数tranform为结果类型。<br /><br /><br />    partial, 分步运算，表示的一个绑定一个参数值返回相应的函数， 一步步的完成函数调用，或者也也可以绑定<br />             一个参     数让后在返回一个函数子，在利用这个函数子来计算。<br />    function composition,符合函数，表示的是z(x) = f(g(x)),把多个函数符合成单个函数。在程序中表现为以<br />            一个函 数为参数返回复合后的函数。注意函数z(x)的定义域为g(x)的定义域，值域为f(x)的值域。<br />             在f(x)中实现复  合    逻辑。<br />    Higher-order functions 高阶函数，高阶函数表示的是以函数为参数或者返回函数的函数。<br /><br />        典型高阶函数<br />           map(f, [a1, a2...an]) =[f(a1), f(a2), ..], 集合映射。<br />        filter, 集合过滤。等集合操作。这些函数一般在集合上迭代执行操作。<br /><br />        folding, 叠加操作，就像连续连续叠加操作，有一个加函数，一个初始值，还有一个被叠加集合<br />        ，初始值的位置为了保存上一次计算的结果用来下次叠加的。<br />        foldl(f, p, [a1, a2...an]) = f(f...f(f(p, a1), a2)..), an).<br /><br /><br /><br /><br />    参考FunctionalJ, google的集合包里面也实现了functor.
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/146423#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Dec 2007 15:30:00 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/146423</link>
        <guid>http://shxiao.javaeye.com/blog/146423</guid>
      </item>
      <item>
        <title>观察者模式学习</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/146178" style="color:red;">http://shxiao.javaeye.com/blog/146178</a>&nbsp;
          发表时间: 2007年12月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          观察者模式学习<br />   观察者描述了多个对象依赖于单个对象的行为。也就是观察者依赖于被观察者的状态。<br />观察模式的关键之处在于抽象出了可观察者接口，里面声明了一个当主题发生改变时通知观察者的接口。 在被观察者里面保存了所有观察者。当状态更新是通知这些观察者。<br /><br />实现细节：<br /><br />       1： 观察者通常以来于被观察者的状态，当通知观察者时要把状态信息传递给观察者，在更新接口中把this作为参数传递给观察者。<br />      java.util.Obserable表示主题， java.util.Observer表示观察者的接口<br />     2：把更新事件抽象为一个对象。 java.util.EventObject, java.util.EventListener<br /><br />知道的应用：<br /><br />        JFreeChart中大量使用了这个模式。<br />      主要有3个角色。<br /><br />           1：主题（被观察者，保存所有观察者，当状态改变时通知观察者）<br />           2： 事件（主题状态改变的抽象,当主题通知观察者时，实例化一个事件，把它传递给观察者）<br />           3：观察者：定义一个主题通知其的接口，具体观察者实现这个接口<br /><br />    SAX中的应用。在XMLReader中注册相关内容感兴趣的观察者，当分析器遇到主题时就通知其观察者处理。
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/146178#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Dec 2007 14:27:33 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/146178</link>
        <guid>http://shxiao.javaeye.com/blog/146178</guid>
      </item>
      <item>
        <title>好话    </title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/134848" style="color:red;">http://shxiao.javaeye.com/blog/134848</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; &ldquo;让你与柏拉图为友，让你与亚里士多德为友，重要的，让你与真理为友&rdquo;，相信哈佛大学的校训大家一定不会陌生，一个大学的文化氛围非一朝一夕养成，读一读积淀多年的训言，会让你醍醐灌顶。<br />
<br />
1． <span>This moment will nap, you will have a dream; But this moment study,you will interpret a dream. </span><br />
此刻打盹，你将做梦；而此刻学习，你将圆梦。<br />
<br />
2. <span>I leave uncultivated today, was precisely yesterday perishestomorrow which person of the body implored. </span><br />
我荒废的今日，正是昨日殒身之人祈求的明日。<br />
<br />
3. <span>Thought is already is late, exactly is the earliest time. </span><br />
觉得为时已晚的时候，恰恰是最早的时候。<br />
<br />
4. <span>Not matter of the today will drag tomorrow. </span><br />
勿将今日之事拖到明日。<br />
<br />
5. <span>Time the study pain is temporary, has not learned the pain islife-long. </span><br />
学习时的苦痛是暂时的，未学到的痛苦是终生的。<br />
<br />
6. <span>Studies this matter, lacks the time, but is lacks diligently. </span><br />
学习这件事，不是缺乏时间，而是缺乏努力。<br />
<br />
7. <span>Perhaps happiness does not arrange the position, but succeeds mustarrange the position. </span><br />
幸福或许不排名次，但成功必排名次。<br />
<br />
8. <span>The study certainly is not the life complete. But, sincecontinually life part of - studies also is unable to conquer, what butalso can make? </span><br />
学习并不是人生的全部。但，既然连人生的一部分&mdash;&mdash;学习也无法征服，还能做什么呢？<br />
<br />
9. <span>Please enjoy the pain which is unable to avoid. </span><br />
请享受无法回避的痛苦。<br />
<br />
10. <span>Only has compared to the others early, diligently diligently, canfeel the successful taste. </span><br />
只有比别人更早、更勤奋地努力，才能尝到成功的滋味。<br />
<br />
11.<span> Nobody can casually succeed, it comes from the thoroughself-control and the will. </span><br />
谁也不能随随便便成功，它来自彻底的自我管理和毅力。<br />
<br />
12. <span>The time is passing. </span><br />
时间在流逝。<br />
<br />
13. <span>Now drips the saliva, will become tomorrow the tear. </span><br />
现在淌的哈喇子，将成为明天的眼泪。<br />
<br />
14. <span>The dog equally study, the gentleman equally plays. </span><br />
狗一样地学，绅士一样地玩。<br />
<br />
15. <span>Today does not walk, will have to run tomorrow. </span><br />
今天不走，明天要跑。<br />
<br />
16. <span>The investment future person will be, will be loyal to the realityperson. </span><br />
投资未来的人是，忠于现实的人。<br />
<br />
17.<span> The education level represents the income. </span><br />
教育程度代表收入。<br />
<br />
18. <span>One day, has not been able again to come. </span><br />
<br />
一天过完，不会再来。<br />
<br />
19. <span>Even if the present, the match does not stop changes the page. </span><br />
即使现在，对手也不停地翻动书页。<br />
<br />
20. <span>Has not been difficult, then does not have attains</span><br />
<br />
没有艰辛，便无所获。
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/134848#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 23 Oct 2007 17:09:45 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/134848</link>
        <guid>http://shxiao.javaeye.com/blog/134848</guid>
      </item>
      <item>
        <title>whole-parts</title>
        <author>shxiao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shxiao.javaeye.com">shxiao</a>&nbsp;
          链接：<a href="http://shxiao.javaeye.com/blog/120252" style="color:red;">http://shxiao.javaeye.com/blog/120252</a>&nbsp;
          发表时间: 2007年09月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          整体-部分模式描述的是用一个整体来包装所属部分的模式。<br />
&nbsp;&nbsp; 如何包装大致有3种类型<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1：assembly parts, 把部分集聚在一起，不对部分的类型有任何要求，<br />
&nbsp;&nbsp;&nbsp;&nbsp; 但是部分是相对固定的，一个整体的所属部分不会发生改变的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如一个小车图形由相应的子件构成，其成分相对固定，各个组件关系紧密<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2：container-contents, 整体像容器那样包含部分，允许对部分进行添加，删除操作<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 子件比集聚部分有松散的耦合。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如一个邮政包裹里面可以包含书，衣服等。这些都可以动态的变化<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3：collection-members集合成员类型。要求部分的类型一致，整体平等的对待每一个子件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如集合类型就是这样<br />
&nbsp;整体对外提供一致的接口，处理请求时会1：直接转发给相应的子件2：自己处理<br />
&nbsp;主要封装了对子件的直接访问了，组合子件会产生一个新的行为，
          <br/>
          <span style="color:red;">
            <a href="http://shxiao.javaeye.com/blog/120252#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Sep 2007 14:57:29 +0800</pubDate>
        <link>http://shxiao.javaeye.com/blog/120252</link>
        <guid>http://shxiao.javaeye.com/blog/120252</guid>
      </item>
  </channel>
</rss>