﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-翠湖月色-随笔分类-阅读笔记</title><link>http://www.blogjava.net/matthew2006/category/15453.html</link><description>No Buddha tree at all,And bright mirror nor.Now nothing at all,How dusts any more ? </description><language>zh-cn</language><lastBuildDate>Mon, 14 Jan 2008 18:06:22 GMT</lastBuildDate><pubDate>Mon, 14 Jan 2008 18:06:22 GMT</pubDate><ttl>60</ttl><item><title>A Gentle Transition from XML to RDF—部分翻译</title><link>http://www.blogjava.net/matthew2006/archive/2008/01/14/175331.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Mon, 14 Jan 2008 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2008/01/14/175331.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/175331.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2008/01/14/175331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/175331.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/175331.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center">XML Design(A Gentle Transition from XML to RDF)</p>
<p style="text-align: center" align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Roger L. Costello</p>
<p style="text-align: center" align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; David B. Jacobs</p>
<p><strong><span style="font-family: 宋体">什么时候使用</span>rdf:ID</strong><strong><span style="font-family: 宋体">？什么时候使用</span>rdf:about?</strong></p>
<p><span style="font-family: 宋体">当你想介绍一个资源，并提供一系列关于这个资源的最初信息的时候使用</span>rdf:ID<span style="font-family: 宋体">；当你想扩展关于这个资源的信息时，使用</span>rdf:about<span style="font-family: 宋体">。</span>RDF<span style="font-family: 宋体">的原理和</span>Web<span style="font-family: 宋体">的原理一样：无论什么人，无论什么地方，无论什么时间都能提供关于资源的信息。</span></p>
<p><strong><span style="font-family: 宋体">解释</span>RDF</strong></p>
<p><span style="font-size: 9pt; color: black">&lt;?xml version="1.0"?&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&lt;River xmlns="http://www.geodesy.org/river#"&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;Yangtze&lt;/name&gt;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;length&gt;6300 kilometers&lt;/length&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;startingLocation&gt;western China's Qinghai-Tibet Plateau&lt;/startingLocation&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;endingLocation&gt;East China Sea&lt;/endingLocation&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&lt;/River&gt;</span></p>
<p><span style="font-family: 宋体">以上</span>RDF<span style="font-family: 宋体">文件理解如下：这是一个</span>River<span style="font-family: 宋体">类的实例。其名为</span>Yangtze<span style="font-family: 宋体">，长</span>6300<span style="font-family: 宋体">千米</span><span style="font-family: 宋体">，起源地位西部青海，结束地点为中国东海。此</span>RDF<span style="font-family: 宋体">文档的资源是匿名的，它没有识别符。</span></p>
<p><strong>rdf:Bag</strong><strong><span style="font-family: 宋体">类型：</span></strong><span style="font-family: 宋体">表示一个未排序的集合。如，</span></p>
&nbsp;
<p><span style="font-size: 9pt; color: black">&lt;?xml version="1.0"?&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&lt;Meeting rdf:ID="XML-Design-Pattern"</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="http://www.business.org#"&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;attendees&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;rdf:Bag&gt;</strong></span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;John Smith&lt;/name&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;Sally Jones&lt;/name&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;/rdf:Bag&gt;</strong></span></p>
<p><span style="font-size: 9pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attendees&gt;</span></p>
<p><span style="font-size: 9pt; color: black">&lt;/Meeting&gt;</span></p>
&nbsp;
<p class="MsoNormal"><strong style="mso-bidi-font-weight: normal"><span lang="EN-US">rdf:Alt</span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型：</span></strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示一系列供选择的序列。如，</span></p>
&nbsp;
<p><span style="font-size: 11pt; color: black">&lt;?xml version="1.0"?&gt;</span></p>
<p><span style="font-size: 11pt; color: black">&lt;Retailer rdf:ID="BarnesAndNoble"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 88pt"><span style="font-size: 11pt; color: black">xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"</span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="http://www.retailers.org#"&gt;</span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;webLocation&gt;</span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;rdf:Alt&gt;</strong></span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;</strong>url<strong>&gt;</strong>http://www.bn.com<strong>&lt;/</strong>url<strong>&gt;</strong></span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url<strong>&gt;</strong>http://www.barnesandnoble.com<strong>&lt;/</strong>url<strong>&gt;</strong></span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;/rdf:Alt&gt;</strong></span></p>
<p><span style="font-size: 11pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/webLocation&gt;</span></p>
<p><span style="font-size: 11pt; color: black">&lt;/Retailer&gt;</span></p>
&nbsp;
<p><strong>rdf:Seq</strong><strong><span style="font-family: 宋体">类型：</span></strong><span style="font-family: 宋体">用作表示顺序的属性。如，</span></p>
&nbsp;
<p>&lt;?xml version="1.0"?&gt;</p>
<p>&lt;ToDoList rdf:ID="MondayMeetings"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns="http://www.reminders.org#"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;activities&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;rdf:Seq&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;</strong>activity1<strong>&gt;</strong>Meet with CEO at 10am<strong>&lt;/</strong>activity1<strong>&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;</strong>activity2<strong>&gt;</strong>Luncheon at The Eatery<strong>&lt;/</strong>activity2<strong>&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;</strong>activity3<strong>&gt;</strong>Flight at 3pm<strong>&lt;/</strong>activity3<strong>&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;/rdf:Seq&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/activities&gt;</p>
<p>&lt;/ToDoList&gt;</p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/175331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2008-01-14 23:27 <a href="http://www.blogjava.net/matthew2006/archive/2008/01/14/175331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>reading paper系列2</title><link>http://www.blogjava.net/matthew2006/archive/2008/01/14/175105.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Mon, 14 Jan 2008 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2008/01/14/175105.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/175105.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2008/01/14/175105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/175105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/175105.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span lang="EN-US">OWL-S</span><span style="font-family: 宋体;">是一种用来描述</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">服务属性和功能的</span><span lang="EN-US">OWL</span><span style="font-family: 宋体;">本体规范，它使用一系列基本的类和属性来描述服务，提供了一个可共享的框架。在</span><span lang="EN-US">OWL-S</span><span style="font-family: 宋体;">中，描述服务的基本信息有三类本体：</span><span lang="EN-US">ServiceProfile</span><span style="font-family: 宋体;">、</span><span lang="EN-US">ServiceModel</span><span style="font-family: 宋体;">和</span><span lang="EN-US">ServiceGrounding</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span lang="EN-US">ServiceProfile</span><span style="font-family: 宋体;">：类似于服务的黄页，描述了服务查询代理用来判断服务是否满足它要求的一组属性信息，如服务提供的功能、输入输出、执行的前提条件、执行的后果等。</span></p>
<p class="MsoNormal"><span lang="EN-US">ServiceModel</span><span style="font-family: 宋体;">：描述了服务的过程模型（使用服务时所涉及的控制流和数据流）。它描述了服务是如何工作的，和</span><span lang="EN-US">ServiceGrounding</span><span style="font-family: 宋体;">配合用于服务的自动组合和执行。</span></p>
<p class="MsoNormal"><span lang="EN-US">ServiceGrounding</span><span style="font-family: 宋体;">：将过程模型的描述和</span><span lang="EN-US">WSDL</span><span style="font-family: 宋体;">中东通讯协议及消息联系起来。描述了如何访问一个服务。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">具体来说，</span><span lang="EN-US">OWL-S</span><span style="font-family: 宋体;">基于</span><span lang="EN-US">PDDL</span><span style="font-family: 宋体;">（一种用于描述规划领域问题的规范语言），将</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">服务看成是</span><span lang="EN-US">AI</span><span style="font-family: 宋体;">中的动作或行为，用参数、前提和结果等来描述一个服务，同时输入和输出也作为知识型的前提和结果。在服务组合规划时，需要将这些表示编译成合适的动作形式化描述（例如状态演算。）然而，对于服务组合的支持，</span><span lang="EN-US">OWL-S</span><span style="font-family: 宋体;">仍有不足。如，</span><span lang="EN-US">OWL</span><span style="font-family: 宋体;">语言基于描述逻辑，在表达一般规则方面有局限性，不能很好地表示用户的偏好和约束。</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>----</span><span style="font-family: 宋体;">基于语义</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">的服务自动组合技术的研究</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Resource Description Framework</span><span style="font-family: 宋体;">，资源描述框架，是</span><span lang="EN-US">W<st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C" w:st="on">3C</st1:chmetcnv></span><span style="font-family: 宋体;">在</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">的基础上推荐的一种标准，用于表示任何的资源信息。</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">提出了一个简单的模型用来表示任意类型的数据。这个数据类型由节点和节点之间带有标记的连接弧所组成。节点用来表示</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">上的资源，弧用来表示这些资源的属性。因此，这个数据模型可以方便的描述对象（或者资源）以及它们之间关系。</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的数据模型实质上是一种二元关系的表达，由于任何复杂的关系都可以分解为多个简单的二元关系，因此</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的数据模型可以作为其他任何复杂关系模型的基础模型。</span><span lang="EN-US">W<st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C" w:st="on">3C</st1:chmetcnv></span><span style="font-family: 宋体;">推荐以</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">标准来解决</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">的语义局限。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">与</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">中的标记（</span><span lang="EN-US">tags</span><span style="font-family: 宋体;">）类似，</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">中的属性（</span><span lang="EN-US">properties</span><span style="font-family: 宋体;">）集也是没有任何限制的。也就是说存在同义词现象和一词多意现象。</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的模型不具备解决这两个问题的能力，而</span><span lang="EN-US">RDF Schema</span><span style="font-family: 宋体;">虽然可以为</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">资源的的属性和类型提供词汇表，但是基于</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的数据语义描述仍然可能存在语义冲突。为了消解语义冲突，我们在描述数据语义的时候可以通过引用</span><span lang="EN-US">Ontology</span><span style="font-family: 宋体;">的相关技术，对语义描述结果作进一步的约束。幸运的是，</span><span lang="EN-US">RDF(Schema)</span><span style="font-family: 宋体;">在提供了简单的机器可理解语义模型的同时，为领域化的</span><span lang="EN-US">Ontology</span><span style="font-family: 宋体;">语言（</span><span lang="EN-US">OIL</span><span style="font-family: 宋体;">，</span><span lang="EN-US">OWL</span><span style="font-family: 宋体;">）提供了建模基础，并使得基于</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的应用可以方便地与这些</span><span lang="EN-US">Ontology</span><span style="font-family: 宋体;">语言所生成的</span><span lang="EN-US">Ontology</span><span style="font-family: 宋体;">进行合并。</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的这一特性使得基于</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的语义描述结果具备了可以和更多的领域知识进行交互的能力，也使基于</span><span lang="EN-US">XML</span><span style="font-family: 宋体;">和</span><span lang="EN-US">RDF</span><span style="font-family: 宋体;">的</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">数据描述具备了良好的生命力。</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">OWL</span><span style="font-family: 宋体;">全称</span><span lang="EN-US">Web Ontology Language</span><span style="font-family: 宋体;">，是</span><span lang="EN-US">W<st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C" w:st="on">3C</st1:chmetcnv></span><span style="font-family: 宋体;">推荐的语义互联网中本体描述语言的标准。它是从欧美一些研究机构的一种结合性的描述语言</span><span lang="EN-US">DAML+OIL</span><span style="font-family: 宋体;">发展起来的，其中</span><span lang="EN-US">DAML</span><span style="font-family: 宋体;">来自美国的提案</span><span lang="EN-US">DAML-ONT</span><span style="font-family: 宋体;">，</span><span lang="EN-US">OIL</span><span style="font-family: 宋体;">来自欧洲的一种本体描述语言。</span></p>
<p class="MsoNormal" style="margin-left: 21pt;"><span style="font-family: 宋体;">针对不同的需求</span><span lang="EN">OWL</span><span style="font-family: 宋体;">有三个子语言，描述列表如下：</span><span lang="EN"><o:p></o:p></span></p>
<table class="MsoNormalTable" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-family: 宋体;">子语言</span><span lang="EN"><o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 188.65pt;" valign="top" width="252">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-family: 宋体;">描述</span><span lang="EN"><o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 142.05pt;" valign="top" width="189">
            <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-family: 宋体;">例子</span><span lang="EN"><o:p></o:p></span></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127">
            <p class="MsoNormal" style="text-align: center;" align="center"><span lang="EN">OWL Lite<o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 188.65pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">用于提供给那些只需要一个分类层次和简单的属性约束的用户。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 142.05pt;" valign="top" width="189">
            <p class="MsoNormal"><span style="font-family: 宋体;">支持</span><span style="font-family: 宋体; color: black;">基数（</span><span style="font-family: Arial; color: black;" lang="EN">cardinality</span><span style="font-family: 宋体; color: black;">），只允许基数为</span><span style="font-family: Arial; color: black;" lang="EN">0</span><span style="font-family: 宋体; color: black;">或</span><span style="font-family: Arial; color: black;" lang="EN">1</span><span style="font-family: 宋体; color: black;">。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127">
            <p class="MsoNormal" style="text-align: center;" align="center"><span lang="EN">OWL DL<o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 188.65pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">支持那些需要在推理系统上进行最大程度表达的用户，这里的推理系统能够保证计算完全性（</span><span style="font-family: Arial; color: black;" lang="EN">computational
            completeness</span><span style="font-family: 宋体; color: black;">，即所有地结论都能够保证被计算出来）和可决定性（</span><span style="font-family: Arial; color: black;" lang="EN">decidability</span><span style="font-family: 宋体; color: black;">，即所有的计算都在有限的时间内完成）。它包括了</span><span style="font-family: Arial; color: black;" lang="EN">OWL</span><span style="font-family: 宋体; color: black;">语言的所有约束，但是可以被仅仅置于特定的约束下。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 142.05pt;" valign="top" width="189">
            <p class="MsoNormal"><span style="font-family: 宋体;">当一个类可以是多个类的一个子类时，它被约束不能是另外一个类的实例。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127">
            <p class="MsoNormal" style="text-align: center;" align="center"><span lang="EN">OWL Full<o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 188.65pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">支持那些需要在没有计算保证的语法自由的</span><span lang="EN">RDF</span><span style="font-family: 宋体;">上进行最大程度表达的用户。它允许在一个</span><span lang="EN">Ontology</span><span style="font-family: 宋体;">在预定义的（</span><span lang="EN">RDF</span><span style="font-family: 宋体;">、</span><span lang="EN">OWL</span><span style="font-family: 宋体;">）词汇表上增加词汇，从而任何推理软件均不能支持</span><span lang="EN">OWL FULL</span><span style="font-family: 宋体;">的所有</span><span lang="EN">feature</span><span style="font-family: 宋体;">。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
            <td style="padding: 0cm 5.4pt; width: 142.05pt;" valign="top" width="189">
            <p class="MsoNormal"><span style="font-family: 宋体;">一个类可以被同时表达为许多个体的一个集合以及这个集合中的一个个体。</span><span lang="EN"><o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal"><span lang="EN"><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/175105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2008-01-14 11:20 <a href="http://www.blogjava.net/matthew2006/archive/2008/01/14/175105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>reading paper系列1</title><link>http://www.blogjava.net/matthew2006/archive/2008/01/12/174815.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Sat, 12 Jan 2008 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2008/01/12/174815.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/174815.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2008/01/12/174815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/174815.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/174815.html</trackback:ping><description><![CDATA[&nbsp;
<p>Gruber<span style="font-family: 宋体">关于</span>ontology<span style="font-family: 宋体">的定义：一个</span>ontology<span style="font-family: 宋体">是共享概念化的形式化、显式的定义。</span></p>
<p><span style="font-family: 宋体">&#8220;概念化&#8221;是指通过确定相关的概念，对生活中某些现象的抽象化建模；&#8220;显式&#8221;是明确定义使用的概念类型以及对它们的使用约束；&#8220;形式化&#8221;指定义的</span>ontology<span style="font-family: 宋体">应该是机器可读的事实，而不是自然语言；&#8220;共享&#8221;说明了一个</span>ontology<span style="font-family: 宋体">不是个人私有的，而是在一定范围内被人们普遍接受。</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="text-indent: 194.25pt">&nbsp;----<span style="font-family: 宋体">基于语义</span>Web<span style="font-family: 宋体">的服务自动组合技术的研究</span></p>
<p><span style="font-family: 宋体">描述逻辑</span>(Description Logic)<span style="font-family: 宋体">：是一种功能强大的基于逻辑的知识表达语言，可以看成是一种结构化的一阶逻辑，主要用于建模对象和类的丰富层次结构。</span></p>
<p>Gruber<span style="font-family: 宋体">提出的</span>5<span style="font-family: 宋体">条规则：</span></p>
<p>1 <span style="font-family: 宋体">明确性和客观性：</span>ontology<span style="font-family: 宋体">应该用自然语言对所定义的术语给出明确的、客观的语义定义。</span></p>
<p>2 <span style="font-family: 宋体">完全性：所给定定义是完整的，完全能表达所描述术语的含义。</span></p>
<p>3 <span style="font-family: 宋体">一致性：由术语所得的推论与术语本身的含义是相容的，不会产生矛盾。</span></p>
<p>4 <span style="font-family: 宋体">最大单调可扩展性：向</span>ontology<span style="font-family: 宋体">中添加通用或专用的术语时，不需要修改其已有的内容。</span></p>
<p>5 <span style="font-family: 宋体">最小承诺：对待建模对象给出尽可能少的约束。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----Ontology<span style="font-family: 宋体">研究综述</span></p>
<p>Web<span style="font-family: 宋体">服务组合所采用的具体方法和技术依赖于</span>Web<span style="font-family: 宋体">服务描述所采用的方法和方式。从服务组合的角度来说，服务描述的主要工作在于选择合适的</span>Web<span style="font-family: 宋体">服务描述语言和</span>Web<span style="font-family: 宋体">服务模型，有效地为</span>Web<span style="font-family: 宋体">服务组合提供必要的信息。</span></p>
<p>Web<span style="font-family: 宋体">服务的输入、输出参数的类型信息之</span>Web<span style="font-family: 宋体">服务组合方法中有着重要的地位。但仅仅依赖它似乎不能给出一个正确的</span>Web<span style="font-family: 宋体">服务组合。通过对</span>Web<span style="font-family: 宋体">服务功能的结构化描述（即</span>Web<span style="font-family: 宋体">服务的前提条件及执行结果），我们能够保证获得的组合服务是能够满足查询的要求的。对服务功能进行结构化描述的需求也是导致本体和规则的整合问题成为当前语义</span>Web<span style="font-family: 宋体">中的研究热点的一个原因。</span></p>
<p><span style="font-family: 宋体">总之，语义</span>Web<span style="font-family: 宋体">服务组合的自动化离不开自动推理，而各种各样的形式化系统都有其自身在计算复杂度和表达能力之间的权衡和考量。如何选择和设计一个适合语义</span>Web<span style="font-family: 宋体">服务组合的形式系统，是语言</span>Web<span style="font-family: 宋体">服务组合的自动化中最核心、最基本的问题。</span></p>
<p><span style="font-family: 宋体">语义</span>Web<span style="font-family: 宋体">服务组合的粒度可参照语义</span>Web<span style="font-family: 宋体">服务描述分为三个层次。第一层次是在</span>Web<span style="font-family: 宋体">服务输入、输出参数的类型上进行服务组合，该层次中的推理对象只涉及到</span>OWL<span style="font-family: 宋体">中的类，语义</span>Web<span style="font-family: 宋体">刚好能够满足它对推理能力的要求。第二层次上在</span>Web<span style="font-family: 宋体">服务执行的前提条件和结构上进行服务组合，该层次通常要借助于</span>OWL<span style="font-family: 宋体">之外的推理机制，比如演绎规则系统，但是</span>OWL<span style="font-family: 宋体">和演绎规则系统的结合常常导致服务组合算法不可判定。第三个层次是在</span>Web<span style="font-family: 宋体">服务外包行为上进行服务组合，它所采用的方法或是借鉴或是直接取自服务验证领域的工作，但通常我们并不会单独地在这个层次上进行服务组合，而是把它当作前面的两个层次上的服务组合方法的有效补充。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----<span style="font-family: 宋体">语义</span>Web<span style="font-family: 宋体">服务的自动组合方法：研究综述</span></p>
<p>Web<span style="font-family: 宋体">服务组合方法的研究工作主要来自两个领域：一个是人工智能领域，另一个是形式化方法和自动推理领域。人工智能领域的研究人员从人工智能规划（</span>AI Planning<span style="font-family: 宋体">）的角度提出一系列的面向</span>Web<span style="font-family: 宋体">服务<strong>功能</strong>的</span>Web<span style="font-family: 宋体">服务组合（规划）方案。来自形式化方法和自动推理领域的工作除了面向</span>Web<span style="font-family: 宋体">服务<strong>行为</strong>的服务组合（验证）方法，也不乏借鉴自动化程序综合和模型检验的方法。</span></p>
<p><span style="font-family: 宋体">人工智能规划组合方法的不足：</span></p>
<p>1 <span style="font-family: 宋体">无法产生能够与</span>Web<span style="font-family: 宋体">服务的非确定性和并发性相适应的组合服务。</span></p>
<p>2 Web<span style="font-family: 宋体">服务的行为特性和经典规划中的动作的行为特征是非常不一样的，这使得规划算法难以在</span>Web<span style="font-family: 宋体">服务组合中得到应用。</span></p>
<p><span style="font-family: 宋体">基于</span>Web<span style="font-family: 宋体">服务行为的组合方法：</span></p>
<p><span style="font-family: 宋体">能克服基于人工智能规划方法的上述不足，但无法满足用户的需求。</span>Web<span style="font-family: 宋体">服务的行为通常借助于自动机或进程代数进行表述。改进方法：把消息的参数类型与领域本体中的概念联系起来，并在服务组合时加以考虑，那么就能保证产生的组合服务不仅能在行为上满足用户需求，而且在功能上也能够满足用户需求。</span></p>
<p>Web<span style="font-family: 宋体">服务组合和</span>Web<span style="font-family: 宋体">服务匹配的联系是非常密切的，如果把服务组合当作一个状态收索过程的话，那么服务匹配就相当于这个收索过程之中筛选合适的后继状态的步骤。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----<span style="font-family: 宋体">基于</span>Ontology<span style="font-family: 宋体">的</span>Web<span style="font-family: 宋体">服务组合方法</span></p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/174815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2008-01-12 15:38 <a href="http://www.blogjava.net/matthew2006/archive/2008/01/12/174815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习笔记－Springs声明性JDBC事务管理</title><link>http://www.blogjava.net/matthew2006/archive/2006/12/30/90970.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Sat, 30 Dec 2006 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/12/30/90970.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/90970.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/12/30/90970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/90970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/90970.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近日在看台湾人林信良的《Spring技术手册》，这本书总体上简单易懂，适合初学者。但是在声明性JDBC事务管理这节中的例子程序写的不够详细。下来看看并略加修改了下。首先，在MySQL中建立一个表myuser。注意要让MySQL支持事务，要选择InnoDB类型的表。Create table myuser（ id int (11) not null auto_increment primary key...&nbsp;&nbsp;<a href='http://www.blogjava.net/matthew2006/archive/2006/12/30/90970.html'>阅读全文</a><img src ="http://www.blogjava.net/matthew2006/aggbug/90970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-12-30 11:17 <a href="http://www.blogjava.net/matthew2006/archive/2006/12/30/90970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Void类型的指针-C语言</title><link>http://www.blogjava.net/matthew2006/archive/2006/12/11/86915.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Mon, 11 Dec 2006 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/12/11/86915.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/86915.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/12/11/86915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/86915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/86915.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键字</span>
				<span lang="EN-US">Void</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示函数不接受任何参数或不返回任何值，同时还可以用在创建通用指针：一个可指向任何类型的数据对象的指针。如：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Void *ptr; //</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</span>
				<span lang="EN-US">ptr</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明为一个通用指针，但没有指定它指向的东西。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Void </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指针最常见的用途是用于声明函数的参数。你可能会希望你的一个函数能够处理不同的类型的参数，可以将</span>
				<span lang="EN-US">int</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量传递给它，也可以将</span>
				<span lang="EN-US">float</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量传给它，等等。这样的情况下，你可以将函数声明为接受</span>
				<span lang="EN-US">void</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指针作为参数，则它可以接受任何类型的数据，可以将指向任何东西的指针传递给该函数。如：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Void half(void *val);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面是一个例子程序：<br /></span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">#include</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">stdio.h</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> half(</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">pval,</span>
				<span style="COLOR: #0000ff">char</span>
				<span style="COLOR: #000000"> type);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> main(</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_66_367_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_367_Open_Text.style.display='none'; Codehighlighter1_66_367_Closed_Image.style.display='inline'; Codehighlighter1_66_367_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_66_367_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_367_Closed_Text.style.display='none'; Codehighlighter1_66_367_Open_Image.style.display='inline'; Codehighlighter1_66_367_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_66_367_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_66_367_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> i</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">long</span>
						<span style="COLOR: #000000"> l</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">100000</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">float</span>
						<span style="COLOR: #000000"> f</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">12.456</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> d</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">123.044444</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%d</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%ld</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,l);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%f</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,f);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%lf\n\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,d);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />half(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">i,</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">i</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />half(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">l,</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">l</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />half(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">d,</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">d</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />half(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">f,</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">f</span>
						<span style="COLOR: #000000">'</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%d</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%ld</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,l);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%f</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,f);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />printf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">\n%lf\n\n</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,d);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> half(</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">pval,</span>
				<span style="COLOR: #0000ff">char</span>
				<span style="COLOR: #000000"> type)<br /><img id="Codehighlighter1_401_768_Open_Image" onclick="this.style.display='none'; Codehighlighter1_401_768_Open_Text.style.display='none'; Codehighlighter1_401_768_Closed_Image.style.display='inline'; Codehighlighter1_401_768_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_401_768_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_401_768_Closed_Text.style.display='none'; Codehighlighter1_401_768_Open_Image.style.display='inline'; Codehighlighter1_401_768_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_401_768_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_401_768_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">switch</span>
						<span style="COLOR: #000000">(type)<br /><img id="Codehighlighter1_416_766_Open_Image" onclick="this.style.display='none'; Codehighlighter1_416_766_Open_Text.style.display='none'; Codehighlighter1_416_766_Closed_Image.style.display='inline'; Codehighlighter1_416_766_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_416_766_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_416_766_Closed_Text.style.display='none'; Codehighlighter1_416_766_Open_Image.style.display='inline'; Codehighlighter1_416_766_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
						<span id="Codehighlighter1_416_766_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_416_766_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">i</span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">:<br /><img id="Codehighlighter1_431_499_Open_Image" onclick="this.style.display='none'; Codehighlighter1_431_499_Open_Text.style.display='none'; Codehighlighter1_431_499_Closed_Image.style.display='inline'; Codehighlighter1_431_499_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_431_499_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_431_499_Closed_Text.style.display='none'; Codehighlighter1_431_499_Open_Image.style.display='inline'; Codehighlighter1_431_499_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span id="Codehighlighter1_431_499_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_431_499_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">((</span>
										<span style="COLOR: #0000ff">int</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">)pval)</span>
										<span style="COLOR: #000000">/=</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">;       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">强制转换类型，存取指针pval指向的int变量</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">   </span>
										<span style="COLOR: #0000ff">break</span>
										<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">l</span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">:<br /><img id="Codehighlighter1_515_585_Open_Image" onclick="this.style.display='none'; Codehighlighter1_515_585_Open_Text.style.display='none'; Codehighlighter1_515_585_Closed_Image.style.display='inline'; Codehighlighter1_515_585_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_515_585_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_515_585_Closed_Text.style.display='none'; Codehighlighter1_515_585_Open_Image.style.display='inline'; Codehighlighter1_515_585_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span id="Codehighlighter1_515_585_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_515_585_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">((</span>
										<span style="COLOR: #0000ff">long</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">)pval)</span>
										<span style="COLOR: #000000">/=</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">;       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">强制转换类型，存取指针pval指向的long变量</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">   </span>
										<span style="COLOR: #0000ff">break</span>
										<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">f</span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">:<br /><img id="Codehighlighter1_601_673_Open_Image" onclick="this.style.display='none'; Codehighlighter1_601_673_Open_Text.style.display='none'; Codehighlighter1_601_673_Closed_Image.style.display='inline'; Codehighlighter1_601_673_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_601_673_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_601_673_Closed_Text.style.display='none'; Codehighlighter1_601_673_Open_Image.style.display='inline'; Codehighlighter1_601_673_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span id="Codehighlighter1_601_673_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_601_673_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">((</span>
										<span style="COLOR: #0000ff">float</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">)pval)</span>
										<span style="COLOR: #000000">/=</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">;       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">强制转换类型，存取指针pval指向的float变量</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">   </span>
										<span style="COLOR: #0000ff">break</span>
										<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">case</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">d</span>
								<span style="COLOR: #000000">'</span>
								<span style="COLOR: #000000">:<br /><img id="Codehighlighter1_689_764_Open_Image" onclick="this.style.display='none'; Codehighlighter1_689_764_Open_Text.style.display='none'; Codehighlighter1_689_764_Closed_Image.style.display='inline'; Codehighlighter1_689_764_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_689_764_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_689_764_Closed_Text.style.display='none'; Codehighlighter1_689_764_Open_Image.style.display='inline'; Codehighlighter1_689_764_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span id="Codehighlighter1_689_764_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_689_764_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">((</span>
										<span style="COLOR: #0000ff">double</span>
										<span style="COLOR: #000000">  </span>
										<span style="COLOR: #000000">*</span>
										<span style="COLOR: #000000">)pval)</span>
										<span style="COLOR: #000000">/=</span>
										<span style="COLOR: #000000">2</span>
										<span style="COLOR: #000000">;       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">强制转换类型，存取指针pval指向的double变量</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">   </span>
										<span style="COLOR: #0000ff">break</span>
										<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p>
				<strong>程序输出结果：<br /></strong>20<br />100000<br />12.456000<br />123.044444</p>
		<p>
				<br />10<br />50000<br />6.228000<br />61.522222<br /></p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/86915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-12-11 15:12 <a href="http://www.blogjava.net/matthew2006/archive/2006/12/11/86915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Core Java》中的一个例子程序－日历</title><link>http://www.blogjava.net/matthew2006/archive/2006/11/10/80454.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Fri, 10 Nov 2006 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/11/10/80454.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/80454.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/11/10/80454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/80454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/80454.html</trackback:ping><description><![CDATA[
		<p>
				<em>/**<br />   @version 1.30 2000-03-27<br />   @author Cay Horstmann<br />*/</em>
		</p>
		<p>
				<em>import java.util.*;</em>
		</p>
		<p>
				<em>public class CalendarTest<br />{  <br />   public static void main(String[] args)<br />   {  <br />      // 首先构造一个日历对象，把它初始化为当前的日期和时间．<br />      GregorianCalendar d = new GregorianCalendar();</em>
		</p>
		<p>
				<em>      int today = d.get(Calendar.DAY_OF_MONTH);//得到当前的日期<br />      int month = d.get(Calendar.MONTH);//得到当前的月份</em>
		</p>
		<p>
				<em>     <br />      d.set(Calendar.DAY_OF_MONTH, 1); // 设置d为当前的这个月的第一天<br />      int weekday = d.get(Calendar.DAY_OF_WEEK); //得到这一天是星期几，如果是星期天的话，weekday被设置为1，依次类推</em>
		</p>
		<p>
				<em>      System.out.println("Sun Mon Tue Wed Thu Fri Sat");  // 打印标题头和空格作为第一行</em>
		</p>
		<p>
				<em>     <br />      for (int i = Calendar.SUNDAY; i &lt; weekday; i++ )//找到第一天对应的星期几的位置<br />         System.out.print("    ");</em>
		</p>
		<p>
				<em>      do<br />      {  <br />         <br />         int day = d.get(Calendar.DAY_OF_MONTH);//因为前面设置了d为当前月的第一天，所以第一次循环中day为1<br />         <br />         if (day &lt; 10) System.out.print(" ");//如果天小于10，就打印一个空格，然后打印天。<br />         System.out.print(day);</em>
		</p>
		<p>
				<em>         if (day == today)//如果这天是当然就在后面打印个*<br />            System.out.print("* ");<br />         else<br />            System.out.print("  ");</em>
		</p>
		<p>
				<em>         <br />         if (weekday == Calendar.SATURDAY)// 如果是星期6就在后面进行换行<br />            System.out.println();</em>
		</p>
		<p>
				<em>         <br />         d.add(Calendar.DAY_OF_MONTH, 1);// 然后，我们让d指向下一天<br />         weekday = d.get(Calendar.DAY_OF_WEEK);//上一句代码设置了为下一天的日期，所以这个weekday为下一天的星期几<br />      } <br />      while (d.get(Calendar.MONTH) == month);//如果d在当月中就保持循环<br />      </em>
		</p>
		<p>
				<em>     <br />      if (weekday != Calendar.SUNDAY) // 打印最后的行<br />         System.out.println();<br />   }<br />}<br /><br /></em>
				<strong>结果输出:<br />Sun Mon Tue Wed Thu Fri Sat<br />           　　 　　 1    2    3    4<br />  5       6        7        8    9    10* 11<br /> 12     13      14      15  16  17  18<br />19      20      21      22  23  24  25<br />26      27      28      29  30<br /><br /></strong>
		</p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/80454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-11-10 17:30 <a href="http://www.blogjava.net/matthew2006/archive/2006/11/10/80454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C Primer Plus》－在结构中使用字符数组还是字符指针？</title><link>http://www.blogjava.net/matthew2006/archive/2006/11/10/80429.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Fri, 10 Nov 2006 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/11/10/80429.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/80429.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/11/10/80429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/80429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/80429.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在结构中一般使用字符数组来存储字符串，那么是否可以用指向字符的指针代替字符数组？</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看如下声明：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">#define LEN 20</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struct names{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5">
				<span lang="EN-US">Char first[LEN];</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5">
				<span lang="EN-US">Char last[LEN]; </span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">};</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1">
				<span lang="EN-US">Struct pnames{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5">
				<span lang="EN-US">Char * first;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5">
				<span lang="EN-US">Char * last; </span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">};</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">答案是可以这样声明，但是可能会遇到麻烦，你得理解其含义．考虑以下的代码：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struct names veep={“Talia”, “Summers”};</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struct pnames treas={“Brad”, “Fallingjaw”};</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Printf(“%s and %s\n”,veep.first,treas.first);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　这是一段正确的代码，也能正常运行，但是请思考下字符串存储在哪里？对于</span>
				<span lang="EN-US">Struct names</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量</span>
				<span lang="EN-US">veep</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来说，字符串存储在结构内部；这个结构共分配了</span>
				<span lang="EN-US">40</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字节来存放两个字符串．然而，对于</span>
				<span lang="EN-US">Struct pnames</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量</span>
				<span lang="EN-US">treas</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来说，字符串存储在编译器存储字符串常量的任何地方．这个结构存放的只是两个地址而已，在系统中它总共占用</span>
				<span lang="EN-US">8</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个字节．</span>
				<span lang="EN-US">Struct pnames</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结构不为字符串分配任何存储空间．它只适用于在另外的地方已经为字符串分配了空间．简单的说，</span>
				<span lang="EN-US">Struct pnames</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结构中的指针应该只用来管理那些已经创建的而且在程序其他地方已经分配过空间的字符串．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　再来看看这个限制条件在什么情况下升级为问题：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struct names accountant;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Struct pnames attorney;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Puts(“Enter the last name of your accountant:”);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Scanf(“%s”,accountant.last);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Puts(“Enter the last name of your attorney”);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Scanf(“%s”,attorney.last);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　语法方面来说，这段代码没有问题，但是考虑下把输入存储到哪里了？对会计师来说，他的名字存储在</span>
				<span lang="EN-US">accountant</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">变量的最后一个成员中；这个结构有一个用来存放字符串的数组．对律师来说，</span>
				<span lang="EN-US">scanf()</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">把字符串放到由</span>
				<span lang="EN-US">attorney.last</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">给出的地址中．因为这是个没有初始化的变量，所有该地址可能是任何值，程序就可以把名字放在任何地方．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　所以，我们如果需要一个结构来存储字符串，请使用字符数组成员．存储字符指针有它的用处，但也有被严重误用的可能．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/80429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-11-10 16:15 <a href="http://www.blogjava.net/matthew2006/archive/2006/11/10/80429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C Primer Plus》－指向结构的指针</title><link>http://www.blogjava.net/matthew2006/archive/2006/11/09/80230.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Thu, 09 Nov 2006 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/11/09/80230.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/80230.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/11/09/80230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/80230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/80230.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<strong>指向结构的指针</strong>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为什么使用指向结构的指针？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　就像指向数组的指针比数组本身更容易操作一样，指向结构的指针通常都比结构本身更容易操作.</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　在一些早期的</span>
				<span lang="EN-US">C</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现中，结构不能作为参数被传递给函数，但指向结构的指针可以．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　许多奇妙的数据表示都使用了包含指向其他结构的指针的结构．<br />下面是个例子：<br /><br /><em>/* friends.c -- uses pointer to a structure */<br />#include &lt;stdio.h&gt;<br />#define LEN 20</em></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<em>struct names {<br />    char first[LEN];<br />    char last[LEN];<br />};</em>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<em>struct guy {<br />    struct names handle;<br />    char favfood[LEN];<br />    char job[LEN];<br />    float income;<br />};</em>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<em>int main(void)<br />{<br />    struct guy fellow[2] = {<br />        {{ "Ewen", "Villard"},<br />         "grilled salmon",<br />         "personality coach",<br />         58112.00<br />        },<br />        {{"Rodney", "Swillbelly"},<br />         "tripe",<br />         "tabloid editor",<br />         232400.00<br />        }<br />    };<br />    struct guy * him;    /* 声明指向结构的指针，这个声明不是建立一个新的结构，而是意味<br />　　　　　　　　　　　　　着指针him现在可以指向任何现有的guy类型的结构*/<br />   <br />    printf("address #1: %p #2: %p\n", &amp;fellow[0], &amp;fellow[1]);<br />    him = &amp;fellow[0];    /* 告诉该指针它要指向的地址  */<br />    printf("pointer #1: %p #2: %p\n", him, him + 1);<br />    printf("him-&gt;income is $%.2f: (*him).income is $%.2f\n",<br />         him-&gt;income, (*him).income);<br />    him++;               /*指向下一个结构*/<br />    printf("him-&gt;favfood is %s:  him-&gt;handle.last is %s\n",<br />         him-&gt;favfood, him-&gt;handle.last);<br />    <br />    return 0;<br />}<br /><br /></em>
						<strong>输出结果：<br /></strong>address #1: 0240FEB0 #2: 0240FF04<br />pointer #1: 0240FEB0 #2: 0240FF04<br />him-&gt;income is $58112.00: (*him).income is $58112.00<br />him-&gt;favfood is tripe:  him-&gt;handle.last is Swillbelly<br />Press any key to continue...</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<br /> </span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　从输出看出</span>
				<span lang="EN-US">
						<font face="Times New Roman">him</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指向</span>
				<span lang="EN-US">
						<font face="Times New Roman">fellow[0],him+1</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指向</span>
				<span lang="EN-US">
						<font face="Times New Roman">fellow[1]</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．注意</span>
				<span lang="EN-US">
						<font face="Times New Roman">him</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加上</span>
				<span lang="EN-US">
						<font face="Times New Roman">1</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，地址就加了</span>
				<span lang="EN-US">
						<font face="Times New Roman">84</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．这是因为每个</span>
				<span lang="EN-US">
						<font face="Times New Roman">guy</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结构占用了</span>
				<span lang="EN-US">
						<font face="Times New Roman">84</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字节的内存区域．<br /></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　使用指针访问成员的方法：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">1</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　</span>
				<span lang="EN-US">
						<font face="Times New Roman">him-&gt;income</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是不能</span>
				<span lang="EN-US">
						<font face="Times New Roman">him.income</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，因为</span>
				<span lang="EN-US">
						<font face="Times New Roman">him</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不是一个结构名．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">2</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　如果</span>
				<span lang="EN-US">
						<font face="Times New Roman">him=&amp;fellow[0],</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那么</span>
				<span lang="EN-US">
						<font face="Times New Roman">*him=fellow[0]</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．因为</span>
				<span lang="EN-US">
						<font face="Times New Roman">&amp;</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
				<span lang="EN-US">
						<font face="Times New Roman">*</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一对互逆的运算符．因此，可以做以下替换：<br /></span>
				<span lang="EN-US">
						<font face="Times New Roman">fellow[0].income= =(*him).income</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意这里必须要有圆括号，因为</span>
				<span lang="EN-US">
						<font face="Times New Roman">.</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">运算符比</span>
				<span lang="EN-US">
						<font face="Times New Roman">*</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的优先级高．</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<strong>
						</strong>
				</span> </p>
<img src ="http://www.blogjava.net/matthew2006/aggbug/80230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-11-09 19:12 <a href="http://www.blogjava.net/matthew2006/archive/2006/11/09/80230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Understanding SOA With Web Services》-编制与编排规范</title><link>http://www.blogjava.net/matthew2006/archive/2006/09/20/70694.html</link><dc:creator>matthew</dc:creator><author>matthew</author><pubDate>Wed, 20 Sep 2006 01:41:00 GMT</pubDate><guid>http://www.blogjava.net/matthew2006/archive/2006/09/20/70694.html</guid><wfw:comment>http://www.blogjava.net/matthew2006/comments/70694.html</wfw:comment><comments>http://www.blogjava.net/matthew2006/archive/2006/09/20/70694.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/matthew2006/comments/commentRss/70694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/matthew2006/services/trackbacks/70694.html</trackback:ping><description><![CDATA[ <strong>Orchestration and Choreography Specifications<br /> 编制与编排规范<br /><br />    </strong>Web服务逐渐成为架构和实现机构内外的业务流程与业务协作的基础。目前有两种用于Web服务合成的语言：业务流程执行语言－WS-BPEL和Web服务编排语言WS-CDL。<br />    Web服务编制指为业务流程而进行Web服务合成，用于定义合成服务以及重用已有服务的内部流程；而Web服务编排指为业务协作而进行Web服务合成，用于定义多方如何在一个更大的业务事务中，通过交易伙伴及外部机构交换信息，进行对等的协作。<br />    Web服务编制关注于一种说明性的方式（不是编程方式）创建合成服务，定义了组成编制的服务，以及这些服务的执行顺序。因此，可以将编制看做为一种简单的流程，这种流程自身也是一个Web服务。<br />    Web服务编排关注于定义多方如何在一个更大的业务事务中进行协作，通过“各方描述自己如何与其他Web服务进行公共消息交换”来定义业务交互，而不是像Web服务编制中那样描述一方是如何执行某个具体业务流程的。<br />    两者的关键区别是：Web服务编排是一种对等模型，业务流程中会有很多协作方；而Web服务编制是一种层次化的请求者/提供者模型，它只定义了应该用什么服务应该何时调用，没有定义多方如何进行协作。<img src ="http://www.blogjava.net/matthew2006/aggbug/70694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/matthew2006/" target="_blank">matthew</a> 2006-09-20 09:41 <a href="http://www.blogjava.net/matthew2006/archive/2006/09/20/70694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>