肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子...
分类:
其他好文 时间:
2014-06-18 00:52:52
阅读次数:
387
Liskov Substitution Princple, LSPFor every
object "o1" from type "t1", there is object "o2" from type "t2", when all "o2"
is replaced with "o1" in pro...
分类:
其他好文 时间:
2014-06-11 08:52:44
阅读次数:
221
as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。如下面的代码所示,如果object引用实际上不引用string实例,把object引用转换为string就会返回null:object
o1="Some Str...
分类:
其他好文 时间:
2014-06-06 20:23:41
阅读次数:
307
1. Unix IPC(InterProcess
Communication)同一主机的各个进程间的IPC:管道、FIFO、消息队列、信号量、共享存储器不同主机上的各个进程间IPC:socket套接字2.
管道管道进行IPC有两个局限:(1) 半双工,即数据只能在一个方向上流动(2) 只能在具有公共...
分类:
其他好文 时间:
2014-05-21 23:03:50
阅读次数:
394
1.Scatter/Gather I/Oa single system call to
read or write data between single data stream and multiple buffersThis type of
I/O is so named because the...
分类:
系统相关 时间:
2014-05-17 14:17:55
阅读次数:
571
1.
非阻塞I/O低速系统调用时可能会使进程永远阻塞的一类系统调用,包括以下调用:(1)某些文件类型你(网络socket套接字、终端设备、管道)暂无可使用数据,则读操作可能会使调用者永远阻塞(2)如果数据不能立即被(1)中文件类型接受,则写操作会使调用者永远阻塞(3)某些进程间通信函数非阻塞I/O使...
分类:
其他好文 时间:
2014-05-15 16:22:43
阅读次数:
380
1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything
is a file)默认情况下,子进程会获得其父进程文件表的完整拷贝2.打开文件open系统调用必须包含 O_RDONLY,O_W...
分类:
系统相关 时间:
2014-05-14 08:17:28
阅读次数:
674
若对于每一个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对T编写的程序P中,用o1替换o2后,程序P的行为功能不变,则S是T的子类型。What
is wanted here is something like the following substitution property: I...
分类:
其他好文 时间:
2014-05-14 03:32:08
阅读次数:
229
相关子查询是指引用了外部查询中出现的表的列的子查询。这就意味着子查询要依赖于外部查询,不能独立地调用它。在逻辑上,子查询会为每个外部行单独计算一次。例:
SELECT custid,orderid,orderdate,empid FROM dbo.Orders AS O1 WHERE ...
分类:
其他好文 时间:
2014-05-13 19:21:31
阅读次数:
225
1.
文件I/O对于内核而言,所有打开的文件都通过文件描述符引用,内核不区分文本文件和二进制文件open函数:O_RDONLY O_WRONLY
O_RDWRcreate函数:close函数:关闭一个文件时还会释放该进程加在该文件上的所有记录锁lseek函数:显式地为一个打开的文件设置其偏移量每个打...
分类:
其他好文 时间:
2014-05-07 17:54:42
阅读次数:
297