java程序生成永远不重复的编码!!!!?????

蜡笔小新_ 发布于 2014/04/22 16:27
阅读 1K+
收藏 1

现在在做excel数据向oracle中导入,数据量很大,几百万甚至几千万条,插入数据库的表后希望永远都不会重复,不让使用序列器,要求用java程序生成不重复的一串编码。具体编码的格式也没有什么要求,最好是字母和数字混合的吧!长度长点也没问题的。

希望大家有好的方法推荐一下!!!

注意了数据量很大,千万不要重复了!!!!!

加载中
0
Sub
Sub


用 时间 + 自增长ID(6位) , 然后转成 base62 即可

其实 UUID 就是 网卡mac(java中是ip地址) + 时间 + 随机数

如果你要分布式的话,可以加入一个 server id,或者用 UUID 中的网卡mac(java中ip地址) 也可。


1
vvtf
vvtf


思路很简单,世界上只有时间在一直变化。

每一刻的时间都不相同!


氪金
氪金
用timestamp,它的精度为毫秒级,然后用它作为前置项,然后加上以它为种子的32位随机数,这样在同一毫秒内,你可以放心不会重复了
蜡笔小新_
蜡笔小新_
我这数据量很大,就怕在一个时间点上会有很多数据的插入
0
CloudArchitect
CloudArchitect

我以前的做法是加上synchronized获取当前时间(mil or nano)

蜡笔小新_
蜡笔小新_
没用过呵呵,学习了
为梦而来
为梦而来
这个方法还不错!
0
f
fulao8

话说,你这个需求,使用 java.util.UUID应该可以满足吧?

蜡笔小新_
蜡笔小新_
想过。。。。
0
都哑
都哑

你要是觉得一个UUID不够,你可以加两个

蜡笔小新_
蜡笔小新_
呵呵 可以考虑
0
duty
duty

uuid理论上是绝对不会重复的。请百度之。

duty
duty
回复 @xmut : 没那么复杂啊,一行代码完事。
xmut
xmut
回复 @Breaking : 楼主没将什么集群之类的东西,就是一个很简单的数据库主键问题!!!简单的问题就不要搞复杂,这是很多码农的通病!
duty
duty
回复 @回忆的沙漏 @xmut @ vietor : UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的. 反正在人类这个四维空间是不会重复的。。。
vietor
vietor
回复 @xmut : 你审视问题的角度不是"人类",而是“神"——每个人必须获得“神”的认可,呵呵。
蜡笔小新_
蜡笔小新_
理论上??那么现实中呢。。。。超大的数据的话 几千万那种
下一页
0
榨菜
md5加base64 得到唯一的
0
ipenglei
ipenglei

主键自增长 会重复?

蜡笔小新_
蜡笔小新_
不使用自增长 谢谢
0
罪恶的花生
罪恶的花生

为何有数据库还用java来处理,oracle下有个东西叫做序列,可以放在sql下执行的

蜡笔小新_
蜡笔小新_
sorry....需求不让放序列
0
大喵哥
大喵哥

那就uuid咯

返回顶部
顶部