This commit is contained in:
Looly
2022-09-20 18:48:05 +08:00
parent f525f21196
commit 24503fd23d
21 changed files with 215 additions and 183 deletions

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.lang.hash;
package cn.hutool.core.codec.hash;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;
@@ -8,29 +8,31 @@ public class CityHashTest {
@Test
public void hash32Test() {
int hv = CityHash.hash32(StrUtil.utf8Bytes(""));
final CityHash cityHash = CityHash.INSTANCE;
int hv = cityHash.hash32(StrUtil.utf8Bytes(""));
Assert.assertEquals(1290029860, hv);
hv = CityHash.hash32(StrUtil.utf8Bytes("你好"));
hv = cityHash.hash32(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(1374181357, hv);
hv = CityHash.hash32(StrUtil.utf8Bytes("见到你很高兴"));
hv = cityHash.hash32(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(1475516842, hv);
hv = CityHash.hash32(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
hv = cityHash.hash32(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(0x51020cae, hv);
}
@Test
public void hash64Test() {
long hv = CityHash.hash64(StrUtil.utf8Bytes(""));
final CityHash cityHash = CityHash.INSTANCE;
long hv = cityHash.hash64(StrUtil.utf8Bytes(""));
Assert.assertEquals(-4296898700418225525L, hv);
hv = CityHash.hash64(StrUtil.utf8Bytes("你好"));
hv = cityHash.hash64(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(-4294276205456761303L, hv);
hv = CityHash.hash64(StrUtil.utf8Bytes("见到你很高兴"));
hv = cityHash.hash64(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(272351505337503793L, hv);
hv = CityHash.hash64(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
hv = cityHash.hash64(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(-8234735310919228703L, hv);
}
}

View File

@@ -1,4 +1,4 @@
package cn.hutool.core.lang.hash;
package cn.hutool.core.codec.hash;
import cn.hutool.core.util.CharsetUtil;
@@ -16,20 +16,20 @@ public class MetroHashTest {
@Test
public void testEmpty() {
Assert.assertEquals("31290877cceaea29", HexUtil.toHex(MetroHash.hash64(StrUtil.utf8Bytes(""), 0)));
Assert.assertEquals("31290877cceaea29", HexUtil.toHex(MetroHash.INSTANCE.hash64(StrUtil.utf8Bytes(""), 0)));
}
@Test
public void metroHash64Test() {
final byte[] str = "我是一段测试123".getBytes(CharsetUtil.UTF_8);
final long hash64 = MetroHash.hash64(str);
final long hash64 = MetroHash.INSTANCE.hash64(str);
Assert.assertEquals(62920234463891865L, hash64);
}
@Test
public void metroHash128Test() {
final byte[] str = "我是一段测试123".getBytes(CharsetUtil.UTF_8);
final long[] hash128 = MetroHash.hash128(str).getLongArray();
final long[] hash128 = MetroHash.INSTANCE.hash128(str).getLongArray();
Assert.assertEquals(4956592424592439349L, hash128[0]);
Assert.assertEquals(6301214698325086246L, hash128[1]);
}
@@ -43,13 +43,13 @@ public class MetroHashTest {
final String[] strArray = getRandomStringArray();
final long startCity = System.currentTimeMillis();
for (final String s : strArray) {
CityHash.hash64(s.getBytes());
CityHash.INSTANCE.hash64(s.getBytes());
}
final long endCity = System.currentTimeMillis();
final long startMetro = System.currentTimeMillis();
for (final String s : strArray) {
MetroHash.hash64(StrUtil.utf8Bytes(s));
MetroHash.INSTANCE.hash64(StrUtil.utf8Bytes(s));
}
final long endMetro = System.currentTimeMillis();
@@ -67,13 +67,13 @@ public class MetroHashTest {
final String[] strArray = getRandomStringArray();
final long startCity = System.currentTimeMillis();
for (final String s : strArray) {
CityHash.hash128(s.getBytes());
CityHash.INSTANCE.hash128(s.getBytes());
}
final long endCity = System.currentTimeMillis();
final long startMetro = System.currentTimeMillis();
for (final String s : strArray) {
MetroHash.hash128(StrUtil.utf8Bytes(s));
MetroHash.INSTANCE.hash128(StrUtil.utf8Bytes(s));
}
final long endMetro = System.currentTimeMillis();

View File

@@ -0,0 +1,36 @@
package cn.hutool.core.codec.hash;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;
import org.junit.Test;
public class MurmurHashTest {
@Test
public void hash32Test() {
int hv = MurmurHash.INSTANCE.hash32(StrUtil.utf8Bytes(""));
Assert.assertEquals(-1898877446, hv);
hv = MurmurHash.INSTANCE.hash32(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(337357348, hv);
hv = MurmurHash.INSTANCE.hash32(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(1101306141, hv);
hv = MurmurHash.INSTANCE.hash32(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(-785444229, hv);
}
@Test
public void hash64Test() {
long hv = MurmurHash.INSTANCE.hash64(StrUtil.utf8Bytes(""));
Assert.assertEquals(-1349759534971957051L, hv);
hv = MurmurHash.INSTANCE.hash64(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(-7563732748897304996L, hv);
hv = MurmurHash.INSTANCE.hash64(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(-766658210119995316L, hv);
hv = MurmurHash.INSTANCE.hash64(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(-7469283059271653317L, hv);
}
}

View File

@@ -1,11 +1,9 @@
package cn.hutool.core.lang;
package cn.hutool.core.codec.hash;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;
import org.junit.Test;
import cn.hutool.core.text.Simhash;
import cn.hutool.core.text.StrUtil;
public class SimhashTest {
@Test
@@ -14,7 +12,7 @@ public class SimhashTest {
final String text2 = "我是 一个 普通 字符串";
final Simhash simhash = new Simhash();
final long hash = simhash.hash(StrUtil.split(text1, ' '));
final long hash = simhash.hash64(StrUtil.split(text1, ' '));
Assert.assertTrue(hash != 0);
simhash.store(hash);

View File

@@ -1,36 +0,0 @@
package cn.hutool.core.lang.hash;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;
import org.junit.Test;
public class MurmurHashTest {
@Test
public void hash32Test() {
int hv = MurmurHash.hash32(StrUtil.utf8Bytes(""));
Assert.assertEquals(-1898877446, hv);
hv = MurmurHash.hash32(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(337357348, hv);
hv = MurmurHash.hash32(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(1101306141, hv);
hv = MurmurHash.hash32(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(-785444229, hv);
}
@Test
public void hash64Test() {
long hv = MurmurHash.hash64(StrUtil.utf8Bytes(""));
Assert.assertEquals(-1349759534971957051L, hv);
hv = MurmurHash.hash64(StrUtil.utf8Bytes("你好"));
Assert.assertEquals(-7563732748897304996L, hv);
hv = MurmurHash.hash64(StrUtil.utf8Bytes("见到你很高兴"));
Assert.assertEquals(-766658210119995316L, hv);
hv = MurmurHash.hash64(StrUtil.utf8Bytes("我们将通过生成一个大的文件的方式来检验各种方法的执行效率因为这种方式在结束的时候需要执行文件"));
Assert.assertEquals(-7469283059271653317L, hv);
}
}

View File

@@ -1,6 +1,6 @@
package cn.hutool.core.text.bloom;
import cn.hutool.core.lang.hash.HashUtil;
import cn.hutool.core.codec.hash.HashUtil;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -1,6 +1,6 @@
package cn.hutool.core.util;
import cn.hutool.core.lang.hash.HashUtil;
import cn.hutool.core.codec.hash.HashUtil;
import cn.hutool.core.text.StrUtil;
import org.junit.Assert;
import org.junit.Test;