【毕业设计】JAVA基于纠错码的冗余技术的研究——EVENODD码的设计与实现(源代码+论文)

本文介绍了一个基于EVENODD编码算法的毕业设计项目,旨在帮助学生应对提升的毕业设计要求。项目包括编码和译码算法的实现,以及图像处理功能,以5张原始图片生成冗余校验数据,并能恢复最多两个数据块的错误。设计目标着重于直观理解和人机交互,适用于数据存储系统的可靠性研究。
摘要由CSDN通过智能技术生成

这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的理念缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的各类系统很难达到老师的要求。

为了大家能够顺利并以最少的精力通过毕设,学长分享优质毕业设计项目,需要的自取。

目录

1.说明

2.软件设计与目标

2.1设计目标及内容

2.2.软件总体功能结构

2.2.1.功能结构图

 2.2.2.功能说明

2.3设计实现的策略及主要算法描述

2.3.1.VENODD编码算法

2.3.2.​​​​​​​​​​​​​​EVENODD 译码算法

2.4.​​​​​​​算法接口实现

2.4.1.​​​​​​​编码功能接口设计

2.4.2.​​​​​​​​​​​​​​编码功能接口流程图

2.4.3.​​​​​​​​​​​​​​译码功能接口设计


1.说明

由于网络技术的迅猛发展,存储系统的规模变得越来越庞大。因此它对系统的可靠性提出了严峻的挑战。而采用EVENODD编码算法的布局策略可以同时容许两个数据块同时出错,可以很好的保证系统的稳定性。它已经被广泛应用在RAID(Redundant  Arrays of Independent Disks)等技术中。

2.软件设计与目标

2.1设计目标及内容

对于本软件的设计可以概述为以下三个方面:

(1)编码算法的设计是本软件要实现的核心内容,通过EVENODD编码原理利用5张原始图片的数据生成2张冗余的校验数据。

(2)译码算法是体现运用EVENODD原理能够胜任将出错的两个数据块的数据恢复的关键,也是体现了本原理在现实运用中具有的高可靠性和高稳定性。

(3)界面设计是实现友好的人机交互界面不可或缺的重要部分,EVENODD编码的实现过程和结果都要通过该界面表现和保存。

通过对上述内容的设计我们必须达到以下目标:

(1)满足用户对EVENODD编码过程的直观理解;

(2)创建友好的人机操作界面;

(3)满足用户对5张简单图片的备份;

(4)满足用户利用备份图片和尚未被破坏的原图片还原出错图片

2.2.软件总体功能结构

2.2.1.功能结构图

软件功能图如图

 2.2.2.功能说明

图像处理

为了方便EVENODD码的演示,本软件所选用的输入数据就是图片。在正式进行编码之前必须对图像进行一些必要的处理以符合算法的接口标准。因此,图像处理功能模块又可以分成以下几个子功能模块,如:图像载入、图像保存、图像破坏、图像分割、图像表达等

  1. 图像载入:从本地计算机中读取图片文件,可以选择本地计算机中的任何文件夹。
  2. 图像保存:将经过处理后的图片保存在当前的文件夹中或者其他文件夹中。
  3. 图像破坏:将图片的数据全部破坏供译码使用。它是配合软件的仿真而单独设计的。
  4. 图像分割:从以图像格式显示的图片中读取像素并存储在二维数组中,供以后处理使用。
  5. 图像表达:像素经过处理后是存储在二维数组中的,该子功能的作用是将二维数组以图片的格式表达出来,与图像分割功能作用相反。

编码

编码功能是整个软件进行的关键,通过原始图片生成2张冗余校验图片,为译码过程的顺利进行做准备。

译码

该功能是在实际生活中运用最广的一部分,它通过尚未有数据损失的原始图像和通过编码形成的尚未遭到数据破坏的校验数据将已破坏的数据恢复出来(已破坏数据块的数目≤2)。

2.3设计实现的策略及主要算法描述

在该软件的实现过程中,基于面向对象程序设计思想,在实现过程中,把每一个待处理的数据看作一个对象,那么每个对象在实际的应用中也就是一张图片(也可以叫做一个数据块)。.根据EVENODD的编码原理,处理的数组大小m必须为素数,在整个软件的实现过程中取m= 5。由于以上介绍的编码过程都是针对单个数组的,所以在算法处理过程中,必须从每个对象中抽取一列组成单个的数据,将每个4×5大小的数组看作一个基本处理单元,然后按照编码原理进行算法的设计。

2.3.1.​​​​​​​VENODD编码算法

算法描述

EVENODD编码算法是产生冗余校验数据的核心算法。在实现该算法过程中,假设接口为5个数据对象,由于在该算法中实际操作对象是一个4×5大小的数组,首先面对的问题是如何将对象中的数据读出来并且将他们组合成符合规格的数组。基于上述情况,设计能从对象数组中获取某列的方法getColumnData(pictureInComp[] obj,int i)成为必要。利用该方法可以分别在每个对象的数据中获取相应列的数据并返回,组成一个符合规格的数组。这个数组就是最小的处理单元。根据公式(1)可以得到该处理单元产生的水平校验位的值,根据公式(3)不难得出公共校验因子S ,再由公式(2)对角校验值也就很容易的得到了。将该过程置于一个循环中依次处理对象的每一列,每列产生的水平校验值和对角校验值依照相反的方式重新组合便形成了两个冗余对象即水平校验对象和对角校验对象。

设计流程图

编码算法的设计流程图如图:

 

算法实现

编码算法的实现如程序清单(部分展示)

程序清单  EVENODD编码算法

protected void encode(){

int[][] dataCache , tempMatrix1 , tempMatrix2;

tempMatrix1=

 new int[tempMemory[0].getColumn()][tempMemory[0].getRow()]; //暂存运算过程中水平校验位的数据值的转置数据

tempMatrix2=

new int[tempMemory[0].getColumn()][tempMemory[0].getRow()];/暂存运算过程中对角校验位的数据值的转置数据

int[][] temp=

new int[tempMemory[0].getRow()][tempMemory[0].getColumn()];//充当数组转置时的临时变量

2.3.2.​​​​​​​​​​​​​​EVENODD 译码算法

算法描述

EVENODD译码算法是EVENODD码中的关键,是使该码能从理论运用到现实的基础。它与编码算法配合使用,使用的前提是已经由编码算法产生出了冗余校验值。EVENODD译码算法最多能使2个出错数据块恢复。它是在尚未破坏的数据块的数据的基础上运用译码原理进行操作的。由于每个数据块被破坏的几率是均等的,不同的数据块被破坏,处理的方法也相应有所不同。根据EVENODD译码原理,我们可以把该算法分为两部分来实现:

(1)根据错误数据块号找到对应的处理方法。

(2)实现每种情形的处理方法。

与encode算法思想一样,我们同样由待处理的7个不同对象(5个原数据块,2个冗余校验数据块),获得最小数据单元,然后根据译码原理对最小数据单元进行处理。最后将每一个最小数据单元恢复的结果存储到错误数据块相应的位置。

设计流程图(部分展示)

EVENODD译码设计流程图如图

 

算法实现

译码算法的实现如程序清单(部分展示)

程序清单   EVENODD译码算法

protected void decode(){

if(error1 != -1 && error2 != -1){//有两个数据块出错

int[][] dataCache , tempMatrix1 , tempMatrix2;

 pictureInComp[] corectObj;//暂存正确数据块的数据

 tempMatrix1 =

new int[tempMemory[0].getColumn()][tempMemory[0].getRow()];

 tempMatrix2 =

new int[tempMemory[0].getColumn()][tempMemory[0].getRow()];

 int [][] temp =

new int[tempMemory[0].getRow()][tempMemory[0].getColumn()];//充当数组转置时的临时变量

2.4.​​​​​​​算法接口实现

本软件的编码和译码功能是通过分别调用编码和译码算法实现的。因此在实现该功能时必须实现该算法的接口。

2.4.1.​​​​​​​编码功能接口设计

2.4.2.​​​​​​​​​​​​​​编码功能接口流程图

2.4.3.​​​​​​​​​​​​​​译码功能接口设计

 其他内容就不一一展示了,如需对应相关资料,可以评论或者下方联系我,私信都可以。.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇瑞毕设程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值