<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>robot_liu</title>
    <description>[color=red]诚信方能成人[/color]</description>
    <link>http://54321765bb.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>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23172" style="color:red;">http://54321765bb.javaeye.com/blog/23172</a>&nbsp;
          发表时间: 2005年06月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          老婆特爱吃水果，一次和老婆往家走，老婆非要买几斤苹果带回去，我说别买了，家里不是还有桔子么。老婆回了一句特噎人：“桔子能吃出苹果味儿来么？！” <br /><br />和同学走在街上，发现地上不知谁掉了一毛钱硬币，同学把它拾起来，我笑他说：“丢不丢人？一毛钱你也捡。”同学回了一句：“这一毛钱要是买‘毒鼠强’，够毒翻你好几回的！” <br /><br />一次跟单位的一个老大哥聊天，谈到歌星，我问他：“周杰伦你应该知道吧？”，老大哥摇了摇头说：“不太熟，没跟他喝过酒。”，我无语。　 <br /><br />上学时，有一次生活费花超支了，便向同寝室的学友借钱，我的同学没说借不借，朝我笑了笑问我说：“你看我的脸干净么？”，我仔细看了看说：“没脏，挺干净的。”，同学笑着说：“我的兜比脸还干净。” <br /><br />一次看球赛，曼联赢了一场比赛，乐得我手舞足蹈，老婆很不理解地说：“干嘛呀？至于么？”，我说：“我兴(姓)奋！”　，老婆毫无表情地看了看我说：“什么时候改姓了？” <br /><br />我家住的小区有两拾垃圾的，经常因为争夺废品口角，早上出门顺便扔垃圾袋，保证是你还没走到垃圾箱，就有其中一个迎上来从你手中接下垃圾袋，甚至你手里拎着还没喝完的饮料瓶，他都会抢上前去问你：“你还要不要了？”。特讨人厌。一次我和邻居路过他们的地盘，上来一位指着 邻居手里还没喝完的可乐瓶子问：“还要不要了？”。我邻居两眼一瞪，说：“你说你的脸啊？！ ”那位灰溜溜地就走了。 <br /><br />表妹失恋，老婆和我去她家看她，她正在发脾气，一张一张地撕纸，遍地纸屑。我说：“不至于吧，纸又没招你，挺好的东西你撕它干嘛？多浪费呀！”，表妹白了我一眼说：“有你的股份啊？！” 　 <br /><br />和好朋友聊天，从过去谈到现在，惋惜当初不用功上学，没有为今天的工作创造良好的环境。 我感叹到：“下辈子我一定要好好读书，再也不能这么庸庸碌碌地活着！”，朋友撇了撇嘴说：“切！下辈子没准儿你托生成狗呐。”，一句话噎得我半天没上来气儿。 <br /><br />我们在一个女同学家聚会，吃饭的时候发现她家的墙上挂着一双草鞋，于是我们就问起来历，她深情的说：“这是我爷爷当年爬雪山过草地时穿过的，他临终前就传给了我。”，正在我们深深缅怀这位老一辈革命家的时候，一同学从饭碗中抬起头来说：“他为什么留给你？你俩脚一样大啊？” <br /><br />有一次去表姐家坐客，9岁的小外甥正在做数学题，表姐在旁边说，这孩子笨得要命，同样的题 换个方法问就不会了，小外甥在那儿气乎乎的说：“这能怨我么？！遗传基因不好！！” <br /><br />其实我说话也挺噎人的，家里有两个切菜板，一个专用切蔬菜水果，一个专用切肉类，老婆总 分不清，经常用切肉类的菜板切水果，我批评她还不服气，说：“那怕什么呀？！我每次用完都洗干净的。”，我说：“该是什么东西就必须干什么用，我买个痰盂天天给你盛饭吃你干么？！我保证干净！”
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23172#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>Tue, 07 Jun 2005 12:51:56 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23172</link>
        <guid>http://54321765bb.javaeye.com/blog/23172</guid>
      </item>
      <item>
        <title>oracle 临时表和动态SQL</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23170" style="color:red;">http://54321765bb.javaeye.com/blog/23170</a>&nbsp;
          发表时间: 2005年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          create or replace procedure sp_tmp_test(v_col1 in varchar2,v_col2 in varchar2)<br />as <br />v_num                  NUMBER;<br />v_char                 varchar2(10);<br />sql_text               varchar2(2000);<br />sql_text1              varchar2(2000);<br />notes                  varchar2(500);<br />p_nError               NUMBER;<br />V_ERROR_MESSAGE        VARCHAR2(500);<br /><br />BEGIN<br />select count(*) into v_num from user_tables where table_name='T_TEMP';<br /><br />--create temporary table<br />execute immediate 'CREATE GLOBAL TEMPORARY TABLE T_TEMP (<br />COL1 VARCHAR2(10),<br />COL2 VARCHAR2(10)<br />) ON COMMIT delete ROWS';<br /><br />--insert data<br />sql_text:='insert into t_temp values(:1,:2)';<br />execute immediate sql_text using v_col1,v_col2;<br />--sql_text1:='select col1 into :1 from t_temp ';<br />--execute immediate sql_text1 using v_num; <br />--select col1 into v_num from t_temp;<br />execute immediate 'select col1 from t_temp' into v_char;<br /><br />dbms_output.put_line(v_char); <br />execute immediate 'delete from t_temp'; <br />commit;<br />execute immediate 'drop table t_temp';<br />EXCEPTION<br />    WHEN OTHERS THEN<br />    execute immediate 'drop table t_temp';<br />    p_nError        := SQLCODE;<br />    V_ERROR_MESSAGE := sqlerrm;<br />    dbms_output.put_line('error: ' || p_nError || ' ' || sqlerrm(p_nError));<br />END;
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23170#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>Mon, 06 Jun 2005 15:44:26 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23170</link>
        <guid>http://54321765bb.javaeye.com/blog/23170</guid>
      </item>
      <item>
        <title>舐犊之情</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23169" style="color:red;">http://54321765bb.javaeye.com/blog/23169</a>&nbsp;
          发表时间: 2005年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这是一个真实的故事。故事发生在西部的青海省，一个极度缺水的沙漠地区。这里，每人每天的用水量严格地限定为三斤，这还得靠驻军从很远的地方运来。日常的饮用、洗漱、洗菜、洗衣、包括喂牲口全都依赖这三斤珍贵的水。<br />人缺水不行，牲畜也一样，渴啊！终于有一天，一头一直被人们认为憨厚、忠实的老牛渴极了，挣脱了缰绳，强行闯入沙漠里唯一的也是运水车必经的公路。终于，运水的军车来了， 老牛以不可思议的识别力，迅速地冲上公路，军车一个紧急刹车戛然而止。老牛沉默地立在车前，任凭驾驶员呵斥驱赶，不肯挪动半步。五分钟过去了，双方依然僵持着。运水的战士以前也碰过牲口拦路索水的情形，但它们都不像这头牛这般倔犟。人和牛就这样耗着，最后造成了堵车，后面的司机开始骂骂咧咧，性急的甚至试图点火驱赶，可老牛不为所动。<br /><br />后来，牛的主人寻来了，恼羞成怒的主人扬起长鞭狠狠地抽打在瘦骨嶙峋的牛背上，牛被打得皮开肉绽、哀哀叫唤，但还是不肯让开。鲜血沁了出来，染红了鞭子，老牛的凄厉哞叫，和着沙漠中阴冷的酷风，显得分外的悲壮。一旁的运水战士哭了，骂骂咧咧的司机也哭了，最后运水的战士说：“就让我违反一次规定吧，我愿意接受一次处分。”他从水车上取出半盆水——正好3斤左右，放在牛面前。<br /><br />出人意料的是，老牛没有喝以死抗争得来的水，而是对着夕阳，仰天长哞，似乎在呼唤什么。不远的沙堆背后跑来一头小牛，受伤的老牛慈爱地看着小牛贪婪地喝完水，伸出舌头舔舔小牛的眼睛，小牛也舔舔老牛的眼睛，静默中，人们看到了母子眼中的泪水。没等主人吆喝，在一片寂静无语中，它们掉转头，慢慢往回走。 <br /><br />二十世纪末的一个晚上，当我从电视里看到这让人揪心的一幕时，我想起了幼时家里的贫穷困窘，想起了我那至今在乡下劳作的苦难的母亲，我和电视机前的许多观众一样，流下了滚滚热泪。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23169#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>Mon, 06 Jun 2005 12:04:19 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23169</link>
        <guid>http://54321765bb.javaeye.com/blog/23169</guid>
      </item>
      <item>
        <title>大表建立索引的注意事项</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23161" style="color:red;">http://54321765bb.javaeye.com/blog/23161</a>&nbsp;
          发表时间: 2005年06月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、注意事项：<br />首先，应当考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据，在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。<br /><br />其次，在对建立索引的时候要对表进行加锁，因此应当注意操作在业务空闲的时候进行。<br /><br />二、性能调整方面：<br />首当其冲的考虑因素便是磁盘I/O。物理上，应当尽量把索引与数据分散到不同的磁盘上（不考虑阵列的情况）。逻辑上，数据表空间与索引表空间分开。这是在建索引时应当遵守的基本准则。<br /><br />其次，我们知道，在建立索引的时候要对表进行全表的扫描工作，因此，应当考虑调大初始化参数db_file_multiblock_read_count的值。一般设置为16或更大。<br /><br />再次，建立索引除了要进行全表扫描外同时还要对数据进行大量的排序操作，因此，应当调整排序区的大小。<br />   9i之前，可以在session级别上加大sort_area_size的大小，比如设置为100m或者更大。<br />   9i以后，如果初始化参数workarea_size_policy的值为TRUE，则排序区从pga_aggregate_target里自动分配获得。<br /><br />最后，建立索引的时候，可以加上nologging选项。以减少在建立索引过程中产生的大量redo，从而提高执行的速度。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23161#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, 01 Jun 2005 18:17:52 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23161</link>
        <guid>http://54321765bb.javaeye.com/blog/23161</guid>
      </item>
      <item>
        <title>Savepoint 和 部分回滚(Partial Rollback)</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23156" style="color:red;">http://54321765bb.javaeye.com/blog/23156</a>&nbsp;
          发表时间: 2005年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Savepoint 和 部分回滚(Partial Rollback)<br /><br />     在SQL和PL/SQL中Savepoint是在一事务范围内的中间标志。经常用于将一个长的事务划分为小的部分。保留点Savepoint可标志长事务中的任何点，允许可回滚该点之后的操作。在应用程序中经常使用Savepoint；例如一过程包含几个函数，在每个函数前可建立一个保留点，如果函数失败，很容易返回到每一个函数开始的情况。在回滚到一个Savepoint之后，该Savepoint之后所获得的数据封锁被释放。为了实现部分回滚可以用带TO Savepoint子句的ROLLBACK语句将事务回滚到指定的位置。<br /><br />例<br />BEGIN <br /><br />INSERT INTO ATM_LOG(who,when,what,where)<br />VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')<br />SAVEPOINT ATM_LOGGED;<br /><br />UPDATE checking<br />SET balance=balance-100<br />RETURN balance INTO new_balance;<br /><br />IF new_balance&lt;0<br />THEN<br />ROLLBACK TO ATM_LOGGED;<br />COMMIT<br />RAISE insufficient_funda;<br />END IF<br /><br />END
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23156#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>Tue, 31 May 2005 17:31:27 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23156</link>
        <guid>http://54321765bb.javaeye.com/blog/23156</guid>
      </item>
      <item>
        <title>TRUNCATE和DELETE有以下几点区别</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23155" style="color:red;">http://54321765bb.javaeye.com/blog/23155</a>&nbsp;
          发表时间: 2005年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          TRUNCATE和DELETE有以下几点区别<br /><br />　　1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销，而TRUNCATE则不会被撤销。<br /><br />　　2、TRUNCATE是一个DDL语言，向其他所有的DDL语言一样，他将被隐式提交，不能对TRUNCATE使用ROLLBACK命令。<br /><br />　　3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时，经过TRUNCATE操作后的表比DELETE操作后的表要快得多。<br /><br />　　4、TRUNCATE不能触发任何DELETE触发器。<br /><br />　　5、不能授予任何人清空他人的表的权限。<br /><br />　　6、当表被清空后表和表的索引讲重新设置成初始大小，而delete则不能。<br /><br />　　7、不能清空父表。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23155#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, 31 May 2005 17:28:25 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23155</link>
        <guid>http://54321765bb.javaeye.com/blog/23155</guid>
      </item>
      <item>
        <title>ODS</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23153" style="color:red;">http://54321765bb.javaeye.com/blog/23153</a>&nbsp;
          发表时间: 2005年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          操作数据存储（Operational Data Store，ODS）集成了当前的而非历史的明细操作数据，以支持操作环境和立即做出的决策。不是所有组织都有 ODS，但是如果他们有的话，ODS 可被当作“记录系统”，这表示它是权威信息的来源。遗留系统和 OLTP 系统将实时地、每小时或每天填充 ODS。数据仓库是组织信息体系结构的组成部分，它包含了历史的、明细的和概要的集成信息来支持决策和填充数据集市。数据仓库中的数据是非易变的，这意味着将周期性地进行更新和刷新并且被用户群体所理解。 数据集市（Data marts）是为满足已定义的用户组或业务领域（Business Area）对于特定业务信息的需求而创建的。它们比数据仓库更小且更关注在数据中构建复杂的业务规则来支持功能强大的分析。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23153#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, 31 May 2005 15:36:50 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23153</link>
        <guid>http://54321765bb.javaeye.com/blog/23153</guid>
      </item>
      <item>
        <title>DW第一帖-定义</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23148" style="color:red;">http://54321765bb.javaeye.com/blog/23148</a>&nbsp;
          发表时间: 2005年05月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          目前，数据仓库一词尚没有一个统一的定义，著名的数据仓库专家W.H.Inmon在其著作《Building the Data Warehouse》一书中给予如下描述：数据仓库（Data Warehouse）是一个面向主题的（Subject Oriented）、集成的（Integrate）、相对稳定的（Non-Volatile）、反映历史变化（Time Variant）的数据集合，用于支持管理决策。对于数据仓库的概念我们可以从两个层次予以理解，首先，数据仓库用于支持决策，面向分析型数据处理，它不同于企业现有的操作型数据库；其次，数据仓库是对多个异构的数据源有效集成，集成后按照主题进行了重组，并包含历史数据，而且存放在数据仓库中的数据一般不再修改。<br /><br />    根据数据仓库概念的含义，数据仓库拥有以下四个特点：<br />     1、面向主题。操作型数据库的数据组织面向事务处理任务，各个业务系统之间各自分离，而数据仓库中的数据是按照一定的主题域进行组织。主题是一个抽象的概念，是指用户使用数据仓库进行决策时所关心的重点方面，一个主题通常与多个操作型信息系统相关。<br /><br />     2、集成的。面向事务处理的操作型数据库通常与某些特定的应用相关，数据库之间相互独立，并且往往是异构的。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的，必须消除源数据中的不一致性，以保证数据仓库内的信息是关于整个企业的一致的全局信息。 <br /><br />     3、相对稳定的。操作型数据库中的数据通常实时更新，数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析之用，所涉及的数据操作主要是数据查询，一旦某个数据进入数据仓库以后，一般情况下将被长期保留，也就是数据仓库中一般有大量的查询操作，但修改和删除操作很少，通常只需要定期的加载、刷新。<br /><br />     4、反映历史变化。操作型数据库主要关心当前某一个时间段内的数据，而数据仓库中的数据通常包含历史信息，系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息，通过这些信息，可以对企业的发展历程和未来趋势做出定量分析和预测。<br />企业数据仓库的建设，是以现有企业业务系统和大量业务数据的积累为基础。数据仓库不是静态的概念，只有把信息及时交给需要这些信息的使用者，供他们做出改善其业务经营的决策，信息才能发挥作用，信息才有意义。而把信息加以整理归纳和重组，并及时提供给相应的管理决策人员，是数据仓库的根本任务。因此，从产业界的角度看，数据仓库建设是一个工程，是一个过程。<br />整个数据仓库系统是一个包含四个层次的体系结构，具体由下图表示。 <br /><img src="http://www.huihoo.com/database/i/a1.jpg" /><br />·数据源：是数据仓库系统的基础，是整个系统的数据源泉。通常包括企业内部信息和外部信息。内部信息包括存放于RDBMS中的各种业务处理数据和各类文档数据。外部信息包括各类法律法规、市场信息和竞争对手的信息等等；<br /><br />·数据的存储与管理：是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库，同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心，则需要从数据仓库的技术特点着手分析。针对现有各业务系统的数据，进行抽取、清理，并有效集成，按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库（通常称为数据集市）。 <br /><br />·OLAP服务器：对分析需要的数据进行有效集成，按多维模型予以组织，以便进行多角度、多层次的分析，并发现趋势。其具体实现可以分为：ROLAP、MOLAP和HOLAP。ROLAP基本数据和聚合数据均存放在RDBMS之中；MOLAP基本数据和聚合数据均存放于多维数据库中；HOLAP基本数据存放于RDBMS之中，聚合数据存放于多维数据库中。<br /><br />·前端工具：主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。其中数据分析工具主要针对OLAP服务器，报表工具、数据挖掘工具主要针对数据仓库。<br />[/img]
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23148#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, 30 May 2005 22:54:34 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23148</link>
        <guid>http://54321765bb.javaeye.com/blog/23148</guid>
      </item>
      <item>
        <title>oracle时间日期操作</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23141" style="color:red;">http://54321765bb.javaeye.com/blog/23141</a>&nbsp;
          发表时间: 2005年05月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          sysdate+(5/24/60/60) 在系统时间基础上延迟5秒<br />sysdate+5/24/60 在系统时间基础上延迟5分钟<br />sysdate+5/24 在系统时间基础上延迟5小时<br />sysdate+5 在系统时间基础上延迟5天<br />add_months(sysdate,-5) 在系统时间基础上延迟5月<br />add_months(sysdate,-5*12) 在系统时间基础上延迟5年<br /><br /><br />上月末的日期：select last_day(add_months(sysdate, -1)) from dual;<br />本月的最后一秒：select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual<br />本周星期一的日期：select trunc(sysdate,'day')+1 from dual<br /><br /><br />年初至今的天数：select ceil(sysdate - trunc(sysdate, 'year')) from dual;<br /><br />今天是今年的第几周 :select to_char(sysdate,'fmww') from dual<br />今天是本月的第几周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual<br /><br />本月的天数<br />SELECT to_char(last_day(SYSDATE),'dd') days FROM dual<br />今年的天数 <br />select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual<br />下个星期一的日期<br />SELECT Next_day(SYSDATE,'monday') FROM dual<br /><br /><br />＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br /><br />--计算工作日方法<br /><br />create table t(s date,e date);<br />alter session set nls_date_format = 'yyyy-mm-dd';<br />insert into t values('2003-03-01','2003-03-03');<br />insert into t values('2003-03-02','2003-03-03');<br />insert into t values('2003-03-07','2003-03-08');<br />insert into t values('2003-03-07','2003-03-09');<br />insert into t values('2003-03-05','2003-03-07');<br />insert into t values('2003-02-01','2003-03-31');<br /><br />-- 这里假定日期都是不带时间的，否则在所有日期前加trunc即可。<br />select s,e,e-s+1 total_days, <br />trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7)),'0','')) work_days <br />from t;<br /><br />-- drop table t;<br /><br />引此：http://www.itpub.net/showthread.php?s=1635506cd5f48b1bc3adbe4cde96f227&threadid=104060&perpage=15&pagenumber=1<br /><br /><br />================================================================================<br /><br />判断当前时间是上午下午还是晚上<br /><br />SELECT CASE <br />WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 6 AND 11 THEN '上午'<br />WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 11 AND 17 THEN '下午'<br />WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 17 AND 21 THEN '晚上'<br />END<br />FROM dual;<br /><br /><br />================================================================================<br /><br />Oracle 中的一些处理日期<br /><br /><br /><br />将数字转换为任意时间格式.如秒:需要转换为天/小时<br />SELECT to_char(floor(TRUNC(936000/(60*60))/24))||'天'||to_char(mod(TRUNC(936000/(60*60)),24))||'小时'  FROM DUAL<br /><br /><br />TO_DATE格式      <br />Day:      <br />dd  number  12      <br />dy  abbreviated  fri      <br />day  spelled  out  friday      <br />ddspth  spelled  out,  ordinal  twelfth      <br />Month:      <br />mm  number  03      <br />mon  abbreviated  mar      <br />month  spelled  out  march      <br />Year:      <br />yy  two  digits  98      <br />yyyy  four  digits  1998      <br /> <br />24小时格式下时间范围为：  0:00:00  -  23:59:59....      <br />12小时格式下时间范围为：  1:00:00  -  12:59:59  ....      <br />1.      <br />日期和字符转换函数用法（to_date,to_char）      <br /> <br />2.      <br />select  to_char(  to_date(222,'J'),'Jsp')  from  dual      <br /> <br />显示Two  Hundred  Twenty-Two      <br /> <br />3.      <br />求某天是星期几      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day')  from  dual;      <br />星期一      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;       <br />monday      <br />设置日期语言      <br />ALTER  SESSION  SET  NLS_DATE_LANGUAGE='AMERICAN';      <br />也可以这样      <br />TO_DATE  ('2002-08-26',  'YYYY-mm-dd',  'NLS_DATE_LANGUAGE  =  American')      <br /> <br />4.      <br />两个日期间的天数      <br />select  floor(sysdate  -  to_date('20020405','yyyymmdd'))  from  dual;      <br /> <br />5.  时间为null的用法      <br />select  id,  active_date  from  table1      <br />UNION      <br />select  1,  TO_DATE(null)  from  dual;      <br /> <br />注意要用TO_DATE(null)      <br /> <br />6.      <br />a_date  between  to_date('20011201','yyyymmdd')  and  to_date('20011231','yyyymmdd')      <br />那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      <br />所以，当时间需要精确的时候，觉得to_char还是必要的      <br />7.  日期格式冲突问题      <br />输入的格式要看你安装的ORACLE字符集的类型,  比如:  US7ASCII,  date格式的类型就是:  '01-Jan-01'      <br />alter  system  set  NLS_DATE_LANGUAGE  =  American      <br />alter  session  set  NLS_DATE_LANGUAGE  =  American      <br />或者在to_date中写      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;      <br />注意我这只是举了NLS_DATE_LANGUAGE，当然还有很多，      <br />可查看      <br />select  *  from  nls_session_parameters      <br />select  *  from  V$NLS_PARAMETERS      <br /> <br />8.      <br />select  count(*)      <br />from  (  select  rownum-1  rnum      <br />from  all_objects      <br />where  rownum  &lt;=  to_date('2002-02-28','yyyy-mm-dd')  -  to_date('2002-      <br />02-01','yyyy-mm-dd')+1      <br />)      <br />where  to_char(  to_date('2002-02-01','yyyy-mm-dd')+rnum-1,  'D'  )      <br />not      <br />in  (  '1',  '7'  )      <br /> <br />查找2002-02-28至2002-02-01间除星期一和七的天数      <br />在前后分别调用DBMS_UTILITY.GET_TIME,  让后将结果相减(得到的是1/100秒,  而不是毫秒).      <br /> <br />9.      <br />select  months_between(to_date('01-31-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br />1      <br /> <br />select  months_between(to_date('02-01-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br /> <br />1.03225806451613      <br />10.  Next_day的用法      <br />Next_day(date,  day)      <br /> <br />Monday-Sunday,  for  format  code  DAY      <br />Mon-Sun,  for  format  code  DY      <br />1-7,  for  format  code  D      <br /> <br />11      <br />select  to_char(sysdate,'hh:mi:ss')  TIME  from  all_objects      <br />注意：第一条记录的TIME  与最后一行是一样的      <br />可以建立一个函数来处理这个问题      <br />create  or  replace  function  sys_date  return  date  is      <br />begin      <br />return  sysdate;      <br />end;      <br /> <br />select  to_char(sys_date,'hh:mi:ss')  from  all_objects;      <br />12.      <br />获得小时数      <br /> <br />SELECT  EXTRACT(HOUR  FROM  TIMESTAMP  '2001-02-16  2:38:40')  from  offer      <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH')      <br />--------------------  ---------------------      <br />2003-10-13  19:35:21  07      <br /> <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh24')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH24')      <br />--------------------  -----------------------      <br />2003-10-13  19:35:21  19      <br /> <br />获取年月日与此类似      <br />13.      <br />年月日的处理      <br />select  older_date,      <br />newer_date,      <br />years,      <br />months,      <br />abs(      <br />trunc(      <br />newer_date-      <br />add_months(  older_date,years*12+months  )      <br />)      <br />)  days      <br />from  (  select      <br />trunc(months_between(  newer_date,  older_date  )/12)  YEARS,      <br />mod(trunc(months_between(  newer_date,  older_date  )),      <br />12  )  MONTHS,      <br />newer_date,      <br />older_date      <br />from  (  select  hiredate  older_date,      <br />add_months(hiredate,rownum)+rownum  newer_date      <br />from  emp  )      <br />)      <br /> <br />14.      <br />处理月份天数不定的办法      <br />select  to_char(add_months(last_day(sysdate)  +1,  -2),  'yyyymmdd'),last_day(sysdate)  from  dual      <br /> <br />16.      <br />找出今年的天数      <br />select  add_months(trunc(sysdate,'year'),  12)  -  trunc(sysdate,'year')  from  dual      <br /> <br />闰年的处理方法      <br />to_char(  last_day(  to_date('02'    &amp;  &amp;  :year,'mmyyyy')  ),  'dd'  )      <br />如果是28就不是闰年      <br /> <br />17.      <br />yyyy与rrrr的区别      <br />'YYYY99  TO_C      <br />-------  ----      <br />yyyy  99  0099      <br />rrrr  99  1999      <br />yyyy  01  0001      <br />rrrr  01  2001      <br /> <br />18.不同时区的处理      <br />select  to_char(  NEW_TIME(  sysdate,  'GMT','EST'),  'dd/mm/yyyy  hh:mi:ss')  ,sysdate      <br />from  dual;      <br /> <br />19.      <br />5秒钟一个间隔      <br />Select  TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300)  *  300,'SSSSS')  ,TO_CHAR(sysdate,'SSSSS')      <br />from  dual      <br /> <br />2002-11-1  9:55:00  35786      <br />SSSSS表示5位秒数      <br /> <br />20.      <br />一年的第几天      <br />select  TO_CHAR(SYSDATE,'DDD'),sysdate  from  dual      <br />310  2002-11-6  10:03:51      <br /> <br />21.计算小时,分,秒,毫秒      <br />select      <br />Days,      <br />A,      <br />TRUNC(A*24)  Hours,      <br />TRUNC(A*24*60  -  60*TRUNC(A*24))  Minutes,      <br />TRUNC(A*24*60*60  -  60*TRUNC(A*24*60))  Seconds,      <br />TRUNC(A*24*60*60*100  -  100*TRUNC(A*24*60*60))  mSeconds      <br />from      <br />(      <br />select      <br />trunc(sysdate)  Days,      <br />sysdate  -  trunc(sysdate)  A      <br />from  dual      <br />)      <br /> <br /> <br /> <br />select  *  from  tabname      <br />order  by  decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');      <br /> <br />//      <br />floor((date2-date1)  /365)  作为年      <br />floor((date2-date1,  365)  /30)  作为月      <br />mod(mod(date2-date1,  365),  30)作为日.      <br />23.next_day函数      <br />next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。      <br />1  2  3  4  5  6  7      <br />日  一  二  三  四  五  六    <br /> <br />---------------------------------------------------------------  <br /> <br />select    (sysdate-to_date('2003-12-03  12:55:45','yyyy-mm-dd  hh24:mi:ss'))*24*60*60  from  dual  <br />日期  返回的是天  然后  转换为ss <br /><br /><br />转此：http://www.onlinedatabase.cn/leadbbs/Announce/Announce.asp?BoardID=42&ID=1769<br /><br /><br />将数字转换为任意时间格式.如秒:需要转换为天/小时<br />SELECT to_char(floor(TRUNC(936000/(60*60))/24))||'天'||to_char(mod(TRUNC(936000/(60*60)),24))||'小时'  FROM DUAL<br /><br /><br />TO_DATE格式      <br />Day:      <br />dd  number  12      <br />dy  abbreviated  fri      <br />day  spelled  out  friday      <br />ddspth  spelled  out,  ordinal  twelfth      <br />Month:      <br />mm  number  03      <br />mon  abbreviated  mar      <br />month  spelled  out  march      <br />Year:      <br />yy  two  digits  98      <br />yyyy  four  digits  1998      <br /> <br />24小时格式下时间范围为：  0:00:00  -  23:59:59....      <br />12小时格式下时间范围为：  1:00:00  -  12:59:59  ....      <br />1.      <br />日期和字符转换函数用法（to_date,to_char）      <br /> <br />2.      <br />select  to_char(  to_date(222,'J'),'Jsp')  from  dual      <br /> <br />显示Two  Hundred  Twenty-Two      <br /> <br />3.      <br />求某天是星期几      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day')  from  dual;      <br />星期一      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;       <br />monday      <br />设置日期语言      <br />ALTER  SESSION  SET  NLS_DATE_LANGUAGE='AMERICAN';      <br />也可以这样      <br />TO_DATE  ('2002-08-26',  'YYYY-mm-dd',  'NLS_DATE_LANGUAGE  =  American')      <br /> <br />4.      <br />两个日期间的天数      <br />select  floor(sysdate  -  to_date('20020405','yyyymmdd'))  from  dual;      <br /> <br />5.  时间为null的用法      <br />select  id,  active_date  from  table1      <br />UNION      <br />select  1,  TO_DATE(null)  from  dual;      <br /> <br />注意要用TO_DATE(null)      <br /> <br />6.      <br />a_date  between  to_date('20011201','yyyymmdd')  and  to_date('20011231','yyyymmdd')      <br />那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      <br />所以，当时间需要精确的时候，觉得to_char还是必要的      <br />7.  日期格式冲突问题      <br />输入的格式要看你安装的ORACLE字符集的类型,  比如:  US7ASCII,  date格式的类型就是:  '01-Jan-01'      <br />alter  system  set  NLS_DATE_LANGUAGE  =  American      <br />alter  session  set  NLS_DATE_LANGUAGE  =  American      <br />或者在to_date中写      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;      <br />注意我这只是举了NLS_DATE_LANGUAGE，当然还有很多，      <br />可查看      <br />select  *  from  nls_session_parameters      <br />select  *  from  V$NLS_PARAMETERS      <br /> <br />8.      <br />select  count(*)      <br />from  (  select  rownum-1  rnum      <br />from  all_objects      <br />where  rownum  &lt;=  to_date('2002-02-28','yyyy-mm-dd')  -  to_date('2002-      <br />02-01','yyyy-mm-dd')+1      <br />)      <br />where  to_char(  to_date('2002-02-01','yyyy-mm-dd')+rnum-1,  'D'  )      <br />not      <br />in  (  '1',  '7'  )      <br /> <br />查找2002-02-28至2002-02-01间除星期一和七的天数      <br />在前后分别调用DBMS_UTILITY.GET_TIME,  让后将结果相减(得到的是1/100秒,  而不是毫秒).      <br /> <br />9.      <br />select  months_between(to_date('01-31-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br />1      <br /> <br />select  months_between(to_date('02-01-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br /> <br />1.03225806451613      <br />10.  Next_day的用法      <br />Next_day(date,  day)      <br /> <br />Monday-Sunday,  for  format  code  DAY      <br />Mon-Sun,  for  format  code  DY      <br />1-7,  for  format  code  D      <br /> <br />11      <br />select  to_char(sysdate,'hh:mi:ss')  TIME  from  all_objects      <br />注意：第一条记录的TIME  与最后一行是一样的      <br />可以建立一个函数来处理这个问题      <br />create  or  replace  function  sys_date  return  date  is      <br />begin      <br />return  sysdate;      <br />end;      <br /> <br />select  to_char(sys_date,'hh:mi:ss')  from  all_objects;      <br />12.      <br />获得小时数      <br /> <br />SELECT  EXTRACT(HOUR  FROM  TIMESTAMP  '2001-02-16  2:38:40')  from  offer      <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH')      <br />--------------------  ---------------------      <br />2003-10-13  19:35:21  07      <br /> <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh24')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH24')      <br />--------------------  -----------------------      <br />2003-10-13  19:35:21  19      <br /> <br />获取年月日与此类似      <br />13.      <br />年月日的处理      <br />select  older_date,      <br />newer_date,      <br />years,      <br />months,      <br />abs(      <br />trunc(      <br />newer_date-      <br />add_months(  older_date,years*12+months  )      <br />)      <br />)  days      <br />from  (  select      <br />trunc(months_between(  newer_date,  older_date  )/12)  YEARS,      <br />mod(trunc(months_between(  newer_date,  older_date  )),      <br />12  )  MONTHS,      <br />newer_date,      <br />older_date      <br />from  (  select  hiredate  older_date,      <br />add_months(hiredate,rownum)+rownum  newer_date      <br />from  emp  )      <br />)      <br /> <br />14.      <br />处理月份天数不定的办法      <br />select  to_char(add_months(last_day(sysdate)  +1,  -2),  'yyyymmdd'),last_day(sysdate)  from  dual      <br /> <br />16.      <br />找出今年的天数      <br />select  add_months(trunc(sysdate,'year'),  12)  -  trunc(sysdate,'year')  from  dual      <br /> <br />闰年的处理方法      <br />to_char(  last_day(  to_date('02'    &amp;  &amp;  :year,'mmyyyy')  ),  'dd'  )      <br />如果是28就不是闰年      <br /> <br />17.      <br />yyyy与rrrr的区别      <br />'YYYY99  TO_C      <br />-------  ----      <br />yyyy  99  0099      <br />rrrr  99  1999      <br />yyyy  01  0001      <br />rrrr  01  2001      <br /> <br />18.不同时区的处理      <br />select  to_char(  NEW_TIME(  sysdate,  'GMT','EST'),  'dd/mm/yyyy  hh:mi:ss')  ,sysdate      <br />from  dual;      <br /> <br />19.      <br />5秒钟一个间隔      <br />Select  TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300)  *  300,'SSSSS')  ,TO_CHAR(sysdate,'SSSSS')      <br />from  dual      <br /> <br />2002-11-1  9:55:00  35786      <br />SSSSS表示5位秒数      <br /> <br />20.      <br />一年的第几天      <br />select  TO_CHAR(SYSDATE,'DDD'),sysdate  from  dual      <br />310  2002-11-6  10:03:51      <br /> <br />21.计算小时,分,秒,毫秒      <br />select      <br />Days,      <br />A,      <br />TRUNC(A*24)  Hours,      <br />TRUNC(A*24*60  -  60*TRUNC(A*24))  Minutes,      <br />TRUNC(A*24*60*60  -  60*TRUNC(A*24*60))  Seconds,      <br />TRUNC(A*24*60*60*100  -  100*TRUNC(A*24*60*60))  mSeconds      <br />from      <br />(      <br />select      <br />trunc(sysdate)  Days,      <br />sysdate  -  trunc(sysdate)  A      <br />from  dual      <br />)      <br /> <br /> <br /> <br />select  *  from  tabname      <br />order  by  decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');      <br /> <br />//      <br />floor((date2-date1)  /365)  作为年      <br />floor((date2-date1,  365)  /30)  作为月      <br />mod(mod(date2-date1,  365),  30)作为日.      <br />23.next_day函数      <br />next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。      <br />1  2  3  4  5  6  7      <br />日  一  二  三  四  五  六    <br /> <br />---------------------------------------------------------------  <br /> <br />select    (sysdate-to_date('2003-12-03  12:55:45','yyyy-mm-dd  hh24:mi:ss'))*24*60*60  from  dual  <br />日期  返回的是天  然后  转换为ss <br /><br /><br />转此：http://www.onlinedatabase.cn/leadbbs/Announce/Announce.asp?BoardID=42&ID=1769<br /><br /><br />将数字转换为任意时间格式.如秒:需要转换为天/小时<br />SELECT to_char(floor(TRUNC(936000/(60*60))/24))||'天'||to_char(mod(TRUNC(936000/(60*60)),24))||'小时'  FROM DUAL<br /><br /><br />TO_DATE格式      <br />Day:      <br />dd  number  12      <br />dy  abbreviated  fri      <br />day  spelled  out  friday      <br />ddspth  spelled  out,  ordinal  twelfth      <br />Month:      <br />mm  number  03      <br />mon  abbreviated  mar      <br />month  spelled  out  march      <br />Year:      <br />yy  two  digits  98      <br />yyyy  four  digits  1998      <br /> <br />24小时格式下时间范围为：  0:00:00  -  23:59:59....      <br />12小时格式下时间范围为：  1:00:00  -  12:59:59  ....      <br />1.      <br />日期和字符转换函数用法（to_date,to_char）      <br /> <br />2.      <br />select  to_char(  to_date(222,'J'),'Jsp')  from  dual      <br /> <br />显示Two  Hundred  Twenty-Two      <br /> <br />3.      <br />求某天是星期几      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day')  from  dual;      <br />星期一      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;       <br />monday      <br />设置日期语言      <br />ALTER  SESSION  SET  NLS_DATE_LANGUAGE='AMERICAN';      <br />也可以这样      <br />TO_DATE  ('2002-08-26',  'YYYY-mm-dd',  'NLS_DATE_LANGUAGE  =  American')      <br /> <br />4.      <br />两个日期间的天数      <br />select  floor(sysdate  -  to_date('20020405','yyyymmdd'))  from  dual;      <br /> <br />5.  时间为null的用法      <br />select  id,  active_date  from  table1      <br />UNION      <br />select  1,  TO_DATE(null)  from  dual;      <br /> <br />注意要用TO_DATE(null)      <br /> <br />6.      <br />a_date  between  to_date('20011201','yyyymmdd')  and  to_date('20011231','yyyymmdd')      <br />那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      <br />所以，当时间需要精确的时候，觉得to_char还是必要的      <br />7.  日期格式冲突问题      <br />输入的格式要看你安装的ORACLE字符集的类型,  比如:  US7ASCII,  date格式的类型就是:  '01-Jan-01'      <br />alter  system  set  NLS_DATE_LANGUAGE  =  American      <br />alter  session  set  NLS_DATE_LANGUAGE  =  American      <br />或者在to_date中写      <br />select  to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE  =  American')  from  dual;      <br />注意我这只是举了NLS_DATE_LANGUAGE，当然还有很多，      <br />可查看      <br />select  *  from  nls_session_parameters      <br />select  *  from  V$NLS_PARAMETERS      <br /> <br />8.      <br />select  count(*)      <br />from  (  select  rownum-1  rnum      <br />from  all_objects      <br />where  rownum  &lt;=  to_date('2002-02-28','yyyy-mm-dd')  -  to_date('2002-      <br />02-01','yyyy-mm-dd')+1      <br />)      <br />where  to_char(  to_date('2002-02-01','yyyy-mm-dd')+rnum-1,  'D'  )      <br />not      <br />in  (  '1',  '7'  )      <br /> <br />查找2002-02-28至2002-02-01间除星期一和七的天数      <br />在前后分别调用DBMS_UTILITY.GET_TIME,  让后将结果相减(得到的是1/100秒,  而不是毫秒).      <br /> <br />9.      <br />select  months_between(to_date('01-31-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br />1      <br /> <br />select  months_between(to_date('02-01-1999','MM-DD-YYYY'),      <br />to_date('12-31-1998','MM-DD-YYYY'))  "MONTHS"  FROM  DUAL;      <br /> <br />1.03225806451613      <br />10.  Next_day的用法      <br />Next_day(date,  day)      <br /> <br />Monday-Sunday,  for  format  code  DAY      <br />Mon-Sun,  for  format  code  DY      <br />1-7,  for  format  code  D      <br /> <br />11      <br />select  to_char(sysdate,'hh:mi:ss')  TIME  from  all_objects      <br />注意：第一条记录的TIME  与最后一行是一样的      <br />可以建立一个函数来处理这个问题      <br />create  or  replace  function  sys_date  return  date  is      <br />begin      <br />return  sysdate;      <br />end;      <br /> <br />select  to_char(sys_date,'hh:mi:ss')  from  all_objects;      <br />12.      <br />获得小时数      <br /> <br />SELECT  EXTRACT(HOUR  FROM  TIMESTAMP  '2001-02-16  2:38:40')  from  offer      <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH')      <br />--------------------  ---------------------      <br />2003-10-13  19:35:21  07      <br /> <br />SQL&gt;  select  sysdate  ,to_char(sysdate,'hh24')  from  dual;      <br /> <br />SYSDATE  TO_CHAR(SYSDATE,'HH24')      <br />--------------------  -----------------------      <br />2003-10-13  19:35:21  19      <br /> <br />获取年月日与此类似      <br />13.      <br />年月日的处理      <br />select  older_date,      <br />newer_date,      <br />years,      <br />months,      <br />abs(      <br />trunc(      <br />newer_date-      <br />add_months(  older_date,years*12+months  )      <br />)      <br />)  days      <br />from  (  select      <br />trunc(months_between(  newer_date,  older_date  )/12)  YEARS,      <br />mod(trunc(months_between(  newer_date,  older_date  )),      <br />12  )  MONTHS,      <br />newer_date,      <br />older_date      <br />from  (  select  hiredate  older_date,      <br />add_months(hiredate,rownum)+rownum  newer_date      <br />from  emp  )      <br />)      <br /> <br />14.      <br />处理月份天数不定的办法      <br />select  to_char(add_months(last_day(sysdate)  +1,  -2),  'yyyymmdd'),last_day(sysdate)  from  dual      <br /> <br />16.      <br />找出今年的天数      <br />select  add_months(trunc(sysdate,'year'),  12)  -  trunc(sysdate,'year')  from  dual      <br /> <br />闰年的处理方法      <br />to_char(  last_day(  to_date('02'    &amp;  &amp;  :year,'mmyyyy')  ),  'dd'  )      <br />如果是28就不是闰年      <br /> <br />17.      <br />yyyy与rrrr的区别      <br />'YYYY99  TO_C      <br />-------  ----      <br />yyyy  99  0099      <br />rrrr  99  1999      <br />yyyy  01  0001      <br />rrrr  01  2001      <br /> <br />18.不同时区的处理      <br />select  to_char(  NEW_TIME(  sysdate,  'GMT','EST'),  'dd/mm/yyyy  hh:mi:ss')  ,sysdate      <br />from  dual;      <br /> <br />19.      <br />5秒钟一个间隔      <br />Select  TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300)  *  300,'SSSSS')  ,TO_CHAR(sysdate,'SSSSS')      <br />from  dual      <br /> <br />2002-11-1  9:55:00  35786      <br />SSSSS表示5位秒数      <br /> <br />20.      <br />一年的第几天      <br />select  TO_CHAR(SYSDATE,'DDD'),sysdate  from  dual      <br />310  2002-11-6  10:03:51      <br /> <br />21.计算小时,分,秒,毫秒      <br />select      <br />Days,      <br />A,      <br />TRUNC(A*24)  Hours,      <br />TRUNC(A*24*60  -  60*TRUNC(A*24))  Minutes,      <br />TRUNC(A*24*60*60  -  60*TRUNC(A*24*60))  Seconds,      <br />TRUNC(A*24*60*60*100  -  100*TRUNC(A*24*60*60))  mSeconds      <br />from      <br />(      <br />select      <br />trunc(sysdate)  Days,      <br />sysdate  -  trunc(sysdate)  A      <br />from  dual      <br />)      <br /> <br /> <br /> <br />select  *  from  tabname      <br />order  by  decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');      <br /> <br />//      <br />floor((date2-date1)  /365)  作为年      <br />floor((date2-date1,  365)  /30)  作为月      <br />mod(mod(date2-date1,  365),  30)作为日.      <br />23.next_day函数      <br />next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。      <br />1  2  3  4  5  6  7      <br />日  一  二  三  四  五  六    <br /> <br />---------------------------------------------------------------  <br /> <br />select    (sysdate-to_date('2003-12-03  12:55:45','yyyy-mm-dd  hh24:mi:ss'))*24*60*60  from  dual  <br />日期  返回的是天  然后  转换为ss
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23141#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, 26 May 2005 16:44:03 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23141</link>
        <guid>http://54321765bb.javaeye.com/blog/23141</guid>
      </item>
      <item>
        <title>获得上个月和这个月的第一天和最后一天</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23128" style="color:red;">http://54321765bb.javaeye.com/blog/23128</a>&nbsp;
          发表时间: 2005年05月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          SELECT<br />Trunc(Trunc(SYSDATE,'MONTH')-1,'MONTH') First_Day_Last_Month,<br />Trunc(SYSDATE,'MONTH')-1/86400 Last_Day_Last_Month,<br />Trunc(SYSDATE,'MONTH') First_Day_Cur_Month,<br />LAST_DAY(Trunc(SYSDATE,'MONTH'))+1-1/86400 Last_Day_Cur_Month<br />FROM dual<br />;
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23128#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, 24 May 2005 17:11:23 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23128</link>
        <guid>http://54321765bb.javaeye.com/blog/23128</guid>
      </item>
      <item>
        <title>老歌</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23098" style="color:red;">http://54321765bb.javaeye.com/blog/23098</a>&nbsp;
          发表时间: 2005年05月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果失去是苦，你还怕不怕付出？<br />如果坠落是苦，你还要不要幸福？<br />如果迷乱是苦，再开始还是结束？<br />如果追求是苦，这是坚强还是执迷不悟？<br /><br />如果分离是苦，你要把苦向谁诉？<br />如果承诺是苦，真情要不要流露？<br />如果痴心是苦，难道爱本是错误？<br />如果相爱是苦，这世上的真情它在何处？<br /><br />好多事情总是后来才看清楚，<br />然而我已经找不到来时的路，<br />好多事情当时一点也不觉得苦，<br />就算是苦我想我也不会在乎。<br />好多事情总是后来才看清楚，<br />然而我已经找不到来时的路，<br />好多事情当时一点也不觉得苦，<br />就算是苦我想我也不在乎。<br /><br />失去不苦，苦的是一直付出却从不得。<br />坠落不苦，苦的是尝到幸福却即刻坠落，<br />迷乱不苦，苦的是没有开始，没有结果，<br />追求不苦，苦的是不够坚强，不够执迷不悟，<br /><br /><br />分离不苦，苦的是不再倾诉，<br />承诺不苦，苦的是对真诚不置可否，<br />痴心不苦，苦的是无暇自顾，<br />相爱不苦，苦的是彼此相爱却真心不吐。<br /><br />当时最苦，所以记得这一路受过的罪，流过的泪，和难得的美。<br />如果我苦能换来你的幸福，<br />我宁愿一苦再苦……
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23098#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, 16 May 2005 14:51:46 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23098</link>
        <guid>http://54321765bb.javaeye.com/blog/23098</guid>
      </item>
      <item>
        <title>如何追MM</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23060" style="color:red;">http://54321765bb.javaeye.com/blog/23060</a>&nbsp;
          发表时间: 2005年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在java版看见了这篇文章，作者以轻松的语言比喻了java的32种模式，有很好的启发作用，但可惜没有给出具体的意思，我就在后边加上了：）这些都是最简单的介绍，要学习的话建议你看一下《Java与模式》这本书。 <br />创建型模式<br /><br />1、FACTORY—追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯德基，只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory<br /><br />工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向客户端提供。<br /><br />2、BUILDER—MM最爱听的就是“我爱你”这句话了，见到不同地方的MM,要能够用她们的方言跟她说这句话哦，我有一个多种语言翻译机，上面每种语言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出“我爱你”这句话了，国外的MM也可以轻松搞掂，这就是我的“我爱你”builder。（这一定比美军在伊拉克用的翻译机好卖）<br /><br />建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。<br /><br />3、FACTORY METHOD—请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory Method模式，带着MM到服务员那儿，说“要一个汉堡”，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。<br /><br />工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。<br /><br />4、PROTOTYPE—跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是我的情话prototype了。（100块钱一份，你要不要）<br /><br />原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。<br /><br />5、SINGLETON—俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道“老公”，都是指的同一个人，那就是我(刚才做了个梦啦，哪有这么好的事)<br /><br />单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。<br /><br />结构型模式<br /><br />6、ADAPTER—在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我)<br /><br />适配器（变压器）模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。<br /><br />7、BRIDGE—早上碰到MM，要说早上好，晚上碰到MM，要说晚上好；碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型，要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题，自己用BRIDGE组合一下不就行了<br /><br />桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。<br /><br />8、COMPOSITE—Mary今天过生日。“我过生日，你要送我一件礼物。”“嗯，好吧，去商店，你自己挑。”“这件T恤挺漂亮，买，这条裙子好看，买，这个包也不错，买。”“喂，买了三件了呀，我只答应送一件礼物的哦。”“什么呀，T恤加裙子加包包，正好配成一套呀，小姐，麻烦你包起来。”“……”，MM都会用Composite模式了，你会了没有？<br /><br />合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。<br /><br />9、DECORATOR—Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个月伙食费肯定玩完，拿出我去年在华山顶上照的照片，在背面写上“最好的的礼物，就是爱你的Fita”，再到街上礼品店买了个像框（卖礼品的MM也很漂亮哦），再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗？<br /><br />装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。<br /><br />10、FACADE—我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出来的照片才专业，但MM可不懂这些，教了半天也不会。幸好相机有Facade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样MM也可以用这个相机给我拍张照片了。<br /><br />    门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。<br /><br />11、FLYWEIGHT—每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常用的句子存在手机里，要用的时候，直接拿出来，在前面加上MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名字就是提取出来的外部特征，根据上下文情况使用。<br /><br />    享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。<br /><br />12、PROXY—跟MM在网上聊天，一开头总是“hi,你好”,“你从哪儿来呀？”“你多大了？”“身高多少呀？”这些话，真烦人，写个程序做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。<br /><br />    代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不能够创建被代理对象，被代理对象必须有系统的其他角色代为创建并传入。<br /><br />行为模式<br /><br />13、CHAIN OF RESPONSIBLEITY—晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上“Hi,可以做我的女朋友吗？如果不愿意请向前传”，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处女呀，快跑!<br /><br />   责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接<br /><br />    起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求，系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。<br /><br />14、COMMAND—俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间传送信息，她对我有什么指示，就写一张纸条让她弟弟带给我。这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说：“我同时给我姐姐三个男朋友送COMMAND，就数你最小气，才请我吃面。”，:-(<br /><br />    命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开，委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收，以及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。<br /><br />15、INTERPRETER—俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只要做一个Interpreter，照着上面的脚本执行就可以了。<br /><br />    解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象都有一个解释方法，代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。<br /><br /> <br /><br />16、ITERATOR—我爱上了Mary，不顾一切的向她求婚。<br /><br />          Mary：“想要我跟你结婚，得答应我的条件”<br /><br />          我：“什么条件我都答应，你说吧”<br /><br />          Mary：“我看上了那个一克拉的钻石”<br /><br />          我：“我买，我买，还有吗？”<br /><br />          Mary：“我看上了湖边的那栋别墅”<br /><br />          我：“我买，我买，还有吗？”<br /><br />          Mary：“你的小弟弟必须要有50cm长”<br /><br />          我脑袋嗡的一声，坐在椅子上，一咬牙：“我剪，我剪，还有吗？”<br /><br />          ……<br /><br />    迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集，聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。<br /><br />17、MEDIATOR—四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。<br /><br />    调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时，不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。<br /><br />18、MEMENTO—同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。<br /><br />    备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。<br /><br />19、OBSERVER—想知道咱们公司最新MM情报吗？加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知我们，直接发布给邮件组，我们作为订阅者（观察者）就可以及时收到情报啦<br /><br />    观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时，会通知所有观察者对象，使他们能够自动更新自己。<br /><br />20、STATE—跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比如你约她今天晚上去看电影，对你没兴趣的MM就会说“有事情啦”，对你不讨厌但还没喜欢上的MM就会说“好啊，不过可以带上我同事么？”，已经喜欢上你的MM就会说“几点钟？看完电影再去泡吧怎么样？”，当然你看电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。<br /><br />    状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子类。<br /><br />21、STRATEGY—跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。<br /><br />    策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中提供。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。<br /><br />22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗？女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具体实现)；<br /><br />    模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现，然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而将逻辑的细节留给具体的子类去实现。<br /><br />23、VISITOR—情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都要针对她个人的特点，每张卡片也要根据个人的特点来挑，我一个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点选一束花，让礼品店老板也根据每个人特点选一张卡，这样就轻松多了；<br /><br />    访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话，接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统，它把数据结构和作用于结构上的操作之间的耦合解脱开，使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易，就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中，而不是分散到一个个的节点类中。当使用访问者模式时，要将尽可能多的对象浏览逻辑放在访问者类中，而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23060#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>Tue, 26 Apr 2005 17:38:06 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23060</link>
        <guid>http://54321765bb.javaeye.com/blog/23060</guid>
      </item>
      <item>
        <title>关于string的split</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/23052" style="color:red;">http://54321765bb.javaeye.com/blog/23052</a>&nbsp;
          发表时间: 2005年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          当用string的split方法的时候，当分隔符为“|”或者“$”的时候，并不能把String分隔开，而是把每个字符都当成一个数组元素，以空格开头。<br /><br /><br />--------------------<br />split("\\|")
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/23052#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>Mon, 25 Apr 2005 14:56:06 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/23052</link>
        <guid>http://54321765bb.javaeye.com/blog/23052</guid>
      </item>
      <item>
        <title>关于Controller</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22960" style="color:red;">http://54321765bb.javaeye.com/blog/22960</a>&nbsp;
          发表时间: 2005年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          “同用户交互，控制并且管理每个请求的处理”的组件，它既勇于表现层模式也用于业务层模式，概括地说，controller做这些事情<br />1. 接受请求<br />2. 对请求执行常用计算<br />3. 选择合适的请求处理器<br />4. 路由请求，以使处理器可以执行相关的业务逻辑<br />5. 可能会提供一个顶层的处理器用于处理错误和异常<br />在一个表现层模式中，一个Web controller接受HTTP请求，并把HTTP参数、cookie、HTTP头取出，可能使得HTTP元素易于被应用得其他部分访问。Web controller会基于请求中的元素判断出需要调用的合适的业务逻辑组件（可能是在HTTPSession、数据库或者其他资源中的持久数据的帮助下做到这点）
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22960#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, 15 Mar 2005 19:44:50 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22960</link>
        <guid>http://54321765bb.javaeye.com/blog/22960</guid>
      </item>
      <item>
        <title>凤舞凰扬的关于数据库话题摘要</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22956" style="color:red;">http://54321765bb.javaeye.com/blog/22956</a>&nbsp;
          发表时间: 2005年03月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          做过MIS系统的都知道，一般说来，数据分为两种：基础数据和业务数据。一般说来，业务数据中肯定包含多个基础数据，比如简单地说一张机票数据，它就包括：货币类型、机场、航空公司等多个基础数据，这个时候，如果都要建立FK的话，是没有任何意义的，更不需要去考虑什么级联删除的，结果只有一个，严重影响效率，而且结构凌乱。但是在业务数据中，机票的基本信息和机票的价格构成了一个整体，这个时候如果不使用FK，那么在设计上是个失误，在实现的时候也绝对是个隐患！比如删除的时候，删除了机票，但是留下了机票的价格，大家可以相信，这是多么荒谬的事情。 <br />所以，使不使用FK，关键要区分基础数据和业务数据。 <br />另外，一个好的数据库设计并不是纯粹考虑数据库，而是来源于好的业务建模和对象建模。<br />首先基础数据的不存在并不能代表业务数据的不存在或者逻辑错误，其次，比如基础数据，是不能随意删除的，当然，我们有很多的控制方法，比如失效等什么的。对于基础数据不用外键是综合各方面考虑的，不是说不能用外键，但是用了外键将导致一个非常可怕的问题，就是数据访问的问题，每访问一个业务数据，那么意味着有可能要join访问10个以上的表，效率会严重降低。 <br />好的数据库设计不能是没有一点冗余，或者说严格符合关系要求，因为实际的应用是面向对象的，在将面向对象的数据转换为面向关系的数据时，是需要这样做的。从逻辑上说，一个基础数据的不存在，并不代表什么，比如说，你没有输入一个国家或者删除一个国家，并不代表没有了这个国家。而业务数据就不同了，如果你删除了一张业务数据，那么就代表了该业务数据已经不存在，而此时再存在与之相关的业务数据是不符合逻辑的（比如一个法规作废，那么与之相关的法规就都必须受影响）。 <br /><br />好的数据库设计来自于好的对象设计。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22956#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>Tue, 15 Mar 2005 09:36:34 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22956</link>
        <guid>http://54321765bb.javaeye.com/blog/22956</guid>
      </item>
      <item>
        <title>复习范式</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22955" style="color:red;">http://54321765bb.javaeye.com/blog/22955</a>&nbsp;
          发表时间: 2005年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大学里的东西忘了好多了，真不应该<img src="/images/smiles/icon_redface.gif"/><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://54321765bb.javaeye.com/blog/22955#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, 14 Mar 2005 12:03:40 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22955</link>
        <guid>http://54321765bb.javaeye.com/blog/22955</guid>
      </item>
      <item>
        <title>11111</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22930" style="color:red;">http://54321765bb.javaeye.com/blog/22930</a>&nbsp;
          发表时间: 2005年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          钞票不是万能的，有时还需要信用卡；<br /><br /><br />　　每个人都应该热爱动物，尤其是煮熟的；<br /><br /><br />　　要节约用水，尽量和女友一起洗澡；<br /><br /><br />　　要用心去爱你的邻居，不过不要让她的老公知道；<br /><br /><br />　　每个成功男人的背后，都有一个女人。每个不成功男人的背后，都有两个；<br /><br /><br />　　再快乐的单身汉迟早也会结婚，幸福不是永久的嘛；<br /><br /><br />　　聪明人都是未婚的，结婚的人很难再聪明起来；<br /><br /><br />　　成功是一个相关名词，他会给你带来很多不相关的亲戚；<br /><br /><br />　　不要等明天交不上差再找借口，今天就要找好；<br /><br /><br />　　爱情就象照片，需要大量的暗房时间来培养；<br /><br /><br />　　后排座位上的小孩会生出意外，后排座位上的意外会生出小孩；<br /><br /><br />　　现在的梦想决定着你的将来，还是再睡一会吧；<br /><br /><br />　　应该有更好的方式开始新一天，而不是千篇一律的在每个上午都醒来；<br /><br /><br />　　努力工作不会导致死亡，不过我不会用自己去证明；<br /><br /><br />　　工作好有意思，尤其是看着别人工作；<br /><br /><br />　　神决定了谁是你的亲戚，幸运的是在选择朋友方面他给了你留了余地；<br /><br /><br />　　两个人的状态是不稳定的，三个人才是！<br /><br /><br />　　服饰就象铁丝网，它阻止你冒然行动但并不妨碍你尽情的观看；<br /><br /><br />　　学的越多，知道的越多。知道的越多，忘记的越多。忘记的越多，知道的越少。<br /><br />　　为什么学来着？
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22930#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, 25 Feb 2005 17:55:46 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22930</link>
        <guid>http://54321765bb.javaeye.com/blog/22930</guid>
      </item>
      <item>
        <title>为什么界面层的验证这么烦</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22878" style="color:red;">http://54321765bb.javaeye.com/blog/22878</a>&nbsp;
          发表时间: 2005年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一直想把界面层的验证与取数据分开，但是比较困难<br />界面是挑选，而控制层是筛选<br /><br />有时间再好好整理
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22878#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>Fri, 21 Jan 2005 09:23:21 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22878</link>
        <guid>http://54321765bb.javaeye.com/blog/22878</guid>
      </item>
      <item>
        <title>MSSQLServer的一个问题</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22875" style="color:red;">http://54321765bb.javaeye.com/blog/22875</a>&nbsp;
          发表时间: 2005年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现象：企业管理器打开某个数据库的某个表，修改记录，关闭表就会提示：“在流水模式下，事务无法启动”，数据修改无法实现。<br />解决：拖动右边的滚动条向下,直到显示完所有的数据,再改就没事了。出于对数据库的访问效率，只提取一部分内容，下面的提取工作进入了暂停，托动鼠标的滑块到最后，也就是把所有的数据读取完成。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22875#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, 19 Jan 2005 11:17:33 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22875</link>
        <guid>http://54321765bb.javaeye.com/blog/22875</guid>
      </item>
      <item>
        <title>关于好的模型</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22870" style="color:red;">http://54321765bb.javaeye.com/blog/22870</a>&nbsp;
          发表时间: 2005年01月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          许多模型仅仅涉及业务中的那些文档，例如清单、收据、保险契约。如果该模型仅仅涉及各种文档，那么当业务发生变化时会发生什么事情呢？在具体实现中，这种变化是一个很严重的问题。捕获业务的本质和围绕这些核心概念建模是必要的。首先为核心业务建模，并接着为该核心业务的表现物建模。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22870#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>Mon, 17 Jan 2005 17:17:34 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22870</link>
        <guid>http://54321765bb.javaeye.com/blog/22870</guid>
      </item>
      <item>
        <title>hibernate第一帖</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22869" style="color:red;">http://54321765bb.javaeye.com/blog/22869</a>&nbsp;
          发表时间: 2005年01月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          去年12月份的时候开始学习Hibernate，学习两个月然后便被安排做其它事情了，hibernate也差不多忘光，现在要重新学习。<br /><br />回头想想，公司安排去做的那些事情或许真的是浪费我的时间，这几天只总结出了一句话：出力不讨好。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22869#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 Jan 2005 15:42:07 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22869</link>
        <guid>http://54321765bb.javaeye.com/blog/22869</guid>
      </item>
      <item>
        <title>[引 robin]关于EJB的话题</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22865" style="color:red;">http://54321765bb.javaeye.com/blog/22865</a>&nbsp;
          发表时间: 2005年01月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          EJB2.x已死<br /><br /><br />EJB大势已去，指的是EJB2.x的那种重量级的EJB架构技术，而不是指全新的POJO based的EJB3.0。<br /><br />其实围绕EJB这个话题，已经讨论的口水都干了，我在2002年的时候还是相当推崇EJB的，但是在当年的EJB项目中已经深切体会到了EJB的致命缺陷。到2003年基本上对EJB持一个谨慎的态度，即支持Session Bean，反对Entity Bean，然而仅仅就是这种谨慎的置疑态度已经遭到全面的疯狂围攻和人身攻击。2004年以后，可以说EJB2.x在IT行业已经得到了绝大多数公司的共同否定和抛弃，特别是EJB3.0 SPEC的发布，已经完全是另外一个东西，只不过披着EJB的外衣而已。EJB专家组对EJB2.x模型的彻底抛弃，已经宣判了EJB2.x的死刑，现在唯一不确定的只不过是EJB2.x还能苟延残喘多久的问题而已。<br /><br />昨天我和jlinux约nuke吃饭，谈一些出版的事情，席间谈到一些技术上面的话题。nuke是IBM公司的technical Consultant，一向负责IBM对金融行业的业务。我和nuke上次见面还是在今年4月份JBoss Core Team的Ben Wang访华的饭桌上。我还记得上次我们席间也谈到EJB的话题。大家，包括Ben对Entity Bean否定态度都是一致的，所不同的就是对Session Bean在分布式业务上的作用而已，当时nuke提到他接触过的一些业务又大规模的EJB集群的，几百台的EJB集群。<br /><br />然而这次聚会，nuke却提到一个非常令我吃惊的消息，他说现在即使在IBM面向客户的业务中，也已经没有EJB的位置了，EJB成了一个典型的反模式。他还特别提到，他们的很多客户，例如新加坡客户首先就会问你项目用了EJB没有，如果用了EJB，那么我们不要，如果没有用EJB，OK，pass。<br /><br />这个消息对我来说还是非常吃惊的，我没有想到EJB现在市场萎缩的这么厉害，我还以为EJB2.x还只是在开发人员当中被大面积的抛弃，在大客户的应用中还将生存很久的时间，现在连IBM的客户都已经态度鲜明的拒绝EJB了，这是非常可怕的事实，这说明了EJB2.x现在已经没有任何市场了，宣告EJB2.x事实上的彻底死亡。<br /><br />可笑的是，国内的某些个别人，出于不可告人的，为了谋求个人金钱利益的目的，不遗余力的鼓吹EJB2.x，毁人不倦的误导可怜的Java初学者。当这些Java初学者将很快发现他们花了不菲的培训费之后，只学到了一堆报废的知识，甚至被人为的，有目的的引入了歧途，到那个时候，被欺骗了的人们将如何宣泄他们的愤怒呢？让我们拭目以待吧。
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22865#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>Fri, 14 Jan 2005 10:56:19 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22865</link>
        <guid>http://54321765bb.javaeye.com/blog/22865</guid>
      </item>
      <item>
        <title>The rationale for modeling</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22845" style="color:red;">http://54321765bb.javaeye.com/blog/22845</a>&nbsp;
          发表时间: 2005年01月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Models provide abstractions of a physical system that allow engineers to reason about that system by ignoring extraneous details while focusing on relevant ones. All forms of engineering rely on models to understand complex, real-world systems. Models are used in many ways: to predict system qualities, reason about specific properties when aspects of the system are changed, and communicate key system characteristics to various stakeholders. The models may be developed as a precursor to implementing the physical system, or they may be derived from an existing system or a system in development as an aid to understanding its behavior.
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22845#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>Fri, 07 Jan 2005 09:32:20 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22845</link>
        <guid>http://54321765bb.javaeye.com/blog/22845</guid>
      </item>
      <item>
        <title>CS vs 人物特点</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22840" style="color:red;">http://54321765bb.javaeye.com/blog/22840</a>&nbsp;
          发表时间: 2005年01月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、勇猛送死型 <br />特点：总是冲在队伍最前面，枪法糟糕！遇人乱开枪。 <br />惯用枪支：什么枪都用，但什么枪都不行，b51是最爱 <br />心理：比较鲁莽，喜欢当英雄，做事不前思后想。还喜欢鞭尸。 <br />级别：菜鸟 <br />下场：乱开枪爆露位置后被人鞭尸 <br />杀伤指数：1 <br />工作建议：看大门，保安 <br />二、勇猛果敢型 <br />特点：总是冲在队伍最前面，枪法精准！遇人开枪不中 <br />即迅速退回安全位置。 <br />惯用枪支：AK47,M4A1 <br />心理：智商较高，能熟练使用CS各种枪支,生活中做人比较稳重， <br />能镇定的面对各种事件。但缺乏大局观，不注意团队合作。 <br />级别：老鸟 <br />下场：可能落入重围后被乱枪打死 <br />杀伤指数：7 <br />工作建议：编写软件，写作 <br /><br />三、勇猛稳重型 <br />特点：喜欢夹在大部队中，保持距离，喜欢抢占要点后蹲点守候。 <br />枪法一般，但注意团队合作，能自觉为大部队守候后方或 <br />是侧方。 <br />惯用枪支：AK47,M4A1 <br />心理：智商一般，能熟练使用CS各种枪支,稳重，镇定。但有点喜 <br />欢贪小便宜。表现在CS中就是经常因为捡一把好枪而失去位 <br />置后被人暗算。 <br />级别：老鸟 <br />下场：经常被人阴死 <br />杀伤指数：7.5 <br />工作建议：商人 <br /><br />四、勇猛智慧型 <br />特点：射击奇准，反应迅速，一对一能力强，有大局观，喜蹲点， <br />对地图极其熟练。善于配合。善于根据地图的特点伪装自 <br />己。并且根据环境做出判断并影响对方的判断。 <br />惯用枪支：除狙外的任何枪支。 <br />心理：智商极高，但过于沉迷游戏，如合理的安排学习和玩的辩 <br />证关系的话比较有前途。生活中喜欢容易对一件事情着迷， <br />善于研究，分析能力强 <br />级别：超鸟 <br />下场：不容易被杀，通常是一个队伍的灵魂人物。 <br />杀伤指数：9 <br />工作建议：律师，经理 <br /><br />五、半身不遂型 <br />特点：只能使用狙，反应迅速，射击精，常一击必杀。喜蹲点， <br />对狙点敏感。 <br />惯用枪支：狙 <br />心理：智商一般，喜欢重复同一动作，怕麻烦，喜欢孤独。不合 <br />群，无同情心。麻木。有嗜血倾向，还经常自以为高手而 <br />显出很酷的样子，实际为人很失败，喜欢在游戏中找到满 <br />足。 <br />级别：老鸟 <br />下场：被对方狙杀 <br />杀伤指数：9 <br />工作建议：精神病院被人研究 <br /><br />六、绝世高手型 <br />特点：反应极快，声音敏感，能根据各种环境迅速做出反应并选 <br />择最佳角度进行攻击，不喜蹲点。射击奇准无比。 <br />惯用枪支：任何枪支 <br />心理：天才，不会为外在环境所迷惑，常能适可而止。做人 <br />较偏激，比较高傲。但作任何事都很快成为佼佼者。如果 <br />是罪犯则极富攻击性。并且有自恋倾向 <br />级别：超鸟，超级杀手 <br />下场：优胜者 <br />杀伤指数：10 <br />工作建议：任何工作皆很出色。 <br /><br />七、变态狂魔型 <br />特点：喜鞭尸、喷图，以屠杀为快乐之本，毫无组织性，为杀死 <br />对方不惜牺牲队友，射击精准。地图熟练。 <br />惯用枪支：任何枪支 <br />心理：智商超高，极其变态，为达目的不择手段。有人品问题。 <br />级别：准老鸟 <br />下场：众叛亲离，孤独到死 <br />杀伤指数：9 <br />工作建议：强匪。 <br /><br />八、卑鄙无耻型 <br />特点：喜欢蹲点，不喜移动，乐于伪装。长于阴杀。无组织性， <br />只以杀人为本。对胜利失败无使命感。 <br />惯用枪支：带消音功能的枪支 <br />心理：智商高，有心理缺陷。能对任何谩骂默然置之，冷酷，阴险。 <br />级别：准中鸟 <br />下场：被人群杀，常被鞭尸者 <br />杀伤指数：6 <br />工作建议：奸商，绝对奸商。 <br /><br />九、懦弱无能型 <br />特点：见人就闪，不管是否击中对方，打了就跑。喜欢跟在大 <br />部队的后面捡便宜。没事还总爱仍东西，包括各种枪支， <br />手雷等。 <br />惯用枪支：对枪支缺乏基本的了解 <br />心理：智商低下，胆小怕死，贪小便宜。 <br />级别：绝对菜鸟 <br />下场：常常是最后一名本方的队员，而本方却输掉比赛 <br />杀伤指数：0 <br />工作建议：苦力也不定干好 <br />超级变态型（不能算人，因此不被列入九种类型中，特此说明） <br />特点：使用各种作弊器，乐此不疲，喜鞭尸，爱仍手雷， <br />只要能打死对方（包括队友）的方法都为此君最 <br />爱。 <br />惯用枪支：各种管制刀具 <br />心理：可怕，阴险，极度自私，经常抓狂。喜收集，有 <br />严重的破坏倾向 <br />级别：中鸟 <br />下场：被踢 <br />杀伤指数：无穷大 <br />工作建议：立即去看医生
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22840#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, 06 Jan 2005 09:45:38 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22840</link>
        <guid>http://54321765bb.javaeye.com/blog/22840</guid>
      </item>
      <item>
        <title>界面的一点改进想法</title>
        <author>robot_liu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://54321765bb.javaeye.com">robot_liu</a>&nbsp;
          链接：<a href="http://54321765bb.javaeye.com/blog/22839" style="color:red;">http://54321765bb.javaeye.com/blog/22839</a>&nbsp;
          发表时间: 2005年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          想通过一个js类，来控制说有的返回类型。<br />不一定能实现<br />暂时记一下
          <br/>
          <span style="color:red;">
            <a href="http://54321765bb.javaeye.com/blog/22839#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, 05 Jan 2005 18:59:15 +0800</pubDate>
        <link>http://54321765bb.javaeye.com/blog/22839</link>
        <guid>http://54321765bb.javaeye.com/blog/22839</guid>
      </item>
  </channel>
</rss>