<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
 <channel>
  <title>On the Open Way</title>
  <link>http://navigating.blogbus.com</link>
  <description><![CDATA[自信人生两百年，会当水击三千里！]]></description>
  <generator> by blogbus.com </generator>
  <lastBuildDate>Thu, 01 Jan 1970 07:00:00 +0700</lastBuildDate>
  <image>
									<url>http://public.blogbus.com/profile/head.gif</url>
									<title>On the Open Way</title>
									<link>http://navigating.blogbus.com</link>
								</image>  <item>
   <title>熊</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>简介</strong></span><br />　　熊，食肉目，是属于熊科的杂食性大型哺乳类，以肉食为主。从寒带到热带都有分布。躯体粗壮，四肢强健有力，头圆颈短，眼小吻长。前后肢均具有5指、趾，弯爪强硬，不能伸缩。跖行性。短尾隐于体毛内。毛色一致，厚而密。齿大，但不尖锐，裂齿不如其他食肉目动物发达。杂食性。行动缓慢，营地栖生活，善于爬树，也能游泳。嗅觉、听觉较为灵敏。毛皮、肉、脂、胆、掌均有较大经济价值，有时对养蜂业、农、牧、果树等造成危害。种类较少，全世界仅有7种，我国有4种：马来熊、棕熊、亚洲黑熊、大熊猫。除澳洲、非洲南部外，多有分布。<br /><span style="text-decoration: underline;"><strong>动物学分类</strong></span><br />　　熊,哺乳纲,熊科动物的总称.<br />　　熊是陆上肉食类中体形最大的动物.它们是由一种类似犬一样的祖先进化而成的,是犬科动物进化道路上的一个分支.熊科动物基本上都已偏离了食肉的习性,而成为杂食性动物了.有棕熊.黑熊,北极熊,印度熊,马来熊,美洲熊等等之分.其中棕熊体积最大, 北极熊次之,一般越靠近南方的体形越小.<br /><span style="text-decoration: underline;"><strong>外形特征</strong></span><br />　　熊躯体粗壮肥大，体毛又长又密，脸形像狗，头大嘴长，眼睛与耳朵都较小，臼齿大而发达，咀嚼力强。四肢粗壮有力，脚上长有5只锋利的爪子，用来撕开食物和爬树。尾巴短小。熊平时用脚掌慢吞吞地行走，但是当追赶猎物时，它会跑得很快，而且后腿可以直立起来。<br />　　常见的特征有短尾、极佳的嗅觉、五个无法收缩的爪，以及长、密、粗的毛。刚出生时，它的大小与天竺鼠差不多，至少要与母亲生活一年。<br />　　熊的嗅觉十分灵敏，视力以及听觉比较差。它们的牙齿是用来防御和当作工具。它们的爪子可以用来撕扯、挖掘和抓取猎物。<br />　　熊氏家庭成员体型差别较大，块头有大有小。最大的是棕熊（约780千克），北极熊次之（约700千克），然后是美洲黑熊（约220千克）、亚洲黑熊（约150千克）、懒熊（约140千克）、眼镜熊（约140千克）、马来熊（约60千克）。<br />　　速度 最快的灰熊 ，时速可以达到48KM/H，棕熊在崎岖山路速度可以达到30KM/H 速度很快。可不能认为熊的速度很慢噢，比人类快多了。<br /><span style="text-decoration: underline;"><strong>生活习性</strong></span><br />　　大多数熊食性很杂，既食青草、嫩枝芽、苔藓、浆果和坚果，也到溪边捕捉蛙、蟹和鱼，掘食鼠类，掏取鸟卵，更喜欢舔食蚂蚁，盗取蜂蜜，甚至袭击小型鹿、羊或觅食腐尸。但是北极熊比较特殊，主要吃鱼和海豹。熊的视觉和听觉都不十分灵敏，但嗅觉非常发达。<br />　　生活于北方寒冷地区的熊有冬眠现象，而位于亚热带和热带地区的黑熊往往不冬眠。熊冬眠时间可持续4～5个月，在冬眠过程中如果被惊动它会立即苏醒，偶然也会出洞活动。熊冬眠的洞穴一般选在向阳的避风山坡或枯树洞内。除冬眠期外，熊没有固定的栖息场所。除了发情交配期外，其余时间熊都单独活动。母熊一般1年产1～4崽。<br />　　熊一般是温和的、不主动攻击人的动物，也愿意避免冲突，但当它们认为必须保卫自己或自己的幼崽、食物或地盘时，也会变成非常危险而可怕的野兽。<br />　　爱吃植物的眼镜熊：眼镜熊又叫南美熊、安第斯熊，产于南美，是现在唯一分布于南半球的熊，也是最爱吃植物性食物的一种熊，吃各种果、叶、根、茎，很少吃昆虫，因眼睛四周有白圈而得名。眼镜熊善于登高爬树，通常独自活动，偶以小家庭为单位，共住在一棵大树上。<br />　　高度近视的亚洲黑熊：亚洲黑熊又叫狗熊、月熊，还有个俗称叫黑瞎子。为什么叫它"瞎子"呢?因为它天生近视，百米之外看不清东西，不过它的耳、鼻灵敏，顺风可闻到半公里以外的气味，能听到300步以外的脚步声。别看它外表愚拙，实际上机警过人。平时黑熊以植物为主食(你一定听过黑瞎子掰苞米的故事)，在秋季却大吃昆虫等动物性食品，在体内贮存大量脂肪准备在树洞里冬眠。特长是爬树、游泳。因为眼神不济，所以练就了一身昼夜都行动自如的本领。亚洲黑熊分布于中国、印度、俄罗斯、日本、蒙古等国。<br />　　胃口极好的棕熊：棕熊遍布亚、欧、北美三大洲，其中阿拉斯加棕熊最大，最重近800公斤，站立时有两人高，是现存世界上最大的食肉目动物。而叙利亚棕熊却很小，体重不足90公斤。我国的棕熊一般在200-500公斤。棕熊的胃口可以说是好极了，荤的、素的都爱吃。植物、昆虫、蜂蜜、鱼类，甚至鹿、羊、牛、都能一概吃下，所以比较凶猛，枪法不好的猎手往往反会成为棕熊的猎物。<br />　　靠"吸尘器" 过日子的懒熊："吸尘器"是对懒熊的嘴部功能的形象比喻。生活于印度和斯里兰卡热带森林中的懒熊形象奇特，下唇长而善动，形状像舌头，没有上门牙，嘴可以伸进昆虫藏匿的缝隙中，像吸尘器一下把猎物席卷入口。懒熊的视觉极差，靠嗅觉和听觉活动，所以它选择了夜间出击、白天酣睡的生活作风，于是人称：懒熊。小懒熊常骑在母熊背上来来去去，寸步不离，这种母子感情大大强于其他熊类的母子关系。<br />　　喜欢"假离婚"的美洲黑熊：美洲黑熊分布在加拿大及美国中部和东部的森林，别看它叫"黑熊"，其实它的身体颜色有很多种，黑色、棕色、灰色&hellip;&hellip;连白色都有。美洲黑熊常在6-7月份"娶妻生子"，不过等小熊过完一周岁生日后，一家子便各奔东西，熊爸爸、熊妈妈也各自生活，看上去像"离婚"一样，可到了下一年的6-7月份，它们就复婚，重新考虑生育下一代的事。<br />　　冰山巨无霸--白熊："冰山巨无霸"就是指北极熊，也就是白熊。它们生活在北极的莽莽冰原上，体大凶猛，以猎取海豹、幼海象、幼鲸、海鸟、鱼类为生，在北极地区是"土皇帝"，几乎打遍北极无敌手!貌似笨重的北极熊，行动十分敏捷，短跑时甚至能撵上驯鹿或北极兔。同时，它也是冰泳高手，游泳时速达10公里，潜水时间可达2 分钟，在冰水中游上百公里不在话下，堪称"半水栖兽类"。北极熊是生活在最北部、食肉性最强的一种熊。<br />　　攀爬高手--马来熊：马来熊又叫太阳熊或日熊，分布于印尼、缅甸、泰国、马来半岛及中国南部边陲的热带、亚热带山林中，是熊家族中体型最小的一种，体重只有60公斤。马来熊的看家本领是攀爬，于是它把大部分时间都花在了树上，把家也安在枝叶之间。马来熊主要吃植物果、叶以及昆虫和白蚁。夜间是马来熊的天下，而白天它却会悠闲地躺在树上晒太阳。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48243356.html">虎</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48242961.html">狼</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48314179.html&title=%E7%86%8A">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48314179.html</link>
   <author>steven_xu</author>
   <pubDate>Tue, 13 Oct 2009 20:00:38 +0800</pubDate>
  </item>
  <item>
   <title>猴</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>简介一</strong></span>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 猴是一个俗称。灵长目中很多动物我们都称之为猴。灵长目是哺乳纲的1目。动物界最高等的类群,大脑发达；眼眶朝向前方，眶间距窄；手和脚的趾（指）分开，大拇指灵活，多数能与其他趾（指）对握。包括原猴亚目和猿猴亚目。原猴亚目颜面似狐；无颊囊和臀胼胝；前肢短于后肢,拇指与大趾发达，能与其他指（趾）相对；尾巴能卷曲或缺如。猿猴亚目颜面似人；大都具颊囊和臀胼胝；前肢大都长于后肢，大趾有的退化；尾长、有的能卷曲，有的无尾。按区域分布或鼻孔构造，猿猴亚目又分为阔鼻猴组，又称新大陆猴类；狭鼻猴组，又称旧大陆猴类。本目包括11科约51属180种,主要分布于亚洲、非洲和美洲温暖地带。大多栖息林区。灵长类中体型最大的是大猩猩，体重可达275千克，最小的是倭猴,体重只有70克。<br />　　灵长类的大多数头骨具大的颅腔，呈球状，这是由于颌部变短，脸部变扁所致；眶后突发育形成骨质眼环，或全封闭形成眼窝；多数种类鼻子短，其嗅觉次于视觉、触觉和听觉，某些低等种类在脑中具有高度发达的嗅觉中枢，并在很大程度上靠嗅觉行动。某些狐猴有较长的鼻部。金丝猴属和豚尾叶猴属的鼻骨退化，形成上仰的鼻孔。长鼻猴属的鼻子大又长。这些特殊的类型是因肌肉或软骨发育而形成的。脚的拇趾和它趾能对握，使得手和脚成为抓握器官。原猴类的5指只能同时屈伸,不能个别运用。掌面与□面裸出,有指、趾纹,纹路形态不一。具有非常软或宽的足垫,除黑猿外,皆为□行性。多数种类的指和趾端均具扁甲。一般前后肢长相差不大，唯长臂猿科和猩猩科的前肢比后肢长得多。猿类和人无尾，在有尾的种类中,其尾长差异很大, 从只有一个突起到超过身体长。卷尾猴科大部分种类的尾巴具抓握功能，有&ldquo;第五只手&rdquo;之称。一些旧大陆猴(如狒狒)的脸部、臀部或胸部皮肤具鲜艳色彩，在繁殖期尤其显著。臀部有粗硬皮肤组成的硬块，称为臀胼胝。<br />&nbsp;&nbsp;&nbsp; 多数种类在胸部或腋下有1对乳头，而指猴的 1对乳头在腹部。雄性的阴茎是悬垂形，多数具阴茎骨，而眼镜猴、绒毛猴、人和某些种类不具。精巢包于囊中。雌体具双角子宫或单子宫。体被毛，有的柔软细密，有的粗硬，或在局部很长，或在毛上具异色环节。有的头顶毛很长，形成丛状毛冠，或甚短，呈平顶，或秃顶无毛。有的在两颊或颌下具长毛，形如胡须。有的两肩、后背、臀部被以长毛。有的体毛非常艳丽。<br />　　绝大多数灵长类动物营不同形式的树栖或半树栖生活，只有环尾狐猴、狒狒和叟猴地栖或在多岩石地区生活。通常以小家族群活动，也结大群活动。多数能直立行走，但时间不长。多在白天活动，夜间活动的有指猴、一些大狐猴、夜猴等。大倭狐猴和倭狐猴在干热季节夏眠数日至数周。<br />　　猴子大多为杂食性、吃植物性或动物性食物。选择食物和取食方法各异，如指猴善于抠食树洞或石隙中的昆虫。猩猩的食量很大，几乎把绝大部分的活动时间用以觅食。疣猴科胃的构造特殊，大部分种类吃粗纤维多的植物性食物。<br />　　猴子每年繁殖1～2次，每胎1仔，少数可多到3仔。幼体生长比较缓慢。哺乳期多抓爬在母体胸、腹部或骑在母背上，由母带着活动。性成熟的雌性有月经，雄性能在任何时间交配。只有低等猴类，如狐猴、懒猴、指猴具有一定的交配、繁殖季节。<br />　　树科的头骨特征与某些十分原始的原猴类颇相似，许多解剖学家和古生物学家曾把它包括在灵长类内，但其外部形态和生态习性却与灵长类有很大差异，因此，现代分类学家已把它独立成树目。<br />　　灵长类化石发现于北美和欧洲、亚洲的古新世至渐新世地层中，在非洲和欧洲发现于中新世，而在南美、非洲和马达加斯加则发现于更新世。灵长类的进化已有 6000万年历史，从世界各地发现的早期灵长类化石属原猴类,其中60多属现已绝灭。现在美洲已没有原猴类，只是在亚非大陆、马达加斯加岛和印度洋一些岛屿上，还生存着少数与5000万年前的原猴类极为相似的种类。猿猴类的历史可追溯到 3000～5000万年以前，大约在1500～2000万年以前，猿类的祖先就已遍布欧、亚、非三大洲，但现今却仅残存于亚洲和非洲的热带。<br />　　在我国古籍中，猴子的别称有禺，果然，独，狨等。据《白虎通》记述：&ldquo;猴，侯也，见人设食伏机，则凭高四望，善于侯者也。&rdquo;侯，是等待、观望的意思。<br />　　印度尼西亚加里曼丹岛的北部山区，每年5月7日是&ldquo;敬猴节&rdquo;。而泰国的北部山区，每年的11月1日是&ldquo;猴子运动节&rdquo;。<br /><span style="text-decoration: underline;"><strong>简介二</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 猴是一种群居动物，据动物学家长期观察，猴也有它的社会秩序，有位高、位低之分，其中统治群猴的是一只资格较老的霸主&mdash;&mdash;猴王。猴王年龄太老或过于残暴，也会激起群猴的愤怒，予以罢免或被咬得奄奄一息。据载，前不久，北京八大岭野生动物园的群猴就把一只老猴王不仅罢免，而且咬成重伤，后居然又有一新猴王继位，看来也体现了它们的社会秩序。<br />&nbsp;&nbsp;&nbsp;&nbsp; 不过在猴的社会从无谦让的美德，就和人类当中极端的个人主义者一样。有的猴王也相当残暴，它可以把地上的食物集拢成一大堆，自己把屁股坐上去，也不准其它猴子吃。每只猴子都有颊囊（即所谓脖子下面的口袋），吃不完的食物就藏在颊囊中，但绝不给其它猴子吃。有时为了抢夺食物，彼此吱吱乱叫，甚至互相追打，毫不谦让。人类常把吝啬人说成&ldquo;猴奸、猴奸！&rdquo;猴看来就是奸。<br />&nbsp;&nbsp;&nbsp;&nbsp; 猴子好动，自古被视为聪明伶俐的形象。在动物园观看猴子时，很少能看到它不动的样子，要么在爬山，要么在爬树，要么在吃游客喂的食物，要么在挠蚤子，更甚者在模仿人的动作。神医华佗首创五禽戏，即仿效动物姿态的一种体育治疗法，《后汉书&middot;华佗传》记他的话：&ldquo;吾有一术，名五禽之戏：一曰虎，二曰鹿，三曰熊，四曰猨，五曰鸟。亦以除疾，并利蹄足，以当导引。&rdquo;猨即猿，这里是说运动时模仿猴子的姿态动作。三国时代，曹植写诗《白马篇》，吟咏马上习武的豪爽，其中&ldquo;仰手接飞猱，俯身散马蹄。狡捷过猴猿&rdquo;之句，颇富动态感，是因为借助了猴的形象。猱，猿一类动物，攀授树木敏捷若飞。<br />&nbsp;&nbsp;&nbsp;&nbsp; 猴子也有它的特殊习性，猴捉虱子是人们常见的，其实猴身上并没有那么多虱子，据动物学家分析，原来猴子的长毛下面，在皮肤上附有一种分泌物的结晶体，略带咸味，猴子把它找出来放入口中咀嚼得津津有味，犹如人类嗑瓜子一样，也是一种闲趣。不过，这种捉虱子的动作，往往是&ldquo;位分低&rdquo;的给&ldquo;位分高&rdquo;的捉，尤其给猴王捉，显然有巴结的意思。有时母猴也给小猴捉，这一点可能还体现了一点母爱。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48243356.html">虎</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48242961.html">狼</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48245718.html&title=%E7%8C%B4">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48245718.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 23:14:03 +0800</pubDate>
  </item>
  <item>
   <title>豹</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>分布情况</strong></span><br />&nbsp;&nbsp;&nbsp; 豹广泛产于中国，也广泛产于亚洲，因此有中国豹，有亚洲豹；它也广泛产于非洲，所以也有非洲豹。但是，欧洲就不产豹，澳洲(有袋类动物的老家)也不产豹。中国有3亚种：华南豹(P.pardus fusea)、华北豹(P.p.fontanieri)和东北豹(P.p.orientalis)。<br />　 中国豹最早从渐新世中期即已出现，这表明这种动物至少已生存过50万年了。<br /><span style="text-decoration: underline;"><strong>外形特征</strong></span><br />&nbsp;&nbsp;&nbsp; 体型与虎相似，但较小，为大中型食肉兽类。体重50千克左右，，最重可达100千克；体长1～1.5米，尾长超过体长之半。头圆、耳短、四肢强健有力，爪锐利伸缩性强。豹全身颜色鲜亮，毛色棕黄，遍布黑色斑点和环纹，形成古钱状斑纹，故俗称之为&ldquo;金钱豹&rdquo;。雌雄毛色一致。其背部颜色较深，腹部为乳白色。还有一种黑化型个体，通体暗黑褐，细观仍见圆形斑，常被称为墨豹。<br /><span style="text-decoration: underline;"><strong>生活环境</strong></span><br />&nbsp;&nbsp;&nbsp; 栖息于山地、丘陵、荒漠和草原，尤喜茂密的树林或大森林。无固定巢穴。单独活动。白日伏在树上，或卧在草丛中，或在悬崖的石洞中休息，夜晚出来游荡。<br /><span style="text-decoration: underline;"><strong>生活习性</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 豹可以说是完美的猎手，矫健身材，灵活，奔跑时速可达65公里。即会游泳，又会爬树。性情机敏，嗅觉听觉视觉都很好，智力超常，隐蔽性强，这些是老虎狮子都办不到的。<br />　　豹的体能极强，视觉和嗅觉灵敏异常，性情机警，既会游泳，又善于爬树，成为食性广泛、胆大凶猛的食肉类。善于跳跃和攀爬，营独居夜行生活。常在林中往返游荡，捕食猿猴、野兔、野鹿和鸟类等，时而还猎食家畜。生性凶猛，伤人！<br />　　豹的猎物主要有鹿﹑羚羊及野猪，但亦会捕猎灵猫，猴子，雀鸟，啮齿动物等，甚至腐肉，视乎猎物产地而定。豹也有捕食黑猩猩的的纪录。在猎物缺乏时，它也会捕猎家畜，因而发生人豹之间的冲突。和一般猫科动物一样，豹会在密林的掩护下，潜近猎物，并来一个突袭，攻击猎物的颈部或口鼻部，令其窒息。非洲品种通常把猎物拖上树慢慢吃，以防狮子或鬣狗等食肉动物前来抢夺。在食物链上，豹处於次等捕猎者的位置，这亦意味着豹同时是老虎及狮子的猎物。<br />　　豹捕捉到的猎物如果被狮子，鬣狗狗等发现，多半会被抢走，因为豹不会同食肉动物搏击原因是一但有伤，就行动不便，上树，游泳等活动妨碍伤口愈合，加之免疫力低，所以豹宁愿再捉一个猎物也不愿同食肉动物搏击。<br /><span style="text-decoration: underline;"><strong>生长繁殖</strong></span><br />　　繁殖期为冬末春初，3～4月份发情交配，孕期约三个月，6～7月份产仔，每胎2～3仔，初生幼体500克左右，幼豹于当年秋季就离开母豹，独立生活。约三年性成熟。寿命10～20年。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48243356.html">虎</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48242961.html">狼</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48244480.html&title=%E8%B1%B9">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48244480.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 23:06:12 +0800</pubDate>
  </item>
  <item>
   <title>狮</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>特征</strong></span><br />&nbsp;&nbsp;&nbsp; 雄狮重达220公斤，包括尾巴的全长达2.8米，母狮体型较公狮小，但体重仍重达160公斤，相当于两个成年男人的重量，是非洲最顶级的掠食者，公狮颈部周围包著一层的鬃毛名为"狮鬃"，狮鬃颜色不等，包括金褐、咖啡、黑色，有些狮的狮鬃浓密而杂乱，有的稀疏且平顺，科学家研究发现，狮鬃又黑又浓又乱的公狮因为长相较吓人因此很少受攻击，狮鬃太少颜色太淡看起来不吓人的公狮反而常受到攻击，狮鬃在打猎埋伏上并没有任何的帮助。有些狮体色为纯白，并不是因为白化病，而是色素细胞的突变，白狮会被认为身体虚弱，且会影响到猎食，但白狮十分的稀少。<br /><span style="text-decoration: underline;"><strong>生活环境</strong></span><br />&nbsp;&nbsp;&nbsp; 过去从欧洲南部、西亚、印度和非洲都有狮。冰川期间一个亚种还在中欧和北美洲生存过，但冰川期后它们就消失了。按当时学者的报道，到古希腊时期在巴尔干半岛还有狮生存。一般认为欧洲的狮在公元1世纪由于人类的活动灭绝。<br />&nbsp;&nbsp;&nbsp; 今天绝大多数狮生活在非洲撒哈拉沙漠以南，撒哈拉沙漠以北的狮于1940年代灭绝。20世纪时在亚洲的狮几乎全部被消灭，只有在印度的一个自然公园还有少数幸存。<br />&nbsp;&nbsp;&nbsp; 过去除森林外，狮在所有的生态环境中都有，今天它们的生存环境大大地缩小了。它们比较喜欢草原，也在旱林和半沙漠中出现，但不生存在沙漠和雨林中。<br /><span style="text-decoration: underline;"><strong>社会结构</strong></span><br />&nbsp;&nbsp;&nbsp; 与其它大型猫不同，狮是群体生活。一个狮群主要由互相之间有亲缘关系的雌兽组成。地形和猎物的多少决定一个群的大小，一个群可以由3至30只狮组成。雄兽在一个群内只待一段时间，此后它往往去找另一个群。虽然如此在一个狮群中雄狮的地位比雌狮的高。一般在一个狮群中只有一只成年的雄狮，幼狮在狮群中一般待三年，此后雄性的青年被驱逐出群，而雌兽则留在群内。<br />&nbsp;&nbsp;&nbsp; 年轻的雄狮组成不稳定的小群过着游荡的生活，直到它们自己成为一个狮群的首领。一般它们要到六岁或更老才能达到这个地位。<br />&nbsp;&nbsp;&nbsp; 往往一个狮群的领导地位会被另一个雄狮占据，一般当老的雄狮老了或虚弱了时，就会有年轻的雄狮向它挑战，战败的雄狮不是死亡就是逃亡。假如新来的雄狮战胜，它一般将它前任的幼兽杀死，这样雌兽就比较容易和它交配了。<br />&nbsp;&nbsp;&nbsp; 一个狮群的领地面积从20到400平方千米不等。一个领地的大小与狮群的大小和领地内猎物的多少有关。狮群一般用粪便、尿和从远方就听得见的呼叫声来标志它们的领地。<br />&nbsp;&nbsp;&nbsp; 也有的狮群没有领地而过着游荡的生活。<br /><span style="text-decoration: underline;"><strong>繁殖</strong></span><br />&nbsp;&nbsp;&nbsp; 虽然雄狮在一个狮群中占最高的地位，但只有在一只雌狮同意的情况下它才能与它交配。假如雌狮愿意，它就趴到地上，让雄狮跨上。从雌狮对雄狮的态度上一般可以看得出雄狮在群中的地位有多高，以及它是否在下一次角斗中会被驱逐。<br />&nbsp;&nbsp;&nbsp; 雌狮的怀孕期一般是四个月，此后它生二至四只幼崽。幼崽的体重一般是1.5千克。幼崽不但可以在它的母亲身上吸奶，而且可以在群中的每只雌狮吸奶。对幼崽的抚养是整个狮群的任务。幼崽的吸奶期是四个月，此后它们还跟着母亲约两年。雌狮一般在三年后，雄狮在五年后性成熟。亦曾有研究指，雄狮跟雌狮成功交配出来超过一岁的小狮子在三只里只有一只。<br />&nbsp;&nbsp;&nbsp; 狮可以活20年。一般只有雌狮会活这么长。雄狮一般在此之前就会被一只年轻的雄狮杀死或驱逐，它们一般不会再找到一个群，往往饿死。一般雄狮的寿命不超过12年（与一个小学生的平均年龄持平），相反一般雌狮的寿命约15-18岁（与一个中学生的平均年龄持平）。在动物园中有些狮子活到34岁。<br /><span style="text-decoration: underline;"><strong>食物</strong></span><br />&nbsp;&nbsp;&nbsp; 一般雌狮猎取食物，雄狮只在它们年轻时，鬃毛还没有完全成熟时狩猎。它们深色的鬃毛使它们比较容易被看见，因此不太容易获得成功。一般它们潜伏靠近猎物，然后跳起将猎物扑倒。小的猎物一般被咬断头颈，大的猎物的头颈被撕破或被压抑窒息。<br />&nbsp;&nbsp;&nbsp; 一般出猎的时间是夜晚或清晨凉爽的时候。<br />&nbsp;&nbsp;&nbsp; 猎物中包括羚羊、小羚羊、牛羚和斑马，也包括狒狒、兔、鸟，有时甚至鱼。猎物被捕获后按群内地位的高低捺食：首先是雄狮，然后是地位最高的雌狮，幼狮最后。往往会因此产生群内的地位争端，这样的争斗往往会导致受伤。<br />&nbsp;&nbsp;&nbsp; 狮子往往也食腐食。被从群内驱逐的雄狮一般只食尸体。它们抢夺其它食肉动物如豹或猎豹的猎物。狮子也从鬣狗口中抢夺食物。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48243356.html">虎</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48242961.html">狼</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48244266.html&title=%E7%8B%AE">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48244266.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 23:00:39 +0800</pubDate>
  </item>
  <item>
   <title>虎</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>概要</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp; 在亚洲许多国家的文化中，虎是美丽、勇敢、力量的象征，人们畏惧虎的凶猛，又希望具有虎的强壮，以征服它来证明力量。虎与人类的关系密切，人类的活动使虎的栖息地缩小、分隔，人虎冲突和对虎的利用造成了对虎的大肆捕杀，目前这个物种已经十分濒危。<br /><span style="text-decoration: underline;"><strong>进化</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp; 虎由古食肉动物进化来。大型食肉类在距今700万年的新生代第三纪上新世出现并逐渐发展。古食肉类中的猫形类进化出多个分支，其中一只是古猫类，古猫类又分化为恐猫、真剑齿虎类和真猫，经过第四纪冰川期，只有真猫类存活下来，分化为猫族和豹族两个分支。现在的虎就是从真猫类中的豹族演化而来。 在虎的各个亚种中，华南虎是各亚种的祖先，它们的头骨结构最接近于原始的虎。<br /><span style="text-decoration: underline;"><strong>外形特征</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp; 虎为大型猫科动物，斑纹独特，身体被满浅黄到红色毛，有黑色至棕色条纹。不同亚种的虎的体形大小有差异，北方虎的体形大，颜色较浅；南方的体形较小，颜色较深。虎的虹膜呈黄色，圆形瞳孔。耳背为黑色，上有明显的白斑，有科学家认为这有助于幼崽在野外跟随母亲活动。虎的前后肢十分有力。掌垫的大小与虎的年龄有关，在种群调查中，研究人员以此鉴别个体。虎的尾较长，具环形斑纹，尾尖没有长毛，为黑色。<br /><span style="text-decoration: underline;"><strong>习性</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp; 虎是一种孤独的森林食肉动物，一般每只老虎有自己的领地，除了交配时期，从不和其他虎交往，雌虎独自生产和喂养幼虎，平均每胎产子2.46个，在野外，出生幼子的死亡率为30&mdash;40%。当幼虎成年后，雌虎将领地遗留给它，独自去寻找新领地。每个虎占领一块领地后，就会将本地所有大型食肉动物如狼、豹等赶走，所谓&ldquo;占山为王&rdquo;。老虎以鹿、獐、羊等食草动物为食，必须有足够的猎食领地以维持生命。虎一般采取潜伏袭击的猎食方式，从猎物后方攻击，在食物严重短缺时，也会攻击人。印度农民用头后戴假面具的方式避免遭受老虎攻击，因为虎以为假面具是人以正面对它，它决不会从正面攻击猎物。<br /><strong><span style="text-decoration: underline;">虎与文化</span></strong><br />&nbsp;&nbsp;&nbsp;&nbsp; 虎的象征意义在亚洲文化中得到最大的体现，被看作是美丽、严肃、勇猛的象征。在中国，虎的形象随处可见，许多神明信仰以虎为象征，如西王母、保生大帝、玄坛真君等。在台湾民间信仰，则奉城隍、山神、土地公所乘之虎为神，谓曰虎爷，有驱邪之能。虎字起源极早，殷墟甲骨文中就有虎字，现在汉字中的虎就很像一只虎。民间传说，汉字中的&ldquo;王&rdquo;就来自于老虎前额上的斑纹，还有许多成语、民间俗语中都有虎出现。虎在十二生肖中排名第三位。<br />&nbsp;&nbsp;&nbsp;&nbsp; 早在5000年前的印度河古文化中（今巴基斯坦一带）就发现有雕刻在图章上的虎的形象。印度教种有一个骑虎的女神杜伽（Durga），这个女神的形象在印度随处可见，多出现在火车两侧。韩国的野生虎虽已经灭绝，但韩国人仍称自己的国度为&ldquo;青龙白虎之邦&rdquo;，在1988年汉城奥运会2002年韩日世界杯上，虎都被定为吉祥物。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48242961.html">狼</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48243356.html&title=%E8%99%8E">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48243356.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 22:50:14 +0800</pubDate>
  </item>
  <item>
   <title>狼</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>外形特征</strong></span><br />　　外形有小（郊狼）、中（森林狼）、大（草原狼），吻尖长，眼角微上挑。因为产地和基因不同，所以毛色也不同。常见灰黄两色，还有黑红白等色，个别还有紫蓝等色，胸腹毛色较浅。腿细长强壮，善跑。灰狼的体重和体型大小各地区不一样,一般有随纬度的增加而成正比增加的趋势这一说法. 一般来说,肩高在( 26-36英寸) ,体重32-62公斤( 70-135磅) 野生狼体重记录--------其中1939年在阿拉斯加被打死的一只,,当时80公斤( 175磅) . 最小的狼是阿拉伯狼,雌性的狼有的体重可低至10公斤( 22磅) 狼群适合长途迁行捕猎.其强大的背部和腿部,能有效地舒展奔跑.<br /><span style="text-decoration: underline;"><strong>生活习性</strong></span><br />&nbsp;&nbsp;&nbsp; 狼是群居性极高的物种。一群狼的数量大约在5到12只之间，在冬天寒冷的时候最多可到四十只左右，通常以家庭为单位的家庭狼由一对优势对偶领导，而以兄弟姐妹为一群的则以最强一头狼领导。狼群有领域性，且通常也都是其活动范围，群内个体数量若增加，领域范围会缩小。群之间的领域范围不重叠，会以嚎声向其他群宣告范围。幼狼成长后，会留在群内照顾弟妹，也可能继承群内优势地位，有的则会迁移出去（大都为雄狼）而还有一些情况下会出现迁徙狼，以百来头为一群，有来自不同家庭等级的各类狼，各个小团体原狼首领会成为头狼，头狼中最出众的则会成为狼王。野生的狼一般可以活12&mdash;&mdash;16年，人工饲养的狼有的可以活到二十年左右。 奔跑速度极快，可达五十五公里左右，持久性也很好。它们有能力以速度10公里/小时(六英里)长时间奔跑 , 并能以高达近65公里/小时速度( 40英里) 追猎冲刺。 如果是长跑，它的速度会超过猎豹。智能颇高，可以气味、叫声沟通。狼是以肉食为主的杂食性动物,是生物链中极关键的一节。<br /><span style="text-decoration: underline;"><strong>生长繁殖</strong></span><br />　　狼的怀孕期为61天左右。低海拔的狼一月交配，高海拔则在四月交配。<br />　　小狼两周后睁眼，五周后断奶，八周后被带到狼群聚集处。<br />　　狼成群生活，雌雄性分为不同等级，占统治地位的雄狼和雌狼随心所欲进行繁殖，处于低下地位的个体则不能自由选择。雌狼产子于地下洞穴中，雌狼经过六十叁天的怀孕期，生下叁只到九只小狼，也有生十几只的。没有自卫能力的小狼，要在洞穴里过一段日子，公狼负责猎取食物。小狼吃奶时期大约有五、六个月之久，但是一个半月也可以吃些碎肉。叁、四个月大的小狼就可以跟随父母一道去猎食。半年后，小狼就学会自己找食物吃了。狼的寿命大约是十二到十四年。在群体中成长的小狼，非但父母呵护备至，而且，族群的其他份子也会爱护有加。狼和非洲土狼会将杀死的猎物，撕咬成碎片，吃下腹内，待回到小狼身边时，再吐出食物反哺。赤狼有时也会在族群中造一育儿所，将小狼集中养育，由母赤狼轮流抚育小狼，毫无怨尤。因此，我们可以说狼的家庭观念极强。<br /><span style="text-decoration: underline;"><strong>狼的行为模式和身体语言</strong></span><br />&nbsp;&nbsp;&nbsp; 一般占优势主导地位的狼会身挺高腿直，神态坚定，耳朵是直立向前。<br />　　往往尾部纵向卷曲朝背部。这种显示的是级别高主导地位的狼可能一直盯着一个唯唯诺诺的地位低下的狼。<br />　　活跃--玩耍时，狼会全身伏低，嘴唇和耳朵向两边拉开，有时会主动舔或快速伸出舌头。<br />　　愤怒--愤怒的狼的耳朵会竖立，背毛也会竖立，唇可卷起或后翻，门牙露出，有时也会弓背或咆哮。.<br />　　恐惧--害怕时狼会试图把它的身子显得较小，从而不那么显眼，或拱背防守，尾收回。<br /><span style="text-decoration: underline;"><strong>文化</strong></span><br />&nbsp;&nbsp;&nbsp; 狼本身并无所谓狡猾或贪婪之本性，但狼在狩猎时的习性以及智慧，往往被引申为凶残恶毒，并用来形容贪婪，凶邪或忘恩负义的人，如&ldquo;狼心狗肺&rdquo;，&ldquo;狼狈为奸&rdquo;，&ldquo;狼子野心&rdquo;等。另外欧亚中部游牧民族因其生存环境，可能会崇拜合群，勇猛的狼，突厥、乌孙都以狼为图腾。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48243356.html">虎</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48242961.html&title=%E7%8B%BC">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48242961.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 22:46:28 +0800</pubDate>
  </item>
  <item>
   <title>教条示龙场诸生(明.王守仁)</title>
   <description><![CDATA[<p>　　诸生相从于此，甚盛。恐无能为助也，以四事相规，聊以答诸生之意。一曰立志，二曰勤学，三曰改过，四曰责善。其慎听，毋忽！<br /><span style="text-decoration: underline;"><strong>立志</strong></span><br />　　志不立，天下无可成之事。虽百工技艺，未有不本于志者。今学者旷废隳惰，玩岁愒时，而百无所成，皆由于志之未立耳。故立志而圣，则圣矣；立志而贤，则贤矣；志不立，如无舵之舟，无衔之马，漂荡奔逸，终亦何所底乎？昔人所言：&ldquo;使为善而父母怒之，兄弟怨之，宗族乡党贱恶之，如此而不为善，可也。为善则父母爱之，兄弟悦之，宗族乡党敬信之，何苦而不为善、为君子？使为恶而父母爱之，兄弟悦之，宗族乡党敬信之，如此而为恶，可也。为恶则父母怒之，兄弟怨之，宗族乡党贱恶之，何苦必为恶、为小人？&rdquo;诸生念此，亦可以知所立志矣。<br /><span style="text-decoration: underline;"><strong>勤学</strong></span><br />　　已立志为君子，自当从事于学。凡学之不勤，必其志之尚未笃也。从吾游者，不以聪慧警捷为高，而以勤确谦抑为上。诸生试观侪辈之中，苟有&ldquo;虚而为盈，无而为有&rdquo;讳己之不能，忌人之有善，自矜自是，大言欺人者，使其人资禀虽甚超迈，侪辈之中，有弗疾恶之者乎？有弗鄙贱之者乎？彼固将以欺人，人果遂为所欺，有弗窃笑之者乎？苟有谦默自持，无能自处，笃志力行，勤学好问；称人之善，而咎己之失；从人之长，而明己之短；忠信乐易，表里一致者；使其人资禀虽甚鲁钝，侪辈之中，有弗称慕之者乎？彼固以无能自处，而不求上人，人果遂以彼为无能，有弗敬尚之者乎？诸生观此，亦可以知所从事于学矣！<br /><span style="text-decoration: underline;"><strong>改过</strong></span><br />　　夫过者，自大贤所不免；然不害其卒为大贤者，为其能改也。故不贵于无过，而贵于能改过。诸生自思，平日亦有缺于廉耻忠信之行者乎？亦有薄于孝友之道，陷于狡诈、偷刻之习者乎？诸生殆不至于此。不幸或有之，皆其不知而误蹈，素无师友之讲习规饬也。诸生试内省，万一有近于是者，固亦不可以不痛自悔咎；然亦不当以此自歉，遂馁于改过从善之心。但能一旦脱然洗涤旧染，虽昔为盗寇，今日不害为君子矣！若曰吾昔已如此，今虽改过而从善，人将不信我，且无赎于前过，反怀羞涩疑沮，而甘心于污浊终焉，则吾亦绝望尔矣！<br /><span style="text-decoration: underline;"><strong>责善</strong></span><br />　　&ldquo;责善，朋友之道；&rdquo;然须&ldquo;忠告而善道之&rdquo;，悉其忠爱，致其婉曲，使彼闻之而可从，绎之而可改，有所感而无所怒，乃为善耳！若先暴白其过恶，痛毁极诋，使无所容，彼将发其愧耻愤恨之心；虽欲降以相从，而势有所不能。是激之而使为恶矣！故凡讦人之短，攻发人之阴私，以沽直者，皆不可以言责善。虽然，我以是而施于人，不可也；人以是而加诸我，凡攻我之失者，皆我师也，安可以不乐受而心感之乎？某于道未有所得，其学卤莽耳。谬为诸生相从于此．每终夜以思，恶且未免，况于过乎？人谓&ldquo;事师无犯无隐&rdquo;，而遂谓师无可谏，非也。谏师之道，直不至于犯，而婉不至于隐耳。使吾而是也，因得以明其是；吾而非也，因得以去其非。盖教学相长也。诸生责善，当自吾始。</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48097987.html">三戒(唐.柳宗元)</a> 2009-10-10</div><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48238349.html&title=%E6%95%99%E6%9D%A1%E7%A4%BA%E9%BE%99%E5%9C%BA%E8%AF%B8%E7%94%9F%28%E6%98%8E.%E7%8E%8B%E5%AE%88%E4%BB%81%29">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48238349.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 12 Oct 2009 21:28:53 +0800</pubDate>
  </item>
  <item>
   <title>三戒(唐.柳宗元)</title>
   <description><![CDATA[<p><span style="text-decoration: underline;"><strong>临江之麋</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 临江之人，畋得麋麑，畜之。入门，群犬垂涎，扬尾皆来。其人怒，怛之。自是日抱就犬，习示之，使勿动，稍使与之戏。积久，犬皆如人意。麋麑稍大，忘己之麋也，以为犬良我友，抵触偃仆，益狎。犬畏主人，与之俯仰甚善。然时啖其舌。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三年，麋出门，见外犬在道甚众，走欲与为戏。外犬见而喜且怒，共杀食之，狼藉道上。麋至死不悟。<br /><br /><span style="text-decoration: underline;"><strong>黔之驴</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 黔无驴，有好事者船载以入。至则无可用，放之山下。虎见之，庞然大物也，以为神。蔽林间窥之，稍出近之，慭慭然，莫相知。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他日，驴一鸣，虎大骇，远遁，以为且噬己也，甚恐。然往来视之，觉无异能者，益习其声，又近出前后，终不敢搏。稍近益狎，荡倚冲冒，驴不胜怒，蹄之。虎因喜，计之曰：&ldquo;技止此耳！&rdquo;因跳踉大㘎，断其喉，尽其肉，乃去。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 噫，形之庞也类有德，声之宏也类有能，向不出其技，虎虽猛，疑畏卒不敢取；今若是焉，悲夫！<br /><br /><span style="text-decoration: underline;"><strong>永某氏之鼠</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 永有某氏者，畏日，拘忌异甚。以为己生岁直子，鼠，子神也，因爱鼠，不畜猫犬，禁僮勿击鼠。仓廪庖厨，悉以恣鼠不问。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由是鼠相告，皆来某氏，饱食而无祸。某氏室无完器，椸无完衣，饮食大率鼠之余也。昼累累与人兼行，夜则窃啮斗暴，其声万状，不可以寝，终不厌。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数岁，某氏徙居他州。后人来居，鼠为态如故。其人曰：&ldquo;是阴类恶物也，盗暴尤甚，且何以至是乎哉？&rdquo;假五六猫，阖门，撤瓦灌穴，购僮罗捕之。杀鼠如丘，弃之隐处，臭（上自下死）数月乃已。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 呜呼！彼以其饱食无祸为可恒也哉！</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/48238349.html">教条示龙场诸生(明.王守仁)</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48314179.html">熊</a> 2009-10-13</div><div><a href="http://navigating.blogbus.com/logs/48245718.html">猴</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244480.html">豹</a> 2009-10-12</div><div><a href="http://navigating.blogbus.com/logs/48244266.html">狮</a> 2009-10-12</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F48097987.html&title=%E4%B8%89%E6%88%92%28%E5%94%90.%E6%9F%B3%E5%AE%97%E5%85%83%29">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/48097987.html</link>
   <author>steven_xu</author>
   <pubDate>Sat, 10 Oct 2009 22:17:27 +0800</pubDate>
  </item>
  <item>
   <title>JNI初探</title>
   <description><![CDATA[JNI即是Java Native Interface，主要用来Java和其他语言之间的交互，多半是和平台依赖的调用、其他高级语言的库甚至是低级语言交互。相信大家平时在JDK中看到很多native的方法，但是自己写JNI应用的会确很少。这次因为在进行开发中，遇到需要Java调用一个现成的成熟的功能完善的C语言应用库，因此 JNI便成了Java和C库之间的桥的功能。既然是初探，那么下面我们就从HelloWorld开始吧：虽然Java是一个跨平台的语言，但是C语言是一个和平台密切相关的语言；所以针对Unix、Linux、Windows等不同的操作系统，C语言的预编译，动态库的创建等都有一些差别，也需要我们分别进行处理之。下面仅基于Sun的Unix平台Sun Solaris开发为例。<br />1.首先声明第一个Java native程序：HelloWorld.java。<br />public class HelloWorld {<br />&nbsp;&nbsp;&nbsp; static {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; init();<br />&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; private native int hello();<br /><br />&nbsp;&nbsp;&nbsp; public int sayHello() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hello();<br />&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; /**<br />&nbsp;&nbsp;&nbsp;&nbsp; * @param args<br />&nbsp;&nbsp;&nbsp;&nbsp; */<br />&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HelloWorld hw = new HelloWorld();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Say in Java:&quot; + hw.sayHello());<br />&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; private static void init() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Starting to load HelloWorld lib.&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.loadLibrary(&quot;HelloWorld&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable t) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Load unsuccessfully.&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.exit(-1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Load successfully.&quot;);<br />&nbsp;&nbsp;&nbsp; }<br />}<br />2.编译该Java文件。<br />javac HelloWorld.java<br />3.生成相应的C语言的HelloWorld.h头文件，javah HelloWorld，头文件内容如下：(其中，static Java方法和非static Java方法经过javah -jni生成的C头文件是有区别的，差异在于参数，static Java方法生成的相应的C方法的第二个参数是jclass类型，非static Java方法生成的相应的C方法的第二个参数是jobject类型。)<br />more HelloWorld.h<br />/* DO NOT EDIT THIS FILE - it is machine generated */<br />#include &lt;jni.h&gt;<br />/* Header for class HelloWorld */<br /><br />#ifndef _Included_HelloWorld<br />#define _Included_HelloWorld<br />#ifdef __cplusplus<br />extern &quot;C&quot; {<br />#endif<br />/*<br />&nbsp;* Class:&nbsp;&nbsp;&nbsp;&nbsp; HelloWorld<br />&nbsp;* Method:&nbsp;&nbsp;&nbsp; hello<br />&nbsp;* Signature: ()I<br />&nbsp;*/<br />JNIEXPORT jint JNICALL Java_HelloWorld_hello<br />&nbsp; (JNIEnv *, jobject);<br /><br />#ifdef __cplusplus<br />}<br />#endif<br />#endif<br />4.开始编写第一个c语言的JNI的本地(native)方法:<br />vi HelloWorld.c<br />#include &lt;jni.h&gt;<br />#include &quot;HelloWorld.h&quot;<br />#include &lt;stdio.h&gt;<br /><br />JNIEXPORT jint JNICALL Java_HelloWorld_hello<br />(JNIEnv* env, jobject target)<br />{<br />&nbsp; printf(&quot;Hello World in C program!!!\n&quot;);<br />&nbsp; return 2;<br />}<br />5.生成Unix下的动态库.so文件：<br />cc -G -I. -I$JAVA_HOME/include -I$JAVA_HOME/include/solaris HelloWorld.c -o libHelloWorld.so<br />在当前目录下看到新生成的libHelloWorld.so文件。也许你会注意到我们在Java程序中System.loadLibrary()加载的是库HelloWorld，那么这其实是一个命名的规范而已。以lib开头的.so文件即是Unix下的动态库，而JNI加载器通过HelloWorld这个名字实际上希望加载的动态库是libHelloWorld.so。<br />6.设置环境变量，查看<a href="http://linuxmafia.com/faq/Admin/ld-lib-path.html" target="_blank" title="LD_LIBRARY_PATH">LD_LIBRARY_PATH</a>并设置：<br />vi .cshrc<br />setenv LD_LIBRARY_PATH '.:/usr/local/lib:$LD_LIBRARY_PATH'<br />source .cshrc<br />这个环境变量设置的是Java的动态库加载器需要加载的C动态库所在的路径。因此，我们生成的libHelloWorld.so一定要在这个环境变量中设置，在这个例子中我就把当前目录.加到环境变量LD_LIBRARY_PATH了:)<br />7.执行HelloWorld文件，java HelloWorld，在标准输出上看到：<br />Starting to load HelloWorld lib.<br />Load successfully.<br />Hello World in C program!!!<br />Say in Java:2<br />一切Okey,如此的easy,一阵狂喜！接下来就是将这个例子运用于JNI的开发之中了。<br /><br />Resource:<br />《<a href="http://java.sun.com/docs/books/jni/" target="_blank" title="Java Native Interface:Progammer's Guide and Speciafication">Java Native Interface: Programmer's Guide and Specification</a>》<br />http://java.sun.com/docs/books/jni/html/start.html#27008<br />http://linuxmafia.com/faq/Admin/ld-lib-path.html<br />https://www6.software.ibm.com/developerworks/cn/education/java/j-jni/tutorial/j-jni-2-15.html<!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/18024423.html">Java NIO TCP编程</a> 2008-03-31</div><div><a href="http://navigating.blogbus.com/logs/7241795.html">&quot;What is the crazy&quot;</a> 2007-07-31</div><div><a href="http://navigating.blogbus.com/logs/5422027.html">Java 5.0的Instrumentation特性</a> 2007-05-19</div><div><a href="http://navigating.blogbus.com/logs/10841434.html">Java线程编程</a> 2007-11-17</div><div><a href="http://navigating.blogbus.com/logs/7453169.html">读《金字塔原理》</a> 2007-08-05</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F18030333.html&title=JNI%E5%88%9D%E6%8E%A2">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/18030333.html</link>
   <author>steven_xu</author>
   <pubDate>Tue, 01 Apr 2008 00:53:54 +0800</pubDate>
  </item>
  <item>
   <title>Java NIO TCP编程</title>
   <description><![CDATA[<p>在Java1.4以前，Java的网络编程是只有阻塞方式的，在Java1.4以及之后，Java提供了非阻塞的网络编程API.从Java的发展来看，由于Java的快速发展，JVM性能的提升，涉足到服务端应用程序开发也越来越多，要求高性能的网络应用越来越多，这是Java推出非阻塞网络编程的最主要原因吧。<br />对我而言，以前的大部分服务端应用主要是搭建在应用服务器之上，所以通讯这部分工作都是有应用服务器来实现和管理的。这次由于通讯和协议，我们必须自己实现一个能处理大量并发客户端的高性能并行处理的Java服务端程序。因此，选择非阻塞的处理方式也是必然的。我们首先来看看阻塞的处理方式：<br />在阻塞的网络编程方式中，针对于每一个单独的网络连接，都必须有一个线程对应的绑定该网络连接，进行网络字节流的处理。下面是一段代码：<br />&nbsp;&nbsp; &nbsp;public static void main(String[] args) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ServerSocket ssc = new ServerSocket(23456);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while (true) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println(&quot;Enter Accept:&quot;);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Socket s = ssc.accept();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;(new Thread(new Worker(s))).start();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// TODO<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;e.printStackTrace();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (IOException e) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;e.printStackTrace();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;public static class Worker implements Runnable {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private Socket s;<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private boolean running = true;;<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public Worker(Socket s) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;this.s = s;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;public void run() {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;InputStream is = s.getInputStream();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;OutputStream os = s.getOutputStream();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while (running) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] b = this.readByLength(is, 1024);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;this.process(b);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Throwable t) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// TODO<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;t.printStackTrace();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private byte[] readByLength(InputStream is, int contLen) throws IOException {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] b = new byte[contLen];<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int off = 0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int length = 0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while ((length = is.read(b, off, contLen - off)) &gt;= 0) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;off = +length;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (off &gt;= contLen) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;break;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return b;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;private void process(byte[] b) {<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br />在这段代码中，我们看到有两个阻塞的方法，是ServerSocket的accept()方法；和InputStream的read()方式。因此我们需要两类型的线程分别进行处理。而且每一个阻塞方法所绑定的线程的生命周期和网络连接的生命周期是一致的。基于以上的原因，NIO应运而生，一方面，为每一个网络连接建立一个线程对应，同时每一个线程有大量的线程处于读写以外的空闲状态，因此希望降低线程的数量，降低每个空闲状态，提高单个线程的运行执行效率，实际上是在更加充分运用CPU的计算、运行能力(因为，如果有大量的链路存在，就存在大量的线程，而大量的线程都阻塞在read()或者write()方法，同时CPU又需要来回频繁的在这些线程中间调度和切换,必然带来大量的系统调用和资源竞争.)；另外一方面希望提高网络IO和硬盘IO操作的性能。在NIO主要出现了三个新特性：<br />1.数据缓冲处理(ByteBuffer):由于操作系统和应用程序数据通信的原始类型是byte,也是IO数据操作的基本单元，在NIO中，每一个基本的原生类型(boolean除外)都有Buffer的实现：CharBuffer、IntBuffer、DoubleBuffer、ShortBuffer、LongBuffer、FloatBuffer和ByteBuffer，数据缓冲使得在IO操作中能够连续的处理数据流。当前有两种ByteBuffer，一种是Direct ByteBuffer，另外一种是NonDirect ByteBuffer；ByteBuffer是普通的Java对象，遵循Java堆中对象存在的规则；而Direct ByteBuffer是native代码，它内存的分配不在Java的堆栈中，不受Java内存回收的影响，每一个Direct ByteBuffer都是直接分配的一块连续的内存空间，也是NIO提高性能的重要办法之一。另外数据缓冲有一个很重要的特点是，基于一个数据缓冲可以建立一个或者多个逻辑的视图缓冲(View Buffer).比方说，通过View Buffer,可以将一个Byte类型的Buffer换作Int类型的缓冲；或者一个大的缓冲转作很多小的Buffer。之所以称为View Buffer是因为这个转换仅仅是逻辑上，在物理上并没有创建新的Buffer。这为我们操作Buffer带来诸多方便。<br />2.异步通道(Channel)：Channel是一个与操作系统紧密结合的本地代码较多的对象。通过Channel来实现网络编程的非阻塞操作，同时也是其与ByteBuffer、Socket有效结合充分利用非阻塞、ByteBuffer的特性的。在后面我们会看到具体的SocketChannel的用法。<br />3.有条件的选择(Readiness Selection):大多数操作系统都有支持有条件选择准备就绪IO通道的API，即能够保证一个线程同时有效管理多个IO通道。在NIO中，由Selector(维护注册进来的Channel和这些Channel的状态)、SelectableChannel(能被Selector管理的Channel)和SelectionKey(SelectionKey标识Selector和SelectableChannel之间的映射关系，一旦一个Channel注册到Selector中，就会返回一个SelectionKey对象。SelectionKey保存了两类状态：对应的Channel注册了哪些操作；对应的Channel的那些操作已经准备好了，可以进行相应的数据操作了)结合来实现这个功能的。<br />NIO非阻塞的典型编程模型如下：<br />&nbsp;&nbsp; &nbsp;private Selector selector = null;<br /><br />&nbsp;&nbsp; &nbsp;private static final int BUF_LENGTH = 1024;<br /><br />&nbsp;&nbsp; &nbsp;public void start() throws IOException {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (selector != null) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;selector = Selector.open();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ServerSocketChannel ssc = ServerSocketChannel.open();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ServerSocket serverSocket = ssc.socket();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;serverSocket.bind(new InetSocketAddress(80));<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ssc.configureBlocking(false);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ssc.register(selector, SelectionKey.OP_ACCEPT);<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while (true) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int nKeys = UnblockServer.this.selector.select();<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (nKeys &gt; 0) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Iterator it = selector.selectedKeys().iterator();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while (it.hasNext()) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;SelectionKey key = (SelectionKey) it.next();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (key.isAcceptable()) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ServerSocketChannel server = (ServerSocketChannel) key.channel();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;SocketChannel channel = server.accept();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (channel == null) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;continue;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;channel.configureBlocking(false);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;channel.register(selector, SelectionKey.OP_READ);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (key.isReadable()) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;readDataFromSocket(key);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;it.remove();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (IOException ioe) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ioe.printStackTrace();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;/**<br />&nbsp;&nbsp; &nbsp; * @param key<br />&nbsp;&nbsp; &nbsp; * @throws IOException<br />&nbsp;&nbsp; &nbsp; */<br />&nbsp;&nbsp; &nbsp;private void readDataFromSocket(SelectionKey key) throws IOException {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ByteBuffer buf = ByteBuffer.allocate(BUF_LENGTH);<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;SocketChannel sc = (SocketChannel) key.channel();<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int readBytes = 0;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;int ret;<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;while ((ret = sc.read(buf.buf())) &gt; 0) {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;readBytes += ret;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;buf.flip();<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// process buffer<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// buf.clear();<br />&nbsp;&nbsp; &nbsp;}<br /><br />从这段程序，我们基本可以了解到NIO网络编程的一些特点，创建一个SocketServer的方式已经发生了变化，需要指定非阻塞模式，需要创建一个Channel然后注册到Selector中去，同样，建立一个网络连接过程也是一样的模式,然后就是有条件的选择(Readiness Selection).这样，我们的每一个线程只需要处理一类型的网络选择。在代码上，我们发现处理的方式和阻塞完全不一样了，我们需要完全重新考虑如何编写网络通信的模块了：<br />1.持久连接的超时问题(Timeout)，因为API没有直接的支持timeout的参数设置功能，因此需要我们自己实现一个这样功能。<br />2.如何使用Selector，由于每一个Selector的处理能力是有限的，因此在大量链接和消息处理过程中，需要考虑如何使用多个Selector.<br />3.在非阻塞情况下，read和write都不在是阻塞的，因此需要考虑如何完整的读取到确定的消息；如何在确保在网络环境不是很好的情况下，一定将数据写进IO中。<br />4.如何应用ByteBuffer，本身大量创建ByteBuffer就是很耗资源的；如何有效的使用ByteBuffer？同时ByteBuffer的操作需要仔细考虑，因为有position()、mark()、limit()、capacity等方法。<br />5.由于每一个线程在处理网络连接的时候，面对的都是一系列的网络连接，需要考虑如何更好的使用、调度多线程。在对消息的处理上，也需要保证一定的顺序，比方说，登录消息最先到达，只有登录消息处理之后，才有可能去处理同一个链路上的其他类型的消息。<br />6.在网络编程中可能出现的内存泄漏问题。<br />在NIO的接入处理框架上，大约有两种并发线程：<br />1.Selector线程，每一个Selector单独占用一个线程，由于每一个Selector的处理能力是有限的，因此需要多个Selector并行工作。<br />2.对于每一条处于Ready状态的链路，需要线程对于相应的消息进行处理；对于这一类型的消息，需要并发线程共同工作进行处理。在这个过程中，不断可能需要消息的完整性；还要涉及到，每个链路上的消息可能有时序，因此在处理上，也可能要求相应的时序性。<br />当前社区的开源NIO框架实现有MINA、Grizzly、NIO framework、QuickServer、xSocket等，其中MINA和Grizzly最为活跃，而且代码的质量也很高。他们俩在实现的方法上也完全大不一样。(大部分Java的开源服务器都已经用NIO重写了网络部分。 )<br />不管是我们自己实现NIO的网络编程框架，还是基于MINA、Grizzly等这样的开源框架进行开发，都需要理解确定的了解NIO带来的益处和NIO编程需要解决的众多类型的问题。充足、有效的单元测试，是我们写好NIO代码的好助手:)<br /><br />Resource:<a href="http://www.cis.temple.edu/~ingargio/cis307/readings/unix4.html#states" target="_blank" title="http://www.cis.temple.edu/~ingargio/cis307/readings/unix4.html#states"><br />http://www.cis.temple.edu/~ingargio/cis307/readings/unix4.html#states</a><br />《<a href="http://www.douban.com/subject/1433583/" target="_blank">Java NIO</a>》<br />《<a href="http://www.douban.com/subject/2306878/" target="_blank">GlassFish--开源的Java EE应用服务器</a>》</p><!--sp--><div class="relpost"><br/><h3>随机文章：</h3><div><a href="http://navigating.blogbus.com/logs/18030333.html">JNI初探</a> 2008-04-01</div><div><a href="http://navigating.blogbus.com/logs/7241795.html">&quot;What is the crazy&quot;</a> 2007-07-31</div><div><a href="http://navigating.blogbus.com/logs/5422027.html">Java 5.0的Instrumentation特性</a> 2007-05-19</div><div><a href="http://navigating.blogbus.com/logs/7453169.html">读《金字塔原理》</a> 2007-08-05</div><div><a href="http://navigating.blogbus.com/logs/6595475.html">Google Technology</a> 2007-07-11</div></div><div class="addfav"><br />收藏到：<span class= "delicious"><a href="http://delicious.com/save?url=http%3A%2F%2Fnavigating.blogbus.com%2Flogs%2F18024423.html&title=Java+NIO+TCP%E7%BC%96%E7%A8%8B">Del.icio.us</a></span></div><br /><br /><div class="sysmsg"><b><a href="http://www.blogbus.com" target="_blank">博客大巴，你的个人传媒早班车</a></b></div><br /><br />]]></description>
   <link>http://navigating.blogbus.com/logs/18024423.html</link>
   <author>steven_xu</author>
   <pubDate>Mon, 31 Mar 2008 22:56:43 +0800</pubDate>
  </item>
 </channel>
</rss>
