文本去重,网上有很多软件可以实现,但是实际上没有一个软件可以做到2GB以上完全去重,其根本原因在于:
(1)现在去重大多数采用哈希表,哈希表不重复元素暂存于内存中,所以随着数据增加,内存不断增加,一直到内存耗尽,实际上操作系统不会让我们这么一直在内存添加数据,而且是会有限制的
(2)32操作系统和64位操作系统去重支持最大数不一样,64位支持更多数据去重,但是不能用32位程序在64操作系统去重,这样就相当于32位去重。
(3)但是无论怎么做,如果数据量超大,即使是64位操作系统也是不行的,笔者曾经在64位操作系统对380M的txt手机号去重1秒多就完成任务,但是太大也是无法办到
操作系统的哈希表在32位操作系统长度最大是2千3百万,在64位操作系统是21亿,我们知道32位操作系统内存最大是4G,但是实际只有1.6G-1.8G可用(去重操作系统核心运行内存等),而64位操作系统不受内存限制,但是去重时候也会限制2GB以内
所以现在根本没有软件可以做到超大文本去重,受限于哈希表的长度和内存限制,根本无法做到软件达到一次去重,超大文本去重目前只可能是一种方法那就是将数据存入数据库用数据库去重。虽然我们不能做到一次性去重,但是我们还是可以通过其他方法去重,为此笔者想到一种分块去重思想,虽然不能把所有文本去重,但是可以分成块,一块一块去重,这样可以降低文件大小,不失为一种好方法,一旦把文件大小降下来我们就可以降低去重任务数和占用空间,分块去重好处就是对内存没有要求,对操作系统也没有要求。如果您想购买我们软件请关注微信公众号未来自主研究中心,今天介绍到此结束