Package org.apache.cassandra.utils
Class MurmurHash
- java.lang.Object
-
- org.apache.cassandra.utils.MurmurHash
-
public class MurmurHash extends java.lang.Object
This is a very fast, non-cryptographic hash suitable for general hash-based lookup. See http://murmurhash.googlepages.com/ for more details. hash32() and hash64() are MurmurHash 2.0. hash3_x64_128() is *almost* MurmurHash 3.0. It was supposed to match, but we didn't catch a sign bug with the result that it doesn't. Unfortunately, we can't change it now without breaking Murmur3Partitioner. *The C version of MurmurHash 2.0 found at that site was ported to Java by Andrzej Bialecki (ab at getopt org).
-
-
Constructor Summary
Constructors Constructor Description MurmurHash()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static long
fmix(long k)
protected static long
getBlock(java.nio.ByteBuffer key, int offset, int index)
static long
hash2_64(java.nio.ByteBuffer key, int offset, int length, long seed)
static void
hash3_x64_128(java.nio.ByteBuffer key, int offset, int length, long seed, long[] result)
static int
hash32(java.nio.ByteBuffer data, int offset, int length, int seed)
static long[]
inv_hash3_x64_128(long[] result)
protected static long
invFmix(long k)
protected static long
invRotl64(long v, int n)
protected static long
invRShiftXor(long value, int shift)
static long
invTailReverse(long num)
This gives a correct reversal of the tail byte flip which is needed if want a non mod16==0 byte hash inv or to target a hash for a given schema.protected static long
rotl64(long v, int n)
-
-
-
Method Detail
-
hash32
public static int hash32(java.nio.ByteBuffer data, int offset, int length, int seed)
-
hash2_64
public static long hash2_64(java.nio.ByteBuffer key, int offset, int length, long seed)
-
getBlock
protected static long getBlock(java.nio.ByteBuffer key, int offset, int index)
-
rotl64
protected static long rotl64(long v, int n)
-
fmix
protected static long fmix(long k)
-
hash3_x64_128
public static void hash3_x64_128(java.nio.ByteBuffer key, int offset, int length, long seed, long[] result)
-
invRotl64
protected static long invRotl64(long v, int n)
-
invRShiftXor
protected static long invRShiftXor(long value, int shift)
-
invFmix
protected static long invFmix(long k)
-
invTailReverse
public static long invTailReverse(long num)
This gives a correct reversal of the tail byte flip which is needed if want a non mod16==0 byte hash inv or to target a hash for a given schema.
-
inv_hash3_x64_128
public static long[] inv_hash3_x64_128(long[] result)
-
-