<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/rss.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:ppp="http://blog.sohu.com/rss/module/ppp/"
	>

	<channel>
		<title>IT- 角度决定深度!</title>
		<link>http://echowhere.blog.sohu.com/</link>
		<description><![CDATA[]]></description>
		<pubDate>Sat, 17 May 2008 20:59:05 +0800</pubDate>
		<generator>搜狐博客</generator>
		<ppp:ebi>2c63976792</ppp:ebi>
		<image>
			<title>http://blog.sohu.com</title>
			<url>http://js.pp.sohu.com/ppp/blog/images/common/logo_150_60.gif</url>
			<link>http://blog.sohu.com/</link>
			<width>100</width>
			<height>43</height>
			<description>搜狐博客</description>
		</image>
		<item>
			<title>论&#8220;浮躁&#8220;</title>
			<link>http://echowhere.blog.sohu.com/87648969.html</link>
			<comments>http://echowhere.blog.sohu.com/87648969.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Sat, 17 May 2008 20:59:05 +0800</pubDate>
			<category>生活</category>
			<guid>http://echowhere.blog.sohu.com/87648969.html</guid>
			<description><![CDATA[<div>&ldquo;浮躁&rdquo;在字典里解释为：&ldquo;急躁，不沉稳&rdquo;。 <br /><br />然而，这个字眼，现在越发流行。王菲专辑命名为《浮躁》，贾平凹也写过《浮躁》这部小说，如此等等可以充分说明，浮躁已经在日常生活中处处可见。 <br /><br />在当今中国市场经济的大背景下，很少人能按耐住自己一颗驿动的心，守住自己可贵的孤独与寂寞，而变得越发盲目，急躁，和一定程度上的急功近利。 <br /><br />【浮躁产生的三点原因】 <br /><br /><br />1.高科技和信息产业的发展导致人们浮躁心态。因为高科技枪挑一个快字，人们不能再像过去一样，一壶酒，几碟菜，海阔天空地聊天，神游。人们追求速度，效率和解决方法的捷径。在追求这些的同时，人们往往忽略了耐心和等待，甚至不惜代价地投机。最后，人与人之间的交流变少，变得越来越自我和独立，而造成了一定程度上人与人之间的不和谐因素，笼统归为浮躁的心态所致。 <br /><br />2.激烈的竞争与工作压力。如果说高科技只是一个间接原因，一个诱因。那压力与竞争便是浮躁的直接原因。竞争促使优化，优化意味着给个人更多的要求。人们不能坐以待毙，不能守株待兔，不能坐享其成，凡是都要靠自己的双手去争取，去获得。这是个很现实的问题。所以，冷漠也好，残酷也罢，都是浮躁的心态所导致的不良后果。 <br /><br />3.畸形的快餐文化。太多理财投资类书，太少净化心灵的读物。动不动畅销读物，排行榜，音乐小说。用新奇的标题，离奇的情节，夸张的形式，眩目的色彩夺取本已无太多抵抗力的人们。人们在物欲涌动的今天，人们对这些快餐文化变得束手无策，只能选择默默的接受。 <br /><br />种类 <br />概括起来，现在浮躁之风分为三类：对现有目标的专注度不够，对现有目标的耐心度不足以及现有的目标不切实际． <br />　　中国文化给人的感觉一直是沉稳、含蓄，就如太极拳般心平气和、不急不躁。其实，自古以来，中国人都在劝诫戒骄戒躁。《论语》说，&ldquo;欲速则不达，见小利则大事不成。&rdquo;还有&ldquo;小不忍，则乱大谋&rdquo;、&ldquo;三思而后行&rdquo;，等等。如今，中国经济正在高速发展，物质水平不断提高，人们的心态和处世态度本应该继承古人所倡导的沉稳，然而，不少人似乎少了耐心，多了急躁；少了冷静，多了盲目；少了脚踏实地，多了急于求成。莫非现代社会的快节奏和高压力，必然会助长浮躁之风吗？ <br />从社会学理论上看，社会风气会影响社会中的每一个个体。要打破某种社会风气，同样需要社会个体的点滴努力。 <br />　　浮躁是一种情绪，一种并不可取的生活态度。人浮躁了，会终日处在又忙又烦的应急状态中，脾气会暴躁，神经会紧绷，长久下来，会被生活的急流所挟裹。凡成事者，要心存高远，更要脚踏实地，这个道理并不难懂。 <br /><br />【怎样克服浮躁心理】 <br /><br />&ldquo;浮躁&rdquo;指轻浮，做事无恒心，见异思迁，不安分守己，总想投机取巧，成天无所事事，脾气大。浮躁是一种病态心理表现，其特点有： <br />1． 心神不宁。面对急剧变化的社会，不知所为，心中无底，恐慌得很，对前途毫无信心。 <br />2． 焦躁不安。在情绪上表现出一种急躁心态，急功近利。在与他人的攀比之中，更显出一种焦虑不安的心情。 <br />3． 盲动冒险。由于集中不安，情绪取代理智，使得行动具有盲目性。行动之前缺乏思考，只要能赚到钱违法乱纪的事情都会去做。这种病态心理也是当前违纪犯罪事件增多的一个主观原因。 <br /><br />人为什么会产生浮躁的心理呢？ <br />1．从社会方面讲，主要是社会变革，对原有结构、制度的冲击太大。伴随着社会转型期的社会利益与结构的大调整，每个人都面临着一个在社会结构中重新定位的问题，于是，心神不宁，焦躁不安，迫不及待，就不可避免地成为一种社会心态。 <br />2．从个人主观方面来看，个人间的攀比是产生浮躁心理的直接原因。&ldquo;人比人，气死人&rdquo;。通过攀比，对社会生存环境不适应，对自己生存状态不满意，于是过火的欲望油然而生，因而使人们显得异常脆弱、敏感、冒险，稍有&ldquo;诱惑&rdquo;就会盲从。 <br /><br />浮躁是一种冲动性、情绪性、盲动性相交织的病态社会心理，它与艰苦创业、脚踏实地、励精图治、公平竞争是相对立的。浮躁使人失去对自我的准确定位，使人随波逐流、盲目行动，对组织、国家及整个社会的正常运作极为有害，必须予以纠正。 <br /><br />那么怎样才能克服浮躁心理呢？ <br /><br />1． 在攀比时要知己知彼 <br />&ldquo;有比较才有鉴别&rdquo;，比较是人获得自我认识的重要方式，然而比较要得法，即&ldquo;知己知彼&rdquo;，知己又知彼才能知道是否具有可比性。例如，相比的两人能力、知识、技能、投入是否一样，否则就无法去比，从而得出的结论就会是虚假的。有了这一条，人的心理失衡现象就会大大减低，也就不会产生那些心神不宁、无所适从的感觉。 <br /><br />2． 要有务实精神 <br />务实就是&ldquo;实事求是，不自以为是&rdquo;的精神，是开拓的基础。没有务实精神，开拓只是花拳绣腿，这个道理是人人应弄懂的。 <br /><br />3． 遇事善于思考 <br />考虑问题应从现实出发，不能跟着感觉走，看问题要站得高、看得远，切实做一个实在的人。 <br /><br />克服浮躁，脚踏实地,有容乃大、戒娇戒躁、不紧不慢 <br /><br />在我们的心灵深处，总有一种力量使我们茫然不安，让我们无法宁静，这种力量叫浮躁。浮躁就是心浮气躁，是成功、幸福和快乐最大的敌人。从某种意义上讲，浮躁不仅是人生最大的敌人，而且还是各种心理疾病的根源，它的表现形式呈现多样性，已渗透到我们的日常生活和工作中。可以这样说，我们的一生是同浮躁斗争的一生。--《浮躁》 <br /><br />天气是一如既往的炎热和沉闷，我的心也像这天气一样，很是浮躁，安不下心来去做一件事情。 <br /><br />毛主席教导我们说：&ldquo;世界上怕就怕认真二字。&rdquo;说的就是如果我们能安下心来认真做一件事情，就没有做不好的。我觉得非常对。我们做事情很多时候都是半途而废，在开始的时候是一腔热血，然后是热情消退，最后完全放弃。是什么原因让我们放弃呢？是浮躁的心理，是急于求成、不愿面对困难的浮躁心理。我们总是在想着事情的最后成果，急于看到我们所作的工作的成果，而这些却不是一天两天能看得出来的，所以我们就觉得这些工作是没有意义的，于是选择了放弃。 <br />如果我们能够坚持，真正的静下心来，认真地去学习、工作，我们做的会比现在后很多。只有拭去心灵深处的浮躁，才能找到幸福和快乐，那么，幸福和快乐在哪里？幸福和快乐其实就在我们每个人的心里。只要你愿意，你随时都可以支取。在很多时候，我们都急需在心中添把火，以燃起某些希望。在很多时候，我们都急需在心中洒点水，以浇灭某些欲望。你会感觉到，其实我们很幸福，其实我们很快乐。 <br /><br />【浅析国人产生浮躁心态之原因 】 <br />　　受几千年儒家思想的影响，国人一直把一个人的道德修养看的很重。但经历近几十年的大是大非后，尤其是在商品社会、市场经济的今天，一个人的道德修养是越来越不值钱了。而那些不讲道德，没有信用的人却都生活的人模人样，很吃的开。这就使受过传统教育的国人心里产生了疑惑，产生了浮躁情绪；大而公的平均主义的失败，也使国人产生了逆反心理，对那些假大空的精神、理想失出了信心，没有了理想与信念，有的只是一切向钱看的心态；体制的不完善，市场经济的不规范，法制的不健全，使越来越多的贪污腐败分子、官倒、不法的投机分子一夜暴富，使国人产生了仇富不平衡的心理；生活虽然富裕了，但高额的教育卫生费用，又使国人产生了对将来没有信心的情绪。这一切，都促使国人普遍产生了浮躁的心态。国人这种普遍存在的浮躁心态，也是国人其他不良心态的根源，是目前我们国家存在的最大国人心态问题。 <br />　　 <br />　　中国是个传统的农业国家，经历了几千年的封建社会，儒家思想影响了国人几千年（至今仍然影响着国人思维方式）。上世纪八十年代以前，虽然中国基本上是实行的是专制的人治社会，但是，因为封建思想与儒家思想，讲求的是仁义道德以及忠君思想，国人受此影响根深蒂固，因此他们对贫穷以及所有的不平等已经习以为常了，而当一个旧朝代的矛盾激化、国人产生浮躁情绪以后，国人就会以暴力的方式推翻一个朝代，国人的心态再次趋向平稳。因此，几千年来，国人的心态是以平稳为主的，很少产生浮躁情绪。封建思想与儒家思想不但是长期保持国人心态平稳的重要因素，对于我们国家民族几千年来虽然分分合合，但我们国家民族能一直保持下来贡献也是突出的。把这种封建与儒家思想结合在一起的中国传统文化，说成是几千年来中华民族的护身符，一点也不过分。 <br />　　 <br />　　中国的传统文化在保持中华民族稳定的历史意义是不可否定的。但是，在外来文化的冲击下，中国传统文化的弊端就很快显露出来。孙中山先生带来的自由、博爱、民主思想是比较先进的，但在与传统文化的对垒中却很快就失败了。追究失败原因，孙中山的弟子老蒋的腐朽无能虽然是失败的原因之一，但我私下以为这绝非主要原因。主要原因还是封建思想及儒家思想的强大击败了自由、博爱、民主的资本主义思想。强大的封建儒家传统文化，虽然阻止了资本主义思想的进攻，但在一种表面上更强大，更完美，更理想化的主义进攻下，我们的传统文化却失败了，这就足以看出中国传统文化存在缺乏理性，只有人性方面的不足。由于缺乏理性，中国传统文化没有接受比较务实，比较理性的自由、博爱、民主，却接受了虚无的、理想化的、超前的平均主义，这正是中国传统文化的悲哀所在。 <br />　　 <br />　　在经历了几十年的理想化的主义后，现实使中国人清醒了。那些虚无的、理想化的、平均主义的东西是靠不住的，于是我们又回过头来重新走比较务实，比较理性的路子。但由于国人的性格是死要面子，我们仍然不承认过去几十年走的路是从根子上错了。虽然看上去这种做法是不符合实践是检验真理的唯一标准的真理，也不符合现实。但作为一个十四亿人口的大国，这种做法也是没有办法的办法。国家太大了，传统的东西太强大了，我们国家就像一列高速行驶的列车，有巨大的惯性，如果来个急刹车甚至急转弯都会有出轨颠覆的可能。在这种进退两难的情况下，一位睿智的世纪老人出现了，他想出了一个没有办法的办法，那就是我们走一条首先不否定我们的主义，但是我们实际上要走另一条主义，摸着石头过河看看再说的路子。 <br />　　 <br />　　人的精神与意识的能量是巨大的。一个人的没有了明确的精神意识领域也就是人生的目的，那产生浮躁情绪是必然的。有一个心理学家曾经做过一个试验来证明精神的强大作用：他把一个硬币放在受试者手掌上，让受试者闭上双眼，然后暗示该硬币是一枚逐渐加温烧红的硬币，试验结束后，大家发现受试者的手掌竟然出现了烧伤后的水疱。这就足以说明了精神的作用的强大性。文革时代发生的全国人民从上到下的狂热情绪，也从很大的程度上反映了这个问题。因此，虽然世纪老人那种摸着石头过河的办法看上去不错，撇开了敏感的主义问题，单纯的发展经济，使我们的日子一天比一天好过，国家的经济也开始腾飞了。但是，由于主义问题没有解决，指东打西，走了成功之路却不承认这条路的正确，证明错误的东西仍然死抱着不放，这就使国人无所适从。没有了信念，缺少了诚信，理想的破灭之后使国人更加没有了理想。这种混乱的意识形态与传统文化，自由民主的文化交错在一起，于是使国人没有了精神思想，有的只是变本加厉的金钱至上的意识形态，这就是国人心态浮躁的根本原因。 <br />　　 <br />　　国人心态浮躁的根本原因在于国人精神意识形态上出了问题，近十几年迅速拉大的贫富差别也是造成国人心态浮躁的原因之一。改革开放以来，中国经济发展迅速，&ldquo;发展是硬道理&rdquo;的方针政策也是不错的，在全国人民逐渐富裕起来的同时，在&ldquo;让一部分人先富裕起来&rdquo;政策引导下，尤其是在所有制体制不合理、不完善的情况下，一部分国人通过合法的或者不合法的手段真正的迅速富了起来，贫富差别急剧拉大，过去的平衡打破了，贫富之间的矛盾就产生了。虽然从经济学上讲，人均产值在超过一千美圆的时候，贫富差别的出现是正常的现象，但在我们国家，由于较大部分富人的原始资本积累是通过不正常的渠道而形成的，他们的成功，大多数是由于体制的不完善而通过贪污，官倒、不法的投机而一夜暴富的，这就更加增加了人们的仇富心理。看到过去被打入底层的地主、富农分子的子孙现在又成了富甲一方的名人（说老实话，这部分人大多数是靠真正的能力富起来的，遗传素质不不能否认）；看到过去的流氓地痞都成了气候；看到为数众多的贪官污吏过上了花天酒地的生活；看到那些没有道德，缺乏诚信之徒却活的扬眉吐气，好人没有好报的状况下，国人心理难以平衡了，浮躁的心理也就难免的产生了。 <br />　　 <br />　　国人缺少信念，贫富差别的拉大以及社会上很多不合理现象的出现，是国人产生浮躁心态的两大主要原因，媒体负面宣传的作用对国人产生浮躁心态的作用也是不能忽视的。影视作品里，我们看到的主人公大多数是在家住豪宅，出门坐宝马的成功人氏，却很少关注普通百姓的生活；在报纸刊物上，也是极力宣传捏造那些成功人氏的创业经历，把成功创业看作是一件比较容易的事情，好像我们的国家遍地是黄金，人人都能够成为富豪，而完全不顾大多数老百姓是永远成不了富豪这个事实；在新闻媒体的统计数字上，由于他们的极力扩大，更是让普通老百姓摸不着头脑了。什么国人人均存款超过几万，什么农民的年收入几千，什么大学生的平均年薪几万，博士生平均年薪十几万等等。更让人可笑的是，据统计数字表明，居然我们国家人均的性伙伴数字都是世界第一。媒体的这种对成功、对财富的扩大恶意宣传，致使那些本来安于现状的国民普遍产生了攀比心理。攀比的结果，使他们感到活的窝囊，活的苦恼，于是他们就一味在浮躁的心理下想挣扎，想奋斗。但奋斗的结果，又会有多少人能够真正的成功呢？ <br />　　 <br />　　总之，在一个经济发展的社会转型期，人们产生浮躁心理是难免的，但是，目前国人普遍存在着浮躁心态是与我们的意识形态混乱以及体制上的不完善分不开的，财富与金钱过快、过多的集中在少数人手里，媒体不正确的引导分不开的。最近政府讲求建立和谐社会的初衷相信也在这里。但是，如果意识形态没有改变，体制上没有改变，想在断时间内的改变国人这种浮躁的心态估计也难. <br /><br /><br />【王菲专辑《浮躁》】 <br /><br /><br />专辑名称：浮躁 <br /><br />演唱歌手：王菲 <br />唱片公司：新艺宝 <br />发行时间：1996年07月 <br />专辑语种：国语专辑1CD <br /><br />≯　专辑介绍 <br />　　长久以来，对于流行歌手的界定无外乎&ldquo;大众创造偶像&rdquo;的所谓市场催生观点。认为流行乐天皇的诞生，是适应听众导向的直接结果。但这并非涵盖流行歌手全部内容的绝对评判。这一点在王菲身上体现得较为突出。王菲作为流行音乐界的抗鼎人物，她的音乐轨迹清晰可循，然而促使其成为流行乐&ldquo;女皇&rdquo;的，并不是因循市场的常规结果，而是锐步潮流的领军缘由。至少可以说，她模糊了&ldquo;引导听众&rdquo;与&ldquo;被听众引导&rdquo;之间的界限。这使得她的音乐先人一步，从而使得受众成为一种歌者的主动。这一点对于一个流行歌者而言，意义重大。 <br />　　以《十万个为什么》&mdash;《胡思乱想》&mdash;《DI-DAR》缔造华语乐坛另类潮流的王菲在96年的国语专辑《浮躁》中彻底完成了根源摇滚与英式摇滚的结合与蜕变。专辑对于中文流行歌曲既定模式的颠覆，对专辑整体概念的坚持使之界碑意义明显，甫一推出，即受业界肯定，好评如潮。 <br />　　这张打着面向国际旗号的原创国语专辑《浮躁》与以往王菲专辑庞杂的幕后创作不同，极力精简创作制作人员。张亚东第一次成功监制王菲全辑作品，窦唯+张亚东+王菲+COCTEAUTWINS的创作模式成功缔结了一个王菲时代的颠峰。专辑以王菲自主自在的状态作为专辑主导概念，除去两手作品假手他人，一首纯音乐作品，其余词曲创作均由王菲一手包办。幕后编配制作上的BANDSOUD风格简化一切烦琐的的器乐铺陈。中文流行音乐词作往往左右着作品的重心，《浮躁》却刻意淡化作品中词作的地位，仅以标题叙述歌曲情境，歌曲吟唱则用简单重复的音节强化标题模绘的况味，于是成就了这张完全由&ldquo;意识&rdquo;或&ldquo;潜意识&rdquo; 主导的概念专辑。 <br />　　虽然王菲在创作形式上无限接近窦唯的创作风格，但王菲的驾御将京式小调的转音融合于英伦摇滚之中，邓丽君、COCTEAUTWINS、窦唯&hellip;&hellip;王菲奔逸绝尘的悟性使得她能把深刻影响她的歌者的灵魂化合。而COCTEAUTWINS度身创作的两首作品在整张专辑中并为显得突兀，反与王菲自己的创作水乳交融。林夕与黄伟文，香港乐坛两大词作高手为王菲填下《分裂》与《扫兴》，在文学性与意象表达上的完美结合更为专辑生色。王菲自己的词作，更是即兴色彩浓厚的诗性作品。 <br />　　96年是王菲相对较为低产的一年，整年只推出一张专辑，一张EP，而这张《浮躁》就成了王菲迄今最杰出的专辑。专辑充满音乐品位与词作意象上的兴奋点，在工业化的今天，唱片作为一种商品，能像这张唱片一样做到尽量少考虑唱片的商业因素，做一张反映自我的，真实的，充满诚意的流行音乐作品，就是值得喝彩的了。而王菲作为商业上取得巨大成功的流行歌手，在这张唱片中走到了商业的背面，又获得了惯性化的成功，这又引证了那句老话&mdash;&mdash;艺术的成功归根到底都是个人魅力的成功了。 <br />　　自《十万个为什么》开始，王菲每张大碟均给予乐迷惊喜，新的音乐风格逐一出现。经过《胡思乱想》、《讨好自己》等摸索阶段后，《浮躁》的推出可说是达到王菲音乐路的最高峰。 <br />　　继〈誓言〉和〈出路〉等作品后，王菲对北京摇滚情有独锺，可能因为监制是窦唯和张亚东的关系，整张《浮躁》的歌曲均以此为主要风格。〈堕落〉可说是王菲亲自创作曲词的众多作品中较具代表性和水准的一首。对现实世界的失望，对爱情的执着，歌者决定与情人一起堕落，不再计较别人怎看。 <br />　　除〈堕落〉外，王菲还曲词包办创作了〈无常〉、〈浮躁〉和〈末日〉。其中〈浮躁〉只有简单的二十二个字，全歌以不知何解的吟唱为主要构成部份，可谓香港流行乐坛传统音乐概念上的大突破。其他如〈想象〉、〈哪儿〉和〈野三坡〉更进一步打破文字规限，以不知何解的语言为歌词，摒弃传统的国粤甚至英日语歌词，以自然的声音，毫无阻隔抒发内心最原始的感受。 <br />　　改编 Cocteau Twins 的歌曲〈知己知彼〉曾成为不少人的谈论话题，而〈知己知彼〉一曲的受落亦肯定了王菲的音乐品味得到听众的支持和认同。放弃再单纯改编 Cocteau Twins 的作品，制作这张《浮躁》时，王菲特别请了 Cocteau Twins 为她作了两首新曲〈分裂〉和〈扫兴〉，作更进一步的音乐交流。〈分裂〉承袭了〈知己知彼〉的迷幻精神，王菲放轻的唱腔加上和声的编排，确实达到分裂的效果。〈扫兴〉营造的感觉虽然跟〈分裂〉不同，但歌词的意境却很相像，都是那样的欲断难断，委曲求全。 <br />　　大碟以〈无常〉拉开序幕。没有前奏的编排，一开始便听到王菲的声线，唱着各样的自然景象。一个悠闲的画面，王菲却看到这一切美丽和洽之后，那世事的无常。一切安好的九月天，只是缺少了烦恼，却令王菲心浮气躁，胡乱想象，情绪分裂而不安，整个人冷静不下来。整张唱片的十首作品，歌者都是处于这种不安的情绪状态里，而且越后部份的作品，所展现的情绪越不稳定。不听不看不说，王菲独自陷入对爱情和生活的迷失里。明显的《浮躁》尝试展现一个较为精神层面的状态，将生活上、爱情上的点点不安感觉加以捕捉，乃王菲继〈迷路〉这带诡异味道的歌曲后另一更完整的深入精神领域的音乐作品，更是王菲历年来最统一而完整的概念唱片。 <br />　　《浮躁》不但在音乐上注入了北京摇滚的元素，更将之与北欧迷幻风格融合无间，完成这实验性的概念创作。王菲亲自参与撰写大部份旋律及部份歌词，是第一张真正属于王菲自己的作品，成功摆脱过去一切被指抄袭的风格，突破自己，也打破了香港乐坛的传统框框。 <br /><br />01 无常 <br />02 浮躁 <br />03 想象 <br />04 分裂 <br />05 不安 <br />06 哪儿 <br />07 堕落 <br />08 扫兴 <br />09 末日 <br />10 野三坡 <br /><br /><br />【贾平凹小说《浮躁》】 <br />贾平凹 （1952年2月21日 - ，其中凹读wa，阴平，&ldquo;娃&rdquo;的谐音），原名贾平娃，中国当代作家。陕西省商洛市丹凤县人。中国作家协会理事、中国作家协会陕西分会副主席。 <br /><br />　　小说里的主人公金狗，历经了务农、参军、复员回乡、州报记者、辞职跑河上运输几个人生的大起落，小一号商州的芸芸具象便随着他的生活际遇而渐次展开。那是上个世纪最后10多年间一幅真实的社会画卷。当时改革作为一个关键词，无时不在牵动着中国政治高层和普通百姓的思维与心态。各种探索正处在起步期，各种机遇正在给人们带来希望。如同大河响起了冰凌碎裂的声音，人们敏感到新生活的浪潮已扑面而来。从金狗最初出发点的那个小村仙游川，到两岔乡，到白石寨县，乃至整个商州，出现了前所未有的打破封闭后的亢奋与躁动。 <br />　　本书是作者&ldquo;商周系列&rdquo;的第一部，奠定了贾平凹在文坛的实力派地位。该书已经出版即引起轰动，并获美国文学大奖。 </div>]]></description>
		</item>
		    
		
		<item>
			<title>J2EE开发之常用开源项目介绍</title>
			<link>http://echowhere.blog.sohu.com/87267026.html</link>
			<comments>http://echowhere.blog.sohu.com/87267026.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:52:04 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87267026.html</guid>
			<description><![CDATA[<div>主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 <br /><br />1持久层: <br />1)Hibernate <br />这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射 <br />对于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法，如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做 HibernateDAO.也可以直接利用它 <br />2) iBATIS <br />另一个ORM工具,Apache的,没有Hibernate那么集成,自由度比较大 <br />2:SpringMVC <br />原理说明和快速入门: <br />配置文件为: <br />Spring的配置文件默认为WEB-INF/xxxx-servelet.xm其中xxx为web.xml中org.springframework.web.servlet.DispatcherServlet的servlet-name。 <br />Action分发: <br />Spring将按照配置文件定义的URL，Mapping到具体Controller类，再根据URL里的action= xxx或其他参数，利用反射调用Controller里对应的Action方法。 <br />输入数据绑定: <br />Spring提供Binder 通过名字的一一对应反射绑定Pojo，也可以直接从request.getParameter()取数据。 <br />输入数据验证 <br />Sping 提供了Validator接口当然还可以使用开源的Commons-Validaor支持最好 <br />Interceptor(拦截器) <br />Spring的拦截器提供接口需要自己编写,在这点不如WebWork做的好.全面 <br />(这里提一下WebWork和Struts的区别最主要的区别在于WebWork在建立一个Action时是新New一个对象而Struts是SingleMoule所有的都继承它的一个Action,所以根据项目需要合适的选择.) <br />3:View层 <br />1) 标签库:JSP2.0/JSTL <br />由于Webwork或Spring的标签确实很有限,一般view层用JSTL标签,而且据说JSTL设计很好速度是所有标签中最快的使用起来也很简单 <br /><br />2) 富客户端:DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest日历控件 <br />Dojo主要提供Tree, Tab等富客户端控件,可以用其进行辅助客户端开发 <br />YahooUI和DOJO一样它有自己的一套javascript调试控制台,主要支持ajax开发也有很多Tree,Table,Menu等富客户端控件 <br />FCKEditor 最流行的文本编辑器 <br />Coolest日历控件 目前很多日历控件可用,集成在项目中也比较简单,这个只是其中的一个,界面不错的说.. <br /><br />3) JavaScript:Prototype.js <br />Prototype.js 作为javascript的成功的开源框架，封装了很多好用的功能,通过它很容易编写AJAX应用,现在AJAX技术逐渐成熟,框架资源比较丰富,比如 YUI,DWR等等,也是因为JavaScript没有合适的调试工具,所以没有必要从零开始编写AJAX应用,个人认为多用一些成熟的Ajax框架实现无刷新更新页面是不错的选择. <br /><br />4)表格控件:Display Tag ,Extreme Table <br />这两个的功能差不多,都是View层表格的生成,界面也比较相向,可以导出Excel,Pdf,对Spring支持很容易. <br />相比较而言比较推荐ExtremeTable,它的设计很好功能上比DisplayTag多一些,支持Ajax,封装了一些拦截器,而且最方面的是在主页wiki中有详细的中文使用文档. <br /><br />5):OSCache <br />OSCache是OpenSymphony组织提供的一个J2EE架构中Web应用层的缓存技术实现组件,Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中，通过缓存页面的输出结果，可以很显著的改善系统的稳定性和运行性能。 <br />它主要用在处理短时间或一定时间内一些数据或页面不会发生变化,或将一些不变的统计报表,缓冲在内存,可以充分的减轻服务器的压力,防治负载平衡,快速重启服务器(通过硬盘缓存). <br /><br />6)SiteMesh <br />sitemesh 应用Decorator模式主要用于提高页面的可维护性和复用性，其原理是用Filter截取request和response,把页面组件head, content,banner结合为一个完整的视图。通常我们都是用include标签在每个jsp页面中来不断的包含各种header, stylesheet, scripts and footer，现在，在sitemesh的帮助下，我们删掉他们轻松达到复合视图模式. <br />Sitemesh 也是 OpenSymphony的一个项目现在最近的版本是2.2,目前OpenSymphony自从04年就没有更新的版本了..感觉它还是比较有创新的一种页面组装方式, OpenSymphony开源组织的代码一般写的比较漂亮,可以改其源代码对自己的项目进行适配. <br />测试发现Sitemesh还存在一些问题,比如中文问题,它的默认编码是iso-8859-1在使用时候需要做一些改动. <br /><br />7)CSS,XHTML <br />这个不用说了,遵循W3C标准的web页面开发. <br /><br />8)分页标签: pager-taglib组件 <br />Pager-taglib 是一套分页标签库，可以灵活地实现多种不同风格的分页导航页面，并且可以很好的与服务器分页逻辑分离.使用起来也比较简单. <br /><br />9)Form: Jodd Form taglib <br />Jodd Form taglib使用比较简单,只要把&lt;form&gt;的头尾以&lt;jodd:form bean= &quot;mybean&quot;&gt;包住 <br />就会自动绑定mybean, 自动绑定mybean的所有同名属性到普通html标记input, selectbox, checkbox,radiobox.....在这些input框里不用再写任何代码&hellip; <br /><br />10)Ajax:DWR <br />J2EE应用最常用的ajax框架 <br /><br />11)报表 图表 <br />Eclipse BIRT功能比较强大,也很庞大..好几十M,一般没有特别需求或别的图表设计软件可以解决的不用它 <br />JasperReports+ iReport是一个基于Java的开源报表工具，它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports支持PDF、 HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。 <br />JFreeChart主要是用来制作各种各样的图表，这些图表包括：饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。 <br />琴棋报表,国产的..重点推荐,适合中国的情况,开放源代码，使用完全免费。纯JAVA开发，适用多种系统平台。特别适合B/S结构的系统。官方网站有其优点介绍,看来用它还是不错的选择,最重要的是支持国产呵呵 <br /><br />4:权限控制: Acegi <br />Acegi是Spring Framework 下最成熟的安全系统，它提供了强大灵活的企业级安全服务，如完善的认证和授权机制，Http资源访问控制，Method 调用访问控制等等,支持CAS <br />(耶鲁大学的单点登陆技术,这个单点登陆方案比较出名.我也进行过配置使用,可以根据项目需要,如果用户分布在不同的地方不同的系统通用一套登陆口令可以用它进行解决,一般注册机登陆机就是这样解决的) <br />Acegi只是于Spring结合最好的安全框架,功能比较强大,当然还有一些其他的安全框架,这里列举一些比较流行的是我从网上找到的,使用方法看其官方文档把&hellip; <br />JAAS, Seraph, jSai - Servlet Security, Gabriel, JOSSO, Kasai, jPAM, OpenSAML都是些安全控制的框架..真够多的呵呵 <br /><br />5:全文检索 <br />1) Lucene <br />Lucene是一套全文索引接口,可以通过它将数据进行倒排文件处理加入索引文件,它的索引速度和查询速度是相当快的,查询百万级数据毫秒级出结果,现在最火的Apache开源项目,版本更新速度很快现在已经到了2.0,每个版本更新的都比较大,目前用的最多的版本应该是1.4.3,但它有个不太方面的地方单个索引文件有2G文件限制,现在2.0版本没有这个限制,我研究的比较多,它的扩展性比较好,可以很方面的扩充其分词接口和查询接口. <br />基于它的开发的系统很多,比如最常用的Eclipse的搜索功能,还有一些开源的软件比如Compass,Nutch,Lius,还有我最近做的InSearch(企业级FTP文件网页搜索) <br />6:公共Util类 <br />主要是Jakarta-Commons类库,其中最常用得是以下几个类库 <br />1) Jakarta-Commons-Language <br />最常用得类是StringUtils类,提供了使用的字符串处理的常用方法效率比较高 <br />2) Jakarta-Commons-Beantuils <br />主要用Beantuils能够获得反射函数封装及对嵌套属性，map,array型属性的读取。 <br />3) Jakarta-Commons-Collections <br />里面有很多Utils方法 <br /><br />7 日志管理 <br />Log4J <br />任务是日志记录,分为Info,Warn,error几个层次可以更好的调试程序 <br /><br />8 开源的J2EE框架 <br />1) Appfuse <br />Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架, 它对如何集成流行的Spring、Hibernate、iBatis、Struts、Xdcolet、JUnit等基础框架给出了示范. 在持久层，AppFuse采用了Hibernate O/R映射工具；在容器方面，它采用了Spring,用户可以自由选择Struts、Spring/MVC，Webwork，JSF这几个Web框架。 <br /><br />2) SpringSide <br />.SpringSide较完整的演示了企业应用的各个方面,是一个电子商务网站的应用 SpringSide也大量参考了Appfuse中的优秀经验。最重要的是它是国内的一个开源项目,可以了解到国内现在的一些实际技术动态和方向很有指导意义&hellip; <br /><br />9:模版 Template <br />主要有Veloctiy和Freemarker <br />模板用Servlet提供的数据动态地生成 HTML。编译器速度快，输出接近静态HTML 页面的速度。 <br /><br />10:工作流 <br />我所知道比较出名的主要有JBpm Shark Osworkflow,由于对它没有过多的研究所以还不是很清楚之间有什么区别. <br /><br />项目管理软件 <br />dotProject:是一个基于LAMP的开源项目管理软件。最出名的项目管理软件 <br />JIRA: 项目计划，任务安排，错误管理 <br />Bugzilla:提交和管理bug,和eclipse集成,可以通过安装MyEclipse配置一下即可使用 <br />BugFree借鉴微软公司软件研发理念、免费开放源代码、基于Web的精简版Bug管理 <br />CVS:这个就不介绍了都在用. <br />SVN: SubVersion已逐渐超越CVS，更适应于JavaEE的项目。Apache用了它很久后，Sourceforge刚刚推出SVN的支持。 <br />测试用例:主要JUnit单元测试,编写TestCase,Spring也对Junit做了很好的支持 <br /><br />后记: <br />以Spring为主的应用开发可选用的组件中间件真是眼花缭乱,所以针对不同的项目需求可以利用不同的开源产品解决,比如用Spring+ Hibernate/ iBATIS或Spring+WebWork+Hibernate/ iBATIS或Spring+Struts+Hibernate/ iBATIS,合理的框架设计和代码复用设计对项目开发效率和程序性能有很大的提高,也有利于后期的维护 </div>]]></description>
		</item>
		    
		
		<item>
			<title>微软并购雅虎案背后的焦虑：web业已成为软件业的掘墓人</title>
			<link>http://echowhere.blog.sohu.com/87266926.html</link>
			<comments>http://echowhere.blog.sohu.com/87266926.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:51:21 +0800</pubDate>
			<category>IT视点</category>
			<guid>http://echowhere.blog.sohu.com/87266926.html</guid>
			<description><![CDATA[gtalk，在线文件处理软件等互联网产品的出现，google让我们更清楚的看清了１点，原来网站可以和软件做同样的事情．虽然web可以作越来越多的事情了，但是单独的桌面程序还是会有其不可替代的意义。 <br />工具箱 <br />本站收藏 <br />美味书签 <br />发表评论 <br />复制链接 <br />　　随着gtalk，在线文件处理软件等互联网产品的出现，google让我们更清楚的看清了１点，原来网站可以和软件做同样的事情． <br /><br />　　你说gtalk与贸易通（阿里旺旺）／msn／Y!mesenger有任何功能上的区别吗？没有．不同的是它的载体变了，获得的渠道变了，实现成本变了．它们的功能／作用是相同的．以前我们要到音像店要去购买光盘实现自己听歌的需求，现在我们只要通过互联网就可以实现了，光盘是一个软件的载体，它主要的内容是软件，提供歌曲搜索与下载服务的网站也是一个软件，同样的他们都帮我们实现了找歌听歌的需求，并且实现了播放的功能，所以，web产品／网站与对我们来讲是一样的，在本质上都是软件． <br /><br />　　软件业的大佬微软也看清了这１点，他预感到再不拥抱这个变化就会遭遇类似一个弃妇的命运：与现在的唱片业一样，通过法律手段讨回自己的赡养费． <br /><br />　　这个命运的现实进程远远超出他们的想象－－从google们的发展态势看，web业不再满足于与传统软件业各自分封割据的局面了，google不断地推出各种免费的web产品，有些已经侵入到微软目前强势产品的势力范围内．相信类似微软的软件业逐渐看清了在产品层面：web产品/网站＝web版软件， web业在做的事情与传统软件业的完全一样．某种意义上讲，web业在扮演着传统软件业掘墓人的角色．从这个角度看，所以我们也就不难理解作为软件业的利益即得者－－微软最近并购雅虎举动背后深藏的焦虑了． <br /><br />　　再来看web版软件与传统软件比，有几个优势是传统软件无法逆转与替代的： <br /><br />　　１）免费的产品模式颠覆了传统的收费产品模式． <br /><br />　　免费是web软件的一个特点，但web版软件不是对所有的用户都免费．免费只是web软件针对买家的一个策略．以google搜索为例，这里的买家就是信息的寻找方，他们是免费的，而付钱的是信息的提供方，所谓的卖方．双方各取所需．google搜索通过卖广告实现赢利，解决了产品的商业价值问题． <br /><br />　　２）在线载入模式颠覆了１次性安装模式． <br /><br />　　软件的功能越强大，意味着我们的硬件支出会更高．软件业与硬件厂商是整个高科技产业链中不可分割的２个主要利益联合体．与软件的安装模式不同，网站产品对用户在硬件上的要求主要集中体现在２个方面，显示能力及网络能力．硬盘／光驱．．．对网站产品基本多余，这种变革不会让硬件厂商太过反感，他们可以顺应潮流去生产更匹配网站产品的硬件． <br /><br />　　３）用户端与后台处理程序的分离模式 <br /><br />　　在用户体验上，安装软件对普通用户来讲是一个具有风险的行为．现实世界中，很多产品都是需要有专业的人员提供安装服务的，比如空调，比如家庭装修的管线布线，软件业没有很好的解决产品安装的问题却把这个问题推给了用户，后续的问题还有升级更新（还不算额外的升级费用）．web产品通过用户端与后台程序的分离解决了这个问题，而且网站产品更新与升级对用户来讲只需要重新载入客户端即可（用户感觉不到），网站的前后台程序更新变成了一件在获取决策上不需要用户参与的事情了．用户在不知觉中得到了升级的产品与服务． <br /><br />　　有了这些优势，我们几乎可以毫不费力地预见到在这场产业革命中最后的剩者．同时，作为web业的从业者，有一个问题需要很好的去解决，那就是低开发与实施成本导致web产品决策的随意性．这正在整个业界成为通病，很多公司拿它当优势看．在继续这样干之前请考虑下用户的感受：有谁愿意成为一个不成熟的web产品的被试者？科学家拿小白鼠做实验是出于对人的尊重，把用户当成实验对象即不尊重用户也不会带来用户对产品的满意度，更不用妄谈用户忠诚．用户忠诚在商业领域是所有企业生存及发展的基础．web业的商业决策者们永远都不要忽略这１点．]]></description>
		</item>
		    
		
		<item>
			<title>看java的对象引用是怎样严重影响垃圾收集器的</title>
			<link>http://echowhere.blog.sohu.com/87266696.html</link>
			<comments>http://echowhere.blog.sohu.com/87266696.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:49:30 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87266696.html</guid>
			<description><![CDATA[如果您认为 Java 游戏开发人员是 Java 编程世界的一级方程式赛车手，那么您就会明白为什么他们会如此地重视程序的性能。 游戏开发人员几乎每天都要面对的性能问题，往往超过了一般程序员考虑问题的范围。哪里可以找到这些特殊的开发人员呢？Java 游戏社区就是一个好去处。 虽然在这个站点可能没有很多关于服务器端的应用，但是我们依然可以从中受益，看看这些&ldquo;惜比特如金&rdquo;的游戏开发人员每天所面对的，我们往往能从中得到宝贵的经验。让我们开始游戏吧！ <br /><br />　　对象泄漏 <br />　　游戏程序员跟其他程序员一样――他们也需要理解 Java 运行时环境的一些微妙之处，比如垃圾收集。垃圾收集可能是使您感到难于理解的较难的概念之一, 因为它并不能总是毫无遗漏地解决 Java 运行时环境中堆管理的问题。似乎有很多类似这样的讨论，它的开头或结尾写着：&ldquo;我的问题是关于垃圾收集&rdquo;。 <br /><br />　　假如您正面遭遇内存耗尽（out-of-memory）的错误。于是您使用检测工具想要找到问题所在，但这是徒劳的。您很容易想到另外一个比较可信的原因：这是 Java 虚拟机堆管理的问题,而不会认为这是您自己的程序的缘故。但是，正如 Java 游戏社区的资深专家不止一次地解释的，Java 虚拟机并不存在任何被证实的对象泄漏问题。实践证明，垃圾收集器一般能够精确地判断哪些对象可被收集，并且重新收回它们的内存空间给 Java 虚拟机。所以，如果您遇到了内存耗尽的错误，那么这完全可能是由您的程序造成的，也就是说您的程序中存在着&ldquo;无意识的对象保留（unintentional object retention）&rdquo;。 <br /><br />　　内存泄漏与无意识的对象保留 <br />　　内存泄漏和无意识的对象保留的区别是什么呢？对于用 Java 语言编写的程序来说，确实没有区别。两者都是指在您的程序中存在一些对象引用，但实际上您并不需要引用这些对象。一个典型的例子是向一个集合中加入一些对象以便以后使用它们，但是您却忘了在使用完以后从集合中删除这些对象。因为集合可以无限制地扩大，并且从来不会变小，所以当您在集合中加入了太多的对象（或者是有很多的对象被集合中的元素所引用）时，您就会因为堆的空间被填满而导致内存耗尽的错误。垃圾收集器不能收集这些您认为已经用完的对象，因为对于垃圾收集器来说，应用程序仍然可以通过这个集合在任何时候访问这些对象，所以这些对象是不可能被当作垃圾的。 <br /><br />　　对于没有垃圾收集的语言来说，例如 C++ ，内存泄漏和无意识的对象保留是有区别的。C++ 程序跟 Java 程序一样，可能产生无意识的对象保留。但是 C++ 程序中存在真正的内存泄漏，即应用程序无法访问一些对象以至于被这些对象使用的内存无法释放且返还给系统。令人欣慰的是，在 Java 程序中，这种内存泄漏是不可能出现的。所以，我们更喜欢用&ldquo;无意识的对象保留&rdquo;来表示这个令 Java 程序员抓破头皮的内存问题。这样，我们就能区别于其他使用没有垃圾收集语言的程序员。 <br /><br />　　跟踪被保留的对象 <br />　　那么当发现了无意识的对象保留该怎么办呢？首先，需要确定哪些对象是被无意保留的，并且需要找到究竟是哪些对象在引用它们。然后必须安排好 应该在哪里释放它们。最容易的方法是使用能够对堆产生快照的检测工具来标识这些对象，比较堆的快照中对象的数目，跟踪这些对象，找到引用这些对象的对象，然后强制进行垃圾收集。有了这样一个检测器，接下来的工作相对而言就比较简单了: <br /><br />　　等待直到系统达到一个稳定的状态，这个状态下大多数新产生的对象都是暂时的，符合被收集的条件；这种状态一般在程序所有的初始化工作都完成了之后。 <br />　　强制进行一次垃圾收集，并且对此时的堆做一份对象快照。 <br />　　进行任何可以产生无意地保留的对象的操作。 <br />　　再强制进行一次垃圾收集，然后对系统堆中的对象做第二次对象快照。 <br />　　比较两次快照，看看哪些对象的被引用数量比第一次快照时增加了。因为您在快照之前强制进行了垃圾收集，那么剩下的对象都应该是被应用程序所引用的对象，并且通过比较两次快照我们可以准确地找出那些被程序保留的、新产生的对象。 <br />　　根据您对应用程序本身的理解，并且根据对两次快照的比较，判断出哪些对象是被无意保留的。 <br />　　跟踪这些对象的引用链，找出究竟是哪些对象在引用这些无意地保留的对象，直到您找到了那个根对象，它就是产生问题的根源。 <br /><br />　　显式地赋空（nulling）变量 <br />　　一谈到垃圾收集这个主题，总会涉及到这样一个吸引人的讨论，即显式地赋空变量是否有助于程序的性能。赋空变量是指简单地将 null 值显式地赋值给这个变量，相对于让该变量的引用失去其作用域。 <br /><br />清单 1. 局部作用域 <br /><br />public static String scopingExample(String string) { <br />StringBuffer sb = new StringBuffer(); <br />sb.append(&quot;hello &quot;).append(string); <br />sb.append(&quot;, nice to see you!&quot;); <br />return sb.toString(); <br />} <br /><br />　　当该方法执行时，运行时栈保留了一个对 StringBuffer 对象的引用，这个对象是在程序的第一行产生的。在这个方法的整个执行期间，栈保存的这个对象引用将会防止该对象被当作垃圾。当这个方法执行完毕，变量 sb 也就失去了它的作用域，相应地运行时栈就会删除对该 StringBuffer 对象的引用。于是不再有对该 StringBuffer 对象的引用，现在它就可以被当作垃圾收集了。栈删除引用的操作就等于在该方法结束时将 null 值赋给变量 sb。 <br /><br />　　错误的作用域 <br />　　既然 Java 虚拟机可以执行等价于赋空的操作，那么显式地赋空变量还有什么用呢？对于在正确的作用域中的变量来说，显式地赋空变量的确没用。但是让我们来看看另外一个版本的 scopingExample 方法，这一次我们将把变量 sb 放在一个错误的作用域中。 <br /><br />清单 2. 静态作用域 <br /><br />static StringBuffer sb = new StringBuffer(); <br />public static String scopingExample(String string) { <br />sb = new StringBuffer(); <br />sb.append(&quot;hello &quot;).append(string); <br />sb.append(&quot;, nice to see you!&quot;); <br />return sb.toString(); <br />} <br /><br />　　现在 sb 是一个静态变量，所以只要它所在的类还装载在 Java 虚拟机中，它也将一直存在。该方法执行一次，一个新的 StringBuffer 将被创建并且被 sb 变量引用。在这种情况下，sb 变量以前引用的 StringBuffer 对象将会死亡，成为垃圾收集的对象。也就是说，这个死亡的 StringBuffer 对象被程序保留的时间比它实际需要保留的时间长得多――如果再也没有对该 scopingExample 方法的调用，它将会永远保留下去。 <br /><br />　　一个有问题的例子 <br />　　即使如此，显式地赋空变量能够提高性能吗？我们会发现我们很难相信一个对象会或多或少对程序的性能产生很大影响，直到我看到了一个在 Java Games 的 Sun 工程师给出的一个例子，这个例子包含了一个不幸的大型对象。 <br /><br />清单 3. 仍在静态作用域中的对象 <br /><br />private static Object bigObject; <br /><br />public static void test(int size) { <br />long startTime = System.currentTimeMillis(); <br />long numObjects = 0; <br />while (true) { <br />//bigObject = null; //explicit nulling <br />//SizableObject could simply be a large array, e.g. byte[] <br />//In the JavaGaming discussion it was a BufferedImage <br />bigObject = new SizableObject(size); <br />long endTime = System.currentTimeMillis(); <br />++numObjects; <br />// We print stats for every two seconds <br />if (endTime - startTime &gt;= 2000) { <br />System.out.println(&quot;Objects created per 2 seconds = &quot; + numObjects); <br />startTime = endTime; <br />numObjects = 0; <br />} <br />} <br />} <br /><br />　　这个例子有个简单的循环，创建一个大型对象并且将它赋给同一个变量，每隔两秒钟报告一次所创建的对象个数。现在的 Java 虚拟机采用 generational 垃圾收集机制，新的对象创建之后放在一个内存空间（取名 Eden）内，然后将那些在第一次垃圾收集以后仍然保留的对象转移到另外一个内存空间。在 Eden，即创建新对象时所在的新一代空间中，收集对象要比在&ldquo;老一代&rdquo;空间中快得多。但是如果 Eden 空间已经满了，没有空间可供分配，那么就必须把 Eden 中的对象转移到老一代空间中，腾出空间来给新创建的对象。如果没有显式地赋空变量，而且所创建的对象足够大，那么 Eden 就会填满，并且垃圾收集器就不能收集当前所引用的这个大型对象。所产生的后果是，这个大型对象被转移到&ldquo;老一代空间&rdquo;，并且要花更多的时间来收集它。 <br /><br />　　通过显式地赋空变量，Eden 就能在新对象创建之前获得自由空间，这样垃圾收集就会更快。实际上，在显式赋空的情况下，该循环在两秒钟内创建的对象个数是没有显式赋空时的5倍――但是仅当您选择创建的对象要足够大而可以填满 Eden 时才是如此, 在 Windows 环境、Java虚拟机 1.4 的默认配置下大概需要 500KB。那就是一行赋空操作产生的 5 倍的性能差距。但是请注意这个性能差别产生的原因是变量的作用域不正确，这正是赋空操作发挥作用的地方，并且是因为所创建的对象非常大。 <br /><br />　　最佳实践 <br />　　这是一个有趣的例子，但是值得强调的是，最佳实践是正确地设置变量的作用域，而不要显式地赋空它们。虽然显式赋空变量一般应该没有影响，但总有一些反面的例子证明这样做会对性能产生巨大的负面影响。例如，迭代地或者递归地赋空集合内的元素使得这些集合中的对象能够满足垃圾收集的条件，实际上是增加了系统的开销而不是帮助垃圾收集。请记住这是个有意弄错作用域的例子，其实质是一个无意识的对象保留的例子。 <br />]]></description>
		</item>
		    
		
		<item>
			<title>回想过去几年软件业的荒唐事</title>
			<link>http://echowhere.blog.sohu.com/87265509.html</link>
			<comments>http://echowhere.blog.sohu.com/87265509.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:39:30 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87265509.html</guid>
			<description><![CDATA[1、 XP中的结对编程。XP编程中，有一些思想总结的很好，例如测试驱动，但又有极度的荒唐的就是结对编程。结对编程是我看到过的最荒唐最可笑的软件工程方法，两倍的投入，一半的产出，可谓事倍功半。以前看结对编程只是觉得荒唐可笑，后来看了李安的电影《断背山》，觉得以&ldquo;断背&rdquo;来形容结对编程最适合了，结对编程简直就是专门为&ldquo;男同志&rdquo;们度身定做的软件工程方法，你想一对&ldquo;男同志&rdquo;，每天手牵手背靠背进行&ldquo;结对编程&rdquo;，是多么&ldquo;浪漫有趣&rdquo;的事情。不过这只对&ldquo;男同志&rdquo;们的浪漫有趣，对工作本身一点也不有趣！ <br />-------------- <br /><br />2、JDO投票闹剧（2004-2005）。一个通过黑客式静态AOP方式旁门左道实现的持久化技术JDO，竟然会被一些人追捧，这本身就是一个很荒唐的事情了。在JCP的投票中，JDO被否决了，这一点也不奇怪，奇怪的是投票结果出来之后的闹剧。一些人以&ldquo;政治阴谋论&rdquo;来说事，说JDO不被通过，是因为政治原因，而非技术原因，这个荒唐的理由竟然被社区的很多人相信了，一片声讨，JCP迫于压力，重新投票，通过了JDO相关的JSR。但是JDO并没有因此有一点点起色，一直沉沦至今。JDO通过静态AOP（enhance）的方式使得代码无法调试，就单这一点，就足以使JDO永远无法流行。 <br /><br />这件事情很明确表明两点：1)、不要相信一些技术作家的判断力；2)、普通的大众没有判断能力，会人云亦云。]]></description>
		</item>
		    
		
		<item>
			<title>从职位中预测2008年Java框架之争</title>
			<link>http://echowhere.blog.sohu.com/87265230.html</link>
			<comments>http://echowhere.blog.sohu.com/87265230.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:37:14 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87265230.html</guid>
			<description><![CDATA[<h2>首先我们来看看截止到今天indeed网站上Java技能职位数的简单统计。<br /><br />Indeed全球Java技能职位表：<br /><br /><img alt="" src="http://images.csdn.net/20080310/javajob.jpg" /></h2>
<h2><br /><br />今年框架大战仍然围绕着开源与官方之间展开：<br /><br />主流技术中，Struts,Spring,Hibernate仍然分别占据三个层次的主流位置。其中Struts和Spring需求高达80%以上， Hibernate也达到了46%，略高于JDBC。Sun以及JavaEE商家力挺的JSF，Seam，EJB3等技术中，除JSF占到了17.6%个百分比外，其它都没有明显的强劲势头。<br /><br /><br />在Web框架中<br /><br />Struts2,Struts,Webwork这一类基于请求的MVC框架仍然牢牢占据着主流。但后来居上的JSF也不容小视，由此可见今年的Web框架Struts与JSF将会有一强烈的较量，但JSF想今年迅速击败Struts似乎也不太可能，后起之秀的Struts2仍然有许多可圈可点的地方，未必输给官方正统的JSF。至于Tapestry， Wicket等虽然职位数不多，但也不妨碍其社区的火爆，到底谁是下一个big thing，现在下结论还太早。<br /><br /><br />应用程序框架方面<br /><br />Spring 明显呈现一边倒的优势，其高达83%的比例表明，JavaEE社区不仅仅需要轻量级应用程序框架，还需要证明框架在实际开发项目中，确实起了应用有的实践作用。在《Rod Johnson：Spring供职信息已超过EJB,JavaEE 继续 without EJB》一文中，EJB基本上处于停滞下滑状态，15%的比例都是遗留项目的维护需要。而EJB3只有177个职业，看来Sun以及JavaEE商家大肆吹棒的东西，开发人员并不会像以前那样逢EJB就跟风的景象了，更多的是理性的投入到实际开发中去。　在《【翻译】EJB3.1真的来了吗？EJB3.1 系列文章(一)》，《Java EE 6到底应该包括什么&mdash;&mdash;由你来投票》，《JavaEE6的进化&mdash;&mdash;开始迈向轻量级？？？》以及《EJB3.1新特性》表明包括EJB的专家在内都没有完全清楚EJB到底需要什么，不要什么，一般人不会冒然去学还不太稳定的技术，不得不说EJB在这一点上是失败的。而在《【论战】我们为什么不用 JavaEE5》，《Rod Johnson：Spring供职信息已超过EJB,JavaEE 继续 without EJB》，还有《开源已是绝对主流？！！！&mdash;&mdash;开源采用率已经从06年的26%增长到07年的75%》中表明，EJB，乃至JavaEE同样存在不少问题。有趣的是guice只有14个职位，我看了一个，使用guice的一般项目都差不多是JavaEE5的新项目，我挺看好guice的，但现在它还是有点过于简单，称之于应用程序框架，有点言过其实啊。</h2>]]></description>
		</item>
		    
		
		<item>
			<title>Java/J2EE的北美高薪技术移民新门路</title>
			<link>http://echowhere.blog.sohu.com/87265099.html</link>
			<comments>http://echowhere.blog.sohu.com/87265099.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:36:11 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87265099.html</guid>
			<description><![CDATA[今年将是北美连续第三年的IT行业就业高潮。虽然现在还是严冬，大部分企业招工处于半停状态，但今年的第一次就业高潮将会很快来临并将持续到六月底。面对这即将来临的新一轮就业高潮，你准备好了吗？ <br /><br />　　技术移民大都是带着这样或那样的技术获准来到加拿大的。有的移民之所以一时难以找到对口专业工作，一直靠打labor工度日。原因一是所学专业较冷，二是所学专业不被认可，三是所学专业对communication skill 要求较高而自身的英语又确实不怎样，还有最重要的一点就是对北美就业市场及其所需技术缺乏足够的认识。 <br /><br />　　多伦多的高薪华人技术移民中，十有八九在从事IT工作，而其中大部分又是做Programmer/analyst的工作。因为不管你以前的专业是什么，只要你是理工科出身或自认为有较强的逻辑思维能力，并且去接受2至4 个月左右的有针对性的程序设计与开发的职业培训，就不难找到一份高薪Programmer/analyst的工作。这其中最主要的原因为： <br /><br />　　1. IT行业是第三次技术革命的产物，现在仍处于上升与扩张时期。在新的一轮技术革新之前，IT的这种扩张趋势还将持续。 <br /><br />　　2. 与其它行业一样，IT行业的人员构成也是一个金字塔，塔底是广大的Programmer/Analyst,他们是信息时代的技术工人，是IT类产品生产与维护的主力军。 <br /><br />　　3. Programmer/Analyst的工作对从业者的逻辑思维能力要求较高，但英文能力要求却相对较低。所以加国本地人很多人无法胜任这份工作。英文好点的并在此领域工作多年的，也都逐渐向金字塔上游升迁(Architect, Admin, PM, BA等)，也有不少转到了美国。留下的空缺等待着英语不是太好，但却聪明又勤奋的技术移民去填充。 <br /><br />　　在程序开发与维护领域，统治市场的一是Java技术(由Sun, IBM, Oracle, Apache, Bea等众多大的IT公司力推)，一是微软的DotNet技术。Java技术由于其安全性、稳定性、可移植性等诸多优点，不仅为多数IT技术人员所推崇，而且为北美最重要的企业应用领域如银行、保险业界等普遍采用。Java由J2SE (标准版，亦称Core Java), J2ME (微型版，适合于内存较小的小型设备，如手机、电玩等) 和J2EE (version 1.4 之前) 或Java EE 5 (Java 企业应用版第5版)组成。J2SE是Java就业的入门技术，涵盖着Java的基本语法以及class, interface, object, overload, inheritance, polymorphism, reflection,exception以及thread等极为重要的Java概念，学好了将在今后的Java找工与就业中受益无穷。但仅掌握J2SE 是远远不够的，必须进一步学习掌握J2ME或J2EE/JavaEE5。J2ME现阶段应用范围仍较窄，属冷门，不是新移民就业的好选择。而 J2EE/Java EE 5则是今日企业应用领域的最流行技术，包括Servlet, JSP, JSF, EJB, Security, JMS, Web Services以及 Design Patterns 等，是Java就业者的必修技术。与J2SE和J2ME不同的是，J2EE只是为工业界提供了技术规范 (如Programming Models，相关的APIs以及J2EE runtime责任等)，而并未提供J2EE的运行环境。因此运行J2EE程序需要有支持J2EE的Application Server。目前，通过Sun所认证的J2EE Application Servers有十几种，最流行的两种commercial server是Bea Weblogic 和IBM Websphere，而最流行的免费server则是JBoss。这三种server覆盖着J2EE应用市场的80%以上，可以说只要掌握了J2EE技术和其中之一的运用，就不难找到Java高薪工作。当然如果你在熟练掌握J2EE和其中之一的server运用的同时，对其余两种 server也有所了解，在当今的Java市场上找工就会更加得心应手了。 ]]></description>
		</item>
		    
		
		<item>
			<title>开源框架深度思索</title>
			<link>http://echowhere.blog.sohu.com/87265010.html</link>
			<comments>http://echowhere.blog.sohu.com/87265010.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:35:33 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87265010.html</guid>
			<description><![CDATA[<div>升级的困扰 <br /><br />活跃的框架每天都在升级改造，丰富功能。其次由于开源框架在一定程度上存在随意性，往往导致框架在实际使用后，发现大量隐含的Bug，所以有时对某个框架的升级变得不可避免。开源框架比之Sun正规的规范有着更加灵活的升级方式，高低版本不兼容的问题已经成为司空见惯的事情。如著名的 Hibernate，其3.0版本和2.0版本的包名都发生了彻底的变化，刚发布的Acegi和低版本也存在很大的差异，无法兼容。 <br /><br />一个整合性的框架由多个出自于不同团队的框架组成，整合框架在这些组合框架之上高位运行，底层框架的升级变化就造成了组合框架水涨船高的局面，整合框架脆弱的稳定性很容易被打破。 <br /><br />组合框架的升级还直接带来了开发团队学习的压力，为了熟悉框架新功能和改进，在开发工作之余，他们不得不努力压榨自己的业余时间不断地充电学习。总是某个框架新功能学习还未完成，另一个框架的新版本又在一阵欢呼声中闪亮登场，让开发人员发现自己所有的努力只是一场骑牛追马游戏。 <br /><br />3、开发者如何走出迷局 <br /><br />框架的爆炸性增长和技术更替一日千里的速度，让刚刚从传统J2EE迷局中走出来的开发者重新堕入了新的困境之中。有许多切身体验的开发者在网上大倒苦水，甚至有许多声音在呐喊，希望重新回到JSP+JavaBean＋JDBC那个纯真的年代中去。 <br /><br />框架的作者们本想还软件开发一个清新美满的世界，不想个体性的良性企盼变成了一种整体性的混乱纷争。在纷繁复杂的开源世界如何走出迷局和困境，把握自己技术航船的方向，是每个开发者们冥思遐想的事情。 <br /><br />重点学习 触类旁通 <br /><br />每个人的时间是有限的，对于周期紧，进度急，加班赶的开发者来说更加如此，使得开发者不可能 &ldquo;识遍天下字，读尽人间书&rdquo;逐个学习框架。选择好适合自己、适合项目的框架进行重点学习尤为重要。不但要掌握技术细节，更要理解框架的原理和思想，这样在接触相关框架时，我们才能触类旁通，慧眼识真。 <br /><br />如果你深入理解了Struts框架的MVC的原理和思想，在接触Tapestry，Spring MVC等框架时，你会发现两者只是形上的区别，而非质上的差异，即使因现实需要确实要转换框架时，也可以轻松平滑地过渡。 <br /><br />不求最好 但求适用 <br /><br />开发人员往往都是完美主义者，吹毛求疵，带着浓重的偏执狂倾向。是的，偏执狂是优秀程序员的一个特点，时下《只有偏执狂才能生存》也正在大卖热卖，Rod Johnson，Gavin King，Oberg也都是偏执狂。 <br /><br />但在有进度工期压力的情况下，我们不得不向实现妥协。对于公司来说，利润永远都是第一位的，不管用不用框架或用什么框架，只要能如期保质保量完成用户的所有功能需求，就是最好的项目。客户永远看不到，也不关心你使用了哪个优秀的技术和框架。 <br /><br />所以，在实际的开发中，也许我们常常需要委曲内心的冲动，只要目前的框架能满足需求，我们没有必须象服装界一样赶追时髦，一切不求最好，但求适用。 <br /><br />如果Spring Template JDBC已经很好的满足了目前的需求，就没有必要一定要上Hibernate，如果自己开发的简要列表控件效果不错，就无须转换为 ExtremeTable。新框架的学习需要代价，但这种代价的价值在实际发挥功效之前是不被肯定的。况且看似不合时宜的那些简单而古老的技术也可以做出强大的系统，如世界上最大的java项目&mdash;&mdash;巴西全国医疗系统，就是构建在JSP＋JavaBean＋Servlet之上。 <br /><br />注重积累 搭建平台 <br /><br />我们常常发现一些软件公司自身没有任何积累，完全寄希望于这些整合框架解决所有的问题。开源框架解决的都是某个领域的通用性问题，每个公司由于其所处行业，服务用户的不同，要求公司拥有自己的解决方案，框架的通用性和公司的个性化需求是存在矛盾的。 <br /><br />软件公司应该加强自身的积累，在这些框架的基础上搭建好符合自身需求的快速开发平台，屏蔽掉底层框架的复杂功能和细枝末节，降低对开发人员的技能要求，以便新员工能够快速参与到项目中，而无需进行一个个开源框架的学习。 <br /><br />虽然这种积累和平台的建设会耗费额外的工作量，但首先它是一个循序渐进的过程，其次这种任务仅由两三个技术突出的技术人员承担，带来的好处是直接降低了其他开发人员使用难度和技术要求，在一定程序上避免了开源框架的所带来的不稳定性影响。 <br /><br />4、小结 <br /><br />开源的繁荣带来了丰富的框架，有力的推动了业界的发展，同时我们也看到，这种繁荣所带来的惊喜背后紧跟着许多困惑的眼神，迷失在繁荣的混乱之中的开发者们希望走出困惑，走出迷局。 <br /><br />如何在嘈杂喧闹的开源世界把握方向寻求突破，不管是对于开发者还是软件公司的决策者都值得深深的思考。 <br />支持开源，请点击下面框框 </div>]]></description>
		</item>
		    
		
		<item>
			<title>[theserverside最新翻译:]揭开J2EE集群的神秘面纱（一）</title>
			<link>http://echowhere.blog.sohu.com/87264836.html</link>
			<comments>http://echowhere.blog.sohu.com/87264836.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:34:00 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87264836.html</guid>
			<description><![CDATA[<p>越来越多的关键应用运行在J2EE（Java 2, Enterprise Edition）中，这些诸如银行系统和账单处理系统需要高的可用性（High Availability, HA），同时像Google和Yahoo这种大系统需要大的伸缩性。高可用性和伸缩性在今天高速增长的互连接的世界的重要性已经证实了。eBay于1999年6月停机22小时的事故，中断了约230万的拍卖，使eBay的股票下降了9.2个百分点。</p>
<p>J2EE集群是用来提供高可用性和伸缩性服务，同时支持容错处理的一种流行的技术。但是，由于J2EE规范缺乏对集群的支持，J2EE供应商实现集群的方法也各异。这给J2EE架构师和开发人员带来了很多困难。以下是几个常见的问题：</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp; 为什么带集群功能的商业J2EE服务器产品如此昂贵？（10倍于不带集群功能的产品）</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp; 为什么基于单服务器环境构建的应用不能在集群中运行？</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp; 为什么应用在集群环境中运行得很慢，但在非集群环境中却快得多？</p>
<p>l&nbsp;&nbsp;&nbsp;&nbsp; 为什么集群的应用移植到其他服务器中失败？</p>
<p>理解这些限制和要素的最佳方法是学习他们的实现方式。</p>
<h1>基本术语</h1>
<p>在我们讨论不同的集群实现之前，先谈谈几个概念。这有助于理解不同的J2EE集群产品不同的设计结果和概念：</p>
<p><strong>伸缩性（Scalability</strong><strong>）：</strong></p>
<p>在一些大的系统中，预测最终用户的数量和行为是非常困难的，伸缩性是指系统适应不断增长的用户数的能力。提高这种并发会话能力的一种最直观的方式就增加资源（CPU，内存，硬盘等），集群是解决这个问题的另一种方式，它允许一组服务器组在一起，像单个服务器一样分担处理一个繁重的任务。</p>
<p><strong>高可用性（High availability</strong><strong>）：</strong></p>
<p>单一服务器的解决方案并不是一个健壮方式，因为容易出现单点失效。像银行、账单处理这样一些关键的应用程序是不能容忍哪怕是几分钟的死机。它们需要这样一些服务在任何时间都可以访问并在可预期的合理的时间周期内有响应。集群方案通过在集群中增加的冗余的服务器，使得在其中一台服务器失效后仍能提供服务，从而获得高的可用性。</p>
<p><strong>负载均衡（Load balancing</strong><strong>）：</strong></p>
<p>负载均衡是集群的一项关键技术，通过把请求分发给不同的服务器，从而获得高可用性和较好的性能。一个负载均衡器可以是从一个简单的Servlet或Plug-Ins（例如一个Linux box利用ipchains来实现），到昂贵的内置SSL加速器的硬件。除此之外，负载均衡器还需执行一些其他的重要任务，如&ldquo;会话胶粘&rdquo;让一个用户会话始终存在一个服务器上，&ldquo;健康检查&rdquo;用于防止将请求分发到已失效的服务器上。有些负载均衡器也会参与我们下面将要谈到&ldquo;失效转移&rdquo;过程。</p>
<p><strong>容错（Fault tolerance</strong><strong>）：</strong></p>
<p>高可用性意味着对数据正确性的要求不那么高。在J2EE集群中，当一个服务器实例失效后，服务仍然是有效的，这是因为新的请求将被冗余服务器处理。但是，当一个请求在一个正在失效的服务器中处理时，可能得到不正确的结果。不管有多少个错误，容错的服务应当能确保有严格的正确的行为。</p>
<p><strong>失效转移（Failover</strong><strong>）：</strong></p>
<p>失效转移是集群中用来获取容错能力的另一项关键的技术。当一个结点失效后，通过选择集群中的另一个结点，处理将会继续而不会终止。转移到另一个结点可以被显式的编码，或是通过底层平台自动地透明地路由到另一个服务器。</p>
<p><strong>等幂方法（Idempotent methods</strong><strong>）：</strong></p>
<p>等幂方法是指这样一些方法：重复用相同的参数调用都能得到相同的结果。这些方法不会影响系统状态，可以重复调用而不用担心改变系统。例如：getUsername()就是等幂的，而deleteFile就不是。当我们讨论HTTP Session失效转移和EJB失效转移时，它是一个重要的概念。</p>
<h1>什么是J2EE集群</h1>
<p>一个天真的问题，不是吗？但我仍要用几句话和图来回答它。通常，J2EE集群技术包括&quot;负载均衡&quot;和&quot;失效转移&quot;。</p>
<p align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/ESoftWind/clip_image002.gif" /></p>
<p align="center"></p>
<p align="center">图 1&nbsp; 负载均衡</p>
<p>如图1所示，负载均衡意味着有许多客户端向目标对象同时发出请求。负载均衡器在调用者和被调用者之间，分发请求到与原始对象相同的冗余对象中。伸缩性和高可用性就是这样得到的。</p>
<p align="center">&nbsp;</p>
<p align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/ESoftWind/clip_image004.gif" /></p>
<p align="center">图 2&nbsp; 失效转移</p>
<p>如图2所示，失效转移与负载均衡不同。有时客户端会连续发请求到目标对象，如果请求中间目标对象失效了，失效转移系统将检测到这次失败，并将请求重定向到另一个可用的对象。通过这种方式可以获得容错能力。</p>
<p>如果你想知道更多的有关J2EE集群的知识，你就会问到一个基本的问题，&ldquo;什么对象可以集群？&rdquo;和&ldquo;在我的J2EE代码中哪里会发生负载均衡和失效转移呢？&rdquo;。这些都是用来理解J2EE集群的非常好的问题。实际上，并不是所有的对象都能被集群的，并且负载均衡和失效转移并不是在J2EE代码所有地方都能发生。看看下面的例子代码：</p>
<p align="center">&nbsp;</p>
<p align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/ESoftWind/clip_image006.gif" /></p>
<p align="center">图 3&nbsp; 例子代码</p>
<p>在Class A的bussiness()方法中，instance1可以负载均衡吗？或是当其失效，可以失效转移到其他B的实例上吗？我想是不行的！对负载均衡和失效转移来说，必须要有个拦截器在调用者和被调用者之间分发或重定向请求到不同的对象上。Class A和Class B的实例是运行在一个JVM中紧密耦合的，在方法调用间加入分发逻辑非常困难。</p>
<p>什么类型对象可以被集群？&mdash;&mdash;<strong>只有那些可以被部署到分布式拓朴结构中的组件。</strong></p>
<p>在我的J2EE代码中，什么地方会有负载均衡和失效转移？&mdash;&mdash;<strong>只在你调用分布式组件的方法时。</strong></p>
<p align="center">&nbsp;</p>
<p align="center"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/ESoftWind/clip_image008.gif" /></p>
<p align="center">图 4&nbsp; 分布式对象</p>
<p>在如图4所示的分布式环境中，调用者和被调用者被分离在有明显边界的不同的运行容器中，这个边界可以是JVM，进程和机器。</p>
<p>当目标对象被客户端调用时，目标对象的功能是在容器中运行的（这就是为什么我们说它是分布式的原因）。客户端和目标对象通过标准的网络协议通信。这些特性就为一些机制提供了机会可以介入到方法调用之间实现负载均衡和失效转移。</p>
<p>如图4，浏览器通过HTTP协议调用JSP对象，JSP运行在WEB服务器中，浏览器只需要返回结果而不关心它是怎么运行的。在上述场景中，一些东西就可以在浏览器与WEB服务器之间实现负载均衡和失效转移的功能。在J2EE平台，分布式技术包括：JSP（Servlet），JDBC，EJB，JNDI，JMS，WEB Service等。负载均衡和失效转移就发生在这些分布式方法被调用时。在后续部分我们将详细讨论这些技术。 </p>]]></description>
		</item>
		    
		
		<item>
			<title>优秀程序员的两大要素：懒 + 笨</title>
			<link>http://echowhere.blog.sohu.com/87264330.html</link>
			<comments>http://echowhere.blog.sohu.com/87264330.html#comment</comments>
			<dc:creator>IT- 角度决定深度!</dc:creator>
			<pubDate>Tue, 13 May 2008 21:29:49 +0800</pubDate>
			<guid>http://echowhere.blog.sohu.com/87264330.html</guid>
			<description><![CDATA[懒 <br /><br />只有懒惰的程序员才会去编写那些可以最终代替自己工作的自动化工具，才不会成天为了实现相似的功能去编写大段大段冗余重复的代码 - 这种代码往往是软件后期维护和重构的天敌。通常来说，由于惰性的驱使所产生出来的工具和程序将最终极大的提高生产开发的速度。 <br /><br />当然，对于一个程序员来说，光光具备懒惰这个要素还是不够的。在享受懒惰之前，他必须以最大的热情和最高的效率去研究解放自己的途径，比如：找到最有助于开发的工具，最能体现&ldquo;一次编写，多次复用&rdquo;精神的代码架构的设计。只有在这些必要的工作之后，才可能真正享受轻松编程的乐趣。 <br /><br />所以&ldquo;懒&rdquo;的精髓用一句老话来描述，那就是磨刀不误砍柴功。如果你不想办法磨亮手中的柴刀，就算一天二十四小时都在砍柴，效果也不如拿把锋利的斧头一天只砍一小时。 <br /><br />从这个角度来说，Google给员工的20%自由时间是完全发挥了&ldquo;懒&rdquo;的能动力。为了更好的享受偷懒的乐趣，员工会更加具有创造力的去高效完成自己的任务。 <br /><br />夸张一点来说，懒惰才是人类进步的原动力。 <br /><br /><br /><br /><br /><br />笨 <br /><br />这一点似乎比懒更让人不能接受。在解释这里所说的笨的具体含义之前，我们先看看一个聪明人（或者说认为自己足够聪明）会做什么： <br /><br /><br /><br />1) 停止学习新的东西 <br /><br />2) 不愿意用批判的眼光去审视自己的工作 <br /><br /><br /><br />第1点将使我们很难去接受或者主动的去研究一项新的技术 - 即使新技术能带给他更多工作上的便利。第2点会使我们无法清晰的分析自身工作的问题所在，要对其进行改进或者重构就更加困难。 <br /><br />从这两点来考虑，作为一个程序员太自以为是不见得是件好事情。由于对自身的过于自信，往往无法客观的看待自己和自己的工作。相反的，笨一点（确切的说，谦逊一点）有时候倒有助于开发的顺利进行。举例来说，当程序出现bug的时候，最好尽早承认问题是出在自己编写的代码上面而不是在于编译器（当然除非是字节高低位编码方式之类的问题，这种问题编译器会是错误的根源之一）。如果你太自负的认为自己的程序没有问题而去猜测可能是编译器或者其他的什么外部因素出问题的话，那么十有八九你会在调试过程中走上一长段的弯路。 <br /><br /><br /><br /><br /><br />程序员应该笨一些的更为关键的原因在于，当需要思考问题的最佳解决方案的时候，往往要求我们首先要跳出思维定式。你对系统了解的越多，积累了越多的经验，就越难走出已有的局限，可以尝试的范围就越小。相反的，对于一个什么也不懂的门外汉来说，因为没有任何失败的记忆和潜规则的约束，也就没有什么是&ldquo;不可能&rdquo; 的，这样的大脑所能迸发出来的在专业人士看起来愚不可及的想法往往正是解决问题所需要的关键点所在。 <br /><br />可能很多程序员都会有类似的经历，在面对别人（尤其是其他部门）对于一个bug的描述的时候，必须把自己摆在一个普通用户而不是程序开发者的角度来分析问题，否则的话可能你永远都想象不到这种错误也会发生。越能让自己变得&ldquo;笨&rdquo;起来，越能很快的定位到问题所在。我们先看看这么一段关于web开发问题的程序员和客服人员的对话： <br /><br /><br /><br />&ldquo;从昨天开始我们的用户就看不到我们站点上的Logo了。&rdquo; <br /><br />&ldquo;他试过重启浏览器么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他试过重启电脑么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他清空过浏览器Cache么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他的浏览器版本是IE6么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他确信是真的看不到Logo了么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他是在电脑显示器屏幕上看我们的站点么？&rdquo; <br /><br />&ldquo;什么？&rdquo; <br /><br />&ldquo;比如说，它可能是打印出来看不到？&rdquo; <br /><br />&ldquo;不。他是在显示器上看的。&rdquo; <br /><br />&ldquo;除了站点Logo之外，他是不是其他的图片都看不到？&rdquo; <br /><br />&ldquo;什么？哦。我再问问他。&rdquo; <br /><br /><br /><br />从这段对话来说，估计用户实际上是禁止了浏览器显示图片的功能（或者他儿子干的）。不管怎么样，如果你不是用这种傻瓜式的思维方式去寻找答案的话，可能怎么也找不到问题的根源。 <br /><br />很多时候，问题发现者对于问题的描述往往是非常片面的，并且加上了主观推测的成分在里面。如果你不能透过这些主观的描述去发现问题的实际表象，或者说根本就是你自己根据程序员的经验逻辑来判断问题所在的话，十有八九会在歧途上越走越远。 <br /><br />对于白痴级的问题，只有用白痴的行为方式才能得到答案。 <br /><br /><br /><br /><br /><br />即便同样是程序员，但对于你的程序并不熟悉，也会经常有这样的疑问：&ldquo;为什么我调用你的代码出错了？&rdquo;这种问题的答案，很多时候是因为他们的调用方式不对，或者调用了错误的库文件，或者库文件的版本使用不当，或者根本就没有联接到库文件上。当你想让同事帮你检查一下程序中的一个莫名其妙的bug的时候，一般来说希望他对你的系统了解的越少越好，只有这样他才会问一些你自己认为绝对不可能出问题的&ldquo;笨&rdquo;问题。 <br /><br />所以&ldquo;笨&rdquo;的精髓在于你如何去思考问题：不要假设些什么，把自己假设的太完美或者把别人假设的很聪明都会使你忽视一些很浅显的事实。思考的前提必须是完整的事实表象，思考的过程必须是抛弃成见的问题跟踪。在发现事实之前作太多的主观思考和臆断，倒不如把自己当作白痴一样来行动更好。 <br /><br />当然，不思考的一个极端是不分情况都直接去做，另一个极端是完全脱离事实，用思想办事。一个优秀的程序员应该做好权衡。10次决定里面的1次错误决定不是致命的；只做5次正确的决定而另外5次没有任何决定才更糟糕。 <br /><br />最后是一个蜈蚣的故事。蜈蚣本来用自己的几百只脚走路走的很快很好，但他从来没有花时间去想过为什么。直到有一天，一只臭虫问他：&ldquo;你是怎么管理好你的几百只脚的？你不觉得这是件很困难的事情吗？&rdquo;臭虫问完之后就走了。只剩下蜈蚣坐在地上，不停的思考这个问题，却一直想不出个究竟。从此以后，这只蜈蚣再也没办法好好的走路了。 <br /><br />来源 <br /><br />可能很多程序员都会有类似的经历，在面对别人（尤其是其他部门）对于一个bug的描述的时候，必须把自己摆在一个普通用户而不是程序开发者的角度来分析问题，否则的话可能你永远都想象不到这种错误也会发生。越能让自己变得&ldquo;笨&rdquo;起来，越能很快的定位到问题所在。我们先看看这么一段关于web开发问题的程序员和客服人员的对话： <br /><br /><br /><br />&ldquo;从昨天开始我们的用户就看不到我们站点上的Logo了。&rdquo; <br /><br />&ldquo;他试过重启浏览器么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他试过重启电脑么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他清空过浏览器Cache么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他的浏览器版本是IE6么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他确信是真的看不到Logo了么？&rdquo; <br /><br />&ldquo;是的。&rdquo; <br /><br />&ldquo;他是在电脑显示器屏幕上看我们的站点么？&rdquo; <br /><br />&ldquo;什么？&rdquo; <br /><br />&ldquo;比如说，它可能是打印出来看不到？&rdquo; <br /><br />&ldquo;不。他是在显示器上看的。&rdquo; <br /><br />&ldquo;除了站点Logo之外，他是不是其他的图片都看不到？&rdquo; <br /><br />&ldquo;什么？哦。我再问问他。&rdquo; <br /><br /><br /><br />从这段对话来说，估计用户实际上是禁止了浏览器显示图片的功能（或者他儿子干的）。不管怎么样，如果你不是用这种傻瓜式的思维方式去寻找答案的话，可能怎么也找不到问题的根源。 <br /><br />很多时候，问题发现者对于问题的描述往往是非常片面的，并且加上了主观推测的成分在里面。如果你不能透过这些主观的描述去发现问题的实际表象，或者说根本就是你自己根据程序员的经验逻辑来判断问题所在的话，十有八九会在歧途上越走越远。 <br /><br />对于白痴级的问题，只有用白痴的行为方式才能得到答案。 <br /><br /><br /><br /><br /><br />即便同样是程序员，但对于你的程序并不熟悉，也会经常有这样的疑问：&ldquo;为什么我调用你的代码出错了？&rdquo;这种问题的答案，很多时候是因为他们的调用方式不对，或者调用了错误的库文件，或者库文件的版本使用不当，或者根本就没有联接到库文件上。当你想让同事帮你检查一下程序中的一个莫名其妙的bug的时候，一般来说希望他对你的系统了解的越少越好，只有这样他才会问一些你自己认为绝对不可能出问题的&ldquo;笨&rdquo;问题。 <br /><br />所以&ldquo;笨&rdquo;的精髓在于你如何去思考问题：不要假设些什么，把自己假设的太完美或者把别人假设的很聪明都会使你忽视一些很浅显的事实。思考的前提必须是完整的事实表象，思考的过程必须是抛弃成见的问题跟踪。在发现事实之前作太多的主观思考和臆断，倒不如把自己当作白痴一样来行动更好。 <br /><br />当然，不思考的一个极端是不分情况都直接去做，另一个极端是完全脱离事实，用思想办事。一个优秀的程序员应该做好权衡。10次决定里面的1次错误决定不是致命的；只做5次正确的决定而另外5次没有任何决定才更糟糕。 <br /><br />最后是一个蜈蚣的故事。蜈蚣本来用自己的几百只脚走路走的很快很好，但他从来没有花时间去想过为什么。直到有一天，一只臭虫问他：&ldquo;你是怎么管理好你的几百只脚的？你不觉得这是件很困难的事情吗？&rdquo;臭虫问完之后就走了。只剩下蜈蚣坐在地上，不停的思考这个问题，却一直想不出个究竟。从此以后，这只蜈蚣再也没办法好好的走路了。 <br />]]></description>
		</item>
		    
		
	</channel>
</rss>
