示例#1
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((int)Murmur32.Hash(_bytes));
     }
 }
示例#2
0
        public void Murmur3_32(string source, uint expected)
        {
            var hash          = Murmur32.Hash(source, s_seed);
            var expectedBytes = BitConverter.GetBytes(expected);

            Assert.IsTrue(hash.SequenceEqual(expectedBytes), $"{BitConverter.ToUInt32(hash)} != {expected}");
        }
示例#3
0
 public void Add(byte[] element)
 {
     foreach (uint i in seeds.Select(s => Murmur32.Hash(element)))
     {
         bits.Set((int)(i % (uint)bits.Length), true);
     }
 }
示例#4
0
        public bool Check(byte[] element)
        {
            foreach (uint i in seeds.Select(s => Murmur32.Hash(element, s)))
            {
                if (!bits.Get((int)(i % (uint)bits.Length)))
                {
                    return(false);
                }
            }

            return(true);
        }
示例#5
0
        public void TestMurmur32()
        {
            byte[] source = Encoding.ASCII.GetBytes(
                "asdçflkjasçfjaçrlgjaçorigjkljbçladkfjgsaºperouiwa89tuhyjkvsldkfjçaoigfjsadfjkhsdkgjhdlkgjhdkfjbnsdflçkgsriaugfukasyfgskaruyfgsaekufygvsanfbvsdj,fhgwukaygsja,fvkusayfguwayfgsnvfuksaygfkuybhsngfukayeghsmafbsjkfgwlauifgjkshfbilçehrkluayh");

            var murmurTest = Murmur32.Hash(source, 144);
            //var murmurTarget = 1471353736; //obtained with http://murmurhash.shorelabs.com, MurmurHash3 32bit x86
            var murmurTarget = murmurTest;

            for (int i = 0; i < 10000; i++)
            {
                murmurTest = Murmur32.Hash(source, 144);
                Assert.IsTrue(murmurTest == murmurTarget);
            }
        }
示例#6
0
        private Cluster FindClusterForKey(byte[] key, bool canCreate)
        {
            var hash = Murmur32.Hash(key);

            lock (LockObject)
            {
                if (_clusters.ContainsKey(hash))
                {
                    return(_clusters[hash]);
                }

                if (canCreate)
                {
                    var cluster = new Cluster(hash, this.Path);
                    _clusters[hash] = cluster;
                    return(cluster);
                }
            }

            return(null);
        }