<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Lee's 程序人生</title><subtitle type="text">HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库</subtitle><id>http://feed.cnblogs.com/blog/u/28218/rss</id><updated>2012-05-22T03:00:22Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28218/rss"/><entry><id>http://www.cnblogs.com/analyzer/archive/2012/02/09/2343952.html</id><title type="text">PostgreSQL与MySQL比较</title><summary type="text">特性MySQLPostgreSQL实例通过执行 MySQL 命令（mysqld）启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。通过执行 Postmaster 进程（pg_ctl）启动实例。一个实例可以管理一个或多个数据库，这些数据库组成一个集群。集群是磁盘上的一个区域，这个区域在安装时初始化并由一个目录组成，所有数据都存储在这个目录中。使用 initdb 创建第一个数据库。一台机器上可以启动多个实例。数据库数据库是命名的对象集合，是与实例中的其他数据库分离的实体。一个 MySQL 实例中的所有数据库共享</summary><published>2012-02-09T06:50:00Z</published><updated>2012-02-09T06:50:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2012/02/09/2343952.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2012/02/09/2343952.html"/><content type="html">&lt;table cellspacing="0" style="word-wrap: break-word; empty-cells: show; border-collapse: collapse; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #e3edf5; border-right-color: #e3edf5; border-bottom-color: #e3edf5; border-left-color: #e3edf5; table-layout: auto; width: 1095px; color: #000000; font-family: song, Verdana; font-size: 14px; line-height: 22px; background-color: #f0f3fa; "&gt;&lt;tbody style="word-wrap: break-word; "&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;特性&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;MySQL&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;PostgreSQL&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;实例&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;通过执行 MySQL 命令（mysqld）启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;br style="word-wrap: break-word; " /&gt;通过执行 Postmaster 进程（pg_ctl）启动实例。一个实例可以管理一个或多个数据库，这些数据库组成一个集群。集群是磁盘上的一个区域，这个区域在安装时初始化并由一个目录组成，所有数据都存储在这个目录中。使用 initdb 创建第一个数据库。一台机器上可以启动多个实例。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据库&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据库是命名的对象集合，是与实例中的其他数据库分离的实体。一个 MySQL 实例中的所有数据库共享同一个系统编目。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据库是命名的对象集合，每个数据库是与其他数据库分离的实体。每个数据库有自己的系统编目，但是所有数据库共享 pg_databases。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据缓冲区&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;通过&amp;nbsp;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;innodb_buffer_pool_size&lt;/strong&gt;&amp;nbsp;配置参数设置数据缓冲区。这个参数是内存缓冲区的字节数，InnoDB 使用这个缓冲区来缓存表的数据和索引。在专用的数据库服务器上，这个参数最高可以设置为机器物理内存量的 80%。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;Shared_buffers&lt;/strong&gt;&amp;nbsp;缓存。在默认情况下分配 64 个缓冲区。默认的块大小是 8K。可以通过设置 postgresql.conf 文件中的 shared_buffers 参数来更新缓冲区缓存。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据库连接&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;客户机使用 CONNECT 或 USE 语句连接数据库，这时要指定数据库名，还可以指定用户 id 和密码。使用角色管理数据库中的用户和用户组。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;客户机使用 connect 语句连接数据库，这时要指定数据库名，还可以指定用户 id 和密码。使用角色管理数据库中的用户和用户组。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;身份验证&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;MySQL 在数据库级管理身份验证。 基本只支持密码认证。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;PostgreSQL 支持丰富的认证方法：信任认证、口令认证、Kerberos 认证、基于 Ident 的认证、LDAP 认证、PAM 认证&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;加密&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以在表级指定密码来对数据进行加密。还可以使用 AES_ENCRYPT 和 AES_DECRYPT 函数对列数据进行加密和解密。可以通过 SSL 连接实现网络加密。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以使用 pgcrypto 库中的函数对列进行加密/解密。可以通过 SSL 连接实现网络加密。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;审计&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以对 querylog 执行 grep。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以在表上使用 PL/pgSQL 触发器来进行审计。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;查询解释&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;使用 EXPLAIN 命令查看查询的解释计划。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;使用 EXPLAIN 命令查看查询的解释计划。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;备份、恢复和日志&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;InnoDB 使用写前（write-ahead）日志记录。支持在线和离线完全备份以及崩溃和事务恢复。需要第三方软件才能支持热备份。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;在数据目录的一个子目录中维护写前日志。支持在线和离线完全备份以及崩溃、时间点和事务恢复。 可以支持热备份。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;JDBC 驱动程序&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以从&amp;nbsp;&lt;a href="http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0606khatri/index.html#Resources" target="_blank" style="word-wrap: break-word; color: #336699; "&gt;参考资料&lt;/a&gt;&amp;nbsp;下载 JDBC 驱动程序。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;可以从&amp;nbsp;&lt;a href="http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0606khatri/index.html#Resources" target="_blank" style="word-wrap: break-word; color: #336699; "&gt;参考资料&lt;/a&gt;&amp;nbsp;下载 JDBC 驱动程序。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;表类型&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;取决于存储引擎。例如，NDB 存储引擎支持分区表，内存引擎支持内存表。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持临时表、常规表以及范围和列表类型的分区表。不支持哈希分区表。 由于PostgreSQL的表分区是通过表继承和规则系统完成了，所以可以实现更复杂的分区方式。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;索引类型&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;取决于存储引擎。MyISAM：BTREE，InnoDB：BTREE。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持 B-树、哈希、R-树和 Gist 索引。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;约束&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持主键、外键、惟一和非空约束。对检查约束进行解析，但是不强制实施。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持主键、外键、惟一、非空和检查约束。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;存储过程和用户定义函数&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持 CREATE PROCEDURE 和 CREATE FUNCTION 语句。存储过程可以用 SQL 和 C++ 编写。用户定义函数可以用 SQL、C 和 C++ 编写。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;没有单独的存储过程，都是通过函数实现的。用户定义函数可以用 PL/pgSQL（专用的过程语言）、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 编写。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;触发器&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持行前触发器、行后触发器和语句触发器，触发器语句用过程语言复合语句编写。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持行前触发器、行后触发器和语句触发器，触发器过程用 C 编写。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;系统配置文件&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;my.conf&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;Postgresql.conf&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据库配置&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;my.conf&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;Postgresql.conf&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;客户机连接文件&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;my.conf&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;pg_hba.conf&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;XML 支持&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;有限的 XML 支持。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;有限的 XML 支持。&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;数据访问和管理服务器&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;OPTIMIZE TABLE&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 回收未使用的空间并消除数据文件的碎片&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;myisamchk -analyze&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 更新查询优化器所使用的统计数据（MyISAM 存储引擎）&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;mysql&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 命令行工具&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;MySQL Administrator&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 客户机 GUI 工具&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;Vacuum&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 回收未使用的空间&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;Analyze&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 更新查询优化器所使用的统计数据&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;psql&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 命令行工具&lt;br style="word-wrap: break-word; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;pgAdmin&lt;/strong&gt;&amp;nbsp;&amp;#8212;&amp;#8212; 客户机 GUI 工具&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;并发控制&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持表级和行级锁。InnoDB 存储引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 语句在事务级设置隔离级别。&lt;/td&gt;&lt;td style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;支持表级和行级锁。支持的 ANSI 隔离级别是 Read Committed（默认 &amp;#8212;&amp;#8212; 能看到查询启动时数据库的快照）和 Serialization（与 Repeatable Read 相似 &amp;#8212;&amp;#8212; 只能看到在事务启动之前提交的结果）。使用 SET TRANSACTION 语句在事务级设置隔离级别。使用 SET SESSION 在会话级进行设置。&amp;nbsp;&lt;br style="word-wrap: break-word; " /&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;MySQL相对于PostgreSQL的劣势：&lt;br style="word-wrap: break-word; " /&gt;&lt;/strong&gt;&lt;table cellspacing="0" style="word-wrap: break-word; empty-cells: show; border-collapse: collapse; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #e3edf5; border-right-color: #e3edf5; border-bottom-color: #e3edf5; border-left-color: #e3edf5; table-layout: auto; width: 1095px; color: #000000; font-family: song, Verdana; font-size: 14px; line-height: 22px; background-color: #f0f3fa; "&gt;&lt;tbody style="word-wrap: break-word; "&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;MySQL&lt;/strong&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; "&gt;PostgreSQL&lt;/strong&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;最重要的引擎InnoDB很早就由Oracle公司控制。目前整个MySQL数据库都由Oracle控制。&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;BSD协议，没有被大公司垄断。&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;对复杂查询的处理较弱，查询优化器不够成熟&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;很强大的查询优化器，支持很复杂的查询处理。&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join)。&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;都支持&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;性能优化工具与度量信息不足&lt;br style="word-wrap: break-word; " /&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;提供了一些性能视图，可以方便的看到发生在一个表和索引上的select、delete、update、insert统计信息，也可以看到cache命中率。网上有一个开源的pgstatspack工具。&lt;br style="word-wrap: break-word; " /&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;InnoDB的表和索引都是按相同的方式存储。也就是说表都是索引组织表。这一般要求主键不能太长而且插入时的主键最好是按顺序递增，否则对性能有很大影响。&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不存在这个问题。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;大部分查询只能使用表上的单一索引;在某些情况下，会存在使用多个索引的查询,但是查询优化器通常会低估其成本,它们常常比表扫描还要慢。&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不存在这个问题&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;表增加列，基本上是重建表和索引，会花很长时间。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;表增加列，只是在数据字典中增加表定义，不会重建表&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;存储过程与触发器的功能有限。可用来编写存储过程、触发器、计划事件以及存储函数的语言功能较弱&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;除支持pl/pgsql写存储过程，还支持perl、python、Tcl类型的存储过程：pl/perl，pl/python，pl/tcl。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;p&gt;也支持用C语言写存储过程。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不支持Sequence。&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;支持&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不支持函数索引，只能在创建基于具体列的索引。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;p&gt;不支持物化视图。&lt;/p&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;支持函数索引，同时还支持部分数据索引，通过规则系统可以实现物化视图的功能。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;执行计划并不是全局共享的, 仅仅在连接内部是共享的。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;执行计划共享&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;MySQL支持的SQL语法(ANSI SQL标准)的很小一部分。不支持递归查询、通用表表达式（Oracle的with 语句）或者窗口函数（分析函数）。&lt;/p&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;br style="word-wrap: break-word; " /&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;都 支持&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table cellspacing="0" style="word-wrap: break-word; empty-cells: show; border-collapse: collapse; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #e3edf5; border-right-color: #e3edf5; border-bottom-color: #e3edf5; border-left-color: #e3edf5; table-layout: auto; width: 1095px; color: #000000; font-family: song, Verdana; font-size: 14px; line-height: 22px; background-color: #f0f3fa; "&gt;&lt;tbody style="word-wrap: break-word; "&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不支持用户自定义类型或域(domain)&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;支持。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;对于时间、日期、间隔等时间类型没有秒以下级别的存储类型&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;可以精确到秒以下。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;身份验证功能是完全内置的，不支持操作系统认证、PAM认证，不支持LDAP以及其它类似的外部身份验证功能。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;支持OS认证、Kerberos 认证 、Ident 的认证、LDAP 认证、PAM 认证&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;不支持database link。有一种叫做Federated的存储引擎可以作为一个中转将查询语句传递到远程服务器的一个表上,不过,它功能很粗糙并且漏洞很多&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;有dblink，同时还有一个dbi-link的东西，可以连接到oracle和mysql上。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;Mysql Cluster可能与你的想象有较大差异。开源的cluster软件较少。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;p&gt;复制(Replication)功能是异步的,并且有很大的局限性.例如,它是单线程的(single-threaded),因此一个处理能力更强的Slave的恢复速度也很难跟上处理能力相对较慢的Master.&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;有丰富的开源cluster软件支持。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;explain看执行计划的结果简单。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;explain返回丰富的信息。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="word-wrap: break-word; "&gt;&lt;td width="355" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;类似于ALTER TABLE或CREATE TABLE一类的操作都是非事务性的.它们会提交未提交的事务，并且不能回滚也不能做灾难恢复&lt;/p&gt;&lt;/td&gt;&lt;td width="350" style="word-wrap: break-word; line-height: 1.6em; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; overflow-x: hidden; overflow-y: hidden; "&gt;&lt;p&gt;DDL也是有事务的。&lt;br style="word-wrap: break-word; " /&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL主要优势：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;1. PostgreSQL完全免费，而且是BSD协议，如果你把PostgreSQL改一改，然后再拿去卖钱，也没有人管你，这一点很重要，这表明了PostgreSQL数据库不会被其它公司控制。oracle数据库不用说了，是商业数据库，不开放。而MySQL数据库虽然是开源的，但现在随着SUN被oracle公司收购，现在基本上被oracle公司控制，其实在SUN被收购之前，MySQL中最重要的InnoDB引擎也是被oracle公司控制的，而在MySQL中很多重要的数据都是放在InnoDB引擎中的，反正我们公司都是这样的。所以如果MySQL的市场范围与oracle数据库的市场范围冲突时，oracle公司必定会牺牲MySQL，这是毫无疑问的。&amp;nbsp;&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;2. 与PostgreSQl配合的开源软件很多，有很多分布式集群软件，如pgpool、pgcluster、slony、plploxy等等，很容易做读写分离、负载均衡、数据水平拆分等方案，而这在MySQL下则比较困难。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;3. PostgreSQL源代码写的很清晰，易读性比MySQL强太多了，怀疑MySQL的源代码被混淆过。所以很多公司都是基本PostgreSQL做二次开发的。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;4. PostgreSQL在很多方面都比MySQL强，如复杂SQL的执行、存储过程、触发器、索引。同时PostgreSQL是多进程的，而MySQL是线程的，虽然并发不高时，MySQL处理速度快，但当并发高的时候，对于现在多核的单台机器上，MySQL的总体处理性能不如PostgreSQL，原因是MySQL的线程无法充分利用CPU的能力。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;目前只想到这些，以后想到再添加，欢迎大家拍砖。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL与oracle或InnoDB的多版本实现的差别&lt;/strong&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL与oracle或InnoDB的多版本实现最大的区别在于最新版本和历史版本是否分离存储，PostgreSQL不分，而oracle和InnoDB分，而innodb也只是分离了数据,索引本身没有分开。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;PostgreSQL的主要优势在于：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;1. PostgreSQL没有回滚段，而oracle与innodb有回滚段，oracle与Innodb都有回滚段。对于oracle与Innodb来说，回滚段是非常重要的，回滚段损坏，会导致数据丢失，甚至数据库无法启动的严重问题。另由于PostgreSQL没有回滚段，旧数据都是记录在原先的文件中，所以当数据库异常crash后，恢复时，不会象oracle与Innodb数据库那样进行那么复杂的恢复，因为oracle与Innodb恢复时同步需要redo和undo。所以PostgreSQL数据库在出现异常crash后，数据库起不来的几率要比oracle和mysql小一些。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;2. 由于旧的数据是直接记录在数据文件中，而不是回滚段中，所以不会象oracle那样经常报ora-01555错误。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;3. 回滚可以很快完成，因为回滚并不删除数据，而oracle与Innodb，回滚时很复杂，在事务回滚时必须清理该事务所进行的修改，插入的记录要删除，更新的记录要更新回来(见row_undo函数)，同时回滚的过程也会再次产生大量的redo日志。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;4. WAL日志要比oracle和Innodb简单，对于oracle不仅需要记录数据文件的变化，还要记录回滚段的变化。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL的多版本的主要劣势在于：&lt;br style="word-wrap: break-word; " /&gt;&lt;/strong&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;1、最新版本和历史版本不分离存储，导致清理老旧版本需要作更多的扫描，代价比较大，但一般的数据库都有高峰期，如果我们合理安排VACUUM，这也不是很大的问题，而且在PostgreSQL9.0中VACUUM进一步被加强了。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;2、由于索引中完全没有版本信息，不能实现Coverage index scan，即查询只扫描索引，直接从索引中返回所需的属性，还需要访问表。而oracle与Innodb则可以;&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;进程模式与线程模式的对比&lt;/strong&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL和oracle是进程模式，MySQL是线程模式。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;进程模式对多CPU利用率比较高。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;进程模式共享数据需要用到共享内存，而线程模式数据本身就是在进程空间内都是共享的，不同线程访问只需要控制好线程之间的同步。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;线程模式对资源消耗比较少。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;所以MySQL能支持远比oracle多的更多的连接。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;对于PostgreSQL的来说，如果不使用连接池软件，也存在这个问题，但PostgreSQL中有优秀的连接池软件软件，如pgbouncer和pgpool，所以通过连接池也可以支持很多的连接。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;strong style="word-wrap: break-word; font-weight: 700; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;堆表与索引组织表的的对比&lt;br style="word-wrap: break-word; " /&gt;&lt;/strong&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;Oracle支持堆表，也支持索引组织表&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;PostgreSQL只支持堆表，不支持索引组织表&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;Innodb只支持索引组织表&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;索引组织表的优势：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;表内的数据就是按索引的方式组织，数据是有序的，如果数据都是按主键来访问，那么访问数据比较快。而堆表，按主键访问数据时，是需要先按主键索引找到数据的物理位置。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;索引组织表的劣势：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;索引组织表中上再加其它的索引时，其它的索引记录的数据位置不再是物理位置，而是主键值，所以对于索引组织表来说，主键的值不能太大，否则占用的空间比较大。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;对于索引组织表来说，如果每次在中间插入数据，可能会导致索引分裂，索引分裂会大大降低插入的性能。所以对于使用innodb来说，我们一般最好让主键是一个无意义的序列，这样插入每次都发生在最后，以避免这个问题。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;由于索引组织表是按一个索引树，一般它访问数据块必须按数据块之间的关系进行访问，而不是按物理块的访问数据的，所以当做全表扫描时要比堆表慢很多，这可能在OLTP中不明显，但在数据仓库的应用中可能是一个问题。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;　 PostgreSQL9.0中的特色功能：&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;PostgreSQL中的Hot Standby功能&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp; 也就是standby在应用日志同步时，还可以提供只读服务，这对做读写分离很有用。这个功能是oracle11g才有的功能。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;PostgreSQL异步提交（Asynchronous Commit）的功能&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;　 这个功能oracle中也是到oracle11g R2才有的功能。因为在很多应用场景中，当宕机时是允许丢失少量数据的，这个功能在这样的场景中就特别合适。在PostgreSQL9.0中把synchronous_commit设置为false就打开了这个功能。需要注意的是，虽然设置为了异步提交，当主机宕机时，PostgreSQL只会丢失少量数据，异步提交并不会导致数据损坏而数据库起不来的情况。MySQL中没有听说过有这个功能。&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;PostgreSQL中索引的特色功能&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;：&lt;/span&gt;&lt;br style="word-wrap: break-word; font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; " /&gt;&lt;span style="font-family: song, Verdana; line-height: 22px; background-color: #f0f3fa; "&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;PostgreSQL中可以有部分索引，也就是只能表中的部分数据做索引，create index 可以带where 条件。同时PostgreSQL中的索引可以反向扫描，所以在PostgreSQL中可以不必建专门的降序索引了。&lt;/span&gt;&amp;nbsp;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2343952.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2012/02/09/2343952.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2012/02/02/2335365.html</id><title type="text">让svn自动更新代码注释中的版本号</title><summary type="text">让svn自动更新代码注释中的版本号最近在做代码规范方面的工作，以前使用Eclipse时有插件支持将SVN版本号自动更新到代码页头注释中去。现在用Zend Studio 7来开发PHP项目，得找一个替代方案来做这个。后来在SVN手册中找到了一个非常简单的解决方案：1、打开C:/Users/[username]/AppData/Roaming/Subversion文件夹2、找到 config文件，并打开3、找到 nable-auto-props = yes 行，去掉行首的注释;在[auto-props]节上添加以下字段：*.css = svn:keywords=Id*.php = svn:keyw</summary><published>2012-02-02T01:54:00Z</published><updated>2012-02-02T01:54:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2012/02/02/2335365.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2012/02/02/2335365.html"/><content type="html">&lt;p&gt;&lt;strong&gt;让svn自动更新代码注释中的版本号&lt;/strong&gt;&lt;/p&gt;&lt;div style="color: #6d6d6d; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff; "&gt;&lt;p&gt;最近在做代码规范方面的工作，以前使用Eclipse时有插件支持将SVN版本号自动更新到代码页头注释中去。现在用Zend Studio 7来开发PHP项目，得找一个替代方案来做这个。后来在SVN手册中找到了一个非常简单的解决方案：&lt;/p&gt;&lt;p&gt;1、打开C:/Users/[username]/AppData/Roaming/Subversion文件夹&lt;/p&gt;&lt;p&gt;2、找到 config文件，并打开&lt;/p&gt;&lt;p&gt;3、找到 nable-auto-props = yes 行，去掉行首的注释;&lt;/p&gt;&lt;p&gt;在[auto-props]节上添加以下字段：&lt;/p&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;css &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;php &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;html &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;tpl &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;txt &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #666600; "&gt;*.&lt;/span&gt;&lt;span style="color: #000000; "&gt;js &lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; svn&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #000000; "&gt;keywords&lt;/span&gt;&lt;span style="color: #666600; "&gt;=&lt;/span&gt;&lt;span style="color: #660066; "&gt;Id&lt;/span&gt;&lt;p&gt;保存后创建一个文件，并在文件注释处添加 $Id$ ，然后添加并提交到版本库。提交成功再回过头看看这个文件，当$Id$被替换成类似这样：&lt;/p&gt;&lt;span style="color: #000000; "&gt;$Id&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt; &lt;span style="color: #660066; "&gt;UsersController&lt;/span&gt;&lt;span style="color: #666600; "&gt;.&lt;/span&gt;&lt;span style="color: #000000; "&gt;php &lt;/span&gt;&lt;span style="color: #006666; "&gt;19629&lt;/span&gt; &lt;span style="color: #006666; "&gt;2011&lt;/span&gt;&lt;span style="color: #666600; "&gt;-&lt;/span&gt;&lt;span style="color: #006666; "&gt;05&lt;/span&gt;&lt;span style="color: #666600; "&gt;-&lt;/span&gt;&lt;span style="color: #006666; "&gt;09&lt;/span&gt; &lt;span style="color: #006666; "&gt;10&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #006666; "&gt;18&lt;/span&gt;&lt;span style="color: #666600; "&gt;:&lt;/span&gt;&lt;span style="color: #006666; "&gt;16Z&lt;/span&gt;&lt;span style="color: #000000; "&gt; zhuwanchun $&lt;/span&gt;&lt;p&gt;说明已经可以自动将SVN版本号更新到注释啊。注意，这种替换只对新创建的文件有效；当在已经提交到版本库中的文件添加$Id$发现并不会被替换成当前的版本号。&lt;/p&gt;&lt;/div&gt;&lt;div id="flinks" style="line-height: 25px; color: #6d6d6d; font-family: Arial, Helvetica, sans-serif; font-size: 13px; background-color: #ffffff; "&gt;本文如需转载,请务必注明：转载自：蓝色夏威夷 [http://www.coderbolg.com/]&lt;/div&gt;&lt;p&gt;&lt;span style="background-color: #ffffff; color: #6d6d6d; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 25px; "&gt;本文链接地址：&lt;/span&gt;&lt;a href="http://www.coderbolg.com/content/140.html" style="font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 25px; color: #0094e0; text-decoration: none; "&gt;&amp;nbsp;http://www.coderbolg.com/content/140.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2335365.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2012/02/02/2335365.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2011/06/30/2094796.html</id><title type="text">要成为扫雷高手，先练好逻辑吧</title><summary type="text">扫雷作为策略游戏，需要游戏者精确的判断。现在扫雷高级的官方最快纪录是33.95秒，中级则是由一个波兰玩家保持的8.5秒。而初级纪录是1秒，世界上很多人达到了这一点。在1秒的时间里完成初级扫雷，据测算概率在0.00058％至0.00119％之间（属于运气题），最可能的方法是直接点击四个角的方块。而本文所作的事情，则是将雷与雷之间的规律给你揪出来，并且深入思考其中的内涵。让你以后面对扫雷时，缩短与记录的差距，战无不胜！从简单雷区入手下图是一个初级的雷区，并且标注了两颗雷的位置，你能将剩下的地雷扫描出来吗？经过逐一排查，可以很轻松的确定雷区中的6颗地雷所在位置：再来看一个简单的“雷区”：通过逐步扫描</summary><published>2011-06-30T08:47:00Z</published><updated>2011-06-30T08:47:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2011/06/30/2094796.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2011/06/30/2094796.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: Verdana; background-color: #e5ecf4; "&gt;&lt;p&gt;扫雷作为策略游戏，需要游戏者精确的判断。现在扫雷高级的官方最快纪录是33.95秒，中级则是由一个波兰玩家保持的8.5秒。而初级纪录是1秒，世界上很多人达到了这一点。在1秒的时间里完成初级扫雷，据测算概率在0.00058％至0.00119％之间（属于运气题），最可能的方法是直接点击四个角的方块。而本文所作的事情，则是将雷与雷之间的规律给你揪出来，并且深入思考其中的内涵。让你以后面对扫雷时，缩短与记录的差距，战无不胜！&lt;/p&gt;&lt;p&gt;从简单雷区入手&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;下图是一个初级的雷区，并且标注了两颗雷的位置，你能将剩下的地雷扫描出来吗？&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/0t/b9/2l/0tb92l.png" src="http://img.cnbeta.com/newsimg/110630/13490401244349011.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;经过逐一排查，可以很轻松的确定雷区中的6颗地雷所在位置：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/1m/jp/t1/1mjpt1.png" src="http://img.cnbeta.com/newsimg/110630/1349051473171273.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;再来看一个简单的&amp;#8220;雷区&amp;#8221;：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/nc/cx/dz/nccxdz.png" src="http://img.cnbeta.com/newsimg/110630/1349052285990654.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;通过逐步扫描每一个方块会发现：首先最左边的和最右边的两个格子都一定是地雷，从左数第二个空格子和从右数第二个空格子也都是地雷，由于数字1的关系，从左数第3个格子和从右数第3个格子都不是地雷，翻开一定是数字1&amp;#8230;&amp;#8230;这样一直下去，最后你会发现最中间的两个空格子，不管有没有地雷，都和周围格子上的数字不符。也就是说这样的雷区有bug，是无解的。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;雷区中的逻辑门&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;怎么判断一个雷区是否有bug？又怎么判断雷区中地雷的具体位置呢？难道一定要从头到尾将雷区扫描一遍吗？&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;其实这些雷区里其实藏着一个规律。我们用数学方法来分析了上例的雷区：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;在之前提到的这两个雷区里，把还没有翻开的格子交叉标记上字母x和x&amp;#8217;。可以看到：当x的格子有雷时，x&amp;#8217;格子一定没有地雷，反之亦然。如果将最左边的空格子作为输入，把最右边的格子作为输出，输入结果和输出结果一定是一样或者相反的。如果是相反的，这相当于一个NOT（&amp;#8220;非&amp;#8221;）门电子元件。如果是一样的，就有趣了，这样的一片雷区就具备了电路导线的性质！&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/kc/rj/p7/kcrjp7.png" src="http://img.cnbeta.com/newsimg/110630/13490531147043627.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;在这里，雷区被看成了一个数字逻辑电路。执行这些&amp;#8220;或&amp;#8221;、&amp;#8220;与&amp;#8221;、&amp;#8220;非&amp;#8221;等逻辑运算的电路则被称为&amp;#8212;&amp;#8212;逻辑门。任何复杂的逻辑电路都可由这些逻辑门组成。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;逻辑门是集成电路上的基本组件。简单的逻辑门可由晶体管组成。这些晶体管的组合可以使代表两种型号的高低电平在通过它们后产生信号。而高低电平可以分别代表逻辑上的真假或二进制中的0和1，从而实现逻辑运算。具体到扫雷游戏里，也就是说，逻辑门可以用于判断一系列格子中的地雷的具体位置，而且它如同电路传导一样，精确而迅速。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;常见的（也是扫雷中用到的）逻辑门包括&amp;#8220;与&amp;#8221;门、&amp;#8220;或&amp;#8221;门、&amp;#8220;非&amp;#8221;门等。将它们组合使用就可以实现更复杂的运算&amp;#8212;&amp;#8212;完成复杂情形下的扫雷，这种方法比按照规则缓慢推进的扫雷方法要节省很多时间。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/uh/22/b7/uh22b7.png" src="http://img.cnbeta.com/newsimg/110630/13490541885104546.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;复杂雷区中的精确判断&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;在简单的雷区中小试牛刀后，带着发现的规律，让我们进行一次实战演习。下图是高级扫雷游戏中的一个典型的雷区：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/z8/jk/13/z8jk13.png" src="http://img.cnbeta.com/newsimg/110630/13490551346951617.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;你能在不翻开格子的情况下，直接指出黄格子中有无地雷吗？ 如果将雷区随意改变一点&amp;#8212;&amp;#8212;左上角的一个格子下移一位，结果又如何呢？&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/dp/ny/fr/dpnyfr.png" src="http://img.cnbeta.com/newsimg/110630/13490661935806524.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;你可能需要考量全局，从某个点开始逐步推理，将雷区全部扫描一遍，才能判断。而当雷区任意改变一点时，你都要重新来过，才能再次解答。这无疑是一种巨大成本负担。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;实际上我们可以很快速地给出答案：第一个雷区的黄格子中无雷。而第二个雷区的黄格子中一定有雷。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;这是怎么做到的？其实将上述的逻辑门引入到这个复杂的雷区中，一切都会变得简单而清晰起来。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;img alt="/gkimage/7r/kj/9e/7rkj9e.png" src="http://img.cnbeta.com/newsimg/110630/13490671198398703.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;雷区内靠近边界、可以直接确定是地雷的位置都插上了标示旗，剩下的位置标上了不同的字母。把一个有地雷格子看作1，没有地雷的看作0。最左面的格子（u、v）作为输入，最右面的格子（t）作为输出。按照扫雷游戏的规则，经过一步步推算，它们之间的关系就是：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;( u , v , t ) = ( 1 , 1 , 1 ) 或 ( 1 , 0 , 0 ) 或 ( 0 , 1 , 0 ) 或 ( 0 , 0 , 0 )&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;显然，这个雷区被归纳成了一个AND门，它不仅轻松化解了这个扫雷难题，而且把雷区的规律揭示出来了。如此一来，当你掌握扫雷中这些逻辑门规律并加以练习后，就能够达到精确、快速的&amp;#8220;机械化&amp;#8221;扫雷水准。而到那时，一个新纪录或许就会诞生了。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: bold; "&gt;数学家的扫雷研究&lt;/span&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;将扫雷问题抽象化从而缩短游戏时间的人，也不仅仅是扫雷发烧玩家。一些数学家也十分关注这个游戏背后的数学意义。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;英国一位数学家用扫雷游戏中的逻辑规律构建了一系列电子元件，用电子电路模拟雷区。他试图将一个的给定的雷区图案交由计算机来判断是否可解。如果随着格子数量的增加，电脑的计算量增长不是很快，就是P问题，如果计算量增加的很快，就是NP问题。计算机判断雷区是否可解，需要这类问题属于P问题才可以。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;对于几种基本的电路元件（AND、OR、NOT），如果将很多个这样的元件组合起来，相互连接，就会产生很多个输入、输出口。判断最后哪些输出结果可以产生，哪些不可以产生的这类问题，被称为SAT问题，它属于一个经典的NP完全问题。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;而英国数学家的这个问题在一些时候等同于一个复杂电子电路的SAT问题，也就是NP完全问题。由此看来，面对一个上千上万个格子的巨型雷区，不要说去完成所有扫雷任务，就仅仅判断它是不是可解的，都可能会是计算机也承受不了的的大难题。&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2094796.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2011/06/30/2094796.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2011/06/29/2093100.html</id><title type="text">Reset表单后hidden元素的数据变化</title><summary type="text">当执行Form的Reset之后, 表单中的元素的数据会被初始化为页面加载时的初始值.很多时候,我们用Javascript给元素赋值, 这样的赋值是会被Reset清除的.为了保证Reset后保存我们需要的数据, 可以将需要保存的数据存入一个数组中.&lt;script&gt;var data = new Array();function onReset(){data.push(document.getElementById(“input_id”));}&lt;/script&gt;</summary><published>2011-06-29T03:04:00Z</published><updated>2011-06-29T03:04:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093100.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093100.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 22px; background-color: #ffffff; "&gt;&lt;p&gt;当执行Form的Reset之后, 表单中的元素的数据会被初始化为页面加载时的初始值.&lt;/p&gt;&lt;p&gt;很多时候,我们用Javascript给元素赋值, 这样的赋值是会被Reset清除的.为了保证Reset后保存我们需要的数据, 可以将需要保存的数据存入一个数组中.&lt;/p&gt;&lt;p&gt;&amp;lt;script&amp;gt;&lt;br /&gt;var data = new Array();&lt;br /&gt;function onReset(){&lt;br /&gt;data.push(document.getElementById(&amp;#8220;input_id&amp;#8221;));&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2093100.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093100.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2011/06/29/2093098.html</id><title type="text">IE中AJAX缓存问题</title><summary type="text">IE中AJAX缓存问题设置header居然无效果,缓存依然,真是冒汗.&lt;?phpheader("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past?&gt;最后在URL地址上面加一随机数或时间,问题解决.var url=”http://www.tagbar.cn/index.php?ajax=1&amp;id=2&amp;ignore=” + new D</summary><published>2011-06-29T03:03:00Z</published><updated>2011-06-29T03:03:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093098.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093098.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 22px; background-color: #ffffff; "&gt;&lt;h1 class="entry-title" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 7px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 16px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; clear: both; font-family: Arial, sans-serif; line-height: 16px; background-position: initial initial; background-repeat: initial initial; "&gt;IE中AJAX缓存问题&lt;/strong&gt;&lt;/p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 22px; background-color: #ffffff; "&gt;&lt;p&gt;设置header居然无效果,缓存依然,真是冒汗.&lt;br /&gt;&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font: normal normal normal 14px/normal arial, sans-serif; line-height: 22px; background-position: initial initial; background-repeat: initial initial; "&gt;&amp;lt;?php&lt;br /&gt;header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1&lt;br /&gt;header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;最后在URL地址上面加一随机数或时间,问题解决.&lt;br /&gt;var url=&amp;#8221;http://www.tagbar.cn/index.php?ajax=1&amp;amp;id=2&amp;amp;ignore=&amp;#8221; + new Date().getTime();&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2093098.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093098.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2011/06/29/2093095.html</id><title type="text">json_decode()解析格式注意</title><summary type="text">下面列举几种PHP常见json错误格式://wrong$str1 = &lt;&lt;&lt;EOD{“dealList”:”\r\n\t”}EOD;//right$str2 = &lt;&lt;&lt;EOD{“dealList”:”\\r\\n\\t”}EOD;//wrong$str3 = &lt;&lt;&lt;EOD{‘dealList’:'\r\n’}EOD;//wrong$str4 = &lt;&lt;&lt;EOD{‘dealList’:'\\r\\n’}EOD;//wrong$str5 = “{‘dealList’:'\r\n’}”;//wrong$st</summary><published>2011-06-29T03:02:00Z</published><updated>2011-06-29T03:02:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093095.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093095.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 22px; background-color: #ffffff; "&gt;&lt;p&gt;下面列举几种PHP常见json错误格式:&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #ff0000; background-position: initial initial; background-repeat: initial initial; "&gt;//wrong&lt;/span&gt;&lt;br /&gt;$str1 = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;{&amp;#8220;dealList&amp;#8221;:&amp;#8221;\r\n\t&amp;#8221;}&lt;br /&gt;EOD;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #008000; background-position: initial initial; background-repeat: initial initial; "&gt;//right&lt;/span&gt;&lt;br /&gt;$str2 = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;{&amp;#8220;dealList&amp;#8221;:&amp;#8221;\\r\\n\\t&amp;#8221;}&lt;br /&gt;EOD;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #ff0000; background-position: initial initial; background-repeat: initial initial; "&gt;//wrong&lt;/span&gt;&lt;br /&gt;$str3 = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;{&amp;#8216;dealList&amp;#8217;:'\r\n&amp;#8217;}&lt;br /&gt;EOD;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #ff0000; background-position: initial initial; background-repeat: initial initial; "&gt;//wrong&lt;/span&gt;&lt;br /&gt;$str4 = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;{&amp;#8216;dealList&amp;#8217;:'\\r\\n&amp;#8217;}&lt;br /&gt;EOD;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #ff0000; background-position: initial initial; background-repeat: initial initial; "&gt;//wrong&lt;/span&gt;&lt;br /&gt;$str5 = &amp;#8220;{&amp;#8216;dealList&amp;#8217;:'\r\n&amp;#8217;}&amp;#8221;;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #ff0000; background-position: initial initial; background-repeat: initial initial; "&gt;//wrong&lt;/span&gt;&lt;br /&gt;$str6 = &amp;#8220;{&amp;#8216;dealList&amp;#8217;:'\\r\\n&amp;#8217;}&amp;#8221;;&lt;/p&gt;&lt;p&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #008000; background-position: initial initial; background-repeat: initial initial; "&gt;//right&lt;/span&gt;&lt;br /&gt;$str7 = &amp;#8216;{&amp;#8220;dealList&amp;#8221;:&amp;#8221;\r\n&amp;#8221;}&amp;#8217;;&lt;/p&gt;&lt;p&gt;$c =&amp;nbsp;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; outline-width: 0px; outline-style: initial; outline-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #0000ff; background-position: initial initial; background-repeat: initial initial; "&gt;json_decode&lt;/span&gt;($str1);&lt;/p&gt;&lt;p&gt;var_dump($c);&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/2093095.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2011/06/29/2093095.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2010/11/27/1889447.html</id><title type="text">网站开发人员应该知道的62件事</title><summary type="text">有人在Stack Overflow上发问，动手开发网站之前，需要知道哪些事情？ 不出意料地，他得到了一大堆回答。通常情况下，你需要把所有人的发言从头到尾读一遍。但是，Stack Overflow有一个很贴心的设计，它允许在问题下方开设一个wiki区，让所有人共同编辑一个最佳答案。于是，就有了下面这篇文章，一共总结出六个方面共计62条"网站开发须知"。我发现，这种概述性的问题，最适合这种集合群智、头...</summary><published>2010-11-27T00:45:00Z</published><updated>2010-11-27T00:45:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2010/11/27/1889447.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2010/11/27/1889447.html"/><content type="html">&lt;span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 21px; font-family: Verdana; text-align: left"&gt; &lt;p&gt;有人在&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://stackoverflow.com/questions/72394"&gt;Stack Overflow&lt;/a&gt;上发问，动手开发网站之前，需要知道哪些事情？ 不出意料地，他得到了一大堆回答。通常情况下，你需要把所有人的发言从头到尾读一遍。但是，Stack Overflow有一个很贴心的设计，它允许在问题下方开设一个wiki区，让所有人共同编辑一个最佳答案。于是，就有了下面这篇文章，一共总结出六个方面共计62条"网站开发须知"。&lt;/p&gt;&lt;p&gt;我发现，这种概述性的问题，最适合这种集合群智、头脑风暴式的回答方式了。这也是我第一次觉得，Stack Overflow做到了Wikipedia做不到的事。（难怪它最近挤进了全美前400大网站。）&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;在我的印象中，关于网站开发，这样全面的概述性文章非常少见，因此也就非常有用。大家不妨看看，62件事情中你做到了多少？&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;一、界面和用户体验（Interface and User Experience）&lt;/strong&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道各大浏览器执行Web标准的情况，保证你的站点在主要浏览器上都能正常运行。你至少要测试以下引擎：&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29"&gt;Gecko&lt;/a&gt;（用于&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://firefox.com/"&gt;Firefox&lt;/a&gt;）、Webkit（用于&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;、&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;和一些手机浏览器）、IE（你可以利用微软发布的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;amp;amp;displaylang=en"&gt;Application Compatibility VPC Images&lt;/a&gt;进行测试）和&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.opera.com/"&gt;Opera&lt;/a&gt;。同时，不同的操作系统，可能也会影响浏览器如何&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.browsershots.org/"&gt;呈现&lt;/a&gt;你的网站。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;除了浏览器，网站还有其他使用方式：手机、屏幕朗读器、搜索引擎等等。你应该知道在这些情况下，你的网站的运行状况。&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://mobiforge.com/"&gt;MobiForge&lt;/a&gt;提供了手机网站开发的一些相关知识。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.3&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道如何在基本不影响用户使用的情况下升级网站。通常来说，你必须有版本控制系统（CVS、Subversion、Git等等）和数据备份机制（backup）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要让用户看到那些不友好的出错提示。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要直接显示用户的Email地址，至少不要用纯文本显示。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;为你的网站设置一些&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.codinghorror.com/blog/archives/001228.html"&gt;合理的使用限制&lt;/a&gt;，一旦超过门槛值，就自动停止服务。（这也与网站安全相关。）&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道如何实现网页的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Progressive_enhancement"&gt;渐进式增强&lt;/a&gt;（progressive enhancement）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.8&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;用户发出POST请求后，总是将其&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Post/Redirect/Get"&gt;重导向&lt;/a&gt;（redirect）至另外一个网页。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;1.9&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要忘记网站的可访问性（accessibility，即残疾人如何使用网站）。对于美国网站来说，有时这是&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.section508.gov/"&gt;法定要求&lt;/a&gt;。&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/WAI/intro/aria"&gt;WAI-ARIA&lt;/a&gt;有一些这方面很好的参考资料。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;二、安全性（Security&lt;/strong&gt;）&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;阅读&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.owasp.org/index.php/Category%3aOWASP_Guide_Project"&gt;《OWASP开发指南》&lt;/a&gt;，它提供了全面的网站安全指导。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;了解&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/SQL_injection"&gt;SQL注入&lt;/a&gt;（SQL injection）及其预防方法。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;永远不要信任用户提交的数据（cookie也是用户端提交的！）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要明文（plain-text）储存用户的密码，要hash处理后再储存。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要对你的用户认证系统太自信，它可能很容易就被攻破，而你事先根本没意识到存在相关漏洞。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;了解如何&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="https://www.pcisecuritystandards.org/"&gt;处理信用卡&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;在登录页面及其他处理敏感信息的页面，使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt"&gt;SSL&lt;/a&gt;/&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Https"&gt;HTTPS&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.8&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道如何对付session劫持（session hijacking）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.9&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;避免"&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Cross-site_scripting"&gt;跨站点执行&lt;/a&gt;"（cross site scripting，XSS）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.10&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;避免"&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Cross-site_request_forgery"&gt;跨域伪造请求&lt;/a&gt;"（cross site request forgeries，XSRF）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.11&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;及时打上补丁，让你的系统始终跟上最新版本。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.12&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;确认你的数据库连接信息的安全性。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.13&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;跟踪攻击技术的最新发展，以及你使用的平台的最新安全漏洞。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.14&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;阅读Google的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://code.google.com/p/browsersec/wiki/Main"&gt;《浏览器安全手册》&lt;/a&gt;（Browser Security Handbook）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;2.15&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;阅读&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://amzn.com/0470170778"&gt;《网络软件的黑客手册》&lt;/a&gt;（The Web Application Hackers Handbook）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;三、性能（Performance）&lt;/strong&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;只要有可能，就使用缓存（caching）。正确理解和使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.mnot.net/cache_docs/"&gt;HTTP caching&lt;/a&gt;与&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/TR/html5/offline.html"&gt;HTML5离线储存&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;优化图片。不要把一个20KB的图片文件，作为重复出现的网页背景图案。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;学习如何用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.com/performance/rules.html#gzip"&gt;gzip/deflate压缩&lt;/a&gt;内容（&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://stackoverflow.com/questions/1574168/gzip-vs-deflate-zlib-revisited"&gt;deflate方式更可取&lt;/a&gt;）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;将多个样式表文件或脚本文件，合为一个文件，这样可以减少浏览器的http请求数，以及减小gzip压缩后的文件总体积。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;浏览Yahoo的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.com/performance/"&gt;Exceptional Performance&lt;/a&gt;网站，里面有大量提升前端性能的优秀建议，还有他们的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt;工具。Google的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://code.google.com/speed/page-speed/docs/rules_intro.html"&gt;page speed&lt;/a&gt;则是另一个用来分析网页性能的工具。两者都要求安装&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;如果你的网页用到大量的小体积图片（比如工具栏），就应该使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://alistapart.com/articles/sprites"&gt;CSS Image Sprite&lt;/a&gt;，目的是减少http请求数。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;大流量的网站应该考虑将&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.com/performance/rules.html#split"&gt;网页对象分散在多个域名&lt;/a&gt;（split components across domains）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.8&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;静态内容（比如图片、CSS、JavaScript、以及其他cookie无关的网页内容）都应该放在一个&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://blog.stackoverflow.com/2009/08/a-few-speed-improvements/"&gt;不需要使用cookie&lt;/a&gt;的独立域名之上。因为域名之下如果有cookie，那么客户端向该域名发出的每次http请求，都会附上cookie内容。这里的一个好方法就是使用"内容分发网络"（Content Delivery Network，CDN）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.9&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;将浏览器完成网页渲染所需要的http请求数最小化。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.10&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;使用Google的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://code.google.com/closure/compiler/"&gt;Closure Compiler&lt;/a&gt;压缩JavaScript文件，&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.com/yui/compressor/"&gt;YUI Compressor&lt;/a&gt;亦可。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;3.11&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;确保网站根目录下有favicon.ico文件，因为即使网页中根本不包括这个文件，浏览器也会&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://mathiasbynens.be/notes/rel-shortcut-icon"&gt;自动发出对它的请求&lt;/a&gt;。所以如果这个文件不存在，就会产生大量的404错误，消耗光你的服务器的带宽。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;四、搜索引擎优化（Search Engine Optimization，SEO）&lt;/strong&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;使用"搜索引擎友好"的URL形式，比如example.com/pages/45-article-title，而不是example.com/index.php?page=45。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要使用"点击这里"之类的超级链接，因为这样等于浪费了一个SEO机会，而且降低了"屏幕朗读器"（screen reader）的使用效果。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;创建一个&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.sitemaps.org/"&gt;XML sitemap&lt;/a&gt;文件，它的缺省位置一般是/sitemap.xml（即放在网站根目录下）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;当你有多个URL指向同一个内容时，在网页代码中使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html"&gt;&amp;lt;link rel="canonical" ... /&amp;gt;&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;使用Google的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.google.com/webmasters/"&gt;Webmaster Tools&lt;/a&gt;和Yahoo的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://siteexplorer.search.yahoo.com/"&gt;Site Explorer&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;从一开始就使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt;（或者开源的访问量分析工具&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://piwik.org/"&gt;Piwik&lt;/a&gt;）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://en.wikipedia.org/wiki/Robots_exclusion_standard"&gt;robots.txt&lt;/a&gt;的作用，以及搜索引擎蜘蛛的工作原理。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.8&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;将www.example.com的访问请求导向example.com（使用301 Moved Permanently重定向），或者采用相反的做法，目的是防止Google把它们当做两个网站，分开计算排名。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.9&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道存在着恶意或行为不正当的网络蜘蛛。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;4.10&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;如果你的网站有非文本的内容（比如视频、音频等等），你应该参考Google的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;amp;amp;amp;answer=40318"&gt;sitemap扩展协议&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;五、技术（Technology）&lt;/strong&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;理解&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.ietf.org/rfc/rfc2616.txt"&gt;HTTP协议&lt;/a&gt;，以及诸如GET、POST、sessions、cookies之类的概念，包括"无状态"（stateless）是什么意思。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;确保你的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/TR/xhtml1/"&gt;XHTML&lt;/a&gt;/&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/TR/REC-html40/"&gt;HTML&lt;/a&gt;和&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/TR/CSS2/"&gt;CSS&lt;/a&gt;符合&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.w3.org/TR/"&gt;W3C标准&lt;/a&gt;，使得它们能够通过&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://validator.w3.org/"&gt;检验&lt;/a&gt;。这可以使你的网页避免触发浏览器的古怪行为（quirk），而且使它在"屏幕朗读器"和手机上也能正常工作。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;理解浏览器如何处理JavaScript脚本。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;理解网页上的JavaScript文件、样式表文件和其他资源是如何装载及运行的，考虑它们对页面性能有何影响。在某些情况下，可能应该将脚本文件&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_5.html"&gt;放置在网页的尾部&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;理解JavaScript沙箱（Javascript sandbox）的工作原理，尤其是如果你打算使用iframe。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;知道JavaScript可能无法使用或被禁用，以及Ajax并不是一定会运行。记住，"不允许脚本运行"（NoScript）正在某些用户中变得流行，手机浏览器对脚本的支持千差万别，而Google索引网页时不运行大部分的脚本文件。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;了解301重定向和302重定向之间的&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.bigoakinc.com/blog/when-to-use-a-301-vs-302-redirect/"&gt;区别&lt;/a&gt;（这也是一个SEO相关问题）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.8&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;尽可能多得了解你的部署平台（deployment platform）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.9&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;考虑使用&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://stackoverflow.com/questions/167531/is-it-ok-to-use-a-css-reset-stylesheet"&gt;样式表重置&lt;/a&gt;（Reset Style Sheet）。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;5.10&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;考虑使用JavaScript框架（比如&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;、&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://mootools.net/"&gt;MooTools&lt;/a&gt;、&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt;），它们可以使你不用考虑浏览器之间的差异。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;六、解决bug&lt;/strong&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;理解程序员20%的时间用于编码，80%的时间用于维护，根据这一点相应安排时间。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.2&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;建立一个有效的错误报告机制。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;建立某些途径或系统，让用户可以与你接触，向你提出建议和批评。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.4&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;为将来的维护和客服人员撰写文档，解释清楚系统是怎么运行的。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.5&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;经常备份！（并且确保这些备份是有效的。）除了备份机制，你还必须有一个恢复机制。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.6&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;使用某种版本控制系统储存你的文件，比如&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://subversion.apache.org/"&gt;Subversion&lt;/a&gt;或&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://git-scm.org/"&gt;Git&lt;/a&gt;。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;6.7&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;不要忘记做单元测试（Unit Testing），&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt;之类的框架会对你有用。&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;（完）&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;原文网址：&lt;a style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: rgb(0,51,102); padding-top: 0px; text-decoration: none" href="http://stackoverflow.com/questions/72394"&gt;http://stackoverflow.com/questions/72394&lt;/a&gt;&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;译者：阮一峰&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/analyzer/aggbug/1889447.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/analyzer/archive/2010/11/27/1889447.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2010/05/10/1731945.html</id><title type="text">点号引起的502错误</title><summary type="text">今天我写代码的时候误用了.（点号）引起了502错误，代码如下：echo (float)13.'&lt;/br&gt;';注：数字13和点号之间没有空格如果要改正有两种方法：1.数字13和点号之间用空格隔开2.用逗号代替点号感谢 QQ群：Yii技术互助平台（80196965）的各位朋友，谢谢！</summary><published>2010-05-10T09:35:00Z</published><updated>2010-05-10T09:35:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2010/05/10/1731945.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2010/05/10/1731945.html"/><content type="text">今天我写代码的时候误用了.（点号）引起了502错误，代码如下：echo (float)13.'&lt;/br&gt;';注：数字13和点号之间没有空格如果要改正有两种方法：1.数字13和点号之间用空格隔开2.用逗号代替点号感谢 QQ群：Yii技术互助平台（80196965）的各位朋友，谢谢！</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2010/05/07/1729805.html</id><title type="text">TxtBrowser: 在Vim中高效处理纯文本</title><summary type="text">TxtBrowser是一款Vim插件，旨在提供更好的txt浏览体验。主要功能有：为纯文本自动生成目录树侧边栏（taglist窗口）、语法高亮、多项扩展功能（执行url、网络搜索当前词等）。TxtBrowser由国内网友ypguo开发，近期更新活跃，并且解决了taglist.vim插件不能处理中文文件路径的问题，值得关注。一、TxtBrowser功能展示以下是功能简介，更多请参见作者介绍，以及官...</summary><published>2010-05-07T07:46:00Z</published><updated>2010-05-07T07:46:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2010/05/07/1729805.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2010/05/07/1729805.html"/><content type="text">TxtBrowser是一款Vim插件，旨在提供更好的txt浏览体验。主要功能有：为纯文本自动生成目录树侧边栏（taglist窗口）、语法高亮、多项扩展功能（执行url、网络搜索当前词等）。TxtBrowser由国内网友ypguo开发，近期更新活跃，并且解决了taglist.vim插件不能处理中文文件路径的问题，值得关注。一、TxtBrowser功能展示以下是功能简介，更多请参见作者介绍，以及官...</content></entry><entry><id>http://www.cnblogs.com/analyzer/archive/2010/05/07/1729779.html</id><title type="text">思维导图 Xmind PRO v3.1.1 简体中文版(Patch)</title><summary type="text">今天向大家推荐一个灰常好用的思维导图工具，思维导图大家可以先顾名思义一下，实在思不出义不来的就去百科一下吧，我就不扫盲了。思维导图工具有很多，我以前用过MindManager，一方面我不常用，另一方面总觉得用着不舒服，所以在某次换系统之后就跟他Say goodbye了。不过由于现在在工作中经常需要去系统地了解一些东西，于是发现了新版的Xmind。首先展示一张图吧，前阵子花了几天对Flex进行了大致...</summary><published>2010-05-07T07:20:00Z</published><updated>2010-05-07T07:20:00Z</updated><author><name>analyzer</name><uri>http://www.cnblogs.com/analyzer/</uri></author><link rel="alternate" href="http://www.cnblogs.com/analyzer/archive/2010/05/07/1729779.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/analyzer/archive/2010/05/07/1729779.html"/><content type="text">今天向大家推荐一个灰常好用的思维导图工具，思维导图大家可以先顾名思义一下，实在思不出义不来的就去百科一下吧，我就不扫盲了。思维导图工具有很多，我以前用过MindManager，一方面我不常用，另一方面总觉得用着不舒服，所以在某次换系统之后就跟他Say goodbye了。不过由于现在在工作中经常需要去系统地了解一些东西，于是发现了新版的Xmind。首先展示一张图吧，前阵子花了几天对Flex进行了大致...</content></entry></feed>
