🎨 短链算法
parent
01e3e7e8de
commit
eb3e3fa72b
@ -0,0 +1,43 @@
|
|||||||
|
package org.alis.rpc.common.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.hash.MurmurHash;
|
||||||
|
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lc
|
||||||
|
* @date 2023/5/27 15:06
|
||||||
|
*/
|
||||||
|
public class HashShortUrl{
|
||||||
|
|
||||||
|
private static final String[] CHARS = new String[62];
|
||||||
|
|
||||||
|
static {
|
||||||
|
IntStream.range(0, 10).forEach(i -> CHARS[i] = String.valueOf(i));
|
||||||
|
for (int i = 1; i <= 26; i++) {
|
||||||
|
CHARS[9 + i] = String.valueOf((char) (i + 64));
|
||||||
|
}
|
||||||
|
for (int i = 1; i <= 26; i++) {
|
||||||
|
CHARS[35 + i] = String.valueOf((char) (i + 96));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String generator(String old) {
|
||||||
|
int i = MurmurHash.hash32(old);
|
||||||
|
if (i < 0) {
|
||||||
|
i = Math.abs(i);
|
||||||
|
}
|
||||||
|
int num = Integer.MAX_VALUE - i;
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
while (num > 0) {
|
||||||
|
int x = num % CHARS.length;
|
||||||
|
sb.append(CHARS[x]);
|
||||||
|
num /= CHARS.length;
|
||||||
|
}
|
||||||
|
return sb.reverse().toString();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue