2
A
回答
6
你可以看看Twitter的开源Snowflake project寻找灵感,它解决了类似的问题。它是用Scala编写的,但是简化版本在C#中编码非常简单。
前提是获取当前的时间戳,并将其左移一位,将右侧的位留给一个简单的序列号,每当时间戳增量时将其复位为0。通过处理位长和改变时间戳的粒度(例如决定是使用秒还是毫秒),你应该能够很容易地生成可以适合17位的东西。
0
您可以使用GUID,GUID(全局唯一标识符)是一个128位整数,可用于唯一标识某些内容。
System.Guid.NewGuid()
+1
2^128 = 3.4 * 10^38> 10^17即你违反17位数的要求 – CodesInChaos 2010-12-10 15:24:05
相关问题
- 1. 在数据库中生成自动唯一编号
- 2. 生成唯一编号
- 3. Access数据库中的唯一成员编号
- 4. 根据Javascript中的字符串输入生成唯一编号
- 5. 生成的字母数字的唯一编号
- 6. 可能生成没有数据库表的序列号?
- 7. 有没有办法通过编写PHP来生成数据库?
- 8. 数据库还没有生成
- 9. MVC Code First - 数据库没有生成
- 10. 生成要存储在数据库中的唯一随机数
- 11. 保证与弹簧数据和休眠的唯一编号生成
- 12. 发生数据库错误错误编号:1066不是唯一的表/别名:
- 13. 每天生成唯一的序列号
- 14. 生成唯一序列号的java
- 15. 在数据库外部生成一个非guid唯一键
- 16. 用数据库表生成唯一随机数
- 17. 需要生成与BDD的蟒蛇中的唯一编号
- 18. 自动生成的每次更新的唯一编号列
- 19. 针对数据库条目的高效唯一密钥生成
- 20. 使用System.currentTimeMillis()来安全地生成唯一的数据库ID?
- 21. 生成跨多个数据库唯一的主键
- 22. 根据电话号码生成一个唯一的PIN码
- 23. 获取随机生成器生成的百分比唯一编号
- 24. 跨系统生成唯一编号的算法
- 25. 有没有什么办法可以生成一个与UUID(GUID)不同的唯一编号?
- 26. 生成唯一
- 27. 唯一号码标识符生成
- 28. 从数据库表生成引用号
- 29. 在java应用程序中生成12位唯一编号
- 30. 以自动递增6-8模式生成唯一编号mysql
定义“唯一”。 – ybungalobill 2010-12-10 11:06:45
独特性如何?独特的当前过程?机器?宇宙? – 2010-12-10 11:06:47
@Malachi:记住随机可能产生两次相同的数字;所以它不一定是唯一的。 – 2010-12-10 11:07:38