我想了解一些关于在不使用 GUID 的情况下生成唯一 id 的想法。最好我希望唯一值是 int32 类型。
我正在寻找可用于数据库主键以及 url 友好的东西。
这些可以被认为是独特的吗?
(int)DateTime.Now.Ticks
(int)DateTime.Now * RandomNumber
还有其他想法吗?
Thanks
编辑:嗯,我正在尝试实践领域驱动设计,我的所有实体在创建时都需要有一个 ID 才能有效。理论上我可以调用数据库来获取自动递增的数字,但宁愿避开这一点,因为与数据库相关的东西正在进入域。
这取决于您需要它的独特性以及您需要为其提供 ID 的项目数量。你最好的选择可能是按顺序分配它们;如果您尝试变得奇特,您可能会遇到生日悖论(冲突的可能性比您预期的更大)或(如上面的情况 1))被迫限制您可以发行它们的速率。
对于大多数情况,您的 1) 比 2) 好一点;它是有速率限制的——每个刻度不能发出超过 1 个 ID——但不易受到生日悖论的影响。你的2)只是扔掉一些东西。与随机数进行异或运算可能会稍微好一点,但无论如何,我认为兰特不会给你带来任何东西,只是隐藏了问题并使其更难修复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)