最近做了这个一个项目,
项目描述:要根据2个不同的规则生成不重复的数据,其中规则1有120000左右的量,规则2则是有230多的量,大致算一下这个数据量就有27600000。
而这只是其中的一个部分。从这批数据中每次随机取出500条,要求不能友重复的数据。
从这个需求来看是打数据量,并且要求要求数据随机不重复,就因为随机不重复这个地方的问题。
随机和不重复本来就是两个不同的要求,如果只考虑其中一个这个问题很容易解决
比如:从中随机取数据,不考虑重复的问题,这个问题容易解决;只考虑不重复这样也号解决问题,主要就是有规则
还有就是先把所有的数据都组合好,然后从中随机取(这个会消耗很大的存取空间)
为了解决这个问题想到一个方法,先把这些规则进行排列组合
即下图
. 0 0 ....... 0
规则2n 0 0 ....... 0
如果用了就把相应的位置1即可表示该组合被用了,那么就需要先生成这个文件的索引,即上面这个文件如下所示
初始化部分
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000
使用后的数据
10000000000000000000000
00000000000000100000000
00000000000100000000000
00000000000010000000000
00000000000000100000000
# 全部使用完
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111
但是这些组合起来后文件还是很大,快10M了,能不能把这个文件进异步减小,方法是有的
可以用16进制,如果是在一行上用就可以把文件减少到原来的1/4,要想更小可以用32,64进制,这样可以把文件
减少到1/6,如果行列都用的话则可以减少到最大是1/18 .为什么不是1/36是有原因的,因为这样一行一列就需要两个字符了
既然是2个字符那就要乘以2了,也就算18。
这样就给程序增加复杂度。
接下来就要把这个上面的索引和数据进行转换了。具体的程序就不贴出来了
项目描述:要根据2个不同的规则生成不重复的数据,其中规则1有120000左右的量,规则2则是有230多的量,大致算一下这个数据量就有27600000。
而这只是其中的一个部分。从这批数据中每次随机取出500条,要求不能友重复的数据。
从这个需求来看是打数据量,并且要求要求数据随机不重复,就因为随机不重复这个地方的问题。
随机和不重复本来就是两个不同的要求,如果只考虑其中一个这个问题很容易解决
比如:从中随机取数据,不考虑重复的问题,这个问题容易解决;只考虑不重复这样也号解决问题,主要就是有规则
还有就是先把所有的数据都组合好,然后从中随机取(这个会消耗很大的存取空间)
为了解决这个问题想到一个方法,先把这些规则进行排列组合
即下图
规则11 规则12 ...... 规则1n
规则21 0 0 ...... 0
规则22 0 0 ...... 0
. 0 0 ...... 0. 0 0 ....... 0
规则2n 0 0 ....... 0
如果用了就把相应的位置1即可表示该组合被用了,那么就需要先生成这个文件的索引,即上面这个文件如下所示
初始化部分
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000
00000000000000000000000
使用后的数据
10000000000000000000000
00000000000000100000000
00000000000100000000000
00000000000010000000000
00000000000000100000000
# 全部使用完
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111
11111111111111111111111
但是这些组合起来后文件还是很大,快10M了,能不能把这个文件进异步减小,方法是有的
可以用16进制,如果是在一行上用就可以把文件减少到原来的1/4,要想更小可以用32,64进制,这样可以把文件
减少到1/6,如果行列都用的话则可以减少到最大是1/18 .为什么不是1/36是有原因的,因为这样一行一列就需要两个字符了
既然是2个字符那就要乘以2了,也就算18。
这样就给程序增加复杂度。
接下来就要把这个上面的索引和数据进行转换了。具体的程序就不贴出来了