<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>tigers</title>
    <description></description>
    <link>http://tigers.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>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/250638" style="color:red;">http://tigers.javaeye.com/blog/250638</a>&nbsp;
          发表时间: 2008年10月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对两个元素为HashMap的List进行处理，HashMap元素包含的是从数据库中提取出来的记录&lt;id, amount>。那么要求将两个List中包含相同主键的HashMap合并，就是amount相加。
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/250638#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 09 Oct 2008 11:10:45 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/250638</link>
        <guid>http://tigers.javaeye.com/blog/250638</guid>
      </item>
          <item>
        <title>程序员的气质</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/200334" style="color:red;">http://tigers.javaeye.com/blog/200334</a>&nbsp;
          发表时间: 2008年06月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不妨也来谈谈我的程序员气质观，或者说是特征观。<br /><br />首先还是对技术的兴趣。兴趣永远是最好的老师，若能保持对行业技术的足够敏感度，那么相信技术这一关能轻松过去。当然，兴趣不是说三天打鱼两天晒网型的，而是意味着无数个日夜的思考和求索的精神动力。<br /><br />有了兴趣就像有了永动机，但方向在哪里？如何运用这不息的发动机的能量？所以就有了自己的方向或者说专业细化的判断，说的更肉麻一点就是职业目标云云，诸如某某架构师，啥啥项目经理等等，在到达这个目标之前需要掌握哪些技能和经历等等，这些就是具体要积累的东西了。<br /><br />目标有了，也知道要做的事情的内涵了，剩下的就是科学的方法论了。在我们十几年的中国式学习过程中，老师们通常都喜欢劝告我们“不要钻牛角尖”，而作为一名程序员，我想说的是勇于钻牛角尖是一个重要的学习和工作方法。任何一个所谓的牛角尖都有可能是一个bug的窝藏点，为什么不能钻，即使和teamer钻的面红耳赤，那又何妨！在信息用不对称的世界里，信息被不均匀的掌握在权威和其他成员手里，那么当一方需要了解另一方的信息时，询问/质疑/确认等等都是信息共享的途径，要勇于表达自己的渴求和不对称性，这一点特质很重要，也称之为沟通能力。同时，这种询问/质疑/确认等等动作不仅解决了信息的不对称，也有可能给双方带来碰撞的点点火花，这就是神奇的创造了，这种气质就衍变成了创新能力和精神，这种宽松的氛围也同样衍变成了创新的企业文化或者创新沃土了！
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/200334#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 05 Jun 2008 08:46:49 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/200334</link>
        <guid>http://tigers.javaeye.com/blog/200334</guid>
      </item>
          <item>
        <title>数据集成</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/177720" style="color:red;">http://tigers.javaeye.com/blog/177720</a>&nbsp;
          发表时间: 2008年03月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          数据集成是许多大型企事业单位扩展新业务应用的基础。下面简单谈谈我对数据集成软件产品的一些想法。<br />数据从源流到目标，一般是由一个称之为“任务”的角色来完成。“任务”接受传给它的关于源、目标以及投递之物这些信息，并准备工作。而任务A和兄弟任务B，C之间还有可能需要同步交互来协同完成整个事情，因此就有了状态任务，比如A，B，C都有两个状态：未完成、已完成，A-B-C必须得在前者完成之后才能执行自己，这样后续的任务就必须能够获知前面任务的状态信息。进一步来说，假如一两个状态信息还不足以支撑业务需求的话，那么就有了引入工作流概念的必要了。工作流引擎掌控着所有任务的状态信息，它主宰着所有任务的生命。那么，上面的任务A，B，C就不需要自己去读取兄弟任务的状态信息，而是由引擎这个大管家来统一调度各个任务了。就好比有三个营：侦查营，坦克营和步兵营。假设作战计划是，先由侦查营出动，侦查完毕之后坦克营出动扫清敌障，最后由步兵营完成山头占领。引擎就像是给三个营安了一个团长，而没有引擎则三个营只能靠通信兵频繁通信报告自己并了解兄弟营的状态了。一个流程包含几个任务，那么在实际的数据整合中，由于源数据是不断的增加的，我们需要不断的调度流程来完成数据集成，比如每个交易日的交易时间段都需要调度一个流程，因此在工作流之上，还需要引入调度器的概念，这个调度器就是负责流程在什么时候启动，启动的周期是多长等等。<br />总结以上来说，我们的领域模型就是：任务——流程——调度器。<br />以上，只是说明白了我们的软件该如何工作，下面该谈谈软件本身该长啥样了。总体由两块服务组件构成：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repository Service Component资源库组件;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integrating Service Component集成组件。<br />资源库组件负责任务、流程和调度器的定制，并保存到资源库中。集成组件读取资源库，运行并监控这些任务、流程和调度器。这样的划分，好比一个公司，首先由管理层作决策，然后交给执行层去执行。道理是相似的，区别在于，执行的监控在公司还是有管理层来掌握，而在软件中则是由执行者自己掌握。
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/177720#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 30 Mar 2008 09:09:23 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/177720</link>
        <guid>http://tigers.javaeye.com/blog/177720</guid>
      </item>
          <item>
        <title>将HashMap封装成一个LinkedList</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/170974" style="color:red;">http://tigers.javaeye.com/blog/170974</a>&nbsp;
          发表时间: 2008年03月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          HashMap经常在我们的应用程序中出现，它把key与value通过hash code映射起来，并存放到table中。在日常应用中，如果有这样的场景，就是基于HashMap封装成一个LinkedList，那么如何实现link的特性，还真是值得想想。在此先买个关子，欢迎大家积极参与讨论。
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/170974#comments" style="color:red;">已有 <strong>7</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Mar 2008 22:05:31 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/170974</link>
        <guid>http://tigers.javaeye.com/blog/170974</guid>
      </item>
          <item>
        <title>BI的另一半</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/162774" style="color:red;">http://tigers.javaeye.com/blog/162774</a>&nbsp;
          发表时间: 2008年02月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          曾几何时，BI的先驱们为我们描绘出了光明灿烂的“智能”美景，那是一副多么诱人的“海市蜃楼”阿！然而时间和事实告诉幼稚的洗礼者，一切还只是完成了一半，另一半还在遥远的天际。<br /><br />BI实施成功与否，在于它的前期实施是否对企业的后期管理决策产生影响，比如丰田美国公司在实施Essbase+oracle套件之后，很快在后期的实施过程中发现了一个管理上的漏洞，并及时纠正过来，从而帮助公司提升了业绩。反观国内的实施过程，实施单位在BI项目实施完之后，并没有带来管理决策上的影响，所谓的仪表盘、指标体系等等仅仅停留在“噱头”层面，BI的实施没有产生闭环。是该反思管理者没有重视BI的影响力，还是BI本身没有规划实施好呢？BI项目实施整个闭环的另一半在哪里？不得而知．．．<br /><br />而作为一名BI领域的开发人员，有谁能对他的具体工作有一个清晰的定义？是数据库DBA吗？还是J2EE开发人员？换个角度，他们又或者是懂得Cognos/Hyberion/Essbase等商业BI套件的实施人员，甚至是运用开源软件如BIRT/Pentaho/Jspersoft等开发微小型的BI项目的开发人员吗？总之，这些开发者都可以给自己冠名为BI开发人员，但事实果真如此吗？在我看来，他们大多算半个BI开发人员。一个运用BIRT作报表的J2EE开发者如果不懂得底层的DBMS，他们如何敢保证展现出来的数据是正确的，是有效的？一位只懂得Oracle的DBA，缺少更友好性的指标展示平台，客户如何去理解他的大量数据整合价值呢？我们总是拥有了一半就标榜自己拥有了整个，而把另一半丢给同事，号称只有团队合作才是解决之道，但可悲的是没有一位总揽全局的人，缺失整体架构与调优，形成的现状是典型的“1 + 1 &lt; 2”。<br /><br />审视国内BI实施现状，面对国外热闹的并购狂潮，从oracle吃掉hyberon, sap吃掉bo, 到ibm吃掉cognos，我们的路在何方？清者明，智者虑，唯“吾将上下而求索”勉之！
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/162774#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Feb 2008 14:08:52 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/162774</link>
        <guid>http://tigers.javaeye.com/blog/162774</guid>
      </item>
          <item>
        <title>基于Quartz的高频率同步</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/162088" style="color:red;">http://tigers.javaeye.com/blog/162088</a>&nbsp;
          发表时间: 2008年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          quartz是一个按照设定的时间规则来调度作业的调度器，比如可以设定每30s启动一个Job，但如果Job在30s内还未完成，那么quartz默认情况下还是按照设定的周期启动新的Job线程。<br /><br />有这样一个应用场景，两个表结构相同的数据库A和B，A是一个实时交易的业务系统数据库，需要把A中的数据完全准实时的复制到B中。同时，交易表中存在一个时间戳字段，同步任务是每次按照这个时间戳来作增量同步的，即先在B中select max(col_timestamp)得到当前最大时间戳，再到A中获取大于该时间戳的数据集，最后再insert到B中。<br /><br />在该场景下，如果前一个线程还未结束写的动作（比如一共1000条记录，已经提交了500条，还剩500条没提交），而后一个现成又开始读的话，将导致后500条记录重复插入的异常。实现的代码是完全的JDBC代码，不支持跨数据库级别的事务管理，而Job中第一次读和后面的写是在数据库B中，可以合并为一个事务(t1)，第二次读是针对数据库A，作为一个事务(t2)。为了避免以上的幻读和重复写异常，可以这样作： <br />(1)将connection的自动提交设为false。<br />(2)设置事务隔离级别为serialization。事务t1肯定要设置为最高级别serialization的，因为要避免幻读（避免当前一个线程还在写的时候，后续的线程来读）;而事务t2可以不用把隔离级别设为serialization，默认的read commited即可。<br />(3)每次把当前需要insert的数据作为一次性提交，也就是说第一次的读和后面的写作为一个事务而不是多个。<br /><br />这样即时数据量再大，而同步周期再短，数据都能顺利的复制到目标库。<br /><br />回过头来看整个流程，其实在数据库级别加serialization隔离级别，就是使得事务能够串行处理。理论上来说，这种效果其实在应用程序层面也是可以做到的，即后面的线程在前面的线程处理完成之后再启动，也就是所谓的状态化线程控制，但quartz似乎并不支持这一点。
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/162088#comments" style="color:red;">已有 <strong>11</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 13 Feb 2008 16:36:16 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/162088</link>
        <guid>http://tigers.javaeye.com/blog/162088</guid>
      </item>
          <item>
        <title>Hibernate与大字段的持久化</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/153780" style="color:red;">http://tigers.javaeye.com/blog/153780</a>&nbsp;
          发表时间: 2008年01月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          hibernate对于大字段的支持依赖于数据库的实现。<br /><br />经常遇到这样的问题，如在oracle下如何把超过4000byte的字符串保存到数据库中，而varchar2的最大长度是4000。看了大半天hibernate对clob的支持，觉得太繁琐了，经过同事的实验，发现仅仅需要将oracle中该字段直接手工alter为clob，而在hibernate中对该字段的映射不变，直接设置为string类型，对于过去为varchar即可，长度保留为4000(似乎不限)。至于原因，应该是oracle的驱动在这方面作的很强大，自动将clob类型解析为hibernate的string。<br /><br />在mysql下，只需要将hibernate映射对象设置为text即可。<br /><br />最后，注意hibernate的hibernate.hbm2ddl.auto设置为update，这样oracle的修改才不会丢失.
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/153780#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Jan 2008 22:06:02 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/153780</link>
        <guid>http://tigers.javaeye.com/blog/153780</guid>
      </item>
          <item>
        <title>艺术软件</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/151013" style="color:red;">http://tigers.javaeye.com/blog/151013</a>&nbsp;
          发表时间: 2007年12月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          软件之与这个世界，两者有可比较性吗？我觉得两者存在惊人的相似之处。<br /><br />从最初的计算机的起源，它就是用来模拟人脑，处理大批量的科学运算，于是计算机就有了个“电脑”的称呼。<br /><br />再到上个世纪七十年代初软件工程的提出，它也是基于现实世界中的建筑与土木工程管理来的。<br /><br />回到我们当前广泛采用的J2EE开始世界，类似情况就更多了。大到Spring、Hibernate这些在项目中经常扮演举足轻重的角色，小到Log4J、C3P0等等，这些都是专注于软件世界的一个特定领域问题。<br /><br />一个亘古不变的真理是，“简单总是最有效最强大的”。昨天去七星滑雪场晃悠了一整天，从不会到两小时后敢于从中场的高斜坡上滑下，我印证了这样一个道理，当你保持一个稳定的姿势滑下的时候你就不会倒！同样，在软件的世界里，windows可以让家庭主妇也能快速玩的转，所以它生命力极强。C++的任意集成、操作符重载、指针操作、对象析构等等这些负责的特性给人们带来高效的同时，也带了了巨大的风险，一不小心也许就陷入了一个陷阱，所以才诞生了C++--，伟大的Java!
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/151013#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 26 Dec 2007 17:59:15 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/151013</link>
        <guid>http://tigers.javaeye.com/blog/151013</guid>
      </item>
          <item>
        <title>风险规避</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/150103" style="color:red;">http://tigers.javaeye.com/blog/150103</a>&nbsp;
          发表时间: 2007年12月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          项目开发过程中，由于客户的需求变更或客户对系统分析存在不同解释的时候，不同的方案便会从客户方或者项目组内部涌现出来，作为系统分析师或者架构师又或项目经理（决策者），如何谨慎取舍，规避风险，以保障项目能平稳进行、并在期限内完成呢？<br /><br />首先的一点还是，决策者的技术功底，当然如果技术功底不够深厚的话那么成为一名决策者的可能性也不大了。其次，是沟通能力，甚至说一个人的气质（很难表达，但暂且用这个词吧）。能把自己的思路淋漓尽致的表达出来，理直气壮的表达出来，这一点很重要，事实上不是好的设计方案没有想到，而是提出者或许根本就对自己的方案没有足够的勇气和信心去推销，而被埋没，如果是这样的话岂不是很无奈很可叹!
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/150103#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 22 Dec 2007 10:11:20 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/150103</link>
        <guid>http://tigers.javaeye.com/blog/150103</guid>
      </item>
          <item>
        <title>集群——一个相对的概念</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/148625" style="color:red;">http://tigers.javaeye.com/blog/148625</a>&nbsp;
          发表时间: 2007年12月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          集群——一个非绝对的概念。<br />初次接触集群的开发人员一般都很好奇，怎么集群这么牛比，能动态同步应用上下文（亦或称之为session复制）！但事实并非完全如此，所谓集群、负载均衡，这些都是一个相对的说法而已，它们也是通过许多策略组合在一起，以到达某种程度上的同步效果。<br /><br />待续...
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/148625#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 15 Dec 2007 22:06:23 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/148625</link>
        <guid>http://tigers.javaeye.com/blog/148625</guid>
      </item>
          <item>
        <title>回复: 项目管理沟通之道</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/147519" style="color:red;">http://tigers.javaeye.com/blog/147519</a>&nbsp;
          发表时间: 2007年12月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          你说的是目前业内现状的一种，但我要提醒的是这并不是全部。<br /><br />从团队建设的角度来说，虽然一般的开发人员水平有限，但正是沟通——通过沟通，能把知识从一个人的头脑传播到整个团队，这是提高开发效率的好途径。<br /><br />其次，让每一个团队成员了解项目的整个全貌，这样使得他有意识的认识到自己在作哪一部分，这样不仅能提高他本分工作的效率，也能在必要的时候参与到其他人的工作中，避免了分工不均或者因为人员流动而造成的混乱。
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/147519#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Dec 2007 12:09:49 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/147519</link>
        <guid>http://tigers.javaeye.com/blog/147519</guid>
      </item>
          <item>
        <title>DBUnit Bug 之PURGE RECYCLEBIN</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/147393" style="color:red;">http://tigers.javaeye.com/blog/147393</a>&nbsp;
          发表时间: 2007年12月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近用dbunit对oracle数据库作读写测试，发现了一个bug，报的错是scheme没定义，结果发现是oracle没有真正对表的纪录作写的操作，需要手工去执行一条命令：<br /><br />PURGE RECYCLEBIN;<br /><br />在oracle客户端（俄一般喜欢用toad）执行后，一切正常了：）
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/147393#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Dec 2007 21:12:28 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/147393</link>
        <guid>http://tigers.javaeye.com/blog/147393</guid>
      </item>
          <item>
        <title>项目管理沟通之道</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/147167" style="color:red;">http://tigers.javaeye.com/blog/147167</a>&nbsp;
          发表时间: 2007年12月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          沟通无处不在，日常生活，聚会，工作等等……<br /><br />在项目管理中，沟通我觉得常常被忽视而没有提到日程管理日程中。这很遗憾！其实冷静细想，项目不就是为了为客户解决问题嘛，然后一帮子人聚在一起共商对策。但就是这样一个需要沟通的地方，经常是死气沉沉，每个人要么埋头苦干，要么呆着耳塞自娱自乐……<br /><br />出现这种不良境况的土壤是什么呢？我觉得还是管理者没有调整好自己的角色，他没有把自己当作管理者/统筹者，而是专政者。一个好的管理者在定方案或者执行方案的时候，他没有倾听项目成员的意见，而是自己或者一小部分项目高层决策，然后外科手术式的分配给下面执行……<br /><br />我觉得这样是不太好的，任何一个好的管理者都是一个好的沟通者，不断的倾听和激发下面的人去发挥集体智慧。管理者要除了主动发起沟通的氛围，同时要时刻保持一个接受别人主动来表达的心态！
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/147167#comments" style="color:red;">已有 <strong>9</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Dec 2007 09:41:45 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/147167</link>
        <guid>http://tigers.javaeye.com/blog/147167</guid>
      </item>
          <item>
        <title>Oracle JDBC的一个小Bug</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/145354" style="color:red;">http://tigers.javaeye.com/blog/145354</a>&nbsp;
          发表时间: 2007年12月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在一个数据库到库的记录同步过程过，一个同事无意中惊奇的发现了oracle 10g的jdbc 驱动的一个小小而荒诞的Bug：数据库中的date类型的字段，用getDate(&quot;columnName&quot;)函数获取日期时，当且仅当数据库中的数据为1990-4-15时，该函数获取的日期偏偏是1990-4-14。非常的诡异！如果用getString()是准确的，这说明数据库中的数据在经过一份转化为date类型的逻辑计算时，出现了一个bug。</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/145354#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Dec 2007 22:38:03 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/145354</link>
        <guid>http://tigers.javaeye.com/blog/145354</guid>
      </item>
          <item>
        <title>Cognos收购有感之反动派不是纸老虎</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/144508" style="color:red;">http://tigers.javaeye.com/blog/144508</a>&nbsp;
          发表时间: 2007年11月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 感受了一下开源的BI产品，又回过头来领略了一下商业BI产品，总的来说，心情很比较复杂的。</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 再加上前几天突然看到cognos被ibm以50亿美元的价位收购的报道，心情变得更加飘忽不定了。这样来看，几大业界综合服务巨头对商业智能领域的圈地运动告一段落了&mdash;&mdash;首先是美国的Oracle 30亿美元收购了美国的Hyperion，德国的SAP 50亿欧元收购法国的BO，直到最近美国的IBI以50亿美元收购加拿大的Cognos。</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当这些&quot;纸老虎&quot;们正忙着拼个你死我活的时候，国内的众多厂商也在干什么呢？IBM, SAP, ORACLE&hellip;&hellip;这些令人震撼的字眼，它们都在大举进军商业智能这块肥料，它们不是纸老虎，它们是真正的猛兽，比老虎还凶猛的猛兽！</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回到国内本土，尚南、菲奈特、和勤、炎鼎&hellip;&hellip;这些字眼跳入人们的视野。前不久菲奈特与东南融通联手，东南融通是一家什么公司我不太清楚，只是有一位同事是刚从那里出来的，听他的语气，里面是一个政治斗争很厉害的地，而它此前也没有商业智能这方面的研发投入，它并入菲奈特只不过是想在数据仓库等商业智能项目的打单的时候能增强自己的话语权。尚南给我的影响还是很不错的，透着一股献身BI这项事业的激情与梦想！</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先下了等会来继续...</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/144508#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Nov 2007 14:42:19 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/144508</link>
        <guid>http://tigers.javaeye.com/blog/144508</guid>
      </item>
          <item>
        <title>PreparedStatement缺陷之执行顺序混乱</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/144488" style="color:red;">http://tigers.javaeye.com/blog/144488</a>&nbsp;
          发表时间: 2007年11月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreparedStatement虽然有种种好处，最大的特点是SQL语句的数据库无关性，也就是不需要特定得指定具体数据库的SQL，比如比较Timestamp类型的字段，如果用Statement全拼SQL的话，必须得带上<font face="Arial">TIMESTAMP('YYYY-MM-DD 00:00:00.0') (DB2的) 或者<font face="Arial">TIMESTAMP('YYYY-MM-DD 00:00:00.0', 'YYYY-MM-DD hh24:mi:ssxff')(Oracle的)这些特定函数，但如果是PreparedStatement的话，就不需要指定了，完全交给JDBC驱动来完成。而且，有时候必须得用PreparedStatement，比如从一个库中读取N条记录再把该记录集插入到另一个库，这时候事先并不知道有多少条记录，甚至不知道有哪些字段，那么就只能用PreparedStatement来拼装了。</font></font></font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是，在批处理preparedStatement的命令的时候，由于每加入一条新的命令都是先发送到命令缓冲区，所以不管客户端是批处理还是逐条执行，数据库服务端都是某个时刻从命令缓冲区中取出命令执行，那么最后造成的后果是数据库中的记录顺序并不是客户端的执行顺序。比如，我在客户端首先从一个库读取200条记录，再插入到另一个库，最后两个库中的记录顺序不一致。这样就会引出一个问题，如果要对两边的纪录作CRC校验的话，那么不能直接逐条对比，还得先排序，然后才能对比&mdash;&mdash;增加了校验的复杂度。</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/144488#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 28 Nov 2007 13:49:32 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/144488</link>
        <guid>http://tigers.javaeye.com/blog/144488</guid>
      </item>
          <item>
        <title>资源回收</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/131583" style="color:red;">http://tigers.javaeye.com/blog/131583</a>&nbsp;
          发表时间: 2007年10月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;Statement在JDBC编程中常常被用到，但却常常忽略。Statement本身是一个接口，有两个实现类：PreparedStatement和CallableStatement，通过connection.createStatement()创建实例。相对于connection和resuleset资源来说，statement实例很容易被忽略而没有即时释放它。下面就是一个会导致严重后果的例子：
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">for</span><span>&nbsp;(;;;)&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;sst&nbsp;=&nbsp;connection.createStatement(); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;... &nbsp;&nbsp;</span> </li>
    <li class=""><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp; 这样很容易产生&ldquo;游标数用完&rdquo;的错误，我曾坐过一个统计，在oracle数据库上，以上类型的代码在insert200多条记录时就报异常，而当把statement语句转移到for循环外面时就没有报异常，而且我一次性同步2000多条记录都没问题。</p>
<p>&nbsp;&nbsp;&nbsp; 最后，还是想说那句话：任何打开的资源都应手工close掉，而不是等gc来清理，往往是在gc清理前资源已经耗尽。</p>
</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/131583#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Oct 2007 23:53:03 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/131583</link>
        <guid>http://tigers.javaeye.com/blog/131583</guid>
      </item>
          <item>
        <title>timestamp函数</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/131574" style="color:red;">http://tigers.javaeye.com/blog/131574</a>&nbsp;
          发表时间: 2007年10月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp时间戳类型是数据库常用的类型，但如何写它的比较很正让人犯了愁了。经过一番试探，google+xpert才发现可以这样写：</font><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>DB2&nbsp;&nbsp;:&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;tableName&nbsp;where&nbsp;timestamp_col&nbsp;&nbsp;&gt;=&nbsp;&nbsp;TIMESTAMP('</span><span class="number">2007</span><span>-</span><span class="number">10</span><span>-</span><span class="number">10</span><span>&nbsp;</span><span class="number">00</span><span>:</span><span class="number">00</span><span>:</span><span class="number">00.0</span><span>') &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>ORACLE&nbsp;:&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;tableName&nbsp;where&nbsp;timestamp_col&nbsp;&gt;=&nbsp;TO_TIMESTAMP('</span><span class="number">2007</span><span>-</span><span class="number">10</span><span>-</span><span class="number">10</span><span>&nbsp;</span><span class="number">00</span><span>:</span><span class="number">00</span><span>:</span><span class="number">00.0</span><span>',&nbsp;'yyyy-mm-dd&nbsp;hh24:mi:ssxff')&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中，DB2的还是好理解的，而且它直接匹配字符串模式，而Oracle需要根据TO_TIMESTAMP函数的第二个参数来解析前面的字符串，同时如果没有写成&quot;hh24&quot;，它默认是按照12进制。</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/131574#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Oct 2007 23:25:55 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/131574</link>
        <guid>http://tigers.javaeye.com/blog/131574</guid>
      </item>
          <item>
        <title>数据库编码</title>
        <author>tigers</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tigers.javaeye.com">tigers</a>&nbsp;
                    链接：<a href="http://tigers.javaeye.com/blog/131559" style="color:red;">http://tigers.javaeye.com/blog/131559</a>&nbsp;
          发表时间: 2007年10月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前涉及到一个项目，是关于从两个数据源倒数据到数据中心的数据同步问题。在同步过程就出现了因为三个库的编码不同而出现最终在数据中心中出现乱码的情况。</font></p>
<p><font color="#003366"><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中一个源(DB2 8.2)是DB2&nbsp; GBK编码的，一个源(Oracle 9i)是Oracle WE8ISO8859P1编码的，最后数据中心(Oracle 10.1.0.1)的编码是AL32UTF8的。同步程序是采用select-insert对来进行的，即先从源数据库中select出同步数据，再直接插入到数据中心中。但这时就出现了一个问题，把两种不同于目标数据库编码的数据insert进去会保证数据的正确性吗？或者说数据精度有没有丢失？</font></font></p>
<p><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据测试，结果是GBK编码的数据可以直接正常读写，不需要做任何转换。但是ISO编码的中文字符出现了乱码问题，转念一想，干脆在insert前把它们全部转成GBK编码的，果然这样insert后的字符都可以正常读写了。Oracle JDBC包用的是10.1的ojdbc14.jar。如果用Toad看数据中心的数据，需要把Oracle客户端在注册表中的<font face="Arial">NLS_LANG项设置为<font face="Arial">SIMPLIFIED CHINESE_CHINA.ZHS16GBK，设为默认的<font face="Arial">AMERICAN_AMERICA.WE8ISO8859P1或者<font face="Arial"><br />
AMERICAN_AMERICA.AL32UTF8都不行。</font></font></font></font></font></p>
<p><font size="3" color="#003366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从以上看来，在Oracle中，GBK编码的中文字符可以正确存储在编码为AL32UTF8的库中，Java程序可以直接正常读写。</font></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://tigers.javaeye.com/blog/131559#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Oct 2007 23:05:03 +0800</pubDate>
        <link>http://tigers.javaeye.com/blog/131559</link>
        <guid>http://tigers.javaeye.com/blog/131559</guid>
      </item>
      </channel>
</rss>