gpt4 book ai didi

java - 用于生成 ID 的 BaseEncoding

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:31 26 4
gpt4 key购买 nike

如何使用 com.google.common.base.BaseEncoding 库生成唯一 ID。

public class google {

static synchronized String generateIdforDCR()
{
return (String)BaseEncoding.base32().lowerCase().encode(UUID.randomUUID().toString().getBytes(Charsets.US_ASCII));

}
public static void main(String[] args)
{
for(int i=0;i<100;i++)
{
System.out.println(google.generateIdforDCR());
}


}

}

输出是:

gbsdgzrvgrsgclldgeytiljuga2wmllcmjstkllbmm3dszjymnrtcyjwga======
gi3gknbzg5tgiljrmq4tkljumqytmllbgfswkllbmiztim3fhbtdomldmq======
me4danrzgiyggllggu2dgljuhbrgillcmjswiljvgm2wimlemnrtqolgha======
meygmmrxgzsdgljqgbtgeljumm2wgllbmjrdsljrga3dgzrsguztgn3fmi======

我不想要这么大的字符串,但要独一无二。

最佳答案

UUID 的长度为 128 位,这意味着它将 base32 编码为这 58 个字符(您可以去除尾随的等号)。您可以使用 base64 使其更短,但这并不是什么大赢家。如果您想要更短的东西并保证独一无二,您需要一个计数器。

有点像

private static AtomicLong counter = new AtomicLong();

static String generateIdforDCR() { // no need for synchronized
return String.valueOf(counter.getAndIncrement());
}

应该做的。您可以对其进行 base64 编码以获得更短的输出。或者简单地使用 base36:

static String generateIdforDCR() { // no need for synchronized
return Long.toString(counter.getAndIncrement(), Character.MAX_RADIX);
}

关于java - 用于生成 ID 的 BaseEncoding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19379347/

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