<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/wohugb" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/wohugb" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 10 Jan 2009 13:38:00 GMT</lastBuildDate><title>大鼻子PHP空间</title><description>我爱娃娃</description><link>http://blog.csdn.net/wohugb</link><language>zh-cn</language><copyright>Copyright &amp;copy; wohugb</copyright><pubDate>Thu, 24 May 2012 16:14:52 GMT</pubDate><image><url>http://static.blog.csdn.net/images/logo.gif</url><link>http://blog.csdn.net</link></image><item><title>[原]好久没到这里了，昨天买阿朱的书到了，来阿朱的博客看看随便写点东西</title><link>http://blog.csdn.net/wohugb/article/details/3747608</link><description>后就没来了，路过六个记号！
            &lt;div&gt;
                作者：wohugb 发表于2009-1-10 21:38:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/3747608&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：62 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/3747608#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Sat, 10 Jan 2009 21:38:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/3747608</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/3747608</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835311/1126023</fs:itemid></item><item><title>[原]FaceBook的Style如病毒！</title><link>http://blog.csdn.net/wohugb/article/details/2849597</link><description>校内－海内－开心－蚂蚁－一起－新浪－聚友.........CSDN!&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2008-8-29 17:08:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/2849597&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：88 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/2849597#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Fri, 29 Aug 2008 17:08:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/2849597</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/2849597</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835310/1126023</fs:itemid></item><item><title>[原]在百度博客折腾了一阵子，本来是为了搜索去的，但感觉好像失去了技术味道</title><link>http://blog.csdn.net/wohugb/article/details/1786828</link><description>转了一圈，感觉还是这里的技术问道比较浓啊，还是回来了！另外我们的博客系统又要升级了，也回来尝尝鲜。&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2007-9-16 0:35:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1786828&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：317 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1786828#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Sun, 16 Sep 2007 00:35:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1786828</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1786828</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835309/1126023</fs:itemid></item><item><title>[原]几个企业级应用系统的缩写</title><link>http://blog.csdn.net/wohugb/article/details/1647098</link><description>&lt;p&gt;SOA&amp;nbsp; Service-Oriented Architecture &lt;br /&gt;SAP&amp;nbsp; Systems Application, Products in DATA processing &lt;br /&gt;ERP Enterprise-wide Resource Planning &lt;br /&gt;OA&amp;nbsp;&amp;nbsp;&amp;nbsp; OFFICE AUTOMATION&lt;br /&gt;OEM Original Equipment Manufacturer,原始设备制造&lt;br /&gt;MIS&amp;nbsp;&amp;nbsp; Management Information System,管理信息系统&lt;br /&gt;SCSI&amp;nbsp; Small Computer System Interface,小型计算机系统接口&lt;/p&gt;
            &lt;div&gt;
                作者：wohugb 发表于2007-6-10 20:47:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1647098&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：407 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1647098#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Sun, 10 Jun 2007 20:47:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1647098</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1647098</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835308/1126023</fs:itemid></item><item><title>[转]PHP-SOA WebService学习笔记</title><link>http://blog.csdn.net/wohugb/article/details/1647066</link><description>&lt;table height=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot;&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width=&quot;16&quot;&gt;&amp;nbsp;&lt;/td&gt;
            &lt;td id=&quot;bxMailText&quot; style=&quot;COLOR: black; LINE-HEIGHT: 25px; PADDING-TOP: 16px&quot; valign=&quot;top&quot; background=&quot;http://blogteam.bokee.com/pub/neweditor/editor/images/paper/line/gray.gif&quot;&gt;坚持看英文原版。。。&lt;br /&gt;&lt;br /&gt;
            &lt;h1&gt;SOAP Tutorial&lt;/h1&gt;
            &lt;p&gt;SOAP is a simple XML-based protocol to let applications exchange information over HTTP.&lt;/p&gt;
            &lt;p&gt;In our SOAP tutorial, you will learn what SOAP is, and how it uses XML to exchange information between applications.&lt;/p&gt;
            &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;p class=&quot;intro&quot;&gt;SOAP is a simple XML based protocol to let applications exchange information over HTTP.&lt;/p&gt;
            &lt;p class=&quot;intro&quot;&gt;Or more simply: SOAP is a protocol for accessing a Web Service.&lt;/p&gt;
            &lt;br /&gt;
            &lt;p class=&quot;intro&quot;&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;h2&gt;What You Should Already Know&lt;/h2&gt;
            &lt;p&gt;Before you study SOAP you should have a basic understanding of XML and XML Namespaces.&lt;/p&gt;
            &lt;p&gt;If you want to study these subjects first, please read our &lt;a href=&quot;http://www.w3schools.com/xml/default.asp&quot;&gt;&lt;font color=&quot;#93809a&quot;&gt;XML Tutorial&lt;/font&gt;&lt;/a&gt;.&lt;/p&gt;
            &lt;br /&gt;
            &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;h2&gt;What is SOAP?&lt;/h2&gt;
            &lt;ul&gt;
                &lt;li&gt;SOAP stands for Simple Object Access Protocol &lt;/li&gt;
                &lt;li&gt;SOAP is a communication protocol &lt;/li&gt;
                &lt;li&gt;SOAP is for communication between applications &lt;/li&gt;
                &lt;li&gt;SOAP is a format for sending messages &lt;/li&gt;
                &lt;li&gt;SOAP is designed to communicate via Internet &lt;/li&gt;
                &lt;li&gt;SOAP is platform independent &lt;/li&gt;
                &lt;li&gt;SOAP is language independent &lt;/li&gt;
                &lt;li&gt;SOAP is based on XML &lt;/li&gt;
                &lt;li&gt;SOAP is simple and extensible &lt;/li&gt;
                &lt;li&gt;SOAP allows you to get around firewalls &lt;/li&gt;
                &lt;li&gt;SOAP will be developed as a W3C standard&lt;/li&gt;
            &lt;/ul&gt;
            &lt;br /&gt;
            &lt;h2&gt;Why SOAP?&lt;/h2&gt;
            &lt;p&gt;It is important for application development to allow Internet communication between programs.&lt;/p&gt;
            &lt;p&gt;Today's applications communicate using Remote Procedure Calls (RPC) between objects like DCOM and CORBA, but HTTP was not designed for this. RPC represents a compatibility and security problem; firewalls and proxy servers will normally block this kind of traffic.&lt;/p&gt;
            &lt;p&gt;A better way to communicate between applications is over HTTP, because HTTP is supported by all Internet browsers and servers. SOAP was created to accomplish this.&lt;/p&gt;
            &lt;p&gt;SOAP provides a way to communicate between applications running on different operating systems, with different technologies and programming languages.&lt;/p&gt;
            &lt;br /&gt;&lt;br /&gt;
            &lt;h2&gt;Microsoft and SOAP&lt;/h2&gt;
            &lt;p&gt;SOAP is a key element of Microsoft's .NET architecture for future Internet application development.&lt;/p&gt;
            &lt;br /&gt;
            &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;h2&gt;SOAP 1.1 was Proposed to W3C&lt;/h2&gt;
            &lt;p&gt;UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft, and SAP proposed to W3C, in May 2000, the SOAP Internet protocol that they hope will revolutionize application development by connecting graphic user interface desktop applications to powerful Internet servers using the standards of the Internet: HTTP and XML.&lt;/p&gt;
            &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
            &lt;h1&gt;SOAP Syntax&lt;/h1&gt;
            &lt;br /&gt;&lt;br /&gt;
            &lt;h2&gt;SOAP Building Blocks&lt;/h2&gt;
            &lt;p&gt;A SOAP message is an ordinary XML document containing the following elements:&lt;/p&gt;
            &lt;ul&gt;
                &lt;li&gt;A required Envelope element that identifies the XML document as a SOAP message &lt;/li&gt;
                &lt;li&gt;An optional Header element that contains header information &lt;/li&gt;
                &lt;li&gt;A required Body element that contains call and response information &lt;/li&gt;
                &lt;li&gt;An optional Fault element that provides information about errors that occurred while processing the message&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p&gt;All the elements above are declared in the default namespace for the SOAP envelope:&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;http://www.w3.org/2001/12/soap-envelope&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#93809a&quot;&gt;http://www.w3.org/2001/12/soap-envelope&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;and the default namespace for SOAP encoding and data types is:&lt;/p&gt;
            &lt;p&gt;&lt;a href=&quot;http://www.w3.org/2001/12/soap-encoding&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#93809a&quot;&gt;http://www.w3.org/2001/12/soap-encoding&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
            &lt;br /&gt;
            &lt;h2&gt;Syntax Rules&lt;/h2&gt;
            &lt;p&gt;Here are some important syntax rules:&lt;/p&gt;
            &lt;ul&gt;
                &lt;li&gt;A SOAP message MUST be encoded using XML &lt;/li&gt;
                &lt;li&gt;A SOAP message MUST use the SOAP Envelope namespace &lt;/li&gt;
                &lt;li&gt;A SOAP message MUST use the SOAP Encoding namespace &lt;/li&gt;
                &lt;li&gt;A SOAP message must NOT contain a DTD reference &lt;/li&gt;
                &lt;li&gt;A SOAP message must NOT contain XML Processing Instructions&lt;/li&gt;
            &lt;/ul&gt;
            &lt;br /&gt;
            &lt;h2&gt;Skeleton SOAP Message&lt;/h2&gt;
            &lt;br /&gt;
            &lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope&lt;br /&gt;xmlns:soap=&amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot;&lt;br /&gt;soap:encodingStyle=&amp;quot;http://www.w3.org/2001/12/soap-encoding&amp;quot;&amp;gt;&lt;/pre&gt;
            &lt;pre&gt;&amp;lt;soap:Header&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/soap:Header&amp;gt;&lt;/pre&gt;
            &lt;pre&gt;&amp;lt;soap:Body&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;  ...&lt;br /&gt;  &amp;lt;soap:Fault&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    ...&lt;br /&gt;  &amp;lt;/soap:Fault&amp;gt;&lt;br /&gt;&amp;lt;/soap:Body&amp;gt;&lt;/pre&gt;
            &lt;pre&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
            &lt;h1&gt;SOAP Envelope Element&lt;/h1&gt;
            The mandatory SOAP Envelope element is the root element of a SOAP message.&lt;br /&gt;&lt;br /&gt;
            &lt;h2&gt;The SOAP Envelope Element&lt;/h2&gt;
            &lt;p&gt;The required SOAP Envelope element is the root element of a SOAP message. It defines the XML document as a SOAP message.&lt;/p&gt;
            &lt;p&gt;Note the use of the xmlns:soap namespace. It should always have the value of:&lt;/p&gt;
            &lt;p&gt;http://www.w3.org/2001/12/soap-envelope&lt;/p&gt;
            &lt;p&gt;and it defines the Envelope as a SOAP Envelope:&lt;/p&gt;
            &lt;br /&gt;&lt;br /&gt;
            &lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope&lt;br /&gt;xmlns:soap=&amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot;&lt;br /&gt;soap:encodingStyle=&amp;quot;http://www.w3.org/2001/12/soap-encoding&amp;quot;&amp;gt;&lt;br /&gt;  ...&lt;br /&gt;  Message information goes here&lt;br /&gt;  ...&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
            &lt;br /&gt;
            &lt;h2&gt;The xmlns:soap Namespace&lt;/h2&gt;
            &lt;p&gt;A SOAP message must always have an Envelope element associated with the &amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot; namespace.&lt;/p&gt;
            &lt;p&gt;If a different namespace is used, the application must generate an error and discard the message.&lt;/p&gt;
            &lt;br /&gt;
            &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;h2&gt;The encodingStyle Attribute&lt;/h2&gt;
            &lt;p&gt;The SOAP encodingStyle attribute is used to define the data types used in the document. This attribute may appear on any SOAP element, and it will apply to that element's contents and all child elements. A SOAP message has no default encoding.&lt;/p&gt;
            &lt;br /&gt;
            &lt;h4&gt;Syntax&lt;/h4&gt;
            soap:encodingStyle=&amp;quot;URI&amp;quot;&lt;br /&gt;&lt;br /&gt;
            &lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope&lt;br /&gt;xmlns:soap=&amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot;&lt;br /&gt;soap:encodingStyle=&amp;quot;http://www.w3.org/2001/12/soap-encoding&amp;quot;&amp;gt;&lt;br /&gt;...&lt;br /&gt;Message information goes here&lt;br /&gt;...&lt;br /&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/pre&gt;
            &lt;br /&gt;
            &lt;h1&gt;SOAP Header Element&lt;/h1&gt;
            &lt;br /&gt;The optional SOAP Header element contains header information.&lt;br /&gt;
            &lt;h2&gt;The SOAP Header Element&lt;/h2&gt;
            &lt;p&gt;The optional SOAP Header element contains application specific information (like authentication, payment, etc) about the SOAP message. If the Header element is present, it must be the first child element of the Envelope element.&lt;/p&gt;
            &lt;p&gt;Note: All immediate child elements of the Header element must be namespace-qualified.&lt;/p&gt;
            &lt;br /&gt;
            &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
            &lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;soap:Envelope&lt;br /&gt;xmlns:soap=&amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot;&lt;br /&gt;soap:encodingStyle=&amp;quot;http://www.w3.org/2001/12/soap-encoding&amp;quot;&amp;gt;&lt;/pre&gt;
            &lt;pre&gt;&amp;lt;soap:Header&amp;gt;&lt;br /&gt;&amp;lt;m:Trans&lt;br /&gt;xmlns:m=&amp;quot;http://www.w3schools.com/transaction/&amp;quot;&lt;br /&gt;soap:mustUnderstand=&amp;quot;1&amp;quot;&amp;gt;234&amp;lt;/m:Trans&amp;gt;&lt;br /&gt;&amp;lt;/soap:Header&amp;gt;&lt;/pre&gt;
            &lt;pre&gt;...&lt;br /&gt;...&lt;/pre&gt;
            &lt;pre&gt;&amp;lt;/soap:Envelope&amp;gt;&lt;/pre&gt;
            &lt;br /&gt;
            &lt;p&gt;The example above contains a header with a &amp;quot;Trans&amp;quot; element, a &amp;quot;mustUnderstand&amp;quot; attribute value of &amp;quot;1&amp;quot;, and a value of 234.&lt;/p&gt;
            &lt;p&gt;SOAP defines three attributes in the default namespace (&amp;quot;http://www.w3.org/2001/12/soap-envelope&amp;quot;). These attributes are: actor, mustUnderstand, and encodingStyle. The attributes defined in the SOAP Header defines how a recipient should process the SOAP message.&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2007-6-10 20:22:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1647066&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：605 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1647066#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Sun, 10 Jun 2007 20:22:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1647066</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1647066</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835307/1126023</fs:itemid></item><item><title>[原]关于discuz5.5的验证码看不清的解决方法！</title><link>http://blog.csdn.net/wohugb/article/details/1636622</link><description>&lt;p&gt;最省事的解决方案，但不一定适用!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;首先不要使用ttf字体&lt;/p&gt;
&lt;p&gt;然后刷下验证码看一下是否清楚，发现两个颜色比较清楚就把background里的其他的背景图删除&lt;/p&gt;
&lt;p&gt;我用的4和7&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;技术太先进了也不是好事，弄得人都看不清楚怎么登陆阿！&lt;/p&gt;
            &lt;div&gt;
                作者：wohugb 发表于2007-6-3 19:37:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1636622&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：642 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1636622#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Sun, 03 Jun 2007 19:37:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1636622</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1636622</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835306/1126023</fs:itemid></item><item><title>[原]Eclipse links ftp webdav 安装 作者yippee</title><link>http://blog.csdn.net/wohugb/article/details/1530243</link><description>&lt;p&gt;Eclipse项目组织结构简介 &lt;br /&gt;&amp;nbsp;&lt;br /&gt;From 海贼的梦想 by hosine&lt;br /&gt;eclipse是一个开源的软件开发项目，包括三个子项目：&lt;br /&gt;the Eclipse Project, the Eclipse Tools Project and the Eclipse Technology Project&lt;br /&gt;Eclipse Project又由三个子项目组成：&lt;br /&gt;Platform, JDT - Java development tools, and PDE - Plug-in development environment&lt;br /&gt;Eclipse Tools Project 的子项目有：&lt;br /&gt;Hyades, CDT-C/C++ Development Tools, GEF-Graphical Editor Framework, EMF-Eclipse Modeling Framework , COBOL, VE -Visual Editor, UML2&lt;br /&gt;Eclipse Technology Project 有三个相关的项目流组成：&lt;br /&gt;Research, Incubators and Education&lt;/p&gt;
&lt;p&gt;Eclipse Project 的 Platform 子项目可以被分解成以下的组件：&lt;br /&gt;Name Description Ant Eclipse/Ant integration Compare Universal compare facility Core Platform runtime, resource management, target management CVS Platform CVS Integration Debug Generic execution debug framework Help Platform help system Releng Release Engineering Scripting Support for Platform scripting Search Integrated search facility SWT Standard Widget Toolkit Text Text editor framework UI Platform user interface Update Dynamic Update/Install/Field Service Team Generic Team support framework WebDAV WebDAV integration&lt;br /&gt;注：&lt;br /&gt;(1)从eclipse的下载页面中你可以看到只有platform是平台相关的，别的子项目都作为平台的plugin且是操作系统无关的；&lt;br /&gt;(2)每一个代码项目都有Runtime binary 和 SDK版本之分，SDK相对Runtime binary添加了插件的source code 和 programming document以作开发只用；&lt;br /&gt;(3)Eclipse SDK 是为了适合大多数开发者需要而设置的一个组合，包括Platform SDK,JDT SDK和PDE SDK。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;对于用links的安装方法要注意几点：&lt;br /&gt;1. 插件可以分别安装在多个自定义的目录中。&lt;br /&gt;　2. 一个自定义目录可以安装多个插件。&lt;br /&gt;　3. link文件的文件名及扩展名可以取任意名称，比如ddd.txt，myplugin都可以。&lt;br /&gt;　4. link文件中path=插件目录的path路径分隔要用//或是/&lt;br /&gt;　5. 在links目录也可以有多个link文件，每个link文件中的path参数都将生效。&lt;br /&gt;　6. 插件目录可以使用相对路径。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 7. 可以在links目录中建立一个子目录，转移暂时不用的插件到此子目录中，加快eclipse启动。 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 8.&amp;nbsp; 如果安装后看不到插件，把eclipse 目录下的configuration目录下的文件删除，但是要留下config.ini文件，重启即可。&lt;/p&gt;
&lt;p&gt;Eclipse的FTP功能简介- -&lt;br /&gt;Eclipse作为全功能的工作平台，还具有FTP客户端的功能。但是Eclipse的SDK中没有包括此功能，要使Eclipse具有FTP的功能，需要安装WebDav&amp;amp;FTP插件，此插件可以利用Eclispe的software update功能，在Eclipse.org update site上进行安装，Eclipse.org update site是Eclipse内置的升级站点。安装好WebDav&amp;amp;FTP插件以后，就可以使用FTP功能了。&lt;br /&gt;首先，介绍下载功能：&lt;br /&gt;1、选择Resource这一Perspective，建立相应的project和folder。&lt;br /&gt;2、打开import wizard，具体步骤是File&amp;gt;Import，选择ftp%ImportWizard.name，然后，点击Next。&lt;br /&gt;3、选择Choose a new folder to be imported，指定目标文件夹确定要下载的文件，安放在何处，点击Next。&lt;br /&gt;4、选择Create a new site，然后，点击Next。&lt;br /&gt;5、输入FTP站点链接所需的信息，比如，&lt;a href=&quot;file:///C:/Documents%20and%20Settings/Administrator/桌面/ftp.software.ibm.com/software/&quot;&gt;&lt;font color=&quot;#666666&quot;&gt;URL:ftp.software.ibm.com/software/&lt;/font&gt;&lt;/a&gt;，Username:anonymous，Password:anonymous，然后，点击Next。&lt;br /&gt;6、浏览FTP站点的远程目录结构，选择要下载的文件夹，然后，点击Next。&lt;br /&gt;7、选择要下载的文件或文件夹，在此你可以浏览某些类型的远程文件的内容。&lt;br /&gt;8、点击Finish，开始下载文件。&lt;br /&gt;其次，介绍上传功能：&lt;br /&gt;1、选择要上传的project和folder。&lt;br /&gt;2、打开Export wizard，具体步骤是File&amp;gt;export，选择ftp%ExportWizard.name，然后，点击Next。&lt;br /&gt;3、输入FTP站点链接所需的信息。&lt;br /&gt;4、浏览FTP站点的远程目录结构，选择要上传的文件夹，然后，点击Next。&lt;br /&gt;5、选择要上传的文件或文件夹。&lt;br /&gt;6、点击Finish，开始上传文件。&lt;br /&gt;最后，介绍同步功能：&lt;br /&gt;1、打开Team Synchronizing perspective。&lt;br /&gt;2、在Synchronize View中点击第一个按钮，打开Create Synchronization wizard，选择ftp%FTPSynchronizationsPariticipant，然后，点击Next。&lt;br /&gt;3、选择以前上传或下载的文件或文件夹，点击Finish。&lt;br /&gt;4、然后，你就可以利用上下文菜单，进行同步工作了。&lt;/p&gt;
&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2007-3-15 14:39:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1530243&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：1593 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1530243#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Thu, 15 Mar 2007 14:39:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1530243</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1530243</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835305/1126023</fs:itemid></item><item><title>[原]本想用fleaphp看到一个帖子........用zend_framework ,毕竟都是高手!</title><link>http://blog.csdn.net/wohugb/article/details/1465863</link><description>&lt;h2 id=&quot;post-314&quot;&gt;&lt;a href=&quot;http://www.dualface.com/blog/?p=314&quot; rel=&quot;bookmark&quot;&gt;比较国内的三个开源 PHP 框架&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;meta&quot;&gt;dualface 在 2006-09-15 19:22:33 发表，类别: &lt;a title=&quot;View all posts in 开发和工作&quot; href=&quot;http://www.dualface.com/blog/?cat=2&quot; rel=&quot;category tag&quot;&gt;&lt;font color=&quot;#78a515&quot;&gt;开发和工作&lt;/font&gt;&lt;/a&gt;, &lt;a title=&quot;View all posts in PHP 与 Web 开发&quot; href=&quot;http://www.dualface.com/blog/?cat=4&quot; rel=&quot;category tag&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#78a515&quot;&gt;PHP 与 Web 开发&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;。&lt;/div&gt;
&lt;div class=&quot;main&quot; id=&quot;postitem&quot;&gt;
&lt;p&gt;放眼国内，除了 FleaPHP，还有 FCS 和 Diggmore 这两个公开并且在持续发展的框架。以我个人对这三个框架的了解，从各方面的比较了一下：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;从开发力量上看，FCS 和 FleaPHP 一样，目前都是由创始人独立发展，而 Diggmore 则由 phpe.net 的开发小组维护。 &lt;/li&gt;
    &lt;li&gt;从开放程度上看，FCS 和 FleaPHP 做得好一些。Diggmore 没有提供专门的网站来发布进展和反馈信息。 &lt;/li&gt;
    &lt;li&gt;从成熟度上看，FleaPHP 是最高的，因为已经用到许多项目中了，而 FCS 目前还没看到有公开的项目。Diggmore 则是新版 phpmore.com 采用的开发框架。 &lt;/li&gt;
    &lt;li&gt;从文档化程度上看，FleaPHP 和 FCS 持平，但 FleaPHP 的文档比 FCS 的文档更详细。而 Diggmore 貌似还没有看到专门的文档。 &lt;/li&gt;
    &lt;li&gt;从项目开发环境看，FleaPHP 和 Diggmore 都提供了 SVN 仓库，但两者都没有公开 Bug 跟踪系统。而 FCS 目前还没有开放的 SVN 仓库。 &lt;/li&gt;
    &lt;li&gt;从版本发布情况上看，FleaPHP 已经有了比较稳定的发布规律，FCS 的新版目前还在内部测试，而 Diggmore 没有提供公开发布渠道，只能从 SVN 仓库获取最新的代码。 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将上面的比较结果做成图表，如下：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.dualface.com/blog/photos/three_framework_compare_thumb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在这里，我要强调一下。我并没有比较三个项目在技术实现上的差异，因为这个问题是见仁见智，而且很难量化。所以我对一些可以直观看到的地方进行了比较。比较结果只是基于我个人的了解。虽然我尽量做到客观，但显然是不可能绝对客观的。 &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;comments&quot;&gt;&lt;/div&gt;
&lt;!--
&lt;rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;
xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot;
xmlns:trackback=&quot;http://madskills.com/public/xml/rss/module/trackback/&quot;&gt;
&lt;rdf:Description rdf:about=&quot;http://www.dualface.com/blog/?p=314&quot;
dc:identifier=&quot;http://www.dualface.com/blog/?p=314&quot;
dc:title=&quot;比较国内的三个开源 PHP 框架&quot;
trackback:ping=&quot;http://www.dualface.com/blog/wp-trackback.php?p=314&quot;  /&gt;
&lt;/rdf:RDF&gt;    --&gt;&lt;!-- You can start editing here. --&gt;
&lt;h3 class=&quot;reply&quot;&gt;'比较国内的三个开源 PHP 框架' 目前已有 5 个评论&lt;/h3&gt;
&lt;p class=&quot;comment_meta&quot;&gt;订阅评论更新: &lt;a href=&quot;http://www.dualface.com/blog/?feed=rss2&amp;amp;p=314&quot;&gt;&lt;abbr title=&quot;Really Simple Syndication&quot; /&gt;&lt;/a&gt; &lt;br /&gt;Trackback: &lt;a href=&quot;http://www.dualface.com/blog/wp-trackback.php?p=314&quot; rel=&quot;trackback&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#78a515&quot;&gt;TrackBack&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;
&lt;ol class=&quot;commentlist&quot;&gt;
    &lt;li class=&quot;alt&quot; id=&quot;comment-1220&quot;&gt;
    &lt;div class=&quot;comment_author&quot;&gt;&lt;strong&gt;寻梦的稻草人&lt;/strong&gt; 在 2006-09-26 10:39:06 发表评论: &lt;/div&gt;
    &lt;br /&gt;
    &lt;p&gt;我自己也做了一个，只在CSDN上发布了&lt;br /&gt;完全PHP5的，有兴趣可以看下。&lt;br /&gt;&lt;a href=&quot;svn://218.25.10.79/plite/trunk&quot; rel=&quot;nofollow&quot;&gt;&lt;strong&gt;&lt;font color=&quot;#78a515&quot;&gt;svn://218.25.10.79/plite/trunk&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt;
    &lt;/li&gt;
    &lt;li class=&quot;&quot; id=&quot;comment-1241&quot;&gt;
    &lt;div class=&quot;comment_author&quot;&gt;&lt;strong&gt;目光短浅&lt;/strong&gt; 在 2006-10-12 10:36:20 发表评论: &lt;/div&gt;
    &lt;br /&gt;
    &lt;p&gt;FleaPHP比较容易懂。&lt;/p&gt;
    &lt;p&gt;但文档怎么不提供下载，每次上站点看比较麻烦。 &lt;/p&gt;
    &lt;/li&gt;
    &lt;li class=&quot;alt&quot; id=&quot;comment-1242&quot;&gt;
    &lt;div class=&quot;comment_author&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://blog.dualface.com/&quot; rel=&quot;external nofollow&quot;&gt;&lt;font color=&quot;#78a515&quot;&gt;dualface&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt; 在 2006-10-12 16:38:47 发表评论: &lt;/div&gt;
    &lt;br /&gt;
    &lt;p&gt;有下载啊，下载区就有。 &lt;/p&gt;
    &lt;/li&gt;
    &lt;li class=&quot;&quot; id=&quot;comment-1401&quot;&gt;
    &lt;div class=&quot;comment_author&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://www.abccba.net/&quot; rel=&quot;external nofollow&quot;&gt;&lt;font color=&quot;#78a515&quot;&gt;phper&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt; 在 2006-12-04 09:47:40 发表评论: &lt;/div&gt;
    &lt;br /&gt;
    &lt;p&gt;真能扯淡,唉.做东西不专心,对比个毛?品质可见一斑 &lt;/p&gt;
    &lt;/li&gt;
    &lt;li class=&quot;alt&quot; id=&quot;comment-1403&quot;&gt;
    &lt;div class=&quot;comment_author&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://blog.dualface.com/&quot; rel=&quot;external nofollow&quot;&gt;&lt;font color=&quot;#78a515&quot;&gt;dualface&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt; 在 2006-12-04 21:55:28 发表评论: &lt;/div&gt;
    &lt;br /&gt;
    &lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;楼上SB！&lt;/font&gt; &lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
            &lt;div&gt;
                作者：wohugb 发表于2006-12-28 15:51:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465863&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：794 评论：1 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465863#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Thu, 28 Dec 2006 15:51:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1465863</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1465863</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835304/1126023</fs:itemid></item><item><title>[转]left join 分析</title><link>http://blog.csdn.net/wohugb/article/details/1465082</link><description>&lt;p&gt;&lt;em&gt;user表:&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;nbsp;id&amp;nbsp;&amp;nbsp; | name&lt;br /&gt;&amp;nbsp;---------&lt;br /&gt;&amp;nbsp;1&amp;nbsp;&amp;nbsp; | libk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;2&amp;nbsp;&amp;nbsp; | zyfon&lt;br /&gt;&amp;nbsp;3&amp;nbsp;&amp;nbsp; | daodao&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;&lt;em&gt;user_action表&lt;/em&gt;:&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;user_id&amp;nbsp;|&amp;nbsp; action&lt;br /&gt;---------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; jump&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp; kick&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; jump&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp; run&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp; swim&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sql:&lt;/em&gt;&lt;br /&gt;select id, name, action from user as u&lt;br /&gt;left join user_action a on u.id = a.user_id&lt;/p&gt;
&lt;p&gt;&lt;em&gt;result:&lt;/em&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id&amp;nbsp; |&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; action&lt;br /&gt;--------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; libk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; jump&amp;nbsp;&amp;nbsp;&amp;nbsp; ①&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; libk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; kick&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ②&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; libk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;|&amp;nbsp;&amp;nbsp; jump&amp;nbsp;&amp;nbsp;&amp;nbsp; ③&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; zyfon &amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; run&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ④&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; daodao&amp;nbsp;|&amp;nbsp;&amp;nbsp; null&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ⑤&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;分析：&lt;/h5&gt;
注意到user_action中还有一个user_id=4, action=swim的纪录，但是没有在结果中出现，&lt;br /&gt;而user表中的id=3, name=daodao的用户在user_action中没有相应的纪录，但是却出现在了结果集中&lt;br /&gt;因为现在是left join，所有的工作以left为准.&lt;br /&gt;结果1，2，3，4都是既在左表又在右表的纪录，5是只在左表，不在右表的纪录
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;结论：&lt;/h5&gt;
&lt;font color=&quot;#000099&quot;&gt;我们可以想象left join 是这样工作的&lt;br /&gt;从左表读出一条，选出所有与on匹配的右表纪录(n条)进行连接， 形成n条纪录(包括重复的行，如：结果1和结果3)，&lt;br /&gt;如果右边没有与on条件匹配的表，那连接的字段都是null.&lt;br /&gt;然后继续读下一条。&lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;引申：&lt;/h5&gt;
&lt;font color=&quot;#000099&quot;&gt;我们可以用右表没有on匹配则显示null的规律, 来找出所有在左表，不在右表的纪录， 注意用来判断的那列必须声明为not null的。&lt;br /&gt;&lt;/font&gt;如：&lt;br /&gt;sql:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id, name, action from user as u&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join user_action a on u.id = a.user_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where a.user_id is NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (注意:&lt;strong&gt;1.列值为null应该用is null 而不能用=NULL&amp;nbsp; &lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;2.这里a.user_id 列必须声明为 NOT NULL 的&lt;/strong&gt;)&lt;br /&gt;result:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; action&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; daodao&amp;nbsp; |&amp;nbsp;&amp;nbsp; NULL
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Tips:&lt;/h3&gt;
&lt;p&gt;1. on a.c1 = b.c1 等同于 using(c1)&lt;br /&gt;2. INNER JOIN 和 , (逗号) 在语义上是等同的&lt;br /&gt;3.&amp;nbsp; 当 MySQL 在从一个表中检索信息时，你可以提示它选择了哪一个索引。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果 EXPLAIN 显示 MySQL 使用了可能的索引列表中错误的索引，这个特性将是很有用的。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 通过指定 USE INDEX (key_list)，你可以告诉 MySQL 使用可能的索引中最合适的一个索引在表中查找记录行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可选的二选一句法 IGNORE INDEX (key_list) 可被用于告诉 MySQL 不使用特定的索引。&lt;br /&gt;4. 一些例子：&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1,table2 WHERE table1.id=table2.id;&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1 LEFT JOIN table2 USING (id);&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEFT JOIN table3 ON table2.id=table3.id;&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1 USE INDEX (key1,key2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE key1=1 AND key2=2 AND key3=3;&lt;br /&gt;mysql&amp;gt; SELECT * FROM table1 IGNORE INDEX (key3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE key1=1 AND key2=2 AND key3=3;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;以下为mysql官方关于join的工作原理及注意事项的说明&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&amp;nbsp; 5.2.6 How MySQL Optimises LEFT JOIN and RIGHT JOIN&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A LEFT JOIN B in MySQL is implemented as follows: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The table B is set to be dependent on table A and all tables that A is dependent on. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The table A is set to be dependent on all tables (except B) that are used in the LEFT JOIN condition. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; All LEFT JOIN conditions are moved to the WHERE clause. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; All standard join optimisations are done, with the exception that a table is always read after all tables it is dependent on. If there is a circular dependence then MySQL will issue an error. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; All standard WHERE optimisations are done. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If there is a row in A that matches the WHERE clause, but there wasn&amp;quot; &lt;br to=&quot;&quot; set=&quot;&quot; columns=&quot;&quot; all=&quot;&quot; with=&quot;&quot; generated=&quot;&quot; is=&quot;&quot; row=&quot;&quot; extra=&quot;&quot; an=&quot;&quot; then=&quot;&quot; the=&quot;&quot; matched=&quot;&quot; that=&quot;&quot; in=&quot;&quot; any=&quot;&quot; t=&quot;&quot; left=&quot;&quot; join=&quot;&quot; b=&quot;&quot; null.=&quot;&quot; /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you use LEFT JOIN to find rows that don't exist in some table and you have the following test: column_name IS NULL in the WHERE part, &lt;font color=&quot;#000099&quot;&gt;where column_name is a column that is declared as NOT NULL&lt;/font&gt;, then MySQL will stop searching after more rows (for a particular key combination) after it has found one row that matches the LEFT JOIN condition. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RIGHT JOIN is implemented analogously as LEFT JOIN. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#000099&quot;&gt;&amp;nbsp; The table read order forced by LEFT JOIN and STRAIGHT JOIN will help the join optimiser (which calculates in which order tables should be joined) to do its work much more quickly, as there are fewer table permutations to check. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Note that the above means that if you do a query of type: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT * FROM &lt;font color=&quot;#ff0000&quot;&gt;a,b&lt;/font&gt; LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE b.key=d.key&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MySQL will do a full scan on b as the LEFT JOIN will force it to be read before d. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The fix in this case is to change the query to: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT * FROM &lt;font color=&quot;#ff0000&quot;&gt;b,a&lt;/font&gt; LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE b.key=d.key&lt;/p&gt;
&lt;br /&gt;&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2006-12-27 22:46:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465082&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：965 评论：1 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465082#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Wed, 27 Dec 2006 22:46:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1465082</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1465082</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835303/1126023</fs:itemid></item><item><title>[转]SQL 外链接操作小结 inner join left join right join</title><link>http://blog.csdn.net/wohugb/article/details/1465081</link><description>&lt;div class=&quot;tit&quot;&gt;SQL 外链接操作小结 inner join left join right join&lt;/div&gt;
&lt;div class=&quot;date&quot;&gt;2006-12-02 14:58&lt;/div&gt;
&lt;table style=&quot;TABLE-LAYOUT: fixed&quot;&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div class=&quot;cnt&quot;&gt;简介:&lt;br /&gt;外部连接和自联接&lt;br /&gt;inner join(等值连接) 只返回两个表中联结字段相等的行&lt;br /&gt;left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录&lt;br /&gt;right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录&lt;br /&gt;on 指定表间联结字段及其关系的等号 &amp;quot;=&amp;quot; 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录. &lt;br /&gt;! 外部连接只能操作已存在于数据库中的数据&lt;br /&gt;&lt;br /&gt;Update (ctarticle AS a LEFT JOIN ctclass AS c ON a.classid = c.classid) LEFT JOIN cttag AS b ON a.articleid = b.articleid &lt;br /&gt;SET tag=tag ' ', b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid &lt;br /&gt;Where a.classid=23 AND a.nclassid=0 AND tagid is not null&lt;br /&gt;&lt;br /&gt;Update (ctarticle AS a LEFT JOIN (ctnclass AS c LEFT JOIN ctclass AS d ON c.classid = d.classid) ON a.nclassid = c.nclassid AND a.classid = c.classid) LEFT JOIN cttag AS b ON a.articleid = b.articleid SET tag=d.class ' ' c.nclass, b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid Where a.classid=23 AND a.nclassid=197;&lt;br /&gt;&lt;br /&gt;更新操作&lt;br /&gt;左连接中数据的筛选&lt;br /&gt;Insert INTO cttag(articleid,classid,nclassid) Select a.articleid,a.classid,a.nclassid from ctarticle a left join cttag b on a.articleid=b.articleid where b.articleid is null&lt;br /&gt;&lt;br /&gt;//本语句功能为, 显示主表的全部内容, 插入数据到副表中没有的数据&lt;br /&gt;//主要作用为: 让数据减少冗余&lt;br /&gt;&lt;br /&gt;上例中的延续&lt;br /&gt;Select a.*, b.*, c.*, d.*&lt;br /&gt;FROM cttag as d left join ((ctarticle AS a LEFT JOIN ctclass AS b ON a.classid=b.classid) LEFT JOIN ctnclass AS c ON a.nclassid=c.nclassid) on d.articleid=a.articleid;&lt;br /&gt;&lt;br /&gt;显示文章表中的全部, 调用类别表中的栏目&lt;br /&gt;select a.*, b.*, c.* from (ctarticle a left join ctclass b on a.classid=b.classid) left join ctnclass c on a.nclassid=c.nclassid&lt;br /&gt;&lt;br /&gt;//作用, 有时在文章表中包含了在个别类别表中没有的数据, 用这个语法可以读出文章表的全部数据&lt;br /&gt;//a 为 文章表, b 为主类别, c 为子类别&lt;br /&gt;&lt;br /&gt;同上例, 选择追加数据时加上空格&lt;br /&gt;Insert INTO cttag(articleid,classid,nclassid,tag)&lt;br /&gt;Select a.articleid,a.classid,a.nclassid,d.class ' ' c.nclass&lt;br /&gt;FROM (ctarticle AS a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=4 and a.nclassid=154;&lt;br /&gt;&lt;br /&gt;连接N个表, 并追加数据到其中一个表, N=4&lt;br /&gt;insert INTO cttag(articleid,classid,nclassid,tag)&lt;br /&gt;Select a.articleid,a.classid,a.nclassid,d.class c.nclass&lt;br /&gt;FROM (ctarticle AS a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=1 and a.nclassid=1;&lt;br /&gt;&lt;br /&gt;//解读&lt;br /&gt;插入到 表2(栏1,栏2,栏3,栏4)&lt;br /&gt;选择 别名a.栏1, 别名a.栏2, 别名a.栏3, 别名d.栏4 加上 别名c.栏5&lt;br /&gt;从 (表1 别名a 左连接 (表3 别名c 左连接 表4 别名d 在 别名c.栏2 等于 别名d.栏2) 在 别名a.栏2 等于 别名c.栏2 和 别名a.栏3=别名c.栏3) 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏2=1 和 别名a.栏3=1&lt;br /&gt;&lt;br /&gt;连接两个表, 并追加数据到其中一个表&lt;br /&gt;Insert INTO cttag(articleid,classid,nclassid)&lt;br /&gt;Select a.articleid,a.classid,a.nclassid&lt;br /&gt;FROM ctarticle AS a LEFT JOIN cttag AS b ON a.articleid = b.articleid where a.classid=1 and a.nclassid=1;&lt;br /&gt;&lt;br /&gt;//解读&lt;br /&gt;插入到 表2(栏1,栏2,栏3)&lt;br /&gt;选择 别名a.栏1, 别名a.栏2, 别名a.栏3&lt;br /&gt;从 表1 别名a 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏4=1 和 别名a.栏5=1&lt;br /&gt;&lt;br /&gt;左连接&lt;br /&gt;&lt;br /&gt;同步两表的数据&lt;br /&gt;Update ctarticle a INNER JOIN cttag b ON a.articleid = b.articleid SET b.classid=a.classid, b.nclassid=a.nclassid;&lt;br /&gt;&lt;br /&gt;//解读&lt;br /&gt;更新 表1 别名a 联接 表2 别名2 在 别名a.栏1 等于 别名b.栏1 设置 别名b.栏2 更新为 别名a.栏2, 别名b.栏3 更新为 别名a.栏3 &lt;br /&gt;&lt;br /&gt;右外连接&lt;br /&gt;select a.*, b.* from bunclass a right join ctclass b on a.classid=b.classid where a.nclassid=20&lt;br /&gt;&lt;br /&gt;查询别名 a,b 表, 只匹配 b 表中的内容.&lt;br /&gt;&lt;br /&gt;添加数据到连接表之一&lt;br /&gt;Insert INTO cttag ( tag, articleid ) Select top 1 b.tag, a.articleid FROM ctarticle AS a left JOIN cttag AS b ON a.articleid = b.articleid Where a.articleid order by a.articleid desc;&lt;br /&gt;&lt;br /&gt;变通中的用法二&lt;br /&gt;Insert INTO bureply &lt;br /&gt;Select b.*, a.classid, a.nclassid&lt;br /&gt;FROM article AS a INNER JOIN reply AS b ON a.articleid = b.articleid&lt;br /&gt;Where classid=50;&lt;br /&gt;&lt;br /&gt;实际应用中的变通&lt;br /&gt;Insert INTO butag ( tag, articleid, classid, nclassid)&lt;br /&gt;Select b.tag, a.articleid, a.classid, a.nclassid&lt;br /&gt;FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid&lt;br /&gt;Where classid=24;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;添加数据到其他表&lt;br /&gt;Insert INTO butag ( tag, articleid )&lt;br /&gt;Select b.tag, a.articleid&lt;br /&gt;FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid&lt;br /&gt;Where a.articleid False;&lt;br /&gt;&lt;br /&gt;//解读&lt;br /&gt;添加到 接收表(列1,列2)&lt;br /&gt;选择 别名b.列1, 别名a.列2&lt;br /&gt;从 表1 表名a 联接 表2 表名b 在 别名a.列c 等于 别名b.列c&lt;br /&gt;在哪里 别名a.列c 不等于 没有&lt;br /&gt;&lt;br /&gt;实际应用中的变通&lt;br /&gt;Select b.tag, a.articleid, a.classid, a.nclassid&lt;br /&gt;FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid&lt;br /&gt;Where a.classid=24;&lt;br /&gt;&lt;br /&gt;查询&lt;br /&gt;Select b.tag, a.articleid&lt;br /&gt;FROM article AS a INNER JOIN tag AS b ON a.articleid = b.articleid&lt;br /&gt;Where a.articleid False;&lt;br /&gt;&lt;br /&gt;//解读&lt;br /&gt;选择 别名b.列, 别名a.列&lt;br /&gt;从 表1 别名a 联接 表2 别名b 在 别名a.列c = 别名b.列c&lt;br /&gt;在哪里 别名a.列c 不等于 没有&lt;br /&gt;注: as 不是必要 &lt;/div&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&amp;nbsp;
            &lt;div&gt;
                作者：wohugb 发表于2006-12-27 22:45:00 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465081&quot;&gt;原文链接&lt;/a&gt;
            &lt;/div&gt;
            &lt;div&gt;
            阅读：534 评论：0 &lt;a href=&quot;http://blog.csdn.net/wohugb/article/details/1465081#comments&quot; target=&quot;_blank&quot;&gt;查看评论&lt;/a&gt;
            &lt;/div&gt;</description><pubDate>Wed, 27 Dec 2006 22:45:00 +0800</pubDate><author>wohugb</author><guid isPermaLink="false">http://blog.csdn.net/wohugb/article/details/1465081</guid><dc:creator>wohugb</dc:creator><fs:srclink>http://blog.csdn.net/wohugb/article/details/1465081</fs:srclink><fs:srcfeed>http://blog.csdn.net/wohugb/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/wohugb/~1126029/641835302/1126023</fs:itemid></item></channel></rss>
