2009年4月17日星期五

《大腕》之网站开发版

一定得选最复杂的设计
雇美国的架构师
建就得建最高档次的网站
不用测试直接上线
占用内存最少的功能也得用四百兆
什么分布式事务啊、状态同步啊、并发控制啊
能用的全用上

页面用Ajax,逻辑用EJB
都塞到应用服务器中
一个图片要在程序里转七圈才能输出
甭管有事没事先封装了,再对人说
"Encapsulation makes everyting become possible"
一口地道的美国口音
倍有面子

数据存储用的是Oracle
要集群运作的那种
光做一个留言板就得用几十张数据表

再配上最豪华的体系结构
从表现层到逻辑层全用上
就是一个字 难
实现一个用户登陆也得花个八千行代码

周围的开发人员不是用Java,就是用.Net
你要是用PHP
你都不好意思跟人家打招呼

你说这样的网站,一个功能得拆分多少层
我觉着怎么着也得五层吧
五层?那是视图
十五层起
你别嫌多,还不能简化
你得研究开发者的心理
愿意拆分五层的开发者
根本不在乎再多拆分十层

什么叫网站开发你知道吗
成功网站就是做什么功能
都做最难的,不是做最好的
所以我们做网站的口号就是
不求最好,但求最难

2009年3月28日星期六

金缕衣

作者:【杜秋娘】 年代:【唐】 体裁:【乐府】
劝君莫惜金缕衣,劝君惜取少年时。
花开堪折直须折,莫待无花空折枝。

2009年3月14日星期六

...

● 看一个男人有没责任心,就看他能不能给女人一个归宿,直到女人人生谢幕时,这个男人还是唯一的观众。

● 在现实面前,没有一个男人可以真正接受一个感情千疮百孔的女人。

● 感情受伤的男人,很容易找到一段人间喜剧式的爱情,而感情受伤的女人,常常会遭遇另一场爱情悲剧。

● 男人不愿说的秘密,女人再问也没用。要想获取男人内心的秘密,最好的办法就是欲擒故纵,不战而屈人之兵。

● 男人们所有痛苦、不幸和灾难的原因,不在于不了解女人,而在于没有听女人的话。

●男人在表达誓言的时候,或许是真诚的,但能否信守誓言,我敢说没有一个男人对自己的誓言有绝对的信心。

● 男人许女人一纸婚约,不仅仅是爱情,更是一份责任。履行一份责任,往往要比一句空洞的承诺对婚姻生活更有效。

● 能为一个人等多久,说得最动听的是男人,做得最成功的是女人。男人滥情,更薄情,自古如此。

● 男人的那句“我愿意等你一辈子”,搁在哪个女人身上,多年后都会变成一种伤害,一种痛苦的记忆。事实上,很多誓言和承诺在爱情结束后都会变成一种伤害。

● 男人为女人守一夜,女人为男人守一生。有趣的是,男人等不了,却时常说“等你一辈子”;女人等不起,却等了一辈子。

● 男人的等待只是表象,有时仅仅是为了感动女人,并没有多少实际的意义,就像男人的誓言,动听,却不会为女人带来真正的幸福。女人的等待是痴情,是对男人誓 言的悲情注解,很多时候等待的只是一帘幽梦,美丽而寂寞。甚至很多男人说等你一辈子,有时只是离开时的真实谎言,一种分手时的美好说辞。

● 男人滥情,伤的是女人,女人痴情,伤的还是女人自己。

● 男人和女人在对待一见钟情,看法是绝对不同的。女人希望有一见钟情的爱情,源于浪漫的幻想,而男人希望一见钟情,源于下半身的,。

● 男人为义气两肋插刀,女人为爱情心上插刀。刀插在肉里,伤得再深,也不过是皮肉之痛。而刀一旦插在心上,就会痛彻心扉,伤口一生都难以愈合。

● 论哪个阶层的男人喝酒,都离不开女人,或者说与女人有关。男人喝白酒,与心情有关。男人喝啤酒,与感官有关。男人喝红酒,与情感有关。好喝白酒的男人,敌人多。好喝啤酒的男人,朋友多。好喝红酒的男人,情人多。

● 一个男人与一个城市纠缠不清,那一定是有一个女人与之爱得死去活来,以至因爱生怨,因怨生恨,最后纠缠一生,伤痛一生,回味一生。

● 一个男人故土难离,或者远走他乡,一定与女人有关。

● 世上本没有浪子,被女人骂得多了,也就成了浪子。

● 只要不是浪得虚名,男人宁愿做浪子。因为浪子的人生丰富多彩,浪子回头贵过黄金,更重要的是浪子活得真实。

● 遇到好女人,是男人前世修来的福分;遇到坏女人,是男人今生在劫难逃的艳遇。

● 男人可以征服天下,最后却往往输给女人。

● 现实中的男人,往往大多善于伪装。女人要在婚前完全读懂一个男人,却不是一件容易的事情。

● 女人要想真正了解一个男人,只需一夜;男人要想真正了解一个女人,需要一生。

● 破坏男女友谊和爱情的最好办法,就是上床。男人上床容易,下床更容易。而女人上床容易下床难。床上永远谈不出伟大的友谊和永恒的爱情,但可以破译男女内心深处惊天动地的秘密。

● “范跑跑”最大的历史贡献,不是改写了男人的处世准则,而是告诉了女人一个简单而深刻的道理:上床不跟陈冠希,嫁人不嫁“范跑跑”。

● 男女性格的不同,注定在感情世界里,男人和女人PK只有一种结果:男人输掉一夜,女人输掉一生。

● 男人骗女人一夜,女人骗男人一生。

● 在现实中,有两样东西是最靠不住的,一是男人的誓言,一是女人的年龄。

● 想用下半身去留住男人的女人和想用下半身去征服女人的男人,如果以同居的名义都是愚蠢的。爱自己多点,才能使别人爱你更多。

● 在男女感情的世界里,男人的誓言,女人的谎言,都是一把无形的剑,总在你毫无防备的时候,给你致命的温柔一刀。

● 男人做错了,追根究底,那都是女人的错。世俗社会同情女人,但一旦危及男人的利益,总会把罪责和过失推给女人。

● 没有多少男人经得起下半身的,,风流才子如此,平凡男人也不能免俗。

● 男人喜欢在上床前对女人说我爱你,女人却总是在上床后对男人说我爱你。上床前,爱与不爱,男人都会许女人甜言蜜语;而女人说我爱你,那一定是来自内心的真实感受,与上不上床无关。这就是男人和女人对待爱情最大的不同。男人,与爱情可以无关,女人,一定投入真爱。

● 男人三十,是人生的一道坎,一个分水岭,充满期待,充满悬念。

● 30岁之前,男人比帅气,比身高,比背景,但30岁后,男人比财富,比权势,比地位。

● 对女人来说,年轻绝对是优势,但对男人来说,年轻并不是什么资本,真正的资本是智慧和谋略。

● 30岁男人,不能再异想天开,不能再夸夸其谈,不能再愤世嫉俗,否则,熬到40岁,不但成不了精品,还可能是次品。

● 男人善于说谎,女人善于伪装。

● 男人与男人之间,只要臭味相投,就是铁杆朋友。但女人与女人之间,即使亲密无间,也时常有意无意地彼此处处设防

2009年2月7日星期六

摘录。。。

灵魂再孤独,也不要向爱屈服,一旦你被爱俘虏,并开始相信她,臣服她,一种对生的依恋就会开始,但你的灵魂就会与这爱同时死去!

爱以言语表达,就失去了生的意义,爱是孤独者的墓碑,爱是有灵魂的人的独舞和绝唱,但歌舞一出,生命立刻消亡,灵魂也得到了永久的安息!

我是一个有灵魂的人,孤独是我的一切美好和唯一拥有,我整日游走,只为寻找一句问候“我爱你”

2008年12月14日星期日

圣经中的《启示录》

 又名《默示录》,Apocalypse (Greek: Ἀποκάλυψις Apokálypsis; "lifting of the veil")。是《新约圣经》的最後一章,据说是耶稣的门徒约翰所写的,主要是对世界未来的预警,包括对世界末日的预言。是传道士传教的重要依据。其中许 多神话和比喻,成为基督教世界艺术的经久不衰的源泉。
  启示录是「耶稣基督的启示」(启一1)。当罗马皇帝多米田(Domitian)迫害教会期间, 使徒约翰被放逐到拔摩海岛上,主在那里向他显现,把「现在的事和将来必成的事」指示他(一19);约翰即把所看见、所听见的真道和见证一一记录下来(启一 3,十4),成为启示录一书。时间约在主后94~96年之间。
  启示录是圣经各卷中最难懂的一卷,解经家各作不同的解释,大致可归为四类:
  过去式解释法(Preterist Interpretation):此说认为本书诸表征是指当时发生的事,所以已成过去,与现时代没有关系。
  历史式解释法(Historical Interpretation):此说认为本书是用预言的手法,写下自当时至主再来时的人类历史。各表征是显示在这段历史中陆续发生的事件。
  未来式解释法(Futurist Interpretation):此说认为本书第四章以下皆为对未来的预言,它们将应验于教会被提之后,即七年大灾与千年王国时代。
  灵意解释法(Spiritual Interpretation):此说认为本书的一切表征是指示真神支配人类历史的原理与原则,不是预言特定的事实。所以当以原理或灵意解释之。
  本会对启示录的解释,多赞同黄以利沙长老在《启示录的研究》一书里的看法。启示录第一章19节 所说「现在的事」,我们认为是指当时教会的事;而「将来必成的事」,是指晚雨圣灵降临重建真教会,至耶稣基督再临期间将要发生的事。本文因篇幅有限,只提 出五个重点信息略为解释,盼读者从中窥见启示录的概貌,而对研读启示录有所帮助。
  ----------------------------------------
  约翰所见的异象
  上帝赐启示给耶稣基督,叫他将必将实现的事指示给他的众仆人。于是耶稣遣使者晓逾约翰,将他所见的记载下来告知大众,作这些预言的见证人。那些听见这些预言并遵守的信众,主将赐福与他们。
  约翰这时正被流放在拔摩的海岛上,当主日来临,约翰被圣灵感动,听见一个声音对他说:"你所见 的,当写在书上,达与以弗所、士每拿、别迦摩、推雅推喇、撒狄、非拉铁非、老底嘉这七个教会。"约翰闻声,欲看清是谁在说话,遂见七个金灯台,灯台中一人 身着长衣直垂到脚,好像人子。他胸问束金色的带,须发洁白如雪、如羊毛,两目放光如火焰,两脚闪闪发光如赤铜,说话声如洪水轰呜。他右手执七星,口吐一把 双刃利剑,面如烈日放出金光万道。约翰见这样子大惊失色,即扑倒在地,伏在他脚前,动弹不得。这时闪光的人说:"不要惧怕。我是首先的,我是未后的,又是 那存活的;我曾死过,现在又活了,直到永永远远;并且拿着死亡和阴间的钥匙。所以你要把所看见的,和现在的事,并将必成的事,都写出来。说到你所看见的, 在我右手中的七星和七个金灯台的奥秘:那七星就是七个教会的使者;七灯台就是七个教会。"
  约翰知道是救主显圣,于是尊圣旨写信给七个教会的使者,传达主的意思。
  给以弗所教会使者的信中,主这样说:"我知道你的行为、劳碌、忍耐,也知道你不能容忍恶人。你 曾为我的名劳苦,并不觉乏倦。然而有一事我要责备你,就是你起初的爱心离弃了。所以应当回想你是从那里坠落的,并要悔改,行起初所行的事。你若不悔改,我 就临到你那里,把你的灯台从原处挪去。"主还要约翰告诉他:要听主的教诲,持定爱心,恨主所恨恶的恶人,主会将神乐园中生命树的果子赐与他。
  给士每拿教会使者的信中,主让约翰告诉他:他的患难、贫穷、以及那冒充犹太人所说的毁谤话,主都知晓。魔鬼要把他们中的几人下在监里被试炼,受患难十日,但对于这苦不必惧怕,一定要对主至死忠心,主将赐给他生命的冠冕。
  给别迦摩教会使者的信中,主说:"我知道你的居所,就是有撒但座位之处;当我忠心的见证人安提 帕在你们中间,在撒但所住的地方被杀时,你还坚守我的名,没有弃绝我的道。"但他应受到责备的是,在他那里有人服从巴兰的教训和尼哥拉一党人的教训;而巴 兰曾教导巴勒将绊脚石放在以色列人面前,叫他们吃祭偶像之物,行奸淫之事;尼哥拉一党人的行为,则是主所恨恶的。
  主说:"所以你当悔改;若不悔改,我就快临到你那里,用我口中的剑攻击他们。"那听取圣谕的教会的信众,将会获得主赐与的真传。
  给推雅推喇教会使者的信里,主让约翰告诉他,主知道他的行为、爱心、信心、勤劳、忍耐,以及所 行的更多的善事。但对于他容忍那自称为先知的妇人耶洗别引诱主的仆人们行奸淫、吃祭物的行为,定要指责不肯悔改的妇人耶洗别以及与她行淫的人,都要受到惩 罚,受大患难;众教会的人,要按照各人的行为受到报应,淫妇的党类,要被杀戮;而那不从淫妇教训、不晓撒但邪理的人,须持守善行直到主的到来;那始终遵循 主的命令的,会得到主赐与的铁的权柄制伏列国,并得主赐与的晨星。
  给撒狄教会的信中,约翰告诉使者,他的行为在神面前,没有一样是完全的,因此他必须回想他曾怎 样领受、听见神的教诲,警醒并悔改过失。而撒狄中尚有未曾污秽自己衣服的,凡遵主教诲,行为完好的,都要身着白衣与主同行,主必不会从生命册上抹去他的姓 名,并要在神和神的众使者面前认他的名。
  给非拉铁菲教会的信中,主告使者:因他持守主的道,从不弃绝主的名,主将在他面前敞开大门,无 人能将其关上;那冒充犹太人的撒但一族的说谎者,将跪拜在他脚下;当普天下人受试炼时。他必免被试炼,他应继续持守他的义行,保住他的冠冕。那始终行义事 的成功者,将得进于主的神殿不再出去,并可作神殿中的柱子,主会将神的名、神城的名--降临于神的新耶路撒冷,并以主的新名写在柱子上。
  给老底嘉教会的信中,主告诉使者,不应在信仰上不冷不热,不要满足于眼前的富足,更不能忘记他 曾是那样地困苦、可怜、贫穷,是主让他富足,使他能穿上白衣遮住赤裸的身体,用药擦亮他那瞎了的双目。主疼爱他,于是责备他管教他,他须要发热心,悔改一 切过失。那听主的教悔做成功的,主将赐他与主同坐主的宝座。
  之后,约翰看见天上有门开了,并听见一个声音洪亮如吹号,说:"你上到这里来,我要将以后必成 的事指示你。"约翰便看见天上有一个宝座,宝座中端座一人,似碧玉,似红宝石;绿宝石似的虹围绕在宝座周围,二十四位长老坐在宝座周围的二十四个座位中, 他们身穿白衣,头戴黄金冠冕。宝座中闪电雷鸣,宝座前燃着七盏火灯--神的七灵,照得宝座前波光粼粼,晶莹无比。
  又见四个奇异的生灵分置于宝座中和宝座周围,这些生物周身布满眼睛,各有六个翅膀。第一个像 狮,第二个像牛犊,第三个有着人的脸面,第四个似飞鹰;他们不停地在说:"圣哉!圣哉!圣哉!主神,是昔在,今在,以后永在的全能者。"而那二十四位长 者,俯伏在宝座前,并把他们的冠冕放在宝座前说:"我们的主,我们的神,你是配得荣耀、尊贵、权柄的,因为你创造了万物,并且万物是因你的旨意被创造而有 的。"
  接着,约翰见宝座上的主神有手拿着写满了字的书卷,用七印封严了,一位大力天使宣称无人能打开 并阅读这书卷,因为没有人配得上这样做。这时见三似乎是被宰杀过的羔羊立于宝座、四个生灵及二十四长老中,这羔羊长着七角七眼一这就是神的七灵--从宝座 上的主神手里拿过书卷,只有他才能揭开七印,展开并阅读这书卷。
  随即,四活物和二十四位长老各拿着琴和盛满了香的金香炉,俯伏在羔羊面前,那香炉中的香,即是 众圣徒的靳祷。约翰听见四活物、二十四长老,及周围的许多天使并天地间一切被造之物都说着同样的话:曾被杀的羔羊是那配拿书卷、掏开七印、得到权柄、富 足、智慧、能力、尊贵、荣耀、颂赞的;愿这一切归于宝座上的我主神和羔羊,直到永远。
  羔羊揭开七印中的第一印,随着四活物中的一个说了声"你来!"一个手持弓箭、头戴冠冕的常胜者 骑着一匹白马出现了;羔羊揭开第二印,随着另一声"你来!"一骑红马者出现了,并被赐与权柄和一把大刀,示意他可以从地上夺去太平,使人彼此相杀;这时第 三印揭开了,一人手拿天秤,骑一匹黑马出现在约翰眼前,还可听见四活物中好像有声音说:"一钱银子买一升麦子,一钱银子买三升大麦;油和酒不可糟蹋。"
  第四印揭开了,第四个生灵又说了声"你来!"一个骑着灰马者显现了,这骑者名叫"死",随着他一起的是阴曹地府,他们所得赐的权柄,是用刀剑、饥荒、瘟疫、野兽毁灭地上四分之一的人。
  揭开第五印,一些灵魂在祭与底下大声呼叫:--他们是因拥护神的道、为神作见证而被杀害的--"圣洁真实的主啊,你不审判住在地上的人,给我们伸流血的冤,要等到几时呢?"于是他们每人被赐与白衣,并被嘱安息片时,便会得到满足。
  第六印一揭开,天地震动,日月无光,满天的星辰如同一阵大风吹落树上未成熟的果实落满遍地。天移位了,山岭、岛屿也在漂移……这是羔羊在忿怒!地上的君王、臣宰、将军、壮士、富户、一切为奴的,自主的,纷纷躲进山洞岩穴,以避开宝座上上帝的面目和羔羊的忿怒。
  而后,四位执掌地上风的天使各立于地的四角,息住了风,又一位天使从日出之地走上来,拿着永生 神的印,给上帝的众仆人额上授印。以色列人各支派中受印的数目有十四万四千;犹大支派、流便支派、迦得支派、亚没支派、拿弗他利支派、玛拿西支派、西缅支 派、利未支派、以萨迦支派、西布伦支派、约瑟支派、便雅悯支派都各有一万二千受了印。
  此后,从各方来了许许多多不同国度不同民族的人,都身穿白衣,手执棕树枝,站在宝座和羔羊面前,向宝座上的上帝和羔羊敬拜、赞颂,众天使也面伏于地,敬拜上帝和羔羊。
  长老中有一位过来问约翰这些穿白衣者是谁,来自何处,约翰说:"我主,你知道。"于是长老告诉约翰,他们才脱离了大患难,他们的白衣是曾用羔羊的血洗净,他们昼夜在神殿中事奉神,不再受饥渴日晒之苦,羔羊牧养他们,领他们到达生命泉水之源,上帝给他们擦去忧伤的眼泪。
  羔羊最后揭开了第七印,天上立即寂静下来,约二刻时分后,立于上帝面前的七位天使被赐与七支号,一位持金香炉的天使来在祭坛旁,香炉内的香烟并众圣徒的祈祷一同缓缓升到上帝的面前;天使将坛上的火盛满香炉遂倾倒于地上,顿时电闪雷鸣,大地震颤。
  这时拿号的七天使分别吹起了号。第一位天使吹号时,雹混着火与血自天而降,树木青草等均被烧去三分之一。
  第二位天使吹号时,燃烧着的大山滚滚落入海中,海水即成血水,三分之一的海中生灵、船只死的死、坏的坏。
  第三位天使吹号,就有那名唤作茵陈的大星,燃烧着自天降人江河中及其水源上,随之江河中水味变苦味如茵陈,又有许多人死去。
  第四位天使吹响了号,日、月、星辰即有三分之一被击打暗淡,白昼不再明亮,黑夜无星放光。一只鹰在空中飞翔叫喊:"三们天使要吹那其余的号;你们住在地上的民,祸哉!祸哉!祸哉!"
  第五位天使吹号了,一颗星从天降下,并用无底坑的钥匙开了无底坑,一阵阵浓烟从坑中冒出,遮天 蔽日;一群群蝗虫随着浓烟涌出,这些蝗虫形同准备出征的战马,头戴金冠,面如男子,发似妇人,长着狮子般的利齿,胸前佩有铁甲,拖着蝎子的尾巴,它们扇动 翅膀,尤如万马奔腾,它们的使使是伤害那些额上没有神印记的人们,要用它们蝎子尾巴上的毒钩伤这些人们五个月,让这些人在此期间忍受如蝎螫的痛苦,但却求 死不得。无底坑的使者,是蝗虫的王,他的希伯来名,叫亚巴顿。这就是地上的民的第一样灾祸。
  第六位天使开始吹号,上帝前的金坛四角传出声音命令吹号的天使:"把那捆绑在伯拉大河的四个使 者放了。"这四使者早已立愿要杀掉三分之一的人众。此时被释放,便立即从愿。只见他们兵马众多,骑兵胸前佩甲如火,相伴着紫玛和硫磺,象在熊熊燃烧;马匹 个个雄壮无比,头如狮,尾如蛇并带有蛇的头,马口中不断喷出火与烟,还带着一股股的硫磺,于是三分之一的人众死在他们的脚下。剩下的三分之二,见状却仍不 思悔改,仍旧拜鬼魔、拜偶像,且继续行凶杀、邪术、奸淫、偷窃之事。
  灾祸过去,另一位天使从天降下,他身披彩云,头绕彩虹,面如红日,脚似火柱,手拿展开的小书 卷,并右脚踏海,左脚踏地,大声呼喊如狮子吼,随着这呼声,七声雷鸣震耳欲聋。约翰正待写下他所见,天上传来话语:"七雷所说的,你要封上,不可写出 来。"随后又吩咐他取过那天使手上的小书卷吃掉,并说吃时口中会感觉甜如蜜,进到肚里却腹中发苦。约翰照办,果然如此。
  天使又让他接着说预言作见证。这时他被赐给一根苇子,一个声音嘱他丈量上帝的殿和祭坛以及在殿 中作礼拜的人。殿外的院子不用量,因那要留给外邦人,他们要践踏圣城四十二个月。约翰又听见说:"我要使我那两个见证人,穿着毛衣,传道一千二百六十 天。"这两个人会口吐火焰烧灭想害他们的仇敌;他们传道之日,天不降滴雨,水要变为血,他们可以随时随意用各种灾祸攻击世界。当他们作完见证,无底坑里要 有兽上来和他们交战杀死他们,尸体在叫埃及或所多玛的大城的街上停三天半,人们为此欢喜快乐。三天半后,上帝的生气进入他们体内,他们就复活并听从上帝的 召唤上天去,看见他们的人都非常害怕,这时地动城摇,城倒塌十分之一,七千人死于地震。
  第七位天使吹号,约翰听见从天上传来声音宣布:"世上的国成为我主和主基督的国。"于是二十四位长老伏于地面,敬拜全能的上帝,感谢他掌权为王。这时天上的殿开了,殿中出现约柜,随后有电闪雷轰,地震大雹。
  天上现出种种异象:一妇人披日踏月,头戴十二星冠,正在分娩的痛苦中呼喊;一头红色巨龙,七头 戴七冠长十角,尾拖三分之一星辰,在妇人前欲吞吃那将娩出的婴孩。妇人生下一男婴,立即被提到上帝宝座那里,将来他用铁杖辖管万国。妇人按上帝指引逃到旷 野,她可以在那儿生存1260天。
  天使米迦勒及使者与巨龙及使者交战了,巨龙战败,被摔在地上,于是又去追那妇人,妇人得一大鹰双翅,飞往旷野,巨龙紧追,喷水欲冲走妇人,这时大地开裂吞下洪水,妇人得救,巨龙只好站在海边沙滩上发怒。这龙就是那古那迷惑人的蛇、魔鬼撒但变的。
  这时海中出现一奇异的兽,十只角戴十冠,七个头上都标有亵渎的名号,身体象豹,四脚象熊,口大 如狮,七头中一个似受过伤又治好了。巨龙将自己的权柄和座位交给怪兽,任它行权四十二个月,这兽亵渎上帝,战胜圣徒,制服各族各民各方各国。接着另一怪兽 从地中上来,它两角如羊羔,发声如巨尤,它施权柄让天降火,叫众人不分大小贫富,无论为主为奴都在右手或额上受一印记,得到兽名或兽名数目,这数目是 666。
  与此同时,羔羊站在锡安山,并十四万四千人众,他们额上均写着羔羊的名和他父的名,他们从未沾 染妇女,不说谎话,没有瑕疵,他们与羔羊同在,随着琴声,唱起新歌。天空中飞过三位天使,要有永远的福音传给地上的人们,并告诉人们:上帝施审判的日期到 了;邪淫的巴比伦大城倾倒了;受了兽的印记井拜兽的人们,必受痛苦,昼夜不得安宁。
  一片白云漂来,上坐一人好像人子,头戴金冠,用一把锋利的镰刀收割了地上已成熟的庄稼;又一位 夭使出来,用镰刀收了地上熟透的葡萄,然后把葡萄倒人上帝的大酒醉中,血便立即从中涌出。那些战胜了兽的人们,都站在玻璃海上,弹着上帝的琴,唱着摩西和 羔羊的歌。然后存法柜的殿开了,掌管七灾的七位天使身穿细麻衣,腰问束金带从殿中走出,四活物中一个把盛满上帝大怒的七只金碗给七位天使,让他们倒在地 上。
  第一个天使把碗倒在地上,那些有兽印记且拜兽像的人身上生满毒疮。
  第二个天使把碗倒在海里,海水立即变成血,海中一切生灵尽皆死尽。
  第三位天使把碗倒于江河及众水之源,众水亦变成血水。
  第四位天使把碗倒在日头上,顿时烈日的烤,热浪袭人。
  第五位天使把碗倒在兽的王位上,兽国一片黑暗,国中的人众身上生满毒疮,疼痛无比,因而口吐秽语,啮咬自己的舌。
  第六位天使把碗倒在伯拉大河上,河水干枯,现出道路;三个污秽的灵--鬼魔的灵,从青蛙、龙、兽和假先知的口中吐出,这三个鬼魔招普天下众王聚在哈米吉多顿进行争战。
  第七位天使把碗倒在空中,殿中宝座传出声音说"成了",接着电闪雷呜,地震城塌,海岛山峦都无踪影,特大冰雹降落下来,砸在人身上。
  拿七碗中的一位天使召唤约翰,带他到旷野去看大淫妇受刑罚。约翰就见一女人着紫和朱红色衣,骑 一匹七头十角的朱红色兽,穿金戴银,珠光宝气,手拿一盛满她污秽淫乱的脏物的金杯,额上写着:"奥秘哉!大巴比伦,作世上的淫妇和一切可憎之物的母。"那 淫妇以圣徒和为耶稣作见证人的血为酒,喝得大醉。约翰觉得迷惑不解,天使将淫妇和她所乘七头十角兽的奥秘解释给他听:那兽先前有,如今没有,将从无底坑中 爬上来,又要归于沉沦。它的七头是女人所座的七座山,就是七王,五位已倾倒,一位尚在,另一位还未来到;兽的十角是十王,他们尚未得国,但他们一旦得权, 将同心合意将权柄让与那兽,并与羔羊争战,但万主之主、万王之王的羔羊必战胜那兽。淫妇坐下的众水,暗示多民、多人、多国、多方,那淫妇就是管辖地上众王 的大城。
  这时,另一位有大权柄的天使从天上来,大声宣布:巴比伦城倾倒了!成了魔鬼的住处和各样污秽之灵、可憎之雀鸟的巢穴。"
  另一声音在天上说,让百姓从城里撤出,免同淫妇一同遭罪罚。因她的奢华、她的罪恶、她的不义, 上帝要加倍惩罚她,她要痛苦悲哀,被火烧尽。那地上和她行淫的君主、藉她发财的客商都为她悲哀哭泣。而受其压迫的众圣徒、众使徒、众先知却因她受罚而欢 喜,因为上帝为他们伸了冤。
  一位大力天使举起一块巨石猛力投入海中,并说巴比伦城就如这石一般沉沦消失,永不再现。众人在天上大声唱起了"哈利路亚(要赞美耶和华)",那二十四位长老和四活物俯伏敬拜上帝,说"阿肌哈利路亚。"众人欢喜快乐,庆贺全能的上帝作王,准备赴羔羊的婚筵。
  约翰这时见天开了,一骑白马者出现,他眼如火焰,头戴许多冠冕,穿着溅了血的衣服,他就是诚信 真实,因喽按公义行事,他名叫上帝之道。天上众军也骑白马,穿细白麻衣尾随着他,他的衣服和大腿上写着:"万王之王,万主之主。"他们与与那聚集起来的兽 和地上的君王并众军士展开争战,将兽和拜兽像的假先知擒拿住,扔进燃着硫磺的火湖,众军士及有兽印记的民众皆被骑白马的众军口吐利剑杀灭干净。又一天使站 在日头中唤来飞鸟饱餐他们的肉。又一位天使拿着无底坑的钥匙和锁链,去捉那蛇愉但变的巨龙,将它捆绑一千年,封人无底坑。
  那些因为给耶稣作见证、为上帝之道被斩者的灵魂,那未拜过兽与兽像未受兽印记之人的灵魂,都复活了,要与基督同为飞一千年。一千年过后,撒但要被释放,迷惑地上四方各国聚集争战,于是天要降火,烧灭他们,魔鬼要被扔人兽所在的硫磺火湖,在那里永远受煎熬。
  此刻,出现一白色大宝座及坐宝座者,凡死去的人,都站丧宝座前。案卷和生命册都展开了,每人凭这些案卷所记载的,依其所行受审判,那生命册上无名的,便被扔进火湖。
  最后,约翰看见新天新地,圣城新耶路撒冷自上帝那里从天而降。宝座中传出洪亮的声音:上帝要与 人同住,作他们的上帝,他们作他的子民。上帝要擦去他们的眼泪,人间不再有死亡、悲哀、哭号、疼痛,以前的已经过去,上帝已将一切更新。上帝要将生命之水 白白赐给口渴的人喝,而那胆怯的、不信的、可憎的、杀人的、淫乱的、行邪术的、拜偶像的,和一切说谎的,都将进入硫磺火湖。
  之后,拿着七个金碗、盛满未后七灾的天使中一位,带约翰到一座大山那儿,将由上帝那里降下的圣 城新耶路撒冷指给他看,并告诉他这城就是新妇,是羔羊的妻。约翰见城中充满上帝的荣耀,光辉明亮如宝石、如碧玉、如水晶。圣城那高大的墙完全是碧玉造的, 城和城内的街道是精金的;十二颗珍珠分别在东、北、南、西四方作为圣城的门,十二门有十二位天使把守,十二门上写着以色列十二支派的名;城墙有十二根基, 每一根基装饰着不同的名贵宝石,并写有羔羊十二使徒的名。
  圣城内没有殿,因为上帝和羔羊就是城的殿;城内不需日月光照,因有上帝的荣耀照亮全城;羔羊便是那城内的明灯。城内没有黑夜,城门昼夜敞开,列国都在城的光里行走,而那不洁净的,行恶说谎的,以及羔羊生命册上无名的,都不得进入圣城。
  圣城内街道中有一道晶莹透亮的河,那河水是从上帝和羔羊宝座中流淌出来的生命之水,河的两岸长着生命之树,树上结十二样果,树的叶可为万民治病。上帝和羔羊的宝座立于城中,他的仆人将他的名写在他们额上,并事奉他直到永远。上帝的光照耀他们,使他们永远为王。
  天使再一次对约翰说,他所听见、所看见的,就是上帝差遣他的使者,将那必要快成的事指示给他的 仆人,凡遵守预言的便有福。约翰听见说:"看那!我必快来。赏罚在我,要照各人所行的报应他。我是阿拉法,我是俄梅戛;我是首先的,我是未后的;我是初, 我是终。……"我主耶稣差遣我的使者为众教会将这些事向你们证明。我是大卫的根,又是他的后裔;我是明亮的晨星。"
  最后,约翰遵照神启告诉大家说:"我向一切听见这书上预言的作见证,若有人在这预言上加添什么,上帝必将写在这书上的灾祸加在他身上;这书上的预言,若有人删去什么,上帝必从这书上所写的生命树和圣城,删去他的份。"

2008年12月6日星期六

索引知识(转)

1 概述
索引在各种关系型数据库系 统中都是举足轻重的组成部分,其对于提高检索数据的速度起至关重要的作用。在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索 引,位图索引,函数索引,interMedia全文索引等。本文主要就前6种索引进行分析,由于interMedia全文索引涉及的内容可以单独写一篇文 章,所以不在此对其做分析。
首先给出各种索引的简要解释:
b*tree index:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。
反向索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服务器环境下,用于减少索引叶的竞争。
降序索引:8i中新出现的索引类型,针对逆向排序的查询。
位图索引:使用位图来管理与数据行的对应关系,多用于OLAP系统。
函数索引:这种索引中保存了数据列基于function返回的值,在select * from table where function(column)=value这种类型的语句中起作用。
2 各种索引的结构分析
2.1 B*Tree索引
B*Tree 索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的 性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B- Tree索引是基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了 索引列(关键字)范围和另一索引块的地址,
假设我们要找索引中值为80的行,从索引树的最上层入口开始,定位到大于等于50,然后往左找,找到 第2个分支块,定位为75-100,最后再定位到叶块上,找到80所对应的rowid,然后根据rowid去读取数据块获取数据。如果查询条件是范围选择 的,比如where column >20 and column <80,那么会先定位到第一个包含20的叶块,然后横向查找其他的叶块,直到找到包含80的块为止,不用每次都从入口进去再重新定位。

2.2 反向索引
反向索引是B*Tree索引的一个分支,它的设计是为了运用在某些特定的环境下的。Oracle推出它的主要目的就是为了降低在并行服务器(Oracle Parallel Server) 环境下索引叶块的争用。当B*Tree索引中有一列是由递增的序列号产生的话,那么这些索引信息基本上分布在同一个叶块,当用户修改或访问相似的列时,索 引块很容易产生争用。反向索引中的索引码将会被分布到各个索引块中,减少了争用。反向索引反转了索引码中每列的字节,通过dump()函数我们可以清楚得 看见它做了什么。举个例子:1,2,3三个连续的数,用dump()函数看它们在Oracle内部的表示方法。
SQL> select 'number',dump(1,16) from dual
2 union all select 'number',dump(2,16) from dual
3 union all select 'number',dump(3,16) from dual;
'NUMBE DUMP(1,16)
------ -----------------
number Typ=2 Len=2: c1,2 (1)
number Typ=2 Len=2: c1,3 (2)
number Typ=2 Len=2: c1,4 (3)
再对比一下反向以后的情况:
SQL> select 'number',dump(reverse(1),16) from dual
2 union all select 'number',dump(reverse(2),16) from dual
3 union all select 'number',dump(reverse(3),16) from dual;
'NUMBE DUMP(REVERSE(1),1
------ -----------------
number Typ=2 Len=2: 2,c1 (1)
number Typ=2 Len=2: 3,c1 (2)
number Typ=2 Len=2: 4,c1 (3)
我 们发现索引码的结构整个颠倒过来了,这样1,2,3个索引码基本上不会出现在同一个叶块里,所以减少了争用。不过反向索引又一个缺点就是不能在所有使用常 规索引的地方使用。在范围搜索中其不能被使用,例如,where column>value,因为在索引的叶块中索引码没有分类,所以不能通过搜索相邻叶块完成区域扫描。

2.3 降序索引
降序索引是8i里面新出现的一种索引,是B*Tree的另一个衍生物,它的变化就是列在索引中的储存方式从升序变成了降序,在某些场合下降序索引将会起作用。举个例子,我们来查询一张表并进行排序:
SQL> select * from test where a between 1 and 100 order by a desc,b asc;
已选择100行。
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
1 0 SORT(ORDER BY)(Cost=2 Card=100 Bytes=400)
2 1 INDEX (RANGE SCAN) OF 'IND_BT' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)
这里优化器首先选择了一个索引范围扫描,然后还有一个排序的步骤。如果使用了降序索引,排序的过程会被取消。
SQL> create index test.ind_desc on test.testrev(a desc,b asc);
索引已创建。
SQL> analyze index test.ind_desc compute statistics;
索引已分析
再来看下执行路径:
SQL> select * from test where a between 1 and 100 order by a desc,b asc;
已选择100行。
Execution Plan(SQL执行计划,稍后会讲解如何使用)。
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=100 Bytes=400)
1 0 INDEX (RANGE SCAN) OF 'IND_DESC' (NON-UNIQUE) (Cost=2 Card=100 Bytes=400)
我们看到排序过程消失了,这是因为创建降序索引时Oracle已经把数据都按降序排好了。
另外一个需要注意的地方是要设置init.ora里面的compatible参数为8.1.0或以上,否则创建时desc关键字将被忽略。

2.4 位图索引
位 图索引主要用于决策支持系统或静态数据,不支持行级锁定。位图索引最好用于低cardinality列(即列的唯一值除以行数为一个很小的值,接近零), 例如又一个“性别”列,列值有“Male”,“Female”,“Null”等3种,但一共有300万条记录,那么3/3000000约等于0,这种情况 下最适合用位图索引。
位图索引可以是简单的(单列)也可以是连接的(多列),但在实践中绝大多数是简单的。在这些列上多位图索引可以与AND或 OR操作符结合使用。位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。位图索引的位图存放在 B-Tree结构的页节点中。B-Tree结构使查找位图非常方便和快速。另外,位图以一种压缩格式存放,因此占用的磁盘空间比B-Tree索引要小得 多。位图索引的格式如表26-1所示。
表26-1 位图索引的格式

值 1 2 3 4 5 6 7 8 9 10
Male 1 0 0 0 0 0 0 0 1 1
Female 0 1 1 1 0 0 1 1 0 0
Null 0 0 0 0 1 1 0 0 0 0
如 果搜索where gender=’Male’,要统计性别是”Male”的列行数的话,Oracle很快就能从位图中找到共3行即第1,9,10行是符合条件的;如果要搜 索where gender=’Male’ or gender=’Female’的列的行数的话,也很容易从位图中找到共8行即1,2,3,4,7,8,9,10行是符合条件的。如果要搜索表的值的话, 那么Oracle会用内部的转换函数将位图中的相关信息转换成rowid来访问数据块。

2.5 函数索引
基于函数的索引也是8i以来的新产物,它有索引计算列的能力,它易于使用并且提供计算好的值,在不修改应用程序的逻辑上提高了查询性能。使用基于函数的索引有几个先决条件:
(1)必须拥有QUERY REWRITE(本模式下)或GLOBAL QUERY REWRITE(其他模式下)权限。
(2)必须使用基于成本的优化器,基于规则的优化器将被忽略。
(3)必须设置以下两个系统参数:
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
可以通过alter system set,alter session set在系统级或线程级设置,也可以通过在init.ora添加实现。
这里举一个基于函数的索引的例子:
SQL> create index test.ind_fun on test.testindex(upper(a));
索引已创建。
SQL> insert into testindex values('a',2);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select /*+ RULE*/* FROM test.testindex where upper(a)='A';
A B
-- ----------
a 2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=HINT: RULE
1 0 TABLE ACCESS (FULL) OF 'TESTINDEX'
(优化器选择了全表扫描)
--------------------------------------------------------------------
SQL> select * FROM test.testindex where upper(a)='A';
A B
-- ----------
a 2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1 Bytes=5)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TESTINDEX' (Cost=2 Card=
1 Bytes=5)
2 1 INDEX (RANGE SCAN) OF 'IND_FUN' (NON-UNIQUE) (Cost=1 Car
d=1)(使用了ind_fun索引)

3 各种索引的创建方法
(1)*Tree索引。
Create index indexname on tablename(columnname[columnname...])
(2)反向索引。
Create index indexname on tablename(columnname[columnname...]) reverse
(3)降序索引。
Create index indexname on tablename(columnname DESC[columnname...])
(4)位图索引。
Create BITMAP index indexname on tablename(columnname[columnname...])
(5)函数索引。
Create index indexname on tablename(functionname(columnname))
注意:创建索引后分析要索引才能起作用。
analyze index indexname compute statistics;
4 各种索引使用场合及建议
(1)B*Tree索引。
常规索引,多用于oltp系统,快速定位行,应建立于高cardinality列(即列的唯一值除以行数为一个很大的值,存在很少的相同值)。
(2)反向索引。
B*Tree的衍生产物,应用于特殊场合,在ops环境加序列增加的列上建立,不适合做区域扫描。
(3)降序索引。
B*Tree的衍生产物,应用于有降序排列的搜索语句中,索引中储存了降序排列的索引码,提供了快速的降序搜索。
(4)位图索引。
位图方式管理的索引,适用于OLAP(在线分析)和DSS(决策处理)系统,应建立于低cardinality列,适合集中读取,不适合插入和修改,提供比B*Tree索引更节省的空间。
(5)函数索引。
B*Tree的衍生产物,应用于查询语句条件列上包含函数的情况,索引中储存了经过函数计算的索引码值。可以在不修改应用程序的基础上能提高查询效率。

2008年11月14日星期五

Oracle® PL/SQL by Example FOURTH Edition 阅读笔记

C H A P T E R 1 6 --Records
L A B 1 6 . 1
Record Types