Beispiel #1
0
        public static void GenBFFileFromFixedBlockOfOldFile(string oldFile, string bfFile)
        {
            var buff = new byte[BlockSize];
            var fLength = 0;

            using (var fs = new FileStream(oldFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                fLength = (int)fs.Length;
                var nBlocks = fLength / BlockSize;
                var m = nBlocks * BloomFilterRatio;

                m += m % 8 == 0 ? 0 : 8 - (m % 8);

                var hList = BloomFilter.DefaultHashFuncs();

                var bf = new BloomFilter(m, hList);

                var byteRead = 0;

                for (var i = 0; i < nBlocks; ++i)
                {
                    byteRead = fs.Read(buff, 0, BlockSize);
                    if (byteRead != BlockSize)
                    {
                        throw new InvalidDataException();
                    }
                    bf.Add(buff, 0, byteRead);
                }
                // Serialize bf.
                using (var file = File.Create(bfFile))
                {
                    Serializer.Serialize(file, bf);
                }
            }
        }
Beispiel #2
0
        static BloomFilter GenerateBF(List<int> values)
        {
            var n = values.Count;
            var m = n * 12;

            m += m % 8 == 0 ? 0 : 8 - (m % 8);

            var hList = BloomFilter.DefaultHashFuncs();

            var bf = new BloomFilter(m, hList);
            foreach (var value in values)
            {
                var byteArr = BitConverter.GetBytes(value);
                bf.Add(byteArr);
            }

            return bf;
        }