作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何使用 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/
如何使用 com.google.common.base.BaseEncoding 库生成唯一 ID。 public class google { static synchronized Str
我正在编写以下代码: BaseEncoding.base64().encode(byteArrayEntity.getBytes()) 但是 Intellij(社区 2018.2)显示以下警告: 'B
我正在尝试将 Spark 数据帧从 AWS EMR 集群保存到 BigQuery 表。我正在使用 spark-bigquery-connector去做这个。我已经从命令行将我的 gcloud 凭据服务
我是一名优秀的程序员,十分优秀!