<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8993667273832591848</id><updated>2011-11-28T08:50:46.263+08:00</updated><category term='生活'/><category term='旅游'/><category term='评论'/><category term='csdn'/><category term='爱情'/><title type='text'>吴楚狂生</title><subtitle type='html'>-  -   -吴志敏的博客</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default?start-index=101&amp;max-results=100'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>206</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-673039127566530372</id><published>2009-04-23T21:54:00.007+08:00</published><updated>2009-04-23T22:29:00.309+08:00</updated><title type='text'>高端？低端？谢谢！</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;  首先恭喜你！为什么呢?&lt;br /&gt;因为如果你看了这个标题后，并进来读这篇文章时，表示你是一个高端互联网用户了。&lt;br /&gt;这篇文章我们就来看一下互联网中高端与低端。&lt;br /&gt;何为高端，何为低端？可以用地图来解释一下，如果一个互联网产品的使用用户开始从我天朝东部发达地区开始，那就可以把它称为高端；反之，如果开始时的用户从天朝的各个地方或是从西部开始，那么基本上可以把它称为低端。&lt;br /&gt;那么，你一定会对此为意见了！不急，一家之言而已。&lt;br /&gt;今天先来罗列一下。&lt;br /&gt;&lt;ol&gt;&lt;li&gt;  &lt;a href="http://www.hao123.com/"&gt;www.hao123.com&lt;/a&gt; VS &lt;a href="http://www.h2w1.com/"&gt;www.h2w1.com&lt;/a&gt;&lt;br /&gt;好123是一个让做互联网的专业人士感到大为一惊的网站，据说每天进帐400W RMB。定位绝对低端，现在已经是百度旗下！它的页面不但是在“强暴”你的眼睛，而且它还与国策有一样的特质，保持不变！！而&lt;a href="http://www.h2w1.com/"&gt;合二为一&lt;/a&gt;&lt;a href="http://www.h2w1.com/"&gt;(www.h2w1.com&lt;/a&gt;)，定位是高端用户，像你可以试试，一个自定义网站，可以方便你把公司内网地址写上，可以方便你换浏览器，换电脑不用怕忘记网址，还有可以让你存些“隐私”网址。这点对有特别喜好的人可能是卖点。不过它现在被百度封杀，百度太看得起它了！我在用，而且推荐你也用，高效人士的不二首页！&lt;br /&gt;&lt;/li&gt;&lt;li&gt;www.51.com VS www.xiaonei.com&lt;br /&gt;说到sns，无数人为它疯狂啊。特别是开心的崛起，简直就是神话！51，公司在上海，可是在二级城市才可以看到大量广告，在杭州你是基本看不到的。以“边缘色情”为主要卖点，把大量二三级城市用户吸引上来!去年被看好得不得了，它是低端的。而校内，从校园开始，大学校园开始，大学虽然各地都有，但是以东部为主来推广，因为这个东西大学生容易接受，也有这个找同学的需求。但是走出校园就有点难度了，以找同学找人，六度理论对于我朝百姓有点玩。不像开心，就是让你玩！两个都不用。因为QQ也开始做了，我有朋友同学都有QQ，我不得不用QQ的sns。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;www.xiami.com VS www.1ting.com&lt;br /&gt;虾米，可能你没听过，一个sns音乐社区，音质很好，这是一个卖点。有些高端，首先要让人知道mp3还有音质好坏之分就是个高端的问题。一听，页面和hao123差不多。就是听，从来没让我知道还有个mp3压缩率。我在知道有这么一回事后，就都去xiami了。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;msn VS QQ&lt;br /&gt;一个是外国货，一个是本地体货。他们的事情大家比较熟悉了。msn面向白领，高端了吧，QQ，什么人都面向，差点让天朝人以为上QQ才是真的上网！！！我都有用，因为我的朋友什么人都有！&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Google Reader VS www.xianguo.com&lt;br /&gt;一个外国货，我在用，比较爽，可以用键盘控制，体验不错。另一下，使用人群比较杂了，比较亲民了。但文章整理得好！！&lt;/li&gt;&lt;li&gt;Gmail   VS mail 163&lt;br /&gt;一个很爽的gmail，一个是国内使用率最大的邮箱，gmail功能多，只能高端人群感到用得到，工程师文化的产物。在米国很利害！我在用。相信看文章的你也有。而163，简单实用！如果真是用foxmail或outlook，管他是姓g还是姓163.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-673039127566530372?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/673039127566530372/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=673039127566530372&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/673039127566530372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/673039127566530372'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post_23.html' title='高端？低端？谢谢！'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2513565554696071863</id><published>2009-04-15T21:03:00.003+08:00</published><updated>2009-04-15T21:11:50.999+08:00</updated><title type='text'>e-say英语测试结果</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_aW_1WofzRZo/SeXcxhCzYJI/AAAAAAAADBQ/aHX79c8wmT4/s1600-h/test_result.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 722px; height: 489px;" src="http://1.bp.blogspot.com/_aW_1WofzRZo/SeXcxhCzYJI/AAAAAAAADBQ/aHX79c8wmT4/s320/test_result.JPG" alt="" id="BLOGGER_PHOTO_ID_5324904877677306002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="12"&gt;本表是根据学员当天的预习和上课情况综合给出的学习评价表。 &lt;/div&gt;&lt;br /&gt;&lt;div class="scorebg"&gt; &lt;div class="score"&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="background-image: url(/images/level/81.gif);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="background-image: url(/images/level/92.gif);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="background-image: url(/images/level/83.gif);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="background-image: url(/images/level/84.gif);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span style="background-image: url(/images/level/95.gif);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="appraise"&gt;&lt;b&gt;Today's Correction &amp;amp; Comment:&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Hi James&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Good evening to you! I think your speaking is quite good!&lt;/p&gt; &lt;p&gt;all you need to do is enhance it.&lt;/p&gt; &lt;p&gt;speak english everyday.&lt;/p&gt; &lt;p&gt;It was graet talking with you!&lt;br /&gt;hope to talk to you again!&lt;br /&gt;&lt;/p&gt; &lt;p id="textc"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;Thank you&lt;br /&gt;Teacher thina &lt;/div&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2513565554696071863?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2513565554696071863/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2513565554696071863&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2513565554696071863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2513565554696071863'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/e-say.html' title='e-say英语测试结果'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aW_1WofzRZo/SeXcxhCzYJI/AAAAAAAADBQ/aHX79c8wmT4/s72-c/test_result.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-3635710512956637738</id><published>2009-04-15T16:59:00.012+08:00</published><updated>2009-04-15T22:20:37.109+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='评论'/><title type='text'>孩子上网是爸爸管还是妈妈管？</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt; 孩子上网是爸爸管还是妈妈管？让首页来管。&lt;br /&gt;细细道来。&lt;br /&gt;&lt;br /&gt;我也快要有孩子了，快要为人父母，感觉一下子就不同了。&lt;br /&gt;前些天阿姨因他家小成成的上网问题，狠狠地批评了成成。电话过来问我应该怎样引导孩子上网？阿姨说不让孩子上网，姨夫说要让孩子学会用电脑。&lt;br /&gt;这个问题可是个大问题啊！！无数&lt;a href="http://learning.sohu.com/20060111/n241385885.shtml"&gt;专家、学者&lt;/a&gt;都有&lt;a href="http://www.it.com.cn/f/games/056/7/125959.htm"&gt;各自&lt;/a&gt;的观点，而各种学校也有各自的做法，甚至于大学有规定大学一年级学生不准拥有电脑！！！&lt;br /&gt;现在对于孩子来说，电脑，网络是不可能让他不接触的，如果是强硬政策的话。只怕在家长不知道的情况下会更不可控制。&lt;br /&gt;所以我给她的回答是正确引导。当然我觉得也是最不好执行的方法。想来想去，给孩子一个合适的&lt;a href="http://www.blogger.com/www.h2w1.com"&gt;自定义上网首页&lt;/a&gt;是一个现在来说最好执行的方法！&lt;br /&gt;&lt;br /&gt;仔细看一下这个问题的原因：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;好奇&lt;/li&gt;对于四五岁的孩子的说，这个世界对于他实在是太新奇了，一方面它已经学习到和人打交道的方法，另一方面，他对于每天所看到的，接触到的都有新的认识，而且总是随着性子在玩。好奇心是孩子天生的，也是一切学习新知的内在动力。我觉得家长要好好利用这点。网络对于一个孩子来说，吸引他的东西太多了，连成人都天天泡在里面，何况孩子。&lt;br /&gt;&lt;li&gt;好玩&lt;/li&gt;如果孩子不好玩，那不是他有问题就是这个家庭有问题了。但是孩子的玩总是可以正确引导的。对于孩子上哪些网站的问题上，很明显，健康，向上，利于形成正确的人生观，价值观。&lt;br /&gt;&lt;/ol&gt;  所以，到底是到了一个可以执行的点了，那就是尽量让孩子上一些好的网站。但是每个家长不可能都是专家，所以这点也还是有点难度的。但是不管怎样这已经是个技术问题了。&lt;br /&gt;据我的观察和自己的上网习惯，我知道中国人都喜欢用鼠标点，而不直接用键盘写，那26个字母的键盘也不是咱东方人发明的嘛，而对于四五岁的孩子，一开始是不会用键盘写东西的。&lt;br /&gt;所以两点：&lt;br /&gt;1.  给他一批家长认为比较合适的网站列表。&lt;br /&gt;2.限制浏览器只可以上这个网站。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;而第二点对于大多数不是专业级的家长，太高深了。所以第一点比较合适，如果家长还是担心，那么孩子一般只是点的习惯可以让你放心。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;当然家长抄出一个列表来贴在电脑前总太像对立角色了。所以最好就是让首页做成网站列表，用hao123?不行！因为通过他没有重点，上面的网站不适合孩子。&lt;br /&gt;所以就用&lt;a href="http://www.h2w1.com/"&gt;www.h2w1.com&lt;/a&gt; 这样的自定义首页网站，http://doumiao.h2w1.com/, http://huaduo.h2w1.com/很简单很实用，家长为孩子定一些网站，孩子点点就可以了。这个年龄段正确的上网习惯形成是比较容易正确引导的。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-3635710512956637738?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/3635710512956637738/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=3635710512956637738&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/3635710512956637738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/3635710512956637738'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post_15.html' title='孩子上网是爸爸管还是妈妈管？'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1959821821965655854</id><published>2009-04-10T09:26:00.000+08:00</published><updated>2009-04-10T09:27:17.788+08:00</updated><title type='text'>转，大话西游，英语版</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;p&gt;You want? &lt;a target="_blank" href="http://dict.hjenglish.com/w/Speak%20up"&gt;Speak up&lt;/a&gt; if you want! Why do you keep silent?&lt;br /&gt;&lt;span style="color:#008000;"&gt;你想要啊？你想要就说吧，你不说我怎么知道你想要呢？&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You &lt;a target="_blank" href="http://dict.hjenglish.com/w/scare"&gt;scare&lt;/a&gt; me again.&lt;br /&gt;&lt;span style="color:#008000;"&gt;你又在吓我 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How many brothers and sisters do you have? Are your parents alive? Speak up! I just want to make a new friend when I'm going to die.&lt;br /&gt;&lt;span style="color:#008000;"&gt;你有多少兄弟姐妹？你父母尚在吗？你说句话啊！我只是想在临死之前多交一个朋友而已. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Being a &lt;a target="_blank" href="http://dict.hjenglish.com/w/devil"&gt;devil&lt;/a&gt; is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a &lt;a target="_blank" href="http://dict.hjenglish.com/w/hybrid"&gt;hybrid&lt;/a&gt;.&lt;br /&gt;&lt;span style="color:#008000;"&gt;所以说做妖就像做人一样，要有仁慈的心，有了仁慈的心，就不再是妖，是人妖. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Is this a slaughter house?&lt;br /&gt;&lt;span style="color:#008000;"&gt;莫非是一家黑店？ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's a long night, no mood to sleep.&lt;br /&gt;&lt;span style="color:#008000;"&gt;长夜漫漫，无心睡眠 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://ts.hjenglish.com/movie/67576/" title="【双语】电影美剧中9句男人哄女人的甜言蜜语"&gt;&lt;img src="http://pic.hjbbs.com/news/200904015494064216.jpg" border="0" width="316" height="196" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://ts.hjenglish.com/movie/70035/"&gt;愚人节短片：别学英语了！全世界都在讲中国话&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If I can't be with the one who I love, I won't be happy even if I were Heaven &lt;a target="_blank" href="http://dict.hjenglish.com/w/Emperor"&gt;Emperor&lt;/a&gt;.&lt;br /&gt;&lt;span style="color:#008000;"&gt;如果不能跟我喜欢的人在一起，就算让我做玉皇大帝我也不会开心 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Should I show you my heart? &lt;span style="color:#008000;"&gt;&lt;br /&gt;要不要我把心掏出来给你看看啊？&lt;/span&gt;      &lt;/p&gt;&lt;p&gt;But happiness is always a flash of time. We only have &lt;a target="_blank" href="http://dict.hjenglish.com/w/endless"&gt;endless&lt;/a&gt; pain.&lt;br /&gt;&lt;span style="color:#008000;"&gt;可惜快乐永远都是短暂的，换来的只是无穷无尽的痛苦和长叹 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you discover that you’ve fallen in love with somebody you hate, this &lt;a target="_blank" href="http://dict.hjenglish.com/w/affair"&gt;affair&lt;/a&gt; is really hurting you.&lt;br /&gt;&lt;span style="color:#008000;"&gt;有一天当你发觉你爱上一个让你讨厌的人，这段感情才是最要命的 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But how can I fall in love with a person I hate? Please give me a reason, please!&lt;br /&gt;&lt;span style="color:#008000;"&gt;可我怎会爱上一个我讨厌的人呢？请你给我一个理由好不好？拜托！ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We don't need any reason to love a person. Don't we? Do we?&lt;br /&gt;&lt;span style="color:#008000;"&gt;爱一个人需要理由吗？不需要吗？需要吗？ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Love means pain.&lt;br /&gt;&lt;span style="color:#008000;"&gt;爱一个人是痛苦的 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can just get my body instead of my &lt;a target="_blank" href="http://dict.hjenglish.com/w/spirit"&gt;spirit&lt;/a&gt;.&lt;br /&gt;&lt;span style="color:#008000;"&gt;这样的话只是得到我的肉体，并不能得到我的灵魂 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have had my best love before, but I didn’t treasure her. When I lost her, I fell regretful. It is the most painful matter in this world. If God can give me another chance, I will say 3 words to her --- I love you. If you have to give a time limit to this love, I hope it is 10 thousand years.&lt;br /&gt;&lt;span style="color:#008000;"&gt;曾经有一段真挚的爱情摆在我的面前，我却没有珍惜，直到失去才追悔莫及。人世间最大的痛苦莫过于此。如果上天再给我一次机会的话，我一定会对那女孩说三个 字：我爱你。如果非要在这段爱情前加个期限的话，我希望是一万年。&lt;/span&gt;&lt;/p&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1959821821965655854?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1959821821965655854/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1959821821965655854&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1959821821965655854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1959821821965655854'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post_10.html' title='转，大话西游，英语版'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1672730800738158759</id><published>2009-04-09T13:23:00.006+08:00</published><updated>2009-04-09T13:55:33.444+08:00</updated><title type='text'>twisted学习笔记1</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;   最在项目中用到twisted,所以对于它就有了一个比较初级的认识。&lt;br /&gt;  对于在python中大名鼎鼎的twisted,想必相当多人是知道的。使用了之后确实让人感觉很爽！&lt;br /&gt;  好了，不广告了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;学习twisted的资料中文比较少，不过还是有许多博客对它有介绍的。我学习主要是看《&lt;span class="docEmphasis"&gt;Twisted Network Programming Essentials&lt;/span&gt; 》，和&lt;a href="http://www.twistedmatrix.com/"&gt;twisted的官方网站&lt;/a&gt; 。这两个资源都是比较好了，当然还有它的mail list。&lt;br /&gt;&lt;br /&gt;1. why twisted&lt;br /&gt;&lt;ul&gt;&lt;li&gt;      python-powered&lt;/li&gt;&lt;li&gt;      Asynchronous &amp;amp; event-based，这点很重要，异步且事件驱动&lt;/li&gt;&lt;li&gt;      open source&lt;/li&gt;&lt;li&gt;      community-backed&lt;/li&gt;&lt;li&gt;      an integration-friendly platform&lt;/li&gt;&lt;/ul&gt;2. Start twisted event loop&lt;br /&gt;&lt;ul&gt;&lt;li&gt;twisted是事件驱动的网络编程框架，它和一般程序的区别就在于它不是按程序员事先的设定的顺序来执行，而是对外部事件而作出反应。就像gui中，对于用户点击一个Button事件，而程序作出的反应。用户点击button就是一个事件。&lt;/li&gt;&lt;li&gt;响应事件其实就是一个不断的循环，而在twisted里，有个类reactor就是来做这个事情的。此外，它还要做调度，线程，连接网络及监听端口等。&lt;/li&gt;&lt;/ul&gt;3.Establish a TCP connection&lt;br /&gt;&lt;ul&gt;&lt;li&gt;在twisted中对于这个例子，要用到是reactor, protocol，要建一个tcp客户端，然后连接到一个服务端的80端口上。&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;from twisted.internet import reactor, protocol&lt;br /&gt;class QuickDisconnectProtocol(protocol.Protocol):&lt;br /&gt;   def connectionMade(self):&lt;br /&gt;            print "Connected to %s." % self.transport.getPeer( ).host&lt;br /&gt;                    self.transport.loseConnection( )&lt;br /&gt;class BasicClientFactory(protocol.ClientFactory):&lt;br /&gt;         protocol = QuickDisconnectProtocol      &lt;br /&gt;def clientConnectionLost(self, connector, reason):        &lt;br /&gt;          print "Lost connection: %s" % reason.getErrorMessage( )&lt;br /&gt;          reactor.stop( )&lt;br /&gt;def clientConnectionFailed(self, connector, reason):&lt;br /&gt;          print "Connection failed: %s" % reason.getErrorMessage( )&lt;br /&gt;          reactor.stop( )&lt;br /&gt; reactor.connectTCP('www.google.com', 80, BasicClientFactory( ))&lt;br /&gt;reactor.run( ) &lt;/blockquote&gt;——————————————————————————————————————————————————&lt;br /&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1672730800738158759?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1672730800738158759/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1672730800738158759&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1672730800738158759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1672730800738158759'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/twisted.html' title='twisted学习笔记1'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-9020827035446578628</id><published>2009-04-07T16:41:00.002+08:00</published><updated>2009-04-07T16:59:51.750+08:00</updated><title type='text'>有感于百度“老人搜索”</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;   今天突然看到百度的“老人搜索”，http://123.baidu.com&lt;br /&gt;   终于，看到了巨头对于个性化导航的行动。而这正是互联网和网民不断发展的必然结果。之前大家都对hao123的成功看到吃惊，那么下一个网址导航的成功将会是个性化的。&lt;br /&gt;   对于hao123或类似网站，大家可能都有用到，即使不愿去没有天天用这个没有美感的网页，也还是不得不用到的。这个需求是钢性的，因为任何一个人的接触面总是有限。&lt;br /&gt;   而另一方面来讲，正因为每个人的生活不一样，接触的事物不一样，他们各自要上的网页其实是应该不一样的。当然在现在的互联网现况下，可能大家都只上QQ，百度，新浪。但是随着发展，大家上的网站是会和我们生活中去酒吧一样，去自己喜欢的。&lt;br /&gt;  所以像百度刚推出的老人首页，他就是一个起点，我想接着会有小朋友搜索，mm搜索等等，因为需求是一样的。但是作为百度，推出这些让我有点吃惊，我以为会是123.hao123.com。难道他要把hao123弱化？&lt;br /&gt;  接着说。&lt;br /&gt;  在网上找了一下，自己定义首页网站有几家，其中&lt;a href="http://www.h2w1.com"&gt;www.h2w1.com&lt;/a&gt; 是用户体验做得最好的。对于相对高端的用户，可以自己去定义首页，但是对于“偷懒”的用户，还是应该有一些能用的，比较123.h2w1.com。&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-9020827035446578628?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/9020827035446578628/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=9020827035446578628&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/9020827035446578628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/9020827035446578628'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post_3878.html' title='有感于百度“老人搜索”'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6085780095467588777</id><published>2009-04-07T16:07:00.002+08:00</published><updated>2009-04-07T16:28:42.212+08:00</updated><title type='text'>产品的力量</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt; 最近看了好几篇文章关于互联网中产品的力量。&lt;br /&gt;&lt;br /&gt;很多网站刚开始是一个很突出很核心的需求的推动下去做出一个好产品的，在核心产品中不断推进，不断完善，之后再去做周边的。当然这也是比较理想的，但是现实中总会有差距。最现实的就是钱的问题（这里面会包含很多种情况，但是都是一个钱字），这个压力是最大的。在这个压力下，很多事情就会变，所以就不得不分出一些资源去做非核心产品。可能在最后完善核心产品时，公司已经不存在了。&lt;br /&gt;  在所有成功的互联网企业里我们都可以看到他们的核心产品是很强，很利害的。所以我们很所以地说产品好，才是真的好。在没有其它因素的时候，这真是王道！但是在通向成功的路上的时候，往往很多公司都是很做来钱快的，饮鸩止渴。但是他们在各自当然情况下往往是边际收益最大的形为。&lt;br /&gt;   但，产品的力量是最大的。&lt;br /&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6085780095467588777?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6085780095467588777/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6085780095467588777&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6085780095467588777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6085780095467588777'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post_07.html' title='产品的力量'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8803850687852447899</id><published>2009-04-06T22:19:00.001+08:00</published><updated>2009-04-06T22:19:59.372+08:00</updated><title type='text'>新医改摈弃市场化路线回归公益本性</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;h1 id="artibodyTitle"&gt;新医改摈弃市场化路线回归公益本性&lt;/h1&gt;&lt;br /&gt;&lt;h1 id="artibodyTitle"&gt;新医改摈弃市场化路线回归公益本性&lt;/h1&gt;&lt;br /&gt;&lt;h1 id="artibodyTitle"&gt;新医改摈弃市场化路线回归公益本性&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;以此为贺！&lt;br /&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8803850687852447899?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8803850687852447899/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8803850687852447899&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8803850687852447899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8803850687852447899'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/04/blog-post.html' title='新医改摈弃市场化路线回归公益本性'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-4602960691623447269</id><published>2009-03-28T09:20:00.003+08:00</published><updated>2009-03-31T13:54:22.241+08:00</updated><title type='text'>今日又结婚咯</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;今天又结婚咯。&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  3月9 号在老家办过婚宴，3月28号在杭州再办一场。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/cRcY-08dWPfSeVcCTp9ZaQ?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_aW_1WofzRZo/SYm2SPPA6II/AAAAAAAABaE/EfUOu5tcG3g/s144/100.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/babatu/bsKfXF?feat=embedwebsite"&gt;吴志敏-魏佳俊&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-4602960691623447269?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/4602960691623447269/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=4602960691623447269&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4602960691623447269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4602960691623447269'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/03/blog-post_28.html' title='今日又结婚咯'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_aW_1WofzRZo/SYm2SPPA6II/AAAAAAAABaE/EfUOu5tcG3g/s72-c/100.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7977758875641826109</id><published>2009-03-26T13:21:00.005+08:00</published><updated>2009-03-26T13:30:04.765+08:00</updated><title type='text'>发现一个不错的首页自定义网站</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt;   最近几年随着hao123的成功，这类网站一夜之间不知出了多少？！&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div&gt;  但是，都是长着同一个样子的。&lt;/div&gt;&lt;div&gt;  对于我来说，每次看到别人的电脑上首页是hao123，我都感觉很不爽，就只是因为它的样子太“土”了。对于我来说不喜欢。&lt;/div&gt;&lt;div&gt;  而对于像我这样天天对着电脑的人来说，网址导航还真是需要，自己也会时不时地上一下hao123,或是265之类的网站。但是在这里要找到一些和自己比较相关的或是比较喜欢的网站是比较难的。&lt;/div&gt;&lt;div&gt;  最近发现了一个可以自定义的小网站，感觉不错，www.h2w1.com，我也定制了一个kauu.h2w1.com，它的界面清爽，使用还是比较方便的。个人感觉比较实用。&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_aW_1WofzRZo/ScsSyPjQFxI/AAAAAAAAB00/nEQttGLKJAQ/s200/ScreenShot001.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 156px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5317364439418148626" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7977758875641826109?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7977758875641826109/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7977758875641826109&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7977758875641826109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7977758875641826109'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/03/blog-post.html' title='发现一个不错的首页自定义网站'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aW_1WofzRZo/ScsSyPjQFxI/AAAAAAAAB00/nEQttGLKJAQ/s72-c/ScreenShot001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7038030665059399224</id><published>2009-02-26T09:41:00.002+08:00</published><updated>2009-02-26T09:48:40.668+08:00</updated><title type='text'>linux中管道使用一例</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt; 工作中以前经常有遇到这种情况。&lt;br /&gt;例如：工作环境中的机器A可以访问机房B，也可以访问C，但是B和C之间是不通的。此时，经常会有把B中的文件转到C中的需求。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  最平常的做法，就是A scp B:~/foobar ./foobar; 再 scp foobar C:~/。&lt;br /&gt;&lt;br /&gt;  如果文件很大，这样的做法会令人难以接受。如果不要让文件在工作机器A中存下来，而是直接发到C中，那就好了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这时就要用到linux中的管道了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ssh B_server "tar czf - foobar/*" | ssh C_server "tar xzf - -C ~/data/"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这样做就直接把B机器上的文件直接发到C机器了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7038030665059399224?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7038030665059399224/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7038030665059399224&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7038030665059399224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7038030665059399224'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/linux.html' title='linux中管道使用一例'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2877021799190759309</id><published>2009-02-20T13:19:00.001+08:00</published><updated>2009-02-20T13:19:49.268+08:00</updated><title type='text'>收集一下vim中删除的命令</title><content type='html'>&lt;script type="text/JavaScript"&gt; &lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082"; &lt;br /&gt;alimama_titlecolor="0000FF"; &lt;br /&gt;alimama_descolor ="000000"; &lt;br /&gt;alimama_bgcolor="FFFFFF"; &lt;br /&gt;alimama_bordercolor="E6E6E6"; &lt;br /&gt;alimama_linkcolor="008000"; &lt;br /&gt;alimama_bottomcolor="FFFFFF"; &lt;br /&gt;alimama_anglesize="0"; &lt;br /&gt;alimama_bgpic="0"; &lt;br /&gt;alimama_icon="0"; &lt;br /&gt;alimama_sizecode="12"; &lt;br /&gt;alimama_width=468; &lt;br /&gt;alimama_height=60; &lt;br /&gt;alimama_type=2; &lt;br /&gt;&lt;/script&gt; 删除操作&lt;br /&gt;&lt;br /&gt;:%s/r//g 删除DOS方式的回车^M&lt;br /&gt;:%s= *$== 删除行尾空白&lt;br /&gt;&lt;br /&gt;:%s/^(.*)n1/1$/ 删除重复行&lt;br /&gt;&lt;br /&gt;:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf&lt;br /&gt;&lt;br /&gt;:%s/&lt;!--_.{-}--&gt;// 又是删除多行注释（咦？为什么要说「又」呢？）&lt;br /&gt;&lt;br /&gt;:g/s*^$/d 删除所有空行 ：这个好用有没有人用过还有其他的方法吗？&lt;br /&gt;:g!/^dd/d 删除不含字符串&lt;i&gt;'&lt;/i&gt;dd&lt;i&gt;'&lt;/i&gt;的行&lt;br /&gt;:v/^dd/d 同上 （译释：v == g!，就是不匹配！）&lt;br /&gt;&lt;br /&gt;:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:v/./.,/./-1join 压缩空行&lt;br /&gt;:g/^$/,/./-j 压缩空行&lt;br /&gt;&lt;br /&gt;ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。&lt;br /&gt;d0 删至行首。&lt;br /&gt;d$ 删至行尾。&lt;br /&gt;ndd 删除当前行及其后 n-1 行。&lt;br /&gt;x 或 X 删除一个字符。&lt;br /&gt;Ctrl+u 删除输入方式下所输入的文本。&lt;br /&gt;^R 恢复u的操作&lt;br /&gt;J 把下一行合并到当前行尾&lt;br /&gt;V 选择一行&lt;br /&gt;^V 按下^V后即可进行矩形的选择了&lt;br /&gt;aw 选择单词&lt;br /&gt;iw 内部单词(无空格)&lt;br /&gt;as 选择句子&lt;br /&gt;is 选择句子(无空格)&lt;br /&gt;ap 选择段落&lt;br /&gt;ip 选择段落(无空格)&lt;br /&gt;D 删除到行尾&lt;br /&gt;x,y 删除与复制包含高亮区&lt;br /&gt;&lt;br /&gt;dl 删除当前字符（与x命令功能相同）&lt;br /&gt;d0 删除到某一行的开始位置&lt;br /&gt;d^ 删除到某一行的第一个字符位置（不包括空格或TAB字符）&lt;br /&gt;dw 删除到某个单词的结尾位置&lt;br /&gt;d3w 删除到第三个单词的结尾位置&lt;br /&gt;db 删除到某个单词的开始位置&lt;br /&gt;dW 删除到某个以空格作为分隔符的单词的结尾位置&lt;br /&gt;dB 删除到某个以空格作为分隔符的单词的开始位置&lt;br /&gt;d7B 删除到前面7个以空格作为分隔符的单词的开始位置&lt;br /&gt;d） 删除到某个语句的结尾位置&lt;br /&gt;d4） 删除到第四个语句的结尾位置&lt;br /&gt;d（ 删除到某个语句的开始位置&lt;br /&gt;d） 删除到某个段落的结尾位置&lt;br /&gt;d{ 删除到某个段落的开始位置&lt;br /&gt;d7{ 删除到当前段落起始位置之前的第7个段落位置&lt;br /&gt;dd 删除当前行&lt;br /&gt;d/text 删除从文本中出现“text”中所指定字样的位置，&lt;br /&gt;一直向前直到下一个该字样所出现的位置（但不包括该字样）之间的内容&lt;br /&gt;dfc 删除从文本中出现字符“c”的位置，一直向前直到下一个该字符所出现的位置（包括该字符）之间的内容&lt;br /&gt;dtc 删除当前行直到下一个字符“c”所出现位置之间的内容&lt;br /&gt;D 删除到某一行的结尾&lt;br /&gt;d$ 删除到某一行的结尾&lt;br /&gt;5dd 删除从当前行所开始的5行内容&lt;br /&gt;dL 删除直到屏幕上最后一行的内容&lt;br /&gt;dH 删除直到屏幕上第一行的内容&lt;br /&gt;dG 删除直到工作缓存区结尾的内容&lt;br /&gt;d1G 删除直到工作缓存区开始的内容&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt; &lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2877021799190759309?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2877021799190759309/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2877021799190759309&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2877021799190759309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2877021799190759309'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/vim.html' title='收集一下vim中删除的命令'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2649152209806834026</id><published>2009-02-13T17:45:00.001+08:00</published><updated>2009-02-13T17:45:08.001+08:00</updated><title type='text'>查看apache http 连接情况</title><content type='html'>&lt;br&gt;　　查看httpd进程数（即prefork模式下Apache能够处理的并发请求数）：&lt;br&gt;　　Linux命令：&lt;br&gt;&lt;div class="quote"&gt;&lt;div class="quote-title"&gt;引用&lt;/div&gt;&lt;div class="quote-content"&gt;ps -ef | grep httpd | wc -l&lt;/div&gt;&lt;/div&gt;&lt;br&gt;　　返回结果示例：&lt;br&gt;　　1388&lt;br&gt;　　表示Apache能够处理1388个并发请求，这个值Apache可根据负载情况自动调整，我这组服务器中每台的峰值曾达到过2002。&lt;br&gt; &lt;hr&gt;&lt;br&gt;　　查看Apache的并发请求数及其TCP连接状态：&lt;br&gt;　　Linux命令：&lt;br&gt;&lt;div class="quote"&gt;&lt;div class="quote-title"&gt;引用&lt;/div&gt;&lt;div class="quote-content"&gt;netstat -n | awk &amp;#39;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&amp;#39;&lt;/div&gt;&lt;/div&gt;&lt;br&gt; 　　（这条语句是从新浪互动社区事业部技术总监王老大那儿获得的，非常不错）&lt;br&gt;　　返回结果示例：&lt;br&gt;　　LAST_ACK 5&lt;br&gt;　　SYN_RECV 30&lt;br&gt;　　ESTABLISHED 1597&lt;br&gt;　　FIN_WAIT1 51&lt;br&gt;　　FIN_WAIT2 504&lt;br&gt;　　TIME_WAIT 1057&lt;br&gt;　　其中的SYN_RECV表示正在等待处理的请求数；ESTABLISHED表示正常数据传输状态；TIME_WAIT表示处理完毕，等待超时结束的请求数。&lt;br&gt; &lt;hr&gt;&lt;br&gt;　　关于TCP状态的变迁，可以从下图形象地看出：&lt;br&gt;　　&lt;a href="http://blog.s135.com/attachment/200707/tcps.gif" target="_blank"&gt;&lt;img src="http://blog.s135.com/attachment/200707/tcps.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"&gt;&lt;/a&gt;　　&lt;br&gt; 　　状态：描述&lt;br&gt;　　CLOSED：无连接是活动的或正在进行&lt;br&gt;　　LISTEN：服务器在等待进入呼叫&lt;br&gt;　　SYN_RECV：一个连接请求已经到达，等待确认&lt;br&gt;　　SYN_SENT：应用已经开始，打开一个连接&lt;br&gt;　　ESTABLISHED：正常数据传输状态&lt;br&gt;　　FIN_WAIT1：应用说它已经完成&lt;br&gt;　　FIN_WAIT2：另一边已同意释放&lt;br&gt;　　ITMED_WAIT：等待所有分组死掉&lt;br&gt;　　CLOSING：两边同时尝试关闭&lt;br&gt; 　　TIME_WAIT：另一边已初始化一个释放&lt;br&gt;　　LAST_ACK：等待所有分组死掉 &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2649152209806834026?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2649152209806834026/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2649152209806834026&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2649152209806834026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2649152209806834026'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/apache-http.html' title='查看apache http 连接情况'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-992954540758445745</id><published>2009-02-10T18:02:00.000+08:00</published><updated>2009-02-10T18:02:18.060+08:00</updated><title type='text'>北京一游</title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;&lt;a href="http://1.bp.blogspot.com/_aW_1WofzRZo/SZFQqeNQ1QI/AAAAAAAABkc/ZXHJeykTizY/s1600-h/IMGP0217.JPG"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/_aW_1WofzRZo/SZFQqeNQ1QI/AAAAAAAABkc/ZXHJeykTizY/s400/IMGP0217.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;故宫&lt;br /&gt;&lt;br /&gt;&lt;script type="text/JavaScript"&gt;&lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082";&lt;br /&gt;alimama_titlecolor="0000FF";&lt;br /&gt;alimama_descolor ="000000";&lt;br /&gt;alimama_bgcolor="FFFFFF";&lt;br /&gt;alimama_bordercolor="E6E6E6";&lt;br /&gt;alimama_linkcolor="008000";&lt;br /&gt;alimama_bottomcolor="FFFFFF";&lt;br /&gt;alimama_anglesize="0";&lt;br /&gt;alimama_bgpic="0";&lt;br /&gt;alimama_icon="0";&lt;br /&gt;alimama_sizecode="12";&lt;br /&gt;alimama_width=468;&lt;br /&gt;alimama_height=60;&lt;br /&gt;alimama_type=2;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-992954540758445745?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/992954540758445745/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=992954540758445745&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/992954540758445745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/992954540758445745'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/blog-post_10.html' title='北京一游'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aW_1WofzRZo/SZFQqeNQ1QI/AAAAAAAABkc/ZXHJeykTizY/s72-c/IMGP0217.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6401302789037896091</id><published>2009-02-04T23:40:00.000+08:00</published><updated>2009-02-04T23:40:18.330+08:00</updated><title type='text'>美丽老婆</title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;&lt;a href="http://4.bp.blogspot.com/_aW_1WofzRZo/SYm24v1iyoI/AAAAAAAABcw/m4IHm_hAAUA/s1600-h/038.JPG"&gt;&lt;img alt="" src="http://4.bp.blogspot.com/_aW_1WofzRZo/SYm24v1iyoI/AAAAAAAABcw/m4IHm_hAAUA/s400/038.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;美丽老婆&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/JavaScript"&gt;&lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082";&lt;br /&gt;alimama_titlecolor="0000FF";&lt;br /&gt;alimama_descolor ="000000";&lt;br /&gt;alimama_bgcolor="FFFFFF";&lt;br /&gt;alimama_bordercolor="E6E6E6";&lt;br /&gt;alimama_linkcolor="008000";&lt;br /&gt;alimama_bottomcolor="FFFFFF";&lt;br /&gt;alimama_anglesize="0";&lt;br /&gt;alimama_bgpic="0";&lt;br /&gt;alimama_icon="0";&lt;br /&gt;alimama_sizecode="12";&lt;br /&gt;alimama_width=468;&lt;br /&gt;alimama_height=60;&lt;br /&gt;alimama_type=2;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6401302789037896091?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6401302789037896091/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6401302789037896091&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6401302789037896091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6401302789037896091'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/blog-post_1575.html' title='美丽老婆'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aW_1WofzRZo/SYm24v1iyoI/AAAAAAAABcw/m4IHm_hAAUA/s72-c/038.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-188608470872067787</id><published>2009-02-04T23:37:00.000+08:00</published><updated>2009-02-04T23:37:38.153+08:00</updated><title type='text'>要结婚了</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aW_1WofzRZo/SYm2QX_zDuI/AAAAAAAABZ0/hoFEAB5Cveg/s1600-h/034.JPG"&gt;&lt;img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://4.bp.blogspot.com/_aW_1WofzRZo/SYm2QX_zDuI/AAAAAAAABZ0/hoFEAB5Cveg/s400/034.JPG" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;  要结婚了&lt;br /&gt;  幸福中......&lt;br /&gt;&lt;br /&gt;&lt;script type="text/JavaScript"&gt;&lt;br /&gt;alimama_pid="mm_10156773_1467227_3637082";&lt;br /&gt;alimama_titlecolor="0000FF";&lt;br /&gt;alimama_descolor ="000000";&lt;br /&gt;alimama_bgcolor="FFFFFF";&lt;br /&gt;alimama_bordercolor="E6E6E6";&lt;br /&gt;alimama_linkcolor="008000";&lt;br /&gt;alimama_bottomcolor="FFFFFF";&lt;br /&gt;alimama_anglesize="0";&lt;br /&gt;alimama_bgpic="0";&lt;br /&gt;alimama_icon="0";&lt;br /&gt;alimama_sizecode="12";&lt;br /&gt;alimama_width=468;&lt;br /&gt;alimama_height=60;&lt;br /&gt;alimama_type=2;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script src="http://a.alimama.cn/inf.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-188608470872067787?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/188608470872067787/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=188608470872067787&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/188608470872067787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/188608470872067787'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/blog-post_04.html' title='要结婚了'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aW_1WofzRZo/SYm2QX_zDuI/AAAAAAAABZ0/hoFEAB5Cveg/s72-c/034.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-3502924347465603687</id><published>2009-02-04T11:32:00.001+08:00</published><updated>2009-02-04T11:32:02.110+08:00</updated><title type='text'>批量修改文件名</title><content type='html'>&lt;br&gt;&lt;br&gt;for file in *.txt&lt;br&gt; do&lt;br&gt; &amp;nbsp; &amp;nbsp;mv $file ${file/%.txt/.xxx}&lt;br&gt; done&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-3502924347465603687?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/3502924347465603687/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=3502924347465603687&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/3502924347465603687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/3502924347465603687'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2009/02/blog-post.html' title='批量修改文件名'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1336038225736929692</id><published>2008-12-15T16:35:00.001+08:00</published><updated>2009-04-16T10:42:24.666+08:00</updated><title type='text'>Python线程编程</title><content type='html'>&lt;div class="t_msgfont"&gt;&lt;strong&gt;Python线程编程（一）线程对象&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我们在做软件开发的时候很多要用到多线程技术。例如如果做一个下载软件象flashget就要用到、象在线视频工具realplayer也要用到因为要同时下载media stream还要播放。其实例子是很多的。&lt;br /&gt;线程相对进程来说是"轻量级"的，操作系统用较少的资源创建和管理线程。程序中的线程在相同的内存空间中执行，并共享许多相同的资源。&lt;br /&gt;在&lt;span style="color:#99cc00;"&gt;python&lt;/span&gt;中如何创建一个线程对象&lt;br /&gt;如果你要创建一个线程对象，很简单，只要你的类继承&lt;span style="color:#99cc00;"&gt;threading.Thread&lt;/span&gt;，然后在&lt;span style="color:#99cc00;"&gt;__init__&lt;/span&gt;里首先调用&lt;span style="color:#99cc00;"&gt;threading.Thread&lt;/span&gt;的&lt;span style="color:#99cc00;"&gt;__init__&lt;/span&gt;方法即可&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#99cc00;"&gt;import threading&lt;br /&gt;class mythread(threading.Thread):&lt;br /&gt;       def __init__(self, threadname):&lt;br /&gt;                threading.Thread.__init__(self, name = threadname)&lt;br /&gt;....&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;这才仅仅是个空线程，我可不是要他拉空车的，他可得给我干点实在活。很简单，重写类的&lt;span style="color:#99cc00;"&gt;run()&lt;/span&gt;方法即可，把你要在线程执行时做的事情都放到里面&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#99cc00;"&gt;import threading&lt;br /&gt;import time&lt;br /&gt;class mythread(threading.Thread):&lt;br /&gt;       def __init__(...):&lt;br /&gt;             ....&lt;br /&gt;def run(self):&lt;br /&gt;        for i in range(10):&lt;br /&gt;        print self.getName, i&lt;br /&gt;        &lt;blockquote&gt;&lt;/blockquote&gt;time.sleep(1)&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;以上代码我们让这个线程在执行之后每隔1秒输出一次信息到屏幕，10次后结束&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;getName()&lt;/span&gt;是&lt;span style="color:#99cc00;"&gt;threading.Thread&lt;/span&gt;类的一个方法，用来获得这个线程对象的&lt;span style="color:#99cc00;"&gt;name&lt;/span&gt;。还有一个方法&lt;span style="color:#99cc00;"&gt;setName()&lt;/span&gt;当然就是来设置这个线程对象的&lt;span style="color:#99cc00;"&gt;name&lt;/span&gt;的了。&lt;br /&gt;如果要创建一个线程，首先就要先创建一个线程对象&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;mythread1 = mythread('mythread 1')&lt;/span&gt;&lt;br /&gt;一个线程对象被创建后，他就处于"&lt;span style="color:#99cc00;"&gt;born&lt;/span&gt;"（诞生状态）&lt;br /&gt;如何让这个线程对象开始运行呢?只要调用线程对象的&lt;span style="color:#99cc00;"&gt;start()&lt;/span&gt;方法即可&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;mythread1.start()&lt;/span&gt;&lt;br /&gt;现在线程就处于"&lt;span style="color:#99cc00;"&gt;ready&lt;/span&gt;"状态或者也称为"&lt;span style="color:#99cc00;"&gt;runnable&lt;/span&gt;"状态。&lt;br /&gt;奇怪吗？不是已经&lt;span style="color:#99cc00;"&gt;start&lt;/span&gt;了吗？为什么不称为"&lt;span style="color:#99cc00;"&gt;running&lt;/span&gt;"状态呢？其实是有原因的。因为我们的计算机一般是不具有真正并行处理能力的。我们所谓的多线程只是把时间分成片段，然后隔一个时间段就让一个线程执行一下，然后进入"&lt;span style="color:#99cc00;"&gt;sleeping&lt;/span&gt; "状态，然后唤醒另一个在"&lt;span style="color:#99cc00;"&gt;sleeping&lt;/span&gt;"的线程，如此循环&lt;span style="color:#99cc00;"&gt;runnable-&amp;gt;sleeping-&amp;gt;runnable...&lt;/span&gt; ，只是因为计算机执行速度很快，而时间片段间隔很小，我们感受不到，以为是同时进行的。所以说一个线程在&lt;span style="color:#99cc00;"&gt;start&lt;/span&gt;了之后只是处在了可以运行的状态，他什么时候运行还是由系统来进行调度的。&lt;br /&gt;那一个线程什么时候会"&lt;span style="color:#99cc00;"&gt;dead&lt;/span&gt;"呢？一般来说当线程对象的&lt;span style="color:#99cc00;"&gt;run&lt;/span&gt;方法执行结束或者在执行中抛出异常的话，那么这个线程就会结束了。系统会自动对"&lt;span style="color:#99cc00;"&gt;dead&lt;/span&gt;"状态线程进行清理。&lt;br /&gt;如果一个线程&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;在执行的过程中需要等待另一个线程&lt;span style="color:#99cc00;"&gt;t2&lt;/span&gt;执行结束后才能运行的话那就可以在&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;在调用&lt;span style="color:#99cc00;"&gt;t2&lt;/span&gt;的&lt;span style="color:#99cc00;"&gt;join()&lt;/span&gt;方法&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#99cc00;"&gt;....&lt;br /&gt;def t1(...):&lt;br /&gt;...&lt;br /&gt;t2.join()&lt;blockquote&gt;&lt;/blockquote&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;这样&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;在执行到&lt;span style="color:#99cc00;"&gt;t2.join()&lt;/span&gt;语句后就会等待&lt;span style="color:#99cc00;"&gt;t2&lt;/span&gt;结束后才会继续运行。&lt;br /&gt;但是假如&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;是个死循环的话那么等待就没有意义了，那怎么办呢？可以在调用&lt;span style="color:#99cc00;"&gt;t2&lt;/span&gt;的&lt;span style="color:#99cc00;"&gt;join()&lt;/span&gt;方法的时候给一个浮点数做超时参数，这样这个线程就不会等到花儿也谢了了。我等你10s，你不回来我还不允许我改嫁啊？&lt;span style="color:#ff0000;"&gt;&lt;img src="http://www.pythonbbs.cn/images/smilies/smile.gif" alt="" border="0" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;def t1(...):&lt;br /&gt;...&lt;br /&gt;t2.join(10)&lt;br /&gt;...&lt;/span&gt;&lt;br /&gt;如果一个进程的主线程运行完毕而子线程还在执行的话，那么进程就不会退出，直到所有子线程结束为止，如何让主线程结束的时候其他子线程也乖乖的跟老大撤退呢？那就要把那些不听话的人设置为听话的小弟，使用线程对象的&lt;span style="color:#99cc00;"&gt;setDaemon()&lt;/span&gt;方法，参数为&lt;span style="color:#99cc00;"&gt;bool&lt;/span&gt;型。&lt;span style="color:#99cc00;"&gt;True&lt;/span&gt;的话就代表你要听话，我老大（主线程）扯呼，你也要跟着撤，不能拖后腿。如果是&lt;span style="color:#99cc00;"&gt;False&lt;/span&gt;的话就不用那么听话了，老大允许你们将在外军命有所不受的。需要注意的是&lt;span style="color:#99cc00;"&gt;setDaemon()&lt;/span&gt;方法必须在线程对象没有调用&lt;span style="color:#99cc00;"&gt;start()&lt;/span&gt;方法之前调用，否则没效果。&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#99cc00;"&gt;t1 = mythread('t1')&lt;br /&gt;print t1.getName(),t1.isDaemon()&lt;br /&gt;t1.setDaemon(True)&lt;br /&gt;print t1.getName(),t1.isDaemon()&lt;br /&gt;t1.start()&lt;br /&gt;print 'main thread exit'&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;当执行到 &lt;span style="color:#99cc00;"&gt;print 'main thread exit' &lt;/span&gt;后，主线程就退出了，当然&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;这个线程也跟着结束了。但是如果不使用&lt;span style="color:#99cc00;"&gt;t1&lt;/span&gt;线程对象的&lt;span style="color:#99cc00;"&gt;setDaemon()&lt;/span&gt;方法的话，即便主线程结束了，还要等待t1线程自己结束才能退出进程。&lt;span style="color:#99cc00;"&gt;isDaemon()&lt;/span&gt;是用来获得一个线程对象的&lt;span style="color:#99cc00;"&gt;Daemonflag&lt;/span&gt;状态的。&lt;br /&gt;如何来获得与线程有关的信息呢？&lt;br /&gt;获得当前正在运行的线程的引用&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;running = threading.currentThread()&lt;/span&gt;&lt;br /&gt;获得当前所有活动对象（即&lt;span style="color:#99cc00;"&gt;run&lt;/span&gt;方法开始但是未终止的任何线程）的一个列表&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;threadlist = threading.enumerate()&lt;/span&gt;&lt;br /&gt;获得这个列表的长度&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;threadcount = threading.activeCount()&lt;/span&gt;&lt;br /&gt;查看一个线程对象的状态调用这个线程对象的&lt;span style="color:#99cc00;"&gt;isAlive()&lt;/span&gt;方法，返回1代表处于"&lt;span style="color:#99cc00;"&gt;runnable&lt;/span&gt;"状态且没有"&lt;span style="color:#99cc00;"&gt;dead&lt;/span&gt;"&lt;br /&gt;&lt;span style="color:#99cc00;"&gt;threadflag = threading.isAlive()&lt;/span&gt;&lt;/div&gt; &lt;div class="t_msgfont"&gt; &lt;div class="t_msgfont"&gt;&lt;strong&gt;Python线程编程（二）简单的线程同步&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     多个执行线程经常要共享数据，如果仅仅读取共享数据还好，但是如果多个线程要修改共享数据的话就可能出现无法预料的结果。&lt;br /&gt;     假如两个线程对象&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;和&lt;span style="color:#ff6600;"&gt;t2&lt;/span&gt;都要对数值&lt;span style="color:#ff6600;"&gt;num=0&lt;/span&gt;进行增1运算，那么&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;和&lt;span style="color:#ff6600;"&gt;t2&lt;/span&gt;都各对&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;修改&lt;span style="color:#ff6600;"&gt;10&lt;/span&gt;次的话，那么&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;最终的结果应该为&lt;span style="color:#ff6600;"&gt;20&lt;/span&gt;。但是如果当&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;取得&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;的值时（假如此时&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;为&lt;span style="color:#ff6600;"&gt;0&lt;/span&gt;），系统把&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;调度为"&lt;span style="color:#ff6600;"&gt;sleeping&lt;/span&gt;"状态，而此时&lt;span style="color:#ff6600;"&gt;t2&lt;/span&gt;转换为"&lt;span style="color:#ff6600;"&gt;running&lt;/span&gt;"状态，此时&lt;span style="color:#ff6600;"&gt;t2&lt;/span&gt;获得的&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;的值也为&lt;span style="color:#ff6600;"&gt;0&lt;/span&gt;，然后他把&lt;span style="color:#ff6600;"&gt;num+1&lt;/span&gt;的值&lt;span style="color:#ff6600;"&gt;1&lt;/span&gt;赋给&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;。系统又把&lt;span style="color:#ff6600;"&gt;t2&lt;/span&gt;转化为"&lt;span style="color:#ff6600;"&gt;sleeping&lt;/span&gt;"状态，&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;为"&lt;span style="color:#ff6600;"&gt;running&lt;/span&gt;"状态，由于&lt;span style="color:#ff6600;"&gt;t1&lt;/span&gt;已经得到&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;值为&lt;span style="color:#ff6600;"&gt;0&lt;/span&gt;，所以他也把&lt;span style="color:#ff6600;"&gt;num+1&lt;/span&gt;的值赋给了&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;为&lt;span style="color:#ff6600;"&gt;1&lt;/span&gt;。本来是&lt;span style="color:#ff6600;"&gt;2&lt;/span&gt;次增&lt;span style="color:#ff6600;"&gt;1&lt;/span&gt;运行，结果却是&lt;span style="color:#ff6600;"&gt;num&lt;/span&gt;只增了&lt;span style="color:#ff6600;"&gt;1&lt;/span&gt;次。类似这样的情况在多线程同时执行的时候是有可能发生的。所以为了防止这类情况的出现就要使用线程同步机制。&lt;br /&gt;     最简单的同步机制就是"锁"&lt;br /&gt;     锁对象用&lt;span style="color:#ff6600;"&gt;threading.RLock&lt;/span&gt;类创建&lt;br /&gt;    &lt;span style="color:#ff6600;"&gt;mylock = threading.RLock()&lt;/span&gt;&lt;br /&gt;     如何使用锁来同步线程呢？线程可以使用锁的&lt;span style="color:#ff6600;"&gt;acquire()&lt;/span&gt; （获得）方法，这样锁就进入"&lt;span style="color:#ff6600;"&gt;locked&lt;/span&gt;"状态。每次只有一个线程可以获得锁。如果当另一个线程试图获得这个锁的时候，就会被系统变为"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态，直到那个拥有锁的线程调用锁的&lt;span style="color:#ff6600;"&gt;release()&lt;/span&gt; （释放）方法，这样锁就会进入"&lt;span style="color:#ff6600;"&gt;unlocked&lt;/span&gt;"状态。"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态的线程就会收到一个通知，并有权利获得锁。如果多个线程处于"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态，所有线程都会先解除"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态，然后系统选择一个线程来获得锁，其他的线程继续沉默（"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"）。&lt;br /&gt;&lt;span style="color:#ff6600;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#ff6600;"&gt;import threading&lt;br /&gt;mylock = threading.RLock()&lt;br /&gt;class mythread(threading.Thread)&lt;br /&gt;     ...&lt;br /&gt;     def run(self ...):&lt;br /&gt;         ...     &lt;span style="color:#3366ff;"&gt;#此处 &lt;span style="color:#ff00ff;"&gt;不可以 &lt;/span&gt;放置修改共享数据的代码&lt;br /&gt;&lt;/span&gt;         mylock.acquire()&lt;br /&gt;         ...     &lt;span style="color:#3366ff;"&gt;#此处 &lt;span style="color:#ff00ff;"&gt;可以 &lt;/span&gt;放置修改共享数据的代码&lt;br /&gt;&lt;/span&gt;         mylock.release()&lt;br /&gt;         ...     &lt;/span&gt;&lt;span style="color:#3366ff;"&gt;#此处 &lt;span style="color:#ff00ff;"&gt;不可以 &lt;/span&gt;放置修改共享数据的代码&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;     我们把修改共享数据的代码称为"临界区"，必须将所有"临界区"都封闭在同一锁对象的&lt;span style="color:#ff6600;"&gt;acquire()&lt;/span&gt;和&lt;span style="color:#ff6600;"&gt;release()&lt;/span&gt;方法调用之间。&lt;br /&gt;     锁只能提供最基本的同步级别。有时需要更复杂的线程同步，例如只在发生某些事件时才访问一个临界区（例如当某个数值改变时）。这就要使用"条件变量"。&lt;br /&gt;     条件变量用&lt;span style="color:#ff6600;"&gt;threading.Condition&lt;/span&gt;类创建&lt;br /&gt;    &lt;span style="color:#ff6600;"&gt;mycondition = threading.Condition()&lt;/span&gt;&lt;br /&gt;     条件变量是如何工作的呢？首先一个线程成功获得一个条件变量后，调用此条件变量的&lt;span style="color:#ff6600;"&gt;wait()&lt;/span&gt;方法会导致这个线程释放这个锁，并进入"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态，直到另一个线程调用同一个条件变量的&lt;span style="color:#ff6600;"&gt;notify()&lt;/span&gt;方法来唤醒那个进入"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态的线程。如果调用这个条件变量的&lt;span style="color:#ff6600;"&gt;notifyAll()&lt;/span&gt;方法的话就会唤醒所有的在等待的线程。&lt;br /&gt;     如果程序或者线程永远处于"&lt;span style="color:#ff6600;"&gt;blocked&lt;/span&gt;"状态的话，就会发生死锁。所以如果使用了锁、条件变量等同步机制的话，一定要注意仔细检查，防止死锁情况的发生。对于可能产生异常的临界区要使用异常处理机制中的&lt;span style="color:#ff6600;"&gt;finally&lt;/span&gt;子句来保证释放锁。等待一个条件变量的线程必须用&lt;span style="color:#ff6600;"&gt;notify()&lt;/span&gt;方法显式的唤醒，否则就永远沉默。保证每一个&lt;span style="color:#ff6600;"&gt;wait()&lt;/span&gt;方法调用都有一个相对应的&lt;span style="color:#ff6600;"&gt;notify()&lt;/span&gt;调用，当然也可以调用&lt;span style="color:#ff6600;"&gt;notifyAll()&lt;/span&gt;方法以防万一。&lt;/div&gt;  &lt;div class="t_msgfont"&gt;  &lt;span class="bold"&gt;Python线程编程（三）同步队列&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="t_msgfont"&gt;我们经常会采用生产者/消费者关系的两个线程来处理一个共享缓冲区的数据。例如一个生产者线程接受用户数 据放入一个共享缓冲区里，等待一个消费者线程对数据取出处理。但是如果缓冲区的太小而生产者和消费者两个异步线程的速度不同时，容易出现一个线程等待另一 个情况。为了尽可能的缩短共享资源并以相同速度工作的各线程的等待时间，我们可以使用一个"队列"来提供额外的缓冲区。创建一个"队列"对象&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;import Queue&lt;br /&gt;myqueue = Queue.Queue(maxsize = 10)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff9900;"&gt;Queue.Queue&lt;/span&gt;类即是一个队列的同步实现。队列长度可为无限或者有限。可通过&lt;span style="color:#ff9900;"&gt;Queue&lt;/span&gt;的构造函数的可选参数&lt;span style="color:#ff9900;"&gt;maxsize&lt;/span&gt;来设定队列长度。如果&lt;span style="color:#ff9900;"&gt;maxsize&lt;/span&gt;小于&lt;span style="color:#ff9900;"&gt;1&lt;/span&gt;就表示队列长度无限。&lt;br /&gt;&lt;br /&gt;将一个值放入队列中&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;myqueue.put(10)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;调用队列对象的&lt;span style="color:#ff9900;"&gt;put()&lt;/span&gt;方法在队尾插入一个项目。&lt;span style="color:#ff9900;"&gt;put()&lt;/span&gt;有两个参数，第一个&lt;span style="color:#ff9900;"&gt;item&lt;/span&gt;为必需的，为插入项目的值；第二个&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;为可选参数，默认为&lt;span style="color:#ff9900;"&gt;1&lt;/span&gt;。如果队列当前为空且&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;为&lt;span style="color:#ff9900;"&gt;1&lt;/span&gt;，&lt;span style="color:#ff9900;"&gt;put()&lt;/span&gt;方法就使调用线程暂停,直到空出一个数据单元。如果&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;为&lt;span style="color:#ff9900;"&gt;0&lt;/span&gt;，&lt;span style="color:#ff9900;"&gt;put&lt;/span&gt;方法将引发&lt;span style="color:#ff9900;"&gt;Full&lt;/span&gt;异常。&lt;br /&gt;&lt;br /&gt;将一个值从队列中取出&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;myqueue.get()&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;调用队列对象的&lt;span style="color:#ff9900;"&gt;get()&lt;/span&gt;方法从队头删除并返回一个项目。可选参数为&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;，默认为&lt;span style="color:#ff9900;"&gt;1&lt;/span&gt;。如果队列为空且&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;为&lt;span style="color:#ff9900;"&gt;1&lt;/span&gt;，&lt;span style="color:#ff9900;"&gt;get()&lt;/span&gt;就使调用线程暂停，直至有项目可用。如果&lt;span style="color:#ff9900;"&gt;block&lt;/span&gt;为0，队列将引发&lt;span style="color:#ff9900;"&gt;Empty&lt;/span&gt;异常。&lt;br /&gt;&lt;br /&gt;我们用一个例子来展示如何使用&lt;span style="color:#ff9900;"&gt;Queue&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff9900;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color:#ff9900;"&gt;# queue_example.py&lt;br /&gt;from Queue import Queue&lt;br /&gt;import threading&lt;br /&gt;import random&lt;br /&gt;import time&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;# Producer thread&lt;br /&gt;class Producer(threading.Thread):&lt;br /&gt;     def __init__(self, threadname, queue):&lt;br /&gt;     threading.Thread.__init__(self, name = threadname)&lt;br /&gt;     self.sharedata = queue&lt;br /&gt;     def run(self):&lt;br /&gt;           for i in range(20):&lt;br /&gt;                  print self.getName(),'adding',i,'to queue'&lt;br /&gt;                  self.sharedata.put(i)&lt;br /&gt;                  time.sleep(random.randrange(10)/10.0)&lt;br /&gt;                  print self.getName(),'Finished'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;                # Consumer thread&lt;br /&gt;      class Consumer(threading.Thread):&lt;br /&gt;                def __init__(self, threadname, queue):&lt;br /&gt;                       threading.Thread.__init__(self, name = threadname)&lt;br /&gt;                       self.sharedata = queue&lt;br /&gt;                def run(self):&lt;br /&gt;                      for i in range(20):&lt;br /&gt;                      print self.getName(),'got a value:',self.sharedata.get()&lt;br /&gt;                      time.sleep(random.randrange(10)/10.0)&lt;br /&gt;                      print self.getName(),'Finished'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;# Main thread&lt;br /&gt;def main():&lt;br /&gt;             queue = Queue()&lt;br /&gt;             producer = Producer('Producer', queue)&lt;br /&gt;             consumer = Consumer('Consumer', queue)&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#ff9900;"&gt;print 'Starting threads ...'&lt;br /&gt;             producer.start()&lt;br /&gt;             consumer.start()&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;             producer.join()&lt;br /&gt;             consumer.join()&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;            print 'All threads have terminated.'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff9900;"&gt;if __name__ == '__main__':&lt;br /&gt;        main()&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;示例代码中实现了两个类：生产者类&lt;span style="color:#ff9900;"&gt;Producer&lt;/span&gt;和消费者类&lt;span style="color:#ff9900;"&gt;Consumer&lt;/span&gt;。前者在一个随机的时间内放入一个值到队列&lt;span style="color:#ff9900;"&gt;queue&lt;/span&gt;中然后显示出来，后者在一定随机的时间内从队列&lt;span style="color:#ff9900;"&gt;queue&lt;/span&gt;中取出一个值并显示出来。&lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1336038225736929692?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1336038225736929692/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1336038225736929692&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1336038225736929692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1336038225736929692'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/12/python.html' title='Python线程编程'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-374928472504109540</id><published>2008-11-27T23:41:00.001+08:00</published><updated>2008-11-27T23:41:05.412+08:00</updated><title type='text'>推荐一个集成的python框架--pinax</title><content type='html'>可以说是django应用的集合，刚看到，下来玩玩。&lt;br&gt;&lt;a href="http://pinaxproject.com/"&gt;http://pinaxproject.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt;About Pinax&lt;/h2&gt; &lt;p&gt;&lt;b&gt;Pinax&lt;/b&gt; is an open-source collection of integrated, but reusable apps  for the &lt;a href="http://djangoproject.com/"&gt;Django Web Framework&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;By integrating numerous reusable Django apps to take care of the things that  many sites have in common, it lets you focus on what makes your site  different.&lt;/p&gt; &lt;p class="announcement"&gt;&lt;a href="http://www.youtube.com/watch?v=1J91Ownq-7g"&gt;Video  of Talk on Pinax at DjangoCon 2008&lt;/a&gt;&lt;/p&gt; &lt;p&gt;While our initial development is focused around a demo social networking  site, we are also working on number of editions tailored to intranets, learning  management, software project management and more.&lt;/p&gt; &lt;p&gt;If you have any questions about the Pinax project, please contact &lt;a href="mailto:jtauber@jtauber.com"&gt;James Tauber&lt;/a&gt;.&lt;/p&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-374928472504109540?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/374928472504109540/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=374928472504109540&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/374928472504109540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/374928472504109540'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/11/python-pinax.html' title='推荐一个集成的python框架--pinax'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-593331046633285243</id><published>2008-11-27T11:43:00.001+08:00</published><updated>2008-11-27T11:43:47.838+08:00</updated><title type='text'>一天怎么过？</title><content type='html'>身体是革命的本钱，只有身体好，才能工作、学习好！而身体好的基本前提就是要休息好，那么一份好的作息时间表是比较重要的了。下面不知是何人所为，将各个 机构的研究成果统一起来，把一天的时间划分开来，形成了一份据说是最优的作息时间表，甚至在什么时间脱下外套里面都安排好了，对身体的关怀可谓是"无微不 至"！您说，这样身体能不给面子吗？&lt;br&gt;&lt;br&gt;&lt;div align="center"&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://xgimg.com/downloadPicture.php?http://www.u148.net/attachments/image/month_0811/schedule/1.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;/div&gt; &lt;br&gt;&lt;strong&gt;7：30　起床 喝一杯水&lt;/strong&gt;&lt;br&gt;　　威斯敏斯特大学的研究人员发现，不管何时上床睡觉，在第二天早上5时22分至7时21分起床的人血液中的应激激素皮质醇含量最高，而皮质醇使人更易诱发心脏病发作，因此，在早上7时21分之后起床对健康有保护作用。&lt;br&gt;　　人体内进行的种种化学作用和活动都需要水，缺水会引起头痛、皮肤干燥和眼睛疼痛。晨起喝水会有效地缓解夜间身体的缺水症状。&lt;br&gt;&lt;br&gt;&lt;strong&gt;7：30－8：00　早餐前刷牙&lt;/strong&gt;&lt;br&gt; 　　这样能使牙齿在早餐时能被氟化物有效地保护起来，预防蛀牙的发生。要不，就在早餐后半小时再刷牙。&lt;br&gt;&lt;br&gt;&lt;strong&gt;8：00－8：30　吃早餐 使用防晒产品&lt;/strong&gt;&lt;br&gt;　　"千万别不吃早餐，它对平衡人体内的血糖水平十分必需。"伦敦国王大学自然科学专家、营养学家凯文・威兰博士建议说。试一下燕麦粥，其甘油指数较低，这意味着它会缓慢释放能量，让你在较长时间段内不易有饥饿感。&lt;br&gt;　　"即使在多云或较冷的天气下，皮肤也有可能被紫外线所伤。"英国皮肤科医生协会主席科林・霍尔登博士表示，"紫外线会诱发皮肤癌，使用SPF值15或以上的防晒产品会对皮肤产生有效的保护作用。"&lt;br&gt; &lt;br&gt;&lt;strong&gt;8：30－9：00　不要进行体育锻炼&lt;/strong&gt;&lt;br&gt;　　英国米德尔塞克斯郡布伦尼尔大学的研究人员发现，每天早间进行训练的运动员更易传染得病，这是因为人体内的免疫系统在这一时段最为薄弱。&lt;br&gt;&lt;br&gt;&lt;strong&gt;9：00－9：30　脱下外套&lt;/strong&gt;&lt;br&gt;　　过紧的着装会使人姿势扭曲，从而引发背痛。这是英国骨科委员会执行主席罗宾・谢泼德的意见。&lt;br&gt;&lt;br&gt;&lt;strong&gt;9：30　开工&lt;/strong&gt;&lt;br&gt; 　　纽约失眠治疗中心的研究人员发现，大多数人的思维都是在醒后一到两个小时最为敏捷，这时就着手处理最费心智的工作和事情。&lt;br&gt;&lt;br&gt;&lt;strong&gt;10：30　离开电脑休息&lt;/strong&gt;&lt;br&gt;　　如果你在工作中整日使用电脑，那么应至少在每个小时给眼睛三分钟的休息时间，这样才能更好地保护眼睛的内部结构和周遭肌肉。&lt;br&gt;　　当我们对着电脑屏幕阅读时，眼睛的聚焦系统就会锁定此处，由此会引发此块肌肉，进而引起视觉疲劳。"我们不时眨眼睛会让眼睛保持湿润，但当人集中精力看电脑屏幕时，几乎不怎么眨眼，这当然会引起眼睛干燥疲劳。"他说。&lt;br&gt; &lt;br&gt;&lt;strong&gt;11：00　吃点水果&lt;/strong&gt;&lt;br&gt;　　这是满足上午工作中热量需求的最佳方法，最好是每天都能吃点深绿色蔬菜，比如菠菜或红色水果。蔬菜中的铁含量是水果中维生素C含量的四倍之多。&lt;br&gt;&lt;br&gt;&lt;div align="center"&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://xgimg.com/downloadPicture.php?http://www.u148.net/attachments/image/month_0811/schedule/2.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;/div&gt; &lt;br&gt;&lt;strong&gt;13：00　吃些烘烤的豆制品&lt;/strong&gt;&lt;br&gt;　　这时我们需要吃午餐来一饱饥腹，并为下午的活动提供缓释能量。威兰博士表示："烘烤的豆类纤维含量极其丰富，而西红柿酱则能将水果和蔬菜的功效合二为一。"&lt;br&gt;&lt;br&gt;&lt;strong&gt;嚼点无糖口香糖&lt;/strong&gt;&lt;br&gt;　　这会促进唾液分泌，而唾液中含有的矿物质能有效保护牙釉质，从而使人即使吃些甜的或酸的食物也不会长蛀牙。古苏格兰格拉斯哥大学的研究人员发现，嚼口香糖还能抑制食欲，那些含木糖醇的口香糖还有减少有害细菌侵蚀牙齿的机会。&lt;br&gt; &lt;br&gt;&lt;strong&gt;14：30－15：30　来个小盹&lt;/strong&gt;&lt;br&gt;　　人体生物钟此时需要来个小小的缓冲。雅典大学的研究人员发现，每周至少睡三次午觉，每次睡30分钟或者更多的人，其罹患心脏疾病的几率比其他人低37%。&lt;br&gt;&lt;br&gt;&lt;strong&gt;16：00　来罐酸奶&lt;/strong&gt;&lt;br&gt;　　这会稳定人体内的血糖值，并缓和紧张工作之后的疲劳。原味酸奶能有效地平衡人体肠道内的菌群水平。&lt;br&gt;&lt;br&gt;&lt;strong&gt;17：00－19：00　到健身房锻炼一下&lt;/strong&gt;&lt;br&gt; 　　根据人体生物钟的规律，此时是运动和锻炼的最佳时段。此时，尤其适合游泳，游上20分钟会燃烧240卡路里的热量，同时全身肌肉也进行了一次有氧锻炼。&lt;br&gt;&lt;br&gt;&lt;strong&gt;19：00　喝点小酒放松一下&lt;/strong&gt;&lt;br&gt;　　伦敦大学的研究人员发现，那些每天少量规律饮酒者与禁酒者相比，思维明显更加敏锐，其原因可能是酒精会增加脑部的血流量从而改善人的思维能力。&lt;br&gt;&lt;br&gt;&lt;strong&gt;19：30　来顿小小的晚餐&lt;/strong&gt;&lt;br&gt; 　　晚餐中若碳水化合物含量丰富，会引起人体内血糖值升高，使消化系统处于超负荷运转状态，从而影响睡眠。&lt;br&gt;　　更好的晚餐选择应是丰盛的蔬菜，加上少量的碳水化合物和蛋白质，进餐时要细嚼慢咽。他说："人的大脑要等到15分钟之后才能觉察到已经吃饱了，所以狼吞虎咽的结果只能是大大地吃多了。"&lt;br&gt;&lt;br&gt;&lt;strong&gt;21：45　关掉电视&lt;/strong&gt;&lt;br&gt;　　这样做是为避免大脑被过度刺激从而影响睡眠。同样的原因，也不能在床上看电视。&lt;br&gt; &lt;br&gt;&lt;strong&gt;23：00　洗个热水澡&lt;/strong&gt;&lt;br&gt;　　洛夫堡大学睡眠研究中心的吉姆・霍恩教授建议："如果想睡得香，就得适当降低体温。当洗个热水澡之后，人体自身的体温很快就会有所下降。"&lt;br&gt;&lt;br&gt;&lt;strong&gt;23：30　上床睡觉&lt;/strong&gt;&lt;br&gt;　　如果你在第二天早上七点半起床的话，此时上床会保证你有八小时的充足睡眠。尽管对成年人每天需要睡多长时间尚无定论，但霍恩教授指出，平均来说，成年男性每天应睡足七小时左右，而女性则应睡足七小时二十分钟。... &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-593331046633285243?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/593331046633285243/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=593331046633285243&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/593331046633285243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/593331046633285243'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/11/blog-post_180.html' title='一天怎么过？'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-535929466241143845</id><published>2008-11-27T11:40:00.001+08:00</published><updated>2008-11-27T11:40:41.368+08:00</updated><title type='text'>危机中的几点建议--早报网</title><content type='html'>&lt;blockquote&gt;&lt;p&gt;1.不要辞职，不要换工作，不要转行，不要创业，不要换女朋友。&lt;/p&gt;&lt;p&gt;2.多备份几个自己可以去的公司职位。&lt;/p&gt;&lt;p&gt;3.不主动要求老板涨工资，裁员往往从工资高的裁起。&lt;/p&gt;&lt;p&gt;4.多帮朋友留意工作机会、多介绍，轮到自己找工作时，才会有朋友帮你。&lt;/p&gt;&lt;p&gt;5.存钱、买国债，或者双币存款，别买股票。&lt;/p&gt;&lt;p&gt;6.每月给父母寄钱，经济不好，越穷的人越不好过。&lt;/p&gt;&lt;p&gt;7.别买车。&lt;/p&gt;&lt;p&gt; 8.危机的后期最难过，现在还没开始，别觉得自己很强。&lt;/p&gt;&lt;p&gt;9.别离婚，别生孩子，别找女朋友。&lt;/p&gt;&lt;p&gt;10.就算还没感觉危机，也应该日子紧着过，用以前70%的钱过现在的日子。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;来自&lt;a target="_blank" rel="nofollow" href="http://www.zaobao.com/zg/zg081126_505.shtml"&gt;早报网&lt;/a&gt;。&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-535929466241143845?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/535929466241143845/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=535929466241143845&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/535929466241143845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/535929466241143845'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/11/blog-post_27.html' title='危机中的几点建议--早报网'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5498350503435135910</id><published>2008-11-26T21:02:00.001+08:00</published><updated>2008-11-26T21:02:31.969+08:00</updated><title type='text'>今年毕业生找工作</title><content type='html'>&amp;nbsp; 看到央视新闻频道的报导，今年大学生的就业情况真是不容乐观。想想当初自己就业时的情况，也听了其中嘉宾的建议。觉得其中几条还是比较中肯的。&lt;br&gt;&amp;nbsp; 求职时听很多大学生的都说自己在哪个大学，有什么证，考了多少分，身高多少等等。我不是HR，但我感觉这样的问答其中的价值不大。有嘉宾说这和十年前他们是一样的， 这个不知说明什么，看来知识水平最时尚的人（大学生）还是停留在过去。&lt;br&gt;&amp;nbsp; 在职场中也有些时间，感觉到商业中最大的几点认识：&lt;br&gt;&lt;ol&gt; &lt;li&gt;&amp;nbsp;以结果为导向，这点说的是执行力第一。&lt;/li&gt;&lt;li&gt;客户价值，最简单的说，应聘和招聘就是一个交易，所以在这个交易中你可以为你的客户提供什么？&lt;/li&gt;&lt;li&gt;商业人格，商业中，最好的结果是双赢，这也是中国商业的核心--和为贵。&lt;/li&gt;&lt;/ol&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5498350503435135910?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5498350503435135910/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5498350503435135910&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5498350503435135910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5498350503435135910'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/11/blog-post_26.html' title='今年毕业生找工作'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5867647047779578888</id><published>2008-10-28T10:47:00.001+08:00</published><updated>2008-10-28T10:47:29.373+08:00</updated><title type='text'>27个在学校学到不到的能力</title><content type='html'>&lt;p&gt;原文作者：zen habits&lt;br&gt;原文链接：&lt;a target="_blank" href="http://zenhabits.net/2007/06/27-skills-your-child-needs-to-know-that-shes-not-getting-in-school/"&gt;27 Skills Your Child Needs to Know That She's Not Getting In Sch&lt;/a&gt;&lt;br&gt; 翻译：&lt;a target="_blank" href="http://www.yeeyan.com/space/show/34463"&gt;Shirley.xulin&lt;/a&gt;&lt;/p&gt;&lt;p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt;"&gt;&lt;span&gt;&lt;span style="font-size: 13.5pt; color: black;"&gt;总的来说，我们都知道学校不能教给我们的孩子一些基本的读书，写作，算术和科学技&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size: 13.5pt; color: black;"&gt;能，这些技能是我们在即将出现的新一代高科技劳动力（至少，这是一个普遍的看法，我们不需要在这里争论）中具有竞争力的保证。&lt;/span&gt;&lt;span style="font-size: 10pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span&gt;&lt;span style="font-size: 13.5pt; color: black;"&gt;但是生活中我们需要远比那些基础学科更多的知识，你的孩子根本没有学会生活中需要的那些至关重要的知识，除非有一位独特的老师，他愿意去打破这种模式。&lt;/span&gt;&lt;span style="font-size: 10pt; color: black;" lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 13.5pt; color: black;"&gt;&lt;span&gt;回顾你的切身经验，当你高中毕业时，你了解生活中的所需知识么？更不用说&lt;span&gt;如何&lt;/span&gt;取得成功了。幸运的话，你也许知道如何阅读，并且有一些基本的历史和数学技能，甚至你还可能拥有良好的学习习惯，这将使你在大学中受益。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;/span&gt;&lt;span&gt;但是，你真的准备好进入现实生活了么？也许未必，除非你的父母已经为你准备好一切。事实上，我们大部分人的早期成年生活都是一团糟，因为我们不了解所需的技能，而我们正在承受相应的后果。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;你也许会说，这是生活的一部分――从经验教训中学习。但仍可能在你的孩子独立生活之前，让他准备得充分一些。如果我们无法让学校教授那些技能，就让我们自己来负责吧。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;/span&gt;&lt;span&gt;以下是一张基本课程表，孩子在迈入成年生活之前都应该掌握它。也许你认为还有其他技能需要加入其中，但至少这是一个起步要求。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;如 何教导这些事情：这些课程无法通过讲课和课本来掌握，只能通过实例、言传身教来教导，并且要允许小孩独自去尝试（刚刚开始可以在监督下进行）。一旦你进行 言传身教，并且监督他们尝试几次后，就应该给予你的孩子信任，让他自己去完成，从自身的错误中学习；另外要不时和你的孩子讨论他的学习成果。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;财务&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;储蓄&lt;/strong&gt;：量入为出是一句简朴的格言，然而只有极少数的青年人理解并知道如何遵循它。从小就让孩子将他的一部分零花钱存入&lt;span&gt;银行&lt;/span&gt;，教导他如何设定储蓄目标，如何达成该目标，然后便可购买他想要的物品。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;预算&lt;/strong&gt;：许多成年人害怕做预算，并为此饱受折磨，这是因为我们缺乏做预算所需的知识和技能。教导孩子简单的预算技能，以及相关的知识，让他们成年后不在面临预算的烦恼。你可以等到孩子十几岁再教他们这些知识，这是一个很好的机会来展示为什么他们需要了解数学基础知识。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;支付&lt;/strong&gt;：让孩子们支付账单，并确保他们按时支付，不论是在线支付还是实地完成。让他们学习如何写支票，包括纸张支票和在线支票；确保不会延误账单――可以通过马上支付或者自动支付来完成。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;投资&lt;/span&gt;&lt;/strong&gt;：什么是投资，为什么必须进行投资？你是如何进行投资的，有哪些不同的投资手段？你是如何研究投资项目？复利如何发挥时间威力。这些都是和你孩子交谈的极佳话题。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;节省&lt;/strong&gt;：这是从小就应该教会他们的事情。如何去货比三家，比较不同的价格和质量，对物品重复利用、减少浪费，在家煮食而不过多在外就餐，控制购物冲动。当我们外出疯狂购物，即便是圣诞节前，也会为孩子树立了一个坏榜样。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;债务&lt;/strong&gt;：许多成年人都面临债务问题。要教导孩子借贷的责任，如何避免不必要的债务，如何避免过多举债，如何可靠地使用信用卡。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;退休&lt;/strong&gt;：努力工作到退休年龄，还是"迷你退休"（即工作一段时间，享受一段时间），哪种更好？这是见仁见智的问题，但是你的孩子应该知晓有这些选择，它们的利弊所在，以及如何具体实施。告诉你的孩子年轻时候就开始投资的重要性，复利所带来的巨大差别，以及如何让投资自动化。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;慈善&lt;/strong&gt;：告诉孩子从事慈善的重要性，以及如何养成做慈善的习惯。这不仅仅是一个财务问题，也是一种社会&lt;span&gt;活动&lt;/span&gt;。你应示范如何将时间与精力投入到慈善活动中。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;思考&lt;/strong&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;批判性思维&lt;/strong&gt;： 这是学校没有教导的最重要的技能之一。目前，我们被驯化成机器人，听从老师而不做提问，听从教导而不动脑筋，成为不敢有异议的老实员工。如果你是一位雇 主，也许你会喜欢这样的员工；如果你是一名政客，你也许希望你的市民就是如此。但是你希望自己的孩子成为这样的人么――不问是非，幼稚无知的市民&lt;span lang="EN-US"&gt;/&lt;/span&gt;雇员&lt;span lang="EN-US"&gt;/&lt;/span&gt;学生？如果不是的话，马上开始培养他们提出"为什么"的习惯，学习如何找寻答案，如何去质疑权威――没有放之四海而皆准的永恒答案。对话是学习这种技能的良好途径。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;阅读&lt;/strong&gt;：当然，学校有教导我们进行阅读，但学校的教育方式往往让人厌倦阅读。带着你的孩子游览书中那天马行空的想象世界，指导他们通过互联网找到相应的信息，以及如何评价阅读材料的可信度、逻辑性和真实性。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;成功&lt;/strong&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;积极&lt;/strong&gt;：上面提到批判性思维是一项重要的技能，而对生活有着积极的态度也是相当重要的。当然，事情可能会变得很糟，但是塞翁失马焉知非福，所以应该停止抱怨，寻求解决方案，最重要的是，要坚信自我，摆脱负面思维。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;动力&lt;/strong&gt;：要知道达到目标的关键不是纪律，而是动力。如何采用不同的方式激励自己，并体验完成目标的喜悦心情。一开始，先设定一些较小的，容易达到的目标，从而逐渐锻炼这种技巧。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;拖拉&lt;/strong&gt;：这是成年人的常见毛病（甚至小孩也如此）。我同意在某些时候，人们应当悠游度日，享受慵懒的时光。但是，当我们必须做某些事情的时候，怎么保证我们能够按时完成呢？教导孩子要吸取拖拉的教训，找出他们拖拉的习惯，并且研究如何克服它。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;激情&lt;/strong&gt;：成功的一个重要途径，就是找到使你激情洋溢的事物，并全情投入。你的孩子还无法在年幼时找到这个答案，但是你应该指导他们发现自己的激情所在并且对其不懈追求，让他们了解这样做的重要性。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;社交&lt;/strong&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;合作&lt;/strong&gt;：从小，我们就被灌输竞争主义，这也是成人世界的写照。结果呢，卑鄙陷害、互相拆台、忿恨抱怨充满了我们的生活。相反，请教导你的孩子，人们是可以达到共赢的，帮助他人成功，将使你自己更加成功。告诉孩子结交朋友胜于制造敌人，在竞争之前先学会团队合作。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;同情&lt;/strong&gt;：这是被学校完全忽略的主题。事实上，孩子在学校学到的往往不是同情并帮助他人，而是增加别人的难处。应该教导孩子设身处地地了解别人，并去帮助别人摆脱痛楚。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;爱心&lt;/strong&gt;：爱心和同情是双胞胎，同情着重于减轻别人的痛楚，而爱心则是希望他人幸福。这两者都是至关重要的。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;倾听&lt;/strong&gt;：我们的孩子在学校学习到如何倾听了么？或者如何与人交谈么？也许这就是为什么许多成年人都不具备倾听这个重要能力的原因。要孩子学会如何真正地倾听他人，从而能够理解和感觉他人。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;交谈&lt;/strong&gt;：交谈与倾听是紧密关联的，而学校并没有教导孩子交谈的艺术。事实上，学校告诉孩子在大部分情况下交谈是不对的，然而我们往往需要的是互相交谈，而不是教导。这是非常重要的社交技巧，从小就应该在家里实践。请学会与你的孩子交谈，而不是只要他听话。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;实务&lt;/strong&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;汽车&lt;/strong&gt;：告诉孩子为什么我们需要汽车（并不是为了耍酷），如何买到合适的汽车，如何保养汽车。了解发动机的工作原理，哪些地方会发生损坏，又该如何修理。这是男孩女孩都应该学习的技能（这是显而易见的，但我还是要强调）。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;/span&gt;家务：如何保养和维修房屋的各种物件，包括管道、电器、冷暖设备、油漆、盖屋顶、剪草等等。掌握进行基础维护的工作和方法，并且知道什么时候该叫专家来帮忙。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;清洁&lt;/strong&gt;：太多的成年人没有学会如何送洗衣物，如何清洁房间，如何使房子井井有条，如何进行每周、每月的大扫除。不要只是让孩子做这做那，而要他们真的学会这些事情。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;组织&lt;/strong&gt;：让孩子学会如何摆放文件，如何让事物各就各位，如何建立待办事宜，如何建立工作流程，以及如何集中精力在重要工作上。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;快乐&lt;/strong&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;着眼现在&lt;/strong&gt;：基于某些原因，我们小时候从未学到这个重要的技能。事实上，我们越年轻，就越能享受现在。当我们慢慢长大，开始担心将来，回顾过去，而"现在"则离我们而去。"活在现在"的技巧对我们是大有帮助的。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;/span&gt;&lt;span&gt;&lt;strong&gt;享受生活&lt;/strong&gt;：孩子们都在享受生活，但只有一部分意识到这个技能的重要性，并且应该如何进行。即使对于成年人，享受生活的技能依然大有益处，为你的孩子做好榜样，他们自然会模仿你的。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;strong&gt;寻找目标&lt;/strong&gt;：拥有一个目标对于生活而是是极为重要的，无论是崇高的宗教目标，或者是为了让家庭幸福，又或者是你的职业目标。让孩子认识到目标的重要性，并且如何为自己找到目标。&lt;/span&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;strong&gt;发展亲密关系&lt;/strong&gt;：教导这个技能的最佳方式，就是和你的孩子建立亲密关系，并且以你和配偶（或其他适当的人）为范例。教会他们发展这种关系的技能，讨论它的重要性，并且学习如何克服冲突。生活中总会出现不和，但是通过交流、理解和妥协，我们就能言归于好。 &lt;/span&gt;&lt;/span&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" valign="top" height="32" nowrap&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5867647047779578888?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5867647047779578888/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5867647047779578888&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5867647047779578888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5867647047779578888'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/27.html' title='27个在学校学到不到的能力'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2443737486887374712</id><published>2008-10-27T14:02:00.001+08:00</published><updated>2008-10-27T14:02:42.742+08:00</updated><title type='text'>值得一读</title><content type='html'>&lt;p&gt;★ &lt;strong&gt;&lt;u&gt;新闻对联&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;将新闻事件写成对联，以短信方式传播分享，并非首次，但本周所收两则"新闻对联"紧扣时事，态度内敛，鲜明，确切，殊为别致：一则来自电视人陈TV陈老师，为同题新闻对联中最优者。联云：&lt;/p&gt; &lt;p&gt;上联：上半年一人杀六警&lt;br&gt; 下联：下半年六警杀一人&lt;br&gt; 横批：非常6+1&lt;/p&gt; &lt;p&gt;另一则由作家宋石男老师原创。联云：&lt;/p&gt; &lt;p&gt;上联：两个主持挂职&lt;br&gt; 下联：一对区长外逃&lt;br&gt; 横批：幸运都是二&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;★ &lt;u&gt;&lt;strong&gt;你们怎么还不黑我啊&lt;/strong&gt;&lt;/u&gt;？&lt;/p&gt; &lt;p&gt;语出本周网络&lt;a target="_blank" href="http://bbs.tech.163.com/bbs/tech02/102572301.html"&gt;流行笑话&lt;/a&gt;，版本繁多，下为其中之一：&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;用户：喂，是微软客服吗？&lt;br&gt; 微软：是。请问您有什么需要？&lt;br&gt; 用户：不是说好要黑屏的吗？我都等一天了，你们怎么还不黑我啊？&lt;br&gt; 微软：#%$^&amp;amp;@&lt;br&gt; 用户：你们到底黑不黑了？&lt;br&gt; 微软：……&lt;br&gt; 用户：说话啊！到底是黑还是不黑啊？&lt;br&gt; 微软：黑！盗版的才黑！你是盗版吗？&lt;br&gt; 用户：是啊。100%盗版，绝对盗版！&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;这个虚拟笑话将微软"黑屏行动"娱乐化八卦化。它跟你我日常生活的麦当劳化不同的是，那些为你我提供八卦化思维乐趣的网友们分文不取，甘当娱乐志愿者。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;★ &lt;u&gt;&lt;strong&gt;眼下连银行家和经理都在读《资本论》&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt; &lt;p&gt;语出德国一家大型出版社负责人。金融危机不断蔓延让德国人重新认识到资本主义经济制度的弊端，马克思的名著《资本论》因此再次成为书店畅销书。当地最新民调数据表明，原东德地区52%的居民认为自由市场经济并不合适，43%的人希望实行社会主义制度。&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" valign="top" height="32" nowrap&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2443737486887374712?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2443737486887374712/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2443737486887374712&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2443737486887374712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2443737486887374712'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_7744.html' title='值得一读'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1169304982674442982</id><published>2008-10-27T11:02:00.001+08:00</published><updated>2008-10-27T11:02:07.787+08:00</updated><title type='text'>一些平时没有想通的问题</title><content type='html'>&lt;strong&gt;01、鱼会口渴吗？&lt;/strong&gt;&lt;br&gt;　　原来鱼是会口渴的，只不过它们饮水的方法和人类有所不同。德国不来梅阿尔弗雷德维格纳研究所指出，由于鱼有分咸淡两种，而两种鱼饮水的方法都有不同，咸水鱼用吞水的方法得到水分，淡水鱼则经由食物和鱼鳃得到水分。&lt;br&gt;&lt;br&gt;&lt;strong&gt;02、为什么洗衣机有个透明圆窗，干衣机却没有呢？&lt;/strong&gt;&lt;br&gt;　 　1920 年代，欧洲人制造了最初的滚筒式洗衣机，但当时一般市民还未完全信赖新的科技，不放心将袜子和内裤等放进洗衣机。米勒家电是第一家出售商业洗衣机的公司， 发言人指出 1920 年代上市的第一批洗衣机之所以有个圆窗，是因为到洗衣店洗衣服的朋友都希望可以看见洗衣机中的动静，那时根本无人想过洗衣机可以出现于家庭中，当时一般家 庭只以木桶和木棍洗衫，踏入50年代，当洗衣机普及化后，这种透明圆窗设计便被淘汰，干衣机没有透明圆窗最主要原因，就是现代人早已知道这些机器是不会损 坏里头的物品，不用边干边看，这么浪费时间！&lt;br&gt;&lt;br&gt;&lt;strong&gt;03 、手语是否世界通行？&lt;/strong&gt;&lt;br&gt;　　中国人讲国语， 英国人讲英文，中国人的手语和英国人的手语有没分别？聋哑中国人用中国手语可不可以和英国聋哑人士沟通呢？德国汉堡大学手语系教授表示，聋哑人士在地球多 久，手语便存在多久，手语是一代接一代地发展出来的，与所有的自然语言一样，手语也根据其地理位置的分布而有不同变化，就像世界上也没有一种完全通行的有 声语言一样。例如在德国「红色」的手语表达是多次触碰下嘴唇，和国际间惯用的表达不同。&lt;br&gt;&lt;br&gt;&lt;strong&gt;04、为什么多士跌落地时，总是涂奶油的哪面先着地？&lt;/strong&gt;&lt;br&gt;　 　美国密西西比州哥伦布女子大学的专家做了实验，发现从桌子边缘掉落的多士，有百分之七十八是涂奶油的那一面先着地，原因是基于简单的物理定律。当士从桌 缘翻落的一刹那，一部分重心已经掉落桌外，于是这片多士处于旋转的状态中，因此不是垂直落地，而是翻转落下。奶油面先着地的关键在于通常多士翻转的速度不 够快，无法完成一个完整的空中翻滚，不像跳水运动员可以向外翻腾九周半，要多士完成整个翻滚动作，不弄肮脏地毯，方法好简单，只要大家在三米高的餐桌食多 士便可以。&lt;br&gt;&lt;br&gt;&lt;strong&gt;05、地球上六十亿人一齐大叫，声音会不会传到月球呢？&lt;/strong&gt;&lt;br&gt;　　地球人口约有六十亿五 千五百万人，假如全世界人聚集在澳洲平原一齐向着月亮大叫，嫦娥会不会听到呢？如果所有人一齐叫的话，巨大的声响会令大地摇动，全部人的耳膜都可能会破 掉，亦有人会被嘈死。但无论大家怎么叫，都不会传到月球，即使用超高性能的米高峰都一样，原因是地球和月球中间是没有大气，而声音必须在气体或液体等物质 中传输，在真空的状态则是无法传输的，叫声所能达到的地方只限于大气层的内质，高度充其量只能传到七百公尺而已！&lt;br&gt;&lt;br&gt;&lt;strong&gt;06、遇到交通意外，跳车逃生时，应该向前跳还是向后跳比较安全呢？&lt;/strong&gt;&lt;br&gt;　 　遇到这么紧急的情况，生死攸关，千万不能做错决定，假如你决定朝车子行驶的方向跳出去的话，你必死无疑，因为离开车子的身体会遵守"惯性法则"随着车子 的速度向前，身体会加速，然后狠狠的摔在地上，如果向后方跳的话，速度会相对抵消，着地时会减少一些撞击力道。此外，向前跳的话，着地的时候，身体会向后 仰，后脑撞到的危机性较大，死亡率亦较高。&lt;br&gt;&lt;br&gt;&lt;strong&gt;07、两个人一上一下抬东西上楼梯，哪一个人会较轻松？&lt;/strong&gt;&lt;br&gt;　 　大家一定以为是在上方的人较辛苦，前面出尽力提着东西，后面的只是支撑着，当然轻松得多。但根据万有引力，行李的重量不是全压在后者吗？究竟答案是什么 呢？以力学而言，行李在两个人正中间的话，即使是在像楼梯这种倾斜的地方仍然是刚好平均分摊，并不会有哪一方比较轻松和比较累的，重与轻只是心理作用而 已！&lt;br&gt;&lt;br&gt;&lt;strong&gt;08、为什么丧服是黑色的呢？&lt;/strong&gt;&lt;br&gt;　　中国人死人用白色，但欧美以至日本丧服都是黑色，为什 么死人要穿黑色衣服呢？古人认为参加丧礼时，丧礼上会出现死者的灵魂，穿着鲜色衣服的话，容易被死者灵魂见到，然后惨被加害。穿黑色衣服的话，就不容易被 死者的灵魂发现。身穿黑色丧服原来并不是为了哀悼死者，只是恐惧死者，不过大家敢不敢穿的大红大绿去殡仪馆呢？&lt;br&gt;&lt;br&gt;&lt;strong&gt;09、医生看病时为什么要看病人的舌头？&lt;/strong&gt;&lt;br&gt;　 　利用舌头的状态来诊断的方法称为"舌诊"，源出于中医。健康的舌头是淡红色，拥有适度的润泽，舌头整体能够轻柔被压动，发烧的时候，舌头的湿气就会流失 而龟裂，病情恶化的话，颜色还会变白，肠胃不好的时候，水分的代谢功能也会减弱，白色舌苔会增加而覆盖整个舌头，西医看舌头主要用作参考，而中医则作确定 病情之用。&lt;br&gt;&lt;br&gt;&lt;strong&gt;10、冷水和热水，那一种水在灭火时比较有用呢？&lt;/strong&gt;&lt;br&gt;　　着火了，用冷水还是热水救火好呢？不用多说，火当然很热，用冷水浇的话可以降低火的温度，但假使要尽早灭火的话，最好使用热水。冷水和热水比较，热水较能在短时间产生水蒸气，把火源覆盖，火源得不到氧气，便不会继续燃烧，但在实际火灾现场，又怎会有热水呢？&lt;br&gt;&lt;br&gt;&lt;strong&gt;11、麻将中的"东南西北"为什么和实际方位相反呢？&lt;/strong&gt;&lt;br&gt; 　　打麻将四只脚，按东南西北顺序逆时针方向坐，和实际的方位完全相反，究竟是什么原因呢？原来东南西北其实只是代表一、二、三、四和方位是无关的，加上中国人大部分是使用右手拿牌，所以将"东南西北"变成逆时针方向，纯粹为了方便而已，根本没有什么值得考究的地方！&lt;br&gt;&lt;br&gt;&lt;strong&gt;12、在百货公司搭扶手电梯快还是乘电梯快？&lt;/strong&gt;&lt;br&gt;　 　相信这个问题大家都曾想过，以速度本身来说，电梯是比较快的，但需要加上等待的时间，所以根据日本作家堀井宪一郎的调查发现，不同楼层是有不同的结果， 若从一楼到六楼的话，电扶手梯是比较快的，因为无需等候，七楼到九楼的话，碰上电梯到达及时或电梯没有人，胜负是五十五十。十楼以上的话，电梯较快，比率 高达百分之七十五。&lt;br&gt;&lt;br&gt;&lt;strong&gt;13、为什么喝酒时，小便的时候会比较长呢？&lt;/strong&gt;&lt;br&gt;　　当喝醉酒的时候，小便的 时间变长，不少人以为酒精有利尿作用，但这观点是错的，由于酒精作用使我们对膀胱的感觉能力变得迟钝，一般而言，膀胱到达200cc时，就会想去厕所，但 当喝醉酒时，膀胱达到最大极限，还感觉不到尿意，大人的膀胱容量约为400-500cc，所以，当喝醉酒想去厕所时，尿量一定是平日的两倍，所以上厕所的 时间也因而变长。&lt;br&gt;&lt;br&gt;&lt;strong&gt;14、为什么肯德基家乡鸡爷爷永远都穿白色衣服？&lt;/strong&gt;&lt;br&gt;　　肯德基爷爷人像是由肯 德基的始创者桑德斯上校的模样制造出来的，为什么一年四季桑德斯都不换衣服呢？难道他没有钱买衣服？桑德斯上校是个非常有地位的人，有一天电视台要求他上 节目做嘉宾，那时刚好是冬天，由于桑德斯上校没有烫好冬天西装，唯有穿夏天的白色西装，观众以为桑德斯平时天寒地冻都穿着这么薄的衣服，觉得非常有型，因 而大受欢迎，从此以后，白色西装便成为桑德斯上校的商标！&lt;br&gt;&lt;br&gt;&lt;strong&gt;15、去舞会经常见到名人撞衫，究竟世界上有多少人拥有相同的衣服呢？&lt;/strong&gt;&lt;br&gt;　 　遇见和自己穿相同衣服的人，感到非常的尴尬，对方穿得比自己好看，就更加不高兴，高级时装，因为数生产量不多，即使是同样的设计、颜色的衣服，一般大约 生产一百五十件左右，同年龄层同性别同收入的人口全球约为一千万，穿着同样衣服的人，比例大约是六万分之一，当然穿大规模生产的Tee，那撞衫的机会自然 会大得多。&lt;br&gt;&lt;br&gt;&lt;strong&gt;16、为什么心脏不会生癌？&lt;/strong&gt;&lt;br&gt;　　胃、肝、大肠、睾丸都会生癌，但为什么没听过有心 脏癌呢？原因在于心脏以外的细胞都具有增殖机能，即使受了伤，只要过一段时间就能痊愈，这是因为细胞增殖使伤口愈合，然而心脏的细胞并不会增殖。癌细胞会 持续增殖，接着破坏周围的组织，就是因为心脏细胞不会增殖的关系，所以癌细胞是无法侵袭心脏。&lt;br&gt;&lt;br&gt;&lt;strong&gt;17、鼻水其实积存在哪里呢？&lt;/strong&gt;&lt;br&gt;　 　只要一感冒、鼻敏感，鼻水就不停流出，大量的鼻水积存在身体的哪个部分呢？鼻水其实并不是积存在身体里，一般而言鼻腺跟细胞会经常提供补充水给鼻孔表面 的黏膜，但只要一感冒，免疫血球蛋白跟化学物质就会跟水分混杂，将进入鼻孔的异物跟细菌都洗出来，鼻腺跟细胞也会一直分泌水分，因此就算我们不断的擤鼻 子，鼻水都会一直流出来。&lt;br&gt;&lt;br&gt;&lt;strong&gt;18、烫伤后的水泡究竟是什么？&lt;/strong&gt;&lt;br&gt;　　烫伤之后，必然会出现水泡，破 掉之后更会流出液体来，为什么无缘无故皮肤会出现液体呢？烫伤是因为高热而使皮肤和细胞呈现发炎状态，细胞被破坏、体液渗透进皮肤，皮肤外侧由表皮所覆 盖，表皮之下为真皮，当体液停留在表皮和真皮中间时，便会起水泡。水泡里的水，正确来说是细胞被破坏后所流出的体液，包括血浆、淋巴、组织，加上蛋白质、 脂肪、无机盐、氨基酸等等合成的液体。&lt;br&gt;&lt;br&gt;&lt;strong&gt;19、卡拉OK 第一首歌曲是哪一首呢？&lt;/strong&gt;&lt;br&gt;　　卡拉OK 是日本语「空的管弦乐」的缩写，本身是个音乐界的用语。以前日本有不少地方流浪演唱歌手，在没有伴奏的地方演唱时，会播音乐带伴唱代替伴奏，那就是所谓的 卡拉OK，将卡拉OK商业化的人叫井上大佑，1971 年他将自己演奏的卡拉OK录音带和播放用的机器，租借给神户的小酒馆，第一首卡拉OK乐曲是永井Frank的"羽田出发七点五十分"，不少喜欢唱歌的朋友 都到了神户的小酒馆大展身手，于是卡拉OK文化便因此而蔓延全球。&lt;br&gt;&lt;br&gt;&lt;strong&gt;20、猴子有没有同性恋？&lt;/strong&gt;&lt;br&gt;　 　不要以为只有人类才有同性恋，其实猴子的世界里也有同性恋，不少猴子会有亲昵的行为，互相摩擦性器官，直至产生高潮为止，不过人类的同性恋是有感情存 在，但猴子的同性恋就完全没有感情因素，因为猴子的脑容量只是人类五分之一，无法思考同性之间复杂的感情，同性恋也只是为了寻求快感，单纯享受爱抚和性行 为而已！ &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1169304982674442982?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1169304982674442982/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1169304982674442982&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1169304982674442982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1169304982674442982'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_27.html' title='一些平时没有想通的问题'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7308801470685203413</id><published>2008-10-22T21:55:00.001+08:00</published><updated>2008-10-22T21:55:58.429+08:00</updated><title type='text'>用最简洁生动的方法讲解了次贷危机和A股股民</title><content type='html'>&lt;div class="entry-container"&gt;&lt;div class="entry-main"&gt;&lt;div class="entry-body"&gt;&lt;div&gt;&lt;div class="item-body"&gt;&lt;div&gt;&lt;p&gt;在网上看到一个帖子，作者不详。用最简洁生动的方法讲解了次贷危机和A股股民：&lt;/p&gt; &lt;p&gt;有一天，一位其貌不扬的男士，带着一位十分艳丽的OL，来到Causeway Bay一家LV店。他为OL选了一价值6万5元的LV handbag。&lt;br&gt; 　　&lt;br&gt; 付款时，男士掏出支票本，十分潇洒地签了一张支票。店员有些为难，因为这对夫妇是第一次来店购物。&lt;br&gt; 　　&lt;br&gt; 男士看穿了店员的心思，十分冷静地对店员说： &amp;quot;我感觉到，您担心这是一张是空头支票，对吗？今天是周六，银行关门。我建议您把支票和handbag都留下。等到星期一支票兑现之后，再请你们把 handbag 送到这位小姐的府上。您看这样行不行？&amp;quot;&lt;br&gt; 　　&lt;br&gt; 店员放了下心来，欣然地接受了这个建议，并且大方的承诺，递送handbag的费用由该店承担，他本人将会亲自把这件事情给办妥。&lt;br&gt; 　　&lt;br&gt; 星期一，店员拿着支票去银行入账，支票果真是张空头支票！愤怒的店员打电话给那位顾客，客户对他说： &amp;quot;这没有什么要紧啊！你和我都没有损失。上星期六的晚上我已经同那个女孩上床了！哦，多谢您的合作。&amp;quot;&lt;/p&gt; &lt;p&gt;这个故事揭示了次贷危机的本质。人们在对未来收益充满良好预期的时候，对于可能加大风险缺乏防范意识。美女认为周一六万多LV就到家了，自然也就放 松了警惕，认为ONS的投资是值得的，对于投入产出的预期是建立在一个具有巨大不确定风险的情况下的。而对未来收益预期的包装则是这些投资机构最擅长的事 情。中国的股民大多跟这个美女一样，所以亏钱基本上是活该，没有这些人，股市赚谁的钱呢。而媒体和分析家们，往往在其中扮演了LV店员的配合角色。&lt;/p&gt; &lt;p&gt;OL：Office Lady：白领丽人&lt;br&gt; Causeway Bay：香港铜锣湾&lt;br&gt; ONS=419=One night standing：一夜情&lt;/p&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7308801470685203413?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7308801470685203413/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7308801470685203413&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7308801470685203413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7308801470685203413'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_9378.html' title='用最简洁生动的方法讲解了次贷危机和A股股民'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-9065899401143095263</id><published>2008-10-22T17:56:00.003+08:00</published><updated>2008-10-22T17:57:57.519+08:00</updated><title type='text'>中央武院</title><content type='html'>&lt;div style="margin: 0px 2px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 1px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;    &lt;div style="margin: 0px 1px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 2px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 10px; overflow: auto; font-family: sans-serif; width: 100%;"&gt;&lt;div align="center"&gt;&lt;a href="http://www.u148.net/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;用平面表示立体&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;embed src="http://www.youtube.com/v/NgQtKfqYbMk" allowscriptaccess="never" wmode="transparent" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=NgQtKfqYbMk"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px 2px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 1px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 1px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;  &lt;div style="margin: 0px 2px; padding-top: 1px; background-color: rgb(195, 217, 255); font-size: 1px ! important; line-height: 0px ! important;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-9065899401143095263?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/9065899401143095263/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=9065899401143095263&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/9065899401143095263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/9065899401143095263'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_5909.html' title='中央武院'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-599202606192886317</id><published>2008-10-22T17:30:00.000+08:00</published><updated>2008-10-22T17:31:01.817+08:00</updated><title type='text'>用加法实现减法</title><content type='html'>&lt;a href="http://groups.google.com/group/pongba/browse_thread/thread/a5abc11899e04006?pli=1"&gt;http://groups.google.com/group/pongba/browse_thread/thread/a5abc11899e04006?pli=1&lt;/a&gt;&lt;br&gt;&lt;br&gt;一个计算机系统包含以下原子操作： &lt;br&gt; 1. 赋值 &lt;br&gt; 2. +1 &lt;br&gt;  3. 循环（确定次数的循环） &lt;br&gt; 4. 只处理正整数和 0 &lt;br&gt; 5. 运算不会溢出 &lt;br&gt; 请在该系统上实现减法&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Dingding &amp;lt;hank.d&lt;a target="_parent" href="http://groups.google.com/groups/unlock?_done=/group/pongba/browse_thread/thread/a5abc11899e04006%3Fpli%3D1&amp;amp;msg=7b706eda975536df"&gt;...&lt;/a&gt;@&lt;a href="http://gmail.com"&gt;gmail.com&lt;/a&gt;&amp;gt;的&lt;/b&gt;一个思路，供大家讨论。 &lt;br&gt; &lt;p&gt;首先实现自减一操作： &lt;br&gt; tmp = 0 &lt;br&gt; result = 0 &lt;br&gt; loop(n) { &lt;br&gt; &amp;nbsp; &amp;nbsp; result = tmp &lt;br&gt; &amp;nbsp; &amp;nbsp; tmp++ &lt;br&gt; &lt;/p&gt;&lt;div id="qhide_82806" style="display: block;" class="qt"&gt;} &lt;br&gt; &lt;br&gt;&lt;/div&gt;循环执行后result == n - 1 &lt;br&gt; &lt;p&gt;然后利用该操作作为原语实现任意数的减法操作（假定a&amp;gt;b）： &lt;br&gt; result = a &lt;br&gt; loop(b) { &lt;br&gt; &amp;nbsp; &amp;nbsp; dec(result) &lt;br&gt; &lt;/p&gt;&lt;div id="qhide_82807" style="display: block;" class="qt"&gt;} &lt;br&gt; &lt;br&gt;&lt;/div&gt;循环执行后 result == a - b &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" valign="top" height="32" nowrap&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-599202606192886317?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/599202606192886317/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=599202606192886317&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/599202606192886317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/599202606192886317'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_22.html' title='用加法实现减法'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2874449098101231903</id><published>2008-10-22T14:37:00.001+08:00</published><updated>2008-10-22T14:37:42.262+08:00</updated><title type='text'>linux系统查看命令</title><content type='html'>&lt;p&gt;&lt;strong&gt;系统&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# uname -a               # 查看内核/操作系统/CPU信息&lt;br&gt;# head -n 1 /etc/issue   # 查看操作系统版本&lt;br&gt;# cat /proc/cpuinfo      # 查看CPU信息&lt;br&gt;# hostname               # 查看计算机名&lt;br&gt;# lspci -tv              # 列出所有PCI设备&lt;br&gt;# lsusb -tv              # 列出所有USB设备&lt;br&gt; # lsmod                  # 列出加载的内核模块&lt;br&gt;# env                    # 查看环境变量&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;资源&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# free -m                # 查看内存使用量和交换区使用量&lt;br&gt;# df -h                  # 查看各分区使用情况&lt;br&gt;# du -sh &amp;lt;目录名&amp;gt;        # 查看指定目录的大小&lt;br&gt;# grep MemTotal /proc/meminfo   # 查看内存总量&lt;br&gt;# grep MemFree /proc/meminfo    # 查看空闲内存量&lt;br&gt; # uptime                 # 查看系统运行时间、用户数、负载&lt;br&gt;# cat /proc/loadavg      # 查看系统负载&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;磁盘和分区&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# mount | column -t      # 查看挂接的分区状态&lt;br&gt;# fdisk -l               # 查看所有分区&lt;br&gt;# swapon -s              # 查看所有交换分区&lt;br&gt;# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)&lt;br&gt;# dmesg | grep IDE       # 查看启动时IDE设备检测状况&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;网络&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# ifconfig               # 查看所有网络接口的属性&lt;br&gt;# iptables -L            # 查看防火墙设置&lt;br&gt;# route -n               # 查看路由表&lt;br&gt;# netstat -lntp          # 查看所有监听端口&lt;br&gt;# netstat -antp          # 查看所有已经建立的连接&lt;br&gt;# netstat -s             # 查看网络统计信息&lt;/pre&gt;  &lt;p&gt;&lt;strong&gt;进程&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# ps -ef                 # 查看所有进程&lt;br&gt;# top                    # 实时显示进程状态&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;用户&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# w                      # 查看活动用户&lt;br&gt;# id &amp;lt;用户名&amp;gt;            # 查看指定用户信息&lt;br&gt;# last                   # 查看用户登录日志&lt;br&gt;# cut -d: -f1 /etc/passwd   # 查看系统所有用户&lt;br&gt;# cut -d: -f1 /etc/group    # 查看系统所有组&lt;br&gt;# crontab -l             # 查看当前用户的计划任务&lt;/pre&gt;  &lt;p&gt;&lt;strong&gt;服务&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# chkconfig --list       # 列出所有系统服务&lt;br&gt;# chkconfig --list | grep on    # 列出所有启动的系统服务&lt;/pre&gt; &lt;p&gt;&lt;strong&gt;程序&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;# rpm -qa                # 查看所有安装的软件包&lt;/pre&gt;  &lt;br&gt;  	&lt;div class="entrymeta"&gt; 	&lt;div class="postinfo"&gt; 	&lt;span class="utwtags"&gt;&lt;br&gt;&lt;/span&gt;&lt;span class="toplink"&gt;&lt;a href="http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/#" title="回到页面顶端"&gt;&lt;/a&gt;&lt;/span&gt;     &lt;/div&gt;     &lt;/div&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" valign="top" height="32" nowrap&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2874449098101231903?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2874449098101231903/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2874449098101231903&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2874449098101231903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2874449098101231903'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/linux_22.html' title='linux系统查看命令'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-4752981298075349521</id><published>2008-10-22T10:01:00.001+08:00</published><updated>2008-10-22T10:01:42.501+08:00</updated><title type='text'>8种互联网动物</title><content type='html'>&lt;div class="cont"&gt;   						&lt;/div&gt; 8种用于互联网的动物！&lt;br&gt;&lt;br&gt;外国人都喜欢这样干！！插有意思。&lt;br&gt;&lt;br&gt;&lt;div class="cont"&gt;   						&lt;/div&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/bango.jpg" alt="" title="bango" class="alignleft size-full wp-image-40854" height="135" width="180"&gt;&lt;strong&gt;&lt;a href="http://bango.com/" target="_blank"&gt;Bango&lt;/a&gt;&lt;/strong&gt; -移动分析公司，鳐鱼分很多种类，有的有毒，有的放电，它们都属于鲨鱼科，非常危险。 I've got no idea where this mobile analytics company got their name from, but Bango Fish is sometimes used as another name for &lt;a href="http://en.wikipedia.org/wiki/Batoidea" target="_blank"&gt;rays&lt;/a&gt;, so I've decided to include the name here. Rays come in several varieties, some of them poisonous, some electric; they're related to sharks, and as we all probably remember, they can be quite dangerous. I'm not sure which exact species can be addressed &lt;/p&gt;&lt;div class="cont"&gt;   						&lt;/div&gt; &lt;p&gt;by the name "Bango," so I'd be grateful if someone could shed some light on this. &lt;/p&gt; &lt;div class="cont"&gt;   						&lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/fennec1.jpg" alt="" title="fennec1" class="alignright size-full wp-image-40579" height="135" width="163"&gt;&lt;/p&gt;&lt;/div&gt; &lt;div class="cont"&gt;   						&lt;/div&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/fennec2.jpg" alt="" title="fennec2" class="alignright size-full wp-image-40856" height="135" width="180"&gt;&lt;strong&gt;&lt;a href="http://www.mozilla.org/projects/fennec/1.0a1/releasenotes/"&gt;&lt;br&gt; &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.mozilla.org/projects/fennec/1.0a1/releasenotes/"&gt;Mozilla的手机浏览器！还是狐狸！是一只更小的狐狸！&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.mozilla.org/projects/fennec/1.0a1/releasenotes/"&gt;Fennec&lt;/a&gt;&lt;/strong&gt; - unlike the Firefox, the &lt;a href="http://en.wikipedia.org/wiki/Fennec_Fox"&gt;Fennec Fox&lt;/a&gt; is actually a fox. The folks at Mozilla probably named their mobile browser after the Fennec because the animal is quite small for a fox, weighing up to 1.5 kg with a body length of up to 40 cm. What it lacks in general size, it makes up in ear size, which can grow up to 15 cm in length. It lives in the Sahara Desert of North Africa, feeds on rodents, insects, birds, eggs, and probably doesn't care much about mobile browsing.&lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/firefox1.jpg" alt="" title="firefox1" class="alignleft size-full wp-image-40855" height="135" width="180"&gt;&lt;strong&gt;&lt;a href="http://www.mozilla.com/firefox/" target="_blank"&gt;Firefox&lt;/a&gt;&lt;/strong&gt; ，这个就不用多说，大家都认识，这其实是生活于中国四川地区的一种小帽熊，浣熊科。- contrary to the popular belief, Firefox is not just a very cool fox or a fox on fire; it's a distinct animal species that actually looks quite similar to the one on the popular Web browser's logo. Its name is &lt;a href="http://en.wikipedia.org/wiki/Red_Panda" target="_blank"&gt;Red Panda&lt;/a&gt;, it's a herbivorous mammal that feeds on bamboo, and lives only in the Himalayas in Bhutan, southern China, India, Laos, Nepal, and Burma. If you ever see one, please don't try to spin it into the Firefox logo position for photographing; it won't like it and will probably bite you. &lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/myna.jpg" alt="" title="myna" class="alignright size-full wp-image-40857" height="137" width="180"&gt;&lt;strong&gt;&lt;a href="http://a.viary.com/tools" target="_blank"&gt;Myna&lt;/a&gt;&lt;/strong&gt;, Aviary 公司设计的音频编辑软件Aviary's audio editor is - like all Aviary's products - named after a bird. The &lt;a href="http://en.wikipedia.org/wiki/Myna" target="_blank"&gt;mynas are birds&lt;/a&gt; of the starling family (Sturnidae), a group of birds which occur naturally only in southern and eastern Asia. They prefer the open country, eat insects and fruit, and some of them are quite good at imitating sounds.&lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/songbird.jpg" alt="" title="songbird" class="alignleft size-full wp-image-40858" height="137" width="180"&gt;&lt;strong&gt;&lt;a href="http://getsongbird.com/" target="_blank"&gt;Songbird&lt;/a&gt;&lt;/strong&gt; -基于 Firefox 的媒体播放器，Songbird 也以鸟命名，属于孔雀类，它的发声器官可以发出各种音调。名字和产品很和谐 the Firefox-based media player, Songbird is also named after an animal. Although neither &lt;a href="http://mashable.com/2008/03/26/songbird-05-release/"&gt;Songbird's old&lt;/a&gt; nor &lt;a href="http://getsongbird.com/" target="_blank"&gt;new logo&lt;/a&gt; look much like it. &lt;a href="http://en.wikipedia.org/wiki/Songbird" target="_blank"&gt;Songbird or oscine&lt;/a&gt; is "a bird belonging to the suborder Passeri, in which the vocal organ is developed in such a way as to produce various sound notes, commonly known as bird song." There are many species of songbirds; interestingly enough, crows - which produce rather unpleasant sounds, at least to the human ear - are one of them. &lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/tern.jpg" alt="" title="tern" class="alignright size-full wp-image-40859" height="121" width="180"&gt;&lt;strong&gt;&lt;a href="http://a.viary.com/tools" target="_blank"&gt;Tern&lt;/a&gt;&lt;/strong&gt; -  Aviary 即将推出的地形图生成工具软件。&lt;a href="http://en.wikipedia.org/wiki/Tern"&gt;Tern&lt;/a&gt; 是海鸥的一种in Web terms, is Aviary's upcoming online terrain generator tool. Just like Myna, it's not currently available even as an alpha product, but given Aviary's track record, they're both bound to be very interesting products. &lt;a href="http://en.wikipedia.org/wiki/Tern" target="_blank"&gt;Tern, the bird&lt;/a&gt; is a seabird in the family Sternidae, a relative of gulls and skimmers. Most hunt fish by diving, but they're not particularly fond of swimming. &lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/thunderbird.jpg" alt="" title="thunderbird" class="alignleft size-full wp-image-40861" height="135" width="180"&gt;&lt;strong&gt;&lt;a href="http://www.mozilla-europe.org/en/products/thunderbird/" target="_blank"&gt;Thunderbird&lt;/a&gt;&lt;/strong&gt; -mozilla的邮件接收程序，挺好用的。unlike other animals in this list, is either &lt;a href="http://en.wikipedia.org/wiki/Phorusrhacidae" target="_blank"&gt;extinct&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Thunderbird_%28cryptozoology%29"&gt;never existed&lt;/a&gt;, depending on which type of thunderbird you're referring to. Phorusrhacidae, also known as terror birds, were giant flightless birds that lived in South America during the Cenozoic, and they weren't nice at all, especially if they considered you as prey (which they often did with mammals of all sizes). &lt;/p&gt; &lt;p&gt;If we're talking cryptozoology, Thunderbird is a large bird-like creature rumored by some to still wander the Americas. Mozilla's Thunderbird - once a very important part of their product range - today seems to be on the verge of extinction, too. It's still being actively developed, and it's a great e-mail client; the problem is that no one really cares much about desktop e-mail clients anymore. &lt;/p&gt; &lt;p&gt;&lt;img src="http://mashable.com/wp-content/uploads/2008/10/yahoo1.jpg" alt="" title="yahoo1" class="alignright size-full wp-image-40860" height="147" width="180"&gt;&lt;strong&gt;&lt;a href="http://yahoo.com/" target="_blank"&gt;Yahoo&lt;/a&gt;&lt;/strong&gt; -雅虎！Yahoo 的命名来自史蒂文生的名著《格列佛游记》中一种人面兽身的动物，Yahoo 还有另外一个意思，它是灰冠弯嘴鹛（&lt;a href="http://en.wikipedia.org/wiki/Yahoo_%28bird%29"&gt;Grey-crowned Babbler&lt;/a&gt;）的另一个俗称，生活在澳大利亚，印度尼西亚，以及巴布新几内亚。 besides being the popular Web portal and "the company that should have taken Microsoft's offer before everything went to hell," the word yahoo usually denominates a loud, unintelligent brute. However, there's another meaning to the word: it's the popular name for the &lt;a href="http://en.wikipedia.org/wiki/Yahoo_%28bird%29" target="_blank"&gt;Grey-crowned Babbler&lt;/a&gt;, a bird that inhabits Australia, Indonesia, and Papua New Guinea. Besides its rather specific call which probably gave her the name Yahoo, it doesn't seem to be particularly interesting. &lt;/p&gt; &lt;p&gt;Know of another Web service or product named after an animal? Please, name it in the comments, we'd like to hear about it!&lt;/p&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-4752981298075349521?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/4752981298075349521/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=4752981298075349521&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4752981298075349521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4752981298075349521'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/8.html' title='8种互联网动物'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-953466500222737131</id><published>2008-10-21T16:28:00.001+08:00</published><updated>2008-10-21T16:28:14.582+08:00</updated><title type='text'>nutch0.9, 性能大为提升。</title><content type='html'>&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &lt;p&gt;　　很多用lucene和nutch的用户都有一个很大的烦恼，就是它的性能和稳定性在工程上确实不是很让人感觉满意。&lt;/p&gt; &lt;p&gt;　　不过nutch0.9出来可以让大家多了一点信心，也为自己的项目多了一份保险。据FooFactory的测试，nutch9比nutch8在速度上提升了两倍，存储空间也降了一半。&lt;/p&gt; &lt;p&gt;&amp;nbsp;The following graph shows how the size of equal crawls has changed over time.&lt;br&gt;&lt;br&gt;&lt;img src="http://blog.foofactory.fi/images/perf_size.png" alt=""&gt;&lt;br&gt;&lt;br&gt;Time spend in crawling is plotted below. &lt;br&gt;&lt;br&gt;&lt;img src="http://blog.foofactory.fi/images/perf_time.png" alt=""&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;　　看了这份测试报告，我马上就下来了。准备好好爽一把！&lt;/p&gt;  &lt;/div&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-953466500222737131?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/953466500222737131/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=953466500222737131&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/953466500222737131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/953466500222737131'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutch09.html' title='nutch0.9, 性能大为提升。'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2983650161764619204</id><published>2008-10-21T16:27:00.003+08:00</published><updated>2008-10-21T16:27:49.822+08:00</updated><title type='text'>在BtoB学习的一个来月</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &amp;nbsp; 从口碑到BtoB学习了一个来月了，在这个月里，感觉时间过得好快。来学习，也是来做项目的，因为口碑用的搜索是BtoB的技术，我们争取一定要把它自己掌握以后学以至用。&lt;br&gt;&amp;nbsp; 带着两个需求过来，一开始就以需求为中心行动起来。&lt;br&gt;&amp;nbsp; 先把字典分词搞定，再把按推荐菜次数排序搞定，最后宪哥又多了一个排店铺到临时所先择的中心点距离来排序。三个需求下来。对isearch的认识也加深了不少，也很感觉BtoB这边的孙海涛的支持和帮助。&lt;br&gt;&amp;nbsp; 三个需求搞定，我也就很快要回口碑了。两个地方是很不一样的地方，起码有些代沟，口碑大家都很年青，这里就不一样多了。气氛比较严肃一些。呵呵，不过人是很热情，很好的。一个来月，我也一直忙着做项目也没有和他们认识几个。&lt;br&gt; &amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2983650161764619204?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2983650161764619204/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2983650161764619204&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2983650161764619204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2983650161764619204'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/btob_21.html' title='在BtoB学习的一个来月'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-219395147517022543</id><published>2008-10-21T16:27:00.001+08:00</published><updated>2008-10-21T16:27:16.399+08:00</updated><title type='text'>Spirit+lucene+nutch</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;  &amp;nbsp; 垂直搜索是针对某一个行业的专业搜索引擎，是搜索引擎的细分和延伸， 是对网页库中的某类专门的信息进行一次整合，定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。垂直搜索引擎和普通的网页搜索引擎的最大区别 是对网页信息进行了结构化信息抽取，也就是将网页的非结构化数据抽取成特定的结构化信息数据，好比网页搜索是以网页为最小单位，基于视觉的网页块分析是以 网页块为最小单位，而垂直搜索是以结构化数据为最小单位。然后将这些数据存储到数据库，进行进一步的加工处理，如：去重、分类等，最后分词、索引再以搜索 的方式满足用户的需求&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 垂直搜索引擎技术同信息采集技术有一些共同点,不同的是,信息采集主要是将采集的信息导入本地库，而垂直搜索引擎主要是以网页的形式展现给用户,通用搜索 引擎主要是利用一个spider程序到网络上爬行,一般是某个特定的周期派出一次将网页更新,垂直搜索引擎同样应有一个spider程序，但该程序只在一 些特定的网络上爬行，并不会对每一个链接都感兴趣,相对来说,垂直搜索引擎的收录范围大大缩小了,但并不意味着内容的缩小,通用搜索引擎对一些动态脚本是 不敏感的,例如***asp?id=***,另外还有一些javascript之类的网页一般不被收录,而恰恰是这类动态网页包含了丰富的内容,垂直搜索引擎是必须收录这些动态脚本的,这就 需要在技术上做一些特殊处理,另外由于目前网页中的链接形式非常多,不但有动态脚本也有flash做的链接,这些链接方式通过传统的spider程序是很 难解析出来的,在垂直搜索引擎中也应该解决. &lt;p style="margin-right: 0px;" dir="ltr"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 垂直搜索的核心技术实际上就是智能spider的技术，也就是说如何将定向或者非定向的网页抓取下来进行分析后得到格式化数据的技术。垂直搜索引擎的好坏决定因素很多，但是spider的技术几乎决定了它的大部分得分。行业化很强的垂直搜索，对信息的收集，过滤等步骤的技术要求非常高。这里可以用到的技术很多，可以推荐一些，比如英国的&lt;font size="-1"&gt;&lt;font color="#cc0033"&gt;General Architecture for Text Engineering　，另一个是&lt;/font&gt;&lt;/font&gt;Spirit is an object oriented recursive descent                 parser framework implemented using template                 meta-programming [&lt;a href="http://osl.iu.edu/%7Etveldhui/papers/Template-Metaprograms/meta-art.html" target="_blank"&gt;1&lt;/a&gt;] techniques.&amp;nbsp;&amp;nbsp; &lt;br&gt; &lt;/p&gt; &lt;p style="margin-right: 0px;" dir="ltr"&gt;&lt;br&gt;&lt;/p&gt; &lt;p style="margin-right: 0px;" dir="ltr"&gt;垂直搜索一般情况下爬虫分３种模式：&lt;br&gt;&lt;/p&gt; &lt;br&gt;１．broad search的基础上对信息进行分类挑选组织。&lt;br&gt;２．定向爬虫获取信息，初级的用配上手工或者自动的模版，更高级可以用到相关的信息抽取技术，将信息进行格式化分析入库。&lt;br&gt;３．目标网站提供特殊的数据源的接口，利用这些数据进行再加工。&lt;br&gt;&amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-219395147517022543?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/219395147517022543/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=219395147517022543&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/219395147517022543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/219395147517022543'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/spiritlucenenutch_21.html' title='Spirit+lucene+nutch'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2396427366238865320</id><published>2008-10-21T16:26:00.001+08:00</published><updated>2008-10-21T16:26:32.160+08:00</updated><title type='text'>nutch插件加载机制</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &lt;span&gt; 当某个插件需要被加载时，&lt;/span&gt; &lt;span lang="EN-US"&gt;Nutch&lt;/span&gt; &lt;span&gt;会加载所有插件的相关接口到缓存，此后每个插件需要实例的时候，根据相关接口和相关接口实现实例在缓存内的记录，使用反射实现一个实例并返回，下面以&lt;/span&gt; &lt;span lang="EN-US"&gt;QueryFilter&lt;/span&gt; &lt;span&gt;的所有插件被加载例子进行说明。&lt;/span&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp;&lt;br&gt; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span&gt;具体代码参看org.apache.nutch.seacher.QueryFilters&amp;lt;init&amp;gt;&lt;br&gt;&lt;br&gt;（&lt;/span&gt; &lt;span lang="EN-US"&gt;1&lt;/span&gt; &lt;span&gt;）当第一次需要得到&lt;/span&gt; &lt;span lang="EN-US"&gt;QueryFilter&lt;/span&gt; &lt;span&gt;的一个子类的实例时，使用下面这句话试图获得所有的实例：&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;this.queryFilters = &lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; text-indent: 42.05pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;(QueryFilter[]) conf.getObject(QueryFilter.class .getName());&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span&gt;（&lt;span lang="EN-US"&gt;2&lt;/span&gt;）如果为空，则试图从插件仓库中得到该插件的扩展点：&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;ExtensionPoint point = PluginRepository.get(conf)&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.getExtensionPoint(QueryFilter.X_POINT_ID);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span&gt;在&lt;/span&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;PluginRepository.get(conf)&lt;/span&gt; &lt;/b&gt; &lt;span&gt;这句话中，返回插件仓库，如果仓库为空，会初始化所有插件：&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: rgb(166, 166, 166) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 426.1pt;" valign="top" width="568"&gt;  &lt;p style="margin: 0cm 0cm 0pt; text-align: center;" align="center"&gt; &lt;b&gt; &lt;span&gt;初始化所有插件&lt;span lang="EN-US"&gt;PluginRepository.&amp;lt;init&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: none solid solid; border-color: rgb(212, 208, 200) windowtext windowtext; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 426.1pt; background-color: transparent;" valign="top" width="568"&gt;  &lt;p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;①&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;试图从缓存内获得插件仓库。&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;PluginRepository result = (PluginRepository)CACHE.get(conf);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;②&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;如果未获得，则初始化所有插件&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;result = new PluginRepository(conf);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"&gt; &lt;span style="font-family: Wingdings;" lang="EN-US"&gt; &lt;span&gt;l&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;初始化以活动插件和扩展点的集合&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt; text-indent: 31.6pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;fActivatedPlugins = new HashMap();&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fExtensionPoints = new HashMap();&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;this.conf = conf;&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"&gt; &lt;span style="font-family: Wingdings;" lang="EN-US"&gt; &lt;span&gt;l&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;获得插件存放位置&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;String[] pluginFolders = conf.getStrings(&amp;quot;plugin.folders&amp;quot;);&lt;/b&gt; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"&gt; &lt;span style="font-family: Wingdings;" lang="EN-US"&gt; &lt;span&gt;l&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;实例化&lt;span lang="EN-US"&gt;PluginManifestParser&lt;/span&gt;：&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp; &lt;/span&gt; &lt;b&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;PluginManifestParser manifestParser =&lt;span&gt;&amp;nbsp; &lt;/span&gt;new PluginManifestParser(conf, this);&lt;/b&gt; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;PluginManifestParser&lt;/span&gt; &lt;span&gt;是一个封装了&lt;span lang="EN-US"&gt;PluginRepository&lt;/span&gt;的工具类，在构造时，分析每个插件的文件夹，把每个&lt;span lang="EN-US"&gt;plugin.xml&lt;/span&gt;文件的内容进行分析，记录了所有的插件接口和插件接口内所包含的所有实现类的关系。&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;"&gt; &lt;span style="font-family: Wingdings;" lang="EN-US"&gt; &lt;span&gt;l&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; &lt;/span&gt; &lt;span&gt;放入缓存&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;b&gt;CACHE.put(conf, result);&lt;/b&gt; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;Plugin.xml&lt;/span&gt; &lt;span&gt;描述内容见附录一&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span&gt;（&lt;span lang="EN-US"&gt;3&lt;/span&gt;）获得所有&lt;span lang="EN-US"&gt;QueryFilter&lt;/span&gt;的子类描述。&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;Extension[] extensions = point.getExtensions();&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span&gt;（&lt;span lang="EN-US"&gt;4&lt;/span&gt;）循环获得每个插件的两个参数，&lt;span lang="EN-US"&gt;fieldName&lt;/span&gt;和&lt;span lang="EN-US"&gt;rawFieldNames&lt;/span&gt;，生成每个&lt;span lang="EN-US"&gt;filter&lt;/span&gt;插件实例。&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt;for (int i = 0; i &amp;lt; extensions.length; i++) {&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Extension extension = extensions[i];&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ArrayList fieldNames = parseFieldNames(extension, &amp;quot;fields&amp;quot;);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ArrayList rawFieldNames = parseFieldNames(extension, &amp;quot;raw-fields&amp;quot;);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (fieldNames.size() == 0 &amp;amp;&amp;amp; rawFieldNames.size() == 0) {&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (LOG.isWarnEnabled()) {&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;LOG.warn(&amp;quot;QueryFilter: &amp;quot; + extension.getId()&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;+ &amp;quot; names no fields.&amp;quot;);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;continue;&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;filters[i] = (QueryFilter) extension.getExtensionInstance();&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FIELD_NAMES.addAll(fieldNames);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;FIELD_NAMES.addAll(rawFieldNames);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conf.setObject(&amp;quot;FIELD_NAMES&amp;quot;, FIELD_NAMES);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RAW_FIELD_NAMES.addAll(rawFieldNames);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;conf.setObject(&amp;quot;RAW_FIELD_NAMES&amp;quot;, RAW_FIELD_NAMES);&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;b&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;}&lt;/span&gt; &lt;/b&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp;&lt;br&gt;至此，所有实现QueryFilter的子类实例均被加载。如果需要开发自己的插件，同样可以参考这个过程，plugin.xml的具体内容的描述负在下面： &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;   &lt;/span&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;!―&lt;/span&gt; &lt;span&gt;插件的根元素，根元素的属性表明了一个插件的基本身份&lt;span lang="EN-US"&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;plugin id="&lt;/span&gt; &lt;span&gt;唯一身份（被插件仓库作为身份标示）&lt;span lang="EN-US"&gt;" name="&lt;/span&gt;名称&lt;span lang="EN-US"&gt;" version="&lt;/span&gt;版本号&lt;span lang="EN-US"&gt;" &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; text-indent: 42pt;"&gt; &lt;span lang="EN-US"&gt;provider="&lt;/span&gt; &lt;span&gt;作者&lt;span lang="EN-US"&gt;"class="&lt;/span&gt;类名（可选）&lt;span lang="EN-US"&gt;"&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;!--&lt;/span&gt; &lt;span&gt;以下两个内容中引用的类库，都是作为本类使用反射时生成实例所需要的类库&lt;span lang="EN-US"&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;runtime&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;library name=&amp;quot;&lt;/span&gt; &lt;span&gt;运行时的类库&lt;span lang="EN-US"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;!―&lt;/span&gt; &lt;span&gt;如果存在此元素，则保存到&lt;span lang="EN-US"&gt;fExportedLibs&lt;/span&gt;（输出类库集合），否则存放到&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; text-indent: 63pt;"&gt; &lt;span lang="EN-US"&gt;fNotExportedLibs&lt;/span&gt; &lt;span&gt;（非输出类库集合）&lt;span lang="EN-US"&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;export name=&amp;quot;*&amp;quot;/&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/library&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;/runtime&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;requires&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;!―&lt;/span&gt; &lt;span&gt;需要注意，此处所需要的类库，包括该类库所需的类库，都不得在此引用本插件&lt;span lang="EN-US"&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;import plugin=&amp;quot;&lt;/span&gt; &lt;span&gt;所需类库&lt;span lang="EN-US"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;/requires&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;extension id=&amp;quot;&lt;/span&gt; &lt;span&gt;本类的包名（从代码中看没有被使用）&lt;span lang="EN-US"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;name=&amp;quot;&lt;/span&gt; &lt;span&gt;类名（从代码中看没有被使用）&lt;span lang="EN-US"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;point=&amp;quot;&lt;/span&gt; &lt;span&gt;扩展点类名（即接口名）&lt;span lang="EN-US"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;implementation id=&amp;quot;&lt;/span&gt; &lt;span&gt;实现扩展的唯一标识（与类名相同，被&lt;span lang="EN-US"&gt;parse-plugins.xml&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt; text-indent: 241.5pt;"&gt; &lt;span&gt;作为身份表示使用）&lt;span lang="EN-US"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class=&amp;quot;&lt;/span&gt; &lt;span&gt;实现扩展的类的类名&lt;span lang="EN-US"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;parameter name=&amp;quot;&lt;/span&gt; &lt;span&gt;参数名&lt;span lang="EN-US"&gt;&amp;quot;&lt;span&gt;&amp;nbsp; &lt;/span&gt;value=&amp;quot;&lt;/span&gt;参数值&lt;span lang="EN-US"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;/extension&amp;gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;!―&lt;/span&gt; &lt;span&gt;仅在&lt;span lang="EN-US"&gt;nutch-extensionpoints\plugin.xml&lt;/span&gt;中存在，一次性加载纪录下所有的扩展点的名称&lt;span lang="EN-US"&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt;&amp;lt;&lt;/span&gt; &lt;span lang="EN-US"&gt; &lt;/span&gt; &lt;span lang="EN-US"&gt;extension-point id="&lt;/span&gt; &lt;span&gt;扩展点唯一标识&lt;span lang="EN-US"&gt;"name="&lt;/span&gt;扩展点名&lt;span lang="EN-US"&gt;"/&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span lang="EN-US"&gt; &amp;nbsp; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;"&gt; &lt;span style="font-size: 10.5pt;" lang="EN-US"&gt;&amp;lt;/plugin&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;下次会写一个完整的plugin以供参考。&lt;br&gt;&lt;br&gt;摘自&lt;a href="http://www.blogjava.net/redmu/archive/2006/12/02/85092.html" target="_blank"&gt;http://www.blogjava.net/redmu/archive/2006/12/02/85092.html&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;  &amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2396427366238865320?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2396427366238865320/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2396427366238865320&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2396427366238865320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2396427366238865320'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutch_6217.html' title='nutch插件加载机制'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5183315151059968099</id><published>2008-10-21T16:25:00.005+08:00</published><updated>2008-10-21T16:25:58.909+08:00</updated><title type='text'>linux sed 批量替换多个文件中的字符串</title><content type='html'>&lt;br&gt;  &lt;div class="gmail_quote"&gt;&lt;p style="font-size: 18pt; font-family: Comic Sans MS;"&gt;一、linux sed 批量替换多个文件中的字符串&lt;br&gt;&lt;br&gt;sed -i &amp;quot;s/oldstring/newstring/g&amp;quot; `grep oldstring -rl yourdir`&lt;br&gt;&lt;br&gt;例如：替换/home下所有文件中的&lt;a href="http://www.bcak.com.cn" target="_blank"&gt;www.bcak.com.cn&lt;/a&gt;为&lt;a href="http://bcak.com.cn" target="_blank"&gt;bcak.com.cn&lt;/a&gt;&lt;br&gt; &lt;br&gt;sed -i &amp;quot;s/&lt;a href="http://www.bcak.com.cn/bcak.com.cn/g" target="_blank"&gt;www.bcak.com.cn/bcak.com.cn/g&lt;/a&gt;&amp;quot; `grep &lt;a href="http://www.bcak.com.cn/" target="_blank"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;www.bcak.com.cn&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; -rl /home`&lt;/p&gt;  &lt;p style="font-size: 18pt; font-family: Comic Sans MS;"&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; 二、下面这条命令：&lt;br&gt;perl -pi -e &amp;#39;s|ABCD|Linux|g&amp;#39; `find ./ -type f`&lt;br&gt;将调用perl执行一条替换命令，把find命令找到的所有文件内容中的ABCD替换为Linux&lt;br&gt;&lt;br&gt;find ./ -type f&lt;br&gt;此命令是显示当前目录下所有的文件&lt;br&gt;&lt;br&gt;上面的"s|ABCD|Linux| g"是perl要执行的脚本，即把所有ABCD替换为Linux&lt;br&gt; 如果不写最后的那个g，"s|ABCD|Linux| "将只替换每一行开头的ABCD&amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5183315151059968099?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5183315151059968099/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5183315151059968099&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5183315151059968099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5183315151059968099'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/linux-sed_21.html' title='linux sed 批量替换多个文件中的字符串'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8848779520609987059</id><published>2008-10-21T16:25:00.003+08:00</published><updated>2008-10-21T16:25:33.650+08:00</updated><title type='text'>windows下的hadoop的分布部署</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;  &lt;span&gt;&lt;font size="2"&gt;1.windows下的hadoop的分布部署主要有两种方式&lt;br&gt;1.1.采用cygwin模拟linux下命令的方式,部署安装hadoop系统.&lt;br&gt;&amp;nbsp; 1.2.修改系统的代码文件DF.java使其可以在windows下运行. &lt;br&gt;&amp;nbsp; 主要原因在于,在hadoop的代码中对数据节点的磁盘使用情况的获取采用了&lt;br&gt;&amp;nbsp; linux下的df -k 命令进行获取&lt;br&gt;而在windows没有此命令支持,因此在数据节点启动DataNode时会产生启动进程异常错误.&lt;br&gt; &amp;nbsp; 解决的方法在&lt;br&gt;hadoop的网站上已说明&lt;br&gt;具体参看.&lt;br&gt;&amp;nbsp; &lt;/font&gt;&lt;a href="http://issues.apache.org/jira/browse/HADOOP-33?" target="_blank"&gt;&lt;font size="2"&gt;http://issues.apache.org/jira/browse/HADOOP-33?&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel&lt;br&gt; 基本上是找到相应的替换命令获取磁盘空间,在window xp以及2003下采用&lt;br&gt;fsutil命令获取磁盘情况即可.&lt;br&gt;&lt;/font&gt;&lt;b&gt;&lt;font size="2"&gt;2. 需要注意的是:&lt;br&gt;在上面的网址中提供的方法还有一个问题需要解决&lt;br&gt;:获取磁盘命令获取到的信息.对于操作系统的不同语言版本获取的磁盘信息前缀信息也不一样,所以对于不同的操作系统不同的语言版本可以根据需要做修改.&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8848779520609987059?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8848779520609987059/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8848779520609987059&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8848779520609987059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8848779520609987059'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/windowshadoop_21.html' title='windows下的hadoop的分布部署'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-2803221718264342136</id><published>2008-10-21T16:25:00.001+08:00</published><updated>2008-10-21T16:25:10.288+08:00</updated><title type='text'>个人常用的VIM命令列表</title><content type='html'>&lt;span&gt; &lt;/span&gt;移动光标&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;p&gt;上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行&lt;br&gt;下:j nj:向下移动n行&lt;br&gt;左:h nh:向左移动n列&lt;br&gt;右:l nl:向右移动n列 &lt;/p&gt; &lt;p&gt;w：光标以单词向前移动 nw：光标向前移动n个单词 光标到单词的第一个字母上&lt;br&gt;b：与w相反&lt;br&gt;e: 光标以单词向前移动 ne：光标向前移动n个单词 光标到单词的最后一个字母上&lt;br&gt;ge:与e相反&lt;/p&gt; &lt;p&gt;$:移动光标到行尾 n$:移动到第n行的行尾&lt;br&gt;0（Num）：移动光标到行首&lt;br&gt;^:移动光标到行首第一个非空字符上去&lt;/p&gt; &lt;p&gt;f&amp;lt;a&amp;gt;:移动光标到当前行的字符a上，nf&amp;lt;a&amp;gt;移动光标到当前行的第n个a字符上&lt;br&gt;F:相反&lt;/p&gt; &lt;p&gt;%:移动到与制匹配的括号上去（），{}，[]，&amp;lt;&amp;gt;等。&lt;/p&gt; &lt;p&gt;nG:移动到第n行上 G:到最后一行&lt;/p&gt; &lt;p&gt;CTRL＋G 得到当前光标在文件中的位置&lt;/p&gt; &lt;p&gt;向前翻页：CTRL+F&lt;br&gt;向下移动半屏：CTRL＋G&lt;br&gt;向后翻页：CTRL+B&lt;/p&gt; &lt;p&gt;存盘：&lt;br&gt;:q! :不存盘退出&lt;br&gt;:e! :放弃修改文件内容，重新载入该文件编辑&lt;br&gt;:wq ：存盘退出&lt;/p&gt; &lt;p&gt;dw：删除一个单词,需将光标移到单词的第一个字母上，按dw，如果光标在单词任意位置，用daw&lt;br&gt;dnw:删除n个单词&lt;br&gt;dne:也可，只是删除到单词尾&lt;br&gt;dnl:向右删除n个字母&lt;br&gt;dnh:向左删除n个字母&lt;br&gt;dnj:向下删除n行&lt;br&gt;dnk:向上删除n行&lt;br&gt;d$：删除当前光标到改行的行尾的字母&lt;br&gt;dd：删除一行&lt;br&gt;cnw[word]:将n个word改变为word&lt;br&gt;cc:改变整行&lt;br&gt;C$:改变到行尾&lt;/p&gt;  &lt;p&gt;J: 删除换行符，将光标移到改行，按shift+j删除行尾的换行符，下一行接上来了.&lt;br&gt;u: 撤销前一次的操作&lt;br&gt;shif+u(U):撤销对该行的所有操作。&lt;br&gt;&lt;br&gt;:set showmode :设置显示工作模式&lt;/p&gt; &lt;p&gt;o：在当前行的下面另起一行&lt;br&gt;O（shift+o)：在当前行的上面另起一行&lt;/p&gt; &lt;p&gt;nk或nj：光标向上或向下移n行，n为数字&lt;br&gt;an!【ESC】：在行后面加n个感叹号(!)&lt;br&gt;nx:执行n次x(删除)操作&lt;/p&gt; &lt;p&gt;ZZ：保存当前文档并退出VIM&lt;/p&gt; &lt;p&gt;:help ：查看帮助文档，在这之中，按CTRL+] 进入超连接，按CTRL＋O 返回。&lt;br&gt;:help subject :看某一主题的帮助，ZZ 退出帮助&lt;/p&gt; &lt;p&gt;:set number / set nonumber :显示/不显示行号&lt;br&gt;:set ruler /set noruler:显示/不显示标尺&lt;/p&gt; &lt;p&gt;/pattern 正方向搜索一个字符模式&lt;br&gt;?pattern 反方向搜索一个字符模式&lt;br&gt;然后按n 继续向下找&lt;/p&gt; &lt;p&gt;把光标放到某个单词上面，然后按*号键，表示查找这个单词&lt;br&gt;查找整个单词：/\&amp;lt;word\&amp;gt;&lt;/p&gt; &lt;p&gt;:set hlsearch 高亮显示查找到的单词&lt;br&gt;:set nohlsearch 关闭改功能&lt;br&gt;&lt;br&gt;m[a-z]:在文中做标记，标记号可为a-z的26个字母，用`a可以移动到标记a处&lt;br&gt;&lt;/p&gt; &lt;p&gt;自动补全：&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ctrl+p&amp;nbsp;&lt;/p&gt; &lt;p&gt;r:替换当前字符&lt;br&gt;nr字符：替换当前n个字符&lt;/p&gt; &lt;p&gt;查找替换：&lt;br&gt;way1:&lt;br&gt;/【word】 :查找某个word&lt;br&gt;cw【newword】:替换为新word&lt;br&gt;n: 继续查找&lt;br&gt;.: 执行替换&lt;/p&gt; &lt;p&gt;way2:&lt;br&gt;:s/string1/string2/g:在一行中将string1替换为string2,g表示执行 用c表示需要确认&lt;br&gt;:num1,num2 s/string1/string2/g:在行num1至num2中间将string1替换为string2&lt;br&gt;:1,$ s/string1/string2/g:在全文中将string1替换为string2&lt;/p&gt; &lt;p&gt;&lt;br&gt;v:进入visual 模式&lt;br&gt;【ESC】退出&lt;br&gt;V:shift+v 进入行的visual 模式&lt;br&gt;CTRL+V:进如块操作模式用o和O改变选择的边的大小。&lt;/p&gt; &lt;p&gt;粘贴：p，这是粘贴用x或d删除的文本&lt;br&gt;复制：&lt;br&gt;ynw：复制n个单词&lt;br&gt;yy：复制一行&lt;br&gt;ynl:复制n个字符&lt;br&gt;y$:复制当前光标至行尾处&lt;br&gt;nyy:拷贝n行&lt;br&gt;完了用p粘贴&lt;/p&gt; &lt;p&gt;:split:分割一个窗口&lt;br&gt;:split file.c ：为另一个文件file.c分隔窗口&lt;br&gt;:nsplit file.c: 为另一个文件file.c分隔窗口，并指定其行数&lt;br&gt;CTRL＋W在窗口中切换&lt;br&gt;:close：关闭当前窗口&lt;/p&gt; &lt;p&gt;在所有行插入相同的内容如include&amp;lt;，操作方法如下：&lt;br&gt;将光标移到开始插入的位置，按CTRL+V进入VISUAL模式，选择好模块后&lt;br&gt;按I（shift+i)，后插入要插入的文本，按[ESC]完成。&lt;/p&gt; &lt;p&gt;:read file.c 将文件file.c的内容插入到当前光标所在的下面&lt;br&gt;:0read file.c 将文件file.c的内容插入到当前文件的开始处(第0行）&lt;br&gt;:nread file.c 将文件file.c的内容插入到当前文件的第n行后面&lt;br&gt;:read !cmd :将外部命令cmd的输出插如到当前光标所在的下面&lt;/p&gt; &lt;p&gt;:n1,n2 write temp.c 将本文件中的n1,到n2行写入temp.c这个文件中去&lt;/p&gt; &lt;p&gt;CTRL＋L刷新屏幕&lt;br&gt;shift + &amp;lt; 左移一行&lt;br&gt;shift + &amp;gt; 右移一行&lt;/p&gt; &lt;p&gt;u: undo&lt;br&gt;CTRL+R: re-do&lt;br&gt;J: 合并一行&lt;br&gt;CTRL+p 自动完成功能&lt;br&gt;CTRL+g 查看当前文件全路径&lt;br&gt;&lt;/p&gt; &lt;p&gt;q[a-z] 开始记录但前开始的操作为宏，名称可为【a-z】，然后用q终止录制宏。&lt;br&gt;用reg显示当前定义的所有的宏，用@[a-z]来在当前光标处执行宏[a-z].&lt;/p&gt; &amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-2803221718264342136?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/2803221718264342136/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=2803221718264342136&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2803221718264342136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/2803221718264342136'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/vim_9293.html' title='个人常用的VIM命令列表'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6547334693137328139</id><published>2008-10-21T16:24:00.001+08:00</published><updated>2008-10-21T16:24:42.406+08:00</updated><title type='text'>为log4j增加自定义级别</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &amp;nbsp; 并非在项目应用中原先的几个级别不够用了，通常的info,warn,debug ,error,fatal已经可以满足一般的应用，而且log4j也是不推荐用户自定义级别的。&lt;br&gt;&amp;nbsp; 由于在我们的搜索引擎里要为每天的巨大搜索量的日记进行分门别类的记录，面原先的几个级别在程序都已经按一般的需求使用了，所以就必要自己再定义出新的级别以满足我们的需求。&lt;br&gt;&amp;nbsp; 为log4j增加自定义级别其实是一件比较简单的事件。&lt;br&gt;&amp;nbsp; org.apache.log4j包下的Level.java和Logger.java这两个类改一下，或你继承它们再写一个新类，写法的话你就照着其它的几个级别的写法就可以了。&lt;br&gt; &amp;nbsp; 几分钟搞定，然后再编译打包就可以了。&lt;br&gt;&lt;br&gt;&amp;nbsp; 使用就和其它的级别一样了，只是新加的级别数的问题要你自己好好想想。&lt;br&gt;&amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6547334693137328139?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6547334693137328139/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6547334693137328139&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6547334693137328139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6547334693137328139'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/log4j_21.html' title='为log4j增加自定义级别'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8247811527723246805</id><published>2008-10-21T16:23:00.001+08:00</published><updated>2008-10-21T16:23:18.730+08:00</updated><title type='text'>Hadoop -- Map-Reduce具体实现详解</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &lt;p style="margin-bottom: 0.19in;" align="center"&gt; &lt;a href="http://wiki.apache.org/lucene-hadoop/HadoopMapReduce?action=fullsearch&amp;amp;value=linkto%3A%22HadoopMapReduce%22&amp;amp;context=180" target="_blank"&gt;&lt;b&gt;&lt;u&gt;&lt;font size="6"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;HadoopMapReduce&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="center" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font size="5"&gt;&lt;b&gt;--Map-Reduce&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="5"&gt;&lt;span lang="zh-CN"&gt;&lt;b&gt;具体实现详解&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="left" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;Keyword: &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileSplit:&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;文件的子集&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;--&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;文件分割体&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font style="font-size: 13pt;" size="4"&gt;&lt;span lang="zh-CN"&gt;&lt;b&gt;简介：&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;这篇文档描述在&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;hadoop&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;中&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;和&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;操作是怎样具体完成的。如果你对&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Google&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;MapReduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;各式模式不熟悉，请先参阅&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://labs.google.com/papers/mapreduce.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;MapReduce&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;--&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;a href="http://labs.google.com/papers/mapreduce.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;http://labs.google.com/papers/mapreduce.html&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font style="font-size: 13pt;" size="4"&gt;&lt;b&gt;Map&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;由于&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;是并行地对输入的文件集进行操作，所以它的第一步&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/FileSplit.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;FileSplit&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;) &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;就是把文件集分割成一些子集&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;如果一个单个的文件大到它已影响到查找效率时，它会被分割成一些小的分割体。要指出的是分割这个一步是不知道输入文件的内部 逻辑结构的，比如，以行为逻辑分割的文本文件会被以任意的字节界限分割，所以这个具体分割要自己去指定也可以用&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;hadoop&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;已经定义的几个简单分割。然后 每个文件分割体都会对应地有一个新的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;当单个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务开始时，它会对每个配置过的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务开启一个新的输出书写器&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(writer).&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;紧接着它&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(writer)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;会用从指定的特定&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/InputFormat.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;InputFormat&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;里得到的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/RecordReader.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;RecordReader&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;去读它的文件分割体。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;InputFormat&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类分析输入文件并产生&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key-value&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;键值对&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;同时&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;InputFormat&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;必需要处理在以文件分割时边界处的记录。比如&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TextInputFormat.java?view=markup" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;TextInputFormat&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;会读取分割边界的文件分割体有最后一行，如果当读取的分割体不是第一个时，&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/TextInputFormat.java?view=markup" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;TextInputFormat&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;会忽略第一行的内容。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/RecordReader.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;&lt;br&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;InputFormat&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;类并不需要产生一些对有意义的键值对。比如&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;TextInputFormat&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;类的默认输出是以输入文本的行内容为&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;value,&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;以行偏移量为&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;key--&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;大多数应用只用到而很少用到偏移量。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;传给用户配置的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;mapper&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的键值对都是从&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;RecordReader&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;读入的，用户提供的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Mapper&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类就可以对键值对进行任意的操作再调用&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/OutputCollector.html#collect%28org.apache.hadoop.io.WritableComparable,%20org.apache.hadoop.io.Writable%29" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;OutputCollector.collect&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;方法来重新收集自己定义后的键值对。产生的输出必需用一个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类和一个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;value&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类，这是因为&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的输出结果要被以&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://wiki.apache.org/lucene-hadoop/SequenceFile" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;SequenceFile&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的形式写入磁盘，这种形式包括每个文件的类型信息和所有的记录都是同类形的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;如果你想输出不同的数据结构你可以继承个子类出来&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的输入和输出键值对不需要在类型上有联系&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;当&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;Mapper&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的输出被收集后，它们会被&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/Partitioner.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;Partitioner&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类以指定的方式区分地写出到输出文件里。默认是以&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/lib/HashPartitioner.html" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;HashPartitioner&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类用&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类的哈希函数产生的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;hashcode&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;来区分&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;因此就要有一个很好的哈希函数，才可以使在各个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务时负载匀衡&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;。详细可以查看&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/MapTask.java?view=markup" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;MapTask&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;N&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;个输入可以产生&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;M&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务去跑，每个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务会产生配置的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务数个输出文件。每个输出文件都会面向一个特定的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务同时所有从&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务产生的键值对都会被送到&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;里。所以在一个特定的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务中对于一个给定的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;所有的键值对都会被处理。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;br&gt;&lt;br&gt; &lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font style="font-size: 13pt;" size="4"&gt;&lt;b&gt;Combine&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;当&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;操作输出它的键值对时他们已经在内存中存在了。为了性能和效率的考虑，有时候提供一个拥有&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;功能的合成器是有好处的。如果有 合成器，那么&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;的键值对就不会被马上写入到输出里，他们会被收集在&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;list&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;里，一个&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;值一个&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;list&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;，当写入一定数量的键值对时，这部分缓冲会被 送进合成器，每个&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;都的所有&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;value&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;都会被送进合成器的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;方法里并且就像原先&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;输出的键值对一样。&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;br&gt;&lt;br&gt; &lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;比如，&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;hadoop&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;案例中的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;word count&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;程序，它的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;操作输出是&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;(word,1)&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;键值对，在输入中的词的计数可以用合成器来加速这个操作。一个合成操作会在内存中收集处理&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;lists&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;，一个词一个&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;list&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;。当一定数量的键值对输出到内存中时，就调用合成操作的&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;方法，每次都以一个唯一的词为&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;，&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;values&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;是&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;list&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;的迭代器。然后合成器输出&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;(word, count-in-this-part-of-the-input)&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;键值对。从&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;Reduce&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;操作的观点来说合成器也拥有&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;Map&lt;/font&gt;&lt;/font&gt;&lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;&lt;span lang="zh-CN"&gt;输出中相同的信息，但是这样会比原先远远减少硬盘的读写。 &lt;/span&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font style="font-size: 13pt;" size="4"&gt;&lt;b&gt;Reduce&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;当一个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务开始时，它的输入是分散在各个节点上的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;map&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的输出文件里。如果在分布式的模式下，他们需要先在拷贝步骤里拷贝到本地文件系统上。详细可以查看&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/ReduceTaskRunner.java?view=markup" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;ReduceTaskRunner&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;一旦所有的数据都在本地有效时，它会在添加步骤里加到一个文件里。然后这个文件会被合并分类这样相同的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;的键值对就可以排在一起&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;分类步骤&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;。这样可以使真正的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;操作变得简单，这个文件会被顺序地读入，值&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;(values)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;会从输入文件里用一个迭代器传给&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;方法&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;-&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;直到下一个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;。详细可以查看&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://svn.apache.org/viewcvs.cgi/lucene/hadoop/trunk/src/java/org/apache/hadoop/mapred/ReduceTask.java?view=markup" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;ReduceTask&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类。&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="left"&gt; &amp;nbsp; &lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;最后，输出由每个&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;reduce&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;任务的输出文件组成。面他们的格式可以由&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/JobConf.html#setOutputFormat%28java.lang.Class%29" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;JobConf.setOutputFormat&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类指定，如果用到&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href="http://lucene.apache.org/hadoop/docs/api/org/apache/hadoop/mapred/JobConf.html#setOutputFormat%28java.lang.Class%29" target="_blank"&gt;&lt;u&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;&lt;font color="#0000ff"&gt;JobConf.setOutputFormat&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类，那么输出的&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;key&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类和&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span lang="en"&gt;&lt;font size="3"&gt;&lt;font face="宋体, SimSun"&gt;value&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;&lt;font size="3"&gt;类都要同时指定。 &lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;  &lt;p style="margin-top: 0.19in; margin-bottom: 0.19in;" align="right" lang="en"&gt; &lt;font face="宋体, SimSun"&gt;&lt;font size="3"&gt;last edited 2007-08-10 09:26:55 by Arun C Murthy&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;" align="right"&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;翻译：吴志敏&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;" align="center"&gt;&lt;font face="宋体, SimSun"&gt;&lt;span lang="zh-CN"&gt;原文：&lt;/span&gt;&lt;/font&gt;&lt;a href="http://wiki.apache.org/lucene-hadoop/HadoopMapReduce" target="_blank"&gt;http://wiki.apache.org/lucene-hadoop/HadoopMapReduce&lt;/a&gt;&lt;/p&gt;  &amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8247811527723246805?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8247811527723246805/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8247811527723246805&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8247811527723246805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8247811527723246805'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/hadoop-map-reduce_21.html' title='Hadoop -- Map-Reduce具体实现详解'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6196946020588391224</id><published>2008-10-21T16:22:00.003+08:00</published><updated>2008-10-21T16:22:41.760+08:00</updated><title type='text'>Nutch Crawler工作流程</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;  &lt;h1 style="text-align: center;"&gt;Nutch Crawler工作流程及文件格式详细分析&lt;/h1&gt; Crawler和Searcher两部分被尽是分开，其主要目的是为了使两个部分可以布地配置在硬件平台上，例如Crawler和Searcher分别被放置在两个主机上，这样可以极大的提高灵活性和性能。&lt;br&gt; &lt;span style="font-weight: bold;"&gt;一、总体介绍：&lt;/span&gt;&lt;br&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1、先注入种子urls到crawldb&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2、循环：&lt;br&gt; &lt;ul&gt; &lt;li&gt;generate 从crawldb中生成一个url的子集用于抓取&lt;/li&gt; &lt;li&gt;fetch 抓取上一小的url生成一个个segment&lt;/li&gt; &lt;li&gt;parse 分析已抓取segment的内容&lt;/li&gt; &lt;li&gt;update 把已抓取的数据更新到原先的crawldb&lt;br&gt; &lt;/li&gt; &lt;/ul&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3、从已抓取的segments中分析出link地图&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 4、索引segment文本及inlink锚文本&lt;br&gt; &lt;span style="font-weight: bold;"&gt;二、相关的数据结构：&lt;/span&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Crawl DB&lt;br&gt; ● CrawlDb 是一个包含如下结构数据的文件:&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;URL, CrawlDatum&amp;gt;&lt;br&gt; ● CrawlDatum:&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;status, date, interval, failures, linkCount, ...&amp;gt;&lt;br&gt; ● Status:&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {db_unfetched, db_fetched, db_gone,linked,&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fetch_success, fetch_fail, fetch_gone}&lt;br&gt; &lt;br&gt; 　　爬虫Crawler：&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Crawler的工作流程包括了整个nutch的所有步骤－－injector,generator,fetcher,parseSegment, updateCrawleDB,Invert links, Index ,DeleteDuplicates, IndexMerger&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Crawler涉及的数据文件和格式和含义，和以上的各个步骤相关的文件分别被存放在物理设备上的以下几个文件夹里，crawldb,segments,indexes,linkdb,index五个文件夹里。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 那么各个步骤和流程是怎么，各个文件夹里又是放着什么呢？&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 观察Crawler类可以知道它的流程&lt;br&gt;./nutch crawl urls -dir ~/crawl -depth 4 -threads 10 -topN 2000&lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、&lt;font color="#ff0000"&gt;Injector injector = new Injector(conf);&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#ff0000"&gt;Usage: Injector &amp;lt;crawldb&amp;gt; &amp;lt;url_dir&amp;gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 首先是&lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;建立起始url集，每个url都经过&lt;b&gt;URLNormalizers&lt;/b&gt;、&lt;b&gt;filter&lt;/b&gt;和&lt;b&gt;scoreFilter&lt;/b&gt;三 个过程并标记状态。首先经过normalizer plugin,把url进行标准化，比如basic　nomalizer的作用有把大写的url标准化为小写，把空格去除等等。然后再经过的plugin 是filter，可以根据你写的正则表达式把想要的url留下来。经过两个步骤后，然后就是把这个url进行状态标记，每个url都对应着一个 CrawlDatum,这个类对应着每个url在所有生命周期内的一切状态。细节上还有这个url处理的时间和初始时的分值。&lt;br&gt; 　　同时，在这个步骤里，会在文件系统里生成　如下文件　crawlDB\current\part-00000&lt;br&gt;　　这个文件夹里还有.data.crc , .index.crc, data, index四个文件&lt;br&gt;&lt;br&gt; ● MapReduce1: 把输入的文件转换成DB格式&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;In: 包含urls的文本文件&lt;br&gt;  &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Map(line) → &amp;lt;url, CrawlDatum&amp;gt;; status=db_unfetched&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Reduce() is identity;&lt;br&gt;  &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Output: 临时的输出文件夹&lt;br&gt; ● MapReduce2: 合并到现有的DB&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Input: 第一步的输出和已存在的DB文件&lt;br&gt;  &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Map() is identity.&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Reduce: 合并CrawlDatum成一个实体(entry)&lt;br&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: rgb(255, 255, 255);" color="#000000"&gt;Out: 一个新的DB&lt;br&gt; &lt;/font&gt;&lt;font color="#ff0000"&gt;　　&lt;br&gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、&lt;font color="#ff0000"&gt;Generator generator = new Generator(conf);//Generates a subset of a crawl db to fetch&lt;br&gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Usage: Generator &amp;lt;crawldb&amp;gt; &amp;lt;segments_dir&amp;gt; [-force] [-topN N] [-numFetchers numFetchers] [-adddays numDays] [-noFilter]&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 在这个步骤里，Generator一共做了四件事情，&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、给前面injector完成的输出结果里按分值选出前topN个url,作为一个fetch的子集。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、根据第一步的结果检查是否已经选取出一些url,CrawlDatum的实体集。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、再次转化，此次要以url的host来分组，并以url的hash来排序。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4、根据以上的步骤的结果来更新crawldb(injector产生)。&lt;br&gt; &lt;br&gt; ● MapReduce1: 根据要求选取一些要抓取的url&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; In: Crawl DB 文件&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Map() → if date≥now, invert to &amp;lt;CrawlDatum, url&amp;gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Partition 以随机的hash值来分组&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce:&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; compare() 以 CrawlDatum.linkCount的降序排列&lt;br&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp; output only top-N most-linked entries&lt;br&gt;  ● MapReduce2: 为下一步抓取准备&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Map() is invert; Partition() by host, Reduce() is identity.&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: 包含&amp;lt;url,CrawlDatum&amp;gt; 要并行抓取的文件&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;　　3、Fetcher fetcher = new Fetcher(conf);//The fetcher. Most of the work is done by plugins&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  Usage: Fetcher &amp;lt;segment&amp;gt; [-threads n] [-noParsing]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 这个步骤里，Fetcher所做的事情主要就是抓取了，同时也完成一些其它的工作。首先，这是一个多线程的步骤，默认以10个线程去抓取。根据抓取回来后 的结果状态来进行不同的标记，存储，再处理等等行为。输入是上一步骤Generator产生的segment文件夹，这个步骤里，考虑到先前已经按照ip 或host来patition了，所以在此就不再把input文件进行分割了。程序继承了SequenceFileInputFormat重写了 inputFormat来达到这点。这个类的各种形为都是插件来具体完成的，它只是一个骨架一样为各种插件提供一个平台。它先根据url来取出具体的 protocol，得到protocolOutput，进而得到状态status及内容content。然后，根据抓取的状态status来继续再处理。 再处理时，首先会将这次抓取的内容content、状态status及它的状态标记进行存储。这个存储的过程中，还会记下抓取的时间，再把segment 存过metadata，同时在分析parsing前经过scoreFilter，再用parseUtil(一系列的parse插件)进行分析，分析后再经 过一次score插件的处理。经过这一系列处理后，最后进行输出（url,fetcherOutput）。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 之前讲到根据抓取回来的各种状态，进行再处理，这些状态一共包括12种，比如当抓取成功时，会像上刚讲的那样先存储结果，再判断是否是链接跳转，跳转的次数等等处理。&lt;br&gt;&lt;br&gt; ● MapReduce:抓取&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; In: &amp;lt;url,CrawlDatum&amp;gt;, 以host分区, 以hash值排序&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map(url,CrawlDatum) → &amp;lt;url, FetcherOutput&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 多线程的, 同步的map实现&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; 调用已有的协议protocol插件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; FetcherOutput: &amp;lt;CrawlDatum, Content&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce is identity&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: 两个文件: &amp;lt;url,CrawlDatum&amp;gt;, &amp;lt;url,Content&amp;gt;&lt;br&gt; &lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  4、 ParseSegment parseSegment = new ParseSegment(conf);//Parse content in a segment&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  Usage: ParseSegment segment&lt;br&gt;&amp;nbsp; 对于这个步骤的逻辑比较简单，只是对抓取后上一步骤存储在segment里的content进行分析parse。同样，这个步骤的具体工作也是由插件来完成的。&lt;br&gt; &lt;br&gt; MapReduce: 分析内容&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; In: &amp;lt;url, Content&amp;gt; 抓取来的内容&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map(url, Content) → &amp;lt;url, Parse&amp;gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 调用分析插件parser plugins&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce is identity.&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Parse: &amp;lt;ParseText, ParseData&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: 分割成三个文件: &amp;lt;url,ParseText&amp;gt;, &amp;lt;url,ParseData&amp;gt; 和&amp;lt;url,CrawlDatum&amp;gt; 为了outlinks.&lt;br&gt; &lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  5、CrawlDb crawlDbTool = new CrawlDb(conf);//takes the output of the fetcher and updates the crawldb accordingly.&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Usage: CrawlDb &amp;lt;crawldb&amp;gt; (-dir &amp;lt;segments&amp;gt; | &amp;lt;seg1&amp;gt; &amp;lt;seg2&amp;gt; ...) [-force] [-normalize] [-filter] [-noAdditions]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个类主要是根据fetcher的输出去更新crawldb。 map和reduce分别做了两方面的事情，在map里是对url的nomalizer,和filte,在reduce里是对新抓取进来的页面(CrawlDatum)和原先已经存在的进行合并。&lt;br&gt;  &lt;br&gt; MapReduce:合并抓取的和分析后的输出到crawldb里&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; In: &amp;lt;url,CrawlDatum&amp;gt;现有的db加上抓取后的和分析后的输出&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map() is identity&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce() 合并所有实体(entry)成一个，以抓取后的状态覆盖原先的db状态信息，统计出分析后的链接数&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: 新的crawl db&lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  6.LinkDb linkDbTool = new LinkDb(conf);//Maintains an inverted link map, listing incoming links for each url.&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Usage: LinkDb &amp;lt;linkdb&amp;gt; (-dir &amp;lt;segmentsDir&amp;gt; | &amp;lt;seg1&amp;gt; &amp;lt;seg2&amp;gt; ...) [-force] [-noNormalize] [-noFilter]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个类的作用是管理新转化进来的链接映射，并列出每个url的外部链接(incoming links)。先是对每一个url取出它的outLinks，作map操作把这个url作为每个outLinks的incoming link，在reduce里把根据每个key来把一个url的所有incoming link都加到inlinks里。这样就把每个url的外部链接统计出来了。然后一步是对这些新加进来的链接进行合并。&lt;br&gt;  &lt;br&gt; ● MapReduce: 统计每个链接的外部链接&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; In: &amp;lt;url,ParseData&amp;gt;, 包含所有链接的分析后的结果&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map(srcUrl, ParseData&amp;gt; → &amp;lt;destUrl, Inlinks&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 为每个链出链接收集一个入链。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Inlinks: &amp;lt;srcUrl, anchorText&amp;gt;*&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce()加上外部入链数量&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: &amp;lt;url, Inlinks&amp;gt;, 一个相关完整的链接地图&lt;br&gt; &lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  7.Indexer indexer = new Indexer(conf);//Create indexes for segments&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  Usage: &amp;lt;index&amp;gt; &amp;lt;crawldb&amp;gt; &amp;lt;linkdb&amp;gt; &amp;lt;segment&amp;gt; ...&lt;br&gt;　 　这个类的任务是另一方面的工作了，它是基于hadoop和lucene的分布式索引。它就是为前面爬虫抓取回来的数据进行索引好让用户可以搜索到这些数 据。这里的输入就比较多了，有segments下的fetch_dir,parseData和parseText，还有crawldb下的 current_dir和linkdb下的current_dir。在这个类里，map也不做，在reduce时处理。当然要把这些数据体组合成一个 lucene的document让它索引了。在reduce里组装好后收集时是&amp;lt;url,doc&amp;gt;，最后在输出的OutputFormat类 里进行真正的索引。&lt;br&gt;  &lt;br&gt; ● MapReduce: 生成lucene的索引文件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; In: 外个文件, values 以 &amp;lt;Class, Object&amp;gt;包装&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url, ParseData&amp;gt; from parse, 有title, metadata, 等等信息.&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url, ParseText&amp;gt; from parse, 文本 text&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url, Inlinks&amp;gt; from invert, 锚文本anchors&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url, CrawlDatum&amp;gt; from fetch,用于抓取&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Map() is identity&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Reduce() 生成Lucene Document&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 调用index插件&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Out: 建立Lucene 索引; 最后存储到文件系统上&lt;br&gt; &lt;br&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  8. DeleteDuplicates dedup = new DeleteDuplicates(conf);//这个类的作用就是它的名字了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  Usage: DeleteDuplicates &amp;lt;indexes&amp;gt; ...&lt;br&gt;　 　这个类的作用就是这它的名字所写的意思－－去重。前面索引后（当然不是一次时的情况）会有重复，所以要去重。为什么呢，在一次索引时是不重复的，可是多 次抓取后就会有重复了。就是这个原因才要去重。当然去重的规则有两种一个是以时间为标准，一种是以内容的md5值为标准。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  9.IndexMerger merger = new IndexMerger(conf);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  IndexMerger [-workingdir &amp;lt;workingdir&amp;gt;] outputIndex indexesDir...&lt;br&gt;　　这个类就比较简单了，把所有的小索引合并成一个索引。在这一步没有用到map-reduce。&lt;br&gt;&lt;br&gt;　　在这九大步骤中generator,fetcher,parseSegment,crawlDbTool会根据抓取的层数循环运行，当抓取的层数大于1时会运行linkInvert,index,dedup,和merge。 &lt;div style="padding: 1em 0pt; text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dcdhd97m_124cnvrndc5" style="width: 1208px; height: 1971px;" alt=""&gt;&lt;/div&gt; &lt;br&gt;&amp;nbsp; &lt;br&gt;&lt;br&gt; &lt;br&gt;&amp;nbsp;根据nutch,crawl原码的理解，如果有什么不正确的地方欢迎与我一直交流。转栽请注明出处。&lt;br&gt; &lt;div style="text-align: right;"&gt;吴志敏－－2007－10－14&lt;br&gt;&lt;/div&gt; &lt;br&gt;  &amp;nbsp;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6196946020588391224?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6196946020588391224/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6196946020588391224&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6196946020588391224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6196946020588391224'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutch-crawler_21.html' title='Nutch Crawler工作流程'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8676299456009555809</id><published>2008-10-21T16:22:00.001+08:00</published><updated>2008-10-21T16:22:09.823+08:00</updated><title type='text'>Nutch的Analysis包详解</title><content type='html'>&lt;br&gt;&lt;div class="gmail_quote"&gt;&lt;br&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; 对于中国用户，最早遇到的棘手问题可能就是中文分词了。由于nutch对中文的支持默认是单字分词，所以很多人在一拿到nutch后要解决的第二件事情 （第一件事情当然是让nutch跑起来了）往往是要加入一个可行的中文分词模块。所以对这个包研究的人也是最多的，在网上关于nutch的中文分词的文章 也是人气很高的。那么就让我们一起来走近它看看它到底是怎么一回事，也让我们来做个中文分词器让中文在nutch上跑得更好。&lt;br&gt;　　首选一点， nutch的中文分词主要是在两个地方用到，一个是索引时，一个是在搜索时。由于nutch是基于lucene的，所以nutch的分词是继承 lucene的，所以基本原理大家就明白一二了。如果你对lucene不清楚请你先对它了解一下，不然在nutch里你是不能深入的。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 在lucene里，它的分词模块抽象出来了一个抽象类－－Analyzer.java。这个类包含这个抽象方法public abstract TokenStream tokenStream(String fieldName, Reader reader);用户自定义的Analyzer主要就是实现这个方法。这个方法要返回一个token流。而要返回一个分词的完成的token流又要写另一 个类的子类它就是－－Tokenizer.java，而它又是继承自TokenStream.java的。用户自定义的Tokenizer类要写的一个关 键方法是next().这个方法就是返回一个个的中文词语。对于中文要进行完美的分词是有很大难度的，当然也有比较机械比较简单的方法比如二元分词。分词 算法对于中文是很重要也很复杂的，在这里三言两语也不能讲清楚。可以推荐大家试一下的是中科院的ICTCLAS，还有台湾一个人写的字典分词的jar包。 看了这些就知道其实lucene里的分词器是可以拿到nutch里用的了。在nutch的德语和法语的分词插件都是直接把lucene的分词器包装一下就 拿过来用了。所以你也可以试试中文的哦。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 还有相关的概念：n-Grams&lt;br&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ngram的大意：&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 将输入的语料，分词成基本的单元，（可以用切词程序或者直接就是一个字）&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a, b, c, d, e,......&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后按照相邻原则统计各种词出现的频度：&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------------------------------&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; one gram :&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------------------------------&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; two gram :&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ab,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bc,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cd,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; de,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------------------------------------------&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; three gram :&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; abc,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcd,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cde,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -------------------------------------------&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 设定频度阈值，除掉频度过低的新词&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后比照词库进行一定的过滤，得到可能的新词。&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ngram的难度在于统计和甄别，统计的时候，往往是n倍于语料的大小，内存一次是装不下的，&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 甄别，如何最终判断一个词是否真的是新词，或者只是无意义的组合。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 统计的时候可以用的 trick:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 对词组合，做签名， mod签名，每次只对签名的mod值相同的做统计。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 长度。&lt;/p&gt; &amp;nbsp;  &lt;br&gt;以上算是对nutch--Analysis包介绍前的背景知识。&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在nutch里，默认的词汇分词和查询分析是用javacc--&lt;b&gt;Java Compiler Compiler&lt;/b&gt;来 做的。javacc编译后会生气java代码，用生成的java代码来执行。所以它生成的代码是很难看懂的，因为是机器写的嘛。所以如果你要更好理解或想 改造nutch的默认分词模块，就得好好地学习一下javacc咯。Nutch是基于插件的，所以分词模块你可以很容易地自己加一个插件就可以了。就像前 面所说的那样就可以实现自己的中文分词了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 当然nutch自身的分词是相当高效和优秀的，如果你想在它的基础之上修改一个可以处理所有语言的分词器那就要把这个包里的代码好好研究研究了。&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在开始研究它的代码，在org.apache.nutch.analysis这个包里定义了nutch分析器的基本接口NutchAnalyzer&lt;br&gt; 　&lt;br&gt;　　　&lt;br&gt; &lt;div style="padding: 1em 0pt;"&gt; &lt;div&gt; &lt;div style="text-align: center;"&gt;&lt;img alt="" style="width: 620px; height: 747px;" src="http://docs.google.com/File?id=dcdhd97m_99fpbf8hgg"&gt;&lt;br&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt; &lt;div style="text-align: left;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这个类图可以很清楚地把analysis包对外的接口搞得很清楚了。由于nutch是基于plugin的模式，所以对外来说NutchAnalyzer这 个接口是最重要的。在图中可以看到德语和法语这两个分析器就是直接继承了这个NutchAnalyzer接口的。所以要加入自己的分析器，只要继承这个类 就可以了。而nutch自身所带的NutchDocumentAnalyzer分析器就如上图所示，它是由javaCC生成的，在效率上是很不错的。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; NutchDocumentAnalyzer这个类里面有两个子分析器AnchorAnalyzer和ContentAnalyzer。 AnchorAnalyzer是为锚文本专用的分析器，它是NutchDocumentAnalyzer的内部类，其实它也是 ContentAnalyzer，只是在域名为&amp;quot;anchor&amp;quot;时，加入了一个过滤器--AnchorFilter，它的作用就是设置这个类中定义的 INTER_ANCHOR_GAP(positionsIncreament是Token的一个属性，此处设为4，增加查询的模糊度)。另一个分器就是 ContentAnalyzer了，这个分析分两部分，一部分是过滤器--CommonGrams,k另一部分是切分器 NutchDocumentTokenizer。以下类图可以很清楚地把这个包内主要的几个类的关系展示出来了。而这其中由 NatchAnalysis.jj生成的文件有NutchAanlysisConstants,NutchAnalysisTokenManager, NutchAnalysis。在lucene里一个分词器包括两部分，一个analyzer一个tokenizer。同样在nutch里也是一致的，所以 在这的默认分词器由NutchDocumentAnalyzer和NutchDocumentTokenizer两部分组成，由类图也可以看出来。另外在 NutchDocumentAnalyzer里有一个常用gram的过滤器。&lt;br&gt;  &lt;div style="padding: 1em 0pt; text-align: center;"&gt; &lt;div style="padding: 1em 0pt; text-align: left;"&gt;&lt;img alt="" style="width: 1043px; height: 2248px;" src="http://docs.google.com/File?id=dcdhd97m_101gj744dd3"&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div style="text-align: left;"&gt;&amp;nbsp; 从上面的类图中大家一下就能看得很清楚了，继承了NutchAnalyzer的NutchDocumentAnalyzer就是nutch系统默认的分词器了，它又是调用了NutchDocumentTokenizer切分器，而这个切分器就是由javaCC生成的。&lt;br&gt;&lt;img src="http://docs.google.com/File?id=dcdhd97m_122hfpmd9cr" alt=""&gt;&lt;br&gt; &lt;font face="Arial"&gt;JavaCC是一个java语言分析器，就是按照"模版"，"装配"不同的语言分析程序的源代码。&lt;/font&gt;&lt;font face="Arial"&gt;复杂语言的语法通常都是使用 BNF（巴科斯-诺尔范式，Backus-Naur Form）表示法或者其"近亲"� EBNF（扩展的 BNF）描述的。自动化工具可以使用那些描述（我将使用通用的术语 &lt;i&gt;BNF&lt;/i&gt;来 指代这两种变体）或与它们近似的描述来为你生成解析代码。另外上图还有两个类CharStream(接口)和FastCharStream(实现类)， CharStream是javaCC的输入接口，但FastCharStream不作行号计数，却保存着在输入(input)中Token内的位置信息， 这也是lucene要求的。还有一个类需要介绍的是AnalyzerFactory，这个是nutch和插件体系配合的工厂类，用于得到一个分词器。&lt;/font&gt;&lt;/div&gt;  &lt;/div&gt; &lt;div style="text-align: right;"&gt;作者：吴志敏&lt;br&gt;&lt;/div&gt; &amp;nbsp; 转载请注明出处  &lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8676299456009555809?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8676299456009555809/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8676299456009555809&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8676299456009555809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8676299456009555809'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutchanalysis_21.html' title='Nutch的Analysis包详解'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5136012259264490720</id><published>2008-10-21T16:21:00.001+08:00</published><updated>2008-10-21T16:21:34.590+08:00</updated><title type='text'>nutch的cache策略及cache策略研究</title><content type='html'> &lt;br&gt; &lt;div class="gmail_quote"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font size="3"&gt;一个成熟的商业搜索引擎的cache应该是比较成功的，因为在长期的实践中证明 cache的好坏很大地影响着搜索引擎的效率。虽然I/O、算法等等很大地影响着搜索效率，但是在相差不大或着说在同一数量级上时，cache却可以让引 擎的效率成倍或大大地提高。在nutch中当然也是有cache的，只不过比较初级而已。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  在nutch中负责cache的是LuceneQueryOptimizer&lt;br&gt;  &lt;/font&gt; &lt;div style="padding: 1em 0pt;"&gt; &lt;div style="text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=dcdhd97m_131g2hnd8gs" style="width: 187px; height: 365px;" alt=""&gt;&lt;br&gt; &lt;/div&gt; &lt;div style="text-align: left;"&gt;&lt;br&gt; &lt;/div&gt; &lt;/div&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; nutch中的cache策略是LRU(最近最少使用)，nutch里有两个这个类会把各个子clause进行处理，把clause.getBoost ()==0.0的query对象cache到filter里，由于范围查询lucene支持得不好，所以会rangeQuery也cache进来。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 因为nutch只做了这一级cache，对于一个全网范围的搜索引擎，这样的cache是远远不够的。&lt;br&gt; &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 结合一下我们的经验向大家介绍一下搜索引擎领域内的cache。&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;br&gt; &lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;一．关于搜索引擎用户查询得出的结论：&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（1）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;用户查询有很大比例的重复性。有&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;30&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;40&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％的用户查询是重复查询。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（2）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;大多数重复的用户查询会在较短的间隔时间被再次重复访问。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（3）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;大多数用户的查询是短查询，大约包含&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;－&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;5&lt;/font&gt;&lt;/span&gt;&lt;span&gt;个单词。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（4）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;用户一般只查看返回结果的前三个页面（前&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;30&lt;/font&gt;&lt;/span&gt;&lt;span&gt;个返回结果）。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;58&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％用户只查看第一个页面（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;TOP 10&lt;/font&gt;&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;,15%&lt;/font&gt;&lt;/span&gt;&lt;span&gt;用户查看第二个页面，不超过&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;12&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％的用户会查看第三个页面以后的检索结果。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（5）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;关于用户查询差异程度。有比较大的查询程度，一百万个用户查询中大约&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;63.7%&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的用户查询只出现过一次。另外一方面，集中的重复查询也非常集中：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;25&lt;/font&gt;&lt;/span&gt;&lt;span&gt;个高频查询大约占总查询的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;1.23%-1.5%.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;二．&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;CACHE&lt;/span&gt;&lt;/font&gt;&lt;span&gt;的基本策略&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（1）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;LRU:&lt;/span&gt;&lt;/font&gt;&lt;span&gt;最近最少使用策略&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;基本假设：最近很少被重复访问的缓存记录在最近的将来也不会被访问。这是最简单的一种&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略。将用户查询按照最近使用时间进行排序，淘汰策略将最老的查询淘汰出&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（2）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;FBR:&lt;/span&gt;&lt;/font&gt;&lt;span&gt;不仅考虑时间也考虑引用计数的问题。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;FBR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略的基础上将&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;分为三个不同的部分：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;NEW,OLD,MIDDLE&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;NEW:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;存储最近被访问过的记录；&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;OLD&lt;/font&gt;&lt;/span&gt;&lt;span&gt;：存储最近最少使用的一批记录；&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;MIDDLE:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;存储介于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;NEW&lt;/font&gt;&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;OLD&lt;/font&gt;&lt;/span&gt;&lt;span&gt;之间的一批记录；&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;引用计数的时候不考虑&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;NEW&lt;/font&gt;&lt;/span&gt;&lt;span&gt;区域的记录，只考虑&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;OLD&lt;/font&gt;&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;MIDDLE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;两个区域的记录引用计数增加，在替换记录的时候从&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;OLD&lt;/font&gt;&lt;/span&gt;&lt;span&gt;区域选择引用计数最少的那个记录进行替换。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（3）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;LRU/2&lt;/span&gt;&lt;/font&gt;&lt;span&gt;：对于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的改进，计算第二次到最后一次被访问总的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，将老的记录淘汰。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（4）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;SLRU:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt; text-indent: 69pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;被分为两个部分：非保护区域和保护区域。每个区域的记录都按照最近使用频度由高到低排序，高端叫做&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;MRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，低端叫做&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;。如果某个查询没有在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;找到，那么将这个查询放入非保护区域的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;端；如果某个查询在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;命中，则把这个查询记录放到保护区的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;MRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;端；如果保护区已满，则把记录从保护区放入非保护区的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;MRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，这样保护区的记录最少要被访问两次。淘汰的机制是将非保护区的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;淘汰。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（5）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;LandLord&lt;/span&gt;&lt;/font&gt;&lt;span&gt;策略&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;将一个记录增加到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的时候，给予这个记录一个值（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;DEADLINE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;,&lt;/font&gt;&lt;/span&gt;&lt;span&gt;如果需要淘汰记录的时候，选择&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;DEADLINE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;最小的那个淘汰，同时将&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面其它所有记录减去这个被淘汰的记录的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;DEADLINE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;值，如果一个记录被命中，则将这个记录的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;DEADLINE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;放大到一定值。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（6）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;TSLRU&lt;/span&gt;&lt;/font&gt;&lt;span&gt;：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;Topic based SLRU:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;与&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;SLRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略相同，不过不是按照查询调整替换策略，而是按照查询所属主题进行调整。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（7）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;TLRU: Topic based LRU&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;基本策略和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;相同，区别在于保留查询的主题（&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;TOPIC&lt;/font&gt;&lt;/span&gt;&lt;span&gt;）信息，对于某个查询来说，不仅该主题的检索结果进入&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，而且原先在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面的相同主题的查询及其结果也调整时间，更新为最新进入&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;。可以看作是主题&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，而&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;是查询&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（8）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span lang="EN-US"&gt;PDC&lt;/span&gt;&lt;/i&gt;&lt;span lang="EN-US"&gt; (probability driven  cache)&lt;/span&gt;&lt;/font&gt;&lt;span&gt;：针对用户的浏览行为建立概率模型，然后调整&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面的记录优先级别，针对某个查询，将用户浏览数目比较多的文档在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面的级别提高。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（9）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;预取策略&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;所谓预取，就是系统预测用户在很短时间内的行为，然后将该行为涉及到的数据预先存储在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面。存在不同的预取策略，比如预取策略：因为一般用户在查看完第一页检索结果后会翻看第二页结果，所以将该用户查询的第二页结果首先预取到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面，这样可以减少存取时间。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（10）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;二级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;有两级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，一级是查询结果&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，保留了原始查询以及相关文件；第二级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;是倒排文档列表&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，也就是查询中某个单词在索引中的倒排列表信息，这个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;主要减少了磁盘&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;I/O&lt;/font&gt;&lt;/span&gt;&lt;span&gt;时间。替换策略采取&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，结果证明该方法提高&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;30&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％的性能。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（11）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;三级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span&gt;是对二级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的一种改进策略，除了二级&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;里面保留的两个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，另外增加一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，这个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;记录了两个单词查询的倒排文档交集记录，这样一个是省去了磁盘&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;I/O&lt;/font&gt;&lt;/span&gt;&lt;span&gt;时间，另外一个减少了计算交集的操作，有效的减少了计算量。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;三．&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;CACHE&lt;/span&gt;&lt;/font&gt;&lt;span&gt;方法性能分析与比较&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（1）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;LRU&lt;/span&gt;&lt;/font&gt;&lt;span&gt;适合存储比较小的记录效果才好。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（2）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;中等大小的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;能够满足很大一部分重复用户查询。（大约&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;20&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％的查询能够在中等大小&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;找到）&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（3）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;将时间因素和命中次数结合起来的缓存策略好于只考虑时间因素的策略。实验表明&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;FBR/LRU2/SLUR&lt;/font&gt;&lt;/span&gt;&lt;span&gt;性能总是好于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（4）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;对于小&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;来说，静态&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略要好于动态&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;策略，命中率要高些。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（5）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;对于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;来说，大&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的重复命中率大约占&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;30&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（6）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;对于大&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;来说，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;TLRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;略微好于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，但是差别不太大。对于小&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，结论正好相反。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;（7）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;随着&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;CACHE&lt;/font&gt;&lt;/span&gt;&lt;span&gt;逐步增大，命中率逐渐增加，对于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;SLRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;来说，其性能跟两个分区划分大小无关。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin: 0cm 0cm 0pt 57pt; text-indent: -36pt;" align="justify"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;（8）&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;PDC&lt;/span&gt;&lt;/font&gt;&lt;span&gt;的命中率高于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;LRU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;变形算法，大约有&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;53&lt;/font&gt;&lt;/span&gt;&lt;span&gt;％命中率，不过计算复杂度高。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &amp;nbsp; &lt;font size="3"&gt;&lt;br&gt; &lt;/font&gt;  &lt;/div&gt;^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.co"&gt;babatu.blogspot.co&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;h1&gt;&lt;font size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/font&gt;&lt;/h1&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5136012259264490720?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5136012259264490720/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5136012259264490720&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5136012259264490720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5136012259264490720'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutchcachecache_21.html' title='nutch的cache策略及cache策略研究'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5400674263833035504</id><published>2008-10-21T16:20:00.001+08:00</published><updated>2008-10-21T16:20:42.585+08:00</updated><title type='text'>Nutch距离一个商业应用的搜索引擎还有多远</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; 参考：&lt;a href="http://lotusroots.bokee.com/6106980.html" target="_blank"&gt;http://lotusroots.bokee.com/6106980.html&lt;/a&gt;&lt;br&gt;&lt;div class="gmail_quote"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 了解nutch的人基本上对这个开源的系统都是比较欣赏的，起码在国内是这样的，也很有多搜索网站是基于这个系统修改过来的，不过要做得好，做得真正是一个商业化的搜索，这个修改就不是一朝一夕的事情，也不是修修剪剪那么简单了。&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; 作为一个通用的全网级别的搜索引擎架构，nutch(lucene)确实为广大人民群众提供了一块大大的蛋糕，为进入搜索这个行业大大降低了门槛。那么它距商业的搜索到底有多远呢？以我的个人观点来谈一下。&lt;br&gt;&lt;br&gt; &lt;p&gt;&lt;b&gt;一、总体功能&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="font-family: Arial;" size="2"&gt;一个专业的网络搜索引擎至少包含3部分即抓取、处理和搜索。下面是它们的一般功能：&lt;/font&gt;&lt;/p&gt; &lt;ul style="font-family: Arial;"&gt; &lt;li&gt; &lt;p&gt;&lt;font size="2"&gt;抓取：抓取（蜘蛛、爬虫、crawler、spider等）程序负责爬行特定网络（也可能是整个网络），把网络上的页面和其它需要的文件下载到本地来。目前的难点是web2.0的普及导致的js分析和身份认证等问题。&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;font size="2"&gt;处理：处理（分类、信息抽取、数据挖掘、classify、information extraction&lt;span lang="zh-CN"&gt;、&lt;/span&gt;data mining&lt;span lang="zh-CN"&gt;等）程序对抓回来的页面进行分析，比如，对网站的内容进行分类、对新闻页面的新闻信息进行提取、页面模版生成、对各个网站之间的关系进行计算等等。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p lang="zh-CN"&gt;&lt;font size="2"&gt;搜索：搜索（information retrieve）程序负责把文档填充到数据库，然后根据查询字符串到数据库中寻找最相关的文档展现给用户。&lt;/font&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p style="font-family: Arial;"&gt;&amp;nbsp; &lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;b&gt;二、&lt;/b&gt;&lt;b&gt;信息抓取&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="font-family: Arial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 网络信息抓取包含了见面抓取、文本文件抓取和其它文件地抓取。普通的信息抓取利用基本的html页面分析器(htmlParser、NeckoHtml、 JTidy等)来解析页面，得到其中的信息。基本上两点，一个是抓取，一个是分析。抓取这一步要处理身份论证、要支持多种协议等等的，nutch在这里默 认的插件使用的是nekohtml，效果还可以。但是nutch对html分析的结果的文本是把页面里所有的文本都合在一起(其中有一个开关来控制内层锚文本是否加上)作为总文本输出，所以这样页面上所有的噪音都没有去除。&lt;font size="2"&gt;另一个是分析，分析一个html，最强的要数ie、firefox等浏览器了，在这一步上，nutch默认的htmlParser的处理能力是不可同日而语的。现在ajax盛行，对于js的处理也是一个重大的问题，现在nutch对js是视而不见的。&lt;/font&gt;&lt;/p&gt;  &lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;b&gt;三、信息处理&lt;/b&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="font-family: Arial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于信息的处理是nutch最薄弱的环节了，同时也是这个行业里的"宝地"，胜败决定就在这里。这里包括&lt;font size="2"&gt;分类、信息抽取、数据挖掘、classify、information extraction&lt;span lang="zh-CN"&gt;、&lt;/span&gt;data mining&lt;span lang="zh-CN"&gt;等等，在默认的nutch组件里有cluster这个包，是用来为搜索结果进行聚类用的&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span lang="zh-CN"&gt;,还有&lt;/span&gt;&lt;/font&gt;&lt;a href="http://baike.baidu.com/view/550299.htm" title="ontology" target="_blank"&gt;ontology&lt;/a&gt; &lt;font size="2"&gt;&lt;span lang="zh-CN"&gt;(本体),是人工智能范畴内的概念&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span lang="zh-CN"&gt;。nutch为这方面准备了最最基本的接口，其它的就得自己搞定了，比如机器学习(ML)、自然语言处理(NLP)、数据分析(DA)。nutch默认的聚类是&lt;/span&gt;&lt;/font&gt;&lt;font size="-1"&gt;用开源&lt;/font&gt;&lt;a href="http://project.carrot2.org/" title="Carrot2" target="_blank"&gt;Carrot2&lt;/a&gt; &lt;font size="-1"&gt;的后缀树算法做Web文本聚类。而&lt;/font&gt;Ontology研究热点的出现与Semantic Web的提出和发展直接相关，借助Ontology中的推理规则，使应用系统具有一定的推理能力。默认的nutch也带了一个简单的ontology的应用系统--HP的&lt;a href="http://jena.sourceforge.net/" title="jena" target="_blank"&gt;jena&lt;/a&gt;。但是对于一个商业应用来说这些仅仅是一个模具性质的。&lt;/p&gt;  &lt;p style="font-family: Arial;"&gt;&lt;br&gt;&lt;/p&gt; &lt;b&gt;四、搜索&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nutch其实从功能上来讲是由爬虫和搜索两大部分组成的，搜索是lucene来挑梁的。所以这部分的局限其实就是lucene的局限了。lucene也 可能从功能上分为两大部分，一个是索引，一个是查询。对于这部分的研究已经很久了，就是把用户最想要的文档返回给用户，对于搜索引擎而言，速度是非常重要 的。&lt;font size="3"&gt;&lt;font size="2"&gt;&lt;span&gt;索引，专业点说，包含&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;/span&gt;&lt;span&gt;种：前向索引和反向索引（倒排索引，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;inverted index&lt;/font&gt;&lt;/span&gt;&lt;span&gt;）。前者表示的是某个文档里面的所有词语，后者表示的是包含某个词语的所有文档。对应到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;Lucene&lt;/font&gt;&lt;/span&gt;&lt;span&gt;上面，它的前向索引可以认为是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;Term Vectors&lt;/font&gt;&lt;/span&gt;&lt;span&gt;（词语向量）相关文件，包含&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;.tvx&lt;/font&gt;&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;.tvd&lt;/font&gt;&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;.tvf&lt;/font&gt;&lt;/span&gt;&lt;span&gt;这&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;/span&gt;&lt;span&gt;种文件。前向索引没有什么好评论的，它一般只是做为重组原始数据时候的依据，其构建十分简单明了。反向索引对应到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;Lucene&lt;/font&gt;&lt;/span&gt;&lt;span&gt;上就是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;index&lt;/font&gt;&lt;/span&gt;&lt;span&gt;（索引）。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;Lucene&lt;/font&gt;&lt;/span&gt;&lt;span&gt;把索引划分成一个一个的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;（块，其实是一个小索引），直观的说，当有一批新数据到达的时候，我们一般给其构建成一个新的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;，这是因为修改原来的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的代价很高（并不是说一定很高，只是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;lucene&lt;/font&gt;&lt;/span&gt;&lt;span&gt;采用的文件结构无法简单的加入新的文档）。当一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;index&lt;/font&gt;&lt;/span&gt;&lt;span&gt;包含的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;太多的时候，查找性能就很差了（因为一次查询需要查询多个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;），需要进行&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;font face="Times New Roman"&gt;segment&lt;/font&gt;&lt;/span&gt;&lt;span&gt;的合并。在搜索方面nutch对lucene作了外部的处理，一是可以进行分布式搜索，每个节点只返回最高分值的结果，最近再合并；另一方面是对查询进行缓冲，不过只有一级缓冲--LRU(&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href="http://blog.csdn.net/kauu/archive/2007/11/02/1863217.aspx" target="_blank"&gt;nutch的cache策略及cache策略研究&lt;/a&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;&lt;span&gt;)。&lt;br&gt; &lt;br&gt;&lt;b&gt;五、结论&lt;br&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;font size="2"&gt;仅仅从搜索引擎的构架来看，Lucene(Nutch)缺失的一环是信息的处理。信息的处理恰恰是整个搜索引擎中最核心的技术。所以说对于现在这个行业化、垂直化的搜索时代，&lt;/font&gt;&lt;font size="2"&gt;nutch 的先天不足就已经是致命的了，但是这并不是不可挽回的，nutch的插件式架构，开放的系统逻辑等等特点，已经为开发者打开了窗户。nutch比较通用的 处理逻辑，加上灵活的插件式架构，给我们定制它插上了翅膀。但是它也仅仅是一个框架，里面的任何一个细节都会让你头痛不已(比如ML，NLP)!所以真正 的难点也就是这些让人头痛的地方。&lt;/font&gt;  &lt;/div&gt;&lt;br&gt;&lt;blockquote style="margin: 1.5em 0pt;"&gt;  ^ - ^  开心生活，开心工作&lt;p&gt; 雅虎口碑（杭州）－－吴志敏 &lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;  &lt;/p&gt;&lt;form action="http://www.google.cn/custom" target="google_window" method="get"&gt; &lt;table bgcolor="#ffffff" border="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td align="left" height="32" nowrap valign="top"&gt; &lt;a href="http://www.google.com/"&gt; &lt;img alt="Google" src="http://www.google.com/logos/Logo_25wht.gif" align="middle" border="0"&gt;&lt;/a&gt; &lt;br&gt; &lt;input value="babatu.blogspot.com" name="domains" type="hidden"&gt; &lt;label for="sbi" style="display: none;"&gt;输入您的搜索字词&lt;/label&gt; &lt;input maxlength="255" id="sbi" value="" name="q" size="31" type="text"&gt; &lt;label for="sbb" style="display: none;"&gt;提交搜索表单&lt;/label&gt; &lt;input id="sbb" value="搜索" name="sa" type="submit"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td nowrap&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;input id="ss0" value="" name="sitesearch" type="radio"&gt; &lt;label for="ss0" title="搜索网络"&gt;&lt;font color="#000000" size="-1"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;td&gt; &lt;input id="ss1" checked value="babatu.blogspot.com" name="sitesearch" type="radio"&gt; &lt;label for="ss1" title="搜索 babatu.blogspot.com"&gt;&lt;font color="#000000" size="-1"&gt;&lt;a href="http://babatu.blogspot.com"&gt;babatu.blogspot.com&lt;/a&gt;&lt;/font&gt;&lt;/label&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;input value="pub-0448291428877164" name="client" type="hidden"&gt; &lt;input value="1" name="forid" type="hidden"&gt; &lt;input value="UTF-8" name="ie" type="hidden"&gt; &lt;input value="UTF-8" name="oe" type="hidden"&gt; &lt;input value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1" name="cof" type="hidden"&gt; &lt;input value="zh-CN" name="hl" type="hidden"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;/form&gt; &lt;/blockquote&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5400674263833035504?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5400674263833035504/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5400674263833035504&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5400674263833035504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5400674263833035504'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nutch_1074.html' title='Nutch距离一个商业应用的搜索引擎还有多远'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7456705753413260073</id><published>2008-10-21T10:58:00.002+08:00</published><updated>2008-10-21T11:33:37.428+08:00</updated><title type='text'>走着骑的自行车</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;Designer: Julia Meyer&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/17/taurus.jpg" alt="" height="327" width="468" /&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/17/taurus2.jpg" alt="" height="319" width="468" /&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/17/taurus3.jpg" alt="" height="504" width="468" /&gt;&lt;/p&gt; &lt;a target="_blank" href="http://www.yankodesign.com/index.php?tag=julia-meyer" rel="tag"&gt;Julia Meyer&lt;/a&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7456705753413260073?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7456705753413260073/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7456705753413260073&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7456705753413260073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7456705753413260073'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_21.html' title='走着骑的自行车'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7292665148408080138</id><published>2008-10-21T10:50:00.002+08:00</published><updated>2008-10-21T11:33:44.912+08:00</updated><title type='text'>外国人设计的“鸟巢”</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;Designer: &lt;a target="_blank" href="http://www.makearchitects.com/"&gt;Make Architects&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_01.jpg"&gt;&lt;img title="sherwood_01" src="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_01.jpg" alt="" height="468" width="468" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_02.jpg"&gt;&lt;img title="sherwood_02" src="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_02.jpg" alt="" height="468" width="468" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_03.jpg"&gt;&lt;img title="sherwood_03" src="http://www.yankodesign.com/images/design_news/2008/10/18/sherwood_03.jpg" alt="" height="468" width="468" /&gt;&lt;/a&gt;&lt;/p&gt;  No Tags&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7292665148408080138?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7292665148408080138/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7292665148408080138&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7292665148408080138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7292665148408080138'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_4272.html' title='外国人设计的“鸟巢”'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5564824647529099356</id><published>2008-10-21T10:48:00.002+08:00</published><updated>2008-10-21T11:33:53.368+08:00</updated><title type='text'>可以让你放心自由漫步野外的棒子</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;朝圣，用一支简单的木棒就出发。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;你不用担心迷路，也不要什么GPS的数字设备。&lt;/p&gt;&lt;p&gt;这个木棒（也是高科技的家伙），可以让你边走边受到引导，不会迷路。让你感觉更自由。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Designer: &lt;a target="_blank" href="http://www.felix-beck.de/"&gt;Felix Hardmood Beck&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img title="geocane" src="http://www.yankodesign.com/images/design_news/2008/10/19/geocane.jpg" alt="" height="342" width="468" /&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="geocane2" src="http://www.yankodesign.com/images/design_news/2008/10/19/geocane2.jpg" alt="" height="342" width="468" /&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="geocane3" src="http://www.yankodesign.com/images/design_news/2008/10/19/geocane3.jpg" alt="" height="342" width="468" /&gt;&lt;/p&gt; &lt;a target="_blank" href="http://www.yankodesign.com/index.php?tag=felix-hardmood" rel="tag"&gt;Felix Hardmood&lt;/a&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5564824647529099356?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5564824647529099356/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5564824647529099356&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5564824647529099356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5564824647529099356'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_4842.html' title='可以让你放心自由漫步野外的棒子'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8196362384382753565</id><published>2008-10-20T22:48:00.002+08:00</published><updated>2008-10-21T11:34:02.036+08:00</updated><title type='text'>收集一些googled面试题</title><content type='html'>&lt;div dir="ltr"&gt;一辆学校班车里面能装多少个高尔夫球？&lt;br /&gt;你被缩小到只有硬币厚度那么点高（不是压扁，是按比例缩小），然后被扔到一个空的玻璃搅拌器中，搅拌刀片一分钟后就开始转动。你怎么办？&lt;br /&gt;要是让你清洗整个西雅图的所有窗子，你会收取多少费用？&lt;br /&gt;怎么才能识别出电脑的内存堆栈是向上溢出还是向下溢出？&lt;br /&gt;你要向你8岁的侄子解释什么是数据库，请用三句话完成。&lt;br /&gt;时钟的指针一天内会重合几次？&lt;br /&gt; 你需要从A地去B地，但你不知道能不能到，这时该怎么办？&lt;br /&gt;好比你有一个衣橱，里面塞满了各种衬衫，你会怎么整理这些衬衫，好让你以后找衬衫的时候容易些？&lt;br /&gt;有个小镇有100对夫妇，每个丈夫都在欺骗他的妻子。妻子们都无法识破自己丈夫的谎言，但是她们却能知道其他任何一个男人是否在撒谎。镇上的法律规定不准 通奸，妻子一旦证明丈夫不忠就应该立刻杀死他，镇上所有妇女都必须严格遵守这项法律。有一天，镇上的女王宣布，至少有一个丈夫是不忠的。这是怎么发生的 呢？&lt;br /&gt;在一个重男轻女的国家里，每个家庭都想生男孩，如果他们生的孩子是女孩，就再生一个，直到生下的是男孩为止。这样的国家，男女比例会是多少？&lt;br /&gt;如果在高速公路上30分钟内到一辆车开过的几率是0.95，那么在10分钟内看到一辆车开过的几率是多少 （假设为常概率条件下）&lt;br /&gt;如果你看到钟的时间是3:15，那一刻时针和分针的夹角是多少？（肯定不是0度！）&lt;br /&gt;4个人晚上要穿过一座索桥回到他们的营地。可惜他们手上只有一支只能再坚持17分钟的手电筒。通过索桥必须要拿着手电，而且索桥每次只能撑得起两个人的份 量。这四个人过索桥的速度都不一样，第一个走过索桥需要1分钟，第二个2分钟，第三个5分钟，最慢的那个要10分钟。他们怎样才能在17分钟内全部走过索 桥？&lt;br /&gt;你和朋友参加聚会，包括你们两人在内一共有10个人在场。你朋友想跟你打赌，说这里每有一个人生日和你相同，你就给他1元，每有一个人生日和你不同，他给你2元。你会接受么？&lt;br /&gt;全世界有多少个钢琴调音师？&lt;br /&gt;你有8个一样大小的球，其中7个的重量是一样的，另一个比较重。怎样能够用天平仅称两次将那个重一些的球找出来。&lt;br /&gt;有5个海盗，按照等级从5到1排列。最大的海盗有权提议他们如何分享100枚金币。但其他人要对此表决，如果多数反对，那他就会被杀死。他应该提出怎样的方案，既让自己拿到尽可能多的金币又不会被杀死？（提示：有一个海盗能拿到98%的金币） &lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8196362384382753565?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8196362384382753565/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8196362384382753565&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8196362384382753565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8196362384382753565'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/googled.html' title='收集一些googled面试题'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-572428671940242356</id><published>2008-10-20T16:42:00.002+08:00</published><updated>2008-10-21T11:34:12.242+08:00</updated><title type='text'>这是谁？</title><content type='html'>&lt;div dir="ltr"&gt; &lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/220081019233451.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;看到这个图，感觉有很多想说的，可是这个人好像就是自己。&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-572428671940242356?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/572428671940242356/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=572428671940242356&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/572428671940242356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/572428671940242356'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_9721.html' title='这是谁？'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5261664412410508145</id><published>2008-10-20T16:41:00.002+08:00</published><updated>2008-10-21T11:34:19.446+08:00</updated><title type='text'>说说戒烟</title><content type='html'>&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;br /&gt;一直想让我爸戒烟，可是每次都有理由，每次都和上一次一样。&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/r20081020115322.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/720081020115335.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/s20081020115346.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;看到了吗？香烟燃烧掉了你生活中的美好&lt;br /&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/d20081020115145.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/p20081020115224.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/220081020115236.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/920081020115247.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/month_0810/z2008102011539.jpg" alt="www.u148.net" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;吸烟是最最愚蠢的一种自杀方式&lt;/div&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5261664412410508145?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5261664412410508145/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5261664412410508145&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5261664412410508145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5261664412410508145'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_7915.html' title='说说戒烟'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8623940507308900925</id><published>2008-10-20T15:48:00.005+08:00</published><updated>2008-10-20T15:50:09.531+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>淘宝B2C</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;听说淘宝的B2C就要开始了。&lt;br /&gt;   国内B2B，C2C都是阿里的天下了，可偏偏B2C还在战国时代，各家都在逐鹿中原，可是最终鹿死谁手还真不一定!为什么呢？&lt;br /&gt;   分析一下B2B和C2C的成功，一个非常明显的特点就是这两家都是在建立一个平台，而没有亲身参与其中!阿里巴巴(B2B)做的是信息流，提供商家卖与买的信息交换，在信息流上做文章。而淘宝(C2C)呢，是为最广大的中国网民提供了一个方便，实用的平民交易平台。它们都没有亲身参与其中，这是一个很重要的特点。而这个特点也是由中国的国情来决定的。&lt;br /&gt;   当初阿里巴巴在选择赢利模式的时候，是非常困难的，但是马云为首的一群人看准了中国互联网的现状。以一种全球仅有方式进行赢利，而且也是被证明成功的!&lt;br /&gt;   淘宝的出世，是一个战略发展的结果，现在无数投资专家都在为它看好，在为它疯狂!它的成长和易趣的败北，也是反应了中国特有的国情。&lt;br /&gt;   这个国情是什么呢？&lt;br /&gt;   中国互联网是从无到有，从小到大的，不可能一口一个胖子。所以在阿里巴巴的年代，做信息流成功了，在淘宝的年代，免费和本土化成功了。&lt;br /&gt;   而现在经过上面两个时代的过程，中国互联网的情况已经很不一样了。大家都知道在阿里巴巴上可以为商人赚钱，都知道在淘宝买东西是生活的一部分了。&lt;br /&gt;   而返过来看看B2C，国内的B2C差不多可以说是和阿里巴巴一起开始做起来的。可是现在它们的差别太大了，B2C倒下过，坚持着也有，但是可以称雄的却没有!!&lt;br /&gt;   首选，他们做B2C，自己也参与进来，这样这个蛋糕就不可能做大了。因为其它的B2C都是自己的敌人，又怎么可能发展敌人呢？!所以这个市场没有被做起来。那么这些年过去了，这个市场肯定是大了些，但是却没有真正成为网民生活的一部分。这样说来，市场没有被做起来，各自己的小"算盘"当然就打得不怎么地了。所以给人的感觉总是半死不活的。&lt;br /&gt;   听说淘宝也要开始B2C了。这是一个让一些人很不安的消息，当然也不是我第一个听说这个消息的。现在已经差不多是在实施了。&lt;br /&gt;   我想知道B2C，淘宝会怎么做呢？&lt;br /&gt;  相信过不了多久，大家就知道了。&lt;br /&gt;   在浙江中小企业那个多呀!当然其它省份也有很多的，这些中小企业的发展规模在改革开放三十年的时候，可以说是不大不小，这种状态是开始到状大必需，群雄争霸嘛，最后会发展出民营的大鳄，这个大家都相信，现在已经有些冒出来了。可是并不是大多数，要不然它们也不叫中小企业了。&lt;br /&gt;   中小企业就是淘宝B2C的主力，这个可以拭目以待，从阿里一贯以来的以小积大的做法，我想这回也是一样。联合一切可以联合的力量，正是统一战线的思想!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt; &lt;/span&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8623940507308900925?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8623940507308900925/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8623940507308900925&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8623940507308900925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8623940507308900925'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/b2c.html' title='淘宝B2C'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6857083109496972475</id><published>2008-10-20T15:48:00.004+08:00</published><updated>2008-10-20T15:49:40.145+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>基于用户行为分析的搜索引擎质量评测</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt; &lt;p style="text-align: left;" align="left"&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;                                                                             --吴志敏 2008&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: left;" align="left"&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:16;"&gt;摘要：&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;本文旨在为本地搜索提供一种基于用户行为分析的质量评测模型。用户的行为是产品好坏的直接表现，反过来也就间接地体现了产品的质量。搜索引擎的质量主要由数据的量，数据的质量和排序来表现。分析本地搜索引擎用户的日志，通过分析用户在搜索活动中行为的&lt;span&gt;三维&lt;span  lang="EN-US" style="font-family:Verdana;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;1]&lt;/span&gt;&lt;span style="font-size:10;"&gt;数据来来得出排序的好坏，及数据质量的好坏。这个好坏力图建立在模糊数学上，通过相关的概率来评测搜索引擎排序及数据质量。&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:16;"&gt;关键词：&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10;"&gt;本地搜索、用户、行为、评测&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 7.7pt;"&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;1&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:16;"&gt;、引言：&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="text-indent: 20pt;"&gt;&lt;span style="font-size:10;"&gt;传统的搜索引擎评测主要基于人工评测，主观评测的好处和坏处都很多。但是由于样本集不可能接近实际&lt;span&gt;值所以&lt;/span&gt;这样的评测的结果的可信度很难判断，从而导致在此基础上进行的产品改进和技术改进就可能出偏差。&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;对于&lt;span&gt;口碑网&lt;/span&gt;本地搜索引擎的数据检索，我们现在使用的是扩展的布尔模型&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;[2]&lt;/span&gt;&lt;span style="font-size:10;"&gt;。这种模型的数据基础是数据是结构化的，通过用户搜索关键字所在的字段的权值及关键字出现的次数通过一个函数进行计算得出最后排序分值。由于当前&lt;span&gt;口碑网&lt;/span&gt;本地搜索主要频道的数据量已经进入百万级，对于搜索结果的排序及数据质量的评测都无法&lt;span&gt;进行有郊的&lt;/span&gt;实施。&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 21pt;"&gt;&lt;span style="font-size:10;"&gt;本文所提出的基于用户行为分析的质量评测模型力图建立一套体系，它可以通过每天用户产生的日志分析结果来计算出每个关键词下排序及数据质量的好坏的模糊评测。&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 21pt;"&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 7.7pt;"&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;font-size:16;"   lang="EN-US"&gt;2&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:16;"&gt;、用户行为：&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-indent: 4.8pt;"&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;本文的所有依据都假设在大多数的用户行为是体现本地搜索产品好坏的标准。&lt;span&gt;既用户&lt;/span&gt;的每次搜索行为就是一次自觉的测试，而其在按下搜索键后的行为就是对于这一次关键字搜索产生结果的打分。产品为客户设计，大多数客户的满意就是产品成功。所以本文认为这一假设的逻辑具有普适性。&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;对于用户在&lt;span&gt;口碑网&lt;/span&gt;本地搜索引擎中的搜索行为，本文定义为三维：在用户点下搜索键后，第一维是在列表页的点击顺序；第二维是进入列表页的顺序；第三维是时间。如图一，在用户搜索"杭帮菜"后，得到的搜索结果。这是前五条记录，&lt;span&gt;第一维指用户&lt;/span&gt;在这一页中点击的顺序。如&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;80%&lt;/span&gt;&lt;span style="font-size:10;"&gt;的用户在搜索"杭帮菜"后点的是第五条，那么认为我们的排序有改进的空间。如果&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;80%&lt;/span&gt;&lt;span style="font-size:10;"&gt;的用户搜索"杭帮菜"后，点击的是第&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;10&lt;/span&gt;&lt;span style="font-size:10;"&gt;条。那么就认为我们的"杭帮菜"排序是不友好的。&lt;span&gt;第二维指用户&lt;/span&gt;点出列表页上的一条记录进行信息页的深度。本文假设用户对信息页感兴趣的程度与用户在&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:10;"   lang="EN-US"&gt;detail&lt;/span&gt;&lt;span style="font-size:10;"&gt;页中进行的活动成正比关系。如用户进入第一条"张生记大酒店双菱店"，又去了地图，这一比率如果比较高，则认为这个排序比较&lt;span&gt;好&lt;/span&gt;和这条数据的质量也比较好。第三维是时间，如果用户在搜索"杭帮菜"后，看了很久才点&lt;span&gt;进信息&lt;/span&gt;页，那么认为列表页的展现不够好或数据不够好。如果用户迅速进行第二页，那么认为排序不好。用户进入&lt;span&gt;信息页又马上&lt;/span&gt;回到列表页再打开新的信息页，说明前一次打开的不是想要的。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;............&lt;br /&gt;下面内容暂不发表。  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6857083109496972475?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6857083109496972475/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6857083109496972475&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6857083109496972475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6857083109496972475'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_8992.html' title='基于用户行为分析的搜索引擎质量评测'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6432212501299238074</id><published>2008-10-20T15:47:00.009+08:00</published><updated>2008-10-20T15:51:13.041+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>YAHOO!被收购--帝国的没落</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;今天早上上班打开新闻一看，微软要用466亿美元收购雅虎的新闻让我的瞳孔放大了不少!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;   从开始接触电脑或者说是互联网发芽时，就听说这个雅虎了，这个帝国当年鼎盛时，是多么的风光啊!从个人感情上讲，雅虎确实是值得尊敬的。但是从最近五年的股票趋势来看，它真的一次一次地让投资者伤心。从资本的角度来讲，它被收购或怎样是必然的。但是真的这天来临时，却感觉还是有点突然。是人同情弱者的本能或是其它让我对它还有些可惜。&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;  网上有无数人对这一事件进行了评论，在互联网这确实是一个大事件!&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;   MS和Yahoo!是两家很不一样的公司，收购可行？这是一问号，但是这个MS要收购的消息的宣布就可以说明MS要转型，而且是态度坚决!先不管成功与否，但是未来一定会有与GOOGLE收板的公司的出现。而MS的这一收购正是这方向上的偿试，互联网正一步步地深入人们的生活，人们已经不可能离开它了。这中间当然是充满了利益。资本总是要收益最大化，所以MS高层有很大的信心收购成功，当然这中间可能有搅局者出现。&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;   从前几天YAHOO!裁员，到现在的收购，这好像是有关系的，但是杨致远上任到现在，还没有给他足够的时间呢，就碰到了MS的收购。他心里一定不好受，起码应该给他一些时间拯救大兵yahoo!&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;  还有一个问题是这起收购对中国的影响，现在地球最小了嘛!&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;   yahoo!拥有阿里的40%经济收益权，还有小于此的投票权。所以一旦收购完成，对阿里巴巴，中国最大的互联网实体是有很大影响的。个人认为这个影响对于阿里来说是利大于蔽的。&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;  这个下回接着聊。&lt;/span&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6432212501299238074?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6432212501299238074/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6432212501299238074&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6432212501299238074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6432212501299238074'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/yahoo.html' title='YAHOO!被收购--帝国的没落'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-276193414138376819</id><published>2008-10-20T15:47:00.008+08:00</published><updated>2008-10-20T15:50:43.156+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>lucene2.3存储格式说明</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-276193414138376819?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/276193414138376819/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=276193414138376819&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/276193414138376819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/276193414138376819'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/lucene23.html' title='lucene2.3存储格式说明'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-4934162253347908962</id><published>2008-10-20T15:47:00.006+08:00</published><updated>2008-10-20T15:50:20.662+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>让质量成为用户来口碑网的主要原因</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;今天技术与产品一起讨论关于口碑网本地搜索的质量评测的研讨会。&lt;br /&gt;   为了把我们做得更好，我们只有把质量放在第一位，把用户放在第一位，这也是阿里人的第一价值观，客房第一。&lt;br /&gt;   在分析了用户在本地搜索中的各种搜索行为，我们也确实可以看到我们自己在这半年多来的努力还是有很多需要改进的地方。但是另一个更重要的方面是，我们还要为一正套的系统来持续地支撑我们的搜索系统来不断地改进，不断地提高用户体验。&lt;br /&gt;   结合口碑网多年来对用户的认识和用户对本地生活的需求，我们大概把用户的搜索行为三个大类，共六各情况。对这多种的搜索行为，每个都会和所有的竟争对手定期进行对比，分析我们的不利不足之处，然后进行有目标的改进!&lt;br /&gt;   当各家的数据量都差不多的时候，就看用户的习惯和用户体验的比拼。口碑网要在自己的每一个阶段都把用户放在第一位，让我们的努力成为用户化验的改进的动力。&lt;/span&gt;&lt;/span&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-4934162253347908962?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/4934162253347908962/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=4934162253347908962&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4934162253347908962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4934162253347908962'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_1209.html' title='让质量成为用户来口碑网的主要原因'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7226359261245652325</id><published>2008-10-20T15:46:00.005+08:00</published><updated>2008-10-20T15:51:43.128+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>阿里巴巴是微软收购雅虎事件变数</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt; 在微软收购雅虎事件中存在着一个。 &lt;p&gt;　　2005年7月的雅虎-阿里巴巴交易中，雅虎以10亿美元现金和雅虎中国的全部资产为代价，获得阿里巴巴集团40%的股份、35%的表决权和阿 里巴巴集团董事会的一名董事席位。但经此交易成为阿里巴巴集团最大单一股东的雅虎，受与阿里巴巴、日本软银间的股东协议约束，严格保证马云与阿里巴巴管理 层的独立自主权，因此正如当时有媒体称，雅虎在阿里巴巴的投资属于一种被动投资。&lt;/p&gt; &lt;p&gt;　　阿里巴巴的董事会完全受2005年签署的阿里巴巴、雅虎和软银三方股东协议的约束，股东的权力只通过董事会行使，董事会是最高权力机构。董事会 成员是三方股东指派而不是选举产生的。董事会由4名董事组成，其中两名由阿里巴巴管理层指派，另两名董事分别由雅虎和软银指派。除一些特别规定的情形外， 董事会的组成保持不变。雅虎中国成为阿里巴巴集团的一个全资子公司，话语权要通过阿里巴巴的董事会行使，除非股东协议另有约定。&lt;/p&gt; &lt;p&gt;　　股东协议规定，阿里巴巴和软银不得将其拥有的阿里巴巴股份转让给雅虎的竞争对手。雅虎给阿里巴巴列明一张不超过15名竞争对手的名单，在这张竞 争对手的名单上，可以想见微软的名字一定会出现在前三名之内。雅虎还对阿里巴巴与雅虎的竞争对手在业务发展上作出一些限制性规定，同时授权阿里巴巴使用雅 虎品牌和包括搜索技术在内的一些雅虎知识产权。&lt;/p&gt; &lt;p&gt;　　现在如果雅虎的竞争对手微软收购了雅虎，这样的情景变化将导致股东协议的一些重要条款无法继续履行。正是由于存在这样的契机，阿里巴巴才有可能 通过法律途径与微软展开谈判，使原股东协议按阿里巴巴目前的意愿作出部分修改。或许辩护得当，阿里巴巴还有完全否决微软受让雅虎在阿里巴巴股权的可能，并 以优先认购权为原则回购雅虎在阿里巴巴的股份。&lt;/p&gt; &lt;p&gt;　　另一条让微软难受或者甚至不能受让雅虎在阿里巴巴股权的途径是中国政府的态度。中国政府有理由对雅虎和微软持不同的看法、态度与立场，阿里巴巴则在很大程度上能够影响到中国政府批准或不批准微软收购雅虎的交易中涉及阿里巴巴的部分，毕竟阿里巴巴是当事人之一。&lt;/p&gt; &lt;p&gt;　　抛开法律与中国政府的途径不谈，假定阿里巴巴缺乏足够的法律依据来拒绝微软受让雅虎在阿里巴巴的股权，微软也获得了中国政府的许可，在这种情形下，微软在受让雅虎在阿里巴巴股权的同时，也相应受让了雅虎与阿里巴巴和软银签订的三方股东协议的权利与义务。&lt;/p&gt; &lt;p&gt;　　由于阿里巴巴的最高权力机构是董事会，微软既不能利用其最大股东的身份、也不能通过联合软银的办法来推翻阿里巴巴管理层占一半席位的董事会，因此微软仍然改变不了其在阿里巴巴的被动投资性质。&lt;/p&gt; &lt;p&gt;　　更麻烦的是，雅虎中国是阿里巴巴的全资子公司，雅虎被微软收购的事实，并不能改变雅虎中国的独立生存权利。于是一个戏剧性的场面出现了，微软在 全球范围内把雅虎纳入麾下，在全球范围内消灭了雅虎这个竞争对手，但在中国，雅虎中国将继续拥有其法律权利作为微软的竞争对手而存在，只要阿里巴巴愿意。&lt;/p&gt; &lt;p&gt;　　于是，微软的MSN/WindowsLive继续在门户、搜索、电子邮箱与即时通讯等方面与雅虎中国发生竞争。更进一步来说，阿里巴巴集团中无 论是对雅虎还是对微软来说最有价值的并不是雅虎中国，而是阿里巴巴在中国电子商务领域的龙头老大地位。不仅仅是微软的互联网业务，还包括微软的核心业务 ――软件本身，都可以从与阿里巴巴的合作中大受其益，尤其是当微软这个软件巨头也正在向软件即服务(SoftwareasaService)转变之际。&lt;/p&gt;  &lt;p&gt;　　因此，只要阿里巴巴不甘心就范，只要阿里巴巴想从微软收购雅虎的事件中获取好处，微软就不得不从法律上、与中国政府关系上、未来中国市场的安排及与阿里巴巴的战略合作这几个方面与阿里巴巴展开谈判。&lt;/p&gt; &lt;p&gt;　　马云在多年前说过，阿里巴巴要进入世界互联网前三的位置。&lt;/p&gt; &lt;p&gt;　　而要参与世界互联网格局的制定，离不开与世界互联网巨头之间的竞争与合作关系。以前的竞争对手现在可以是合作伙伴，以前的合作伙伴也可能变成竞争对手。&lt;/p&gt; &lt;p&gt;　　微软恰好在这个时候出现了。不知道阿里巴巴的董事会和管理层是否同意，我相信微软是一个比雅虎有用得多的战略合作伙伴――如果微软摸对了阿里巴巴的心思、性格和脾气的话。&lt;/p&gt; &lt;p&gt;　　所以阿里巴巴与微软的谈判应该有两个预设的前提：一是认可微软接手雅虎，包括雅虎在阿里巴巴的被动投资权益，二是阿里巴巴要从中获取额外的利益。&lt;/p&gt; &lt;p&gt;　　阿里巴巴不只是要保持、而且是要获得更多的自主，包括取消当初的股东协议中对阿里巴巴国际化发展的一些限制性条款，甚至包括降低微软将要接手的雅虎在阿里巴巴中持有的股份在内。&lt;/p&gt; &lt;p&gt;　　总之，阿里巴巴有法律依据、中国政府审查权、中国市场安排与未来战略合作前景以及对收购进程的影响力这五个方面的谈判筹码，微软可能不得不向阿里巴巴作出必要的让步。&lt;br /&gt;&lt;b&gt;(文章由本报记者杨阳依据吕伯望口述整理，吕伯望系正望咨询总裁兼首席分析师)&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sina.com.cn/" target="_blank"&gt;http://www.sina.com.cn&lt;/a&gt; 2008年03月08日 10:45  &lt;span style="color:#a20010;"&gt;经济观察报&lt;/span&gt; &lt;/p&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7226359261245652325?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7226359261245652325/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7226359261245652325&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7226359261245652325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7226359261245652325'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_208.html' title='阿里巴巴是微软收购雅虎事件变数'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6984680966353176622</id><published>2008-10-20T15:46:00.004+08:00</published><updated>2008-10-20T15:51:33.049+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>与候磊的座谈</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;下午和雅虎数据挖掘的leader进行了深入地座谈。了解了一下雅虎在这方面的工作，学习他们的在全网搜索方面的经验，也为我们口碑网更好地服务用户提供更好更强大的技术。&lt;/span&gt;&lt;/span&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;　　雅虎在全网方面已经建立了一整套全面的知识库体系，这方面口碑现在还没有深入，所以我们还是有很长的路要走的。开放、吸收、融合将是我们在阿里集团中现在阶段的方针。&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-family:Verdana;"&gt;　　现在口碑网在餐饮，房产等垂直搜索方面已经发展到一个阶段，为用户提供更好的体验，提供更多的数据，更体贴的查询，更友好的界面是我们一直在做的，也是永远要做的。&lt;/span&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6984680966353176622?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6984680966353176622/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6984680966353176622&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6984680966353176622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6984680966353176622'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_1200.html' title='与候磊的座谈'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7497848955758045991</id><published>2008-10-20T15:45:00.004+08:00</published><updated>2008-10-20T15:51:57.511+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>关于映秀北川地震的一些思考</title><content type='html'>&lt;div dir="ltr"&gt;     映秀北川大地震给中国人带来了极大的灾难，在这次天灾中死伤无数，是一场浩劫。在这次地震中，每个中国人都表示得非常好。一方有难八方支援，体现了中华民族的团结精神，也表示了极大的人道主义精神。在灾区人民自救，人民军队帮助及志愿者的共同努力下，使灾区的损失减少到最小，同时也极力挽救每一个可能被救回的生命。&lt;br /&gt;&lt;div class="gmail_quote"&gt;   每次打开网页，电视看到同胞受此大难，都忍不住眼含热泪。在这次大震中，政府及军队的反应速度和救援成效是要得到充分肯定的，同时每一位中国人也都申出援手，为中国人一起度过难关，为中国加油。  昨天看了一个凤凰卫视的一个关于"唐山大地震预报"的记录片＜＜唐山大地震背后的真相＞＞，在唐山大地震发生前已经有很多单位和组织有过近震预报，但是当时的中国地震局并没有最后发出警告。记录片中是有真人真事的，有原先做出预报的专业地震工作人员也有群测群防人员，也包括了"唐山地震﻿警示录"的作者。当时地震发生后，华国锋总理会见国家地震局的工作人员，并对地震局领导作出的无法预测及下面技术组长拿出之前的会商记录（意思是可以预报）没出作出任何意见。只是说不要地震局的人负责让他们安心回去好好工作！！！&lt;br /&gt;    所片中地震预报的工作人员回忆，80年代的一次会议中把周总理提出的"群测群防，土洋结合"的方针的方法，根据使用次声波、地应力、地电脉冲、大地微动等预测地震等方法是不科学的（片中的话可能记得不太正确，但之后的地震预报就真的成了地震局一家的事情了）。所以那位老人感慨地说中国地震预报从唐山地震后到现在是没有进步，反而退步了。对于唐山地震的发生，这些作出预报的工作人员都是很有感觉的。内心中的愧疚及气愩是可想而知的。&lt;br /&gt;    现在的映秀北川地震"汶川地震前征兆很明显：南宁地震局蛇碰撞"&lt;a href="http://news.hexun.com/2008-05-21/106115555_1.html%E3%80%82" target="_blank"&gt;http://news.hexun.com/2008-05-21/106115555_1.html。&lt;/a&gt;也有这样的报导，如果以后历史再一次有一个真相发现的话，那真是令人痛心。但是应该说不是追究责任的时候，是救灾抗灾的关键时刻，是做好当前每一件事的时候。  但是这里面在政府与科学家与民众之间是各自有一堵墙的，在地震前有前兆，但是没有发出警告，现在是真的发生了，所以大家可能会责怪政府及科学家。但是如果发出警告而不发生地震呢，也会责怪科学家和政府。所以现在防地震群众没有参与，这样的局面大家都不好做。&lt;br /&gt;    之前由于历史的原因，报周总理提出的预报方法否定；这算是一个学术之争。但是这三堵﻿墙的问题就﻿算是一个体制的问题了。是应该变一下了。&lt;br /&gt;         """"群策群防"方法应该引起重视在5月19日的香山会议上，一些权威专家指出，自己使用独特的方法对以前和本次的四川汶川大地震预测发挥了重要作用。比如使用次声波、地应力、地电脉冲、大地微动等预测地震，效果是非常明显的。高建国指出，"中国的整体思维的方法，对于预测大的地震有作用。""""  19号的会议让人看到了更多的希望。希望中国以后的大地震可以把灾害减到最小。这是每个地震工作人员的事情，也是每个中国人应该做的事情。  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7497848955758045991?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7497848955758045991/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7497848955758045991&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7497848955758045991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7497848955758045991'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_5102.html' title='关于映秀北川地震的一些思考'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8083308263315606901</id><published>2008-10-20T15:45:00.003+08:00</published><updated>2008-10-20T15:51:50.661+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>中国加油！！！！</title><content type='html'>&lt;div dir="ltr"&gt; 今天在BBC新闻听到欧洲好几个国家都在举行集会，支持北京奥运，反对藏独，为中国加油！！！！&lt;br /&gt;&lt;div class="gmail_quote"&gt;　　近来听到这么多西文国家对中国的扭曲事实的新闻报告，每个中国人都不能再汉字沉默了。在欧洲的留学生们纷纷组织起来发出自己的声音！&lt;br /&gt;&lt;br /&gt;　　百年奥运，中国加油！！！！  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8083308263315606901?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8083308263315606901/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8083308263315606901&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8083308263315606901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8083308263315606901'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_5740.html' title='中国加油！！！！'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-371246827852685971</id><published>2008-10-20T15:44:00.005+08:00</published><updated>2008-10-20T15:52:10.027+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>忘记周末</title><content type='html'>&lt;div dir="ltr"&gt; &lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt;   一周五天工作日的生活似乎还不太适应，虽然已经这样一个多个月了，但是现在总还是感觉一周五天过得太快了。  到周六周日还是沉浸在工作中！似乎忘记了已经是周末了。&lt;br /&gt;   最近工作中的事情都是比较锁碎的，事情多而杂，而最近又学习了一下python,也快速地写了几个小程序。感觉不错，所以有点迷上了。一有点小想法就写点什么。所以思想总是处在高度兴奋之中！！周末都是这样，边上的女朋友都已经对我有很大意见了！！！接下来又要做搜索引擎的版本升级，又要大忙一段时间了。&lt;br /&gt;   这样下去是不行地！身体会受不了，总会生病的！所以还是想着去好好生活，好好工作！女朋友接下来想去学一下钢琴，所以我也要跟着去学点乐器什么的。或者和碧螺春去健身房。反正要去做一下程度之外的事情。  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-371246827852685971?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/371246827852685971/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=371246827852685971&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/371246827852685971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/371246827852685971'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_2607.html' title='忘记周末'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8600454357299523892</id><published>2008-10-20T15:44:00.004+08:00</published><updated>2008-10-20T15:52:03.750+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>让你的ubuntu体验一下最新的firefox3.0rc</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt; 最新的firefox3.0Rc已经出了好几天了，但是ubuntu默认的源还没有不能升级，所以要么手动下载来玩，要么这样：：&lt;br /&gt;&lt;br /&gt;在你的软件源里加入这个源就可以了&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;"&gt;  &lt;div&gt;&lt;br /&gt;&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;deb &lt;a href="http://ppa.launchpad.net/fta/ubuntu" target="_blank"&gt;http://ppa.launchpad.net/fta/ubuntu&lt;/a&gt; hardy main&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;sudo apt-get update firefox&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8600454357299523892?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8600454357299523892/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8600454357299523892&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8600454357299523892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8600454357299523892'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/ubuntufirefox30rc.html' title='让你的ubuntu体验一下最新的firefox3.0rc'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-809705250201285330</id><published>2008-10-20T15:43:00.005+08:00</published><updated>2008-10-20T15:52:23.359+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>我是怎样看到分类信息的</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt;   近来雅虎口碑分类信息试用后，也结合自己互联网的一点认识，觉得分类信息的未来还是很不错的。&lt;br /&gt;&lt;br /&gt;  一.&lt;span style="font-weight: bold;"&gt;分类信息与中国互联网的未来&lt;/span&gt;        &lt;br /&gt;         对于互联网的未来，不敢斗胆预测，但是个人比较认同威客witkey理论。从这个角度来说，互联网总是会越来越适合人的生活，总是会让生活越来越方便，这里的生活指得比广义，包括人的一切活动。就像各大互联网公司的slogan一样，比如"让天下没有难做的生意"，"生活好向导"等等。      分类信息是WEB 2.0 的衍生物,实质上就是互联网中的产生者要传递给自己目标群体的信息。分类信息以内容编排精细化、及时、空间无限等特质，在大众生活及商务活动中备受关注和喜欢。在互联网的不断发展中，人们互相传递信息的成本会越来越小，传递的效果也会越来越好。所以在分类信息在未来一定会发展得很好。    &lt;br /&gt;  二.&lt;span style="font-weight: bold;"&gt;分类信息的形式&lt;/span&gt;      &lt;br /&gt;          分类信息的未来是美好的，但是它的发展形式并不一定就是现在盛形的几种模式。从它的定义中我们可以看出一点。分类信息天生就是会有很多种形式，因为它是继承信息这个概念的。比如，分类信息有重要程度之别，有是否要保密之别，是否紧急等等。        从这个角度看去，一个用户在网上要卖一个商品，它可以去淘宝，也可以去一个论坛，相信也都可以卖成功。但是过程是完全不一样的。他都是想把这个信息传递给对自己商品感兴趣的人。但是通过不同的方法最后达到结果。在淘宝上有信用，有支付宝的支持，还有反馈，及售后服务（退换货等）。但是在传统的分类信息中，比如在论坛发个贴子，你会收到很多电话，信息虽然传出去了。但是后面的一系列的过程是不能保证的。所以可以这么说，淘宝是深挖分类信息的一个部分（交易信息），并做深做强。      淘宝已经是一个成功的例子，所以在另一个方面（服务信息），雅虎口碑的做法：让提供服务的商家（可以是个人）在雅虎口碑上卖服务（部分服务是交易信息），信用和支付都会参考B2B做法。让大家在网上对于服务这个无形的商品可以像普通商品一样自由放心交易。这只是现在我对雅虎口碑新的分类信息的一点理解。因为雅虎口碑是打着分类信息的旗号，所以在其它任何一个可以深挖的地方都可以做。让每个人都可以在互联网上解决生活问题。    &lt;br /&gt;   三.&lt;span style="font-weight: bold;"&gt;实现形式&lt;/span&gt;（搜索与引导）&lt;br /&gt;                由于自己一直从事搜索，对于在当前搜索垂直化，个性化的发展有一点自己的看法。对于商品交易，分类信息等的服务。搜索一直是被大家看好，它可以让用户直接到达，把用户的想法直接转化成结果展现。但是搜索是一个点出发，这个点的确定是非常重要的。如果用户无法把自己的想法转化成一个搜索关键词，或是转化错了。那用户体验是注定不会好的。所以另一种引导方式（包括分类别，打标签等）就起到非常重要角色了。两方式互补的最佳应用就是阿里B2B，淘宝的类目筛选，用户搜索一个词后，出现在第一页的第一屏中几乎全是类别筛选的链接。这种帮助人们快速得到信息的做法值得推荐。     个人感觉，不要盲目依靠搜索，因为网民是五花八门的，不一定都会用搜索词来搜索，但是筛选是一个大家都会的使用方法。从一点上来说，由于雅虎口碑现在分类信息的规模还太小，现在还没有让用户找太久找不到的问题。但是这里有一个陷阱，如果这条信息的分类分错了，那么筛选是致命的，因为发信息的网民不一定对于网站的分类是认同的。&lt;br /&gt;            四.&lt;span style="font-weight: bold;"&gt;赢利模式&lt;/span&gt;  &lt;br /&gt;        现在抢的是用户，抢的是地盘，但是最后总是要赢利的。对于淘宝，马云说赚钱太容易，对于容易的事情他不 感兴趣。   对于未来的雅虎口碑来说，赢利还是比较重要的，因为中国雅虎什么都经历了，但就是没有经历过成功。      分类信息在中国发展实现井喷后，相信雅虎口碑可以抢点一个制高点，到时候可以从让发信息的人得到更好结果的角度来思考。结合阿里妈妈，卖点服务。当然这应该是一小部分。如果雅虎口碑可以拿下大部分的分类信息数据，加上淘宝，就这个数据也是不小的财富。相信到那个时候，赢利对于雅虎口碑也是容易的事情。  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-809705250201285330?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/809705250201285330/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=809705250201285330&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/809705250201285330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/809705250201285330'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_4530.html' title='我是怎样看到分类信息的'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6785802899891295860</id><published>2008-10-20T15:43:00.004+08:00</published><updated>2008-10-20T15:52:17.130+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>DFS文件读写</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div class="gmail_quote"&gt;&lt;br /&gt;&lt;br /&gt; 在使用hadoop集群时，经常会要用到一个全局性的文件，或是一个hash文件或是一个词表等等。&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;&lt;a href="http://wiki.apache.org/hadoop/HadoopDfsReadWriteExample?action=fullsearch&amp;amp;value=linkto%3A%22HadoopDfsReadWriteExample%22&amp;amp;context=180" title="Click to do a full-text search for this title" target="_blank"&gt;HadoopDfsReadWriteExample&lt;/a&gt;&lt;/h1&gt; &lt;br /&gt;其实在DFS文件系统中读写文件与其它文件系统本质上是一样的。以下的这个例子就是从一个DFS中读出再写入到另一个DFS中。&lt;br /&gt;Hadoop &lt;a href="http://hadoop.apache.org/core/api/org/apache/hadoop/fs/FileSystem.html" rel="nofollow" target="_blank"&gt;&lt;img alt="[WWW]" src="http://wiki.apache.org/wiki/modern/img/moin-www.png" width="11" height="11" /&gt; FileSystem&lt;/a&gt; API这个类就是用来做这个读写用的。&lt;br /&gt; 首选要用一个配置对象来产生一个&lt;a href="http://hadoop.apache.org/core/api/org/apache/hadoop/fs/FileSystem.html" rel="nofollow" target="_blank"&gt;&lt;img alt="[WWW]" src="http://wiki.apache.org/wiki/modern/img/moin-www.png" width="11" height="11" /&gt; FileSystem&lt;/a&gt; 的对象。&lt;br /&gt; &lt;pre name="code"&gt;Configuration conf = new Configuration();  FileSystem fs = FileSystem.get(conf);    Path inFile = new Path(argv[0]);  Path outFile = new Path(argv[1]);    &lt;/pre&gt; &lt;pre&gt;&lt;br /&gt;&lt;br /&gt;先检验一下&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre name="code"&gt;if (!fs.exists(inFile))    printAndExit("Input file not found");  if (!fs.isFile(inFile))    printAndExit("Input should be a file");  if (fs.exists(outFile))    printAndExit("Output already exists");    &lt;/pre&gt;&lt;br /&gt;首先是打开一个文件流：&lt;br /&gt;FSDataInputStream in = fs.open(inFile);&lt;br /&gt;再打开一个输出的文件流：&lt;br /&gt;FSDataOutputStream out = fs.create(outFile);&lt;br /&gt;&lt;br /&gt;从输入流中读入并输出到输出到流中&lt;br /&gt;&lt;pre name="code"&gt;while ((bytesRead = in.read(buffer)) &amp;gt; 0) {    out.write(buffer, 0, bytesRead);  }    &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;再把两个流都关闭&lt;br /&gt;&lt;pre name="code"&gt;in.close();  out.close();    &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6785802899891295860?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6785802899891295860/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6785802899891295860&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6785802899891295860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6785802899891295860'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/dfs.html' title='DFS文件读写'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6096728695114972881</id><published>2008-10-20T15:42:00.002+08:00</published><updated>2008-10-20T15:52:30.977+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csdn'/><title type='text'>hadoop的冠军－－1TB的排序只用297秒</title><content type='html'>&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;div class="gmail_quote"&gt;&lt;h2&gt;&lt;a title="3 and 1/2 minutes to sort a Terabyte, and a look at Hadoop's code structure" href="http://www.dehora.net/journal/2008/07/06/3-12-minutes-to-sort-a-terabyte-hadoops-code-structure/" rel="bookmark" target="_blank"&gt;3 and 1/2 minutes to sort a Terabyte, and a look at Hadoop&amp;amp;apos;s code  structure&lt;/a&gt; &lt;/h2&gt; &lt;div&gt; &lt;p&gt;&lt;a href="http://developer.yahoo.com/blogs/hadoop/2008/07/apache_hadoop_wins_terabyte_sort_benchmark.html" target="_blank"&gt;Apache Hadoop Wins Terabyte Sort Benchmark&lt;/a&gt;: &lt;i&gt;"One of  Yahoo&amp;amp;apos;s Hadoop clusters sorted 1 terabyte of data in 209 seconds, which beat the  previous record of 297 seconds in the annual general purpose (daytona) terabyte  sort benchmark. The sort benchmark, which was created in 1998 by Jim Gray,  specifies the input data (10 billion 100 byte records), which must be completely  sorted and written to disk. This is the first time that either a Java or an open  source program has won."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Amazing. You can see &lt;a href="http://www.hpl.hp.com/hosted/sortbenchmark/" target="_blank"&gt;the history of  the benchmark here&lt;/a&gt;. Just as interesting is that this is a fraction of Y!&amp;amp;apos;s  capacity - they&amp;amp;apos;re running 13,000+ Hadoop nodes. What does it mean? I think that  Hadoop is becoming an important piece of open source infrastructure for data  processing, and potentially as a storage system in its own right.  Core Hadoop  development is highly active, with a string of associated projects building on  it, such as &lt;a href="http://research.yahoo.com/project/90" target="_blank"&gt;Pig&lt;/a&gt;, &lt;a href="http://lucene.apache.org/mahout/" target="_blank"&gt;Mahout&lt;/a&gt;, &lt;a href="http://hadoop.apache.org/hbase/" target="_blank"&gt;HBase&lt;/a&gt;, &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3601" target="_blank"&gt;Hive&lt;/a&gt;,  &lt;a href="http://www.cascading.org/" target="_blank"&gt;Cascading&lt;/a&gt; and &lt;a href="http://zookeeper.sourceforge.net/" target="_blank"&gt;Zookeeper. &lt;/a&gt;&lt;/p&gt; &lt;p&gt;I think Hadoop is an incredible project. Crudely you can split &lt;a href="http://hadoop.apache.org/core/" target="_blank"&gt;Hadoop&lt;/a&gt; into two parts -  &lt;a href="http://en.wikipedia.org/wiki/Hadoop#Architecture" target="_blank"&gt;compute  and storage&lt;/a&gt;. There&amp;amp;apos;s a lot more going on than that of course - metrics,  scheduling, job tracking and so on, cool stuff that doesn&amp;amp;apos;t get as much  publicity as the map/reduce feature, such as the ability to be &lt;a href="https://issues.apache.org/jira/browse/HADOOP-692" target="_blank"&gt;rack  aware&lt;/a&gt; and potential features like &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3687" target="_blank"&gt;pause/resume&lt;/a&gt; - the totality of what Hadoop does is amazing.  Ideally then, if you buy into the fundamental data/compute split, there&amp;amp;apos;d be  clean layering - for example the filesytem layers would have no upward  dependency on the map/reduce layer, which is a processing library.&lt;br /&gt;&lt;br /&gt;I&amp;amp;apos;ve  been digging around the Hadoop code recently; I used &lt;a href="http://www.headwaysoftware.com/products/structure101/index.php" target="_blank"&gt;Structure 101&lt;/a&gt; from the folks at &lt;a href="http://www.headwaysoftware.com/index.php" target="_blank"&gt;Headway  Software&lt;/a&gt; to help me scan the codebase and its package architecture. Aside  from being a good way to get my head around Hadoop&amp;amp;apos;s innards, the results were  interesting. The basic code metrics:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Packages (that contain classes): 58 &lt;/li&gt;&lt;li&gt;Classes (outer): 611 &lt;/li&gt;&lt;li&gt;Classes (all): 1,246 &lt;/li&gt;&lt;li&gt;LOC (Non Comment Non Blank Lines Of Code): ~118K&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;first off, that&amp;amp;apos;s a much smaller &lt;a href="http://www.ohloh.net/projects/5106/analyses/latest" target="_blank"&gt;LOC than  reported at Ohloh&lt;/a&gt;, almost half. Still, it&amp;amp;apos;s a fair chunk of  code.&lt;br /&gt;&lt;br /&gt;Here you can see Hadoop&amp;amp;apos;s top level package structure:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/dehora/2641355299/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3261/2641355299_052c5b7762.jpg?v=0" border="0" width="500" height="294" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Those arrows that look like air traffic routes  indicate cyclic dependencies amongst packages. The immediate thing that jumps  out at this level is the the fs.* package has cyclic dependencies with 8 other  packages. Here&amp;amp;apos;s a drilldown that gives a bit more detail on the fs  package:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dehora/2642843988/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3175/2642843988_245599a405.jpg?v=0" border="0" width="468" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cross package dependencies seem like an abstract  concern but are useful to know about as they tend to hamper developer  productivity and can become problematic as the code grows. I have to point out  though that these packages are not seperate distributables today so this is  purely an observation on the structure and can&amp;amp;apos;t really be a critique of the  design intent. Speaking of distributables, we can also look at the what in  Robert C. Martin&amp;amp;apos;s terms is the "unit of reuse" in Hadoop by looking for the  largest cycle, or "tangle" in the code. The largest tangle is pretty big,  traversing 11 packages. Here&amp;amp;apos;s a matrix view of that tangle:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dehora/2641355145/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3173/2641355145_65bdfee840.jpg?v=0" border="0" width="500" height="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and the structural view (it&amp;amp;apos;s very dense, you&amp;amp;apos;ll  probably want to click through to see any detail):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dehora/2641356051/sizes/o/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3105/2641356051_8f18223c0f.jpg" border="0" width="500" height="119" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What this suggests is that maroon box is probably the  smallest unit of release in Hadoop core at the moment. [As an aside, I think it  would be very hard to detect that purely looking at code, which is why code  analysis tools like &lt;a href="http://www.headwaysoftware.com/products/structure101/index.php" target="_blank"&gt;Structure 101&lt;/a&gt;, &lt;a href="http://clarkware.com/software/JDepend.html" target="_blank"&gt;JDepend&lt;/a&gt;, &lt;a href="http://www.hello2morrow.com/en/sonarj/sonarj.php" target="_blank"&gt;SonarJ&lt;/a&gt;  as used by &lt;a href="http://www.springsource.com/" target="_blank"&gt;SpringSource&lt;/a&gt;, et al are very handy for understanding large or  unfamiliar codebases. Spring&amp;amp;apos;s code for example is &lt;a href="http://www.springframework.org/node/310" target="_blank"&gt;known for being  cycle free&lt;/a&gt; and doing a fine job of managing complexity.]&lt;br /&gt;&lt;br /&gt;So that&amp;amp;apos;s a  glance at the superstructure. Let&amp;amp;apos;s look at "complexity". Here&amp;amp;apos;s the package  structure.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/dehora/2642018965/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3265/2642018965_b52044a4ec.jpg?v=1215363303" border="0" width="460" height="360" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The red/blue bars above indicate the level of complexity - more blue meaning  less complexity.  What&amp;amp;apos;s meant by &amp;amp;apos;complexity&amp;amp;apos; here? Well, &lt;a href="http://weblogs.java.net/blog/rmartin/" target="_blank"&gt;Robert C. Martin&lt;/a&gt; &lt;a href="http://www.objectmentor.com/resources/articles/oodmetrc.pdf" target="_blank"&gt;defined a number of measures&lt;/a&gt; for OO code years ago that are  the basis for a number of code analysis tools today  - for example, &lt;a href="http://www.onjava.com/pub/a/onjava/2004/01/21/jdepend.html" target="_blank"&gt;Mike Clark&amp;amp;apos;s JDepend&lt;/a&gt; uses Martin&amp;amp;apos;s figures such as  &lt;i&gt;afferent coupling&lt;/i&gt; directly, and the red/blue line above is &lt;a href="http://www.headwaysoftware.com/products/structure101/xs.php" target="_blank"&gt;"XS&lt;/a&gt;" which is a variant that Structure 101 uses. Anyway, the  chewiest areas of the code in terms of measurable complexity are clearly the  mapred and hdfs packages.&lt;/p&gt; &lt;p&gt;Most of the structural complexity in hdfs is in the namenode package, and  almost wholly located in the FSNamesystem class, which is a 4400 line long  beast.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/dehora/2642845980/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3181/2642845980_43dc1f61fb.jpg?v=1215363075" border="0" width="458" height="142" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/dehora/2643050446/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3027/2643050446_a4d44046c4.jpg?v=1215366545" border="0" width="439" height="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?view=log" target="_blank"&gt;FSNamesystem&lt;/a&gt; is an important part of the Hadoop runtime as it  watches the &lt;a href="http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/dfs/DataNode.html" target="_blank"&gt;DataNodes&lt;/a&gt;, along with machine lists and heartbeats. Arguably  it wants to become a package and there&amp;amp;apos;s &lt;a href="https://issues.apache.org/jira/browse/HADOOP-2885" target="_blank"&gt;been some  recent activity&lt;/a&gt; to restructure the hdfs package. Sometimes I think Java  classes like these don&amp;amp;apos;t get split out in OSS projects because a) they work as  they are and b) that kind of refactoring makes it harder to diff and backport  changes across branches.&lt;/p&gt; &lt;p&gt;The mapred complexity is spead out and so has a bit more to it:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/dehora/2642846678/" target="_blank"&gt;&lt;img src="http://farm3.static.flickr.com/2296/2642846678_fa983b101e.jpg?v=1215362913" border="0" width="405" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://hadoop.apache.org/core/docs/r0.17.0/api/org/apache/hadoop/mapred/TaskTracker.html" target="_blank"&gt;TaskTracker&lt;/a&gt; and &lt;a href="http://hadoop.apache.org/core/docs/r0.17.0/api/index.html?org/apache/hadoop/mapred/TaskTracker.html" target="_blank"&gt;JobTracker&lt;/a&gt; are big classes, about 2500 lines each. Like  FSNamesystem they&amp;amp;apos;re important classes - they track map reduce tasks and job  submissions respectively. Interestingly &lt;a href="http://hadoop.apache.org/core/docs/r0.17.0/api/index.html?org/apache/hadoop/mapred/TaskTracker.html" target="_blank"&gt;JobConf&lt;/a&gt;, which is where these jobs are configured, has very  low complexity, but has a cycle going outside the mapred. You can see mapred&amp;amp;apos;s  internal dependencies below (click through for more detail):&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/dehora/2642021591/sizes/o/" target="_blank"&gt;&lt;img src="http://farm4.static.flickr.com/3184/2642021591_ff528bcae7.jpg" border="0" width="500" height="93" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;So, it&amp;amp;apos;s always worth keeping an eye on the internal complexity of code as a  project evolves, but is any of this actually a problem for Hadoop? Probably not  right now - Hadoop&amp;amp;apos;s already widely deployed and proven at thousands of nodes.  It&amp;amp;apos;s young for an infrastructure project - the next version will still only be  &lt;a href="http://0.18.0./" target="_blank"&gt;0.18.0.&lt;/a&gt; And let&amp;amp;apos;s not forget it can chew through a Terabyte of data like nothing  else. As Martin Fowler suggests in &lt;a href="http://www.martinfowler.com/bliki/DesignStaminaHypothesis.html" target="_blank"&gt;DesignStaminaHypothesis&lt;/a&gt;, when and how much design to invest is  a matter of tradeoffs:&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.martinfowler.com/bliki/designStaminaGraph.gif" border="0" width="618" height="329" /&gt;&lt;/p&gt; &lt;p&gt;Rather, the single biggest problem I&amp;amp;apos;ve had coming to Hadoop and wanting to  understand its internals is the test cycle, which can take hours to complete.   All the structural state of the codebase today suggests is that it&amp;amp;apos;ll need to  see some refactoring as the project evolves, hopefully splitting out the file  system from the processing/compute layers.&lt;/p&gt;&lt;/div&gt; &lt;ul&gt;&lt;li&gt;&lt;span title=""&gt;July 6, 2008 &lt;/span&gt; &lt;/li&gt;&lt;li&gt; &lt;address&gt;Posted by: dehora &lt;/address&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Tags:&lt;/h4&gt; &lt;ul&gt;&lt;span&gt;tags: &lt;/span&gt;&lt;li&gt;&lt;a href="http://www.dehora.net/journal/category/java" rel="tag" target="_blank"&gt;java&lt;/a&gt; &lt;a href="http://www.dehora.net/journal/category/hadoop" rel="tag" target="_blank"&gt;hadoop&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6096728695114972881?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6096728695114972881/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6096728695114972881&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6096728695114972881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6096728695114972881'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/hadoop1tb297.html' title='hadoop的冠军－－1TB的排序只用297秒'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3105/2641356051_8f18223c0f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-328424600394607270</id><published>2008-10-20T15:41:00.002+08:00</published><updated>2008-10-20T15:52:41.887+08:00</updated><title type='text'>我看互联网的云</title><content type='html'>&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="gmail_quote"&gt;&lt;blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"&gt;&lt;span&gt;&lt;/span&gt;  之前云计算已经把整个行业都搞得天翻地覆了。&lt;br /&gt;  对于任何一种资源，整合在一起一般都比单独存在有更多价值。这也所以自然界中，群居的动物那么多，而已都是很强大的。&lt;br /&gt;  对于互联网中的云，除了云计算外，应该还有更多。云计算是把计算的资源进行整合，这个整合不是把原先分散的集中，而已以一种集中的形式出现。给所有需要用到的用户提供一个集中地高效地计算系统（我的理解）。&lt;br /&gt;  而在互联网中太多资源可以做这类处理了。&lt;br /&gt;  比如瑞星的"云安全"，大家不用自己装杀毒软件了。只要一个客户端就可以搞定了，大家都说未来的客户端就只有一个浏览器。这话也是对于互联网资源整合的一种预测。&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;--&lt;br /&gt;^ - ^  开心生活，开心工作&lt;br /&gt;雅虎口碑（杭州）－－吴志敏&lt;br /&gt;&lt;a href="http://babatu.blogspot.com/"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-328424600394607270?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/328424600394607270/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=328424600394607270&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/328424600394607270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/328424600394607270'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_8926.html' title='我看互联网的云'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-8989437408867085075</id><published>2008-10-20T09:39:00.001+08:00</published><updated>2008-10-20T09:39:06.069+08:00</updated><title type='text'>看百度有啊如何迈过三道槛</title><content type='html'>&lt;div dir="ltr"&gt;近期国内最热的互联网新闻就是百度推出电子商务平台有啊。对此，阿里巴巴主动出击，封杀百度爬虫。而另一个对手，腾讯则是默不作声。 &lt;p&gt;　　珍爱网CEO李松先生曾经为我阐释过百度的盈利模式，说"竞价排名是完美的，一种主动趋近于行业盈利平衡点的可持续消费的盈利模式。"&lt;/p&gt; &lt;p&gt;　　可是，当电子商务与搜索联姻，裁判员与运动员一同竞技，故事会如何发展呢？&lt;/p&gt; &lt;p&gt;　　我曾经分析过有啊与淘宝的盈利模式，同属于竞价排名。从这点而言，有啊无疑是穿上电子商务外衣的搜索业务，淘宝百度之争不过是搜索引擎之争。且不看马云调集的50亿，我们分析一下百度目前存在的三大困难，看百度如何迈过这三道槛：&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　&lt;/strong&gt;&lt;strong&gt;第一道槛：如何解决供应商数量问题。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　这个问题的解决方案有两个：人海战术、呼叫中心。人海战术的缺陷是产值低、利润率低、难以做出规模。因此，真正的互联网平台都采用了呼叫中心方式，采用电话营销作为利器。呼叫中心解决了效率问题，但是，硬件投入巨大，成为企业沉重的负担。&lt;/p&gt; &lt;p&gt;　　从当前情况看，我国互联网仍处于普及率低下，中小企业缺乏网络营销意识的阶段。这更是雪上加霜。&lt;/p&gt; &lt;p&gt;　　对这个命门，阿里巴巴设置了障碍：淘宝封杀爬虫。百度如何应对？我们拭目以待。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　&lt;/strong&gt;&lt;strong&gt;第二道槛：如何解决线上沟通问题。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　在网络营销过程中，线上沟通是不可缺少的手段，直接影响到成单率。似乎，这是腾讯的地盘，数以亿级的忠实用户数使得马化腾羽扇轻摇，隔岸观火。&lt;/p&gt; &lt;p&gt;　　李彦宏绝非等闲之辈，上半年推出了百度hi，似乎胸有成竹。在即时通讯领域的竞争，其实关乎电子商务的厮杀！&lt;/p&gt; &lt;p&gt;&lt;strong&gt;　　&lt;/strong&gt;&lt;strong&gt;第三道槛：如何解决社区分享的问题。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;　　互联网的实践告诉我们：搜索是1，分享是10甚至更多。我的实际数据告诉我，做好一个社区的网络营销远比购买一个主题词的收益大。而业界共识是，社区呈碎片化分布，永远不会一家独大。&lt;/p&gt; &lt;p&gt;　　百度贴吧确实是不错的社区，但绝对不是社区的解决方案。&lt;/p&gt; &lt;p&gt;　　百度能否一统江湖？我们先看这三道槛！&lt;/p&gt; &lt;p&gt;　　转载请注明作者：梦里秦淮（&lt;a href="http://blog.sina.com.cn/mlqh365"&gt;http://blog.sina.com.cn/mlqh365&lt;/a&gt;）&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; ^ - ^ &amp;nbsp;开心生活，开心工作&lt;br&gt;&lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-8989437408867085075?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/8989437408867085075/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=8989437408867085075&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8989437408867085075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/8989437408867085075'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_20.html' title='看百度有啊如何迈过三道槛'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-7468628678818143877</id><published>2008-10-18T15:31:00.001+08:00</published><updated>2008-10-18T15:31:24.844+08:00</updated><title type='text'>能量种子</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;电池每个人都会用到，从大到小，而这个小东西在自然界是很难被降解的，每年都是千万顿被埋在地下，对自然的破坏很严重!!!如果集中处理会好些，最重要的是少用点，不要乱扔。这个"能量种子"Energy Seed的LED灯可以让大家不要浪费最后的一点能量，并能收集能量。&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;p&gt;Designer: &lt;a target="_blank" href="http://www.yankodesign.com/search/sungwoo+park/"&gt;Sungwoo Park&lt;/a&gt; &amp;amp; Sunhee Kim&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed.jpg" alt="" width="468" height="648"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed2.jpg" alt="" width="468" height="648"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed3.jpg" alt="" width="468" height="648"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed4.jpg" alt="" width="468" height="648"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed5.jpg" alt="" width="468" height="648"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/energy_seed6.jpg" alt="" width="468" height="468"&gt;&lt;/p&gt; &lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;&lt;a href="http://babatu.blogspot.com"&gt;开心生活，开心工作 &lt;/a&gt;&lt;br&gt;&lt;a href="http://babatu.blogspot.com"&gt;http://babatu.blogspot.com&lt;/a&gt;&lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-7468628678818143877?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/7468628678818143877/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=7468628678818143877&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7468628678818143877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/7468628678818143877'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_9220.html' title='能量种子'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-4620396467470113890</id><published>2008-10-18T15:22:00.001+08:00</published><updated>2008-10-18T15:22:12.588+08:00</updated><title type='text'>不怕水的nokia</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;不错的设计，不怕水，直的不怕水!!!&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia.jpg" alt="" width="468" height="310"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia2.jpg" alt="" width="468" height="310"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia3.jpg" alt="" width="468" height="315"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia4.jpg" alt="" width="468" height="315"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia5.jpg" alt="" width="468" height="315"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/10/liq_nokia6.jpg" alt="" width="468" height="273"&gt;&lt;/p&gt; &lt;a target="_blank" href="http://www.yankodesign.com/index.php?tag=nokia" rel="tag"&gt;Nokia&lt;/a&gt;, &lt;a target="_blank" href="http://www.yankodesign.com/index.php?tag=phone" rel="tag"&gt;phone&lt;/a&gt;, &lt;a target="_blank" href="http://www.yankodesign.com/index.php?tag=rune-larsen" rel="tag"&gt;Rune Larsen&lt;/a&gt;&lt;br clear="all"&gt; &lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-4620396467470113890?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/4620396467470113890/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=4620396467470113890&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4620396467470113890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4620396467470113890'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/nokia.html' title='不怕水的nokia'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-5466242705334892641</id><published>2008-10-18T15:15:00.001+08:00</published><updated>2008-10-18T15:15:24.671+08:00</updated><title type='text'>变色镜</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;Designer: &lt;a target="_blank" href="http://www.luisporem.com/"&gt;Luís Porém&lt;/a&gt;&lt;/p&gt;&lt;p&gt;想自己的眼镜天天不一样吗？&lt;/p&gt;&lt;p&gt;对于时尚的你这个设计实在少不了!!!&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.luisporem.com/"&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/13/rainbow_glass.jpg" alt="" width="468" height="336"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/13/rainbow_glass2.jpg" alt="" width="468" height="337"&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.yankodesign.com/images/design_news/2008/10/13/rainbow_glass3.jpg" alt="" width="468" height="698"&gt;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-5466242705334892641?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/5466242705334892641/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=5466242705334892641&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5466242705334892641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/5466242705334892641'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_2916.html' title='变色镜'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1522147430377260995</id><published>2008-10-18T15:12:00.001+08:00</published><updated>2008-10-18T15:12:21.825+08:00</updated><title type='text'>超级电脑锁</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;Designer: &lt;a target="_blank" href="http://www.yankodesign.com/search/tino+dobra/"&gt;Tino Dobra&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这个设计可以让你的电脑只有你自己才可以用!!!&lt;/p&gt;&lt;p&gt;希望不要伤到自己!&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.yankodesign.com/search/tino+dobra/"&gt;&lt;br&gt; &lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="fingertrap" src="http://www.yankodesign.com/images/design_news/2008/10/14/fingertrap.jpg" alt="" width="468" height="342"&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="fingertrap2" src="http://www.yankodesign.com/images/design_news/2008/10/14/fingertrap2.jpg" alt="" width="468" height="342"&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="fingertrap3" src="http://www.yankodesign.com/images/design_news/2008/10/14/fingertrap3.jpg" alt="" width="468" height="342"&gt;&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1522147430377260995?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1522147430377260995/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1522147430377260995&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1522147430377260995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1522147430377260995'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_18.html' title='超级电脑锁'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1015560836624942981</id><published>2008-10-17T16:59:00.001+08:00</published><updated>2008-10-17T16:59:42.279+08:00</updated><title type='text'>搞懂python 编码　</title><content type='html'>&lt;div dir="ltr"&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;因为非英语国家，在python的使用过程中，经常会经常编码问题而卡住！！！&lt;br&gt;所以搞懂python的编码体系和本质是很重要的。 &lt;/font&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;&lt;br&gt;&lt;br&gt;对 Python 编码的理解： &lt;br&gt;  &lt;/font&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;几个概念性的东西 &lt;br&gt; ANSCII: &lt;br&gt; 标准的 ANSCII 编码只使用7个比特来表示一个字符，因此最多编码128个字符。扩充的 ANSCII 使用8个比特来表示一个字符，最多也只能编码 256 个字符。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;UNICODE: &lt;br&gt; 使用2个甚至4个字节来编码一个字符，因此可以将世界上所有的字符进行统一编码。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;UTF: &lt;br&gt; UNICODE编码转换格式，就是用来指导如何将 unicode 编码成适合文件存储和网络传输的字节序列的形式 (unicode -&amp;gt; str)。像其他的一些编码方式 gb2312, gb18030, big5 和 UTF 的作用是一样的，只是编码方式不同。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;Python 里面有两种数据模型来支持字符串这种数据类型，一种是 str，另外一种是 unicode ，它们都是 sequence 的派生类型，这个可以参考 Python Language Ref 中的描述： &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;    Strings &lt;br&gt; The items of a string are characters. There is no separate &lt;br&gt; character type; a character is represented by a string of one item. &lt;br&gt; Characters represent (at least) 8-bit bytes. The built-in functions &lt;br&gt; chr() and ord() convert between characters and nonnegative integers &lt;br&gt; representing the byte values. Bytes with the values 0-127 usually &lt;br&gt; represent the corresponding ASCII values, but the interpretation of &lt;br&gt; values is up to the program. The string data type is also used to &lt;br&gt; represent arrays of bytes, e.g., to hold data read from a file. &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;        (On systems whose native character set is not ASCII, strings &lt;br&gt; may use EBCDIC in their internal representation, provided the &lt;br&gt; functions chr() and ord() implement a mapping between ASCII and &lt;br&gt; EBCDIC, and string comparison preserves the ASCII order. Or perhaps &lt;br&gt; someone can propose a better rule?) &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;    Unicode &lt;br&gt; The items of a Unicode object are Unicode code units. A &lt;br&gt; Unicode code unit is represented by a Unicode object of one item and &lt;br&gt; can hold either a 16-bit or 32-bit value representing a Unicode &lt;br&gt; ordinal (the maximum value for the ordinal is given in sys.maxunicode, &lt;br&gt; and depends on how Python is configured at compile time). Surrogate &lt;br&gt; pairs may be present in the Unicode object, and will be reported as &lt;br&gt; two separate items. The built-in functions unichr() and ord() convert &lt;br&gt; between code units and nonnegative integers representing the Unicode &lt;br&gt; ordinals as defined in the Unicode Standard 3.0. Conversion from and &lt;br&gt; to other encodings are possible through the Unicode method encode() &lt;br&gt; and the built-in function unicode(). &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;这里面是这么几句： &lt;br&gt; &amp;quot;The items of a string are characters&amp;quot;, &amp;quot;The items of a Unicode object &lt;br&gt; are Unicode code units&amp;quot;, &amp;quot;The string data type is also used to &lt;br&gt; represent arrays of bytes, e.g., to hold data read from a file.&amp;quot; &lt;br&gt; 一二句说明 str 和 unicode 的组成单元(item)是什么（因为它们同是 sequence ) 。sequence 默认的__len__ 函数的返回值正是该序列组成单元的个数。这样的话，len(&amp;#39;abcd&amp;#39;) == 4 和 len(u&amp;#39;我是中文&amp;#39;) == 4 就很容易理解了。 &lt;br&gt; 第三句告诉我们像从文件输入输出的时候是用 str 来表示数据的数组。不止是文件操作，我想在网络传输的时候应该也是这样的。这就是为什么一个unicode 字符串在写入文件或者在网络上传输的时候要进行编码的原因了。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化。编码是 unicode -&amp;gt; str，相反的，解码就是 str -&amp;gt; unicode。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;下面剩下的问题就是确定何时需要进行编码或者解码了，像一些库是 unicode 版的，这样我们在将这些库函数的返回值进行传输或者写入文件的时候就要考虑将它编码成合适的类型。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;关于文件开头的"编码指示"，也就是 # -*- coding: -*- 这个语句。Python 默认脚本文件都是 ANSCII 编码的，当文件中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正。 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;关于 sys.defaultencoding，这个在解码没有明确指明解码方式的时候使用。比如我有如下代码： &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;#! /usr/bin/env python &lt;br&gt; # -*- coding: utf-8 -*- &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;s = &amp;#39;中文&amp;#39;  # 注意这里的 str 是 str 类型的，而不是 unicode &lt;br&gt; s.encode(&amp;#39;gb18030&amp;#39;) &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;这句代码将 s 重新编码为 gb18030 的格式，即进行 unicode -&amp;gt; str 的转换。因为 s 本身就是 str 类型的，因此Python 会自动的先将 s 解码为 unicode ，然后再编码成 gb18030。因为解码是python自动进行的，我们没有指明解码方式，python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding 是ANSCII，如果 s 不是这个类型就会出错。 &lt;br&gt; 拿上面的情况来说，我的 sys.defaultencoding 是 anscii，而 s 的编码方式和文件的编码方式一致，是 utf8 的，所以出错了: &lt;br&gt; UnicodeDecodeError: &amp;#39;ascii&amp;#39; codec can&amp;#39;t decode byte 0xe4 in position &lt;br&gt; 0: ordinal not in range(128) &lt;br&gt; 对于这种情况，我们有两种方法来改正错误： &lt;br&gt; 一是明确的指示出 s 的编码方式 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;#! /usr/bin/env python &lt;br&gt; # -*- coding: utf-8 -*- &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;s = &amp;#39;中文&amp;#39; &lt;br&gt; s.decode(&amp;#39;utf-8&amp;#39;).encode(&amp;#39;gb18030&amp;#39;) &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;二是更改 sys.defaultencoding 为文件的编码方式 &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;#! /usr/bin/env python &lt;br&gt; # -*- coding: utf-8 -*- &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font class="fixed_width" face="Courier, Monospaced"&gt;import sys &lt;br&gt; reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法，我们需要重新载入 &lt;br&gt; sys.setdefaultencoding(&amp;#39;utf-8&amp;#39;) &lt;br&gt; &lt;/font&gt;&lt;/p&gt; &lt;font class="fixed_width" face="Courier, Monospaced"&gt;str = &amp;#39;中文&amp;#39; &lt;br&gt; str.encode(&amp;#39;gb18030&amp;#39;)&lt;/font&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1015560836624942981?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1015560836624942981/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1015560836624942981&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1015560836624942981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1015560836624942981'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/python.html' title='搞懂python 编码　'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1964842669714753662</id><published>2008-10-17T13:02:00.001+08:00</published><updated>2008-10-17T13:02:55.863+08:00</updated><title type='text'>一张很酷的图</title><content type='html'>&lt;div dir="ltr"&gt;&lt;h3 class="f"&gt;挂在墙上很不错&lt;br&gt;&lt;span class="shadow" id="zoomed-in" style="display: block; background-image: none ! important;"&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class="f"&gt;&lt;br&gt;&lt;/h3&gt;&lt;h3 class="f"&gt;&lt;span class="shadow" id="zoomed-in" style="display: block; background-image: none ! important;"&gt;&lt;a href="http://fiveless.deviantart.com/art/mathematical-induction-56305755" onclick="return Deviation.zoomOut();"&gt;&lt;img src="http://fc56.deviantart.com/fs16/f/2007/148/f/4/mathematical_induction_by_fiveless.jpg" width="500" height="753"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;          &lt;div class="text block pppt"&gt; Was doing mathematical induction while studying for my math paper this morning. It was mindnumbingly boring and repetitive. &lt;br&gt; No idea why it inspired me to do this cluttered piece in red and black, though. But here it is, a wry and slightly out of the ordinary piece on the process of mathematical induction. (:&lt;br&gt; Damn. This must be the most random piece I&amp;#39;ve done in a while. O.o&lt;br&gt; &lt;br&gt; Fonts: Myriad Web, Euclid Symbol, Euclid Math Two        &lt;/div&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1964842669714753662?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1964842669714753662/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1964842669714753662&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1964842669714753662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1964842669714753662'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_17.html' title='一张很酷的图'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6270884630059961936</id><published>2008-10-16T22:23:00.001+08:00</published><updated>2008-10-16T22:23:27.986+08:00</updated><title type='text'>徒步旅行者的个人概念电脑</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;&lt;img title="" alt="" src="http://www.elanso.com/U/D/Dcc/cc72a08858cd30d76b8c96d7a439a43d/128496114075667500.jpg"&gt;&lt;/p&gt; &lt;p&gt;这个"徒步旅行者的个人概念电脑"就像书一样可折叠，携带非常方便，功能也相当的丰富。&lt;/p&gt; &lt;p&gt;它 无需外部电源供电，直接采用太阳能供电，解决了使用中最大的问题"电源"。翻开书的其中一页就是一盏灯，它可以简单的照明，使用一个晚上没有什么问题。另 外还有个随身的配件，可随时了解时间、日期，还内置了麦克风和摄像头，无线连接个人概念电脑。当然其主要的功能还是一台电脑，无线上网、Email、电子 地图、GPS等等功能。&lt;/p&gt; &lt;p&gt;&lt;img title="" alt="" src="http://www.elanso.com/U/D/Dcc/cc72a08858cd30d76b8c96d7a439a43d/128496114080355000.jpg"&gt;&lt;/p&gt;&lt;p&gt;很薄很轻，携带方便。&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="" alt="" src="http://www.elanso.com/U/D/Dcc/cc72a08858cd30d76b8c96d7a439a43d/128496114085198750.jpg"&gt;&lt;/p&gt; &lt;p&gt;太阳能充电，在野外不用担心没电&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="" alt="" src="http://www.elanso.com/U/D/Dcc/cc72a08858cd30d76b8c96d7a439a43d/128496114088636250.jpg"&gt;&lt;/p&gt; &lt;p&gt;&lt;img title="" alt="" src="http://www.elanso.com/U/D/Dcc/cc72a08858cd30d76b8c96d7a439a43d/128496114091761250.jpg"&gt;&lt;/p&gt; &lt;p&gt;还可以作为夜用灯&lt;br&gt;&lt;/p&gt; &lt;p&gt;[发现地：&lt;a target="_blank" href="http://www.techeblog.com/index.php/tech-gadget/pictures-backpacker-s-diary-pc-concept-is-foldable-looks-like-a-book"&gt;techeblog&lt;/a&gt;]&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt;  &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6270884630059961936?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6270884630059961936/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6270884630059961936&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6270884630059961936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6270884630059961936'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_2320.html' title='徒步旅行者的个人概念电脑'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6290956053642653218</id><published>2008-10-16T13:28:00.001+08:00</published><updated>2008-10-16T13:28:40.864+08:00</updated><title type='text'>街道上的艺术</title><content type='html'>&lt;div dir="ltr"&gt;下面的这些作品全部由彼得吉布森（又名roadsworth ）创作而成，他从2001年开始在加拿大蒙特利尔的街道上创作这些作品，主要目的是呼吁人们少买汽车多使用自行车这种没有废气排放的工具，提升城市生活质量。&lt;br&gt;&lt;br&gt;　 　2004年的秋天，彼得吉布森被逮捕了，罪名是扰乱城市秩序，因为这个是不合法的，他不得不在夜间进行创作，据说有54处马路标志被他涂抹过了。尽管他 可能比较严重的触犯了当地的法律，但人们都了解他的良苦用心，所以联名上书请求减轻他的罪行。从那时起，他就变得出名起来，经常收到一些邀请函请他去创 作……（&lt;a target="_blank" href="http://hi.baidu.com/crab_song"&gt;Crab_Song&lt;/a&gt;对此亦有贡献）&lt;br&gt;&lt;br&gt;&lt;div align="center"&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/1.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/2.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/3.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/4.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/5.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/6.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/7.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/8.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/9.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/10.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/11.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/12.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/13.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/14.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/15.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/16.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/17.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/18.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0809/StreetDoodle/19.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;/div&gt; &lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6290956053642653218?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6290956053642653218/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6290956053642653218&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6290956053642653218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6290956053642653218'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_7070.html' title='街道上的艺术'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-1276089843690850888</id><published>2008-10-16T13:22:00.001+08:00</published><updated>2008-10-16T13:22:08.100+08:00</updated><title type='text'>中国山寨版诺贝尔奖</title><content type='html'>&lt;div dir="ltr"&gt;感谢油条"dolphin"分享中国山寨版诺贝尔奖。08年诺贝尔奖与&lt;a target="_blank" href="http://www.u148.net/group/topic/6923.html"&gt;另类诺贝尔奖&lt;/a&gt;获得者已于近日出炉，吸引了大家不少眼球，并引发了新一轮的讨论。08年，中国也涌现了不少很好很强大的人物，网友们一一为他们颁发了各个领域的"山寨版诺贝尔奖"！&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔生物学奖获奖者：周正龙&lt;/strong&gt;&lt;br&gt; &lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/1.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：农民周正龙发现了在陕西早已绝迹的华南虎，拍下了清晰的虎照，并荣登美国《科学》杂志。 &lt;br&gt;&lt;br&gt;经典语录：&lt;br&gt; "我敢用脑袋担保，照片是真的!"&lt;br&gt;"要是照片有假，当场把我头砍掉!"&lt;br&gt;"我姓周的从不说假话。"&lt;br&gt;"我的照片是经过省林业厅鉴定的。假的我坐牢。"&lt;br&gt;"照片是我用生命换来的。"&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔文学奖获奖者：赵丽华&lt;/strong&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/2.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：开创梨花体，让有着"诗的国度"的中国不得不重新认识什么才是诗。 &lt;br&gt; &lt;br&gt;诗歌摘录：《我坚决不能容忍》&lt;br&gt;我坚决不能容忍/那些/在公共场所/的卫生间/大便后/不冲刷/便池/的人。 &lt;br&gt;&lt;br&gt;《一个人来到田纳西》：毫无疑问／我做的馅饼／是全天下／最好吃的&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔经济学奖获奖者：徐滇庆&lt;/strong&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/3.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：去年7月11日，中国经济研究中心兼职教授徐滇庆表示："我们不妨再豪放一点――如果明年深圳房价比现在低一分钱，我一定在媒体上用整版篇幅向深圳市民道歉。"结果徐教授做到了。 &lt;br&gt; &lt;br&gt;经典语录：&lt;br&gt;"深圳房价上涨理由充分，在目前阶段房价上涨利大于弊，是好事。"&lt;br&gt;"今年夏天房价会有暴涨期。"&lt;br&gt;"我说的话还错在没有估计到在美国次级债的影响下会产生如此严重的信心危机。" &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔考古学奖获奖者：纪连海&lt;/strong&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/4.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：纪连海考证出了大禹治水三过家门而不入的真正原因是婚外情。 &lt;br&gt; &lt;br&gt;经典一刻：百家讲堂知名学者纪连海在上海一电视台的《文化中国》栏目上称，大禹之所以会"三过家门而不入"，不是为公，而是因为他有了婚外情。纪称，大禹的生命中还有另外一个女人――瑶姬，瑶姬将定情信物"红宝书"给大禹，帮助大禹治水成功。&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔医学奖获奖者：李银河&lt;/strong&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/5.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：李银河研究员发现：同性恋并不是艾滋病的主要传播渠道，异性恋才是。 &lt;br&gt; &lt;br&gt;经典语录：&lt;br&gt;"一切东西都应该要丰富多彩。如果家庭都只是一夫一妻这个模式，反而显得过于单调。"&lt;br&gt;"禁止乱伦最初只是从遗传角度上来考虑，防止人种的退化。乱伦是不涉及道德方面的问题的。在我看来，只要承诺他们不生育，完全可以让他们结合。" &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;山寨版诺贝尔物理学奖获奖者：刘翔"零阻力"比赛服设计师&lt;/strong&gt;&lt;br&gt;&lt;a class="nob" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net/attachments/image/month_0810/Nobel/6.jpg" alt="www.u148.net" align="right" border="0"&gt;&lt;/a&gt;获奖理由：其专门为刘翔设计生产出了一种几乎"零阻力"比赛服。据称，这件比赛服的阻力要比刘翔在雅典奥运会上穿的低7%，相当于一名短跑运动员跑快了0.02秒。可惜的是刘翔在北京奥运会上出师未捷身先伤，这一高科技比赛服未能派上用场。 &lt;br&gt; &lt;br&gt;"零阻力"比赛服简介："零阻力"比赛服是特为刘翔参加北京奥运会量身打造的，"零阻力"比赛服设计团队为刘翔设计了19双不同重量的鞋子，供刘翔试穿。&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-1276089843690850888?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/1276089843690850888/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=1276089843690850888&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1276089843690850888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/1276089843690850888'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_2224.html' title='中国山寨版诺贝尔奖'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-4663018979127325124</id><published>2008-10-16T13:14:00.001+08:00</published><updated>2008-10-16T13:14:05.927+08:00</updated><title type='text'>张富贵的漫画</title><content type='html'>&lt;div dir="ltr"&gt;&lt;br&gt;　　关于当代街头"行为艺术"，偶正在整理文字版，由于篇幅巨长，所以请大家做好心理准备，先欣赏一下来自张富贵的漫画版。&lt;a target="_blank" href="http://blog.sina.com.cn/wohenweisuo"&gt;这里是他的博客，请猛烈点击！&lt;/a&gt;&lt;br&gt;　&lt;br&gt;&lt;br&gt;&lt;div align="center"&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/1.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/2.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/3.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/4.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/5.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;br&gt; &lt;br&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0810/wohenweisuo/6.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-4663018979127325124?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/4663018979127325124/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=4663018979127325124&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4663018979127325124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/4663018979127325124'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_1037.html' title='张富贵的漫画'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-6296270978754275837</id><published>2008-10-16T13:12:00.001+08:00</published><updated>2008-10-16T13:12:06.154+08:00</updated><title type='text'>向左转，向右转</title><content type='html'>&lt;div dir="ltr"&gt;&lt;div align="center"&gt;&lt;a target="_blank" href="http://www.u148.net/"&gt;&lt;img src="http://www.u148.net//attachments/image/month_0710/roll.jpg" alt="www.u148.net" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;　　下面这个个Flash动画的创造者叫Kayahara，是一个日本MM，&lt;a target="_blank" href="http://www.michaelbach.de/ot/sze_silhouette/index.html"&gt;点这里进入她博客&lt;/a&gt;。&lt;br&gt; 　　点击"stop"上方的两个按钮，然后看美女的眼睛，这样你就很容易看到她怎么转了！&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-6296270978754275837?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/6296270978754275837/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8993667273832591848&amp;postID=6296270978754275837&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6296270978754275837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8993667273832591848/posts/default/6296270978754275837'/><link rel='alternate' type='text/html' href='http://babatu.blogspot.com/2008/10/blog-post_2679.html' title='向左转，向右转'/><author><name>kauu</name><uri>http://www.blogger.com/profile/17014395648280731758</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8993667273832591848.post-529348892726787554</id><published>2008-10-16T12:07:00.001+08:00</published><updated>2008-10-16T12:07:33.914+08:00</updated><title type='text'>网上冲浪有益大脑</title><content type='html'>&lt;div dir="ltr"&gt;&lt;p&gt;&lt;img src="http://pic.yupoo.com/iange/6742665a0403/small.jpg" alt="right-brain"&gt;&lt;br&gt; 加州大学洛杉矶分校的Gary Small和他的同事经研究发现，上网可以使大脑运转的更充分。&lt;/p&gt; &lt;p&gt;下图&lt;span id="more-6655"&gt;&lt;/span&gt;是Gary Small的一个试验，参加试验的自愿者在阅读和上网的时候同步接受脑部扫描。&lt;br&gt; &lt;img src="http://pic.yupoo.com/iange/0180565a0404/ji1v9zt6.jpg" alt="reading-surfing"&gt;&lt;/p&gt; &lt;p&gt;从图中可以得知，在这两项活动中，脑中负责语言、阅读、记忆和视觉的部分都有强烈的活动。&lt;/p&gt; &lt;p&gt;但是，在进行网络搜索志愿者的大脑里，除上述部分外，负责决策和复杂推理的部分也有了强烈活动，不过，这仅仅是对于有经验并合理使用网络的网民而言。&lt;/p&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt; &amp;nbsp;^ - ^ &amp;nbsp;开心生活，开心工作 &lt;br&gt; &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8993667273832591848-529348892726787554?l=babatu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://babatu.blogspot.com/feeds/529348892726787554/comments/default' title='帖子评论'/><link rel
