1
4
这可以通过许多不同的方法来完成,这取决于您试图优化的内容(速度、内存使用等)。 ID模式=DDD C 1 C〔0〕
选项1(基本上类似于散列,类似于Zak):
3-查询数据库是否存在ID并递增,直到找到空闲ID为止。
选项2(线性反馈移位寄存器,参见
wikipedia
):
3-跳过大于范围的ID(即0xA50A0+)
[编辑]由于您的范围实际上大于您需要的范围,您可以在转换为ID之前减去1返回[000 aa]并使您的有效范围为(0,0xa50a0] |
2
4
您可以生成一个符合该标准的随机ID,执行一个db select来查看它是否已经存在,然后将它插入到一个db中,以注意它已经被“使用”。在这个方案的前25%的生命周期中(或大约150k个条目),生成新的随机ID应该比较快。不过,在这之后,它将花费越来越长的时间,您也可以预先填写表格来寻找免费ID。 |
3
4
使用有限群。基本上,取一个32或64位的整数,找到一个与整数的最大值互质的大数字;称这个数字m。然后,对于所有整数n,n*m将得到一个唯一的数字,该数字有很多位数。
这样做的好处是,您不需要预先填充数据库,也不需要运行单独的select查询——您可以在一个insert语句中通过
|
4
1
根据您所定义的顺序,您可以在字母上选择一个特定的起始点,例如“a a”,然后循环使用三个数字,因此: 01AA 02AA 00 3AA 一旦你到达ZZ,然后增加数字部分。 |
5
0
可以使用模块化算法生成ID。选择一个与676000互质的数字作为种子。
如果一个用户有多个连续发出的ID,他们可以猜测算法和种子,并按顺序生成所有ID。这可能意味着算法对于您的用例来说不够安全。 |
ecology · 基于R中随机生成数集的子集列 2 年前 |
Alan Jones · 使用random从列表创建动态列表 2 年前 |
breking bed · 单击按钮时如何随机选择唯一编号 2 年前 |
Carrot Man · 如何让熊猫数据框随机填充1和0? 2 年前 |
Justin Arnold · 范围内的随机数不是随机数 2 年前 |
Menna Magdy · 如何使用非模型字段进行过滤? 2 年前 |