用网络共享的思想看数据压缩(更新)

原创 2006年05月25日 22:34:00
用网络共享的思想看数据压缩
                                  陈航
                  北京林业大学信息学院   计算机系 100083
   
摘要:世界是一个统一的整体,同时我们的资源也是有限的,无论是水,还是其他的,都是我们生存下去的基础,所以我们号召大家节约资源,从自己作起。我们现在的数据压缩方面的研究目的是从本地计算机的角度来考虑如何节约我们的硬盘空间,但是这一点远远不能满足我们对压缩效果的要求,随着网络技术的高速发展,使得我们一整个网络的观点来看待我们需要的数据压缩变得越来越有可能,离我们也越来越近了。
关键字:压缩 网络 队列
前言:虽然说现在的世界是一个信息的世界,但是数据冗余的情况是随处可见的,我们平时上网需要的搜索引擎,例如:baidu,Google,Yahoo等,虽然给我们带来了很大的便利,能提供我们所需要的信息,同时能很精确的找到网上的资源,但同时也见证了网络上有很多很大的数据冗余情况,一条相同的信息,一个完全相同的资源下载却有上万条的网站同时存在,而且提供下载,我们想想,如果这些机器的硬盘上面都有这些资源而且是独立的,我们是不是很浪费空间了,同时也浪费了我们的资源,从整个世界的观点来看,这一点是不可取的,虽然我们在研究先进的算法来单单从本地来解决本地硬盘的空间存储问题,但这毕竟是一个方面,如果我们从更高更加广阔的视野来考虑这个问题,也就是不从个人或者某个公司来考虑,而是从整个人类的观点来看待数据压缩,这比现在的效果要好得很多,但是这仅仅现在只是设想,当然我们在完善我们的网络的同时也要将这点考虑进去。
正文部分:
1 理论分析部分:
1.1效率低下的主要原因:(如图)

1.2分析:我们可以免费的从网络上获取大量的绿色软件,也就是免费软件,大多数是某个公司或者编程爱好者为表现其实力来编写的,但是这种软件多数最初只有单独的一个服务器来提供下载功能,但是很多商业网站或者其他软件下载网站为了达到其自身的商业目的,也就是为了使得其点击率比较高也为此软件提供了上载功能,为我们提供方便快捷的同时也在使我们的资源在浪费。我们可以看看主要的浪费途径就是过程1和过程2,每个商业网站的服务器中都有这个软件。即使是软件所占的硬盘空间很少,但是由于商业网站服务器的数量很大,所以浪费也很大。

2.解决途径的分析:
2.1方法一:
把每个计算机看成独立的部分,没有连入任何的网络中,同时也没有得到任何的网络共享,所以单单改进我们压缩算法,编制高效率的压缩工具,这样我们就可以省下空间。
2.2方法二:
用网络方面的知识去思考.事实上也就是我们能不能为某个网络资源(用户需求量很大)在整个网络中只存在一份这种资源,或者有另外备份的一份,这样我们就可以得到很大的压缩比例.
3.具体事例分析:
3.1事例:我们用Visual Studio2005.net的文件来作为具体事例.首先我们用要进行分析.同时我们作几点假设,具体如下:
  1. 全球需要这个软件的用户是1000人.
  2. 同时有10000个网站提供这个软件的下载.
  3. 假设每个用户和网站都需要一份安装文件.
3.2方法一结果:
  用rar压缩后, Visual Studio2005.net(中文版)的大小是2.73G.解压后为大约为3G左右.
计算节约的空间:
   (3-2.73)*(11000) = 2970G   节省空间
但是全世界总共需要的存储空间:
   2.73*11000 = 30030G        实际存储空间
3.3方法二结果:
两份Visual Studio2005.net(中文版)为整个所网络共享.
计算节约的空间:
(3-2.73)*(2) = 0.54G   节省空间
但是全世界总共需要的存储空间:
2.73*2 = 5.46G         实际存储空间
3.4对比:
方法一:
全世界总共需要的存储空间: 30030G
方法二:
全世界总共需要的存储空间: 5.46G
压缩比例:
结果一:结果二 = 5500 : 1
3.5基于方法二的思考:
3.5.1实现条件:
1.需要数据不冗余的网络共享.
2.需要高效的网络环境.
3.解决在下载中的队列问题。
4.对于队列问题的思考:
    在我们的现在的网络中,我们可以很方便的下载我们需要的软件,但是如果运气好的话我们就可以直接点击下载就可以实现下载,只是时间问题,但是对于如上假设的网络,虽然是高效率的,但是我们还是必须考虑队列问题,这是关系到我们下载时间的问题,如果单独去考虑了空间存储问题的话,这样我们显得对问题的考虑很不完善,下面来看看我们的实际下载图。

4.1 下载时间长的原因:
同样我们把每个用户给孤立起来了,我们的网络是用很多的局域网组成的,在通过电缆线把各个居域网连起来,就成了我们的广域网,这样我们就好象实现了现在网络统一的效果,同样上面的解决途径也只是把每个网络成员看成了一个个独立的主机,没有把其中的关系找出来,下面来看看我们的实际网络图。

这就是我们现在实现的计算机网络,可以很清楚的发现,我们考虑的队列下载方式完全是考虑成单个计算机和下载服务器的通信方式了。
4.2解决队列下载问题的方法:
4.2.1方法一:
我们可以借鉴现在BT软件等软件的下载方式来考虑问题,也就是把多个用户下载线程连接起来,比如现在有两个用户下载一个软件,我们可以利用这样的特点,用户一下载前50%,而第二个用户下载后50%,这样我们就可以在分别把着两个用户作为下载源,这样就相当于我们同时为用户提供了两个下载地址,具体图如下:

4.2.2方法一的问题:
问题一:如果两个用户分别下载的速度相差很大,也就是说如果用户一的下载速度很慢,但是第二个用户的下载比较快,这样我们得到了不公平的下载方式,这相当于第二个用户只有一个源,第一个用户有两个源,这样的情况对于用户来说是不公平的,但是这样的情况还是可以允许发生的,毕竟是很大效率的利用了网络的特点。
问题二:我们下载的用户可能不是在一个局域网内,也就是说用户一和用户二的网络距离很远,这样我们就很难实现这样的下载方法。
4.2.3方法二:
我们可以这样来考虑,我们早到自己很近的用户(网络距离很近的用户),这样我们就可以实现我们的共同下载的目的,因为局域网的传输速度还是很可观的,着可以作为我们的方法二的改进方法,这样我们就需要编写局域网监控程序,寻找相同网络需求。
4.2.4方法三:
我们是否可以利用复制网络数据包的方法来实现这样的下载过程了,也就是用户一和用户二并不是一个局域网的用户,但是在下载一个服务站点的资源的时候我们下载文件的数据包走的网络路程可能有些相同的路径,也就好比如:我和同学都是到北方来,我去北京,他去天津,我们虽然到达的目的地不相同,但是我们同样要走京九高速公路,这样我们就可以利用一辆汽车到北京后,再分别回自己的目的地,这样我们同时节约了汽油钱,事实上和节约网络资源是同样的道理,不同的是,这里我们到达北京后,相当于到达一个路由器,这个时候我们需要复制这些下载的数据包,分别分发到我们的用户一和用户二,数据包就像汽油一样,我们节省了很大部分路程的网络资源,只是一小部分需要自己单独来承担的,这样也是一种压缩思想的体现,原理图可以如下:

5.说明:
    如上的方法有很多已经实现了,有些也只是理论的设想而已,对于整个网络环境的把握总是很难,所以我们必须进一步很好的研究合适我们的网络,最主要的思想也就是压缩的思想,无论是数据压缩还是空间压缩,还是对于网络资源的压缩,我们一直追求的就是“用最少的资源,做出最多最好的事”,这也一直是我的做人和做事的观念。
6.参考文献:
1.     笨笨数据压缩教程
http://www.contextfree.net/wangyg/a/tutorial/benben/default.htm
2. 《计算机网络》吴功宜 编著 清华大学出版社 2003年

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

jcifs 详解读取网络共享文件数据

时隔1年半,没有发过新的帖子了,也没怎么来过CSDN逛逛了,人也懒散了。 今天收到网友的提问,才回来看看,觉得应该再写点什么出来,不过,发现自己研究是不是太深入,写不出那么高深的东西,那就写点肤浅的...

网络爬虫--网页数据压缩(python deflate gzip)

转自:http://www.jianshu.com/p/2c2781462902 做项目就伴随着一个问题--数据来源。在网络数据获取的过程,考虑到数据的动态下载需要爬虫。这也是必经之路吧。 ...

Filter包装response,重写response的getWriter方法实现网络数据压缩

第一步:开发一个Servlet输出数据 ; import java.io.IOException; import java.io.PrintWriter; import javax.servl...

《从零开始搭建游戏服务器》 网络数据压缩——Zlib算法

前言:关于压缩算法,其实有不少,例如:ZIP、RAR和bzip2等,这里我们举例使用的Zlib相较于前者都要简单一些,与ZIP、RAR等归档算法不同,它与bzip2更为接近。那么,下面我们就来尝试一下...

Windows2008网络共享设置加速

共享访问其实是局域网中一项经常要进行的操作,不要以为这样的操作简单得不值一提,因为访问不同操作系统中的共享资源,需要使用到的共享访问秘籍不一定完全相同;这不,当我们尝试访问Windows Server...

linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享

linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随...

linux学习之ISCSI网络共享服务

######iSCSI远程块存储######   一.iSCSI概念 提供iSCSI目标 访问iSCSI存储 iSCSI(Internet SCSI)支持从客户端(发起端)通过IP向远程服务器上...

ORACLE expdp备份到windows网络共享文件目录(NFS)

对于DBA来说,数据服务器存储是永远不可消除的疼,因为存储总会时不时的不足,磁盘空间总会因种种理由不能通过加盘扩容,那么解决问题的方法就是 看有没有其他存储赋予的存储提供给数据库服务器。本文介绍win...

网络共享问题:让电脑上网的N种方法

让电脑上网的N中方法:网线、无线、手机、数据线、蓝牙
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)