﻿<?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-无为-随笔分类-Web Data Mining</title><link>http://www.blogjava.net/mlh123caoer/category/18745.html</link><description>无为则可为，无为则至深！
</description><language>zh-cn</language><lastBuildDate>Sat, 01 Sep 2007 06:24:58 GMT</lastBuildDate><pubDate>Sat, 01 Sep 2007 06:24:58 GMT</pubDate><ttl>60</ttl><item><title>我的blog访问者分析</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/08/31/141600.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Fri, 31 Aug 2007 01:04:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/08/31/141600.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/141600.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/08/31/141600.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/141600.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/141600.html</trackback:ping><description><![CDATA[最近本人使用google的网站访问分析工具对本博客在2007年8月29日-8月30日24小时的用户访<br />
问做了一下分析：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mlh123caoer/1.jpg" border="0" /><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mlh123caoer/2.jpg" border="0" /><br />
<br />
中国区访问者分布如下：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mlh123caoer/3.jpg" border="0" /><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mlh123caoer/5.jpg" border="0" /><img src ="http://www.blogjava.net/mlh123caoer/aggbug/141600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-08-31 09:04 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/08/31/141600.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA组件过滤器Filter</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/07/25/132293.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 25 Jul 2007 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/07/25/132293.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/132293.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/07/25/132293.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/132293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/132293.html</trackback:ping><description><![CDATA[<p>同servlet非常类似，Filter就是JAVA组件，请求发送到servlet前，可以使用过滤器Filter截获和处理请求，同时servlet结束以后，响应发回以前同样可以使用过滤器Filter处理响应。WEB容器可以用web.xml部署文件声明何时调用过滤器Filter。</p>
<p>过滤器Filter主要功能是：1、完成安全检查；2、重新格式化请求首部或体；3、建立请求审计或记录日志---请求过滤器Filter</p>
<p>1、压缩响应流；2、追加或者修改响应流；3、创建一个定制响应---响应过滤器Filter</p>
<p><br>同servlet一样，过滤器Filter也具有生命周期：init()-&gt;doFilter()-&gt;destroy().要实现模块化，FilterChain功不可末，它可以采用不同的方式组合过滤器，协调完成一些事情，它由部署文件中的filter元素驱动，和Filter都在javax.servlet包中。在servlet2.4中，过滤器同样可以用于请求分派器，但须在web.xml中声明，&lt;dispatcher&gt;INCLUDE或FORWARD或REQUEST或ERROR&lt;/dispatcher&gt;该元素位于filter-mapping中。</p>
<br>
<p>1、实现一個Filter，代码如下：</p>
<p><code><code>public class MyFilter implements Filter {</code></code></p>
<p><code><code>public void init(FilterConfig arg0) throws ServletException {</code></code></p>
<p><code>}<br></code></p>
<p><code>public void doFilter(ServletRequest request, ServletResponse response,<br>FilterChain chain) throws IOException, ServletException{</code></p>
<p><code><br>HttpServletRequest httpRequest = (HttpServletRequest) request;<br>HttpServletResponse httpResponse = (HttpServletResponse)response;<br>CachedResponseWrapper wrapper = new CachedResponseWrapper(httpResponse);<br>// 写入wrapper:<br>chain.doFilter(request, wrapper);<br>// 首先判断status, 只对200状态处理：<br>if(wrapper.getStatus()==HttpServletResponse.SC_OK) {<br>// 对响应进行处理，这里是进行GZip压缩:<br>byte[] data = GZipUtil.gzip(wrapper.getResponseData());<br>httpResponse.setContentType(getContentType());<br>httpResponse.setContentLength(data.length);<br>httpResponse.setHeader("Content-Encoding", "gzip");</code><code><br>ServletOutputStream output = response.getOutputStream();<br>output.write(data);<br>output.flush();<br>}<br>}<br></code></p>
<p><code>public void destroy() {</code></p>
<p><code>}</code></p>
<p><code>}</code></p>
<br>
<p>2、实现一个HttpServletResponseWrapper</p>
<p><code>public class CheckFrameHttpServletResponseWrapper extends<br>HttpServletResponseWrapper {</code></p>
<p><code>public CheckFrameHttpServletResponseWrapper(HttpServletResponse response) {</code></p>
<p><code>super(response);<br>}</code></p>
<p><code>public PrintWriter getWriter() throws IOException{<br>return new CheckFrameWriter(super.getWriter());<br>}</code></p>
<p><code>}</code></p>
<p>3、实现一个Writer</p>
<p><code>public class CheckFrameWriter extends PrintWriter {<br>String checkString = "&lt;script&gt;\n if(window.top.frames.length==0){\n"<br>+ "window.location.href=\"<a href="https://aix:9080/sso/mainlayout.faces">https://aix:9080/sso/mainlayout.faces</a>?"<br>+ "contentURL=http://aix:9080/security/paramsMaintain/"<br>+ "addParams.faces?roleId=0001\"\n" + "}\n&lt;/script&gt;\n";</code></p>
<p><code>public CheckFrameWriter(Writer out) {<br>super(out);<br>}</code></p>
<p><code>public void write(int c) {<br>super.write((char) c);<br>}</code></p>
<p><code>public void write(char buf[], int off, int len) {<br>StringBuffer sb = new StringBuffer(len);<br>for (int i = 0; i &lt; len; i++) {<br>sb.append(buf[off + i]);<br>}<br>String s = sb.toString();<br>int bodyIndex = s.indexOf("&lt;body&gt;");<br>if (bodyIndex &gt; -1) {<br>String part1 = s.substring(0, bodyIndex);<br>String part2 = s.substring(bodyIndex );<br>s = part1 + checkString + part2;<br>}<br>for (int i = 0; i &lt; s.length(); i++) {<br>write(s.charAt(i));<br>}<br>}</code></p>
<p><code>public void write(String s, int off, int len) {<br>for (int i = 0; i &lt; len; i++) {<br>write(s.charAt(off + i));<br>}<br>}<br>}</code></p>
<br>
<p>在Writer中，你便可以随心所欲的修改Response的內容了。</p>
<p>4、在Web.xml中加入相应的配置元素，对JSP进行拦截。</p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/132293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-07-25 13:56 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/07/25/132293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个Servlet生命周期（Tomcat处理请求中）</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/07/07/128789.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sat, 07 Jul 2007 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/07/07/128789.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/128789.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/07/07/128789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/128789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/128789.html</trackback:ping><description><![CDATA[从Tomcat处理用户请求，我们可以清晰的看到容器Servlet的生命周期管理过程：<br>1、客户发出请求—&gt;Web 服务器转发到Web容器Tomcat；<br>2、Tomcat主线程对转发来用户的请求做出响应创建两个对象：HttpServletRequest和HttpServletResponse；<br>3、从请求中的URL中找到正确Servlet，Tomcat为其创建或者分配一个线程，同时把2创建的两个对象传递给该线程；<br>4、Tomcat调用Servlet的servic()方法，根据请求参数的不同调用doGet()或者doPost()方法；<br>5、假设是HTTP GET请求，doGet()方法生成静态页面，并组合到响应对象里；<br>6、Servlet线程结束，Tomcat将响应对象转换为HTTP响应发回给客户，同时删除请求和响应对象。<br>从该过程中，我们可以理解Servlet的生命周期：Servlet类加载（对应3步）；Servlet实例化（对应3步）；调用init方法（对应3步）；调用service()方法（对应4、5步）；；调用destroy()方法（对应6步）。<img src ="http://www.blogjava.net/mlh123caoer/aggbug/128789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-07-07 16:04 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/07/07/128789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM简介</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/06/25/126177.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 25 Jun 2007 10:33:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/06/25/126177.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/126177.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/06/25/126177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/126177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/126177.html</trackback:ping><description><![CDATA[<a href="http://www.itisedu.com/phrase/200604181210165.html" target=_new><u><font face=Verdana color=#800080>JDOM</font></u></a><font face=Verdana>是一种使用 </font><a href="http://www.itisedu.com/phrase/200604231236585.html" target=_new><u><font face=Verdana color=#0000ff>XML</font></u></a><font face=Verdana> 的独特 Java 工具包，用于快速开发 XML 应用</font><a href="http://www.itisedu.com/phrase/200604232224305.html" target=_new><u><font face=Verdana color=#0000ff>程序</font></u></a><font face=Verdana>。它的</font><a href="http://www.itisedu.com/phrase/200604161428395.html" target=_new><u><font face=Verdana color=#0000ff>设计包</font></u></a><font face=Verdana>含 Java 语言的语法乃至语义。 </font>
<p><font face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM是两位著名的 Java 开发人员兼作者，Brett Mclaughlin 和 Jason Hunter 的创作成果， 2000 年初在</font><a href="http://www.itisedu.com/phrase/200603090857555.html" target=_new><font face=Verdana color=#0000ff><u>类</u></font></a><font face=Verdana>似于 Apache 协议的许可下，JDOM 作为一个开放源代码项目正式开始研发，JDOM 作为一个开放源代码项目正式开始了。它已成长为包含来自广泛的 Java 开发人员的投稿、集中反馈及错误修复的系统，并致力于建立一个完整的基于 Java 平台的解决方案，通过 Java 代码来访问、操作并输出 XML 数据。 </font></p>
<p><font face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然许多Java 开发人员每天都在使用 XML，Sun 却在将 XML 整合进 Java 平台方面落后了。因为在 XML 成为从商家对商家集成到 Web 站点内容流水化等方面的关键技术之前，Java 2 平台就已经非常流行了。Sun 已经使用 JSR 过程使之成为现存 XML <a href="http://www.itisedu.com/phrase/200604241228185.html" target=_new><u><font color=#0000ff>API</font></u></a> 的鼻祖，这一点已被广泛接受。目前最显著的是加入了 JAXP （用于 XML 语法分析的 Java API），其中包含了三个<a href="http://www.itisedu.com/phrase/200602281756135.html" target=_new><u><font color=#0000ff>软件包</font></u></a>： </font></p>
<p><font face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;org.w3c.dom ，W3C 推荐的用于 XML 标准规划文档<a href="http://www.itisedu.com/phrase/200603090845215.html" target=_new><u><font color=#0000ff>对象</font></u></a>模型的 Java 工具 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;org.xml.sax ，用于对 XML 进行语法分析的事件驱动的简单 API <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#183;javax.xml.parsers ，工厂化工具，允许应用程序开发人员获得并配置特殊的语法分析器工具 JDOM 能够替换 org.w3c.dom <a href="http://www.itisedu.com/phrase/200604232134205.html" target=_new><u><font color=#0000ff>软件</font></u></a>包来有计划地操作 XML 文档</font></p>
<font face=Verdana>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM是一个<a href="http://www.itisedu.com/phrase/200603091812115.html" target=_new><u><font color=#0000ff>开源</font></u></a>项目，它基于树型结构，利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性（方法重载、集合概念以及映射），把SAX和DOM的功能有效地结合起来。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jdom是用Java语言读、写、操作XML的新API函数。Jason Hunter 和 Brett McLaughlin公开发布了它的1.0版本。在直觉、简单和高效的前提下，这些API函数被最大限度的优化。在接下来的篇幅里将介绍怎么用Jdom去读写一个已经存在的XML文档。</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来，以弥补DOM及SAX在实际应用当中的不足之处。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能，而对于DOM来说，JAVA程序员在使用时来用起来总觉得不太方便。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DOM的缺点主要是来自于由于Dom是一个接口定义语言（IDL）,它的任务是在不同语言实现中的一个最低的通用标准，并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内，这标志着JDOM成为了JAVA平台组成的一部分。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 JDOM 中，XML 元素就是 Element 的实例，XML 属性就是 Attribute 的实例，XML 文档本身就是 Document 的实例。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为 JDOM 对象就是像 Document、Element 和 Attribute 这些类的直接实例，因此创建一个新 JDOM 对象就如在 Java 语言中使用 new 操作符一样容易。JDOM 的使用是直截了当的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM 使用标准的 Java 编码<a href="http://www.itisedu.com/phrase/200603061709535.html" target=_new><u><font color=#0000ff>模式</font></u></a>。只要有可能，它使用 Java new 操作符而不故弄玄虚使用复杂的工厂化模式，使对象操作即便对于初学用户也很方便。</p>
<p><br><strong>一、JDOM包概览</strong></p>
<p>JDOM是由以下几个包组成的</p>
<p>org.jdom包含了所有的xml文档要素的java类<br>org.jdom.adapters包含了与dom适配的java类<br>org.jdom.filter包含了xml文档的过滤器类<br>org.jdom.input包含了读取xml文档的类<br>org.jdom.output包含了写入xml文档的类<br>org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口<br>org.jdom.xpath包含了对xml文档xpath操作的类</p>
<p><strong>二、JDOM类说明</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、org.JDOM这个包里的类是你J解析xml<a href="http://www.itisedu.com/phrase/200602282323195.html" target=_new><u><font color=#0000ff>文件</font></u></a>后所要用到的所有数据<a href="http://www.itisedu.com/phrase/200603051002565.html" target=_new><u><font color=#0000ff>类型</font></u></a>。</p>
<p>Attribute<br>CDATA<br>Coment<br>DocType<br>Document<br>Element<br>EntityRef<br>Namespace<br>ProscessingInstruction<br>Text</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类</p>
<p>JDOMSource<br>JDOMResult<br>org.JDOM.input</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、输入类，一般用于文档的创建工作</p>
<p>SAXBuilder<br>DOMBuilder<br>ResultSetBuilder</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、org.JDOM.output输出类，用于文档转换输出</p>
<p>XMLOutputter<br>SAXOutputter<br>DomOutputter<br>JTreeOutputter</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用前注意事项：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.JDOM对于JAXP以及TRax的支持</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDOM支持JAXP1.1：你可以在程序中使用任何的parser工具类,默认情况下是JAXP的parser。<br>制定特别的parser可用如下形式<br>SAXBuilderparser<br>=newSAXBuilder("org.apache.crimson.parser.XMLReaderImpl");<br>Documentdoc=parser.build("http://www.cafeconleche.org/");<br>//workwiththedocument...<br>JDOM也支持TRaX：XSLT可通过JDOMSource以及JDOMResult类来转换（参见以后章节）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.注意在JDOM里文档（Document）类由org.JDOM.Document来表示。这要与org.w3c.dom中的Document区别开，这2种格式如何转换在后面会说明。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以下如无特指均指JDOM里的Document。</p>
<p><strong>三、JDOM主要使用方法</strong></p>
<p>1.Ducument类</p>
<p>(1)Document的操作方法：</p>
<p>Elementroot=newElement("GREETING");<br>Documentdoc=newDocument(root);<br>root.setText("HelloJDOM!");<br>或者简单的使用Documentdoc=newDocument(newElement("GREETING").setText("HelloJDOM!t"));<br>这点和DOM不同。Dom则需要更为复杂的代码，如下：<br>DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();<br>DocumentBuilderbuilder=factory.newDocumentBuilder();<br>Documentdoc=builder.newDocument();<br>Elementroot=doc.createElement("root");<br>Texttext=doc.createText("Thisistheroot");<br>root.appendChild(text);<br>doc.appendChild(root);<br>注意事项：JDOM不允许同一个节点同时被2个或多个文档相关联，要在第2个文档中使用原来老文档中的节点的话。首先需要使用detach()把这个节点分开来。</p>
<p>(2)从文件、流、系统ID、URL得到Document对象：</p>
<p>DOMBuilderbuilder=newDOMBuilder();<br>Documentdoc=builder.build(newFile("jdom_test.xml"));<br>SAXBuilderbuilder=newSAXBuilder();<br>Documentdoc=builder.build(url);<br>在新版本中DOMBuilder已经Deprecated掉DOMBuilder.builder(url)，用SAX效率会比较快。<br>这里举一个小例子，为了简单起见，使用String对象直接作为xml数据源：<br>PublicjdomTest(){<br>StringtextXml=null;<br>textXml="";<br>textXml=textXml+<br>"aaabbbcccddd";<br>textXml=textXml+"";<br>SAXBuilderbuilder=newSAXBuilder();<br>Documentdoc=null;<br>Readerin=newStringReader(textXml);<br>try{<br>doc=builder.build(in);<br>Elementroot=doc.getRootElement();<br>Listls=root.getChildren();//注意此处取出的是root节点下面的一层的Element集合<br>for(Iteratoriter=ls.iterator();iter.hasNext();){<br>Elementel=(Element)iter.next();<br>if(el.getName().equals("to")){<br>System.out.println(el.getText());<br>}<br>}<br>}<br>catch(IOExceptionex){<br>ex.printStackTrace();<br>}<br>catch(JDOMExceptionex){<br>ex.printStackTrace();<br>}<br>}<br>(3)DOM的document和JDOM的Document之间的相互转换使用方法，简单！<br>DOMBuilderbuilder=newDOMBuilder();<br>org.jdom.DocumentjdomDocument=builder.build(domDocument);<br>DOMOutputterconverter=newDOMOutputter();//workwiththeJDOMdocument&#8230;<br>org.w3c.dom.DocumentdomDocument=converter.output(jdomDocument);<br>//workwiththeDOMdocument&#8230;</p>
<p>2.XML文档输出</p>
<p>XMLOutPutter类：<br>JDOM的输出非常灵活,支持很多种io格式以及风格的输出<br>Documentdoc=newDocument(...);<br>XMLOutputteroutp=newXMLOutputter();<br>outp.output(doc,fileOutputStream);//Rawoutput<br>outp.setTextTrim(true);//Compressedoutput<br>outp.output(doc,socket.getOutputStream());<br>outp.setIndent("");//Prettyoutput<br>outp.setNewlines(true);<br>outp.output(doc,System.out);<br>详细请参阅最新的JDOMAPI手册</p>
<p>3.Element类：</p>
<p>(1)浏览Element树<br>Elementroot=doc.getRootElement();//获得根元素element<br>ListallChildren=root.getChildren();//获得所有子元素的一个list<br>ListnamedChildren=root.getChildren("name");//获得指定名称子元素的list<br>Elementchild=root.getChild("name");//获得指定名称的第一个子元素<br>JDOM给了我们很多很灵活的使用方法来管理子元素（这里的List是java.util.List）<br>ListallChildren=root.getChildren();<br>allChildren.remove(3);//删除第四个子元素<br>allChildren.removeAll(root.getChildren("jack"));//删除叫&#8220;jack&#8221;的子元素<br>root.removeChildren("jack");//便捷写法<br>allChildren.add(newElement("jane"));//加入<br>root.addContent(newElement("jane"));//便捷写法<br>allChildren.add(0,newElement("first"));</p>
<p>(2)移动Elements:<br>在JDOM里很简单<br>Elementmovable=newElement("movable");<br>parent1.addContent(movable);//place<br>parent1.removeContent(movable);//remove<br>parent2.addContent(movable);//add<br>在Dom里<br>Elementmovable=doc1.createElement("movable");<br>parent1.appendChild(movable);//place<br>parent1.removeChild(movable);//remove<br>parent2.appendChild(movable);//出错!<br>补充：纠错性<br>JDOM的Element构造函数（以及它的其他函数）会检查element是否合法。<br>而它的add/remove方法会检查树结构，检查内容如下：<br>1.在任何树中是否有回环节点<br>2.是否只有一个根节点<br>3.是否有一致的命名空间（Namespaces）</p>
<p>(3)Element的text内容读取</p>
<p>Acooldemo</p>
<p>//Thetextisdirectlyavailable<br>//Returns"\nAcooldemo\n"<br>Stringdesc=element.getText();<br>//There'saconvenientshortcut<br>//Returns"Acooldemo"<br>Stringdesc=element.getTextTrim();<br>(4)Elment内容修改<br>element.setText("Anewdescription");<br>3.可正确解释特殊字符<br>element.setText("</p>
<p><strong>四、JDOM的应用</strong></p>
<p>（一）、XML文档创建</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们由零开始利用JDOM生成一个XML文档。最后的结果(样本文档)看起来象这样：</p>
<p><br>kingwong</p>
<p>87654321</p>
<p>1.以 MyInfo 为根元素创建文档</p>
<p>Element rootElement = new Element("MyInfo");//所有的XML元素都是 Element 的实例。根元素也不例外：）<br>Document myDocument = new Document(rootElement);//以根元素作为参数创建Document对象。一个Document只有一个根，即root元素。</p>
<p>2.给根元素添加属性</p>
<p>Attribute rootAttri = new Attribute("comment","introduce myself");//创建名为 commnet,值为 introduce myself 的属性。<br>rootElement.setAttribute(rootAttri);//将刚创建的属性添加到根元素。<br>这两行代码你也可以合成一行来写，象这样：<br>rootElement.setAttribute(new Attribute("comment","introduce myself"));<br>或者<br>rootElement.setAttribute("comment","introduce myself");</p>
<p>3.添加元素和子元素</p>
<p>JDOM里子元素是作为 content（内容）添加到父元素里面去的,所谓content就是类似上面样本文档中之间的东东，即kingwong。罗嗦了点是吧：）<br>Element nameElement = new Element("name");//创建 name 元素<br>nameElement.addContent("kingwong");//将kingwong作为content添加到name元素<br>rootElement.addContent(nameElement);//将name元素作为content添加到根元素</p>
<p>这三行你也可以合为一句，象这样：<br>rootElement.addContent((Content)(new Element("name").addContent("kingwong")));//因为addContent(Content child)方法返回的是一个Parent接口，而Element类同时继承了Content类和实现了Parent接口，所以我们把它造型成Content。</p>
<p>我们用同样的方法添加带属性的子元素<br>rootElement.addContent(new Element("sex").setAttribute("value","male"));//注意这里不需要转型，因为addAttribute(String name,String value)返回值就是一个 Element。</p>
<p>同样的，我们添加元素到根元素下，用法上一样，只是稍微复杂了一些：<br>rootElement.addContent((Content)(new Element("contact").addContent((Content)(new Element("telephone").addContent("87654321")))));<br>如果你对这种简写形式还不太习惯，你完全可以分步来做，就象本节刚开始的时候一样。事实上如果层次比较多，写成分步的形式更清晰些，也不容易出错。</p>
<p>4.删除子元素</p>
<p>这个操作比较简单：<br>rootElement.removeChild("sex");//该方法返回一个布尔值</p>
<p>到目前为止，我们学习了一下JDOM文档生成操作。上面建立了一个样本文档，可是我们怎么知道对不对呢？因此需要输出来看一下。我们将JDOM生成的文档输出到控制台，使用 JDOM 的 XMLOutputter 类。</p>
<p>5. 将 JDOM 转化为 XML 文本</p>
<p>XMLOutputter xmlOut = new XMLOutputter(" ",true);<br>try {<br>xmlOut.output(myDocument,System.out);<br>} catch (IOException e) {<br>e.printStackTrace();<br>}<br>XMLOutputter 有几个格式选项。这里我们已指定希望子元素从父元素缩进两个空格，并且希望元素间有空行。<br>new XMLOutputter(java.lang.String indent, boolean newlines)这个方法在最新版本中已经不建议使用。JDOM有一个专门的用来定义格式化输出的类：org.jdom.output.Format，如果你没有特殊的要求，有时候使用里面的几个静态方法（应该可以说是预定义格式）如 getPrettyFormat()就可以了。我们把上面的输出格式稍微改一下，就象这样：<br>XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat()); </p>
<p>6.将JDOM文档转化为其他形式</p>
<p>XMLOutputter 还可输出到 Writer 或 OutputStream。为了输出JDOM文档到一个文本文件，我们可以这样做：<br>FileWriter writer = new FileWriter("/some/directory/myFile.xml");<br>outputter.output(myDocument, writer);<br>writer.close();</p>
<p>XMLOutputter 还可输出到字符串,以便程序后面进行再处理:<br>Strng outString = xmlOut.outputString(myDocument);</p>
<p>当然，在输出的时候你不一定要输出所有的整个文档，你可以选择元素进行输出：<br>xmlOut.output(rootElement.getChild("name"),System.out);<br>一句话，JDOM非常灵活方便！如果你想进一步研究JDOM，请到官方网站去看一看：http://www.jdom.org</p>
<p>本节示例源码：<br>package com.cyberobject.study;</p>
<p>import java.io.IOException;</p>
<p>import org.jdom.Attribute;<br>import org.jdom.Content;<br>import org.jdom.Document;<br>import org.jdom.Element;<br>import org.jdom.output.Format;<br>import org.jdom.output.XMLOutputter;</p>
<p>/**<br>* @author kingwong<br>*<br>* TODO To change the template for this generated <a href="http://www.itisedu.com/phrase/200604231258125.html" target=_new><u><font color=#0000ff>type</font></u></a> comment go to<br>* Window - Preferences - Java - Code Style - Code Templates<br>*/<br>public <a href="http://www.itisedu.com/phrase/200604231359565.html" target=_new><u><font color=#0000ff>class</font></u></a> TestJDOM {</p>
<p>public static void main(String[] args)<br>{<br>Element rootElement = new Element("MyInfo");<br>Document myDocument = new Document(rootElement);</p>
<p>// Attribute rootAttri = new Attribute("comment","introduce myself");<br>// rootElement.setAttribute(rootAttri);</p>
<p>rootElement.setAttribute("comment","introduce myself");<br>//rootElement.setAttribute(new Attribute("comment","introduce myself"));<br>// Element sexElement = new Element("sex");<br>// rootElement.addContent(sexElement);</p>
<p>// Element nameElement = new Element("name");<br>// nameElement.addContent("kingwong");<br>// rootElement.addContent(nameElement);</p>
<p>rootElement.addContent((Content)(new Element("name").addContent("kingwong")));<br>rootElement.addContent(new Element("sex").setAttribute("value","male"));<br>rootElement.addContent((Content)(new Element("contract").addContent((Content)(new Element("telephone").addContent("87654321")))));</p>
<p>rootElement.removeChild("sex");</p>
<p>XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());<br>try {<br>xmlOut.output(myDocument,System.out);<br>//xmlOut.output(rootElement.getChild("name"),System.out);<br>//String outString = xmlOut.outputString(myDocument);<br>} catch (IOException e) {<br>e.printStackTrace();<br>}<br>}<br>}</p>
<p><br>（二）、XML文档解析</p>
<p>JDOM 不光可以很方便的建立XML文档，它的另一个用处是它能够读取并操作现有的 XML 数据。<br>JDOM的解析器在org.jdom.input.*这个包里，其中的DOMBuilder的功能是将DOM模型的Document解析成JDOM模型的Document；SAXBuilder的功能是从文件或流中解析出符合JDOM模型的XML树。由于我们经常要从一个文件里读取数据，因此我们应该采用后者作为解析工具。<br>解析一个xml文档，基本可以看成以下几个步骤：</p>
<p>1.实例化一个合适的解析器对象</p>
<p>本例中我们使用SAXBuilder:<br>SAXBuilder sb = new SAXBuilder();</p>
<p>2.以包含XML数据的文件为参数，构建一个文档对象myDocument</p>
<p>Document myDocument = sb.build(/some/directory/myFile.xml);</p>
<p>3.获到根元素</p>
<p>Element rootElement = myDocument.getRootElement();</p>
<p>一旦你获取了根元素，你就可以很方便地对它下面的子元素进行操作了，下面对Element对象的一些常用方法作一下简单说明：<br>getChild("childname") 返回指定名字的子节点,如果同一级有多个同名子节点，则只返回第一个；如果没有返回null值。<br>getChildren("childname") 返回指定名字的子节点List集合。这样你就可以遍历所有的同一级同名子节点。 <br>getAttributeValue("name") 返回指定属性名字的值。如果没有该属性则返回null,有该属性但是值为空，则返回空字符串。<br>getChildText("childname") 返回指定子节点的内容文本值。<br>getText() 返回该元素的内容文本值。</p>
<p>还有其他没有罗列出来的方法，如果需要的话，可以随时查阅JDOM的在线文档：http://www.jdom.org/docs/apidocs/index.html。当然你可以在你需要的地方添加、删除元素操作，还记得上面的创建XML的方法吗？呵呵~~~</p>
<p>学习新东东还是从实例学起最为快捷，下面简单举个例子，就以上面的XML样本代码来学习JDOM的XML解析。本例中读取了样本XML文件里一些属性和content，最后我们还在contact元素里插入了一个新元素wanghua@cyberobject.com" /&gt;。尽管我们实现了对于XML的基本操作，细心的朋友可能会<br>有疑问：如果XML文档的层次稍微复杂一些，如果嵌套多达几十上百层的话（开个玩笑），如果靠这样从根元素一级一级地通过getChild("childname")来访问子元素的话，将会非常痛苦！是的，的确是这样，但是我们有另一个有力的工具XPath，为什么不用呢？这是后话！先卖个关子（手敲累啦，下回吧，呵呵）。</p>
<p>/*<br>* Created on 2004-8-21<br>*<br>* TODO To change the template for this generated file go to<br>* Window - Preferences - Java - Code Style - Code Templates<br>*/<br>package com.cyberobject.study;</p>
<p>import org.jdom.Document;<br>import org.jdom.Element;<br>import org.jdom.input.SAXBuilder;<br>import org.jdom.output.Format;<br>import org.jdom.output.XMLOutputter;</p>
<p>/**<br>* @author kingwong<br>*<br>* TODO To change the template for this generated type comment go to<br>* Window - Preferences - Java - Code Style - Code Templates<br>*/<br>public class TestJDOM2 {<br>public static void main(String[] args){<br>SAXBuilder sb = new SAXBuilder();<br>try<br>{ <br>Document doc = sb.build("myFile.xml");<br>Element root = doc.getRootElement();</p>
<p>String str1 = root.getAttributeValue("comment");<br>System.out.println("Root Element's comment attribute is : " + str1);<br>String str2 = root.getChild("sex").getAttributeValue("value");<br>System.out.println("sex Element's value attribute is : " + str2);<br>String str3 = root.getChildText("name");<br>System.out.println("name Element's content is :" + str3);<br>String str4 = root.getChild("contact").getChildText("telephone");<br>System.out.println("contact Element's telephone subelement content is : " + str4 + "\n");<br>Element inputElement = root.getChild("contact"); <br>inputElement.addContent(new Element("email").setAttribute("value","wanghua@cyberobject.com"));</p>
<p>XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());<br>String outStr = xmlOut.outputString(root);<br>System.out.println(outStr);<br>}<br>catch(Exception e)<br>{<br>e.printStackTrace();<br>}<br>}<br>}</p>
<p>&nbsp;</p>
<p></font></p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/126177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-06-25 18:33 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/06/25/126177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL DB学习笔记A</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/04/07/109103.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sat, 07 Apr 2007 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/04/07/109103.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/109103.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/04/07/109103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/109103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/109103.html</trackback:ping><description><![CDATA[MySQL DB是当今开源世界上最流行的free数据库，它的蓬勃发展和广泛的应用，奠定了当今主流数据库市场的一席。<br>
<p>一、数据库简介<br>MySQL&nbsp;是一个快速、多线程、多用户和强壮的SQL数据库服务器。</p>
<p>对Unix和&nbsp;OS/2&nbsp;平台，MySQL基本上是免费的；但对微软平台，你在30&nbsp;天的试用期后必须获得一个MySQL&nbsp;许可证。详见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Licensing_and_Support.html#Licensing_and_Support">第三节 MySQL许可证和技术支持</a>。 </p>
<p>MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL（结构化查询语言）是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现，它由一个服务器守护程序<code>mysqld</code>和很多不同的客户程序和库组成。</p>
<p>SQL是一种标准化的语言，它使得存储、更新和存取信息更容易。例如，你能用SQL语言为一个网站检索产品信息及存储顾客信息，同时MySQL也足够快和灵活以允许你存储记录文件和图像。</p>
<p>MySQL&nbsp;主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器，它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库，但速度更快，MySQL就开发出来。自1996年以来，我们一直都在使用MySQL，其环境有超过&nbsp;40&nbsp;个数据库，包含&nbsp;10,000个表，其中500多个表超过7百万行，这大约有100&nbsp;个吉字节(GB)的关键应用数据。</p>
<p>MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中，但它已经提供一个丰富和极其有用的功能集。</p>
<p>二、MySQL&nbsp;的主要特征<br></p>
<p>下表描述MySQL一些重要的特征：
<ul>
    <li>使用核心线程的完全多线程。这意味着它能很容易地利用多CPU（如果有）。
    <li>C&nbsp;、C++、&nbsp;Eiffel&nbsp;、&nbsp;Java、&nbsp;Perl、&nbsp;PHP、Python、和&nbsp;TCL&nbsp;&nbsp;API。见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Clients.html#Clients">20 MySQL&nbsp;客户工具和&nbsp;API</a>。
    <li>可运行在不同的平台上，见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Installing.html#Which_OS">4.2 MySQL支持的操作系统</a>。
    <li>多种列类型：1、&nbsp;2、&nbsp;3、4、和&nbsp;8&nbsp;字节长度的有符号/无符号整数、<code>FLOAT</code>、<code>DOUBLE</code>、<code>CHAR</code>、<code>VARCHAR</code>、<code>TEXT</code>、<code>BLOB</code>、<code>DATE</code>、<code>TIME</code>、<code>DATETIME、</code> <code>TIMESTAMP</code>、<code>YEAR</code>、<code>SET</code>和<code>ENUM</code>类型。 见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Reference.html#Column_types">7.3 列类型</a>。
    <li>利用一个优化的一遍扫描多重联结（one-sweep multi-join）非常快速地进行联结(join)。
    <li>在查询的<code>SELECT</code>和<code>WHERE部分</code>支持全部运算符和函数，例如：
    <pre>mysql&gt; SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
    WHERE income/dependents &gt; 10000 AND age &gt; 30;</pre>
    <li>通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速，通常在查询初始化后不应该有任何内存分配。
    <li>全面支持SQL的<code>GROUP BY</code>和<code>ORDER BY</code>子句，支持聚合函数( <code>COUNT()</code>、<code>COUNT(DISTINCT)</code>、<code>AVG()</code>、<code>STD()</code>、<code>SUM()</code>、 <code>MAX()</code>和<code>MIN()</code> )。
    <li>支持ANSI SQL的<code>LEFT OUTER JOIN</code>和ODBC语法<code>。</code>
    <li>你可以在同一查询中混用来自不同数据库的表。(与版本&nbsp;3.22一样&nbsp;)。
    <li>一个非常灵活且安全的权限和口令系统，并且它允许基于主机的认证。口令是安全的，因为当与一个服务器连接时，所有的口令传送被加密。
    <li>ODBC for Windiws 95。所有的&nbsp;ODBC&nbsp;2&nbsp;.&nbsp;5&nbsp;函数和其他许多函数。例如，你可以用Access连接你的&nbsp;MySQL服务器。见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_ODBC.html#ODBC">16 MySQL&nbsp;&nbsp;ODBC&nbsp;支持</a>。
    <li>具备索引压缩的快速B树磁盘表。
    <li>每个表允许有16个索引。每个索引可以由1～16个列或列的一部分组成。最大索引长度是&nbsp;256&nbsp;个字节(在编译MySQL时，它可以改变)。一个索引可以使用一个<code>CHAR</code>或<code>VARCHAR</code>字段的前缀。
    <li>定长和变长记录。
    <li>用作临时表的内存散列表。
    <li>大数据库处理。我们正在对某些包含&nbsp;50,000,000&nbsp;个记录的数据库使用MySQL。
    <li>所有列都有缺省值，你可以用<code>INSERT</code>插入一个表列的子集，那些没用明确给定值的列设置为他们的缺省值。
    <li>为了可移植性使用&nbsp;GNU&nbsp;&nbsp;Automake&nbsp;,&nbsp;Autoconf&nbsp;和<code>libtool。</code>
    <li>用C和C++编写，并用大量不同的编译器测试。
    <li>一个非常快速的基于线程的内存分配系统。
    <li>没有内存漏洞。用一个商用内存漏洞监测程序测试过(<code>purify</code>)。
    <li>包括<code>myisamchk</code>，一个检查、优化和修复数据库表的快速实用程序，详见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Maintenance.html#Maintenance">13 维护&nbsp;MySQL安装</a>。
    <li>全面支持ISO-8859-1&nbsp;&nbsp;Latin1&nbsp;字符集。例如，斯堪的纳维亚的字符 @ringaccent{a}, @"a and @"o&nbsp;在表和列名字被允许。
    <li>所有数据以&nbsp;ISO-8859-1&nbsp;&nbsp;Latin1&nbsp;格式保存。所有正常的字符串比较是忽略大小写的。
    <li>根据&nbsp;ISO-8859-1&nbsp;&nbsp;Latin1&nbsp;字符集进行排序(目前瑞典语的方式)。通过在源代码中增加排序顺序数组可以改变它。为了理解一个更高级的排序例子，看一看捷克语的排序代码。MySQL支持可在编译时指定的很多不同的字符集。
    <li>表和列的别名符合&nbsp;SQL92&nbsp;标准。
    <li><code>DELETE</code>、<code>INSERT</code>、<code>REPLACE</code>和<code>UPDATE </code>返回有多少行被改变(受影响)。
    <li>函数名不会与表或列名冲突。例如<code>ABS</code>是一个有效的列名字。对函数调用的唯一限制是函数名与随后的<samp>&#8220;(&#8221;</samp>不能有空格。详见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Reference.html#Reserved_words">7.31 MySQL对保留字很挑剔吗？</a>。
    <li>所有MySQL程序可以用选项<code>--help</code>或<code>-?</code>获得联机帮助。
    <li>服务器能为客户提供多种语言的出错消息，详见<a href="http://www.linuxforum.net/books/mysqlmanual/manual_Server.html#Languages">9.1 MySQL支持哪些语言？</a>。
    <li>客户端使用TCP/IP&nbsp;连接或Unix套接字（socket）或NT下的命名管道连接MySQL。
    <li>MySQL特有的SHOW命令可用来检索数据库、表和索引的信息，EXPLAIN命令可用来确定优化器如何解决一个查询。 </li>
</ul>
<p style="COLOR: #000000">三、SQL语法</p>
<p style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 登录MySQL服务器语法：mysql -h host_name -u user_name -p [password];<br>&nbsp;&nbsp;&nbsp; 1、创建、删除数据库&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE DATABASE [IF NOT EXISTS] db_name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：create DATABASE Samp_db;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DROP DATABASE [IF EXISTS] db_name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如：drop DATABASE Samp_db;<br><br>&nbsp;&nbsp;&nbsp; 2、创建表格<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)][table_options]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [select_statement]；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：mysql&gt; CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT,<br>&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; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIMARY KEY (a), KEY(b))<br>&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; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE=MyISAM SELECT b,c FROM test2;<br><br>&nbsp;&nbsp;&nbsp; 3、插入数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT [LOW_PRIORITY | DELAYED] [IGNORE]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [INTO] tbl_name [(col_name,...)]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUES ((expression | DEFAULT),...),(...),...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;[ ON DUPLICATE KEY UPDATE col_name=expression, ... ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or&nbsp; INSERT [LOW_PRIORITY | DELAYED] [IGNORE]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [INTO] tbl_name [(col_name,...)]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp; INSERT [LOW_PRIORITY | DELAYED] [IGNORE]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;[INTO] tbl_name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET col_name=(expression | DEFAULT), ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：mysql&gt; INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);<br><br></p>
</u><img src ="http://www.blogjava.net/mlh123caoer/aggbug/109103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-04-07 15:28 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/04/07/109103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据挖掘与统计学</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93538.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Fri, 12 Jan 2007 13:57:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93538.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/93538.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/93538.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/93538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Data Mining from a Statistical Perspective																		John Maindonald																		Statistical Consulting Unit of the Graduate School， Australian National University 		...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93538.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/93538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-12 21:57 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SDO2.0：创建和读取 XML 文档</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93335.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Fri, 12 Jan 2007 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93335.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/93335.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/93335.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/93335.html</trackback:ping><description><![CDATA[<strong>
				<p>
						<a name="Intro">
								<span class="atitle">
										<font face="Arial" size="4">引言：什么是 SDO？</font>
								</span>
						</a>
				</p>
				<p>Service Data Object (SDO) 2.0 是一个开放标准数据模型编程 API，允许开发人员在较高的级别方便地操作数据。尽管 SDO 1.0 以相同的数据抽象为目标，但有几个大的缺点，其中主要的一点是缺少 Helper 类，如 <code>XSDHelper</code>, <code>XMLHelper</code> 等。而最终结果是，开发人员被迫使用 SDO 1.0 实现 API（来自 Eclipse Modeling Framework (EMF) SDK）。 </p>
				<p>当前的实现 (SDO 2.0) 使用 EMF 2.2 SDK，但这个 SDO 2.0 实现细节并不会影响开发人员根据新 API 编写程序。将来，开放源代码社区（通过 Apache Software Foundation）可能会决定提供不同的 SDO 2.0 实现，但这不应影响基于 SDO 2.0 API 构建的应用程序。</p>
				<p>了解这个新 API 的优势的最基本方法是使用 SDO 2.0 来创建符合 XML 模式 (XSD) 的 XML 文档并对其进行读取操作。要在不使用 SDO 2.0 的情况下完成相同的工作，开发人员需要理解 XML 解析器如何工作，并将数据解析逻辑与应用程序紧密集成。如果以后 XSD 需要更改，将需要对应用程序的各处进行调整，从而可能对代码的质量带来灾难性的影响。 </p>
				<p>SDO 2.0 API 的新用户很难直接通过学习规范来理解相关概念。为了提供一定的帮助，我们从 XML Schema Primer（请参阅<a href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#resources"><font color="#996699">参考资料</font></a>）创建了一个示例，以说明如何使用 SDO 2.0 API 进行以下任务：</p>
				<ul>
						<li>将 XML 文档写入到磁盘 
</li>
						<li>从磁盘读取该文档。 </li>
				</ul>
				<p>
						<a name="Intro">
								<span class="atitle">
										<font face="Arial" size="4">场景：购买订单信息收集和配送</font>
								</span>
						</a>
				</p>
				<p>以下是我们将尝试通过我们的示例实现的使用场景。首先，公司确定购买订单（purchase order，PO）信息的要求。完成此任务后，我们就开始创建静态表单，以设计信息的结构。在数据库中，此静态表单即表模式。在 XML，此静态表单即 XML 模式 (XSD)。如果以后需要收集更多的客户信息，我们将需要重新设计表单/表模式/XSD。</p>
				<p>下订单时，客户需要填写 PO 表单，或向操作员提供相同的信息，以便填写此表单。表单中的信息将随后由公司用于对订单进行配送。 </p>
				<p>公司接收到 PO 信息后，很有可能会将其进行保存，并在以后对其进行读取以用于各种目的（如提供客户支持）。在此示例中，我们可以将信息以 XML 格式保存，然后使用 SDO API 进行读取。</p>
				<p>
						<a href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#fig1">
								<font color="#996699">图 1</font>
						</a> 显示了从客户 Robert Smith 收集的 PO 信息示例。将创建 XSD 文件，以采用结构化的方式存储此示例购买订单。将用一个名为 <code>CreatePurchaseOrder.java</code> 的示例程序来采用 XML 格式创建示例 PO（名为 <code>po.xml</code>）。最后，将使用 <code>ReadPurchaseOrder.java</code> 来演示如何从 <code>po.xml</code> 读取订单信息。</p>
				<br />
				<a name="fig1">
						<b>图 1. 来自 Rober Smith 的示例购买订单信息</b>
				</a>
				<br />
				<table cellpadding="10" width="400" border="1">
						<tbody>
								<tr>
										<td>
												<b>Order date:</b> 1999-10-20 
<p><b>Shipping information:</b><br />Name:Alice Smith<br />Street:123 Maple Street<br />City:Mill Valley<br />State:CA<br />Zip code: 90952<br />Country:US<br /></p><p><b>Billing information:</b><br />Name:Robert Smith<br />Street:8 Oak Avenue<br />City:Mill Valley<br />State:PA<br />Zip code: 95819<br />Country:US<br /></p><p><b>Order Items:</b><br />1. Part number:872-AA<br />Product name:Lawnmower<br />Quantity: 1<br />Price: 148.95<br />Comment:Confirm this is electric<br /></p><p>2. Part number:926-AA<br />Product name:Baby Monitor<br />Quantity: 1<br />Price: 39.98<br />Ship date: 1999-05-21<br /></p><p><b>Comment:</b> Hurry, my lawn is going wild!<br /></p></td>
								</tr>
						</tbody>
				</table>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="N100EC">
								<span class="atitle">
										<font face="Arial" size="4">购买订单的 XML 模式</font>
								</span>
						</a>
				</p>
				<p>基于图 1 所示的示例购买订单，可以使用一个 PO 类型来表示订单。我们将其命名为 <code>PurchaseOrderType</code>。<code>PurchaseOrderType</code> 的实例可以包含四个主要数据，如下所示：</p>
				<ol>
						<li>
								<code>shipping information</code>
						</li>
						<li>
								<code>billing information</code>
						</li>
						<li>
								<code>order items information</code>
						</li>
						<li>
								<code>comment</code>
						</li>
				</ol>
				<p>shipping information 和 billing information 可包含更多的数据，如 <code>name</code>、<code>street</code>、<code>city</code>、<code>state</code>、<code>zip</code> 和 <code>country</code>。Order items information 可以包含客户所购买的物品的很多信息。每个物品可能包含 <code>part number</code>、<code>product name</code>、<code>quantity</code>, <code>price</code>、<code>ship date</code> 和 <code>comment</code>。PO 的 comment 区域包含一个字符串值，并不要求采用更结构化的信息。</p>
				<p>清单 1 显示了结构化为 XSD 格式的文件中包含的所有购买订单信息。</p>
				<br />
				<a name="N10152">
						<b>清单 1. PO.xsd</b>
				</a>
				<br />
				<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
						<tbody>
								<tr>
										<td>
												<code>
														<pre class="section">&lt;xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:po="http://www.example.com/PO" targetNamespace="http://www.example.com/PO"&gt;

    &lt;xsd:element name="purchaseOrder" type="PurchaseOrderType"/&gt;
    &lt;xsd:element name="comment" type="xsd:string"/&gt;

    &lt;xsd:complexType name="PurchaseOrderType"&gt;
        &lt;xsd:sequence&gt;
            &lt;xsd:element name="shipTo" type="USAddress"/&gt;
            &lt;xsd:element name="billTo" type="USAddress"/&gt;
            &lt;xsd:element ref="comment" minOccurs="0"/&gt;
            &lt;xsd:element name="items"  type="Items"/&gt;
        &lt;/xsd:sequence&gt;
        &lt;xsd:attribute name="orderDate" type="xsd:date"/&gt;
    &lt;/xsd:complexType&gt;

    &lt;xsd:complexType name="USAddress"&gt;
        &lt;xsd:sequence&gt;
            &lt;xsd:element name="name"   type="xsd:string"/&gt;
            &lt;xsd:element name="street" type="xsd:string"/&gt;
            &lt;xsd:element name="city"   type="xsd:string"/&gt;
            &lt;xsd:element name="state"  type="xsd:string"/&gt;
            &lt;xsd:element name="zip"    type="xsd:decimal"/&gt;
        &lt;/xsd:sequence&gt;
        &lt;xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/&gt;
    &lt;/xsd:complexType&gt;

    &lt;xsd:complexType name="Items"&gt;
        &lt;xsd:sequence&gt;
            &lt;xsd:element name="item" minOccurs="0" maxOccurs="unbounded"&gt;
                &lt;xsd:complexType&gt;
                    &lt;xsd:sequence&gt;
                        &lt;xsd:element name="productName" type="xsd:string"/&gt;
                        &lt;xsd:element name="quantity"&gt;
                            &lt;xsd:simpleType&gt;
                                &lt;xsd:restriction base="xsd:positiveInteger"&gt;
                                    &lt;xsd:maxExclusive value="100"/&gt;
                                &lt;/xsd:restriction&gt;
                            &lt;/xsd:simpleType&gt;
                        &lt;/xsd:element&gt;
                        &lt;xsd:element name="USPrice"  type="xsd:decimal"/&gt;
                        &lt;xsd:element ref="comment"   minOccurs="0"/&gt;
                        &lt;xsd:element name="shipDate" type="xsd:date" minOccurs="0"/&gt;
                    &lt;/xsd:sequence&gt;
                    &lt;xsd:attribute name="partNum" type="po:SKU" use="required"/&gt;
                &lt;/xsd:complexType&gt;
            &lt;/xsd:element&gt;
        &lt;/xsd:sequence&gt;
    &lt;/xsd:complexType&gt;
    &lt;xsd:simpleType name="SKU"&gt;
        &lt;xsd:restriction base="xsd:string"&gt;
            &lt;xsd:pattern value="\d{3}-[A-Z]{2}"/&gt;
        &lt;/xsd:restriction&gt;
    &lt;/xsd:simpleType&gt;

</pre>
												</code>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<p>还可以使用统一建模语言（Unified Modeling Language，UML）类关系图来对购买订单信息进行结构化，如图 2 中所示。</p>
				<br />
				<a name="#fig2">
						<b>图 2. 购买订单的 UML 类关系图</b>
				</a>
				<br />
				<img height="319" alt="购买订单的 UML 类关系图" src="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/image001.jpg" width="479" />
				<br />
				<p>XSD <code>po.xsd</code> 文件和该 UML 类关系图具有以下区别：</p>
				<ol>
						<li>类关系图定义了 <code>ItemType</code>，而并未在 <code>po.xsd.diagram</code> 中定义此项。尽管 <code>po.xsd</code> 并不具体定义 <code>ItemType</code>，XSD 规范仍可将 <code>ItemType</code> 作为匿名类型处理。 
</li>
						<li>XSD 中所有 <code>xsd:&lt;type&gt;</code> 在类关系图中都缩写为了 <code>&lt;type&gt;</code>。在 XSD 中，<code>xsd:&lt;type&gt;</code> 模式中的 xsd 用于指示类型所属的命名空间。在类关系图中，为了简单起见而将其省略了。 
</li>
						<li>
								<code>SKU type</code> 未在类关系图中定义。<code>SKU type</code> 事实上是在 <code>po</code> 命名空间中定义的规范化字符串类型。在类关系图中，它由 <code>string type</code> 加以表示。 </li>
				</ol>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="N101B0">
								<span class="atitle">
										<font face="Arial" size="4">创建 XML 格式的示例 PO</font>
								</span>
						</a>
				</p>
				<p>清单 2 中所示的示例 <code>CreatePurchaseOrder.java</code> 程序用于创建一个 PO，该 PO 采用名为 <code>po.xml</code> 的 XML 格式（如清单 3 所示）。</p>
				<br />
				<a name="N101C1">
						<b>清单 2. CreatePurchaseOrder.java</b>
				</a>
				<br />
				<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
						<tbody>
								<tr>
										<td>
												<code>
														<pre class="section">/**
 * Author:	Fuhwei Lwo
 */
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;

import commonj.sdo.DataObject;
import commonj.sdo.helper.DataFactory;
import commonj.sdo.helper.XMLHelper;
import commonj.sdo.helper.XSDHelper;

public class CreatePurchaseOrder {
  private static final String PO_MODEL = "po.xsd";
  private static final String PO_NAMESPACE = "http://www.example.com/PO";
  private static final String PO_XML = "po.xml";

	private static void definePOTypes() throws Exception {
	 FileInputStream fis = new FileInputStream(PO_MODEL);
	 XSDHelper.INSTANCE.define(fis, null);
	 fis.close();
	}

	public static void main(String[] args) throws Exception {
	 definePOTypes();
      
	 DataObject purchaseOrder = 
	   DataFactory.INSTANCE.create(PO_NAMESPACE, "PurchaseOrderType");
		
	 purchaseOrder.setString("orderDate", "1999-10-20");
		
	 DataObject shipTo = purchaseOrder.createDataObject("shipTo");
	 shipTo.set("country", "US");
	 shipTo.set("name", "Alice Smith");
	 shipTo.set("street", "123 Maple Street");
	 shipTo.set("city", "Mill Valley");
	 shipTo.set("state", "CA");
	 shipTo.setString("zip", "90952");
	 DataObject billTo = purchaseOrder.createDataObject("billTo");
	 billTo.set("country", "US");
	 billTo.set("name", "Robert Smith");
	 billTo.set("street", "8 Oak Avenue");
	 billTo.set("city", "Mill Valley");
	 billTo.set("state", "PA");
	 billTo.setString("zip", "95819");
	 purchaseOrder.set("comment", "Hurry, my lawn is going wild!");
		
	 DataObject items = purchaseOrder.createDataObject("items");
		
	 DataObject item1 = items.createDataObject("item");
	 item1.set("partNum", "872-AA");
	 item1.set("productName", "Lawnmower");
	 item1.setInt("quantity", 1);
	 item1.setString("USPrice", "148.95");
	 item1.set("comment", "Confirm this is electric");
		
	 DataObject item2 = items.createDataObject("item");
	 item2.set("partNum", "926-AA");
	 item2.set("productName", "Baby Monitor");
	 iteim2.setInt("quantity", 1);
	 item2.setString("USPrice", "39.98");
	 item2.setString("shipDate", "1999-05-21");
		
	 OutputStream stream = new FileOutputStream(PO_XML);
	 XMLHelper.INSTANCE.save(purchaseOrder, PO_NAMESPACE, "purchaseOrder", stream);
	}
}
</pre>
												</code>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<a name="N101CA">
						<b>清单 3. Po.xml</b>
				</a>
				<br />
				<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
						<tbody>
								<tr>
										<td>
												<code>
														<pre class="section">&lt;?xml version="1.0" encoding="ASCII"?&gt;
&lt;po:purchaseOrder xmlns:po="http://www.example.com/PO" orderDate="1999-10-20"&gt;
  &lt;shipTo country="US"&gt;
    &lt;name&gt;Alice Smith&lt;/name&gt;
    &lt;street&gt;123 Maple Street&lt;/street&gt;
    &lt;city&gt;Mill Valley&lt;/city&gt;
    &lt;state&gt;CA&lt;/state&gt;
    &lt;zip&gt;90952&lt;/zip&gt;
  &lt;/shipTo&gt;
  &lt;billTo country="US"&gt;
    &lt;name&gt;Robert Smith&lt;/name&gt;
    &lt;street&gt;8 Oak Avenue&lt;/street&gt;
    &lt;city&gt;Mill Valley&lt;/city&gt;
    &lt;state&gt;PA&lt;/state&gt;
    &lt;zip&gt;95819&lt;/zip&gt;
  &lt;/billTo&gt;
  &lt;comment&gt;Hurry, my lawn is going wild!&lt;/comment&gt;
  &lt;items&gt;
    &lt;item partNum="872-AA"&gt;
      &lt;productName&gt;Lawnmower&lt;/productName&gt;
      &lt;quantity&gt;1&lt;/quantity&gt;
      &lt;USPrice&gt;148.95&lt;/USPrice&gt;
      &lt;comment&gt;Confirm this is electric&lt;/comment&gt;
    &lt;/item&gt;
    &lt;item partNum="926-AA"&gt;
      &lt;productName&gt;Baby Monitor&lt;/productName&gt;
      &lt;quantity&gt;1&lt;/quantity&gt;
      &lt;USPrice&gt;39.98&lt;/USPrice&gt;
      &lt;shipDate&gt;1999-05-21&lt;/shipDate&gt;
    &lt;/item&gt;
  &lt;/items&gt;
&lt;/po:purchaseOrder&gt;
</pre>
												</code>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<p>该示例 Java 程序首先通过调用 <code>XSDHelper.INSTANCE.define()</code> 方法向 SDO 运行时注册 <code>po.xsd</code> 中描述的所有类型。然后，它从 <code>PurchaseOrderType</code> 创建一个根 <code>DataObject</code>。该程序将从该处使用 <code>DataObject</code> API 来构建 <code>DataObject</code> 树，以表示购买订单信息，如图 3 中所示。</p>
				<br />
				<a name="fig3">
						<b>图 3. DataObject 树</b>
				</a>
				<br />
				<img height="608" alt="DataObject 树" src="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/image002.gif" width="572" />
				<br />
				<p>在图 3 中，每个矩形都划分为两个隔间。顶部间隔（灰色）指示 <code>DataObject</code> 实例名称及其实际类型；底部间隔指示所包含的属性。例如，树的根元素为 <code>purchaseOrder DataObject</code> 实例；其实际类型为 <code>PurchaseOrderType</code>，在清单 1 中的 <code>PO.xsd</code> 中定义。在此 <code>DataObject</code> 实例中，包含两个属性值——<code>orderDate</code> 和 <code>comment</code>。</p>
				<p>创建 <code>DataObject</code> 树后，该程序调用 <code>XMLHelper.INSTANCE.save()</code> 方法来将从 <code>purchaseOrder DataObject</code> 实例开始的树内容保存到 XML 文档中（此例中为 <code>po.xml</code>）。事实上，可以将树中任何 <code>DataObject</code> 实例指定为 <code>XMLHelper.INSTANCE.save()</code> 方法的第一个参数，<code>save()</code> 方法将保存从所指定的实例开始的所有 <code>DataObject</code> 实例。</p>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="N1023F">
								<span class="atitle">
										<font face="Arial" size="4">读取示例 PO</font>
								</span>
						</a>
				</p>
				<p>
						<code>CreatePurchaseOrder.java</code> 创建了 <code>po.xml</code> 后，我们可以编译并运行清单 4 中所示的 <code>ReadPurchaseOrder.java</code>，以演示如何使用 SDO API 来遍历 <code>po.xml</code> 的内容。该应用程序将执行以下操作：</p>
				<ol>
						<li>进行检查，以确保已向 SDO 运行时注册了 <code>po.xsd</code> 中定义的类型 
</li>
						<li>调用 <code>XMLHelper.load()</code> 方法来将 <code>po.xml</code> 加载到内存中（使用 <code>XMLDocument</code> 实例 <code>xmlDoc</code> 加以表示） 
</li>
						<li>调用 <code>xmlDoc.getRootObject()</code> 方法来检索名为 <code>purchaseOrder</code> 的 <code>DataObject</code> 树的根对象，该对象与图 3 中所示的 <code>DataObject</code> 树关系图中的 <code>purchaseOrder DataObject</code> 对应 
</li>
						<li>
								<code>purchaseOrder DataObject</code> 返回后，遍历 <code>DataObject</code> 树，以检索关于此 PO 的所有信息 </li>
				</ol>
				<br />
				<a name="N10295">
						<b>清单 4. ReadPurchaseOrder.java</b>
				</a>
				<br />
				<table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">
						<tbody>
								<tr>
										<td>
												<code>
														<pre class="section">/**
/**
 * Author:	Fuhwei Lwo
 */
import java.io.FileInputStream;
import java.util.List;

import commonj.sdo.DataObject;
import commonj.sdo.helper.XMLDocument;
import commonj.sdo.helper.XMLHelper;
import commonj.sdo.helper.XSDHelper;


public class ReadPurchaseOrder {
 private static final String PO_MODEL = "po.xsd";
 private static final String PO_XML = "po.xml";

	private static void definePOTypes() throws Exception {
	  FileInputStream fis = new FileInputStream(PO_MODEL);
	  XSDHelper.INSTANCE.define(fis, null);
	  fis.close();
        }

	public static void main(String[] args) throws Exception {
 	  definePOTypes();

 	  FileInputStream fis = new FileInputStream(PO_XML);

 	  XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);

 	  DataObject purchaseOrder = xmlDoc.getRootObject();
 	  
           System.out.println("Order date: " + purchaseOrder.get("orderDate"));
          System.out.println("Comment: " + purchaseOrder.get("comment"));

 	  DataObject shipTo = purchaseOrder.getDataObject("shipTo");
 	  System.out.println("Ship to name: " + shipTo.get("name"));

	  DataObject billTo = purchaseOrder.getDataObject("billTo");
           System.out.println("Bill to name: " + billTo.get("name"));
          System.out.println();

            DataObject items = purchaseOrder.getDataObject("items");
            List itemList = items.getList("item");
            for (int i=0; i&lt;itemList.size(); i++) {
        
		       DataObject item = (DataObject)itemList.get(i);
			
		       System.out.println("Part num: " + item.get("partNum"));S
		      System.out.println("Product name: " + item.get("productName"));
    } // for
  }
}
</pre>
												</code>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<p>清单 4 中以黑体显示的 <code>System.out.println()</code> 显示各种数据对象的属性值，包括：</p>
				<ul>
						<li>
								<code>purchaseOrder DataObject</code> 的 <code>orderDate</code> 和 <code>comment</code> 属性 
</li>
						<li>
								<code>shipTo DataObject</code> 的 <code>name</code> 属性 
</li>
						<li>
								<code>billTo DataObject</code> 的 <code>name</code> 属性 
</li>
						<li>各种数据对象的 <code>partNum</code> 和 <code>productName</code> 属性 </li>
				</ul>
				<br />
				<a name="fig4">
						<b>图 4. 运行 ReadPurchaseOrder 的控制台输出</b>
				</a>
				<br />
				<table cellpadding="10" width="400" border="1">
						<tbody>
								<tr>
										<td>Order date: 1999-10-20 
<p>Comment:Hurry, my lawn is going wild!<br />Ship to name:Alice Smith<br />Bill to name:Robert Smith<br /></p><p>Part num:872-AA<br />Product name:Lawnmower</p><p>Part num:926-AA<br />Product name:Baby monitor </p></td>
								</tr>
						</tbody>
				</table>
				<p>在图 4 中，我们可以看到运行 <code>ReadPurchaseOrder</code> Java 代码的输出。</p>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="N1030F">
								<span class="atitle">
										<font face="Arial" size="4">结束语：SDO 将成为事实上的数据模型编程 API</font>
								</span>
						</a>
				</p>
				<p>SDO 2.0 API 提供了创建和访问数据的一致方式，使开发人员不必了解分析和维护数据完整性的底层实现细节。SDO 2.0 目前是 Apache Software Foundation 下的一个试验性子项目（称为 Tuscany），预期将成为 SOA 开发的数据模型编程 API 的事实标准。请参阅<a href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#resources"><font color="#996699">参考资料</font></a>部分，以获得一个相关链接。</p>
				<p>可以从上面的示例中看出，SDO 2.0 API 使您完全不必知道和使用 XML 解析器 API 来读取、写入和操作数据。如果使用 Java 创建了 <code>DataObject</code> 来表示符合您所定义的 XML 模式的 XML 数据，SDO 2.0 将提供足够的方便性和灵活性，让您将精力放在如何使用数据上。因此，它可为您带来极大的好处，从而提高开发工作效率和产品质量。</p>
				<p>总之，通过使用 SDO 2.0 提供的数据抽象技术，您可以根据所定义的业务逻辑来处理数据，以满足您的业务需求。这可以帮助您简化业务应用程序开发，也能提高团队的工作效率和工作质量。</p>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="resources">
								<span class="atitle">
										<font face="Arial" size="4">参考资料 </font>
								</span>
						</a>
				</p>
				<b>学习</b>
				<br />
				<ul>
						<li>您可以参阅本文在 developerWorks 全球站点上的 <a href="http://www.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/?S_TACT=105AGX52&amp;S_CMP=cn-a-ws" target="_blank"><font color="#5c81a7">英文原文</font></a> 。<br /><br /></li>
						<li>请参阅 W3 网站上的 <a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/primer.html"><font color="#5c81a7">XML Schema Part 0:Primer Second Edition</font></a>，以了解 XML 模式机制的说明，并了解如何使用 XML 模式语言创建模式。<br /><br /></li>
						<li>请参阅 <a href="http://www.ibm.com/developerworks/cn/webservices/specification/ws-sdo/"><font color="#5c81a7">Service Data Objects 规范</font></a>。<br /><br /></li>
						<li>在 Apache Software Foundation 网站了解有关 <a href="http://incubator.apache.org/tuscany/"><font color="#5c81a7">Tuscany/SDO 2.0 project</font></a> 的更多信息。<br /><br /></li>
						<li>请访问 <a href="http://www.ibm.com/developerworks/cn/webservices"><font color="#5c81a7">SOA and Web services</font></a> 专区，以获得数百篇关于如何开发 Web 服务应用程序的文章以及入门级、中级和高级教程，您将大开眼界。</li>
				</ul>
				<br />
				<b>讨论</b>
				<br />
				<ul>
						<li>
								<a href="http://www.ibm.com/developerworks/blogs/?S_TACT=105AGX52&amp;S_CMP=cn-a-ws">
										<font color="#5c81a7">developerWorks 博客</font>
								</a>——参加 developerWorks 社区。<br /><br /></li>
				</ul>
				<br />
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td>
												<img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" />
												<br />
												<img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" />
										</td>
								</tr>
						</tbody>
				</table>
				<table class="no-print" cellspacing="0" cellpadding="0" align="right">
						<tbody>
								<tr align="right">
										<td>
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
												<table cellspacing="0" cellpadding="0" border="0">
														<tbody>
																<tr>
																		<td valign="center">
																				<img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" />
																				<br />
																		</td>
																		<td valign="top" align="right">
																				<a class="fbox" href="http://www-128.ibm.com/developerworks/cn/webservices/ws-sdoxmlschema/#main">
																						<b>
																								<font color="#996699">回页首</font>
																						</b>
																				</a>
																		</td>
																</tr>
														</tbody>
												</table>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
				<p>
						<a name="author">
								<span class="atitle">
										<font face="Arial" size="4">关于作者</font>
								</span>
						</a>
				</p>
				<table cellspacing="0" cellpadding="0" width="100%" border="0">
						<tbody>
								<tr>
										<td colspan="3">
												<font face="Arial" size="4">
														<img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												</font>
										</td>
								</tr>
								<tr valign="top" align="left">
										<td>
												<p>
														<font face="Arial" size="4">
																<img height="80" alt="Fuhwei Lwo 的照片" src="http://www.ibm.com/developerworks/i/p-flwo.jpg" width="64" align="left" />
														</font>
												</p>
										</td>
										<td>
												<font face="Arial" size="4">
														<img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="4" />
												</font>
										</td>
										<td width="100%">
												<p>Fuhwei Lwo 目前是 WebSphere Service Data Objects (SDO) 的团队负责人。他主要的工作重点是推动在面向服务的体系结构（Service Oriented Architecture，SOA）中将 SDO 作为数据数据模型编程 API 成功采用。</p>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
				<br />
		</strong><img src ="http://www.blogjava.net/mlh123caoer/aggbug/93335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-12 09:42 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/12/93335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于WEB 的数据挖掘综述</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91631.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 03 Jan 2007 13:20:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91631.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91631.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91631.html</trackback:ping><description><![CDATA[<p align="left">                                                            周 竞 扬<br />                             MG0133041<br />                            南京大学计算机科学与技术系分布式与并行系统实验室<br />                             江苏 南京 210093<br /><strong>摘 要</strong>基于WEB 的数据挖掘是当前相当热门的方向之一本文对此作了一个比较全面的<br />综述概括了基于WEB 的数据挖掘的主要概念和特点说明各类WEB 挖掘尤其<br />是基于WEB 使用的挖掘所常用的技术最后简单介绍了XML 在基于WEB 数据<br />挖掘中的应用<br /><strong>关键字</strong>基于WEB 的数据挖掘 基于WEB 使用的数据挖掘 半结构化 XML<br /><br /><strong>Abstract:</strong> As web mining is one of the hottest research fields presently, this survey introduces itsbasic concepts and characteristics, including semi-structured data model. Three types ofweb mining and their applications are discussed in this paper, especially the web usagemining. Using XML in web mining is also stated in the last of the article.<br /><strong>Keywords</strong>: Web Mining Web Usage Mining Semi-structured XML<br /><br />       我们现在已经生活在一个相当数字化的时代中,通信、计算机和网络技术正极大地影响着整个人类社会。然而，海量信息既给人们带来方便也带来了许多问题使我们惊叹信息爆炸的同时，又不得不面对知识贫乏的苦恼信息过量难以消化信息真假难以辨别，信息安全难以保证，信息形式相异难以统一处理。人们开始考虑：“如何才能不被信息淹没，而是从中及时发现有用的知识、提高信息利用率。”面对这一挑战，数据挖掘技术应运而生，并得到长足的发展，显示出了强大的生命力.<br />        所谓数据挖掘Data Mining 就是从大量的、不完全的、有噪声的、模糊的、随机的原始数据中提取隐含在其中的、事先未知的、但又是潜在有用的信息和知识的过程[1] 。数据挖掘的诞生是人们对数据库技术进行长期研究和开发的结果，而数据挖掘技术发展的同时它又反过来促使数据库技术进入了一个更高级的阶段：传统的数据环境基本上是数据操作型的传统的信息系统只负责数据的增删及修改操作而在数据库的基础上可实现的工作就是OLTP （OnLine Transaction Process 联机事务处理）。现在由于数据积累的不断增多，人们需要分析型的数据环境，于是就出现了由数据库导出的数据仓库，以此为基础则可以实现OLAP （OnLine Analysis Process 联机分析处理）：随着海量数据搜集的可能计算机处理技术的增强和先进数据挖掘算法的提出，数据挖掘技术不仅能对过去的数据进行查询和遍历，而且能够找出过去数据之间潜在有价值的联系并以一定的形式表现出来，从而极大的满足了人们对知识的迫切需求。<br />        数据挖掘基于的原始数据是形成知识的源泉，它既可以是结构化的如关系数据库中的数据，也可以是半结构化的，如文本、图形、图像数据，甚至是分布在网络上的异构型数据。本文将着重讨论一种针对半结构化数据的挖掘—基于WEB 的数据挖掘，主要介绍了它的基本概念以及经常采用的技术最后简单说明了XML 在其中的应用。<br /><strong>一、 基于WEB 的数据挖掘的主要概念</strong><br />1、 什么是基于WEB 的数据挖掘<br />        当前网络发展迅速，各种网站比比皆是。但在竞争日益激烈的网络经济中，只有赢得用户，才能最终赢得竞争的优势。作为一个网站的管理员或拥有者，应该知道用户都在他的网站上干什么，知道网站哪些部分最为用户喜爱，哪些让用户感到厌烦，什么地方出了安全漏洞，什么样的改动带来了显著的用户满意度，提高什么样的改动反而丢失了用户等等。“知己知彼”，才能“百战不殆”。而基于WEB 数据挖掘技术正能满足这些需求。<br />        就基于WEB 数据挖掘的确切定义，到目前为止还没有很明确而权威的说法。国外有认为：基于WEB 数据挖掘，就是利用数据挖掘技术自动地从网络文档以及服务中发现和抽取信息的过程。国内则众说纷纭，有认为是在大量已知数据样本的基础上得到数据对象间的内在特性，并以此为依据在WEB 中进行有目的的信息提取过程。同时，也有学者将网络环境下的数据挖掘归入网络信息检索与网络信息内容的开发等等。总之，基于WEB 的数据挖掘（Web Mining） 正是从万维网（World Wide Web ）上获取原始数据中从中挖掘出隐含其中且潜在可用的知识最终应用于商业运作以满足管理者的需要。<br /><strong>2 、基于WEB 数据挖掘的分类<br /></strong>根据挖掘的对象不同我们可以把基于WEB 的数据挖掘分为三大类：<br /> 􀁺基于WEB 内容的挖掘（Web Content Mining）<br />􀁺 基于WEB 结构的挖掘（Web Structure Mining）<br />􀁺 基于WEB 使用的挖掘（Web Usage Mining）<br />（1）基于WEB 内容的挖掘<br />        所谓基于WEB 内容的挖掘实际上就是从WEB 文档及其描述中获取知识, WEB 文档文件挖掘以及基于概念索引或Agent 技术的资源搜索也应该归于此类。Web 信息资源类型众多，目前WWW 信息资源已经成为网络信息资源的主体，然而除了大量的人们可以直接从网上抓取、建立索引、实现查询服务的资源之外，相当一部分信息是隐藏着的数据（如由用户的提问而动态生成的结果，存在于数据库系统中的数据，或是某些私人数据）无法被索引，从而无法提供对它们有效的检索方式，这就迫使我们把这些内容挖掘出来。若从信息资源的表现形式来看，WEB 信息内容是由文本、图像、音频、视频、元数据等种种形式的数据组成的，因而我们所说的基于WEB 内容的挖掘也是一种针对多媒体数据的挖掘。<br />2 、基于WEB 结构的挖掘<br />       这一类型的挖掘是从万维网的整体结构和网页上的相互链接中发现知识的过程，它主要挖掘WEB 潜在的链接结构模式。这种思想源于引文分析，即通过分析一个网页链接和被链接数量以及对象来建立WEB 自身的链接结构模式。这种模式可以用于网页归类并且可以由此获得有关不同网页间相似度及关联度的信息。WEB 结构挖掘有助于用户找到相关主题的权威站点，而且对网络资源检索结果的排序有很大意义。<br />3、 基于WEB 使用的挖掘<br />        基于WEB 使用的挖掘，也称为WEB 日志挖掘（Web Log Mining）。与前两种挖掘方式以网上的原始数据为挖掘对象不同，基于WEB 使用的挖掘面对的是在用户和网络交互的过程中抽取出来的第二手数据。这些数据包括：网络服务器访问记录、代理服务器日志记录、用户注册信息以及用户访问网站时的行为动作等等。WEB 使用挖掘将这些数据一一纪录到日志文件中，然后对积累起来的日志文件进行挖掘，从而了解用户的网络行为数据所具有的意义。我们前面所举的例子正属于这一种类型。<br />        表1[2]从五个方面对三种挖掘形式做了比较其中的具体内容下文将会作进一步介绍。<br />          基于WEB 内容的挖掘：非结构化 半结构化\文本文档 超文本文档\Bag of words n-grams 词短语 概念或实体 关系型数据\TFIDF 和变体机器学习统计学(包括自然语言处理)\归类 聚类发掘 抽取规则 发掘文本模式 建立模式.<br />           基于WEB 结构的挖掘:半结构化 数据库形式的网站 链接结构\超文本 文档链接\边界标志图 OEM 关系型数据 图形\Proprietary 算法 ILP (修改后)的关联规则\发掘高频的子结构 发掘网站体系结构 归类 聚类.<br />          基于WEB 使用的挖掘:交互形式\服务器日志记录 浏览器日志记录\关系型表 图形\Proprietary 算法 机器学习 统计学 (修改后的）关联规则\站点建设 改进与管理 销建立用户模式.<br /><strong>3、 基于WEB 数据挖掘的特点</strong><br />（1） 、什么是半结构化<br />       所谓半结构化是相对于结构化和非结构化而言的。我们称传统数据库中的数据为完全结构化的数据，而同时还存在着一些诸如一本书、一张图片等完全无结构的非结构化数据。半结构化则是介于两者之间，具有隐含模式、信息结构不规则、无严格类型约束等特点。半结构化数据模式有如下特征[4]<br />      先有数据，后有模式；<br />      半结构化数据的模式是用于描述数据的结构信息，而不是对数据结构进行强制性的约束；<br />     半结构化数据的模式是非精确的，它只可能描述数据的一部分结构，也可能根据数据处理的不同阶段的视角不同而异；<br />     半结构化数据的模式，可能规模很大甚至超过源数据的规模，而且会由于数据的不断更新而处于动态变化过程中。<br />（2）、 WEB 数据的特点<br />        Web 上的数据最大特点就是半结构化。但是Web 上的数据与传统的数据库中的数据不同，传统的数据库都有一定的数据模型，可以根据模型来具体描述特定的数据而且按照一定的组织有规律的集中或者分布存放，结构性很强；而Web 上的数据非常复杂，没有特定的模型描述每一站点的数据，都各自独立设计并且数据本身具有自述性和动态可变性，因而Web 上的数据不是强结构性的。但与此同时Web 页面又是有描述层次的，单个网站也是按照各自的结构构架的，从而具有一定的结构性。因此我们认为Web 上存在的数据既不是完全结构化的也不是完全非结构化的，而是介于两者之间，一般称之为半结构化数据。<br />        半结构化是Web 上数据的最大特点，显然面向Web 的数据挖掘比面向单个数据仓库或者其他结构化数据集的数据挖掘要复杂得多。<br /><strong>4、使用基于WEB 数据挖掘能得到什么<br /></strong>        Web Mining 技术已经应用于解决多方面的问题，比如基于WEB 内容和结构的挖掘极大的帮助了我们从浩瀚的网络资源中更加快速而准确的获取所需要的资料，而基于使用的数据挖掘之威力，更是在商业运作上发挥的淋漓尽致，具体表现在：<br />（1） 对网站的修改能有目的有依据稳步的提高用户满意度<br />发现系统性能瓶颈，找到安全漏洞，查看网站流量模式，找到网站最重要的部分，发现用户的需要和兴趣，对需求强烈的地方提供优化，根据用户访问模式修改网页之间的连接，把用户想要的东西以更快且有效的方式提供给用户，在正确的地方正确的时间把正确的信息提供给正确的人。<br />（2） 测定投资回报率<br />      测定广告和促销计划的成功度<br />      找到最有价值的ISP 和搜索引擎<br />      测定合作和结盟网站对自身的价值<br />（3） 提供个性化网站<br />          对大多数WEB 应用来说，让用户感到真个网站是完全为他自己定制的个性化网站，是WEB 站点成功的秘诀。针对不同的用户完全按照其个人的兴趣和爱好（数据挖掘算法得到的用户访问模式）向用户动态的提供要浏览的建议自动提供个性化的网站。<br />        下面我们将就基于WEB 使用的挖掘，进一步讨论它所经常采用的技术。<br /><strong>二、基于WEB 使用挖掘中的技术问题<br /></strong>1、 Web Usage Mining 中非技术问题<br />       在基于使用的挖掘中，出于商业目的考量网站的拥有者或者管理者经常会对网站的某些方面提出一些分析，比如：流量分析（点击量）、广告分析、网站出入口分析、访问路径分析、用户来源分析、浏览器和平台分析等等。<br />       就这些方面作进一步的智能分析，我们可以从中真正与数据挖掘相关的问题：<br />（1） 网页相关性分析<br />       哪些网页具有密切的关系，如果很多人具有a.html-〉b.html-〉c.html 这样的访问模式，则我们可以认定a.html 和c.html 之间有一定的关系，从而考虑是否在a.html 上直接加上c.html的链接。<br />（2） 用户访问模式分析<br />        有哪一些网页用户只要访问了其中的一页，则可以断定他也要访问其他的网页即按不同的用户访问模式，把网页分组得到一个一个的兴趣点。哪些用户所访问的网页组成比较类似（具有类似的兴趣）即根据用户行为的相似性，把用户按行为模式分类。<br />（3） 用户归类<br />通过用户填写的信息如何把用户归入某一特定的类别，然后可对同一类别中的用户提供相似的服务。<br /><strong>2 、Web Usage Mining 中的技术问题<br /></strong>（1） 数据处理<br />         如何得到分析和数据挖掘所用的数据，主要采用两种方法，一是直接使用Web Server的Log 文件，二是用网络监听的办法，在数据包中提取出HTTP 请求和应答。最后两种数据源都要转换成固定的格式存放在数据库或数据仓库内，供统计分析和数据挖掘使用。<br />（2） 统计分析<br />          在数据库的基础上，针对不同的数据运行各种统计函数。<br />（3） 数据挖掘<br />           数据挖掘技术是实现智能分析得到隐藏在大量繁杂数据内部知识的关键。通过对用户访问网站的历史数据(即我们通过数据处理得到的数据)应用各种数据挖掘技术,得到高层知识，提供给用户作决策支持，或利用这些知识动态生成网页，为用户提供访问建议。<br />（4） 关联规则Association Rules<br />         从服务器会话中发现请求网页的相关性，可用于优化网站组织，实现网络代理中的预取功能等。<br />（5） 聚集Clustering<br />         使用分组（Usage Clusters ）把具有相似浏览模式的用户分成组，可用于电子商务应用中市场分片（market segmentation） 和为用户提供个性化服务，而网页分组（page clusters ）按内容的相似性把网页分类，可用于搜索引擎和Web 浏览助手（Web assistance providers ）为用户提供推荐链接。<br />（6） 归类Classification<br />          根据用户的个人资料，将其归入某一特定的类，可使用决策树、naive Bayesian<br />classifiers、 k-最近邻居等算法。<br />（7） 序列模式Sequential Patterns<br />        发现一个session 内部的网页间的时间相关性，可用于预测用户的访问趋向而提供建议。<br /><strong>三、XML 技术在基于WEB 的数据挖掘中的应用<br /></strong>1 、XML 技术简介<br />        XML （eXtsible Markup Language） 是SGML （Standard General MarkupLanguage ）的一个子集，近年来为IBM Microsoft 等公司大力推崇。和HTML（ Hyper Text Markup Language）类似，XML 也是一种标示语言，可提供描述结构化资料的格式，它们都可以用于可视化和用户界面标准。<br />       当前，Internet 只是文本和图片的访问媒体，并没有智能搜索、数据交换、自适应表示和个人化的标准。为了超出设置信息访问和显示标准的限制，Internet 必须设置信息理解标准（表示数据的通用方式）以便软件能够更好地搜索移动显示和处理上下文中隐藏的信息。由于 HTML 是一种描述如何表示 WEB 页的格式，并不表示数据，所以它并不能完成以上处理。而 XML 提供了一种独立的运行程序的方法来共享数据是用来自动描述信息的一种新的标准语言，它通过计算机通信“把Internet 的功能由信息传递扩大到人类其他多种多样的活动中去”[3]。<br />2、技术的特点及其在Web Mining 中的应用<br />       它最大的特点在于其Tag 是具有语义的，可由用户定义能够反映一定的数据的含义。此外，XML 还具有简单易用、可扩展性、开发性、强标准化等特点,非常适合应用于WebMining 。从某种意义上说，XML 非常接近半结构化的数据模型它可供操作的基础要比HTML 好得多。图二是HTML 和XML 的文档比较，我们不难看出XML 的文档描述的语义非常清楚，而且我们很容易就可以将之和关系数据库中的属性一一对应起来，能够支持实施十分精确的查询，以及其他高级操作。而HTML 文档只是按显示方式进行描述的。由此可见，XML 将为在WEB 上的数据查询和模式抽取提供了一个重要的契机。<br />       XML 由若干规则组成，这些规则可用于创建标记语言，并能用一种被称作分析程序的简明程序处理所有新创建的标记语言。XML 解决了HTML 不能解决的两个Web 问题，即“Internet 发展速度快而接入速度慢”的问题，以及可利用的信息多但难以找到自己需要的那部分信息”的问题[3]。 XML 能增加结构和语义信息可使计算机和服务器即时处理多种形式的信息。因此，运用XML 的扩展功能不仅能从WEB 服务器下载大量的信息，还能大大减少网络业务量。<br />        以XML 为基础的新一代WWW 环境是直接面对WEB 数据的，不仅可以很好地兼容原有的WEB 应用而且可以更好地实现WEB 中的信息共享与交换。XML 可看作一种半结构化的数据模型，可以很容易地将XML 的文档描述与关系数据库中的属性一一对应起来，实施精确地查询与模型抽取。<br />         当用标准的HTML 无法完成某些WEB 应用时，XML 便能大显身手这些应用从大的方面讲可以被分成以下四类：需要WEB 客户端在两个或更多异质数据库之间进行通信的应用；试图将大部分处理负载从WEB 服务器转到WEB 客户端的应用；需要WEB 客户端将同样的数据以不同的浏览形式提供给不同的用户的应用；需要智能WEB 代理根据个人用户的需要裁减信息内容的应用。显而易见，这些应用和WEB 的数据挖掘技术有着重要的联系，基于WEB 的数据挖掘必须依靠它们来实现。<br /><strong>四、一些著名的Web Mining 产品简介<br /></strong>1、Net percerptions<br />       Net Perceotion 公司的Net Percerptions ，采用了一个叫做实时建议的技术：让它的产品对象（主要是网站）能够根据用户以往的浏览行为(比如以前的购买记录) 在其他用户（称做Community 中）找出与他有相类似浏览行为的，根据这些用户的浏览行为来预测该用户以后的浏览行为，从而为用户提供个性化的浏览建议。这种技术利用了网站用户的浏览行为有相似的一面，因此其预言有很高的准确性。并且它是实时运行的，随着浏览量的增加会变得越来越聪明。<br />2、 CommerceTrends<br />        WebTrends 公司的CommerceTrends 被宣称为第一个用于VRM （Visitor Relationship Management） 的平台，它能够让电子商务网站更好地理解其网站访问者的行为，帮助网站采取一些行动来将这些访问者变为顾客，将一次性的顾客变为长期的忠实顾客。 CommerceTrends 提供了完全的“browser-based” 方法，使得不同的部门（从市场部门到分析家）能在任何时间得到他所想得到的个性化报表。同时它还利用了强大的数据仓库技术，这样就不仅仅将原始数据存在数据库里而是“Sessionizes ”了原始数据。<br />3. DBMiner<br />        加拿大Simon Fraser 大学数据库系统研究实验室Database SystemResearchLaboratory<br />的知识发现研究组在数据挖掘技术领域经过多年的研究开发了名为DBMiner 的知识发现系统原型。它将机器学习方法学和数据库技术结合起来，用于在大型数据库和数据仓库中交互地挖掘多层次的知识。该系统独特之处在于紧密集成了联机分析处理OLAP 和多种数据挖掘功能，包括特征化、关联、分类和聚类。<br />五 结束语<br />          基于WEB 的数据挖掘是当前热门研究方向之一，而且其应用范畴广阔，潜力巨大；Web Mining 技术也在不断提出和改进之中。但是Web Mining 技术还有很多缺陷和不足。我们还需要半结构化数据模型、Web 数据的过滤和转换等方面作进一步研究，才能进一步发挥Web Mining 的无限威力<br /><br />References<br />[1] Jiawei Han and Micheline Kamber Data Mining: Concepts and Techniques 2000 Morgan<br />Kaufmann Publishers<br />[2] 张 燕 浅谈网络信息挖掘<br />[3] 徐振航 刘莉芹 XML 与面向Web 的数据挖掘技术<br />[4] 王 静 孟小峰 半结构化数据的模式研究综述 计算机科学 2001 Vol. 28<br />[5] 於 丹 数据挖掘走向Internet 微电脑世界<br />[6] 王聪修 网络数据挖掘<br />[7] What is Web Mining Lily BBS<br />[8] 李志锋 网页数据分析 天极网 2001.2<br />[9] Web Mining: 第二代网络信息处理技术 Lily BBS<br />[10] 构造未来Web 页面的工具语言XML Lily BBS</p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-03 21:20 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>COGNOS业务智能产品</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91613.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 03 Jan 2007 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91613.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91613.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91613.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、       																				Cognos														业务智能服务的主要产品																																																														 												使用				Cognos			...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91613.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-03 19:41 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/03/91613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用SAS做聚类分析</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91300.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91300.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91300.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91300.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 聚类分析和判别分析有相似的作用，都是起到分类的作用。但是，判别分析是已知分类然后总结出判别规则，是一种有指导的学习；而聚类分析则是有了一批样本，不知道它们的分类，甚至连分成几类也不知道，希望用某种方法把观测进行合理的分类，使得同一类的观测比较接近，不同类的观测相差较多，这是无指导的学习。								所以，聚类分析依赖于对观测间的接近程度（距离）或相似程度的理解，定义不同的距离量度和...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91300.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:25 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPSS 统计软件的主菜单及子菜单</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91299.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91299.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91299.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91299.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91299.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 菜单																																																																																																																																																																										...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91299.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:22 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web信息抽取技术纵览二</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91297.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91297.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91297.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91297.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第六章																																												         																																												总结和讨论																																																																									...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91297.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:19 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web信息抽取技术纵览一</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91293.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91293.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91293.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91293.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第一章																																												         																																												导论																																																																												...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91293.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:18 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>聚类分析（Cluster analysis ）</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91291.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91291.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91291.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91291.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Introduction																																																				Cluster analysis														 is the process of grouping objects into subsets that have meaning in the cont...&nbsp;&nbsp;<a href='http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91291.html'>阅读全文</a><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:14 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文献综述的写法</title><link>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91289.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Mon, 01 Jan 2007 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91289.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/91289.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/91289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/91289.html</trackback:ping><description><![CDATA[<p>（1）什么是综述？ <br />文献综述是以作者非直接经验和资料为主而形成的一种论文。它是将一定时期内某一学科领域或专题的文献收集起来，对其提出和探讨的问题进行分析归纳、综合评论、加工整理而成。培养和掌握文献综述的写作能力和方法，是一名科研工作者必须具备的一项基本功。<br />（2）综述的作用? <br />服务性 <br />研究性 <br />文献检索回溯 <br />（3）综述的类型? <br /> 按时间划分： 回顾性 综述、前瞻性综述 <br />按是否参与作者个人意见划分：归纳性综述、评论性综述 <br />按内容划分： 动态性综述、成就性综述、争鸣性综述  <br />（4）文献综述的特点? <br />新颖性 综合性 评述性 客观性 <br />（5）综述的格式?<br />题名<br />署名和单位<br />摘要和关键词<br />引言<br />主体<br />结束语<br />致谢<br />参考文献<br />（6）题名的作用?<br />提示作用<br />评价作用<br />吸引作用<br />检索作用 <br />（7）题名的基本要求 :具体确切，表达得当 简短精练，高度概括 用词规范，可供检索<br />（8）署名和单位:姓名在前，单位名称在后；<br />姓名在上行，单位名称在下行；<br />单位在前，姓名在后；<br />单位名称在上行，姓名在下行；<br />题名下只写作者姓名，单位名称以脚注的形式放在首页的脚注。<br />（9）摘要和关键词:根据国家标准规定，文献综述和其他论文一样，都应有摘要，并列出3~5个关键词。<br />（10）摘要的类型:<br />报道性摘要又称资料性摘要，是指明一次文献的主题范围及内容梗概的简明摘要，相当于简介。<br />指示性摘要又称描述性摘要，指示一次文献的论题及取得的成果的性质和水平，不具体介绍研究的方法和结果，但是不应只简单重复题名中已有的信息，写成题名的解释说明。<br />报道--指示性摘要 这种摘要介于上述两种摘要之间，或者说是上述两种摘要相结合的综合性摘要<br />结构性摘要按层次列出项目名称，逐项分别叙述。包括：目的、材料和方法、结果、结论。<br />（11）引  言:可用小标题“引言”引导，也可不用，直接写文字。<br />（12）内容：目的、主题、介绍背景材料、阐明所写的范围和内容（用1~2句话表达）。<br />注意：引言不宜过长，应开门见山，100~200字即可。<br />（13）主    体 :是综述主要内容的叙述部分<br />注意: 应反映不同学术观点 应列出小标题加以论述* 应引用主要研究结果和结论性观点<br />（14）结  语:归纳主体部分所叙述的内容 评论主体部分所提出的问题 对今后的研究提出建议或展望<br />（15）致  谢:在撰写综述的过程中 得到某人的指导，或写完 后经某人审阅，需在正文末尾致谢。 <br />（16）参  考  文  献:通常是指文后参考文献。它是为撰写论文或编写著作而引用的有关书刊资料及其他特殊资料。<br />（17）综 述 的 写 作:<br />选题<br />查阅文献<br />阅读文献<br />摘录内容<br />确立论点<br />拟提纲<br />写作<br />（18）选 题 的 范 围:<br />感觉到某问题的存在，自己有新的见解；对某问题说法多，但较混乱、互相矛盾；有新提法或假说，但尚未形成；某领域有长足的进步；对某项工作或研究的阶段性综合评价。<br />（19）选 题 注 意:题意新  有使用价值  题目不宜过大<br />（20）查 阅 文 献:<br />要求文献新，选读3~5年内的期刊；<br />文献检索全，需手捡和机捡相结合；<br />有索引的要从卷索引查起。<br />查阅文献的方法:顺序法 回朔法<br />（21）阅 读 文 献：<br />先综述后单篇<br />先教科书后期刊<br />先本专业后边缘或相关学科<br />先摘要后全文<br />先目录、序言或内容提要后正文<br />先泛读后精读<br />选取有用的内容以便写作时引用<br />（22）摘  录：确定项目：作者、问题、出版内容、刊名、 出版年月、卷期）、起止页。<br /> <br />        不定内容：引言、材料和方法、结果、讨论中的有关部分，其中最基本的是<br />        重要数据和核心观点。<br />（23）确 立 论 点：<br />   分析资料<br />       归纳综合 <br />          精心推敲<br />                提炼论点<br />（24）拟  提  纲：整理内容  打腹稿<br />（25）写 作：根据提纲，将内容展开，并注意观点与内容的一致；论述观点时，作者可有倾向性，但不同观点也应列出；修改初稿；誊写稿件。<br />（26）写 作 要 求：客观系统条理清楚，说理透彻 防止文献堆砌和人名罗列</p>
		<p> </p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/91289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2007-01-01 15:10 <a href="http://www.blogjava.net/mlh123caoer/archive/2007/01/01/91289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几个人工智能会议(转载)</title><link>http://www.blogjava.net/mlh123caoer/archive/2006/12/28/90609.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Thu, 28 Dec 2006 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2006/12/28/90609.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/90609.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2006/12/28/90609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/90609.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/90609.html</trackback:ping><description><![CDATA[<p> IJCAI (1+): AI最好的综合性会议, 1969年开始, <br />每两年开一次, 奇数年开. 因为AI <br /></p>
		<p>实在太大, <br />所以虽然每届基本上能录100多篇（现在已经到200多篇了），但分到每个 <br /></p>
		<p>领域就没几篇了，象machine learning、computer <br />vision这么大的领域每次大概也 <br /></p>
		<p>就10篇左右, 所以难度很大. <br />不过从录用率上来看倒不太低,基本上20%左右, 因为内 <br /></p>
		<p>行人都会掂掂分量, 没希望的就别浪费reviewer的时间了. <br />最近中国大陆投往国际会 <br /></p>
		<p>议的文章象潮水一样, <br />而且因为国内很少有能自己把关的研究组, <br />所以很多会议都在 <br /></p>
		<p>complain说中国的低质量文章严重妨碍了PC的工作效率. <br />在这种情况下, 估计这几年 <br /></p>
		<p>国际会议的录用率都会降下去. 另外, <br />以前的IJCAI是没有poster的, 03年开始, 为了 <br /></p>
		<p>减少被误杀的好人, 增加了2页纸的poster.值得一提的是, <br />IJCAI是由貌似一个公司 <br /></p>
		<p>的"IJCAI Inc."主办的(当然实际上并不是公司, <br />实际上是个基金会), 每次会议上要 <br /></p>
		<p>发几个奖, 其中最重要的两个是IJCAI Research Excellence <br />Award 和 Computer <br /></p>
		<p>&amp; Thoughts Award, 前者是终身成就奖, 每次一个人, <br />基本上是AI的最高奖(有趣的 <br /></p>
		<p>是, 以AI为主业拿图灵奖的6位中, <br />有2位还没得到这个奖), 后者是奖给35岁以下的 <br /></p>
		<p>青年科学家, 每次一个人. <br />这两个奖的获奖演说是每次IJCAI的一个重头戏.另外, <br /></p>
		<p>IJCAI 的 PC member 相当于其他会议的area chair, 权力很大, <br />因为是由PC member <br /></p>
		<p>去找 reviewer 来审, 而不象一般会议的PC member其实就是 <br />reviewer. 为了制约 <br /></p>
		<p>这种权力, IJCAI的审稿程序是每篇文章分配2位PC member, <br />primary PC member去找 <br /></p>
		<p>3位reviewer, second PC member 找一位. <br /></p>
		<p>AAAI (1): 美国人工智能学会AAAI的年会. <br />是一个很好的会议, 但其档次不稳定, 可 <br /></p>
		<p>以给到1+, 也可以给到1-或者2+, 总的来说我给它"1". <br />这是因为它的开法完全受 <br /></p>
		<p>IJCAI制约: 每年开, 但如果这一年的IJCAI在北美举行, <br />那么就停开. 所以, 偶数年 <br /></p>
		<p>里因为没有IJCAI, 它就是最好的AI综合性会议, <br />但因为号召力毕竟比IJCAI要小一些, <br /></p>
		<p>特别是欧洲人捧AAAI场的比IJCAI少得多(其实亚洲人也是), <br />所以比IJCAI还是要稍弱 <br /></p>
		<p>一点, 基本上在1和1+之间; 在奇数年, <br />如果IJCAI不在北美, AAAI自然就变成了比 <br /></p>
		<p>IJCAI低一级的会议(1-或2+), 例如2005年既有IJCAI又有AAAI, <br />两个会议就进行了协 <br /></p>
		<p>调, 使得IJCAI的录用通知时间比AAAI的deadline早那么几天, <br />这样IJCAI落选的文章 <br /></p>
		<p>可以投往AAAI.在审稿时IJCAI 的 PC chair也在一直催, <br />说大家一定要快, 因为AAAI <br /></p>
		<p>那边一直在担心IJCAI的录用通知出晚了AAAI就麻烦了. <br /></p>
		<p>COLT (1): 这是计算学习理论最好的会议, ACM主办, <br />每年举行. 计算学习理论基本上 <br /></p>
		<p>可以看成理论计算机科学和机器学习的交叉, <br />所以这个会被一些人看成是理论计算 <br /></p>
		<p>机科学的会而不是AI的会. <br />我一个朋友用一句话对它进行了精彩的刻画: <br />"一小群数 <br /></p>
		<p>学家在开会". 因为COLT的领域比较小, <br />所以每年会议基本上都是那些人. 这里顺便 <br /></p>
		<p>提一件有趣的事, 因为最近国内搞的会议太多太滥, <br />而且很多会议都是LNCS/LNAI出 <br /></p>
		<p>论文集, LNCS/LNAI基本上已经被搞臭了, 但很不幸的是, <br />LNCS/LNAI中有一些很好的 <br /></p>
		<p>会议, 例如COLT. <br /></p>
		<p>CVPR (1): 计算机视觉和模式识别方面最好的会议之一, <br />IEEE主办, 每年举行. 虽然题 <br /></p>
		<p>目上有计算机视觉, <br />但个人认为它的模式识别味道更重一些. <br />事实上它应该是模式识 <br /></p>
		<p>别最好的会议, 而在计算机视觉方面, <br />还有ICCV与之相当. IEEE一直有个倾向, 要把 <br /></p>
		<p>会办成"盛会", <br />历史上已经有些会被它从quality很好的会办成"盛会"了. <br />CVPR搞不好 <br /></p>
		<p>也要走这条路. 这几年录的文章已经不少了. <br />最近负责CVPR会议的TC的chair发信 <br /></p>
		<p>说, 对这个community来说, <br />让好人被误杀比被坏人漏网更糟糕, <br />所以我们是不是要减 <br /></p>
		<p>少好人被误杀的机会啊? <br />所以我估计明年或者后年的CVPR就要扩招了. <br /></p>
		<p>ICCV (1): 介绍CVPR的时候说过了, <br />计算机视觉方面最好的会之一. IEEE主办. <br /></p>
		<p>ICCV逢奇数年开，开会地点以往是北美，欧洲和亚洲轮流，本来2003年定在北 <br /></p>
		<p>京，后来因Sars和原定05年的法国换了一下。ICCV'07年将首次在南美(巴西)举行. <br /></p>
		<p>CVPR原则上每年在北美开, <br />如果那年正好ICCV在北美,则该年没有CVPR. <br /></p>
		<p>ICML (1): 机器学习方面最好的会议之一. 现在是IMLS主办, <br />每年举行. 参见关于NIPS的 <br /></p>
		<p>介绍. <br /></p>
		<p>NIPS (1): 神经计算方面最好的会议之一, NIPS主办, <br />每年举行. 值得注意的是, 这个会 <br /></p>
		<p>每年的举办地都是一样的, 以前是美国丹佛, <br />现在是加拿大温哥华; 而且它是年底开会, <br /></p>
		<p>会开完后第2年才出论文集, 也就是说, <br />NIPS'05的论文集是06年出. 会议的名字是 <br /></p>
		<p>"Advances in Neural Inxxxxation Processing Systems", 所以, <br />与ICMLECML这样 <br /></p>
		<p>的"标准的"机器学习会议不同, <br />NIPS里有相当一部分神经科学的内容, 和机器学习有 <br /></p>
		<p>一定的距离. 但由于会议的主体内容是机器学习, <br />或者说与机器学习关系紧密, 所以 <br /></p>
		<p>不少人把NIPS看成是机器学习方面最好的会议之一. <br />这个会议基本上控制在Michael <br /></p>
		<p>Jordan的徒子徒孙手中, 所以对Jordan系的人来说, <br />发NIPS并不是难事, 一些未必很 <br /></p>
		<p>强的工作也能发上去, 但对这个圈子之外的人来说, <br />想发一篇实在很难, 因为留给"外 <br /></p>
		<p>人"的口子很小. 所以对Jordan系以外的人来说, <br />发NIPS的难度比ICML更大. 换句话说, <br /></p>
		<p>ICML比较开放, 小圈子的影响不象NIPS那么大, <br />所以北美和欧洲人都认, 而NIPS则有 <br /></p>
		<p>些人(特别是一些欧洲人, 包括一些大家)坚决不投稿. <br />这对会议本身当然并不是好事, <br /></p>
		<p>但因为Jordan系很强大, 所以它似乎也不太care. <br />最近IMLS(国际机器学习学会)改选 <br /></p>
		<p>理事, <br />有资格提名的人包括近三年在ICMLECMLCOLT发过文章的人, <br />NIPS则被排除在 <br /></p>
		<p>外了. 无论如何, 这是一个非常好的会. <br /></p>
		<p>ACL (1-): 计算语言学/自然语言处理方面最好的会议, ACL <br />(Association of <br /></p>
		<p>Computational Linguistics) 主办, 每年开. <br /></p>
		<p>KR (1-): 知识表示和推理方面最好的会议之一, <br />实际上也是传统AI(即基于逻辑的AI) <br /></p>
		<p>最好的会议之一. KR Inc.主办, 现在是偶数年开. <br /></p>
		<p>SIGIR (1-): 信息检索方面最好的会议, ACM主办, 每年开. 这个会现在小圈子气越来 <br /></p>
		<p>越重. 信息检索应该不算AI, <br />不过因为这里面用到机器学习越来越多, 最近几年甚至 有点机器学习应用会议的味道了, 所以把它也列进来. <br /></p>
		<p>SIGKDD (1-): 数据挖掘方面最好的会议, ACM主办, 每年开. 这个会议历史比较短, <br /></p>
		<p>毕竟, <br />与其他领域相比,数据挖掘还只是个小弟弟甚至小侄儿. <br />在几年前还很难把它列 在tier-1里面, 一方面是名声远不及其他的top <br />conference响亮, 另一方面是相对容易 被录用. <br />但现在它被列在tier-1应该是毫无疑问的事情了. <br />这几年来KDD的质量都很 高. SIGKDD从2000年来full paper的录取率都在10%-12%之间，远远低于IJCAI和ICML. <br /></p>
		<p>经常听人说，KDD要比IJICAI和ICML都要困难。IJICAI才6页，而KDD要10页。没有扎实系统 <br /></p>
		<p>的工作，很难不留下漏洞。有不少IJICAI的常客也每年都投KDD，可难得几个能经常中。 <br /></p>
		<p>UAI (1-): 名字叫"人工智能中的不确定性", <br />涉及表示推理学习等很多方面, AUAI <br /></p>
		<p>(Association of UAI) 主办, 每年开 <br /></p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/90609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2006-12-28 23:05 <a href="http://www.blogjava.net/mlh123caoer/archive/2006/12/28/90609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析:下一代数据库发展的4大趋势</title><link>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90396.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 27 Dec 2006 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90396.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/90396.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/90396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/90396.html</trackback:ping><description><![CDATA[从最早用文件系统存储数据算起，数据库的发展已经有50多年了，其间经历了20世纪60年代的层次数据库(IBM的IMS)和网状数据库(GE的 IDS)的并存，70~80年代关系数据库的异军突起，90年代对象技术的影响。如今，关系数据库依然处于主流地位。关系技术之后，在新形势下，数据库应该如何发展?又有哪些重要的趋势呢?
<p>　　作为成熟的产品，关系数据库已经走过了几十年的历史，而今年各主流数据库厂商大动干戈、紧锣密鼓地筹备各自新产品发布，为平淡的数据库市场掀起了新一轮热潮。 甲骨文刚刚推出了其Oracle 10g的第二版本;IBM代号为Viper(毒蛇)的新一代DB2数据库产品将于今年9月份推出测试版本;微软公司的SQL Server 2005已经在测试中，今年底即将面世;Sybase也将于下个月推出新版本的数据库产品Sybase ASE 15。各数据库厂商集中火力瞄准的数据库市场竞争焦点是什么?新一代数据库有哪些新的技术趋势?</p><p>　　对主流企业数据库厂商包括甲骨文、IBM、微软、Sybase的采访表明，对XML的支持、网格技术、整合数据仓库和BI应用以及自我管理已成为下一代数据库在功能上角逐的焦点。</p><p>　　<strong>趋势之一：对XML的支持</strong></p><p>　　“如果谁能控制、支持和存储所有类型的数据，那么这样的厂商也就有能力扩展自己其他产品和服务的市场空间。因此整合XML、对象数据、多媒体数据，将所有数据类型放在一个平台上将是传统的关系数据库发展的一大趋势。”这也是数据库厂商大动干戈的主要原因。</p><p>　　传统关系数据库中，管理的是结构化数据，数据是以行和列的二维表形式进行存储，并通过标准的SQL查询语言进行查询。而随着Web时代的到来，在 Web大背景下“泛数据”管理成为人们关注的重点。所谓泛数据就是指包含了文档、电子邮件等各种类型的数据，这些数据通常都不是以行和列的格式存在的，不像关系数据那样是严格的结构化数据，因此对这类数据的存储管理以及快速高效的查询是对传统关系型数据库的挑战。</p><p>　　目前XML标准日益成熟，并很快成为各种复杂的异构数据交换的核心技术和未来数据定义的标准格式，例如，微软将在下一代Office软件中采用 XML数据格式。因此，将Native(原生)XML格式的数据存储在关系数据库中并支持对XMLQuery查询，正是这些新推出的数据库产品的亮点之一。</p><p>　　甲骨文公司大中华区销售顾问部高级总监李颖聪表示，甲骨文在几年前就已经看到了这个趋势，并提供了第一轮的XML支持。早期是通过一个工具，实现不同应用之间的沟通。例如在Oracle 8i产品中，甲骨文就已经推出了XDK(XML开发工具)，通过XDK开发应用把XML数据存储到关系数据库中;在Oracle 9i产品中，则已经能够在数据库中定义XML数据类型，通过SQL生成XML数据和对其进行查询;而在Oracle 10g中，则已经提供了对XML Query语言(XQuery)的支持，而且在Oracle 10g中，XML数据是作为一个独立的方式存储在XMLDB数据库中，提供的是Native XML的支持。</p><p>　　而对将于2006年推出的下一个版本的IBM DB2来说，集成结构化和非结构化数据并支持SQL及Xquery查询也将是其最大的卖点，IBM公司信息管理部门总经理珍尼特·帕尔娜(Janet Perna)认为，关系数据库对非结构化数据的支持不亚于从层次数据库到关系数据库的革命性转变。“XML在信息管理领域无处不在，不管是管理结构化或非结构化信息，或者用于信息传输，或者是集成信息的映射标准。它现在是不可或缺的。”</p><p>　　微软中国数据库产品经理表示，将于今年下半年发布的Microsoft SQL Server 2005将满足客户希望把大量XML数据放入数据库中的需求，并提供Native(原生)XML和XQuery的支持。“微软是XQuery标准的制定者之一，在SQL Server 2005中微软加入了很多核心技术，实现了快速查询，而且使得性能得到优化。”</p><p>　　Sybase(中国)公司高级产品市场专员韩谊则指出，Sybase是较早在数据库中支持XML的厂商之一。目前Sybase ASE可以将XML文档存储在text或Image列中，可以将XML映射到新的或已有的关系表中，可以从关系查询中创建XML格式的结果集。未来 Sybase除了不断添加对XML新技术、新标准的支持，还要添加更多函数，增强对Web Service支持，使用户更方便的使用XML。</p><p>　　InterSystems中国技术总监余衡也表示，InterSystems公司的后关系型数据库Caché已经完全支持XML了，而且这种支持来自于 Caché独特的数据存储方式，使得XML的数据可以完美地保存在Caché数据库中，不论存取还是查询分析都非常简单。关系数据库保存数据是采用二维表的方式，而Caché的存储方式是采用了多维数组的存储方式，从而很容易地实现了结构化数据的存取。同时在这个多维数据存储之上，Caché同时实现了对象的访问方式和SQL的访问方式。</p><p>　　Burton 集团的高级分析师Peter O'Kelly 则指出，如果用户的关系数据库支持原生XML数据，那么就可以享受到XML数据格式带来的很多安全特性。例如，可以在整个文档中插入电子签名，也可以将采购订单直接存储，无须进行任何的转换，这些特性都可以确保文档不会被篡改。但记者在对国内一些中小企业用户的采访中，很多客户都表示了对XML查询的需求还不是很迫切。贝塔斯曼文化实业有限公司IT总监江玮、佐丹奴 /Giordano集团CIO侯彤、永恩集团CIO赵春雨都表示，目前对XML支持的需求还不是很迫切。但他们表示，对XML数据库是否真正能够达到的目标或对企业业务的帮助还不是非常了解，需要继续了解相关技术和知识以及发展情况。针对此，甲骨文公司中国区销售顾问部高级经理裴雪松表示，当CIO关注信息整合时，XML就是必备的工具，事实上，目前国内很多银行、电信等客户在进行应用整合时已经将XML作为其标准。</p><p>　　<strong>趋势之二：网格支持</strong></p><p>　　“网格就是下一代Internet”，这句话强调了网格可能对未来社会的巨大影响。在历史上，数据库系统曾经接受了Internet带来的挑战。毫无疑问，现在数据库系统也将应对网格带来的挑战。甲骨文公司Oracle 10g网格数据库产品的推出，则将网格技术的应用领域扩展到企业计算。但针对数据库对网格技术的支持，目前一些厂商还持有不同的观点，例如微软和 InterSystems就指出，网格并非惟一的答案。</p><p>　　“网格计算将是数据库技术发展的大趋势之一，数据库不仅仅是存储数据，而是要实现对信息整个生命周期的管理。而甲骨文提出的网格数据库则是将其落到实处。”据悉，自Oracle 10g去年发布后，很多被资源、管理困扰的客户都对甲骨文的网格技术非常感兴趣，而且已经在很多领域得到应用。李颖聪同时表示，在甲骨文刚刚发布的 Oracle 10g Release 2中又进一步改良了许多网格运算的功能，提升了性能、应用度以及简化管理功能。该方案可让客户将多台标准服务器系统整合成一套可扩充的容错运算平台。同时，新版数据库可让客户更容易在网格环境中分享储存资源，并且大幅提升数据安全性。李颖聪表示，甲骨文在未来的产品中将会继续关注网格技术。 Sybase公司则表示，尽管网格技术要成为商业应用的主流，还需要几年时间在应用和产品上进一步完善，但Sybase非常关注这种技术，已经作了一些技术探索和储备，并希望能在不远的将来推出成熟的产品。</p><p>　　而微软则表示，目前微软还没有考虑到对网格技术的支持。他认为，网格是一种扩展技术，扩展有两种方式：向上扩展(Scale up )和向外扩展(Scale out)，向上扩展是增加CPU的个数和内存等资源满足用户的需求，而向外扩展就是多节点并行技术，或者说是网格的技术。微软的一项调查显示：目前99%的客户需求是在16颗CPU以下，而目前，微软的SQL Server 2005最多可以支持64颗CPU，因此微软认为，通过向上扩展完全能够满足客户的需求，而没有必要采用向外扩展技术。</p><p>　　另外，微软认为，网格应用在技术上还需解决一些问题。例如，网格中对资源的共享是通过共享磁盘实现的(Share Disk)，并通过锁控制器(Lock manager)实现多个节点对资源的争夺，管理节点对资源的访问，当节点增多，会带来性能的下降。</p><p>　　InterSystems中国技术总监余衡也表示，网格计算在科学计算领域非常受欢迎，例如对于处理电影作品中帧的应用程序，或者处理复杂静态数据的数据仓库、处理复杂并需要长时间运行的查询，网格计算也许是合适的。但网格计算不是绝对的答案，对于大范围的事务处理类型的应用程序，进行高速数据库更新操作与计算，网格计算可能就不适合了。在商业领域或者非科学方面的应用中，把任务分解成逻辑或者功能组件比分解成过程更有意义。</p><p>　　李颖聪介绍，Tom网站的用户管理系统已经采用了Oracle 10g的网格技术，在并发处理能力的加强、自动扩展以及降低软件成本方面都起到了很好的作用。在采访中，很多用户也表示对网格技术在数据库中的应用非常关注，但正如永恩集团CIO赵春雨所言，对采用普通结点组成的系统的性能是否真正可以达到期望还有很多考虑。而佐丹奴集团CIO侯彤则表示，作为一个规模不算很大的企业，一到两台服务器已经可以满足现时及未来几年企业发展的需要了，目前并没有关注网格技术。<strong>趋势之三：整合数据仓库/BI</strong></p><p>　　数据库应用的成熟，使得企业数据库里承载的数据越来越多。但数据的增多，随之而来的问题就是如何从海量的数据中抽取出具有决策意义的信息(有用的数据)，更好地服务于企业当前的业务，这就需要商业智能。“从用户对数据管理需求的角度看，可以划分两大类：一是对传统的、日常的事务处理，也即我们经常提的联机事务处理(OLTP)应用;二是联机分析处理(OLAP)与辅助决策，既商业智能(BI)。数据库不仅支持OLTP，还应该为业务决策、分析提供支持。” 目前，主流的数据库厂商都已经把支持OLAP、商业智能做为关系数据库发展的另一大趋势。</p><p>　　商业智能是指以帮助企业决策为目的，对数据进行收集、存储、分析、访问等处理的一大类技术及其应用，由于需要对大量的数据进行快速地查询和分析，传统的关系型数据库不能很好地满足这种要求。或者说传统上，数据库应用是基于OLTP(在线交易处理)模型的，而不能很好支持OLAP(在线分析处理)，商业智能是以数据仓库为基础，目前同时支持OLTP和OLAP这两种模式是关系数据库的着眼点所在。</p><p>　　例如，IBM一直把商业智能应用当作 DB2的一个重要发展方向，并将商业智能功能构建到 DB2引擎中，例如DB2本身内置了数据库、在线分析的处理(OLAP)、各种分析等功能，去年发布的DB2 8.3版本中又进一步加强了分析功能，为商业智能应用进行了性能优化。目前可以通过两种方式用 DB2 进行联机分析处理(OLAP)：首先DB2 提供了用于 CUBE 和 ROLLUP(用于研究数据库中信息的流行的 OLAP 操作)的内置函数。其次，IBM 和 Hyperion 合作创建了 DB2 OLAP Server，DB2 OLAPServer 构建在DB2 UDB 之上，同时提供了多维数据存储和关系数据存储。IBM 还与各类数据分析软件供应商合作，这些供应商使他们的工具能使用 DB2 数据库。</p><p>　　微软也指出，微软从1997年开始在数据库产品中增加了BI功能，在SQL Server 2005中，微软将提供统一数据模型，同时支持OLTP和OLAP两个模型，并通过XML/A接口，实现对数据库和数据仓库的访问，把关系数据库和BI功能整合在一起。</p><p>　　甲骨文公司商业智能和数据仓库副总裁Ray Roccaforte表示：“几年前，我们开始实施一项简化复杂商业智能环境的计划。起初我们的重点是：让客户在实施商业智能项目时不必面对多种专门的数据挖掘、OLAP和统计数据库，我们直接把这些功能合并到Oracle数据库中。现在这种做法已经扩展到商业智能软件工具上了，我们把所有必需的软件工具组合到单一产品中，以此满足客户的商业智能需求。” 据悉，新版本的甲骨文商业智能(Oracle Business Intelligence)工具目前正处于开发测试阶段，包括了Oracle Discoverer、Oracle Spreadsheet Add-In、Oracle Warehouse Builder、Oracle BI Beans等。通过Oracle Discoverer可在单一报告环境中存取关系数据(即SQL)和联机分析处理(OLAP)数据，从而完成一般需要两种软件工具才能完成的任务。</p><p>　　Sybase在即将发布的数据库ASE15版本中也将强化对OLAP分析表现功能的支持，这样对中小企业客户来说，通过数据库就可以实现BI方面的应用;当然对一些大型用户，Sybase也提供了专业的数据仓库和商业智能应用解决方案。</p><p>　　<strong>趋势之四：管理自动化</strong></p><p>　　企业级数据库产品目前已经进入同质化竞争时代，在功能、性能、可靠性等方面差别已经不是很大。但是随着商业环境竞争日益加剧，目前企业面临着另外的挑战，即如何以最低的成本同时又高质量地管理其IT架构。这也就带来了两方面的挑战：一方面系统功能日益强大而复杂，另一方面，对这些系统管理和维护的成本越来越昂贵。正是意识到这些需求，自我管理功能包括能自动地对数据库自身进行监控、调整和修复等已成为数据库追求的目标。 “我们正看到越来越多的基于成本和可管理性的竞争，因为市场正在寻找应用更简单，拥有成本更低的数据库 ” Gartner研究集团一位追踪数据库软件市场多年的分析员这样表示。</p><p>　　Oracle的可管理性战略侧重在两个方面：首先是使Oracle产品的每一部分(包括数据库)尽可能地进行自我管理，以实现最少的人力管理;第二是使整个数据库中心的管理更便捷、高效，例如Oracle企业管理器就提供了一套解决方案，用于管理和监视基于Oracle系列技术的应用程序和系统。</p><p>　　IBM已在其DB2数据库的应用中集成了自我管理功能，它可以让一个数据库自行发现问题并重新设置。“IBM DB2是一个SMART的数据库，即自我管理及资源调度的智能数据库系统。DB2由数据库系统自己进行错误分析、可能的解决方案建议及自我修复的功能，提供部分核心配置参数进行自动配置，而不需数据库管理员进行指定和修改。”Janet Perna表示，在IBM的新版本数据库Viper中，将会有更多自治功能，如自我管理和自我修复功能。</p><p>　　Sybase也表示，Sybase数据库一向以低成本而得到用户青睐，低成本主要体现在两个方面，一是购买成本，二是维护成本，Sybase数据库的设计理念就是让用户更容易上手、容易使用。而在即将推出的新版本中，进一步强化了易管理性，如图形化的操作界面、增加操作向导以及自动执行功能，使数据库管理人员不必要做很多重复性的工作。</p><p>　　微软也强调，易于管理、易于使用是SQL Server的设计理念。在SQL Server2005中微软新的管理工具套件、自我调节能力和功能强大的编程模型将允许数据库管理员针对数据库的日常运转加以灵活掌控。针对SQL事件探查器及其它工具的改进还可帮助数据库管理员将服务器调节至最佳性能状态。这些改进特性将允许数据库管理员从数据库日常运转工作中解脱出来，并集中精力从事数据库体系结构设计等更具价值的任务。</p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/90396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2006-12-27 22:47 <a href="http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析：面向Web的数据挖掘面临3大挑战</title><link>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90376.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Wed, 27 Dec 2006 12:06:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90376.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/90376.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/90376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/90376.html</trackback:ping><description><![CDATA[<font color="#000000">Web 上有海量的数据信息，怎样对这些数据进行复杂的应用成了现今数据库技术的研究热点。数据挖掘就是从大量的数据中发现隐含的规律性的内容，解决数据的应用质量问题。充分利用有用的数据，废弃虚伪无用的数据，是数据挖掘技术的最重要的应用。相对于Web的数据而言，传统的数据库中的数据结构性很强，即其中的数据为完全结构化的数据，而Web上的数据最大特点就是半结构化。所谓半结构化是相对于完全结构化的传统数据库的数据而言。显然，面向Web的数据挖掘比面向单个数据仓库的数据挖掘要复杂得多。
<p>　　<strong>1.异构数据库环境</strong></p><p>　　从数据库研究的角度出发，Web网站上的信息也可以看作一个数据库，一个更大、更复杂的数据库。Web上的每一个站点就是一个数据源，每个数据源都是异构的，因而每一站点之间的信息和组织都不一样，这就构成了一个巨大的异构数据库环境。如果想要利用这些数据进行数据挖掘，首先，必须要研究站点之间异构数据的集成问题，只有将这些站点的数据都集成起来，提供给用户一个统一的视图，才有可能从巨大的数据资源中获取所需的东西。其次，还要解决Web上的数据查询问题，因为如果所需的数据不能很有效地得到，对这些数据进行分析、集成、处理就无从谈起。</p><p>　　<strong>2.半结构化的数据结构</strong></p><p>　　Web 上的数据与传统的数据库中的数据不同，传统的数据库都有一定的数据模型，可以根据模型来具体描述特定的数据。而Web上的数据非常复杂，没有特定的模型描述，每一站点的数据都各自独立设计，并且数据本身具有自述性和动态可变性。因而，Web上的数据具有一定的结构性，但因自述层次的存在，从而是一种非完全结构化的数据，这也被称之为半结构化数据。半结构化是Web上数据的最大特点。</p><p>　　<strong>3.解决半结构化的数据源问题</strong></p><p>　　Web 数据挖掘技术首要解决半结构化数据源模型和半结构化数据模型的查询与集成问题。解决Web上的异构数据的集成与查询问题，就必须要有一个模型来清晰地描述 Web上的数据。针对Web上的数据半结构化的特点，寻找一个半结构化的数据模型是解决问题的关键所在。除了要定义一个半结构化数据模型外，还需要一种半结构化模型抽取技术，即自动地从现有数据中抽取半结构化模型的技术。面向Web的数据挖掘必须以半结构化模型和半结构化数据模型抽取技术为前提。</p><br />XML与Web数据挖掘技术</font>
		<p>
				<font color="#000000">　　以XML 为基础的新一代WWW环境是直接面对Web数据的，不仅可以很好地兼容原有的Web应用，而且可以更好地实现Web中的信息共享与交换。XML可看作一种半结构化的数据模型，可以很容易地将XML的文档描述与关系数据库中的属性一对应起来，实施精确地查询与模型抽取。</font>
		</p>
		<p>
				<font color="#000000">　　1.XML的产生与发展</font>
		</p>
		<p>
				<font color="#000000">　　XML (eXtensibleMarkupLanguage)是由万维网协会(W3C)设计，特别为Web应用服务的SGML (StandardGeneralMarkupLanguage)的一个重要分支。总的来说，XML是一种中介标示语言(Meta- markupLanguage)，可提供描述结构化资料的格式，详细来说，XML是一种类似于HTML，被设计用来描述数据的语言。XML提供了一种独立的运行程序的方法来共享数据，它是用来自动描述信息的一种新的标准语言，它能使计算机通信把Internet的功能由信息传递扩大到人类其他多种多样的活动中去。XML由若干规则组成，这些规则可用于创建标记语言，并能用一种被称作分析程序的简明程序处理所有新创建的标记语言，正如HTML为第一个计算机用户阅读Internet文档提供一种显示方式一样，XML也创建了一种任何人都能读出和写入的世界语。XML解决了HTML不能解决的两个Web问题，即Internet发展速度快而接入速度慢的问题，以及可利用的信息多，但难以找到自己需要的那部分信息的问题。XML能增加结构和语义信息，可使计算机和服务器即时处理多种形式的信息。因此，运用XML的扩展功能不仅能从Web服务器下载大量的信息，还能大大减少网络业务量。</font>
		</p>
		<p>
				<font color="#000000">　　XML 中的标志(TAG)是没有预先定义的，使用者必须要自定义需要的标志，XML是能够进行自解释(SelfDescribing)的语言。XML使用DTD (DocumentTypeDefinition文档类型定义)来显示这些数据，XSL(eXtensibleStyleSheetLanguage)是一种来描述这些文档如何显示的机制，它是XML的样式表描述语言。XSL的历史比HTML用的CSS(层叠式样式表 CascadingStyleSheets)还要悠久，XSL包括两部分：一个用来转换XML文档的方法;一个用来格式化XML文档的方法。XLL (eXtensibleLinkLanguage)是XML连接语言，它提供XML中的连接，与HTML中的类似，但功能更强大。使用XLL，可以多方向连接，且连接可以存在于对象层级，而不仅仅是页面层级。由于XML能够标记更多的信息，所以它就能使用户很轻松地找到他们需要的信息。利用XML，Web 设计人员不仅能创建文字和图形，而且还能构建文档类型定义的多层次、相互依存的系统、数据树、元数据、超链接结构和样式表。</font>
		</p>
		<p>
				<font color="#000000">　　2.XML的主要特点</font>
		</p>
		<p>
				<font color="#000000">　　正是XML的特点决定了其卓越的性能表现。XML作为一种标记语言，有许多特点：</font>
		</p>
		<p>
				<font color="#000000">　　(1)简单。XML经过精心设计，整个规范简单明了，它由若干规则组成，这些规则可用于创建标记语言，并能用一种常常称作分析程序的简明程序处理所有新创建的标记语言。XML能创建一种任何人都能读出和写入的世界语，这种创建世界语的功能叫做统一性功能。如XML创建的标记总是成对出现，以及依靠称作统一代码的新的编码标准。</font>
		</p>
		<p>
				<font color="#000000">　　(2)开放。XML是SGML在市场上有许多成熟的软件可用来帮助编写、管理等,开放式标准XML的基础是经过验证的标准技术，并针对网络做最佳化。众多业界顶尖公司，与W3C的工作群组并肩合作，协助确保交互作业性，支持各式系统和浏览器上的开发人员、作者和使用者，以及改进XML标准。XML解释器可以使用编程的方法来载入一个XML的文档，当这个文档被载入以后,用户就可以通过XML文件对象模型来获取和操纵整个文档的信息，加快了网络运行速度。</font>
		</p>
		<p>
				<font color="#000000">　　(3)高效且可扩充。支持复用文档片断，使用者可以发明和使用自己的标签，也可与他人共享，可延伸性大，在XML中，可以定义无限量的一组标注。XML提供了一个标示结构化资料的架构。一个XML组件可以宣告与其相关的资料为零售价、营业税、书名、数量或其它任何数据元素。随着世界范围内的许多机构逐渐采用 XML标准，将会有更多的相关功能出现：一旦锁定资料，便可以使用任何方式透过电缆线传递，并在浏览器中呈现，或者转交到其他应用程序做进一步的处理。 XML提供了一个独立的运用程序的方法来共享数据，使用DTD，不同的组中的人就能够使用共同的DTD来交换数据。你的应用程序可以使用这个标准的DTD 来验证你接受到的数据是否有效，你也可以使用一个DTD来验证你自己的数据。</font>
		</p>
		<p>
				<font color="#000000">　　(4)国际化。标准国际化，且支持世界上大多数文字。这源于依靠它的统一代码的新的编码标准，这种编码标准支持世界上所有以主要语言编写的混合文本。在HTML 中，就大多数字处理而言，一个文档一般是用一种特殊语言写成的，不管是英语，还是日语或阿拉伯语，如果用户的软件不能阅读特殊语言的字符，那么他就不能使用该文档。但是能阅读XML语言的软件就能顺利处理这些不同语言字符的任意组合。因此，XML不仅能在不同的计算机系统之间交换信息，而且能跨国界和超越不同文化疆界交换信息。</font>
		</p>
		<font color="#000000">3.XML在Web数据挖掘中的应用</font>
		<p>
				<font color="#000000">　　XML 已经成为正式的规范，开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。使用可升级的三层模型，XML可以从存在的数据中产生出来，使用XML结构化的数据可以从商业规范和表现形式中分离出来。数据的集成、发送、处理和显示是下面过程中的每一个步骤:</font>
		</p>
		<p>
				<font color="#000000">　　促进XML应用的是那些用标准的HTML无法完成的Web应用。这些应用从大的方面讲可以被分成以下四类：需要Web客户端在两个或更多异质数据库之间进行通信的应用;试图将大部分处理负载从Web服务器转到Web客户端的应用;需要Web客户端将同样的数据以不同的浏览形式提供给不同的用户的应用;需要智能Web代理根据个人用户的需要裁减信息内容的应用。显而易见，这些应用和Web的数据挖掘技术有着重要的联系，基于Web的数据挖掘必须依靠它们来实现。</font>
		</p>
		<p>
				<font color="#000000">　　XML 给基于Web的应用软件赋予了强大的功能和灵活性，因此它给开发者和用户带来了许多好处。比如进行更有意义的搜索，并且Web数据可被XML唯一地标识。没有XML，搜索软件必须了解每个数据库是如何构建的，但这实际上是不可能的，因为每个数据库描述数据的格式几乎都是不同的。由于不同来源数据的集成问题的存在，现在搜索多样的不兼容的数据库实际上是不可能的。XML能够使不同来源的结构化的数据很容易地结合在一起。软件代理商可以在中间层的服务器上对从后端数据库和其它应用处来的数据进行集成。然后，数据就能被发送到客户或其他服务器做进一步的集合、处理和分发。XML的扩展性和灵活性允许它描述不同种类应用软件中的数据，从描述搜集的Web页到数据记录，从而通过多种应用得到数据。同时，由于基于XML的数据是自我描述的，数据不需要有内部描述就能被交换和处理。利用XML，用户可以方便地进行本地计算和处理，XML格式的数据发送给客户后，客户可以用应用软件解析数据并对数据进行编辑和处理。使用者可以用不同的方法处理数据，而不仅仅是显示它。XML文档对象模式(DOM)允许用脚本或其他编程语言处理数据，数据计算不需要回到服务器就能进行。 XML可以被利用来分离使用者观看数据的界面，使用简单灵活开放的格式，可以给Web创建功能强大的应用软件，而原来这些软件只能建立在高端数据库上。另外，数据发到桌面后，能够用多种方式显示。</font>
		</p>
		<p>
				<font color="#000000">　　XML 还可以通过以简单开放扩展的方式描述结构化的数据，XML补充了HTML，被广泛地用来描述使用者界面。HTML描述数据的外观，而XML描述数据本身。由于数据显示与内容分开，XML定义的数据允许指定不同的显示方式，使数据更合理地表现出来。本地的数据能够以客户配置、使用者选择或其他标准决定的方式动态地表现出来。CSS和XSL为数据的显示提供了公布的机制。通过XML，数据可以粒状地更新。每当一部分数据变化后，不需要重发整个结构化的数据。变化的元素必须从服务器发送给客户，变化的数据不需要刷新整个使用者的界面就能够显示出来。但在目前，只要一条数据变化了，整一页都必须重建。这严重限制了服务器的升级性能。XML也允许加进其他数据，比如预测的温度。加入的信息能够进入存在的页面，不需要浏览器重新发一个新的页面。XML应用于客户需要与不同的数据源进行交互时，数据可能来自不同的数据库，它们都有各自不同的复杂格式。但客户与这些数据库间只通过一种标准语言进行交互，那就是XML。由于 XML的自定义性及可扩展性，它足以表达各种类型的数据。客户收到数据后可以进行处理，也可以在不同数据库间进行传递。总之，在这类应用中，XML解决了数据的统一接口问题。但是，与其他的数据传递标准不同的是，XML并没有定义数据文件中数据出现的具体规范，而是在数据中附加TAG来表达数据的逻辑结构和含义。这使XML成为一种程序能自动理解的规范。</font>
		</p>
		<p>
				<font color="#000000">　　XML 应用于将大量运算负荷分布在客户端，即客户可根据自己的需求选择和制作不同的应用程序以处理数据，而服务器只须发出同一个XML文件。如按传统的 “Client/Server”工作方式，客户向服务器发出不同的请求，服务器分别予以响应，这不仅加重服务器本身的负荷，而且网络管理者还须事先调查各种不同的用户需求以做出相应不同的程序，但假如用户的需求繁杂而多变，则仍然将所有业务逻辑集中在服务器端是不合适的，因为服务器端的编程人员可能来不及满足众多的应用需求，也来不及跟上需求的变化，双方都很被动。应用XML则将处理数据的主动权交给了客户，服务器所作的只是尽可能完善、准确地将数据封装进XML文件中，正是各取所需、各司其职。XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义，从而使广泛、通用的分布式计算成为可能。</font>
		</p>
		<p>
				<font color="#000000">　　XML 还被应用于网络代理，以便对所取得的信息进行编辑、增减以适应个人用户的需要。有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。比方说，教育部门要建立一个庞大的题库，考试时将题库中的题目取出若干组成试卷，再将试卷封装进XML文件，接下来在各个学校让其通过一个过滤器，滤掉所有的答案，再发送到各个考生面前，未经过滤的内容则可直接送到老师手中，当然考试过后还可以再传送一份答案汇编。此外，XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息，这样只需几个小程序，同一个XML文件便可变成多个文件传送到不同的用户手中。</font>
		</p>
		<p>
				<font color="#000000">　　结束语 :</font>
		</p>
		<p>
				<font color="#000000">　　面向Web的数据挖掘是一项复杂的技术，由于Web数据挖掘比单个数据仓库的挖掘要复杂的多，因而面向Web的数据挖掘成了一个难以解决的问题。而XML的出现为解决Web数据挖掘的难题带来了机会。由于XML能够使不同来源的结构化的数据很容易地结合在一起，因而使搜索多样的不兼容的数据库能够成为可能，从而为解决Web数据挖掘难题带来了希望。XML的扩展性和灵活性允许XML描述不同种类应用软件中的数据，从而能描述搜集的Web页中的数据记录。同时，由于基于XML的数据是自我描述的，数据不需要有内部描述就能被交换和处理。作为表示结构化数据的一个工业标准，XML为组织、软件开发者、Web站点和终端使用者提供了许多有利条件。相信在以后，随着XML作为在Web上交换数据的一种标准方式的出现，面向Web的数据挖掘将会变得非常轻松。</font>
		</p><img src ="http://www.blogjava.net/mlh123caoer/aggbug/90376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2006-12-27 20:06 <a href="http://www.blogjava.net/mlh123caoer/archive/2006/12/27/90376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>