<?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>AKi Cong</title>
	<atom:link href="http://www.aidiu.com/wp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.aidiu.com/wp</link>
	<description>Sucks# WWW &#124;&#124; CODE &#124; AKi.Brain &#62;&#62; /pub/www</description>
	<lastBuildDate>Sun, 26 Jun 2011 08:19:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>记几个词汇——体验</title>
		<link>http://www.aidiu.com/wp/archives/77</link>
		<comments>http://www.aidiu.com/wp/archives/77#comments</comments>
		<pubDate>Sun, 26 Jun 2011 08:11:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[杂类]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=77</guid>
		<description><![CDATA[OpenStack，Giwell, &#160; 《分布式系统与云计算》 　　《云计算系统实例与研究现状》 　　《云计算入门必读》 　　《云计算趣谈》 　　《云计算理论及技术研究》 　　《云计算介绍及应用》 　　《EMC的云计算培训材料》 　　《云里雾里云计算》 　　《云计算资料大全(初学必读) 　　《云计算与云数据管理》 　　《云计算-final》 　　《深入浅出云计算》 　　《漫谈云计算》 　　《论云计算的价值》 　　《Hadoop云计算技术介绍》 　　《GOOGLE云计算培训系列课程》 　　《云计算入门指南》 　　《云上的日子解析开源云计算的未来》 　　《云计算及其关键技术》 　　《云服务性能监测和评估指南》 　　《云计算与开源》 　　《云计算 信息产业新浪潮》 　　《开源云管理工具最佳实践》 　　《微软三大云计算产品全概览》 　　《云存储最佳实践》 　　《云平台选择与部署指南》 　　《JAVA与云计算》 　　《云服务性能监测和评估指南》 　　《2010版桌面虚拟化技术教程》 　　《VMware vCloud Director中文教程》 　　《开源云管理工具最佳实践》 　　《微软三大云计算产品全概览》 　　《云存储最佳实践》 　　《hadoop权威指南》 　　云计算企业资料 《智慧的地球与云计算(IBM)》 　　《直入云端&#8221;——IBM 云计算策略概览》 　　《云计算对运营商的影响资料&#8211;中国移动》 　　《微软云计算策略》 　　《红帽官方发布云计算解决方案》 　　《百度框计算欲_谋杀_云计算》 　　《IT不再重要 云计算（华为）》 　　《IBM云计算成功案例：荷兰 iTricity IDC》 　　《IBM-云计算》《Google云计算部署介绍》 　　《amazon云计算介绍》 　　《云计算基础设施和体系架构指南》(SUN白皮书) 　　《企业如何运用云计算》(oracle).]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/77/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SecureCRT清屏【ctrl+l】失效的原因</title>
		<link>http://www.aidiu.com/wp/archives/70</link>
		<comments>http://www.aidiu.com/wp/archives/70#comments</comments>
		<pubDate>Sun, 23 Jan 2011 04:51:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[杂类]]></category>
		<category><![CDATA[Ctrl+L]]></category>
		<category><![CDATA[SecureCRT]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=70</guid>
		<description><![CDATA[在使用SecureCRT进行远程操作的时候，遇到一个奇怪的问题，【ctrl+l】清屏失效，按完这个组合键之后，没有任何反应，键盘是好的。输入clear命令觉得麻烦。有人遇到过这样的问题吗？ 找到问题原因：“谷歌金山词霸合作版”的热键冲突了,关掉它，就OK了。。。 我喜欢在.bashrc 中加上这句  alias c=&#8217;clear&#8217;     运行： source ~/.bashrc 如果不是root登陆但是su成 root的用户：source /root/.bashrc  OK。。。]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/70/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>三十而立，应该实现的十个人生目标</title>
		<link>http://www.aidiu.com/wp/archives/67</link>
		<comments>http://www.aidiu.com/wp/archives/67#comments</comments>
		<pubDate>Wed, 19 Jan 2011 05:15:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[人生处世]]></category>
		<category><![CDATA[职场态度]]></category>
		<category><![CDATA[三十]]></category>
		<category><![CDATA[人生目标]]></category>
		<category><![CDATA[而立]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=67</guid>
		<description><![CDATA[之一，较高的学历、渊博的知识和丰富的实践经验。 而立之年应该有了一个自己的知识库，并像存储器那样有层次地分成若干个存储单元，分门别类的存储于自己的大脑中，这样才会有职场竞争力。文化素养是最基本的知识要求，要学会本行业所需要的一切知识并有所发展。 之二，在感情生活方面平和安定。 在攀登事业的高峰时，家庭是自己坚强的后盾，你需要一个理解和支持你的爱人和家庭。 之三，突破困境，从失败中积攒成功的资本。 人生总要面临各种困境的挑战，使自己永远保持健康的心态、进取的信念。切忌让情绪伤害自己，心态消极的人，无论如何都挑不起生活的重担。 之四，储备准备创业、另谋生路的存款。 在这个多变的职业世界里，你也许不会永远在一个地方工作，或者永远在一个位置上淋漓尽致地发挥自己，如果你事先储蓄了足够的钱，你便有了一个安全的后盾。 之五，学会在任何时候三缄其口，说话慎重。 因信口开河、夸夸其谈而自毁前程的人，比因为任何其他原因丧失成功的人都多。要学会保持沉默，凡事三思而行、不该说的话守口如瓶。 之六，人际关系网基本成型。 这个人际关系网包括老师、朋友、亲人、同学、同事和所有可以互相帮助的人。人际关系网表现了一个人情商的高低，不是一朝一夕就能建立起来的，它需要以心胸开阔，气量豁达、与人为善、乐于助人的气质，摩肩接踵的结交很多朋友。 之七，养成个人风格。 在30岁以前，找出你所喜欢的榜样，经常以他们为榜样，学习他们的理念、思维，不断模仿、不断尝试、不断改变，养成一种风格、风度，就会得到事半功倍的效果。 之八，注意品质，以优良的品德做人。 那就是：诚信建立信誉，谦虚使人精进;夯实职业金字塔，走健康职业路。如果你到了30岁仍未能建立起坚如磐石的忠诚信誉，这一缺点将会困扰你一生。 之九，善于整理和集中自己的优势、长处。 不管你目前担任什么样的角色，知道自己的长处对成功都很重要。一定要投入你所喜爱、发挥强项，做自己最擅长的事情，并扬长避短从事好自己的职业。 之十，最重要的就是定好自己的职业生涯规划。 给自己一个清晰、科学和客观的职业定位，评估一下自己的职业气质、职业兴趣、职业倾向、职业能力和职业潜力等，然后以此为目标，使未来的职业处于稳步向前发展的状态。 如果你目前还没做好以上十个目标，或者只做了其中一部分，那么你不用气馁，马上行动，去努力实现吧!愿您的人生前程似锦，如你所愿!]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/67/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转发:说话咋能这么经典呢？？？犯罪啊</title>
		<link>http://www.aidiu.com/wp/archives/65</link>
		<comments>http://www.aidiu.com/wp/archives/65#comments</comments>
		<pubDate>Sun, 25 Apr 2010 13:52:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[人生处世]]></category>
		<category><![CDATA[Just4Fun]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/archives/65</guid>
		<description><![CDATA[分享一篇文章：1.再丑也要谈恋爱，谈到世界充满爱。 2.执子之手，将子拖走。子若不走，拍晕了继续拖 走~！ 3.我和脂肪做斗争，差点没牺牲 4.将薪比薪的想一下，算了，不想活了。 5.孔子曰：“中午不睡，下午崩溃。”孟子曰：“孔子说的对！” 6.活了二十多年，没能为祖国、为人 民做点什么，每思及此，伤心欲绝。 7.生活嘛，就是生下来，活下去~~ 8.挣着卖白菜的钱，操着卖白粉的心~~ 9.除了诱惑，我什么都能抵挡~~ 10. 琴棋书画不会，洗衣做饭嫌累~~ 11. 老婆说要看闪电，我拿菜刀砍电线 12. 我在春天种下一堆男朋友，现在秋天到了，居然颗粒无收~~ 13.最近工作不突出，业绩不突出，腰椎间盘有点突出。 14.人不犯我~~我不犯人~~人若犯我~~我就生气~~~ 15.人生最大的悲哀是青春不在,青春 痘却还在 16. 每当困难的时候我就念藏经：“噢嘛呢哞嘛哄”， 翻译成英文就是:All money go my home! 17.打死我也不说，你们还没使美 人计呢！ 18. 别和我谈理想……我戒了！ 19. 钱对你真的就那么重要吗？讲了3个多小时了一分钱都不降。 20.那啥，没有经济适用房，就给我个经济适用坟好了]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/65/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转】中国佛学66句震撼世界的禅语</title>
		<link>http://www.aidiu.com/wp/archives/62</link>
		<comments>http://www.aidiu.com/wp/archives/62#comments</comments>
		<pubDate>Tue, 06 Apr 2010 16:11:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[人生处世]]></category>
		<category><![CDATA[管理知识]]></category>
		<category><![CDATA[职场态度]]></category>
		<category><![CDATA[佛言]]></category>
		<category><![CDATA[自省]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=62</guid>
		<description><![CDATA[1.人之所以痛苦，在于追求错误的东西。 2.如果你不给自己烦恼，别人也永远不可能给你烦恼。因为你自己的内心，你放不下。 3.你永远要感谢给你逆境的众生。 4.你永远要宽恕众生，不论他有多坏，甚至他伤害过你，你一定要放下，才能得到真正的快乐。 5.当你快乐时，你要想这快乐不是永恒的。当你痛苦时，你要想这痛苦也不是永恒的。 6.今日的执著，会造成明日的后悔。 7.你可以拥有爱，但不要执著，因为分离是必然的。 8.不要浪费你的生命在你一定会后悔的地方上。 9.你什么时候放下，什么时候就没有烦恼。 10.每一种创伤，都是一种成熟。 11.狂妄的人有救，自卑的人没有救，认识自己，降伏自己，改变自己，才能改变别人。 12.你不要一直不满人家，你应该一直检讨自己才对。不满人家，是苦了你自己。 13.一个人如果不能从内心去原谅别人，那他就永远不会心安理得。 14.心中装满着自己的看法与想法的人，永远听不见别人的心声。 15.毁灭人只要一句话，培植一个人却要千句话，请你多口下留情。 16.根本不必回头去看咒骂你的人是谁？如果有一条疯狗咬你一口，难道你也要趴下去反咬他一口吗？ 17.永远不要浪费你的一分一秒，去想任何你不喜欢的人。 18.请你用慈悲心和温和的态度，把你的不满与委屈说出来，别人就容易接受。 19.同样的瓶子，你为什么要装毒药呢？同样的心里，你为什么要充满着烦恼呢？ 20.得不到的东西，我们会一直以为他是美好的，那是因为你对他了解太少，没有时间与他相处在一起。当有一天，你深入了解后，你会发现原不是你想像中的那么美好。 21.活着一天，就是有福气，就该珍惜。当我哭泣我没有鞋子穿的时候，我发现有人却没有脚。 22.多一分心力去注意别人，就少一分心力反省自己，你懂吗？ 23.憎恨别人对自己是一种很大的损失。 24.每一个人都拥有生命，但并非每个人都懂得生命，乃至于珍惜生命。不了解生命的人，生命对他来说，是一种惩罚。 25.情执是苦恼的原因，放下情执，你才能得到自在 26.不要太肯定自己的看法，这样子比较少后悔。 27.当你对自己诚实的时候，世界上没有人能够欺骗得了你。 28.用伤害别人的手段来掩饰自己缺点的人，是可耻的。 29.默默的关怀与祝福别人，那是一种无形的布施。 30.不要刻意去猜测他人的想法，如果你没有智慧与经验的正确判断，通常都会有错误的。 31.要了解一个人，只需要看他的出发点与目的地是否相同，就可以知道他是否真心的。 32.人生的真理，只是藏在平淡无味之中。 33.不洗澡的人，硬擦香水是不会香的。名声与尊贵，是来自于真才实学的。有德自然香。 34.时间总会过去的，让时间流走你的烦恼吧！ 35.你硬要把单纯的事情看得很严重，那样子你会很痛苦。 36.永远扭曲别人善意的人，无药可救。 37.说一句谎话，要编造十句谎话来弥补，何苦呢？ 38.白白的过一天，无所事事，就像犯了窃盗罪一样 39.广结众缘，就是不要去伤害任何一个人。 40.沉默是毁谤最好的答覆。 41.对人恭敬，就是在庄严你自己。 42.拥有一颗无私的爱心，便拥有了一切。 43.来是偶然的，走是必然的。所以你必须，随缘不变，不变随缘。 44.慈悲是你最好的武器。 45.只要面对现实，你才能超越现实。 46.良心是每一个人最公正的审判官，你骗得了别人，却永远骗不了你自己的良心。 47.不懂得自爱的人，是没有能力去爱别人的。 48.有时候我们要冷静问问自已，我们在追求什么？我们活着为了什么？ 49.不要因为小小的争执，远离了你至亲的好友，也不要因为小小的怨恨，忘记了别人的大恩。 50.感谢上苍我所拥有的，感谢上苍我所没有的。 51.凡是能站在别人的角度为他人着想，这个就是慈悲。 52.说话不要有攻击性，不要有杀伤力，不夸已能，不扬人恶，自然能化敌为友。 53.诚实的面对你内心的矛盾和污点，不要欺骗你自己。 54.因果不曾亏欠过我们什么，所以请不要抱怨。 55.大多数的人一辈子只做了三件事；自欺、欺人、被人欺。 56.心是最大的骗子，别人能骗你一时，而它却会骗你一辈子 57.只要自觉心安，东西南北都好。如有一人未度，切莫自己逃了。 58.当你手中抓住一件东西不放时，你只能拥有这件东西，如果你肯放手，你就有机会选择别的。人的心若死执自己的观念，不肯放下，那么他的智慧也只能达到某种程度而已 59.如果你能够平平安安的渡过一天，那就是一种福气了。多少人在今天已经见不到明天的太阳，多少人在今天已经成了残废，多少人在今天已经失去了自由，多少人在今天已经家破人亡。 60.你有你的生命观，我有我的生命观，我不干涉你。只要我能，我就感化你。如果不能，那我就认命。 61.你希望掌握永恒，那你必须控制现在。 62.恶口永远不要出自于我们的口中，不管他有多坏，有多恶。你愈骂他，你的心就被污染了，你要想，他就是你的善知识。 63.别人可以违背因果，别人可以害我们，打我们，毁谤我们。可是我们不能因此而憎恨别人，为什么？我们一定要保有一颗完整的本性和一颗清净的心。 64.如果一个人没有苦难的感受，就不容易对他人给予同情。你要学救苦救难的精神，就得先受苦受难。 65.世界原本就不是属于你，因此你用不着抛弃，要抛弃的是一切的执著。万物皆为我所用，但非我所属。 66.虽然我们不能改变周遭的世界，我们就只好改变自己，用慈悲心和智慧心来面对这一切。]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/62/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在RedHat AS4下编译gcc-4.4.2注意细节</title>
		<link>http://www.aidiu.com/wp/archives/57</link>
		<comments>http://www.aidiu.com/wp/archives/57#comments</comments>
		<pubDate>Fri, 26 Feb 2010 10:06:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[杂类]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[编译GCC4]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=57</guid>
		<description><![CDATA[编译需要，如下软件gcc-4.4.2， gmp-4.3.2.tar.bz2  mpfr-2.4.2.tar.bz2。 如果安装gmp, mpfr到非默认路径，则需要将gmp, mpfr的lib加入到LD_LIBRARY_PATH中， 快速处理方式，将/path/to/gmp-install-dir/lib及/path/to/mpfr-install-dir/lib加入到/etc/ld.so.conf文件中（每行一个路径） 加完后运行， ldconfig 完成后， 创建一个gcc编译临时目录，进入进行编译， 如/home/xxx/gcc4 cd /home/xxx/gcc4 /home/xxx/gcc-4.4.2/configure &#8211;prefix=/home/xxx/mygcc4 &#8211;with-gmp=/path/to/gmp-install-dir &#8211;with-mpfr=/path/to/gmpfr-install-dirmake make install =============== 若不指定或设置好gmp或mpfr的库路径， 安装过程将出现如下问题 &#62; make Checking multilib configuration for libgcc&#8230; Configuring stage 1 in i686-pc-linux-gnu/libgcc configure: error: cannot compute suffix of object files: cannot compile See `config.log&#8217; for more details. make[2]: *** [configure-stage1-target-libgcc] Error 1]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/57/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NoSQL数据库探讨之一 － 为什么要用非关系数据库？</title>
		<link>http://www.aidiu.com/wp/archives/52</link>
		<comments>http://www.aidiu.com/wp/archives/52#comments</comments>
		<pubDate>Thu, 04 Feb 2010 15:31:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[海量]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=52</guid>
		<description><![CDATA[随着互联网web2.0网站的兴起，非关系型的数据库现在成了一个极其热门的新领域，非关系数据库产品的发展非常迅速。而传统的关系数据库在应付 web2.0网站，特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心，暴露了很多难以克服的问题]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/52/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Berkeley DB中文概述</title>
		<link>http://www.aidiu.com/wp/archives/50</link>
		<comments>http://www.aidiu.com/wp/archives/50#comments</comments>
		<pubDate>Tue, 19 Jan 2010 15:29:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[BDB]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=50</guid>
		<description><![CDATA[Berkeley DB (DB)是一个高性能的，嵌入数据库编程库，和C语言，C++，Java，Perl，Python，PHP，Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对，而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库，支持最大256TB的数据，广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。 2.0版本或以上的Berkeley DB由Sleepycat Software公司开发，并使用基于自由软件许可协议/私有许可协议的双重授权方式提供[1]，附有源代码。开发者如果想把Berkeley DB嵌入在私有软件内需要得到Sleepycat公司的许可，若将软件同样遵循GPL发布，则不需许可即可使用。而2.0版本以下的则使用BSD授权，可自由作商业用途。 目录 [隐藏] 1 历史 2 Berkeley DB的体系结构 3 Berkeley DB的核心数据结构 4 Berkeley DB数据访问算法 4.1 B+树算法 4.2 HASH算法 4.3 Recno算法 4.4 Queue算法 5 范例 5.1 DB常用函数使用范例 5.2 DB游标使用范例 5.3 DB环境使用范例 6 DB软件的安装和编译 7 参考资料 // 历史 Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现（如AT&#38;T的dbm，Berkeley的 ndbm，GNU项目的gdbm），Berkeley DB的第一个发行版在1991年出现，当时还包含了B+树数 据访问算法。在1992年，BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期，Sleepycat软件公司成立，提供对Berkeley DB的商业支持。在这以后，Berkeley DB得到了广泛的应用，当前最新版本是4.3.27。 Dirnames: Berkeley DB (Btree, version 9, native byte-order) Filemd5s: Berkeley DB (Hash, version 8, native byte-order) 值得注意的是DB是嵌入式数据库系统，而不是常见的关系/对象型数据库，对SQL语言不支持，也不提供数据库常见的高级功能，如存储过程，触发器等。 Berkeley DB的体系结构 Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而著称。例如，它不支持网络访问—程序通过进程内的API访问数据库。 他不支持SQL或者其他的数据库查询语言，不支持表结构和数据列。 访问数据库的程序自主决定数据如何储存在记录里，Berkeley DB不对记录里的数据进行任何包装。记录和它的键都可以达到4G字节的长度。 尽管架构很简单，Berkeley DB却支持很多高级的数据库特性，比如ACID 数据库事务处理，细粒度锁，XA接口，热备份以及同步复制。 Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口，包括：dbm，ndbm和hsearch。 Berkeley DB的核心数据结构 数据库句柄结构DB：包含了若干描述数据库属性的参数，如数据库访问方法类型、逻辑页面大小、数据库名称等；同时，DB结构中包含了大量的数据库处 理函数指针，大多数形式为 （*dosomething）(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。 数据库记录结构DBT：DB中的记录由关键字和数据构成，关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t size，分别对应数据本身和数据的长度。 数据库游标结构DBC：游标（cursor）是数据库应用中常见概念，其本质上就是一个关于特定记录的遍历器。注意到DB支持多重记录（duplicate records），即多条记录有相同关键字，在对多重记录的处理中，使用游标是最容易的方式。 数据库环境句柄结构DB_ENV：环境在DB中属于高级特性，本质上看，环境是多个数据库的包装器。当一个或多个数据库在环境中打开后，环境可以为这些数据库提供多种子系统服务，例如多线/进程处理支持、事务处理支持、高性能支持、日志恢复支持等。 DB中核心数据结构在使用前都要初始化，随后可以调用结构中的函数（指针）完成各种操作，最后必须关闭数据结构。从设计思想的层面上看，这种设计方法是利用面向过程语言实现面对对象编程的一个典范。 Berkeley DB数据访问算法 在数据库领域中,数据访问算法对应了数据在硬盘上的存储格式和操作方法。在编写应用程序时，选择合适的算法可能会在运算速度上提高1个甚至多个数量 级。大多数数据库都选用B+树算法，DB也不例外，同时还支持HASH算法、Recno算法和Queue算法。接下来，我们将讨论这些算法的特点以及如何 根据需要存储数据的特点进行选择。 B+树算法 B+树是一个平衡树，关键字有序存储，并且其结构能随数据的插入和删除进行动态调整。为了代码的简单，DB没有实现对关键字的前缀码压缩。B+树支持对数据查询、插入、删除的常数级速度。关键字可以为任意的数据结构。 HASH算法 DB中实际使用的是扩展线性HASH算法（extended linear hashing），可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。 Recno算法 要求每一个记录都有一个逻辑纪录号，逻辑纪录号由算法本身生成。实际上，这和关系型数据库中逻辑主键通常定义为int AUTO型是同一个概念。Recho建立在B+树算法之上，提供了一个存储有序数据的接口。记录的长度可以为定长或不定长。 Queue算法 和Recno方式接近, 只不过记录的长度为定长。数据以定长记录方式存储在队列中，插入操作把记录插入到队列的尾部，相比之下插入速度是最快的。 对算法的选择首先要看关键字的类型，如果为复杂类型，则只能选择B+树或HASH算法，如果关键字为逻辑记录号，则应该选择Recno或 Queue算法。当工作集关键字有序时，B+树算法比较合适；如果工作集比较大且基本上关键字为随机分布时，选择HASH算法。Queue算法只能存储定 长的记录，在高的并发处理情况下，Queue算法效率较高；如果是其它情况，则选择Recno算法，Recno算法把数据存储为平面文件格式。 范例 DB常用函数使用范例 #include &#60;db.h&#62; #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;pthread.h&#62; /* DB的函数执行完成后，返回0代表成功，否则失败 */ void print_error(int ret) { if(ret != 0) printf("ERROR: %s\n",db_strerror(ret)); } /* 数据结构DBT在使用前，应首先初始化，否则编译可通过但运行时报参数错误 */ void init_DBT(DBT * key, DBT * data) { memset(key, 0, sizeof(DBT)); memset(data, 0, sizeof(DBT)); } void main(void) { DB *dbp; DBT key, data; u_int32_t flags; int ret; char *fruit = "apple"; int number = 15; typedef struct customer { int c_id; char name[10]; char address[20]; int age; } CUSTOMER; CUSTOMER cust; int key_cust_c_id [...]]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux和Unix安全特性概要</title>
		<link>http://www.aidiu.com/wp/archives/48</link>
		<comments>http://www.aidiu.com/wp/archives/48#comments</comments>
		<pubDate>Fri, 15 Jan 2010 01:22:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[*NIX]]></category>
		<category><![CDATA[安全特性]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=48</guid>
		<description><![CDATA[在讨论如何应用Linux或Unix安全特性指南前，先从一个程序员的角度了解一下这些特性是很有用的。本节对这些在几乎所有类Unix系统上广泛应用的特性进行简要的描述。尽管如此，还是需要注意类Unix系统不同版本间相当大的差异，以及不是所有系统都具有这里所描述的能力。本节也着重提到了Linux特有的一些扩展或特性；从安全编程的角度来看，不同Linux发行版非常相似，因为它们本质上都使用相同的内核与C库（以及鼓励任何创新迅速传播的基于GPL的许可）。本文不讨论很多类Unix系统都不实现的强制存取控制（MAC）的实现之类的问题。如果你已经知道了这些特性，可以跳过本节继续阅读。 很多编程指南简单地略过了Linux或Unix有关安全的部分，而且忽略了重要的信息。特别是它们经常讨论通常情况下“如何应用”某物，而不考虑影响这些应用的安全属性。与此相反，在单个函数的手册页中有大量的详细信息，但是有时手册页对于如何使用每个单独函数的详细讨论模糊了关键的安全性问题。本节试图弥补此缺憾；只为程序员提供Linux下可能会用到的安全机制的全局概貌，但特别注重有关安全问题的分支。本节比经典的编程指南更为深入，特别是集中在有关安全的问题上，并指出从哪里可以获得进一步的资料。 首先，是基本情况。 Linux和Unix从根本上来说可以分为两部分：内核与“用户空间”。绝大多数程序运行在用户空间（在内核之上）。Linux支持“内核模块”的概念，简单地说就是在内核里动态载入代码的能力，但还是有这样的基本划分。有些其它的系统（如HURD）是基于“微内核”的系统；它们有一个功能很有限的小内核和一组“用户”程序来实现传统上由内核实现的底层函数。 有些类Unix系统进行了大量修改以支持增强的安全性，特别是支持美国国防部对强制存取控制（B1级别以上）。本文的目前版本不涉及这些系统或这些问题；我希望在未来的版本中可以加入这些内容。 当用户登录时，他们的用户名被映射为整数，来标明自己的“UID”（用户ID）和作为其中成员的“GID”（组ID）。UID 0是传统上被称为“root”的具有特权的用户（角色），在绝大多数类Unix系统（包括Unix）中root可以强制变更大多数的安全性检查，被用来管理系统。就安全性而言，进程是唯一的“主题”（也就是说，只有进程是活动的目标）。进程可以访问各种数据对象，特别是文件系统对象（FSO）、系统V进程间通信（IPC）对象和网络端口。进程还可以设置信号。其它有关安全的主题包括配额与限制、库、审核和PAM。以下几节对此进行详细说明。 进程 在类Unix系统上，用户级别的活动由运行的进程来实现。绝大多数Unix系统支持作为独立概念的“线程”；一个进程内的线程共享内存，而且系统的调度器实际上是调度线程。Linux的做法与此不同（依我看是做得更好）：线程与进程没有本质的差异。在Linux下，在某个进程创建另一个进程时，它可以选择共享哪些资源（比如内存可以共享）。随后Linux内核会进行优化以获得线程级的速度；参见clone(2)以了解更多信息。值得注意的是Linux内核的开发者倾向于使用“任务”一词，而不是“线程”或“进程”，但外界的文档则倾向于使用进程一词（所以我在文中如此使用）。在多线程应用程序编程时，使用某个标准的线程库来隐藏这些差异通常要好一些。这不仅使线程更易于移植，而且有些库通过把多个应用程序级的线程实现为单个操作系统线程的方法提供一个间接的附加级别；这可以改进某些系统上一些应用程序的性能。 进程属性 在类Unix系统中，每个进程所有的典型属性如下： RUID, RGID &#8212; 运行进程的用户的真实用户ID和组ID EUID, EGID &#8212; 用于权限检查（文件系统除外）的有效用户ID和组ID SUID, SGID &#8212; 保存的用户ID和组ID；用来支持下面要讨论的切换许可“开和关”。不是所有的类Unix系统都支持它。 补充群组 &#8212; 用户有成员资格的群组（GID）列表。 umask &#8212; 在创建一个新的文件系统对象时决定缺省访问控制设置的一组比特位；参见umask(2)。 scheduling parameters &#8212; 每个进程都有一个调度策略，缺省策略为SCHED_OTHER的进程还具有nice、priority和counter的附加属性。参见sched_setscheduler(2)以了解更多信息。 limits &#8212; 每个进程的资源限制（参见下文）。 filesystem root &#8212; 进程角度的根文件系统起始处；参见see chroot(2)。   下面是与进程有关的不太普通的属性： FSUID, FSGID &#8212; 用于文件系统访问检查的用户ID和组ID；一般等于相应的EUID和EGID；这是一个Linux特有的属性。 capabilities &#8212; POSIX能力信息；一个进程实际上有三组能力：有效的、可继承的和许可的能力。参见下文中有关POSIX能力的更多信息。版本2.2以上的Linux内核支持这一点；有些其它的类Unix系统也支持，但不够普遍。   在Linux下，如果确实需要了解哪些属性与每个进程相关，最可靠的信息源是Linux源码，特别是/usr/include/linux/sched.h中的task_struct定义。 创建新进程的可移植方式是使用fork(2)调用。BSD作为优化技术引进了一个叫做vfork(2)的变种。vfork(2)的使用原则很简单：如果可以避免就不要使用它。vfork(2)与fork(2)不同，在调用execve(2V)或退出之前，子进程借用父进程的内存和控制线程；在子进程其资源时，父进程被悬挂。其原理是在旧的BSD系统中，fork(2)实际上会导致内存复制，而vfork(2)则不会。Linux则根本不会出现这个问题；因为Linux内部采用写时复制的语义，只有在改变时才复制内存页（实际上Linux还是有些表要复制的；在绝大多数情况下由此带来的负荷不大）。尽管如此，由于有些程序依赖于vfork(2)，最近Linux实现了BSD的vfork(2)语义（以前Linux下的vfork(2)只是fork(2)的别名）。vfork(2)的问题在于，进程要想不与其父进程互相干扰需要相当的技巧，特别是使用高级语言。其后果在于：一旦代码改变，甚或编译器版本变化，都会很容易使调用了vfork(2)的程序失效。在绝大多数情况下应该避免vfork(2)；它的主要用途在于支持需要vfork语义的老程序。 Linux支持Linux特有的clone(2)调用。该调用与fork(2)类似，但允许明确说明哪些资源可以共享（如内存、文件描述符等等）。可移植程序不应该直接使用此调用；而是应该象前面所说的那样，依赖于使用该调用实现线程的线程库。 本文不是编写程序的完全手册，所以将跳过大量存在的处理进程的信息。可以参见wait(2)、exit(2)一类的文档以了解更多内容。 POSIX能力 POSIX能力是支持把通常由root拥有的特权分割为更多更专门特权的一组比特位组合。POSIX能力是由一个IEEE标准草案定义的；它不是Linux所独有的，但也并非其它类Unix系统普遍支持的。Linux内核2.0不支持POSIX能力，版本2.2增加了对进程的POSIX能力的支持。当Linux文档（包括本文）中提到“要求root权限”时，实际上几乎都是意味着像能力文档中所说的那样“要求某个能力”。如果想知道要求的特定能力，请在能力文档中进行查找。 在Linux中，其最终目的是允许能力与文件系统中的文件联系起来；但到本文档完成时，Linux还不支持这一点。Linux对能力传递有支持，但缺省情况下被禁用。版本2.2.11的Linux增加了一个叫做“能力绑定设置”的特性，使能力的应用更直接更有用。能力绑定设置是一组允许被系统中任意进程所拥有的能力（否则，只有特殊的初始化进程可以拥有这些能力）。如果某能力不在此绑定设置中，则无论有没有权限，都不可以被任意进程所使用。例如，此特性可用来禁止内核模块加载。利用此特性的一个工具实例是LCAP http://pweb.netcom.com/~spoon/lcap/。 更多有关POSIX能力的资料可以从 ftp://linux.kernel.org/pub/linux/libs/security/linux-privs 获得。 进程创建与操作 进程可以用fork(2)、不推荐使用的vfork(2)或者Linux独有的clone(2)来创建；这些系统调用都复制当前进程，并从中创建两个进程。一个进程可以通过调用execve(2)、或它的各种前端（参见exec(3)、system(3)和popen(3)）来执行一个不同的程序。 在程序执行时，其文件设置自己的setuid或setgid比特位，进程的EUID或EGID（分别）被设置为文件的EUID或EGID值。在用来支持setuid或setgid脚本时，由于存在竞争状态，此功能会导致一个老的UNIX安全漏洞。在内核打开文件来查看运行的解释器和（正在设置ID的）解释器回转并重新打开文件以解释文件之间，攻击者可以改变文件（直接或通过符号连接）。 不同的类Unix系统采用不同的方法处理setuid脚本的安全问题。某些系统，如Linux，在执行脚本时完全忽略setuid和setgid比特位，这显然是一个安全的措施。SysVr4和BSD 4.4的大多数现代发行版使用一种不同的方法来避免内核竞争状态。在这些系统中，当内核把要打开的setuid脚本的名称传递给解释器时，不使用路径名（这会允许竞争状态），而是传递文件名/dev/fd/3。这是一个脚本已经打开的特殊文件，所以不会出现攻击者可以利用的竞争状态。即使在这些系统上，我依然建议不要在安全程序中使用setuid/setgid脚本编程语言，下面会进一步讨论这个问题。 在某些情况下，进程会影响各种UID和GID的值；参见setuid(2)、seteuid(2)、setreuid(2)和Linux特有的setfsuid(2)。特别是保存的用户ID（SUID）属性允许可信任的程序临时切换自己的UID。类Unix系统支持按以下规则使用SUID：如果RUID被改变，或者EUID被设置为不等于RUID的值，SUID就被设为新的EUID。非特权用户可以用自己的SUID来设置EUID，把RUID设为EUID，以及把EUID设为RUID。 Linux特有的进程属性FSUID是用来允许NFS服务器一类的程序把自己的文件系统权限限制在某些给定的UID上，而不给这些UID向进程发送信号的许可。一旦EUID被改变，FSUID就被改为新的EUID值；FSUID的值可以用Linux独有的调用setfsuid(2)单独进行设置。注意，非root调用者只能把FSUID设置为当前的RUID、EUID、SEUID或当前的FSUID。]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/48/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>管理高手擅长“后”下手为强</title>
		<link>http://www.aidiu.com/wp/archives/25</link>
		<comments>http://www.aidiu.com/wp/archives/25#comments</comments>
		<pubDate>Tue, 12 Jan 2010 07:19:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[人生处世]]></category>
		<category><![CDATA[管理知识]]></category>
		<category><![CDATA[职场态度]]></category>
		<category><![CDATA[管理]]></category>

		<guid isPermaLink="false">http://www.aidiu.com/wp/?p=25</guid>
		<description><![CDATA[大多数的同仁都很兴奋，因为单位里调来了一位新主管，据说是个能人，专门被派来整顿业务。可是，日子一天天过去，新主管却毫无作为，每天彬彬有礼进办公室 后，便躲在里面难得出门。那些紧张得要死的坏分子，现在反而更猖獗了。他哪里是个能人，根本就是个老好人，比以前的主管更容易唬。 4个月过去了，新主管却发威了，坏分子一律开革，能者则获得提升。下手之快、断事之准，与4个月前表现保守的他，简直像换了一个人。年终聚餐时，新主管在酒后致辞：“相信大家对我新上任后的表现和后来的大刀阔斧，一定感到不解。现在听我说个故事，各位就明白了。” “我 有位朋友，买了栋带着大院的房子。他一搬进去，就对院子全面整顿，杂草杂树一律清除，改种自己新买的花卉。某日，原先的房主回访，进门大吃一惊地问，那株 名贵的牡丹哪里去了？我这位朋友才发现，他居然把牡丹当草给割了。后来他又买了一栋房子，虽然院子更是杂乱，他却是按兵不动，果然冬天以为是杂树的植物， 春天里开了繁花；春天以为是野草的，夏天却是锦簇；半年都没有动静的小树，秋天居然红了叶。直到暮秋，他才认清哪些是无用的植物而大力铲除，并使所有珍贵 的草木得以保存。” 说到这儿，主管举起杯来，“让我敬在座的每一位！如果这个办公室是个花园，你们就是其间的珍木，珍木不可能一年到头开花结果，只有经过长期的观察才认得出啊。” 点评：在搞清楚真相——这需要时间和观察——之前，就盲目行动，那是鲁莽，不是果断！中国人——至少我身边不乏这样的——多喜欢这种貌似的“果断”，结果，要么使事情越来越乱，要么使大家产生一种流于表面的工作风气，贻害无穷！ （© 世界经理人）]]></description>
		<wfw:commentRss>http://www.aidiu.com/wp/archives/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

