<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Berkeley DB 中国研发团队的博客 &#187; Linchun Sun</title>
	<atom:link href="http://www.bdbchina.com/category/linchun-sun/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bdbchina.com</link>
	<description>Oracle Berkeley DB 中国研发团队的博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:35:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Berkeley DB 5.2 正式发布</title>
		<link>http://www.bdbchina.com/2011/06/berkeley-db-5-2-%e6%ad%a3%e5%bc%8f%e5%8f%91%e5%b8%83/</link>
		<comments>http://www.bdbchina.com/2011/06/berkeley-db-5-2-%e6%ad%a3%e5%bc%8f%e5%8f%91%e5%b8%83/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 10:49:52 +0000</pubDate>
		<dc:creator>linchunsun</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Linchun Sun]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1540</guid>
		<description><![CDATA[经过9个月的紧张开发，Berkeley DB（下文简称BDB）于2011年6月15日正式发布了最新版本，版本号为Oracle Berkeley DB 11gR2 (11.2.5.2.28)。
从上世纪80年代第一个版本诞生至今，BDB一直扮演着嵌入式数据库领域领头羊的角色。由于具备了强大的性能，极度的易用性和良好的稳定性，BDB成为这个世界上最受欢迎的嵌入式数据库，并被广泛应用于从路由器到浏览器到操作系统等等计算机系统的方方面面之中,为用户带来了巨大的价值。下面，就让我们一起来揭开Berkeley DB 5.2.28（以下简称BDB5.2）的神秘面纱，看看这个最新版本的BDB将为开发者带来了哪些激动人心的新特性。
【新的访问方法 (Heap Access Method)】
在保留原有的btree，hash， recno和queue这四种访问方法的基础上，BDB5.2新增了heap 访问方法。Heap 访问方法通过复用删除数据所释放的空间，将数据库的大小控制在一个限定的范围内，有效的提高了空间利用率。它适用于存储容量受限的设备或对数据库文件大小有严格限制的环境，以及插入密集型的应用程序。比如可用来做中间服务器的静态图片缓存。
【动态资源管理 (Dynamic Resource Management)】
BDB5.2中，开发者无需再显式指定每种系统资源（如lock，locker等）的上限并在程序开始时一次性分配；BDB5.2将在程序运行过程中动态分配这些资源。资源的分配将根据实际的使用情况动态增长。
【扩展的高可用性 (SQL support for HA/replication) 】
BDB5.2为SQL接口也增加高可用性支持。开发者可以在多个节点上通过SQL HA来构建一个数据库集群，从而扩展了计算能力。
【扩展的Sequence (SQL support for Sequence)】
BDB5.2的SQL 接口引入了Sequence的支持，允许用户使用SQL语句生成序列， 并提供事务保护。
【灵活的高可用性管理 (Group Membership) 】
BDB5.2引入了新的组管理机制，允许用户动态地向组(Replication Group)里添加或者删除结点。系统将自动调整和维护组的大小。
【新增的db_tuner工具  (db_tuner)】
BDB5.2新增了一个db_tuner工具，可以辅助用户选择合适的page size，提升程序的性能。
除此之外，秉承我们一贯的为用户提供最高性能，最灵活的嵌入式数据库的理念，最新的BDB5.2 还修正了上一个版本中存在的各种问题，并对原有的多项功能进行了增强。更多详情，参见这里。
您可以通过 BDB下载页面下载并体验最新的BDB5.2. 如果您有任何问题，欢迎通过我们的博客或者BerkeleyDB的新浪微博留言，也欢迎通过邮件联系我们。
]]></description>
			<content:encoded><![CDATA[<p>经过9个月的紧张开发，Berkeley DB（下文简称BDB）于2011年6月15日正式发布了最新版本，版本号为Oracle Berkeley DB 11gR2 (11.2.5.2.28)。</p>
<p>从上世纪80年代第一个版本诞生至今，BDB一直扮演着嵌入式数据库领域领头羊的角色。由于具备了强大的性能，极度的易用性和良好的稳定性，BDB成为这个世界上最受欢迎的嵌入式数据库，并被广泛应用于从路由器到浏览器到操作系统等等计算机系统的方方面面之中,为用户带来了巨大的价值。下面，就让我们一起来揭开Berkeley DB 5.2.28（以下简称BDB5.2）的神秘面纱，看看这个最新版本的BDB将为开发者带来了哪些激动人心的新特性。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/installation/upgrade_11gr2_52_heap.html">新的访问方法</a> (Heap Access Method)】</p>
<p>在保留原有的btree，hash， recno和queue这四种访问方法的基础上，BDB5.2新增了heap 访问方法。Heap 访问方法通过复用删除数据所释放的空间，将数据库的大小控制在一个限定的范围内，有效的提高了空间利用率。它适用于存储容量受限的设备或对数据库文件大小有严格限制的环境，以及插入密集型的应用程序。比如可用来做中间服务器的静态图片缓存。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/installation/upgrade_11gr2_52_dyn_env.html">动态资源管理</a> (Dynamic Resource Management)】</p>
<p>BDB5.2中，开发者无需再显式指定每种系统资源（如lock，locker等）的上限并在程序开始时一次性分配；BDB5.2将在程序运行过程中动态分配这些资源。资源的分配将根据实际的使用情况动态增长。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/installation/upgrade_11gr2_52_rep_sql.html">扩展的高可用性 </a>(SQL support for HA/replication) 】</p>
<p>BDB5.2为SQL接口也增加高可用性支持。开发者可以在多个节点上通过SQL HA来构建一个数据库集群，从而扩展了计算能力。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/installation/upgrade_11gr2_52_seq_sql.html">扩展的Sequence</a> (SQL support for Sequence)】</p>
<p>BDB5.2的SQL 接口引入了Sequence的支持，允许用户使用SQL语句生成序列， 并提供事务保护。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/installation/upgrade_11gr2_52_grp_mbr.html">灵活的高可用性管理</a> (Group Membership) 】</p>
<p>BDB5.2引入了新的组管理机制，允许用户动态地向组(Replication Group)里添加或者删除结点。系统将自动调整和维护组的大小。</p>
<p>【<a href="http://download.oracle.com/docs/cd/E17076_02/html/api_reference/C/db_tuner.html">新增的db_tuner工具 </a> (db_tuner)】</p>
<p>BDB5.2新增了一个db_tuner工具，可以辅助用户选择合适的page size，提升程序的性能。</p>
<p>除此之外，秉承我们一贯的为用户提供最高性能，最灵活的嵌入式数据库的理念，最新的BDB5.2 还修正了上一个版本中存在的各种问题，并对原有的多项功能进行了增强。更多详情，参见<a href="http://download.oracle.com/otndocs/products/berkeleydb/html/changelog_5_2.html">这里</a>。</p>
<p>您可以通过 BDB<a href="http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html">下载页面</a>下载并体验最新的BDB5.2. 如果您有任何问题，欢迎通过我们的博客或者<a href="http://www.weobo.com/bdbchina">BerkeleyDB的新浪微博</a>留言，也欢迎通过邮件联系我们。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2011/06/berkeley-db-5-2-%e6%ad%a3%e5%bc%8f%e5%8f%91%e5%b8%83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Berkeley DB 5.0对VS2010的支持</title>
		<link>http://www.bdbchina.com/2010/09/berkeley-db-5-0%e5%af%b9vs2010%e7%9a%84%e6%94%af%e6%8c%81/</link>
		<comments>http://www.bdbchina.com/2010/09/berkeley-db-5-0%e5%af%b9vs2010%e7%9a%84%e6%94%af%e6%8c%81/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 03:16:16 +0000</pubDate>
		<dc:creator>linchunsun</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Linchun Sun]]></category>
		<category><![CDATA[vs2010]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1385</guid>
		<description><![CDATA[最近有不少朋友问到BDB的VS2010支持问题，集中回答如下：
BDB5.0 发布时，VS2010还没有发布，因此当前的BDB版本 （11.2.5.0.x）是不支持VS2010的。 用VS2010打开现有的BDB工程文件，可能会产生无法自动转换的问题。这是由于BDB的工程文件中包含了隐藏的IA64的平台支持所致。 解决方法如下：

方案1： 改用ultimate版本的VS2010
VS2010的professional和standard版本都没有IA64平台的支持，只有ultimate版本才有。改用Ultimate版本的VS2010打开工程文件可以避免这个问题。
方案2： 利用脚本重新生成VS2010可以打开的工程文件

编辑&#60;bdb_root&#62;/dist/win_projects/genproject.template 和 projects.template.xml，删除所有的“IA64”的平台支持并保存
 在linux shell或者cygwin shell中运行&#60;bdb_root&#62;/dist/s_windows_dsp（这是一个bash脚本），重新生成工程文件
用VS2010打开新生成的工程文件，并选择upgrade，自动转换完成后就可以正常使用工程文件了

方案3： 手工修改去除工程中隐藏的IA64平台支持

 用文本编辑器打开的bdb工程文件，移除文件中的IA64 平台支持并保存
用VS2010打开新生成的工程文件，并选择upgrade，自动转换完成后就可以正常使用工程文件了

相关的讨论可以参见我们的官方论坛：
http://forums.oracle.com/forums/thread.jspa?messageID=4314936&#38;#4314936
由于方案2和方案3操作起来都相对繁琐，有第三方的用户共享了一个移除了IA64平台的工程文件包：http://dingo.matfyz.cz/BDB_5.0.21_removed_IA64.zip。这个包可以正常使用，但不是Oracle BDB的官方支持，我们不对使用过程中造成的问题负责。
官方的VS2010支持将在后续的BDB版本中提供(给出相应的.sln和.vcxproj)，有需要的朋友可以留心我们的产品消息，也欢迎对我们的产品提供进一步的反馈意见。
]]></description>
			<content:encoded><![CDATA[<p>最近有不少朋友问到BDB的VS2010支持问题，集中回答如下：</p>
<p>BDB5.0 发布时，VS2010还没有发布，因此当前的BDB版本 （11.2.5.0.x）是不支持VS2010的。 用VS2010打开现有的BDB工程文件，可能会产生无法自动转换的问题。这是由于BDB的工程文件中包含了隐藏的IA64的平台支持所致。 解决方法如下：</p>
<p><span id="more-1385"></span></p>
<p>方案1： 改用ultimate版本的VS2010</p>
<p style="padding-left: 30px;">VS2010的professional和standard版本都没有IA64平台的支持，只有ultimate版本才有。改用Ultimate版本的VS2010打开工程文件可以避免这个问题。</p>
<p>方案2： 利用脚本重新生成VS2010可以打开的工程文件</p>
<ol>
<li>编辑&lt;bdb_root&gt;/dist/win_projects/genproject.template 和 projects.template.xml，删除所有的“IA64”的平台支持并保存</li>
<li> 在linux shell或者cygwin shell中运行&lt;bdb_root&gt;/dist/s_windows_dsp（这是一个bash脚本），重新生成工程文件</li>
<li>用VS2010打开新生成的工程文件，并选择upgrade，自动转换完成后就可以正常使用工程文件了</li>
</ol>
<p>方案3： 手工修改去除工程中隐藏的IA64平台支持</p>
<ol>
<li> 用文本编辑器打开的bdb工程文件，移除文件中的IA64 平台支持并保存</li>
<li>用VS2010打开新生成的工程文件，并选择upgrade，自动转换完成后就可以正常使用工程文件了</li>
</ol>
<p>相关的讨论可以参见我们的官方论坛：</p>
<p><a href="http://forums.oracle.com/forums/thread.jspa?messageID=4314936&amp;#4314936">http://forums.oracle.com/forums/thread.jspa?messageID=4314936&amp;#4314936</a></p>
<p>由于方案2和方案3操作起来都相对繁琐，有第三方的用户共享了一个移除了IA64平台的工程文件包：<a href="http://dingo.matfyz.cz/BDB_5.0.21_removed_IA64.zip">http://dingo.matfyz.cz/BDB_5.0.21_removed_IA64.zip</a>。这个包可以正常使用，但不是Oracle BDB的官方支持，我们不对使用过程中造成的问题负责。</p>
<p>官方的VS2010支持将在后续的BDB版本中提供(给出相应的.sln和.vcxproj)，有需要的朋友可以留心我们的产品消息，也欢迎对我们的产品提供进一步的反馈意见。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/09/berkeley-db-5-0%e5%af%b9vs2010%e7%9a%84%e6%94%af%e6%8c%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BerkeleyDB 11gR2的R-Tree功能</title>
		<link>http://www.bdbchina.com/2010/04/bdb11gr2%e7%9a%84r-tree%e5%8a%9f%e8%83%bd/</link>
		<comments>http://www.bdbchina.com/2010/04/bdb11gr2%e7%9a%84r-tree%e5%8a%9f%e8%83%bd/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 05:43:53 +0000</pubDate>
		<dc:creator>linchunsun</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Linchun Sun]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[bdb]]></category>
		<category><![CDATA[rtree]]></category>
		<category><![CDATA[spatial]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=1211</guid>
		<description><![CDATA[1 背景
R-Tree是一种和BTree类似的数据结构，支持高维数据的快速检索，被广泛应用于各种空间数据中。R-Tree的一个典型的应用是从许多空间对象的信息中找出用户关心的那个。如给定一座城市各个建筑物的经纬度坐标并存储于R-Tree中，用户可以通过“查找当前位置向西五公里内的所有餐厅”，“查找会展中心方圆一公里内的所有汽车站”等方式来查询自己感兴趣的某些特定建筑。
2 BDB11gR2的R-Tree功能
新发布的BerkeleyDB 11gR2(以下简称BDB11gR2）版本能够无缝地兼容SQLite的接口，从而支持各种基于SQLite的应用，包括SQLite自带R-Tree扩展应用。关于SQLite的R-Tree细节，可参见http://www.sqlite.org/rtree.html。
下面，本文将从编译和使用两方面，介绍如何在BDB11gR2中使用R-Tree功能。
2.1 编译
BDB11gR2通过编译开关控制是否启用R-Tree功能。默认情况下，BDB11gR2是不启用R-Tree的。要获得R-Tree的支持，则应该在编译时加上SQLITE_ENABLE_RTREE标志。
Linux平台
 cd build_unix
../dist/configure CPPFLAGS=-DSQLITE_ENABLE_RTREE --enable-sql
make dbsql

Windows平台
在工程文件的属性中，选择 Properties -&#62; Configuration Properties -&#62; c/c++ -&#62; Command Line -&#62; Additional Options, 加入/D  DSQLITE_ENABLE_RTREE，并重新编译工程。
2.2 使用R-Tree
一棵R-Tree实际上对应于一张虚拟表。建立R-Tree索引的过程，实际上就是建立虚拟表的过程。和普通表类似的，我们也可以对这张特殊的虚拟表进行插入，删除，更新等操作。
我们以下面这张图为例来说明R-Tree的典型操作和应用。

在图1中，有三个蓝色的矩形，代表三个建筑的边界，标记为1，2，3。它们的坐标信息如图所示。我们要建立一棵R-Tree，来存储这些矩形的坐标信息，并在此基础上进行一些简单的查询。
建立R-Tree索引
CREATE VIRTUAL TABLE demo_index USING rtree(
id,
minX, maxX,
minY, maxY
);
以上操作建立了一张R-Tree索引表。该索引表中每一条记录代表了一个矩形框。每条记录由5列组成，其中id是一个整数类型的主键，minX，maxX分别代表矩形框横坐标的最小值和最大值，minY，maxY分别代表矩形框纵坐标的最小值和最大值。注意，BDB11gR2中的R-Tree表的列数必须是3-11之间的基数，其中第一列是表的主键，2k和2k+1列分别代表第k维数据的下界和上界(k=1~5).
插入数据
向R-Tree的表中插入数据，和向普通表中插入数据的语法是完全一致的。
以下三条语句插入了图1中的三个矩形：
INSERT INTO demo_index VALUES(
1,
0, 2,
0, 1
);
INSERT INTO demo_index VALUES(
2,
3, 5,
3, 5
);
INSERT INTO demo_index VALUES(
3,
4, 5,
1, 4
);
基于R-Tree的查询
和普通表类似的，用户卡可以对R-Tree表进行查询。如
SELECT id FROM demo_index
WHERE id=1;
但R-Tree表上更为常用和典型的查询则是范围查询(Range-Query). 举例如下：
SELECT id FROM [...]]]></description>
			<content:encoded><![CDATA[<h2>1 背景</h2>
<p>R-Tree是一种和BTree类似的数据结构，支持高维数据的快速检索，被广泛应用于各种空间数据中。R-Tree的一个典型的应用是从许多空间对象的信息中找出用户关心的那个。<!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML /> <o:AllowPNG /> </o:OfficeDocumentSettings> </xml><![endif]--><span style="font-family: 宋体;" lang="ZH-CN">如给定一座城市各个建筑物的经纬度坐标并存储于R-Tree中，用户可以通过“查找当前位置向西五公里内的所有餐厅”，“查找会展中心方圆一公里内的所有汽车站”等方式来查询自己感兴趣的某些特定建筑。</span></p>
<h2><span style="font-family: 宋体;" lang="ZH-CN"><span id="more-1211"></span></span>2 BDB11gR2的R-Tree功能</h2>
<p>新发布的BerkeleyDB 11gR2(以下简称BDB11gR2）版本能够无缝地兼容SQLite的接口，从而支持各种基于SQLite的应用，包括SQLite自带R-Tree扩展应用。关于SQLite的R-Tree细节，可参见<a onclick="javascript:pageTracker._trackPageview('/outgoing/www.sqlite.org/rtree.html');" href="http://www.sqlite.org/rtree.html">http://www.sqlite.org/rtree.html</a>。<br />
下面，本文将从编译和使用两方面，介绍如何在BDB11gR2中使用R-Tree功能。</p>
<h3>2.1 编译</h3>
<p>BDB11gR2通过编译开关控制是否启用R-Tree功能。默认情况下，BDB11gR2是不启用R-Tree的。要获得R-Tree的支持，则应该在编译时加上SQLITE_ENABLE_RTREE标志。</p>
<p><strong>Linux平台</strong></p>
<blockquote><p><code> cd build_unix<br />
../dist/configure CPPFLAGS=-DSQLITE_ENABLE_RTREE --enable-sql<br />
make dbsql<br />
</code></p></blockquote>
<p><strong>Windows平台</strong></p>
<blockquote><p>在工程文件的属性中，选择 Properties -&gt; Configuration Properties -&gt; c/c++ -&gt; Command Line -&gt; Additional Options, 加入/D  DSQLITE_ENABLE_RTREE，并重新编译工程。</p></blockquote>
<h3>2.2 使用R-Tree</h3>
<p>一棵R-Tree实际上对应于一张虚拟表。建立R-Tree索引的过程，实际上就是建立虚拟表的过程。和普通表类似的，我们也可以对这张特殊的虚拟表进行插入，删除，更新等操作。</p>
<p>我们以下面这张图为例来说明R-Tree的典型操作和应用。</p>
<p style="text-align: center;"><a href="http://www.bdbchina.com/wp-content/uploads/2010/04/rtree.jpg"><img class="size-medium wp-image-1213 aligncenter" title="rtree" src="http://www.bdbchina.com/wp-content/uploads/2010/04/rtree-300x278.jpg" alt="&quot;rtree-pic&quot;" width="300" height="278" /></a></p>
<p>在图1中，有三个蓝色的矩形，代表三个建筑的边界，标记为1，2，3。它们的坐标信息如图所示。我们要建立一棵R-Tree，来存储这些矩形的坐标信息，并在此基础上进行一些简单的查询。</p>
<p><strong>建立R-Tree索引</strong></p>
<blockquote><p>CREATE VIRTUAL TABLE demo_index USING rtree(<br />
id,<br />
minX, maxX,<br />
minY, maxY<br />
);</p></blockquote>
<p>以上操作建立了一张R-Tree索引表。该索引表中每一条记录代表了一个矩形框。每条记录由5列组成，其中id是一个整数类型的主键，minX，maxX分别代表矩形框横坐标的最小值和最大值，minY，maxY分别代表矩形框纵坐标的最小值和最大值。注意，BDB11gR2中的R-Tree表的列数必须是3-11之间的基数，其中第一列是表的主键，2k和2k+1列分别代表第k维数据的下界和上界(k=1~5).</p>
<p><strong>插入数据</strong></p>
<p>向R-Tree的表中插入数据，和向普通表中插入数据的语法是完全一致的。<br />
以下三条语句插入了图1中的三个矩形：</p>
<blockquote><p>INSERT INTO demo_index VALUES(<br />
1,<br />
0, 2,<br />
0, 1<br />
);<br />
INSERT INTO demo_index VALUES(<br />
2,<br />
3, 5,<br />
3, 5<br />
);<br />
INSERT INTO demo_index VALUES(<br />
3,<br />
4, 5,<br />
1, 4<br />
);</p></blockquote>
<p><strong>基于R-Tree的查询</strong></p>
<p>和普通表类似的，用户卡可以对R-Tree表进行查询。如</p>
<blockquote><p>SELECT id FROM demo_index<br />
WHERE id=1;</p></blockquote>
<p>但R-Tree表上更为常用和典型的查询则是范围查询(Range-Query). 举例如下：</p>
<blockquote><p>SELECT id FROM demo_index<br />
WHERE minX&gt;=0 AND maxX&lt;=3<br />
AND minY&gt;=0 AND maxY&lt;=2;</p>
<p>查询的结果为<br />
1</p></blockquote>
<p>上面这条查询的含义是找出图1中所有被包含在红色虚线矩形框中的矩形。</p>
<blockquote><p>SELECT id FROM demo_index<br />
WHERE maxX&gt;=1 AND minX&lt;=4<br />
AND maxY&gt;=0 AND minY&lt;=4;<br />
查询结果为<br />
1<br />
2</p></blockquote>
<p>上面这条查询的含义是找出图1中所有和黑色虚线矩形框有交集的矩形。</p>
<h2>总结</h2>
<p>R-Tree在高维数据的检索中有着广泛的应用。各种地理信息，带时间记录的归档信息等，都可以通过建立基于R-Tree的索引，来达到快速检索的目的。欢迎通过使用Berkeley DB11gR2的RTree功能来构建自己的R-Tree索引，若有任何相关问题，请联系  Linchun dot sun at Oracle dot com。</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML /> <o:AllowPNG /> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> <w:UseFELayout /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:宋体; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-alt:SimSun; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 135135232 16 0 262145 0;} @font-face 	{font-family:宋体; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-alt:SimSun; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 135135232 16 0 262145 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"\@宋体"; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 135135232 16 0 262145 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:宋体; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} pre 	{mso-style-priority:99; 	mso-style-link:"HTML Preformatted Char"; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Courier New"; 	mso-fareast-font-family:"Times New Roman";} span.HTMLPreformattedChar 	{mso-style-name:"HTML Preformatted Char"; 	mso-style-priority:99; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:"HTML Preformatted"; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	font-family:"Courier New"; 	mso-ascii-font-family:"Courier New"; 	mso-fareast-font-family:"Times New Roman"; 	mso-hansi-font-family:"Courier New"; 	mso-bidi-font-family:"Courier New";} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:宋体; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} --> <!--[endif]--></p>
<p class="MsoNormal"><span style="font-family: 宋体;" lang="ZH-CN">建立</span>R-Tree<span style="font-family: 宋体;" lang="ZH-CN">索引</span></p>
<pre>CREATE VIRTUAL TABLE demo_index USING rtree(</pre>
<pre><span>   </span>id,<span>              </span><span> </span></pre>
<pre><span>   </span>minX, maxX,<span>      </span><span> </span></pre>
<pre><span>   </span>minY, maxY<span>       </span><span> </span></pre>
<pre>);</pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">以上操作建立了一张</span><span>R-Tree</span><span style="font-family: 宋体;" lang="ZH-CN">索引表。该索引表一共由</span><span>5</span><span style="font-family: 宋体;" lang="ZH-CN">列组成，每一条记录代表了一个矩形框。其中</span><span>id</span><span style="font-family: 宋体;" lang="ZH-CN">是一个整数类型的主键，</span><span>minX</span><span style="font-family: 宋体;" lang="ZH-CN">，</span><span>maxX</span><span style="font-family: 宋体;" lang="ZH-CN">分别代表矩形框横坐标的最小值和最大值，</span><span>minY</span><span style="font-family: 宋体;" lang="ZH-CN">，</span><span>maxY</span><span style="font-family: 宋体;" lang="ZH-CN">分别代表矩形框纵坐标的最小值和最大值。注意，</span><span>r-tree</span><span style="font-family: 宋体;" lang="ZH-CN">的列数</span><span>n</span><span style="font-family: 宋体;" lang="ZH-CN">必须为</span><span>2m+1</span><span style="font-family: 宋体;" lang="ZH-CN">，其中</span><span>m</span><span style="font-family: 宋体;" lang="ZH-CN">为表示对象的维数。</span></pre>
<pre><span> </span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">插入数据</span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">在</span><span>R-Tree</span><span style="font-family: 宋体;" lang="ZH-CN">的表中插入数据，和往普通表中插入数据的语法是完全一致的。</span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">以下三条语句插入了图</span><span>1</span><span style="font-family: 宋体;" lang="ZH-CN">中的三个矩形：</span></pre>
<pre>INSERT INTO demo_index VALUES(</pre>
<pre style="text-indent: 24pt;">1,<span>                   </span></pre>
<pre style="text-indent: 24pt;"><span>0</span>, <span>2</span>,<span>  </span></pre>
<pre style="text-indent: 24pt;"><span>0</span>,<span> 1</span><span>     </span></pre>
<pre>);</pre>
<pre>INSERT INTO demo_index VALUES(</pre>
<pre><span>    </span>2,</pre>
<pre><span>    </span><span>3</span>, <span>5</span>,</pre>
<pre><span>    </span><span>3</span>, <span>5</span></pre>
<pre>);</pre>
<pre>INSERT INTO demo_index VALUES(</pre>
<pre><span>    </span><span>3</span>,</pre>
<pre><span>    </span><span>4</span>, <span>5</span>,</pre>
<pre><span>    </span><span>1</span>, <span>4</span></pre>
<pre>);</pre>
<pre><span> </span></pre>
<pre><span> </span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">基于</span><span>R-Tree</span><span style="font-family: 宋体;" lang="ZH-CN">的查询</span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">和普通表类似的，用户卡可以对</span><span>R-Tree</span><span style="font-family: 宋体;" lang="ZH-CN">表进行查询。如</span></pre>
<pre>SELECT id FROM demo_index</pre>
<pre><span> </span>WHERE <span>id=1;</span></pre>
<pre><span> </span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">但</span><span>R-Tree</span><span style="font-family: 宋体;" lang="ZH-CN">表上更为常用和典型的查询则是范围查询</span><span>(Range-Query). </span></pre>
<pre><span> </span></pre>
<pre>SELECT id FROM demo_index<span>     </span></pre>
<pre><span> </span>WHERE minX&gt;=<span>0</span> AND maxX&lt;=<span>3</span></pre>
<pre><span>   </span>AND minY&gt;=<span>0</span> AND maxY&lt;=<span>2</span>;</pre>
<pre><span> </span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">查询的结果为</span></pre>
<pre><span>1</span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">这条查询的含义是找出图</span><span>1</span><span style="font-family: 宋体;" lang="ZH-CN">中所有被包含在红色虚线矩形框中的矩形。</span></pre>
<pre>SELECT id FROM demo_index<span>     </span></pre>
<pre><span> </span>WHERE maxX&gt;=<span>1</span> AND minX&lt;=<span>5</span></pre>
<pre><span>   </span>AND maxY&gt;=<span>0</span> AND minY&lt;=<span>4</span>;</pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">查询结果为</span></pre>
<pre><span>1</span></pre>
<pre><span>2</span></pre>
<pre><span>3</span></pre>
<pre><span style="font-family: 宋体;" lang="ZH-CN">这条查询的含义是找出图</span><span>2</span><span style="font-family: 宋体;" lang="ZH-CN">中所有和黑色虚线矩形框有交集的矩形。</span></pre>
</div>
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/04/bdb11gr2%e7%9a%84r-tree%e5%8a%9f%e8%83%bd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>甲骨文中国(包括Berkeley DB)2010校招日程</title>
		<link>http://www.bdbchina.com/2009/10/%e7%94%b2%e9%aa%a8%e6%96%87%e4%b8%ad%e5%9b%bd%e5%8c%85%e6%8b%acberkeley-dbfy2010%e6%a0%a1%e6%8b%9b%e6%97%a5%e7%a8%8b/</link>
		<comments>http://www.bdbchina.com/2009/10/%e7%94%b2%e9%aa%a8%e6%96%87%e4%b8%ad%e5%9b%bd%e5%8c%85%e6%8b%acberkeley-dbfy2010%e6%a0%a1%e6%8b%9b%e6%97%a5%e7%a8%8b/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 06:37:50 +0000</pubDate>
		<dc:creator>chaohuang</dc:creator>
				<category><![CDATA[Berkeley DB]]></category>
		<category><![CDATA[Berkeley DB JE]]></category>
		<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Chao Huang]]></category>
		<category><![CDATA[Haomian Wang]]></category>
		<category><![CDATA[Linchun Sun]]></category>
		<category><![CDATA[campus]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=692</guid>
		<description><![CDATA[2010财年甲骨文(中国)校园招聘大致流程：
校园宣讲 -&#62; 在线申请 -&#62; 在线测试（涵盖：技术、性格、英文等）-&#62; 初步筛选 -&#62; 邀请合格同学on-site 笔试和面试 -&#62; 进一步筛选 -&#62; 发offer
校园宣讲会初步日程（注意：日期及时间请以51job和校园广告为准）：

Oct. 19th Shanghai Tongji Univ. (19:00-21:00)
Oct. 20th Shenzhen HIT Graduate School (19:00-21:00)
Oct. 21th Guangzhou Southern China Univ. of Tech. (15:00-17:00)
Oct. 26th Beijing Tsinghua Univ. (19:00-21:00)
Oct. 27th Wuhan Huazhong Univ. of Science and Tech. (19:00-21:00)
Oct. 30th Hangzhou Zhejing Univ. (19:00-21:00)
Nov. 2nd Suzhou Suzhou Univ. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>2010财年甲骨文(中国)校园招聘大致流程：</strong><br />
校园宣讲 -&gt; 在线申请 -&gt; 在线测试（涵盖：技术、性格、英文等）-&gt; 初步筛选 -&gt; 邀请合格同学on-site 笔试和面试 -&gt; 进一步筛选 -&gt; 发offer</p>
<p><strong>校园宣讲会初步日程（注意：日期及时间请以51job和校园广告为准）：</strong></p>
<ul>
<li>Oct. 19th Shanghai Tongji Univ. (19:00-21:00)</li>
<li>Oct. 20th Shenzhen HIT Graduate School (19:00-21:00)</li>
<li>Oct. 21th Guangzhou Southern China Univ. of Tech. (15:00-17:00)</li>
<li>Oct. 26th Beijing Tsinghua Univ. (19:00-21:00)</li>
<li>Oct. 27th Wuhan Huazhong Univ. of Science and Tech. (19:00-21:00)</li>
<li>Oct. 30th Hangzhou Zhejing Univ. (19:00-21:00)</li>
<li>Nov. 2nd Suzhou Suzhou Univ. (14:00-16:00)</li>
<li>Nov. 4th Nanjing Southest Univ.(19:00-21:00)</li>
<li>Nov. 5th Dalian Dalian Univ. of Tech. (19:00-21:00)</li>
</ul>
<p><strong><span style="color: red">更新！！原计划于Nov.  6th的在线测试，因后台录入部分同学的纸质简历而推迟。新的时间安排：HR给的反馈是定在本周（Nov. 9th这周末或者周末以前），请大家留意Email通知并谅解。</span></strong></p>
<p><strong><span style="color: red">注: BDB的招聘行程（此项会持续更新，期待届时与你见面交流）</span></strong>：</p>
<ul>
<li>Chao Huang &#8211; 校园宣讲，Oct. 19th Shanghai Tongji Univ. (19:00-21:00)</li>
<li>Eric Wang &#8211; 校园宣讲，Oct. 20th Shenzhen HIT Graduate School (19:00-21:00)</li>
</ul>
<p>今年Oracle会组织在多个城市进行面试，BDB初步决定参加下面4个。各位面试同学的时间地点请以电话通知为准。</p>
<ul>
<li>Eric Wang &#8211; 面试官，Nov. 17-18，深圳</li>
<li>Linchun Sun &#8211; 面试官，Nov. 19-20，广州</li>
<li>Chao Huang &#8211; 面试官，Nov. 25-27，北京</li>
<li>Chao Huang &#8211; 面试官，Nov. 24-25，上海</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/10/%e7%94%b2%e9%aa%a8%e6%96%87%e4%b8%ad%e5%9b%bd%e5%8c%85%e6%8b%acberkeley-dbfy2010%e6%a0%a1%e6%8b%9b%e6%97%a5%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BDBChina入职初体验</title>
		<link>http://www.bdbchina.com/2009/08/bdbchina%e5%85%a5%e8%81%8c%e5%88%9d%e4%bd%93%e9%aa%8c/</link>
		<comments>http://www.bdbchina.com/2009/08/bdbchina%e5%85%a5%e8%81%8c%e5%88%9d%e4%bd%93%e9%aa%8c/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 10:49:25 +0000</pubDate>
		<dc:creator>linchunsun</dc:creator>
				<category><![CDATA[Linchun Sun]]></category>
		<category><![CDATA[生活圆桌]]></category>
		<category><![CDATA[bdb]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=493</guid>
		<description><![CDATA[写在前面
充实的日子总是过得飞快。一转眼，加入BDB China这个大家庭已经有半个多月了。经历了初入职时的茫然不知所措，我开始逐渐适应各种邮件列表上铺天盖地的英文邮件，一点点努力学习公司从着装到代码到回信等方面的种种规范，也试着在Oracle庞大复杂无所不包的办公自动系统进行各种自助服务。知名IT大外企的小白领（也或者是小民工:P）生活刚刚开始。
团队/大家庭
在入职之前就听说BDB是个大家庭，入职之后发现此言非虚。其实BDB team的总人数并不算多，全球一共也就三十多人，之所以说它大，主要有三个原因：一是员工分布在世界各地，北美西欧中国澳洲都有；二是组里的大牛多，有业界知名的架构师和资深程序员，有来自MIT、Standford，甚至还有哈佛的教授；再有就是组里的分工多，三大产品线都有各自的程序员，还有QA，PM，Sales，Course Development，Performance工程师等等。和一群来自世界各地不同文化背景不同工作经历却又一样热情有趣的人打交道，实在是一件令人兴奋的事情。
工作环境
也许有很多人会关心BDB这边的工作环境。总的来说，这边的硬件条件还算不错，办公地点在南山区科技园的飞亚达大厦，交通便利(楼下地铁站即将开通)，办公室地方宽敞，坐在窗前还能远眺大海。没有免费的餐饭和软饮料算是个小缺憾，但楼下的食堂我个人觉得还挺好吃的。软环境方面，组里的氛围很好，大家相处都很融洽，网络资源、图书资源什么的也都还是比较让人满意的。总而言之，这是一个可以让你安心工作而不需要分心折腾太多杂事的好地方。
培训
作为一个新入职的员工，BDB China给我感受最深的是这里的培训机制。入职的第一天，老板就告诉我前两个月基本都会在培训中度过，包括公司组织的和组里安排的。公司的培训主要是关于流程方面的，涵盖了保密规定、礼仪规范、各种手续的办理，以及保险投资等等，另外还有一个为期8天的on-site课程来学习各种职业化和团队合作的内容。组里的培训因岗位和个人背景知识的不同而有所差别。既有如何写一封规范而高效的邮件这样的基础培训，也需要学习BDB开发团队专门准备的培训手册等专业基础知识，而对于我这样的linux生手，就还需要恶补linux系统及linux下各种开发编辑工具的相关知识。要学的东西很多，但好在并不觉得没底：BDB team为新人准备了充足的学习资源，也留出了充分的学习时间；更重要的是，每一个人都可以成为你的老师，都乐意帮助你前进。希望在大家的光芒照耀下，我可以尽快完成从毛毛虫到小蝴蝶的蜕变^_^
英文
另一个重要的体会则是，英文在这里真的太重要了。日常所有的资料和邮件都是英文的自不必说，由于BDB是一个全球开发团队，每周若干次的Global meeting，组里的各种报告，小项目团队的1-1沟通，平时的电话会议也都用英文进行。除此之外，组里还不时有来自世界各地的教授或业界人士前来访问，大家进行学术讨论的时候也都使用英文。这不，上个月港科大的罗教授以及我们美国的JE architect才刚刚来过，下个月BDB team的Director携同我们澳洲的architect又要杀过来了。虽然在一开始的适应过程很艰难，但在这样的环境这样的压力下，英文水平的进步应该也会比较快吧。
工作内容
在BDB，每个人每周都要以群发周报的形式来汇报自己的工作情况，以及手头上每个SR（Service Request，在BDB team中指每一个任务）的进展。虽然我还处于培训阶段，了解不多，但通过大家的周报已经可以窥知一部分BDB China的工作内容，涵盖了三大产品的开发、测试、辅助应用程序开发、对销售及客户支持等等方面。而我也有了属于自己的第一个SR：通过动手写一个复杂一点的sample program来深入学习BDB。总的感觉是，在BDB team中，每个人都会根据自己的兴趣、特长以及项目的需要，在全面了解BDB的基础上成为某一个特定领域的专家，并担负起相应的责任。因此，在这里，无论原来的背景如何，无论将来想要做开发还是想要做管理，只要努力付出，都一定会找到属于自己的一席之地的。
以上仅仅是入职两周的初体验，我想，在日后的工作生活中，应该还不断会有新的惊喜吧。
]]></description>
			<content:encoded><![CDATA[<p><strong>写在前面</strong></p>
<p>充实的日子总是过得飞快。一转眼，加入BDB China这个大家庭已经有半个多月了。经历了初入职时的茫然不知所措，我开始逐渐适应各种邮件列表上铺天盖地的英文邮件，一点点努力学习公司从着装到代码到回信等方面的种种规范，也试着在Oracle庞大复杂无所不包的办公自动系统进行各种自助服务。知名IT大外企的小白领（也或者是小民工:P）生活刚刚开始。</p>
<p><strong>团队/大家庭</strong><br />
在入职之前就听说BDB是个大家庭，入职之后发现此言非虚。其实BDB team的总人数并不算多，全球一共也就三十多人，之所以说它大，主要有三个原因：一是员工分布在世界各地，北美西欧中国澳洲都有；二是组里的大牛多，有业界知名的架构师和资深程序员，有来自MIT、Standford，甚至还有哈佛的教授；再有就是组里的分工多，三大产品线都有各自的程序员，还有QA，PM，Sales，Course Development，Performance工程师等等。和一群来自世界各地不同文化背景不同工作经历却又一样热情有趣的人打交道，实在是一件令人兴奋的事情。<span id="more-493"></span></p>
<p><strong>工作环境</strong><br />
也许有很多人会关心BDB这边的工作环境。总的来说，这边的硬件条件还算不错，办公地点在南山区科技园的飞亚达大厦，交通便利(楼下地铁站即将开通)，办公室地方宽敞，坐在窗前还能远眺大海。没有免费的餐饭和软饮料算是个小缺憾，但楼下的食堂我个人觉得还挺好吃的。软环境方面，组里的氛围很好，大家相处都很融洽，网络资源、图书资源什么的也都还是比较让人满意的。总而言之，这是一个可以让你安心工作而不需要分心折腾太多杂事的好地方。</p>
<p><strong>培训</strong><br />
作为一个新入职的员工，BDB China给我感受最深的是这里的培训机制。入职的第一天，老板就告诉我前两个月基本都会在培训中度过，包括公司组织的和组里安排的。公司的培训主要是关于流程方面的，涵盖了保密规定、礼仪规范、各种手续的办理，以及保险投资等等，另外还有一个为期8天的on-site课程来学习各种职业化和团队合作的内容。组里的培训因岗位和个人背景知识的不同而有所差别。既有如何写一封规范而高效的邮件这样的基础培训，也需要学习BDB开发团队专门准备的培训手册等专业基础知识，而对于我这样的linux生手，就还需要恶补linux系统及linux下各种开发编辑工具的相关知识。要学的东西很多，但好在并不觉得没底：BDB team为新人准备了充足的学习资源，也留出了充分的学习时间；更重要的是，每一个人都可以成为你的老师，都乐意帮助你前进。希望在大家的光芒照耀下，我可以尽快完成从毛毛虫到小蝴蝶的蜕变^_^</p>
<p><strong>英文</strong><br />
另一个重要的体会则是，英文在这里真的太重要了。日常所有的资料和邮件都是英文的自不必说，由于BDB是一个全球开发团队，每周若干次的Global meeting，组里的各种报告，小项目团队的1-1沟通，平时的电话会议也都用英文进行。除此之外，组里还不时有来自世界各地的教授或业界人士前来访问，大家进行学术讨论的时候也都使用英文。这不，上个月港科大的罗教授以及我们美国的JE architect才刚刚来过，下个月BDB team的Director携同我们澳洲的architect又要杀过来了。虽然在一开始的适应过程很艰难，但在这样的环境这样的压力下，英文水平的进步应该也会比较快吧。</p>
<p><strong>工作内容</strong><br />
在BDB，每个人每周都要以群发周报的形式来汇报自己的工作情况，以及手头上每个SR（Service Request，在BDB team中指每一个任务）的进展。虽然我还处于培训阶段，了解不多，但通过大家的周报已经可以窥知一部分BDB China的工作内容，涵盖了三大产品的开发、测试、辅助应用程序开发、对销售及客户支持等等方面。而我也有了属于自己的第一个SR：通过动手写一个复杂一点的sample program来深入学习BDB。总的感觉是，在BDB team中，每个人都会根据自己的兴趣、特长以及项目的需要，在全面了解BDB的基础上成为某一个特定领域的专家，并担负起相应的责任。因此，在这里，无论原来的背景如何，无论将来想要做开发还是想要做管理，只要努力付出，都一定会找到属于自己的一席之地的。</p>
<p>以上仅仅是入职两周的初体验，我想，在日后的工作生活中，应该还不断会有新的惊喜吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/08/bdbchina%e5%85%a5%e8%81%8c%e5%88%9d%e4%bd%93%e9%aa%8c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
Դ
