MurmurHash 哈希算法
MurmurHash:(multiply and rotate) and (multiply and rotate) Hash,乘法和旋转的hash 算法。
三、MurmurHash使用
1.导包
Java版:google guava 包中提供了使用工具类:
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
2.使用
import java.nio.charset.StandardCharsets;
import com.google.common.hash.HashFunction;
import com.google.common.hash.Hashing;
public class MurmurHashTest {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
String hexHashString = getHexHashString("qwerqwerqwer");
System.out.println(hexHashString);
}
}
public static String getHexHashString(String str) {
HashFunction hashFunction = Hashing.murmur3_128();
return hashFunction.hashString(str, StandardCharsets.UTF_8).toString();
}
}
代码例子:
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version> </dependency>
public class TestMurmurhash3 { public static void main(String[] args) { String myStr = "ehl-test111"; String str = Hashing.murmur3_128().newHasher().putString(myStr, StandardCharsets.UTF_8).hash().toString(); System.out.println("str is:::::"+ str); HashFunction function = Hashing.murmur3_32(); HashCode hascode = function.hashString("hello1", Charset.forName("utf-8")); System.out.println(hascode.asInt()); HashCode hascode2 = function.hashString("hello2", Charset.forName("utf-8")); System.out.println(hascode2.asInt()); HashCode hascode3 = function.hashString("hello3", Charset.forName("utf-8")); System.out.println(hascode3.asInt()); byte[] mm3_le = Hashing.murmur3_128().hashString("abc", Charset.forName("utf-8")).asBytes(); System.out.println(Hashing.murmur3_128().hashString("abc", Charset.forName("utf-8")).asInt()); byte[] mm3_be = Bytes.toArray(Lists.reverse(Bytes.asList(mm3_le))); System.out.println(new BigInteger(mm3_be).toString()); System.out.println(Hashing.murmur3_128().newHasher().putString("abc", StandardCharsets.UTF_8).hash().toString()); System.out.println(Hashing.murmur3_128().newHasher().putString("abc", StandardCharsets.UTF_8).hash().asInt()); assertEquals("79267961763742113019008347020647561319",new BigInteger(mm3_be).toString()); HashFunction hashFunction = Hashing.murmur3_128(); String s2 = hashFunction.hashString(myStr, StandardCharsets.UTF_8).toString(); System.out.println(s2); } public static String getHexHashString(String str) { HashFunction hashFunction = Hashing.murmur3_128(); return hashFunction.hashString(str, StandardCharsets.UTF_8).toString(); } public static String getHexMD5String(String str) { // return org.springframework.util.DigestUtils.md5DigestAsHex(str.getBytes()); return DigestUtils.md5Hex(str.getBytes()); } }
package com.xxx.utils.hash; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; import org.apache.hadoop.hive.ql.exec.UDF; import java.nio.charset.StandardCharsets; /** * TODO * * @author User * @version 1.0 * @date 2022/4/12 15:38 */ public class MyHiveUdf extends UDF { // 重载evaluate方法 // 进入hive客户端,添加jar包:hive> add jar /run/jar/udf_test.jar // 创建临时函数:hive> CREATE TEMPORARY FUNCTION murmurhash3 AS 'com.ehl.utils.hash.MyHiveUdf'; // hive> SELECT murmurhash3("gaozz") FROM scores; // hive> DROP TEMPORARY FUNCTION murmurhash3; // murmurhash3(concat("uid-",uid)) as uidHash, // murmurhash3(concat("cre-",credit_id)) as creditCardIdHash public String evaluate(String inputStr){ String str = Hashing.murmur3_128().newHasher().putString(inputStr, StandardCharsets.UTF_8).hash().toString(); // HashFunction hashFunction = Hashing.murmur3_128(); // String str = hashFunction.hashString(str, StandardCharsets.UTF_8).toString(); return str; } }
// murmurhash3(concat("uid-",uid)) as uidHash, // murmurhash3(concat("cre-",credit_id)) as creditCardIdHash
相关推荐
这是 Murmur3 哈希函数的 C 语言移植版本,Murmur3 是一个非加密的哈希算法,主要设计目的是快速和高质量,原有代码是 C 的,先移植到 C 并兼容标准 C 和 gcc 编译器。 标签:murmur3
var murmurHash3 = require('murmur-hash').v3; 例子 // Return a 32bit hash as a unsigned int: > murmurHash3.x86.hash32("I will not buy this record, it is scratched.") 2832214938 // Return a 128bit ...
由Gary Court创建的MurmurHash3 JavaScript版本的移植( ) 安装 使用: composer require lastguest/murmurhash 用法 您可以通过Murmur类的hash3静态方法检索哈希 <?php use lastguest\ Murmur ; echo Murmur :...
Austin Appleby的第三个MurmurHash修订版(aka MurmurHash3)的Native Go实现。 引用算法已被略微修改,以支持Go的标准所需的流模式。 基准测试 截至2014年6月12日(即接近go1.3),i7核心@ 3.4 GHz时的提示。 ...
节点杂音 注意:这是,可移植到commonJS模块,该模块可以轻松地包含在node.js项目或浏览器中。 我不相信实施。 我只是让其他人更容易使用。 MurmurHash算法的优化... 同时支持MurmurHash算法的版本2和版本3: /
基于其他MurmurHash3 32位和128位渐进实现 流封装器,用于带有渐进式哈希器。类似于bi-api接口 渐进式哈希器的可序列化状态 哈希的BE或LE字节顺序变体 承诺包装 适用于大多数标准系统配置的预构建二进制文件 ...
.NET的哈希的实现 在撰写本文时,该库支持3种主要Murmur3变体:32位哈希(x86),128位...HashAlgorithm murmur128 = MurmurHash.Create128(managed: false); // returns a 128-bit algorithm using "unsafe" code with
支持的哈希算法 我尝试添加任何不在C#运行时中并且很流行的东西。 例如,C#有多个xxHash实现,但是它们在API复杂性和性能方面有所不同。 尽管我没有尝试过SIMD优化,但是现有代码相当快。 xx哈希 这个自称是最快的...
https://code.google.com/p/smhasher/上的代码,google被屏蔽了,但这个哈希算法的源代码很好,里面有city spooky lookup3 MurmurHash3 MurmurHash2等算法的源代码
使用 32 位 murmurhash3 的节点和浏览器的 HyperLogLog 不同值估计器。 (MIT :copyright: Optimizely, Inc)。 来自:HyperLogLog 是一种用于计数不同问题的算法,它近似于多集中不同元素的数量(基数)。 跳转到...
) SipHash是由Jean-Philippe Aumasson和Daniel J.Bernstein在2012年设计的哈希算法的纯Swift实现: SipHash是一系列伪随机函数(又名键控散列函数),它们针对短消息的速度进行了优化。 目标应用程序包括网络流量...
mmh3全程murmurhash3,是一种非加密的哈希算法,常用于hadoop等分布式存储情境中,在anaconda中安装使用命令 pip install mmh3 问题1 报错如下: Microsoft Visual C++ 14.0 is required 显示缺少C++ 14的库文件,...
建置状态可用算法散列循环冗余校验All CRC Variants from CRC3 to CRC64校验和Adler32非加密哈希函数32位哈希AP BKDR Bernstein Bernstein1 DEK DJB ELF FNV FNV1a JS Jenkins3 Murmur2 MurmurHash3_x86_
哈希基准 使用 JDK 可用的算法以及一些属于的算法散列“单词”的基准: MD5 (JDK 1.7) SHA-1 (JDK 1.7) SHA-256 (JDK 1.7) SHA-512 (JDK 1.7) Murmur3 128 (番石榴 18.0) Murmur3 32 (番石榴 18.0) CRC-32 ...
SipHash:一个快速的短输入 PRF 我已经编写了 SipHash 伪随机函数的 VHDL 实现,如 ...SipHash 在性能上与不安全的非加密算法(例如 MurmurHash)相比具有竞争力 我们建议哈希表切换到 SipHash 作为哈希函数。 SipHash
与其他类似项目(例如相比,主要区别在于,在哈希计算过程中它没有对象分配,并且不使用ThreadLocal 。 该实现在可能的情况下利用本机访问,但与平台字节序无关。 无论字节顺序如何,这都将提供一致的结果,而只会...
基于草图/哈希的算法: 当我们复习每个部分时,请随时关注REPL。 请注意,对于我们的代码示例, bigml.sketchy.test.demo将“哈姆雷特”和“仲夏夜之梦”加载到内存中。 user> ( ns test ( :use [bigml.sketchy....
一个参考Cassandra中的BloomFilter实现,哈希替换MurmurHash2,通过双重散列公式生成散列函数 参考: : 标准代码库。很重要的一些基础模板 一种树的遍历算法,前中序很有趣,基本可以实现O(1)的额外空间复杂度。...