<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Elcaro</title>
    <description></description>
    <link>http://liulu.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>Websphere CTO谈REST和Project Zero</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/188169" style="color:red;">http://liulu.javaeye.com/blog/188169</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>本文转自 <a href="http://www.infoq.com/cn/interviews/project-zero-cuomo-cn" target="_blank">http://www.infoq.com/cn/interviews/project-zero-cuomo-cn#</a> <br /><br /><strong>概要</strong> <br />IBM研究员、WebSphere CTO Jerry Cuomo谈REST和Project Zero&mdash;&mdash;IBM新的RESTful应用（基于Groovy和PHP）mashup、脚本和开发工具。 <br /><br /><strong>个人简介</strong> <br />Jerry Cuomo是IBM研究员及WebSphere品牌的CTO。他已经为IBM效力20年，其成就包括在TCP/IP领域的突破性创新、实时协作软件和高性能事务处理系统。</p>
<p><strong>可以介绍下你自己以及最近你从事的工作吗？</strong> <br />嗨，大家好。我是Jerry Coumo，WebSphere的技术总监。至少在最近的六个月里，我一直沉浸在在Project Zero中。我最近十年一直在为WebSphere工作。我认为这对应用服务（applications serving）来说是相当了不起的10年。当你将敏捷开发与传统的应用服务结合在一起的时候，我认为我们每个人（从企业到个人）正在获得整个新的生产力水平。我很高兴能跨接这些世界，并且我认为在我喜欢谈及的Project Zero中有许多真正的关键概念和突破。 </p>
<p><br /><strong>什么是Project Zero？</strong> <br />用一个词来形容，那就是：敏捷。我们的目标就是要为创建面向Web的应用引入敏捷。我们正准备围绕三个方面进行创新。创新围绕着创建面向Web应用，从存在的RESTful服务、feeds和内容中装配和拼接新的应用，以使你从Web或者企业开发中解放出来，第三个方面就是执行这些应用。 <br /><br />让我对每一方面稍微多说一点，因为它们都很酷。我认为围绕着创建有两个主要的概念。第一个概念是动态脚本（dynamic scripting）。如何使你的项目变得敏捷？其实并没有必要在面向对象的结构环境中编写代码，而可以使用脚本。 <br /><br />在Project Zero中我们认识到了这一点，所以便引入了2种脚本语言。 <br /><br />在深入探讨脚本之前，我先说下Java。Java社区为我们提供了很好的服务，就像在IBM特别是WebSphere中那样。 Java充满了活力，也许能够继续辉煌十年。我们已经对Java的发展做了促进。现在Java已经成为了系统编程语言。它应该被用于实现Project Zero中精妙的部分，但我们希望你关于敏捷的第一次经验大部分来自动态脚本。 <br /><br />所以我们在Project Zero中提供了两种动态脚本用于选择。一个是为熟悉Java的人准备的&mdash;&mdash;脚本语言Groovy。我在博客上曾开玩笑说Groovy是Java的尼古丁贴剂（nicotine patch）。当你开始使用Groovy贴剂，我们就有一定的把握让你戒掉Java，转而接受动态脚本。因此，如果你想不再使用Java，但又想能访问你之前使用Java写的类或者方法，你可以用Groovy做到这一点。但是，我们将让你使用Groovy提供的更简洁的动态语法，就像Ruby和 Python一样。 <br /><br />另外，基于PHP的人气和内容。我们认为使用Project Zero，通过基于一个公共Java平台支撑的动态脚本语言Groovy和PHP，你的项目将会敏捷起来并且能按需编码。 <br /><br />那么，动态脚本是其一&hellip;&hellip;。另一方面的概念是：Project Zero是基于SOA架构构建的，并且这个架构是一个RESTful的架构。围绕着概念REST，我们已经做了约束和简化。在Project Zero中，你基本上只需要使用HTTP。当你在Zero中表示一个服务的时候，就代表你在用RESTful的方式或者REST派生方式表示服务。我们可以用RSS feed或者ATOM feed的方式表示服务；但Web是我们使用Zero构建的主要平台，而REST正是我们在Project Zero中构建的服务交互风格。 <br /><br />对此，我们同时考虑了现行的一些流行框架，并已经为此建立了一套约定。约定替代配置，因此如果你想要表示服务，并没有必要编码。Project Zero中有一套标准，如果你在构建服务的时候遵循它们，就会发生奇迹。将动态脚本和REST结合起来，现在你已经真正地理解了它！这是两个真正重要的因素。 <br /><br />另一部分是装配。对松耦合的系统来说，SOA的优点之一就是你可以从这些新近发布的服务中创建一套新的应用程序。在 Project Zero中我们会毫无疑问促进这个优点。正如我提到的，我们的服务模型是围绕着一个面向Web模型构建的，因此它的构建基于REST、feeds。那么现在要做的就是通过脚本、PHP或者Groovy编写程序，或者通过一套我们拥有的可视化编辑器设计，让你围绕刚刚创建或发布的基于Web面向Web的服务创建新的应用。或者可能重用其它来源的服务，比如来自Web或者你所在的企业。这就是关于装配的基本想法。现在我们用一些有趣的功能来拓宽这些想法。 <br /><br />如果你已经在Web中使用了其它技术来可视化地创建动态Web应用，那我们是支持这些可视化技术的。Zero中提供了管道（Pipe）类型的接口。我们的一些装配可视化工具并没有什么太大的区别，但我们现在要做的区分是建立在一个很简单的方法之上&mdash;&mdash;围绕流程的一些基本概念。不管我是否构造和装配数据流（data-flow）&mdash;&mdash;在数据流中我可以得到两个feeds、汇集这些feeds、归类这些feeds。这样，我不仅通过创建数据流来构建一个应用或者构造一个新的装配集，而且顺着流程嵌入了活动，也就是活动流。因此，对于合并feed、发送邮件或者SMS信息这样的服务，我可以使用可视化编辑的方式或者纯编码的方式将其混合匹配起来。我可以编写Groovy或者PHP脚步来获取feed，合并它、汇集它等等。能够根据先前创建的服务迅速地组装出新的应用，这非常强大，而且是对Project Zero敏捷特性的又一贡献。 <br /><br />第三部分是关于执行。正如我刚才所说的，Java世界充满了活力。我们围绕Project Zero所做的就是将执行动态脚步语言（也就是Groovy和PHP）的环境集中于Java上。在运行时我们可以做许多有趣的事情，来优化这些动态脚步语言的执行。能工作在这个领域之中，我真的感到很兴奋，特别是在为Websphere应用服务器在执行脚本可能性工作的这些年里。 <br /><br />什么是脚本？一份脚本有着非常精确的起点和终点。执行它，而后就会结束。很多运行在应用服务器之上的传统应用程序是为了长期运行而构建的。那长期运行会有什么样的问题呢？我们并不完美，所以在这些程序中会有一些细小的缺陷，而且随着时间的推移开始溃烂：内存泄露、线程吊起等等。这往往使应用程序运行时间越长越难驾驭。 <br /><br />Project zero的应用程序和执行环境倾向于采用运行随即结束（run-and-done）的特性。开始一个脚本，运行结束然后停止（Kill）这个脚本，如此开始一个新的脚本，运行它并停掉它。即使应用编写的不完美，其中的缺陷也是可以忽视的。如果应用中存在内存泄露，至少它不会对结果或者系统有明显的影响。我称这种缺陷为海森堡虫（HeisenBug）。我喜欢说Zero运行环境是对海森堡虫免疫的，因为有些我们通常在运行的服务器中看到的缺陷是可以绕过去的，例如通过运行和完成脚本模型。我们可以得到很多有趣的好处。 <br /><br />关于执行环境的另一部分，即Zero是一个面向Web的平台。我们知道如何来缩放网络应用，我们已经在Websphere中做了好一段时间。Web自然地缩放；REST是极好的缩放协议。我之前提到过句子的比喻，url是围绕内容的nounds、操作和动词。基于此很容易建立缓存规则，并且非常准确。在其中有许多缓存技术，而且有一些我们正明确地构建于Zero中，以协助你构建高性能可伸缩的应用。分区（Partitioning）、负载管理（workload management）、高可用性（high availability），在面向Web的背景下，我们知道如何做到这一点。我们在Project Zero运行时中构建了这些。Project Zero可以运行在普通的JVM上，不过我们也会对其（特别是IBM的虚拟机）进行增强，以更好地运行敏捷的脚本化应用。 <br /><br /><strong>什么类型的应用不适合使用Project Zero，并且你何时需要整合其它资源来进行实践？</strong> <br />当谈到典型的Zero式RESTful应用时，我通常会用句子来比喻。当你思考一个基于Zero的应用时，想一想英语中的句子。在句子中有名词、动词和形容词。我可以这样造一个句子。名词可能是&ldquo;照片&rdquo;，动词是&ldquo;观察或者读取&rdquo;这个照片，&ldquo;获取照片&rdquo;，并且形容词是照片的类型 &mdash;&mdash;JPEG格式的照片。这个句子是：&ldquo;读取JPGE格式的照片&rdquo;。在Zero中我可以表示这一点。名词是RESTful实体。那你如何来表示一个 RESTful实体？用URL：/something/photo。动词是&ldquo;获取&rdquo;，而在REST的术语中正好有四个主要的动作：get、post、 put和delete。这样句子就是&ldquo;get photo&rdquo;。数据类型是什么？可以是JPEG。想想构建这样的服务就像组织句子一样简单。通过这种机制快速的表示语句、表示服务和暴露内容是非常强大的，能使你的时间实现价值。 <br /><br />数据从何而来？脚本的内容从何而来？我认为一种情况（特别是对于企业情况）是，数据来自外在环境。当你想基于那些数据开始构建应用时，打比方说我有一个商业系统；我不建议在Zero中构建商业系统，而可以使用Zero的一种情况是构建一套应用程序。我们称其为情景应用（situational app）。你可能在年初并没有计划做这些应用，而是刚刚提出需求。在过去，你可能使用Lotus Notes和基于Lotus协作产品的工作平台，或者Microsoft Visual basic，或者诸如此类的东西来构建这些应用。我们有一些典型的老企业应用，它们产生着数据，现在你想通过新的视图查看数据，想用新的方式组合数据。可能会有多个来源的数据，一些企业数据，一些数据来自互联网，你想把那些数据集合起来给出新的透视图。你要做到这一点很快。 <br /><br />我没有必要规定你使用限制类型的应用程序，但当你尝试快速地完成某事而且数据来自外界时，可以说Project Zero是最有用的。 <br /><br /><strong>为什么强调REST？似乎IBM是WS*和以SOA风格行事的支持者。 <br /></strong>IBM，特别是软件集团（software group）中的我们，是SOA的幕后推动者。SOA是一种架构风格，我们认为其行之有效，具有成本效益，以及所有的这些特点。我们已经很清楚SOA是一种架构风格，还没有事实上的SOA实现。通过我们的产品，我们一直在提倡和推动基于WS*等一组产业标准的SOA实例。WA*提供了一套功能，是工业级强度的关键。而SOA非常适合于我们产品组合中的标准类型。但问题是：这是不是能一刀切？这是唯一的SOA实例化方式吗？绝对不是！ <br /><br /><br />REST让我兴奋的是&mdash;&mdash;如果按照80/20法则&mdash;&mdash;会有一系列的活动不需要严格遵照WS*的规定。REST让我兴奋的是我们认为它可以提供入门级的SOA。 <br /><br /><br />REST的好处是它就像我们日常呼吸的空气一样。它是围绕Web而产生，而Web就在我们的周围。这就转化成了各种有趣的事情：技能、基础设施，这些东西就在那里。能够以你已经有的经历为背景，来谈论SOA模型是非常有说服力的。我们可以使你非常快速地实现SOA，毫无疑问随着你的进步，你将会需要WS*，但是REST能给你一个起点。现在，我们如何来解读80/20规则，是80％的人在做20％的事情吗？ <br /><br /><br />各种各样关键的东西都可以通过REST表示。这让我们感到兴奋，而这也是与SOA有联系的地方。REST是围绕着松耦合概念构建的一种架构风格。如果你看到Ajax应用借助互联网上的HTTP通过JavaScript调用服务；这是构建松耦合系统的极好的例子，因而当我将基于 Ajax的架构作为SOA的例子谈论时，感到非常兴奋。不管你是否在企业当中，你都会承认这些事实，而且通过REST你可以开始了解SOA的精妙之处。 <br /><br /><br /><strong>一些人问到REST会超越WS*方法吗，或者你真正需要WS-*基础架构的哪些核心部件？</strong> <br />这使我有点紧张，因为REST之美在于它只做它擅长的工作。它多年来一直是这么做的。让我们更有条理地探讨一下，我之前提到了用句子来比喻如何思考REST的主要服务方面。我不想看到REST被复杂化，因为它的美妙之处在于它的简单。明确地划分SOA的风格，像RESTful SOA、企业级SOA，我认为是很重要的。 <br /><br />我们正在试图围绕企业级SOA完成的事情其本身就是很复杂的。例如试图整合支持同步和异步协议并有着不同架构的系统。这是现实中必须要处理的事情。我认为WS*的方式以及一些主题相关的标准是非常有效率的方式；但这些都是复杂的问题。我不想看到围绕REST的简单问题被引伸到某种程度试图解决其中的一些复杂问题，因为这样REST将不再是吸引我们的REST了。 <br /><br />政教分离是伟大的举措，因为我们有WS*、纯Web和REST。但一旦我们试图开始正规化REST，像&ldquo;REST对应的 WSDL是什么？这并不存在。&rdquo;让我们尝试保持句子结构，因为我们有WSDL，而且它对它所做的事情是有好处的。当需要严格定义的时候，我们有这样的能力。我见过客户非常好地使用这两种方式。他们开始通过WSDL定义服务，并通过这些切入点（entry point）以及REST暴露入口服务（entry service）。我认为两者都要生存的空间。两者的并存让我很高兴。我不想让一个事物变成另一个。 <br /><br /><strong>你是否支持远离WS*？</strong> <br />绝对不是，如果我给人这样的印象，那决不是我的本意。事实上REST是RESTful SOA的一种方式。另外，我要说REST在某种意义上并不特殊，它是Project Zero与生俱来的权利。我觉得Project Zero擅长于REST，但当我们看IBM软件集团和Webshpere中的整个产品组合，REST将是这些产品中不可或缺的一部分。以我们的流程服务器（process server）或者ESB为例，其中会提供REST入口，将会暴露产品的活动和功能：管理功能、通过REST接口监控产品。重申一下，REST就像空气一样，一切都在我们身边，我们将在产品中纳入这些。我们支持远离WS*？不。我们通过这些产品完全拥抱Web？是的。正如我之前，它们并不互相排斥。 <br /><br /><strong>你是否注意到云运算（cloud computing）成为了一个重要的新兴趋势，它将如何发展呢？</strong> <br />我完全认为这是一个新兴的趋势，正如我以前对Project Zero所说的那样，我觉得它在你的产品组合中有一种敏捷的能力，能让你充分利用这一点。 <br /><br />围绕着Web和云计算的精彩之处是能够用一个非常普遍的、可缩放的和统一的方式暴露内容。我们在鼓励企业暴露它们的内容，不管它是在防火墙之后还是之前，因为这是在解放数据。一旦数据得到解放，你便可以以此构建有趣的应用。不管是Flickr、Amazon、Google还是其它大企业，都在内部地暴露它们的传统公司数据，现在使数据（不管关系明显是否）联系起来的机会来了。 <br /><br />奇妙的是，通过解放数据，通过将数据放在人们手中，通过释放数据，也许我们将学到我们之前不知道的东西。我觉得这着实令人兴奋，我们已经一次次地看到过这种情形。 <br /><br />我们对它将如何发展有非常明确的认识。我们在数据之上有相应的视图。通过解放数据和创建敏捷环境，你可以创建新型的应用程序，可能会得到数据的新型透视图。我认为云的概念和通过Web普遍暴露的API将释放新的机遇、新的前景和新的商机；我认为这是真正让人兴奋的地方。 <br /><br /><strong>IBM如何将REST纳入到它的产品策略中？ <br /></strong>我们现在正处于一种状态：在Web中REST就像空气一样普遍存在。我们希望它能够在我们的产品中得到普及。我们所能看到的就是贯穿于我们产品线的发布卖点。我将在谈及WebSphere产品线时，特别地介绍其中的REST能力，就像我们产品的固有部分那样。 <br /><br />那我们的一个经典产品来说：WebSphere MQ，我们获奖的消息产品。在最新发布的MQ上，我们有能力通过REST来暴露MQ的功能。首先，现在你不需要通过MQ客户端来驱动MQ中的工作了。如果想在队列中发布一条信息，你所需的就是一个能通过REST发布消息的Web环境，无论是Javascript应用、PHP还是Zero应用。现在你可以通过REST与MQ进行交互。如果你想做类似于检查队列中内容的事情；对此有专门的REST接口提供。 <br /><br />REST就像空气一样：人人都有浏览器，人人都有基于Javascript的环境。现在通过REST，通过在那里明摆着的无所不在的SOA接口，你可以开始与我们的中间件直接交互。 <br /><br />可以来浏览下我们的产品组合：WebSphere应用服务器，我们有了一些所谓的Web2.0功能包，它将根据REST、 Aton和Ajax comet提供功能&mdash;&mdash;从服务器动态更新返回到Ajax客户端，并允许你在JEE应用之上混合RESTful风格的接口。我可以继续列举我们的产品组合，从WebSphere ESB到Datapower应用，都根据这些技术加入功能来支持RSETful接入口（on-ramp）：比如，我想向ESB中放入一条消息，不管是 WebSphere基于Java的ESB还是基于应用的ESB，都有RESTful接口提供支持。 <br /><br />这些并不会作为附加功能提供，而是作为的完成功能的一种方式，成为环绕在WebSphere商标周围的核心技术的一部分。 <br /><br /><strong>开发Project Zero有什么新的策略，对于IBM来说这似乎是个新的问题，打算开放源码？它的许可证是什么样子的？</strong> <br />我经常被问及这个问题。对此，我喜欢的思考方式是&hellip;&hellip;在IBM中我们已经成立孵化器项目好多年了，而且我们还会进行相当长的时间。传统上，我们在防火墙之后进行我们的孵化器项目。我们将这个时期用于创新；然后我们可能选择一些客户对他们公布这些创新。有时候我们感到很惊讶；也许它并没有那么有新意，或者只是我们心中的创新。我们应该着重于改革创新的缺陷。就像将达尔文进化论引入软件开发一样，创意也要适者生存。我们想将我们的创意展示给感兴趣的社区，不管它是不是IBM的客户。只要他们对我们的课题感兴趣，这都没关系。从他们那里获取信息，建立紧密的反馈途径，已使我们创新的东西不仅让我们自身感兴趣，而且潜在的客户也感兴趣。 <br /><br />Rational与我们谈论的Zero使用了相同的方法；我们为Rational划分了一个叫做Jazz的项目，它处于和 Zero相同的情况。其理念是&ldquo;在可视墙后面孵化，并公开结果&rdquo;。我将其比喻成这些日子里雨后春笋般冒出来的一些餐馆，你进入餐馆并有权在餐馆中部观看厨师烹饪。对我来说，这与Project Zero有几分相像。我们不是在闭门造车，我们实际上是在开放式烹饪，食物就在你可以看到的面前。 <br /><br />在Project Zero中你可以看到源码，你可以与构建源码的人们通过论坛和博客与他们交流。你可以跟踪我们的里程碑。你可以影响项目、参与投票、发送意见、下载并体验代码。 <br /><br />我还没有说到任何关于许可的问题，因为我想在这里保持政教分离。对我而言，能够开发可视化并公之于众是某种开发风格。这是我们开发这个构思的方式。我们想保持公开。为了免费而政教分离，我认为是我们正在试图去做的事情。 <br /><br />Project Zero是免费的吗？它的授权许可有什么特征？它并不是无条件免费的。它可以免费体验，并在一定程度上免费使用，但是从某种意义上我们是要卖软件的。我们努力尽早得到人们的反馈。不管是传统的客户还是非传统的客户，我们对其反馈表示感谢。 <br /><br />现在我们可以谈论下一个问题了：Project Zero采用哪种许可？对成长中的小规模经营者，和为预期投资做前期调研的人们，在许可方面我们自然会非常的灵活自由。当在产品中运行了我们的代码时，就需要和我们的销售团队商讨许可的问题。 <br /><br />其主要目标是我们如何使Project Zero保持可见、开放、位于防火墙之前而不是其后。将我们的思想释放，建立用户社区，让达尔文进化论发挥作用。 <br /><br />我们的产品和品牌有着很多的忠实用户，我们不希望他们仅仅在最后对此感到诧异，我们想提前放出项目。希望能尽快发布创新的解决方案给客户，而且我们认为这是奇妙世界中开源和商业软件开发之间的有趣组合。那它是黑还是白呢（译注：黑白分指前面提到的开源软件和商业软件）？我认为它是有趣的灰色，我们正在对此进行试验。到目前为止，试验进行顺利，我们已经有大约50000名独立访问者和大约135000次下载。 <br /><br /><strong>最后对REST和Project Zero你还有什么要说的？</strong> <br />正如我所说的，对于IBM和WebSphere的所有人来说这是一个真正激动人心的时刻。Project Zero真正地触及了一些令人感兴趣的东西和新的概念，其都说明了我们如何来构建产品（使用Project Zero，它们都位于防火墙的可见端），通过使用像Groovy这样的动态脚步语言初次尝试使Web脚本化，依据RESTful架构构建，并真正地用于系统核心的构建，围绕着通过mash-up装配应用有着令人感兴趣的技术，真正地运行在基于动态脚本语言的执行环境上。 <br /><br />动态脚本、REST和Project Zero真乃天作之合，感觉棒极了。大体上，它恰好适合我们对Websphere的探究，也非常适合作为进入SOA的入口匝道，使行业围绕着Web方向前进发展 。对这个行业和IBM来说这都是天作之合。这真是令人兴奋的时刻，点击projectzero.org，并感谢你们的支持！</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/188169#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/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, 29 Apr 2008 20:20:06 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/188169</link>
        <guid>http://liulu.javaeye.com/blog/188169</guid>
      </item>
      <item>
        <title>oracle 查询周的第一天日期</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/163273" style="color:red;">http://liulu.javaeye.com/blog/163273</a>&nbsp;
          发表时间: 2008年02月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          项目的开发中需要用到一个查询周的第一天日期的函数 搜索N久很难找到解决的方法 只要自己写一个先用着 代码如下 a_week格式为 'YYYYIW' 如 '200801'表示2008年的第一周<br />周使用IW方式计算 如果一年当中第52周别之后至当年的12月31日之间，还有大于或等于4天的话，则定为当年的第53周，否则剩余这些天数被归为下一年的第1周<br /><pre name="code" class="sql">CREATE OR REPLACE FUNCTION f_week_to_date(a_week varchar2) RETURN CHAR IS
  v_first_date   char(10);
  v_date_of_week number(1);

BEGIN
  select to_char(to_date(substr(a_week, 1, 4) || '0101', 'yyyymmdd'), 'D')
    into v_date_of_week
    from dual;
  v_date_of_week := v_date_of_week - 1;
  if v_date_of_week &lt;= 4 then
    select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') +
                   SUBSTR(a_week, 5, 2) * 7 - 7 - v_date_of_week + 1,
                   'yyyy-mm-dd')
      into v_first_date
      from dual;
  else
    select TO_CHAR(TO_DATE(SUBSTR(a_week, 1, 4) || '0101', 'yyyymmdd') +
                   SUBSTR(a_week, 5, 2) * 7  - v_date_of_week + 1,
                   'yyyy-mm-dd')
      into v_first_date
      from dual;
  end if;

  return v_first_date;

END;</pre>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/163273#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Feb 2008 10:49:30 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/163273</link>
        <guid>http://liulu.javaeye.com/blog/163273</guid>
      </item>
      <item>
        <title>被飞行棋搞了一把</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/161723" style="color:red;">http://liulu.javaeye.com/blog/161723</a>&nbsp;
          发表时间: 2008年02月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大过年的没事干 跟两个朋友玩QQ的飞行棋 <br /><br />飞行棋是可以4个人玩 当另外两个人都开始的时候 我从一个座位换到另外的一个座之后没有开始就自动托管开始了 然后玩了有三分钟的样子系统提示我长时间未准备 把我T出了房间 并扣去了1000分<br /><br />我哭啊<img src="/images/smiles/icon_cry.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/161723#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 08 Feb 2008 22:56:25 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/161723</link>
        <guid>http://liulu.javaeye.com/blog/161723</guid>
      </item>
      <item>
        <title>String转XML的方法</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/158530" style="color:red;">http://liulu.javaeye.com/blog/158530</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          w3c的dom<br /><pre name="code" class="java">DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
  DocumentBuilder builder;
   try    {
   builder  =  factory.newDocumentBuilder();
   Document doc  =  builder.parse( new  ByteArrayInputStream(str.getBytes())); 
  }   catch  (ParserConfigurationException e)   {
    //  TODO Auto-generated catch block 
    e.printStackTrace();
  }   catch  (SAXException e)   {
    //  TODO Auto-generated catch block 
    e.printStackTrace();
  }   catch  (IOException e)   {
    //  TODO Auto-generated catch block 
    e.printStackTrace();
  } </pre><br /><br />dom4j<br /><pre name="code" class="java">SAXReader saxReader = new SAXReader();
        Document document;
        try {
            document = saxReader.read(new ByteArrayInputStream(str.getBytes()));
            Element incomingForm = document.getRootElement();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }</pre>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/158530#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jan 2008 08:41:44 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/158530</link>
        <guid>http://liulu.javaeye.com/blog/158530</guid>
      </item>
      <item>
        <title>Linux解压缩常用命令</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/157645" style="color:red;">http://liulu.javaeye.com/blog/157645</a>&nbsp;
          发表时间: 2008年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          命令： gzip <br />格式： gzip 选项 文件目录列表 <br />功能： 用Lempel-ziv编码压缩文件 <br />选项： -c 压缩结果写入标准输出，原文件保持不变。缺省时gzip将原文件压缩为.gz文件，并删除原文件。<br /><br />-v 输出处理信息。<br /><br />-d 解压缩指定文件。<br /><br />-t 测试压缩文件的完整性。<br /> <br />解释： 值得一提的是，gzip比compress压缩更加有效。 <br />实例： 目的：压缩/mnt/lgx/a1.doc<br /><br />命令：＃gzip -v /mnt/lgx/a1.doc<br /><br />结果：产生a1.doc.gz的压缩文件<br /> <br /><br /><br />命令： gunzip <br />格式： gunzip 选项 文件列表 <br />功能： 解压缩用gzip命令（以及compress和zip命令）压缩过的文件 <br />选项： -c 将输出写入标准输出，原文件保持不变。缺省时，gunzip将压缩文件变成解压缩文件。<br /><br />-l 列出压缩文件中的文件而不解压缩。<br /><br />-r 递归解压缩，深入目录结构中，解压缩命令行变元所指定目录中的所有子目录内的文件。<br /> <br />实例： 目的：解压缩/mnt/lgx/a1.doc.gz<br /><br />命令：＃gunzip /mnt/lgx/a1.doc.gz<br /> <br /><br /><br />命令： tar <br />格式： tar 选项 文件目录列表 <br />功能： 对文件目录进行打包备份 <br />选项： -c 建立新的归档文件<br /><br />-r 向归档文件末尾追加文件<br /><br />-x 从归档文件中解出文件<br /><br />-O 将文件解开到标准输出<br /><br />-v 处理过程中输出相关信息<br /><br />-f 对普通文件操作<br /><br />-z 调用gzip来压缩归档文件，与-x联用时调用gzip完成解压缩<br /><br />-Z 调用compress来压缩归档文件，与-x联用时调用compress完成解压缩<br /> <br />实例1： 目的：用tar打包一个目录下的文件<br /><br />命令：＃tar -cvf /mnt/lgx/a1.doc<br /><br />结果：产生一个以.tar为扩展名的打包文件<br /> <br />实例2： 目的：用tar解开打包文件<br /><br />命令：＃tar -xvf /mnt/lgx/a1.doc.tar<br /><br />附加说明：在通常情况下，tar打包与gzip（压缩）经常联合使用，效果更好。方法是：<br /><br />首先用tar打包，如：＃tar -cvf /mnt/lgx/a1.doc （产生a1.doc.tar文件）<br /><br />然后用gzip压缩a1.doc.tar文件，如：＃gzip /mnt/lgx/a1.doc.tar （产生a1.doc.tar.gz文件）<br /> <br />实例3： 目的：解压a1.doc.tar.gz文件<br /><br />方法1：<br /><br />＃gzip -dc /mnt/lgx/a1.doc.tar.gz （产生a1.doc.tar文件）<br /><br />＃tar -xvf /mnt/lgx/a1.doc.tar （产生a1.doc文件）<br /><br />这两次命令也可使用管道功能，把两个命令合二为一：<br /><br />＃gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf<br /><br />方法2：使用tar提供的自动调用gzip解压缩功能<br /><br />＃tar -xzvf /mnt/lgx/a1.doc.tar.gz<br /><br />经过tar打包后，也可用compress命令压缩（注：gzip比compress压缩更加有效），产生一个以.tar.Z的文件，在解包时，可先用“uncompress 文件名”格式解压，然后用“tar -xvf 文件名”解包。也可直接调用“tar -Zxvf 文件名”解包。
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/157645#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jan 2008 18:00:55 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/157645</link>
        <guid>http://liulu.javaeye.com/blog/157645</guid>
      </item>
      <item>
        <title>修改grub配置文件调换ubuntu、windows启动顺序</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/157544" style="color:red;">http://liulu.javaeye.com/blog/157544</a>&nbsp;
          发表时间: 2008年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          方法一、在这个文件中查找以title打头的行，并记下来数字，找到windows那一行的数字是多少？假设是5，那么你就在文件头部有一个”default 0″这一行中改成4。保存重新启动即可。<br />方法二、找到类似如下内容的行，全部剪切：<br /><br /># This entry automatically added by the Debian installer for a non-linux OS<br /># on /dev/sda1<br />title Microsoft Windows XP Professional<br />root (hd0,0)<br />savedefault<br />makeactive<br />chainloader +1<br /><br />移动到类似这两行的地方的中间的空格行里面：<br /><br />## ## End Default Options ##<br /><br />title Ubuntu, kernel 2.6.20-15-generic<br /><br />保存重新启动也可以。
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/157544#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jan 2008 09:51:17 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/157544</link>
        <guid>http://liulu.javaeye.com/blog/157544</guid>
      </item>
      <item>
        <title>vi编辑器的文字说明</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/157538" style="color:red;">http://liulu.javaeye.com/blog/157538</a>&nbsp;
          发表时间: 2008年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          模式：命令模式，编辑模式，末行模式。<br /><br />切换方式：命令模式→i→编辑模式，编辑模式→Esc→命令模式，命令模式→：→末行模式。<br /><br />功能：<br /><br />    命令模式(Command Mode)：  控制光标移动，删除字符，段落复制。<br />    编辑模式(Insert Mode)：   新增文字及修改文字。<br />    末行模式(Last Line Mode)：保存文件，离开vi，以及其他设置。<br /><br /><br />命令模式命令<br /><br />命令       说明<br /> h           将光标向左移动一格<br /> l           将光标向右移动一格<br /> j           将光标向下移动一格<br /> k           将光标向上移动一格<br /> 0           数字0，将光标移动到该行的行首<br /> $           将光标移动到该行的行末<br /> H           将光标移动到该屏幕的顶端<br /> M           将光标移动到该屏幕的中间<br /> L           将光标移动到该屏幕的底端<br /> gg          将光标移动到文章的首行<br /> G           将光标移动到文章的尾行<br />w或W         将光标移动到下一单词<br /> x           删除光标所在处的字符<br /> X           删除光标前的字符<br /> dd          删除光标所在行<br />*dd          从光标所在行向下删除*行，*为数字<br /> D           删除光标所在处到行尾<br /> r           取代光标处的一个字符<br /> R           从光标处向后替换，按Esc结束<br /> u           取消上步的操作<br /> U           取消目前的所有操作<br /> yy          复制光标所在行<br /> p           将复制的内容放在光标所在行的下行<br /><br /><br />编辑模式命令<br /><br />命令       说明<br /> a           在光标后插入文本<br /> A           在光标所在行后插入文本<br /> i           在光标前插入文本<br /> I           在光标所在行前插入文本<br /> o           在光标所在行下插入新行(小写字母o)<br /> O           在光标所在行上插入新行(大写字母O)<br /><br /><br />末行命令<br /><br />命令       说明<br /> e           创建新文件<br /> n           加载新文件<br /> w           保存文件<br /> !           强行操作<br /> w!          强行保存文件<br /> q           退出<br /> q!          强行退出<br /> wq          保存退出<br /> wq!         强行保存退出<br /> set nu      显示行号<br /> set nonu    不显示行号<br /> /*          /搜索，*任意字符串<br /> ?           同上
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/157538#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jan 2008 09:22:51 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/157538</link>
        <guid>http://liulu.javaeye.com/blog/157538</guid>
      </item>
      <item>
        <title>几个比较有用的webservice</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/138733" style="color:red;">http://liulu.javaeye.com/blog/138733</a>&nbsp;
          发表时间: 2007年11月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>服务1：<a href="http://webservice.jaron.cn/"><u><font color="#0000ff">http://<font size="+0">webservice</font>.jaron.cn</font></u></a> &nbsp;
<ul>
    <li><a href="http://webservice.jaron.cn/default.asmx?op=HistoryEvent"><strong><font color="#6699cc"><u>HistoryEvent</u></font></strong></a> <span><br />
    <h3>返回指定日期下的历史事件</h3>
    <p>参数1：SetDateTime(<u>DataTime</u>)<br />
    参数2：LicenceKey 授权码(<u>String</u>) <a href="http://webservice.jaron.cn/Registe.Aspx" target="_blank" style="COLOR: #ff0000"><strong><u>免费注册授权码</u></strong></a><br />
    返回：DataSet</p>
    <p>&nbsp; </p>
    </span></li>
    <li><a href="http://webservice.jaron.cn/default.asmx?op=IP2Area"><strong><font color="#6699cc"><u>IP2Area</u></font></strong></a> <span><br />
    <h3>返回ＩＰ地址所在的城市</h3>
    <p>参数1：IPAddress(<u>String</u>)<br />
    参数2：LicenceKey 授权码(<u>String</u>) <a href="http://webservice.jaron.cn/Registe.Aspx" target="_blank" style="COLOR: #ff0000"><strong><u>免费注册授权码</u></strong></a>(<u>String</u>)<br />
    返回：string[]</p>
    <p>&nbsp; </p>
    </span></li>
    <li><a href="http://webservice.jaron.cn/default.asmx?op=IdentityCard"><strong><font color="#6699cc"><u>IdentityCard</u></font></strong></a> <span><br />
    <h3>返回身份证前六位所在的城市</h3>
    <p>参数1：IdentityCardID 身份证号码前六位(<u>String</u>)<br />
    参数2：LicenceKey 授权码(<u>String</u>) <a href="http://webservice.jaron.cn/Registe.Aspx" target="_blank" style="COLOR: #ff0000"><strong><u>免费注册授权码</u></strong></a><br />
    返回：城市名称 string</p>
    <p>&nbsp; </p>
    </span></li>
    <li><a href="http://webservice.jaron.cn/default.asmx?op=MobileNumberConvert"><strong><font color="#336699"><u>MobileNumberConvert</u></font></strong></a> <span><br />
    <h3>返回手机号码段归属地</h3>
    <p>参数1：MobileNumber 手机号码前七位(<u>String</u>)<br />
    参数2：LicenceKey 授权码(<u>String</u>) <a href="http://webservice.jaron.cn/Registe.Aspx" target="_blank" style="COLOR: #ff0000"><strong><u>免费注册授权码</u></strong></a><br />
    返回：string[0] 归属地 string[1] 卡类型</p>
    <p>&nbsp;</p>
    </span></li>
</ul>
<p>服务2：<a href="http://webservice.jaron.cn/weather.asmx"><u><font color="#800080">http://<font size="+0">webservice</font>.jaron.cn/weather.asmx</font></u></a> </p>
<ul>
    <li><a href="http://webservice.jaron.cn/weather.asmx?op=GetWeather"><strong><font color="#6699cc"><u>GetWeather</u></font></strong></a> <span><br />
    <h3>返回24小时<font size="+0">天气预报</font></h3>
    参数1：CityName 中文城市名称(<u>DataTime</u>)<br />
    参数2：LicenceKey 授权码(<u>String</u>) <a href="http://webservice.jaron.cn/Registe.Aspx" target="_blank" style="COLOR: #ff0000"><strong><u>免费注册授权码</u></strong></a><br />
    返回：DataSet </span></li>
</ul>
授权验证码可以是任意字符</div>
<div>&nbsp;</div>
<div>
<div>
<h4>实用Web Service</h4>
<div>
<div><strong><font size="+0">天气预报</font></strong>地址：<a href="http://www.wopos.com/webservice/weather.asmx"><u><font color="#800080">http://www.wopos.com/<font size="+0">webservice</font>/weather.asmx</font></u></a></div>
<div>userid: test<br />
pwd: wopos<br />
<strong>手机归属地<br />
</strong>地址：<a href="http://www.wopos.com/webservice/Mobile.asmx"><u><font color="#800080">http://www.wopos.com/<font size="+0">webservice</font>/Mobile.asmx</font></u></a><br />
介绍：使用 getMobileArea(mobileCode) mobileCode-手机号码或前7位</div>
<div><strong>股票走势图<br />
</strong>地址：<a href="http://www.wopos.com/webservice/Stock.asmx"><u><font color="#0000ff">http://www.wopos.com/<font size="+0">webservice</font>/Stock.asmx</font></u></a><br />
介绍：使用 getStockChart(StockCode) StockCode-股票代码，返回值为图片的HTTP地址.</div>
<div>
<p><strong>IP地址查询<br />
</strong>地址：<a href="http://www.wopos.com/webservice/ips.asmx"><u><font color="#0000ff">http://www.wopos.com/<font size="+0">webservice</font>/ips.asmx</font></u></a><br />
介绍：使用 getIParea(ip)方法返回IP所在地，使用AddIPRange(startIP,EndIP,AreaInfo)增加新的IP地址信息,使用 IpToInt 和 IntToIp可对IP地址从字符串到整型的互相转换. </p>
<p><strong>成语典故<br />
</strong>地址：<a href="http://www.wopos.com/webservice/chengyu.asmx"><u><font color="#800080">http://www.wopos.com/<font size="+0">webservice</font>/chengyu.asmx</font></u></a><br />
介绍：<br />
使用 ChengYuDianGu(chengyu)方法，参数为成语或成语的拼音缩写。如返回多个成语以*_*分隔 </p>
<p><strong>生成验证码图像<br />
</strong>地址：<a href="http://www.wopos.com/webservice/vimg.asmx"><u><font color="#800080">http://www.wopos.com/<font size="+0">webservice</font>/vimg.asmx</font></u></a><br />
介绍：使用 GetVerifyImg(str4,Lenght,Width,Style)生成一张字符图像，用于注册、发贴等场合做图像验证。后面三个参数为保留参数，暂时无效，用于以后扩充。 目前的很简单,仅供测试 </p>
<p><strong>RSS种子生成</strong><br />
地址：<a href="http://www.wopos.com/webservice/Rss.asmx"><u><font color="#800080">http://www.wopos.com/<font size="+0">webservice</font>/Rss.asmx</font></u></a> <br />
介绍：使用 OutPutRss()方法：Rss Item数据项以DataTable 方式提供。数据项数不能超过100调用后直接输出RSS2.0 XML。<br />
例：<br />
Imports System.Data&nbsp; </p>
<p><u><font color="#800080">王牌网提供的几个实用Web Service文档（www.wopos.com）</font></u></p>
</div>
</div>
</div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/138733#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 Nov 2007 12:13:30 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/138733</link>
        <guid>http://liulu.javaeye.com/blog/138733</guid>
      </item>
      <item>
        <title>vb.net常用函数</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/138679" style="color:red;">http://liulu.javaeye.com/blog/138679</a>&nbsp;
          发表时间: 2007年11月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Abs(number) 取得数值的绝对值。  <br /><br />Asc(String) 取得字符串表达式的第一个字符ASCII 码。  <br /><br />Atn(number) 取得一个角度的反正切值。  <br /><br />CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。  <br /><br />CBool(expression) 转换表达式为Boolean 型态。  <br /><br />CByte(expression) 转换表达式为Byte 型态。  <br /><br />CChar(expression) 转换表达式为字符型态。  <br /><br />CDate(expression) 转换表达式为Date 型态。  <br /><br />CDbl(expression) 转换表达式为Double 型态。  <br /><br />CDec(expression) 转换表达式为Decimal 型态。  <br /><br />CInt(expression) 转换表达式为Integer 型态。  <br /><br />CLng(expression) 转换表达式为Long 型态。  <br /><br />CObj(expression) 转换表达式为Object 型态。  <br /><br />CShort(expression) 转换表达式为Short 型态。  <br /><br />CSng(expression) 转换表达式为Single 型态。  <br /><br />CStr(expression) 转换表达式为String 型态。  <br /><br />Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引值来选择并传回所设定的参数。  <br /><br />Chr(charcode) 以ASCII 码来取得字符内容。  <br /><br />Close(filenumberlist) 结束使用Open 开启的档案。  <br /><br />Cos(number) 取得一个角度的余弦值。  <br /><br />Ctype(expression, typename) 转换表达式的型态。  <br /><br />DateAdd(dateinterval, number, datetime) 对日期或时间作加减。  <br /><br />DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。  <br /><br />DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。  <br /><br />DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。  <br /><br />DateValue(datetime) 取得符合国别设定样式的日期值，并包含时间。  <br /><br />Day(datetime) 依接收的日期参数传回日。  <br /><br />Eof(filenumber) 当抵达一个被开启的档案结尾时会传回True。  <br /><br />Exp(number) 依接收的参数传回e 的次方值。  <br /><br />FileDateTime(pathname) 传回档案建立时的日期、时间。  <br /><br />FileLen(pathname) 传回档案的长度，单位是Byte。  <br /><br />Filter(sourcearray, match[, include[, compare]]) 搜寻字符串数组中的指定字符串，凡是数组元素中含有指定字符串，会将它们结合成新的字符串数组并传回。若是要传回不含指定字符串的数组元素，则include 参数设为False。compare 参数则是设定搜寻时是否区分大小写，此时只要给TextCompare 常数或1 即可。  <br /><br />Fix(number) 去掉参数的小数部分并传回。  <br /><br />Format(expression[, style[, firstdayofweek[, firstweekofyear]]]) 将日期、时间和数值资料转为每个国家都可以接受的格式。  <br /><br />FormatCurrency(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 将数值输出为金额型态。numdigitsafterdecimal 参数为小数字数，includeleadingdigit 参数为当整数为0 时是否补至整数字数。  <br /><br />FormatDateTime(date[,namedformat]) 传回格式化的日期或时间数据。  <br /><br />FormatNumber(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回格式化的数值数据。Numdigitsafterdecimal 参数为小数字数，includeleadingdigit 参数为当整数为0 时是否补至整数字数。  <br /><br />FormatPercent(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回转换为百分比格式的数值数据。numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。  <br /><br />GetAttr(filename) 传回档案或目录的属性值。  <br /><br />Hex(number) 将数值参数转换为16 进制值。  <br /><br />Hour(time) 传回时间的小时字段，型态是Integer。  <br /><br />Iif(expression, truepart, falsepart) 当表达式的传回值为True 时执行truepart 字段的程序，反之则执行falsepart 字段。  <br /><br />InStr([start, ]string1, string2) 搜寻string2 参数设定的字符出现在字符串的第几个字符，start 为由第几个字符开始寻找，string1 为欲搜寻的字符串，string2 为欲搜寻的字符。  <br /><br />Int(number) 传回小于或等于接收参数的最大整数值。  <br /><br />IsArray(varname) 判断一个变量是否为数组型态，若为数组则传回True，反之则为False。  <br /><br />IsDate(expression) 判断表达式内容是否为DateTime 型态，若是则传回True，反之则为False。  <br /><br />IsDbNull(expression) 判断表达式内容是否为Null，若是则传回True，反之则为False。  <br /><br />IsNumeric(expression) 判断表达式内容是否为数值型态，若是则传回True，反之则为False。  <br /><br />Join(sourcearray[, delimiter]) 将字符串数组合并唯一个字符串，delimiter 参数是设定在各个元素间加入新的字符串。  <br /><br />Lcase(string) 将字符串转换为小写字体。  <br /><br />Left(string, length) 由字符串左边开始取得length 参数设定长度的字符。  <br /><br />Len(string) 取得字符串的长度。  <br /><br />Log(number) 取得数值的自然对数。  <br /><br />Ltrim(string) 去掉字符串的左边空白部分。  <br /><br />Mid(string, start[, length]) 取出字符串中strat 参数设定的字符后length 长度的字符串，若length 参数没有设定，则取回start 以后全部的字符。  <br /><br />Minute(time) 取得时间内容的分部分，型态为Integer。  <br /><br />MkDir(path) 建立一个新的目录。  <br /><br />Month(date) 取得日期的月部分，型态为Integer。  <br /><br />MonthName(month) 依接收的月份数值取得该月份的完整写法。  <br /><br />Now() 取得目前的日期和时间。  <br /><br />Oct(number) 将数值参数转换为8 进制值。  <br /><br />Replace(expression, find, replace) 将字符串中find 参数指定的字符串转换为replace 参数指定的字符串。  <br /><br />Right(string,length) 由字符串右边开始取得length 参数设定长度的字符。  <br /><br />RmDir(path) 移除一个空的目录。  <br /><br />Rnd() 取得介于0 到1 之间的小数，如果每次都要取得不同的值，使用前需加上Randomize 叙述。  <br /><br />Rtrim(string) 去掉字符串的右边空白部分。  <br /><br />Second(time) 取得时间内容的秒部分，型态为Integer。  <br /><br />Sign(number) 取得数值内容是正数或负数，正数传回1，负数传回-1，0 传回0。  <br /><br />Sin(number) 取得一个角度的正弦值。  <br /><br />Space(number) 取得number 参数设定的空白字符串。  <br /><br />Split(expression[, delimiter]) 以delimiter 参数设定的条件字符串来将字符串分割为字符串数组。  <br /><br />Sqrt(number) 取得一数值得平方根。  <br /><br />Str(number) 将数字转为字符串后传回。  <br /><br />StrReverse(expression) 取得字符串内容反转后的结果。  <br /><br />Tan(number) 取得某个角度的正切值。  <br /><br />TimeOfDay() 取得目前不包含日期的时间。  <br /><br />Timer() 取得由0:00 到目前时间的秒数，型态为Double。  <br /><br />TimeSerial(hour, minute, second) 将接收的参数合并为一个只有时间Date 型态的数据。  <br /><br />TimaValue(time) 取得符合国别设定样式的时间值。  <br /><br />Today() 取得今天不包含时间的日期。  <br /><br />Trim(string) 去掉字符串开头和结尾的空白。  <br /><br />TypeName(varname) 取得变量或对象的型态。  <br /><br />Ubound(arrayname[, dimension]) 取得数组的最终索引值，dimension 参数是指定取得第几维度的最终索引值。  <br /><br />Ucase(string) 将字符串转换为大写。  <br /><br />Val(string) 将代表数字的字符串转换为数值型态，若字符串中含有非数字的内容则会将其去除后，合并为一数字。  <br /><br />Weekday(date) 取的参数中的日期是一个星期的第几天，星期天为1、星期一为2、星期二为3 依此类推。  <br /><br />WeekDayName(number) 依接收的参数取得星期的名称，可接收的参数为1 到7，星期天为1、星期一为2、星期二为3 依此类推。
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/138679#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 Nov 2007 09:28:49 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/138679</link>
        <guid>http://liulu.javaeye.com/blog/138679</guid>
      </item>
      <item>
        <title>重装IIS后 web出现  使用 XSL 样式表无法查看 XML 输入</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/137947" style="color:red;">http://liulu.javaeye.com/blog/137947</a>&nbsp;
          发表时间: 2007年11月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          重装IIS后发现发布的网页无法打开了  提示如下<br /><br />无法显示 XML 页。 <br />使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮，或以后重试。 <br /><br /><br />--------------------------------------------------------------------------------<br /><br />名称以无效字符开头。处理资源 'http://localhost/ziboWeb/ZiboService.asmx' 时出错。第 1 行，位置: 2 <br /><br />&lt;%@ WebService Language="vb" CodeBehind="~/App_Code/ZiboService.vb" Class="Service" %><br />-^<br /><br /><br />解决办法：运行vs2005命令行（开始/程序/vs2005/tools），打开命令提示符，或者直接在cmd下键入该路径 如下<br />E:\Program Files\Microsoft Visual Studio 8\VC><br /><br />运行aspnet_regiis.exe /i 就搞定了<br /><br />E:\Program Files\Microsoft Visual Studio 8\VC>aspnet_regiis.exe /i<br />开始安装 ASP.NET (2.0.50727)。<br />.................<br />ASP.NET (2.0.50727)安装完毕。
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/137947#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 Nov 2007 22:23:10 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/137947</link>
        <guid>http://liulu.javaeye.com/blog/137947</guid>
      </item>
      <item>
        <title>IIS找不到指定的元数据解决方法</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/137751" style="color:red;">http://liulu.javaeye.com/blog/137751</a>&nbsp;
          发表时间: 2007年11月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近新装的系统IIS经常出现问题，重新安装也不可以，开始说找不到指定的元数据，找了好几天，原来是都是更新文件WindowsXP-KB939373-x86-CHS.exe补丁惹的祸。解决方法，开始——控制面板——添加删除程序     把显示更新选上，然后找到KB939373,卸载即可。
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/137751#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 03 Nov 2007 12:31:21 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/137751</link>
        <guid>http://liulu.javaeye.com/blog/137751</guid>
      </item>
      <item>
        <title>oracle中断session</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/136257" style="color:red;">http://liulu.javaeye.com/blog/136257</a>&nbsp;
          发表时间: 2007年10月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一个用户进程偶尔会挂起或占用过多资源而拒绝其它会话。如果 DBA 依然能够访问数据库，通常可以发出以下查询<br />SELECT S.USERNAME,S.OSUSER,S.SID,S.SERIAL#,P.SPID FROM V$SESSION S,V$PROCESS P WHERE<br />S.PADDR=P.ADDR AND S.USERNAME IS NOT NULL;<br /><br />通过 ALTER SYSTEM KILL SESSION 'SID,SERIAL#' 命令来杀SESSION<br /><br />要杀掉已锁的SESSION，WINDOWS下可以通过下载诸如QUICK SLICE等命令行工具，在命令行中直接执行ORAKILL &lt;SID>&lt;SPID>即可。不利用这些工具，则要为ORAKILL命令提供更多的的参数，诸如相应的WINDOWS线程等。<br /><br />在网上也搜索到了一些相关的信息<br /><br />===================================================================================================<br />处理方法一 ：<br /><br />1.SELECT saddr,sid,serial#,paddr,username,status FROM v$session WHERE username IS NOT NULL<br />example:saddr,sid,serial#,paddr,username,status FROM v$session WHERE username = 'XNJW0419' ;<br />SADDR SID SERIAL# PADDR USERNAME STATUS <br />-------- ---------- ---------- -------- ------------------------------ -------- <br />542E0E6C 11 314 542B70E8 EYGLE INACTIVE 542E5044 18 662 542B6D38 SYS ACTIVE <br /><br />2.ALTER SYSTEM KILL SESSION 'sid, serial#';<br />example:ALTER SYSTEM KILL SESSION '11,314';(注：在sqlplus中执行 )<br /><br />结果： 提示标记要删去的会话 无法释放会话,未成功解锁<br /><br />====================================================================================================<br />处理方法二 ：<br /><br />a、 找到你要杀掉的那个SESSION, 并记下paddr <br /><br />SELECT sid, username, paddr, status FROM v$session WHERE username = '用户名' ; <br />example:SELECT sid, username, paddr, status FROM v$session WHERE username = 'XNJW0419' ;<br />       SID USERNAME                       PADDR    STATUS<br />---------- ------------------------------ -------- --------<br />        10 XNJW0419                       2B5E2E2C KILLED<br /><br />b、 找到这个SESSION所对应的spid <br /><br />SELECT * FROM v$process WHERE addr = '上面查寻的paddr'; <br />example:SELECT ADDR,PID,SPID,USERNAME,SERIAL#,TERMINAL FROM v$process WHERE addr = '2B5E2E2C';<br />ADDR            PID SPID         USERNAME           SERIAL# TERMINAL<br />-------- ---------- ------------ --------------- ---------- ----------------<br />2B5E2E2C         44 1204         SYSTEM                 -99 JWC<br /><br />c、 杀掉spid所标识的那个进程 <br /><br />D:\>orakill sid 　spid （注：cmd命令窗口中执行 只有oracle服务器端才有orakill命令）<br />example: D:\>orakill oemrep 1204<br /><br />提示：KILL OF THREAD id 1204 IN INSTANCE oemrep successfully signalled.<br /><br />结果：成功删除该SESSION,表也解锁
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/136257#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 29 Oct 2007 10:56:05 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/136257</link>
        <guid>http://liulu.javaeye.com/blog/136257</guid>
      </item>
      <item>
        <title>聚合函数分组</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/134938" style="color:red;">http://liulu.javaeye.com/blog/134938</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用group by分组时如果需要显示几个属性值就要在分组中加入<br /><br />select b.property_name,b.variety, sum(a.whole_num) from tb_stock a, td_product_property b where a.property_id = b.property_id group by b.property_name,b.variety,b.product_info_id<br /><br />但如果要统计按某一属性的合计时则要使用下列的方法<br />select b.property_name,b.variety, sum(a.whole_num) over (partition by b.product_info_id)<br />  from tb_stock a, td_product_property b<br /> where a.property_id = b.property_id
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/134938#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 23 Oct 2007 22:21:11 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/134938</link>
        <guid>http://liulu.javaeye.com/blog/134938</guid>
      </item>
      <item>
        <title>oracle与db2中聚合函数的使用</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/134918" style="color:red;">http://liulu.javaeye.com/blog/134918</a>&nbsp;
          发表时间: 2007年10月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值。<br /><br /><br />SELECT a.*,RANK() OVER(ORDER BY col1) FROM table a;<br />会在最后一列显示该行的排序值<br /><br />select * from (select rank() over(partition by 科目 order by 分数 desc) rk,a.* from a) t<br />where t.rk&lt;=3;<br />会显示科目分组分数前三的数据<br /><br />合计功能：计算出数值(4,1)在Order By Col1,Col2排序下的排序值，也就是col1=4,col2=1在排序以后的位置<br />SELECT RANK(4,1) WITHIN GROUP (ORDER BY col1,col2) FROM table;<br /><br />dense_rank与rank()用法相当，但是有一个区别：dence_rank在并列关系是，相关等级不会跳过。rank则跳过<br />也就是说如果结果有两个值结果是1，如果用rank下一个就是3 而dense_rank是2
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/134918#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 23 Oct 2007 21:37:05 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/134918</link>
        <guid>http://liulu.javaeye.com/blog/134918</guid>
      </item>
      <item>
        <title>使用rollup cube分组</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/133982" style="color:red;">http://liulu.javaeye.com/blog/133982</a>&nbsp;
          发表时间: 2007年10月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在数据库使用group by分组时如果使用ROLLUP()则会分组的列依次去掉最后一项统计<br />如：group by rollup(a,b,c) 会按(a,b,c) (a,b) (a) ()分组<br />使用cube()是按group by的所有列的组合分组<br />如：group by cube(a,b,c) 会按(A,B,C) (A,B) (A,C) (A) (B,C) (B) (C) ()分组<br /><br />使用rollup cube分组可以方便的统计报表
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/133982#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 21 Oct 2007 16:16:43 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/133982</link>
        <guid>http://liulu.javaeye.com/blog/133982</guid>
      </item>
      <item>
        <title>DB2与Oracle获取系统时间</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/133975" style="color:red;">http://liulu.javaeye.com/blog/133975</a>&nbsp;
          发表时间: 2007年10月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Oracle中系统时间比较熟悉 是select sysdate from dual;<br />db2中则是 SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1<br />还有<br />select CURRENT DATE from SYSIBM.SYSDUMMY1;获得日期<br />select CURRENT TIME from SYSIBM.SYSDUMMY1;获得时间
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/133975#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 21 Oct 2007 14:43:53 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/133975</link>
        <guid>http://liulu.javaeye.com/blog/133975</guid>
      </item>
      <item>
        <title>收藏一些RoR的插件</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/119883" style="color:red;">http://liulu.javaeye.com/blog/119883</a>&nbsp;
          发表时间: 2007年09月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          文件上传（FileColumn）<br />网页：http://www.kanthak.net/opensource/file_column/<br />安装：http://opensvn.csie.org/rails_file_column/plugins/file_column<br /><br />主题支持（Theme Support）<br />安装：http://mattmccray.com/svn/rails/plugins/theme_support<br />动态的树型结构（LiveTree）<br />网页：http://www.epiphyte.ca/code/live_tree.html<br />下载：http://www.epiphyte.ca/downloads/live_tree/live_tree-0.1.2.zip<br /><br />国际化插件（Globalize）<br />网页：http://wiki.globalize-rails.org/<br />安装：http://svn.globalize-rails.org/svn/globalize/globalize/trunk<br /><br />本地化（Localization）<br />网页：http://mir.aculo.us/articles/2005/10/03/ruby-on-rails-i18n-revisited<br />安装：http://dev.rubyonrails.org/svn/rails/plugins/localization/<br /><br />文件上传进度显示（Rails Upload Progress）<br />网页：http://wiki.rubyonrails.com/rails/pages/Upload+Progress+Bar<br />Demo：http://sean.treadway.info/demo/upload/<br /><br />Rails引擎（Rails Engine）<br />网页：http://rails-engines.org/<br />安装：http://svn.rails-engines.org/<br />包括LoginEngine, UserEngine，WikiEngine<br /><br />索引搜索（Indexed Search）<br />网页：http://lance.langwell-ball.com/pages/indexed-search<br />安装：http://langwell-ball.com/svn/indexed-search/<br /><br />Ajax Scaffold生成器（Ajax Scaffold Generator）<br />网页：http://ajaxscaffold.height1percent.com/<br />安装：gem install ajax_scaffold_generator
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/119883#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Sep 2007 16:20:54 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/119883</link>
        <guid>http://liulu.javaeye.com/blog/119883</guid>
      </item>
      <item>
        <title>Java排序</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/117598" style="color:red;">http://liulu.javaeye.com/blog/117598</a>&nbsp;
          发表时间: 2007年08月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">public int compare(String s1, String s2) {
        return ((java.text.RuleBasedCollator)java.text.Collator.
            getInstance(java.util.Locale.CHINA)).compare(s1, s2);
    }</pre><br />这样就可以对中文排序了 还算好用 还在网上看到一个别人的排序<br /><pre name="code" class="java">import java.util.*;
import java.text.*;

public class SortPinyin {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
        String[] arr = { "张三","张A", "李四", "王五", "赵六", "F-16", "12345", "^%$%"};
        Arrays.sort(arr, cmp);
        for (int i = 0; i &lt; arr.length; i++)
            System.out.println(arr[i]);
        System.out.println();
    }

}</pre>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/117598#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/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, 28 Aug 2007 17:32:30 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/117598</link>
        <guid>http://liulu.javaeye.com/blog/117598</guid>
      </item>
      <item>
        <title>optgroup</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/107414" style="color:red;">http://liulu.javaeye.com/blog/107414</a>&nbsp;
          发表时间: 2007年07月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在HTML级联查询的时候发现一种新的做法 很有意思<br />才知道就是HTML的一个标签 optgroup<br />范例如下：<br /><pre name="code" class="java">&lt;select>
&lt;optgroup label="Swedish Cars">
&lt;option value ="volvo">Volvo&lt;/option>
&lt;option value ="saab">Saab&lt;/option>
&lt;/optgroup>
&lt;optgroup label="German Cars">
&lt;option value ="mercedes">Mercedes&lt;/option>
&lt;option value ="audi">Audi&lt;/option>
&lt;/optgroup>
&lt;/select></pre><br />对于选项较少的列表这个方法感觉不错吧
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/107414#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 31 Jul 2007 17:24:28 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/107414</link>
        <guid>http://liulu.javaeye.com/blog/107414</guid>
      </item>
      <item>
        <title>Java操作dbf文件</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/104452" style="color:red;">http://liulu.javaeye.com/blog/104452</a>&nbsp;
          发表时间: 2007年07月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>dbf算是个古老的数据文件了，使用Java操作起来感觉不怎么方便，不过有了javadbf这个jar一切问题解决了。</p>
<p>下载地址为：<font face="Arial"><a href="http://sarovar.org/projects/javadbf/">http://sarovar.org/projects/javadbf/</a></font></p>
<p>并且官方有比较详细的Tutorial</p>
<p>就是这里啦 <font face="Arial"><a href="http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html">http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html</a></font></p>
<div align="center">
<h1 align="center">JavaDBF Library Tutorial</h1>
(for JavaDBF ver. 0.4.0 and above)<br />
Anil Kumar K.<br />
anil at linuxense dot com<br />
<a href="http://www.linuxense.com/">Linuxense Information Systems Pvt. Ltd.</a>, Trivandrum, India </div>
<h2>1. Introduction</h2>
<p>JavaDBF is a Java library for reading and writing XBase files. There are plenty of legacy applications around with <tt>.dbf</tt> as their primary storage format. JavaDBF was initially written for data transfer with such applications. </p>
<p>Other than that, there are requirements to export data from a Java application to a spreadshet program like GNumeric, Excel or Lotus 123. A DBF file would be more appropriate in such situations rather than a CSV or an HTML file because a DBF file can carry field type information. More over, XBase format is like an Open-standard; it is understood by almost all spreadsheet programms. </p>
<h2>2. Getting and Installing</h2>
<p>Obtain the latest version of JavaDBF from <a href="http://sarovar.org/projects/javadbf/">http://sarovar.org/projects/javadbf/</a>. Create a folder in a convenient location and run: </p>
<pre>	tar xvfz javadbf-x.x.x-tar.gz 
	cd javadbf-x.x.x
</pre>
<p>In this folder you will find <tt>javadbf.jar</tt> which contains the library. Include this jar file in your <tt>$CLASSPATH</tt> variable. You are ready to go. </p>
<h2>3. Overview of the Library</h2>
<p>JavaDBF has a simple API of its own and it does not implement the JDBC API. It is designed this way because JavaDBF is not indedned to support full-blown RDBMS-style database interaction. And you are not supposed to use it like a back-end; it just doesn't work that way. Also, JavaDBF is not designed to be thread-safe; keep that in mind when you design threaded applications. </p>
<p>JavaDBF comes in the package <tt>com.linuxense.javadbf</tt>. Import that package in your Java code. Following examples will familiarise you with its APIs. </p>
<h3>3.1. Data Type Mapping</h3>
<p>In version 0.3.2, JavaDBF supports almost all XBase data types except Memo field. While reading, those types are interpretted as appropriate Java types. Following table shows the mapping scheme.
<table border="1" summary="type mapping">
    <tbody>
        <tr>
            <th>XBase Type</th>
            <th>XBase Symbol</th>
            <th>Java Type used in JavaDBF</th>
        </tr>
        <tr>
            <td>Character</td>
            <td align="center">C</td>
            <td>java.lang.String</td>
        </tr>
        <tr>
            <td>Numeric</td>
            <td align="center">N</td>
            <td>java.lang.Double</td>
        </tr>
        <tr>
            <td>Double</td>
            <td align="center">F</td>
            <td>lava.lang.Double</td>
        </tr>
        <tr>
            <td>Logical</td>
            <td align="center">L</td>
            <td>java.lang.Boolean</td>
        </tr>
        <tr>
            <td>Date</td>
            <td align="center">D</td>
            <td>java.util.Date</td>
        </tr>
    </tbody>
</table>
</p>
<h2>4. Reading a DBF File</h2>
<p>To read a DBF file, JavaDBF provides a DBFReader class. Following is a ready-to-compile, self-explanatory program describing almost all feature of the <code>DBFReader</code> class. Copy/paste this listing and compile it. Keep a <code>.dbf</code> file handy to pass to this program as its argument. </p>
<div class="border">
<div class="listing">
<pre>import java.io.*;
<strong>import com.linuxense.javadbf.*;</strong>

public class JavaDBFReaderTest {

  public static void main( String args[]) {

    try {

      // create a DBFReader object
      //
      InputStream inputStream  = new FileInputStream( args[ 0]); // take dbf file as program argument
      <strong>DBFReader reader = new DBFReader( inputStream); </strong>

      // get the field count if you want for some reasons like the following
      //
      int numberOfFields = reader.<strong>getFieldCount();</strong>

      // use this count to fetch all field information
      // if required
      //
      for( int i=0; i&lt;numberOfFields; i++) {

        DBFField field = reader.<strong>getField( i);</strong>

        // do something with it if you want
        // refer the JavaDoc API reference for more details
        //
        System.out.println( field.getName());
      }

      // Now, lets us start reading the rows
      //
      Object []rowObjects;

      while( (rowObjects = reader.<strong>nextRecord()</strong>) != null) {

        for( int i=0; i&lt;rowObjects.length; i++) {

          System.out.println( rowObjects[i]);
        }
      }

      // By now, we have itereated through all of the rows
      
      inputStream.close();
    }
    catch( <strong>DBFException</strong> e) {

      System.out.println( e.getMessage());
    }
    catch( IOException e) {

      System.out.println( e.getMessage());
    }
  }  
}  
</pre>
</div>
</div>
<h2>5. Writing a DBF File</h2>
<p>The class complementary to <code>DBFReader</code> is the <code>DBFWriter</code>.While creating a <code>.dbf</code> data file you will have to deal with two aspects: 1. define the fields and 2. populate data. As mentioned above a dbf field is represented by the class <code>DBFField</code>. First, let us familiarise this class. </p>
<h3>5.1. Defining Fields</h3>
<p>Create an object of <code>DBFField</code> class: </p>
<div class="border">
<div class="listing">
<pre>  DBFField field = new DBFField();
  field.setField( &quot;emp_name&quot;); // give a name to the field
  field.setDataType( DBFField.FIELD_TYPE_C); // and set its type
  field.setFieldLength( 25); // and length of the field
</pre>
</div>
</div>
<p>This is, now, a complete <code>DBFField</code> Object ready to use. We have to create as many <code>DBFField</code> Objects as we want to be in the <code>.dbf</code> file. The <code>DBFWriter</code> class accept <code>DBFField</code> in an array. Now, let's move on to the next step of populating data. </p>
<h3>5.2. Preparing <code>DBFWriter</code> Object.</h3>
<p>A <code>DBFWriter</code> is used for creating a <code>.dbf</code> file. First lets create a <code>DBFWriter</code> object by calling its constructor and then set the fields created (as explained above) by calling the <code>setFields</code> method. </p>
<div class="border">
<div class="listing">
<pre>DBFWriter writer = new DBFWriter();
writer.setFields( fields); // fields is a non-empty array of DBFField objects
</pre>
</div>
</div>
<p>Now, the <code>DBFWriter</code> Object is ready to be populated. The method for adding data to the <code>DBFWriter</code> is <code>addRecord</code> and it takes an Object array as its argument. This Object array is supposed contain values for the fields added with one-to-one correspondence with the fields set. </p>
<p>Following is a complete program explaining all the steps described above: </p>
<div class="border">
<div class="listing">
<pre><strong>import com.linuxense.javadbf.*;</strong>
import java.io.*;

public class DBFWriterTest {

  public static void main( String args[])
  throws DBFException, IOException {

    // let us create field definitions first
    // we will go for 3 fields
    //
    <strong>DBFField fields[] = new DBFField[ 3]</strong>;

    fields[0] = new DBFField();
    fields[0].<strong>setName( &quot;emp_code&quot;)</strong>;
    fields[0].<strong>setDataType( DBFField.FIELD_TYPE_C)</strong>;
    fields[0].<strong>setFieldLength( 10)</strong>;

    fields[1] = new DBFField();
    fields[1].setField( &quot;emp_name&quot;);
    fields[1].setDataType( DBFField.FIELD_TYPE_C);
    fields[1].setFieldLength( 20);

    fields[2] = new DBFField();
    fields[2].setField( &quot;salary&quot;);
    fields[2].setDataType( DBFField.FIELD_TYPE_N);
    fields[2].setFieldLength( 12);
    fields[2].<strong>setDecimalCount( 2)</strong>;

    DBFWriter writer = new DBFWriter();
    writer.<strong>setFields( fields)</strong>;

    // now populate DBFWriter
    //

    Object rowData[] = new Object[3];
    rowData[0] = &quot;1000&quot;;
    rowData[1] = &quot;John&quot;;
    rowData[2] = new Double( 5000.00);

    writer.<strong>addRecord( rowData)</strong>;

    rowData = new Object[3];
    rowData[0] = &quot;1001&quot;;
    rowData[1] = &quot;Lalit&quot;;
    rowData[2] = new Double( 3400.00);

    writer.addRecord( rowData);

    rowData = new Object[3];
    rowData[0] = &quot;1002&quot;;
    rowData[1] = &quot;Rohit&quot;;
    rowData[2] = new Double( 7350.00);

    writer.addRecord( rowData);

    FileOutputStream fos = new FileOutputStream( args[0]);
    writer.<strong>write( fos)</strong>;
    fos.close();
  }
}
</pre>
</div>
</div>
<p>Keep in mind that till the <code>write</code> method is called, all the added data will be kept in memory. So, if you are planning to write huge amount of data make sure that it will be safely held in memory till it is written to disk and the <code>DBFWriter</code> object is garbage-collected. Read the ``<a href="http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html#sync_mod">Sync Mode</a>'' section to know how JavaDBF to use a special feature of JavaDBF to overcome this. </p>
<h3><a name="sync_mod">5.3. ``Sync Mode'' --Writing Records to File as They are Added</a></h3>
<p>This is useful when JavaDBF is used to create a DBF with very large number of records. In this mode, instead of keeping records in memory for writing them once for all, records are written to file as <code>addRecord()</code> is called. Here is how to write in <em>Sync Mode</em>: </p>
<p>Create DBFWriter instance by passing a <code>File</code> object which represents a new/non-existent or empty file. And you are done! But, as in the normal mode, remember to call <code>write()</code> when have added all the records. This will help JavaDBF to write the meta data with correct values. Here is a sample code: </p>
<div class="border">
<div class="listing">
<pre>import com.linuxense.javadbf.*;
import java.io.*;

public class DBFWriterTest {

  public static void main( String args[])
  throws DBFException, IOException {

    // ...

    <strong>DBFWriter writer = new DBFWriter( new File( &quot;/path/to/a/new/file&quot;));</strong> /* this DBFWriter object is now in <em>Syc Mode</em> */
    // ...
  }
}	
</pre>
</div>
</div>
<h2><a name="appending">7. Appending Records</a></h2>
<p>From version 0.4.0 onwards JavaDBF supports appending of records to an existing DBF file. Use the same constructor used in <a href="http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html#sync_mod"><em>Sync Mode</em></a> to achieve this. But here the <code>File</code> object passed to the construction should represent the DBF file to which records are to be appended. </p>
<p>It is illegal to call <code>setFields</code> in DBFWriter object created for appending. Here also it is required to call the <code>write()</code> method after adding all the records. </p>
<h2><a name="planned_features">6. Planned Features</a></h2>
<ol>
    <li>Support for memo fields. </li>
</ol>
<hr />
<p>&copy; 2003, 2004 Anil Kumar Krishnan Nair, Linuxense </p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/104452#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 23 Jul 2007 16:17:44 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/104452</link>
        <guid>http://liulu.javaeye.com/blog/104452</guid>
      </item>
      <item>
        <title>使用PreparedStatement  setString 时抛出异常</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/98222" style="color:red;">http://liulu.javaeye.com/blog/98222</a>&nbsp;
          发表时间: 2007年07月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>数据库为Oracle9i 字段为varchar2(2000) 当插入700+个汉字的时候抛出了 插入值过大的异常</p>
<p>不解中 从网上google了一下 发现了Oracle JDBC的实现有些问题，因为一直用CLOB，所以还是第一次碰见这种问题</p>
<p>pst.setCharacterStream(1,new InputStreamReader(new ByteArrayInputStream(s.getBytes())), s.length());</p>
<p>使用流就可以了，呵呵。</p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/98222#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/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, 05 Jul 2007 20:16:33 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/98222</link>
        <guid>http://liulu.javaeye.com/blog/98222</guid>
      </item>
      <item>
        <title>JavaScript中的parseInt</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/92368" style="color:red;">http://liulu.javaeye.com/blog/92368</a>&nbsp;
          发表时间: 2007年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>昨天帮原来同学写个js，碰见个问题，parseInt('08')的结果竟然是0</p>
<p>后来突然想过来，是八进制的原因</p>
<h1><a name="jsmthparseint"></a>parseInt 方法</h1>
<p>返回由字符串转换得到的整数。</p>
<p><code><strong>parseInt(</strong><em>numString</em>, [<em>radix</em>]<strong>)</strong></code></p>
<h4>参数</h4>
<p class="dt"><em>numString</em></p>
<p class="indent">必选项。要转换为数字的字符串。</p>
<p class="dt"><em>radix</em></p>
<p class="indent">可选项。在 2 和 36 之间的表示 <em>numString</em> 所保存数字的进制的值。如果没有提供，则前缀为 '0x' 的字符串被当作十六进制，前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。</p>
<h4>说明</h4>
<p><strong>parseInt</strong> 方法返回与保存在 <em>numString</em> 中的数字值相等的整数。如果 <em>numString</em> 的前缀不能解释为整数，则返回 <strong>NaN</strong>（而不是数字）。 <br />
<br />
最后我把方法修改为parseInt('08', 10)就正确了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/92368#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/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Jun 2007 10:51:41 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/92368</link>
        <guid>http://liulu.javaeye.com/blog/92368</guid>
      </item>
      <item>
        <title>两个gis的ftp 收藏</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/91833" style="color:red;">http://liulu.javaeye.com/blog/91833</a>&nbsp;
          发表时间: 2007年06月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><a href="ftp://ftp.gissky.com/"><font color="#000066">ftp://ftp.gissky.com</font></a>，<span>用户名:gissky<span style="mso-spacerun: yes">&nbsp; </span>密码:download</span></p>
<p><span><span lang="EN-US" style="FONT-SIZE: 16pt"><span lang="EN-US" style="FONT-SIZE: 16pt"><a href="ftp://60.191.147.94/">ftp://60.191.147.94</a> </span><font face="Arial"><span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户</span><span lang="EN-US" style="FONT-SIZE: 16pt">:kf1</span><span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">密码</span><span lang="EN-US" style="FONT-SIZE: 16pt">:kfdx</span></font></span></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/91833#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Jun 2007 09:27:54 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/91833</link>
        <guid>http://liulu.javaeye.com/blog/91833</guid>
      </item>
      <item>
        <title>ArcIMS环境的配置</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/91580" style="color:red;">http://liulu.javaeye.com/blog/91580</a>&nbsp;
          发表时间: 2007年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ArcIMS的安装配置有一些麻烦，比较重要的地方就是安装顺序问题。一定要仔细看安装包中的帮助文件，里面有详细的说明。</p>
<p>一般是先安装IIS，然后是ServletExec，最后再安装ArcIMS，但是最好还是使用Apache服务器，那样安装起来就会特别简单，直接下一步就可以完成安装，最后配置的地方选择Apache目录和Tomcat的目录。</p>
<p>如果运行有误可以查找错误号，一般都可以解决问题。</p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/91580#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Jun 2007 13:21:09 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/91580</link>
        <guid>http://liulu.javaeye.com/blog/91580</guid>
      </item>
      <item>
        <title>激情之夜</title>
        <author>小嘴看世界</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liulu.javaeye.com">小嘴看世界</a>&nbsp;
          链接：<a href="http://liulu.javaeye.com/blog/91313" style="color:red;">http://liulu.javaeye.com/blog/91313</a>&nbsp;
          发表时间: 2007年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今晚8点苏迪曼杯决赛，中国队Vs印度尼西亚，但是赛前一个多小时爆出一个让人意外的消息，国际羽联要求重新决定决赛出场顺序，理由是为了确保收视率，希望能够将男单改在第一场，至少是前三场中举行。</p>
<p>的确，男单肯定是场精彩的比赛，不过羽联的做法不怎么地道。估计中国队会3：0或是3：1夺冠吧，中国队加油。</p>
<p>再就是凌晨1点的F1美国站，汉密尔顿的杆位，不知道他能不能继续延续神奇，不出意外地话站上领奖台应该没有什么问题，麦凯伦已经领先了20多个积分，今晚将是与法拉力的激战，马赛和莱科宁在二排发车，发车很重要，希望麦凯伦能继续保持领先。</p>
<p>凌晨3点的西甲联赛则更是精彩，可惜太晚了，明天上班不能看。希望巴塞能夺冠，但是还要看皇马是否赢球，但是塞维利亚也还有夺冠的机会，不过比较渺茫，呵呵。</p>
<p>希望中国队，麦凯伦，巴塞罗那都能胜利！</p>
          <br/>
          <span style="color:red;">
            <a href="http://liulu.javaeye.com/blog/91313#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Jun 2007 20:10:00 +0800</pubDate>
        <link>http://liulu.javaeye.com/blog/91313</link>
        <guid>http://liulu.javaeye.com/blog/91313</guid>
      </item>
  </channel>
</rss>