StringBuffer stringBuffer = new StringBuffer();
Random rd = new Random();
while (stringBuffer.length() != 20) {
int value = rd.nextInt(99999);
String temp = Integer.toHexString(value);
if (temp.length() == 5) {
stringBuffer.append(temp);
}
}
return stringBuffer.toString().toUpperCase();每次生成一个5位的随机数,累加4次得到这个字符串.这种算法达到千万级数据量时得到的字符串会重复吗?
Random rd = new Random();
while (stringBuffer.length() != 20) {
int value = rd.nextInt(99999);
String temp = Integer.toHexString(value);
if (temp.length() == 5) {
stringBuffer.append(temp);
}
}
return stringBuffer.toString().toUpperCase();每次生成一个5位的随机数,累加4次得到这个字符串.这种算法达到千万级数据量时得到的字符串会重复吗?
解决方案 »
- 离开IDE,连接不上MYSQL,WHY?
- 初学JAVA。求指导
- 我想用JAVA语句来实现一个表格下拉框,代码怎么写??
- 关于获取JTextField的内容
- UUID在高并发下出现重复??
- 看看这个网站!注册即给分!!up也有份!!!
- socket开发对战游戏,两客户端动作不同,延时所致,如何解决?
- 局域网中SOCKET编程问题(急,在线等)
- 99年就已经是CSDN的忠实水友。这里改版也有好几次了。可CSDN的查寻功能就是TMD的狗屁,查了无数遍,得到的结果始终不变:“服务器忙”。
- 菜鸟请教,2K SERVER下如何配置SDK?
- 请教下 ImageScale 这个类,为什么我在jdk api 里查不到?
- 请分别举例,用java实现各种排序。谢谢。在线等
要不怎么能叫随机呢?
千万级数据量 看样子你还不想让他们有一定的规律
那就搞个set<String> 往里填 这样就是数据量越大运算越慢
这个是不会重复的
回复内容太短了!
回复内容太短了!
我一般生成主键,采用将主键分为两个部分。
高位部分,把时间格式化成数字(精确到毫秒,毫秒占3位,不足3位要前置补0占位);
低位部分,由3位数字组成,不足3位时,要前置补0占位。
每次生成主键时,先将低位部分加一,若低位部分未超过3位时,与高位部分进行连接即可;
若低位部分已经超过三位,则重新生成高位数字,低位置1,高低部分连接(注意补0占位)。例如:
高位:20100303180555012
低位:001
生成主键为:20100303180555012001二十位的主键,印象中长整型的数据正好可以放下。如果是多个应用程序操纵同一张表,可以将高位部分保存到一个表中,供生成主键使用。
一千条记录访问一次数据库。如果应用程序支持存储过程就用存储过程生成高位的数字。
这我就不知道是怎么回事了,呵呵。
我虽然没用过UUID,但是,还是坚信,UUID是不会重复的。
不然还是有几率的