-
2009-10-12
其实我们都是菜鸟,有感《围观不会设置Java User-Agent的菜鸟》 - [share]
其实我们都是从菜鸟成长起来的,感谢在这个过程中给予我们帮助的人!
下面的文字转自: http://www.ideawu.net/blog/?p=428
最近, 网上盛传一个笑话, 一般名字叫做"围观不会设置Java User-Agent的菜鸟". 讲的是国外一个用Java开发Web爬虫获取网页
的菜鸟, 不知道怎么设置自己虫子的User-Agent字段, 该字段可以告诉Web服务器, 对方用的是什么工具或者软件. 这个笑话中的事情确有
其事, 见下面URL:
https://groups.google.com/group/comp.lang.java/browse_thread/thread/6923c024ed392c85
这个帖子(邮件)的发贴人使用的邮箱后缀是cs.stanford.edu, 他是斯坦福大学的学生. 发贴的时间是1996年1月, 使用的Java
是1.0beta2. 当时, Web爬虫技术应该是非常稀有的技术, Java/1.0beta2的HTTP相关库也应该非常难用. 现在看来, 那
时的人, 那时的技术, 都像是婴儿. 所以, 这看起来像个笑话.
但是, "笑话"的笑点在这里吗? 我相信, 大家在看到这个所谓的笑话时, 可能会心里或者面上露出笑, 但应该是感悟的笑, 自嘲的笑, 无奈的
笑, 思索的笑...肯定不会有快乐的笑. 为什么? 因为发贴的人是Larray Page, 是Google公司的创始人之一. 他创造了全球许多
技术人员的上帝, 他创造了巨大的财富, 他创造了技术和商业神话. 可是, 他曾经做过的事, 使用的技术, 开发出的产品, 遇到的无法逾越的问
题, 向人讨教时的心情, 和我们那么接近, 甚至对我们大部分技术人员简直是小菜一碟. 在每一个人心中, 这都是一个历史笑话, 让我们思考技术的
本质.
我把这封邮件引用在这里, 做个留念:
I have a web robot which is a Java app. I need to be able to set
the User-Agent field in the HTTP header in order to be a good net
citizen (so people know who is accessing their server). Anyone have
any ideas?
Right now, Java sends a request that includes something like:
User-Agent: Java/1.0beta2
I'd rather not rewrite all the HTTP stuff myself. I tried just
searching in the JDK for the Java/1.0beta2 figuring I could just
change the string, but I couldn't find it. Perhaps it is stored as a
unicode string?
An easy method of setting the User-Agent field should probably be
added to Java, so people can properly identify their programs.
Thanks, Larry Page -
2009-10-05
Kseniya Simonova的沙画 - [share]
Kseniya Simonova,乌克兰人,80后的沙画艺术家。
人美,画更美。下面两个沙画作品是她在《乌克兰达人》这个选秀节目中的表演。每个作品都讲述了一个故事。
比赛中的表演令现场观众看她作画居然会为之泪下。她的沙画艺术是对艺术与灵魂的诠释,看她作画的过程,能够让人感觉身心得到净化和升华,难以想象这竟然是在一场选秀节目中的表演。
这个作品讲述的是德国二战期间侵略乌克兰历史。最后她写的字意思是“永远和你们在一起”。 结尾部分的背景音乐是“nothing else matters”。
这个作品表达了宇宙、人生、亲情。孩子从出生到变成画家,出名后和父母很少联系,老母亲只能在电视里看着儿子的身影,最后孤独的死去。
Kseniya Simonova在录像最后用俄语写了:“Don't be late...; 别晚了...”,意思是要赶紧和家人联系,等到家人都走了就晚了。 -
2009-09-27
如何培养员工的主动性 - [share]
原文地址:漫天风
培养员工的主动性和敬业精神可以从几大方面入手:
1、 最基本的是创造一个积极的,宽松的,自组织的工作环境和氛围。在这个环境中,倡导学习型团队文化。
2、 积极建设阶梯型、多样化的人才团队。一个团队如果能形成良好的人才梯队,不仅仅有利于团队形成强大的竞争力,而且一定程度上能激发不同成员的主动性和积极性。
3、 完善的角色和明确的工作职责。一个团队,如果缺乏某个特定的角色,不仅仅在这个特定领域中会成为团队的短板,而且往往需要团队Leader去弥补或救火,这样会成为团队发展的瓶颈,这个是限制员工发挥主动性的重要因素。
4、 合理的授权。团队领导应该成为教练,并从中帮助团队各个角色更好的协作,更好的发挥每个人的优势。授权是一门管理艺术,信任每个员工,并给他们充分的权力,有助于提升员工的主动性和敬业精神。
5、 激励。当团队的目标达成时,当某个员工表现突出时,适当的激励将会使团队焕发激情,同时也是对每个员工的一种肯定和鼓励。善于使用激励的领导,将会让他的员工充满积极主动性。
-
2009-08-18
Internet 技术演变图 - [share]
-
2009-07-20
我们又何尝没当过半调子 - [share]
其实半调子也不错!
半调子
词/曲:徐寅
——自闭症的小孩
演唱:徐若瑄
半调子的世界 是秋天的
半调子的童年 是有缺陷的
半调子的朋友 是少之又少的
半调子的路 是孤独的
半调子的歌 是便宜卖的
半调子最爱的 都是别人最恨的
半调子的内心 是空虚的
半调子的夜晚 さぴしい
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子是不经意 就抄袭别人作品的
半调子他 真的不是有心的
半调子都是 不敢多说话的
半调子其实是 很想上进的
半调子的外表 是挺有那么一回事儿的
半调子的Sense 是很脆弱的
半调子有时 是很有感觉的
可那感觉 通常也都是别人的
半调子的颜色 是温柔的
半调子的爱情 是含羞草型的
半调子的女人 也是半调子的
半调子的内涵 是1/4的
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 oh
半调子的歌 半调子的歌
半调子的歌 半调子的歌
半调子的歌 歌…… -
2009-07-10
We are the world - [share]
《我们同属一个世界》是1985年1月28日在美国洛杉矶“生存援助音乐会”中的大会主题歌。
1985年,非洲的埃塞俄比亚、苏丹、毛里塔尼亚等国严重干旱,粮食短缺,成百万人死于饥荒。据估计,非洲有一亿五千万人受到饥饿的威胁。消息传来, 引起世界各国人民的关注,纷纷伸出援助之手,救援饥饿的非洲人民。其中最引人注目的是在英国和美国举行的由民间发起的“生存援助音乐会”。1985年1月 28日,在洛杉矶举行了规模空前的援助非洲的大义演,在场的歌星和工作人员手挽手同声高唱这首大会的主题歌《我们同属一个世界》( We are the World ),感人涕下。这首主题歌是西方摇滚巨星迈克尔·杰克逊和莱昂内尔·里奇连夜赶写出来的。这首歌制成磁带分寄给美国几十名歌星时附上迈克尔·杰克逊写的一段话:“如 果将来你们的后代问起,他们的爸爸妈妈为人类面临饥荒做了些什么?你们可以骄傲地回答他们,你们做了应做的贡献。”这首歌推出后,很快响遍全球,几天内唱 片销售突破100万张,收入的5000万美元全部用于救援非洲灾民。演出的当天晚上,美国著名影星简·方达主持了这次实况转播的电视节目。她最后说道: “这不只是个群星灿烂的夜晚,而且是流行音乐史上一个更高尚的时刻,它表明,流行音乐在过去的几年里所产生的歌星们,对这个世界所具有的责任感……”
半年后,7月13日,美国歌星迈克尔·杰克逊在美国费城肯尼迪体育场举行救援非洲灾民音乐会。与此同时,鲍勃·吉尔多夫在英国伦敦温布利体育场也举行 另一场有几十名著名歌星参加的救援音乐会。这两场音乐会,通过卫星向世界上140多个国家现场直播,演出达16个小时,收看观众多达20亿人,募集救济款 8500万美元,在世界上传为佳话。杰克逊、鲍勃、里奇等人以及参加义演的歌星们的行动,受到人们的尊敬。
迈克尔·杰克逊和莱昂内尔·里奇凭借此歌曲在1985年为非洲捐款8500万美元。同时也开创了多位歌星共同演绎公益歌曲MV的先河。次年杰克逊同里奇因创作了We are the wolrd而两人同时获得格莱美大奖。
也正是we are the world在世界引起轰动后罗大佑才写的《明天会更好》,而就是因为《明天会更好》在中国大江南北唱红后郭峰才写的《让世界充满爱》,并由108位歌手演绎。
-
前几天听到了“花儿”乐团解散的消息,心里有些小小的感慨。
曾经记得“花儿”刚刚出道的时候,大家都对这个年轻的乐队有很高的期望,而且他们出了几张不错的专辑,如《草莓声明》、《幸福的旁边》。
不过近几年的“花儿”却经常以一种恶搞、抄袭者的身份出现在媒体上。虽然他们的歌曲也上了彩铃的排行榜,应该也是取得了不菲的收益,但是却离我心目中唱着朋克的“花儿”越来越远了。毕竟坚持自己的梦想一直走下去是很难很难的事情。
可能他们有他们的追求,但是我已经不再听他们的歌了。
送上我个人认为他们最好的一首《泡沫》,给所有有梦想的人。
歌词:
我点燃那盏灯火
向远方凝望着
空气都打开了
记忆随风散落
幻想美好的时刻
没有完美结果
红色夕阳下落
黯淡的云朵
憧憬你飘浮的泡沫
光映出灿烂的颜色
可却没有照到我
全世界的雨打到我
我的梦早已湿透了
瞬间被淹没 -
2009-06-03
《怎样成为优秀的软件架构师》解析 (好文转载) - [share]
近来读了一篇《怎样成为优秀的软件模型设计者》的文章,感触颇深。仔细对比分析,发现原来我自己和周围的软件开发人员平常的一些自认为对的做法,有很多是有问题的。
1.人远比技术重要
你 开发软件是为了供别人使用,没有人使用的软件只是没有意义的数据的集合而已。许多在软件方面很有成就的行家在他们事业的初期却表现平平,因为他们那时候将 主要精力都集中在技术上。显然,构件(components),EJB(EnterpriseJavaBeans)和代理(agent)是很有趣的东西。 但是对于用户来说,如果你设计的软件很难使用或者不能满足他们的需求,后台用再好的技术也于事无补。多花点时间到软件需求和设计一个使用户能很容易理解的 界面上。从微软操作系统和OFFICE套件在市场上的成功可以得到对这个问题的最佳解释。
2.理解你要实现的东西
好的软件设计人员把大多数时间花费在建立系统模型上,偶尔写一些源代码,但那只不过是为了验证设计过程中所遇到的问题。这将使他们的设计方案更加可行。有效的系统分析和架构是减少后期错误或复杂实现的必要保证。
3.谦虚是必须的品格
你 不可能知道一切,你甚至要很努力才能获得足够用的知识。软件开发是一项复杂而艰巨的工作,因为软件开发所用到的工具和技术是在不断更新的。而且,一个人也 不可能了解软件开发的所有过程。在日常生活中你每天接触到的新鲜事物可能不会太多。但是对于从事软件开发的人来说,每天可以学习很多新东西(如果愿意的 话)。目空一切、自满自足的人是不可能成为一个优秀的软件架构师的。
4.需求就是需求
如 果你没有任何需求,你就不要动手开发任何软件。成功的软件取决于时间(在用户要求的时间内完成)、预算和是否满足用户的需求。如果你不能确切知道用户需要 的是什么,或者软件的需求定义,那么你的工程注定会失败。我们进行的很多需求分析,实际上是想当然的认为用户的需求和自己认为的应该是一样的。
5.需求其实很少改变,改变的是你对需求的理解
需求分析需要一丝不苟、精确的完成,而设计的时候反而可以发挥创造力和想象力。
如果需求经常改动,很可能是你没有作好需求分析,并不是需求真的改变了。
你可以抱怨用户不能告诉你他们想得到什么,但是不要忘记,收集需求信息是你的工作。
需求真正改变的情况很少,但是没有做好需求分析工作的理由却很多。
6.经常阅读
在这个每日都在发生变化的产业中,你不可能在已取得的成就上陶醉太久。
每个月至少读2、3本专业杂志或者1本专业书籍。保持不落伍需要付出很多的时间和金钱,但会使你成为一个很有实力的竞争者。这一条在我周围能够真正实现的人很少。
7.降低软件模块间的耦合度
高耦合度的系统是很难维护的。一处的修改引起另一处甚至更多处的变动。
你可以通过以下方法降低程序的耦合度:隐藏实现细节,强制构件接口定义,不使用公用数据结构,不让应用程序直接操作数据库。
耦合度低的软件可以很容易被重用、维护和扩充。
8.提高软件的内聚性
如果一个软件的模块只实现一个功能,那么该模块具有高内聚性。高内聚性的软件更容易维护和改进。
判断一个模块是否有高的内聚性,看一看你是否能够用一个简单的句子描述它的功能就行了。如果你用了一段话或者你需要使用类似“和”、“或”等连词,则说明你需要将该模块细化。
只有高内聚性的模块才可能被重用。
9.考虑软件的移植性
移植是软件开发中一项具体而又实际的工作,不要相信某些软件工具的广告宣传。
即使仅仅对软件进行常规升级,也要把这看得和向另一个操作系统或数据库移植一样重要。
当你使用了某个操作系统的特性,如它的进程间通信(IPC)策略,或用某数据库专有语言写了存储过程。你的软件和那个特定的产品结合度就已经很高了。
好的软件设计者把那些特有的实现细节打包隐藏起来,所以,当那些特性该变的时候,你仅仅需要更新那个包就可以了。这些说到容易做到很难,没有扎实的基本功是很难成功的。
10.接受变化
这是一句老话了:唯一不变的只有变化。
通过在建模期间考虑这些假设的情况,你就有可能开发出足够强壮且容易维护的软件。设计强壮的软件是你最基本的目标。
11.不要低估对软件规模的需求
Internet带给我们的最大的教训是你必须在软件开发的最初阶段就考虑软件规模的可扩充性。
今天只有100人的部门使用的应用程序,明天可能会被有好几万人的组织使用,下月,通过因特网可能会有几百万人使用它。
在软件设计的初期,根据在用例模型中定义的必须支持的基本事务处理,确定软件的基本功能。然后,在建造系统的时候再逐步加入比较常用的功能。
在设计的开始考虑软件的规模需求,避免在用户群突然增大的情况下,重写软件。同时也不能只因为考虑未知的用户量而花费太大的成本。需求分析是平衡控制的依据。
12.性能仅仅是很多设计因素之一
关注软件设计中的一个重要因素--性能,这好象也是用户最关心的事情。一个性能不佳的软件将不可避免被重写。
但 是你的设计还必须具有可靠性,可用性,便携性和可扩展性。你应该在工程开始就应该定义并区分好这些因素,以便在工作中恰当使用。性能可以是,也可以不是优 先级最高的因素,我的观点是,给每个设计因素应有的考虑。花哨的、运行快速但是不能解决用户问题的系统,是不会得到用户的满意的。
13.管理接口
应该在开发阶段的早期就定义软件模块之间的接口。这有助于开发人员全面理解软件的设计结构并取得一致意见,让各模块开发小组相对独立的工作。一旦模块的接口确定之后模块怎样实现就不是很重要了。
从根本上说,如果你不能够定义你的模块“从外部看上去会是什么样子”,你肯定也不清楚模块内要实现什么。
14.走近路需要更长的时间
在软件开发中没有捷径可以走。
缩短你的在需求分析上花的时间,结果只能是开发出来的软件不能满足用户的需求,必须被重写。
在软件建模上每节省一周,在将来的编码阶段可能会多花几周时间,因为你在全面思考之前就动手写程序。
你为了节省一天的测试时间而漏掉了一个bug,在将来的维护阶段,可能需要花几周甚至几个月的时间去修复。与其如此,还不如重新安排一下项目计划。
避免走捷径,只做一次但要做对。
15.证明你的设计在实践中可行
在设计的时候应当先建立一个技术原型,或者称为“端到端”原型。以证明你的设计是能够工作的。
你应该在开发工作的早期做这些事情,因为,如果软件的设计方案是不可行的,在编码实现阶段无论采取什么措施都于事无补。技术原型将证明你的设计的可行性,从而,你的设计将更容易获得支持。
16.应用已知的模式
目前,我们有大量现成的分析和设计模式以及问题的解决方案可以使用。
一般来说,好的模型设计和开发人员,都会避免重新设计已经成熟的并被广泛应用的东西。
17.研究每个模型的长处和弱点
目 前有很多种类的模型可以使用,如下图所示。用例捕获的是系统行为需求,数据模型则描述支持一个系统运行所需要的数据构成。你可能会试图在用例中加入实际数 据描述,但是,这对开发者不是非常有用。同样,数据模型对描述软件需求来说是无用的。每个模型在你建模过程中有其相应的位置,但是,你需要明白在什么地 方,什么时候使用它们。
18.在现有任务中应用多个模型
当你收集需求的时候,考虑使用样例模型,用户界面模型和领域级的类模型。
当你设计软件的时候,应该考虑制作类模型,顺序图、状态图、协作图和最终的软件实际物理模型。
程序设计人员应该慢慢意识到,仅仅使用一个模型而实现的软件要么不能够很好地满足用户的需求,要么很难扩展。
19.带工具的傻瓜还是傻瓜
使 用一个很优秀的CASE工具并不能使你成为一个建模专家,只能使你成为一个优秀CASE工具的使用者。成为一个优秀的建模专家需要多年的积累,不会是一周 针对某个价值几千美元工具的培训。一个优秀的CASE工具是很重要,但你必须学习使用它,并能够使用它设计它支持的模型。现在的编程工具越来越容易上手, 有不少的人已经不去加强对基础知识的学习,这是很危险的。
20.理解完整的过程
好的设计人员应该理解整个软件过程,尽管他们可能不是精通全部实现细节。
软件开发是一个很复杂的过程,除了编程、建模、测试等你擅长工作外,还有很多工作要做。好的设计者需要考虑全局。必须从长远考虑如何使软件满足用户需要,如何提供维护和技术支持等。
21.常做测试,早做测试
如 果测试对你的软件来说是无所谓的,那么你的软件多半也没什么必要被开发出来。建立一个技术原型供技术评审使用,以检验你的软件模型。在软件生命周期中,越 晚发现的错误越难修改,修改成本越昂贵。尽可能早的做测试是很值得的。测试工作一贯是得不到重视的,即便你天天挂在嘴上,但是请看看你的行动。黑盒测试将 压力给了测试人员,实际上很多的无用测试的根源应该从白盒测试中查找,这是软件开发人员的问题。
22.把你的工作归档
不值得归档的工作往往也不值得做。归档你的设想,以及根据设想做出的决定;归档软件模型中很重要但不很明显的部分。给每个模型一些概要描述以使别人很快明白模型所表达的内容。
23.技术会变,基本原理不会
如 果有人说“使用某种开发语言、某个工具或某某技术,我们就不需要再做需求分析,建模,编码或测试”。不要相信,这只说明他还缺乏经验。抛开技术和人的因 素,实际上软件开发的基本原理自20世纪70年代以来就没有改变过。你必须还定义需求,建模,编码,测试,配置,面对风险,发布产品,管理工作人员等等。
软件建模技术是需要多年的实际工作才能完全掌握的。好在我们可以从以上的建议开始,完善自己的软件开发经验。
要想成为优秀的软件架构师或软件开发人员,必须要有一个端正的态度,如果只是想依靠这个所谓的名份做幌子、混日子。我劝你还是不要踏入这个行业,以免误人误己。
作者简介:晏高明,中原油田地质录井处信息管理中心工作,2006年获国家级“系统分析员”认证资格证书。原文地址:http://www.zylj.com/Article_Show.asp?ArticleID=1184
-
原文地址:
http://blog.china.alibaba.com/blog/ethinker/article/b0-i6854277.html
平平淡淡才是真,大多数情况下,这七个字往往用在宽慰别人和自我安慰的时候。当激情不再,当新鲜淡去,当矛盾骤起,当琐事重复,当无力改变,当心力交瘁。 人们需要平复自己,需要接受现实,需要告诫自己“知足吧”,需要让理性捆住理想“换一个也未必更好”。这个时候,说出“平平淡淡才是真”这七个字听上去有 些无奈,有些落寞。自然也有不少人从平淡中获得感动,从平淡中学会珍惜,相伴长久。
但这并不是我所理解的“平平淡淡才是真”,我的理解很简单,所谓“平平淡淡才是真”,就是说,不平淡的基本上都是假的。人的本性是追求不平淡的,追求新鲜的,刺激的,能够刺激体内激素分泌的,但是这类情感就像兴奋剂和毒品,带给人的体验往往是虚幻的。美好的,但不真实。
试想这样两种情况,这实际上是我们经常能够看到的对浪漫情境的描述:
1、他彩票中了大奖,带着她去了浪漫之都法国(或者巴塞罗那,怎么浪漫怎么来),一起在塞纳河边散步,一起在游船吹风,在一个浪漫之夜,他向她求婚,她幸福地接受。
2、那一天,他跟她吵了架,他本来想提出分手的,她吵闹,痛哭,跑走。。。,他接到电话,她出了车祸,摔断了腿,他一直守护在她床边,她醒来后,他说“嫁给我吧”,她留下了幸福的眼泪。
中 大奖和摔断腿这样的事情不常发生,但是一旦发生,这样的情境是很容易产生的。如果真的是如此,这两种情况下的两对男女大多数情况下并不会幸福。为什么呢? 因为不平淡,因为人在大喜和大悲的时候体现出的情感不是常态的,而两个人长久要能够在一起相处,需要的是那种常态下的本质上的契合。大喜和大悲的情况下, 人所有产生的感动都不是来自于常态的本心,而是来自于其他的因素,比如物质和环境的美妙,比如怜悯,比如责任,比如凄美和浪漫的感觉。而这些其实都是不真 实的,它真实存在,但是却未必发自本心。
所以,平平淡淡才是真,讲的是那种即使在油盐酱醋扫地洗碗吃饭睡觉吵闹争执这样的琐事中,你依旧能够有很强烈的幸福感和舒适感,依旧感觉comfortable,那就是真的了。这里再补充一点,对于不同的人,常态是不一样的。所谓常态就是这个人生命特质中最经常出现的状态,以及最不可或缺的状态。对于一个木纳的人,可能一次浪漫的举动很难得,对于一个诗人,可能随时灵感迸发。所以,看一个人,要看他生命本质中最本质的那个状态。
刺激,浪漫,极致,唯美,心有灵犀,都是奢侈品,消耗得多了,付出的是生命的成本。这些东西如同美丽的花,平淡中悉心浇灌,养分够了,自然时间会沉淀出美 丽,一季开一次,谢了下季再开,足够了。指望天天鲜花满堂,那么你只能去花店买,买来的花,即使美,那美的生命也不属于你。
以上所说,非单指男女感情,朋友,同事,合作者,但凡需要建立在长期交往的关系,都是这个道理。
-
虽然题目是“面试百问”,但是作为一个软件开发人员,这些问题不是面试的时候考官给你提的问题,而是自己问自己是否能够回答下面的问题?
孔子说:“一日三省吾身”,我们不用一日三省,每天睡觉前想想自己今天一天是否有收获就可以了。
来源:http://www.infoq.com/cn/articles/programmer-interview
英文原文:http://www.noop.nl/2009/01/100-interview-questions-for-software-developers.html
需求
- 你能给出一些非功能性(或者质量)需求的例子么?
- 如果客户需要高性能、使用极其方便而又高度安全,你会给他什么建议?
- 你能给出一些用来描述需求的不同技术么?它们各自适用于什么场景?
- 需求跟踪是什么意思?什么是向前追溯,什么是向后追溯?
- 你喜欢用什么工具跟踪需求?
- 你怎么看待需求变化?它是好是坏?给出你的理由。
- 你怎样研究需求,发现需求?有哪些资源可以用到?
- 你怎么给需求制定优先级?有哪些技术?
- 在需求过程中,用户、客户、开发人员各自的职责是什么?
- 你怎么对待不完整或是令人费解的需求?
功能设计
- 在功能设计中有哪些隐喻?给出几个成功的例子。
- 如果有些功能的执行时间很长,怎么能让用户感觉不到太长的等待?
- 如果用户必须要在一个很小的区域内,从一个常常的列表中选择多个条目,你会用什么控件?
- 有哪些方法可以保证数据项的完整?
- 建立系统原型有哪些技术?
- 应用程序怎样建立对用户行为的预期?给出一些例子。
- 如何入手设计一组数量庞大而又复杂的特性,你能举出一些设计思路吗?
- 有一个列表,其中有10个元素,每个元素都有20个字段可以编辑,你怎样设计这种情况?如果是1000个元素,每个元素有3个字段呢?
- 用不同的颜色对一段文本中的文字标记高亮,这种做法有什么问题?
- Web环境和Windows环境各有些什么限制?
技术设计
- 什么是低耦合和高聚合?封装原则又是什么意思?
- 在Web应用中,你怎样避免几个人编辑同一段数据所造成的冲突?
- 你知道设计模式吗?你用过哪些设计模式?在什么场合下用的?
- 是否了解什么是无状态的业务层?长事务如何与之相适应?
- 在搭建一个架构,或是技术设计时,你用过几种图?
- 在N层架构中都有哪些层?它们各自的职责是什么?
- 有哪些方法可以确保架构中数据的正确和健壮?
- 面向对象设计和面向组件设计有哪些不同之处?
- 怎样在数据库中对用户授权、用户配置、权限管理这几项功能建模?
- 怎样按照等级制度给动物王国(包括各种物种和各自的行为)建模?
程序设计
- 你怎样保证你的代码可以处理各种错误事件?
- 解释一下什么是测试驱动开发,举出极限编程中的一些原则。
- 看别人代码的时候,你最关心什么地方?
- 什么时候使用抽象类,什么时候使用接口?
- 除了IDE以外,你还喜欢哪些必不可少的工具?
- 你怎么保证代码执行速度快,而又不出问题?
- 什么时候用多态,什么时候用委派?
- 什么时候使用带有静态成员的类,什么时候使用单例?
- 你在代码里面怎么提前处理需求的变化?给一些例子。
- 描述一下实现一段代码的过程,从需求到最终交付。
算法
- 怎样知道一个数字是不是2的乘方?怎样判断一个数是不是奇数?
- 怎样找出链表中间的元素?
- 怎样改变10,000个静态HTML页面中所有电话号码的格式?
- 举出一个你所用过的递归的例子。
- 在散列表和排序后的列表中找一个元素,哪个查找速度最快?
- 不管是书、杂志还是网络,你从中所学到的最后一点算法知识是什么?
- 怎样把字符串反转?你能不用临时的字符串么?
- 你愿意用什么类型的语言来编写复杂的算法?
- 有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 你知道“旅行商问题(Traveling Salesman Problem)”么?
数据结构
- 怎样在内存中实现伦敦地铁的结构?
- 怎样以最有效的方式在数据库中存储颜色值?
- 队列和堆栈区别是什么?
- 用堆或者栈存储数据的区别是什么?
- 怎样在数据库中存储N维向量?
- 你倾向于用哪种类型的语言编写复杂的数据结构?
- 21的二进制值是什么?十六制值呢?
- 不管是书、杂志还是网络,你从中所学到的最后一点数据结构的知识是什么?
- 怎样在XML文档中存储足球比赛结果(包括队伍和比分)?
- 有哪些文本格式可以保存Unicode字符?
测试
- 什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?
- 如果业务层和数据层之间有依赖关系,你该怎么写单元测试?
- 你用哪些工具测试代码质量?
- 在产品部署之后,你最常碰到的是什么类型的问题?
- 什么是代码覆盖率?有多少种代码覆盖率?
- 功能测试和探索性测试的区别是什么?你怎么对网站进行测试?
- 测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?
- 要对电子商务网站做冒烟测试,你会做哪些类型的测试?
- 客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?
- 你去年在测试和质量保证方面学到了哪些东西?
维护
- 你用哪些工具在维护阶段对产品进行监控?
- 要想对一个正在产品环境中被使用的产品进行升级,该注意哪些重要事项?
- 如果在一个庞大的文件中有错误,而代码又无法逐步跟踪,你怎么找出错误?
- 你怎样保证代码中的变化不会影响产品的其他部分?
- 你怎样为产品编写技术文档?
- 你用过哪些方式保证软件产品容易维护?
- 怎样在产品运行的环境中进行系统调试?
- 什么是负载均衡?负载均衡的方式有哪些种?
- 为什么在应用程序的生命周期中,软件维护费用所占的份额最高?
- 再造工程(re-engineering)和逆向工程(reverse engineering)的区别是什么?
配置管理
- 你知道配置管理中基线的含义么?怎样把项目中某个重要的时刻冻结?
- 你一般会把哪些东西纳入版本控制?
- 怎样可以保证团队中每个人都知道谁改变了哪些东西?
- Tag和Branch的区别是什么?在什么情况下该使用tag,什么时候用branch?
- 怎样管理技术文档——如产品架构文档——的变化?
- 你用什么工具管理项目中所有数字信息的状态?你最喜欢哪种工具?
- 如果客户想要对一款已经发布的产品做出变动,你怎么处理?
- 版本管理和发布管理有什么差异?
- 对文本文件的变化和二进制文件的变化进行管理,这二者有什么不同?
- 同时处理多个变更请求,或是同时进行增量开发和维护,这种事情你怎么看待?
项目管理
- 范围、时间、成本,这三项中哪些是可以由客户控制的?
- 谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?
- 减少交付的次数,或是减少每个每个交付中的工作量,你喜欢哪种做法?
- 你喜欢用哪种图来跟踪项目进度?
- 迭代和增量的区别在哪里?
- 试着解释一下风险管理中用到的实践。风险该如何管理?
- 你喜欢任务分解还是滚动式计划?
- 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?
- DSDM、Prince2、Scrum,这三者之间有哪些区别?
- 如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?
-
陳昇 - 細漢仔 (出自 陳昇「鴉片玫瑰」專輯)
我的兄弟細漢仔十八歲的那年
帶著滿腔的熱血和阿媽的祝福來到台北
住在城市邊緣靠近發臭的新店溪
他的第一份工作開著烏黑的 Jugaur
上面坐著有錢的大爺 大爺開了酒店
當選了立法委員每天吃吃喝喝的 好不風光
世界每天都在改變 有些人不懂發言 肯定你聽過這樣的故事
為何那些讀書的人每天談的大致相同
說什麼偏左偏右心中充滿理想國
得了利益卻不放鬆 真他媽的狗屁不通
細漢仔說他不懂人人叫他不要思考 思考對你不好
有人想得太多就這樣進了黑牢 單純的心重重疑惑真是難過
有些事不需要理解 對你好你千萬不要拒絕 偉大國民你心裡要準備
有牌沒牌的流氓架著嚇人的鐵絲網追逐在午夜的大馬路上
專家說這是權力的病態你管他的做什麼
全世界最有錢的乞丐穿金戴銀晃著空的腦袋
真理靠在強者那方
每個人都紅著眼說 If you wanna rich, you got to be a bitch
兄弟你千萬不要氣餒 不滿意你回家種田
雖然稻子一斤賣不了多少錢
Confussion 漠然陪我成長 不能選擇愛與被愛的方式
Confussion 彷彿讓我明白 社會本是黑白不分的常態
阿媽說孩子你趕快回來 你的媳婦挺著肚子暗泣著等待
社會黑暗你敢也袂了解 不入寶山絕不回來
男兒立志卯上我的祖宗八代 結交四方朋友黑道白道都有
噴子握在手上忘了自己的存在
阿媽的話拋在腦後 戴起墨鏡駕著 Alfa Romeo
大哥的話唯命是從 他是兇狠的那個馬路的小英雄
想起老家心裡有時會難過 踏入社會沒有反悔的餘地
至少還保留住男子漢的尊嚴
終於有了一天條子來到老家的門前 說你的孩子出了事情
為他的老板爭奪地盤出了人命 趕快叫他出來否則活不過冬天
阿媽帶著媳婦哭哭啼啼找到了城裡
酒店的老闆四處迴避 他正忙著競選立法委員
帶話的人說〝哭夭我找嘸你尪〞
在一個寒冷無風的夜裡
有人靜靜地漂浮在新店溪 細漢仔這一次終於真正的不言也不語
(找嘸你尪 找嘸你尪....)
細漢仔…… -
2008-12-25
人体24小时器官工作表 - [share]
1∶00 人体进入浅睡眠阶段,易醒,对痛觉特别敏感。2∶00 体内大部分器官处于一天中工作最慢的时刻。而肝脏却在紧张地工作,为人体排毒。
3∶00 全身处于休息状态,肌肉完全放松。
4∶00 血压最低,人体脑部供血最少。所以,此时老年人容易发生心脑血管意外。
5∶00 经历了一定时间的睡眠,人体得到了充分休息。此时起床,显得精神饱满。
6∶00 血压开始升高,心跳也逐渐加快。
7∶00 体温开始上升,人体免疫力最强。
8∶00 皮肤有毒物质排除殆尽,性激素含量最高。
9∶00 皮肤痛觉降低。此时是就医注射的好时机。
10∶00 精力充沛,最适宜工作。
11∶00 精力最旺盛,人体不易感觉疲劳。
12∶00 经历了一个上午的工作,人体需要休息。
13∶00 此时胃液分泌最多,胃肠加紧工作,适宜进餐,人体稍感疲乏,需要短时间的休息。
14∶00 人体应激能力下降,全身反应迟钝。
15∶00 体温最高,工作能力开始恢复。
16∶00 血糖升高,脸部最红。
17∶00 工作效率最高,肺部呼吸运动最活跃,适宜进行体育锻炼。
18∶00 人体痛觉再度降低。
19∶00 血压略有升高。此时,人们情绪最不稳定。
20∶00 记忆力最强,大脑反应异常迅速。
21∶00 脑神经反应活跃,适宜学习和记忆。
22∶00 呼吸开始减慢,体温逐渐下降。
23∶00 机体功能处于休息状态,一天的疲劳开始缓解。
24∶00 进入睡眠状态,充分恢复体能。
当然,个人的体质、情绪、生活习惯以及调节适应力不尽相同,每个人体内的生物时钟基础节律有快有慢、有早有晚,在进行较长一段时间的观察后,可摸索出个体的周期性变化规律和特点,便于掌握与了解个体的差异与节奏,从而更好地进行工作和休息。
摘录自: 家庭保健报
-
2008-12-19
fcaebook调整了memcached的策略,来适应用户与流量的增长 - [share]
http://www.facebook.com/note.php?note_id=39391378919&id=9445547199&index=0
他们将修改也发布到github上了
http://github.com/fbmarc/facebook-memcached/tree/master
这个是他们现在能够达到的速率,每秒200,000 UDP请求,平均延时173微秒,总吞吐量达到每秒300,000UDP请求。
Since we’ve made all these changes, we have been able to scale memcached to handle 200,000 UDP requests per second with an average latency of 173 microseconds. The total throughput achieved is 300,000 UDP requests/s, but the latency at that request rate is too high to be useful in our system. This is an amazing increase from 50,000 UDP requests/s using the stock version of Linux and memcached. -
2008-07-07
《Presto》-- Wall.E的开场小动画 - [share]
收录在《Wall·E》的DVD当中,《魔术师和兔子》(Presto)是一个“猫和老鼠”般的故事,魔术师Presto经常忘了喂他的表演搭档——一只叫Alec的小白兔,于是后者就在舞台上故意捣乱,不配合魔术师的表演。
pixar太牛了,已经超越了技术的局限,已经没有讨论他们的CG作的是多么精美、多么逼真,关键是讲述故事的能力。
-
偶然在电视上听到这么一首歌曲,一群普通的人用普通的声音唱着这首令我感动的歌。这首歌里包涵着希望、信任、痛苦、焦急等等情绪,让听者感同身受。
《相信》歌词
这里好黑——小玮
寂静得只剩下希望的声音——雷婷
我在哪里——武君
家人在哪里——祝妍
路途好难——郭鹏
崎岖得只剩下跋涉的声音——蔡鹏
你在哪里——金曾
你们在哪里——唐山
我知道你会来——白若溪
我知道你在寻找我——刘然
你什么时候来——王婷婷
我会坚持到你看到我——吴牧
路途好难——李欢
崎岖得只剩下跋涉的声音——孙晓亮
你在哪里——宋昊林
你们在哪里——蔡鹏
这里好黑——小柯母亲
寂静得只剩下希望的声音——刘晓峰
我在哪里——王亚彬
家人在哪里——晓亮、蔡鹏
你知道我会来——小建
你知道我在寻找你——刘晓峰
我正拼命赶来——吴彼
你要坚持到我看到你——李欢
我知道你会来——小玮
你知道我会来——肖钢
我知道你在寻找我——吴牧
你知道我在寻找你——张东波
你什么时候来——小柯母亲
我正拼命赶来——小柯
我会坚持到你看到我——雷婷、雷畅
你要坚持到我看到你——佟鸿力
我知道你会来——小白
你相信我会来——张晓强
我知道你在寻找我——刘然
你知道我在寻找你——龙龙
你什么时候来——武君
我正拼命赶来——宋昊林
我会坚持到你看到我—王亚彬、王婷婷
你要坚持到我看到你——张英浩
你什么时候来——女合
我正拼命赶来——男合
我会坚持到我——女合
看到你——男合 -
原文作者:unknown
一直以来,我们都想当然地认为互联网是自由交流的全球平台:信息自由传播,随意发布新的应用程序,每个人都可以发出自己的声音,而且未来的互联网将与现在截然不同。不过,假如互联网消失了呢?
原文链接:10 Ways the Internet (As We Know It) Will Die
译者:tsaizb
——怎么可能?!——以下列出 10 种可能性,我们心里很明白,如果它们中任意一个成为现实,足以灭掉互联网。
1. DNS (域名解析服务)被颠覆了。互联网的正常运行全靠 DNS。如果有人破坏——或更糟,颠覆了——网站访问的基石,人们将会不再相信什么 URL 网址,网络欺诈也将变得如同儿戏,因为:占有 DNS 者,占有互联网。
2. 僵尸网络攻击!无数“肉鸡”电脑已被控制,躲在阴暗潮湿不通风角落的黑客只需一声令下,即可发起攻击。MessageLabs 的 Matt Sergeant 估计僵尸网络病毒控制了 5-10 百万的计算机(但有人认为这个数字没这么大)。现在,这些僵尸机器人让我们的收件箱充满了垃圾邮件,而过去,它们只是用来发泄一下不满情绪或者勒索恐吓一下网站。但最终,这将演变为一场军备竞争,只不过其中一方不受任何规则的约束。
3. 物理设备发生大规模故障。如果弄断几根地中海的电缆,可以让成千上万的用户无网可上。如果有人蓄意搞破坏,后果将不堪设想啊!
4. 肢解为 N 个独立网络。从古老的 Usenet 至今,人们一直进行着“物以类聚”的分组行为。Nicholas Carr 在《The Big Switch》 一书中指出:一项研究声称一个社区,不管保守或自由,其 90% 的链接都没能离开该社区。甚至,对某些参考链接工具进行配置以后,可以使访问者一直停留在具有相同观点的网站上。这样结果会怎样?一个个独立的信息孤岛, 人们分享的都是相同的观点和思想,并渐渐确信他们拥有唯一的、正确的答案。互联网的祖先们早有预见:这将是全球化社区之梦的破灭。
5. 出现一个真正意义上的病毒,攻破路由器。互联网的自我修复机制靠的是边界网关协议,即 BGP。但是,如果有人入侵路由器内部,会发生什么事情呢? 2006 年,在 NANOG 的一份演示文档中,Cisco 对这些不堪一击的弱点进行了探讨,断定“最具毁灭性的破坏来自对托管路由器进行有意的误配置。”如果 BGP 崩溃,不仅无法阻止互联网流量过载,还将失去登录路由器并将其修复的能力。6. 更新导致崩溃。今日的大多数软件都需不断更新,并保持为最新版本。但有时,自动更新流程自身会引发故障。2007 年 8 月 16 日,Skype 无法使用。公司声称是 Windows 大量的自动更新造成了该故障。总有一天,更新包作为软件重要的一环,如网络堆栈,将造成故障,并且由于无法对其自身进行更新升级,从而导致大量用户无法操作或使用并需要人工介入修复。
7. 网络不再免费。如果运营商开始收取网站访问费用,正如有线电视公司收取相应的费用一样,你将很快发现每月 账单上多了一项“Google 月租”。很多提供 Facebook 和 YouTube 移动服务服务的公司,已经开始收取这种费用。这种死亡方式可能是最不易发现的,因为它预示着创新的末日——没有运营商的同意或默认,无人能推出下一个 Skype、Twitter 或 YouTube。
8. 律师介入。互联网作为自由言论的实验场将走到尽头。由于无法起诉网站本身,律师将追逐着网站拥有者和注册用户。正是通过这种手段,为瑞士的银行组织工作的律师 Julius Baer 对机密曝光网站 Wikileaks 进行起诉。一旦有了先例,将有更多人使用这种手段。唱片公司已经开始考虑起诉运营商违反版权。这是对网络中立性的讽刺:当电信商开始以不同的方式对待不同的字节,他们就不再是“公共运营商”,并且对传输数数据,包括非法内容,负法律责任。所以,他们将最终选择顺从。
9. 封闭城门。很多国家已经开始限制互联网的访问。中国的 GFW——雇佣 3 万人查找他们认为不正当的网站——是一个绝好的例子。我们拥有的不再是全球互通的互联网,而是当地立法者制定的道德标准。
10. 人类将自己干掉。Discover Magazine 在多年前已指出,我们拥有大量工具可以进行自我毁灭,从核武、炭疽病毒到人类自制的黑洞。没有人类的互联网是什么样?
互联网的最初灵感来自对学术自由和开放的向往,而现在它已成为由企业和运营商控制的商业平台。从 1969 年 ARPAnet 诞生到去年二月 Netscape 关闭,对于 Facebook 一代,这段历史也许只是昙花一现罢了。
-
本文来自煎蛋(http://jandan.net/),作者为Sarah。
如今,我们早已习惯了电脑中上百G的存储配置,小小的mp3播放器和其他手持设备通常也有几个G的容量,而这一切在几十年前仅仅是存在于科幻小说中 想象。比如在离我们并不遥远的1980年,第一块容量过G的硬盘就有冰箱那么大。现在我们每天都会保存大量数据并且习以为常,而我觉得回顾这段历史会是一 件有趣的事,也能让我们更清楚的了解这个过程。
选数管
这是1946年研发出的选数管,容量为32到512字节,512字节的那种有10英寸长,3英寸宽,造价昂贵并且存在生产问题,所以从未被投入正常使用。

上图:1024比特选数管
穿孔卡片
早期的计算机一般使用穿孔卡片来进行程序和数据输入,它的广泛应用一直持续到70年代中期。需要提到的是,早在1725年,那会儿还没计算机呢,这东西就被纺织工业用来控制织布机了。
上图:一段Fortran程序的卡片, Z(1)=Y+W(1)

上左:卡片读取器 上右:卡片书写器
穿孔纸带
像穿孔卡片一样,这种纸带最初也是用于机械织布机。对于计算机来说,它既可以用于数据输入同时也是输出的介质。纸带上的每一行对应一个字符。
上图:8级穿孔纸带(每行8孔)
磁鼓存储器
于1932年发明出来(奥地利),广泛应用于上世纪5,6十年代,在50年代中期,这种磁鼓存储器的容量大概为10K字节。
上左:UNIVAC计算机的磁鼓存储 上右:IBM 650计算机上的16英寸长磁鼓,有40个磁道,容量10KB,每分钟12,500转
硬盘
第一块硬盘是1956年随IBM 305 RAMAC计算机一起出现的IBM Model 350磁盘。它由50个24英寸圆盘构成,总容量略小于5兆字节。
上图:第一块硬盘
而第一块容量超过1G的硬盘也出自IBM,IBM 3380,可以存储2.52GB,有冰箱那么大,重550磅(250千克),售价为$81,000到$142,400。
上左:1979年的250M硬盘 上右:IBM 3380
激光磁盘
我们在这儿提到激光磁盘主要因为它是CD-ROM和其他光学存储解决方案的先驱。1978年底,市面上出现了第一套激光磁盘系统,直径11.81英寸(30厘米),单面最多可以容纳60分钟长的视频或音频,光盘实现依靠的基本技术其实早在1958年就发明出来了。
上左:激光磁盘和普通DVD盘 上右:激光磁盘
软盘
IBM公司再次对软盘的发明做出了贡献,从70年代中到90年代末一直广泛应用在存储领域。最初是8寸盘,后来变为5.25和3.5英寸。1971年出现的第一个软盘容量79.7KB,而且是只读的,一年以后才有了读写版本。
上左:8英寸磁盘和磁盘驱动器,旁边是3.5英寸盘 上右:便于抽取的存储介质
磁带
磁带首次用来作为数据存储介质是在1951年,被称为UNISERVO,是UNIVAC I型计算机主要的I/O设备。有效传输速率为每秒7,200字节。这些磁带都是金属的,总共有1200英尺长(365米),所以非常沉。
上左:UNIVAC I型计算机的磁带驱动 上右:IBM 3410磁带子系统,1971年
说到这,我们不能不提一下小巧的盒式磁带,是70年代末和整个80年代流行于个人电脑中的存储设备,通常传输率在每秒2,000比特。一盒90分钟长的磁带上大概能存放660KB。
上左:标准盒带 上右:看到这个,生于80年代的人也许能勾出些温柔的回忆
link -
2008-02-28
eclipsePermSize space错误的解决办法[ZT] - [share]
这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极。浪费了不少时间,在网上搜了下,看到很多朋友也出现类似的情况,在网上求救,但是网上的办法都只是说通过修改eclipse.ini文件来加大Eclipse的内存。
自己试了下,发现不管用。今天,又死掉了,不过爆出一个经常出现的错误,大意是:permgen space导致内存溢出。实在忍无可忍,上网一搜,发现网络真是个好东西,尤其是对我们这种自学者而言,无疑是授业解惑的良师益友。
这里总结一下自己的经验和网友的经验,希望能够对受此问题折磨的朋友有所参考价值。
解决办法如下:
在eclipse.ini配置文件中加上以下两行
-XX:PermSize=128M
-XX:MaxPermSize=128M加上上2行后,我的eclipse.ini文件如下所示:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms256m
-Xmx512m
-XX:PermSize=128M
-XX:MaxPermSize=128M这里的内存大小根据自己的物理内存情况来决定吧。
从网上的资料看PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。1、PermGen space简介
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。
说说为什么会内存益出:
(1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
(2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存。2、转载:OutOfMemory:PermGen Space异常的处理和分析
Java程序员没有遇到过OutOfMemory简直就是不可能的事情!
可见在Java的世界中,太多的不确定因素导致Java运行程序直接崩溃,直接抛出OutOfMemory异常,而一旦遇到了这个问题,调查起来就 非常的困难。在JDK 5.0以前,OutOfMemory只有这么一句话: java.lang.OutOfMemory Exception…基本上无从下手,无从分析。从JDK 5.0以后对OutOfMemory增加了许多的详细说明,为这个异常的分析提供了很大的便利。
这次遇到的问题就是会抛出OutOfMemory:PermGen Space的异常,这个异常非常有意思,根据【此文章】的 描述,这是一个Sun JVM的bug,从2003年开始,一只到现在都没有解决。而且提出来的解决方案是使用JRockit。Bug产生的原因已经找到,就是因为JVM在分配 PermGen Space的时候出现了PermGen Space不足的情况,默认情况下 PermGen的大小为64M,在不换用JRockit的情况下,可以在启动JVM的时候添加一个参数: -XX: MaxPermSize= 128m| 256m| 512m。
那么究竟什么是PermGen呢?
PermGen 原来是指Permanent Generation,本身是在Java的垃圾收集机制(GC)中产生的一个概念。Java的垃圾收集机制最早只是遍历所有的对象,如果发现某个对象没有 被引用,则回收,这是在早期的Java 1.0和Java 1.1的时候的GC规则。慢慢的,这样一种“愚蠢的”GC算法成为了JVM性能的瓶颈,在拥有大量数据的Java应用程序中,GC的算法被高度强化,于是 各种各样高效的JVM GC算法被发展了起来。从J2SE也就是Java 1.2开始,JVM引入了多种GC算法,其中一种用的非常多的就是Generational Collection,中文也叫做“分代收集法”。
分代收集法摈弃了对所有对象的遍历,而是采用一些经验属性去避免额外的工作(While naive garbage collection examines every live object in the heap, generational collection exploits several empirically observed properties of most applications to avoid extra work)。其中导入了一个非常关键的概念:infant mortality (幼儿死亡率),这表示越是新生成的变量或者对象,越容易被收集。下面一张图表示了对象的生命周期,横轴表示的是测试到对象的生命周期,纵轴表示在一个指定的生命周期上被回收的对象数量。
可以看到,在使用了分代收集法以后,年轻一代的对象被收集的比例最高。并且在内存中的对象会按照不同的“年龄”来划分,当一个年龄段的对象满了以后,在这个年龄段上就会发生垃圾收集,从最年轻的一代开始,一直到“永生代”,在内存中,所有的对象可以划分为很多代,最后的一代“永生代”就是“Permanent Generation”,这里就是直接引出“Permanent Generation”概念的地方。具体可以参考下图:
根据前面所说的情况,在分代垃圾收集的情况下会产生Permanent Generation的概念,而这个分代垃圾收集法是并行收集和并发收集的基础,所以Permanent Generation会一直存在,那么这个Permanent Generation究竟是做什么用的呢?这里保存了JVM中所有对象的类信息,包括类的元数据,还有方法描述等等,所以这一代内存垃圾收集算法是不一样的,在Java大程序的情况下,尤其是J2EE 或者说Java EE的大型应用程序上,Permanent Generation的大小会直接限定能载入类的数量和大小。
【解决办法】就是设定JVM启动的时候参数,可以如下设置:
java -XX: PermSize=64m -XX: MaxPermSize=128m
另外PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。
更多的请参考 【Java官方站点】
另外,还可以在Java启动的时候添加下面的参数来看GC的运行情况:
Java -verbosegc
-
2008-02-27
Apache Commons工具集简介[ZT] - [share]
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西,我只是做了一个汇总整理。一、Commons BeanUtils
http://jakarta.apache.org/commons/beanutils/index.html
说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。
使用示例:功能有很多,网站上有详细介绍。一个比较常用的功能是Bean Copy,也就是copy bean的属性。如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value Object)。
传统方法如下:
//得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();
//赋值
teacher.setName(teacherForm.getName());
teacher.setAge(teacherForm.getAge());
teacher.setGender(teacherForm.getGender());
teacher.setMajor(teacherForm.getMajor());
teacher.setDepartment(teacherForm.getDepartment());//持久化Teacher对象到数据库
HibernateDAO= ;
HibernateDAO.save(teacher);使用BeanUtils后,代码就大大改观了,如下所示:
//得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();//赋值
BeanUtils.copyProperties(teacher,teacherForm);//持久化Teacher对象到数据库
HibernateDAO= ;
HibernateDAO.save(teacher);二、Commons CLI
http://jakarta.apache.org/commons/cli/index.html
说明:这是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则,然后就可以调用CLI来解析。
使用示例:
// create Options object
Options options = new Options();
// add t option, option is the command parameter, false indicates that
// this parameter is not required.options.addOption(“t”, false, “display current time”);
options.addOption("c", true, "country code");CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);if(cmd.hasOption("t")) {
// print the date and time
}else {
// print the date
}// get c option value
String countryCode = cmd.getOptionValue("c");if(countryCode == null) {
// print default date
}else {
// print date for country specified by countryCode
}三、Commons Codec
http://jakarta.apache.org/commons/codec/index.html
说明:这个工具是用来编码和解码的,包括Base64,URL,Soundx等等。用这个工具的人应该很清楚这些,我就不多介绍了。
四、Commons Collections
http://jakarta.apache.org/commons/collections/
说明:你可以把这个工具看成是java.util的扩展。
使用示例:举一个简单的例子
OrderedMap map = new LinkedMap();
map.put("FIVE", "5");
map.put("SIX", "6");
map.put("SEVEN", "7");
map.firstKey(); // returns "FIVE"
map.nextKey("FIVE"); // returns "SIX"
map.nextKey("SIX"); // returns "SEVEN"五、Commons Configuration
http://jakarta.apache.org/commons/configuration/
说明:这个工具是用来帮助处理配置文件的,支持很多种存储方式
1. Properties files
2. XML documents
3. Property list files (.plist)
4. JNDI
5. JDBC Datasource
6. System properties
7. Applet parameters
8. Servlet parameters使用示例:举一个Properties的简单例子
# usergui.properties, definining the GUI,
colors.background = #FFFFFF
colors.foreground = #000080
window.width = 500
window.height = 300PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");
config.setProperty("colors.background", "#000000);
config.save();config.save("usergui.backup.properties);//save a copy
Integer integer = config.getInteger("window.width");Commons DBCP
http://jakarta.apache.org/commons/dbcp/
说明:Database Connection pool, Tomcat就是用的这个,不用我多说了吧,要用的自己去网站上看说明。
六、Commons DbUtils
http://jakarta.apache.org/commons/dbutils/
说明:我以前在写数据库程序的时候,往往把数据库操作单独做一个包。DbUtils就是这样一个工具,以后开发不用再重复这样的工作了。值得一体的是,这个工具并不是现在流行的OR-Mapping工具(比如Hibernate),只是简化数据库操作,比如
QueryRunner run = new QueryRunner(dataSource);
// Execute the query and get the results back from the handler
Object[] result = (Object[]) run.query("SELECT * FROM Person WHERE name=?", "John Doe");七、Commons FileUpload
http://jakarta.apache.org/commons/fileupload/
说明:jsp的上传文件功能怎么做呢?
使用示例:
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}八、Commons HttpClient
http://jakarta.apache.org/commons/httpclient/
说明:这个工具可以方便通过编程的方式去访问网站。
使用示例:最简单的Get操作
GetMethod get = new GetMethod("http://jakarta.apache.org");
// execute method and handle any error responses.
...
InputStream in = get.getResponseBodyAsStream();
// Process the data from the input stream.
get.releaseConnection();九、Commons IO
http://jakarta.apache.org/commons/io/
说明:可以看成是java.io的扩展,我觉得用起来非常方便。
使用示例:
1.读取Stream
标准代码:
InputStream in = new URL( "http://jakarta.apache.org" ).openStream();
try {
InputStreamReader inR = new InputStreamReader( in );
BufferedReader buf = new BufferedReader( inR );
String line;
while ( ( line = buf.readLine() ) != null ) {
System.out.println( line );
}
} finally {
in.close();
}使用IOUtils
InputStream in = new URL( "http://jakarta.apache.org" ).openStream();
try {
System.out.println( IOUtils.toString( in ) );
} finally {
IOUtils.closeQuietly(in);
}2.读取文件
File file = new File("/commons/io/project.properties");
List lines = FileUtils.readLines(file, "UTF-8");3.察看剩余空间
long freeSpace = FileSystemUtils.freeSpace("C:/");十、Commons JXPath
http://jakarta.apache.org/commons/jxpath/
说明:Xpath你知道吧,那么JXpath就是基于Java对象的Xpath,也就是用Xpath对Java对象进行查询。这个东西还是很有想像力的。
使用示例:
Address address = (Address)JXPathContext.newContext(vendor).
getValue("locations[address/zipCode='90210']/address");上述代码等同于
Address address = null;
Collection locations = vendor.getLocations();
Iterator it = locations.iterator();
while (it.hasNext()){
Location location = (Location)it.next();
String zipCode = location.getAddress().getZipCode();
if (zipCode.equals("90210")){
address = location.getAddress();
break;
}
}十一、Commons Lang
http://jakarta.apache.org/commons/lang/
说明:这个工具包可以看成是对java.lang的扩展。提供了诸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具类。
十二、Commons Logging
http://jakarta.apache.org/commons/logging/
说明:你知道Log4j吗?
十三、Commons Math
http://jakarta.apache.org/commons/math/
说明:看名字你就应该知道这个包是用来干嘛的了吧。这个包提供的功能有些和Commons Lang重复了,但是这个包更专注于做数学工具,功能更强大。
十四、Commons Net
http://jakarta.apache.org/commons/net/
说明:这个包还是很实用的,封装了很多网络协议。
1. FTP
2. NNTP
3. SMTP
4. POP3
5. Telnet
6. TFTP
7. Finger
8. Whois
9. rexec/rcmd/rlogin
10. Time (rdate) and Daytime
11. Echo
12. Discard
13. NTP/SNTP使用示例:
TelnetClient telnet = new TelnetClient();
telnet.connect( "192.168.1.99", 23 );
InputStream in = telnet.getInputStream();
PrintStream out = new PrintStream( telnet.getOutputStream() );
...
telnet.close();十五、Commons Validator
http://jakarta.apache.org/commons/validator/
说明:用来帮助进行验证的工具。比如验证Email字符串,日期字符串等是否合法。
使用示例:
// Get the Date validator
DateValidator validator = DateValidator.getInstance();
// Validate/Convert the date
Date fooDate = validator.validate(fooString, "dd/MM/yyyy");
if (fooDate == null) {
// error...not a valid date
return;
}十六、Commons Virtual File System
http://jakarta.apache.org/commons/vfs/
说明:提供对各种资源的访问接口。支持的资源类型包括
1. CIFS
2. FTP
3. Local Files
4. HTTP and HTTPS
5. SFTP
6. Temporary Files
7. WebDAV
8. Zip, Jar and Tar (uncompressed, tgz or tbz2)
9. gzip and bzip2
10. res
11. ram这个包的功能很强大,极大的简化了程序对资源的访问。
使用示例:
从jar中读取文件
// Locate the Jar file
FileSystemManager fsManager = VFS.getManager();
FileObject jarFile = fsManager.resolveFile( "jar:lib/aJarFile.jar" );// List the children of the Jar file
FileObject[] children = jarFile.getChildren();
System.out.println( "Children of " + jarFile.getName().getURI() );
for ( int i = 0; i < children.length; i++ ){
System.out.println( children[ i ].getName().getBaseName() );
}从smb读取文件
StaticUserAuthenticator auth = new StaticUserAuthenticator("username", "password", null);
FileSystemOptions opts = new FileSystemOptions();
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
FileObject fo = VFS.getManager().resolveFile("smb://host/anyshare/dir", opts); -
2008-02-20
[zt]对 mp3 乱码问题的分析和解决 - [share]
来源: http://www.osxcn.com/ubuntu/mp3-tag-encoding.html
最近尝试 Listen 和 Banshee 才发现,Rhythmbox 上出现的 mp3 乱码问题依旧,而且更加严重,想要彻底弄清和解决必须搞清两点,第一, mp3 标签类型和编码,第二,各种播放器对 mp3 标签读取情况,相信它们应该都有相关的开发文档来说明,但我还是用了一个最笨的方法,就是一个一个的测试来得出结论,真理不是来自于实践吗?
1、了解 mp3 标签类型和使用的编码
首先说 mp3 标签类型和编码,大家应该知道目前主要存在这几种标准,ID3v1, ID3v2 2.3, ID3v2 2.4, APEv2,ID3v1 只支持 ISO-8859-1 编码 (编码集参考), 严格的说它是不支持中文的 (并不代表它不能储存中文信息,目前中文 mp3 的 ID3v1 标签都使用这个字段来储存 GBK/GB18030 编码的中文信息),而第二版 (ID3v2) 支持的格式增加了 utf-16,直到 2.4 版才开始支持 uft-8,但 ID3v2 标准没有统一标签内容的编码,例如 2.4 版的 ID3v2 你可以使用 ISO-8859-1 编码,也可以使用 utf-16/uft-8 这种 Unicode 编码格式。做得最好的是 APEv2,它不但有很好的扩展性,而且还把编码格式统一为 utf-8,这样一来只要支持 APEv2 读取的播放器播放带有 APEv2 标签的 mp3 就不会存在乱码问题。
2、了解各种播放器对 mp3 标签读取情况
接下来研究的就是各种播放器对这几种标准的标签支持程度,测试的播放器有:gnome 自带的 Rhythmbox 0.10.0, Listen 0.5, Banshee 0.12.1+dfsg-3, Quod Libet 0.24, Exaile! 0.2.8, GMPC 0.13.0, Audacious 1.2.2。
测试的方法很简单,用一个 mp3 文件,分别写入不同类型的标签 (排列组合下来共 20 多种),在 ID3v1 和 ID3v2 2.3/2.4 中分别使用不同的编码写入中文信息 (如 GBK 编码),然后用这些播放器去读取,得到其结果。从这次的测试结果来看,Rhythmbox 对各种 mp3 的标签支持最好,这主要归功于它支持 APEv2 标签的读取。而 Banshee 和剩下的播放器完全一样,都不支持 APEv2 的读取,这个就能很好的解释为什么一些 mp3 在 Rhythmbox 上正常,在其他播放器上就会乱码。原因是现在很多 mp3 为了兼容,都同时使用了 ID3v1 和 APEv2 标签,Rhythmbox 读取 ID3v1 一样会乱码,但它优先读取了 APEv2 标签,而 Banshee 这些播放器不支持 APEv2 就只能读取 ID3v1,当然会乱码了。
他们的共同特点就是,所依赖的 libid3tag 库完全按照 ID3 标准来读取标签内容。不管使用何种标准的标签,只要是读取以 Unicode 编码的中文内容,肯定没有问题,遇到 GBK/GB18030 编码的中文内容时,还是把它当成 ISO-8859-1 编码来读取,不乱才怪。
ps: Vista 上的 WMP 不支持 ID3v2 2.4 和 APEv2 标签的读取,但它很聪明不能读取就用文件名代替,千千静听支持全系列标签的读取,但不支持以 ID3v2 2.4 标准的写入,不知道即将发布的 5.0 有变化没有。foobar2000 v0.9.4.3 支持全系列标签的读取,默认使用 ID3v2 2.4 (utf-8) 写入,不愧被誉为经典。
3、解决办法
既然明白了乱码的原因,就得找解决办法,一种办法就像 Win 上的播放器一样,可以根据本地的编码方式来解码,或使用一些其他转码机制,要不还可以选择优先读取顺序。以上测试的播放器中除了 Audacious 外其他都不支自定义编码读取功能。另外一个解决办法就是把 mp3 标签转换为 Unicode 编码,这种方式既简单又支持标准,推荐大家使用。如果像 Banshee 一样支持显示文件路径也可以解决乱码问题,但这不是根本之道。
目前发现有 2 个工具可以把标签转换为 Unicode 编码,而且都支持批量转换。
1) 一个是周枫用 java 编写的 ID3iconv 0.2.1,最后更新时间为 2004/2/20。
使用方法:
java -jar ~/id3iconv-0.2.1.jar -e gbk *.mp3如果想转换当前目录下的所有 mp3 (包括子目录):
find . -iname "*.mp3" -execdir java -jar ~/id3iconv-0.2.1.jar -e gbk {} \;* 注意以上 ~/id3iconv-0.2.1.jar 位置根据自己情况而定
* 相信现在大陆绝大多数能找到的 mp3 标签都是以 GBK/GB18030 编码,使用 -e gbk 来处理就够了,当然你也可以使用 -e gb18030 来处理。
* -e gbk 参数是代表把 GBK 编码的标签转换为 Unicode 编码,本身是 Unicode 编码的就不转换。如果需要转换其他编码的文件可以自行修改,如改为 Big5。
* 经测试,转换后为 2.3 版的 ID3v2,编码格式为 uft-162) 另外一个是用 Python 写的 “Mutagen”,目前最新版本 1.11,Ubuntu 7.04 源里也带有 1.10 版本的 Mutagen,可以用这个命令来安装:
sudo apt-get install python-mutagenps:安装 Quod Libet 和 Listen 都必须这个
使用方法:
mid3iconv -e gbk *.mp3如果想转换当前目录下的所有 mp3 (包括子目录):
* 相信现在大陆绝大多数能找到的 mp3 标签都是以 GBK/GB18030 编码,使用 -e gbk 来处理就够了,当然你也可以使用 -e gb18030 来处理。
find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \;
* -e gbk 参数是代表把 GBK 编码的标签转换为 Unicode 编码,本身是 Unicode 编码的就不转换。如果需要转换其他编码的文件可以自行修改,如改为 Big5。
* 经测试,转换后为 2.4 版的 ID3v2,编码格式为 uft-16
* 不过它会同时用 Unicode 编码填满 D3v1, ID3v2, APEv2 标签,但是 ID3v1 又不支持中文的 Unicode 编码,所以转换后的 ID3v1 标签全是问号。所以最好加上 –remove-v1 参数,转换后删除 ID3v1 标签。 -
2007-12-13
不得不听 Linkin Park - What I've Done - [share]
这首歌是《变形金刚》的片尾曲,看了片子,没觉得怎么样,倒是被片尾曲给吸引了。旋律很好,而且看了歌词,写的真的不错。一直很喜欢林肯公园的歌,主唱很富有激情的,听他们的歌,总是会不知不觉的被带动,没有了伤心的理由。
清脆的的钢琴主旋律配上低沉的和弦,随着鼓点的渐强和加入,电吉和bass的爆发
Chester Benington低诉式的忏悔吟唱开始,继而是高亢不失震撼的原生态的怒吼~~~~
开始时钟走动韵律,干涸的土地,跟随节奏爬动的蝎子,描述了大自然的一种本态。
但是用红外线看到一枚空地导弹的爆炸改变了音乐的节奏,音乐爆发了!城市的暴动,
族群的冲突,海啸,洪水仿佛在说明这里不是天堂。火焰喷射器的火焰吞噬了一些。这
是时钟的机构触发了。人类开始警醒,回想自己都作了什么?
城市化与快节奏的生活,使地球变暖变臭
向大自然的索取使绿色地球伤痕累累,象牙,捕鲸使地球物种濒危。
一面是没有精神寄托无度的生活方式,另一面贫穷饿出来的瘦骨嶙峋。
一面是人类文明遗产,一面是现代化的工业进程对地球的破坏;
那些曾经影响人类文明进程的伟人们作何感想?
精神领域的畸变所引发的个人崇拜,狭隘民族主义,在最高音和强悍的节奏下把人类引
向末日。
核冲击波,大规模轰炸,冰川消融,摩天大楼的轰然倒塌也许在证明这些。
经过大自然的力量出生的心生命他们所面对的是什么?摧残和自我毁灭!
在声嘶力竭的呐喊中,一组毛骨悚然的景象呈现上来:油轮倾覆,化工厂泄漏,被石油包
裹的动物,童子军,战争与难民,被气浪撕得粉碎的房屋,仿佛在对每一个人类发出末
日通知单:"What You've Done?"
最后时间的反演,与声音的淡去仿佛说明世界的轮回—毁灭与新生。
歌词如下:
What I've done
In this farewell,
在这次离别的时候,
There is no blood,
没有了血腥,
There is no alibi,
也没有了借口,
Cause I’ve drawn regret,From the truth, Of a thousands lies,
因为我已经在那数千个谎言中的真实里感到后悔
So let mercy come and wash away…
所以,就让宽容到来,将这一切冲走吧
What I’ve Done,I’ll face myself,
不管我以前所作的什么,我将来都会面对我自己
To cross out what I’ve become,Erase myself,
将现在的自己彻底改变,把以前的自己擦去
And let go of what I’ve done…
放手我以前所作的
Put to rest,
将这些结束,
What you thought of me,While I clean this slate,With the hands,Of uncertainty,
当我用我这只不确定的手擦去这片纪录时,你会怎么看我?
So let mercy come,And wash away…
所以,就让宽容到来,将这一切冲走吧
What I’ve Done,I’ll face myself,
不管我以前所作的什么,我将来都会面对我自己
To cross out what I’ve become,Erase myself,
将现在的自己彻底改变,把以前的自己擦去
And let go of what I’ve done…
同时放手我以前所作的
For what I’ve done,I start again,
因为我以前的作为,我要重新开始
And whatever pain may come,
不管会遇到什么困难
Today this ends,
这些就在今天到此为止
I’m forgiving what I’ve done…
我正在原谅我所作的
I’ll face myself,To cross out what I’ve become, Erase myself,
面对自我,将现在的自己彻底改变,把以前的自己擦去
And let go of what I’ve done…
同时放手我以前所作的
(Na,Na,Na) [Mike Shinoda!]
What I’ve Done,
What I’ve Done,
Forgiving what I’ve done…
原谅我所作的一切吧……
-
飘洋过海来看你,这是娃娃唱过的一首歌,可能很多年轻人是没有听过的.
一度非常喜欢娃娃演绎出来的感觉.而这几句歌词写的又是那么简约传神.
为你,我用了半年的积蓄飘洋过海的来看你
为了这次相聚,我连见面时的呼吸都曾反复练习
言语从来没能将我的情意表达千万分之一
为了这个遗憾,我在夜里想了又想不肯睡去
就那么轻易的想起了这几句歌词,言语都是多余,如果你没有听过这首歌,可以从这里下载[下载链接].
据说这首歌是有一个故事的:
1990年,娃娃到大陆旅游。在北京,她与一个年轻的舞蹈教师一见钟情。她就这样在一个陌生的城市无端地爱上了一个陌生的人。
但是,这段情是不能成立的,不是因为海峡的阻隔,而是因为,那个舞蹈教师,已经有了妻子和孩子。
娃娃万念俱灰地回了台湾,从此和她的这段感情隔海相望。在她身边,唯一可资纪念的,是一张从节目单上剪下的那个舞蹈教师的不甚清晰的黑白剧照。
李宗盛知悉此事,为娃娃写下了这首《飘洋过海来看你》,娃娃在录音室里几度泣不成声,哭掉了两大盒面巾纸。
也许只有真正来自内心的故事和音乐才能如此打动人心,但是我宁愿,每个故事都有美好的结局. -
歌曲下载地址:
http://202.104.237.172/file01/9386/2.wma
青涩曾如你我,懵懂曾如你我,可是充满迷梦的年代已经走远;
平凡刻下记号,浪漫不敌世故,我们的心里却总隐隐挣扎着对理想的追寻……
进或退,是一个抉择。
选择是痛苦的,因为它意味着放弃。
进退两难。
我不敢揣测林志炫当年和李骥分道时的心态,我不能说我能够了解林志炫放弃对于母亲治疗时的心情,但我知道,这些肯定是有着煎熬和挣扎的。
恋爱七次的经历,每次分手时内心的挣扎应该都是不一样的。这种内心的情绪奔涌难以抑止,强烈却又混乱,冲撞着终于找到了释放的出口,那就是一遍又遍“啦啦啦啦啦”的沉郁呐喊。
这里没有语言的苍白,没有逻辑的束缚,只是一遍一遍这样的呐喊,象是受了伤的小兽在啜泣,又象是它发出的嘶吼,是退却,也是反抗;是煎熬,也是挣扎……
进退两难。
多少次我们也有过同样相似的经历,与好友间的一场争吵,伤害了我们的自尊,在疏远与谅解的面前我们进退两难;多少次,父母一句尖刻的批评伤害了我们的骄傲,在反抗与顺从面前我们进退两难;多少次,恋人一个世俗的眼光破灭了我们对于爱情的浪漫幻想,在理想与现实之间我们进退两难……
十年在生命的历程里,也许算不上是一个漫长的过程;可是相对于那懵懂无知的幼年,相对于那日日相似的老年,年轻时的那十年八载,却可能承载了生命中几乎所有的欢笑和泪水、光荣与耻辱、激情与迷茫,可能进行着一切重要的“进退”抉择,挣扎着所有生命不能承受之重的“两难”——《进退两难》就是在这样的十年中用生命谱写出来的旋律吧,有清吟也有呐喊,是释怀却又藏着挣扎。释怀的清吟着不可追的过往,挣扎的呐喊着对现实和未来的困惑与不满。
这样苦苦挣扎着的进退两难,难道是生命中无法破除的魔咒?难道我们没有办法摆脱这样沉重的抉择?
正是因为爱的执着,他们才在意对方的每一句评价,在意与对方相处的每一刻,在意对方的每一点快乐和痛苦。于是他们也被对方的这一切所牵绊,变得如此不洒脱;他们才会在友情、亲情与爱情中倍受煎熬,如此苦苦挣扎;只因为那爱是沉重的、真挚的。假如根本没有爱,那么朋友又怎样,亲人又怎样,恋人又怎样?心里没有这些人,失去或获得都变得毫无所谓,当然不会有进退两难的抉择了,可是这样的生命,这样的存在,又有什么意义呢?
有爱的人,才有理想;有理想的人,就会在现实与理想中挣扎,就会有痛苦;而痛苦,使生命变得真实可感,使生命变得有了分量。
《进退两难》——
正是这样的不洒脱,正是这样的痛苦,才出现了这样震撼人心的旋律,出现了这样直逼灵魂的歌声……
十年后的今天,我们许多人也许已经变得麻木了,对生活的感知开始变得不疼不痒;可是不要忘却了那曾经充满迷梦的年代,不要忽视了内心隐隐挣扎着的追寻——但愿我们每个人都能够体会那样进退两难的心情,因为也许只有在那样的心情中,我们才能更真切的体会到生命的重量,抓住生命存在的真意。
PS:
歌词如下:
进退两难
林志炫
我真的不愿承认你心中
有个完整的世界随你躲
那儿有山有水有天
留不下空缺让我来填
要痴痴等待很简单
要若无其事很困难
要让你信任很简单
要和你恋爱非常难
曾经我费尽心思
走到你心门口
我努力努力
这门槛我却始终跨不过
我悄悄回头
发现来时太执着
把路都踏破
我进退两难
我进退两难
要让你感动很简单
要给你快乐很困难
要忍住孤独很简
要把你忘记非常难
你只当观众
你无动于衷
你动也不动
你回也不回头
你让我
进退两难
我天长地久
你不想拥有
我给你所有
你却只要自由
你让我
进退两难 -
2007-12-12
让你受益匪浅的3个小小的哲理故事 - [share]
【和尚与屠夫】
从前有一个和尚跟一个屠夫是好朋友。和尚天天早上要起来念经,而屠夫天天要起来杀猪。为了不耽误他们早上的工作,是他们约定早上互相叫对方起床。多年以后,和尚与屠夫相继去世了。屠夫去上天堂了,而和尚却下地狱了。
Why? 因为屠夫天天作善事,叫和尚起来念经,相反地,和尚天天叫屠夫起来杀生……
小哲理:你做的东西是不是都是你认为对的,却不一定是对的。
【一道终身受用的测试题】
你开着一辆车。在一个暴风雨的晚上。 你经过一个车站。 有三个人正在焦急的等公共汽车。� 一个是快要临死的老人,他需要马上去医院。 一个是医生,他曾救过你的命,你做梦都想报答他。还有一个女人/男人,她/ 他是你做梦都想嫁/娶的人,也许错过就没有了。但你的车只能在坐下一个人,你会如何选择?我不知道这是不是一个对你性格的测试, 因为每一个回答都有他自己的原因。 老人快要死了,你首先应该先救他。
你也想让那个医生上车,因为他救过你,这是个好机会报答他。还有就是你的梦中情人。错过了这个机会。你可能永远不能遇到一个让你这么心动的人了。
在200个应征者中,只有一个人被雇佣了,他并没有解释他的理由,他只是说了以下的话:“给医生车钥匙,让他带着老人去医院,而我则留下来陪我的梦中情人一 起等公车!’ 每个人我认识的人都认为以上的回答是最好的,但没有一个人(包括我在内)一开始都没想到。
小哲理:是否是因为我们从未想过要放弃我们手中已经拥有的优势(车钥匙)? 有时,如果我们能放弃一些我们的固执,狭隘,和一些优势的话,我们可能会得到更多。
【皮鞋的来历】
很久很久以前,人类都还赤着双脚走路。有一位国王到某个偏远的乡间旅行,因为路面崎岖不平,有很多碎石头,刺得他的脚又痛又麻。回到王宫后,他下了一道命令,要将国内的所有道路都铺上一层牛皮。他认为这样做,不只是为自己,还可造福他的人民,让大家走路时不再受刺痛之苦。
但即使杀尽国内所有的牛,也筹措不到足够的皮革,而所花费的金钱、动用的人力,更不知凡几。虽然根本做不到,甚至还相当愚蠢,但因为是国王的命令,大家也只能摇头叹息。
一位聪明的仆人大胆向国王提出建言:「国王啊!为什么您要劳师动众,牺牲那么多头牛,花费那么多金钱呢?您何不只用两小片牛皮包住您的脚呢?」国王听了很惊讶,但也当下领悟,于是立刻收回成命,改采这个建议。据说,这就是「皮鞋」的由来。
小哲理:想改变世界,很难;要改变自己,则较为容易。与其改变全世界,不如先改变自己–「将自己的双脚包起来」。改变自己的某些观念和作法,以抵御外来的侵袭。当自己改变后,眼中的世界自然也就跟着改变了。如果你希望看到世界改变,那么第一个必须改变的就是自己。「心若改变,态度就会改变;态度改变,习惯就改变;习惯改变,人生就会改变。」 -
2007-12-12
天行健,君子以自强不息 - [share]
天行健,君子以自强不息。地势坤,君子以厚德载物。
这两句是出自《周易》的对乾卦和坤卦的解释。梁启超老先生也曾经拿这两句话来激励过清华学子,至今清华仍然把“自强不息,厚德载物”作为清华的校训。上次叔叔来的时候也拿这两句话来激励我,希望我也能够“自强不息,厚德载物”。在这里先谢谢家人对我的关心和鼓励,我会努力!
在这里,我把梁启超老先生激励清华学子的《君子》一文中的那两段话摘录下来自励!
“乾象言,君子自励,犹天之运行不息,不得有一曝十寒之弊,且学者立志尤须坚忍刚毅,虽遇颠沛流离,不屈不挠;若或见利而进,知难而退,非大有为者之事,何足取焉。人之生世,犹舟之航于海,顺风逆风,因时而异。如必风顺而后扬帆,登岸无日矣!”
“坤象言,君子接物度量,宽厚犹大地之博,无所不载。君子责己甚厚,责人甚轻。孔子曰:‘躬自厚而薄责于人'。盖惟有容人之量,处世接物,坦然无所介蒂,然后得以膺重任;当其名高任重,气度雍容,望之俨然,即之温然,此其所以为厚也,此其所以为君子也”……
PS:
《易经》中认为: 乾为马,坤为牛。
用马来象征天。 故,天行健,就不难理解,骏马以形容自强不息;坤为牛,以牛来诠释人之品德。
听老妈说,我出生的时候,老妈梦到一头水牛在河里;而我弟出生的时候,老妈梦到一匹白色的骏马,不知道是否象征着些什么?
update:“自强不息,厚德载物”浅析 刘鄂培( 1952)
天行健,君子以自强不息(《易传·象传上》)。
“天行”指天的运行,或天运行之规律。“健”即刚健不屈。《象传》作者认为,天的运行是刚健不屈的,它不受人世的兴衰治乱的影响,也不为任何艰难险阻所挡,按自身的规律,永恒不止地前进。因此,将刚健视为天的高尚品格。
天具有刚健的高尚品格,因此,《象传》作者要求人要效法天,刚健不已,自强不息,不因困难而阻,不因失败而馁,一往无前,努力进取,永无止境。以上解释,应是符合“天行健,君子以自强不息”这句话的原意的。
《易》以刚健为主。但是“峣峣者易折”,仅仅有刚健的一方面并不理想,还必须以柔顺为辅。因此,《易》提出了“刚柔,相济”的思想。
地势坤,君子以厚德载物(《易经·象传上》)。
“坤”即柔顺之意。《象传》作者认为,柔顺是“地”的性格,以补充“天”的性格刚健之不足。《象传》的作者更认为,“地”的柔顺性格主要体现在:“地” 幅员广阔,其体深厚,它生长万物,滋养万物,而万物并蓄。这种公而无私,宽厚为怀的品德,就是“厚德载物”。因此,人在效法“天”的刚健的同时,还要效法 “地”的柔顺,培养出公而无私、宽厚为怀的高尚品格。这就是“地势坤,君子以厚德载物”的原意。 -
在天际上看到了一篇帖子,挺有感触。于是转过来,祭奠过去经历的一段时光。
原文出处
改革开放的大潮中,造就出一批又一批的“首富”,“新秀”。这里有一个怪现象值得人们深思,那就是人们容易受到成功者激励而面对大批的失败者往往视而不 见。事实上,一个人成功的背后,往往有九十九个人做了失败的先烈。成功了,都大肆宣扬报道,而失败了则三缄其口、谁也不声张。或许正是这个原因才使得人们 的眼球都被聚焦到了那些成功人士身上。也正是这样,那些充斥媒体的成功故事,让绝大多数职场上的人士热血沸腾,工作中稍有不如意则发誓不再“给人打工”而 匆忙开始了自己的“激情创业”。
说其是“激情”创业,有几个特征:
1、不愿意“给人打工”,要自己当家作主;
2、自认为怀才不遇,没有伯乐识我;
3、对自己的创业项目豪情万丈,似乎成功唾手可得;
4、认为自己某方面有出奇的智慧;
5、目空一切,行业内任何一位成功的人士在他眼中都不值一提,随意贬损。
激情创业者,往往说练就练,任何人的忠告劝阻都如耳边风。强烈的成功愿望,支撑着他可以吃一般人吃不了的苦(租一间房,办公喝吃住都在一起,蓬头垢面、天天方便面);他的强烈信念,也正障住了他的智慧,感性把理性抛到了脑后。这个时候,九匹马拉不回,十盆凉水浇不醒。
什么市场分析?有了这么好的产品,我开创一个前无古人的市场!
什么资金不足?车到山前必有路!
什么竞争对手分析?别人那两下子,我一出手对方就没了活路!
什么团队管理?大家都是哥们儿,同甘共苦,二话没有!
什么后续融资?你就等着吧,到时候VC求着我!
什么行业经验?没有经验,才没有束缚;它山之石,可以攻玉!
什么风险控制?哪里有风险?!
……
一年之后,产品终于出炉了,而资金也早已耗光了,还欠着几个月房租、若干苦难弟兄的工资没给,就更甭说市场推广啦。到处游说拉投资,到处求人合作。拼了所 有力量,最后一博苦撑几个月,家中已经无米下锅了,这个时候才开始考虑收拾铺盖卷,踏踏实实想找一份有稳定收入的工作。这份伤痛,需要几年才能彻底愈合。
创业需要激情;但光有激情不能创业。 -
他们在风雪中慢慢走着。他和她,他们是两只狼。他的个子很大,很结实,刀条耳,目光炯炯有神,牙爪坚硬有力。她则完全不一样,她个子小巧,鼻头黑黑的,眼睛始终潮润着,有一种小南风般朦胧的雾气,在一潭秋水之上悬浮着似的。他的风格是山的样子,她的风格则是水的样子。刚才因为她故意捣乱,有只兔子在他们的面前眼巴巴地跑掉了。 他是在他还是少年的时候就征服了她的。然后他们在一起相依为命,共同生活了整整九年。这期间,她曾一次次地把他从血气冲天的战场上拖下来,把伤疤累累昏迷不醒的他拖进荒僻的山洞里,用舌头添他的伤口,添净他伤口上的血迹,把猎枪的砂弹或者凶猛的敌人咬碎的骨头渣子清理干净,然后,从高坡上风也似的冲下去,去追捕獐獾,用獐脐和獾油为他涂抹伤口。做完这一切后,她就在他的身边卧下,整日整夜的,一动不动。 但是,更多的时候,是由他来看顾她的。他们得去无休无止地追逐自己的食物,得与同伴拼死拼活哦争夺地盘,得提防比自己强大的凶猛对手的袭击,还得随时警惕来自人类的敌视。这真的很难,有时候他简直累坏了。他总是伤痕累累,疲于应战。而她呢,却像个不安分的惹事包,老是在天敌之外不断地给他增添更多的麻烦。她太好奇而且有着过分快乐的天性。她甚至以制造那些惊心动魄险象环生的麻烦为乐事。他只得不断地与环境和强大的敌手抗争。他怒气冲天,一次又一次深入绝境,把她从厄运之中拯救出来。他在那个时候简直就像一个威风凛凛的战神,没有任何对手可以扼制住他。他的成功和荣誉也差不多全是由她创 造出来的。没有她的任性,他只会是一只普通的狼。
天渐渐地黑下去,他决定尽快地去为她也为自己弄到果腹的食物。 天很黑,风雪又大,他们在这种状况下朝着灯火依稀可辨的村子走去,自然就无法发现那口井了。井是一口枯井,村里人不原让雪灌了井,将一黄棕旧雪披事先护住了井口,不经心地做成了一个陷阱。 他在前面走着,她在后面跟着,中间相隔着十几步。他丝毫也没有预感,待他发觉脚下让人疑心的虚松时,已经来不及了。 她那时正在看雪地里的一处旋风,旋风中有一枝折断了的松枝,在风的嬉弄下旋转得如何停不下来的舞娘。轰的一声闷响从脚下的什么地方传来。她才发现他从她的视线中消失了。她奔到井边。
他有一刻是晕厥过去了。但是他很快醒过来,并且立刻弄清楚了自己的处境。他发现情况不像想象的那么糟糕。他只不过是掉进了一口枯井里,他想这算不得什么。他曾被一个猎人安置的活套套住,还有一次他被夹在两块顺流而下的冰砣当中,整整两天的时间他才得以从冰砣当中解脱出来。另外一次他和一头受了伤的野猪狭路相逢,那一次他的整个身子都被鲜血染红了。他经过的厄运不知道有多少,最终他都闯过来了。 井是那种大肚瓶似的,下畅上束,井壁凿得光溜,没有可供攀援的地方。他要她站开一些,以免他跃出井口时撞伤了她。她果然站开了,站到离井口几尺远的地方。除了顽皮的时候,她总是很听从他的。她听见井底传出他信心十足的一声深呼吸,然后听见由近及远的两道尖锐的刮挠声,随即是什么东西重重跌落的声音。他躺在井底,一头一身全是雪粉和泥土。他刚才那一跃,跃出了两丈来高,这个高度实在是有些了不起的,但是离井口还差着老大一截子呢。他的两只利爪将井壁的冻土乱挠出两道很深的印痕,那两道挠痕触目惊心,同时也是一种深深的遗憾。 她扒在井沿上,先啜泣,后来止不住,放声出来。她说,呜呜,都怪我,我不该放走那只兔子。
他在井底,反倒笑了。他是被她的眼泪给逗笑的。在天亮之前的那段时间里,她离开了井台,到森林里去了,去寻找食物。她走了很远,终于在一株又细又长的橡树下,捕捉到一只被冻得有些傻的黑色细嘴松鸡。 他把那只肉味鲜美的松鸡连骨头带肉一点不剩全都嚼了,填进了胃里。他感觉好多了。他可以继续试一试他的逃亡行动了。
这一次她没有离开井台,她不再顾及他跃上井台时撞伤她。她趴在井台上,不断地给他鼓劲儿,呼唤他,鼓励他,一次又一次地催促他起跳。隔着井里那段可恶的距离,她伸出双爪的姿势在渐渐明亮起来的天空的背景中始终是那么地坚定,这让井底的他一直热泪盈眶,有一种高高地跃上去用力拥抱她的强烈欲望。 然而他的所有努力都失败了。 天亮的时候她离开了井台,天黑之后她回来了。她很艰难地来到井台边,她为他带来了一只獾。他在井底,把那只獾一点不剩地全都填进了胃里。然后,开始了他新的尝试。 她有时候离开井台,然后她再蜇回到井台边,她总觉得在她离开的这段时间里,奇迹更容易发生。她在那里张望着,期盼着她回到井边的时候,他已经大汗淋漓地站在那里,喘着粗气傻乎乎地朝着她笑了。但是没有。天亮的时候,她再度离开井台,消失在森林里。天黑的时候,她疲惫不堪地回到井台边。整整一天时间,她只捉到一只还没有来得及长大的松鼠。她自己当然是饿着的。但是她看到他还在那里忙碌着,忙得大汗淋漓。他在把井壁上的冻土,一爪一爪地抠下来,把它们收集起来,垫在脚下,把它们踩实。他肯定干了很长一段时间了。他的十只爪子已经完全劈开了,不断地淌出鲜血来,这使那些被他一爪一爪抠下来的冻土,显得湿漉漉的。她先是楞在那里,但是她很快就明白过来了,他是想要把井底垫高,缩短井底到井口的距离。他是在创造着拯救自己的生命通道。 她让他先一边歇息着,她来接着干。她在井坎附近,刨开冰雪,把冰雪下面的冻土刨松,再把那些刨松的冻土推下井去。她这么刨上一阵,再换了他来,把那些刨下井去的冻土收集起来垫好,重新踩实。他们这样又干了一阵,他发现她在井台上的速度慢下来。他有点急不可耐了。他不知道她是饿着的,也很累,她还有伤。天亮时分,他们停了下来。他们对自己的工作很满意。如果事情就像这么发展下去,他们会在下一次太阳升起来的时候最终逃离那口可恶的枯井,双双朝着森林里奔去。 但是村子里的两个少年发现了他们。 两个少年走到井台边,他们发现了躺在井底心怀憧憬的他。然后他们跑回村子里拿猎枪来,朝井里的他放了一枪。 子弹从他的后脊梁射进去,从他的左肋穿出。血像一条暗泉似的往外蹿,他一下子就跌倒了,再也站不起来。 开枪的少年在推上第二发子弹的时候被他的同伴阻止住了。阻止的少年指给他的伙伴看雪地里的几串脚印,它们像一些灰色的玲珑剔透的梅花,从井台一直延伸到远处的森林中。
她是在太阳落山之后回到这里的。他带回了一头黄羊。但是她没有走近井台她在淡淡的橡树籽和芬芳的松针的味道中闻到了人的味道和火药的味道。然后,她就在晴朗的夜空下听见了他的嗥叫。 他的嗥叫是那种报警的,他在警告她,要她别靠近井台。要她返回森林,远远离开他,他流了太多的血。他的脊梁被打断了,他无法再站起来。但是他却顽强地从血泊中挣起头颅,朝着头顶上斗大的一方天空久久地嗥叫着。 她听到了他的嗥叫,她立刻变得不按起来。她昂起头颅,朝着井台这边嗥叫。她的嗥叫是在询问,她在询问出了什么事。他没有正面回答她,他叫她别管。他叫她赶快离开,离开井台,离开他,进入森林的深处去。她不,她知道他出了事儿。她从他的声音中嗅出了血腥味儿。她坚持要他告诉她到底发生了什么,否则她决不离开。 两个少年弄不明白,那两只狼嗥叫着,呼吸毗连,一唱一和,只有声音,怎么就见不到影子?但是他们的疑惑没有延续多久,她就出现了。 两个少年是被她的美丽惊呆的。她体态娇小,身材匀称,仪态万方,她鼻头黑黑的,眼睛始终潮润着,弥漫着小南风一般朦胧的雾气,在一潭秋水之上悬浮着似的。她的皮毛是一种冷凝气质的银灰色,安静的,不动声色的,能与一切融合且使被融合者升华为高贵的。她站在那里,然后慢慢朝他们走来。 两个少年,他们先是楞着的,后来其中一个醒悟过来。他把手中猎枪举了起来。 枪声很沉闷。子弹钻进了雪地里,溅起一片细碎的雪粉。她像一阵干净的轻风,消失在森林之中。枪响的时候他在枯井里发出长长的一声嗥叫。这是愤怒的嗥叫,撕心裂肺的嗥叫。他的嗥叫差不多把井台都给震垮了。 在整个夜晚,她始终待在那片最近的森林里,不断地发出悠长的嗥叫声。他在井底,也在嗥叫。他听见了她的嗥叫,知道她还活着,他的高兴是显而易见的。他一直在警告她,要她别再试图接近他,要她回到森林的深处去,永远不要再走出来。她仰天长啸着,她的长啸从那片森林里传出来,一直传出了很远。 天亮的时候,两个少年熬不住,打了一个盹。与此同时,她接近了井台,她把那只冻得发硬的黄羊拖到井台边上。她倒着身子,刨飞着一片片雪雾,把那头黄羊,用力推下了枯井。他躺在那里,因为被子弹打断了脊骨而不能动弹。那头黄羊就滚落到他的身边。他大声地叫骂她。他要她滚开,别再来扰烦他,否则他会让她好看的。他头朝一边歪着,看也不看她,好像对她有着多么大的气似的。她爬在井台上,尖声地呜咽着,眼泪汪汪,哽咽着乞求他,要他坚持住,只要他还有一口气,她就会把他从这该死的枯井里救出去。 两个少年后来醒了。在接下去的两天时间里,她一直在与他们周旋着。两个少年一共朝她射击了七次,都没能射中她。 在那两天的时间里,他一直在井里嗥叫着。他没有一刻停止过这样的嗥叫。他的嗓子肯定已经撕裂了,以至与他嗥叫断断续续,无法延续成声。 但是第三天的早上,他们的嗥叫声突然消失了。两个少年,探头朝井下看。那头受了伤的公狼已经死在那里了。他是撞死的,头歪在井壁上,头颅粉碎,脑浆四溅。那只冻硬的黄羊,完好无损地躺在他的身边。
那两只狼,他们一直试图重返森林。他们差一点就成功了。他们后来陷进了一场灾难。先是他,然后是她,其实他们一直是共同的。现在他们当中的一个死去了。他死去了,另一个就不会再出现了,他的死不就是为着这个么? 两个少年,回村子拿绳子。但是他们没有走出多远就站住了。她站在那里,全身披着银灰色的皮毛,皮毛伤痕累累,满是血痂。她是筋疲力竭的样子,身心俱毁的样子,因为皮毛被风儿吹动了,就给人一种飘动着的感觉,仿佛是森林里最具古典性的幽灵。她微微地仰着她的下颌,似乎是轻轻地叹了一口气,然后,她朝井台这边轻快地奔来。 两个少年几乎看呆了,直到最后一刻,他们中的一个才匆忙地举起了枪。 枪响的时候,停歇了两天两夜的雪又开始飘落起来了。 -
迷信的起源
用猴子来试验人类的道德、信仰、迷信等多种思想形态的形成,不可不看!
后来A终于被好心的实验人员拉出了苦海。
新来了猴子F。
C觉得有必要维护自己的阶级地位,B、D、E则生怕自己顶了A的缸......在各种复杂心情的作用下,B、D、E在C的带领下爆扁了F一顿,然后强令F做拿香蕉阶级。
F开始不乐意,后来慢慢在B等的劝说下等"待多年的媳妇熬成婆"这一宿命。。。。。。
迷信的起源
后来A终于被好心的实验人员拉出了苦海。
新来了猴子F。
C觉得有必要维护自己的阶级地位,B、D、E则生怕自己顶了A的缸......在各种复杂心情的作用下,B、D、E在C的带领下爆扁了F一顿,然后强令F做拿香蕉阶级。F开始不乐意,后来慢慢在B等的劝说下等"待多年的媳妇熬成婆"这一宿命。
慢慢的老资格的B、D、E猴子渐渐被淘汰,C发现自己在体力上不再占有优势,很难再通过武力让这一游戏规则继续下去,觉得十分苦恼。
这时,一只最有希望升级为吃香蕉阶级(暨C的理所当然接班人)也是C谋臣的H向C进言。于是君臣定计。
H开始依*自己多懂几种猴语而在其他若干猴面前树立的权威形象向其他猴鼓吹:"每一只新来笼子的猴子都是有罪的,这种罪责来自血统。......只有摘香蕉的猴子才能被(实验人员)送到天堂。"
事实上,因为被水冲很容易得肺炎病倒而被实验人员淘汰掉,猴子们不知道反而以为被淘汰的猴子真的进了天堂。
渐渐,猴子都相信了这套理论,并且讲给每一只新猴子听。
然后就这么流传下去越传越神奇。以至于后来摘香蕉阶级的猴子都为了能摘香蕉而大打出手。......
这些都是C没有想到,H没有看到的,那时他们都已经死了。
然而迷信就这么诞生了。
-
信仰的起源
用猴子来试验人类的道德、信仰、迷信等多种思想形态的形成,不可不看!
五只猴子A、B、C、D、E三个阶级快乐地生活了很久。他们精确的给出了三个阶级的定义,即吃香阶级、拿香阶级和干看着阶级。
猴子B、D、E解释道:所谓"拿香阶级"就是猴子界勇敢者的阶级。需具备一不怕苦二不怕死的大无畏精神方能得此殊荣。猴子F闻听不禁有些神往,有些跃跃欲试。当然他最终达到了目的,作了唯一的拿香阶级。再后来,B、D、E三猴陆续被换出局,换来的猴子个个健壮如C。他们继续大大出手,不过目标不是香蕉,而是那个唯一的拿香阶级。
于是信仰也出现了
信仰的起源
五只猴子A、B、C、D、E三个阶级快乐地生活了很久。他们精确的给出了三个阶级的定义,即吃香阶级、拿香阶级和干看着阶级。可惜猴子A由于长期的水中作业无可避免地引发了它肺部功能的衰竭。一天他在例行的拿香蕉作业中跌倒了就再也没有爬起来。于是实验人员又送进了一只同样孔武有力的猴F。当然他还是对屋顶的香蕉很有兴趣。不幸的是他最终以微弱的劣势被以C为首的群猴再次海K。第二天,又到了拿香蕉的时候。猴子C很无所谓,反正他还要吃香蕉,反正他不会被水淋到。真正恐慌的是B、D、E三猴。F是那么的健壮,他们这些媳妇是熬不成婆了 他们将面临一个艰难的抉择,谁该去步A的后尘? 猴子B、D、E展开了激烈的争论,讨论谁最应该做下一个拿香阶级。猴子F很奇怪也很好奇,什么叫"拿香阶级"呢?猴子B、D、E解释道:所谓"拿香阶级"就是猴子界勇敢者的阶级。需具备一不怕苦二不怕死的大无畏精神方能得此殊荣。猴子F闻听不禁有些神往,有些跃跃欲试。当然他最终达到了目的,作了唯一的拿香阶级。再后来,B、D、E三猴陆续被换出局,换来的猴子个个健壮如C。他们继续大大出手,不过目标不是香蕉,而是那个唯一的拿香阶级。于是信仰也出现了
-
道德的重建
用猴子来试验人类的道德、信仰、迷信等多种思想形态的形成,不可不看!
为了重建道德秩序,实验人员决定继续供应香蕉。
但是,此刻的香蕉成了匹夫怀里的宝玉,得到它的猴子虽然可以享受美味,但付出的代价也是巨大的。
道德的重建
实验人员对猴子们的争斗不休感到不安。为了重建道德秩序,他们决定继续供应香蕉。
一天,正在混战的猴子们发现头顶多了一串香蕉,它们其中的一个A不顾身上的剧痛,把香蕉摘了下来。于是久违的甘露出现了,未曾尝过甜头的猴子们先是茫然失措,继而争先恐后的加入冲凉的行列。香蕉反而被遗忘了。当猴子B、C、D、E发现A在享受淋浴的同时还吃着美味的香蕉,嫉妒心使它们暂时团结起来,共同K了A一顿,将A吃剩的香蕉夺过来,但是,此刻的香蕉成了匹夫怀里的宝玉,得到它的猴子虽然可以享受美味,但付出的代价也是巨大的。实验人员不断放入香蕉,却发现战斗比以前更激烈了。分析清楚原因后,他们用木头做了一个假香蕉扔进了笼子。此时猴子们已经学聪明了,它们知道触摸香蕉可以享淋浴,而试图独占香蕉则会遭到痛扁。于是,一个新的现象出现了,当猴子们有冲凉的需要时,会有一只猴子将香蕉拿起来,而当它发现有遭到攻击的可能时,它会马上放下香蕉逃到一边去。这样,猴子们都能冲凉,但是又不至于再象以前那样N败俱伤。
没有猴子发现那个香蕉是假的。








