<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[Andy的小窝]]></title>
	  <link>http://leiqinnfl.blog.163.com</link>
	  <description><![CDATA[计算机   易经传  开心的不开心的，点点滴滴的我]]></description>
	  <language>zh-CN</language>
	  <pubDate>Fri, 9 Oct 2009 10:45:41 +0800</pubDate>
	  <lastBuildDate>Fri, 9 Oct 2009 10:45:41 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[leiqinnfl]]></managingEditor>
	  <webMaster><![CDATA[Andy]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[Andy的小窝]]></title>
	  	<url>http://ava.bimg.126.net/photo/BqidgpNWnzMTEiqQGppOLg==/48132221021910557.jpg</url>
	  	<link>http://leiqinnfl.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[想娶宅女、嫁宅男的有福了]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200999103614299</link>
    <description><![CDATA[<div><P><FONT size=4>太阳月亮落在：</FONT></P>
<P><FONT size=4>第五名：狮子，很风光,很爱面子的一个群体，当狮子遭遇困境失意的时候，有可能会自闭，慢慢的成为宅男。</FONT></P>
<P><FONT size=4>第四名：天平，太照顾别人的感受，内心很累。</FONT></P>
<P><FONT size=4>第三名：金牛，上榜理由，生活就是享受，可不是受罪。也很会享受孤独，怕吵怕烦呢。</FONT></P>
<P><FONT size=4>第二名：巨蟹，上榜理由，对外很拘谨的生活态度，拘谨不是别的哦，是对自己要求严格，其实很好客很热情呢。</FONT></P>
<P><FONT size=4>第一名：天蝎，太懒了。</FONT></P>
<P><FONT color=#ff0000>不过万事没有绝对，千万别拿这个为标准，要游恢止ぞ咭恢中〖屏谙质瞪钪凶邢腹鄄煜履愕牧硪话胧悄母鲎遣皇怯猩鲜鎏氐悖灸阕约旱母芯跞ト隙ㄋ遣皇蔷鸵已暗恼恕?/FONT&gt;</FONT></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200999103614299</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200999103614299</guid>
    <pubDate>Fri, 9 Oct 2009 10:36:14 +0800</pubDate>
    <dcterms:modified>2009-10-09T10:44:01+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[“断掌”的资料]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200861525623367</link>
    <description><![CDATA[<div><P>　　解说“断掌” <BR>　　 <BR>　　　　对于光是有头脑线和生命线，而没有感情线的人，新手相学家替他下了一个这样的评定：“热情又冷淡，有理性而又只于与人相处，独立能力惊人而又容易因倔强过度而误了大事。”这样的掌线，在中国手相学中叫做“断掌”。</P>
<P style="TEXT-INDENT: 2em"><A href="http://www.pclady.com.cn/astrology/divination/hand/0803/264854_1.html"><IMG src="http://img1.pclady.com.cn/pclady/0803/27/264854_13_15304_5e63364950f2079.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">英国十九世著名手相学家基罗说得好，他说：“这种人有一种可怕的强烈性格，他们的集中能力很强，一旦精神集中于某一个目标，就会用尽全力去把这个目标做好，一直到完全竣工为止。可异他不善于利用群众的力量，即使把这目标完成了，也弄得筋疲力尽，无法再从事新的工作了。”这种人在性格上有如下各个特点：性情忠耿，是非观念极强。一发现别人在进行欺诈，便忍不住要大发脾气，非把对方的欺诈揭穿决不肯罢休的。工作能力很强，不管怎样困难的事情，都由自己独个儿去处理，不喜欢别人来插手。万一因为自己个人的能力有限，近得把一些不大重要的工作交给别人去做，也老是牵肠挂肚脏，非亲自去干它一下，是不得安心的。难于跟别人相处，而且仇恨心极重，睚眦必报的。如果爱上一个人的时候，他会尽一切办法使自己的爱人快乐，使自己的爱人感到无比的幸福，甚至在一生一世中也是如此。但要是不幸失去他的欢心，他便恨得相当强烈，非使对方感到极度难堪不可。刚愎自用。暴躁。也容易感到灰心。由于这种人的性情特别，所以跟这种人谈恋爱的时候一定要相当小心，否则就会吃亏的。这种人性格多疑，对人不信任。不过断掌的可以做大事业。 <BR>　　 <BR>　　有一种跟“波浪形”相反的头脑线，就是我要介绍的“断掌”。 <BR>　　 <BR>　　这条头脑线由大拇指那边的掌边开始，一直向小指那边的掌边伸过去，宛如一条小疤把手掌切分成上下两段的切痕（图二）。 <BR>　　 <BR>　　它既是头脑线，又是感情线，因为它把这两条线混而为一，所以它就真有“断掌”的人，大都有如下几种性格特徵： <BR>　　 <BR>　　①个性坚结得近乎固执的人。 <BR>　　 <BR>　　②责任心很强，凡是开了头的事，不管中间碰上怎样大的困难，也不会将那件事丢开，总是咬紧牙关把那件事情做完为止的。 <BR>　　 <BR>　　③不善于跟别人相处，即使是家人，也相处得并不十分愉快。 <BR>　　 <BR>　　④喜欢独自经营，事无大小也都亲力亲为，不喜欢别人插手，也不容易听信别人的意见。 <BR>　　 <BR>　　⑤对爱情看得很重，凡是爱情、异性，会竭尽自己所有力量去博取对方的欢心。 <BR>　　 <BR>　　假若不幸失了恋，他可能会伤心得终生不结婚，这种爱情至上的人，乃属于悲剧性的人物呢！ <BR>　　 <BR>　　　　&nbsp;<BR>　　　　另类说法：智慧线和感情线相交，从手掌的一端至另一端，成一直线横越的相，成为真断掌。断掌特点：（一）利己心重，好贪小利，喜弄权势；（二）主观极强，不肯听取别人的意见；（三）适应能力和应变能力较差；（四）爱恶分明；（五）做事有责任感，不达成功不停止。 <BR>　　　　有此手相而手比较小的男性，个性强，对善恶均有强烈感，是个不见棺材不落泪的人，如误入歧途将会成为黑社会的主脑人物，如走上正道会是个大事业家；断掌女性则很难要求她持有女性化的魅力，为人心直口快，很重理智，不善调情。 </P>
<P><BR>　　 感情线和事业线连结，这类是标准的断掌，个性比较强硬，坚持自己的意见。所谓「男断掌打照人、女断掌克死夫」是不对的，断掌的人只是个性比较强硬，而且这种人的优点是会全力以赴。两只手都断掌的人比一只手断掌的人好，取负负得正的道理。<BR>　　 断掌的构成正是感情线和智慧线合二为一，智慧超群，感情线自然代表对感情上的思维，反映此人对感情的较重，热诚与否；智慧线代表了智能、理智如何，反映此人对人对事的态度如何。现在二纹为一，表示感情与理智不会分割，于是断掌的人性格上显得坚强、自信心充足、处事极为理智、不易受感情或亲情所左右、自然独立性较强。　</P>
<P><BR>&nbsp;</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200861525623367</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200861525623367</guid>
    <pubDate>Tue, 15 Jul 2008 14:56:23 +0800</pubDate>
    <dcterms:modified>2008-09-18T15:28:56+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[看后十分钟令人刮目相看的良言]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200852982916722</link>
    <description><![CDATA[<div><P><FONT size=4><STRONG>昂起头来真美.</STRONG></FONT></P>
<P><FONT size=4><STRONG>&nbsp;&nbsp;&nbsp; </STRONG>自信原本就是一种美丽，而很多人却因为太在意外表而失去很多快乐。</FONT></P>
<P><FONT size=4><FONT color=#ff0000>无论是贫穷还是富有，无论是貌若天仙，还是相貌平平</FONT>，只要你<FONT color=#ff0000>昂起头来，快乐会使你变得可爱</FONT>——人人都喜欢的那种可爱。 </FONT></P>
<P><FONT size=4>这样的<FONT color=#ff0000>自信能让人产生对你的依赖</FONT>.</FONT></P>
<P><FONT size=4></FONT>&nbsp;</P>
<P><FONT size=4><STRONG>飞翔的蜘蛛</STRONG></FONT></P>
<P>信念是一种无坚不催的力量，当你坚信自己能成功时，你必能成功。 <BR><BR>　　一天，我发现，一只黑蜘蛛在后院的两檐之间结了一张很大的网。难道蜘蛛会飞？要不，从这个檐头到那个檐头，中间有一丈余宽，第一根线是怎么拉过去的？后来，我发现蜘蛛走了许多弯路--从一个檐头起，打结，顺墙而下，一步一步向前爬，小心翼翼，翘起尾部，不让丝沾到地面的沙石或别的物体上，走过空地，再爬上对面的檐头，高度差不多了，再把丝收紧，以后也是如此。 <BR><BR>　　温馨提示：蜘蛛不会飞翔，但它能够把网凌结在半空中。它是勤奋、敏感、沉默而坚韧的昆虫，它的网制得精巧而规矩，八卦形地张开，仿佛得到神助。这样的成绩，使人不由想起那些沉默寡言的人和一些深藏不露的智者。于是，我记住了蜘蛛不会飞翔，但它照样把网结在空中。<FONT color=#ff0000>奇迹是执着者造成的。</FONT></P>
<P><FONT color=#ff0000></FONT>&nbsp;</P>
<P><FONT color=#ff0000></FONT>&nbsp;</P>
<P><STRONG><FONT size=4>阴影是条纸龙</FONT></STRONG></P>
<P>许多人走不出人生各个不同阶段或大或小的阴影,并非因为他们天生的个人条件比别人要差多远，而是因为他们没有思想要将阴影纸龙咬破，也没有耐心慢慢地找准一个方向，一步步地向前，直到眼前出现新的洞天。</P>
<P>&nbsp;</P>
<P><STRONG><FONT size=4>成功并不像你想像的那么难</FONT></STRONG></P>
<P>并不是因为事情难我们不敢做，而是因为我们不敢做事情才难的。&nbsp; <BR>1965年，一位韩国学生到剑桥大学主修心理学。在喝下午茶的时候，他常到学校的咖啡厅或茶座听一些成功人士聊天。这些成功人士包括诺贝尔奖获得者，某一些领域的学术权威和一些创造了经济神话的人，这些人幽默风趣，举重若轻，把自己的成功都看得非常自然和顺理成章。时间长了，他发现，在国内时，他被一些成功人士欺骗了。那些人为了让正在创业的人知难而退，普遍把自己的创业艰辛夸大了，也就是说，他们在用自己的成功经历吓唬那些还没有取得成功的人。&nbsp; <BR>成功与“劳其筋骨，饿其体肤”、“三更灯火五更鸡”、“头悬梁，锥刺股”没有必然的联系。只要你对某一事业感兴趣，长久地坚持下去就会成功，因为上帝赋予你的时间和智慧够你圆满做完一件事情。后来，这位青年也获得了成功，他成了韩国泛业汽车公司的总裁。</P>
<P><FONT size=4><!--/HTMLBUILERPART0--></FONT></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200852982916722</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200852982916722</guid>
    <pubDate>Sun, 29 Jun 2008 20:29:16 +0800</pubDate>
    <dcterms:modified>2008-06-29T20:29:16+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[断箭]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200852971849947</link>
    <description><![CDATA[<div><P>　　不相信自己的意志，永远也做不成将军。 <BR><BR>　　春秋战国时代，一位父亲和他的儿子出征打战。父亲已做了将军，儿子还只是马前卒。又一阵号角吹响，战鼓雷鸣了，父亲庄严地托起一个箭囊，其中插着一只箭。父亲郑重对儿子说：“这是家袭宝箭，配带身边，力量无穷，但千万不可抽出来。” <BR><BR>　　那是一个极其精美的箭囊，厚牛皮打制，镶着幽幽泛光的铜边儿，再看露出的箭尾。一眼便能认定用上等的孔雀羽毛制作。儿子喜上眉梢，贪婪地推想箭杆、箭头的模样，耳旁仿佛嗖嗖地箭声掠过，敌方的主帅应声折马而毙. <BR><BR>　　果然，配带宝箭的儿子英勇非凡，所向披靡。当鸣金收兵的号角吹响时，儿子再也禁不住得胜的豪气，完全背弃了父亲的叮嘱，强烈的欲望驱赶着他呼一声就拔出宝箭，试图看个究竟。骤然间他惊呆了。 <BR><BR>　　一只断箭，箭囊里装着一只折断的箭。 <BR><BR>　　我一直刳着只断箭打仗呢！儿子吓出了一身冷汗，仿佛顷刻间失去支柱的房子，轰然意志坍塌了。 <BR><BR>　　结果不言自明，儿子惨死于乱军之中。 <BR><BR>　　拂开蒙蒙的硝烟，父亲拣起那柄断箭，沉重地啐一口道：“不相信自己的意志，永远也做不成将军。” <BR><BR>　　把胜败寄托在一只宝箭上，多么愚蠢，而当一个人把生命的核心与把柄交给别人，又多么危险！比如把希望寄托在儿女身上；把幸福寄托在丈夫身上；把生活保障寄托在单位身上…… <BR><BR>　　温馨提示：自己才是一只箭，若要它坚韧，若要它锋利，若要它百步穿杨，百发百中，磨砺它，拯救它的都只能是自己。 </P>
<P>&nbsp;</P>
<P>吸有自己能抢救自己，你所要做的就是韧。</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200852971849947</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200852971849947</guid>
    <pubDate>Sun, 29 Jun 2008 19:18:49 +0800</pubDate>
    <dcterms:modified>2008-06-29T19:18:49+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ 男人很生气 后果很严重  ]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020085541554485</link>
    <description><![CDATA[<div><DIV>&nbsp;&nbsp;&nbsp; 当八字圣旨下达：他和她已通过了此时岁运检测，合法地从事婚姻之实，小俩口欣欣然地坐上了缘份的巴士。然，在以后的日子里，流年会挟同大运不经意的冲克合绊着缘份人，影响着双方的思想、情绪、以致于行为，导演着婚姻内的一幕幕大大小小的珍珠巷事件，聪明的女人要学会摸清岁运的脾性，以柔避刚，保护你珍爱的婚姻，否则流年流月会在男人的耳边时时馋言，说你的放肆之处，到一定时候，男人会很生气，后果也会很严重的。<BR>&nbsp;&nbsp;&nbsp; <STRONG>一、每个月的工资必须交给我<BR></STRONG>&nbsp;&nbsp;&nbsp; 虽然现代的女性独立许多了，但相对于大多数家庭来说，还是男的赚钱女的顾家这种传统模式。这种传统模式的潜规则在于男的一般都会主动把钱交到妻子手里。这本没什么，双方自有默契在里头。但怕的就是女方太猴急或自以为精明，经常在身边嘀咕来嘀咕去就为把紧那个财权，这就会让男人受不鸟了。男人会想，听你这口气，我到底是娶个什么大人物回家呢。<BR>&nbsp;&nbsp;&nbsp; <STRONG>二、不要抽烟，喝酒与打牌<BR></STRONG>&nbsp;&nbsp;&nbsp; 女人都喜欢管着自己的男人，其中就包括那些家庭开支消费过度的形为。比如男人最爱好的抽烟，喝酒与打牌赌博。因为这事儿，我就亲眼见到过许多大大小小的珍珠港战役。我们说，赌博是不能干的，任你家底再大，终有输光的时候，划不来。但打打小牌娱乐娱乐，喝个小烟与小酒的，女人就不要管了。没有消费了，何来挣钱的动力？吃不穷，穿不穷，乐不穷。如果你老是在他们面前说三道四，那男人就会发脾气了。怎么啦，你日常一买洗发水一大堆那不是钱！<BR>&nbsp;&nbsp;&nbsp; <STRONG>三、我不会做饭<BR></STRONG>&nbsp;&nbsp;&nbsp; 男人除了在事业上挺勤奋，但在家庭小事上那绝对都是够爷们派头的了。他们娶个老婆回家，如果连饭都不会做，那家里这头怎放心交给她管理，那实在是挺窝火的一件事情。男人自古就认为，女人与男人最大的不同除了生理不一样外，再就是女人会做家务会下厨。这与处女情结一样深藏在中国男人的劣根深处。女人不要不相信，任他在结婚前忽悠你得晕晕转，但在结婚后的生活中，他肯定会由此蹊落你！<BR>&nbsp;&nbsp;&nbsp; <STRONG>四、你妈怎么这样啊<BR></STRONG>&nbsp;&nbsp;&nbsp; 这句话涉及到微妙的婆媳关系。婆媳大战自古一来就是中国历史的一大亮点。想想中国的男人真是辛苦，一边是最亲的妈，一边是最近的枕边人，男人夹在中间就像皮球一样被踢过来踢过去，怎么能不难受呢？所以这句话绝对是让他们十分伤心的一句话，尊重了他妈，女人也就稳住了自已的一半江山，否则，埋下祸根，自寻死路。<BR>&nbsp;&nbsp;&nbsp; <STRONG>五、你带小孩，我上朋友家玩去了<BR></STRONG>&nbsp;&nbsp;&nbsp; 男人是最怕家庭内部事务的麻烦的。带小孩就是绝对挺麻烦的一件事情。不管怎么说，养育小孩绝对是女人辛苦一点。这是女性的天性使然。因为女人够细腻与温柔，男人粗枝大叶，还没怎么弄就把小孩搞哭了。如果你没特殊事情，而把小孩扔给男人，那他不发火才怪。<BR>&nbsp;&nbsp;&nbsp; <STRONG>六、要死要活要离婚，哭着吵着告诉娘家</STRONG><BR>&nbsp;&nbsp;&nbsp; 女性朋友如果还珍视你的婚姻，如果还在用这样一种行为想改善你的婚姻中的困境，我奉劝一下，这不仅是一种不理智的行为，用此法往往会弄巧成拙，为你的婚姻埋下炸弹。既是相濡以沫的夫妻，遇事首先要两人内部寻求解决方式，真的到了无法沟通无法解决时，可以请出双方家长协商解决，我们是在解决问题而不是威逼或激怒对方甚至这个家庭中的更多相关者。要想婚姻长久，首先要有自我解决婚姻矛盾的理智方法，用过于偏激的方式，不仅效果短暂，还会让对方渐渐看不起你。一个通情达理自立成熟的女性，在男人心中也是一个顶梁柱，谁愿意将自家顶梁柱给拆卸掉呢？<BR>&nbsp;&nbsp;&nbsp; <STRONG>七、就完事了吗</STRONG><BR>&nbsp;&nbsp;&nbsp; 这是涉及到男女之间性福质量的一个隐私话题。男人天生在这事儿上就不及女人，通常都是顾头不顾尾，力不从心。所以女人因为没有得到满足而不小心说出了这句话，那是挺伤男人面子的。男人最怕女人瞧不起自己那方面不行的了。日本有个作家曾写书《男人的下半身是如此软弱》，没错。所以女人，留点面子给男人吧。<BR>&nbsp;&nbsp;&nbsp; <STRONG>八、你怎么这么没本事啊</STRONG><BR>&nbsp;&nbsp;&nbsp; 男人最大的成功就是能让自己爱的女人跟着自己享清福，女人最大的愿望就是希望跟着自己爱的男人不用受累。所以，一旦男人的能力做不到自己预期的目标与希望，那么内心就会自责。所以女人，在此时你千万不要打击他，而应该是鼓励。否则一场大战难免爆发。<BR>&nbsp;&nbsp;&nbsp; <STRONG>九、（当着朋友面）瞧你，说话这么没水平<BR></STRONG>&nbsp;&nbsp;&nbsp; 男人最好面子，特别是当着自己哥们的时候。如果你在这时捅到他的软处，那绝对是一件讨骂的事情。在哥们面前，你要不停地吹他捧他，让他上天，这样他才会觉得自己以前在哥们面前吹的牛得到尊重，虚荣心才会得到满足。虚荣心满足了，他才会对你越来越好。呵呵，生活就是这样，美名其曰为善意的谎言吧。<BR>&nbsp;&nbsp;&nbsp; <STRONG>十、你昨晚上哪去了<BR></STRONG>&nbsp;&nbsp;&nbsp; 这是一句对两人的爱情存在怀疑的不相信。这是一句对曾经的海誓山盟发出背叛的导火索。男人一夜不回家，女人就怕神怕鬼，搜衣服摸手机，那是很让男人厌烦的一件事情。男人想，怎么，你身份是看守所长吗？我还像笼子里的小鸟样没有自由了啊。所以，不到关键时候，女人千万不要有事没事拿这句话来捣乱自己的生活。<BR>&nbsp;&nbsp; 当婚姻的双方没意外灾害时，半边天的女人，你要问我如何化解婚灾呢？上面十点你能做到或者你正积极的修正自己被点中的不良习惯，说明你有了自解一部分婚灾的能力。</DIV></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020085541554485</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020085541554485</guid>
    <pubDate>Thu, 5 Jun 2008 16:15:54 +0800</pubDate>
    <dcterms:modified>2008-06-05T16:15:54+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[四柱三元]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020080226222221</link>
    <description><![CDATA[<div>天元 
<P>天元指四柱中的天干. 天元的推算, 主要通过日干与其余三干的五行生克合化以及十神的衡量, 对透出的所主之事作出强弱损益, 命之贵贱的判断.<BR>天干化合:<BR>甲己合化土, 乙庚合化金, 丙辛合化水, 丁壬合化木, 戊癸合化火.<BR>天干化合所主:<BR>甲己合化土, 为中正之合. 安分守己, 重信讲义. 若命局无他土, 又带七杀, 则缺乏情义, 诡计多端, 性刚.甲日干合己, 遇乙木, 妻财暗损. 丁火, 衣禄成空. 辛金, 贵显高门. 戊土,家殷大富. 癸水, 平生发福. 庚金, 家徒四壁. 丙火, 禄享千钟.己日干合甲, 遇丁火, 他人凌辱. 乙木, 自己遭遇. 辛金, 家殷大富. 庚金,孤寒白屋. 癸水, 官职迁荣.　<BR>乙庚合化金, 主仁义之合. 刚柔兼备, 重仁守义. 若有偏官或坐死绝等弱运者, 反固执己见, 轻仁寡义.乙日干合庚, 遇丙火, 蹇难. 壬水, 荣华. 丁火, 似春花之笑日. 己土, 满堂金玉. 辛金, 若秋草逢霜. 甲木, 麻麦盈仓.庚日干合乙, 遇辛金, 暗损. 丙火, 相煎. 丁火, 如蛟龙得云雨. 癸水, 田园漂荡. 壬水, 财禄增减. 戊土, 不成巨富, 逢壬水助方永保长年.<BR>丙辛合化水, 主威严之合. 仪表威严, 智力优秀. 若带七杀或座死绝者, 反性酷无情, 乖僻寡和. 女命逢支冲, 合化之水, 主性感纵欲.丙日干合辛, 遇戊土, 成名. 乙木, 官爵迁荣. 癸水己土, 家门显赫. 壬水辰土, 祸败.辛日干合丙, 遇戊土庚金, 功名.<BR>丁壬合化木, 主仁寿之合. 心地仁慈, 长命多寿. 妇命若命局水过旺泄木,则为淫欲之合. 若座死绝者, 酒色破家.丁日干合壬, 遇丙火, 历年安逸. 辛金, 一进优游, 富贵双全. 戊土, 活计消遣. 癸水, 生涯寂寞. 乙木重重, 财禄无成. 庚金叠叠, 功名莫望. 喜甲临辰,禄封双美. 喜己共酉, 亦禄封双美.壬日干合丁, 遇甲木, 多遭仆马. 辛金, 广置田庄. 丙火, 英雄豪杰. 癸水,辛苦经商. 己土, 佩印乘轩. 戊土, 漂蓬落魄. 庚金, 皓首无成. 乙木, 青年不遇.<BR>戊癸合化火, 主无情之合. 相貌俊秀, 薄情乏义. 男多抱玩世之心, 女则多嫁俊夫.戊日干合癸, 遇乙木, 终能显达. 壬水, 独自丰隆. 丙火, 难寻福禄. 庚金,易见亨通. 己土, 妻子有损. 辛金, 谋略为拙.癸日干合戊, 遇丙辛, 一世多成败. 甲己, 历年劳心. 丁火, 仓库丰肥. 庚金, 田财殷实. 乙木, 官爵陆荣. 壬水, 财禄两全. 辛金, 财缘得失. 己土, 仕途蹭蹬.<BR>天干化合要则:<BR>干支化合, 有合化与只合不化之别.天干合化与否, 须以日干为主, 紧临月干或时干为合, 且月支须为合化之同一五行方论合化. 如甲与己合土, 须日干为甲, 月干或时干为己; 日干为己,月干或时干为甲, 而且月支为辰戌丑未土月生人, 与合化之土五行相同方可论化.还有两种情况也可合化: 一是年月天干相合, 年支为合化之五行有根得化.如年庚月乙合金, 年支为申金. 二是日干与月干或日干与时干合, 月支不化, 所化五行在其余三支为三合局或三会局也可论化. 如庚日与乙月合金, 月支不是申或酉, 但年日时支合成了申子辰或申酉戌, 其化成功.地支合化与否, 要两支紧临相贴, 且天干须透出地支合化之五行方可论化.如卯与戌合火, 天干透出丙火或丁火, 与地支合化之火同为一五行而论化.相临之合不化, 以合而不化论.再有, 凡天合, 地合, 合化之后, 以合化后的五行论, 原五行失却其作用;合而不化, 为独立五行, 均不再与其他干支论生克刑冲.<BR>天干生克要则:<BR>天干相生: 临干之生, 其生力大于隔干;同性之生, 其生力大于异性;生者减气, 受生者得益.天干相克: 吉神相克为凶, 凶神相克为吉;两干相克, 临干力大, 隔干其次, 远干无力;两干同性相克之力大于异性相克;两干相克均受损, 受克损伤大;隔干之克, 中隔之干化克则不以克论. 如丙火隔干克庚金, 中隔土, 是土泄火气而生金气, 连续相生, 故以生论不以克论.克中有合, 合去克则不作克论. 如丙火克庚金, 但柱中有辛, 丙辛合水, 水克火, 丙火克不了庚金,故不以克论.日干被他干克, 又有克他干的制, 不作克论. 如庚日干被丙月干克, 丙月干则被壬年干制服, 故不以丙庚而作壬丙可论.</P>
<P><BR>地元</P>
<P>地元指四柱中的地支. 地支的刑冲害合会等对日元产生着重大影响, 地元中的月令(月支)对日元旺衰得地与否起着决定性作用.<BR>地支三会<BR>寅卯辰三会东方木, 巳午未三会南方火,<BR>申酉戌三会西方金, 亥子丑三会北方水.<BR>地支三合<BR>申子辰合化水, 亥卯未合化木, 寅午戌合化火, 巳酉丑合化金.<BR>生地半合<BR>申子半合水, 亥卯半合木, 寅午半合火, 巳酉半合金.<BR>墓地半合<BR>子辰半合水, 卯未半合木, 午戌半合火, 酉丑半合金.<BR>地支六合<BR>子丑合土, 丑未合土, 寅亥合木, 卯戌合火, 辰酉合金, 巳申合水.<BR>地支相冲<BR>子午相冲, 丑未相冲, 寅申相冲, 卯酉相冲, 辰戌相冲, 巳亥相冲.<BR>地支相刑<BR>寅刑巳, 巳刑申, 申刑寅, 为无恩之刑.<BR>未刑丑, 丑刑戌, 戌刑未, 为恃势之刑.<BR>子刑卯. 卯刑子, 为无礼之刑.<BR>地支相害<BR>子未相害, 丑午相害, 寅巳相害, 卯辰相害, 申亥相害, 酉戌相害.<BR>凡四柱地支中有六合、三合局, 主人容貌姿美, 神气安定, 好生恶死, 心地平直, 周旋方便, 聪慧疏通. 合为吉神则吉, 合为凶神则凶. 相生之合最吉, 相克之合不吉, 死绝之合则一生不得志. 三合化局中, 化吉为吉, 化凶为凶.<BR>地支六冲主事:<BR>子午冲, 一身不安.<BR>卯酉冲, 背约失信, 忧愁多劳, 色情纠纷.<BR>寅申冲, 多情且好管闲事.<BR>巳亥冲, 多事, 喜助人.<BR>辰戌冲, 克亲伤子寿短.<BR>丑未冲, 事多阻逆.<BR>日冲月支, 犯父母兄弟.<BR>年与月支冲, 离祖别乡.<BR>年与日支冲, 与亲不和.<BR>年与时支冲, 与子不和.<BR>年与日月时支冲, 性暴躁或易患疾.<BR>子午卯酉冲, 地域之冲, 指居住地变迁, 职业不变.<BR>寅申巳亥冲, 职业之冲, 指居住地和职业均改变.<BR>辰戌丑未冲, 职业之冲, 指居住地不变, 职业变动.<BR>四柱逢冲, 多不居父母家.<BR>相临之冲冲力大, 隔位之冲冲力小. 冲去忌神为吉, 冲去吉神为凶.<BR>地支相刑主事:<BR>寅刑巳, 巳刑申, 申刑寅, 为无恩之刑. 四柱有所刑者或逢岁运相刑者, 性情冷酷薄义, 或遭人陷害及凶事发生. 若再座十二宫中死绝者, 更甚. 女命遇此刑易损孕.<BR>未刑丑, 丑刑戌, 戌刑未, 为恃势之刑. 四柱有此刑者, 恃自己之势, 过于猛进, 易遭挫折失败. 与十二宫中长生, 沐浴, 冠带, 临官, 帝旺同柱, 精神刚毅. 与死绝同柱, 卑屈或多狡猾, 常罹疾招灾. 女命则孤独.<BR>子刑卯. 卯刑子, 为无礼之刑.<BR>四柱有所刑者, 缺乏独立自主, 行事有始无终, 固执己见, 常陷困境, 生日有此刑, 夫妻有疾; 生时有此刑, 子病弱. 四柱有两组自刑者, 其凶兆更甚; 四柱命佳, 反有贵之诱力. "三刑之位带三奇, 天乙兼得在日时, 刑若等分干遇德,官居极品定无亏."<BR>地支相害主事:<BR>子未害, 不能利润骨肉.<BR>丑午, 卯辰害, 逢旺易怒, 缺乏忍耐力, 座十二宫弱地, 恐有残伤.<BR>寅巳害, 重金者, 废疾缠身.<BR>酉戌害, 面部易生暗疮.<BR>月支害, 孤独薄命, 女命尤甚.<BR>日时害, 防老年伤残.<BR>&lt;&lt;金书诀&gt;&gt;云:"六害之人忌日时, 老年残疾苦何依. 又逢羊刃神相蚀, 不中锋芒虎亦欺." 可见命犯六害, 大忌干支相伤, 日时上最紧.<BR>会局合冲总论要则:<BR>天干合化者, 秀气也; 地支合局者, 福德也.合中有克, 指无论夫妻关系, 朋友关系, 有先好后坏, 先热后冷, 先合后分的趋向.合中有生, 指无论夫妻关系, 朋友关系, 越合越好.柱中地支有合局, 主人容貌姿美, 神气安定, 心地平直, 周旋方便, 聪慧疏通. 合为吉神则吉, 合为凶神则凶. 相生之合最吉, 相克之合不吉, 死绝之合一生不得志.<BR>干合支合, 为和顺协调, 一般为多吉小凶. 刑. 害, 冲是命局干支不和顺的表现, 大多为凶而小吉. 具体要分析是合为喜还是合为用神所忌, 刑, 害, 冲是用神有益还是有损.<BR>三刑和六害在格局中合论的不多. 总之刑, 害, 冲只能一对一, 一对三地或刑或害或冲. 在此只将三会, 三合, 半合, 六冲, 六合, 在格局中出现的各种情况的推断要则作个介绍.一般来说三会局的力量大于其它力量, 其次是三合局. 三会与六冲相见, 以三会论, 三合与六冲相见, 除了合局中的子午卯酉被紧贴之支冲破外, 均以合论.半合有旺支半合(如亥与卯, 卯与未)与非旺支半合(如亥与未), 旺支半合紧贴但与旺支紧贴而冲, 以冲论. 旺支半合紧贴与非旺支冲, 冲不动, 以半合论. 半合中隔支冲, 以冲论. 半合中隔一无关紧要之支, 弱半合透出所化之五行(如亥卯半合中隔一他支为无用, 但三合局化为木, 若干透甲或乙则可), 以半合有用论,反之无用. 旺支半合与六合相见, 以半合论. 六冲与六合相见, 除六合有力外,以冲论(如未年午月子日, 午未合土有力则不做子午冲). 冲支中有子午卯酉本气之冲, 子冲午, 子主克, 午受克; 卯酉冲, 卯受克, 酉主克, 有相战之义, 最为激烈. 寅申巳亥之冲次之. 而辰戌、丑未冲是土之本气, 因激起而旺, 无战克之意, 但其中气, 余气所藏之干另以生克论. 远隔相冲是有冲之心无冲之力, 克性不大, 冲力为动而已.<BR>原则上: 三会局 &gt; 三合局 &gt; 旺半合 &gt; 六合 &gt; 非旺半合. 各合见冲, 以要则为准.</P>
<P>&nbsp;</P>
<P>人元</P>
<P>人元指地支中所藏天干.<BR>地支遁藏<BR>子 丑 寅 卯 辰 巳 <BR>癸 癸辛己 甲丙戊 乙 乙戊癸 庚丙戊 <BR>午 未 申 酉 戌 亥 <BR>己丁 乙己丁 戊庚壬 辛 辛丁戊 壬甲</P><!-- 正文内容 --></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020080226222221</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020080226222221</guid>
    <pubDate>Tue, 22 Jan 2008 18:22:22 +0800</pubDate>
    <dcterms:modified>2008-01-22T18:22:22+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Java学习的路线 重点 与目标]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200802755978</link>
    <description><![CDATA[<div><P>本文将告诉你学习Java需要达到的30个目标，学习过程中可能遇到的问题，及学习路线。希望能够对你的学习有所帮助。对比一下自己，你已经掌握了这30条中的多少条了呢？<BR></P>
<P><FONT color=#ff0000 size=5>路线</FONT><BR></P>
<P style="TEXT-INDENT: 2em">Java发展到现在，按应用来分主要分为三大块：J2SE,J2ME和J2EE。 </P>
<P style="TEXT-INDENT: 2em">这三块相互补充，应用范围不同。 </P>
<P style="TEXT-INDENT: 2em">J2SE就是Java2的标准版，主要用于桌面应用软件的编程； </P>
<P style="TEXT-INDENT: 2em">J2ME主要应用于嵌入是系统开发，如手机和PDA的编程； </P>
<P style="TEXT-INDENT: 2em">J2EE是Java2的企业版，主要用于分布式的网络程序的开发，如电子商务网站和ERP系统。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>先学习j2se</FONT> </P>
<P style="TEXT-INDENT: 2em">要学习j2ee就要先学习j2se，刚开始学习j2se先建议不要使用IDE，然后渐渐的过渡到使用IDE开发，毕竟用它方便嘛。学习j2se推荐两本书，《java2核心技术一二卷》，《java编程思想》，《java模式》。其中《java编程思想》要研读，精读。这一段时间是基本功学习，时间会很长，也可能很短，这要看学习者自身水平而定。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>不要被IDE纠缠</FONT> </P>
<P style="TEXT-INDENT: 2em">在学习java和j2ee过程中，你会遇到五花八门的IDE，不要被他们迷惑，学JAVA的时候，要学语言本身的东西，不要太在意IDE的附加功能，JAVA编程在不同IDE之间的转换是很容易的，过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder，eclipse和eclipse的加强版WSAD。用好其中一个就可以了，推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程序。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>选择和学习服务器使用配置</FONT> </P>
<P style="TEXT-INDENT: 2em">当你有了j2se和IDE的经验时，可以开始j2ee的学习了，web服务器：tomcat，勿庸置疑，tomcat为学习web服务首选。而应用服务器目前主要有三个：jboss、weblogic、websphere。有很多项目开始采用jboss，并且有大量的公司开始做websphere或weblogic向jboss应用服务器的移植（节省成本），这里要说的是，学习tomcat和jboss我认为是首选，也是最容易上手的。学习服务器使用配置最好去询问有经验的人（有条件的话），因为他们或许一句话就能解决问题，你自己上网摸索可能要一两天（我就干过这种傻事），我们应该把主要时间放在学习原理和理论上，一项特定技术的使用永远代替不了一个人的知识和学问。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>学习web知识</FONT> </P>
<P style="TEXT-INDENT: 2em">如果你是在做电子商务网站等时，你可能要充当几个角色，这是你还要学习： </P>
<P style="TEXT-INDENT: 2em">html，可能要用到dreamwave等IDE。 </P>
<P style="TEXT-INDENT: 2em">Javascript，学会简单的数据校验，数据联动显示等等。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>J2eeAPI学习</FONT> </P>
<P style="TEXT-INDENT: 2em">学习j2eeAPI和学习服务器应该是一个迭代的过程。 </P>
<P style="TEXT-INDENT: 2em">先学习jsp和servlet编程，这方面的书很多，我建立看oreilly公司的两本《jsp设计》和《java servlet编程》，oreilly出的书总是那本优秀，不得不佩服。 </P>
<P style="TEXT-INDENT: 2em">学习jdbc数据库编程，j2ee项目大多都是MIS系统，访问数据库是核心。这本应属于j2se学习中，这里拿出来强调一下。 </P>
<P style="TEXT-INDENT: 2em">学习jndi api，它和学习ejb可以结合起来。 </P>
<P style="TEXT-INDENT: 2em">学习ejb api，推荐书《精通ejb》 </P>
<P style="TEXT-INDENT: 2em">经过上面的这些的学习，大概可以对付一般的应用了。 </P>
<P style="TEXT-INDENT: 2em">有人说跟着sun公司的《j2ee tutorial》一路学下来，当然也可以。 </P>
<P style="TEXT-INDENT: 2em">学习ejb设计模式和看代码（最重要） </P>
<P style="TEXT-INDENT: 2em">设计模式是练内功，其重要性可以这么说吧，如果你不会用设计模式的话，你将写出一堆使用了ejb的垃圾，有慢又是一堆bug，其结果不如不用ejb实现（ejb不等于j2ee） </P>
<P style="TEXT-INDENT: 2em">无论学习什么语言，都应该看大量代码，你看的代码量不到一定数量，是学不好j2ee的。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#c0c0c0><FONT color=#999999>目前有很多开源的工程可以作为教材</FONT>：</FONT> </P>
<P style="TEXT-INDENT: 2em">jive论坛 </P>
<P style="TEXT-INDENT: 2em">petstore sun公司 </P>
<P style="TEXT-INDENT: 2em">dune sun公司 </P>
<P style="TEXT-INDENT: 2em">等等，研读一个，并把它用到自己的工程中来。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#0000ff>J2ee其他学习</FONT> </P>
<P style="TEXT-INDENT: 2em">当你渐渐对j2ee了解到一定深度时，你要开始关注当前领域中的一些技术变化，J2ee是一块百家争鸣的领域，大家都在这里提出自己的解决方案，例如structs，hiberate，ofbiz等等，学习这些东西要你的项目和目标而定，预先补充一下未尝不可，但不用涉及太深，毕竟学习原理和理论是最最重要的事。 </P>
<P style="TEXT-INDENT: 2em">目前常见j2eeAPI </P>
<P style="TEXT-INDENT: 2em">JavaServer Pages(JSP)技术1.2 </P>
<P style="TEXT-INDENT: 2em">Java Servlet技术2.3 </P>
<P style="TEXT-INDENT: 2em">JDBC API 2.0 </P>
<P style="TEXT-INDENT: 2em">Java XML处理API(JAXP)1.1 </P>
<P style="TEXT-INDENT: 2em">Enterprise JavaBeans技术2.0 </P>
<P style="TEXT-INDENT: 2em">Java消息服务(JMS)1.0 </P>
<P style="TEXT-INDENT: 2em">Java命名目录接口(JNDI)1.2 </P>
<P style="TEXT-INDENT: 2em">Java事务API(JTA) 1.0 </P>
<P style="TEXT-INDENT: 2em">JavaMail API 1.2 </P>
<P style="TEXT-INDENT: 2em">JavaBeans激活架构(JAF)1.0 </P>
<P style="TEXT-INDENT: 2em">J2EE连接器体系结构(JCA)1.0 </P>
<P style="TEXT-INDENT: 2em">Java认证和授权服务(JAAS)1.0 </P>
<P style="TEXT-INDENT: 2em">学习上面的某些API要以你的项目而定，了解所有他们总之是有好处的。 </P>
<P style="TEXT-INDENT: 2em">上面印证了大家说的一句话，java语言本身不难学，但是技术太多，所以学java很费劲。回想一下，基本上每个初学者，在刚学习java的时候可能都会问别人这么一句话，<FONT color=#0000ff>你怎么知道的哪个方法(api)在哪个包里的？呵呵，无他，唯手熟尔。 </FONT></P>
<P style="TEXT-INDENT: 2em">1 基础是王道。我们的基础要扎实扎实再扎实。 </P>
<P style="TEXT-INDENT: 2em">以上面的整个流程来看java的技术分支很多，要想完全掌握是绝对不可能的。我们只有从中精通1到2个部分。但是java也是有通性的，所谓万变不离其宗。java的所有编程思路都是“面向对象”的编程。所以大家在往更高境界发展以前一定要打好基础，这样不管以后是jree还是j3d都有应刃而解的感觉。在这里强烈推荐“java编程思想”. </P>
<P style="TEXT-INDENT: 2em">2 所谓打好基础并不是说要熟悉所有的java代码。我说的意思是要了解java的结构。class,methode,object,各种套用import,extend 让自己在结构上对java有个立体而且整体的了解即刻。其实java的学习不用固执于对代码的熟悉，1来java本身带有很多demo，java2d的所有问题几乎都有demo的样例。2来java是开放代码，即使没有demo网络上也有很多高手把自己的代码分享。所以不要怕没有参考，参考是到处都有的。 </P>
<P style="TEXT-INDENT: 2em">3 最后还有1点经验和大家分享，对sun的api一定要学会活用，不论是学习还是作为参考api都有很大的帮助，在完全了解java的结构的基础上，不论什么方法都是可以通过api来找到的.所以不要怕找不到方法，了解结构，了解api就能找到方法。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><FONT color=#ff0000 size=5>重点</FONT></P>
<P style="TEXT-INDENT: 2em">　　精通:能够掌握此技术的85%技术要点以上，使用此技术时间超过两年，并使用此技术成功实施5个以上的项目。能使用此技术优化性能或代码，做到最大可能的重用。</P>
<P style="TEXT-INDENT: 2em">　　熟练：能够掌握此技术的60%技术要点以上，使用此技术时间超过一年，并使用此技术成功实施3个以上的项目。能使用此技术实现软件需求并有经验的积累在实现之前能做优化设计尽可能的实现模块或代码的重用。</P>
<P style="TEXT-INDENT: 2em">　　熟悉：能够掌握此技术的50%技术要点以上，使用此技术时间超过半年上，并使用此技术成功实施1个以上的项目。能使用此技术实现软件需求。</P>
<P style="TEXT-INDENT: 2em">　　了解：可以在实际需要时参考技术文档或帮助文件满足你的需要，基本知道此项技术在你运用是所起的作用，能够调用或者使用其根据规定提供给你的调用方式。</P>
<P style="TEXT-INDENT: 2em">　　<FONT color=#0000ff>二：基本要求</FONT></P>
<P style="TEXT-INDENT: 2em">　　1:html 掌握程度：熟练。原因：不会html你可能写JSP?</P>
<P style="TEXT-INDENT: 2em">　　2:<A href="http://www.knowsky.com/article.asp?typeid=36">javascript</A>/jscript:掌握程度：熟悉。原因：client端的数据校验、一些页面处理需要你使用脚本。</P>
<P style="TEXT-INDENT: 2em">　　3:<A href="http://www.knowsky.com/article.asp?typeid=38">CSS</A> 掌握程度：熟悉。原因：实现页面风格的统一通常会使用css去实现。</P>
<P style="TEXT-INDENT: 2em">　　4:java基础编程 掌握程度：熟练。原因：不会java你能写JSP?开玩笑吧。还有你必须非常熟悉以下几个包java.lang;java.io;java.sql;java.util;java.text;javax.sevrlet;javax.servlet.http; javax.mail;等。</P>
<P style="TEXT-INDENT: 2em">　　5:sql 掌握程度：熟练。原因：如果你不使用<A href="http://www.knowsky.com/sql.asp">数据库</A>的话你也许不需要掌握sql。同时你必须对以下几种数据库中的一种以上的sql比较熟悉。Oracle,DB2,Mysql,Postgresql.</P>
<P style="TEXT-INDENT: 2em">　　6:xml 掌握程度：了解 原因：AppServer的配置一般是使用XML来实现的。</P>
<P style="TEXT-INDENT: 2em">　　7:ejb 掌握程度：了解 原因：很多项目中商业逻辑是由ejb来实现的，所以呢……</P>
<P style="TEXT-INDENT: 2em">　　8:以下几种AppServer(engnier) 你需要了解一个以上。</P>
<P style="TEXT-INDENT: 2em">　　a:)Tomcat</P>
<P style="TEXT-INDENT: 2em">　　b:)WebLogic</P>
<P style="TEXT-INDENT: 2em">　　c:)WebSphere</P>
<P style="TEXT-INDENT: 2em">　　d:)JRun</P>
<P style="TEXT-INDENT: 2em">　　e:)Resin</P>
<P style="TEXT-INDENT: 2em">　　原因：你的jsp跑在什么上面啊！</P>
<P style="TEXT-INDENT: 2em">　　<FONT color=#0000ff>三：选择要求</FONT>(因项目而定)</P>
<P style="TEXT-INDENT: 2em">　　1:LDAP 掌握程度：了解　原因：LADP越来越多的运用在权限控制上面。</P>
<P style="TEXT-INDENT: 2em">　　2:Struts 掌握程度：熟练　原因：如果符合MVC设计通常会使用Struts实现C。</P>
<P style="TEXT-INDENT: 2em">　　3:Xsp 掌握程度：根据需要而定很多时候是不使用的，但在不需要使用ejb但jsp+servlet+bean实现不了的时候Xsp是一个非常不错的选择。</P>
<P style="TEXT-INDENT: 2em">　　4:<A href="http://www.knowsky.com/article.asp?typeid=60">Linux</A> 掌握程度：熟悉　原因：如果你的运用跑在Linux/Unix上你最少要知道rm ,mv,cp,vi,tar gzip/gunzip 是用来做什么的吧。</P>
<P style="TEXT-INDENT: 2em">　　<FONT color=#0000ff>四：工具的使用</FONT></P>
<P style="TEXT-INDENT: 2em">　　1:UltraEdit(EditPlus)+jakarta-ant+jakarta-log4j;</P>
<P style="TEXT-INDENT: 2em">　　2:Jubilder4-6</P>
<P style="TEXT-INDENT: 2em">　　3:Visual Age For Java</P>
<P style="TEXT-INDENT: 2em">　　4:VCafe</P>
<P style="TEXT-INDENT: 2em">　　以上的工具你选择你自己熟悉的吧。不过强烈建议你用log4j做调试工具。</P>
<P style="TEXT-INDENT: 2em">　　<FONT color=#0000ff>五：成长之路</FONT></P>
<P style="TEXT-INDENT: 2em">　　1:html 学习时间，如果你的智商在80以上，15天时间应该够用了。至少你能手写出一个页面来。</P>
<P style="TEXT-INDENT: 2em">　　2:jacascript/jscript学习时间，这真的不好说，比较深奥的东西，够用的话一个礼拜可以学写皮毛。</P>
<P style="TEXT-INDENT: 2em">　　3:css 学习时间,三天的时间你应该知道如何使用css了，不要求你写，一般是美工来写css。</P>
<P style="TEXT-INDENT: 2em">　　4:java 学习时间，天才也的三个月吧。慢满学吧。如果要精通，那我不知道需要多少时间了。用来写</P>
<P style="TEXT-INDENT: 2em">jsp,四个月应该够了。</P>
<P style="TEXT-INDENT: 2em">　　5:sql 学习时间，只需要知道insert ,delete ,update ,select,create/drop table的话一天你应该知道了。</P>
<P style="TEXT-INDENT: 2em">　　6:xml 学习时间，我不知道我还没有学会呢。呵呵。不过我知道DTD是用来做什么的。</P>
<P style="TEXT-INDENT: 2em">　　7:ejb 学习时间，基本的调用看3天你会调用了。不过是建立在你学会java的基础上的。</P>
<P style="TEXT-INDENT: 2em">　　8:熟悉AppServer,Tomcat四天你可以掌握安装，配置。把jsp跑起来了。如果是WebLogic也够了，但要使用ejb那不关你的事情吧。SA做什么去了。</P>
<P style="TEXT-INDENT: 2em">　　9:熟悉Linux那可得需要不少时间。慢慢看man吧。</P>
<P style="TEXT-INDENT: 2em">　　10：Struts如果需要你再学习。 </P>
<P style="TEXT-INDENT: 2em"><FONT color=#ff0000 size=5>目标</FONT></P>
<P><FONT size=2><FONT size=3>1</FONT>.</FONT>你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF，J2EEDP)以及综合模式。你应该十分了解UML，尤其是class，object，interaction以及statediagrams。<BR><BR><FONT size=5><FONT size=3>2</FONT>. </FONT>你需要学习JAVA语言的基础知识以及它的核心类库(collections，serialization，streams， networking， multithreading，reflection，event，handling，NIO，localization，以及其他)。<BR><BR><FONT size=5><FONT size=3>3</FONT>.</FONT>你应该了解JVM，classloaders，classreflect，以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。<BR><BR><FONT size=5><FONT size=3>4.</FONT> </FONT>如果你将要写客户端程序，你需要学习WEB的小应用程序(applet)，必需掌握GUI设计的思想和方法，以及桌面程序的SWING，AWT， SWT。你还应该对UI部件的JAVABEAN组件模式有所了解。JAVABEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。<BR><BR><FONT size=5><FONT size=3>5</FONT>.</FONT>你需要学习java数据库技术，如JDBCAPI并且会使用至少一种persistence/ORM构架，例如Hibernate，JDO， CocoBase，TopLink，InsideLiberator(国产JDO红工厂软件)或者iBatis。<BR><BR><FONT size=3>6.</FONT>你还应该了解对象关系的阻抗失配的含义，以及它是如何影响业务对象的与关系型数据库的交互，和它的运行结果，还需要掌握不同的数据库产品运茫热?oracle，mysql，mssqlserver。<BR><BR><FONT size=3>7.</FONT>你需要学习JAVA的沙盒安全模式(classloaders，bytecodeverification，managers，policyandpermissions，<BR>codesigning， digitalsignatures，cryptography，certification，Kerberos，以及其他)还有不同的安全/认证 API，例如JAAS(JavaAuthenticationandAuthorizationService)，JCE (JavaCryptographyExtension)，JSSE(JavaSecureSocketExtension)，以及JGSS (JavaGeneralSecurityService)。<BR><BR><FONT size=3>8.</FONT>你需要学习Servlets，JSP，以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。<BR><BR><FONT size=3>9.</FONT>你需要熟悉主流的网页框架，例如JSF，Struts，Tapestry，Cocoon，WebWork，以及他们下面的涉及模式，如MVC/MODEL2。<BR><BR><FONT size=5><FONT size=3>10</FONT>.</FONT>你需要学习如何使用及管理WEB服务器，例如tomcat，resin，Jrun，并且知道如何在其基础上扩展和维护WEB程序。<BR><BR><FONT size=5><FONT size=3>11</FONT>.</FONT>你需要学习分布式对象以及远程API，例如RMI和RMI/IIOP。<BR><BR>12.你需要掌握各种流行中间件技术标准和与java结合实现，比如Tuxedo、CROBA，当然也包括javaEE本身。<BR><BR>13.你需要学习最少一种的XMLAPI，例如JAXP(JavaAPIforXMLProcessing)，JDOM(JavaforXMLDocumentObjectModel)，DOM4J，或JAXR(JavaAPIforXMLRegistries)。<BR><BR>14. 你应该学习如何利用JAVAAPI和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC)，SAAJ (SOAPwithAttachmentsAPIforJava)，JAXB(JavaArchitectureforXMLBinding)，JAXM (JavaAPIforXMLMessaging)， JAXR(JavaAPIforXMLRegistries)，或者JWSDP(JavaWebServicesDeveloperPack)。<BR><BR>15.你需要学习一门轻量级应用程序框架，例如Spring，PicoContainer，Avalon，以及它们的IoC/DI风格(setter，constructor，interfaceinjection)。<BR><BR>16. 你需要熟悉不同的J2EE技术，例如JNDI(JavaNamingandDirectoryInterface)，JMS (JavaMessageService)，JTA/JTS(JavaTransactionAPI/JavaTransactionService)， JMX (JavaManagementeXtensions)，以及JavaMail。<BR><BR>17.你需要学习企业级 JavaBeans(EJB)以及它们的不同组件模式：Stateless/StatefulSessionBeans，EntityBeans(包含 Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL)，或者 Message-DrivenBeans(MDB)。<BR><BR>18.你需要学习如何管理与配置一个J2EE应用程序服务器，如WebLogic，JBoss等，并且利用它的附加服务，例如簇类，连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。<BR><BR>19.你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP)，以及他们的主流JAVA规格和执行。例如AspectJ和AspectWerkz。<BR><BR>20. 你需要熟悉对不同有用的API和frame work等来为你服务。例如Log4J(logging/tracing)，Quartz (scheduling)，JGroups(networkgroupcommunication)，JCache (distributedcaching)， Lucene(full-textsearch)，JakartaCommons等等。<BR><BR>21.如果你将要对接或者正和旧的系统或者本地平台，你需要学习JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)。<BR><BR>22.你需要熟悉JINI技术以及与它相关的分布式系统，比如掌握CROBA。<BR><BR>23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs)，例如Portlets(168)，JOLAP(69)，DataMiningAPI(73)，等等。<BR><BR>24.你应该熟练掌握一种JAVAIDE例如sunOne，netBeans，IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了：)<BR><BR>25.JAVA(精确的说是有些配置)是冗长的，它需要很多的人工代码(例如EJB)，所以你需要熟悉代码生成工具，例如XDoclet。<BR><BR>26.你需要熟悉一种单元测试体系(JNunit)，并且学习不同的生成、部署工具(Ant，Maven)。<BR><BR>27.你需要熟悉一些在JAVA开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。<BR><BR>28.你需要能够深入了解加熟练操作和配置不同的操作系统，比如GNU/linux，sunsolaris，macOS等，做为跨平台软件的开发者。<BR><BR>29.你还需要紧跟java发展的步伐，比如现在可以深入的学习javaME，以及各种java新规范，技术的运用，如新起的web富客户端技术。<BR><BR>30.你必需要对opensource有所了解，因为至少java的很多技术直接是靠开源来驱动发展的，如java3D技术。(BlogJava-Topquan's Blog)</P>
<P>&nbsp;</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200802755978</comments>
    <slash:comments>4</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200802755978</guid>
    <pubDate>Wed, 2 Jan 2008 19:05:59 +0800</pubDate>
    <dcterms:modified>2008-01-02T19:25:34+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[引用 老公房里传出轻微的呻吟 (转)   ]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200711295458182</link>
    <description><![CDATA[<div><P><EM>引用</EM></P>
<BLOCKQUOTE><A href="http://zaibuo.blog.163.com/" target=_blank>博与雪</A> 的 <A href="http://zaibuo.blog.163.com/blog/static/311124802007112821455233" target=_blank>老公房里传出轻微的呻吟 (转) </A><BR>&lt; <TD>老公房里传出轻微的呻吟&nbsp;(转)&nbsp;&nbsp; <BR>　　一个个无情的误解，纷乱了幸福的脚步。当命运的死结终于用代价打开，一切都为时已晚。接婆婆来家安度晚年，结果却背离我们的初衷。&nbsp;&nbsp;&nbsp; <BR><BR>　　结婚二年后，先生跟我商量把婆婆从乡下接来安度晚年。先生很小时父亲就过世了，他是婆婆唯一的寄托，婆婆一个人扶养他长大，供他读完大学。“含辛茹苦”&nbsp;这四个字用在婆婆的身上，绝对不为过！我连连说好，马上给婆婆收拾出一间南向带阳台的房间，可以晒太阳，养花草什么的。先生站在阳光充足的房间，一句话没说，却突然举起我在房间里转圈，在我张牙舞爪地求饶时，先生说：“接咱妈去。”&nbsp;&nbsp;&nbsp; <BR><BR>　　先生身材高大，我喜欢贴着他的胸口，感觉娇小的身体随时可被他抓起来塞进口袋。当我和先生发生争执而又不肯屈服时，先生就把我举起来，在脑袋上方摇摇晃晃，一直到我吓得求饶。这种惊恐的快乐让我迷恋。&nbsp;&nbsp;&nbsp; <BR><BR>　　婆婆在乡下的习惯一时改不掉。我习惯买束鲜花摆在客厅里，婆婆后来实在忍不住了：“你们娃娃就不知道节约吗?”我笑着说：“妈，家里有鲜花盛开，人的心情会好。”&nbsp;婆婆低着头嘟哝，先生就笑：“妈，这是城里人的习惯，慢慢的，你就习惯了。&nbsp;&nbsp;&nbsp; <BR><BR>　　婆婆不再说什么，但每次见我买了鲜花回来，依旧忍不住问花了多少钱，我说了，他就“啧啧”咂嘴。有时，见我买大包小包的东西回家，她就问这个多少钱那个多少钱，我——如实回答，她的嘴就咂的更响了。先生拧着我的鼻子说：“小傻瓜你别告诉她真实价钱不就行了吗？”&nbsp;&nbsp;&nbsp; <BR><BR>　　快乐的生活渐渐有了不和谐音。婆婆最看不惯我先生起来做早餐。在她看来，大男人给老婆烧饭，哪有这个道理？早餐桌上，婆婆的脸经常阴着，我装做看不见。婆婆便把筷子弄得丁当乱响，这是她无声的抗议。&nbsp;&nbsp;&nbsp; <BR><BR>　　我在少年宫做舞蹈老师，跳来跳去已够累的了，早晨暖洋洋的被窝，我不想扔掉这惟一的享受，于是，我对婆婆的抗议装聋作哑。婆婆偶乐帮我做一些家务，她一做我就更忙了。比如，她把垃圾袋通通收集起来，说等攒够了卖废塑料，搞得家里到处都是废塑料袋；她不舍得用洗洁精洗碗，为了不伤她的自尊，我只好偷偷再洗一遍。&nbsp;&nbsp;&nbsp; <BR><BR>　　一次，我晚上偷偷洗碗被婆婆看见了，她“啪”的一声摔上门，趴在自己的房间里放声大哭。先生左右为难，事后，先生一晚上没跟我说话，我撒娇，耍赖，他也不理我。我火了，问他：“我究竟哪里做错了？”&nbsp;先生瞪着我说：“你就不能迁就一下，碗再不干净也吃不死人吧？”&nbsp;&nbsp;&nbsp; <BR><BR>　　后来，好长一段时间，婆婆不跟我说话，家里的气氛开始逐渐尴尬。那段日子，先生活得很累，不知道要先逗谁开心好。&nbsp;&nbsp;&nbsp; <BR><BR>　　婆婆为了不让儿子做早餐，义无反顾地承担起烧早饭的“重任”。婆婆看着先生吃得快乐，再看看我，用眼神谴责我没有尽到做妻子的责任。为了逃避尴尬，我只好在上班的路上买包奶打发自己。睡觉时，先生有点生气地问我：“芦荻，是不是嫌弃我妈做饭不干净才不在家吃？”翻了一个身，他扔给我冷冷的脊背任凭我委屈的流泪。最后，先生叹气：“芦荻，就当是为了我，你在家吃早餐行不行？”我只好回到尴尬的早餐上。&nbsp;&nbsp;&nbsp; <BR><BR>　　那天早晨，我喝着婆婆烧的稀饭，忽然一阵反胃，肚子里所有的东西都抢着向外奔跑，我拼命地压制着不让它们往上涌，但还是没压住，我扔下碗，冲进卫生间，吐得稀里哗。当我喘息着平定下来时，见婆婆夹杂着家乡话的抱怨和哭声，先生站在卫生间门口愤怒地望着我，我干张着嘴巴说不出话，我真的不是故意的。我和先生开始了第一次激烈的争吵，婆婆先是瞪着眼看我们，然后起身，蹒跚着出门去了。先生恨恨地瞅了我一眼，下楼追婆婆去了。&nbsp;&nbsp;&nbsp; <BR><BR>　　意外迎来新生命，却突然葬送了婆婆的性命！&nbsp;&nbsp;&nbsp; <BR><BR>　　整整三天，先生没有回家，连电话都没有。我正气着，想想自从婆婆来后，我够委屈自己了，还要我怎么样？莫明其妙的，我总想呕吐，吃什么都没有胃口，加上乱七八糟的家事，心情差到了极点。后来，还是同事说：“芦荻，你脸色很差，还是去医院看看吧。”&nbsp;&nbsp;&nbsp; <BR></CC></TD>
<P>医院检查的结果是我怀孕了。我明白了那天早晨我为什么突然呕吐，幸福中夹着一丝幽怨：先生和作为过来人的婆婆，他们怎么就丝毫没有想到这呢？&nbsp;&nbsp;&nbsp; <BR><BR>　　在医院门口，我看见了先生。仅仅三天没见，他憔悴了许多。我本想转身就走，但他的模样让我心疼，没忍住，我喊了他。先生循着声音看见了我，却好像不认识了，眼神里有一丝藏不住院的厌恶，它们冰冷地刺伤了我。我跟自己说不要看他不要看他，伸手拦了一辆出租车。那时，我多想向先生大喊一声：“亲爱的我要给你生宝贝了！”然后被他举起来，幸福地旋转。我希望的没有发生。在出租车里，我的眼泪才迟迟地落下来。为什么一场争吵就让爱情糟糕到这样的程度？回家后，我躺在床上想先生，想他满眼的厌恶。我握着被子的一角哭了。&nbsp;&nbsp;&nbsp; <BR><BR>　　夜里，家里有翻抽屉的声音。打开灯，我看见先生泪流满面的脸。他正在拿钱。我冷冷地看着他，一声不响。他对我视若不见，拿着存折和钱匆匆离开。或许先生是打算彻底离开我了。真是理智的男人，情与钱分得如此清楚。我冷笑了几下，眼泪“哗啦哗啦”的流下来。&nbsp;&nbsp;&nbsp; <BR><BR>　　第二天，我没去上班。想彻底清理一下自己的思绪，找先生好好谈一次，找到先生的公司，秘书有点奇怪地看着我说：“陈总的母亲出了车祸，正在医院里呢。”&nbsp;&nbsp;&nbsp; <BR><BR>　　我瞠目结舌。&nbsp;&nbsp;&nbsp; <BR><BR>　　飞奔到医院，找到先生时，婆婆已经去了。先生一直不看我，一脸僵硬。我望着婆婆干瘦苍白的脸，眼泪止不住：天哪！怎么会是这样？直到安葬了婆婆，先生也没跟我说一句话，甚至看我一眼都带着深深的厌恶。&nbsp;&nbsp;&nbsp; <BR><BR>　　关于车祸，我还是从别人嘴里了解到大概，婆婆出门后迷迷糊糊地向车站走，她想回老家，先生越追她走得越快，穿过马路时，一辆公交车迎面撞过来……&nbsp;&nbsp;&nbsp; <BR><BR>　　我终于明白了先生的厌恶，如果那天早晨我没有呕吐，如果我们没有争吵，如果……在他的心里，我是间接杀死他母亲的罪人。&nbsp;&nbsp;&nbsp; <BR><BR>　　先生默不作声搬进了婆婆的房间，每晚回来都满身酒气。而我一直被愧疚和可怜的自尊压得喘不过气来，想跟他解释，想跟他说我们快有孩子了，但看着他冰冷的眼神，又把所有的话都咽了回去。我宁愿先生打我一顿或者骂我一顿，虽然这一切事故都不是我的故意。&nbsp;&nbsp;&nbsp; <BR><BR>　　日子一天一天地窒息着重复下去，先生回家的时间越来越晚。我们僵持着，比陌路人还要尴尬。我是系在他心上的死结。&nbsp;&nbsp;&nbsp; <BR><BR>　　一次，我路过一家西餐厅，穿过透明的落地窗，我看见先生和一个年轻女孩面对面坐着，他轻轻地为女孩拢了拢头发，我就明白了一切。先是呆，然后我进了西餐厅，站在先生面前，死死盯着他看，眼里没有一滴泪。我什么也不想说，也无话可说。女孩看看我，看看我先生，站起来想走，我先生伸手按住她，然后，同样死死地，绝不示弱地看着我。我只能听见自己缓慢的心跳，一下一下跳动在濒临死亡般的苍白边缘。&nbsp;&nbsp;&nbsp; <BR><BR>　　输了的是我，如果再站下去，我会和肚子里的孩子一起倒下。&nbsp;&nbsp;&nbsp; <BR><BR>　　那一夜，先生没回家，他用这样的方式让我明白：随着婆婆的去世，我们的爱情也死了。先生再也没有回来。有时，我下班回来，看见衣橱被动过了——先生回来拿一点自己的东西。我不想给他打电话，原先还有试图向他解释一番的念头，一切都彻底失去了。&nbsp;&nbsp;&nbsp; <BR><BR>　　我一个人生活，一个人去医院体检，每每看见有男人小心地扶着妻子去做体检，我的心便碎的提不起样子。同事隐约劝我打掉算了，我坚决说不，我发疯了一样要生下这个孩子，也算对婆婆的死的补偿吧，我下班回来，先生坐在客厅里，先生看着我，眼神复杂，和我一样。&nbsp;&nbsp;&nbsp; <BR><BR>　　我一边解大衣扣子一边在心里对自己说：“不哭不哭……”&nbsp;眼睛很疼，但我不让它们流出眼泪。挂好大衣，先生的眼睛死死盯在我已隆起的肚子上。我笑笑，走过去，拖过那张纸，看也不看，签上自己的名字，推给他。“芦荻，你怀孕了？”&nbsp;自从婆婆出事后，这是先生第一次跟我说话。我再也管不住眼睛，眼泪“哗啦‘地流下来。我说：“是啊，不过没事，你可以走了。”&nbsp;&nbsp;&nbsp; </P>
<P>　　先生没走，黑暗里，我们对望着。先生慢慢趴在我身上，眼泪渗透了被子。而在我心里，很多东西已经很远了，远到即使我奔跑都拿不到了。不记得先生跟我说过多少遍“对不起”了，我也曾经以为自己会原谅，却不能，在西餐厅先生当着那个女孩的面，他看我的冰冷的眼神，这辈子，我忘记不了。我们在彼此心上划下了深深的伤痕。我的，是无意的；他的，是刻意的。&nbsp;&nbsp;&nbsp; <BR><BR>　　期待冰释前嫌，但过去的已无法重来！&nbsp;&nbsp;&nbsp; <BR><BR>　　除了&nbsp;&nbsp;&nbsp; <BR><BR>　　除了想起肚子里的孩子时心里是暖的，而对先生，我心冷如霜，不吃他买的任何东西，不要他的任何礼物，不跟他说话。从在那张纸上签字起，婚姻以及爱情统统在我的心里消亡。有时先生试图回卧室，他来，我就去客厅，先生只好睡回婆婆的房间。夜里，从先生的房间有时会传来轻微的呻吟，我一声不响。这是他习惯玩的伎俩，以前只要我不理他了，他就装病，我就会乖乖投降，关心他怎么了，他就一把抓住我哈哈大笑。他忘记了，那时，我会心疼是因为有爱情，现在，我们还有什么？&nbsp;&nbsp;&nbsp; <BR><BR>　　先生用呻吟断断续续待续到孩子出生。他几乎每天都在给孩子买东西，婴儿用品，儿童用品，以及孩子喜欢的书，一包包的，快把他的房间堆满了。&nbsp;&nbsp;&nbsp; <BR><BR>　　我知道他是用这样的方式感动我，而我已经不为所动。他只好关在房间里，用电脑“噼哩啪啦”敲字，或许他正在网恋，但对我已经是无所谓的事了。&nbsp;&nbsp;&nbsp; <BR><BR>　　转年春末的一个深夜，剧烈的腹痛让我大喊一声，先生一个箭步冲进来，好像他根本就没脱衣服睡觉，为的就是等这个时刻的到来。先生背起我就往楼下跑，拦车，一路上紧紧地攥着我的手，不停地给我擦掉额上的汗。到了医院，背起我就往产科跑。趴在他干瘦而温暖的背上，一个念头忽然闯进心里：这一生，谁还会像他这样疼爱我？先生扶着产房的门，看着我进去，眼神暖融融的我忍着阵痛对他笑了一下。从产房出来，先生望着我和儿子，眼睛湿湿地笑啊笑啊的。我摸了一下他的手。先生望着我，微笑，然后，缓慢而疲惫地软塌塌倒下去。&nbsp;&nbsp;&nbsp; <BR><BR>　　我痛喊他的名字……&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>　　先生笑着，没睁开疲惫的眼睛…&nbsp;&nbsp;&nbsp; <BR><BR>　　我以为再也不会为先生流一滴泪，事实却是，从没有过如此剧烈的疼撕扯着我的身体。医生说，我先生的肝癌发现时已是晚期，他能坚持这么久是绝对的奇迹。我问医生什么时候发现的？医生说五个月前，然后安慰我：“准备后事吧。”&nbsp;&nbsp;&nbsp; <BR><BR>　　我不顾护士的阻拦，回家，冲进先生的房间打开电脑，心一下子被疼窒息了。&nbsp;&nbsp;&nbsp; <BR><BR>　　先生的肝癌在五个月前就已发现，他的呻吟是真的，我居然还以为……&nbsp;&nbsp;&nbsp; <BR><BR>　　电脑上的20万字，是先生写给儿子的留言：孩子，为了你，我一直在坚持，等着看你一眼再倒下，是我现在最大的愿望……我知道，你的一生会有很多快乐或者遇到挫折，如果我能够陪你经历这个成长历程，该是多么快乐，但爸爸没有这个机会了。爸爸在电脑上，把你一生可能遇到的问题一一地写下来，等你遇到这些问题时，可以参考爸爸的意见……&nbsp;?&nbsp;&nbsp;&nbsp; <BR><BR>　　我最最亲爱的孩子，写完这20多万字，我感觉像陪你经历了整个成长过程。真的，爸爸很快乐。好好爱你的妈妈，她很辛苦，是最爱你的人，也是我最爱的人……从儿子去幼儿园到读小学，读中学，大学，到工作以及爱情等方方面面，事无巨细都写到了。&nbsp;&nbsp;&nbsp; <BR><BR>　　先生也给我写了信：亲爱的，娶了你是我一辈子最大的幸福，原谅我对你的伤害，原谅我隐瞒了病情，因为我想让你有个好的心情等待孩子的出生……亲爱的，如果你哭了，说明你已经原谅我了，我就笑了，谢谢你一直爱我……这些礼物，我担心没有机会亲自送给孩子了，麻烦你每年替我送他几份礼物，包装盒子上都写着送礼物的日期……&nbsp;&nbsp;&nbsp; <BR><BR>　　回到医院，先生依旧在昏迷中。我把儿子抱过来，放在他身边，我说：“你睁开眼笑一下，我要让儿子记住他在你怀抱里的温暖……”&nbsp;&nbsp;&nbsp; <BR><BR>　　先生艰难地睁开眼，微微地笑了一下。儿子偎依在他怀里，舞动粉色的小手。&nbsp;&nbsp;&nbsp; <BR><BR>　　我“喀嚓喀嚓”按快门，泪水在脸上恣意地流……&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>第1种:看完了我的帖子感动了的人.......这种人,爱情顺利,事业顺心,家庭和睦,福如东海.寿比南山,一生开心~&nbsp;&nbsp;&nbsp;&nbsp; <BR>当然了。.这种人也都宽宏大量....不会介意回个小小的帖子了...开心无价嘛~~&nbsp;&nbsp;&nbsp;&nbsp; <BR><BR>第2种:看完了我的帖子没有笑的人:........这种、人........................啥也别说了..............没的说了</P></BLOCKQUOTE></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200711295458182</comments>
    <slash:comments>7</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200711295458182</guid>
    <pubDate>Sat, 29 Dec 2007 17:04:58 +0800</pubDate>
    <dcterms:modified>2007-12-29T17:04:58+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[迅速成为j2ee高手的道路]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/16550302007112944245353</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">当然Java语法得先看一看的，I/O包，Util包，Lang包你都熟悉了吗？然后再从JSP学起。如果你学过HTML，那么事情要好办的多，如果没有，那你快去补一补HTML基础吧。其实JSP中的Java语法也不多，它更象一个脚本语言，有点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序，他负责生成发送给客户端的HTML文件。JSP在执行时，也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet，这也是SUN推出JSP的本意，可是Servlet用来控制流程跳转还是挺方便的，也令程序更清晰。接下来你应该学习一下Javabean了，可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了，这种方式跟ASP又有什么区别呢？还好，SUN提供了Javabean可以把你的JSP中的Java代码封装起来，便于调用也便于重用。接着就是EJB了，EJB就是Enterprise JavaBean,看名字好象它是Javabean，可是它和Javabean还是有区别的。它是一个体系结构，你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件（也就是我们常听到的Weblogic,Websphere这些J2EE服务器）完成了，所以我们要做的程序代码量很少，大部分工作都在设计和配置中间件上。至于JDBC，就不用我多说了，你如果用java编过存取数据库的程序，就应该很熟悉。还有，如果你要用Java编发送电子邮件的程序，你就得看看Javamail了。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 好了，对Java和J2EE有了一些基本概念之后，你就应该编一些程序了，千万不要纸上谈兵哦。最好找一些有实例且带光盘的书来看，这样看到好的程序就可以直接Ctrl+C再Ctrl+V，也不用劳您老大架再亲自把它再输一遍吧，再说直接复制还不用怕出错，何乐而不为呢！还有就是要经常上一些好的Java编程文章，有好的文章要Cut下来，有问题尽管问，只要问题不是太傻，一般高手都会回答你的。下面介绍几个好的Java方面的编程网站：</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; CSDN论坛 <A href="http://www.csdn.net/">http://www.csdn.net/</A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 中国最有名的技术论坛，《程序员》杂志就是他们出版的，你可以在上面提出问题，马上就有人回答你，如果你觉得好，你可以给那人加分；</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; Java研究组织<A href="http://www.javaresearch.org/">http://www.javaresearch.org/</A> </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 上面有很多原创文章，高手还是挺多的； </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; Java开发者 <A href="http://www.chinajavaworld.com/">http://www.chinajavaworld.com/</A> </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 那里Java资料比较全； </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; java.com.cn <A href="http://www.java.com.cn/">http://www.java.com.cn/</A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 看这域名就知道有多牛，注册用户快接近一万了，同时在线人数也在一千左右，人气很旺的；</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; IBM的开发者网络<A href="http://www-900.ibm.com/developerWorks/cn/java/index.shtml">http://www-900.ibm.com/developerWorks/cn/java/index.shtml</A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; IBM永远的蓝色巨人； </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 那么我书也看了，程序也做了，别人问我的问题我都能解决了，是不是就成为高手了呢？当然没那么简单，这只是万里长征走完了第一步。不信？那你出去接一个项目，你知道怎么下手吗，你知道怎么设计吗，你知道怎么组织人员进行开发吗？你现在脑子里除了一些散乱的代码之外，可能再没有别的东西了吧！你现在最缺的是实际的工作经验，而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧（如果是在校学生可以去做兼职啊），在实践中提高自己，那才是最快的。不过你得祈祷在公司里碰到一个高手，而且他还愿意不厌其烦地教你，这样好象有点难哦！</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手，他们设计合理，考虑周到，再加上有广大的程序员参与，代码的价值自然是字字珠叽，铿锵有力（对不起，偶最近《金装四大才子》看多了）。学Java必读的两个开源程序就是Jive和PetStore.。Jive是国外一个非常著名的BBS程序，完全开放源码。论坛的设计采用了很多先进的技术，如Cache、用户认证、Filter、XML等，而且论坛完全屏蔽了对数据库的访问，可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序，这是我们平时编程时容易忽略的一部份（中国程序员一般只注重编程的技术含量，却完全不考虑用户的感受，这就是我们与国外软件的差距所在）。Jive的资料在很多网站上都有，大家可以找来研究一下。相信你读完代码后，会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码，同时有licence限制。不过幸好还有中国一流的Java程序员关注它，外国人不开源了，中国人就不能开源吗？这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名鼎鼎的banq在Jive2.1版本基础上改编而成,全中文，增加了一些实用功能，如贴图，用户头像和用户资料查询等，而且有一个开发团队在不断升级。你可以访问banq的网站<A href="http://www.jdon.com/">http://www.jdon.com/</A></P>
<P style="TEXT-INDENT: 2em">去下载，或到同济技术论坛的服务器<A href="ftp://nro.shtdu.edu.cn/">ftp://nro.shtdu.edu.cn</A>去下，安装上有什么问题，可以到论坛上去提问。Pet Store.（宠物店）是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序，应该很具有权威性，想学J2EE和EJB的朋友不要错过了。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 你一定会高兴地说，哈哈，原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理，号称Java很简单，只要三个月就可以学会。其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水，你现在只是学到了Java的骨架，却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想，它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧，让你能够真正掌握接口或抽象类的应用，从而在原来的Java语言基础上跃进一步，更重要的是，设计模式反复向你强调一个宗旨：要让你的程序尽可能的可重用。关于设计模式的资料，还是向大家推荐banq的网站<A href="http://www.jdon.com/">http://www.jdon.com/</A>，他把GOF的23种模式以通俗易懂的方式诠释出来，纯Java描述，真是经典中的经典。有时间再研究一下MVC结构（把Model-View-Control分离开的设计思想）吧，现在很流行的Structs就是它的一种实现方式，不过Structs用起来实在是很繁，我们只要学习其精髓即可，我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring(重整)和极限XP编程，相信你又会上一个台阶。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 做完这些，你不如整理一下你的Java代码，把那些经典的程序和常见的应用整理出来，再精心打造一番，提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧，你可以去承接一些项目做了，一开始可能有些困难，可是你有技术积累，又考虑周全，接下项目来可以迅速作完，相信大家以后都会来找你的，所以Money就哗啦啦的来了……</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 当然你也可以参加一些开源项目，一方面可以提高自己，另一方面也是为中国软件事业做贡献嘛！开发者在互联网上用CVS合作开发，用QQ,MSN,E-mail讨论联系，天南海北的程序员分散在各地却同时开发同一个软件，是不是很有意思呢？</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 下面介绍两个好的开源项目网站： </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 湖北省软件公共开发平台<A href="http://gro.clinux.org/">http://gro.clinux.org/</A> ;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 共创联盟<A href="http://cosoft.org.cn/">http://cosoft.org.cn/</A> ;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 哇，好高兴哦，我终于成为高手了！非也，非也。古人云：“识时务者为俊杰”。你知道计算机界现在的发展形势吗？你知道微软的.NET蓝图和SUNONE计划之间的明争暗斗吗?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“Web服务将是下一代互联网应用的制高点”，而微软的.NET蓝图和SUNONE计划的斗争焦点，也就是Web服务。Web服务就是一个崭新的分布式计算模型，它是一系列标准的综合（XML,SOAP,UDDI,WSDL和WSFL等）。它使得不同语言编写的软件能够轻易的集成起来，使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来，我们就可以在家里点击一下鼠标，就可以完成出门旅游的全部准备工作，包括定飞机票，定旅游线路，定好房间等。请注意，这所有的一切都是Web站点间自动完成的，再也不用象现在一样，表面上是电子商务，实际上很多环节都是人工操作。也许你会觉得这是天方夜谈，不过就近的说，你也很有可能承接一个项目，要集成两个企业的ERP系统。很有可能上游企业的系统是用Dephi编的，而下游企业的系统是用Java编的。你说你是Java高手，大家都看者你怎么做呢。所以啊，你还得学习新技术，如Web服务，而且你Dephi也要懂一点吧（Dephi6现在已经提供Web服务的控件了）。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 你编的Java系统，可能要和.NET集成，所以你.NET要懂一点吧？到最后，你可能发现你已经成为Java高手了，但很多时间却在搞别的技术。太极张三丰里说，最厉害的招式就是没有招式，可能就是这个道理吧！</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 因为刚刚兴起，所以网上Web服务的资料不是很多，我还是给大家推荐几个网站吧： </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 中国UDDI技术联盟<A href="http://www.uddi-china.org/">http://www.uddi-china.org/</A> ;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; CSDN的柴晓路专栏<A href="http://www.csdn.net/develop/author/ColumnAuthor/fennivel/">http://www.csdn.net/develop/author/ColumnAuthor/fennivel/</A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; （注：柴晓路也是互联网上一个有名的人物，他发表过很多关于Web服务的文章，还出了一书，应该称的上是中国Web服务技术的先行者）</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; IBM的开发者网络的XML&amp;Web Service专栏: </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www-900.ibm.com/developerWorks/cn/xml/">http://www-900.ibm.com/developerWorks/cn/xml/</A></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; IBM可是Web服务的力推者 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 呜…你费劲千心万苦，总算成为Java高手了，怎叫人不由喜极而泣呢！是啊，真不容易，真不简单，真叫人感动啊！那么打个电话告诉我吧，什么？我的电话号码是多少？昏到，你打电话问不就知道了吗，真是的……</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/16550302007112944245353</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/16550302007112944245353</guid>
    <pubDate>Sat, 29 Dec 2007 16:42:45 +0800</pubDate>
    <dcterms:modified>2008-01-05T09:12:35+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[堆和栈的区别2]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200711474439988</link>
    <description><![CDATA[<div><P>最后来说说内存中的数据对齐。所位数据对齐，是指数据所在的内存地址必须是该 数据长度的整数倍，DWORD数据的内存起始地址能被4除尽，WORD数据的内存起始地址能被2除尽，x86&nbsp;CPU能直接访问对齐的数据，当他试图访问 一个未对齐的数据时，会在内部进行一系列的调整，这些调整对于程序来说是透明的，但是会降低运行速度，所以编译器在编译程序时会尽量保证数据对齐。同样一 段代码，我们来看看用VC、Dev-C++和lcc三个不同编译器编译出来的程序的执行结果：&nbsp;</P>
<P>#include&nbsp;&lt;stdio.h&gt;&nbsp;</P>
<P>int&nbsp;main()&nbsp;<BR>{&nbsp;<BR>int&nbsp;a;&nbsp;<BR>char&nbsp;b;&nbsp;<BR>int&nbsp;c;&nbsp;<BR>printf("0x%08x\n",&amp;a);&nbsp;<BR>printf("0x%08x\n",&amp;b);&nbsp;<BR>printf("0x%08x\n",&amp;c);&nbsp;<BR>return&nbsp;0;&nbsp;<BR>}&nbsp;</P>
<P>这是用VC编译后的执行结果：&nbsp;<BR>0x0012ff7c&nbsp;<BR>0x0012ff7b&nbsp;<BR>0x0012ff80&nbsp;<BR>变量在内存中的顺序：b(1字节)-a(4字节)-c(4字节)。&nbsp;</P>
<P>这是用Dev-C++编译后的执行结果：&nbsp;<BR>0x0022ff7c&nbsp;<BR>0x0022ff7b&nbsp;<BR>0x0022ff74&nbsp;<BR>变量在内存中的顺序：c(4字节)-中间相隔3字节-b(占1字节)-a(4字节)。&nbsp;</P>
<P>这是用lcc编译后的执行结果：&nbsp;<BR>0x0012ff6c&nbsp;<BR>0x0012ff6b&nbsp;<BR>0x0012ff64&nbsp;<BR>变量在内存中的顺序：同上。&nbsp;</P>
<P>三个编译器都做到了数据对齐，但是后两个编译器显然没VC“聪明”，让一个char占了4字节，浪费内存哦。&nbsp;</P>
<P><BR>基础知识：&nbsp;<BR>堆 栈是一种简单的数据结构，是一种只允许在其一端进行插入或删除的线性表。允许插入或删除操作的一端称为栈顶，另一端称为栈底，对堆栈的插入和删除操作被称 为入栈和出栈。有一组CPU指令可以实现对进程的内存实现堆栈访问。其中，POP指令实现出栈操作，PUSH指令实现入栈操作。CPU的ESP寄存器存放 当前线程的栈顶指针，EBP寄存器中保存当前线程的栈底指针。CPU的EIP寄存器存放下一个CPU指令存放的内存地址，当CPU执行完当前的指令后，从 EIP寄存器中读取下一条指令的内存地址，然后继续执行。&nbsp;</P>
<P><BR>参考：《Windows下的HEAP溢出及其利用》by:&nbsp;isno&nbsp;<BR>《windows核心编程》by:&nbsp;Jeffrey&nbsp;Richter&nbsp;<BR><BR><BR><BR></P>
<P>摘要：&nbsp;讨论常见的堆性能问题以及如何防范它们。（共&nbsp;9&nbsp;页）</P>
<P>前言<BR>您 是否是动态分配的&nbsp;C/C++&nbsp;对象忠实且幸运的用户？您是否在模块间的往返通信中频繁地使用了“自动化”？您的程序是否因堆分配而运行起来很慢？不仅仅 您遇到这样的问题。几乎所有项目迟早都会遇到堆问题。大家都想说，“我的代码真正好，只是堆太慢”。那只是部分正确。更深入理解堆及其用法、以及会发生什 么问题，是很有用的。</P>
<P>什么是堆？<BR>（如果您已经知道什么是堆，可以跳到“什么是常见的堆性能问题？”部分）</P>
<P>在程序中，使用堆来动态分配和释放对象。在下列情况下，调用堆操作：&nbsp;</P>
<P>事先不知道程序所需对象的数量和大小。</P>
<P><BR>对象太大而不适合堆栈分配程序。<BR>堆使用了在运行时分配给代码和堆栈的内存之外的部分内存。下图给出了堆分配程序的不同层。<BR><A href="http://club.5ivb.net/UploadFile/2005311144027byUID16686.gif" target=_blank><IMG alt="" src="http://club.5ivb.net/UploadFile/2005311144027byUID16686.gif" >screen.width-333)this.width=screen.width-333" border=0 dypop="按此在新窗口浏览图片"></A></P>
<P>GlobalAlloc/GlobalFree：Microsoft&nbsp;Win32&nbsp;堆调用，这些调用直接与每个进程的默认堆进行对话。</P>
<P>LocalAlloc/LocalFree：Win32&nbsp;堆调用（为了与&nbsp;Microsoft&nbsp;Windows&nbsp;NT&nbsp;兼容），这些调用直接与每个进程的默认堆进行对话。</P>
<P>COM&nbsp;的&nbsp;IMalloc&nbsp;分配程序（或&nbsp;CoTaskMemAlloc&nbsp;/&nbsp;CoTaskMemFree）：函数使用每个进程的默认堆。自动化程序使用“组件对象模型&nbsp;(COM)”的分配程序，而申请的程序使用每个进程堆。</P>
<P>C/C ++&nbsp;运行时&nbsp;(CRT)&nbsp;分配程序：提供了&nbsp;malloc()&nbsp;和&nbsp;free()&nbsp;以及&nbsp;new&nbsp;和&nbsp;delete&nbsp;操作符。如 &nbsp;Microsoft&nbsp;Visual&nbsp;Basic&nbsp;和&nbsp;Java&nbsp;等语言也提供了新的操作符并使用垃圾收集来代替堆。CRT&nbsp;创建自己的私有堆，驻留在 &nbsp;Win32&nbsp;堆的顶部。</P>
<P>Windows&nbsp;NT&nbsp;中，Win32&nbsp;堆是&nbsp;Windows&nbsp;NT&nbsp;运行时分配程序周围的薄层。所有&nbsp;API&nbsp;转发它们的请求给&nbsp;NTDLL。</P>
<P>Windows&nbsp;NT&nbsp;运行时分配程序提供&nbsp;Windows&nbsp;NT&nbsp;内的核心堆分配程序。它由具有&nbsp;128&nbsp;个大小从&nbsp;8&nbsp;到&nbsp;1,024&nbsp;字节的空闲列表的前端分配程序组成。后端分配程序使用虚拟内存来保留和提交页。</P>
<P>在图表的底部是“虚拟内存分配程序”，操作系统使用它来保留和提交页。所有分配程序使用虚拟内存进行数据的存取。</P>
<P>分配和释放块不就那么简单吗？为何花费这么长时间？</P>
<P>堆实现的注意事项<BR>传 统上，操作系统和运行时库是与堆的实现共存的。在一个进程的开始，操作系统创建一个默认堆，叫做“进程堆”。如果没有其他堆可使用，则块的分配使用“进程 堆”。语言运行时也能在进程内创建单独的堆。（例如，C&nbsp;运行时创建它自己的堆。）除这些专用的堆外，应用程序或许多已载入的动态链接库&nbsp;(DLL)&nbsp;之 一可以创建和使用单独的堆。Win32&nbsp;提供一整套&nbsp;API&nbsp;来创建和使用私有堆。有关堆函数（英文）的详尽指导，请参见&nbsp;MSDN。</P>
<P>当应用程序或&nbsp;DLL&nbsp;创建私有堆时，这些堆存在于进程空间，并且在进程内是可访问的。从给定堆分配的数据将在同一个堆上释放。（不能从一个堆分配而在另一个堆释放。）</P>
<P>在所有虚拟内存系统中，堆驻留在操作系统的“虚拟内存管理器”的顶部。语言运行时堆也驻留在虚拟内存顶部。某些情况下，这些堆是操作系统堆中的层，而语言运行时堆则通过大块的分配来执行自己的内存管理。不使用操作系统堆，而使用虚拟内存函数更利于堆的分配和块的使用。</P>
<P>典 型的堆实现由前、后端分配程序组成。前端分配程序维持固定大小块的空闲列表。对于一次分配调用，堆尝试从前端列表找到一个自由块。如果失败，堆被迫从后端 （保留和提交虚拟内存）分配一个大块来满足请求。通用的实现有每块分配的开销，这将耗费执行周期，也减少了可使用的存储空间。</P>
<P>Knowledge&nbsp;Base&nbsp; 文章&nbsp;Q10758，“用&nbsp;calloc()&nbsp;和&nbsp;malloc()&nbsp;管理内存”&nbsp;（搜索文章编号）,&nbsp;包含了有关这些主题的更多背景知识。另外，有关堆 实现和设计的详细讨论也可在下列著作中找到：“Dynamic&nbsp;Storage&nbsp;Allocation: &nbsp;A&nbsp;Survey&nbsp;and&nbsp;Critical&nbsp;Review”，作者&nbsp;Paul&nbsp;R.&nbsp;Wilson、Mark&nbsp;S.&nbsp;Johnstone、 Michael&nbsp;Neely&nbsp;和&nbsp;David&nbsp;Boles； “International&nbsp;Workshop&nbsp;on&nbsp;Memory&nbsp;Management”,&nbsp;作者&nbsp;Kinross,&nbsp;Scotland,&nbsp;UK, &nbsp;1995&nbsp;年&nbsp;9&nbsp;月(<IMG alt="" src="http://club.5ivb.net/pic/url.gif" align=absMiddle border=0><A href="http://www.cs.utexas.edu/users/oops/papers.html" target=_blank><FONT color=#000000><U>http://www.cs.utexas.edu/users/oops/papers.html</U></FONT></A>)（英文）。</P>
<P>Windows&nbsp;NT&nbsp; 的实现（Windows&nbsp;NT&nbsp;版本&nbsp;4.0&nbsp;和更新版本）&nbsp;使用了&nbsp;127&nbsp;个大小从&nbsp;8&nbsp;到&nbsp;1,024&nbsp;字节的&nbsp;8&nbsp;字节对齐块空闲列表和一个“大 块”列表。“大块”列表（空闲列表[0]）&nbsp;保存大于&nbsp;1,024&nbsp;字节的块。空闲列表容纳了用双向链表链接在一起的对象。默认情况下，“进程堆”执行收 集操作。（收集是将相邻空闲块合并成一个大块的操作。）收集耗费了额外的周期，但减少了堆块的内部碎片。</P>
<P>单一全局锁保护堆，防止多线程式的使用。（请参见“Server&nbsp;Performance&nbsp;and&nbsp;Scalability&nbsp;Killers”中的第一个注意事项,&nbsp;George&nbsp;Reilly&nbsp;所著，在&nbsp;“MSDN&nbsp;Online&nbsp;Web&nbsp;Workshop”上（站点：<IMG alt="" src="http://club.5ivb.net/pic/url.gif" align=absMiddle border=0><A href="http://msdn.microsoft.com/workshop/server/iis/tencom.asp" target=_blank><FONT color=#000000><U>http://msdn.microsoft.com/workshop/server/iis/tencom.asp</U></FONT></A>（英文）。）单一全局锁本质上是用来保护堆数据结构，防止跨多线程的随机存取。若堆操作太频繁，单一全局锁会对性能有不利的影响。</P>
<P>什么是常见的堆性能问题？<BR>以下是您使用堆时会遇到的最常见问题：&nbsp;</P>
<P>分配操作造成的速度减慢。光分配就耗费很长时间。最可能导致运行速度减慢原因是空闲列表没有块，所以运行时分配程序代码会耗费周期寻找较大的空闲块，或从后端分配程序分配新块。</P>
<P><BR>释放操作造成的速度减慢。释放操作耗费较多周期，主要是启用了收集操作。收集期间，每个释放操作“查找”它的相邻块，取出它们并构造成较大块，然后再把此较大块插入空闲列表。在查找期间，内存可能会随机碰到，从而导致高速缓存不能命中，性能降低。</P>
<P><BR>堆 竞争造成的速度减慢。当两个或多个线程同时访问数据，而且一个线程继续进行之前必须等待另一个线程完成时就发生竞争。竞争总是导致麻烦；这也是目前多处理 器系统遇到的最大问题。当大量使用内存块的应用程序或&nbsp;DLL&nbsp;以多线程方式运行（或运行于多处理器系统上）时将导致速度减慢。单一锁定的使用—常用的解 决方案—意味着使用堆的所有操作是序列化的。当等待锁定时序列化会引起线程切换上下文。可以想象交叉路口闪烁的红灯处走走停停导致的速度减慢。&nbsp;<BR>竞争通常会导致线程和进程的上下文切换。上下文切换的开销是很大的，但开销更大的是数据从处理器高速缓存中丢失，以及后来线程复活时的数据重建。</P>
<P>堆 破坏造成的速度减慢。造成堆破坏的原因是应用程序对堆块的不正确使用。通常情形包括释放已释放的堆块或使用已释放的堆块，以及块的越界重写等明显问题。 （破坏不在本文讨论范围之内。有关内存重写和泄漏等其他细节，请参见&nbsp;Microsoft&nbsp;Visual&nbsp;C++(R)&nbsp;调试文档&nbsp;。）</P>
<P><BR>频繁的分配和重分配造成的速度减慢。这是使用脚本语言时非常普遍的现象。如字符串被反复分配，随重分配增长和释放。不要这样做，如果可能，尽量分配大字符串和使用缓冲区。另一种方法就是尽量少用连接操作。<BR>竞争是在分配和释放操作中导致速度减慢的问题。理想情况下，希望使用没有竞争和快速分配/释放的堆。可惜，现在还没有这样的通用堆，也许将来会有。</P>
<P>在所有的服务器系统中（如&nbsp;IIS、MSProxy、DatabaseStacks、网络服务器、&nbsp;Exchange&nbsp;和其他）,&nbsp;堆锁定实在是个大瓶颈。处理器数越多，竞争就越会恶化。</P>
<P>尽量减少堆的使用<BR>现在您明白使用堆时存在的问题了，难道您不想拥有能解决这些问题的超级魔棒吗？我可希望有。但没有魔法能使堆运行加快—因此不要期望在产品出货之前的最后一星期能够大为改观。如果提前规划堆策略，情况将会大大好转。调整使用堆的方法，减少对堆的操作是提高性能的良方。</P>
<P>如何减少使用堆操作？通过利用数据结构内的位置可减少堆操作的次数。请考虑下列实例：</P>
<P>struct&nbsp;ObjectA&nbsp;{<BR>&nbsp;&nbsp;&nbsp;//&nbsp;objectA&nbsp;的数据&nbsp;<BR>}</P>
<P>struct&nbsp;ObjectB&nbsp;{<BR>&nbsp;&nbsp;&nbsp;//&nbsp;objectB&nbsp;的数据&nbsp;<BR>}</P>
<P>//&nbsp;同时使用&nbsp;objectA&nbsp;和&nbsp;objectB</P>
<P>//<BR>//&nbsp;使用指针&nbsp;<BR>//<BR>struct&nbsp;ObjectB&nbsp;{<BR>&nbsp;&nbsp;&nbsp;struct&nbsp;ObjectA&nbsp;*&nbsp;pObjA;<BR>&nbsp;&nbsp;&nbsp;//&nbsp;objectB&nbsp;的数据&nbsp;<BR>}</P>
<P>//<BR>//&nbsp;使用嵌入<BR>//<BR>struct&nbsp;ObjectB&nbsp;{<BR>&nbsp;&nbsp;&nbsp;struct&nbsp;ObjectA&nbsp;pObjA;<BR>&nbsp;&nbsp;&nbsp;//&nbsp;objectB&nbsp;的数据&nbsp;<BR>}</P>
<P>//<BR>//&nbsp;集合&nbsp;–&nbsp;在另一对象内使用&nbsp;objectA&nbsp;和&nbsp;objectB<BR>//</P>
<P>struct&nbsp;ObjectX&nbsp;{<BR>&nbsp;&nbsp;&nbsp;struct&nbsp;ObjectA&nbsp;&nbsp;objA;<BR>&nbsp;&nbsp;&nbsp;struct&nbsp;ObjectB&nbsp;&nbsp;objB;<BR>}</P>
<P>避免使用指针关联两个数据结构。如果使用指针关联两个数据结构，前面实例中的对象&nbsp;A&nbsp;和&nbsp;B&nbsp;将被分别分配和释放。这会增加额外开销—我们要避免这种做法。</P>
<P><BR>把带指针的子对象嵌入父对象。当对象中有指针时，则意味着对象中有动态元素（百分之八十）和没有引用的新位置。嵌入增加了位置从而减少了进一步分配/释放的需求。这将提高应用程序的性能。</P>
<P><BR>合并小对象形成大对象（聚合）。聚合减少分配和释放的块的数量。如果有几个开发者，各自开发设计的不同部分，则最终会有许多小对象需要合并。集成的挑战就是要找到正确的聚合边界。</P>
<P><BR>内 联缓冲区能够满足百分之八十的需要（aka&nbsp;80-20&nbsp;规则）。个别情况下，需要内存缓冲区来保存字符串/二进制数据，但事先不知道总字节数。估计并内 联一个大小能满足百分之八十需要的缓冲区。对剩余的百分之二十，可以分配一个新的缓冲区和指向这个缓冲区的指针。这样，就减少分配和释放调用并增加数据的 位置空间，从根本上提高代码的性能。</P>
<P><BR>在块中分配对象（块化）。块化是以组的方式一次分配多个对象的方法。如果对列表的项连续跟踪， 例如对一个&nbsp;{名称，值}&nbsp;对的列表，有两种选择：选择一是为每一个“名称-值”对分配一个节点；选择二是分配一个能容纳（如五个）“名称-值”对的结 构。例如，一般情况下，如果存储四对，就可减少节点的数量，如果需要额外的空间数量，则使用附加的链表指针。&nbsp;<BR>块化是友好的处理器高速缓存，特别是对于&nbsp;L1-高速缓存，因为它提供了增加的位置&nbsp;—不用说对于块分配，很多数据块会在同一个虚拟页中。</P>
<P>正确使用&nbsp;_amblksiz。C&nbsp;运行时&nbsp;(CRT)&nbsp;有它的自定义前端分配程序，该分配程序从后端（Win32&nbsp;堆）分配大小为&nbsp;_amblksiz&nbsp;的块。将&nbsp;_amblksiz&nbsp;设置为较高的值能潜在地减少对后端的调用次数。这只对广泛使用&nbsp;CRT&nbsp;的程序适用。<BR>使用上述技术将获得的好处会因对象类型、大小及工作量而有所不同。但总能在性能和可升缩性方面有所收获。另一方面，代码会有点特殊，但如果经过深思熟虑，代码还是很容易管理的。</P>
<P>其他提高性能的技术<BR>下面是一些提高速度的技术：&nbsp;</P>
<P>使用&nbsp;Windows&nbsp;NT5&nbsp;堆&nbsp;<BR>由于几个同事的努力和辛勤工作，1998&nbsp;年初&nbsp;Microsoft&nbsp;Windows(R)&nbsp;2000&nbsp;中有了几个重大改进：</P>
<P>改进了堆代码内的锁定。堆代码对每堆一个锁。全局锁保护堆数据结构，防止多线程式的使用。但不幸的是，在高通信量的情况下，堆仍受困于全局锁，导致高竞争和低性能。Windows&nbsp;2000&nbsp;中，锁内代码的临界区将竞争的可能性减到最小,从而提高了可伸缩性。</P>
<P><BR>使 用&nbsp;“Lookaside”列表。堆数据结构对块的所有空闲项使用了大小在&nbsp;8&nbsp;到&nbsp;1,024&nbsp;字节（以&nbsp;8-字节递增）的快速高速缓存。快速高速缓存 最初保护在全局锁内。现在，使用&nbsp;lookaside&nbsp;列表来访问这些快速高速缓存空闲列表。这些列表不要求锁定，而是使用&nbsp;64&nbsp;位的互锁操作，因此提 高了性能。</P>
<P><BR>内部数据结构算法也得到改进。<BR>这些改进避免了对分配高速缓存的需求，但不排除其他的优化。使用 &nbsp;Windows&nbsp;NT5&nbsp;堆评估您的代码；它对小于&nbsp;1,024&nbsp;字节&nbsp;(1&nbsp;KB)&nbsp;的块（来自前端分配程序的块）是最佳的。GlobalAlloc ()&nbsp;和&nbsp;LocalAlloc()&nbsp;建立在同一堆上，是存取每个进程堆的通用机制。如果希望获得高的局部性能，则使用&nbsp;Heap(R)&nbsp;API&nbsp;来存取 每个进程堆，或为分配操作创建自己的堆。如果需要对大块操作，也可以直接使用&nbsp;VirtualAlloc()&nbsp;/&nbsp;VirtualFree()&nbsp;操作。</P>
<P>上 述改进已在&nbsp;Windows&nbsp;2000&nbsp;beta&nbsp;2&nbsp;和&nbsp;Windows&nbsp;NT&nbsp;4.0&nbsp;SP4&nbsp;中使用。改进后，堆锁的竞争率显著降低。这使所有 &nbsp;Win32&nbsp;堆的直接用户受益。CRT&nbsp;堆建立于&nbsp;Win32&nbsp;堆的顶部，但它使用自己的小块堆，因而不能从&nbsp;Windows&nbsp;NT&nbsp;改进中受益。 （Visual&nbsp;C++&nbsp;版本&nbsp;6.0&nbsp;也有改进的堆分配程序。）</P>
<P>使用分配高速缓存&nbsp;<BR>分配高速缓存允许高速缓存分配的块，以便将来重用。这能够减少对进程堆（或全局堆）的分配/释放调用的次数，也允许最大限度的重用曾经分配的块。另外，分配高速缓存允许收集统计信息,以便较好地理解对象在较高层次上的使用。</P>
<P>典 型地，自定义堆分配程序在进程堆的顶部实现。自定义堆分配程序与系统堆的行为很相似。主要的差别是它在进程堆的顶部为分配的对象提供高速缓存。高速缓存设 计成一套固定大小（如&nbsp;32&nbsp;字节、64&nbsp;字节、128&nbsp;字节等）。这一个很好的策略，但这种自定义堆分配程序丢失与分配和释放的对象相关的“语义信 息”。&nbsp;</P>
<P>与自定义堆分配程序相反，“分配高速缓存”作为每类分配高速缓存来实现。除能够提供自定义堆分配程序的所有好处之外，它们还能够保 留大量语义信息。每个分配高速缓存处理程序与一个目标二进制对象关联。它能够使用一套参数进行初始化，这些参数表示并发级别、对象大小和保持在空闲列表中 的元素的数量等。分配高速缓存处理程序对象维持自己的私有空闲实体池（不超过指定的阀值）并使用私有保护锁。合在一起，分配高速缓存和私有锁减少了与主系 统堆的通信量，因而提供了增加的并发、最大限度的重用和较高的可伸缩性。</P>
<P>需要使用清理程序来定期检查所有分配高速缓存处理程序的活动情况并回收未用的资源。如果发现没有活动，将释放分配对象的池，从而提高性能。</P>
<P>可以审核每个分配/释放活动。第一级信息包括对象、分配和释放调用的总数。通过查看它们的统计信息可以得出各个对象之间的语义关系。利用以上介绍的许多技术之一，这种关系可以用来减少内存分配。</P>
<P>分配高速缓存也起到了调试助手的作用，帮助您跟踪没有完全清除的对象数量。通过查看动态堆栈返回踪迹和除没有清除的对象之外的签名，甚至能够找到确切的失败的调用者。</P>
<P>MP&nbsp;堆&nbsp;<BR>MP&nbsp; 堆是对多处理器友好的分布式分配的程序包，在&nbsp;Win32&nbsp;SDK（Windows&nbsp;NT&nbsp;4.0&nbsp;和更新版本）中可以得到。最初由&nbsp;JVert&nbsp;实现， 此处堆抽象建立在&nbsp;Win32&nbsp;堆程序包的顶部。MP&nbsp;堆创建多个&nbsp;Win32&nbsp;堆，并试图将分配调用分布到不同堆，以减少在所有单一锁上的竞争。</P>
<P>本 程序包是好的步骤&nbsp;—一种改进的&nbsp;MP-友好的自定义堆分配程序。但是，它不提供语义信息和缺乏统计功能。通常将&nbsp;MP&nbsp;堆作为&nbsp;SDK&nbsp;库来使用。如果 使用这个&nbsp;SDK&nbsp;创建可重用组件，您将大大受益。但是，如果在每个&nbsp;DLL&nbsp;中建立这个&nbsp;SDK&nbsp;库，将增加工作设置。</P>
<P>重新思考算法和数据结构&nbsp;<BR>要 在多处理器机器上伸缩，则算法、实现、数据结构和硬件必须动态伸缩。请看最经常分配和释放的数据结构。试问，“我能用不同的数据结构完成此工作吗？”例 如，如果在应用程序初始化时加载了只读项的列表，这个列表不必是线性链接的列表。如果是动态分配的数组就非常好。动态分配的数组将减少内存中的堆块和碎 片，从而增强性能。</P>
<P>减少需要的小对象的数量减少堆分配程序的负载。例如，我们在服务器的关键处理路径上使用五个不同的对象，每个对象单独分配和释放。一起高速缓存这些对象，把堆调用从五个减少到一个，显著减少了堆的负载，特别当每秒钟处理&nbsp;1,000&nbsp;个以上的请求时。</P>
<P>如果大量使用“Automation”结构，请考虑从主线代码中删除“Automation&nbsp;BSTR”，或至少避免重复的&nbsp;BSTR&nbsp;操作。（BSTR&nbsp;连接导致过多的重分配和分配/释放操作。）</P>
<P>摘要<BR>对所有平台往往都存在堆实现，因此有巨大的开销。每个单独代码都有特定的要求，但设计能采用本文讨论的基本理论来减少堆之间的相互作用。&nbsp;</P>
<P>评价您的代码中堆的使用。</P>
<P><BR>改进您的代码，以使用较少的堆调用：分析关键路径和固定数据结构。</P>
<P><BR>在实现自定义的包装程序之前使用量化堆调用成本的方法。</P>
<P><BR>如果对性能不满意，请要求&nbsp;OS&nbsp;组改进堆。更多这类请求意味着对改进堆的更多关注。</P>
<P><BR>要求&nbsp;C&nbsp;运行时组针对&nbsp;OS&nbsp;所提供的堆制作小巧的分配包装程序。随着&nbsp;OS&nbsp;堆的改进，C&nbsp;运行时堆调用的成本将减小。</P><BR>操作系统（Windows&nbsp;NT&nbsp;家族）正在不断改进堆。请随时关注和利用这些改进。<BR>Murali&nbsp;Krishnan&nbsp; 是&nbsp;Internet&nbsp;Information&nbsp;Server&nbsp;(IIS)&nbsp;组的首席软件设计工程师。从&nbsp;1.0&nbsp;版本开始他就设计&nbsp;IIS，并成功发行 了&nbsp;1.0&nbsp;版本到&nbsp;4.0&nbsp;版本。Murali&nbsp;组织并领导&nbsp;IIS&nbsp;性能组三年&nbsp;(1995-1998),&nbsp;从一开始就影响&nbsp;IIS&nbsp;性能。他拥有威 斯康星州&nbsp;Madison&nbsp;大学的&nbsp;M.S.和印度&nbsp;Anna&nbsp;大学的&nbsp;B.S.。工作之外，他喜欢阅读、打排球和家庭烹饪。<BR><BR><BR><IMG alt="" src="http://club.5ivb.net/pic/url.gif" align=absMiddle border=0><A href="http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=172835" target=_blank><FONT color=#000000><U>http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=172835</U></FONT></A><BR>我在学习对象的生存方式的时候见到一种是在堆栈(stack)之中，如下&nbsp;&nbsp;<BR>CObject&nbsp;&nbsp;object;&nbsp;&nbsp;<BR>还有一种是在堆(heap)中&nbsp;&nbsp;如下&nbsp;&nbsp;<BR>CObject*&nbsp;&nbsp;pobject=new&nbsp;&nbsp;CObject();&nbsp;&nbsp;<BR>&nbsp;<BR>请问&nbsp;&nbsp;<BR>（1）这两种方式有什么区别？&nbsp;&nbsp;<BR>（2）堆栈与堆有什么区别？？&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>---------------------------------------------------------------&nbsp;&nbsp;<BR>&nbsp;<BR>1)&nbsp;&nbsp;about&nbsp;&nbsp;stack,&nbsp;&nbsp;system&nbsp;&nbsp;will&nbsp;&nbsp;allocate&nbsp;&nbsp;memory&nbsp;&nbsp;to&nbsp;&nbsp;the&nbsp;&nbsp;instance&nbsp;&nbsp;of&nbsp;&nbsp;object&nbsp;&nbsp;automatically,&nbsp;&nbsp;and&nbsp;&nbsp;to&nbsp;&nbsp;the <BR>&nbsp;heap,&nbsp;&nbsp;you&nbsp;&nbsp;must&nbsp;&nbsp;allocate&nbsp;&nbsp;memory&nbsp;&nbsp;to&nbsp;&nbsp;the&nbsp;&nbsp;instance&nbsp;&nbsp;of&nbsp;&nbsp;object&nbsp;&nbsp;with&nbsp;&nbsp;new&nbsp;&nbsp;or&nbsp;&nbsp;malloc&nbsp;&nbsp;manually.&nbsp;&nbsp;<BR>2)&nbsp;&nbsp;when&nbsp;&nbsp;function&nbsp;&nbsp;ends,&nbsp;&nbsp;system&nbsp;&nbsp;will&nbsp;&nbsp;automatically&nbsp;&nbsp;free&nbsp;&nbsp;the&nbsp;&nbsp;memory&nbsp;&nbsp;area&nbsp;&nbsp;of&nbsp;&nbsp;stack,&nbsp;&nbsp;but&nbsp;&nbsp;to&nbsp;&nbsp;the&nbsp; <BR>heap,&nbsp;&nbsp;you&nbsp;&nbsp;must&nbsp;&nbsp;free&nbsp;&nbsp;the&nbsp;&nbsp;memory&nbsp;&nbsp;area&nbsp;&nbsp;manually&nbsp;&nbsp;with&nbsp;&nbsp;free&nbsp;&nbsp;or&nbsp;&nbsp;delete,&nbsp;&nbsp;else&nbsp;&nbsp;it&nbsp;&nbsp;will&nbsp;&nbsp;result&nbsp;&nbsp;in&nbsp;&nbsp;memory <BR>leak.&nbsp;&nbsp;<BR>3)栈内存分配运算内置于处理器的指令集中，效率很高，但是分配的内存容量有限。&nbsp;&nbsp;<BR>4）堆上分配的内存可以有我们自己决定，使用非常灵活。&nbsp;&nbsp;<BR>---------------------------------------------------------------</div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200711474439988</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200711474439988</guid>
    <pubDate>Tue, 4 Dec 2007 19:44:39 +0800</pubDate>
    <dcterms:modified>2007-12-04T19:44:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[* 堆和栈的区别1]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071147424832</link>
    <description><![CDATA[<div><P>非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!</P>堆和栈的区别<BR>一、预备知识—程序的内存分配<BR>一个由c/C++编译的程序占用的内存分为以下几个部分<BR>1、栈区（stack）—&nbsp;由编译器自动分配释放&nbsp;，存放函数的参数值，局部变量的值等。其操作方式类似于数据结构中的栈。<BR>2、堆区（heap）&nbsp;—&nbsp;一般由程序员分配释放，&nbsp;若程序员不释放，程序结束时可能由OS回收&nbsp;。注意它与数据结构中的堆是两回事，分配方式倒是类似于链表，呵呵。<BR>3、全局区（静态区）（static）—，全局变量和静态变量的存储是放在一块的，初始化的全局变量和静态变量在一块区域，&nbsp;未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。&nbsp;-&nbsp;程序结束后有系统释放&nbsp;<BR>4、文字常量区—常量字符串就是放在这里的。&nbsp;程序结束后由系统释放<BR>5、程序代码区—存放函数体的二进制代码。<BR>二、例子程序&nbsp;<BR>这是一个前辈写的，非常详细&nbsp;<BR>//main.cpp&nbsp;<BR>int&nbsp;a&nbsp;=&nbsp;0;&nbsp;全局初始化区&nbsp;<BR>char&nbsp;*p1;&nbsp;全局未初始化区&nbsp;<BR>main()&nbsp;<BR>{&nbsp;<BR>int&nbsp;b;&nbsp;栈&nbsp;<BR>char&nbsp;s[]&nbsp;=&nbsp;"abc";&nbsp;栈&nbsp;<BR>char&nbsp;*p2;&nbsp;栈&nbsp;<BR>char&nbsp;*p3&nbsp;=&nbsp;"123456";&nbsp;123456\0在常量区，p3在栈上。&nbsp;<BR>static&nbsp;int&nbsp;c&nbsp;=0；&nbsp;全局（静态）初始化区&nbsp;<BR>p1&nbsp;=&nbsp;(char&nbsp;*)malloc(10);&nbsp;<BR>p2&nbsp;=&nbsp;(char&nbsp;*)malloc(20);&nbsp;<BR>分配得来得10和20字节的区域就在堆区。&nbsp;<BR>strcpy(p1,&nbsp;"123456");&nbsp;123456\0放在常量区，编译器可能会将它与p3所指向的"123456"优化成一个地方。&nbsp;<BR>}&nbsp; 
<P><BR>二、堆和栈的理论知识&nbsp;<BR>2.1申请方式&nbsp;<BR>stack:&nbsp;<BR>由系统自动分配。&nbsp;例如，声明在函数中一个局部变量&nbsp;int&nbsp;b;&nbsp;系统自动在栈中为b开辟空间&nbsp;<BR>heap:&nbsp;<BR>需要程序员自己申请，并指明大小，在c中malloc函数&nbsp;<BR>如p1&nbsp;=&nbsp;(char&nbsp;*)malloc(10);&nbsp;<BR>在C++中用new运算符&nbsp;<BR>如p2&nbsp;=&nbsp;(char&nbsp;*)malloc(10);&nbsp;<BR>但是注意p1、p2本身是在栈中的。&nbsp;</P>
<P><BR>2.2&nbsp;<BR>申请后系统的响应&nbsp;<BR>栈：只要栈的剩余空间大于所申请空间，系统将为程序提供内存，否则将报异常提示栈溢出。&nbsp;<BR>堆：首先应该知道操作系统有一个记录空闲内存地址的链表，当系统收到程序的申请时，&nbsp;<BR>会 遍历该链表，寻找第一个空间大于所申请空间的堆结点，然后将该结点从空闲结点链表中删除，并将该结点的空间分配给程序，另外，对于大多数系统，会在这块内 存空间中的首地址处记录本次分配的大小，这样，代码中的delete语句才能正确的释放本内存空间。另外，由于找到的堆结点的大小不一定正好等于申请的大 小，系统会自动的将多余的那部分重新放入空闲链表中。&nbsp;</P>
<P>2.3申请大小的限制&nbsp;<BR>栈：在Windows下,栈是向低地址扩展的数据结 构，是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的，在WINDOWS下，栈的大小是2M（也有的说是1M，总之是 一个编译时就确定的常数），如果申请的空间超过栈的剩余空间时，将提示overflow。因此，能从栈获得的空间较小。&nbsp;<BR>堆：堆是向高地址扩展的数据结构，是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的，自然是不连续的，而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见，堆获得的空间比较灵活，也比较大。&nbsp;</P>
<P><BR>2.4申请效率的比较：&nbsp;<BR>栈由系统自动分配，速度较快。但程序员是无法控制的。&nbsp;<BR>堆是由new分配的内存，一般速度比较慢，而且容易产生内存碎片,不过用起来最方便.&nbsp;<BR>另外，在WINDOWS下，最好的方式是用VirtualAlloc分配内存，他不是在堆，也不是在栈是直接在进程的地址空间中保留一快内存，虽然用起来最不方便。但是速度快，也最灵活。&nbsp;</P>
<P>2.5堆和栈中的存储内容&nbsp;<BR>栈：&nbsp;在函数调用时，第一个进栈的是主函数中后的下一条指令（函数调用语句的下一条可执行语句）的地址，然后是函数的各个参数，在大多数的C编译器中，参数是由右往左入栈的，然后是函数中的局部变量。注意静态变量是不入栈的。&nbsp;<BR>当本次函数调用结束后，局部变量先出栈，然后是参数，最后栈顶指针指向最开始存的地址，也就是主函数中的下一条指令，程序由该点继续运行。&nbsp;<BR>堆：一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。&nbsp;</P>
<P>2.6存取效率的比较&nbsp;</P>
<P>char&nbsp;s1[]&nbsp;=&nbsp;"aaaaaaaaaaaaaaa";&nbsp;<BR>char&nbsp;*s2&nbsp;=&nbsp;"bbbbbbbbbbbbbbbbb";&nbsp;<BR>aaaaaaaaaaa是在运行时刻赋值的；&nbsp;<BR>而bbbbbbbbbbb是在编译时就确定的；&nbsp;<BR>但是，在以后的存取中，在栈上的数组比指针所指向的字符串(例如堆)快。&nbsp;<BR>比如：&nbsp;<BR>#include&nbsp;<BR>void&nbsp;main()&nbsp;<BR>{&nbsp;<BR>char&nbsp;a&nbsp;=&nbsp;1;&nbsp;<BR>char&nbsp;c[]&nbsp;=&nbsp;"1234567890";&nbsp;<BR>char&nbsp;*p&nbsp;="1234567890";&nbsp;<BR>a&nbsp;=&nbsp;c[1];&nbsp;<BR>a&nbsp;=&nbsp;p[1];&nbsp;<BR>return;&nbsp;<BR>}&nbsp;<BR>对应的汇编代码&nbsp;<BR>10:&nbsp;a&nbsp;=&nbsp;c[1];&nbsp;<BR>00401067&nbsp;8A&nbsp;4D&nbsp;F1&nbsp;mov&nbsp;cl,byte&nbsp;ptr&nbsp;[ebp-0Fh]&nbsp;<BR>0040106A&nbsp;88&nbsp;4D&nbsp;FC&nbsp;mov&nbsp;byte&nbsp;ptr&nbsp;[ebp-4],cl&nbsp;<BR>11:&nbsp;a&nbsp;=&nbsp;p[1];&nbsp;<BR>0040106D&nbsp;8B&nbsp;55&nbsp;EC&nbsp;mov&nbsp;edx,dword&nbsp;ptr&nbsp;[ebp-14h]&nbsp;<BR>00401070&nbsp;8A&nbsp;42&nbsp;01&nbsp;mov&nbsp;al,byte&nbsp;ptr&nbsp;[edx+1]&nbsp;<BR>00401073&nbsp;88&nbsp;45&nbsp;FC&nbsp;mov&nbsp;byte&nbsp;ptr&nbsp;[ebp-4],al&nbsp;<BR>第一种在读取时直接就把字符串中的元素读到寄存器cl中，而第二种则要先把指针值读到edx中，在根据edx读取字符，显然慢了。&nbsp;</P>
<P><BR>2.7小结：&nbsp;<BR>堆和栈的区别可以用如下的比喻来看出：&nbsp;<BR>使用栈就象我们去饭馆里吃饭，只管点菜（发出申请）、付钱、和吃（使用），吃饱了就走，不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作，他的好处是快捷，但是自由度小。&nbsp;<BR>使用堆就象是自己动手做喜欢吃的菜肴，比较麻烦，但是比较符合自己的口味，而且自由度大。&nbsp;<BR><BR><BR><BR></P>
<P>windows进程中的内存结构</P>
<P><BR>在阅读本文之前，如果你连堆栈是什么多不知道的话，请先阅读文章后面的基础知识。&nbsp;</P>
<P>接触过编程的人都知道，高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢？程序又是如何使用这些变量的呢？下面就会对此进行深入的讨论。下文中的C语言代码如没有特别声明，默认都使用VC编译的release版。&nbsp;</P>
<P>首先，来了解一下&nbsp;C&nbsp;语言的变量是如何在内存分部的。C&nbsp;语言有全局变量(Global)、本地变量(Local)，静态变量(Static)、寄存器变量(Regeister)。每种变量都有不同的分配方式。先来看下面这段代码：&nbsp;</P>
<P>#include&nbsp;&lt;stdio.h&gt;&nbsp;</P>
<P>int&nbsp;g1=0,&nbsp;g2=0,&nbsp;g3=0;&nbsp;</P>
<P>int&nbsp;main()&nbsp;<BR>{&nbsp;<BR>static&nbsp;int&nbsp;s1=0,&nbsp;s2=0,&nbsp;s3=0;&nbsp;<BR>int&nbsp;v1=0,&nbsp;v2=0,&nbsp;v3=0;&nbsp;</P>
<P>//打印出各个变量的内存地址&nbsp;</P>
<P>printf("0x%08x\n",&amp;v1);&nbsp;//打印各本地变量的内存地址&nbsp;<BR>printf("0x%08x\n",&amp;v2);&nbsp;<BR>printf("0x%08x\n\n",&amp;v3);&nbsp;<BR>printf("0x%08x\n",&amp;g1);&nbsp;//打印各全局变量的内存地址&nbsp;<BR>printf("0x%08x\n",&amp;g2);&nbsp;<BR>printf("0x%08x\n\n",&amp;g3);&nbsp;<BR>printf("0x%08x\n",&amp;s1);&nbsp;//打印各静态变量的内存地址&nbsp;<BR>printf("0x%08x\n",&amp;s2);&nbsp;<BR>printf("0x%08x\n\n",&amp;s3);&nbsp;<BR>return&nbsp;0;&nbsp;<BR>}&nbsp;</P>
<P>编译后的执行结果是：&nbsp;</P>
<P>0x0012ff78&nbsp;<BR>0x0012ff7c&nbsp;<BR>0x0012ff80&nbsp;</P>
<P>0x004068d0&nbsp;<BR>0x004068d4&nbsp;<BR>0x004068d8&nbsp;</P>
<P>0x004068dc&nbsp;<BR>0x004068e0&nbsp;<BR>0x004068e4&nbsp;</P>
<P>输 出的结果就是变量的内存地址。其中v1,v2,v3是本地变量，g1,g2,g3是全局变量，s1,s2,s3是静态变量。你可以看到这些变量在内存是连 续分布的，但是本地变量和全局变量分配的内存地址差了十万八千里，而全局变量和静态变量分配的内存是连续的。这是因为本地变量和全局/静态变量是分配在不 同类型的内存区域中的结果。对于一个进程的内存空间而言，可以在逻辑上分成3个部份：代码区，静态数据区和动态数据区。动态数据区一般就是“堆栈”。“栈 (stack)”和“堆(heap)”是两种不同的动态数据区，栈是一种线性结构，堆是一种链式结构。进程的每个线程都有私有的“栈”，所以每个线程虽然 代码一样，但本地变量的数据都是互不干扰。一个堆栈可以通过“基地址”和“栈顶”地址来描述。全局变量和静态变量分配在静态数据区，本地变量分配在动态数 据区，即堆栈中。程序通过堆栈的基地址和偏移量来访问本地变量。&nbsp;</P>
<P><BR>├———————┤低端内存区域&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;动态数据区&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;代码区&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;静态数据区&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤高端内存区域&nbsp;</P>
<P><BR>堆 栈是一个先进后出的数据结构，栈顶地址总是小于等于栈的基地址。我们可以先了解一下函数调用的过程，以便对堆栈在程序中的作用有更深入的了解。不同的语言 有不同的函数调用规定，这些因素有参数的压入规则和堆栈的平衡。windows&nbsp;API的调用规则和ANSI&nbsp;C的函数调用规则是不一样的，前者由被调函 数调整堆栈，后者由调用者调整堆栈。两者通过“__stdcall”和“__cdecl”前缀区分。先看下面这段代码：&nbsp;</P>
<P>#include&nbsp;&lt;stdio.h&gt;&nbsp;</P>
<P>void&nbsp;__stdcall&nbsp;func(int&nbsp;param1,int&nbsp;param2,int&nbsp;param3)&nbsp;<BR>{&nbsp;<BR>int&nbsp;var1=param1;&nbsp;<BR>int&nbsp;var2=param2;&nbsp;<BR>int&nbsp;var3=param3;&nbsp;<BR>printf("0x%08x\n",&para;m1);&nbsp;//打印出各个变量的内存地址&nbsp;<BR>printf("0x%08x\n",&para;m2);&nbsp;<BR>printf("0x%08x\n\n",&para;m3);&nbsp;<BR>printf("0x%08x\n",&amp;var1);&nbsp;<BR>printf("0x%08x\n",&amp;var2);&nbsp;<BR>printf("0x%08x\n\n",&amp;var3);&nbsp;<BR>return;&nbsp;<BR>}&nbsp;</P>
<P>int&nbsp;main()&nbsp;<BR>{&nbsp;<BR>func(1,2,3);&nbsp;<BR>return&nbsp;0;&nbsp;<BR>}&nbsp;</P>
<P>编译后的执行结果是：&nbsp;</P>
<P>0x0012ff78&nbsp;<BR>0x0012ff7c&nbsp;<BR>0x0012ff80&nbsp;</P>
<P>0x0012ff68&nbsp;<BR>0x0012ff6c&nbsp;<BR>0x0012ff70&nbsp;</P>
<P><BR>├———————┤&lt;—函数执行时的栈顶（ESP）、低端内存区域&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;var&nbsp;1&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;var&nbsp;2&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;var&nbsp;3&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;RET&nbsp;│&nbsp;<BR>├———————┤&lt;—“__cdecl”函数返回后的栈顶（ESP）&nbsp;<BR>│&nbsp;parameter&nbsp;1&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;parameter&nbsp;2&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;parameter&nbsp;3&nbsp;│&nbsp;<BR>├———————┤&lt;—“__stdcall”函数返回后的栈顶（ESP）&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&lt;—栈底（基地址&nbsp;EBP）、高端内存区域&nbsp;</P>
<P><BR>上 图就是函数调用过程中堆栈的样子了。首先，三个参数以从又到左的次序压入堆栈，先压“param3”，再压“param2”，最后压入“param1”； 然后压入函数的返回地址(RET)，接着跳转到函数地址接着执行（这里要补充一点，介绍UNIX下的缓冲溢出原理的文章中都提到在压入RET后，继续压入 当前EBP，然后用当前ESP代替EBP。然而，有一篇介绍windows下函数调用的文章中说，在windows下的函数调用也有这一步骤，但根据我的 实际调试，并未发现这一步，这还可以从param3和var1之间只有4字节的间隙这点看出来）；第三步，将栈顶(ESP)减去一个数，为本地变量分配内 存空间，上例中是减去12字节(ESP=ESP-3*4，每个int变量占用4个字节)；接着就初始化本地变量的内存空间。由于“__stdcall”调 用由被调函数调整堆栈，所以在函数返回前要恢复堆栈，先回收本地变量占用的内存(ESP=ESP+3*4)，然后取出返回地址，填入EIP寄存器，回收先 前压入参数占用的内存(ESP=ESP+3*4)，继续执行调用者的代码。参见下列汇编代码：&nbsp;</P>
<P>;--------------func&nbsp;函数的汇编代码-------------------&nbsp;</P>
<P>:00401000&nbsp;83EC0C&nbsp;sub&nbsp;esp,&nbsp;0000000C&nbsp;//创建本地变量的内存空间&nbsp;<BR>:00401003&nbsp;8B442410&nbsp;mov&nbsp;eax,&nbsp;dword&nbsp;ptr&nbsp;[esp+10]&nbsp;<BR>:00401007&nbsp;8B4C2414&nbsp;mov&nbsp;ecx,&nbsp;dword&nbsp;ptr&nbsp;[esp+14]&nbsp;<BR>:0040100B&nbsp;8B542418&nbsp;mov&nbsp;edx,&nbsp;dword&nbsp;ptr&nbsp;[esp+18]&nbsp;<BR>:0040100F&nbsp;89442400&nbsp;mov&nbsp;dword&nbsp;ptr&nbsp;[esp],&nbsp;eax&nbsp;<BR>:00401013&nbsp;8D442410&nbsp;lea&nbsp;eax,&nbsp;dword&nbsp;ptr&nbsp;[esp+10]&nbsp;<BR>:00401017&nbsp;894C2404&nbsp;mov&nbsp;dword&nbsp;ptr&nbsp;[esp+04],&nbsp;ecx&nbsp;</P>
<P>……………………（省略若干代码）&nbsp;</P>
<P>:00401075&nbsp;83C43C&nbsp;add&nbsp;esp,&nbsp;0000003C&nbsp;;恢复堆栈，回收本地变量的内存空间&nbsp;<BR>:00401078&nbsp;C3&nbsp;ret&nbsp;000C&nbsp;;函数返回，恢复参数占用的内存空间&nbsp;<BR>;如果是“__cdecl”的话，这里是“ret”，堆栈将由调用者恢复&nbsp;</P>
<P>;-------------------函数结束-------------------------&nbsp;</P>
<P><BR>;--------------主程序调用func函数的代码--------------&nbsp;</P>
<P>:00401080&nbsp;6A03&nbsp;push&nbsp;00000003&nbsp;//压入参数param3&nbsp;<BR>:00401082&nbsp;6A02&nbsp;push&nbsp;00000002&nbsp;//压入参数param2&nbsp;<BR>:00401084&nbsp;6A01&nbsp;push&nbsp;00000001&nbsp;//压入参数param1&nbsp;<BR>:00401086&nbsp;E875FFFFFF&nbsp;call&nbsp;00401000&nbsp;//调用func函数&nbsp;<BR>;如果是“__cdecl”的话，将在这里恢复堆栈，“add&nbsp;esp,&nbsp;0000000C”&nbsp;</P>
<P>聪明的读者看到这里，差不多就明白缓冲溢出的原理了。先来看下面的代码：&nbsp;</P>
<P>#include&nbsp;&lt;stdio.h&gt;&nbsp;<BR>#include&nbsp;&lt;string.h&gt;&nbsp;</P>
<P>void&nbsp;__stdcall&nbsp;func()&nbsp;<BR>{&nbsp;<BR>char&nbsp;lpBuff[8]="\0";&nbsp;<BR>strcat(lpBuff,"AAAAAAAAAAA");&nbsp;<BR>return;&nbsp;<BR>}&nbsp;</P>
<P>int&nbsp;main()&nbsp;<BR>{&nbsp;<BR>func();&nbsp;<BR>return&nbsp;0;&nbsp;<BR>}&nbsp;</P>
<P>编 译后执行一下回怎么样？哈，“"0x00414141"指令引用的"0x00000000"内存。该内存不能为"read"。”，“非法操作”喽！ "41"就是"A"的16进制的ASCII码了，那明显就是strcat这句出的问题了。"lpBuff"的大小只有8字节，算进结尾的\0，那 strcat最多只能写入7个"A"，但程序实际写入了11个"A"外加1个\0。再来看看上面那幅图，多出来的4个字节正好覆盖了RET的所在的内存空 间，导致函数返回到一个错误的内存地址，执行了错误的指令。如果能精心构造这个字符串，使它分成三部分，前一部份仅仅是填充的无意义数据以达到溢出的目 的，接着是一个覆盖RET的数据，紧接着是一段shellcode，那只要着个RET地址能指向这段shellcode的第一个指令，那函数返回时就能执 行shellcode了。但是软件的不同版本和不同的运行环境都可能影响这段shellcode在内存中的位置，那么要构造这个RET是十分困难的。一般 都在RET和shellcode之间填充大量的NOP指令，使得exploit有更强的通用性。&nbsp;</P>
<P><BR>├———————┤&lt;—低端内存区域&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&lt;—由exploit填入数据的开始&nbsp;<BR>│&nbsp;│&nbsp;<BR>│&nbsp;buffer&nbsp;│&lt;—填入无用的数据&nbsp;<BR>│&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;RET&nbsp;│&lt;—指向shellcode，或NOP指令的范围&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;NOP&nbsp;│&nbsp;<BR>│&nbsp;……&nbsp;│&lt;—填入的NOP指令，是RET可指向的范围&nbsp;<BR>│&nbsp;NOP&nbsp;│&nbsp;<BR>├———————┤&nbsp;<BR>│&nbsp;│&nbsp;<BR>│&nbsp;shellcode&nbsp;│&nbsp;<BR>│&nbsp;│&nbsp;<BR>├———————┤&lt;—由exploit填入数据的结束&nbsp;<BR>│&nbsp;……&nbsp;│&nbsp;<BR>├———————┤&lt;—高端内存区域&nbsp;</P>
<P><BR>windows下的动态数据除了可存放在栈中，还可以存放在堆中。了解C++的朋友都知道，C++可以使用new关键字来动态分配内存。来看下面的C++代码：&nbsp;</P>
<P>#include&nbsp;&lt;stdio.h&gt;&nbsp;<BR>#include&nbsp;&lt;iostream.h&gt;&nbsp;<BR>#include&nbsp;&lt;windows.h&gt;&nbsp;</P>
<P>void&nbsp;func()&nbsp;<BR>{&nbsp;<BR>char&nbsp;*buffer=new&nbsp;char[128];&nbsp;<BR>char&nbsp;bufflocal[128];&nbsp;<BR>static&nbsp;char&nbsp;buffstatic[128];&nbsp;<BR>printf("0x%08x\n",buffer);&nbsp;//打印堆中变量的内存地址&nbsp;<BR>printf("0x%08x\n",bufflocal);&nbsp;//打印本地变量的内存地址&nbsp;<BR>printf("0x%08x\n",buffstatic);&nbsp;//打印静态变量的内存地址&nbsp;<BR>}&nbsp;</P>
<P>void&nbsp;main()&nbsp;<BR>{&nbsp;<BR>func();&nbsp;<BR>return;&nbsp;<BR>}&nbsp;</P>
<P>程序执行结果为：&nbsp;</P>
<P>0x004107d0&nbsp;<BR>0x0012ff04&nbsp;<BR>0x004068c0&nbsp;</P>
<P>可以发现用new关键字分配的内存即不在栈中，也不在静态数据区。VC编译器是通过windows下的“堆(heap)”来实现new关键字的内存动态分配。在讲“堆”之前，先来了解一下和“堆”有关的几个API函数：&nbsp;</P>
<P>HeapAlloc&nbsp;在堆中申请内存空间&nbsp;<BR>HeapCreate&nbsp;创建一个新的堆对象&nbsp;<BR>HeapDestroy&nbsp;销毁一个堆对象&nbsp;<BR>HeapFree&nbsp;释放申请的内存&nbsp;<BR>HeapWalk&nbsp;枚举堆对象的所有内存块&nbsp;<BR>GetProcessHeap&nbsp;取得进程的默认堆对象&nbsp;<BR>GetProcessHeaps&nbsp;取得进程所有的堆对象&nbsp;<BR>LocalAlloc&nbsp;<BR>GlobalAlloc&nbsp;</P>
<P>当进程初始化时，系统会自动为进程创建一个默认堆，这个堆默认所占内存的大小为1M。堆对象由系统进行管理，它在内存中以链式结构存在。通过下面的代码可以通过堆动态申请内存空间：&nbsp;</P>
<P>HANDLE&nbsp;hHeap=GetProcessHeap();&nbsp;<BR>char&nbsp;*buff=HeapAlloc(hHeap,0,8);&nbsp;</P>
<P>其中hHeap是堆对象的句柄，buff是指向申请的内存空间的地址。那这个hHeap究竟是什么呢？它的值有什么意义吗？看看下面这段代码吧：&nbsp;</P>
<P>#pragma&nbsp;comment(linker,"/entry:main")&nbsp;//定义程序的入口&nbsp;<BR>#include&nbsp;&lt;windows.h&gt;&nbsp;</P>
<P>_CRTIMP&nbsp;int&nbsp;(__cdecl&nbsp;*printf)(const&nbsp;char&nbsp;*,&nbsp;...);&nbsp;//定义STL函数printf&nbsp;<BR>/*---------------------------------------------------------------------------&nbsp;<BR>写到这里，我们顺便来复习一下前面所讲的知识：&nbsp;<BR>(*注)printf函数是C语言的标准函数库中函数，VC的标准函数库由msvcrt.dll模块实现。&nbsp;<BR>由 函数定义可见，printf的参数个数是可变的，函数内部无法预先知道调用者压入的参数个数，函数只能通过分析第一个参数字符串的格式来获得压入参数的信 息，由于这里参数的个数是动态的，所以必须由调用者来平衡堆栈，这里便使用了__cdecl调用规则。BTW，Windows系统的API函数基本上是 __stdcall调用形式，只有一个API例外，那就是wsprintf，它使用__cdecl调用规则，同printf函数一样，这是由于它的参数个 数是可变的缘故。&nbsp;<BR>---------------------------------------------------------------------------*/&nbsp;<BR>void&nbsp;main()&nbsp;<BR>{&nbsp;<BR>HANDLE&nbsp;hHeap=GetProcessHeap();&nbsp;<BR>char&nbsp;*buff=HeapAlloc(hHeap,0,0x10);&nbsp;<BR>char&nbsp;*buff2=HeapAlloc(hHeap,0,0x10);&nbsp;<BR>HMODULE&nbsp;hMsvcrt=LoadLibrary("msvcrt.dll");&nbsp;<BR>printf=(void&nbsp;*)GetProcAddress(hMsvcrt,"printf");&nbsp;<BR>printf("0x%08x\n",hHeap);&nbsp;<BR>printf("0x%08x\n",buff);&nbsp;<BR>printf("0x%08x\n\n",buff2);&nbsp;<BR>}&nbsp;</P>
<P>执行结果为：&nbsp;</P>
<P>0x00130000&nbsp;<BR>0x00133100&nbsp;<BR>0x00133118&nbsp;</P>
<P>hHeap 的值怎么和那个buff的值那么接近呢？其实hHeap这个句柄就是指向HEAP首部的地址。在进程的用户区存着一个叫PEB(进程环境块)的结构，这个 结构中存放着一些有关进程的重要信息，其中在PEB首地址偏移0x18处存放的ProcessHeap就是进程默认堆的地址，而偏移0x90处存放了指向 进程所有堆的地址列表的指针。windows有很多API都使用进程的默认堆来存放动态数据，如windows&nbsp;2000下的所有ANSI版本的函数都是 在默认堆中申请内存来转换ANSI字符串到Unicode字符串的。对一个堆的访问是顺序进行的，同一时刻只能有一个线程访问堆中的数据，当多个线程同时 有访问要求时，只能排队等待，这样便造成程序执行效率下降。</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071147424832</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071147424832</guid>
    <pubDate>Tue, 4 Dec 2007 19:42:48 +0800</pubDate>
    <dcterms:modified>2007-12-04T19:42:48+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[数据类型转换与for循环逻辑图]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071146372888</link>
    <description><![CDATA[<div><P><BR>数据转换:（<FONT color=#ff0000>在赋值之前发生!!!!!!</FONT>）<BR>&nbsp;&nbsp; ●<U>低级到高级</U>的<FONT color=#0000ff>自动类型转换（特殊：<U><FONT color=#ff0000>高级到低级的</FONT></U>不超过低级型别范围的<FONT color=#ff0000>常量</FONT>赋值）</FONT></P>
<P>&nbsp;&nbsp; ●<U>高级到低级</U>的（缩小转换）、<FONT color=#0000ff>强制转换</FONT>&nbsp; {取模(或宽度截短)、截断（支小数点）}</P>
<P>//变化范围比被转的类型的范围要小。</P>
<P><FONT color=#999999>这种转换有时称为“缩小转换”（），因为你肯定要将源数据类型的值变小才能适合目标数据类型。</FONT></P>
<P><FONT color=#999999><FONT color=#000000>当double&gt;float取模后，<FONT color=#ff0000>有可能</FONT>将小数点去掉，造成仍超出其范围，取模失效，产生</FONT><FONT color=#ff0000>溢出</FONT>。</FONT></P>
<P>&nbsp;</P>
<P>&nbsp;&nbsp; ●包装类过渡类型能够转换</P>
<P>赋值：赋值不能超出表述范围，提示出错，这时只需强制转换(缩小转换)后再赋值</P>
<P>&nbsp;</P>
<P>小区别: <BR>(float)0.2&nbsp; &gt;&gt;&gt;double强制转换为float<BR>0.2f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;&gt;本身为float</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><A href="http://img.blog.163.com/photo/48dDBvjoQ1WIOVWpEqgAXA==/5109333777252085233.jpg" target=_blank><IMG height=389 src="http://img.blog.163.com/photo/48dDBvjoQ1WIOVWpEqgAXA==/5109333777252085233.jpg" width=403></A></P>
<P>&nbsp;</P>
<P>&nbsp;public class TestConvert {<BR>&nbsp;&nbsp;&nbsp; public static void main(String arg[]) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i1 = 123; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i2 = 456;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double d1 = (i1+i2)*1.2<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //系统将转换为double型运算</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float f1 = (float)((i1+i2)*1.2<FONT color=#808080>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //需要加强制转换符<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte b1 = 67; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte b2 = 89;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte b3 = (byte)(b1+b2<FONT color=#808080>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //系统将转换为int型运算，需要强制转换符<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(b3);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double d2 = 1e200;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float f2 = (float)d2<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //会产生溢出<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(f2);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float f3 = 1.23f<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //必须加f<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long l1 = 123;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long l2 = 30000000000L<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //必须加l<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float f = l1+l2+f3<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //系统将转换为float型计算<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long l = (long)f<FONT color=#808080>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //强制转换会舍去小数部分（不是四舍五入</FONT>）</P>
<P>&nbsp;&nbsp;&nbsp; }<BR>}<BR></P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071146372888</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071146372888</guid>
    <pubDate>Tue, 4 Dec 2007 18:37:02 +0800</pubDate>
    <dcterms:modified>2007-12-04T19:16:15+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《美河提供.IBM公司-上海市劳动局双认证Java培训课程》]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/1655030200710270210811</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">eMule资源</P>
<P style="TEXT-INDENT: 2em">
<TABLE cellSpacing=1 cellPadding=2 width="100%">
<TBODY>
<TR>
<TD colSpan=2><A href="http://www.emule.org.cn/download/">下面是用户共享的文件列表，安装eMule后，您可以点击这些文件名进行下载</A></TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程1.avi|84936196|96fa1eac649018aeabcf21f597825930|h=2TQ6AJFLTNJVRQCRYL2MAEIJVPSV4WFG|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程1.avi</A> <A href="http://www.verycd.com/files/96fa1eac649018aeabcf21f59782593084936196">详情</A> </TD>
<TD align=middle>81MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程2.avi|42293928|f9883a1b09bc25820a3d3329643bff5e|h=PE2FKN5WHJOC27WJWRFHNKB4OYLGHFOY|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程2.avi</A> <A href="http://www.verycd.com/files/f9883a1b09bc25820a3d3329643bff5e42293928">详情</A> </TD>
<TD align=middle>40.3MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程3.avi|67334424|a27aa2211158fc8b591c92152c58e849|h=WUUIUS67X3KI3DXHAVNBT5EGLBX6PRYO|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程3.avi</A> <A href="http://www.verycd.com/files/a27aa2211158fc8b591c92152c58e84967334424">详情</A> </TD>
<TD align=middle>64.2MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程4.avi|25805152|f304dc9b90e72ddb45137651633b1297|h=VY7KC5EWRHJRLQPG4CBY57S6ZONPTUT5|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程4.avi</A> <A href="http://www.verycd.com/files/f304dc9b90e72ddb45137651633b129725805152">详情</A> </TD>
<TD align=middle>24.6MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程5.avi|63454936|884f81e0a3886606499bebe2dc66f0d9|h=MYNXHXYLDQAYHN2HAVNWKHQPQDCROHYK|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程5.avi</A> <A href="http://www.verycd.com/files/884f81e0a3886606499bebe2dc66f0d963454936">详情</A> </TD>
<TD align=middle>60.5MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程6.avi|43039774|d55f0c5e2b45f13f37eb8cea583a5bfc|h=42Z5GSVAW57LEU5MK7HF7YGBIXHTBYDZ|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程6.avi</A> <A href="http://www.verycd.com/files/d55f0c5e2b45f13f37eb8cea583a5bfc43039774">详情</A> </TD>
<TD align=middle>41MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程7.avi|103862406|e54c2244a476156515d2095fa7b08d12|h=3ENKZV7VWW3N7XUOAG2LGDHUIWD2TNKX|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程7.avi</A> <A href="http://www.verycd.com/files/e54c2244a476156515d2095fa7b08d12103862406">详情</A> </TD>
<TD align=middle>99.1MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程8.avi|75131974|c32b09c0f84dac9377b1909b2698f65c|h=WHWNJDXZMKBCBTUOUUPUNATSEB3CO75Q|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程8.avi</A> <A href="http://www.verycd.com/files/c32b09c0f84dac9377b1909b2698f65c75131974">详情</A> </TD>
<TD align=middle>71.7MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程9.avi|41745756|f95e4cdca1dfb880df61bde4ac5b9376|h=PLUJFUTP3JCLLAFYGVAFMK3SCQSTA3YV|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程9.avi</A> <A href="http://www.verycd.com/files/f95e4cdca1dfb880df61bde4ac5b937641745756">详情</A> </TD>
<TD align=middle>39.8MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程10.avi|76034002|17b241d4c390d9f1ca6b2690e48e6415|h=WIDLSFV3OG4XASJXHOBCBX343N6QCMW5|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程10.avi</A> <A href="http://www.verycd.com/files/17b241d4c390d9f1ca6b2690e48e641576034002">详情</A> </TD>
<TD align=middle>72.5MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程11.avi|34059394|be9ba35f4f17f5b1e5e9cdd4d969cee0|h=Z3MN3VS5P5E24HASUIBPVFJ3IBNREGO3|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程11.avi</A> <A href="http://www.verycd.com/files/be9ba35f4f17f5b1e5e9cdd4d969cee034059394">详情</A> </TD>
<TD align=middle>32.5MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程12.avi|79693046|4fe98c4e768825732eeb4d0196d01f82|h=KSWLT4OCUOR6WDU6MACK3EK27LE3Z7UU|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程12.avi</A> <A href="http://www.verycd.com/files/4fe98c4e768825732eeb4d0196d01f8279693046">详情</A> </TD>
<TD align=middle>76MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程13.avi|48064222|3bf9543170d168d94a0e8aa4dcb280ef|h=JMU4FMUJKQSHMMDMBUWSHXVQFUIQXRMY|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程13.avi</A> <A href="http://www.verycd.com/files/3bf9543170d168d94a0e8aa4dcb280ef48064222">详情</A> </TD>
<TD align=middle>45.8MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程14.avi|93266860|728cea1708b771ee8ecf456c55dc00a5|h=3VIDENFIXYBHXRZMH3E43GUG67SJ5HQ2|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程14.avi</A> <A href="http://www.verycd.com/files/728cea1708b771ee8ecf456c55dc00a593266860">详情</A> </TD>
<TD align=middle>88.9MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程15.avi|30974424|391a3513aaf271bfca6531744b9cb42b|h=UOM3LLR5DEWFDXJDRTNJXIKDIPWAMUZT|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程15.avi</A> <A href="http://www.verycd.com/files/391a3513aaf271bfca6531744b9cb42b30974424">详情</A> </TD>
<TD align=middle>29.5MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程16.avi|70490936|64e0d64bb328ec206b9a332e1a0bbdbc|h=N4E5YHHAIIJHXYOS3BUTJCWBBFS4OAWK|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程16.avi</A> <A href="http://www.verycd.com/files/64e0d64bb328ec206b9a332e1a0bbdbc70490936">详情</A> </TD>
<TD align=middle>67.2MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程17.avi|75695400|de0d57348412a79bff8220011e97c341|h=OA3WJDXRKYPDILG5ZK5W4TYWA62I3FCV|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程17.avi</A> <A href="http://www.verycd.com/files/de0d57348412a79bff8220011e97c34175695400">详情</A> </TD>
<TD align=middle>72.2MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程18.avi|112778224|3d57739b3a3bf26be47bcf2031f9b3be|h=3PCFOTX6YEGMHEAHRZUIH7WSKXYLSJRZ|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程18.avi</A> <A href="http://www.verycd.com/files/3d57739b3a3bf26be47bcf2031f9b3be112778224">详情</A> </TD>
<TD align=middle>107.6MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程19.avi|74081926|38eee3296ea58e08657402695bb86b7e|h=E6VDHMXRBXVWEC3X4QMMM5PO3UY3P62J|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程19.avi</A> <A href="http://www.verycd.com/files/38eee3296ea58e08657402695bb86b7e74081926">详情</A> </TD>
<TD align=middle>70.7MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程20.avi|57585296|53437bbbf5a6a224e177f384b980d9eb|h=BX67MCQYEEVJOIE5FUFN576QM4Z7VM7L|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程20.avi</A> <A href="http://www.verycd.com/files/53437bbbf5a6a224e177f384b980d9eb57585296">详情</A> </TD>
<TD align=middle>54.9MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程21.avi|123047800|bb4e6b488432d5a2cc634f4d2b735778|h=YRBCGTNKUW72YIBJ24BLK5KOJBM3ZXSJ|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程21.avi</A> <A href="http://www.verycd.com/files/bb4e6b488432d5a2cc634f4d2b735778123047800">详情</A> </TD>
<TD align=middle>117.3MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程22.avi|70358938|46cccf6ba3aa8d31b481def688b2d4e8|h=4RIFFWOD255XL47GTMPTG7FIHRSJYQ7T|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程22.avi</A> <A href="http://www.verycd.com/files/46cccf6ba3aa8d31b481def688b2d4e870358938">详情</A> </TD>
<TD align=middle>67.1MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程23.avi|54106750|3809b8402d4133547b3238b5c82bddca|h=GUTCUY4IMXXF7O32TVXMIFJK76XW3F72|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程23.avi</A> <A href="http://www.verycd.com/files/3809b8402d4133547b3238b5c82bddca54106750">详情</A> </TD>
<TD align=middle>51.6MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程24.avi|133607884|57a55d4f559e94ae178b0644bf5c824a|h=VGWIKVJISD5Y7Y6B5QQHHK6ZER3IGREY|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程24.avi</A> <A href="http://www.verycd.com/files/57a55d4f559e94ae178b0644bf5c824a133607884">详情</A> </TD>
<TD align=middle>127.4MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程25.avi|20198912|86a9ec0181f2b2e85c1d38465afccd97|h=SFHPVJQLOPASKN43WI47UH2NH7Q4AIMX|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程25.avi</A> <A href="http://www.verycd.com/files/86a9ec0181f2b2e85c1d38465afccd9720198912">详情</A> </TD>
<TD align=middle>19.3MB</TD></TR>
<TR>
<TD><A href="ed2k://|file|美河提供.IBM公司-上海市劳动局双认证Java培训课程26.avi|11160064|a2a0a838c39bed594a22005acb009741|h=Y24W4TIMWTWXBRVKTEWKXUY2HAIQLMC4|/">美河提供.IBM公司-上海市劳动局双认证Java培训课程26.avi</A> <A href="http://www.verycd.com/files/a2a0a838c39bed594a22005acb00974111160064">详情</A> </TD>
<TD align=middle>10.6MB</TD></TR>
<TR>
<TD align=left>全选 
<P></P>
<P style="TEXT-INDENT: 2em"></P></TD>
<TD align=middle>1.6GB</TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">中文名称：美河提供.IBM公司-上海市劳动局双认证Java培训课程</P>
<P style="TEXT-INDENT: 2em">地区：大陆</P>
<P style="TEXT-INDENT: 2em">语言：普通话</P>
<P style="TEXT-INDENT: 2em">简介：</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://img.verycd.com/posts/0701/post-424140-1169281216.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://img.verycd.com/posts/0701/post-424140-1169281205.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://img.verycd.com/posts/0701/post-424140-1169281123.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">一、Java 的 发 展 史 </P>
<P style="TEXT-INDENT: 2em">1 ? 什 么 是Java </P>
<P style="TEXT-INDENT: 2em">美 国 硅 谷 有 一 句 行 话， 每10 年 ～15 年 有 一 次 轮 回。 最 近 的 一 次 轮 回 就 是 从Java 开 始。 </P>
<P style="TEXT-INDENT: 2em">Java 是 一 个 由Sun 公 司 开 发 而 成 的 新 一 代 编 程 语 言。 使 用 它 可 在 各 式 各 样 不 同 种 机 器、 不 同 种 操 作 平 台 的 网 络 环 境 中 开 发 软 件。 不 论 你 使 用 的 是 哪 一 种WWW 浏 览 器， 哪 一 种 计 算 机， 哪 一 种 操 作 系 统， 只 要WWW 浏 览 器 上 面 注 明 了“ 支 持Java”， 你 就 可 以 看 到 生 动 的 主 页。Java 正 在 逐 步 成 为Internet 应 用 的 主 要 开 发 语 言。 它 彻 底 改 变 了 应 用 软 件 的 开 发 模 式， 带 来 了 自PC 机 以 来 又 一 次 技 术 革 命， 为 迅 速 发 展 的 信 息 世 界 增 添 了 新 的 活 力。 </P>
<P style="TEXT-INDENT: 2em">Sun 的Java 语 言 开 发 小 组 成 立 于1991 年， 其 目 的 是 开 拓 消 费 类 电 子 产 品 市 场， 例 如， 交 互 式 电 视、 烤 面 包 箱 等。Sun 内 部 人 员 把 这 个 项 目 称 为Green， 那 时World Wide Web 还 在 图 纸 上 呢。 该 小 组 的 领 导 人 是James Gosling， 是 一 位 非 常 杰 出 的 程 序 员。 他 出 生 于1957 年， 于1984 年 加 盟Sun Microsystem 公 司， 之 前 在 一 家IBM 研 究 机 构 工 作。 他 是Sun NeWs 窗 口 系 统 的 总 设 计 师。 也 是 第 一 个 用C 实 现 的EMACS 的 文 本 编 辑 器COSMACS 的 开 发 者。 </P>
<P style="TEXT-INDENT: 2em">在 研 究 开 发 过 程 中，Gosling 深 刻 体 会 到 消 费 类 电 子 产 品 和 工 作 站 产 品 在 开 发 哲 学 上 的 差 异： 消 费 类 电 子 产 品 要 求 可 靠 性 高、 费 用 低、 标 准 化、 使 用 简 单， 用 户 并 不 关 心CPU 的 型 号， 也 不 欣 赏 专 用 昂 贵 的RISC 处 理 器， 他 们 需 要 建 立 在 一 个 标 准 基 础 之 上， 具 有 一 系 列 可 选 的 方 案， 从8086 到80586 都 可 以 选 取。 </P>
<P style="TEXT-INDENT: 2em">2 ? 从C 开 始 </P>
<P style="TEXT-INDENT: 2em">为 了 使 整 个 系 统 与 平 台 无 关，Gosling 首 先 从 改 写C 编 译 器 着 手。 但 是Gosling 在 改 写 过 程 中 感 到 仅C 是 无 法 满 足 需 要 的， 于 是 在1991 年6 月 份 开 始 准 备 开 发 一 个 新 的 语 言， 那 么 给 它 起 一 个 什 么 名 字 呢?Gosling 回 首 向 窗 外 望 去， 看 见 一 棵 老 橡 树， 于 是 建 一 个 目 录 叫Oak， 这 就 是Java 语 言 的 前 身（ 后 来 发 现Oak 已 是Sun 公 司 另 一 个 语 言 的 注 册 商 标， 才 改 名 为Java， 即 太 平 洋 上 一 个 盛 产 咖 啡 的 岛 屿 的 名 字）。 </P>
<P style="TEXT-INDENT: 2em">Gosling 在 开 始 写Java 时， 并 不 局 限 于 扩 充 语 言 机 制 本 身， 更 注 重 于 语 言 所 运 行 的 软 硬 件 环 境。 他 要 建 立 一 个 系 统， 这 个 系 统 运 行 于 一 个 巨 大 的、 分 布 的、 异 构 的 网 格 环 境 中， 完 成 各 电 子 设 备 之 间 的 通 信 与 协 同 工 作。Gosling 在 设 计 中 采 用 了 虚 机 器 码（Virtual Machine Code） 方 式， 即Java 语 言 编 译 后 产 生 的 是 虚 拟 机， 虚 拟 机 运 行 在 一 个 解 释 器 上， 每 一 个 操 作 系 统 均 有 一 个 解 释 器。 这 样 一 来，Java 就 成 了 平 台 无 关 语 言。 这 和Gosling 设 计 的Sun NeWs 窗 口 系 统 有 着 相 同 的 技 术 味 道。 在NeWs 中 用 户 界 面 统 一 用Postscript 描 述， 不 同 的 显 示 器 有 不 同 的Postscript 解 释 器， 这 样 便 保 证 了 用 户 界 面 的 良 好 的 可 移 植 性。 </P>
<P style="TEXT-INDENT: 2em">Patrick Naughton 也 是Sun 公 司 的 技 术 骨 乾， 曾 经 是Open Windows 项 目 的 负 责 人。 当Naughton 加 入 该 小 组 后， 整 个 工 作 进 展 神 速。 经 过17 个 月 的 奋 战， 整 个 系 统 胜 利 完 成。 它 是 由 一 个 操 作 系 统、 一 种 语 言（Java）、 一 个 用 户 界 面、 一 个 新 的 硬 件 平 台、 三 块 专 用 芯 片 构 成 的。 通 常 情 况 下， 这 样 的 项 目 在Sun 公 司 要75 个 人 乾 三 年。 项 目 完 成 后， 在Sun 公 司 内 部 做 了 一 次 展 示 和 鉴 定， 观 众 的 反 应 是： 在 各 方 面 都 采 用 了 崭 新 的、 非 常 大 胆 的 技 术。 许 多 参 观 者 对Java 留 下 了 非 常 深 刻 的 印 象， 特 别 得 到Sun 的 两 位 领 导 人Scott McNealy 和Bill Joy 的 关 注， 但Java 的 前 途 未 卜。 </P>
<P style="TEXT-INDENT: 2em">3 ?Java 语 言 的 转 折 点 </P>
<P style="TEXT-INDENT: 2em">到 了1994 年，WWW 已 如 火 如 荼 地 发 展 起 来。Gosling 意 识 到WWW 需 要 一 个 中 性 的 浏 览 器， 它 不 依 赖 于 任 何 硬 件 平 台 和 软 件 平 台， 它 应 是 一 种 实 时 性 较 高、 可 靠 安 全、 有 交 互 功 能 的 浏 览 器。 于 是Gosling 决 定 用Java 开 发 一 个 新 的Web 浏 览 器。 </P>
<P style="TEXT-INDENT: 2em">这 项 工 作 由Naughton 和Jonathan Payne 负 责， 到1994 年 秋 天， 完 成 了WebRunner 的 开 发 工 作。WebRunner 是HotJava 的 前 身， 这 个 原 型 系 统 展 示 了Java 可 能 带 来 的 广 阔 市 场 前 景。 WebRunner 改 名 为HotJava， 并 于1995 年5 月23 日 发 表 后， 在 产 业 界 引 起 了 巨 大 的 轰 动，Java 的 地 位 也 随 之 而 得 到 肯 定。 又 经 过 一 年 的 试 用 和 改 进，Java 1.0 版 终 于 在1996 年 年 初 正 式 发 表。 </P>
<P style="TEXT-INDENT: 2em">二、Java 带 来 的 影 响 </P>
<P style="TEXT-INDENT: 2em">Java 虽 出 现 的 时 间 不 长， 但 已 被 业 界 接 受，IBM、Apple、DEC、Adobe、Silicon Graphics、HP、Oracle、Toshiba、Netscap 和 Microsoft 等 大 公 司 已 经 购 买 了Java 的 许 可 证。Microsoft 还 在 其Web 浏 览 器Explorer 3.0 版 中 增 加 了 对Java 的 支 持。 </P>
<P style="TEXT-INDENT: 2em">另 外， 众 多 的 软 件 开 发 商 也 开 发 了 许 多 支 持Java 的 软 件 产 品。 如：Borland 公 司 的 基 于Java 的 快 速 应 用 程 序 开 发 环 境Latte；Metrowerks 公 司 和Natural Intelligence 公 司 分 别 开 发 的 基 于Machintosh 的Java 开 发 工 具；Sun 公 司 的Java 开 发 环 境Java Workshop；Microsoft 也 开 发 出 系 列Java 产 品。 数 据 库 厂 商 如Illustra, Sybase, Versant, Oracle 都 在 开 发 支 持HTML 和Java 的CGI（Common Gateway Interface）。 在 以 网 络 为 中 心 的 计 算 时 代， 不 支 持HTML 和Java， 就 意 味 着 应 用 程 序 的 应 用 范 围 只 能 限 于 同 质 的 环 境。 </P>
<P style="TEXT-INDENT: 2em">Intranet 正 在 成 为 企 业 信 息 系 统 最 佳 的 解 决 方 案。 它 的 优 点 表 现 在： 便 宜、 易 于 使 用 和 管 理。 用 户 不 管 使 用 何 种 类 型 的 机 器 和 操 作 系 统， 界 面 是 统 一 的Web 浏 览 器， 而 数 据 库、Web 页 面、 应 用 程 序（ 用Java 编 的applet） 则 存 在WWW 服 务 器 上。 开 发 人 员 只 需 维 护 一 个 软 件 版 本， 管 理 人 员 省 去 了 为 用 户 安 装、 升 级、 培 训 之 苦， 用 户 则 只 需 一 个 操 作 系 统， 一 个Internet 浏 览 器 足 矣。 </P>
<P style="TEXT-INDENT: 2em">我 们 可 以 设 想 未 来 的 计 算 方 式， 每 个HomePage 的 实 质 是 一 个 多 媒 体 应 用 程 序， 这 些 程 序 用Java 来 开 发。Java 应 用 程 序 运 行 在 异 质 的 机 器、 异 质 的 操 作 系 统 之 上， 甚 至 于 电 冰 箱、 烤 面 包 箱、 防 盗 电 子 设 备 之 中， 用Internet 把 所 有 的 电 子 设 备 连 接 起 来， 通 过TCP/IP 进 行 信 息 的 交 流。Java 应 用 程 序 之 间 既 可 以 交 换 消 息， 也 可 以 交 换 程 序（ 一 个Java 的 小 应 用 程 序applet）。 或 许 有 一 天， 我 们 可 以 在Netscape 浏 览 器 里 查 看 电 冰 箱 的 温 度， 向 烤 面 包 箱 发 一 个 电 子 邮 件。 </P>
<P style="TEXT-INDENT: 2em">Java 的 出 现 是 计 算 机 信 息 交 换 的 一 个 重 要 里 程 碑。 在 单 机 时 代， 程 序 进 程 之 间 靠 共 享 存 储 进 行 变 量 交 换； 在 网 络 时 代， 运 行 在 不 同 宿 主 机 上 的 程 序 按 网 络 协 议 进 行 无 格 式 的 消 息（ 二 进 制 字 符 流） 交 换， 消 息 的 语 义 由 交 换 程 序 双 方 维 护； 在Java 时 代， 运 行 在 网 络 上 的 程 序 进 程 交 换 的 是 小 应 用 程 序（applet）。 小 应 用 程 序 是 什 么? 它 是 一 个 对 象， 由 一 组 属 性 和 方 法 构 成， 是 一 个 可 执 行 的 实 体； 不 仅 有 数 据 的 状 态， 而 且 有 定 义 在 数 据 上 的 操 作。 未 来 可 能 进 行 代 表（Agent） 交 换， 代 理 有 一 定 的 智 能 性， 那 便 是 信 息 交 换 的 更 高 级 阶 段。 </P>
<P style="TEXT-INDENT: 2em">随 着Internet 的 崛 起、Java 的 诞 生， 巨 型 的、 臃 肿 的 应 用 软 件 开 始 向 小 型 化 发 展， 由 众 多“ 生 活” 在Internet 上 的 小 应 用 程 序（applet） 相 互 协 作 完 成 信 息 的 处 理 与 传 递。Java 会 加 速 应 用 软 件 的 小 型 化、 网 络 化 的 趋 势。 随 着Internet 的 发 展， 软 件 必 然 是 面 向“ 大 众”， 而 不 是“ 少 数 人” 的 奢 侈 品， 薄 利 多 销 将 是 网 络 应 用 软 件 的 重 要 特 点。 分 布 式 对 象 技 术 保 证 了 用 多 少， 下 载 多 少。 </P>
<P style="TEXT-INDENT: 2em">Java 连 同Internet,WWW 正 在 改 变 应 用 软 件 的 开 发 和 使 用 方 式， 一 切 都 要 围 绕 着 网 络， 围 绕 着 平 台 无 关。 很 多 人 认 为，Word, Excel 等 传 统 的 信 息 处 理 工 具 都 必 然 走 向 萎 缩， 因 为 它 们 是 单 机 时 代 的 产 物。 信 息 的 价 值 在 于 使 用 和 共 享，Internet 和Web 是 信 息 的 使 用 和 共 享 最 快 捷、 最 便 宜 的 方 式，Word 将 演 化 成 为Web 写 作 工 具，Excel 则 将 演 化 成Web 上 的 电 子 表 格。</P>
<P style="TEXT-INDENT: 2em">解码器下载 <A href="http://www.onlinesjtu.com/learningspace/coursecenter/SjtuGet/Codec_Setup.exe">http://www.onlinesjtu.com/learningspace/co...Codec_Setup.exe</A></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/1655030200710270210811</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/1655030200710270210811</guid>
    <pubDate>Tue, 27 Nov 2007 00:02:10 +0800</pubDate>
    <dcterms:modified>2007-11-27T00:02:10+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《清华大学计算机系网络课程》—计算机组成与结构]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026115414554</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">大小：285MB </P>
<P style="TEXT-INDENT: 2em">语言：简体中文 </P>
<P style="TEXT-INDENT: 2em">类别：视频教程 </P>
<P style="TEXT-INDENT: 2em">运行环境：Win9x/ME/NT/2000/XP/2003 </P>
<P style="TEXT-INDENT: 2em">更新时间：2006-10-2 13:19:00</P>
<P style="TEXT-INDENT: 2em">下载次数：77211</P>
<P style="TEXT-INDENT: 2em">简介:</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/qh_计算机组成与结构1.GIF" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/qh_计算机组成与结构2.GIF" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/qh_计算机组成与结构3.GIF" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/qh_计算机组成与结构4.GIF" border=0></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026115414554</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026115414554</guid>
    <pubDate>Mon, 26 Nov 2007 23:54:14 +0800</pubDate>
    <dcterms:modified>2007-12-28T15:15:27+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[清华大学计算机系网络课堂之二：数据结构]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/16550302007102611514325</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">大小：192MB </P>
<P style="TEXT-INDENT: 2em">语言：简体中文 </P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">简介:</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/数据结构2.gif" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/数据结构1.gif" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/数据结构5.gif" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/数据结构4.gif" border=0></P>
<P style="TEXT-INDENT: 2em">严蔚敏</P>
<P style="TEXT-INDENT: 2em">清华大学计算机系教授。（这么出名的人就不用我介绍了）</P>
<P style="TEXT-INDENT: 2em">［课　程　简　介］：</P>
<P style="TEXT-INDENT: 2em">“数据结构”是计算机程序设计的重要理论基础，它所讨论的知识内容和提倡的技术方法，无论对进一步学习计算机领域的其它课程，还是对从事软件工程的开发，都有着不可替代的作用。 本课程内容取自清华大学出版社出版的《数据结构》(C语言版)中的第1至第7章、第9至第10章，其中第1章综述数据、数据结构和抽象数据类型等基本概念；第2章至第7章从抽象数据类型的角度，分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用；第9章和第10章分别讨论查找表和排序，除了介绍各种实现方法之外，并着重从时间上进行定性或定量的分析和比较。所有的练习题均出自《数据结构题集》(C语言版)。</P>
<P style="TEXT-INDENT: 2em">［学　习　目　标］：</P>
<P style="TEXT-INDENT: 2em">从课程性质上讲，“数据结构”是一门专业技术基础课。它的教学要求是：学会从问题入手，分析研究计算机加工的数据结构的特性，以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法，并初步掌握时间和空间分析技术。另一方面，本课程的学习过程也是进行复杂程序设计的训练过程，要求学生会书写符合软件工程规范的文件，编写的程序代码应结构清晰、正确易读，能上机调试并排除错误。</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/16550302007102611514325</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/16550302007102611514325</guid>
    <pubDate>Mon, 26 Nov 2007 23:51:43 +0800</pubDate>
    <dcterms:modified>2007-12-29T16:24:46+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《加密与破解行家一点通》[PDF]]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026114911845</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">大小：22.4MB </P>
<P style="TEXT-INDENT: 2em">语言：简体中文 </P>
<P style="TEXT-INDENT: 2em">类别：电子图书 </P>
<P style="TEXT-INDENT: 2em">运行环境：Win9x/ME/NT/2000/XP/2003 </P>
<P style="TEXT-INDENT: 2em">更新时间：2007-3-3 16:24:00</P>
<P style="TEXT-INDENT: 2em">下载次数：33670</P>
<P style="TEXT-INDENT: 2em">简介:</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/jmypjhj200732_downsite.cn1.gif" border=0></P>
<P style="TEXT-INDENT: 2em">信息技术的迅速发展，给人们带来巨大便利的同时，也带来了巨大的安全隐患。邮箱密码、QQ密码、重要的文档资料都存储在计算机上，如何有效的保证这些数据的安全，困扰着每一位电脑用户。但这些问题又具有一些专业性，对于普通的网络用户，往往是望尘莫及，甚至是无能为力。本书为适应广大普通读者的需求，从实用的角度出发，力求为读者奉献一本简单易懂，实用性强的专题图书，可以让读者自己也能安全地对计算机进行多层次全方位的加密，在忘记密码的时候，选择合适的方法、适当的工具恢复密码，找加机密的数据。 </P>
<P style="TEXT-INDENT: 2em">目录 </P>
<P style="TEXT-INDENT: 2em">丛书序</P>
<P style="TEXT-INDENT: 2em">前言</P>
<P style="TEXT-INDENT: 2em">第1章 加密与解密基础知识</P>
<P style="TEXT-INDENT: 2em">1.1 加密技术原理</P>
<P style="TEXT-INDENT: 2em">1.2 破解密码的方式</P>
<P style="TEXT-INDENT: 2em">1.3 从密码心理学看如何保护自己的密码</P>
<P style="TEXT-INDENT: 2em">第2章 Windows密码的设置与破解</P>
<P style="TEXT-INDENT: 2em">2.1 计算机分层次保护</P>
<P style="TEXT-INDENT: 2em">2.2 加密与破解Windows系统密码</P>
<P style="TEXT-INDENT: 2em">2.3 Windows98系列密码的设置和破解</P>
<P style="TEXT-INDENT: 2em">2.4 增加Windows2000/XP的安全性</P>
<P style="TEXT-INDENT: 2em">第3章 使用工具软件加密</P>
<P style="TEXT-INDENT: 2em">3.1 文件加密技巧</P>
<P style="TEXT-INDENT: 2em">3.2 光盘的技巧</P>
<P style="TEXT-INDENT: 2em">3.3 专业加密工具使用技巧</P>
<P style="TEXT-INDENT: 2em">第4章 BIOS密码的设置和清除</P>
<P style="TEXT-INDENT: 2em">4.1 CMOS与BIOS的关系</P>
<P style="TEXT-INDENT: 2em">4.2 BIOS设置程序的进入方法</P>
<P style="TEXT-INDENT: 2em">4.3 BIOS的加密技巧</P>
<P style="TEXT-INDENT: 2em">4.4 BIOS的破解技巧</P>
<P style="TEXT-INDENT: 2em">4.5 BIOS的保护技巧</P>
<P style="TEXT-INDENT: 2em">第5章 应用程序的密码设置和破解</P>
<P style="TEXT-INDENT: 2em">5.1 办公软件的加密</P>
<P style="TEXT-INDENT: 2em">5.2 压缩软件的加密</P>
<P style="TEXT-INDENT: 2em">5.3 常用网络工具的加密</P>
<P style="TEXT-INDENT: 2em">5.4 文件破解技巧</P>
<P style="TEXT-INDENT: 2em">第6章 密码破解方法总览</P>
<P style="TEXT-INDENT: 2em">6.1 暴力破解法</P>
<P style="TEXT-INDENT: 2em">6.2 各种密码的破解</P>
<P style="TEXT-INDENT: 2em">6.3 使用监听程序获取密码</P>
<P style="TEXT-INDENT: 2em">第7章 加密与破密问题解答</P>
<P style="TEXT-INDENT: 2em">7.1 加密问题解答</P>
<P style="TEXT-INDENT: 2em">7.2 解密问题解答 </P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026114911845</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026114911845</guid>
    <pubDate>Mon, 26 Nov 2007 23:49:11 +0800</pubDate>
    <dcterms:modified>2007-12-28T15:36:19+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《Java程序设计技巧与开发实例》[PDF]]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026114521978</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">大小：45.1MB </P>
<P style="TEXT-INDENT: 2em">语言：简体中文 </P>
<P style="TEXT-INDENT: 2em">简介:</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.downsite.cn/ts/Javacxsjjq20070711_downsite.cn1.gif" border=0></P>
<P style="TEXT-INDENT: 2em">本书全面系统地介绍了标准Java程序设计基本知识和基本技巧，涵盖了面向对象程序设计、基于AWT和Swing的图形用户界面设计、Applet程序设计、多线程程序设计、多媒体程序设计、抽象数据结构、文件和安全性、网络编程和分布计算等内容。在每章的最后，都给出一个有一定深度和规模的开发实例，通过开发实例的学习，可以迅速掌握大型程序的设计和开发方法。 本书既可作为读者自学Java的参考书，又可作为Java培训的教程。</P>
<P style="TEXT-INDENT: 2em">目录</P>
<P style="TEXT-INDENT: 2em">第1章 Java基础</P>
<P style="TEXT-INDENT: 2em">1.1 Java编译器与Java虚拟机</P>
<P style="TEXT-INDENT: 2em">1.2 数据类型、分配和算法</P>
<P style="TEXT-INDENT: 2em">1.3 基本控制语句</P>
<P style="TEXT-INDENT: 2em">1.4 字符串</P>
<P style="TEXT-INDENT: 2em">1.5 输出和常量</P>
<P style="TEXT-INDENT: 2em">1.6 学习实例：求小于给定数的质数的个数</P>
<P style="TEXT-INDENT: 2em">第2章 基本编程技巧</P>
<P style="TEXT-INDENT: 2em">2.1 方法和参数</P>
<P style="TEXT-INDENT: 2em">2.2 变量的生命周期</P>
<P style="TEXT-INDENT: 2em">2.3 数组</P>
<P style="TEXT-INDENT: 2em">2.4 文档、调试以及键盘输入</P>
<P style="TEXT-INDENT: 2em">2.5 基本数据类型的封装类</P>
<P style="TEXT-INDENT: 2em">2.6 开发实例：解线性方程组</P>
<P style="TEXT-INDENT: 2em">第3章 面向对象程序的设计</P>
<P style="TEXT-INDENT: 2em">3.1 类与对象</P>
<P style="TEXT-INDENT: 2em">3.2 类的访问与封闭</P>
<P style="TEXT-INDENT: 2em">3.3 重载</P>
<P style="TEXT-INDENT: 2em">3.4 继承</P>
<P style="TEXT-INDENT: 2em">3.5 Java的基类Object</P>
<P style="TEXT-INDENT: 2em">3.6 接口和多态</P>
<P style="TEXT-INDENT: 2em">3.7 开发实例：使用面向对象的方法设计货物管理系统</P>
<P style="TEXT-INDENT: 2em">第4章 用户界面设计</P>
<P style="TEXT-INDENT: 2em">第5章 异常与线程</P>
<P style="TEXT-INDENT: 2em">第6章 Swing</P>
<P style="TEXT-INDENT: 2em">第7章 Swing与多媒体</P>
<P style="TEXT-INDENT: 2em">第8章 抽象数据类型</P>
<P style="TEXT-INDENT: 2em">第9章 文件和安全性</P>
<P style="TEXT-INDENT: 2em">第10章 网络程序设计</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026114521978</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026114521978</guid>
    <pubDate>Mon, 26 Nov 2007 23:45:21 +0800</pubDate>
    <dcterms:modified>2007-11-26T23:45:21+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《企业网站完美设计与制作》随书光盘[ISO]]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026112157886</link>
    <description><![CDATA[<div><DIV >eMule资源</DIV>
<DIV >
<TABLE cellSpacing=1 cellPadding=2 width="100%">
<TBODY>
<TR>
<TD colSpan=2><A href="http://www.emule.org.cn/download/">下面是用户共享的文件列表，安装eMule后，您可以点击这些文件名进行下载</A></TD></TR>
<TR>
<TD > <A href="ed2k://|file|企业网站完美设计与制作随书光盘.iso|213919744|6223b70914a6fa2f04f86f7fa9e9e68d|h=LWRBFSOPOTMWVJN555DSG3FIL5E76JQE|/" edhref="ed2k://|file|企业网站完美设计与制作随书光盘.iso|213919744|6223b70914a6fa2f04f86f7fa9e9e68d|h=LWRBFSOPOTMWVJN555DSG3FIL5E76JQE|/" ed2k="ed2k://|file|企业网站完美设计与制作随书光盘.iso|213919744|6223b70914a6fa2f04f86f7fa9e9e68d|h=LWRBFSOPOTMWVJN555DSG3FIL5E76JQE|/">企业网站完美设计与制作随书光盘.iso</A> <A href="http://www.verycd.com/files/6223b70914a6fa2f04f86f7fa9e9e68d213919744" target=_blank>详情</A> </TD>
<TD align=middle>204MB</TD></TR>
<TR>
<TD align=left> 全选   
<DIV style="OVERFLOW: auto; WIDTH: 0px; HEIGHT: 0px"></DIV></TD>
<TD align=middle>204MB</TD></TR></TBODY></TABLE></DIV><!--eMule headend--><!--Wrap-head begin-->
<P ><!--Wrap-head end--><BR><B>中文名称</B>：企业网站完美设计与制作<BR><B>资源类型</B>：ISO<BR><B>版本</B>：随书光盘<BR><B>发行时间</B>：2006年<BR><B>地区</B>：大陆<BR><B>语言</B>：普通话<BR><B>简介</B>：<BR><!--Attachment  thumb="http://img.verycd.com/post_thumbs/0711/post-983715-1194948561_thumb.jpg"--><IMG alt=71151368900894480-fm.jpg src="http://img.verycd.com/posts/0711/post-983715-1194948561.jpg" ><!--End Attachment--><BR>书名:企业网站完美设计与制作(附光盘)<BR>ISBN:7115136890<BR>定价:48.00<BR>著作者:陈益材 谭英明<BR>译者:<BR>出版社:人民邮电<BR>出版商:<BR>出版日期:2006-01-01<BR>开本:16开<BR>装帧:平装<BR>字数739<BR>页数:470<BR>内容简介:<BR>本书从网页设计、页面制作、数据库连接、功能模块开发、网站维护和推广等几个方面，对网站建设的相关知识进行了全、系统的讲解。不仅介绍了 Photoshop、Dreamweaver、Flash等工具的使用，还将每章的重点知识融入具体的网页制作实例中，并提供详细的操作步骤，使得从未接触网站制作的读者也可以按照书中给出的操作步骤做出自己满意的网站。<BR><BR>本书不但融合了作者多年设计和发展网站的经验，还结合网上几大论坛中网友们提出的相关问题，针对目前读者需求进行了内容结构的设计和布局。本书涉及不同的类型的应用，多角度地引导读者学习相关知识，使读者能够真正掌握网站设计和开发技术并在实际工作中灵活运用。<BR><BR>目录:<BR><BR>第一部分企业网站设计<BR>第1章 企业网站建设的规划<BR>1.1 企业网站建设的准备工作<BR>1.1.1 建站前的总体规划<BR>1.1.2 选择建站方式<BR>1.1.3 确定网站名称<BR>1.1.4 申请域名<BR>1.1.5 网站服务器空间<BR>1.2 网站规划设计要点<BR>1.2.1 网站的栏目设计<BR>1.2.2 确定网站V形象<BR>1.2.3 设计网站的宣传标语<BR>1.2.4 确定网站框架<BR>1.2.5 页面布局<BR>1.2.6 资料收集<BR>1.3 网站设计注意事项<BR>1.4企业网站鉴赏<BR>第2章 网站首页设计与实现<BR>2.1 网站首页设计要点<BR>2.1.1 首页设计内容<BR>2.1.2 首页设计方法<BR>2.2 页面整体设计<BR>2.2.1 设置网页大小<BR>2.2.2 设计导航条<BR>2.2.3 页面框架的设计<BR>2.3 添加页面元素<BR>2.3.1 小导航的制作<BR>2.3.2 大导航的制作<BR>2.3.3 导入网站ogo<BR>2.3.4 Banner设计<BR>2.3.5 内容设计<BR>2.4 图片的细化分割<BR>2.5 网页色彩处理与优化<BR>2.5.1 设置网页色彩<BR>2.5.2 把印刷品应用于网页<BR>2.5.3 制作带透明背景效果的G图片<BR>第二部分 网页设计与制作<BR>第3章 站点的创建与管理<BR>3.1 网站制作流程<BR>3.2 创建站点<BR>3.2.1 用定义站点向导创建站点<BR>3.2.2 直接创建站点<BR>3.3 管理站点<BR>3.3.1 打开站点<BR>3.3.2 编辑站点<BR>3.3.3 删除站点<BR>3.3.4 设置服务器访问类型<BR>3.4 使用站点地图<BR>3.4.1 查看站点地图<BR>3.4.2 创建文件/文件夹<BR>3.4.3 复制文件/文件夹<BR>3.4.4 除文件/文件夹<BR>3.4.5 显示或隐藏站点地图中的文件<BR>3.4.6 查看站点中的分支<BR>3.4.7 保存站点地图<BR>3.5 在DreamweaverMX2004中进行上传和下载设置<BR>3.5.1 上传设置<BR>3.5.2 下载设置<BR>第4章 搭建网站页面结构<BR>4.1 表格的创建和操作<BR>4.1.1 认识表格<BR>4.1.2 在网页中编辑表格<BR>4.1.3 导入和导出表格数据<BR>4.2 表格属性设置<BR>4.2.1 【属性检查器】<BR>4.2.2 调整表格和单元格的大小<BR>4.2.3 添加行或列<BR>4.2.4 删除行或列<BR>4.2.5 合并及拆分单元格<BR>4.3 使用布局表格创建网页结构<BR>4.3.1 绘制布局表格<BR>4.3.2 创建布局单元格<BR>4.3.3 在单元格内添加内容<BR>4.3.4 调整布局表格和单元格的大小<BR>4.3.5 格式化布局表格<BR>4.3.6 格式化布局单元格<BR>4.4 框架的创建和操作<BR>4.4.1 创建框架<BR>4.4.2 建立嵌套的框架集<BR>4.4.3 选定框架集和框架<BR>4.4.4 删除框架<BR>4.5 设置框架集和框架的属性<BR>4.5.1 框架属性<BR>4.5.2 设置框架集的属性<BR>4.5.3 设置框架的大小<BR>4.5.4 改变框架的背景色<BR>4.6 层的创建和操作<BR>4.6.1 层的基本知识<BR>4.6.2 在页面中插入层<BR>4.6.3 创建嵌套层<BR>4.6.4 使用层的【属性检查器】<BR>4.7 框架和层应用实例<BR>4.8 企业网站首页结构的搭建实例<BR>第5章 网页文本编辑及CSS控制<BR>5.1 创建网页文本<BR>5.1.1 创建普通文本<BR>5.1.2 输入特殊字符<BR>5.1.3 在网页中插入日期<BR>5.2 创建列表<BR>5.2.1 列表<BR>5.2.2 设置列表属性<BR>5.3 设置文本属性<BR>5.3.1 设置标题字体<BR>5.3.2 设置字体类型<BR>5.3.3 设置字号<BR>5.3.4 设置文本样式<BR>5.3.5 设置颜色<BR>5.3.6 设置段落属性<BR>5.3.7 设置超链接<BR>5.3.8 使用【属性检查器】<BR>5.4 层迭样式表<BR>5.4.1 CSS的功能<BR>5.4.2 层迭样式表的类型<BR>5.4.3 样式冲突<BR>5.5 建立和编辑CSS层迭样式表<BR>5.5.1 创建自定义CSS样式<BR>5.5.2 重定义HTM样式<BR>5.5.3 使用CSS选择器<BR>5.5.4 链接外部层迭样式表<BR>5.5.5 编辑外部样式表<BR>5.6 编辑层迭样式表<BR>5.6.1 编辑CSS样式的文字格式<BR>5.6.2 编辑CSS样式的背景格式<BR>5.6.3 编辑CSS样式的区块属性<BR>5.6.4 编辑CSS样式的方框属性<BR>5.6.5 编辑CSS样式的边框属性<BR>5.6.6 编辑CSS样式的列表属性<BR>5.6.7 编辑CSS样式的定位属性<BR>5.6.8 编辑CSS样式的扩展属性<BR>5.7 实例应用<BR>第6章 网页图像的处理<BR>6.1 在网页中插入图像<BR>6.1.1 使用菜单命令插入图像<BR>6.1.2 使用【插入】面板插入图像<BR>6.1.3 通过鼠标拖曳插入图像<BR>6.2 插入图像占位符<BR>6.3 插入背景图像<BR>6.4 插入跟踪图像<BR>6.5 设置图像的属性<BR>6.6 使用翻转图像<BR>6.7 建立产品相片集<BR>第7章 网页链接<BR>7.1 认识超级链接<BR>7.1.1 超级链接的基本概念<BR>7.1.2 链接的路径<BR>7.1.3 链接的颜色<BR>7.1.4 使用【文件选择】对话框<BR>7.2 网站常用超级链接<BR>7.2.1 文本超级链接<BR>7.2.2 链接到命名锚记<BR>7.2.3 建立电子邮件链接<BR>7.2.4 建立无地址链接<BR>7.2.5 建立脚本链接<BR>7.2.6 添加导航条<BR>7.2.7 图像映射<BR>7.3 链接的管理<BR>7.3.1 设置管理特性<BR>7.3.2 设置站点缓存<BR>7.3.3 使用站点地图添加链接<BR>7.3.4 使用站点地图改变链接<BR>7.3.5 使用站点地图删除链接<BR>7.3.6 改变站点范围的链接<BR>7.4 综合应用实例<BR>第8章 表单和行为<BR>8.1 使用表单<BR>8.1.1 插入表单<BR>8.1.2 设置表单属性<BR>8.2 插入表单对象<BR>8.2.1 插入文本域<BR>8.2.2 插入隐藏区域<BR>8.2-3 插入复选框和单选按钮<BR>8.2.4 下拉列表框和列表框<BR>8.2.5 插入跳转菜单<BR>8.2.6 插入图像域<BR>8.2.7 插入文件域<BR>8.2.8 插入按钮<BR>8.3 行为的功能<BR>8_3.1 【行为】面板<BR>8.3.2 事件操作<BR>8.3.3 修改行为<BR>8.4 表单行为应用实例<BR>8.4.1 创建用户注册信息表<BR>8.4.2 验证用户注册信息表<BR>第三部分 动态网站开发<BR>第9章 动态网站开发基础<BR>9.1 动态网站的工作方式和工作流程<BR>9.1.1 动态网页的工作方式<BR>9.1.2 制作动态网页的工作流程<BR>9.2 建立数据源(在本地安装和配置服务器)<BR>9.2.1 安装<BR>9.2.2 配置Web服务器<BR>9.2.3 设置站点属性<BR>9.2.4 指定服务器技术<BR>9.3 与ASP有关的数据库连接<BR>9.3.1 ASP访问数据库的过程<BR>9.3.2 创建ODBC连接<BR>9.3.3 创建ADO连接<BR>9.3.4 在ASP中访问SQServer数据库<BR>9.4 创建记录集<BR>9.4.1 录集的功能<BR>9.4.2 创建简单的记录集<BR>9.4.3 显示记录集中的记录<BR>9.5 用SQ语句创建记录集<BR>9.5.1 查询整个表<BR>9.5.2 查询特定的字段<BR>9.5.3 查询符合一定条件的特定字段<BR>9.5.4 记录排序<BR>第10章 在网页中创建动态对象<BR>10.1 创建动态对象的知识<BR>10.1.1 创建动态对象的步骤<BR>10.1.2 定义数据源<BR>10.1.3 添加动态对象的方法<BR>10.2 创建动态图像<BR>10.3 创建动态表单对象<BR>10.3.1 动态文本域<BR>10.3.2 动态图像域<BR>10.3.3 动态单选按钮<BR>10.3.4 创建动态复选框<BR>10.3.5 创建动态下拉列表<BR>10.4 使其他对象动态化<BR>10.5 设置动态对象的格式<BR>10.5.1 设置日期/时间格式<BR>10.5.2 设置货币格式<BR>10.5.3 设置数字格式<BR>10.5.4 设置百分比格式<BR>10.5.5 设置字符大小写<BR>10.5.6 编辑格式化列表<BR>10.6 动态文本对象应用实例<BR>10.6.1 创建动态文本<BR>10.6.2 显示用户P地址<BR>10.6.3 显示用户身份<BR>10.6.4 创建网站计数器<BR>第11章 用户管理系统<BR>11.1 用户管理系统数据库设计与连接<BR>11.1.1 数据库设计<BR>11.1.2 创建数据库连接<BR>11.2 用户登录功能实现<BR>11.2.1 用户登录页面<BR>11.2.2 完善登录系统<BR>11.2.3 登录系统的测试<BR>11.3 用户注册功能实现<BR>11.3.1 注册系统页面<BR>11.3.2 完善注册系统<BR>11.3.3 注册系统的测试<BR>11.4 用户资料修改功能实现<BR>11.4.1 资料修改页面<BR>11.4.2 完善资料修改功能<BR>11.4.3 注销用户功能<BR>11.4.4 资料修改的测试<BR>11.5 找回密码功能实现<BR>11.5.1 查询主要页面设计<BR>11.5.2 完善密码查询功能<BR>11.5.3 密码查询测试<BR>第12章 留言板系统<BR>12.1 留言板系统设计<BR>12.1.1 留言板数据库设计<BR>12.1.2 系统整体规划<BR>12.2 留言板系统首页<BR>12.3 留言板系统动态页面<BR>12.3.1 提交留言页面<BR>12.3.2 留言列表页面<BR>12.3.3 留言显示页面<BR>12.4 后台留言管理页面<BR>12.4.1 设计Admn.asp页面<BR>12.4.2 制作DeeteMessage.asp页面<BR>12.4.3 Deeteok.asp页面的制作<BR>12.5 留言板系统的测试<BR>12.5.1 提交留言的测试<BR>12.5.2 后台管理的测试<BR>第13章 新闻系统<BR>13.1 新闻系统分析<BR>13.2 新闻系统的页面结构<BR>13.3 数据库连接<BR>13.4 新闻系统的浏览功能<BR>13.4.1 新闻系统首页ndex.asp<BR>13.4.2 新闻查看页面xhook.asp<BR>13.5 新闻系统的管理功能<BR>13.5.1 后台登录与退出<BR>13.5.2 添加新闻<BR>13.5.3 新闻管理页面<BR>13.5.4 编辑新闻<BR>13.5.5 删除新闻<BR>第14章 网上购物系统<BR>14.1 网上购物系统功能分析与设计<BR>14.1.1 购物系统功能分析<BR>14.1.2 系统功能模块组成<BR>14.1-3 购物系统的文档结构<BR>14.2 购物系统的数据库设计<BR>14.3 购物系统首页<BR>14.3.1 数据库连接cong.asp<BR>14.3.2 首页左边栏etmenu.asp<BR>14.3.3 导航条manmenu.asp<BR>14.3.4 首页ndex.asp<BR>14.4 商品查找动态页面<BR>14.4.1 商品罗列页面ast.asp<BR>14.4.2 商品细节页面product.asp<BR>14.4.3 商品搜索结果页面searchresut.asp<BR>14.5 商品结算功能页面<BR>14.5.1 统计订单商品数量add2bag.asp<BR>14.5.2 清除订单信息的页面cear_bag.asp<BR>14.5.3 订单用户信息确认页面shop-asp<BR>14.5.4 订单确认信息页面order.asp<BR>14.5.5 订单最后确认页面ordersure.asp<BR>14.6 订单查询功能页面<BR>14.6.1 用户订单查询输A.ordersearch.aso<BR>14.6.2 用户订单查询结果页面yourorder.aso<BR>14.7 后台管理系统<BR>14.7.1 后台登录确认<BR>14.7.2 后台订单管理<BR>14.7.3 后台商品管理<BR>14.8 购物系统的辅助页面<BR>第15章 插件和行为控制<BR>15.1 插入ash<BR>15.1.1 插A.ash文本<BR>15.1.2 插A.ash按钮<BR>15.1.3 ashBanner的使用<BR>15.2 JavaAppet的使用<BR>15.2.1 Appet标彳己<BR>15.2.2 用JavaAppet实现信息展板<BR>15.3 行为的使用<BR>15.3.1 行为的概念<BR>15.3.2 调用JavaScrot<BR>15.3.3 检查插件<BR>15.3.4 控制Shockwave或ash影片<BR>15.3.5 播放声音<BR>第四部分 网站上传、维护和推广<BR>第16章 网站上传与维护<BR>16.1 网站的上传及配置<BR>16.1.1 域名解析<BR>16.1.2 用DreamweaverMX2004上传网站文件<BR>16.1.3 用ashXP上传网站<BR>16.2 网站维护<BR>16.2.1 网站内容的更新<BR>16.2.2 网站风格的更新<BR>16.2.3 域名续费<BR>16.2.4 网站备份<BR>16.3 网站服务器的安全设置<BR>16.3.1 加强系统安装<BR>16.3.2 设置<BR>16.3.3 用户管理<BR>16.3.4 修改NTS的安全权限<BR>16.3.5 打开安全审核策略<BR>16.3.6 使用ES密系统<BR>16.3.7 TCP/P筛选<BR>16.3.8 修改注册表加强安全<BR>第17章 企业网站的推广<BR>17.1 企业网站的推广方法<BR>17.2 搜索引擎<BR>17.2.1 中文搜索引擎<BR>17.2.2 英文搜索引擎<BR>17.2.3 注册搜索实例操作<BR>17.2.4 百度搜索引擎使用介绍<BR>17.3 网络广告<BR>17.3.1 网络广告的建议<BR>17.3.2 交换链接和广告<BR>17.3.3 Meta标签的使用<BR>17.4 电子邮件营销<BR>17.5 网络营销与传统营销<BR><BR>随书光盘内容：<BR>&#61489; an文件夹下是网站建设常用的一些按钮图片素材，读者可以在开发网站时进行调用。<BR>&#61489; fla文件夹下是本书多媒体演示文件的作品效果，由autorun.exe文件调用。<BR>&#61489; flash文件夹下是本书实例的多媒体演示文件，也是由autorun.exe文件调用的，注意在把光盘中的教学课件复制到本地硬盘上时，要保持所有文件的访问路径不变，否则在浏览时会由于路径的改变产生错误。<BR>&#61489; nets文件夹下放置的是国内外优秀网站网页的效果图，读者可以自行参考。<BR>&#61489; source文件夹下是本书各章实例的源代码：no2、no4～no15文件夹，分别对应第2、4～15章的源代码。所用到的图片在images文件夹里，最后完成的实现效果也在相应的文件夹里。<BR>本书多媒体教学课件的运行方法：<BR>（1）本光盘具有自启动功能，将光盘放到光驱后就可以自动运行。<BR>（2）如果不能自动运行，双击图D-1中的autorun.exe文件即可。<BR>本书实例代码是在Dreamweaver MX 2004和IIS环境下，使用ASP VBScript开发的。运行本书实例之前需要安装下列软件：Dreamweaver MX 2004和IIS。如果要查看本书源代码，建议使用Dreamweaver MX 2004。<BR>本书实例的运行方法：<BR>（1）安装Dreamweaver MX 2004和IIS，并配置环境变量。可参考本书第9章。<BR>（2）在Dreamweaver MX 2004中配置本地站点并进行数据库的链接设置，即可在IE浏览器中进行浏览，相关操作可参考本书的第3章和第9章。<BR>本书的多媒体演示文件系由Flash开发制作而成，其界面的操作说明如图D-2所示。通过单击“章节选择按钮”可以选择书本中相应的章节内容；单击“实例按钮”可以打开具体的多媒体演示文件进行学习；单击“预览按钮”后，鼠标经过“实例按钮”时就能显示实例的效果；单击“音乐背景开关”可以停止和播放背景音乐；单击“退出按钮”可以退出多媒体演示文件。在多媒体播放过程中可以拖动“进度按钮”来控制播放的多媒体演示文件，也可以通过播放、快退、暂停、快进4个按钮来控制。<BR><BR><BR><SPAN style="COLOR: red"><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 100%">本光盘中的所有文件、代码等仅供读者学习使用，不作其他商业用途，否则责任自负。</SPAN></SPAN><BR><B><SPAN style="COLOR: red"><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 100%">伺服器：Razorback 3.0<BR></SPAN></SPAN></B></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026112157886</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026112157886</guid>
    <pubDate>Mon, 26 Nov 2007 23:21:57 +0800</pubDate>
    <dcterms:modified>2007-11-26T23:21:57+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《Java API文档中文版》(Java 2 Platform Standard Edition 5.0 API Specification )[CHM]]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026111729271</link>
    <description><![CDATA[<div><DIV >eMule资源</DIV>
<DIV >
<TABLE cellSpacing=1 cellPadding=2 width="100%">
<TBODY>
<TR>
<TD colSpan=2><A href="http://www.emule.org.cn/download/">下面是用户共享的文件列表，安装eMule后，您可以点击这些文件名进行下载</A></TD></TR>
<TR>
<TD > <A href="ed2k://|file|C_API.zip|19246627|58b88fee1b3dccd0b90ce22069c93aea|h=JHWDO3BBDH2L3XRPRLDXPXIGQ6OKW2QD|/" edhref="ed2k://|file|C_API.zip|19246627|58b88fee1b3dccd0b90ce22069c93aea|h=JHWDO3BBDH2L3XRPRLDXPXIGQ6OKW2QD|/" ed2k="ed2k://|file|C_API.zip|19246627|58b88fee1b3dccd0b90ce22069c93aea|h=JHWDO3BBDH2L3XRPRLDXPXIGQ6OKW2QD|/">C_API.zip</A> <A href="http://www.verycd.com/files/58b88fee1b3dccd0b90ce22069c93aea19246627" target=_blank>详情</A> </TD>
<TD align=middle>18.4MB</TD></TR>
<TR>
<TD> <A href="ed2k://|file|E_API.zip|19925760|b6a267bef6d22688ad53b1f8f2ce9623|h=3YY2JPYCPFTLENNARTNO3TXEO6G3K3MQ|/" edhref="ed2k://|file|E_API.zip|19925760|b6a267bef6d22688ad53b1f8f2ce9623|h=3YY2JPYCPFTLENNARTNO3TXEO6G3K3MQ|/" ed2k="ed2k://|file|E_API.zip|19925760|b6a267bef6d22688ad53b1f8f2ce9623|h=3YY2JPYCPFTLENNARTNO3TXEO6G3K3MQ|/">E_API.zip</A> <A href="http://www.verycd.com/files/b6a267bef6d22688ad53b1f8f2ce962319925760" target=_blank>详情</A> </TD>
<TD align=middle>19MB</TD></TR>
<TR>
<TD > <A href="ed2k://|file|J2EE_V1.3_API.zip|1832937|ca7c3dceb9a13fee8a75d9f7f7813ff3|h=MVLNH6HALMQLHGS2MB23WYVPSDTM6VHJ|/" edhref="ed2k://|file|J2EE_V1.3_API.zip|1832937|ca7c3dceb9a13fee8a75d9f7f7813ff3|h=MVLNH6HALMQLHGS2MB23WYVPSDTM6VHJ|/" ed2k="ed2k://|file|J2EE_V1.3_API.zip|1832937|ca7c3dceb9a13fee8a75d9f7f7813ff3|h=MVLNH6HALMQLHGS2MB23WYVPSDTM6VHJ|/">J2EE_V1.3_API.zip</A> <A href="http://www.verycd.com/files/ca7c3dceb9a13fee8a75d9f7f7813ff31832937" target=_blank>详情</A> </TD>
<TD align=middle>1.7MB</TD></TR>
<TR>
<TD> <A href="ed2k://|file|CSS2.0_DOC.zip|925378|08e6f359be7189c94394de1b4c17850e|h=2TOSXG4Y4UU7U4BJOJUEIKFP7YAROTJC|/" edhref="ed2k://|file|CSS2.0_DOC.zip|925378|08e6f359be7189c94394de1b4c17850e|h=2TOSXG4Y4UU7U4BJOJUEIKFP7YAROTJC|/" ed2k="ed2k://|file|CSS2.0_DOC.zip|925378|08e6f359be7189c94394de1b4c17850e|h=2TOSXG4Y4UU7U4BJOJUEIKFP7YAROTJC|/">CSS2.0_DOC.zip</A> <A href="http://www.verycd.com/files/08e6f359be7189c94394de1b4c17850e925378" target=_blank>详情</A> </TD>
<TD align=middle>903.7KB</TD></TR>
<TR>
<TD align=left> 全选   
<DIV style="OVERFLOW: auto; WIDTH: 0px; HEIGHT: 0px"></DIV></TD>
<TD align=middle>40MB</TD></TR></TBODY></TABLE></DIV><!--eMule headend--><!--Wrap-head begin-->
<P ><!--Wrap-head end--><BR><B>中文名称</B>：Java API文档中文版<BR><B>英文名称</B>：Java 2 Platform Standard Edition 5.0 API Specification <BR><B>版本</B>：[CHM]<BR><B>发行时间</B>：2007年08月23日<BR><B>地区</B>：大陆<BR><B>语言</B>：普通话<BR><B>简介</B>：<BR><!--Attachment  thumb="http://img.verycd.com/post_thumbs/0708/post-376345-1187859785_thumb.jpg"--><IMG alt=165955_751550842.jpg src="http://img.verycd.com/posts/0708/post-376345-1187859785.jpg" ><!--End Attachment--><BR><BR><B>Java API文档中文版</B><BR>Sun 公司提供的Java API Docs是学习和使用Java语言中最经常使用的参考资料之一。但是长期以来此文档只有英文版，对于中国地区的Java开发者来说相当的不便。目前Sun 公司正在组织多方力量将此文档翻译成中文，并于2005年10月31日在Sun 中国技术社区（http://gceclub.sun.com.cn/）正式发布第一批中文版Java API文档（包括java.lang和java.util类库API 文档的中文版）。经过将近10个月的努力，目前我们已经将Java SE 5.0的全部API文档中文化。开发人员可以通过Sun 中国技术社区的网站在线浏览相关文档，也可以将全部文档下载到本地以方便检索和使用。<BR>Java API文档中文版，我把它做成CHM格式的手册了，这样方便大家查阅，搜索，文件也小了很多。C_API.zip---中文的。E_API.zip---英文的。<BR><BR><B>JDK 6.0 API 中文版正式发布！</B><BR><BR><BR>目前在 <A href="http://developers.sun.com.cn/" target=_blank>http://developers.sun.com.cn</A> 已正式宣布发布Java SE 6 API 中文版。<BR><BR>大家也可以从以下网址下载:<BR><BR>* HTML 格式 ( <A href="http://download.java.net/jdk/jdk-api-local.../api/index.html" target=_blank>http://download.java.net/jdk/jdk-api-local.../api/index.html</A> )<BR>* zip 格式 ( <A href="http://download.java.net/jdk/jdk-api-local.../html_zh_CN.zip" target=_blank>http://download.java.net/jdk/jdk-api-local.../html_zh_CN.zip</A> )<BR>* CHM 格式 ( <A href="http://download.java.net/jdk/jdk-api-local...I_1_6_zh_CN.CHM" target=_blank>http://download.java.net/jdk/jdk-api-local...I_1_6_zh_CN.CHM</A> )<BR>@_@ 2007-11-18<BR><BR><SPAN style="COLOR: red">缩写词语表 <BR>术语表 <BR>参考文献<BR>申明：已通过安全检测</SPAN><BR>杀毒软件：卡巴307<BR>更新日期：2007-8-23<BR>常驻:DonkeyServer No1<BR>开源时间：19:00--2:00<BR></P></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026111729271</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026111729271</guid>
    <pubDate>Mon, 26 Nov 2007 23:17:29 +0800</pubDate>
    <dcterms:modified>2007-11-26T23:17:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[《深入理解计算机系统》PDF]]></title>	
    <link>http://leiqinnfl.blog.163.com/blog/static/165503020071026111458343</link>
    <description><![CDATA[<div><DIV >eMule资源</DIV>
<DIV >
<TABLE cellSpacing=1 cellPadding=2 width="100%">
<TBODY>
<TR>
<TD colSpan=2><A href="http://www.emule.org.cn/download/">下面是用户共享的文件列表，安装eMule后，您可以点击这些文件名进行下载</A></TD></TR>
<TR>
<TD > <A href="ed2k://|file|深入理解计算机系统.pdf|32731508|94d6e2b97f8e41656e99c2bfb745c87d|h=5V2SUZLHRFN6UJMDMBI7IDW3ZTTDSTBB|/" edhref="ed2k://|file|深入理解计算机系统.pdf|32731508|94d6e2b97f8e41656e99c2bfb745c87d|h=5V2SUZLHRFN6UJMDMBI7IDW3ZTTDSTBB|/" ed2k="ed2k://|file|深入理解计算机系统.pdf|32731508|94d6e2b97f8e41656e99c2bfb745c87d|h=5V2SUZLHRFN6UJMDMBI7IDW3ZTTDSTBB|/">深入理解计算机系统.pdf</A> <A href="http://www.verycd.com/files/94d6e2b97f8e41656e99c2bfb745c87d32731508" target=_blank>详情</A> </TD>
<TD align=middle>31.2MB</TD></TR>
<TR>
<TD align=left> 全选   
<DIV style="OVERFLOW: auto; WIDTH: 0px; HEIGHT: 0px"></DIV></TD>
<TD align=middle>31.2MB</TD></TR></TBODY></TABLE></DIV><!--eMule headend--><!--Wrap-head begin-->
<P ><!--Wrap-head end--><BR><B>中文名称</B>：深入理解计算机系统<BR><B>版本</B>：PDF<BR><B>发行时间</B>：2004年05月<BR><B>简介</B>：<BR><!--Attachment  thumb="http://img.verycd.com/post_thumbs/0605/post-317183-1147425891_thumb.jpg"--><IMG alt=BJ01729570c.jpg src="http://img.verycd.com/posts/0605/post-317183-1147425891.jpg" ><!--End Attachment--><BR>出版社　： 中国电力出版社 <BR>原出版社：Pearson Education <BR>系列名　：国外经典计算机科学教材系列 <BR>作者　　： （美）Randal E. Bryant/ Davic O'Hallaron/ <BR>译者　　： 龚奕利/ 雷迎春/ <BR>出版日期：2004年5月 <BR>版别版次：2004年5月北京第一版第一次印刷 <BR>国标编号：ISBN 7-5083-2175-8 <BR>条形码　：9787508321752 <BR>字数　　：1209千字　　<BR><BR><BR>内容提要：<BR>　　本书英文版久负盛名，被众多专业人士称为“最伟大的计算机教材”之一，着名的美国卡内基梅隆大学计算机科学系一直将本书作为教材使用，程序员眼中的透彻讲述计算机系统的扛鼎之作。作者Randal E. Bryant是卡耐基梅隆大学的计算机科学系主任，ACM和IEEE双院士（Fellow），其研究成果多次获得ACM和IEEE颁发的大奖。<BR>　　本书共分十三章，分别介绍了信息的表示和处理、程序的机器级表示、处理器体系结构、存储器层次结构、静态和动态链接、虚拟存储器、系统级I/O、网络编程和并发编程等精彩内容。其目的是解释计算机系统的所有本质概念，并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同，这本书是写给程序员的，是从程序员的角度来描述的。本书为软件和硬件之间搭起了一个桥梁，它给出了一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径，这也填补了国内计算机系统教学中的一个空白。本书的最大优点是帮助读者理解概念，让读者很清楚地在脑海中构造一个层次型的计算机系统，从最低层数据在内存中的表示（如我们一直陌生的浮点数表示），到流水线指令的构成，到虚拟存储器，到编译系统，到动态加载库，到最后的用户应用。<BR>　　本书提供了大量的例子和练习及部分答案。尤其值得一提的是，对于每一个基本概念都有相应的笔头或程序试验，加深读者的理解。<BR><BR><BR><BR>作者介绍：<BR>　　Randal E. Bryant 1973年获得密歇根大学（University of Michigan）学士学位，随即就读麻省理工学院（Massachusetts Institute of Technology）的研究生院，并在1981年获计算机博士学位。他在加州理工学院（California Institute of Technology）做了三年助教，从1984年至今一直是卡内基梅隆大学（Carnegie Mellon）的教师。他现在是计算机科学的主任级教授和计算机科学系的系主任。他同时还受邀于电子和计算机工程系。 他从事本科和研究生计算机系统方面课程的教学超过20年。在讲授计算机体系结构课程多年后，他开始把关注点从如何设计计算机转移到程序员如何在更好地了解系统的情况下编写出更有效和更可靠的程序。他和O’Hallaron教授一起在卡内基梅隆大学开设了“计算机系统导论”课程，那便是此书的基础。他还教授一些算法和编程方面的课程。 Bryant教授的研究涉及帮助硬件设计者验证其系统正确性的软件工具的设计。其中，包括几种类型的模拟器，以及用数学方法来证明设计正确性的形式化验证工具。他发表了100多篇技术论文。包括Intel、Motorola、IBM和Fujitsu在内的主要计算机制造商都使用他的研究成果。他还因他的研究获得过数项大奖。其中包括Semiconductor Research Corporation颁发的两个发明荣誉奖和一个技术成就奖，美国计算机学会（Association for Computer Machinery，ACM）颁发的Kanellakis理论与实践奖，还有电气和电子工程师协会（Institute of Electrical and Electronics Engineers，IEEE）授予的W. R. G. Baker奖和50年金质奖章（a Golden Jubilee Medal）。他同时是ACM和IEEE的院士。<BR>　　David R. O’Hallaron 1986年在维吉尼亚大学（University of Virginia）获得计算机科学的博士学位。在通用电气工作一段时间后，于1989年作为系统科学家成为卡内基梅隆大学的教员。他目前是计算机科学系和电子及计算机工程系的副教授。 他教授一些本科生和研究生的计算机系统方面的课程，例如计算机体系结构、计算机系统绪论、并行处理器设计和Internet服务。和Bryant教授一起，他开设了“计算机系统导论”课程，那便是此书的基础。 O’Hallaron教授和他的学生从事计算机系统领域的研究。特别的，他们开发了一些软件系统，帮助科学家和工程师在计算机上模拟自然界。其中最着名的是Quake项目，一群计算机科学家、土木工程师和地震学家致力于在强烈地震中预测大地运动的能力，这些强烈地震包括南加洲、古巴、日本、墨西哥和新西兰的大地震。同Quake项目中其它人员一起，他获得了CMU计算机科学院颁发的Allen Newell优秀研究奖章。他为Quake项目创立的基准程序，183.equake，被SPEC（Standards Performance Evaluation Corporation）选入非常有影响的SPEC CPU和OMP（Open Mp）基准程序包中。 <BR><BR><BR><BR>前言：<BR>　　《深入理解计算机系统》这本书由13个章组成，旨在阐述计算机系统的核心概念：第一章：计算机系统漫游。这一章通过研究“hello, world”这个简单程序的生命周期，介绍计算机系统的主要概念和主题。第二章：信息的表示和处理。我们讨论计算机算术，重点描述对程序员有影响的无符号和二的补码（two’s complement）的数字表示法的特性。我们考虑数字是如何表示的，以及由此确定对给定的字长，它可能编码的值的范围。我们探讨有符号和无符号数字之间类型转换的效果，还阐述算术操作的数学特性。学生们很惊奇地了解到（二的补码表示的）两个正数的和或者积可以为负。另一方面，二的补码满足环的特性，因此，编译器可以把一个常量乘法转化为一系列的移位和加法。我们用C语言的位级操作来说明布尔代数的原理和应用。我们从如何表示浮点值和浮点操作的数学属性方面讲述IEEE标准的浮点格式。对计算机算术非常了解是写出可靠程序的关键。比如，不能用（x-y&lt;0）来取代......<BR><BR><BR><BR>前言：<BR>　　看看指导教师们是如何评价这本书的：<BR>“我坚信从程序员的角度来看计算机系统对教会学生们计算机的内部结构非常有帮助。” ――Kostas Daniilidis，<BR>　　宾夕法尼亚大学 <BR>“这本书讲述事物的方法与众不同，但是和我想要的课程进行方式类似。” ――John Greiner，<BR>　　Rice大学 <BR>“这是一项出色的工作，是这一领域教学方法的一次革命。” ――Michael Scott，<BR>　　罗切斯特大学 <BR>　　程序员的视角本书适用于那些想要写出更快、更可靠程序的程序员。通过掌握程序是如何映射到系统上，以及程序是如何执行的，读者能够更好的理解程序的行为为什么是这样的，以及效率低下是如何造成的。粗略来看，计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。而通过程序员的视角，读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。本书的主要论题包括：数据表示、C程序的机器级表示、处理器结构，程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。例如，在讲述数据表示时，本书说明了用来表示数字的表示方法是有限的，它能够近似地表示整数和实数，但是这种表示方法是有限制的，程序员必须了解。在讲述高速缓存时，本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时，本书描述了并发服务器如何能有效地处理来自多个客户端的请求。本书基于Intel兼容（IA32）机器，在Unix或者相关的操作系统（例如，Linux）上执行C程序。虽然书中包括了一些帮助读者将Java转化成C的提示，但是还是要求读者对C或者C++有一定的了解。<BR>　　您可以通过本书的Web网站www.csapp.cs.cmu.edu获得完整的资料，包括实验和作业，授课笔记和代码示例。 <BR><BR><BR><BR>目录：<BR>第1章 计算机系统漫游<BR>1.1 信息就是比特+上下文<BR>1.2 程序被其他程序翻译成不同的格式<BR>1.3 了解编译系统如何工作是大有益处的<BR>1.4 处理器读并解释储存在存储器中的指令<BR>1.4.1 系统的硬件组成<BR>1.4.2 执行hello程序<BR>1.5 高速缓存<BR>1.6 形成层次结构的存储设备<BR>1.7 操作系统管理硬件<BR>1.7.1 进程 <BR>1.7.2 线程 <BR>1.7.3 虚拟存储器<BR>1.7.4 文件<BR>1.8 利用网络系统和其他系统通信 <BR>1.9 下一步<BR>1.10 小结 <BR>参考文献说明<BR><BR>第2章 信息的表示和处理<BR>2.1 信息存储<BR>2.2 整数表示<BR>2.3 整数运算<BR>2.4 浮点<BR>2.5 小结<BR>参考文献说明<BR>家庭作业<BR>练习题答案 <BR>第3章 程序的机器级表示<BR>3.1 历史观点<BR>3.2 程序编码<BR>3.3 数据格式<BR>3.4 访问信息<BR>3.5 算术和逻辑操作<BR>3.6 控制<BR>3.7 过程<BR>3.8 数组分配和访问<BR>3.9 异类的数据结构<BR>3.10 对齐（alignment）<BR>3.11 综合：理解指针 <BR>3.12 现实生活：使用GDB调试器 <BR>3.13 存储器的越界引用和缓冲区溢出<BR>3.14 *浮点代码 <BR>3.15 *在C程序中嵌入汇编代码<BR>3.16 小结<BR>第4章 处理器体系结构<BR>4.1 Y86指令集体系结构<BR>4.2 逻辑设计和硬件控制语言HCL 271<BR>4.3 Y86的顺序（sequential）实现<BR>4.4 流水线的通用原理<BR>4.5 Y86的流水线实现<BR>4.6　小结<BR>第5章 优化程序性能 <BR>5.1 优化编译器的能力和局限性<BR>5.2 表示程序性能<BR>5.3 程序示例<BR>5.4 消除循环的低效率<BR>5.5 减少过程调用<BR>5.6 消除不必要的存储器引用<BR>5.7 理解现代处理器<BR>5.8 降低循环开销<BR>5.9 转换到指针代码 <BR>5.10 提高并行性 <BR>5.11 综合：优化合并代码的效果小结 <BR>5.12 分支预测和预测错误处罚 <BR>5.13 理解存储器性能<BR>5.14 现实生活：性能提高技术 <BR>5.15 确认和消除性能瓶颈 <BR>5.16 小结 <BR>第6章 存储器层次结构 <BR>6.1 存储技术<BR>6.2 局部性<BR>6.3 存储器层次结构<BR>6.4 高速缓冲存储器<BR>6.5 编写高速缓存友好的代码<BR>6.6 综合：高速缓存对程序性能的影响<BR>6.7 综合：利用你程序中的局部性<BR>6.8 小结<BR>参考文献说明<BR>家庭作业<BR>练习题答案<BR><BR>第7章　链接<BR>7.1　编译器驱动程序<BR>7.2　静态链接<BR>7.3　目标文件<BR>7.4　可重定位目标文件<BR>7.5　符号和符号表<BR>7.6　符号解析<BR>7.7　重定<BR>7.8　可执行目标文件<BR>7.9　加载可执行目标文件<BR>7.10　动态链接共享库<BR>7.11　从应用程序中加载和链接共享库<BR>7.12　*与位置无关的代码（PIC）<BR>7.13　处理目标文件的工具<BR>7.14　小结<BR><BR>第8章 异常控制流<BR>8.1　异常 <BR>8.2　进程 <BR>8.3　系统调用和错误处理 <BR>8.4　进程控制 <BR>8.5　信号 <BR>8.6　非本地跳转 <BR>8.7　操作进程的工具 <BR>8.8　小结 <BR><BR>第9章 测量程序执行时间 <BR>9.1　计算机系统上的时间流 <BR>9.2　通过间隔计数（interval counting）来测量时间 <BR>9.3　周期计数器 <BR>9.4　用周期计数器来测量程序执行时间 <BR>9.5　于gettimeofday函数的测量 <BR>9.6　综合：一个实验协议 <BR>9.7　展望未来 <BR>9.8　现实生活：K次最优测量方法 <BR>9.9　得到的经验教训 <BR>9.10　小结 <BR>第10章 虚拟存储器 <BR>10.1　物理和虚拟寻址 <BR>10.2　地址空间 <BR>10.3　VM作为缓存的工具 <BR>10.4 VM作为存储器管理的工具 <BR>10.5 VM作为存储器保护的工具 <BR>10.6 地址翻译 <BR>10.7 案例研究：Pentium/Linux存储器系统 <BR>10.8 存储器映射 <BR>10.9 动态存储器分配 <BR>10.10 垃圾收集 <BR>10.11 C程序中常见的与存储器有关的错误 <BR>10.12扼要重述一些有关虚拟存储器的关键概念 <BR>10.13 小结 <BR>第11章 系统级I/O <BR>11.1 Unix I/O <BR>11.2 打开和关闭文件 <BR>11.3 读和写文件 <BR>11.4 用RIO包进行健壮地读和写 <BR>11.5 读取文件元数据 <BR>11.6 共享文件 <BR>11.7 I/O重定向 <BR>11.8 标准I/O <BR>11.9 综合：我该使用哪些I/O函数？ <BR>11.10 小结 <BR>第12章 网络编程 <BR>12.1 客户端-服务器编程模型 <BR>12.2 网络 <BR>12.3 全球IP因特网 <BR>12.4 套接字接口 <BR>12.5 Web服务器 <BR>12.6 综合：TINY Web服务器 <BR>12.7 小结 <BR>第13章 并 发 编 程 <BR>13.1 基于进程的并发编程 <BR>13.2 基于I/O 多路复用的并发编程 <BR>13.3 基于线程的并发编程 <BR>13.4 多线程程序中的共享变量 <BR>13.5 用信号量同步线程 <BR>13.6 综合：基于预线程化的并发服务器 <BR>13.7 其他并发性问题 <BR>13.8 小结 <BR>参考文献说明 <BR>家庭作业习题 <BR>练习题答案 <BR>附录A 处理器控制逻辑的 HCL描述 <BR>A.1 HCL参考手册 <BR>A.2 SEQ <BR>A.3 SEQ+ <BR>A.4 PIPE <BR><BR>附录B 错 误 处 理 <BR>B.1 Unix系统中的错误处理 <BR>B.2 错误处理包装函数 <BR>B.3 csapp.h头文件 <BR>B.4 csapp.c源文件 <BR><BR><BR><SPAN style="COLOR: red">郑重声明：该资源已通过安全检测<BR>杀毒软件：瑞星杀毒软件<BR>当前版本：18.26.32<BR>更新日期：2006-05-11<BR>驻服务器：DonkeyServer No1或DonkeyServer No2<BR>供源时间：全天 长期供源</SPAN><BR><!--Wrap-tail begin--></P><!--Wrap-tail end-->
<DIV ></DIV>
<DIV group-mods" ><BR></DIV></div>]]></description>
	    <author><![CDATA[Andy]]></author>
	    <comments>http://leiqinnfl.blog.163.com/blog/static/165503020071026111458343</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://leiqinnfl.blog.163.com/blog/static/165503020071026111458343</guid>
    <pubDate>Mon, 26 Nov 2007 23:14:58 +0800</pubDate>
    <dcterms:modified>2007-11-26T23:14:58+08:00</dcterms:modified>
  </item>    
 </channel>
</rss>