2012年2月6日
摘要:
覆盖率测试分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。1、语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误。2、判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的错误。3、条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支。4、判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结
阅读全文
posted @ 2012-02-06 15:31
Andy Niu
阅读(1357)
推荐(0)
摘要:
1、首先不要想接口与抽象类的区别,而要采用逆向思维,即是什么原因导致了他们的区别。2、接口和抽象类的使用场景不同,也就是说,接口和抽象类是针对不同的使用场景而设计的。我们站在接口和抽象类的设计者的角度来看待这个问题。3、接口的使用场景是:完全抽象,仅仅声明特征(能完成某些任务),不给出任何实现。抽象类的使用场景是:部分抽象,给出部分实现。4、接口的使用场景是:接口代表了子类能做什么,是 Can-Do关系, 抽象类的使用场景是:抽象类代表了子类是什么,是 IsA关系。 因为子类只能是一个实体,但可以做多件事。所以,接口可以多继承,抽象类单继承。5、接口:接口代表了子类的次要功能,因此可以多继承,
阅读全文
posted @ 2012-02-06 14:53
Andy Niu
阅读(616)
推荐(0)
摘要:
声明:对外声明说,我能完成某项任务。抽象的说明。定义:按照步骤,详细说明我是如何完成这项任务的。具体的行为。
阅读全文
posted @ 2012-02-06 14:40
Andy Niu
阅读(233)
推荐(0)
摘要:
一般情况下,我们会增强实体的功能,但是有时候为了其他方面的考虑,会弱化实体的功能。这应该就是哲学上的舍得辩证法。举例来说:1、引用是弱化了的指针,不允许对内存地址操作。为了安全,牺牲了指针的灵活性。2、栈、队列是弱化了的数组或者链表,针对特定的使用场景,为了简单,而关闭了不需要的接口。3、string 是弱化了的char数组,为了好理解,string是不变字符串,每次修改相当于重新创建一个string。从而,string具备了整体拷贝和字符串留用的功能(节省内存)。
阅读全文
posted @ 2012-02-06 14:34
Andy Niu
阅读(300)
推荐(0)
2012年1月31日
摘要:
CC:负责列车安全定位,用测速器和加速度计更新列车的安全位置,将安全位置通过DCS传输给ZC和ATS。ZC:管理当前区域所有列车的位置和方向,发出移动权限(MAL)指令给CC,CC通过MAL来执行ATP、ATO功能。CBI:控制当前设备集中站的轨旁设备,并将轨旁设备的状态传输给ZC和ATS。ATS:监督并显示CBTC列车的位置以及占用的轨道区段、轨旁设备等。
阅读全文
posted @ 2012-01-31 11:48
Andy Niu
阅读(1175)
推荐(0)
摘要:
闭塞:原本意思是与外界隔绝。在信号系统中,指“一个区间(闭塞分区)内,同一时间只允许有一辆列车占用”,从而保证了列车不会相撞或者追尾。发展过程:1、时间间隔:隔一段时间发出一辆车。有可能会发生追尾,比如前面一辆车发生故障,后续的一辆车就会追尾。2、空间间隔:同一时间,保证一段区间只有一辆车占用,也就是说一辆车的前后一段距离没有列车。这就是闭塞的概念。闭塞分为:人工闭塞、自动比赛、移动闭塞。人工闭塞:一段区间的前后有A、B两个人,一辆车进入该区段,区段状态为占用,A不允许其他列车进入。当列车离开区段,B通知A区段未占用,A允许列车进入。自动闭塞:不需要人工操作,列车离开区间时,前面的信号机自动开
阅读全文
posted @ 2012-01-31 11:29
Andy Niu
阅读(1966)
推荐(0)
摘要:
信标的作用:用于列车定位,当列车通过信标时,信标发给CC一组数字信息,CC识别该信标,并通过接收到的数字信息查询轨道数据库,确定列车的当前位置。信标分为静态信标和动态信标。静态信标:只是用来确定列车位置。动态信标:连着信号机,采集信号机的状态,用于列车定位并且通知列车是否限速。比如:如果信号机是绿灯,通知列车正常速度;如果信号机是黄灯,通知列车限速。
阅读全文
posted @ 2012-01-31 10:04
Andy Niu
阅读(2528)
推荐(0)
2012年1月18日
摘要:
1、使用场景: Finalize:Finalize 是 Object的方法,C# 类中使用了非托管资源,重写Finalize ,在方法内部释放非托管资源。从而保证了当前类被释放的同时,也释放了内部使用的非托管资源。这里的重写不能使用override,而是使用析构函数来达到同样效果。 Dispose:Dispose是 接口IDisposable的方法,实现Dispose方法,对象自身释放非托管资源。2、调用Finalize告诉GC回收当前对象,即使不调用Finalize,GC也会在恰当的时机回收该对象;对象必须手动调用Dispose,释放自身。为了更好地理解,有些类对Dispose 方法进行包装
阅读全文
posted @ 2012-01-18 13:38
Andy Niu
阅读(432)
推荐(0)
摘要:
托管资源:一般是指被CLR控制的内存资源,这些资源由CLR来管理。可以认为是.net 类库中的资源。非托管资源:不受CLR控制和管理的资源,比如文件流,数据库的连接,网络连接,系统的窗口句柄,打印机资源等,这类资源一般不存在堆上。可以认为操作系统资源的一组API。对于托管资源,GC负责垃圾回收。对于非托管资源,GC可以跟踪非托管资源的生存期,但是不知道如何释放它,这时候就要人工进行释放。
阅读全文
posted @ 2012-01-18 11:27
Andy Niu
阅读(2320)
推荐(1)
摘要:
1、使用场景:栈记录代码执行的路径;堆保存引用类型的实例。2、栈自行维护,一个步骤执行完,自动从栈顶弹出;堆需要GC来进行垃圾回收。3、数据可以分为四类:值类型、引用类型、引用、指令。其中,引用是指类型为引用类型的变量,指令是指一个一个的操作。4、内存分配:引用类型总是分配在堆上;值类型和引用总是分配在它们被声明的地方;指令总是分配在栈上。5、值类型在赋值或者参数传递时,总是“整体拷贝”;引用类型在赋值或者参数传递时,总是“复制引用”。如果要想让值类型具备“复制引用”的特点,需要使用ref 关键词。如果要让引用类型具备“整体拷贝”的特点,需要让引用类型 ICloneable接口,实现接口中的方
阅读全文
posted @ 2012-01-18 10:19
Andy Niu
阅读(194)
推荐(0)