冗余拆分算法
A. 冗余是什么意思.
多余的重复或_嗦内容(包括信息、语言、代码、结构、服务、软件、硬件等等)均称为冗余。
冗余有两层含义,第一层含义是指多余的不需要的部分,升裂第二层含义是指人为增加地重复部分,其目的是用来对原本的单一部分进行备份梁笑含,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。
冗余是一个汉语词汇,拼橡笑音是rǒngyú,英文是rendancyrendance。
B. 算法中的冗余是什么意思
什么是冗余
冗余,指重复配置系统的一些部件,当系统发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间 Rendant,自动备援,即当某一设备发生损坏时,它可以自动作为后备式设备替代该设备
冗余系统配件主要有:
电源:高端服务器产品中普遍采用双电源系统,这两个电源是负载均衡的,即在系统工作时它们都为系统提供电力,当一个电源出现故障时,另一个电源就承担所有的负载。有些服务器系统实现了DC的冗余,另一些服务器产品如 Micron公司的NetFRAME 9000实现了AC、DC的全冗余。 存储子系统:存储子系统是整个服务器系统中最容易发生故障的地方。以下几种方法可以实现该系统的冗余。 磁盘镜像:将相同的数据分别写入两个磁盘中: 磁盘双联:为镜像磁盘增加了一个I/O控制器,就形成了磁盘双联,使总线争用情况得到改善; RAID:廉价冗余磁盘阵列(Rendant array of inexpensive disks)的缩写。顾名思义,它由几个磁盘组成,通过一个控制器协调运动机制使单个数据流依次写入这几个磁盘中。RAID3系统由5个磁盘构成,其中4 个磁盘存储数据,1个磁盘存储校验信息。如果一个磁盘发生故障,可以在线更换故障盘,并通过另3个磁盘和校验盘重新创建新盘上的数据。RAID5将校验信息分布在5个磁盘上,这样可更换任一磁盘,其余与RAID3相同。 I/O卡:对服务器来说,主要指网卡和硬盘控制卡的冗余。网卡冗余是在服务器中插上双网卡。冗余网卡技术原为大型机及中型机上的技术,现在也逐渐被PC服务器所拥有。PC服务器如 Micron公司的NetFRAME9200最多实现4个网卡的冗余,这4个网卡各承担25%的网络流量。康柏公司的所有 ProSignia/Proliant服务器都具有容错冗余双网卡。 PCI总线:代表Micron公司最高技术水平的产品NetFRAME 9200采用三重对等PCI技术,优化PCI总线的带宽,提升硬盘、网卡等高速设备的数据传输速度。 CPU:系统中主处理器并不会经常出现故障,但对称多处理器(SMP)能让多个CPU分担工作以提供某种程度的容错。
循环冗余检查
循环冗余检查(Cyclical Rendancy Check),就是在每个数据块(称之为帧)中加入一个FCS(Frame CheckSequence,帧检查序列)。FCS包含了帧的详细信息,专门用于发送/接收装置比较帧的正确与否。如果数据有误,则再次发送。 是一种数据传输检错功能,对数据进行多项式计算,在每个数据块(称之为帧)中加入一个FCS(Frame Check Sequence 帧检查序列)并将得到的结果附在帧的后面,FCS包含了帧的详细信息,专门用于发送/接收装置比较帧的正确与否。接收设备也执行类似的算法,以保证数据传输的正确性和完整性。若CRC校验不通过,系统重复向硬盘复制数据,陷入死循环,导致复制过程无法完成。 [1]冗余可以理解为备用 多次(多处)储存相同的数据
C. 什么是数据冗余
数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。可以说增加数据的独立性和减少数据冗余是企业范围信息资源管理和大规模信息系统获得成功的前提条件。
是传输消息所用数据位的数目与消息中所包含的实际信息的数据位的数目的差值。数据压缩是一种用来消除不需要的冗余的方法,校验和是在经过有限信道容量的噪声信道中通信,为了进行错误校正而增加冗余的方法。
D. 消除冗余序列算法
main()
{
int a[100];
int i, t,b,c;
printf("please enter 100 number.");
do
{
for(i=0;i<100;i++)
{scanf("%d",a[i]);
if(a[i]!=0||a[i]!=1)
{
break;printf("error,please enter again!");
}
else
t=0;
}
} while (t=0) ;
b=strlen(a);
for(i=b,c=1;i>0;i--)
{if (a[i]==a[i-1]==1)
c+=1;
else
break;
}
if(c>=3)
{
a[b]=2;
for(i=1;i<=c;i++)
a[b-i]=0;
a[b-c]=1;
}
for(i=0,c=0;i<b;i++)
{if(a[i]==a[i+1]==1)
c+=1;
else
break;
}
if(c>=3)
{for(i=0;i<=c;i++)
{a[i+1]=a[i];a[i+1]=0;}
a[i]=1;
a[c+1]=2;
}
}
我用的是WIN-TC遍的
已经测试过
可以通过
你可以试试
E. 消除二进制 冗余序列算法
#include<stdio.h>
#include<string.h>
void main()
{
char a[]="1111110111110111011",b[20],c[20],*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8;
int i,len;
p1=a;p2=b;p3=c;
system("cls");
for(;*p1!='0';p1++,p2++)
*p2=*p1;
*p2='\0';
for(;*p1!='\0';p1++,p3++)
*p3=*p1;
*p3='\0';
printf("string a is: %s\n",a);
p5=c;
p4=p3-1;
p6=p3-1;
do
{if(*p4=='0')
{len=p6-p4;
if(len<3)p6=p4-1;
if(len>=3)
{*p6='2',*p4='1';
for(i=1;i<len;i++)
*--p6='0';p6=p4-1;}}
}while(p4--!=p5);
p7=p2+1,p8=p2;
do
{*p7=*p2;
p7--;
}while(p2--!=b);
*b='1';
*p8='2';
len=p8-b;
for(i=1;i<len;i++)
*--p8='0';
printf("string b is:");
printf("%s",strcat(b,c));
}