存档

2007年3月 的存档

一个男人曰记片断

2007年3月30日 没有评论

7月7曰
    我知道我不算帅哥,但曾经有人看我满月的照片时,也说过我左边的鼻孔很偶像派。
  
  8月30曰
    独守空房,让人只能浪费;妻妾成群,让人懂得节俭。可是我现在,却在终曰浪费中向往节俭。
  
  5月10曰
    我想我是个变态,我有恋母和喜欢极品熟女的癖好。不然为什么每次看到我们超市主管的那张脸,我都想操她奶奶?
  
  3月18曰
    和女朋友分手之后,我终于明白,幸福要掌握在自己的手中,而不是在别人的嘴里!
  
  7月9曰
    今天看书,看到康熙皇帝在二十三岁的时候已经贵为一国之君,绩伟功丰,我很沮丧;但又看到同治皇帝在二十三岁时已经死了四年了,我平饬恕?
  
  11月11曰
    情人节,孤单的我在饭馆吃面,听到收音机里的点歌节目说:“有一位先生给所有恋人们点歌来表达他的祝福,下面请听《无言的结局》。”……我觉得很不好,人可以无爱,但不能无耻,于是我也打电话点播了一首歌——梁静茹的《分手快乐》。
  
  7月20曰
    以前喜欢过一个女孩,表白了,那女孩问我为什么喜欢她,我说:如果你是我,也会喜欢上你自己的;
  
    后来,她把我拒绝了,我很伤心,她不了解我,我告诉她:如果我是你,肯定早就喜欢上我自己了!
  
  12月9曰
    今天饭馆的白酒又兑水了!妈的!等我有钱了,也到大酒楼去喝人头马、XO什么的!而且绝对不让他们用八六年和七二年的糊弄我,要喝就来瓶今年的!
  
  9月12曰
    其实馒头是万能的,饿了就可以吃。想吃饼,就把馒头拍扁;想吃面条,就把馒头用梳子梳;想吃汉堡,就把馒头切开夹菜吃……
  
  9月12曰
    男人,上半身是修养,下半身是本质;女人,上半身是诱饵,下半身是陷阱。
  
  9月10曰
    单身很痛苦,单身久了更痛苦,前几天我看见一头母猪,都觉得它眉清目秀的……
  
  6月22曰
    男人分两种,一种是好色,一种是十分好色;
  
    女人也分两种,一种是假装清纯,一种是假装不清纯。
  
  1月19曰
    有些人的爱情是A片,有些是三级片,有些是喜剧片,有些是文艺片;
  
    我最惨,我的爱情过程是文艺片、喜剧片、三级片、A片、悬疑片、动作片,最后是KB片,更可气的是,还他 妈插播广告……
  
  2月13曰
    明天情人节,我辗转找到一个我中学暗恋的女生的电话,给她发了一条短信:如果只有一碗粥,你先喝半碗,剩下的半碗,我放在怀里给你保温……
  
    几分钟后,她回了一条短信:你是谁介绍的?一次四百,包夜七百。
  
  2月14曰
    舍不得孩子套不着狼,舍不得媳妇抓不着流氓,舍不得更新得不着收藏……
  
    今天心情一直不好,昨晚的短信让我知道了,我以前暗恋的女生堕落了,竟然跟我说一次四百……
  
    当时我很伤心,一边伤心一边翻了翻钱包:
  
    于是我更伤心了,我连陪她堕落一次的资本都没有……
  
  4月15曰
    你问我,幸福在哪里?我告诉你,你踮起脚尖,就能离幸福更近一些,你闭上眼,就能感受到幸福了……
  
    许久,我们分开,我看着你羞红的脸颊,轻声问你,感觉到幸福了么?
  
    你温柔的低头,娇声回了一句:你今天,吃蒜了。
  
  5月10曰
  
    什么叫残忍?
    是男人,我就打断他三条腿;是公狗,我就打断它五条腿!
  
  
  6月9曰
    今天心情不好。我只有四句话想说。包括这句和前面的两句。我的话说完了……
  
  
  7月23曰
  
    对付凶恶的人,就要比他更凶恶;对付卑鄙的人,就要比他更卑鄙;
  
    对付潇洒的人,就要比他更潇洒;对付英俊的人,就要……毁他的容!
  
  7月23曰
  
    上一次恋爱给我的教训是:不要找一个喜欢吃辣的女孩作女朋友。
  
    每一次请她吃完麻辣火锅,我们在一起亲热时,我都会在痛苦不堪中想起一首歌:《燃烧吧!火鸟》。
  
  5月23曰
    我的原则是:人不犯我,我不犯人;人若犯我,我就生气!
  
  5月23曰
    忽然想起上大学时,老师出对联:国兴旺,家兴旺,国家兴旺。
  
    班长对下联:天恢弘,地恢弘,天地恢弘!
  
    后来我被赶出了教室……
  
    因为我对的下联是:你 妈 的,他 妈 的,你 他 妈的!
  
  5月23曰
    偶然看见书上所谓的当代女子择偶标准:有车有房,父母双亡。
  
    郁闷。遂写下幻想中的选妻标准:
  
    家中财产过亿,美貌天下第一,贤惠温柔性感,岳父癌症晚期……
  
  7月17曰
    凤凰重生就是涅盘,野鸡重生就是尸变。
  
  7月11曰
    人生啊,不能在一棵树上吊死,要在附近几棵树上多死几次试试。
  
  8月18曰
    我才发现,吸引住男人的办法就是让他一直得不到;吸引女人的办法正好相反,就是让她一直满足。
  
  9月8曰
    人生的悲惨在于:辛辛苦苦的作了一晚上内容香艳的美梦,第二天早上醒来居然全都记不起来了!
  
  5月19曰
    这个世界不公平就在于:
    上帝说:我要光!——于是有了白天。
  
    美女说:我要钻戒!——于是她有了钻戒。
  
    富豪说:我要女人!——于是他有了女人。
  
    我说:我要洗澡!——居然停水了!
  
  5月8曰
    吃了晚饭在阳台抽烟享受,忽见夜空中一个光点转瞬即逝的划过,心里一激动:流星!于是马上许愿……
    许了六七个愿望,睁眼,烟已经抽完了,顺手扔出阳台,忽然听见楼下一个女孩的声音:“哇!流星!快许愿……”
  
  3月22曰
    记得刚毕业不久的一天,女友给我发了一条短信:“我们还是分手吧!”
  
    我还没来得及伤心呢,女友又发来一条:“对不起,发错了。”
  
    这下可以彻底伤心了……
  
  8月15曰
    野猫:走哪儿睡哪儿。
  
    野狗:逮什么吃什么。
  
    野男人:见一个爱一个。
  
  3月17曰
    在街上看美女,目光高一点就是欣赏,目光低一点就是流氓。
  
  
  9月6曰
      父亲问我人生有什么追求?
  
    我回答金钱和美女,父亲凶狠的打了我的脸;
  
    我回答事业与爱情,父亲赞赏的摸了我的头。
  
  5月17曰
    科学证实:劣质避孕套容易导致直肠癌。
  
  5月17曰
    香荷碧水动风凉,水动风凉夏曰长,长曰夏凉风动水,凉风动水碧荷香。
  
  10月31曰
    有人说春天把女朋友埋到地下,到了秋天就会收获很多很多女朋友。
  
    我朋友相信并照做了,他在春天把女朋友埋到了地下,到了秋天,他被警 察叔叔埋到了地下……
  
  2月27曰
    面对困难时:死都不怕,还怕活着吗?
  
    面对危险时:活着都不怕,还怕死吗?
  
    这就是爱因斯坦的相对论……
  
  2月27曰
    女孩在乎的是下半生的幸福;男孩关注的是下半身的幸福……
  
  2月27曰
    如果人生能像电影一样,我一定大刀阔斧的剪辑一遍,把少年时上学的段落剪成字幕,把青年时创业的段落剪成一个特写,把中老年时期的成功片段,剪成整个故事……
  
  10月28曰
    今天约见了一女网友,名叫“稚嫩小妹”,暗号是拿着一只玫瑰花,在约会地点张望,见一女握玫瑰做翘首状,遂逃,晚上联网,质问对方:怎么是你妈来替你见网友?……从此我安静的躺在了她的黑名单里。
  
  10月28曰
    真不明白,女孩买很多很多漂亮衣服穿,就是为了吸引男孩的目光,但男孩想看的,却是不穿衣服的女孩。
  
  12月31曰
    一般来说长命百岁只是祝愿,但人想活一百岁其实很简单,就是你必须咬牙坚持忍受一千二百个月……
  
  5月17曰
    每个人都是天上落下的天使,只不过有的是完好无损的着陆,有的是脸先着地,有的更倒霉,下落的时候直接骑在了围墙栏杆上……
  
  2月10曰
    我终于活着回来了!
  
    刚刚见了一个网友,长得很像如花,还是毁容版的如花,你能想像么……
  
  2月10曰
    我喜欢把人生交给命运:早上醒来我都会抛硬币,如果正面朝上,我就继续睡觉;如果背面朝上,我就躺在床上看电视。如果硬币落地后是立起来的,我就起来收拾屋子。
  
  2月22曰
    维持生命在于运动,创造生命也在于运动,区别就是——床下床上。
  
  2月10曰
    我慢慢发现,人才是妖精!有些妖精吃人,但人什么都吃,逮着一只妖精没准也能烧烤了!
  
  6月12曰
    凶残的人——没事找个人来杀杀。
  
    风流的人——没事找个美女睡睡。
  
    富有的人——没事买辆新车开开。
  
     我——没事捡个烟头抽抽……
  
  6月12曰
    年少的时候有一段时间,一直想表现自己彪悍的一面,于是想纹身,最终没有实施的原因是:我一直在犹豫是纹蜡笔小新好,还是纹铁臂阿童木好。
  
  3月11曰
    男人都好色,色心稍强一点叫色狼,再强一点叫色鬼,更加强就叫色魔,尤其强那就成了变 态色魔,好色到了极致,被称作人体美学艺术家。
  
  3月11曰
    下雨天别出门,雨水虽没毒,湿身事小,淋病事大啊。
  
  3月11曰
    我把她从女孩变成了女人;她把我从男孩变成了………………..穷人。
  
  3月11曰
    如果幸福是浮云,如果痛苦似星辰。
  
    那我的生活真是万里无云,漫天繁星……
  
  3月11曰
    男人所说的内在美,指的是胸罩里面,而不是内心。
  
  3月11曰
    我退化了,到现在我还不会游泳,要知道在我出生之前,我绝对是游的最快的那个……
  
  7月21曰
    人要学会自己寻找一些小幸福,比如到街上看一看那些不属于自己的美女,去银行看一看那些不属于自己的钞票,到车展上看一看那些不属于自己的跑车,然后在街上找一个乞丐看,告诉自己:没关系,刚才的那些也不属于他……
  
  7月21曰
    这几天一直下雨,我猜是玉皇大帝在哭,一定是他和王母娘娘的婚姻不幸福,这种不幸福有两种可能,一种是王母娘娘离开了,一种是王母娘娘不肯离开……
  
  9月23曰
    妹妹问我:“哥,接吻是什么样的?”我笑着告诉她:“傻丫头,接吻时要说:猪~~~”
  
    弟弟问我:“哥,什么是接吻啊?”我说:“接吻?张嘴,伸舌头。”
  
  9月23曰
    经血是子宫在为孤独哭泣,梦遗是精囊在为压抑流泪。月经一月一次,梦遗却不定期,这正说明:男儿有泪不轻弹……
  
  
  2月18曰
    今晚仰卧,明早起坐,明晚俯卧,后天撑~~~锻炼,有时候就是这么简单。
  
  6月20曰
    小时候经常听说有人因为生活压力大而**,那时我懂得死亡,却不明白压力是什么,现在长大了,我懂得了什么是压力,开始不明白为什么还有那么多人活着……
  
  6月20曰
    老天爷给我一双眼睛,让我看到花花世界;老天爷又给我一双手,让我去勤奋劳动挣钱;老天爷再给我一张嘴,让我用它来咒骂老天爷的不公平……

分类: 未分类 标签:

两个妓女

2007年3月30日 没有评论

   人口密集的某国,竟然没有一个妓女。于是有一户人家的大女儿看到了商机,“勇敢献身”,生意当然不错,那些有钱无处消遣的男人趋之若骛。那家的二女儿看到这种生意能财源滚滚,也步如她大姐的后尘。她没有大姐长得漂亮,于是就在价格上做文章来招揽生意。 
  于是那位大姐明显感觉自己的地位受到了威胁。以前她对客人是挑三拣四,说一不二。现在情势不同了,她得陪小心,陪笑脸,怕客人一不高兴,就跑道二姐那儿去。光这还不够,她还在背地对客人说,二姐身上有狐臭,还有二姐的床上工夫太差。大姐还采取种种光明或不光明的手段,来切断二姐的客源。 
  二姐呢,面对大姐的围追堵截,她也是采用种种卑鄙和不卑鄙的做法,来进行反击。她最常用的就是那句话,大姐搞垄断,想称霸,是我的到来才让大姐不敢为所欲为。我不但解决了许多人的需要,还将居高不下的嫖娼的价格拉到了平民价位。大姐二姐经常这样为争客源打得头破血流。
  我也经常去光顾这两个姐儿。有时候她们也会叫我提提意见,我就说了,你们两个各有千秋,各个所长。大姐丰姿绝色,二姐价廉物美;可是说到底,你们两个的价格也太高了,就是在经济发达的国家,象你们这样的价格也是荒唐得离谱的,为什么不定一个符合国人经济发展水平的价格呢?那两个姐儿哈哈大笑,“你是痴人说梦吧?这个行业就我们两个,你让我们收费低廉,那我们喝西北风去?我们价格不降,你们就不需要我们了吗?请你睁开眼看看,整个行业只有我们两个婊子啊!”后来有人也想找妓女,我向他推荐了那两姐儿。他问我那两姐儿的名字。于是我告诉了他,“大姐叫移动,二姐叫联通。”

分类: 未分类 标签:

最有有可能挑战Java优势的四种技术

2007年3月30日 没有评论

Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注。但是和所有语言一样,Java将来也会褪色。依据我做的超越Java的研究,一个重复出现的主题是有越来越多的人相信Java已不再足够的有效率。以下一组技术可以使你更有效率。他们不是对所有的工程都适合,但当被应用于适合的工程时,他们是优秀的工具。

1、动态语言

动态语言可以比像C++或Java这样的静态语言更加有效率。他们可以让你用更少的语言表达更多的意思。这里,我会关注现在新出现最流行的动态语言Ruby。用Ruby的”Hello, World”和Java的作一个比较:

puts “Hello, world.”

这显然既简单又明了。你不需要写一些其他的代码去做这件事。下面是用Java语言的描述:

class HelloWorld
{  
public static void main(String[] args)
{    
System.out.println(“Hello World!”)  
}
}

在Java中,类型是静态的。这就代表了编译器要检查所有的类型;你必须建立和编译一个完整的程序。在Ruby中,类型是动态的,所以你不需要去声明他们,你可以马上编写和运行他们。下面是用两种语言描述的Fibonacci 序列:

First, Ruby:x1, x2 = 0, 1                    
//110.times do  puts x2   x1,
x2 = x2, x1+x2        
//4end

注意到在第一、四行同时声明两个变量,让你可以简洁地表达两种不同的声明形式。另外,注意到10是一个对象,它支持方法,如:times。再另外,在do和end之间是一个代码块。Ruby代码块可以让你把代码块传入方法。。这种技术导致了难以置信的效率和简洁的代码。接下来,看一看用Java实现的代码:

class Fib
{  
public static void main (String args[])
{    
int x1 = 0;    
int x2 = 1;    
int total = 1;    
for (int i=0; i<10; i++)
{      
System.out.println(total);      
total = x1+x2;      
x1 = x2;    
x2 = total;  
}  
}
}

你需要去声明所有的变量,以及详细地写出来你用for循环实现的迭代。每个变量都是独立的,所以你必须有一个临时变量用于存放total。

相比,动态语言更为简洁。按照一个普通的规则,如果你可以写更少的代码而不牺牲可读性,这些代码将导致更高的效率。(但是你不可以牺牲可读性来达到这一步,我们可以以Perl举例作为结尾。)

更为重要的是,动态语言在Java开发者想要去解决的重要问题上表现得更好,如: 元编程。 Hibernate 使用元编程技术使对象持久化。

Spring使用元编程来为Java对象增加服务,而免除你为他们构建额外支持的烦恼。在Rails框架上,当红的Ruby利用了自己能力来构建某种已存的

最有效率的应用开发框架。

令人惊讶的是,许多Java开发者采用了Ruby。Ant和Tomcat的发明者James Duncan Davidson正在Rails上使用Ruby,以及Java的畅销书作者之一,JSP专家组的

成员David Geary正在写一本关于Rails上的Rub的书y。许多在Java社区里有着聪明思想的人都转向使用像Ruby一样的动态语言。这是因为这种新出现的语言能更好的解决最有兴趣的问题。动态语言将不会完全取代Java,但是他们会适合于解决小的,轻量级的问题。

2、Continuation 服务

Web编程绝对是个的灾难。在Java诞生十年后,我们仍旧不能构建一个使返回按钮正确的框架。Web应用是无国界的,所以Web应用会发展得更好。但是很难去构建无国界的应用,而我们现有的框架不能给与我们足够的帮助。

你使用大多数Java的Web框架时,从根本上说,你构建了许多不相关的使用servlets或JSP技术的应用。然后通过手工保存对象来把他们集成起来,这些对象就是你需要的,用来暂时存储对象的会话。

Continuation是语言的构造器,它可以使你快速存储某个线程的状态,过后执行这个线程。基于Continuation的web框架总体上是通过模拟一个监控状态的应用来使web开发变得更为容易。当你的应用需要从用户那取得数据时,这种框架使用continuation来自动保存应用程序的状态。如果用户按下返回按钮或者通过浏览器的历史纪录回到以前的页面,应用程序可以重新读取一个continuation。

基于continuation最好的框架是用动态语言来开发的。到目前为止,最健壮的框架是Seaside。他是基于一种Smalltalk的Squeak语言的框架。Seaside支持很好的调试功能,你可以实时检查、调试以及在浏览器里改动你的代码。Borges、Iowa和Wee都是基于Ruby且支持continuation的框架。

Java不支持continuations,但是一些在特殊限制下构造的Java框架支持模拟continuations。这些框架具有用其他语言编写的continuations框架的某些特征。

流行的框架是用了一些高级的技术,如:字节码增强、反射以及特殊类的装载器。这些技术用Java部分地实现了continuations。

Cocoon 2在Rhino JavaScript 虚拟机中增加了continuations,用来模拟监控状态的应用。

Spring Webflow使用了状态机来提供对返回按钮良好的支持,以及其他一些continuation服务的特征。

Lakeshore使用了悬挂的线程来模拟continuations。这种方法不像其他方法一样有可扩展性,同时还缺乏对返回按钮完整的支持,但是这些预计在将来都会具有。

每个月都会有新的框架出现。我认为在未来的三年内,我们都会使用支持基于continuations的方法的web开发框架,这种框架是由一种语言或者其他语言编写的。

3、惯例超越配置

Java开发者经常探索用于改进配置的方法。新的框架越来越多的使用Java 5批注来进行配置。其他的框架是用一种不同的方法。Rails中的Ruby常用惯例来推断需要在其他框架进行配置的联系。

例如:在结束的时候,一个叫BlogController且有一个show方法的Rails控制器,会自动在blog_controller目录里提交一个叫show.rhtml的视图。Rails还使用命名惯例来绑定数据库表里持久化的类。默认情况下,Perosn类会与用英语的复数people与表进行匹配。

新的框架将会支持惯例,而不是配置。

4、元编程

就像前面提到的一样,在Rails编程框架上的Ruby里,存在着许多hype的。我认为这种hype是正确的。在Rails上的Ruby让你比起java,可以在一个更抽象的层次上编写你的程序。有了Rails上的Ruby,你可以创建域对象,这种对象可以发现相关联的数据库表的内容。例如:你可以写这样简单的模型对象:

class Person < ActiveRecord::Baseend

这种类表面看起来相当的受限制。但是一旦你执行它,Rails就会展现它的神奇。这种实现了持久化Rails的活动纪录框架与相关的数据库关联,以及为了表定义扫描系统表,还发现数据库里列项。然后,活动记录为数据库中的每一列增加一个属性,为数据库中id列名在类中增加一个独一无二的标示符。你可以用下面的类去编写代码:

person=Person.newperson.name=’Bruce
Tate’person.email=
‘bruce.tate@j2life.nospam.com’person.save

数据库的列名和行为都会在运行时后加入Person类。你可以很容易的扩展Person类:

class Person < ActiveRecord::Base
has_many :carsend

通过Ruby中一个belongs_to的简单方法和:department标示符,我实现了所有我想做的。活动记录隐式调用了Ruby的元编程来添加了所有的方法和变量,这些方法和变量用来管理一个任何一个部门之间的一对多关系。Rails用户使用域语言来管理像继承这样的关系,另外可以用Ruby语言在一个更抽象的层次上工作。Rails无缝扩展了Ruby语言。

Rails会不会是下一代伟大的框架?有可能。要做一个选择的话,Rails应该会是在使用Ruby或是其他动态编程语言的元编程框架潮流中的第一个。或者,你可能看到Rails会作为某些松散对齐技术的中枢,它是以元编程作为基础的。在任何情况下,你都会更有效率。

总结

在《超越Java》这本书中,我表达了Java还不会淘汰意思,但是在最近的十年,我们目睹了在Java领域之外引人注目的创新。这四种技术会在不远的将来起到重要的作用。请密切关注他们。

分类: 技术 标签:

女人让男人自卑的九个经典事实

2007年3月29日 没有评论

1、一个小男孩问他爸爸:“当初你是怎么娶到我妈妈的?”他爸爸得意的说:“想当年,追你妈妈的人那个叫多呀!你爸爸我奋勇追击,才把你妈妈骗到手”小男孩回答:“哼,你还真能吹,看现在,追我的女孩子哪个不比我妈妈漂亮。”  
——男人,他永远都是自我感觉良好的动物,他永远都在自我陶醉中吹嘘自己的种种,其实你凑近一看,呸!也就那德行。
 
2、男同事在办公室讲了一个略带点颜色的笑话,没料到女同事们的笑声超过了他的预期,他强忍着笑酷酷的说:“切,头发长见识短,值得笑成这疯样吗?”女同事们笑的更疯了,于是他也忍不住跟着笑起来。末了,一善良的女同事对他说:“我们笑的是……你也当个笑话来说,哈哈……”  
——男人,他总以为自己比女人要色一点,其实他不知道女人很多时候被他那幼稚的举动逗笑了,而他却还以为是自己很酷。
 
3、女人痛哭着,男人坚定的抱紧女人,给女人安慰。可是女人在得到安慰之后依然离开了男人,离开了曾经给女人拥抱的男人。男人心里那个恨啊,恨女人不知好歹,恨女人无情无义,恨女人把自己掏空了就过河拆桥。女人只一句话,就把男人击倒:“其实你根本不知道我需要什么。”  
——男人,总是用自己的理性去理解女人的感性,他以为控制了自己的情绪,就是控制了女人的情绪,这掩耳盗铃的悲哀直到女人离开,他也未必知道。于是女人择了新枝,男人在理性的痛苦中装深沉。
 
4、男人被邀请去参加一个重要的聚会,要求把老婆也带上。此时男人想着家里那个黄脸婆心里就发怵,要是带出去的是个美女该多有面子!于是男人催促着女人打扮,挑剔着女人的品位,叮嘱着女人在聚会上保持微笑就可以了,千万别乱开口说话  
——男人,他把自己一切的虚荣都堆砌的女人身上,然后反来一句说女人虚荣,把自己的委琐隐藏起来,装扮着道貌岸然的君子模样,清一色的深色西装是男人参加聚会的装用服饰,可是男人身边微笑着的女人,正在展示着男人真正的庸俗。
 
5、当两个男人带着家小在逛街的路上相遇时,通常会装做没事人一样互相打着哈哈说:“陪老婆孩子逛。”其实眼睛却打量着对方的老婆,观察着对方的孩子。不为别的,就想比较一下自己老婆孩子是不是比人强。  
——男人也爱攀比,比财富,比事业,比情人,比老婆孩子,攀比心理一点不亚于女人。
 
6、男人生病的时候在女人面前通常很乖,可是换在男人面前就绝对要装出无所谓的姿态。吃药他肯定是躲着吃的,因为怕药的苦味,打针他一定是眨巴着眼睛做痛苦状的,因为他对疼痛比女人敏感。此时如果女人想追男人太简单了,给他足够的关怀他就会对女人死心塌地。 ——男人,永远长不大的孩子,永远有轻微的恋母情结,没有女人的关怀,男人就没法活。
 
7、某成功男人娶了漂亮的明星做老婆,年龄差距之大让人乍舌。明知道自己将不久于人世,而女人不可能为他守寡,男人还是坚持自己的选择。因为男人喜欢花瓶,喜欢收藏。把大家都羡慕与倾心的东西据为自有是男人获得成就感的方式之一。  
——男人,总是愚蠢的重复着花大价钱做不值得的事情,还要美其名曰:喜欢的就是无价之宝。其实他真正喜欢的是那点成就感,要是烧钞票能获得极大的满足,男人一定会烧。
 
8、天桥上一个“疯子”在喝酒,大声唱着莫名其妙的歌,警车呼啸着停在天桥下,有人拿着高音喇叭喊话:别想不开,有什么事情,下来再说。“疯子”满脸狼籍的不要大家管,然后歪歪倒倒的推开围观的人,一个人走了,最后也许歪在哪个角落象猪猪一样酣睡。
——男人,他从不承认自己吃醋,可是一旦醋劲上来,就惊天动地却偏不让女人知道。吃完醋之后,男人依然要吃同样的醋许多次,因为女人根本不知道他在吃醋,谁让他自己不说呢?活该!
 
9、男人被女人拒绝了许多次,每次他都觉得女人给他留了些许余地,于是他不懈地努力,以为自己征服了世界就能征服女人。可是当他满载胜利果实归来时,看见的却是已经成了妈妈的女人,灰头土脸的买菜洗衣服做饭。男人不禁却步了,转身逃跑,并对自己一直的努力奋斗产生怀疑。

分类: 未分类 标签:

最经典的搭讪!你不服都不行

2007年3月29日 没有评论

1. 我学妹看中一个我们学校的帅哥,于是走上前和人家搭讪:
 “帅哥,你有女朋友了吗? ”  
 “有了。 ”
 “那你介意换一个吗? ”
 “介意。 ”
 “好吧,那你介意多一个吗?”
  两个月后,我学妹顺利上位。

2. 大学,去自习,有个陌生的男生叫住我,我问他有什么事,他说,“没事,你好白阿,我 就是想看看你好不好看。”
  我晕倒 。一会,他又走过来说“你觉得我黑吗?”
 “黑”我说。
  他说“大家都说我黑。”
  我再次晕倒。

3. 看见前面一漂亮MM。苦无搭讪的办法,于是拣起一块砖头上前:“同学,这是你掉的吧?”

4. 在美国康州的一家越南餐馆,一个很帅的WAITER问我"are you chinese?”
  偶回答了他,他马上用中文说"我爱你"
  偶晕厥!然后他就一直在我桌子旁边晃来晃去,别的客人叫他拿帐单他也不理会.和我一起去吃饭的朋友郁闷惨了,说她来这家餐馆吃了 N次也没被搭讪过,我第一次来就……

5. 朋友的同学,晚自习上欲泡一MM,上去问:“同学,请问现在几点?”
  那MM一看表:“八点半。”
  那厮一脸惊讶地说:“啊!我的表也是八点半,你说我们是不是很有缘呢?!”

分类: 未分类 标签:

A片也是片!测测你看AV的痴迷指数!

2007年3月28日 没有评论

Lv1 菜鸟级

      只要有一男一女?有些似是而非的镜头即可满足,经验值:5部以内。

Lv2 入门级

      有些耐力,但开始会挑自己喜欢的女优,特点是‘有片就看’,经验值:30部以内。

  
Lv3 学徒级

      会开始有喜欢的av女优偶像诞生,开始收集以及收藏相关的冬冬,还会对女优的有各种各样的疑问,例如‘为什么这么漂亮的女孩要拍AV?’等。开始思考AV业界的问题,看片也会拖动为主,只看自己认为精彩的部分,很少再把一部片从头到尾‘品位’了。经验值:60部以内。
 
Lv4 转职级
 
      通常到了这个阶段,个人的迷恋已经消失了,取而代之的是对某‘系列’或是主题的狂热。如巨乳系,熟女系,SM系,多P系,强迫系,制服系,cosplay系等等,这一阶段进入大量看片期。经验值:200部以内。
  
Lv5 信徒级
  
     进入个人崇拜阶段,特点是‘愿意花钱’,对自己喜爱的AV女优相关资料八卦如数家珍,同时因为看片数量累积的原因,经验值上升到:能够知晓AV女优20人左右。

Lv6 收藏家级

     开始分类整理收藏,上网查询和同好交流必不可少,买片的目的不一定是看,甚至完全不拆封收藏也是可以理解的,这是AV已成为个人生活必不可少的休闲活动,经验值:一眼认AV女优50人左右!
  
Lv7 鉴定家级
  
      开始国际化,对欧美的情况也有所涉猎,此时过目的女优不下千人!又要见到女优肉体某部分就能够分辨是哪位女优!
  
Lv8 大师级
  
      认识的AV女优人数=已经出片的AV女优人数,可以说是达到了AV看片的悟道禅宗,天眼即开,万事万物都能看出其中运行的AV规律,甚至能够洞察AV中任何细微细节的端倪,作假的片子一看就知,马赛克对于这类人来说不过是遮眼的灰尘罢了,少数的几个单色方块也能够让他们弄清楚整个的形态特色!
  
Lv9 编剧导演级
      认识的AV女优人数>已经出片的AV女优人数,在他们的眼中,日常生活的女性在眼里可以瞬间在脑中形成AV的剧情和细节,取景、声音都是达到D9效果。此时处处是女优,无女而不优,达到了先天下之优而优的境界!

Lv10 炼金术士级
      
自然界中一切事物,经过分解,转化,再组合之后,就会形成AV的场景!此时仰望星空,繁星点点,拼出众多女优,或坐、或卧、或微目娇吟……欣赏书法,宛若女体摆动,或急或缓,笔锋转处,犹如体位聘换,目不暇接,春虫秋籁,无一不是*吟喘息……此时无女亦可优,无优胜有优,达到超凡入圣的 “无中生有”的一代宗师境界!!!

分类: 未分类 标签:

床上如此风光

2007年3月27日 没有评论

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575321176.jpg[/img]

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575426518.jpg[/img]

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575457435.jpg[/img]

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575419829.jpg[/img]

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575453336.jpg[/img]

[img]http://ent.skyhits.com/Editor/UpPics/2005/3/10/200531011575460055.jpg[/img]

分类: 未分类 标签:

一则深奥的爱情寓言,你看懂了吗?

2007年3月26日 没有评论

  公主是在河东岸边遇见驴的。
  
  驴是黑色的,但白嘴白肚白蹄。驴说他会说话,驴说他是美驴。
  
  公主想过河去,河西的城堡里有等着娶她的王子。
  
  河不算深,但她穿着一身美丽的嫁衣,她怕河水会浸湿她的衣裙。
  
  驴说:“想让我驮你过去吗?”
  
  “你能保证不弄湿我的衣裙吗?”
  
  “不能。”
  
  “那就算了,谢谢,”
  
  公主微笑作答:“我想王子会来接我。”
  
  “如果他不来呢?”
  
  “那我就多等等。”
  
  良久,无人过来,公主独坐岸边,黯然叹息。
  
  当她目光掠过驴的时候,驴笑了:“现在希望我驮你过去吗?”
  
  “不。”公主依然拒绝,但悄然打量着驴。
  
  “你心里很希望我驮你过去。”驴断言。
  
  “是你希望我让你驮我过去。”公主回答。
  
  “那你希望谁来驮你过去?”
  
  “我要嫁的王子。”
  
  “我驮你过去,你吻吻我,焉知我不能变成王子?”
  
  “你以为你是青蛙王子?”
  
  “我是美驴王子。”
  
  “驴倒是驴,王子就不必勉强了。”
  
  
  
  “你为何不想让我帮你渡河?”
  
  “我怕你弄湿我的嫁衣。”
  
  “我想不会的。”
  
  “为什么不会?”
  
  “因为现在我想驮你过去。”
  
  “哦?我该相信吗?”
  
  “你为什么不相信?”
  
  “你说的话我不敢随便信。”
  
  “我说的话你都不信?”
  
  “你说的话我才不信。”
  
  “我说的话你真不信?!”
  
  “难道我应该信?”
  
  “难道你不该信?”
  
  “我信我自己的判断。”
  
  “好吧,那你慢慢判断吧!”
  
  ……
  
  天色已晚,公主与驴相对无言。凉意袭来,公主拢了拢衣服。
  
  驴打破沉默:“冷吗?”
  
  “冷。”
  
  “让我驮你过河吧,无论我是否弄湿你的衣裙我都会赠你三句爱的箴言。”
  
  “那我该怎样报答你?”公主问。
  
  “如果你衣裙不湿就带我回家吧。”
  
  公主接受了驴的建议。
  
  公主骑上了驴背。临行前驴郑重对她说:
  
    “记住我背着你时你不能流泪,你的泪会令我不堪重负。”
  
  公主说她记得,然后也郑重地对驴说:
  
    “记住一定不要弄湿我的衣裙,否则我会立即放弃你的背负。”
  
  驴迈步向河中走去。
  
  “你以前驮过女孩过河吗?”公主问。
  
  “当然。”驴坦然答道。
  
  “她们的衣裙湿了吗?”
  
  “第一个女孩的没湿,以后的都湿了。”
  
  “第一个女孩带你回家了吗?”
  
  “没有,否则我不会再遇见别的女孩。”
  
  “看来你遇见的女孩很多。”
  
  “算上你的话,应该有15、6个了。”
  
  公主笑道:“你是第30头想驮我过河的驴。”
  
  “呵呵。”驴但笑无语。
  
  公主忽然想起驴承诺的爱的箴言,驴答应告诉她第一句:
  
    “人只有在初恋时爱的是别人,以后恋爱时爱的都是自己。”
  
  驴缓步轻行,果然很平稳,公主放心了,搂着驴的脖子,觉得温暖。
  
  “喜欢我背你过河吗?”驴问。
  
  “喜欢。”公主微笑承认。
  
  “我也喜欢这样背着你,希望就这样一直走下去。”
  
  驴的声音于温情中透着忧郁,听起来像叹息。
  
  风与驴的话语不时吻上公主的面颊,公主含笑悄然入睡。
  
  她做了一个公主常做的梦:她吻了驴,
  
  然后驴变成了王子,从此王子与公主快乐地生活在一起。
  
  当她醒来时看见驴依然缓步轻行,自己的衣裙分毫不湿。
  
  芳心窃喜,于是吻了驴——驴能因此变成王子吗?
  
  没有。
  
  原来童话就是童话,驴不是王子,
  
  等着娶她的王子在河西的城堡里。她愣愣地想,一滴泪自目中滴落。
  
  泪落在驴身上。
  
  似乎突然被灼伤般,驴猛地扬蹄嘶鸣,激起浪花千丈。
  
  公主的衣裙湿了。
  
  “为什么?”公主问。
  
  “我跟你说过。”驴面无表情。
  
  公主也记起了她当初对驴说的话。
  
  于是她一言不发,自驴背上下来,独自淌水向对岸走去。
  
  驴没做任何挽留或解释,也自转身回去,
  
  径直走向河东——那里又有个姑娘在等着谁驮她过河。
  
  依稀年轻,依稀美丽,她也有一身好看的嫁衣。
  
  “爱情是唯一的,但爱人不是唯一的。”
  
  驴忽然说道:“这是第二句箴言。”
  
  公主泪落成河,河水冷彻心肺。
  
  终于走到了对岸,她美丽的衣裙已经彻底湿透。
  
  她无力地在岸边坐下,像只小动物般抱膝蜷缩着黯然哭泣。
  
  还是寒冷。
  
  一只白兔走到她身边:“公主,下次我陪你渡河。”
  
  “谢谢,”公主把白兔搂在怀中:“不必了,现在我只是需要一点温度。”
  
  驴已经走回了河东岸边。
  
  公主忽然记起还有一句箴言驴没说,
  
  
    
  于是抬头向河西望去:“请告诉我最后一句箴言,美驴。”
  
  驴冷冷看了她最后一眼,说: “我爱我的爱情。 ”
  
  然后向那等着渡河的女孩走去。
  
  
  
  如果你猜不到寓意,不妨参考下这个
  
  
  
  这是对生活中的爱情的比喻.驴是爱你的人,王子是你爱的人.你带着寻找你爱的人的梦想,走入了爱你的人的生活.但是如果你是因为你爱的人而不是因为爱你的人伤心落泪,就会伤害爱你的人,然后失去他的爱情,同时也伤害了你自己.等到你因为寻找爱情而弄的伤痕累累的时候,等到你发现爱情的真谛的时候,一切都已不能再从头……

分类: 未分类 标签:

深入浅出理解索引结构

2007年3月26日 没有评论

深入浅出理解索引结构

(一)深入浅出理解索引结构

        实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:  

其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。

        我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。

        如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。  

       我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。

       通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。  

       进一步引申一下,我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。 

(二)何时使用聚集索引或非聚集索引  

      下面的表总结了何时使用聚集索引或非聚集索引(很重要)。  

     

动作描述

使用聚集索引

使用非聚集索引

列经常被分组排序  

返回某范围内的数据

不应

一个或极少不同值

不应

不应

小数目的不同值

不应

大数目的不同值

不应

频繁更新的列

不应

外键列

主键列

频繁修改索引列

不应

 

        事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询200411日至2004101日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。  

(三)结合实际,谈索引使用的误区  

        理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 

1、主键就是聚集索引  

      这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。  

        通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。 

        显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。  

        从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。  

        在办公自动化系统中,无论是系统首页显示的需要用户签收的文件、会议还是用户进行文件查询等任何情况下进行数据查询都离不开字段的是“日期”还有用户本身的“用户名”。  

        通常,办公自动化的首页会显示每个用户尚未签收的文件或会议。虽然我们的where语句可以仅仅限制当前用户尚未签收的情况,但如果您的系统已建立了很长时间,并且数据量很大,那么,每次每个用户打开首页的时候都进行一次全表扫描,这样做意义是不大的,绝大多数的用户1个月前的文件都已经浏览过了,这样做只能徒增数据库的开销而已。事实上,我们完全可以让用户打开系统首页时,数据库仅仅查询这个用户近3个月来未阅览的文件,通过“日期”这个字段来限制表扫描,提高查询速度。如果您的办公自动化系统已经建立的2年,那么您的首页显示速度理论上将是原来速度8倍,甚至更快。  

        在这里之所以提到“理论上”三字,是因为如果您的聚集索引还是盲目地建在ID这个主键上时,您的查询速度是没有这么高的,即使您在“日期”这个字段上建立的索引(非聚合索引)。下面我们就来看一下在1000万条数据量的情况下各种查询的速度表现(3个月内的数据为25万条):  

1) 仅在主键上建立聚集索引,并且不划分时间段:  

Select gid,fariqi,neibuyonghu,title from tgongwen 用时:128470毫秒(即:128秒)  

2)在主键上建立聚集索引,在fariq上建立非聚集索引:  

select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate())  用时:53763毫秒(54秒) 

3)将聚合索引建立在日期列(fariqi)上:  

select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate()) 用时:2423毫秒(2秒)  

        虽然每条语句提取出来的都是25万条数据,各种情况的差异却是巨大的,特别是将聚集索引建立在日期列时的差异。事实上,如果您的数据库真的有1000万容量的话,把主键建立在ID列上,就像以上的第12种情况,在网页上的表现就是超时,根本就无法显示。这也是我摒弃ID列作为聚集索引的一个最重要的因素。  

得出以上速度的方法是:在各个select语句前加:declare @d datetime set @d=getdate()  

并在select语句后加:  

select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())  

2、只要建立索引就能显著提高查询速度  

        事实上,我们可以发现上面的例子中,第23条语句完全相同,且建立索引的字段也相同;不同的仅是前者在fariqi字段上建立的是非聚合索引,后者在此字段上建立的是聚合索引,但查询速度却有着天壤之别。所以,并非是在任何字段上简单地建立索引就能提高查询速度。  

        从建表的语句中,我们可以看到这个有着1000万数据的表中fariqi字段有5003个不同记录。在此字段上建立聚合索引是再合适不过了。在现实中,我们每天都会发几个文件,这几个文件的发文日期就相同,

分类: 未分类 标签:

Oracle数据库数据对象分析

2007年3月23日 没有评论

Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。

表和视图

Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。

管理表

表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如:

CREATE TABLE products (
PROD_ID NUMBER(4),
PROD_NAME VAECHAR2(20),
STOCK_QTY NUMBER(5,3)
);

这样我们就建立了一个名为products的表, 关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。

在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是NOT NULL,关于约束的讨论我们在以后进行。

在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。

下列数据字典视图提供表和表的列的信息:

   . DBA_TABLES
   . DBA_ALL_TABLES
   . USER_TABLES
   . USER_ALL_TABLES
   . ALL_TABLES
   . ALL_ALL_TABLES
   . DBA_TAB_COLUMNS
   . USER_TAB_COLUMNS
   . ALL_TAB_COLUMNS

表的命名规则

表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。

从其它表中建立表

可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定。建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列。在CREATE TABLE语句中使用关键字AS,例如:

SQL> CREATE TABLE emp AS SELECT * FROM employee
SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2
需要注意的是如果查询涉及LONG数据类型,那么CREATE TABLE….AS SELECT….将不会工作。

更改表定义

在建立表后,有时候我们可能需要修改表,比如更改列的定义,更改缺省值,增加新列,删除列等等。ORACLE使用ALTER TABLE语句来更改表的定义

1、增加列

语法:ALTER TABLE [schema.] table_name ADD column_definition

例:

ALTER TABLE orders ADD order_date DATE;
对于已经存在的数据行,新列的值将是NULL.

2、更改列

语法: ALTER TABLE [schema.] table_name MODIFY column_name new_attributes;

例:

ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15));
这个例子中我们修改了表orders,将STATUS列的长度增加到15,将QUANTITY列减小到10,3;

修改列的规则如下:
   . 可以增加字符串数据类型的列的长度,数字数据类型列的精度。
   . 减少列的长度时,该列应该不包含任何值,所有数据行都为NULL.
   . 改变数据类型时,该列的值必须是NULL.
   . 对于十进制数字,可以增加或减少但不能降低他的精度。

3、删除数据列

优化ORACLE数据库,唯一的方法是删除列,重新建立数据库。在ORACLE8i中有很多方法删除列,你可以删除未用数据列或者可以标示该列为未用数据列然后删除。

语法:ALTER TABLE [schema.] table_name DROP {COLUM column_names | (column_names)}[CASCADE CONSTRAINS]

要注意的是在删除列时关于该列的索引和完整性约束也同时删除。注意关键字CASCADE CONSTRAINS,如果删除的列是多列约束的一部分,那么这个约束条件相对于其他列也同时删除。

如果用户担心在大型数据库中删除列要花太多时间,可以先将他们标记为未用数据列,标记未用数据列的语法如下:

ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names | (column_names)}[CASCADE CONSTRAINS]

这个语句将一个或多个数据列标记为未用数据列,但并不删除数据列中的数据,也不释放占用的磁盘空间。但是,未用数据列在视图和数据字典中并不显示,并且该数据列的名称将被删除,新的数据列可以使用这个名称。基于该数据列的索引、约束,统计等都将被删除。

删除未用数据列的语句是:

ALTER TABLE [schema.] table_name DROP {UNUSED COLUM | COLUMN CONTINUE}

删除表和更改表名
删除表非常简单,但它是一个不可逆转的行为。

语法: DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS]

删除表后,表上的索引、触发器、权限、完整性约束也同时删除。ORACLE不能删除视图,或其他程序单元,但oracle将标示他们无效。如果删除的表涉及引用主键或唯一关键字的完整性约束时,那么DROP TABLE语句就必须包含CASCADE CONSTRAINTS子串。

更改表名

RENAME命令用于给表和其他数据库对象改名。ORACLE系统自动将基于旧表的完整性约束、索引、权限转移到新表中。ORACLE同时使所有基于旧表的数据库对象,比如视图、程序、函数等,为不合法。

语法:RENAME old_name TO new_name;

例:

SQL> RENAME orders TO purchase_orders;
截短表
TRUNCATE命令与DROP命令相似,但他不是删除整个数据表,所以索引、完整性约束、触发器、权限等都不会被删除。缺省情况下将释放部分表和视图空间,如果用户不希望释放表空间, TRUNCATE语句中要包含REUSE STORAGE子串。TRUNCATE命令语法如下:

TRUNCATE {TABLE|CLUSTER} [schema.] name {DROP|REUSE STORAGE}

例:

SQL> TRUNCATE TABLE t1;

管理视图

视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询(stored query)或一个虚拟表(virtual table).查询仅仅存储在oracle数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。视图也可以隐藏复杂查询,比如多表查询,但用户只能看见视图。视图可以有与他所基于表的列名不同的列名。用户可以建立限制其他用户访问的视图。

建立视图

CREATE VIEW命令创建视图,定义视图的查询可以建立在一个或多个表,或其他视图上。查询不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支持ORDER BY子串,现在的版本中CREATE VIEW可以拥有ORDER BY子串。

例:

SQL> CREATE VIEW TOP_EMP AS
SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary
FROM emp
WHERE salary > 2000
用户可以在创建视图的同时更改列名,方法是在视图名后立即加上要命名的列名。重新定义视图需要包含OR REPLACE子串。

SQL> CREATE VIEW TOP_EMP(EMPLOYEE_ID,EMPLOYEE_NAME,SALARY) AS
SELECT empno ,ename ,salary FROM emp WHERE salary >2000
如果在创建的视图包含错误在正常情况下,视图将不会被创建。但如果你需要创建一个带错误的视图必须在CREATE VIEW语句中带上FORCE选项。如:

CREATE FORCE VIEW ORDER_STATUS AS
SELECT * FROM PURCHASE_ORDERS
WHERE STATUS=”APPPOVE”;

SQL>/ warning :View create with compilation errors

这样将创建了一个名为ORDER_STATUS的视图,但这样的视图的状态是不合法的,如果以后状态发生变化则可以重新编译,其状态也变成合法的。

从视图中获得数据

从视图中获得数据与从表中获得数据基本一样,用户可以在连接和子查询中使用视图,也可以使用SQL函数,以及所有SELECT语句的字串。

插入、更新、删除数据

用户在一定的限制条件下可以通过视图更新、插入、删除数据。如果视图连接多个表,那么在一个时间里只能更新一个表。所有的能被更新的列可以在数据字典USER_UPDATETABLE_COLUMNS中查到。

用户在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示创建的视图是一个只读视图,不能进行更新、插入、删除操作。WITH CHECK OPTION表示可以进行插入和更新操作,但应该满足WHERE子串的条件。这个条件就是创建视图WHERE子句的条件,比如在上面的例子中用户创建了一个视图TOP_EMP,在这个视图中用户不能插入salary小于2000的数据行。

删除视图

删除视图使用DROP VIEW命令。同时将视图定义从数据字典中删除,基于视图的权限也同时被删除,其他涉及到该视图的函数、视图、程序等都将被视为非法。

例:

DROP VIEW TOP_EMP;

过程和函数

过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。过程是作为一个独立执行语句调用的:

pay_involume(invoice_nbr,30,due_date);
函数以合法的表达式的方式调用:

order_volumn:=open_orders(SYSDATE,30);
创建过程的语法如下:

CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name
[parameter_lister]
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION
exception_section]
END [procedure_name]

每个参数的语法如下:

paramter_name mode datatype [(:=|DEFAULT) value]

mode有三种形式:IN、OUT、INOUT。

IN表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。

OUT在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。

INOUT这种模式是IN和OUT的组合;在过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数。

创建函数的语法和过程的语法基本相同,唯一的区别在于函数有RETUREN子句

CREATE [ OR REPLACE] FINCTION [schema.]function_name
[parameter_list]
RETURN returning_datatype
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION]
exception_section
END [procedure_name]

在执行部分函数必须有哟个或多个return语句。

在创建函数中可以调用单行函数和组函数,例如:

CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)
RETURN NUMBER
IS
pi NUMBER=ACOS(-1);
RadiansPerDegree NUMBER;
BEGIN
RadiansPerDegree=pi/180;
RETURN(SIN(DegreesIn*RadiansPerDegree));
END;

包是一种将过程、函数和数据结构捆绑在一起的容器;包由两个部分组成:外部可视包规范,包括函数头,过程头,和外部可视数据结构;另一部分是包主体(package body),包主体包含了所有被捆绑的过程和函数的声明、执行、异常处理部分。

打包的PL/SQL程序和没有打包的有很大的差异,包数据在用户的整个会话期间都一直存在,当用户获得包的执行授权时,就等于获得包规范中的所有程序和数据结构的权限。但不能只对包中的某一个函数或过程进行授权。包可以重载过程和函数,在包内可以用同一个名字声明多个程序,在运行时根据参数的数目和数据类型调用正确的程序。

创建包必须首先创建包规范,创建包规范的语法如下:

CREATE [OR REPLACE] PACKAGE package_name
{AS|IS}
public_variable_declarations |
public_type_declarations |
public_exception_declarations |
public_cursor_declarations |
function_declarations |
procedure_specifications
END [package_name]

创建包主体使用CREATE PACKAGE BODY语句:

CREATE [OR REPLACE] PACKAGE BODY package_name
{AS|IS}
private_variable_declarations |
private_type_declarations |
private_exception_declarations |
private_cursor_declarations |
function_declarations |
procedure_specifications
END [package_name]

私有数据结构是那些在包主体内部,对被调用程序而言是不可见的。

触发器(Triggers)

触发器是一种自动执行响应数据库变化的程序。可以设置为在触发器事件之前或之后触发或执行。能够触发触发器事件的事件包括下面几种:

DML事件
DDL事件
数据库事件

创建触发器的语法如下:

CREATE [OR REPLACE] TRIGGER trigger_name
{before|after|instead of} event
ON {table_or_view_name|DATABASE}
[FOR EACH ROW[WHEN condition>
trigger_body

只有DML触发器(INSERT、UPDATE、DELETE)语句可以使用INSTEAD OF触发器并且只有表的DML触发器可以是BEFORE或AFTER触发器。

象约束一样触发器可以被设置为禁用或启用来关闭或打开他们的执行体(EXECUTE),将触发器设置为禁用或启用使用ALTER TRIGGER语句:

ALTER TRIGGER trigger_name ENABLE;
ALTER TRIGGER trigger_name DISABLE;

要禁用或启用表的所有触发器,使用ALTER TABLE语句

ALTER TRIGGER table_name DISABLE ALL TRIGGER;
ALTER TRIGGER table_name ENABLE ALL TRIGGER;

删除触发器使用DROP TRIGGER

DROP TRIGGER trigger_name;

数据字典

Oracle数据字典包含了用户数据库的元数据。带下划线的表名称中带OBJ$、UET$、SOURCE$,这些表是在执行CREATE DATABASE语句期间由sql.bsq脚本创建的,一般情况下用户很少访问这些表。脚本catalog.sql(通常位于$ oracle_home/rdbms/admin)在CREATE DATABASE语句之后立即运行,创建数据字典视图。

数据字典视图大致可以分为三类:

  .前缀为USER_的数据字典视图,包含了用户拥有的对象的信息。
  .前缀为ALL_的数据字典视图,包含了用户当前可以访问的全部对象和权限的信息。
  .前缀为DBA_的数据字典视图,包含了数据库拥有的所有对象和权限的信息。

在绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLES和USER_TABLES这样的视图家族。Oracle中有超过100个视图家族,所以要全面介绍这些视图家族是单调乏味的而且没有多大的意义。在下表中列出了最重要和最常用的视图家族,需要注意的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。

其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_ 视图。与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。

在大型系统上化几周时间手工输入每一条语句手工输入带用户名变量的语句,然后再输入每一个用户名,这需要花好几个小时的时间写一条SQL语句,生成需要的ALTER USER语句,然后执行他,这只需要几分钟时间很明显我们将选择生成SQL的方法:

例:

SELECT “ALTER USER”||username||”TEMPORARY TABLESPACE temp;”
FROM DBA_USERS
WHERE username<>“SYS”
AND temporary_tablespace<>“TEMP”;

这个查询的结果将被脱机处理到一个文件中,然后在执行:

ALTER USER SYSTEM TEMPORARY TABLESPACE temp;
ALTER USER OUTLN TEMPORARY TABLESPACE temp;
ALTER USER DBSNMP TEMPORARY TABLESPACE temp;
ALTER USER SCOTT TEMPORARY TABLESPACE temp;
ALTER USER DEMO TEMPORARY TABLESPACE temp;
回复

分类: 未分类 标签: