﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-不再年轻.NET</title><link>http://www.cnblogs.com/jplee/</link><description>一个IT教师眼中的生活.NET、感悟.NET和技术.NET</description><language>zh-cn</language><lastBuildDate>Wed, 10 Feb 2010 04:52:46 GMT</lastBuildDate><pubDate>Wed, 10 Feb 2010 04:52:46 GMT</pubDate><ttl>60</ttl><item><title>PHP 面向对象技术(全面讲解)</title><link>http://www.cnblogs.com/jplee/archive/2007/12/02/980009.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Sun, 02 Dec 2007 06:53:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/12/02/980009.html</guid><description><![CDATA[<p>阅读: 165 评论: 1 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-12-02 14:53 <a href="http://www.cnblogs.com/jplee/archive/2007/12/02/980009.html" target="_blank">原文链接</a></p><font face="Courier New">1.面向对象的概念<br />
面向对象编程（Object Oriented Programming, OOP, 面向对象程序设计）是一种计算机编程<br />
架构，OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成，OOP<br />
达到了软件工程的三个目标：重用性、灵活性和扩展性。为了实现整体运算，每个对象都能够接收<br />
信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题，首先，<br />
面向对象符合人类看待事物的一般规律。其次，采用面向对象方法可以使系统各部分各司其职、各<br />
尽所能。为编程人员敞开了一扇大门，使其编程的代码更简洁、更易于维护，并且具有更强的可重<br />
用性。有人说PHP 不是一个真正的面向对象的语言，这是事实。PHP 是一个混合型语言，你可以使<br />
用OOP，也可以使用传统的过程化编程。然而，对于大型项目，你可能需要在PHP 中使用纯的OOP<br />
去声明类，而且在你的项目里只用对象和类。这个概念我先不多说了，因为有很多朋友远离面向对<br />
象编程的主要原因就是一接触面向对象概念的时候就理解不上去， 所以就不想去学下去了。等读<br />
者看完整篇内容后再去把概念搞明白吧。<br />
2.什么是类，什么是对象，类和对象之间的关系<br />
类的概念：类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一<br />
的抽象描述，其内部包括属性和服务两个主要部分。在面向对象的编程语言中，类是一个独立的程<br />
序单位，它应该有一个类名并包括属性说明和服务说明两个主要部分。<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》66/104<br />
对象的概念：对象是系统中用来描述客观事物的一个实体，它是构成系统的一个基本单位。一<br />
个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说，对象是问题域或<br />
实现域中某些事物的一个抽象，它反映该事物在系统中需要保存的信息和发挥的作用；它是一组属<br />
性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。<br />
类与对象的关系就如模具和铸件的关系，类的实例化结果就是对象，而对一类对象的抽象就是<br />
类。类描述了一组有相同特性（属性）和相同行为（方法）的对象。<br />
上面大概就是它们的定义吧，也许你是刚接触面向对象的朋友， 不要被概念的东西搞晕了，给<br />
你举个例子吧，如果你去中关村想买几台组装的PC 机，到了那里你第一步要干什么，是不是装机<br />
的工程师和你坐在一起，按你提供的信息和你一起完成一个装机的配置单呀，这个配置单就可以想<br />
象成是类，它就是一张纸，但是它上面记录了你要买的PC 机的信息，如果用这个配置单买10 台机<br />
器，那么这10 台机子，都是按这个配置单组成的，所以说这10 台机子是一个类型的，也可以说是<br />
一类的。那么什么是对象呢，类的实例化结果就是对象,用这个配置单配置出来（实例化出来）的<br />
机子就是对象，是我们可以操作的实体，10 台机子，10 个对象。每台机子都是独立的，只能说明<br />
他们是同一类的，对其中一个机做任何动作都不会影响其它9 台机器，但是我对类修改，也就是在<br />
这个配置单上加一个或少一个配件，那么装出来的9 个机子都改变了，这是类和对象的关系(类的<br />
实例化结果就是对象)。<br />
3.什么是面向对象编程呢？<br />
就不说他的概念，如果你想建立一个电脑教室，首先要有一个房间， 房间里面要有N 台电脑，<br />
有N 张桌子， N 把椅子， 白板， 投影机等等，这些是什么，刚才咱们说了，这就是对象，能看<br />
到的一个个的实体，可以说这个电脑教室的单位就是这一个个的实体对象， 它们共同组成了这个<br />
电脑教室，那么我们是做程序，这和面向对象有什么关系呢？开发一个系统程序和建一个电脑教室<br />
类似，你把每个独立的功能模块抽象成类，形成对象，由多个对象组成这个系统，这些对象之间都<br />
能够接收信息、处理数据和向其它对象发送信息等等相互作用。就构成了面向对象的程序。<br />
4.如何抽象出一个类？<br />
上面已经介绍过了，面向对象程序的单位就是对象，但对象又是通过类的实例化出来的，所以<br />
我们首先要做的就是如何来声明类，做出来一个类很容易，只要掌握基本的程序语法定义规则就可<br />
以做的出来，那么难点在那里呢？一个项目要用到多少个类，用多少个对象，在那要定义类，定义<br />
一个什么样的类，这个类实例化出多少个对象，类里面有多少个属性，有多少个方法等等,这就需<br />
要读者通过在实际的开发中就实际问题分析设计和总结了。<br />
类的定义：<br />
class 类名{<br />
}<br />
使用一个关键字class 和后面加上一个你想要的类名以及加上一对大括号， 这样一个类的结构<br />
就定义出来了，只要在里面写代码就可以了，但是里面写什么？能写什么？怎样写才是一个完整的<br />
类呢？上面讲过来，使用类是为了让它实例出对象来给我们用，这就要知道你想要的是什么样的对<br />
象了，像上面我们讲的一个装机配置单上写什么，你装出来的机子就有什么。比如说，一个人就是<br />
一个对象，你怎么把一个你看好的人推荐给你们领导呢？当然是越详细越好了：<br />
首先，你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。<br />
然后，你要介绍这个人能做什么，可以开车，会说英语，可以使用电脑等等。<br />
只要你介绍多一点，别人对这个人就多一点了解，这就是我们对一个人的描述， 现在我们总结<br />
一下，所有的对象我们用类去描述都是类似的，从上面人的描述可以看到， 做出一个类来，从定<br />
义的角度分两部分，第一是从静态上描述，第二是从动态上描述， 静态上的描述就是我们所说的<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》67/104<br />
属性，像上面我们看到的，人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。动态上也<br />
就是人的这个对象的功能，比如这个人可以开车，会说英语，可以使用电脑等等，抽象成程序时，<br />
我们把动态的写成函数或者说是方法，函数和方法是一样的。所以，所有类都是从属性和方法这两<br />
方面去写， 属性又叫做这个类的成员属性，方法叫做这个类的成员方法。<br />
class 人{<br />
成员属性：姓名、性别、年龄、身高、体重、电话、家庭住址<br />
成员方法：可以开车， 会说英语， 可以使用电脑<br />
}<br />
属性：<br />
通过在类定义中使用关键字" var "来声明变量，即创建了类的属性,虽然在声明成员属性<br />
的时候可以给定初始值， 但是在声明类的时候给成员属性初始值是没有必要的，比如说要<br />
是把人的姓名赋上&#8220;张三&#8221;,那么用这个类实例出几十个人，这几十个人都叫张三了，所以<br />
没有必要， 我们在实例出对象后给成员属性初始值就可以了。<br />
如： var $somevar;<br />
方法(成员函数)：<br />
通过在类定义中声明函数，即创建了类的方法。<br />
如： function somefun(参数列表)<br />
{ ... ... }<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//下面是人的成员方法<br />
function say() //这个人可以说话的方法<br />
{<br />
echo "这个人在说话";<br />
}f<br />
unction run() //这个人可以走路的方法<br />
{<br />
echo "这个人在走路";<br />
}<br />
}<br />
?&gt;<br />
上面就是一个类的声明，从属性和方法上声明出来的一个类，但是成员属性最好在声明的时候<br />
不要给初始的值，因为我们做的人这个类是一个描述信息，将来用它实例化对象，比如实例化出来<br />
10 个人对象，那么这10 个人， 每一个人的名字、性别、年龄都是不一样的，所以最好不要在这个<br />
地方给成员属性赋初值，而是对每个对象分别赋值的。<br />
用同样的办法可以做出你想要的类了，只要你能用属性和方法能描述出来的实体都可以定义成<br />
类，去实例化对象。<br />
为了加强你对类的理解，我们再做一个类，做一个形状的类，形状的范围广了点， 我们就做个<br />
矩形吧，先分析一下，想一想从两方面分析，矩形的属性都有什么？矩形的功能都有什么？<br />
class 矩形<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》68/104<br />
{<br />
//矩形的属性<br />
矩形的长；<br />
矩形的宽；<br />
//矩形的方法<br />
矩形的周长；<br />
矩形的面积；<br />
}<br />
&lt;?php<br />
class Rect<br />
{<br />
var $kuan;<br />
var $gao;<br />
function zhouChang()<br />
{<br />
计算矩形的周长；<br />
}f<br />
unction mianJi()<br />
{<br />
计算矩形的面积；<br />
}<br />
}<br />
?&gt;<br />
如果用这个类来创建出多个矩形对象，每个矩形对象都有自己的长和宽， 都可以求出自己的周<br />
长和面积了。<br />
类的声明我们就到这里吧！！<br />
5.如何实例化对象<br />
我们上面说过面向对象程序的单位就是对象，但对象又是通过类的实例化出来的，既然我们类<br />
会声明了，下一步就是实例化对象了。<br />
当定义好类后，我们使用new 关键字来生成一个对象。<br />
$对象名称= new 类名称（）；<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//下面是人的成员方法<br />
function say() //这个人可以说话的方法<br />
{<br />
echo "这个人在说话";<br />
}f<br />
unction run() //这个人可以走路的方法<br />
{<br />
echo "这个人在走路";<br />
}<br />
}<br />
$p1=new Person();<br />
$p2=new Person();<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》69/104<br />
$p3=new Person();<br />
?&gt;<br />
$p1=new Person();<br />
这条代码就是通过类产生实例对象的过程，$p1 就是我们实例出来的对象名称，同理，$p2, $p3<br />
也是我们实例出来的对象名称，一个类可以实例出多个对象，每个对象都是独立的，上面的代码相<br />
当于实例出来3 个人来，每个人之间是没有联系的，只能说明他们都是人类，每个人都有自己的姓<br />
名，性别和年龄的属性，每个人都有说话和走路的方法，只要是类里面体现出来的成员属性和成员<br />
方法，实例化出来的对象里面就包含了这些属性和方法。<br />
对像在PHP 里面和整型、浮点型一样，也是一种数据类，都是存储不同类型数据用的，在运行<br />
的时候都要加载到内存中去用， 那么对象在内存里面是怎么体现的呢？内存从逻辑上说大体上是<br />
分为4 段，栈空间段、堆空间段、代码段、初始化静态段，程序里面不同的声明放在不同的内存段<br />
里面，栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方，比如说整型1，10，<br />
100，1000，10000，100000 等等，在内存里面占用空间是等长的，都是64 位4 个字节。那么数据<br />
长度不定长，而且占有空间很大的数据类型的数据放在那内存的那个段里面呢？这样的数据是放在<br />
堆内存里面的。栈内存是可以直接存取的，而堆内存是不可以直接存取的内存。对于我们的对象来<br />
数就是一种大的数据类型而且是占用空间不定长的类型，所以说对象是放在堆里面的，但对象名称<br />
是放在栈里面的，这样通过对象名称就可以使用对象了。<br />
$p1=new Person();<br />
对于这个条代码， $p1 是对象名称在栈内存里面，new Person()是真正的对象是在堆内存里面<br />
的，具体的请看下图：<br />
从上图可以看出$p1=new Person();等号右边是真正的对象实例，在堆内存里面的实体，上图一<br />
共有3 次new Person()，所以会在堆里面开辟3 个空间，产生3 个实例对象，每个对象之间都是相<br />
互独立的，使用自己的空间，在PHP 里面，只要有一个new 这个关键字出现就会实例化出来一个对<br />
象，在堆里面开辟一块自己的空间。<br />
每个在堆里面的实例对象是存储属性的，比如说，现在堆里面的实例对象里面都存有姓名、性<br />
别和年龄。每个属性又都有一个地址。<br />
$p1=new Person();等号的右边$p1 是一个引用变量，通过赋值运算符&#8220;=&#8221;把对象的首地址赋<br />
给&#8220;$p1&#8221;这个引用变量，所以$p1 是存储对象首地址的变量，$p1 放在栈内存里边，$p1 相当于一<br />
个指针指向堆里面的对象，所以我们可以通过$p1 这个引用变量来操作对象,通常我们也称对象引用<br />
为对象。<br />
6.如何去使用对象中的成员<br />
上面看到PHP 对象中的成员有两种一种是成员属性，一种是成员方法。对象我们以经可以声明<br />
了，$p1=new Person();怎么去使用对象的成员呢？要想访问对象中的成员就要使用一个特殊的操<br />
作符&#8220;-&gt;&#8221;来完成对象成员的访问：<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》70/104<br />
对象-&gt;属性$p1-&gt;name; $p2-&gt;age; $p3-&gt;sex;<br />
对象-&gt;方法$p1-&gt;say(); $p2-&gt;run();<br />
如下面实例:<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//下面是人的成员方法<br />
function say() //这个人可以说话的方法<br />
{<br />
echo "这个人在说话";<br />
}f<br />
unction run() //这个人可以走路的方法<br />
{<br />
echo "这个人在走路";<br />
}<br />
}<br />
$p1=new Person(); //创建实例对象$p1<br />
$p2=new Person(); //创建实例对象$p2<br />
$p3=new Person(); //创建实例对象$p3<br />
//下面三行是给$p1对象属性赋值<br />
$p1-&gt;name=&#8221;张三&#8221;;<br />
$p1-&gt;sex=&#8221;男&#8221;;<br />
$p1-&gt;age=20;<br />
//下面三行是访问$p1对象的属性<br />
echo &#8220;p1对象的名字是：&#8221;.$p1-&gt;name.&#8221;&lt;br&gt;&#8221;;<br />
echo &#8220;p1对象的性别是：&#8221;.$p1-&gt;sex.&#8221;&lt;br&gt;&#8221;;<br />
echo &#8220;p1对象的年龄是：&#8221;.$p1-&gt;age.&#8221;&lt;br&gt;&#8221;;<br />
//下面两行访问$p1对象中的方法<br />
$p1-&gt;say();<br />
$p1-&gt;run();<br />
//下面三行是给$p2对象属性赋值<br />
$p2-&gt;name=&#8221;李四&#8221;;<br />
$p2-&gt;sex=&#8221;女&#8221;;<br />
$p2-&gt;age=30;<br />
//下面三行是访问$p2对象的属性<br />
echo &#8220;p2对象的名字是：&#8221;.$p2-&gt;name.&#8221;&lt;br&gt;&#8221;;<br />
echo &#8220;p2对象的性别是：&#8221;.$p2-&gt;sex.&#8221;&lt;br&gt;&#8221;;<br />
echo &#8220;p2对象的年龄是：&#8221;.$p2-&gt;age.&#8221;&lt;br&gt;&#8221;;<br />
//下面两行访问$p2对象中的方法<br />
$p2-&gt;say();<br />
$p2-&gt;run();<br />
//下面三行是给$p3对象属性赋值<br />
$p3-&gt;name=&#8221;王五&#8221;;<br />
$p3-&gt;sex=&#8221;男&#8221;;<br />
$p3-&gt;age=40;<br />
//下面三行是访问$p3对象的属性<br />
echo &#8220;p3对象的名字是：&#8221;.$p3-&gt;name.&#8221;&lt;br&gt;&#8221;;<br />
echo &#8220;p3对象的性别是：&#8221;.$p3-&gt;sex.&#8221;&lt;br&gt;&#8221;;<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》71/104<br />
echo &#8220;p3对象的年龄是：&#8221;.$p3-&gt;age.&#8221;&lt;br&gt;&#8221;;<br />
//下面两行访问$p3对象中的方法<br />
$p3-&gt;say();<br />
$p3-&gt;run();<br />
?&gt;<br />
从上例中可以看出只是对象里面的成员就要使用对象-&gt;属性、对象-&gt;方法形式访问，再没有第<br />
二种方法来访问对象中的成员了。<br />
7.特殊的引用&#8220;$this&#8221;的使用<br />
现在我们知道了如何访问对象中的成员，是通过&#8220;对象-&gt;成员&#8221;的方式访问的,这是在对象的外<br />
部去访问对象中成员的形式，那么如果我想在对象的内部，让对象里的方法访问本对象的属性，或<br />
是对象中的方法去调用本对象的其它方法这时我们怎么办？因为对象里面的所有的成员都要用对<br />
象来调用，包括对象的内部成员之间的调用，所以在PHP 里面给我提供了一个本对象的引用$this，<br />
每个对象里面都有一个对象的引用$this 来代表这个对象，完成对象内部成员的调用, this 的本意就是<br />
&#8220;这个&#8221;的意思，上面的实例里面，我们实例化三个实例对象$P1、$P2、$P3，这三个对象里面各<br />
自存在一个$this 分别代表对象$p1、$p2、$p3 。<br />
通过上图我们可以看到，$this 就是对象内部代表这个对象的引用，在对象内部和调用本对象的<br />
成员和对象外部调用对象的成员所使用的方式是一样的。<br />
$this-&gt;属性$this-&gt;name; $this-&gt;age; $this-&gt;sex;<br />
$this-&gt;方法$this-&gt;say(); $this-&gt;run();<br />
修改一下上面的实例，让每个人都说出自己的名字，性别和年龄：<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//下面是人的成员方法<br />
function say() //这个人可以说话的方法<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
}f<br />
unction run() //这个人可以走路的方法<br />
{<br />
echo "这个人在走路";<br />
}<br />
}<br />
$p1=new Person(); //创建实例对象$p1<br />
$p2=new Person(); //创建实例对象$p2<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》72/104<br />
$p3=new Person(); //创建实例对象$p3<br />
//下面三行是给$p1对象属性赋值<br />
$p1-&gt;name="张三";<br />
$p1-&gt;sex="男";<br />
$p1-&gt;age=20;<br />
//下面访问$p1对象中的说话方法<br />
$p1-&gt;say();<br />
//下面三行是给$p2对象属性赋值<br />
$p2-&gt;name="李四";<br />
$p2-&gt;sex="女";<br />
$p2-&gt;age=30;<br />
//下面访问$p2对象中的说话方法<br />
$p2-&gt;say();<br />
//下面三行是给$p3对象属性赋值<br />
$p3-&gt;name="王五";<br />
$p3-&gt;sex="男";<br />
$p3-&gt;age=40;<br />
//下面访问$p3对象中的说话方法<br />
$p3-&gt;say();<br />
?&gt;<br />
输出结果为：<br />
我的名字叫：张三性别：男我的年龄是：20<br />
我的名字叫：李四性别：女我的年龄是：30<br />
我的名字叫：王五性别：男我的年龄是：40<br />
分析一下这个方法：<br />
function say() //这个人可以说话的方法<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
}<br />
在$p1、$p2 和$p3 这三个对象中都有say()这个方法，$this 分别代表这三个对象， 调用相应<br />
的属性，打印出属性的值，这就是在对象内部访问对象属性的方式， 如果相在say()这个方法里调<br />
用run()这个方法也是可以的，在say()这个方法中使用$this-&gt;run()的方式来完成调用。<br />
8.构造方法与析构方法<br />
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时，它将自动调用构造函数，也<br />
就是使用new 这个关键字来实例化对象的时候自动调用构造方法。<br />
构造函数的声明与其它操作的声明一样，只是其名称必须是__construct( )。这是PHP5 中的变化，<br />
以前的版本中，构造函数的名称必须与类名相同，这种在PHP5 中仍然可以用，但现在以经很少有<br />
人用了，这样做的好处是可以使构造函数独立于类名，当类名发生改变时不需要改相应的构造函数<br />
名称了。为了向下兼容，如果一个类中没有名为__construct( )的方法，PHP 将搜索一个php4 中的写<br />
法,与类名相同名的构造方法。<br />
格式：function __construct ( [参数] ) { ... ... }<br />
在一个类中只能声明一个构造方法，而是只有在每次创建对象的时候都会去调用一次构造方法，<br />
不能主动的调用这个方法，所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的<br />
时候赋初值。<br />
&lt;?<br />
//创建一个人类<br />
class Person<br />
{<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》73/104<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//定义一个构造方法参数为姓名$name、性别$sex和年龄$age<br />
function __construct($name, $sex, $age)<br />
{<br />
//通过构造方法传进来的$name给成员属性$this-&gt;name赋初使值<br />
$this-&gt;name=$name;<br />
//通过构造方法传进来的$sex给成员属性$this-&gt;sex赋初使值<br />
$this-&gt;sex=$sex;<br />
//通过构造方法传进来的$age给成员属性$this-&gt;age赋初使值<br />
$this-&gt;age=$age;<br />
}/<br />
/这个人的说话方法<br />
function say()<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
}<br />
}<br />
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄<br />
$p1=new Person(&#8220;张三&#8221;，&#8221;男&#8221;, 20);<br />
$p2=new Person(&#8220;李四&#8221;，&#8221;女&#8221;, 30);<br />
$p3=new Person(&#8220;王五&#8221;，&#8221;男&#8221;, 40);<br />
//下面访问$p1对象中的说话方法<br />
$p1-&gt;say();<br />
//下面访问$p2对象中的说话方法<br />
$p2-&gt;say();<br />
//下面访问$p3对象中的说话方法<br />
$p3-&gt;say();<br />
?&gt;<br />
输出结果为：<br />
我的名字叫：张三性别：男我的年龄是：20<br />
我的名字叫：李四性别：女我的年龄是：30<br />
我的名字叫：王五性别：男我的年龄是：40<br />
如图：<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》74/104<br />
析构函数：<br />
与构造函数相对的就是析构函数。析构函数是PHP5 新添加的内容，在PHP4 中没有析构函数。<br />
析构函数允许在销毁一个类之前执行的一些操作或完成一些功能，比如说关闭文件，释放结果集等，<br />
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行，也就是对象在内存中<br />
被销毁前调用析构函数。与构造函数的名称类似，一个类的析构函数名称必须是__destruct( )。析构<br />
函数不能带有任何参数。<br />
格式：function __destruct ( ) { ... ... }<br />
&lt;?<br />
//创建一个人类<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
var $name; //人的名字<br />
var $sex; //人的性别<br />
var $age; //人的年龄<br />
//定义一个构造方法参数为姓名$name、性别$sex和年龄$age<br />
function __construct($name, $sex, $age)<br />
{<br />
//通过构造方法传进来的$name给成员属性$this-&gt;name赋初使值<br />
$this-&gt;name=$name;<br />
//通过构造方法传进来的$sex给成员属性$this-&gt;sex赋初使值<br />
$this-&gt;sex=$sex;<br />
//通过构造方法传进来的$age给成员属性$this-&gt;age赋初使值<br />
$this-&gt;age=$age;<br />
}<br />
//这个人的说话方法<br />
function say()<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
}<br />
//这是一个析构函数，在对象销毁前调用<br />
function __destruct()<br />
{<br />
echo &#8220;再见&#8221;.$this-&gt;name.&#8221;&lt;br&gt;&#8221;;<br />
}<br />
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄<br />
$p1=new Person(&#8220;张三&#8221;，&#8221;男&#8221;, 20);<br />
$p2=new Person(&#8220;李四&#8221;，&#8221;女&#8221;, 30);<br />
$p3=new Person(&#8220;王五&#8221;，&#8221;男&#8221;, 40);<br />
//下面访问$p1对象中的说话方法<br />
$p1-&gt;say();<br />
//下面访问$p2对象中的说话方法<br />
$p2-&gt;say();<br />
//下面访问$p3对象中的说话方法<br />
$p3-&gt;say();<br />
?&gt;<br />
输出结果为：<br />
我的名字叫：张三性别：男我的年龄是：20<br />
我的名字叫：李四性别：女我的年龄是：30<br />
我的名字叫：王五性别：男我的年龄是：40<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》75/104<br />
再见张三<br />
再见李四<br />
再见王五<br />
9.封装性<br />
封装性是面向对象编程中的三大特性之一，封装性就是把对象的属性和服务结合成一个独立的<br />
相同单位，并尽可能隐蔽对象的内部细节，包含两个含义:1.把对象的全部属性和全部服务结合在一<br />
起，形成一个不可分割的独立单位（即对象）。2.信息隐蔽，即尽可能隐蔽对象的内部细节，对外形<br />
成一个边界〔或者说形成一道屏障〕，只保留有限的对外接口使之与外部发生联系。<br />
封装的原则在软件上的反映是：要求使对象以外的部分不能随意存取对象的内部数据（属性），<br />
从而有效的避免了外部错误对它的"交叉感染"，使软件错误能够局部化，大大减少查错和排错的难<br />
度。<br />
用个实例来说明吧，假如某个人的对象中有年龄和工资等属性，像这样个人隐私的属性是不想<br />
让其它人随意就能获得到的，如果你不使用封装，那么别人想知道就能得到，但是如果你封装上之<br />
后别人就没有办法获得封装的属性，除非你自己把它说出去，否则别人没有办法得到。<br />
再比如说，个人电脑都有一个密码，不想让其它人随意的登陆，在你的电脑里面拷贝和粘贴。<br />
还有就是像人这个对象，身高和年龄的属性，只能是自己来增长，不可以让别人随意的赋值等等。<br />
使用private 这个关键字来对属性和方法进行封装：<br />
原来的成员:<br />
var $name; //声明人的姓名<br />
var $sex; //声明人的性别<br />
var $age; //声明人的年龄<br />
function run(){&#8230; &#8230; .}<br />
改成封装的形式：<br />
private $name; //把人的姓名使用private 关键字进行封装<br />
private $sex; //把人的性别使用private 关键字进行封装<br />
private $age; //把人的年龄使用private 关键字进行封装<br />
private function run(){&#8230; &#8230; } //把人的走路方法使用private 关键字进行封装<br />
注意：只要是成员属性前面有其它的关键字就要去掉原有的关键字&#8220;var&#8221;。<br />
通过private 就可以把人的成员（成员属性和成员方法）封装上了。封装上的成员就不能被类外<br />
面直接访问了，只有对象内部自己可以访问；下面的代码会产生错误：<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
private $name; //人的名字，被private封装上了<br />
private $sex; //人的性别, 被private封装上了<br />
private $age; //人的年龄, 被private封装上了<br />
//这个人可以说话的方法<br />
function say()<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
}/<br />
/这个人可以走路的方法, 被private封装上了<br />
private function run()<br />
{<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》76/104<br />
echo "这个人在走路";<br />
}<br />
}<br />
//实例化一个人的实例对象<br />
$p1=new Person();<br />
//试图去给私有的属性赋值， 结果会发生错误<br />
$p1-&gt;name="张三";<br />
$p1-&gt;sex="男";<br />
$p1-&gt;age=20;<br />
//试图去打印私有的属性， 结果会发生错误<br />
echo $p1-&gt;name.&#8221;&lt;br&gt;&#8221;;<br />
echo $p1-&gt;sex.&#8221;&lt;br&gt;&#8221;;<br />
echo $p1-&gt;age.&#8221;&lt;br&gt;&#8221;<br />
//试图去打印私有的成员方法， 结果会发生错误<br />
$p1-&gt;run();<br />
输出结果为：<br />
Fatal error: Cannot access private property Person::$name<br />
Fatal error: Cannot access private property Person::$sex<br />
Fatal error: Cannot access private property Person::$age<br />
Fatal error: Cannot access private property Person::$name<br />
Fatal error: Call to private method Person::run() from context ''<br />
从上面的实例可以看到，私有的成员是不能被外部访问的，因为私有成员只能在本对象内部自<br />
己访问，比如，$p1 这个对象自己想把他的私有属性说出去，在say()这个方法里面访问了私有属性，<br />
这样是可以。（没有加任何访问控制，默认的是public 的，任何地方都可以访问）<br />
//这个人可以说话的方法, 说出自己的私有属性，在这里也可以访问私有方法<br />
function say()<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
//在这里也可以访问私有方法<br />
//$this-&gt;run();<br />
}<br />
因为成员方法say()是公有的， 所以我们在类的外部调用say()方法是可以的，改变上面的代码；<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
private $name; //人的名字，被private封装上了<br />
private $sex; //人的性别, 被private封装上了<br />
private $age; //人的年龄, 被private封装上了<br />
//定义一个构造方法参数为私有的属性姓名$name、性别$sex和年龄$age进行赋值<br />
function __construct($name, $sex, $age)<br />
{<br />
//通过构造方法传进来的$name给私有成员属性$this-&gt;name赋初使值<br />
$this-&gt;name=$name;<br />
//通过构造方法传进来的$sex给私有成员属性$this-&gt;sex赋初使值<br />
$this-&gt;sex=$sex;<br />
//通过构造方法传进来的$age给私有成员属性$this-&gt;age赋初使值<br />
$this-&gt;age=$age;<br />
}/<br />
/这个人可以说话的方法, 说出自己的私有属性，在这里也可以访问私有方法<br />
function say()<br />
{<br />
echo "我的名字叫：".$this-&gt;name." 性别：".$this-&gt;sex." 我的年龄是：<br />
".$this-&gt;age."&lt;br&gt;";<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》77/104<br />
}<br />
}<br />
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄<br />
$p1=new Person(&#8220;张三&#8221;，&#8221;男&#8221;, 20);<br />
$p2=new Person(&#8220;李四&#8221;，&#8221;女&#8221;, 30);<br />
$p3=new Person(&#8220;王五&#8221;，&#8221;男&#8221;, 40);<br />
//下面访问$p1对象中的说话方法<br />
$p1-&gt;say();<br />
//下面访问$p2对象中的说话方法<br />
$p2-&gt;say();<br />
//下面访问$p3对象中的说话方法<br />
$p3-&gt;say();<br />
输出结果为：<br />
我的名字叫：张三性别：男我的年龄是：20<br />
我的名字叫：李四性别：女我的年龄是：30<br />
我的名字叫：王五性别：男我的年龄是：40<br />
因为构造方法是默认的公有方法（构造方法不要设置成私有的），所以在类的外面可以访问到，<br />
这样就可以使用构造方法创建对象， 另外构造方法也是类里面的函数，所以可以用构造方法给私<br />
有的属性赋初值。Say()的方法是默认公有的， 所以在外面也可以访问的到， 说出他自己的私有属<br />
性。<br />
从上面的例子中我们可以看到，私有的成员只能在类的内部使用，不能被类外部直接来存取，<br />
但是在类的内部是有权限访问的，所以有时候我们需要在类的外面给私有属性赋值和读取出来，也<br />
就是给类的外部提供一些可以存取的接口，上例中构造方法就是一种赋值的形式，但是构造方法只<br />
是在创建对象的时候赋值，如果我们已经有一个存在的对象了，想对这个存在的对象赋值，这个时<br />
候，如果你还使用构造方法传值的形式传值，那么就创建了一个新的对象，并不是这个已存在的对<br />
象了。所以我们要对私有的属性做一些可以被外部存取的接口，目的就是可以在对象存在的情况下，<br />
改变和存取属性的值，但要注意，只有需要让外部改变的属性才这样做，不想让外面访问的属性是<br />
不做这样的接口的，这样就能达到封装的目的，所有的功能都是对象自己来完成，给外面提供尽量<br />
少的操作。<br />
如果给类外部提供接口，可以为私有属性在类外部提供设置方法和获取方法，来操作私有属性.<br />
例如：<br />
prvate $age; //私有的属性年龄<br />
function setAge($age) //为外部提供一个公有设置年龄的方法<br />
{<br />
if($age&lt;0 || $age&gt;130) //在给属性赋值的时候，为了避免非法值设置给属性<br />
return;<br />
$this-&gt;age=$age;<br />
}f<br />
unction getAge() //为外部提供一个公有获取年龄的方法<br />
{<br />
return($this-&gt;age);<br />
}<br />
上面的方法是为一个成员属性设置和获取值， 当然你也可以为每个属性用同样的方法对其进行<br />
赋值和取值的操作，完成在类外部的存取工作。<br />
10.__set() __get() __isset() __unset()四个方法的应用<br />
一般来说，总是把类的属性定义为private，这更符合现实的逻辑。但是，对属性的读取和赋值<br />
操作是非常频繁的，因此在PHP5 中，预定义了两个函数&#8220;__get()&#8221;和&#8220;__set()&#8221;来获取和赋值其<br />
属性,以及检查属性的&#8220;__isset()&#8221;和删除属性的方法&#8220;__unset()&#8221;。<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》78/104<br />
上一节中，我们为每个属性做了设置和获取的方法，在PHP5 中给我们提供了专门为属性设置<br />
值和获取值的方法，&#8220;__set()&#8221;和&#8220;__get()&#8221;这两个方法，这两个方法不是默认存在的，而是我们手<br />
工添加到类里面去的，像构造方法(__construct())一样, 类里面添加了才会存在，可以按下面的方式<br />
来添加这两个方法，当然也可以按个人的风格来添加：<br />
//__get()方法用来获取私有属性<br />
private function __get($property_name)<br />
{<br />
if(isset($this-&gt;$property_name))<br />
{<br />
return($this-&gt;$property_name);<br />
}else<br />
{<br />
return(NULL);<br />
}<br />
}/<br />
/__set()方法用来设置私有属性<br />
private function __set($property_name, $value)<br />
{<br />
$this-&gt;$property_name = $value;<br />
}<br />
__get()方法：这个方法用来获取私有成员属性值的,有一个参数，参数传入你要获取的成员属性<br />
的名称，返回获取的属性值，这个方法不用我们手工的去调用，因为我们也可以把这个方法做成私<br />
有的方法，是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了，是不能<br />
直接获取值的（比如：&#8220;echo $p1-&gt;name&#8221;这样直接获取是错误的），但是如果你在类里面加上了这<br />
个方法，在使用&#8220;echo $p1-&gt;name&#8221;这样的语句直接获取值的时候就会自动调用__get($property_name)<br />
方法，将属性name 传给参数$property_name，通过这个方法的内部执行，返回我们传入的私有属性<br />
的值。如果成员属性不封装成私有的，对象本身就不会去自动调用这个方法。<br />
__set()方法：这个方法用来为私有成员属性设置值的，有两个参数，第一个参数为你要为设置<br />
值的属性名，第二个参数是要给属性设置的值，没有返回值。这个方法同样不用我们手工去调用，<br />
它也可以做成私有的，是在直接设置私有属性值的时候自动调用的，同样属性私有的已经被封装上<br />
了， 如果没有__set()这个方法，是不允许的， 比如：$this-&gt;name=&#8216;zhangsan&#8217;, 这样会出错，但<br />
是如果你在类里面加上了__set($property_name, $value)这个方法，在直接给私有属性赋值的时候，<br />
就会自动调用它，把属性比如name 传给$property_name, 把要赋的值&#8220;zhangsan&#8221;传给$value，通过<br />
这个方法的执行，达到赋值的目的。如果成员属性不封装成私有的，对象本身就不会去自动调用这<br />
个方法。为了不传入非法的值， 还可以在这个方法给做一下判断。代码如下：<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性， 都是封装的私有成员<br />
private $name; //人的名字<br />
private $sex; //人的性别<br />
private $age; //人的年龄<br />
//__get()方法用来获取私有属性<br />
private function __get($property_name)<br />
{<br />
echo "在直接获取私有属性值的时候，自动调用了这个__get()方法&lt;br&gt;";<br />
if(isset($this-&gt;$property_name))<br />
{<br />
return($this-&gt;$property_name);<br />
}e<br />
lse<br />
{<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》79/104<br />
return(NULL);<br />
}<br />
}/<br />
/__set()方法用来设置私有属性<br />
private function __set($property_name, $value)<br />
{<br />
echo "在直接设置私有属性值的时候，自动调用了这个__set()方法为私有属性赋值&lt;br&gt;";<br />
$this-&gt;$property_name = $value;<br />
}<br />
}<br />
$p1=new Person();<br />
//直接为私有属性赋值的操作， 会自动调用__set()方法进行赋值<br />
$p1-&gt;name="张三";<br />
$p1-&gt;sex="男";<br />
$p1-&gt;age=20;<br />
//直接获取私有属性的值， 会自动调用__get()方法，返回成员属性的值<br />
echo "姓名：".$p1-&gt;name."&lt;br&gt;";<br />
echo "性别：".$p1-&gt;sex."&lt;br&gt;";<br />
echo "年龄：".$p1-&gt;age."&lt;br&gt;";<br />
?&gt;<br />
程序执行结果：<br />
在直接设置私有属性值的时候，自动调用了这个__set()方法为私有属性赋值<br />
在直接设置私有属性值的时候，自动调用了这个__set()方法为私有属性赋值<br />
在直接设置私有属性值的时候，自动调用了这个__set()方法为私有属性赋值<br />
在直接获取私有属性值的时候，自动调用了这个__get()方法<br />
姓名：张三<br />
在直接获取私有属性值的时候，自动调用了这个__get()方法<br />
性别：男<br />
在直接获取私有属性值的时候，自动调用了这个__get()方法<br />
年龄：20<br />
以上代码如果不加上__get()和__set()方法，程序就会出错，因为不能在类的外部操作私有成员，<br />
而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。<br />
__isset() 方法：在看这个方法之前我们看一下&#8220;isset()&#8221;函数的应用，isset()是测定变量是否设<br />
定用的函数，传入一个变量作为参数，如果传入的变量存在则传回true，否则传回false。那么如果<br />
在一个对象外面使用&#8220;isset()&#8221;这个函数去测定对象里面的成员是否被设定可不可以用它呢？分两种<br />
情况，如果对象里面成员是公有的，我们就可以使用这个函数来测定成员属性，如果是私有的成员<br />
属性，这个函数就不起作用了，原因就是因为私有的被封装了，在外部不可见。那么我们就不可以<br />
在对象的外部使用&#8220;isset()&#8221;函数来测定私有成员属性是否被设定了呢？可以，你只要在类里面加上<br />
一个&#8220;__isset()&#8221;方法就可以了，当在类外部使用&#8221;isset()&#8221;函数来测定对象里面的私有成员是否被设<br />
定时， 就会自动调用类里面的&#8220;__isset()&#8221;方法了帮我们完成这样的操作，&#8220;__isset()&#8221;方法也可以<br />
做成私有的。你可以在类里面加上下面这样的代码就可以了：<br />
private function __isset($nm)<br />
{<br />
echo "当在类外部使用isset()函数测定私有成员$nm时，自动调用&lt;br&gt;";<br />
return isset($this-&gt;$nm);<br />
}<br />
__unset()方法：看这个方法之前呢，我们也先来看一下&#8220;unset()&#8221;这个函数，&#8220;unset()&#8221;这个函<br />
数的作用是删除指定的变量且传回true，参数为要删除的变量。那么如果在一个对象外部去删除对<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》80/104<br />
象内部的成员属性用&#8220;unset()&#8221;函数可不可以呢，也是分两种情况，如果一个对象里面的成员属性<br />
是公有的，就可以使用这个函数在对象外面删除对象的公有属性，如果对象的成员属性是私有的，<br />
我使用这个函数就没有权限去删除，但同样如果你在一个对象里面加上&#8220;__unset()&#8221;这个方法，就<br />
可以在对象的外部去删除对象的私有成员属性了。在对象里面加上了&#8220;__unset()&#8221;这个方法之后，<br />
在对象外部使用&#8220;unset()&#8221;函数删除对象内部的私有成员属性时，自动调用&#8220;__unset()&#8221;函数来帮<br />
我们删除对象内部的私有成员属性，这个方法也可以在类的内部定义成私有的。在对象里面加上下<br />
面的代码就可以了：<br />
private function __unset($nm)<br />
{<br />
echo "当在类外部使用unset()函数来删除私有成员时自动调用的&lt;br&gt;";<br />
unset($this-&gt;$nm);<br />
}<br />
我们来看一个完整的实例：<br />
&lt;?php<br />
class Person<br />
{<br />
//下面是人的成员属性<br />
private $name; //人的名字<br />
private $sex; //人的性别<br />
private $age; //人的年龄<br />
//__get()方法用来获取私有属性<br />
private function __get($property_name)<br />
{<br />
if(isset($this-&gt;$property_name))<br />
{<br />
return($this-&gt;$property_name);<br />
}else {<br />
return(NULL);<br />
}<br />
}/<br />
/__set()方法用来设置私有属性<br />
private function __set($property_name, $value)<br />
{<br />
$this-&gt;$property_name = $value;<br />
}/<br />
/__isset()方法<br />
private function __isset($nm)<br />
{<br />
echo "isset()函数测定私有成员时，自动调用&lt;br&gt;";<br />
return isset($this-&gt;$nm);<br />
}/<br />
/__unset()方法<br />
private function __unset($nm)<br />
{<br />
echo "当在类外部使用unset()函数来删除私有成员时自动调用的&lt;br&gt;";<br />
unset($this-&gt;$nm);<br />
}<br />
}<br />
$p1=new Person();<br />
$p1-&gt;name="this is a person name";<br />
//在使用isset()函数测定私有成员时，自动调用__isset()方法帮我们完成，返回结果为true<br />
echo var_dump(isset($p1-&gt;name))."&lt;br&gt;";<br />
LAMP 大讲堂PHP 面向对象技术（全面讲解）<br />
网站：http://www.phpchina.com 投稿：phper@phpchina.com 《PHPer》81/104<br />
echo $p1-&gt;name."&lt;br&gt;";<br />
//在使用unset()函数删除私有成员时，自动调用__unset()方法帮我们完成，删除name私有属性<br />
unset($p1-&gt;name);<br />
//已经被删除了， 所这行不会有输出<br />
echo $p1-&gt;name;<br />
?&gt;<br />
输出结果为：<br />
isset()函数测定私有成员时，自动调用<br />
bool(true)<br />
this is a person name<br />
当在类外部使用unset()函数来删除私有成员时自动调用的<br />
__set()、__get()、__isset()、__unset() 这四个方法都是我们添加到对象里面的，在需要时自动调<br />
用的，来完成在对象外部对对象内部私有属性的操作。</font>
<img src="http://www.cnblogs.com/jplee/aggbug/980009.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/jplee/archive/2007/12/02/980009.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/12/02/980009.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Ruby编程规范</title><link>http://www.cnblogs.com/jplee/archive/2007/11/11/955725.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Sun, 11 Nov 2007 00:49:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/11/11/955725.html</guid><description><![CDATA[<p>阅读: 81 评论: 0 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-11-11 08:49 <a href="http://www.cnblogs.com/jplee/archive/2007/11/11/955725.html" target="_blank">原文链接</a></p>源代码的整形<br />
<br />
代码缩进<br />
为了增加程序的可读性而进行的适当的缩进，缩进的幅度以2个字符为宜。另外，缩进的时候，只可使用空格，不可使用TAB（编程工具不同的时候，看起来会不一样）<br />
例:<br />
if x &gt; 0<br />
&nbsp;&nbsp;if y &gt; 0<br />
&nbsp; &nbsp; puts "x &gt; 0 &amp;&amp; y &gt; 0"<br />
&nbsp;&nbsp;end<br />
end<br />
<br />
一行的字符数<br />
一行的字符数以80字符（半角）为宜。<br />
<br />
<br />
空行<br />
用空行来区分开复数的类<br />
正例:<br />
class Foo<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
class Bar<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
class Foo<br />
&nbsp;&nbsp;...<br />
end<br />
class Bar<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
另外、类中的各个构成要素之间也需要用空行来隔开。但是，最初的要素之前和最后的要素之后不需要插入空行。<br />
正例:<br />
class Foo<br />
&nbsp;&nbsp;attr :bar<br />
<br />
&nbsp;&nbsp;def baz<br />
&nbsp; &nbsp; ...<br />
&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;def quux<br />
&nbsp; &nbsp; ..<br />
&nbsp;&nbsp;end<br />
end<br />
误例:<br />
class Foo<br />
<br />
&nbsp;&nbsp;attr :bar<br />
<br />
&nbsp;&nbsp;def baz<br />
&nbsp; &nbsp; ...<br />
&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;def quux<br />
&nbsp; &nbsp; ...<br />
&nbsp;&nbsp;end<br />
<br />
end<br />
<br />
注释<br />
方法的定义中不需要注释行。(需要重构的地方应该加上注释。)<br />
但是，对类、模块、或公有方法的注释要使用RDoc的风格来注释。<br />
例:<br />
# コンマ区切の文字列+str+を分割し、結果を配列にして返す。<br />
def split_csv(str)<br />
&nbsp;&nbsp;return str.split(/,/)<br />
end<br />
<br />
<br />
程序结构相关的规约<br />
<br />
类的构成要素<br />
类的构成要素以下记的顺序来记述。<br />
1.&nbsp; &nbsp; 模块的包含<br />
2.&nbsp; &nbsp; 常数的定义<br />
3.&nbsp; &nbsp; 类变量、类实例的定义<br />
4.&nbsp; &nbsp; 类方法的定义<br />
5.&nbsp; &nbsp; 属性方法的定义<br />
6.&nbsp; &nbsp; initialize的定义<br />
7.&nbsp; &nbsp; 公有实例方法的定义<br />
8.&nbsp; &nbsp; 保护类方法的定义<br />
9.&nbsp; &nbsp; 保护属性方法的定义<br />
10.&nbsp; &nbsp; 保护实例方法的定义<br />
11.&nbsp; &nbsp; 私有类方法的定义<br />
12.&nbsp; &nbsp; 私有属性方法的定义<br />
13.&nbsp; &nbsp; 私有实例方法的定义<br />
14.&nbsp; &nbsp; 嵌套类的定义<br />
<br />
<br />
属性方法的定义<br />
在属性方法的定义中，使用attr_accessor、attr_reader、 attr_writer (不使用attr)<br />
<br />
方法的定义<br />
方法的定义中，形参要用括号括起来。但是、没有参数的时候，括号可以省略。<br />
正例:<br />
def foo(x, y)<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
def foo<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
def foo x, y<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
def foo()<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
类方法的定义<br />
类方法的定义的时候要使用self。<br />
正例:<br />
class Foo<br />
&nbsp;&nbsp;def self.foo<br />
&nbsp; &nbsp; ...<br />
&nbsp;&nbsp;end<br />
end<br />
误例:<br />
class Foo<br />
&nbsp;&nbsp;def Foo.foo<br />
&nbsp; &nbsp; ...<br />
&nbsp;&nbsp;end<br />
end<br />
<br />
<br />
方法调用<br />
调用某个方法的时候，参数要用括号括起来。但是，没有参数的时候，括号可以省略。另外，print、puts、p的时候，也可已省略参数。<br />
正例:<br />
foo(1, "abc")<br />
obj.foo(1, "abc")<br />
bar<br />
print "x = ", x, "\n"<br />
误例:<br />
foo 1, "abc"<br />
obj.foo 1, "abc"<br />
bar()<br />
<br />
代码块<br />
一个代码块基本上使用do ... end来包括起来<br />
正例:<br />
foo(x, y) do<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
x = bar(y, z) do<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
foo(x, y) {<br />
&nbsp;&nbsp;...<br />
}<br />
<br />
x = bar(y, z) {<br />
&nbsp;&nbsp;...<br />
}<br />
<br />
但是，方法链使用的时候，用{ ... }来包括起来。([color = red]我觉得这里应该是当块代码写一行的时候用{}</font>)<br />
正例:<br />
s = ary.collect { |i| i.to_s }.join(",")<br />
误例:<br />
s = ary.collect do |i| i.to_s end.join(",")<br />
return<br />
方法有返回值的时候、必须使用return来明示。 另外、return的括号可以省略。<br />
例:<br />
def add(x, y)<br />
&nbsp;&nbsp;return x + y<br />
end<br />
误例:<br />
def add(x, y)<br />
&nbsp;&nbsp;x + y<br />
end<br />
<br />
def add(x, y)<br />
&nbsp;&nbsp;return(x + y)<br />
end<br />
<br />
<br />
yield<br />
yield的调用方法遵照方法的调用规则。<br />
<br />
<br />
条件分支<br />
If语句的then可以省略。另外、如果是if !x的时候、 请用unless x来置换。但是，unless的时候、 不使用else。还有，非常简单的条件，一行能够写下来的时候，直接使用if/while也可。<br />
正例:<br />
if x &gt; 0<br />
&nbsp;&nbsp;puts "x &gt; 0"<br />
else<br />
&nbsp;&nbsp;puts "x &lt;= 0"<br />
end<br />
<br />
unless x<br />
&nbsp;&nbsp;puts "x is false"<br />
end<br />
<br />
puts "x is true" if x<br />
误例:<br />
if x &gt; 0 then<br />
&nbsp;&nbsp;puts "x &gt; 0"<br />
end<br />
<br />
unless x<br />
&nbsp;&nbsp;puts "x is false"<br />
else<br />
&nbsp;&nbsp;puts "x is true"<br />
end<br />
<br />
puts "foo &amp;&amp; bar &amp;&amp; baz &amp;&amp; quux" if foo &amp;&amp;<br />
&nbsp;&nbsp;bar &amp;&amp; baz &amp;&amp; quux<br />
<br />
能使用case、请使用case。 省略掉then。<br />
正例:<br />
case x<br />
when 1<br />
&nbsp;&nbsp;...<br />
when 2<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
if x == 1<br />
&nbsp;&nbsp;...<br />
elsif x == 2<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
case x<br />
when 1 then<br />
&nbsp;&nbsp;...<br />
when 2 then<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
<br />
不要直接使用条件分支作为代入值。<br />
正例:<br />
if x &gt; 0<br />
&nbsp;&nbsp;msg = "x &gt; 0"<br />
else<br />
&nbsp;&nbsp;msg = "x &lt;= 0"<br />
end<br />
误例:<br />
msg = if x &gt; 0<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;"x &gt; 0"<br />
&nbsp; &nbsp;&nbsp; &nbsp;else<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;"x &lt;= 0"<br />
&nbsp; &nbsp;&nbsp; &nbsp;end<br />
<br />
<br />
循环<br />
While语句do省略。另外、while !x的时候、 请使用until x。<br />
正例:<br />
while cond<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
until cond<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
while cond do<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
另外、无限循环的时候，使用loop。<br />
正例:<br />
loop do<br />
&nbsp;&nbsp;...<br />
end<br />
误例:<br />
while true<br />
&nbsp;&nbsp;...<br />
end<br />
<br />
逻辑运算符<br />
逻辑运算中，使用!、&amp;&amp;、||。 (not/and/or不使用。)<br />
<br />
三项运算符<br />
除非有明确的可读性，尽量不要使用三项运算符。 特别是、括号等必要的条件复杂的时候、跨行的时候、不使用三项运算符。<br />
<br />
<br />
字符串<br />
字符串基本上使用"..."的形式。但是，只有在某些特殊文字的场合，使用'...'的形式。 另外、原则上不使用&#8220;here document&#8221;<br />
<br />
命名规约<br />
全体<br />
1.&nbsp; &nbsp; 原则上、不建议使用省略的单词。<br />
2.&nbsp; &nbsp; 作用域小的变量、i, j, k等单字母，顺序使用。<br />
3.&nbsp; &nbsp; 作用域小的变量、使用类名的省略语也没有关系。 (例: eo = ExampleObject.new)<br />
<br />
<br />
类名和模块名<br />
类以及模块名、每个单词的头一个字母大写、不要使用&#8217;_&#8217;（下划线）等分隔符。 但是、像HTTP这样的通用缩略语，全体大写也可。<br />
正例:<br />
ExampleClass&nbsp;&nbsp;<br />
HTTPClient<br />
误例:<br />
Example_Class<br />
EXAMPLE_CLASS<br />
HttpClient<br />
HTTPclient<br />
HTTP_Client<br />
方法名<br />
方法名は、全部小写、各个单词之间用&#8217;_&#8217;分隔。方法名中请使用动词的原形。<br />
正例:<br />
add_something<br />
误例:<br />
addsSomething<br />
Add_Something<br />
返回真假值的方法的命名、在动词或形容词后追加&#8217;?&#8217;、形容词的时候，不用添加&#8217;is_&#8217;。<br />
正例:<br />
visible?<br />
误例:<br />
is_visible<br />
is_visible?<br />
另外、破坏性和非破坏性的方法都提供的时候、在破坏性的方法名后追加&#8217;!&#8217;。<br />
例:<br />
split<br />
split! # 具有破坏性的split<br />
<br />
常数名<br />
类・模块名以外的常数名、全部用大写、单词之间用&#8217;_&#8217;来分隔。<br />
例:<br />
EXAMPLE_CONSTANT<br />
<br />
变量名<br />
变量名中、全部用小写、单词之间用&#8217;_&#8217;来分隔。<br />
例:<br />
tmp<br />
local_variable<br />
@instance_variable<br />
$global_variable<br />
文件名<br />
在文件名中、全部使用小写字母、单词之间用&#8217;_&#8217;来分隔。 另外、可以把文件中主要的类名变成小写后作为文件名来使用。(把模块作为命名空间来使用的时候，同时使用目录名，可以体现出构造的阶层来。)<br />
例:<br />
foo.rb # 定义了类Foo<br />
foo-bar.rb # 定义了类FooBar<br />
foo/bar-baz.rb # 定义了类Foo::BarBaz<br />
<img src="http://www.cnblogs.com/jplee/aggbug/955725.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/jplee/archive/2007/11/11/955725.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/11/11/955725.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>入门级PHP程序员面试题</title><link>http://www.cnblogs.com/jplee/archive/2007/11/09/954468.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Fri, 09 Nov 2007 07:59:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/11/09/954468.html</guid><description><![CDATA[<p>阅读: 298 评论: 1 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-11-09 15:59 <a href="http://www.cnblogs.com/jplee/archive/2007/11/09/954468.html" target="_blank">原文链接</a></p>简述题(50分)<br />
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)<br />
2、echo(),print(),print_r()的区别(3分)<br />
3、能够使HTML和PHP分离开使用的模板(1分)<br />
5、使用哪些工具进行版本控制？(1分)<br />
6、如何实现字符串翻转？(3分)<br />
---------------------------------------------------------------<br />
7、优化MYSQL数据库的方法。(4分，多写多得)<br />
8、PHP的意思(送1分)<br />
9、MYSQL取得当前时间的函数是?，格式化日期的函数是(2分)<br />
10、实现中文字串截取无乱码的方法。(3分)<br />
---------------------------------------------------------------<br />
11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?(1分)<br />
12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?(1分)<br />
13、请简单阐述您最得意的开发之作(4分)<br />
14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)<br />
-----------------------------------------------------------------<br />
15、用PHP写出显示客户端IP与服务器IP的代码1分)<br />
16、语句include和require的区别是什么?为避免多次包含同一<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%C4%BC%FE">文件</span>，可用(?)语句代替它们? (2分)<br />
17、如何修改SESSION的生存时间(1分).<br />
18、有一个网页地址, 比如PHP开发资源网主页: <a href="http://www.phpres.com/index.html" target="_blank">http://www.phpres.com/index.html</a>,如何得到它的内容?($1分)<br />
19、在HTTP 1.0中，状态码401的含义是(?)；如果返回&#8220;找不到文件&#8221;的提示，则可用 header 函数，其语句为(?);(2分)<br />
12、在PHP中，heredoc是一种特殊的字符串，它的结束标志必须?(1分)<br />
13、谈谈asp,php,jsp的优缺点(1分)<br />
14、谈谈对mvc的认识(1分)<br />
-------------------------------------------------------------------<br />
15、写出发贴数最多的十个人名字的SQL，利用下表：members(id,username,posts,pass,email)(2分)<br />
16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用？(2分)<br />
17. 在PHP中error_reporting这个函数有什么作用？ (1分)<br />
18. 请写一个函数验证电子邮件的格式是否正确 (2分)<br />
19. 简述如何得到当前执行脚本路径，包括所得到参数。(2分)<br />
20.如何修改SESSION的生存时间. (1分)<br />
--------------------------------------------------------------------<br />
21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)<br />
22、JS的转向函数是?怎么引入一个外部JS文件?(2分)<br />
23、foo()和@foo()之间有什么区别？(1分)<br />
24、如何声明一个名为&#8221;myclass&#8221;的没有方法和属性的类？ (1分)<br />
25、如何实例化一个名为&#8221;myclass&#8221;的对象？(1分)<br />
26、你如何访问和设置一个类的属性？ (2分)<br />
27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别？ (1分)<br />
--------------------------------------------------------------------<br />
28、GD库是做什么用的？ (1分)<br />
29、指出一些在PHP输入一段HTML代码的办法。(1分)<br />
30、下面哪个函数可以打开一个文件，以对文件进行读和写操作？(1分)<br />
&nbsp; &nbsp; (a) fget()&nbsp;&nbsp;(b) file_open()&nbsp; &nbsp;(c) fopen()&nbsp; &nbsp;(d) open_file()<br />
31、下面哪个选项没有将 john 添加到users 数组中？ (1分)<br />
&nbsp; &nbsp; (a) $users[] = &#8216;john&#8217;;<br />
&nbsp; &nbsp; (b) array_add($users,&#8217;john&#8217;);<br />
&nbsp; &nbsp; (c) array_push($users,&#8216;john&#8217;);<br />
&nbsp; &nbsp; (d) $users ||= &#8216;john&#8217;;<br />
32、下面的程序会输入是否?(1分)<br />
&nbsp; &nbsp; &lt;?php<br />
&nbsp; &nbsp;&nbsp; &nbsp;$num = 10;<br />
&nbsp; &nbsp;&nbsp; &nbsp;function multiply(){<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$num = $num * 10;<br />
&nbsp; &nbsp;&nbsp; &nbsp;}<br />
&nbsp; &nbsp;&nbsp; &nbsp;multiply();<br />
&nbsp; &nbsp;&nbsp; &nbsp;echo $num;<br />
&nbsp; &nbsp; ?&gt;<br />
<br />
33、使用php写一段简单查询，查出所有姓名为&#8220;张三&#8221;的内容并打印出来 (2分)<br />
表名User<br />
Name Tel Content Date<br />
张三 13333663366 大专毕业 2006-10-11<br />
张三 13612312331 本科毕业 2006-10-15<br />
张四 021-55665566 中专毕业 2006-10-15<br />
<br />
请根据上面的题目完成代码：<br />
$mysql_db=mysql_connect("local","root","pass");<br />
@mysql_select_db("DB",$mysql_db);<br />
<br />
34、如何使用下面的类,并解释下面什么意思?(3)<br />
<br />
class test{<br />
&nbsp; &nbsp;function Get_test($num){<br />
&nbsp; &nbsp;&nbsp; &nbsp;$num=md5(md5($num)."En");<br />
&nbsp; &nbsp;&nbsp; &nbsp;return $num;<br />
&nbsp; &nbsp;}<br />
}<br />
----------------------------------------------------------------------------<br />
35、写出 SQL语句的格式 : 插入 ，更新 ，删除 (4分)<br />
&nbsp; &nbsp;表名User<br />
&nbsp; &nbsp;Name Tel Content&nbsp;&nbsp;Date<br />
&nbsp; &nbsp;张三 13333663366&nbsp;&nbsp;大专毕业 2006-10-11<br />
&nbsp; &nbsp;张三 13612312331&nbsp;&nbsp;本科毕业 2006-10-15<br />
&nbsp; &nbsp;张四 021-55665566 中专毕业 2006-10-15<br />
&nbsp;&nbsp;(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中<br />
&nbsp;&nbsp;(b) 请用sql语句把张三的时间更新成为当前系统时间<br />
&nbsp;&nbsp;(c) 请写出删除名为张四的全部记录<br />
36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)<br />
37、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段(1分)<br />
38、写出以下程序的输出结果 (1分)<br />
&nbsp; &nbsp;&lt;?<br />
&nbsp; &nbsp; $b=201;<br />
&nbsp; &nbsp; $c=40;<br />
&nbsp; &nbsp; $a=$b&gt;$c?4:5;<br />
&nbsp; &nbsp; echo $a;<br />
&nbsp; &nbsp;?&gt;<br />
39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)<br />
-----------------------------------------------------------------------------<br />
40、取得查询结果集总数的函数是?(1分)<br />
41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)<br />
42、请将41题的数组的值用','号分隔并合并成字串输出(1分)<br />
43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)<br />
44、PHP可以和sql server/oracle等数据库连接吗?(1分)<br />
45、请写出PHP5权限控制修饰符(3分)<br />
46、请写出php5的构造函数和析构函数(2分)<br />
------------------------------------------------------------------------------<br />
<br />
47、以下请用PHPMYADMIN完成<br />
<br />
(一)创建新闻发布系统，表名为message有如下字段 (3分)<br />
<br />
id 文章id<br />
title 文章标题<br />
content 文章内容<br />
category_id 文章分类id<br />
hits 点击量<br />
<br />
(二)同样上述新闻发布系统：表comment记录用户回复内容，字段如下 (4分)<br />
<br />
comment_id 回复id<br />
id 文章id，关联message表中的id<br />
comment_content 回复内容<br />
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序，回复最高的排在最前面<br />
文章id 文章标题 点击量 回复数量<br />
用一个SQL语句完成上述查询，如果文章没有回复则回复数量显示为0<br />
<br />
(三)上述内容管理系统，表category保存分类信息，字段如下 (3分)<br />
<br />
category_id int(4) not null auto_increment;<br />
categroy_name varchar(40) not null;<br />
用户输入文章时，通过选择下拉菜单选定文章分类<br />
写出如何实现这个下拉菜单
<img src="http://www.cnblogs.com/jplee/aggbug/954468.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/jplee/archive/2007/11/09/954468.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/11/09/954468.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>VS 2008 and .NET 3.5 Beta 2 Released (转)</title><link>http://www.cnblogs.com/jplee/archive/2007/08/20/862624.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Mon, 20 Aug 2007 05:22:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/08/20/862624.html</guid><description><![CDATA[<p>阅读: 118 评论: 2 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-08-20 13:22 <a href="http://www.cnblogs.com/jplee/archive/2007/08/20/862624.html" target="_blank">原文链接</a></p><h2 class="pageTitle">VS 2008 and .NET 3.5 Beta 2 Released </h2>
<div class="post">
<div class="postsub">
<div incrementviewcount="true"><font face="arial" size="2">
<p>I'm very pleased to announce that the Beta 2 release of VS 2008 and .NET 3.5 Beta2 is now available for download.&nbsp; You can download the Visual Studio 2008 product <a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx" target="_blank">here</a>.&nbsp; You can alternatively download the smaller VS 2008 Express Editions <a href="http://msdn2.microsoft.com/en-us/express/future/bb421473.aspx" target="_blank">here</a>.&nbsp; </p>
<p>VS 2008 and Visual Web Developer&nbsp;2008 Express can be installed side-by-side with VS 2005.&nbsp; .NET 3.5 Beta2 also includes a go-live license which allows you to build and deploy applications into production.</p>
<p><u><strong>Very Important</strong></u>: Please read my "Installation Notes" at the bottom of this blog post for a few post-installation steps you must make to ensure everything runs well.&nbsp; One of these steps fixes a side-by-side issue we found with ASP.NET AJAX.&nbsp; </p>
<h3><u>Quick Tour of Some of the New Features for Web Development</u></h3>
<p>Over the last few months I've written several blog posts that discuss some of the new improvements in this release.&nbsp; Below is a quick summary list of several of them that I have already published.&nbsp; This list is by no means exhaustive - there are a lot more things I haven't had a chance to blog about yet (stay tuned for more posts!):</p>
<p><u><strong>VS 2008 Multi-Targeting Support</strong></u></p>
<p>VS 2008 enables you to build applications that target multiple versions of the .NET Framework.&nbsp; You can learn more about how this works from my blog post here: </p>
<ul>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/06/20/vs-2008-multi-targeting-support.aspx" target="_blank">VS 2008 Multi-Targeting Support</a></li>
</ul>
<p><u><strong>VS 2008 Web Designer and CSS Support</strong></u></p>
<p>VS 2008 includes a significantly improved HTML web designer.&nbsp; This delivers support for split-view editing, nested master pages, and great CSS integration.&nbsp; Below are two articles I've written that discuss this more:</p>
<ul>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/25/vs-2008-web-designer-and-css-support.aspx" target="_blank">VS 2008 Web Designer and CSS Support</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/09/vs-2008-nested-master-page-support.aspx" target="_blank">VS 2008 Nested Master Page Support</a></li>
</ul>
<p>ASP.NET also has a new &lt;asp:ListView&gt; control that I'll be blogging about in the near future.&nbsp; It delivers very flexible support for data UI scenarios, and allows full customization of the markup emitted.&nbsp;&nbsp;It works nicely with the new CSS support in VS 2008.</p>
<p><strong><u>ASP.NET AJAX and JavaScript Support</u></strong></p>
<p>.NET 3.5 has ASP.NET AJAX&nbsp;built-in (and adds new features like UpdatePanel support with WebParts, WCF support for JSON, and a number of bug fixes and performance improvements).&nbsp; VS 2008 also has great support for integrating JavaScript and AJAX into your applications:</p>
<ul>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx" target="_blank">VS 2008 JavaScript Intellisense</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx" target="_blank">VS 2008 JavaScript Debugging</a></li>
</ul>
<p>I will be doing a blog post in the next few days that talks more about some of the ASP.NET AJAX specific improvements, as well as how to upgrade existing ASP.NET AJAX 1.0 applications to use them.</p>
<p><u><strong>Language Improvements and LINQ</strong></u></p>
<p>The new VB and C# compilers in VS 2008 deliver significant improvements to the languages.&nbsp; Both add functional programming concepts that enable you to write cleaner, terser, and more expressive code.&nbsp; These features also enable a new programming model we call LINQ (language integrated query) that makes querying and working with data a first-class programming concept with .NET.&nbsp; </p>
<p>Below are some of the articles I've written that explore these new language features using C#:</p>
<ul>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx" target="_blank">Automatic Properties, Object Initializer and Collection Initializers</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx" target="_blank">Extension Methods</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx" target="_blank">Lambda Expressions</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/04/21/new-orcas-language-feature-query-syntax.aspx" target="_blank">Query Syntax</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/05/15/new-orcas-language-feature-anonymous-types.aspx?CommentPosted=true" target="_blank">Anonymous Types</a> </li>
</ul>
<p><strong><u>Data Access Improvements with LINQ to SQL</u></strong>
<p>LINQ to SQL is a built-in OR/M (object relational mapper) in .NET 3.5.&nbsp; It enables you to model relational databases using a&nbsp;.NET object model.&nbsp; You can then query the database using LINQ, as well as update/insert/delete data from it.&nbsp; LINQ to SQL fully supports transactions, views, and stored procedures.&nbsp; It also provides an easy way to integrate business logic and validation rules into your data model.&nbsp; Below are some of the articles I've written that explore how to use it:</p>
<ul>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx" target="_blank">Part 1: Introduction to LINQ to SQL</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx" target="_blank">Part 2: Defining our Data Model Classes</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx" target="_blank">Part 3: Querying our Database</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx" target="_blank">Part 4: Updating our Database</a>
    <li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx" target="_blank">Part 5: Binding UI using the ASP:LinqDataSource Control</a></li>
</ul>
<p>I'll be adding several more articles to my series above in the weeks ahead.&nbsp; I think you'll find that LINQ to SQL makes it dramatically easier to&nbsp;build much cleaner data models, and write much cleaner data code.</p>
<p><u><strong>Lots of other improvements</strong></u></p>
<p>The list above is only a small set of the improvements coming.&nbsp; For client development VS 2008 includes WPF designer and project support.&nbsp; ClickOnce and WPF XBAPs now work with FireFox.&nbsp; WinForms and WPF&nbsp;projects can also now use the ASP.NET Application Services (Membership, Roles, Profile) for roaming user data.&nbsp;Office development is much richer - including support for integrating with the Office 2007 ribbon.&nbsp; WCF and Workflow projects and designers are included in VS 2008.&nbsp; Unit testing support is now much faster and&nbsp;included in VS Professional (and no longer just VSTS).&nbsp; Continuous Integration support is now built-in with TFS.&nbsp; AJAX web testing (unit and load) is now supported in the VS Test SKU.&nbsp; And there is much, much more...</p>
<h3><u>Important Installation Notes - PLEASE READ!</u></h3>
<p>There are two important things you should do immediately after installing VS 2008 and .NET 3.5 Beta2:</p>
<p>1) You should download and&nbsp;<a href="http://download.microsoft.com/download/7/9/2/79268325-1006-4566-bd26-5581b8971f36/DisableAjaxPolicy.EXE" target="_blank">run this batch file</a>.&nbsp; This takes only a few seconds to run, and fixes an issue we found earlier this week with the version policy of System.Web.Extensions.dll - which is the assembly that contains ASP.NET AJAX.&nbsp; If you don't run this batch file, then existing ASP.NET 2.0 projects built with ASP.NET AJAX 1.0 and VS 2005 will end up automatically picking up the new version of ASP.NET AJAX that ships in .NET 3.5 Beta2.&nbsp; This will work and run fine - but cause you to inadvertently introduce a .NET 3.5 dependency in the applications you build with VS 2005.&nbsp; Running the batch file will change the version binding policy of the new System.Web.Extensions.dll assembly and ensure that you only use the new .NET 3.5 ASP.NET AJAX version with projects that you are explicitly building for .NET 3.5.</p>
<p>2) If you have ever installed a previous version of "Orcas" or VS 2008 on your machine (either Beta1 or one of the CTP versions), you need to reset your VS 2008 settings after installing Beta2.&nbsp; If you don't do this, you'll have an odd set of settings configured (some windows will be in the wrong place), and you'll potentially see some IDE performance slowness.&nbsp; You can reset your settings by typing "DevEnv /resetsettings" on the command-line against the VS 2008 version of the IDE:</p>
<p><img src="http://www.scottgu.com/blogposts/beta2ship/step1.jpg"  alt="" /> </p>
<h3><u>Summary</u></h3>
<p>There are a lot of new improvements and enhancements&nbsp;that I hope you'll find really useful with VS 2008 and .NET 3.5.&nbsp; Stay tuned to my blog over the next few weeks as I'll be posting more about some of the new features and how to get the most out of them.</p>
<p>Thanks,</p>
<p>Scott</p>
</font></div>
</div>
</div>
<img src="http://www.cnblogs.com/jplee/aggbug/862624.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/jplee/archive/2007/08/20/862624.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/08/20/862624.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>股市与广告（转）</title><link>http://www.cnblogs.com/jplee/archive/2007/06/01/767881.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Fri, 01 Jun 2007 08:20:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/06/01/767881.html</guid><description><![CDATA[<p>阅读: 60 评论: 0 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-06-01 16:20 <a href="http://www.cnblogs.com/jplee/archive/2007/06/01/767881.html" target="_blank">原文链接</a></p><span style="FONT-SIZE: 16px" twffan="done">本轮大盘经典语录<br>1、美特斯邦威：不跌寻常股<br>2、特步： 跌停,死一般的感觉<br>3、百事：跌停无极限<br>4、森马：上什么公司,跌什么票<br>5、脑白金：今年跌停不整人,要整只整老百姓<br>6、汇仁肾宝：他跌我也跌<br>7、李宁：跌停,一切皆有可能<br>8、旺旺：你跌,我跌,大家跌,跌跌<br>9、农夫山泉：跌停有点烦<br>10、好迪：大家跌，才是真的跌、<br>11、白加黑：上午跌蓝筹，不瞌睡；下午跌绩优，睡不着.<br>12、联想：股票不跌停，股市会怎么样<br>13、娃哈哈：妈妈~~我也要抄底！<br>14、清嘴：你知道跌停的味道吗？<br>15、安踏：我抄底，我喜欢！<br>16、NIKE：Just 抄 it！<br>17、钙中钙：现在的跌停啊，它含金量高，跌一天顶过去五天，实惠！你瞧我，一口气跌了5天，不反弹&nbsp;</span>
<img src="http://www.cnblogs.com/jplee/aggbug/767881.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/jplee/archive/2007/06/01/767881.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/06/01/767881.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>相声文本《我是黑社会》－－郭德纲、于谦 </title><link>http://www.cnblogs.com/jplee/archive/2007/03/04/663215.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Sun, 04 Mar 2007 00:59:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/03/04/663215.html</guid><description><![CDATA[<p>阅读: 752 评论: 2 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-03-04 08:59 <a href="http://www.cnblogs.com/jplee/archive/2007/03/04/663215.html" target="_blank">原文链接</a></p><div>郭：感谢朋友们，看见你们我打心里边痛快。这个演员大伙都知道，驴谦。在相声界<br>于：不不不，于谦。<br>郭：于。<br>于：哎，对了，<br>郭：马户于嘛。<br>于：还是驴啊这个。马户还念驴。<br>郭：哪个？<br>于：于呀，干勾于呀。<br>郭：干勾于呀干勾驴啊？<br>于：没有驴，这里头。<br>郭：于谦，于老师，观众很喜欢。走到街上，说相声的哎，有叫不上名字的，姓于，于，他就站住了。<br>于：我还真听话啊，还站住了。<br>郭：观众喜欢嘛。<br>于：那也没有当牲口那么叫的。<br>郭：我也喜欢您哪，所有的舞台上的艺术，我都爱。<br>于：啊您喜欢艺术。<br>郭：我当然，好多东西你做的了专业？这不一定。挡不住我喜欢。<br>于：这是爱好。<br>郭：长笛儿，<br>于：喜欢笛子？<br>郭：我吹过笛子。当当当当当当当当当当（步步高音乐声），<br>于：是笛子曲子吗？<br>郭：爱这个，我跟我媳妇儿说了，我死那天，把这笛子跟我一块儿埋了。<br>于：您就这么爱啊？<br>郭：爱这个。<br>于：到头了。<br>郭：唢呐，当当当当当当当当当当（步步高音乐声），我跟我媳妇儿说了，我死那天，一块儿给我埋了于：啊。<br>郭：二胡，<br>于：这都是民乐啊。<br>郭：当当当当当当当当当当（步步高音乐声），我死，一块儿埋。我回头看见编钟了，当当当当当当当当当.<br>于：这多闹得亨啊，<br>郭：我媳妇说了，国家好容易刨出来的。<br>于：折腾编钟。<br>郭：我有的时候特别佩服人家乐队阿，一个小笛子，一个小乐器，能让大伙儿高兴，哎呀了不起啊，人往高处走，水往低处流，人人都想有成绩，给社会带来欢乐。<br>于：作贡献嘛。<br>郭：造福人民。我怎么就不行呢？<br>于：您也可以造福人民啊，<br>郭：哪行哪业都对老百姓有益，走在街上，我在这站着吧，三教九流，男女老少，不管什么行业的，他的工作对这个社会就有益处。哪怕说一个赶大车送菜的，打郊区来四脖子汗流赶一大车拉着一千斤白菜，牲口跑着拿大鞭子，多累啊，啪，驾驾驾！WOWOWO 他累不累，但他很快乐。你看着很枯燥阿，这有什么，驾驾驾！WOWOWO<br>于：就是赶车嘛。<br>郭：你没有他咱们怎么吃菜啊？<br>于：没人送。<br>郭：我看着我佩服得不得了。我就想夸两句。谁是我儿子？<br>于：他说？<br>郭：WOWOWO。哎呀，给人民带来快乐。<br>于：谁给谁带来快乐呀？<br>郭：最起码我快乐了很多。谁是我孙子？WOWOWO。哎呀！呵！<br>于：这位也不长记性。<br>郭：谁是王八？<br>于：他说什么呀？<br>郭：拎着鞭子过来了。<br>于：要抽你那是。<br>郭：他又不厚道的一面儿。<br>于：这也不是谁不厚道。<br>郭：但是我已经很快乐了。<br>于：占便宜了嘛。<br>郭：乐得我牙都快碎了。<br>于：什么人性阿？<br>郭：美死我了。庆祝一下吧。<br>于：这还庆祝？<br>郭：买二斤螃蟹。秋高气爽正是河蟹肥的时候。来二斤，拣那大个儿挑。拎着这50多个螃蟹回家。<br>于：二斤螃蟹约50多个呀？多大个儿螃蟹呀？<br>郭：（比划）这么大吧。<br>于：您倒不怕当5分钱给花了？<br>郭：你见过团脐的5分？<br>于：亏了您还能看出团脐来啊？<br>郭：棋子儿蟹嘛。<br>于：哪儿有棋子儿蟹啊？<br>郭：围棋蟹嘛。<br>于：瞎起名字这就。<br>郭：拿家去上锅蒸，跟我爸爸坐一块儿，吃，敞开了吃，您这饭量来四个没问题。<br>于：啊？饿吐血了都。<br>郭：老头儿也高兴， （喝酒、包蟹）<br>于：你爸爸这是包螃蟹呢还是克毛豆呢？吃螃蟹有这动作的吗？<br>郭：细致嘛，慢工出巧活儿嘛。<br>于：不细致怎么出肉啊？<br>郭：老头一边儿吃，我就烦他这个。破嘴，得得得得得，你也干点儿正事儿，你说你混成这样一天到晚的连个正形都没有，你瞧瞧人家，开车的买大楼房的，你看看你，你一无所有，你脚下的地在抖，你身边的水在流，你的手在颤抖，心中的泪在流。<br>于：你爸爸姓崔？<br>郭：你爸爸叫健！讨厌，我爸爸说我呢。<br>于：说你别唱歌词啊。<br>郭：（转向于谦）听话，爸爸说你都是为了你好。<br>于：你冲那边儿说去！<br>郭：（转向外边）我说爸爸您别生气啊。<br>于：呵，这时候转过来吧！<br>郭：很三俗嘛你。我说您说这个干什么啊，我不混得挺好吗？别废话，我还不知道你吗？沾酒就醉，见世则迷，遇财起意，提笔忘字。你就一个优点，一瞧见大娘们眼就变数码的了。快吃快吃，哪这么些话啊，我就这样，怎么着吧？你就不听话吧！小兔崽子！我说爸爸您可别说这个阿，千万别说孩子是小兔崽子，从遗传学说对家长不利。我爸爸急了，撸胳膊挽袖子，老娘跟你拼了！<br>于：母兔子还是？<br>郭：哎？<br>于：打架有说这词儿的吗?<br>郭：我爸好诙谐，<br>于：这时候开什么玩笑阿。<br>郭：小玩XUE吗。<br>于：你爸爸太没溜了。<br>郭：啊？ 我爸爸没溜？你还没见过我大爷呢。<br>于：更没溜阿。<br>郭：我大爷不光没溜，人缘还不好。在天安门那儿打死就地埋了15年没人问。他一天到晚没正形，打架去，出去打架给人平事儿去。拿菜刀砍人家，偷人苹果，什么都干过。<br>于：整个一流氓。<br>郭：我劝过他，大爷您别这样。管我？你管我？我是道上的，以后你有事大爷给你平。我这一辈子活开了，我这样很快乐。知道吗？你别老往上看，有事往下看。<br>于：怎么往下看啊？<br>郭：往下看你会活得很快乐。我想了想，他说的有道理。人活着就是这样，你老往上看，你好不了。往下瞧。你做买卖你赔钱了？那还有跳楼的呢。跟他比你很快乐。对不对?<br>于：我没跳楼。<br>郭：你这儿生一闺女你恨得慌，那还有没孩子的呢。<br>于：奥，对对对。<br>郭：你这儿失业了，那儿还有失身的呢。<br>于：这没可比性知道吗？<br>郭：你媳妇不要你了，她也没要我呀。<br>于：去！跟你有什么关系呀？<br>郭：我一想有道理，可是大爷我要跟您一块学，这缺点德，鬼神的我心里受不得。孩子别信那个。人干点好事总想让鬼神知道，干点坏事总以为鬼神不知道。我们太让鬼为难啦。痛痛快快的，该怎么着怎么着吧。我一想有道理啊，目前来看吧我这辈子要说当个总统够呛。<br>于：甭够呛了，压根儿就没戏。<br>郭：我也是这么认为的，那我就不如我跟我大爷一块，我们走上另一条道路。<br>于：什么道路啊？<br>郭：你看，你非挤兑我说出来。我不能说我怕他们知道了逮我。（大声：我是黑社会的。）我可不能说啊。<br>于：还不说哪？您都嚷出来啦。<br>郭：我们这组（一声）织你知道吗？<br>于：还组（一声）织？<br>郭：看过电影《古惑仔》吗？看过吧？对对，我们就一块的。香港那黑社会洪兴社知道吗？我就洪兴的。不过我们不是总部，我们是分社的。我牛栏山的。<br>于：二锅头，二锅头两瓶。<br>郭：我们那个组（一声）织，你以后有事你得用着我呀。<br>于：我有什么事儿能用着您哪？<br>郭：黑社会的。你看我穿的多黑。<br>于：我这也是黑的。<br>郭：你是我照的。<br>于：没有那么大反劲儿。<br>郭：你有事你保不齐就得求我。<br>于：我能有什么事求你？<br>郭：你万事不求人？你们家就没事？我举个例子吧，哎，你们家什么事儿呢？嫂子吧，嫂子不舒服。你媳妇儿，前列腺犯了。跟王大爷那一样。<br>于：哪儿有王大爷啊？<br>郭：解不出手来。<br>于：没有啊，女的没有这病。<br>郭：没有啊？腿坏了吧，腿坏了，大夫给你接，接反了。俩磕膝盖冲后。上街，哎呀，（比划狗跑）<br>于：狗啊是怎么着？磕膝盖冲后是狗知道吗？<br>郭：医疗si 故嘛。<br>于：事故那叫。<br>郭：我给你平事去，我让那个大夫他们家天天换玻璃。<br>于：砸人玻璃去？<br>郭：扔大粪也行啊。不过那得单加钱啊，<br>于：为什么？<br>郭：那当然了，你想啊，你抓砖头和抓粪感觉不一样。<br>于：哎呀，您这黑社会还真够脏的，我告诉您吧。<br>郭：有事儿你说话，我们这都是修炼出来的人。不是说一上来你就能人五人六的如何如何，不是。我刚开始进这行都瞧不起我。<br>于：哪行都这样。<br>郭：同行他欺负我。走一对脸儿过来了，啪~<br>于：这就一嘴巴？<br>郭：一大嘴巴，人家纹着一身花儿，光着膀子，这两条带鱼。<br>于：瞧清楚了，二龙戏珠。<br>郭：我也纳闷，打我也不敢还嘴，人家比我进门早。（捂着脸）干吗打我呀？你怎么不戴帽子呢?你说这是道理吗？<br>于：管得着管不着啊。<br>郭：那不要紧的，进这行守这行的规矩。转天戴个帽子出来。<br>于：这就行了。<br>郭：走一对脸，啪~<br>于：还打？<br>郭：谁让你戴帽子的？哪儿说理去？我得找我大爷去，他是这行里边的前辈。给我出主意呀，老欺负我你说说他呀。走到我大爷家门口，我一听打我这个跟我大爷正说话呢。我打了他了，怎么怎么着，我大爷说这不对啊，你打人得有个原因阿，什么叫戴帽子没戴帽子？你得打他个心服口服啊。知道吗？比如说你可以这样，走一个对脸你跟他说，去，给我找一大姑娘去，他给你找来了，要是胖的你就骂他，为什么不找一瘦的？啪~找一瘦的你为什么不找一胖的？啪~去！给我找件褂子去，要找一西装你打他，啪~为什么不找制服？找来制服了啪~为什么不找西装?<br>于：没事找事。<br>郭：我一听我不能进去，我大爷不向着我。转天走对脸儿碰见了，过来！你干吗？怎么着？给我找一大姑娘去！找一胖的找一瘦的？<br>于：哎，两头堵。<br>郭：他都愣了。呀？给我找件衣裳去！要西装要制服？呵！啪~你怎么不戴帽子呢？<br>于：好嘛，要打你怎么都能打你。<br>郭：我找我大爷去了，我退出去行吗，我不干这行了。你们这行忒不说理了啊。谁想得到又问回来了呢？我大爷劝我：不要紧的，慢慢来，知道吗，这是锻炼你的心理素质。打你疼吗？疼啊，练去！练挨打，练完挨打练打人，你以后就能独当一面了。我教你，先学大砍刀。<br>于：先练刀？<br>郭：砍人。我说我不敢，练呐。（抡右胳膊）尤其这胳膊，你没劲不行，这胳膊得有劲，练，抡，拿刀，劈。一般这手抓着，这手劈。你好比说这有一个人了，你就拿刀这么砍他。刚开始练得时候你别这样，你托块面。然后你拿刀（做削面动作），练。<br>于：您练得时候前边搁一锅吗？<br>郭：（思考，点头）恩<br>于：恩啊？那就是刀削面，知道吗？不是砍人。<br>郭：练功嘛，白天我在我大爷他们单位练这个，爷俩一块练。白天练刀，晚上练掌。掌怎么练啊？我大爷有一个练功室，瞧不见阿，烟雾弥漫。挨打的都趴好了，一丝不挂，我大爷拿手巾把手缠上，怕伤着人嘛，（搓背动作）哈，哈，挨打的喊：&#8220;呵，爷们儿，呵！&#8221;<br>于：您这工作，白天削面晚上搓澡。<br>郭：练功！<br>于：练什么功啊这个.<br>郭：我还练跑步呢，轻功啊，万一警察追你呢？跑啊，早晨四点就得起，出去练轻功去。刚一出来警察过来了，嘿，喊我，我心里不亏啊，没那事儿，我虽说我自己知道我是黑社会的啊，他不知道。<br>于：也就自己知道。<br>郭：干吗？晨练不许吗？许，回去把裤子穿上。<br>于：干什么也没有光着出来的。<br>郭：起猛了。<br>于：您这人也太拉赫了。<br>郭：跑，打家跑，跑到昆明湖，哎呀，什么时候我能跟古代的人似的，跟水面儿上腾腾腾腾过去，<br>那是轻功。。。。。我就行了。跟这看着。望水兴叹。有高人，小子，愿意学吗？教给你，回去练，腿上绑沙袋，天天跑，一天比一天沙袋沉，三个月打这儿你过去没问题，轻功成了。高人，我谢谢您！回去弄沙袋，天天跑，一天比一天沙袋沉，到最后解开这个身轻如燕。来到昆明湖这儿，我仨月练成了，站这腾腾腾腾过去了，身上没水。<br>于：好功夫！<br>郭：冬天冻上了。<br>于：这摔跟头出溜也过去了知道吗？<br>郭：也行。<br>于：什么也行啊。就这功夫啊？<br>郭：打这起我算成功了。打这起我就了不起了。有几个小弟跟着我。<br>于：您还有兄弟？<br>郭：那边有一孩子，14了，不上学了，非跟着我混，好，来，孩子，有发展，有出息。人往低处走，水往低处流。<br>于：全下来啊？<br>郭：还有一下岗工人，拄着拐，我也跟你混，好！跟我，跟我走，你当我保镖。<br>于：残疾啊？<br>郭：还有一哥们儿，小儿麻痹，摇着轮椅也跟着我。<br>于：黑社会？福利院吗这不是？<br>郭：（郭冲于做削面动作）削死你我告诉你吧。<br>郭：带着这仨我满处走，高兴，庆祝一下吧，吃饭，喝酒，痛快痛快！咱们这组（一声）织算成立了。来，来半瓶啤酒，咱几个人一醉方休！<br>于：酒量太小了。<br>郭：一人来一两，一人来一两，哎呀，玩命的吃，庆祝一下啊，成立了嘛。来，来碗拉面。酒足饭饱，这肚子吃得就跟下午五点半的马甸似的。撑死我了，高兴，一走，哎，我手机呢？呵，我都黑社会了还有人偷我？打一电话，哎，通了。一般偷手机的不敢开啊，偷完就关了。我这个他开着呢。哎，我手机在你那儿呢?阿，在我这儿呢。呵，还敢跟我这样说话？你跟哪儿呢？你40分钟你上清河找我来。我我怕你？我有队伍的人。把车摇过来，来，拄上拐，你，蹬自行车驮着我，走，清河平事儿去！孩子蹬着我，坐后边搂着腰，后边还跟一拄拐的，还一摇轮椅的。<br>于：黑社会太惨了！<br>郭：到清河累坏了。（喘气，打电话）你在哪儿呢？我们到清河了。才来呀？一个半小时以后，鼓楼见！（放下电话）我弄死你我！蹬着车，拄着拐，摇轮椅，摇了一半儿，摇轮椅这个说了，我退出行吗？我手都破啦，我不去了。削死你<br>于：行啦！<br>郭：到鼓楼打电话，你在哪儿呢？我们到了。怎么才到啊？50分钟，前门见！走，快点儿快点，快蹬，拄拐这个偷着就跑了。就剩我俩玩命蹬，蹬道前门，打电话，你在哪儿呢?你怎么这会儿才到阿？20分钟，菜户营见！这孩子下来了，你自己骑着去吧！我受不了了。<br>于：车都给你了。<br>郭：我蹬，蹬到菜户营等着，我今儿弄死你！我削死你，我搓死你！敢偷我手机！正看着呢，来辆公共汽车，车门一开，司机下来了。下回坐车阿，警醒着点儿，手机落车上了。<br>于：哎哟，这仨人退出得太冤了。<br>郭：他走了我才明白，我跟着819跑了一圈！<br>于：嗨！这趟线儿您算是明白了。<br>郭：哎，累坏了我了，小弟们也不跟着我了，我一个人儿一样啊，<br>于：自己干啦？<br>郭：我有能力啊，文武双全我怕什么啊？最起码门口儿这趟街是我的！我收保护费！<br>您凭什么管人收保护费阿？<br>郭：推门就进来了，以后按月交保护费知道吗？出去！你看这是哪儿？派出所！<br>于：让你出去真不错了。<br>郭：一身冷汗阿。斜对门海鲜城，<br>于：这是买卖。<br>郭：七层楼海鲜城，有钱，我的！推门我就进去了，嚯！水族箱里都是螃蟹。嘿嘿嘿，螃蟹！哎哎哎，龙虾！哎哎哎，鲍鱼啊！<br>于：黑社会什么都没见过。<br>郭：四个保安把我搀出去了。<br>于：那是轰出去了。<br>郭：最后他们要不推我，我真以为是搀呢。我想了想，我是干什么来的？我是收保护费来的。又回来了。经理呢？你们老板呢？叫出来！<br>于：横劲儿来了。<br>郭：老板来了，哟，您是？黑社会的，收保护费来了。奥，您好，以后您多关照！那不要紧的，今儿不能白来啊，我得吃你。您看看您喜欢吃什么？我喜欢吃什么，你也没有别的，我就喜欢吃这带壳的。好，给抓把瓜子儿。<br>于：海鲜城蹭瓜子儿去？<br>郭：（吃瓜子）我一边走我恨啊，<br>于：真吃啊？您要脸不要脸啊？<br>郭：我以后我上你这儿来！<br>于：谁让你来了？<br>郭：哼！我才不去呢，请我我也不去！我上那边。那边还一家呢，那叫什么，迪厅啊。蹦迪的地儿。晚上开门我去了。到门口，我收保护费的来了。奥，那边买票，去，我是黑社会的，买票去！等着我啊！买完票回来：（拿着票）你敢不让我进？你敢不让我进？<br>于：废话，有票谁拦你呀？<br>郭：吓死你呀！迈步进来坐在这，那音乐啊，咚咚咚，我那个心哪噔噔噔啊，救命啊，太闹得慌了。救命啊，保安过来捏着鼻子翘开嘴给我倒速效。就你这个货还有脸出来？给我送家去了。我一想我没有人家我活不了阿，我给他们做了个锦旗，写着&#8220;人民卫士&#8221;我给送去了。<br>于：哎呀呵，太给黑社会丢脸了。<br>郭：以后你们这儿有事提我。<br>于：还提你干吗啊？提你？<br>郭：酒吧，我到酒吧去收保护费。往这一坐，来杯酒！咚咚咚，倒杯酒，坐这喝，啊，哎呀呵，不错呀，你看我今天来啤酒打折。<br>于：天天儿打折。<br>郭：谁告诉你的？谁告诉你的？欺负人啊，我是黑社会的。（接着喝）哎呀呵，喝着喝着喝太多了，我得上厕所，掏出一张条来写着：我是黑社会的，我往里边吐了口痰。压在我这杯上。<br>于：怕人偷走。<br>郭：上厕所去了，回来一看，没人敢动，还在那儿（喝酒）啊，（看纸条）：我不是黑社会的，我也吐了口痰。（作呕吐状）我想了又想啊。<br>于：还有脸想啊？<br>郭：（再次作呕吐状）直恶心！<br>于：是恶心啊，我都替你恶心。<br>郭：你也喝了？<br>于：没有！<br>郭：我要先看条就对了。我就忘了这茬了，先喝的。<br>于：太自信了您也。<br>郭：回来我想了又想，为什么他们不怕我？没纹身哪。<br>于：就靠这个？<br>郭：人家身上的那个龙都满了。我要使扎那个疼吗？<br>于：当然疼了。<br>郭：我才不犯那傻呢。<br>于：您？<br>郭：拿小孩儿贴的那个。<br>于：贴画儿？<br>郭：我来大个儿的。贴满全身。不要蓝的，都贴蓝的，没意思，给我来那红的。贴红龙。后背，给我粘满了。粘好了，穿个小褂，哎呀，北京人不好骗，我上车站吧。<br>于：火车站?<br>郭：火车站外地人多。我得吓唬外地人。往这一站，一解开，等火车的老乡们都吓坏了。呵，黑社会的！我刚说完下雨了。这帮人都往后退，退到房檐儿底下。<br>于：躲雨阿。<br>郭：我要过去劳驾，借光，我背雨，没身份了。雨里边也站着。40多分钟，雨停了。我这儿都花儿了。把钱都拿出来吧！我是收保护费的！<br>于：还要钱呢。<br>郭：老乡们看看我，你这都流血了。走吧！我是黑社会的，我后背还有呢，解开衣裳，看后边，看后边，我是黑社会的！老乡们乐了，你见过哪个黑社会的还纹着蜡笔小新呢？<br>于：嗨！<br>郭：我很尴尬，但是我不怕。我自己可以唱歌。<br>于：唱什么？<br>郭：大象，大象。<br>于：别唱了，再唱真是蜡笔小新了。<br>郭：我说我是黑社会的。可怜可怜我吧！真管用啊，纹身太管用了。给五毛的，给一块的，有给苹果的，还有一小孩儿给我半块饼。<br>于：哎呀，拿您当要饭的了。<br>郭：我琢磨着这不对呀，道儿上没有这样的，这怎么回事，我挺恨得慌得。我要往家走，那儿有一卖烤白薯的，我当一脚踢在炉子上了，我收保护费的！他一挥手来40多个都烤白薯的，这顿打我呀，一边打一边说，我们原来也是收保护费的。但凡好干谁干这个呀？我说几位前辈别别别，弄您一手色。前辈们我刚进这行，怎么能挣钱？怎么不能挣钱阿？我们这都学好了，还有你这没羞没臊的。找夜总会，哪怕给那些小姐们拔创呢。你也能挣钱。对呀，我很喜欢上那个地方去，风化场所，我虽说没消费过，但我也。。。。。。老太太呀？我一看岁数不小了，30，怎么的了？出什么事了？今天又来玩的客人，不给钱，说好了给钱不给钱，还欺负人，还骂人，还打人。我说 太不象话了，应该给你多少钱?100。我先给。<br>于：你给呀？<br>郭：先拿着。在哪屋呢？我给你拔创去。噔噔噔往楼上走，我说就是你呀，出来消费来了不懂吗？啊？这是什么地方？这是玩笑的场所啊，花钱的所在。你不带钱能出来吗？我告诉你，你的性质很严重，把钱给了！不给！怎么着？有辙你想去！呵，我告诉你，我这是擦了，知道吗？<br>于：嗨，别提这个了。<br>郭：我要不擦我能吓你一跳。你真不给吗？真不给！当然不给就不给，咱们交一朋友也好嘛。<br>于：交朋友？<br>郭：以后上这儿有事你提我。哎，这还像句人话。大哥怎么称呼？我叫于谦儿。<br>于：不是啊！</div>
<img src="http://www.cnblogs.com/jplee/aggbug/663215.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/jplee/archive/2007/03/04/663215.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/03/04/663215.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>股票与幽默</title><link>http://www.cnblogs.com/jplee/archive/2007/02/24/654875.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Sat, 24 Feb 2007 07:00:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/02/24/654875.html</guid><description><![CDATA[<p>阅读: 233 评论: 1 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-02-24 15:00 <a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654875.html" target="_blank">原文链接</a></p><span>初恋――叫"朦胧利好"；谈朋友――叫"选股"；脚踏两只船――叫"备选股"；订婚――叫"建仓"；结婚――叫"成交"；生子――叫"配股"；超生――叫"增发"；婚后感情――叫"箱形整理"；感情不合却又离不掉――叫"套牢"；离婚成功――"解套"。吵架――叫"振荡"分手――叫"割肉"；失恋――叫"跌停"；热恋――叫"涨停"；包二奶――叫"投资组合"；第三者――叫"黑马"；移情别恋――叫"换股操作"；缘分――叫"投机"；寂寞――叫"空仓"；再婚――叫"资产重组"；复婚――叫"反弹"；再婚后又离婚――叫"崩盘"；涉外婚姻――叫"外资并购"；老公――叫"筹码"；老婆――叫"控盘主力" <br></span>
<img src="http://www.cnblogs.com/jplee/aggbug/654875.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654875.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654875.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>武林外传之炒股风波</title><link>http://www.cnblogs.com/jplee/archive/2007/02/24/654696.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Fri, 23 Feb 2007 17:44:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/02/24/654696.html</guid><description><![CDATA[<p>阅读: 201 评论: 2 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-02-24 01:44 <a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654696.html" target="_blank">原文链接</a></p><span style="FONT-SIZE: 12px" twffan="done">演员：佟湘玉、白展堂、郭芙蓉、李大嘴、小贝、小六、秀才<br><br>　　语言：佟湘玉（山西）、李大嘴（河南）、小贝（天津）<br><br>　　场景：秀才算帐、佟整理吧台、白擦桌子、李扫地 <br><br>　　开场白：（武林外传片头音乐起）2006年底，一头&#8220;疯牛&#8221;闯进了中国老百姓的视线，沪深大盘分别突破2600点和6000点大关，内地股市市值首次过万亿美元，继日本和香港之后排名亚洲第三&nbsp;&nbsp;<br><br>。2007年1月，上证指数强力上攻3000点关口，沪深两市开户总数达到8000万，一场轰轰烈烈的炒股风潮席卷了大江南北。同时，也诞生了一个新的&#8220;种族&#8221;――&#8220;基民&#8221;。这股风也吹到了远在七侠镇的同福客栈，引出了一场啼笑皆非的炒股风波。（音乐渐无）<br><br>　　佟：这都11点了，咋还没客人来吃饭呢。<br><br>　　白：最近股市特火，大家都跑营业厅去了，11点半才散呢。<br><br>　　郭（咳嗽着出场）<br><br>　　佟：哎呀，小郭你流感还没好呢，在后面休息去吧，今天算你带薪假。<br><br>　　郭：不行，我心里不放心，秀才，咱养的那两只&#8220;基&#8221;怎么样了啦。（坐在桌旁给自己倒水）<br><br>　　佟：&#8220;鸡&#8221;！（惊声尖叫）小郭你莫不是得了禽流感了吧。<br><br>　　秀：（只说话不抬头）Of course not. It mean&#8217;s fund。<br><br>　　佟：啥？方的？那是个啥玩意儿嘛？<br><br>　　白：什么方的、圆的。秀才说的是基金，一种投资方式，现在是风靡全中国，连老头老太太都抢着买。<br><br>　　李：唉，小郭，买基金赚钱吗？（抱着扫帚站在郭和秀之间，离郭近）<br><br>　　郭：赚啊，比抢银行容易多了。选基金要选历史收益高的，收益率最少得在100以上，什么景顺呀、上投呀、嘉时呀，只要名字里带&#8220;成长&#8221;的就买。<br><br>　　秀：（停笔抬头，身子微掮）去银行开个帐户，再办个网上银行，24小时都能下单子，倍儿方便。一天就得上涨百分之二三，那一天才涨百分之零点几的根本就不惜得看。（继续算帐）<br><br>　　郭：你猜买这样的基金要花多少钱？<br><br>　　李：我觉得怎么也得五六文吧？<br><br>　　郭：五六文？！那是分红前，买的时候才1文起（李伸出手来比划4，做吃惊状）。你别吃惊，还不打折。你得研究基金公司的运作方式，他们是借鸡下蛋，一分钱不掏，投资好了，不但买他基金的人多了，他自己还能多受益。所以，愿意分给你两文的基金根本不在乎再多分你两文。<br><br>　　秀：什么叫好基金，你知道吗？就是不管大盘是涨是跌，都能保持较高的收益。所以，我们买基金的口号就是。（边说边走，走到郭身边） <br>&nbsp; &nbsp;&nbsp; &nbsp; 秀：不买最好，只买最贵。（两人做&#8220;说悄悄话&#8221;状，下场）<br><br>　　李：真的呀，那我娶媳妇儿的钱可有着落了。（边走边说，做畅想状）<br><br>　　白：得了吧，哪那么容易就让你挣那么多钱呀，优质基金那是凤毛麟角，而且投资期都长&nbsp;&nbsp;<br><br>。再说了，买基金最少要1000文，你那200文还是存银行吧，听说又要加息了。<br><br>　　（goal，goal，goal音乐）<br><br>　　郭：秀才，我觉得有点头晕，扶我回去休息。<br><br>　　六：军工，涨停！涨停！涨停！军工板块立功了，军工板块立功了！不要给空头任何的机会。<br><br>　　伟大的中国A股的泡沫们！他继承了泡沫们的光荣的传统！有色、食品、资源在这一刻灵魂附体！军工一个板块他代表了中国A股悠久的历史和传统，在这一刻他不是一个板块在上涨，他不是一个板块！<br><br>　　他面对的是全世界A股股民的目光和期待。<br><br>　　涨停封死了！多头们获得了胜利。他们没有再一次倒在抛售者面前，伟大的泡沫！伟大的中国投机者！胜利属于金融，属于房地产，属于保资，属于基金，属于QFII，属于所有热爱A股的人！股民们今天赚钱快乐！A股万岁！（兴奋激动状）<br><br>　　佟：小六这是咋了，早上吃了啥不干净的东西了吧。<br><br>　　李：六儿，快坐，喝点水压压，你这是弄啥咧？<br><br>　　白：他说的是股市。<br><br>　　李：赌市！那不赌博吗？俺娘说了不能耍钱？<br><br>　　六：不是赌市，是股市，就是炒股赚钱，来钱快，抄上个涨停板，一天就能赚10％。（手势）<br><br>　　李：真的呀，那我娶小妾的钱都有着落了。（做畅想状）<br><br>　　白：拉倒吧，股市比基金风险高多了，现在是&#8220;菜鸟&#8221;加&#8220;泡沫&#8221;，和赌博差不多。（失望）<br><br>　　六：胡说，现在股指还太低，比恒指差远了，上涨空间大得很，牛市万岁！<br><br>　　李：那咋买呀，200文够吗？（兴奋，凑到六旁边）<br><br>　　六：多少都行，走我带你入市去。（下场）<br><br>　　李：唉妈呀，那什么，掌柜的，那我请个假啊。<br><br>　　佟：不行，你走了谁做饭啊。<br><br>　　李：我一会儿就回来，等我圈着牛了，我请你们吃饭。牛啊！你等着我！（伸着手跑出去）<br><br>　　佟：疯咧，全疯咧。<br><br>　　贝：嫂子、嫂子，先预支我1000串儿糖葫芦钱行吗？（冲上来）<br><br>　　佟：干啥？<br><br>　　贝：买股票啊，今天大涨。 <br>&nbsp; &nbsp;&nbsp; &nbsp; 佟：小贝，你懂股票吗？<br><br>　　贝：我堂堂一派掌门怎么会不懂呢？老白，MUSIC。<br><br>　　白：&#8230;&#8230;<br><br>　　贝：始终不满仓，涨跌心不慌。浅套要止损，深套就死扛。（自己做动作）&nbsp;&nbsp;<br><br><br><br>　　白：还一套一套的，说得好听，做起来难。<br><br>　　贝：哎呀嫂子行不行啊。（撒娇）。<br><br>　　佟：不行，炒股太危险了。<br><br>　　贝：不危险，现在是牛市，上不封顶，你不懂。<br><br>　　佟：我咋不懂咧，我吃的盐比你吃的饭多。<br><br>　　贝：那是你口重。<br><br>　　佟：那我走的桥还比你走的路多呢。<br><br>　　贝：那是我懒得动。<br><br>　　佟：这娃儿还敢犟嘴，展堂。<br><br>　　白：葵花点穴手。<br><br>　　贝：哎呀，我好命苦啊，要是我哥还在就好了。（撒泼耍赖）<br><br>　　佟：好好好，拗不过你，钱给你，但是一定要小心啊。<br><br>　　贝：知道了（唱着歌跳着出去）<br><br>　　佟：唉，展堂，你咋懂那么多咧？<br><br>　　白：曾经，我也是股市中的风云人物，人送外号&#8220;白百万&#8221;。（唱）曾经年少爱炒股，一心只想把钱赚，走遍了深圳上海，满眼都是涨停板。谁知道，忽如一夜政策来，大盘跳水个股发呆，不到半月我就百万变白板，现在只得沦为打工仔，这都是血泪换来的教训啊。<br><br>　　贝（哭着进来）<br><br>　　佟：咋的了，小贝，谁欺负你了。<br><br>　　白：没什么，肯定是高点入市遇上大盘调整，被套牢了。<br><br>　　佟：哎呀，这回你明白股市的厉害了吧，（武林外传片尾曲）股市有风险，入市要慎重。<br><br>　　白：仅以此片献给那些奋斗在股市和基金第一线的同志们！多多发财！<br><br>　　（全剧终）</span> <br>
<img src="http://www.cnblogs.com/jplee/aggbug/654696.html?type=1" width="1" height="1" alt=""/><p>评论: 2　<a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654696.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/02/24/654696.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>武林外传经典对话大全(转)</title><link>http://www.cnblogs.com/jplee/archive/2007/01/03/610409.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Wed, 03 Jan 2007 02:28:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/01/03/610409.html</guid><description><![CDATA[<p>阅读: 135 评论: 1 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-01-03 10:28 <a href="http://www.cnblogs.com/jplee/archive/2007/01/03/610409.html" target="_blank">原文链接</a></p>1.人在江湖飘，谁能不挨刀？白驼山壮骨粉，内用外服均有奇效。挨了刀涂一包，还想再挨第二刀，闪了腰吃一包，活到二百不显老。白驼山壮骨粉，青春的粉，友谊的粉，华山论剑指定营养品，本镇各大药铺医馆均有销售，购买时，请认准黑蛤蟆防伪标志，呱，呱&#8230;&#8230; <br>2.各回各家，各找各妈！&nbsp; <br>3.到了山顶才了现，错误的路和正确的路就差那么几步 <br>4.夹着尾巴做人，才叫侠 <br>5.不蒸馒头争口气 <br>6.老白：你的刀呢？ <br>　刑捕头：手中无刀，心中有刀。 <br>　老白：错了，最高境界是手中无刀，心中也无刀。 <br>（然后两人拉开架势——石头剪子布！）　　 <br>　刑捕头输，抗议：你不是说手中无刀，心中也无刀吗？ <br>　老白：对呀，我这是剪子，不是刀！ <br>7.美丽不打折——姐姐叫美丽，妹妹叫打折 <br>8.啊，我那炽热的肱二头肌啊~~~&nbsp;！ <br>9.老板娘对李大嘴绝食疑惑ING:平时不饿你都吃,现在两天不吃都不饿? <br>10.秀才：小郭，最近怎么样？有什么困难就说，&nbsp;没有困难制造困难也要说~！~！&nbsp;　　 <br>11.小郭：我不会唱歌阿。 <br>　&nbsp;老白：没事，崔大哥不在，可以假唱&nbsp;~~~ <br>12.佟湘玉：如果一个人让你感激你会愿意把命交给他，如果一个人让你感动你会愿意把 <br>自己给他。 <br>13.张寡妇决定请大家去她家吃豆腐 <br>14.你一会儿看云一会儿看我&nbsp;,你看云的时候离云很远 <br>　&nbsp;你看我的时候离我很近 <br>15.老虎不发威，你当我是HOLLO&nbsp;KITTY <br>16.照顾好我7舅姥爷 <br>17.您大人不记小人过，宰相肚里能撑船，月落呜啼霜满天，夫妻双双把家还 <br>18.额服了you,额尊敬you,额的内心崇拜you <br>19.你们说我是那么爱钱的人么？ <br>　&nbsp;你就是！ <br>　&nbsp;我羞 <br>　&nbsp;知道羞就好 <br>　&nbsp;羞并快乐着 <br>20.站在天堂看地狱，人生就象情景剧，站在地狱看天堂，为谁辛苦为谁忙 <br>21.抓贼，有时候就是这么简单 <br>22.我看好你哟~ <br>23.迷信迷信，就是先迷后信，把你忽悠迷糊了，你也就不得不信了 <br>24.里面的人听着，交出臭豆腐蛋，释放人质 <br>25.你去没去过天下第&lt;二&gt;泉。我听人说起过&lt;二&gt;次。在第&lt;二&gt;泉旁边有个&lt;二&gt;清观。在那个道观里，有&lt;二&gt;个道士。他们喜欢在第&lt;二&gt;泉旁边拉&lt;二&gt;胡，曲子就叫&lt;二&gt;泉映月 <br>26.我吃的盐比你吃的饭都多&nbsp; <br>那是你口重&nbsp; <br>我过的桥比你走的路都多&nbsp; <br>那是我不乐意动&nbsp; <br>27.小贝：我是掌门！&nbsp; <br>掌柜的：掌窗也不行！&nbsp; <br>小贝：。。。你才长疮呢 <br>28.假如生命只是偶然的邂逅，那么死亡就是必然的杀手 <br>29.花为是什么香的,是因为我,草为什么是绿的,也是因为我.屁为什么是臭的，那是因为老白~~~~&nbsp; <br>30.上联：反对家庭暴力&nbsp; <br>下联：呼唤社会爱心&nbsp; <br>横批：不要和陌生人说话 <br>31.走自己的路，让他们打的去吧。。。&nbsp; <br>32.额的秀才啊！额那聪明能干物美价廉的秀才啊~~~~~！ <br>33.饿错了,饿从一开始就错列~当初饿就不该嫁过来,如果不嫁过来饿的夫君就不会死,饿的夫君不会死,饿&nbsp;就不会沦落到这个伤心的地方.............. <br>34.过了猴年是鸡年，下联：过了鸡年是狗年，横批：混过一年是一年 <br>35.无双：一般&nbsp;一般港姐第三&nbsp;诶~你的打扮真喜欢&nbsp; <br>芙蓉：很丑&nbsp;很丑亚姐第九&nbsp;全凭一张灵巧的手&nbsp; <br>芙蓉：你的美由内而外&nbsp;活血养颜&nbsp;冰清玉洁&nbsp;惹人怜&nbsp; <br>无双：你的美由骨到皮&nbsp;感天动地&nbsp;此情可待成追忆&nbsp; <br>芙蓉：还你美&nbsp; <br>无双：还你美你全家都美&nbsp; <br>芙蓉：你气质好啊&nbsp; <br>无双：你身材好啊&nbsp; <br>芙蓉：你皮肤好啊&nbsp; <br>无双：你发质好啊&nbsp; <br>芙蓉：你什么都好&nbsp;唯一的缺点就是太引人注目了&nbsp;容易引起交通事故&nbsp; <br>无双：你的缺点就是太完美&nbsp;完美的叫人后悔&nbsp; <br>芙蓉：后悔什么的&nbsp; <br>无双：投错胎啊&nbsp;没贪上那么好的DNA <br>36.掌柜的偷藏小贝的信被小郭看见&nbsp; <br>小郭：这万一是很紧急的信件呢&nbsp; <br>掌柜的：有急事能往信上插根鸡毛么？明摆着是鸡毛蒜皮的小事 <br>37.掌柜：你有什么目标？&nbsp; <br>小郭：当一代女侠！&nbsp; <br>掌柜：这个目标太远了，说个近点的。&nbsp; <br>小郭：涨工钱！&nbsp; <br>掌柜：这个比刚才那个还要远～ <br>38.盗神：有你这么做贼的吗？偷了东西还帮人收拾屋子<br>盗圣（白）：那不收拾能行吗？人家要跟踪脚印追呢？&nbsp; <br>盗神：东西到手了，你玩几天还给人家送回去？&nbsp; <br>盗圣：不送回去能行么？你丢东西不着急啊！ <br>39.吕秀才:古往今来，谁的轻功最高？——姬无病:曹操（说曹操曹操就到）&nbsp; <br>吕秀才:谁的马步扎得最稳？——姬无病:刘备的儿子（扶不起的刘阿斗，这叫千斤坠）&nbsp; <br>吕秀才:谁的暗器最狠？——姬无病:诸葛亮（诸葛亮挥泪斩马谡，别人摘叶飞花，他飞的是泪花）&nbsp; <br>吕秀才:谁的内功最强？——姬无病:诸葛亮（孔明弹琴退仲达，无敌超声波）&nbsp; <br>吕秀才:谁这么无聊？——姬无病:张飞（张飞吃秤砣，铁了心了。正常人谁吃那个？） <br>40.不要拿捕快不当干部&nbsp; <br>41.问世间，是否此山最高，有爱的娃子像块宝，天若有情天易老，爱你爱到忘不了。忘不了你的泪，忘&nbsp;不了你的好，忘不了你醉人的缠绵，和手指淡淡烟草味道&#8230;&#8230;&nbsp; <br>42.以迅雷不及掩耳盗铃之势如破竹~~ <br>43.广告：&nbsp; <br>大嘴：哎又糊锅了&nbsp;以后这工作还怎么做啊？&nbsp; <br>掌柜：&nbsp;还在用铁锅炒菜吗？早就该换了&nbsp;堂门不粘锅采用四川最近的堂门度铜技术&nbsp;受热面积大&nbsp;传热&nbsp;均匀&nbsp;加热迅速&nbsp;如果放少许的油即可烹饪出美味佳瑶&nbsp;而且&nbsp;清洗方便而且还不易粘锅&nbsp;现在购买还赠送&nbsp;堂门独家密制暗器一套先来先得&nbsp;送完为止&nbsp;各大客栈及兵器店均有销售&nbsp;欢迎恰讯&nbsp; <br>大嘴：用堂门不粘锅炒菜&nbsp;你好我也 <br>44.与媳妇吵归吵，但轻易别动手；就算要动手，也别往死里打；要是往死里打了，也别耽误治疗；如果&nbsp;活活给治死了，别忘了通知我们来送葬。 <br>45.湘玉：先离开这儿再说，反正是不能回陕西，咱们可以往南走一直到大理&#8230;&#8230;&nbsp; <br>小郭：唉，大理好唉，风景超～～～美的咯！&nbsp; <br>湘玉：到大理歇口气，咱们再转道去缅甸&#8230;&#8230;&nbsp; <br>大嘴：缅甸好啊，那旮旯香蕉好吃啊！&nbsp; <br>湘玉：如果到了缅甸还有追兵的话，咱们再转道去泰国&#8230;&#8230;&nbsp; <br>小郭：唉呦～～泰国的寺庙超炫的啦～～～！呵呵&nbsp; <br>湘玉：如果泰国还是呆不下去的话，咱们就转水路，前往东瀛&#8230;&#8230;&nbsp; <br>众人(态度坚决，扭头，厌恶状)：不去！！&nbsp; <br>湘玉：那就高丽&#8230;&#8230;&nbsp; <br>众人(回头，同意状)：那行。&nbsp; <br>湘玉：一路往北到西伯利亚转乘雪橇，直达北极圈，然后再从阿拉斯加一路向南，横穿赤道，长途跋&nbsp;涉，直达南极圈的冻土层，然后&#8230;&#8230;&nbsp; <br>众人：还要走啊？！&nbsp; <br>湘玉：最后一步，到达南极圈之后，带足干粮和水，转搭火箭，飞入太空，在火星表层降落，开始全&nbsp;新的生活！&nbsp; <br>众人陶醉状。。。&nbsp; <br>秀才：那到了火星还有追兵怎么办？？&nbsp; <br>一愣，，众人齐动手将秀才暴打一顿&nbsp; <br>46.子曾经曰过:知识就是力量。&nbsp; <br>哪个子？&nbsp; <br>培根子！ <br>47.姓嘛？叫嘛？打哪来？往哪去？家里几口人？人均几亩地？地里几头牛？说说说。。。&nbsp; <br>48.佟湘玉口头禅：额滴神啊！&nbsp; <br><br>刑捕头口头禅：亲娘哎！&nbsp; <br><br>郭芙蓉口头禅：排山倒海 <br><br>吕秀才口头禅：子曾经曰过。&nbsp; <br><br>白展堂口头禅:&nbsp;葵花点穴手 <br><br>祝无双口头禅:&nbsp;放着我来!&nbsp; <br><br>莫小贝口头禅:&nbsp;嫂子~~~~~~~~~(很酸的那种)&nbsp; <br><br>燕小六口头禅:&nbsp;帮我照顾好我七舅姥爷和他的三外甥女！ <br><br>49.吃别人的饭，让自己说去吧。 <br>50.你举着夜壶干吗？ <br>我想洗澡不行吗？ <br>51.我祝你们白头偕老，断子绝孙。 <br>52.佟掌柜为保老白将责任推到秀才头上，姬无命追杀之。。。&nbsp; <br>　　&nbsp; <br>　　秀才：且慢，子曰，武力是解决不了任何问题的。&nbsp; <br>　　众人；什么子？&nbsp; <br>　　秀才：吕子。 <br>　　姬：想怎么死，我成全你。下回出招用不着先喊。拿命来－－&nbsp; <br>　　秀才：慢着－－杀我可以，不过得先说明了，我到底死在谁的手里&nbsp; <br>　　姬：废话，我呀。&nbsp; <br>　　秀才：我..是..谁..&nbsp; <br>　　姬：我怎么知道你是谁啊&nbsp; <br>　　秀才笑眯眯地说：问题来了吧...&nbsp; <br>　　姬一头雾水：什么意思啊....&nbsp; <br>　　秀才：这得从人和宇宙的关系开始讲起了，在你身上一直以来就有一个问题缠绕着你。。。&nbsp; <br>　　姬：什么意思啊&nbsp; <br>　　秀才；我，是谁&nbsp; <br>　　姬：这，我已经知道了<br>秀才：不，你不知道。你知道吗，你是谁？姬无命吗？不，这只是个名字，一个代号。你可以叫姬&nbsp;无命，我也可以叫姬无命，他们都可以。把代号拿掉之后呢，你又是谁？&nbsp;　　&nbsp; <br>　　姬：我不知道，我也不用知道&nbsp; <br>　　秀才：好，好，那你再回答我另一个问题－－我是谁&nbsp; <br>　　姬：这个问题已经问过了&nbsp; <br>　　秀才：不，我刚才问的是本我，现在问的是自我 <br>　　姬：这有什么区别吗？&nbsp; <br>　　秀才：举个例子，当我用我这个代号来进行对话的同时，你的代号也是我，这意味着什么呢？这是&nbsp;否意味着你就是我，而我也就是你....&nbsp; <br>　　姬：这个问题没什么意义吗&nbsp; <br>　　秀才：那就问几个有意义的。我生从何来，死往何处？我为何要出现在这个世界上？我的出现对这&nbsp;个世界意味着什么？是世界选择了我，还是我选择了世界&nbsp; <br>　　姬；够了....&nbsp; <br>　　秀才：我和宇宙之间有必然的联系吗？宇宙是否有尽头？时间是否有长短？过去的时间在哪里消失&nbsp;未来的时间又在何处停止？我在这一刻提出的问题还是你刚才提到的问题吗？&nbsp; <br>　　姬：我杀了你－－&nbsp;　　&nbsp; <br>　　秀才高喊：是谁杀了我，而我又杀了谁？&nbsp;　　&nbsp; <br>　　姬：是我杀了我？&nbsp;　　&nbsp; <br>　　秀才：回答正确！动手吧！&nbsp; <br>　　&nbsp; <br>　　&#8230;&#8230;于是一代绝顶高手姬无命就这样丧命了&#8230;&#8230;&nbsp; <br>　　&nbsp; <br>　　&nbsp; <br>　　结尾&nbsp; <br>　　&nbsp; <br>　　秀才：他不会再醒过来了吧？&nbsp; <br>　　老白；应该不会了&nbsp; <br>　　小郭：这算是什么说法啊&nbsp; <br>　　秀才（整理仪容，摆好POSE）：知识就是力量！ <br><br>53.如果上天再给我一次机会,我一定会对你说三个字:.......少放盐!!!&nbsp; <br>54.口头捉拿一点红——口红行动&nbsp; <br>55.涂一滴在脸上 <br>　&nbsp;甜一片在心里 <br>　&nbsp;女人 <br>　&nbsp;就是应该对自己好一点 <br>56.我是郭芙蓉 <br>　&nbsp;我不会武功 <br>　&nbsp;我来自江湖 <br>　&nbsp;我与众不同 <br>57.郭芙蓉夸邢捕头：真是堪称七侠镇的一霸（爸）！ <br>　&nbsp;李大嘴：那一妈是谁啊？ <br>58.佟掌柜：一个女人的幸福就是嫁一个男人，侍候他一生。 <br>　&nbsp;郭芙蓉：为什么不是他侍候我一生？ <br>　&nbsp;佟掌柜：知道你为什么嫁不出去了吧？ <br>59.老师：这是李逵？ <br>　&nbsp;莫小贝：不，这是张飞。 <br>　&nbsp;老师：哦，这个呢？ <br>　&nbsp;莫小贝：岳飞。 <br>　&nbsp;老师：这个呢？ <br>　&nbsp;莫小贝：王菲。 <br>　&nbsp;众人：王菲是干啥的？ <br>　&nbsp;一群众演员：唱歌的！ <br>60.老白：去，整本《挪威的森林》来看看。 <br>　&nbsp;秀才：拜托，这是什么年代，哪有那么小资的书看。 <br>　&nbsp;老白：没有你不会写啊？ <br>61.秀才：为何不让我写春节对联。 <br>　&nbsp;老板娘：你的字太干太瘦，不喜庆，留着清明时写吧。 <br>62.一个字：中 <br>　&nbsp;两个字：犀利 <br>　&nbsp;三个字：亲娘咧 <br>　&nbsp;四个字：哎呀吗呀 <br>63.大嘴：银子放脚底下特别硌的慌吧？ <br>　&nbsp;钱掌柜：等你结了婚就知道了，男人就因为这才长的鸡眼！ <br>64.大嘴:掌柜的,你是知不道啊,就她那副嘴脸,变化之快,演技之高,在我平生所见的人当 <br>中,只有青霞和曼玉能与之抗衡... <br>　&nbsp;展堂:那还得是她发挥失常,青霞曼玉超水平发挥啊... <br>65.演成这样不错了，这年头哪有好演员了。 <br>66.白:行啊小郭,还学会绣企鹅啦? <br>　&nbsp;郭:那是鸳鸯!! <br>67.im&nbsp;wrong&nbsp;im&nbsp;really&nbsp;wrong,&nbsp;i&nbsp;should&nbsp;not&nbsp;married,&nbsp;if&nbsp;im&nbsp;not&nbsp;married&nbsp;my&nbsp;husband <br>will&nbsp;never&nbsp;die... <br>68.钱夫人太惨了~但是她居然能活下来是在是太强了~ <br>　&nbsp;小强都没她强~~&nbsp; <br>69.人生在世,吃喝二字! <br>70.老白：欢迎收看七侠镇收视率第一的古装&nbsp;综艺节目&nbsp;我擦我擦&nbsp;我擦擦擦&nbsp; <br>老白：欢迎收看&nbsp;全国收视率第一的古装&nbsp;综艺节目&nbsp;我洗我洗&nbsp;我洗洗洗&nbsp; <br>老白：欢迎收看&nbsp;全球收视率第一的古装&nbsp;综艺节目&nbsp;我拖我拖&nbsp;我拖拖拖&nbsp; <br>老白：欢迎收看全宇宙收视率第一的古装&nbsp;综艺节目&nbsp;我拉我拉&nbsp;我拉拉拉&nbsp; <br>71.吕秀才：清风明月挠我心，还是抠我心吧！（问老板娘）还有什么词？ <br>　&nbsp;老板娘：偷我心！ <br>　&nbsp;吕秀才：对呀！清风明月偷我心！ <br>72.盗圣（白）：哎呀！妈呀！！这~~这~这使的啥招啊！这是！！？？？ <br>小郭：难道~~难道~难道这就是传说中的&nbsp;一..刀...两段&nbsp;!&nbsp;!&nbsp;! <br>73.某人家养一猪，烦！ <br>遂弃之，数未果，然其知家之归路。 <br>数日驾车弃猪，傍晚致电， <br>其夫曰：猪归否？ <br>妻曰：归矣！ <br>其夫大怒：让它接电话，我迷路了！ <br>74.各位来宾,各位百姓, <br>　&nbsp;大家晚上好,欢迎大家来到同福客栈, <br>　&nbsp;参加第一届鸡王争霸赛 <br>　&nbsp;浩瀚苍穹,孕育了我们的历史与文明, <br>　&nbsp;岁月如梭,造就了我们的勤劳和善良, <br>　&nbsp;在这片晴朗的天空下,我们吟咏歌唱, <br>　&nbsp;在这片辽阔的土地上,我们自由翱翔！ <br>75.阴谋是爱情的敌人！ <br>76.白展堂：谁是演技派，骂人啊？（然后一转身，陶醉状）我是偶像派。。 <br>77.老白：你真是扶不起来的阿斗啊~~~~&nbsp; <br>大嘴：阿斗是谁啊？&nbsp; <br>老白（恶狠狠的）：水浒，一百零九将。&nbsp; <br>大嘴：你胡说什么，水浒里面就一百零八个，你要说三国里的我还信。&nbsp; <br>老白（如释重负）：这回你还真说对了，就是三国里的，刘备的儿子。&nbsp; <br>大嘴：你看你又蒙我，他才不是刘备的儿子，要不刘备姓刘，他姓阿呢~~~&nbsp; <br>（大嘴出，老白痛苦万分，以头戗桌子，一口血就喷出来了——） <br>78.芙蓉：你是个寡妇&nbsp; <br>掌柜：你是个瓜子 <br>79.钱掌柜因藏三文私房钱被钱夫人打得乌眼青，众人问眼睛怎么了？&nbsp; <br>钱掌柜：撞门上了~~&nbsp; <br>众人：撞门上就能撞这样？&nbsp; <br>钱掌柜：先撞门上，被门弹回来又撞墙上了，墙太硬弹回来又撞门上了&#8230;&#8230;&nbsp; <br>80.秀才：要是能把小郭忘了我就算倾家荡产也可以&nbsp; <br>大嘴：关键是你好象也没有啥家产哪 <br>81.佟湘玉要嫁老白！！小贝不愿意&nbsp; <br>嫂子：你哥都死了&nbsp; <br>小贝：你就是不能嫁别人，你生是衡山派的人！&nbsp; <br>嫂子：那俄不活咧！&nbsp; <br>小贝：你死也是衡山派的死人！&nbsp; <br>嫂子：你要个尸体有啥用吗？！&nbsp; <br>小贝：那你也是衡山派的尸体！ <br>82.贤惠，闲在家里什么也不会！ <br>83.世界如此美妙　我却如此暴躁　不好不好&nbsp;~~&nbsp; <br>84.掌柜的：奈何桥远不。&nbsp; <br>老白：你把窗户打开，大头朝下跳下去，就到奈何桥了。 <br>85.小六：我乃堂堂一捕头，你堂堂一跑堂。。。&nbsp; <br>老白：堂堂一跑堂？&nbsp; <br>小六：？&nbsp;区区一跑堂&nbsp;！！ <br>86.芙蓉：你知道我娘是怎么把我爹拴在家里的吗&nbsp; <br>老白：用狗链儿？ <br>87.芙蓉和秀才生气扔碗碟出气&nbsp; <br>掌柜的吼道：这是我的家当，不是你的秀！ <br>88.小贝对掌柜的：你这个懦妻！&nbsp; <br>众人：懦妻？&nbsp; <br>小贝：男的叫懦夫，女的不就叫懦妻吗？ <br>89.掌门夫人：鱼和熊掌怎么兼得？&nbsp; <br>秀才：这是不可能的。&nbsp; <br>掌门夫人：养一只会抓鱼的熊。 <br>90.小贝要去参加华山论剑&nbsp; <br>大嘴：我也没啥给你的，这要饭罐你拿着，一路上要是没有吃的了就上街要点儿，怎么的也别把自己&nbsp;饿着&nbsp; <br>小郭：这根打狗棒给你，要饭要不到和野狗抢吃的也好有个家伙&nbsp; <br>掌柜的：这一文钱可是我独家赞助你的，一定要省着点花。&nbsp; <br>到华山怎么的也够用了啊？（看老白）&nbsp; <br>老白：够用够用&nbsp; <br>秀才：（抹着眼泪）这绳子你拿着，要是半路遇见山贼，找棵树上吊也能用到。&nbsp; <br>掌柜的：要是遇见山贼绑架你，你一定要哭着喊着让山贼给你嫂子写勒索信。十两银子以下都可以接&nbsp;受，我让老白去赎你，超过十两的话，我就亲自去给你收尸。&nbsp; <br>小贝：我就值十两银子啊？&nbsp; <br>掌柜的：那就。。。二十两？再多我也拿不出来了。&nbsp; <br>老白：这包黑煤灰你带着，如果遇到山贼就用黑煤灰把脸抹黑装成小黑瞎子。（摸小贝的脸）这小脸&nbsp;儿胖乎儿的条件多好。 <br>91.岳掌门：岳松涛见过莫掌门&nbsp; <br>莫小贝：你啥时候见过我啊 <br>92.小米：万一岳掌门一时心慈手软，给了小贝可乘之机。。。&nbsp; <br>大嘴：可乘她也得坠机&nbsp;~~~ <br>93.小姬跟小白说,他们俩盗神和盗圣联手,要一年保本,两年盈利,三年融资上市,就是上闹市去偷去.到时&nbsp;候光天化日之下众所周知为所欲为也没人敢管,然后他很陶醉地问小白,这该是什么境界啊.&nbsp; <br>小白答曰:天上人间.&nbsp; <br>小白:什么是上市&nbsp; <br>小姬:上闹市 <br>94.白展堂说：有福同享，有难同当，那就叫同福客栈吧&nbsp; <br>李大嘴问：那为啥不叫同难呢？&nbsp; <br>无语。。 <br>95.这就是你娘地剑法?&nbsp; <br>不准骂人!&nbsp; <br>这就是你娘的剑法?&nbsp; <br>不准骂人~&nbsp; <br>你不是说这是你娘教你的剑法&nbsp; <br>96.我那最得意的能拿刀能吃饭的右手啊 <br>97.芙蓉：假设我三掌就能拍死你，每拍一掌，你就惨叫一声&#8220;女侠饶命&#8221;，那么请问，在你临死之前你&nbsp;要说几个字？&nbsp; <br>秀才：我拒绝回答这个问题。&nbsp; <br>芙蓉：那就算作自动弃权。&nbsp; <br>秀才：惨叫3次，每次4个字，一共12个字。&nbsp; <br>芙蓉：错！是9个字！&nbsp; <br>秀才：为什么啊？&nbsp; <br>芙蓉：第一掌下去，&#8220;女侠饶命&#8221;，四个字；第二掌下去，&#8220;女侠饶命&#8221;，八个字&nbsp;。&nbsp; <br>第三掌下去，立刻死翘翘，你只说了一个字&#8220;啊&#8221;，8+1=9。哈哈哈哈&#8230;&#8230;&nbsp; <br>98.鸡王争霸赛&nbsp; <br>比赛规则：展堂：鸡的重量不能低于八斤&nbsp; <br>老板娘：那是鹅&nbsp; <br>展堂：尾巴要长，不能短于多少寸（忘了是多少了）&nbsp; <br>老板娘：那是野鸡&nbsp; <br>展堂：爪子长度不能低于多长&nbsp; <br>老板娘：那是鹰&nbsp; <br>99.不想干活就&nbsp;断电&nbsp;！ <br>100.大嘴问：是兄弟重要，还是女人重要？&nbsp; <br>秀才答：兄弟如手足，女人如衣服！ <br>大嘴赞：真够兄弟！&nbsp; <br>秀才不慌不忙地说：兄弟如蜈蚣的手足，女人如过冬的衣服！ <br>101.休庭休庭!我有点渴上趟厕所! <br>102.生个娃都娶媳妇了，咋还不回来？&nbsp; <br>生个娃也该老死了，咋还不回来？ <br>103.老白：欢迎收看这一期的&nbsp;《不比不知道&nbsp;江湖真奇妙》&nbsp; <br>你幸福不如我幸福&nbsp;你满足不如我满足&nbsp; <br>你们满不满足啊？&nbsp;大声点听不到&nbsp; <br>群众：不满足！&nbsp; <br>老白：OK&nbsp;那就哪凉快哪待着去 
<img src="http://www.cnblogs.com/jplee/aggbug/610409.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/jplee/archive/2007/01/03/610409.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/01/03/610409.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>简洁、明晰！数据库设计三大范式应用实例剖析</title><link>http://www.cnblogs.com/jplee/archive/2007/01/02/610079.html</link><dc:creator>不再年轻.NET</dc:creator><author>不再年轻.NET</author><pubDate>Tue, 02 Jan 2007 08:28:00 GMT</pubDate><guid>http://www.cnblogs.com/jplee/archive/2007/01/02/610079.html</guid><description><![CDATA[<p>阅读: 146 评论: 1 作者: <a href="http://www.cnblogs.com/jplee/" target="_blank">不再年轻.NET</a> 发表于 2007-01-02 16:28 <a href="http://www.cnblogs.com/jplee/archive/2007/01/02/610079.html" target="_blank">原文链接</a></p><p>引言<br><br>　　数据库的设计范式是数据库设计所需要满足的规范，满足这些规范的数据库是简洁的、结构明晰的，同时，不会发生插入（insert）、删除（delete）和更新（update）操作异常。反之则是乱七八糟，不仅给数据库的编程人员制造麻烦，而且面目可憎，可能存储了大量不需要的冗余信息。<br><br>　　设计范式是不是很难懂呢？非也，大学教材上给我们一堆数学公式我们当然看不懂，也记不住。所以我们很多人就根本不按照范式来设计数据库。<br><br>　　实质上，设计范式用很形象、很简洁的话语就能说清楚，道明白。本文将对范式进行通俗地说明，并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程。<br><br>　　范式说明<br><br>　　第一范式（1NF）：数据库表中的字段都是单一属性的，不可再分。这个单一属性由基本类型构成，包括整型、实数、字符型、逻辑型、日期型等。<br><br>　　例如，如下的数据库表是符合第一范式的：<br><br>
<table cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
    <tbody>
        <tr>
            <td>字段1 </td>
            <td>字段2 </td>
            <td>字段3 </td>
            <td>字段4</td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<br>　　而这样的数据库表是不符合第一范式的：<br><br>
<table cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
    <tbody>
        <tr>
            <td>字段1 </td>
            <td>字段2 </td>
            <td colSpan=2>字段3 </td>
            <td>字段4</td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>字段3.1</td>
            <td>字段3.2 </td>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<p><br>　　很显然，在当前的任何关系数据库管理系统（DBMS）中，傻瓜也不可能做出不符合第一范式的数据库，因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此，你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。<br><br>　　第二范式（2NF）：数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖（部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况），也即所有非关键字段都完全依赖于任意一组候选关键字。
<table cellSpacing=0 cellPadding=0 align=left border=0>
    <tbody>
        <tr>
            <td vAlign=top>&nbsp;</td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<br><br>　　假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分)，关键字为组合关键字(学号, 课程名称)，因为存在如下决定关系：<br><br>　　(学号, 课程名称) &#8594; (姓名, 年龄, 成绩, 学分)<br><br>　　这个数据库表不满足第二范式，因为存在如下决定关系：<br><br>　　(课程名称) &#8594; (学分)<br><br>　　(学号) &#8594; (姓名, 年龄)<br><br>　　即存在组合关键字中的字段决定非关键字的情况。<br><br>　　由于不符合2NF，这个选课关系表会存在如下问题：<br><br>　　(1) 数据冗余：<br><br>　　同一门课程由n个学生选修，"学分"就重复n-1次；同一个学生选修了m门课程，姓名和年龄就重复了m-1次。<br><br>　　(2) 更新异常：<br><br>　　若调整了某门课程的学分，数据表中所有行的"学分"值都要更新，否则会出现同一门课程学分不同的情况。<br><br>　　(3) 插入异常：<br><br>　　假设要开设一门新的课程，暂时还没有人选修。这样，由于还没有"学号"关键字，课程名称和学分也无法记录入数据库。<br><br>　　(4) 删除异常：<br><br>　　假设一批学生已经完成课程的选修，这些选修记录就应该从数据库表中删除。但是，与此同时，课程名称和学分信息也被删除了。很显然，这也会导致插入异常。 <br><br>　　把选课关系表SelectCourse改为如下三个表：<br><br>　　学生：Student(学号, 姓名, 年龄)；<br><br>　　课程：Course(课程名称, 学分)；<br><br>　　选课关系：SelectCourse(学号, 课程名称, 成绩)。<br><br>　　这样的数据库表是符合第二范式的，消除了数据冗余、更新异常、插入异常和删除异常。<br><br>　　另外，所有单关键字的数据库表都符合第二范式，因为不可能存在组合关键字。<br><br>　　第三范式（3NF）：在第二范式的基础上，数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖，指的是如果存在"A &#8594; B &#8594; C"的决定关系，则C传递函数依赖于A。因此，满足第三范式的数据库表应该不存在如下依赖关系：<br><br>　　关键字段 &#8594; 非关键字段x &#8594; 非关键字段y<br><br>　　假定学生关系表为Student(学号, 姓名, 年龄, 所在<a href="http://edu.itbulo.com/"><font color=#000000>学院</font></a>, <a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>地点, <a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>电话)，关键字为单一关键字"学号"，因为存在如下决定关系：<br><br>　　(学号) &#8594; (姓名, 年龄, 所在<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>, <a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>地点, <a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>电话)<br><br>　　这个数据库是符合2NF的，但是不符合3NF，因为存在如下决定关系：<br><br>　　(学号) &#8594; (所在<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>) &#8594; (<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>地点, <a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>电话)<br><br>　　即存在非关键字段"<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>地点"、"<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>电话"对关键字段"学号"的传递函数依赖。<br><br>　　它也会存在数据冗余、更新异常、插入异常和删除异常的情况，读者可自行分析得知。<br><br>　　把学生关系表分为如下两个表：<br><br>　　学生：(学号, 姓名, 年龄, 所在<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>)；<br><br>　　<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>：(<a href="http://edu.itbulo.com/"><u><font color=#004a9c>学院</font></u></a>, 地点, 电话)。<br><br>　　这样的数据库表是符合第三范式的，消除了数据冗余、更新异常、插入异常和删除异常。<br><br>　　鲍依斯-科得范式（BCNF）：在第三范式的基础上，数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。</p>
<p>　假设仓库管理关系表为StorehouseManage(仓库ID, 存储物品ID, 管理员ID, 数量)，且有一个管理员只在一个仓库工作；一个仓库可以存储多种物品。这个数据库表中存在如下决定关系：<br><br>　　(仓库ID, 存储物品ID) &#8594;(管理员ID, 数量)<br><br>　　(管理员ID, 存储物品ID) &#8594; (仓库ID, 数量)<br><br>　　所以，(仓库ID, 存储物品ID)和(管理员ID, 存储物品ID)都是StorehouseManage的候选关键字，表中的唯一非关键字段为数量，它是符合第三范式的。但是，由于存在如下决定关系：<br><br>　　(仓库ID) &#8594; (管理员ID)<br><br>　　(管理员ID) &#8594; (仓库ID)<br><br>　　即存在关键字段决定关键字段的情况，所以其不符合BCNF范式。它会出现如下异常情况：<br><br>　　(1) 删除异常：<br><br>　　当仓库被清空后，所有"存储物品ID"和"数量"信息被删除的同时，"仓库ID"和"管理员ID"信息也被删除了。<br><br>　　(2) 插入异常：<br><br>　　当仓库没有存储任何物品时，无法给仓库分配管理员。<br><br>　　(3) 更新异常：<br><br>　　如果仓库换了管理员，则表中所有行的管理员ID都要修改。<br><br>　　把仓库管理关系表分解为二个关系表：<br><br>　　仓库管理：StorehouseManage(仓库ID, 管理员ID)；<br><br>　　仓库：Storehouse(仓库ID, 存储物品ID, 数量)。<br><br>　　这样的数据库表是符合BCNF范式的，消除了删除异常、插入异常和更新异常。 </p>
<p>&nbsp;</p>
<p>范式应用<br><br>　　我们来逐步搞定一个论坛的数据库，有如下信息：<br><br>　　（1） 用户：用户名，email，主页，电话，联系地址<br><br>　　（2） 帖子：发帖标题，发帖内容，回复标题，回复内容 <br><br>　　第一次我们将数据库设计为仅仅存在表：<br>　　
<table cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
    <tbody>
        <tr>
            <td>用户名 </td>
            <td>email </td>
            <td>主页</td>
            <td>电话</td>
            <td>联系地址</td>
            <td>发帖标题</td>
            <td>发帖内容</td>
            <td>回复标题</td>
            <td>回复内容</td>
        </tr>
    </tbody>
</table>
<br>　　这个数据库表符合第一范式，但是没有任何一组候选关键字能决定数据库表的整行，唯一的关键字段用户名也不能完全决定整个元组。我们需要增加"发帖ID"、"回复ID"字段，即将表修改为：<br><br>
<table cellSpacing=0 cellPadding=2 width="90%" align=center border=1>
    <tbody>
        <tr>
            <td>用户名</td>
            <td>email</td>
            <td>主页</td>
            <td>电话</td>
            <td>联系地址</td>
            <td>发帖ID</td>
            <td>发帖标题</td>
            <td>发帖内容</td>
            <td>回复ID</td>
            <td>回复标题</td>
            <td>回复内容</td>
        </tr>
    </tbody>
</table>
<br>　　这样数据表中的关键字(用户名，发帖ID，回复ID)能决定整行：<br><br>　　(用户名,发帖ID,回复ID) &#8594; (email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容)<br><br>　　但是，这样的设计不符合第二范式，因为存在如下决定关系：<br><br>　　(用户名) &#8594; (email,主页,电话,联系地址)<br><br>　　(发帖ID) &#8594; (发帖标题,发帖内容)<br><br>　　(回复ID) &#8594; (回复标题,回复内容)<br><br>　　即非关键字段部分函数依赖于候选关键字段，很明显，这个设计会导致大量的数据冗余和操作异常。
<table cellSpacing=0 cellPadding=0 align=left border=0>
    <tbody>
        <tr>
            <td vAlign=top>&nbsp;</td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
    </tbody>
</table>
<br><br>　　我们将数据库表分解为（带下划线的为关键字）：<br><br>　　（1） 用户信息：用户名，email，主页，电话，联系地址<br><br>　　（2） 帖子信息：发帖ID，标题，内容<br><br>　　（3） 回复信息：回复ID，标题，内容<br><br>　　（4） 发贴：用户名，发帖ID<br><br>　　（5） 回复：发帖ID，回复ID<br><br>　　这样的设计是满足第1、2、3范式和BCNF范式要求的，但是这样的设计是不是最好的呢？<br><br>　　不一定。<br><br>　　观察可知，第4项"发帖"中的"用户名"和"发帖ID"之间是1：N的关系，因此我们可以把"发帖"合并到第2项的"帖子信息"中；第5项"回复"中的"发帖ID"和"回复ID"之间也是1：N的关系，因此我们可以把"回复"合并到第3项的"回复信息"中。这样可以一定量地减少数据冗余，新的设计为：<br><br>　　（1） 用户信息：用户名，email，主页，电话，联系地址<br><br>　　（2） 帖子信息：用户名，发帖ID，标题，内容<br><br>　　（3） 回复信息：发帖ID，回复ID，标题，内容<br><br>　　数据库表1显然满足所有范式的要求；<br><br>　　数据库表2中存在非关键字段"标题"、"内容"对关键字段"发帖ID"的部分函数依赖，即不满足第二范式的要求，但是这一设计并不会导致数据冗余和操作异常；<br><br>　　数据库表3中也存在非关键字段"标题"、"内容"对关键字段"回复ID"的部分函数依赖，也不满足第二范式的要求，但是与数据库表2相似，这一设计也不会导致数据冗余和操作异常。<br><br>　　由此可以看出，并不一定要强行满足范式的要求，对于1：N关系，当1的一边合并到N的那边后，N的那边就不再满足第二范式了，但是这种设计反而比较好！<br><br>　　对于M：N的关系，不能将M一边或N一边合并到另一边去，这样会导致不符合范式要求，同时导致操作异常和数据冗余。 <br>对于1：1的关系，我们可以将左边的1或者右边的1合并到另一边去，设计导致不符合范式要求，但是并不会导致操作异常和数据冗余。<br><br>　　结论<br><br>　　满足范式要求的数据库设计是结构清晰的，同时可避免数据冗余和操作异常。这并意味着不符合范式要求的设计一定是错误的，在数据库表中存在1：1或1：N关系这种较特殊的情况下，合并导致的不符合范式要求反而是合理的。<br><br>　　在我们设计数据库的时候，一定要时刻考虑范式的要求。</p>
<img src="http://www.cnblogs.com/jplee/aggbug/610079.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/jplee/archive/2007/01/02/610079.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/jplee/archive/2007/01/02/610079.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56825/" target="_blank">奇虎360推免费杀毒 周鸿祎用“零门槛”留用户</a><span style="color:gray">(2010-02-10 12:44)</span><br/>· <a href="http://news.cnblogs.com/n/56819/" target="_blank">Yahoo脑震荡 关闭服务十个之多</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56824/" target="_blank">2003年微软遭遇iTunes：我们彻底晕头转向了</a><span style="color:gray">(2010-02-10 12:06)</span><br/>· <a href="http://news.cnblogs.com/n/56823/" target="_blank">百度数据能被“作弊”软件篡改？百度:追究侵权</a><span style="color:gray">(2010-02-10 11:52)</span><br/>· <a href="http://news.cnblogs.com/n/56822/" target="_blank">Ksplice为Linux提供永远不用重启服务</a><span style="color:gray">(2010-02-10 11:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56812/" target="_blank">Google社会化产品Buzz发布会实录</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>