2005年03月17日

等地铁


小蔡有一次去一位女同事家作客,这位同事向他抱怨:我们家房子什么都好,可就是建在地铁正上方,每天地铁经过时连床都跟着震,好像地震一样。小蔡不信,就要躺在床上试试看。正巧那女同事的丈夫回来了,小蔡连忙解释:信不信由你,我在等地铁。


厨师证


刚刚在门口,碰到一人,问我要不要办证?办证?从小到大我还真不缺什么证。这哥们儿抬头一看,哟,您是刘仪伟?我说对对对,就是我。他还挺能转弯:那您需要个厨师证吗?


护舒宝刘仪伟


刚开始讨论这个节目的时候,我们制作人曾经有个想法,他说反正是刘仪伟主持这个节目,不如把他的名字也加到节目名字里,叫《刘仪伟夜谭》。这样大家好记,也显示我们以人为本的思想。刚开始我觉得,哟,这好啊,这是种荣誉啊。直到有一天我去了一趟节目组,广告部正在和客户洽谈节目的冠名权,我一听到那两个客户的产品名字,把我吓坏了。要按他们的意思,以后开场白极有可能得这么说:大家好,欢迎大家来到《南极人刘仪伟夜谭》,这个还凑合。还有一个得这么说:大家好,欢迎大家来到《护舒宝刘仪伟夜谭》,我这就算完了。广告部的同事看我面色不好,心情沉重,说那不如换一个外国客户,就避免中文产生的这样或那样的意思。后来他们说了,他们争取去搞定全球最著名的企业来给节目冠名,我一听,什么叫外国话就没有歧义啊,这完全是胡说八道啊。大家听这开场白:大家好,欢迎来到《微软刘仪伟夜谭》。我的天,还不如前头那两个呢。


小蔡如厕


随着我们节目的不断播出,小蔡呢,因为他那种很奇异的,和常人不一样的思维、行为,经常被我们拿到节目里来说事儿,渐渐地,这个形象也就被很多的观众朋友记住了。昨天晚上录完节目,我们节目组全体同事去饭店吃饭。中途,小蔡去厕所方便了一下,回来后发现他裤腿儿那里湿了一片,就问怎么回事儿。小蔡说:唉,别提了,自打《东方夜谭》播出以后,经常遇到这种情况,在厕所方便时,旁边那个人会突然转过身来——哟,你不是《东方夜谭》那个小蔡吗?你普通话得练练了……


同姓恋


早两天去我姐姐家,小外甥女见我就问:舅舅舅舅,为什么你访问刘孜会结巴?我说我没结巴啊。她说:我知道为什么,因为你喜欢她。你看,这简直太冤枉我了。孩子还不依不饶:舅舅,你不能喜欢刘孜。我说是啊,我没喜欢她,我有老婆了。你知道她来了一句什么话:你们俩都姓刘,你喜欢她就是同姓恋。咳,她还自己发明创造了一个词。


白痴


有人问我:白痴这个词是什么意思,这个在下实在不好妄下断言。来录节目之前我无意中听到胖胖和小蔡的几句对话,或许有助于各位对这个词的理解。


胖胖和小蔡玩儿游戏,打赌,赌什么呢,猜胖胖身上有多少钱。只听见胖胖说:小蔡,你只要猜出我口袋里现在有多少钱,我就把90块钱全部都给你。小蔡一听,乐坏了,说:那我试一下,我猜……你身上有70块钱。


半块香皂

有位上海观众来信说他想呼吁相关部门授予某家餐厅卫生先进单位称号,的确,现在能在菜里吃出半块香皂的餐厅真的不多了。


如果挤得下


我们的主编,胖胖同学早几天过生日。我说怎么为人这么不靠谱呢,原来是双鱼座的。节目组要给他定做一个蛋糕,小蔡去蛋糕店。服务员就问他:先生,蛋糕上面留什么字啊?小蔡说了:祝胖胖生日快乐。服务员又问:还需要留点儿别的吗?小蔡想了一下说:祝他早日进入公司高层吧,如果挤得下的话。小蔡是担心蛋糕上写不下那么多字啊。吹蜡烛的时候终于来到了,大家满怀欣喜地打开小蔡定来的蛋糕,一看上头密密麻麻地写着:祝胖胖生日快乐,祝你早日进入公司高层!如果挤得下的话。


结婚证

小蔡:您好,我想预约明天去办结婚证。

刘仪伟:好的,婚前检查你们做过了吗?


小蔡:查过了,她爸是开公司的,家里有房有车。

刘仪伟:嗨,我是说去医院检查!


小蔡:呃……(犹豫,不好意思)也查过了,是男孩儿。

刘仪伟:什么乱七八糟的!小蔡,拜托你下回当托儿的时候专业一点行不行。


代沟

代沟现象越来越厉害。一位母亲对女儿非常生气:这就是现代的年轻人!16岁就交上了男朋友,却忘记了自己母亲32岁的生日。


害羞


最近一项针对北京、上海、广州三市当地居民的随机抽样电话调查表明,上海人比较害羞。不是吗?我就知道在咱们上海,有个女儿问妈妈:爸爸从前害羞吗?妈妈说:要是他不害羞,你现在至少大四岁!


月光下

在很久很久以前,在一个美丽的月光下,有个女生依偎在小蔡的怀中。


女生情意绵绵地问:小蔡,在这么美好的月光下,你现在在想些什么呢?

小蔡想了想,脸涨得通红,害羞地说:其实,我跟你想得一样。


啪!只听见一声清脆的耳光声在夜色中荡漾开来。

之后听见女孩子在说:小蔡!下流!无耻!不理你了!

停电


早几天晚上,节目组开全组大会。突然,停电了。会又很重要,怎么办?买了一大捆蜡烛接着开。开到一半,胖胖好像想起什么,就问了一句:今天,有谁过生日吗?感冒一听,赶紧举手:主编,我过生日我过生日。胖胖说:好,等一下咱们开完大会,你负责把所有蜡烛给吹灭。


生病


现在的孩子懂事都早,吴与同就是,有一天她妈妈病了,浑身没劲儿,躺在床上,说做不了饭了,吴与同一挽袖子,说:妈妈,我扶你去厨房!


女秘书

有资料显示,上海的秘书行业现在很不吃香,一个岗位竟然有68
 
   个人在抢,想当秘书不容易,特别是女秘书。也不知道为什么,和别的行业不一样,现在竟然没有老板愿意要有工作经验的女秘书。

老丈人


小蔡和女朋友认识没多久的时候,经常送女朋友回家。有一次到了家门口,女朋友提醒小蔡:你现在可以吻我,但是随后我得打你一个耳光,因为我爸爸正在窗口看着我们。之后过了一星期,深夜,小蔡又送女朋友回家,在门前难舍难分,深深拥吻。半小时后,女朋友他爸也就是他未来的老丈人打开窗口喝道:小子,放开我女儿!小蔡吓得不轻,但还是鼓起勇气分辩:伯父,我们是真心相爱的。他未来的老丈人怒气冲冲地说:你亲她就亲她吧,还压在我们家门铃上……


益智节目


前天我看一个益智节目,发生一件好玩儿的事儿。有一个选手好不容易冲过前面五关,来到最后一关,摆在他面前的是二十万现金,还有两道问题。主持人就问这个选手,两道题都要回答,你先选择哪一道?


(台下:第二道。)

第二道是吧?好,请听题。请问这件事情是哪一年发生的?!

接吻戏


做主持人,认识不少演艺圈的朋友,有空了也去他们拍片现场看看,我经常注意片场的临时演员。前不久去一个片场,导演正跟临时演员说话:待会儿有场吻戏,你演不演?那位临时演员特高兴:演演演,一定演。导演一回头:场工,把狗牵过来吧!


天的女婿


以前我们看《三国演义》的时候,曾经看到诸葛亮和别人斗嘴,讨论谁才是天的儿子。今天我们把这个问题重新提出来:天的儿子是谁?天的女儿是谁?天的女婿又是谁?在下的答案是这样的,天的儿子叫我材,因为天生我材。天的女儿叫丽质,因为俗话说,天生丽质。


(台下:那天的女婿呢?)

小蔡,不该你发言的时候不要乱发言。天的女婿你不知道?李连杰啊,因为他的老婆就是利智。


不在服务区


自从孙悟空三打白骨精之后,被唐僧遣送回原籍。话说有一天,唐僧在西行的路上又碰到了妖怪,面对两个无能的徒弟,唐僧痛心疾首,这才想起被他赶走的大徒弟孙悟空,他对着天空喊道:


(配音)悟空,快来救为师啊。(回音:啊啊啊啊)

四分之一柱香之后,传来这样一个声音:


(电信回音)您呼叫的用户不在服务区,嘟嘟嘟嘟……

生日礼物


上个月小蔡生日,全组集资给他买了份礼物。想给他个惊喜,所以我们把礼物装在一个大纸盒里。拿给小蔡的时候,盒子底下有点漏水,小蔡一看,就又开始逞能了:你们都别说,我能猜出来。说完伸手指头沾了点儿尝尝:五粮液!大伙都摇头,小蔡又尝了一口:那就是剑南春!大伙还摇头,这时候组里一个女孩儿急了:你们快把小狗拿出来吧,看这盒子……都让狗给尿湿了。


即席赋诗


要说小蔡这生日过的真风光,生日礼物除了小狗,还收到各种贺卡、小玩具、小文具,反正都是些温馨一派的小礼物,贵重礼物,一件都没有。没人肯为小蔡花钱啊,为人失败啊。还好,吃饭的时候,胖胖主编即席赋诗一首,算是安慰了小蔡受伤的幼小心灵。


诗全文如下:

大海啊,你全是水;

骏马啊,你四条腿;

爱情啊,是嘴对嘴;


小蔡啊,你普通话还不如刘仪伟。

女人腰围


节目播出一段时间,观众也反映,怎么什么坏事儿都是小蔡?说实话,小蔡这人挺不错的,还特别怕羞,交女朋友时间不短了,据说到现在连手都没拉过,是吧小蔡?


(台下:没错!)


和女朋友一起出去,还要人家给他制造机会:小蔡,听说男人胳膊的长度和女人腰围一样,你相信吗?一听这话,小蔡明白了:这简单,咱试试不得了,你等我会儿,我回家取尺子去!


小偷


前段时间晚上熬夜录节目,结果家里进了贼,我太太在家,听到有动静,也顾不上开灯,下床抄起扫帚就打,一边打还一边骂:让你回来这么晚,还不打电话,让你学严守一……哦,把小偷当成我了。这一通暴捶,揍得小偷是哭爹喊娘喊救命。邻居听着了,赶紧打110报警,没一会儿,警察来了,一见警察,小偷”哇”的放声大哭,扑上去就握住警察同志的手:谢谢人民警察的救命之恩呐。


小蔡拍戏


小蔡现在出名了。有人找小蔡去拍电视剧了!说得好听点儿叫拍戏,其实就是跑龙套。那天我去他们剧组看小蔡拍戏。刚好碰上拍一场小蔡挨一巴掌的戏,而且是被女主角打的。导演跟小蔡说,假打一下算了。小蔡说,不行,得真打!假打不够逼真。这场戏拍了八次才过,因为小蔡老是笑场。等他们拍完了我就对小蔡说,作为新人,敬业一点儿是好的,但是

不一定非要真打。小蔡说了,不管什么戏,一定真拍,不能蒙乎观众。我还以为小蔡觉悟变高了,后来一打听才知道,什么呀,关键是第二天还有一场吻戏!


修理皮鞋


昨天上班前,妻子对我说:你顺便拿我的皮鞋到你单位旁边的皮鞋店修理一下吧。我赶时间啊,拎起来就走。路上正好碰到邻居,他看着我,惊讶地说:刘仪伟,太过分了,为了不让老婆乱跑,这种手段你都能使出来?


水,水!


那天小蔡跟胖胖一起去喝酒,结果胖胖喝多了,回来倒头便睡。小蔡却睡不着,在一边玩儿电脑。胖胖睡了一会儿,突然坐起来囔囔地说:水,水!小蔡给胖胖倒了一碗水,胖胖接过来一饮而尽,然后在墙上胡乱抓了几把又睡了。又过了一段时间,胖胖又起来嚷嚷要喝水,小蔡又倒了一碗水,胖胖喝后又在墙上胡乱抓了一把。小蔡很奇怪胖胖这是怎么了?为什么老是抓墙啊?于是自己也倒了一碗水一饮而尽,不料,他也在墙上胡乱地抓了起来,嘴里骂道:我的天,怎么这么烫!


魂飞魄散

最近,李少红导演说她的新片《恋爱中的宝贝》是要表现魂飞魄散的爱情,我说小蔡怎么在电影院睡着了呢,原来是魂儿掉了。


不可能完成的任务

听说汤姆?克鲁斯还要再拍第三部《Mission
Impossible》(《不可能完成的任务》),我建议他扮演一位想参加奥运会的中国足球队员。

足球界


小蔡,我有件事情一直想不通,像你这样,又光想挣钱又怕累,水平又臭又不思进取,又喜欢声色犬马的娱乐,啊,像你这么一个特种人才,为什么你不去足球界混他个名堂出来呢?


小蔡:我去过,他们说我做得还不够!

开全


一家足球俱乐部在开全体大会时,队员们在底下自顾交谈,秩序混乱不堪。俱乐部领导只好大声说:谁再讲话,马上出去!无人理会。领导急了,又喊:谁再讲话,扣发工资!这一招也不大管用,只有少数人闭嘴。领导束手无策,最后只看见教练站起来,不慌不忙地说:呃!你们谁要是再讲话,今天晚上不带他去酒吧和夜总会!场内瞬间鸦雀无声。


拍风景


张艺谋和刘德华这两位大牌惺惺相惜,拍完《十面埋伏》以后,老谋子给刘德华一张照片,照片后面写了些夸刘德华的话,还说下一部见。刘德华礼尚往来,也还了一张,写着:与您合作是我的幸福。不过据说后边还有一句:下次多给我点儿戏吧,别老拍风景了。


情侣打架


现在不知道为什么,年轻人的火气都特别大。那天,我在街上看见一对情侣打架,那女孩儿抡胳膊抽男孩儿耳光,一点儿面子都不给男孩儿留,太狠了。不过,更狠的是那男孩儿,他竟然泼了女孩儿一脸水,把女孩儿妆给卸了。


作家萨达姆


美国法律顾问向媒体透露,被美军关押的萨达姆每天都笔耕不辍,并不时向美军看守人员要笔墨和纸张。原来,萨达姆一直是写小说的好手,被抓期间有了时间,当然要继续他的作家生涯。据称,萨达姆的第一本书《我把自由献给你》已经写完,他正在写第二本《我和布什不得不说的故事》,还有几本书也在计划中,它们是:《实话瞎说》、《是谁搞垮了伊拉克?》,还有本长篇自传体小说《玄奘西游我也西游》。


绕口令


第十五届台湾金曲奖上,王菲获得最佳国语女演唱人奖。王菲是这样说的:我会唱歌,这我知道,我对评委对我的肯定,表示肯定。王菲会唱歌,这我们也知道,所以我们对王菲对评委对王菲表示的肯定也表示肯定。嗨,成绕口令了。


暗恋

小蔡以前是暗恋他女朋友的,有一天,他终于鼓足勇气,向他女朋友表白:我喜欢你,你喜不喜欢我哪?


女孩儿很害羞,低着头说:你猜。

小蔡心花怒放,脱口而出:我猜你喜欢我!

女孩儿说:你再猜一次。


坚持这个立场多好,省得现在天天看见小蔡生气。

割发代首


最近贝克汉姆深陷绯闻旋涡,为了表示两人的感情还有戏,贝克汉姆把自己的金发剪下来,辣妹把小贝的金发编到自己的黑发里头。小蔡,这件事情用一个成语应该怎么形容?


小蔡:结发夫妻!

刘仪伟:不对,这叫割发代首!

二十 三十 四十

有一部电影,叫做《二十
三十四十》,说的是在这三个年龄段的女人的故事,挺有意思的。现实中我们也能发现,这三个年龄段的女人,对待婚姻有不同的看法,比方说,如果给这三个年龄段的女人介绍对象,二十岁的会问:他帅吗?三十岁的会问:他事业有成吗?四十岁的直接就会问:他在哪儿?


灯神


话说我们的曼曼和小蔡有一天碰到了一个灯神,灯神说它可以实现他们每人两个愿望,小蔡很高兴,心里盘算着第一个愿望是有一亿存款,第二个愿望是自己当主持人。但是出于礼貌,女士优先嘛,他还是让曼曼先说,于是曼曼对灯神说:昨天的《艺术人生》我没有看到,现在我就要看!于是,灯神就变了个电视机出来,放《艺术人生》,曼曼看着看着就哭上了,一哭就是大半天,没完没了,灯神着急了,问她:快说你第二个愿望吧!再不说朱军老师都该哭了。曼曼大怒:没看我正哭着呢嘛?别捣乱,赶紧走!噌,灯神走了,这下好,小蔡哭上了。


人造美女


中国首届人造美女大赛八月将在北京举行。组委会表示:要把人造美女与自然美女区别开来,这样比较公平!我觉得区别开来也简单,多设几个技术奖项,比如最佳缝合奖、最佳面部抛光奖,对了,还有最佳原材料奖。依照惯例,获奖者都要发表感言。我替最佳人造美女的获奖者虚拟了一封感谢词:没想到自己能获得最佳人造美女奖,我真是太激动了。感谢我的脸蛋百忙之中赶来参加比赛。感谢我的肚子,它也为这次比赛做出了巨大牺牲,我还要感谢我的双眼皮、我的酒窝、我的鼻子、我的眉毛……我的成功和它们的配合是分不开的,这个奖不单属于我个人,更属于我们这个集体。


刚出道


上海一家公司,评选了上海人心中最受欢迎的艺人,女性受访者心目中最受欢迎的艺人是苏有朋,她们说在她们心中,苏有朋永远和他刚出道时一样。刚出道的时候?怪不得男性受访者喜欢的是舒淇。


包月


梁朝伟过生日,开Party,女影迷无数,据说现场不少女影迷想抱他,梁朝伟开玩笑,说要花钱,还得有时间限制。抱一下一秒钟,一百块。结果底下马上有个影迷喊道:大家闪开,我包月。


珠项链


小蔡这个小气鬼,突然大方。给女朋友送了一条珍珠项链,上面有22颗珍珠。小蔡的女朋友非常高兴,问他:为什么项链上有22颗珍珠呢?小蔡回答:和你的年龄一样啊。女朋友当时就急了:你这个糊涂虫啊,你买之前为什么不问问我真实年龄啊?


小龙女


明星的影响力就是大,《神雕侠侣》剧组传出周迅有可能要演小龙女的消息以后,吸引了大量的男士也来应募演员,不知道为什么,他们不是想来演杨过,他们都想演尹志平。


坏事传千里


足球明星贝克汉姆在欧锦赛中踢飞点球的那只足球将被带入太空。消息传开之后出现了一个奇迹,贝克汉姆无师自通学会了一句中国成语,还整天念叨着:好事不出门,坏事传千里。


天下无贼


最近我发现一个奇怪的现象,现在很多男人都很不像话,他们公开宣称”天下无贼”,可是自己却偷偷地在外头”卧虎藏龙”,回到家以后经常遭遇老婆的”十面埋伏”,一旦被发现就成了”大事件”,最后的结果就是老婆出去”环游地球80天”,自己在家里”自娱自乐”。

2005年03月02日

>  主席和小平散步,小平问:租吸,四接桑最同库地丝洒子思青哩?
>
>  主席说:桑板。
>
>  小平又问:有更同库地拉?
>
>  主席沉吟半晌,深吸一口烟说:田田桑板

2005年02月23日

问题描述:
在通常的三层构架下,客户通过Browser请求Web服务器查询数据库,而查询结果是上千条甚至是上百万条记录,要求查询结果传送到客户端浏览器并分页显示。


考虑因素:
1. Web服务器的资源消耗,包括:内存(用来存储查询结果),数据库相关资源(数据库连接对象,ResultSet对象等等);
2. DB服务器资源的消耗,包括游标,会话等等。
3. 网络开销,包括与数据库建立会话,传输查询结果等等。


JDBC中的几个重要Class:

A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false  when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set.

ResultSet是直接在数据库上建立游标,然后通过ResultSet的行位置定位接口来获得指定行位置的记录。当用户通过get方法获取具体纪录的内容时,ResultSet才从数据库把所需数据读到客户端。

Oracle的ResultSet实现似乎会在本地缓存用户读取过的数据,导致内存消耗会随读取数据的增加而增加,这样,如果一次查询并读取海量数据,即使读出数据后马上丢弃(比如直接写入文件),内存消耗也会随查询结果的增加而递增???????


The RowSet interface extends the standard java.sql.ResultSet interface.  A RowSet object may make a connection with a data source and maintain that connection throughout its life cycle, in which case it is called a connected rowset. A rowset may also make a connection with a data source, get data from it, and then close the connection. Such a rowset is called a disconnected rowset. A disconnected rowset may make changes to its data while it is disconnected and then send the changes back to the original source of the data, but it must reestablish a connection to do so.

RowSet是JDBC2.0中提供的接口,Oracle对该接口有相应实现,其中很有用的是 oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet实现了ResultSet中的所有方法,但与ResultSet不同的是,OracleCachedRowSet中的数据在Connection关闭后仍然有效。



解决方案一:直接使用ResultSet来处理

从ResultSet中将查询结果读入collection,缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降。

对上述方法的一种改进是当用户第一请求数据查询时,就执行SQL语句查询,获得的ResultSet对象及其要使用的连接对象都保存到其对应的会话对象中。以后的分页查询都通过第一次执行SQL获得的ResultSet对象定位取得指定页的记录(使用rs.last();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页起始记录)。最后在用户不再进行分页查询时或会话关闭时,释放数据库连接和ResultSet对象等数据库访问资源。每次翻页都只从ResultSet中取出一页数据。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是回缓存所有记录而占用大量内存,同时速度也非常慢。

在用例分页查询的整个会话期间,一个用户的分页查询就要占用一个数据库连接对象和结果集的游标,这种方式对数据库的访问资源占用比较大,并且其利用率不是很高。

优点:减少了数据库连接对象的多次分配获取,减少了对数据库的SQL查询执行。

缺点:占用数据库访问资源-数据库连接对象,并占用了数据库上的资源-游标;会消耗大量内存;



解决方案二:定位行集SQL查询

使用数据库产品的提供的对查询的结果集可定位行范围的SQL接口技术。在用户的分页面查询请求中,每次可取得查询请求的行范围的参数,然后使用这些参数生产取得指定行范围的的SQL查询语句,然后每次请求获得一个数据库连接对象并执行SQL查询,把查询的结果返回给用户,最后释放说有的数据库访问资源。

这种方式需要每次请求时都要执行数据库的SQL查询语句;对数据库的访问资源是使用完就立即释放,不白白占用数据库访问资源。 对特定(提供了对查询结果集可定位功能的)的数据库产品,如:Oracle(rowid或rownum ),DB2(rowid或rownum ()), PostgreSQL(LIMIT 和 OFFSET),mySQL(Limit)等。(MS SQL Server 没有提供此技术。)

下面是在oracle下的查询语句示例:
SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM (…… ) row_ WHERE rownum <= {pageNumber*rowsPerPage}) WHERE rownum_ > {(pageNumber-1)*rowsPerPage}

优点:对数据库的访问资源(数据库连接对象,数据库游标等)没有浪费,这些资源的充分重复的利用。

缺点:对每次分页面查询请求要频繁的从Web容器中获得数据库访问资源(数据库连接对象和数据库游标)并建立连接;要依赖于具体的数据库产品的支持。



事实上方案一只适合中小数据量,海量数据恐怕一定要借鉴方案二。

本文只是抛砖引玉,希望能有更好的方案。


2005年02月19日

1、上学时周末回家,晚饭后烟瘾犯了,打算借口去散步。在门口换鞋时,老爸问我干吗去?我说:“去抽个烟!”结果老爸从我身上搜出一包555,狠狠K了我一顿。

2、一次从妈妈那里出来后到老婆那里去,看见老婆后,习惯性的叫了一声:“妈!”

3、早上上班,发现自行车没气了,于是想叫妈妈推到门外打气。结果我说:“把我的轮胎推出去。”妈妈迷糊了,我笑着连忙改正,结果又说成:“帮我的汽车打点气!”

4、一次我开车,坐我旁边的女同事突然问:“你怎么开车不系安全套的?”

5、一次在厕所方便,没纸了。就对老婆说:“把擦纸的屁股拿来!”

6、一个女孩失恋了,我劝她:“两条腿的蛤蟆不好找,三条腿的男人有的是啊!”

7、两个人斗嘴,突然旁边一人冒出来一句:“你们真是吃饱了事情没饭做啊!”

8、同事和人争执,急了张口来了句:“你以为我吃饭长大的啊?”我一直纳闷他到底吃什么长大的。

10、边吃饭边看帖子,边念经典的给老婆听,笑死她了,于是她对我说:“吃完饭再看吧,不然脑子消化不良!”

11、一次问一个近视的人眼睛多少度,他本想说400度的,结果一出口就成了400瓦,肚子痛死!

12、一次教育局领导视察课间操,结束后,本应由体育老师宣布“解散”,但一时情急,忘词了,憋了半天,大喊:“撤退!”

13、一体育系学生上实习课时,很多老师听课,他太紧张,最后要解散队伍时,一时脑子空白,硬憋了句:“全体注意,立正!闪!!”

14、一群同学去郊区同学家玩。我们买了几个西瓜放在厨房。叫一个同学去拿刀切,好久不见回来,正疑惑间,他手里捧着个切开的瓜来了,惊慌地说:我把南瓜给切了。大家狂笑,但两秒钟后,大家更是笑翻,原来他手里捧着个冬瓜!

15、高中有一老师姓江,酷似罗家英(演大话西游唐僧的),我去问他问题,脱口而出:“唐老师,这题……”

16、有一同事,有天我开车在路上车胎没气了,问哪里有充气的,同事说:“街上到处都是打胎的啊!”

17、一次去麦当劳买甜桶,终于轮到了,我迫不及待的说:“给我两个滚筒!”没想到那服务员对我大声的说;“两个滚筒,四块钱!”

18、俺碰到一个心仪已久的女氦从澡堂里出来,想套近乎,憋了半天憋出一句:“你洗澡啊,里面男的多不多啊?”

19、有次去吃饭,结帐时对老板说:“老公!结帐!”当时老板娘就在旁边……

20、有一老师通宵麻将,见黑板没擦,大怒:“今天谁做庄啊?黑板都不擦!”

21、有一次我大叔见我小姑在搽大宝,突然大叫一声:“你皮肤这么好,还用护舒宝啊?”

22、刚买了房子,兴奋中给一哥们打电话:‘我买房啦,不过就一毛房(忘说“坯”字了)还得装修。”哥们说:“就只有一厕所吗?那你住哪里啊?”

23、本老师留下做作业,不会做就抄别人的,,然后去办公室交作业,看见老师说:“我抄完了!”

24、某君考驾驶证那天,特别紧张。考官为难他,叫他在路边有一个消防栓的地方停车。此君特紧张的说:“报告消防栓,路边有一个考官,不允许停车!”

25、公司养一狗叫:小白。某天大家逗狗,同事甲拿着一饼干对狗说到:“小白,整个办公室只有你喂我哦。”三秒钟后,整个办公室暴笑!




2005年01月24日

>      >           在德国法兰克福发行的一份报纸(FrankfurtAllegemeine)上,
>  >           刊登了一篇真实事件,汽车小偷跟失窃车主之间有趣的通信。
>  >           我们可以发觉,在德国拥有汽车的成本主要不在于车辆本身,
>   >           而是使用时所需的维修、税金及保险费。
>  >
>  >           可敬的Brauen先生∶
>  >           您一定已经发觉,您那辆停在Goethe街的蓝色小轿车被人偷走了!
>  >           我就是那个偷车的人,为了表示对失主的情谊,
>  >           我想向您提出一个友好的建议∶
>  >           我在您的车里发现一个装有许多信件和卷夹的皮包。
>  >           这些对我而言是毫无意义,但是对于您呢,我看是相当重要的。
>  >           如果您肯将您这部汽车的各种证件交给我,
>  >           我也将会把这些东西放在Goethe街4号的住宅后面给您。
>  >           您要给我的东西也可以放在那个地方。
>  >           致上亲切的问候
>  >           您的汽车小偷于03/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的小偷先生∶
>  >           我接受您的建议,因为我确实迫切需要那些资料。至于我的(亦即是
>您的)
>  >           那辆蓝色四人小轿车的各种必须证件包含保养数据卡,都将在今晚24
>点
>  >           之后放在您所指定的Goethe街4号住宅后面。
>  >           顺致崇高的敬意
>  >           MarkusBrauen 于05/04/2001法兰克福
>  >
>  ——————————————————————–
>  >
>  >           两天后  车子已过户………..
>  >
>  >           可敬的Brauen先生∶
>  >           本周我得支付高达246马克97芬尼的下一期汽车税,是吗?
>  >           致上亲切的问候
>  >           您的汽车小偷于07/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的小偷先生∶
>  >           我不得不十分抱歉地通知您,下一期的汽车税您一定得在本周内到税
>务所
>  >           缴纳,拖延只会使罚款加重。
>  >           顺致崇高的敬意
>  >           MarkusBrauen 于09/04/2001法兰克福
>  >           附记∶顺便再提醒您,不要忘记到Niekulistars保险公司去缴纳汽车
>保险
>  >           费。
>  >
>  ———————————————————————
>  >
>  >           可敬的Brauen先生∶
>  >           对不起,我又要写信打扰您了,不过这辆小汽车竟然每公里消耗
>12-14升的
>  >           无铅汽油,另外左边后轮也漏气了!
>  >           顺致崇高的敬意
>  >           您的汽车小偷于10/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的小偷先生∶
>  >           上封信中我忘记告诉您,我的(亦即是您的)那辆蓝色四人小轿车
>  >           极需要更换新轮胎,至于耗油量确实是您所提的那么多,
>  >           您想必已经知道那部汽车其实远比她的外观老旧许多,
>  >           她也许常常会使您的工作半途而废。
>  >           为了您的利益起见,我想劝您尽快安装新的汽阀。
>  >           致上亲切的问候
>  >           MarkusBrauen 于12/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的Brauen先生∶
>  >           税务所寄通知给我,要我在十天之内缴交698马克57芬尼的汽车税连
>  >           带罚款。
>  >           此外,坐垫都坏了,右转方向灯也无法正常运作。
>  >           另外,您可以介绍我一间比较便宜的车库吗?
>  >           当然要有暖气配备的,因为现在也已经不容易发动引擎了。
>  >           我目前的车库一个月要支付50马克呀!
>  >           顺致崇高的敬意
>  >           您的汽车小偷于18/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的小偷先生∶
>  >           我想您除了确实缴纳汽车税之外,别无他法。
>  >           昨晚我想起一件事,那就是煞车帮浦也都失效了,
>  >           或许您也已经发觉了,不过还是建议您检查一下。
>  >           此外,您必须在天气不好的时候(现在天气就不太好),
>  >           把车蓬修理一下。至于车库,我恐怕提不出什么好建议,
>  >           因为我总是把车停在外面的。
>  >           致上亲切的问候
>  >           MarkusBrauen 于23/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的Brauen先生∶
>  >           自从偷了您的汽车之后,我吃尽了苦头。更不幸的是,昨天差速器也
>坏
>  >           了。
>  >           我是个诚实的小偷,您叫我怎么能承担得起这些费用呢?我想请求您
>把
>  >           这辆汽车收回,我愿意支付一笔赔偿费好了。但愿您同意我的这个建
>议。
>   >           顺致崇高的敬意
>  >           您的汽车小偷于25/04/2001法兰克福
>  >
>  ———————————————————————
>  >
>  >           可敬的小偷先生∶
>  >           十分遗憾,我们之间的友好通信因为您的残酷决定而结束了。
>  >           由于您偷走了我的(亦即是您的)汽车,
>  >           才使我真正了解到上帝为什么要给我两条腿。
>  >           我又开始漫长的徒步旅行,而我多余的脂肪已经减少了好几公斤,
>  >           我的心脏也开始恢复正常,我完全忘记我的心血管疾病,
>  >           我刚刚做完的健康报告也比起以前进步许多。
>  >           另外,我的经济状况亦大大好转。把汽车收回来!?
>  >           我想也没想过!我坚决拒绝您的提议,即使您向我提出控告也可以。
>
>  >           再者,我是从来不要任何偷来的东西的。
>  >           致上亲切的问候
>  >           MarkusBrauen 于28/04/2001法兰克福


                                

2005年01月21日

<第一个笑话>
> >
> >   有一个老头,正在草地上放羊,忽然走来一个年轻人,年经人走到老头面前说:

> > 老先生,我可以为您服务,我将告诉您您的这群羊有几头,作为酬劳您需要给我一头
> > 羊。
>
>
> >   老头还未作答,年青人就开始了工作,年轻人用笔记本电脑无线上网,链接上
> > NASA的内

> > 部网,调动低轨道卫星,把卫星遥感成像的图片再通过软件分析,数十分钟后,年轻
> >
人再次走到老头面前:老先生,您的羊群共有763头。说完后他抱起一只羊就要走。
> >
> >
  老头这时叫住了年青人:年青人,如果我能猜出你就职的公司,你可不可以把酬
> > 劳还给我?
> >
>
>   可以,年轻人答。
> >
> >   你是麦肯锡公司的,老头说。
> >

> >   年轻人很惊讶,您怎么知道?
> >
> >
  老头笑了:因为你具有该公司咨询人员的所有特点啊,第一.你不请自来。第二.
> >
你告诉我的分析结果是我本就知道的。第三.你抱走的不是羊,而是我的牧羊犬。
> >
> >



<第二个笑话>
> >
> >
  上周末,我去一间熟悉的西餐厅吃晚饭,发现餐厅内部刚装修过,餐厅服务生的
> > 装束也有所改变。
> >

> >   我发现服务生们上衣夹克的口袋里都多放了一把勺子。于是我叫来相熟的亨利,
> > 向他打听最近的变化。

> >
> >   亨利告诉我,餐厅老板最近请了埃森哲公司作业务流程重组的咨询,以改进餐厅
> >
的工作效率和服务质量。
> >
> >   埃森哲的咨询顾问经过两个礼拜的现场工作,发现33.333%的餐桌在就餐过程中

> > 都会发生一次勺子掉在地上的情况。而以往服务生需要单跑去厨房一次给客人换干净
> >
勺子。如果在服务生的夹克口袋里放一把备用勺,则他们不必单独跑一次厨房,可以
> >
在下次上菜时顺路换掉勺子,这样可以将服务生的劳动生产率提高17.365%。
> >
> >
  正说着,我旁边的桌子响起叮当一声:他们的勺子掉地上了。只见亨利从容地从
> > 口袋里拿出备用勺,及时给客人换上。
>
>
> >   看到这个场景,我对埃森哲公司的咨询建议相当佩服。
> >
> >
  这时,我又留意到所有服务生西裤的拉链外有一根很细的绳子,其质地和隐性胸
> > 罩带一样,所以较难发现。
> >

> >   于是,我又向亨利提出这个新问题:“你们这根细绳儿是干嘛用的?”亨利环顾了
> >
一下,将身子倾斜过来,小声说道:“好眼力!不是每个人都象您这样观察入的!”
> >
> >
  亨利接着说:“埃森哲公司通过对餐厅工作流程的现场观察和数据分析,发现服
> >
务生每班次平均要小便5.125次,而每次小便完平均要花1.306分钟洗手和烘干手。埃
> >
森哲的顾问建议我们在那儿上面系上这根绳子,以后每次小便直接把自己那活儿拉出
> >
来,可以避免手接触到,这样就可以省去洗手和烘干的麻烦,既提高服务生的劳动生
> > 产率,又节约餐厅的水费和电费...”
>
>
> >   听完亨利的介绍,我对埃森哲公司更敬佩了。
> >
> >
  不过,我还有一点小小的疑问:“亨利啊,你们可以用绳子把自己那活儿拉出
> > 来,但是
> >
怎么能不用手把它给放回去呢?”
> >
> >
  亨利又一次谨慎地环顾左右,将身子倾得更低,用更小的声音对我说:“我不知
> > 道其他
> >
人是怎么解决的,但我是用的那把勺子...”





The previous article introduced the basic concept about Oracle Text. Now, let’s turn to the real world and show you an example. This example will let you search on multi-column of a table base on multi-language. In order to search on multi column, we  should use MULTI_COLUMN_DATASTORE, and in order to search multi language, we should use MULTI_LEXER which is a slot for special language lexer. Through this example, you will get a clear understanding about Oracle Text.

First, we will extend the simple in the previous article to have more column, and  insert some demo data into it:

DROP TABLE SEARCH_TEST CASCADE CONSTRAINTS ;

CREATE TABLE SEARCH_TEST (
  ID              VARCHAR2 (30)  NOT NULL,
  TITLE                  VARCHAR2 (80),
  LONG_DESCRIPTION       VARCHAR2 (1000),
  SHORT_DESCRIPTION      VARCHAR2 (100),
  KEY_WORDS              VARCHAR2 (425),
  LANG                VARCHAR2 (3),
  DUMMY_COLUMN1         VARCHAR2 (5),
  DUMMY_COLUMN2         VARCHAR2 (5),
  DUMMY_COLUMN3         VARCHAR2 (5),
  PRIMARY KEY ( ID )  );


insert into SEARCH_TEST (ID,TITLE,LONG_DESCRIPTION,SHORT_DESCRIPTION,KEY_WORDS,LANG) values(1,’tsunami hit the eaten asia’,'DEC. 26 2004, the tsunami hit the easten asia and cause great damage.’,'tsunami hit the eaten asia’,'tsunami’,'eng’);
insert into SEARCH_TEST (ID,TITLE,LONG_DESCRIPTION,SHORT_DESCRIPTION,KEY_WORDS,LANG) values(2,’海啸袭击东南亚’,'2004年十二月二十六号,海啸袭击东南亚,造成巨大破坏’,'海啸袭击东南亚’,'海啸’, ‘chi’);


Now, maybe you will confuse about the usage of column LANG, DUMMY_COLUMNX. Do not worry, when you reading on ,you will know.

Then, we will create some preference , which will be used to create the index.

In order to search on multicolumn, which also mean create index on multi column ,we should use MULTI_COLUMN_DATASTORE. In Oracle Text, the columns the index created on can be different with the content of index come from. The real content of Index is control by DATASTORE object. In our example, we will create a  MULTI_COLUMN_DATASTORE preference which will read the content from column TITLE, SHORT_DESCRIPTION, LONG_DESCRIPTION and KEY_WORDS. While creating index, we can create index on any column ,here we will create on a dummy column.

To search multi language content in these column, we should use MULTI_LEXER . MULTI_LEXER is a slot for special language lexer. You should create one language specific lexer for every language , then plug them into MULTI_LEXER. While indexing, the MULTI_LEXER will use the right lexer according to the lang in the language column , which should be specified while creating index.

Oracle Text use functions in package “CTX_DDL” to create preference, following is the PL/SQL of creating preference:

begin
    ctx_ddl.drop_preference(‘my_global_lexer’);
    ctx_ddl.drop_preference(‘my_english_lexer’);
    ctx_ddl.drop_preference(‘my_chinese_lexer’);
    ctx_ddl.create_preference(‘my_english_lexer’, ‘basic_lexer’);
    ctx_ddl.set_attribute(‘my_english_lexer’, ‘index_themes’, ‘yes’);
    ctx_ddl.set_attribute(‘my_english_lexer’,'theme_language’, ‘english’);    
    ctx_ddl.create_preference(‘my_chinese_lexer’, ‘chinese_vgram_lexer’);
    ctx_ddl.create_preference(‘my_global_lexer’, ‘multi_lexer’);
    ctx_ddl.add_sub_lexer(‘my_global_lexer’, ‘default’, ‘my_english_lexer’);
    ctx_ddl.add_sub_lexer(‘my_global_lexer’, ’simplified chinese’, ‘my_chinese_lexer’, ‘chi’);

     ctx_ddl.drop_preference(‘my_multi_datastore’);
    ctx_ddl.create_preference(‘my_multi_datastore’, ‘MULTI_COLUMN_DATASTORE’);
    ctx_ddl.set_attribute(‘my_multi_datastore’, ‘columns’, ‘TITLE,SHORT_DESCRIPTION,LONG_DESCRIPTION,KEY_WORDS’);
    
    commit;
end;

Next, we will use the preferences we created before to create the index:

create index my_multilanguageIndex on SEARCH_TEST(DUMMY_COLUMN1)
    indextype is ctxsys.context
    parameters (‘DATASTORE my_multi_datastore
        FILTER CTXSYS.NULL_FILTER
        LEXER my_global_lexer language column LANGUAGE_ID’);



OK, now we can use Query Operation in SQL to search content.

SQL> select id, score(1) score from citisg_user.CITI_LITESEARCH_TEST where CONTAINS (dummy_column1, ‘tsunami’,1) > 0 ;
id     score
—-   ——
1       14

SQL> select id, score(1) score from citisg_user.CITI_LITESEARCH_TEST where CONTAINS (dummy_column2, ‘海啸’,1) > 0 ;
id     scroe
—- ——–
2       12



Tips:

you should make sure the charset of content is same as the charset of oracle. Otherwise  you should use charset_filter to filter them.





2005年01月20日


Understanding Oracle Text:

Oracle Text use index to support searching. There are three different index types: Context, Catalog and Ctxxpath. They are used all for document indexing, but each has a different functionality.

Context index is a “domain” index used for fast retrieval of unstructured text. DML processing on a Context index is deferred. The actual index updates do not take place until an index SYNC is performed.

Catalog (CTXCAT) index is an online, “catalog” index, efficient for searching between small, simple text fields and with queries using some structured criteria, (usually numbers or dates). This index type supports only a basic functionality provided in a Context index. A Catalog index has all the characteristics of the normal database index.

Ctxxpath index is a special index installed during an Oracle Text install. This index uses Oracle Text code and can be created only on sys.xmltype columns. It is used to speed up certain queries using the existsnode method.

An Oracle text index can be created on the following column types: CHAR, VARCHAR, VARCHAR2, LONG, LONG RAW, BLOB, CLOB or BFILE.

Text index will store words and the documents in which these words occur. Oracle Text create an Index through following process:

 

The indexing process is managed in several stages called “classes”. Defined classes on the Oracle 8.1.7.2 database are:

SQL> select * from ctx_classes;
 
CLA_NAME                       CLA_DESCRIPTION
—————————— —————————–DATASTORE    Data store Class
FILTER                          Filter Class
SECTION_GROUP                   Section Group
LEXER                           Lexer Class
WORDLIST                        Word List Class
STOPLIST                        Stop List Class
STORAGE                         Storage Class
INDEX_SET                       Index Set

Datastore is a document data selector table from which the CTX engine reads column data and returns document data.

Filter takes the document data from the datastore class and filters it to readable text.

Sectioner takes a text format, as input, and generates two outputs (the section boundaries and plaintext).

Lexer gets plaintext from the sectioner and splits it into words (discrete tokens).

Every class has a defined list of objects, which are only templates.Instead of directly using objects, we are creating a “preference” from one of the object templates, which is further customized by setting “attributes”.

When we create the Oracle Text index, the indexing engine will read the defined preference for the index and invoke the attribute for each indexed document.

After creating Index, we can search the context using Oracle Text Query operators. Following is an example using CONTAINS operate to searching on CONTEXT index:

select id, score(1) score from citisg_user.CITI_LITESEARCH_TEST_STATIC where CONTAINS (doc_url, ‘tsunami’,1) > 0


Check Oracle Text installing:

Oracle Text is a part of Oracle installation. After installing, Oracle Text will create a role — CTXAPP, and an user — CTXSYS. All of the Oracle Text index information is kept in the database repository under user CTXSYS.  In order to manipulate Oracle Text, you should have the permission of CTXAPP, and some of operations even need you be CTXSYS user.

We can check for the existence of the objects under CTXSYS schema and the version of Oracle Text:

SQL> connect ctxsys/ctxsys
Connected.
SQL> select * from ctx_version;
 
VER_D
—–
8.1.7

SQL> select * from ctx_objects;
 
OBJ_CLASS           OBJ_NAME             OBJ_DESCRIPTION
—————   ——————- —————————————–
DATASTORE         DIRECT_DATASTORE      Documents are stored in the column
DATASTORE         DETAIL_DATASTORE      Documents are split into multiple lines
DATASTORE         FILE_DATASTORE        Documents are stored in files,column is file name
DATASTORE         URL_DATASTORE         Documents are web pages, column is URL
DATASTORE         USER_DATASTORE        Documents are stored in the column
DATASTORE         NESTED_DATASTORE      Documents are stored in a column in the nested table
DATASTORE     MULTI_COLUMN_DATASTORE    Documents are stored in multiple columns
FILTER            NULL_FILTER           Null filter
FILTER            USER_FILTER           User-defined filter
FILTER            CHARSET_FILTER        character set converting filter
FILTER            INSO_FILTER           filter for binary document formats
FILTER            PROCEDURE_FILTER      Procedure filter
SECTION_GROUP     NULL_SECTION_GROUP    null section group
SECTION_GROUP     BASIC_SECTION_GROUP   basic section group
SECTION_GROUP     HTML_SECTION_GROUP    html section group
SECTION_GROUP     XML_SECTION_GROUP     xml section group
SECTION_GROUP     NEWS_SECTION_GROUP    news section group
SECTION_GROUP     AUTO_SECTION_GROUP    auto section group
LEXER             BASIC_LEXER           Lexer for alphabetic languages
LEXER             JAPANESE_VGRAM_LEXER  V-gram lexer for Japanese
LEXER             KOREAN_LEXER          Dictionary-based lexer for Korean
LEXER             CHINESE_VGRAM_LEXER   V-GRAM lexer for Chinese
LEXER             CHINESE_LEXER         Chinese lexer
LEXER             MULTI_LEXER           Multi-language lexer
WORDLIST          BASIC_WORDLIST        basic wordlist
STOPLIST          BASIC_STOPLIST        basic stoplist
STOPLIST          MULTI_STOPLIST        multi-language stoplist
STORAGE           BASIC_STORAGE         text-index storage
INDEX_SET         BASIC_INDEX_SET       basic index set


An existence and the status of Text index is checked via user_indexes view:

SQL> select index_name name, index_type “TYPE 1″, ityp_owner “OWNER”,ityp_name “TYPE 2″, domidx_opstatus   status from user_indexes where ityp_name=”CONTEXT”

NAME          TYPE 1       OWNER        TYPE 2       STATUS
————  ———— ———— ———— ——–
KB_INDEX      DOMAIN       ARTIST       CONTEXT      VALID
WEB_TEXT      DOMAIN       WEB_ARTIST   CONTEXT      VALID
TEST_IDX      DOMAIN       CTXTEST      CONTEXT      INVALID
WEB_TEXT_GER  DOMAIN       WEB_ARTIST   CONTEXT      VALID

We have four Text indexes defined in the database. One of them is invalid.The following select will provide information about indexed columns and indexed documents:

SQL> select IDX_OWNER#,IDX_NAME,IDX_TABLE#,IDX_KEY_NAME, IDX_DOCID_COUNT from DR$INDEX;

IDX_OWNER# IDX_NAME              IDX_TABLE#  IDX_KEY_NAME             IDX_DOCID_COUNT
—————————————————————————————
       107 KB_INDEX            274239       ID,DOCU                   99014
       108 WEB_TEXT            276487       PRODUCT_DETAIL            99332
        81 TEST_IDX            191146       NR                        2
        97 WEB_TEXT_GER        238978       PRODUCT_DETAIL            97368

Listing content for the WEB_TEXT_GER index:

SQL> select token_text from ARTIST.DR$WEB_TEXT_GER$I;

TOKEN_TEXT
—————-
900782
387869
MANTEL
124
221
ANDEREN
EF
26.17
150005
AUFLOESUNGEN



Using Oracle Text:



Following is the standard steps to use Oracle Text searching engine :
1. Create the table that can support oracle text;
2. According to the source you will search on ,create the appropriate preference;
3. using preferences , create index on column you will searched  on;
4. use SQL searching the content;

following is a simple example :

First, we create a table whose column will be searched, and insert some data:

CREATE TABLE SEARCH_TEST (
  ID              VARCHAR2 (30)  NOT NULL,
  TITLE                  VARCHAR2 (80),
  DESCRIPTION       VARCHAR2 (1000),
  DUMMY_COLUMN1         VARCHAR2 (5),
  PRIMARY KEY ( ID )  );

insert into SEARCH_TEST (ID,TITLE,DESCRIPTION) values(1, ‘tsunami hit the eaten asia’,'DEC. 26 2004, the tsunami hit the easten asia and cause great damage.’);


Next, because it is a simple index, we will use predefined preference.

Then, create the index on the column “TITLE”:
  create index citisg_user.my_simpleindex on citisg_user.CITI_LITESEARCH_TEST(title)
    indextype is ctxsys.context
    parameters (‘DATASTORE CTXSYS.DEFAULT_DATASTORE
        FILTER CTXSYS.NULL_FILTER
        LEXER CTXSYS.DEFAULT_LEXER’);


Last, you can search the content in title column:

SQL> select id, score(1) score from citisg_user.CITI_LITESEARCH_TEST where CONTAINS (title, ‘tsunami’,1) > 0 ;

id         score
——–   ——-     
1             5












2005年01月11日

一天,在给一男客户办理完取款业务后,我交待说:请您把卡收好.再看,发现客户手包拉链没
拉好,又交待说:请您把拉链拉好.客户立即低头查看,周围同事笑成一片

我们行,一次一个客户不会用取款机,咨询员教他使用,咨询员把卡放到取款机里后,对客
户说,您在这输下密码~~哪知客户低下头,对着电脑屏幕轻声说了他的一卡通6位取款密
码,客户把“输密码”给听成了“说密码~~”,咨询员当场-
-|||||

刚刚开始学临柜开汇票时,有两客户各自拿了一张五拾万和三万的汇票同时来办理,结果三
万的先办好了,五拾万的客户有点急:为什么我的还没好?!我马上很认真地和他讲:对不
起,先生,因为你的金额比较大,比他的大多了,所以会比较慢一点哦!结果我话音未落,
整个营业厅的人都冲着我愣了半天,然后就是一片大笑中。。。。晕,我呢,早就找不到
了!呵呵,挖地洞去了啦!
还是这个哥们,作会计业务总是不平帐,耽误同事下班时间,一日同事基本搞定,但其美元
还未平,这哥们不慌不忙大唱“那有不平那有我,那有不平那有我………”

有一次,刚刚接完小女儿的电话,电话又响,前面都正常,不知怎么我突然说:“你要乖一
点哦。”电话那边沉默,周围同事笑倒一片。

刚开始免填凭条时,一客户来办理存款业务,当业务办完后,我用双手凭条递出,恭恭敬敬
的说:“请在下面的横杠上写下您的取款密码。”(应该是名字)

一日时逢中午饭点,一同事掂记着中午只有米饭,但想吃面条。客户来办理取款业务,临走
时,该同事十分体贴的说:“请拿好您的面条,欢迎下次再来。”(应该是请拿好您的现
金)

刚用上排队机时,一同事着急上厕所,但这时有一客户直接到了该同事的窗口,想要办理业
务。没办法。该同事只好让其在排队机上抽个号,于是说道:“请您在厕所里抽个号,等叫
号后再办理业务,谢谢。”

请您到填单台填写一下XXX单。被讲为请您到天文台填写一下……请您到吧台填写一下……

做久了储蓄,突然出来做大堂经理,在网上银行替客户购买基金时,指着小键盘,想让客户
输入密码,却字正腔圆的冒出一句:“请在这里签名。”汗!!!!

一个超搞笑,让我笑晕的笑话一客户在取款机取款,操作不当吞卡了,客户异常着急,立即
到窗口满脸通红地问:“同志,我的卡把机器吞了!怎么办?”窗口的哥们听后不仅没笑,
反而异常镇静地对客户说:“我说怎么今天早上清机的时候发现少了一台机器呢,原来是被
你的卡吞了!”全体同事暴笑

有一次,一个客户输密码输了n遍,最后终于对了,我同事是位大姐,就对客户说:”密码可不能
忘,忘了就麻烦了,今天晚上回家别看电视,把它背熟了.

俺科室有个MM爆出经典名句:“王先生,请问您贵姓?”,全科室的人都晕了~~

上次一同事mm打电话时,情急之下竟然说:”刚才是一位男先生接的电话.”大家皆笑倒.

有一次接手机,是我哥打来得,习惯性的说了句“您好,c行。”哥先是一愣,然后回了
句:你好,我是c行他哥。

原来在前台办业务时,请客户在金额边上补上”小写”;将单子收回时,发现客户并没有写上小
写金额,刚想追问,又发现她在签名处补加上了”小姐”两字…

我行传播很广的的一个笑话,
经办员:“您好,请问您办什么业务?”
客户:“哦,我存一个死期(整存整取)!”
经办员:“那请问您死多久?”
客户:“嗯,死一年!”

In Weblogic server6.1, we want to implement compression filter in order to increase the preformance. But, we encounter a big problem which may make the compression filter unfeasible.


This problem is the unmatched sequence of compression/decompression and encoding/decoding between appServer and browser side.


At browser side, regardless which kind of browser you use,  the browser will decompress the http body first if the head “content-encoding” is “gzip”. Then, the browser will read the decompressed content as charset set by head “content-type”.


At AppServer side, which is weblogic6.1 here,  our compression filter will compress the content first. Then, weblogic6.1 will encoding the compressed content to charset which our jsp claimed.


So, the flow is like following, which is unmatched:
             decoding    <– decompressing    <=======      encoding <– compressing


The result is that, if the charset is not default charset, i.e.ISO8859-1,  the compressed content will be encoded which will destroy the gzip format. For example,  the gzip content should begin with the magic code 31, 139, but, if jsp set the charset to UTF-8, two bytes
“31,139″ will be encoded to  three bytes “31, 194,139″. When the browser get the response , it found the first two byte is not the correct gzip magic code and show the blank page.



here is the fragment of servletresponseImpl class  picked from weblogic’s sourefile:

    public void setHeader(String s, String s1)
    {
        if(isCommitted())
            return;
        if(s1 == null)
            s1 = “”;
        if(s.equals(“Content-Type”))
        {
            int i = s1.toUpperCase().indexOf(“CHARSET”);
            if(i != -1)
            {
                String s2 = null;
                int j = s1.indexOf(‘;’, i);
                int k = s1.indexOf(‘=’, i);
                if(j == -1)
                {
                    if(k != -1 && k < s1.length())
                        s2 = s1.substring(k + 1).trim();
                } else
                if(k != -1 && k < j)
                    s2 = s1.substring(k + 1, j).trim();
                s2 = HttpParsing.StripHTTPFieldValue(s2);
                if(s2 != null && s2.length() != 0)
                    setEncoding(s2);
            } else
            {
                String s3 = outputStream.getOutput().getOutput().getEncoding();
                if(s3 != null && !BytesToString.is8BitCharset(s3))


=======see here ==========>  setEncoding(“ISO-8859-1″);


            }
        }
        if(s.equalsIgnoreCase(“Content-Length”))
            try
            {
                setContentLength(Integer.parseInt(s1.trim()));
                return;
            }
            catch(NumberFormatException numberformatexception) { }
        headers.setHeader(s, s1);
    }



I think what weblogic6.1 done is correct, because wls should make sure that the response is really encoded as declared in response header.  But, it should offer a place/point to let the hook program to compress the encoded content.


following is a thread on bea dev2dev:
                    http://forums.bea.com/bea/thread.jspa?threadID=200079650