依赖 (dependency):元素a的变化会影响元素b,但反之不成立,那么b和a的关系是依赖关系,b依赖a;类属关系和实现关系在语义上讲也是依赖关 系,但由于其有更特殊的用途,所以被单独描述。uml中用带箭头的虚线表示dependency关系,箭头指向被依赖元素。
泛化(generalization):通常所说的继承(特殊个体 is kind of 一般个体)关系,不必多解释了。uml中用带空心箭头的实线线表示generalization关系,箭头指向一般个体。
实现(realize):元素a定义一个约定,元素b实现这个约定,则b和a的关系是realize,b realize a。这个关系最常用于接口。uml中用空心空心箭头和虚线表示realize关系,箭头指向定义约定的元素。
关联(association):元素间的结构化关系,是一种弱关系,被关联的元素间通常可以被独立的考虑。uml中用实线表示association关系,箭头指向被依赖元素。
聚合(aggregation):关联关系的一种特例,表示部分和整体(整体 has a 部分)的关系。uml中用带空心菱形头的实线表示aggregation关系,菱形头指向整体。
组 合(composition):组合是聚合关系的变种,表示元素间更强的组合关系。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可 能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。uml中用带实心菱形头的实线表示composition关系,菱形头指向整体。
其中依赖(dependency)的关系最弱,而关联(association),聚合(aggregation),组合(composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的整体与部分关系的关联,而组合是表明整体与部分之间有相同生命周期关系的聚合。
而关联与依赖的关系用一句话概括下来就是,依赖描述了对象之间的调用关系,而关联描述了对象之间的结构关系。
后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。
依赖(dependency)
实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图d)。 更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所 示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的 各个类之间的关系,表示出包和包的关系。
图d
关联(association)
实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在java中,关联(图e) 转换为一个实例作用域的变量,就像图e的“java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(multiplicity)修饰符暗示 着实例之间的关系。在示范代码中,employee可以有0个或更多的timecard对象。但是,每个timecard只从属于单独一个 employee。
图e
聚合(aggregation)
聚合(图f)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成java中的一个实例作用域变量。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
图f
合成(composition)
合成 (图g) 是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局 部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。
employee和timecard的关系或许更适合表示成“合成”,而不是表示成“关联”。
图g
泛化(generalization)
泛化(图h)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的uml元素。在java中,用extends关键字来直接表示这种关系。
图h
实现(realization)
实例(图i)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对java应用程序进行建模时,实现关系可直接用implements关键字来表示。
图i
转自:
异或运算:相同为0,不同为1 与运算:两者为1时为1,有0为0 或运算:有1为1
(2)ip网段的计算和划分
ip和子网掩码 我们都知道,ip是由四段数字组成,在此,我们先来了解一下3类常用的ip
a类ip段 0.0.0.0 到127.255.255.255
b类ip段 128.0.0.0 到191.255.255.255
c类ip段 192.0.0.0 到223.255.255.255
xp默认分配的子网掩码每段只有255或0
a类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑
b类的默认子网掩码 255.255.0.0 一个子网最多可以容纳6万台电脑
c类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑
我以前认为,要想把一些电脑搞在同一网段,只要ip的前三段一样就可以了,今天,我才知道我错了。如果照我这说的话,一个子网就只能容纳254台电脑?真是有点笑话。我们来说详细看看吧。
要想在同一网段,只要网络标识相同就可以了,那要怎么看网络标识呢?首先要做的是把每段的ip转换为二进制。(有人说,我不会转换耶,没关系,我们用windows自带计算器就行。打开计算器,点查看>科学型,输入十进制的数字,再点一下“二进制”这个单选点,就可以切换至二进制了。)
把子网掩码切换至二进制,我们会发现,所有的子网掩码是由一串连续的1和一串连续的0组成的(一共4段,每段8位,一共32位数)。
255.0.0.0 11111111.00000000.00000000.00000000
255.255.0.0 11111111.11111111.00000000.00000000
255.255.255.0 11111111.11111111.11111111.00000000
这是a/b/c三类默认子网掩码的二进制形式,其实,还有好多种子网掩码,只要是一串连续的1和一串连续的0就可以了(每段都是8位)。如11111111.11111111.11111000.00000000,这也是一段合法的子网掩码。子网掩码决定的是一个子网的计算机数目,计算机公式是2的m次方,其中,我们可以把m看到是后面的多少颗0。如255.255.255.0转换成二进制,那就是11111111.11111111.11111111.00000000,后面有8颗0,那m就是8,255.255.255.0这个子网掩码可以容纳2的8次方(台)电脑,也就是256台,但是有两个ip是不能用的,那就是最后一段不能为0和255,减去这两台,就是254台。我们再来做一个。
255.255.248.0这个子网掩码可以最多容纳多少台电脑? 计算方法: 把将其转换为二进制的四段数字(每段要是8位,如果是0,可以写成8个0,也就是00000000) 11111111.1111111.11111000.00000000 然后,数数后面有几颗0,一共是有11颗,那就是2的11次方,等于2048,这个子网掩码最多可以容纳2048台电脑。
一个子网最多可以容纳多少台电脑你会算了吧,下面我们来个逆向算法的题。 一个公司有530台电脑,组成一个对等局域网,子网掩码设多少最合适? 首先,无疑,530台电脑用b类ip最合适(a类不用说了,太多,c类又不够,肯定是b类),但是b类默认的子网掩码是255.255.0.0,可以容纳6万台电脑,显然不太合适,那子网掩码设多少合适呢?我们先来列个公式。 2的m次方=560 首先,我们确定2一定是大于8次方的,因为我们知道2的8次方是256,也就是c类ip的最大容纳电脑的数目,我们从9次方一个一个试2的9次方是512,不到560,2的10次方是1024,看来2的10次方最合适了。子网掩码一共由32位组成,已确定后面10位是0了,那前面的22位就是1,最合适的子网掩码就是:11111111.11111111.11111100.00000000,转换成10进制,那就是255.255.252.0。 分配和计算子网掩码你会了吧,下面,我们来看看ip地址的网段。 相信好多人都和偶一样,认为ip只要前三段相同,就是在同一网段了,其实,不是这样的,同样,我样把ip的每一段转换为一个二进制数,这里就拿ip:192.168.0.1,子网掩码:255.255.255.0做实验吧。 192.168.0.1 11000000.10101000.00000000.00000001 (这里说明一下,和子网掩码一样,每段8位,不足8位的,前面加0补齐。) ip 11000000.10101000.00000000.00000001 子网掩码 11111111.11111111.11111111.00000000 在这里,向大家说一下到底怎么样才算同一网段。 要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢?各类ip的网络标识算法都 是不一样的。a类的,只算第一段。b类,只算第一、二段。c类,算第一、二、三段。 算法只要把ip和子网掩码的每位数and就可以了。
and方法:0和1=0 0和0=0 1和1=1 如:and 192.168.0.1,255.255.255.0,先转换为二进制,然后and每一位 ip 11000000.10101000.00000000.00000001 子网掩码 11111111.11111111.11111111.00000000 得出and结果 11000000.10101000.00000000.00000000 转换为十进制192.168.0.0,这就是网络标识, 再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与ip and 得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1, 这0.0.0.1就是主机标识。要想在同一网段,必需做到网络标识一样。 我们再来看看这个改为默认子网掩码的b类ip 如ip:188.188.0.111,188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗? 先将这些转换成二进制 188.188.0.111 10111100.10111100.00000000.01101111 188.188.5.222 10111100.10111100.00000101.11011010 255.255.254.0 11111111.11111111.11111110.00000000 分别and,得 10111100.10111100.00000000.00000000 10111100.10111100.00000100.00000000 网络标识不一样,即不在同一网段。 判断是不是在同一网段,你会了吧,下面,我们来点实际的。 一个公司有530台电脑,组成一个对等局域网,子网掩码和ip设多少最合适? 子网掩码不说了,前面算出结果来了11111111.11111111.11111100.00000000,也就是255.255.252.0 我们现在要确定的是ip如何分配,首先,选一个b类ip段,这里就选188.188.x.x吧 这样,ip的前两段确定的,关键是要确定第三段,只要网络标识相同就可以了。我们先来确定网络号。(我们把子网掩码中的1和ip中的?对就起来,0和*对应起来,如下:)
255.255.252.0 11111111.11111111.11111100.00000000
188.188.x.x 10111100.10111100.??????**.********
网络标识 10111100.10111100.??????00.00000000 由此可知,?处随便填(只能用0和1填,不一定全是0和1),我们就用全填0吧,*处随便,这样呢,我们的ip就是 10111100.10111100.000000**.********,一共有530台电脑,ip的最后一段1~254可以分给254台计算机,530/254=2.086,采用进1法,得整数3,这样,我们确定了ip的第三段要分成三个不同的数字,也就是说,把000000**中的**填三次数字,只能填1和0,而且每次的数字都不一样,至于填什么,就随我们便了,如00000001,00000010,00000011,转换成二进制,分别是1,2,3,这样,第三段也确定了,这样,就可以把ip分成188.188.1.y,188.188.2.y,188.188.3.y,y处随便填,只要在1~254范围之内,并且这530台电脑每台和每台的ip不一样,就可以了。
原码和反码,补码都是一样的,都是正数本身。
(2)负数
原码是符号位为1,数值部分取x绝对值的二进制。
反码是符号位为1,其它位是原码取反。
补码是符号位为1,其它位是原码取反,未位加1。也就是说,负数的补码是其反码未位加1。
正负0都为0 000.
(3) 移码
就是将符号位取反的补码.无论正数和负数,0除外,0的补码和移码相同.
也可以理解成:不算符号位外,最高数据位的进位.最高数据位为0,符号位为0;为1,符号位为1.
例:
原码 反码 补码 移码
0 0 000 0 000 0 000 1 000
-0 1 000 1 111 0 000 0 000
1011 原码:01011 反码:01011 //正数时,反码=原码 补码:01011 //正数时,补码=原码 移码:11011 //原数 10000 -1011 原码:11011 反码:10100 //负数时,反码为原码取反 补码:10101 //负数时,补码为原码取反+1 移码:00101 //原数 10000 0.1101 原码:0.1101 反码:0.1101 //正数时,反码=原码 补码:0.1101 //正数时,补码=原码 移码:1.1101 //原数 1 -0.1101 原码:1.1101 反码:1.0010 //负数时,反码为原码取反 补码:1.0011 //负数时,补码为原码取反+1 移码:0.0010 //原数 1
非格式化容量 = 位密度×内圆周长×每面磁道数×记录面数
格式化容量 = 扇区大小×每磁道扇区数×每面磁道数×记录面数
数据传输率 = 扇区大小×每磁道扇区数×转速
计算容量时,单位应统一.cm换成mm;mb换成kb; 位转换成字节=除以8.
(1)单记录面磁道数=磁道密度×(盘面外半径-盘面内半径)
(2)非格式化容量= 记录位密度×内圆周长×单记录面磁道数×记录面数
总磁道数= 单记录面磁道数×记录面数
内圆周长=3.14*内圆直径=2××半径 = 圆周率×直径
(3)格式化容量=记录面数×单记录面磁道数×每个磁道扇区数×扇区字节数
(4)一个磁道存储的字节数=磁盘扇区数×扇区字节
(5)数据传输率=每磁道扇区数×扇区大小×转速
(6)平均等待时间=磁盘转速时间的一半
平均存取时间是反应磁盘数据操作速度的指标,单位是毫秒(ms),他包括3个时间段:平均寻道时间,平均定位时间,转动延迟,其中后面两个统称为等待时间。
举例:
假设一个有3个盘片的硬盘,共有4个记录面,转速为7200/分钟,盘面有效记录区域的外直径为30cm,内直径为10cm,记录位密度为250位/mm,磁道密度为8道/mm,每个磁道分16扇区,每扇区512字节。
总磁道数:ct=磁盘面数*(外直径-内直径)/2*磁道密度=4*(30-10)*10/2*8=3200
非格式化容量:cuf=总磁道数*内径磁道周长*位密度=3200*(3.14*10*10)*(250/8)字节=29.95m
格式化容量:cf=总磁道数×每扇区数×每扇区字节数=4*=25m
平均数据传输速率:cg=每磁道扇区数16×每扇区字节数512kb×转速(7200/60s)=983040=960kb/s
系统可靠性计算是软件设计师考试的一个重点,近些年几乎每次考试都会考到,但这个知识点的难度不高,了解基本的运算公式,即可轻松应对。
可靠性计算主要涉及三种系统,即串联系统、并联系统和冗余系统,其中串联系统和并联系统的可靠性计算都非常简单,只要了解其概念,公式很容易记住。冗余系统要复杂一些。在实际的考试当中,考得最多的就是串并混合系统的可靠性计算。所以要求我们对串联系统与并联系统的特点有基本的了解,对其计算公式能理解、运用。下面将对这些计算的原理及公式进行详细的说明。
串联系统
假设一个系统由n个子系统组成,当且仅当所有的子系统都能正常工作时,系统才能正常工作,这种系统称为串联系统,如图1所示。
设系统各个子系统的可靠性分别用r1,r2,……,rn表示,则系统的可靠性r=r1×r2×…×rn 。
如果系统的各个子系统的失效率分别用λ1,λ2,……,λn来表示,则系统的失效率λ=λ1×λ2×…×λn 。
并联系统
假如一个系统由n个子系统组成,只要有一个子系统能够正常工作,系统就能正常工作,如图2所示。
设系统各个子系统的可靠性分别用r1,r2,……,rn表示,则系统的可靠性r=1-(1-r1)×(1-r2)×…×(1-rn) 。
假如所有子系统的失效率均为λ,则系统的失效率为μ:
在并联系统中只有一个子系统是真正需要的,其余n-1个子系统都被称为冗余子系统。该系统随着冗余子系统数量的增加,其平均无故障时间也会增加。
串并混合系统
串并混合系统实际上就是对串联系统与并联系统的综合应用。我们在此以实例说明串并混合系统的可靠性如何计算。
例1:
某大型软件系统按功能可划分为2段p1和p2。为提高系统可靠性,软件应用单位设计了如下图给出的软件冗余容错结构,其中p1和p2均有一个与其完全相同的冗余备份。若p1的可靠度为0.9,p2的可靠度为0.9,则整个系统的可靠度是 。
供选择的答案a. 0.6561
b. 0.81
c. 0.9801
d. 0.9
试题分析
当系统采用串联方式时,其可靠度r可由公式r=r1r2…rn求得。当系统采用并联方式时,其可靠度r可由公式r=1-(1-r1)*(1-r2)…(1-rn)求得。这个系统总的来说是串联,但分成两个并联部分。第一部分的可靠度为:r1=1-(1-0.9)*(1-0.9)=0.99;第二部分的可靠度也为:r2=0.99;所以整个系统的可靠度为:r=r1*r2=0.9801 ,c答案。
试题答案
c
上面的例题是属于常规形式的可靠性计算题,如果把这种试题再拨高一个层次,可以。
例2:
1台服务器、3台客户机和2台打印机构成了一个局域网(如图4所示)。在该系统中,服务器根据某台客户机的请求,数据在一台打印机上输出。设服务器、各客户机及各打印机的可靠度分别为a、b、c,则该系统的可靠度为 。
a.ab3c3
b.a(1-b3)(1-c2)
c.a(1-b)3(l-c)2
d.a(1-(1-b)3)(1-(l-c)2)
例题分析
在试题给出的系统中,客户机之间是并联的(任何一台客户机出现故障,对其他客户机没有影响),同理,打印机之间是也并联关系。然后,客户机、服务器、打印机之间再组成一个串联关系。因此,我们可以把该系统简化为:
已知服务器、各客户机及各打印机的可用性分别为a、b、c,因此整个系统的可用性为:r=(1-(1-b)3)a(1-(1-c)2)=a(1-(1-b)3)(1-(1-c)2)
例题答案d
4.模冗余系统
m模冗余系统由m个(m=2n 1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出可作为系统的输出,如图5所示。
在m个子系统中,只有n 1个或n 1个以上的子系统能正常工作,系统就能正常工作并输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为r0,则m模冗余系统的可靠性为: