gpt4 book ai didi

javascript - nodejs 一致性哈希库

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:20 25 4
gpt4 key购买 nike

根据STFW的资料,猜测CRC32、KETAMA几乎是目前最好的一致性哈希算法,但我没有找到任何库实现它们。

最佳答案

我编写了一个 JavaScript CRC32 实现来散列字符串:

var crc32 = (function() {
function utf8encode(str) {
var utf8CharCodes = [];

for (var i = 0, len = str.length, c; i < len; ++i) {
c = str.charCodeAt(i);
if (c < 128) {
utf8CharCodes.push(c);
} else if (c < 2048) {
utf8CharCodes.push((c >> 6) | 192, (c & 63) | 128);
} else {
utf8CharCodes.push((c >> 12) | 224, ((c >> 6) & 63) | 128, (c & 63) | 128);
}
}
return utf8CharCodes;
}

var cachedCrcTable = null;

function buildCRCTable() {
var table = [];
for (var i = 0, j, crc; i < 256; ++i) {
crc = i;
j = 8;
while (j--) {
if ((crc & 1) == 1) {
crc = (crc >>> 1) ^ 0xEDB88320;
} else {
crc >>>= 1;
}
}
table[i] = crc >>> 0;
}
return table;
}

function getCrcTable() {
if (!cachedCrcTable) {
cachedCrcTable = buildCRCTable();
}
return cachedCrcTable;
}

return function(str) {
var utf8CharCodes = utf8encode(str), crc = -1, crcTable = getCrcTable();
for (var i = 0, len = utf8CharCodes.length, y; i < len; ++i) {
y = (crc ^ utf8CharCodes[i]) & 0xFF;
crc = (crc >>> 8) ^ crcTable[y];
}
return (crc ^ -1) >>> 0;
};
})();

alert(crc32("A test string").toString(16));

关于javascript - nodejs 一致性哈希库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com