<?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>自由的心灵</title>
	<atom:link href="http://liangdi.icentos.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://liangdi.icentos.net</link>
	<description>远离尘世的纷争,给自己的心灵一片净土</description>
	<lastBuildDate>Fri, 27 Aug 2010 07:50:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Mongodb主从复制和Mongodb主主复制配置</title>
		<link>http://liangdi.icentos.net/2010/08/27/mongodb_master_salve_master_master/</link>
		<comments>http://liangdi.icentos.net/2010/08/27/mongodb_master_salve_master_master/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:49:40 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Web2/3.0 云计算/私有云]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[主从复制]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=267</guid>
		<description><![CDATA[Mongodb在1.6版中增加了Sharding和Replic Sets的支持,很大程度上解决了一些水平扩展和故障转移的问题. 但是在一些小型应用场景主从复制还是能够有效解决问题的,主主复制有用的场景,但是是不被推荐。 Mongodb 主从复制 配置: 单机测试: 建立三个服务器的储存目录 cd /var/mongodb mkdir -p masterdb mkdir -p salvedb_1 mkdir -p slavedb_2 启动主服务器和从服务器 #主服务器 监听10000端口 ./bin/mongod --dbpath ./masterdb/ --port 10000 --master #从服务器 这里启动两个从服务器 分别用10001 和 10002 端口 也可以使用 master master-&#62; slave 的设置 ./bin/mongod --dbpath ./slavedb_1 --source localhost:10000 --slave --port 10001 ./bin/mongod --dbpath ./slavedb_2 --source localhost:10000 --slave --port 10002 [...]]]></description>
			<content:encoded><![CDATA[<p>Mongodb在1.6版中增加了Sharding和Replic Sets的支持,很大程度上解决了一些水平扩展和故障转移的问题.<br />
但是在一些小型应用场景主从复制还是能够有效解决问题的,主主复制有用的场景,但是是不被推荐。</p>
<p>Mongodb 主从复制 配置:<br />
单机测试:<br />
建立三个服务器的储存目录</p>
<pre class="brush: bash;">
cd /var/mongodb
mkdir -p masterdb
mkdir -p salvedb_1
mkdir -p slavedb_2
</pre>
<p>启动主服务器和从服务器</p>
<pre class="brush: bash;">
#主服务器 监听10000端口
./bin/mongod --dbpath ./masterdb/ --port 10000 --master

#从服务器 这里启动两个从服务器  分别用10001 和 10002 端口  也可以使用 master master-&gt; slave 的设置
./bin/mongod --dbpath ./slavedb_1 --source localhost:10000 --slave --port 10001
./bin/mongod --dbpath ./slavedb_2 --source localhost:10000 --slave --port 10002
#启动后  就会看到有日志 显示 从主服务器复制内容了
</pre>
<p><span id="more-267"></span><br />
测试:</p>
<pre class="brush: bash;">
#查询从服务器1
./bin/mongo --port 10001
show dbs
#里面只有系统数据库,同时如果做插入数据的操作 会提示 not master
use testdb
db.blog.save({title:&quot;new article&quot;})
</pre>
<p>主服务器插入数据后,从服务器查询<br />
主服务器:</p>
<pre class="brush: bash;">
./bin/mongo --port 10000
MongoDB shell version: 1.6.0
connecting to: 127.0.0.1:10000/test
&gt; use testdb
switched to db testdb
&gt; db.blog.save({title:&quot;new article&quot;})
</pre>
<p>从服务器上测试:</p>
<pre class="brush: bash;">
./bin/mongo --port 10001
MongoDB shell version: 1.6.0
connecting to: 127.0.0.1:10001/test
&gt; show dbs
admin
local
testdb
&gt; use testdb
switched to db testdb
&gt; db.blog.find()
{ &quot;_id&quot; : ObjectId(&quot;4c776ccce7af0727ce4b6234&quot;), &quot;title&quot; : &quot;new article&quot; }
&gt;
</pre>
<p>ok 这样就完成最简单的主从配置了</p>
<p>主主复制配置:<br />
主主配置这里就不测试了,配置也比较简单  都加上 &#8211;master &#8211;slave &#8211;source 参数,当然也可以在控制台里面去执行命令更改参数.<br />
参开资料 官方文档:http://www.mongodb.org/display/DOCS/Home</p>
<p>文章作者：liangdi 最后修改：2010.08.27 转载请注明来自:[<a title="自由的心灵" href="http://liangdi.icentos.net/" target="_blank">自由的心灵</a>]</p>
<p>原文链接：<a title="KVM虚拟化在CentOS中的使用" href="http://liangdi.icentos.net/2010/08/27/mongodb_master_salve_master_master/" target="_blank">http://liangdi.icentos.net/2010/08/27/mongodb_master_salve_master_master/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/08/27/mongodb_master_salve_master_master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KVM虚拟化在CentOS中的使用</title>
		<link>http://liangdi.icentos.net/2010/08/20/kvm_use_under_centos/</link>
		<comments>http://liangdi.icentos.net/2010/08/20/kvm_use_under_centos/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 01:49:52 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Web2/3.0 云计算/私有云]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[qemu]]></category>
		<category><![CDATA[虚拟机]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=252</guid>
		<description><![CDATA[KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is underway to [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>KVM (for Kernel-based Virtual Machine) is a full virtualization  solution for Linux on x86 hardware containing virtualization extensions  (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko,  that provides the core virtualization infrastructure and a processor  specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a  modified QEMU although work is underway to get the required changes  upstream.</p>
<p>Using KVM, one can run multiple virtual machines running  unmodified Linux or Windows images. Each virtual machine has private  virtualized hardware: a network card, disk, graphics adapter, etc.</p>
<p>The kernel component of KVM is included in mainline Linux, as of 2.6.20.</p></blockquote>
<p>    KVM是红帽大版本6中默认的虚拟化技术,从上述描述中可以看出,KVM有很多优势,作为CentOS的使用者自然也有好处～，而现在的CentOS5.5的内核是2.6.18-194.11.1.el5所以需要安装kvm的内核模块<br />
    使用kvm，你的cpu必须支持 vm 技术，否则和 qemu 的效率基本相同<br />
    可以用以下代码查看CPU是否支持可以用以下命令检测</p>
<pre class="brush: bash;">
        egrep '(vmx|svm)' /proc/cpuinfo
    </pre>
<p>    如果有输出则支持。<br />
    在CentOS中安装</p>
<pre class="brush: bash;">
        yum install -y kvm kvm-mod qemu
    </pre>
<p><span id="more-252"></span><br />
安装好之后,我打算测试一下Win系统和CentOS系统的安装,所以我先建立两个虚拟机,并准备好了CentOS_5.4_Final.iso和WIN_2003_SP2.iso两个系统镜像</p>
<pre class="brush: bash;">
mkdir -p /var/kvm
mkdir -p /var/kvm/Win2003
mkdir -p /var/kvm/CentOS5.4
#建立两个虚拟磁盘
cd /var/kvm/Win2003
qemu-ime create -f qcow2 win2003.img 10G
cd /var/kvm/CentOS5.4
qemu-ime create -f qcow2 centos5.4.img 10G
#建立好之后就可以为虚拟机安装系统了
qemu-kvm -hda centos5.4.img -cdrom /var/downloads/CentOS_5.4_Final.iso -boot d -m 512
#执行之后就出现了系统安装的界面,至于如果使用qemu-kvm的命令 看文档或者qemu-kvm --help ,这是学习linux所必备的能力
</pre>
<p>PS:如果你的机器是32位的,目前的版本不能再安装libvirt,32位版本的和kvm有冲突,64位版本的可以安装.<br />
这里的我并没有写一些高级的配置,包括桥接等,这些内容将在后续的文章中说明,后续将会使用多台虚拟机搭建MongoDB的集群和分区等各种实验.</p>
<p>以下就是几张截图<br />
<div id="attachment_257" class="wp-caption alignnone" style="width: 310px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/08/centos.jpg"><img src="http://liangdi.icentos.net/wp-content/uploads/2010/08/centos-300x232.jpg" alt="centos安装" title="centos安装" width="300" height="232" class="size-medium wp-image-257" /></a><p class="wp-caption-text">centos安装</p></div></p>
<div id="attachment_258" class="wp-caption alignnone" style="width: 310px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/08/win2k3.jpg"><img src="http://liangdi.icentos.net/wp-content/uploads/2010/08/win2k3-300x217.jpg" alt="win2k3" title="win2k3" width="300" height="217" class="size-medium wp-image-258" /></a><p class="wp-caption-text">win2k3安装完成</p></div>
<div id="attachment_259" class="wp-caption alignnone" style="width: 310px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/08/two.jpg"><img src="http://liangdi.icentos.net/wp-content/uploads/2010/08/two-300x204.jpg" alt="两个系统同时运行" title="两个系统同时运行" width="300" height="204" class="size-medium wp-image-259" /></a><p class="wp-caption-text">两个系统同时运行</p></div>
<p>文章作者：liangdi 最后修改：2010.08.20 转载请注明来自:[<a title="自由的心灵" href="http://liangdi.icentos.net/" target="_blank">自由的心灵</a>]</p>
<p>原文链接：<a title="KVM虚拟化在CentOS中的使用" href="http://liangdi.icentos.net/2010/08/20/kvm_use_under_centos/" target="_blank">http://liangdi.icentos.net/2010/08/20/kvm_use_under_centos/</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/08/20/kvm_use_under_centos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBSD4.7发布</title>
		<link>http://liangdi.icentos.net/2010/05/19/openbsd4-7_release/</link>
		<comments>http://liangdi.icentos.net/2010/05/19/openbsd4-7_release/#comments</comments>
		<pubDate>Wed, 19 May 2010 13:36:39 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[我关注的互联网资讯]]></category>
		<category><![CDATA[生活感想]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[安全]]></category>
		<category><![CDATA[防火清]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=245</guid>
		<description><![CDATA[OpenBSD 致力于开发一个自由，基于 4.4BSD 的多平台，与 UNIX 兼容的操作系统。我们重点致力于可移植性，标准化，正确性，前瞻的安全性和完整的加密技术。OpenBSD 支持 SVR4(Solaris)，FreeBSD，Linux，BSD/OS，SunOS 和 HP-UX 下大多数程序的二进制仿真运行。 发行注记页面:http://www.jp.openbsd.org/zh/47.html 下载列表:http://www.openbsd.org/zh/ftp.html OpenBSD是一个很优秀的操作系统,通常作为路由器,VPN,防火墙等等.而我本人是用作个人数据服务器.]]></description>
			<content:encoded><![CDATA[<blockquote><p>OpenBSD 致力于开发一个自由，基于 4.4BSD 的多平台，与 UNIX 兼容的操作系统。我们重点致力于可移植性，标准化，正确性，前瞻的安全性和完整的加密技术。OpenBSD 支持 SVR4(Solaris)，FreeBSD，Linux，BSD/OS，SunOS 和 HP-UX 下大多数程序的二进制仿真运行。</p></blockquote>
<p>发行注记页面:<a title="http://www.jp.openbsd.org/zh/47.html" href="http://www.jp.openbsd.org/zh/47.html" target="_blank">http://www.jp.openbsd.org/zh/47.html</a><br />
下载列表:<a title="http://www.openbsd.org/zh/ftp.html" href="http://www.openbsd.org/zh/ftp.html" target="_blank">http://www.openbsd.org/zh/ftp.html</a><br />
OpenBSD是一个很优秀的操作系统,通常作为路由器,VPN,防火墙等等.而我本人是用作个人数据服务器.</p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/05/19/openbsd4-7_release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOS5.5发布</title>
		<link>http://liangdi.icentos.net/2010/05/15/centos5_5_release/</link>
		<comments>http://liangdi.icentos.net/2010/05/15/centos5_5_release/#comments</comments>
		<pubDate>Sat, 15 May 2010 07:26:49 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[我关注的互联网资讯]]></category>
		<category><![CDATA[生活感想]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[centos5.5]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=243</guid>
		<description><![CDATA[两天前刚发了篇日志说CentOS5.5快要发布了,昨天做了个梦发布了,今天真的就发布了 哈哈&#8230;&#8230; http://www.icentos.net/read-htm-tid-40.html]]></description>
			<content:encoded><![CDATA[<p>两天前刚发了篇日志说CentOS5.5快要发布了,昨天做了个梦发布了,今天真的就发布了 哈哈&#8230;&#8230;</p>
<p><a href="http://www.icentos.net/read-htm-tid-40.html" target="_blank">http://www.icentos.net/read-htm-tid-40.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/05/15/centos5_5_release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Centos5.5发布在即</title>
		<link>http://liangdi.icentos.net/2010/05/13/centos5-5_release/</link>
		<comments>http://liangdi.icentos.net/2010/05/13/centos5-5_release/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:50:18 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[我关注的互联网资讯]]></category>
		<category><![CDATA[生活感想]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[centos5.5]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=239</guid>
		<description><![CDATA[RHEL5.5已经发布了一个多月了,Centos还是没有动静,其间好像只是更新了一些软件包. 不过官方的版本发布注记已经出来了,离正式发布时间也不远了. http://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS5.5 官方社区也有帖子说明快了,大家就期待吧 呵呵～～  不过我更期待的是6.0的版本因为内核已经更新到2.6.32了,可以使用很多新的功能! 讨论帖子:http://www.centos.org/modules/newbb/viewtopic.php?topic_id=25548&#38;forum=53]]></description>
			<content:encoded><![CDATA[<p>RHEL5.5已经发布了一个多月了,Centos还是没有动静,其间好像只是更新了一些软件包.<br />
不过官方的版本发布注记已经出来了,离正式发布时间也不远了.</p>
<p><a title="http://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS5.5" href="http://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS5.5" target="_blank">http://wiki.centos.org/zh/Manuals/ReleaseNotes/CentOS5.5</a></p>
<p>官方社区也有帖子说明快了,大家就期待吧 呵呵～～  不过我更期待的是6.0的版本因为内核已经更新到2.6.32了,可以使用很多新的功能!</p>
<p>讨论帖子:<a title="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=25548&amp;forum=53" href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=25548&amp;forum=53" target="_blank">http://www.centos.org/modules/newbb/viewtopic.php?topic_id=25548&amp;forum=53</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/05/13/centos5-5_release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android网络流量首超iPhone OS[网络新闻]</title>
		<link>http://liangdi.icentos.net/2010/04/29/android_vs_iphone/</link>
		<comments>http://liangdi.icentos.net/2010/04/29/android_vs_iphone/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 04:06:46 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[我关注的互联网资讯]]></category>
		<category><![CDATA[adroid]]></category>
		<category><![CDATA[htc legend]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=236</guid>
		<description><![CDATA[最近 玩htc legend,所以对Android的新闻也挺关注的,这里转一篇,之前也对android很感兴趣,因为也是linux家族的一员,也在模拟器上开发过,Google的产品真的好适合开发人员~~~ 智能手机的网络流量往往被视 为智能手机流行程度的风向标。 日前，根据美国移动广告商AdMob的统 计，iPhone OS在美国本土的网络流量占了美国本土全部移动互联网流量的39%，而Android系统首次超越了它，达到了46%。不过要放在世界范围内来 看，iPhone OS仍占了46%，而Android只占了25%，还是排第二。因为这是AdMob提供的数据，而且其也并没有公布算法，数据只能仅供参考，不过仍能说明 Android的来势汹汹，能对苹果造成威胁的果然只有Google。 顺便说一 句，Android的网络商店的应用程序已经超过了5万，但其软件的平均质量和iPhone OS仍有极大地差别。]]></description>
			<content:encoded><![CDATA[<p>最近 玩htc legend,所以对Android的新闻也挺关注的,这里转一篇,之前也对android很感兴趣,因为也是linux家族的一员,也在模拟器上开发过,Google的产品真的好适合开发人员~~~</p>
<blockquote><p>智能手机的网络流量往往被视 为智能手机流行程度的风向标。</p>
<p>日前，根据美国移动广告商AdMob的统 计，iPhone  OS在美国本土的网络流量占了美国本土全部移动互联网流量的39%，而Android系统首次超越了它，达到了46%。不过要放在世界范围内来 看，iPhone  OS仍占了46%，而Android只占了25%，还是排第二。因为这是AdMob提供的数据，而且其也并没有公布算法，数据只能仅供参考，不过仍能说明 Android的来势汹汹，能对苹果造成威胁的果然只有Google。</p>
<p>顺便说一 句，Android的网络商店的应用程序已经超过了5万，但其软件的平均质量和iPhone OS仍有极大地差别。</p></blockquote>
<p style="text-align: center"><img class="aligncenter" src="http://img1.gtimg.com/digi/pics/hv1/22/194/505/32887117.jpg" alt="Android网络流量首超iPhone OS" /></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/04/29/android_vs_iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>跟我一起写Makefile[pdf] 下载</title>
		<link>http://liangdi.icentos.net/2010/04/20/learn_makefile_pdf/</link>
		<comments>http://liangdi.icentos.net/2010/04/20/learn_makefile_pdf/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 15:29:10 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux编程]]></category>
		<category><![CDATA[makefile]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=232</guid>
		<description><![CDATA[熟悉Makefile是linux c/c++程序员的必备技能, 陈 皓的这篇《跟我一起写Makefile》 是一篇学习的好文章 下载: Makefile.pdf (573 K) 原文地址:http://www.icentos.net/read-htm-tid-18.html]]></description>
			<content:encoded><![CDATA[<p>熟悉Makefile是linux c/c++程序员的必备技能,<br />
陈 皓的这篇《跟我一起写Makefile》 是一篇学习的好文章</p>
<p>下载:<img src="http://www.icentos.net/images/wind/file/zip.gif" alt="" align="absmiddle" /> <a id="fg_8" href="http://www.icentos.net/job.php?action=download&amp;aid=8" target="_blank"> <span style="color: red;">Makefile.pdf</span></a> (573 K)</p>
<p>原文地址:<a title="跟我一起写Makefile[pdf] 下载" href="http://www.icentos.net/read-htm-tid-18.html" target="_blank">http://www.icentos.net/read-htm-tid-18.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/04/20/learn_makefile_pdf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JAVA访问IBM Domino服务器(java,diiop)</title>
		<link>http://liangdi.icentos.net/2010/04/19/java_connect_domino_with_diiop/</link>
		<comments>http://liangdi.icentos.net/2010/04/19/java_connect_domino_with_diiop/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:16:13 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[diiop]]></category>
		<category><![CDATA[domino]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[索引]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=223</guid>
		<description><![CDATA[由于项目的需要,要对Domino服务器上的文档以及其附件做索引,提供搜索.所以自己也先整理一下思路.程序中使用DIIOP协议连接服务器(需要NCSO.jar),遍历视图中的文档,再读取其附件,以及需要建索引的字段,然后建索引,由于一个文档可能包含多个附件,所以要将各附件解析后h合并再建索引. 本文先完成对Domino文档以及其附件的读取.步骤比较简单 1.获得Sessio,需要用户,密码以及IOR. Session session = NotesFactory.createSessionWithIOR(IOR, user, pass); 2.选择数据库和视图 Database db = session.getDatabase(null, &#8220;datastorge01.nsf&#8221;); View view = db.getView(&#8220;(SWSearch_main)&#8221;); 3.遍历文档,读取字段信息以及拆解附件. view.getFirstDocument(); view.getNextDocument(doc); Vector attNames = session.evaluate(&#8220;@AttachmentNames&#8221;,doc);//附件 JAVA代码: package notesdemo; import java.io.File; import java.util.Vector; import lotus.domino.Database; import lotus.domino.Document; import lotus.domino.EmbeddedObject; import lotus.domino.NotesException; import lotus.domino.NotesFactory; import lotus.domino.Session; import lotus.domino.View; public class Main { public Integer attCount = [...]]]></description>
			<content:encoded><![CDATA[<p>由于项目的需要,要对Domino服务器上的文档以及其附件做索引,提供搜索.所以自己也先整理一下思路.程序中使用DIIOP协议连接服务器(需要NCSO.jar),遍历视图中的文档,再读取其附件,以及需要建索引的字段,然后建索引,由于一个文档可能包含多个附件,所以要将各附件解析后h合并再建索引.</p>
<p>本文先完成对Domino文档以及其附件的读取.步骤比较简单</p>
<p>1.获得Sessio,需要用户,密码以及IOR.<br />
Session session = NotesFactory.createSessionWithIOR(IOR, user, pass);</p>
<p>2.选择数据库和视图<br />
Database db = session.getDatabase(null, &#8220;datastorge01.nsf&#8221;);<br />
View view = db.getView(&#8220;(SWSearch_main)&#8221;);</p>
<p>3.遍历文档,读取字段信息以及拆解附件.<br />
view.getFirstDocument();<br />
view.getNextDocument(doc);<br />
Vector attNames = session.evaluate(&#8220;@AttachmentNames&#8221;,doc);//附件</p>
<p>JAVA代码:<br />
<span id="more-223"></span></p>
<pre class="brush: java;">
package notesdemo;

import java.io.File;
import java.util.Vector;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.EmbeddedObject;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.Session;
import lotus.domino.View;

public class Main {
	public Integer attCount = 0;
	public Long attSize = new Long(0);
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws NotesException {
        // TODO code application logic here
		String basePath =&quot;/root/Desktop/notesfiles/&quot;;
		Main demo = new Main();
		Long t = System.currentTimeMillis();
		System.out.println(&quot;开始:&quot;);

		demo.Connection();
		System.out.println(&quot;耗时: &quot; + (System.currentTimeMillis()- t)/1000 + &quot;秒   附件数量:&quot; + demo.attCount + &quot;  附件总大小:&quot; + demo.attSize/1024/1024 + &quot;MB&quot;);
    }
	public void Connection() throws NotesException{

		String basePath =&quot;/root/Desktop/notesfiles/&quot;;
		String user= &quot;username&quot;;
		String pass=&quot;password&quot;;
		//192.30.1.132
		String IOR=&quot;IOR:010002022900000049444c3a6c6f7475732f646f6d696e6f2f636f7262612f494f626a6563745365727665723a312e3000000000010000000000000070000000010101020d0000003139322e33302e312e3133320000acf6310000000438353235363531612d656336382d313036632d656565302d303037653264323233336235004c6f7475734e4f490100010000000100000001000000140000000100020201000105000000000001010000000000&quot;;
		//IOR=&quot;&quot;;
		//本地
		//IOR =NotesFactory.getIOR(&quot;192.168.126.128&quot;);
		//IOR=&quot;IOR:0101af002900000049444c3a6c6f7475732f646f6d696e6f2f636f7262612f494f626a6563745365727665723a312e300000000001000000000000007400000001010100100000003139322e3136382e3132362e31323800acf60000310000000438353235363531612d656336382d313036632d656565302d303037653264323233336235004c6f7475734e4f490100010000000100000001000000140000000101af0001000105000000000001010000000000&quot;;

		//IOR = NotesFactory.getIOP(&quot;192.168.1.105&quot;);
		IOR = &quot;IOR:0101af002900000049444c3a6c6f7475732f646f6d696e6f2f636f7262612f494f626a6563745365727665723a312e3000000000010000000000000070000000010101000e0000003139322e3136382e312e31303500acf6310000000438353235363531612d656336382d313036632d656565302d303037653264323233336235004c6f7475734e4f490100010000000100000001000000140000000101af0001000105000000000001010000000000&quot;;
		try{
			Session session = NotesFactory.createSessionWithIOR(IOR, user, pass);
			Document doc;
			Database db = session.getDatabase(null, &quot;datastorge01.nsf&quot;);
			View view = db.getView(&quot;(SWSearch_main)&quot;);
			System.out.println(&quot;view = &quot; + view);
			doc = view.getFirstDocument();
			int j =0;
			while(doc !=null &amp;&amp; attCount &lt;100){
				String UID =doc.getUniversalID();
				Vector attNames = session.evaluate(&quot;@AttachmentNames&quot;,doc);
				String author = doc.getItemValueString(&quot;txtCreator&quot;);
				String title = doc.getItemValueString(&quot;txtTitle&quot;);
				String lastUpdate = doc.getItemValueString(&quot;txtUpdate&quot;);
				String txtSource = doc.getItemValueString(&quot;txtSource&quot;);
				String txtDescription = doc.getItemValueString(&quot;txtDescription&quot;);
				String txtKey = doc.getItemValueString(&quot;txtKey&quot;);
				String txtSort = doc.getItemValueString(&quot;txtSort&quot;);
				System.out.println(&quot;\n&quot;);
				System.out.println(&quot;UID = &quot; + UID);
				System.out.println(&quot;文档信息: title:&quot; + title +  &quot; 最后更新:&quot; + lastUpdate + &quot;Doc.lastModified:&quot; + doc.getLastModified().toString());
				if(txtDescription.length() &gt;=10){
					txtDescription = txtDescription.substring(0,10);
				}
				System.out.println(&quot;资料来源:&quot; + txtSource + &quot;  备注:&quot; + txtDescription + &quot;  关键字:&quot; + txtKey + &quot;   文档分类:&quot; + txtSort);
				for (int i = 0; i &lt; attNames.size(); i++) {
					if(true){
						break;
					}
					String object = (String)attNames.elementAt(i);
					EmbeddedObject obj = doc.getAttachment(object);
					File p = new File(basePath + UID);
					if(!p.exists()){
						p.mkdir();
					}
					if(obj !=null){
						this.attCount ++;
						Long t = System.currentTimeMillis();
						String attName = obj.getName();

						obj.extractFile(p+  &quot;/&quot; +attName);
						File attFile = new File(p+  &quot;/&quot; +attName);
						System.out.println(&quot;文件路径: &quot; + attFile.getCanonicalPath());
						Long len = attFile.length();
						this.attSize += len;
						System.out.println(&quot;提取附件时间: &quot;+ (System.currentTimeMillis()- t) + &quot;毫秒&quot; + &quot;  附件大小:&quot; + attFile.length()/1024 + &quot;KB&quot;);
					}
				}
				if(doc ==null){
					break;
				}
				doc = view.getNextDocument(doc);
			}
		}catch(Exception ex){
			ex.printStackTrace();

		}
	}
}
</pre>
<p>总得来说,DIIOP的接口还是比较简单的.</p>
<p>文章作者：liangdi 最后修改：2010.04.19 转载请注明来自:[<a title="自由的心灵" href="http://liangdi.icentos.net/" target="_blank">自由的心灵</a>]</p>
<p>原文链接：<a title="JAVA访问IBM Domino服务器(java,diiop)" href="http://liangdi.icentos.net/2010/04/19/java_connect_domino_with_diiop/" target="_blank">http://liangdi.icentos.net/2010/04/19/java_connect_domino_with_diiop/</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/04/19/java_connect_domino_with_diiop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用Memcache缓存提升搜索引擎项目性能</title>
		<link>http://liangdi.icentos.net/2010/04/18/use_memcache_nutch_lucene/</link>
		<comments>http://liangdi.icentos.net/2010/04/18/use_memcache_nutch_lucene/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 10:09:24 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[检索缓存]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=210</guid>
		<description><![CDATA[搜索项目已经上线了,客户使用的硬件不错,系统表现的也不错,不过所谓&#8221;编程无止境&#8221;,针对客户的使用特点,我决定对系统做个使用Memcache缓存提升性能的方案,对于整个搜索系统来说需要缓存的地方很多:搜索结果、分词(同义词)、以及客户定制的一些功能.本文就针对搜索结果做缓存看看性能提升效果 . Memcache服务器使用很简单从http://memcached.org/ 下载,开启服务的简单命令:/path/to/memcached -u root -d,JAVA-Client可以使用这个:http://github.com/gwhalin/Memcached-Java-Client/downloads. 根据系统需求,写一个CacheUtil类,根据搜索关键字+搜索类型+搜索起始记录数 组成的字符串作为key,保存搜索结果HashMap,同样根据key取得搜索结果直接返回. package com.richeninfo.sw.search; import java.util.HashMap; import java.util.Map; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class CacheUtil { protected static MemCachedClient mcc = new MemCachedClient(); private static String[] servers = {&#34;localhost:11211&#34;}; private static Integer[] weights = {3}; static { //需要写成配置,测试数据 //String[] servers = {&#34;localhost:11211&#34;}; //Integer[] weights = {3}; //创建一个实例对象SockIOPool SockIOPool [...]]]></description>
			<content:encoded><![CDATA[<p>搜索项目已经上线了,客户使用的硬件不错,系统表现的也不错,不过所谓&#8221;编程无止境&#8221;,针对客户的使用特点,我决定对系统做个使用Memcache缓存提升性能的方案,对于整个搜索系统来说需要缓存的地方很多:搜索结果、分词(同义词)、以及客户定制的一些功能.本文就针对搜索结果做缓存看看性能提升效果 .</p>
<p>Memcache服务器使用很简单从http://memcached.org/ 下载,开启服务的简单命令:/path/to/memcached -u root -d,JAVA-Client可以使用这个:http://github.com/gwhalin/Memcached-Java-Client/downloads.</p>
<p>根据系统需求,写一个CacheUtil类,根据搜索关键字+搜索类型+搜索起始记录数 组成的字符串作为key,保存搜索结果HashMap,同样根据key取得搜索结果直接返回.</p>
<p><span id="more-210"></span></p>
<pre class="brush: java;">
package com.richeninfo.sw.search;

import java.util.HashMap;
import java.util.Map;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class CacheUtil {

	protected static MemCachedClient mcc = new MemCachedClient();
	private static String[] servers = {&quot;localhost:11211&quot;};
	private static Integer[] weights = {3};
	static {
		//需要写成配置,测试数据
		//String[] servers = {&quot;localhost:11211&quot;};
		//Integer[] weights = {3};

		//创建一个实例对象SockIOPool
		SockIOPool pool = SockIOPool.getInstance();

		// set the servers and the weights
		//设置Memcached Server
		pool.setServers(servers);
		pool.setWeights(weights);

		// set some basic pool settings
		// 5 initial, 5 min, and 250 max conns
		// and set the max idle time for a conn
		// to 6 hours
		pool.setInitConn(5);
		pool.setMinConn(5);
		pool.setMaxConn(250);
		pool.setMaxIdle(1000 * 60 * 60 * 6);

		// set the sleep for the maint thread
		// it will wake up every x seconds and
		// maintain the pool size
		pool.setMaintSleep(30);

		// Tcp的规则就是在发送一个包之前，本地机器会等待远程主机
		// 对上一次发送的包的确认信息到来；这个方法就可以关闭套接字的缓存，
		// 以至这个包准备好了就发；
		pool.setNagle(false);
		//连接建立后对超时的控制
		pool.setSocketTO(3000);
		//连接建立时对超时的控制
		pool.setSocketConnectTO(0);

		// initialize the connection pool
		//初始化一些值并与MemcachedServer段建立连接
		pool.initialize();

		// lets set some compression on for the client
		// compress anything larger than 64k
		mcc.setCompressEnable(true);
		mcc.setCompressThreshold(64 * 1024);
	}

	public Map get(String key,int type,int start){
		String tempKey = &quot;k:&quot; + key + &quot;t:&quot; + new Integer(type) + &quot;s:&quot; + new Integer(start);
		return get(tempKey);
	}
	public Map get(String key) {
		return  (Map) mcc.get(key);
	}
	public void put(String key,int type,int start,Map value){
		String tempKey = &quot;k:&quot; + key + &quot;t:&quot; + new Integer(type) + &quot;s:&quot; + new Integer(start);
		put(tempKey,value);
	}
	public void put(String key, Map value) {
		if (needCache(key)) {
			mcc.set(key, value);
		}
	}

	public boolean needCache(String key) {
		return true;
	}

	public static void main(String [] args){
		CacheUtil cu = new CacheUtil();
		String key = &quot;k:中国t:1s:1&quot;;
		Map map = new HashMap();
		map.put(&quot;key&quot;, 123);
		CacheUtil.mcc.set(key, map);
		Map  v = (Map) CacheUtil.mcc.get(key);
		System.out.println(&quot;v = &quot; + v);
	}
}
</pre>
<p>其中更具业务需求去缓存(needCache),比如只缓存热门关键词等.结合到系统中测试,在搜索前先取缓存,如果没有缓存再搜索,搜索后对结果缓存.简单的测试结果:</p>
<p>第一次搜索linux:</p>
<div id="attachment_215" class="wp-caption alignnone" style="width: 610px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_linux.jpg" target="_blank"><img class="size-full wp-image-215" src="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_linux.jpg" alt="第一次搜索linux" width="600" /></a><p class="wp-caption-text">第一次搜索linux</p></div>
<p>第二次搜索linux:</p>
<div id="attachment_216" class="wp-caption alignnone" style="width: 610px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_linux_cache.jpg" target="_blank"><img class="size-full wp-image-216" src="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_linux_cache.jpg" alt="第二次搜索linux" width="600" /></a><p class="wp-caption-text">第二次搜索linux</p></div>
<p>第一次搜索&#8221;5&#8243;:</p>
<div id="attachment_217" class="wp-caption alignnone" style="width: 610px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_5.jpg" target="_blank"><img class="size-full wp-image-217" src="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_5.jpg" alt="第一次搜索&quot;5&quot;:" width="600" /></a><p class="wp-caption-text">第一次搜索&quot;5&quot;:</p></div>
<p>第二次搜索&#8221;5&#8243;:</p>
<div id="attachment_218" class="wp-caption alignnone" style="width: 610px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_5_cache.jpg" target="_blank"><img class="size-full wp-image-218" src="http://liangdi.icentos.net/wp-content/uploads/2010/04/search_5_cache.jpg" alt="第二次搜索&quot;5&quot;:" width="600" /></a><p class="wp-caption-text">第二次搜索&quot;5&quot;:</p></div>
<p>从测试结果看,对性能提升还是有大的作用的,对于集成到系统中,也不是简单的加个类就好,要对系统做整体的缓存设计,所以还得做比较多的事情.</p>
<p>文章作者：liangdi 最后修改：2010.04.18 转载请注明来自:[<a title="自由的心灵" href="http://liangdi.icentos.net/" target="_blank">自由的心灵</a>]</p>
<p>原文链接：<a title="使用Memcache缓存提升搜索引擎项目性能" href="http://liangdi.icentos.net/2010/04/18/use_memcache_nutch_lucene/" target="_blank">http://liangdi.icentos.net/2010/04/18/use_memcache_nutch_lucene/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/04/18/use_memcache_nutch_lucene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB体验(linux,java)</title>
		<link>http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/</link>
		<comments>http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 18:16:49 +0000</pubDate>
		<dc:creator>liangdi</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://liangdi.icentos.net/?p=198</guid>
		<description><![CDATA[MongoDB是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。他支持的数据结构非常松散，是类似 json的bjson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。 上面是MongoDB的介绍,如果需要更详细的了解或者是下载MongoDB,请访问:http://www.mongodb.org/ 我之所以选择去了解和使用MongDB,除了它具有一些特有的性质,高性能外,主要一点就是开发方面,相比关系型数据库,用ORM库,而且还要维护scheme(这里当然不包括各种快速开发框架 ),本文是一个Java中使用MongoDB的一个简单例子 ,对一个对象的增加以及显示.就一个java类和一个jsp页面. MongoDB的安装和使用以及其文档也很丰富,这里就不再做介绍 . Service类: package net.icentos.demo.mongodb; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import java.net.UnknownHostException; public class WebSiteService { private Mongo mongo; private DB db; private DBCollection dbc; private String dbName = &#34;test&#34;; private String collName = &#34;websites&#34;; public WebSiteService() throws UnknownHostException { //Mongo对象 mongo = new [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>MongoDB是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。他支持的数据结构非常松散，是类似 json的bjson格式，因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大，其语法有点类似于面向对象的查询语言，几乎可以实现类似关系数据库单表查询的绝大部分功能，而且还支持对数据建立索引。</p></blockquote>
<p>上面是MongoDB的介绍,如果需要更详细的了解或者是下载MongoDB,请访问:<a title="http://www.mongodb.org/" href="http://www.mongodb.org/" target="_blank">http://www.mongodb.org/ </a></p>
<p>我之所以选择去了解和使用MongDB,除了它具有一些特有的性质,高性能外,主要一点就是开发方面,相比关系型数据库,用ORM库,而且还要维护scheme(这里当然不包括各种快速开发框架 ),本文是一个Java中使用MongoDB的一个简单例子 ,对一个对象的增加以及显示.就一个java类和一个jsp页面. MongoDB的安装和使用以及其文档也很丰富,这里就不再做介绍 .<br />
<span id="more-198"></span><br />
Service类:</p>
<pre class="brush: java;">
package net.icentos.demo.mongodb;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import java.net.UnknownHostException;

public class WebSiteService {
	private Mongo mongo;
	private DB db;
	private DBCollection dbc;
	private String dbName = &quot;test&quot;;
	private String collName = &quot;websites&quot;;
	public WebSiteService() throws UnknownHostException {
		//Mongo对象
		mongo = new Mongo();
		//类似数据库的选择数据库
		db = mongo.getDB(dbName);
		//类似选择表
		dbc = db.getCollection(collName);
	}
	/**
	 * 插入数据
	 * @param url
	 * @param title
	 * @param logo
	 */
	public void addWebSite(String url,String title,String logo){
		BasicDBObject obj = new BasicDBObject();
		obj.put(&quot;url&quot;, url);
		obj.put(&quot;title&quot;, title);
		obj.put(&quot;logo&quot;, logo);
		System.out.println(&quot;Insert = &quot; + title);
		dbc.insert(obj);
	}

	public DBCursor listAll(){
		return dbc.find();
	}
}
</pre>
<p>JSP页面:</p>
<pre class="brush: java;">
&lt;%@page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;
   &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;%
	net.icentos.demo.mongodb.WebSiteService service = new net.icentos.demo.mongodb.WebSiteService();

	//增加操作
	String action;
	action = request.getParameter(&quot;action&quot;);
	if(action != null &amp;&amp; action.equals(&quot;add&quot;)){
		String url = request.getParameter(&quot;url&quot;);
		String title = request.getParameter(&quot;title&quot;);
		String logo = request.getParameter(&quot;logo&quot;);
		title = java.net.URLDecoder.decode(title, &quot;UTF-8&quot;);
		service.addWebSite(url, title, logo);
	}

	//列表
	com.mongodb.DBCursor cur = service.listAll();
%&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
        &lt;title&gt;MongoDB Demo&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;table&gt;
			&lt;tbody&gt;
				&lt;tr&gt;
					&lt;td&gt;名称&lt;/td&gt;&lt;td&gt;URL&lt;/td&gt;&lt;td&gt;logo&lt;/td&gt;
				&lt;/tr&gt;
				&lt;%
				//遍历列表
				while(cur.hasNext()){
					com.mongodb.DBObject website = cur.next();
					String title = (String)website.get(&quot;title&quot;);
					String url = (String)website.get(&quot;url&quot;);
					String logo = (String)website.get(&quot;logo&quot;);
					if(title == null){
						title = &quot;&quot;;
					}
					if(url == null){
						url =&quot;&quot;;
					}
					if(logo == null){
						logo = &quot;&quot;;
					}
				%&gt;
				&lt;tr&gt;
					&lt;td&gt;&lt;%=title%&gt;&lt;/td&gt;&lt;td&gt;&lt;%=url%&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;&lt;%=logo%&gt;&quot; width=&quot;81&quot; height=&quot;31&quot; /&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;% }%&gt;
			&lt;/tbody&gt;
		&lt;/table&gt;
			&lt;form action=&quot;index.jsp&quot; method=&quot;GET&quot;&gt;
				 &lt;table&gt;
					&lt;tbody&gt;
						&lt;tr&gt;&lt;td&gt;网站名称:&lt;/td&gt;&lt;td&gt;&lt;input name=&quot;title&quot; size=&quot;10&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
						&lt;tr&gt;&lt;td&gt;网站URL:&lt;/td&gt;&lt;td&gt;&lt;input name=&quot;url&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
						&lt;tr&gt;&lt;td&gt;网站LOGO:&lt;/td&gt;&lt;td&gt;&lt;input name=&quot;logo&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
						&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;input type=&quot;submit&quot; value=&quot;添加&quot;/&gt;&lt;/td&gt;&lt;/tr&gt;
					&lt;/tbody&gt;

				 &lt;/table&gt;
				&lt;input type=&quot;hidden&quot; value=&quot;add&quot; name=&quot;action&quot; /&gt;
			&lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>截图:</p>
<div id="attachment_205" class="wp-caption alignnone" style="width: 522px"><a href="http://liangdi.icentos.net/wp-content/uploads/2010/04/mongodb_demo.jpg"><img class="size-full wp-image-205" src="http://liangdi.icentos.net/wp-content/uploads/2010/04/mongodb_demo.jpg" alt="mongodb_demo" width="512" height="317" /></a><p class="wp-caption-text">mongodb_demo</p></div>
<p>代码很少,但是实现我们所需要的功能.这个相比ORM框架要方便多了.而且MongoDB也支持强大的查询语句,赶快去发现吧!<br />
我将在今后的合适的项目中(并非所有项目的数据库都适合使用MongoDB)逐步使用她,因为她也是已经有很多成熟的网站在使用了 .</p>
<p>文章作者：liangdi 最后修改：2010.04.17 转载请注明来自:[<a title="自由的心灵" href="http://liangdi.icentos.net/" target="_blank">自由的心灵</a>]</p>
<p>原文链接：<a title="MongoDB体验(linux,java)" href="http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/" target="_blank">http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://liangdi.icentos.net/2010/04/17/mongodb_linux_java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
