我想要创建一个独特的交易in,IBANs随机在朱莉娅。
当IBAN域为as {2}0-9{32}或as{34}(即.(最多10^51),并假设每个帐户每天最多10 txns。
在txn处理系统和决策支持系统中,是否应该选择事务id类型作为String或Bigint及其优缺点?
发布于 2019-10-01 13:37:58
@Mathieu_B关于使用UUID的建议是有意义的,但是如果您更喜欢严格的数字,也可以轻松地使用UInt128的:
julia> rand(UInt128)
0xa62ff810bcd06e644f5df0a64611cc0bUUID和UInt128中的位数是相同的,因此这至少应该与uuid4()生成的UUID一样唯一(即随机)。UUID的主要优点是,如果需要使用UUID,还可以实现其他方法:
uuid1:基于日期时间和MAC地址的uuid4:随机/伪随机uuid5:基于散列的发布于 2019-10-01 09:05:34
如果您要寻找的是标识符,那么像UUID这样的系统可能更合适。在Julia中,标准库中的UUIDs模块可以帮助:
julia> using UUIDs: uuid4
julia> import Random
julia> Random.seed!(43);
julia> uuid4()
UUID("7d6398a5-f5bb-4164-8552-1668b964e46f")
julia> uuid4()
UUID("93938d68-980f-40b1-b1f9-789c5230116c")与UUID相比,UUID的速度要快于String,并且与BigInt大致相同。下面是使用BenchmarkTools.jl的快速基准测试,在运行时估计时不考虑setup部件:
julia> using BenchmarkTools: @btime
julia> @btime s1 == s2 setup=(s1=string(uuid4()); s2=string(uuid4()))
5.685 ns (0 allocations: 0 bytes)
julia> @btime s1 == s2 setup=(s1=uuid4(); s2=uuid4())
1.640 ns (0 allocations: 0 bytes)
julia> @btime s1 == s2 setup=(s1=BigInt(rand(Int)); s2=BigInt(rand(Int)))
2.976 ns (0 allocations: 0 bytes)https://stackoverflow.com/questions/58180129
复制相似问题