才完全搞懂在encode的时候几个参数是么起作用的
2014-03-24 15:18
399 查看
昨天还算可以,跌跌撞撞地终于把怎样恢复单个数据块的代码给搞定了,哎,其实也没算自己搞定了代码,只不过知道怎样调那几个参数怎样输出罢了,不过搞定之后发现还是裸机有点乱,像乱嵌入了一些代码在一堆不懂的代码当汇总而这刚好能work而已,然后今天搞了一上午终于明白了
我是这样子做试验的,试验的对象是一个192kB的文本,这个文本大致上是由6个32k的段落组成的,每个段落有512行,每一行大小是64B,六个段落分别是数字1-6,但是在第一段里面有一些行被改掉了,这样就可以看出是怎样work的了
比如我现在跑一个encoding,参数是k=6,m=2,wordsize=8,packetsize=64,buffersize=1024(这个只是这样设定,但是在代码当中是会帮你调整的,因为不够大)
wordsize表示我文本当中多少个数字去组成一个word?这个word是它EC里面用到的术语,很多的讲述EC的教程为了简化都是将w=1,这里的话我设定一个常用的数值8,然后packet这个单位很重要,这个单位的设定是会影响到最终encoding之后出来的数据的,当然在我的例子当中就表现为,比如packetsize是32和64的时候,test_data_1的数据时不一样的。然后packetsize就是意味着,我每一次编码,是不会直接拿整个原始数据块去编码的,我每次拿k个“packet”,每个packet是什么?就是packetsize个word,所以联系我前面所设定的参数,我这里的packetsize设置为64,那么我现在每一个packet的大小就是:(这个是int的大小)4*8*64=2048B,由于每一行的大小是64B,所以就是:第一次编码子过程中,拿出6*2048B 大小的部分(当然是从头开始,对应的,在我的文本里面,就是等于拿出了前192行),然后给data segment分配去,按照顺序轮流分配32行,那么这一次编码的子过程,显而易见的,需要到读入6*2k=12k那么大的数据,所以buffersize就是12k,那么这一次完了之后呢ok,继续下一次编码的子过程,所以第193-224这32行数据,就成为了第一个data segment的第二个组成部分(当然的,最后这6个数据块每个大小都是32k,原始文件大小的六分之一),然后如此循环下去。
然后在编码一次之后,它会生成一个meta文件,里面记录了源文件的文件名,文件大小,k,m,w,packetsize,buffersize,这些值,最后还有一个readins这个数值,其实就似乎表示,如果每次我已经设定了只读入buffersize这么多的数据,那么我需要读多少次才能读完原始文件,这个没有什么实际作用,只不过在解码的时候,用一个while循环来控制次数而已,因为在decode的过程中,其实也是相当于encode的一个反过程,比如datasegment1不见了,那么我每次都从其他数据快和校验快的头部开始拿一些数据出来进行计算,就这样而已
所以这次的话,纠正了几个很傻逼的以前认为是正确的关键问题,当然我以前一直认为data segment对于源文件是水平分割的,其实不是的,当然应该也可以,改变下矩阵,不过这样不知道还能不能解码,然后要注意这个packetsize应该作为我的实验代码里面的一个全局不能变的量,因为是直接决定了源文件是怎样被分隔的,听说1024会比较好,不知道呢,反正一定不能变
然后下个问题就是想清楚到底在update的时候这个从client端过来的offset应该怎样指定了, 弄清这个问题之后就能很快地吧之间写的传送文件的代码和EC的代码合成起来了,当然我现在初步的想法还是将这个识别offset应该是去哪里的操作交给proxy server,反正客户端就直接指定写了源文件的那里就好了,规定了w和packetsize之后这个由client library来计算下应该是很快的事情了
好吧,就这样
OH!!!!!!!!!! FUCK ME !!!!!!!!!!!!
我的基础啊!哎。。。。
原来cauchy 的方法就是原原本本地分割的。。。。。。。。fuck!!!!!!!!
就用它了,不过算了,也算走了一趟经典的reed solomon吧
我是这样子做试验的,试验的对象是一个192kB的文本,这个文本大致上是由6个32k的段落组成的,每个段落有512行,每一行大小是64B,六个段落分别是数字1-6,但是在第一段里面有一些行被改掉了,这样就可以看出是怎样work的了
比如我现在跑一个encoding,参数是k=6,m=2,wordsize=8,packetsize=64,buffersize=1024(这个只是这样设定,但是在代码当中是会帮你调整的,因为不够大)
wordsize表示我文本当中多少个数字去组成一个word?这个word是它EC里面用到的术语,很多的讲述EC的教程为了简化都是将w=1,这里的话我设定一个常用的数值8,然后packet这个单位很重要,这个单位的设定是会影响到最终encoding之后出来的数据的,当然在我的例子当中就表现为,比如packetsize是32和64的时候,test_data_1的数据时不一样的。然后packetsize就是意味着,我每一次编码,是不会直接拿整个原始数据块去编码的,我每次拿k个“packet”,每个packet是什么?就是packetsize个word,所以联系我前面所设定的参数,我这里的packetsize设置为64,那么我现在每一个packet的大小就是:(这个是int的大小)4*8*64=2048B,由于每一行的大小是64B,所以就是:第一次编码子过程中,拿出6*2048B 大小的部分(当然是从头开始,对应的,在我的文本里面,就是等于拿出了前192行),然后给data segment分配去,按照顺序轮流分配32行,那么这一次编码的子过程,显而易见的,需要到读入6*2k=12k那么大的数据,所以buffersize就是12k,那么这一次完了之后呢ok,继续下一次编码的子过程,所以第193-224这32行数据,就成为了第一个data segment的第二个组成部分(当然的,最后这6个数据块每个大小都是32k,原始文件大小的六分之一),然后如此循环下去。
然后在编码一次之后,它会生成一个meta文件,里面记录了源文件的文件名,文件大小,k,m,w,packetsize,buffersize,这些值,最后还有一个readins这个数值,其实就似乎表示,如果每次我已经设定了只读入buffersize这么多的数据,那么我需要读多少次才能读完原始文件,这个没有什么实际作用,只不过在解码的时候,用一个while循环来控制次数而已,因为在decode的过程中,其实也是相当于encode的一个反过程,比如datasegment1不见了,那么我每次都从其他数据快和校验快的头部开始拿一些数据出来进行计算,就这样而已
所以这次的话,纠正了几个很傻逼的以前认为是正确的关键问题,当然我以前一直认为data segment对于源文件是水平分割的,其实不是的,当然应该也可以,改变下矩阵,不过这样不知道还能不能解码,然后要注意这个packetsize应该作为我的实验代码里面的一个全局不能变的量,因为是直接决定了源文件是怎样被分隔的,听说1024会比较好,不知道呢,反正一定不能变
然后下个问题就是想清楚到底在update的时候这个从client端过来的offset应该怎样指定了, 弄清这个问题之后就能很快地吧之间写的传送文件的代码和EC的代码合成起来了,当然我现在初步的想法还是将这个识别offset应该是去哪里的操作交给proxy server,反正客户端就直接指定写了源文件的那里就好了,规定了w和packetsize之后这个由client library来计算下应该是很快的事情了
好吧,就这样
OH!!!!!!!!!! FUCK ME !!!!!!!!!!!!
我的基础啊!哎。。。。
原来cauchy 的方法就是原原本本地分割的。。。。。。。。fuck!!!!!!!!
就用它了,不过算了,也算走了一趟经典的reed solomon吧
相关文章推荐
- PHP的json_encode中文被转码的问题 在php5.2中做json_encode的时候。中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_U
- PHP的json_encode中文被转码的问题 在php5.2中做json_encode的时候。中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_U
- mongod启动时候几个参数说明
- 测试程序的时候用到写参数或者错误日志的几个方法,用来方便发现错误
- 关于request获取路径的几个参数实例
- JSP中使用jsp:param传入参数的时候出现中文乱码
- MySQL主从复制几个重要的参数
- JFrame 的setDefaultCloseOperation(int) 几个参数的比较
- (转)JDK泛型中的问号(?)的用途 (泛型集合类的作为参数的时候的继承问题)
- Xcode6.1调试的时候有时参数总为nil
- git add详解(总记不住啥时候用add的哪个参数、囧)
- 常用的几个误差参数
- JSP、AJax中文乱码问题解决,escape(), encodeURI(), encodeURIComponent(),js对参数连续两次调用 encodeURI(String) 方法
- oracle 11g RAC 中几个重要参数的解释
- 几个误差参数说明
- MCI Command String总览—完全参数篇(6)
- window.open参数完全手册
- 指针之函数的参数是数组的时候的本质
- Android OkHttp完全解析 是时候来了解OkHttp了
- 手机丢了怎么办|找回丢失的手机|昨天买衣服的时候丢了刚买的手机,真扫兴,不过我想除了几个比较有用的方法帮你找回你的手机