不幸的是,postgresql 时间戳类型只能以微秒精度存储时间戳,但我也需要纳秒。
时间戳和间隔接受可选的精度值 p,它指定秒字段中保留的小数位数。默认情况下,没有明确的精度限制。对于时间戳和间隔类型,p 的允许范围是从 0 到 6。
我需要 7 个:
0,000 000 001 [十亿分之一]纳秒[ns]
0,000 001 [ 百万分之一 ] 微秒 [ µs ]
0,001 [千分位] 毫秒 [ ms ]
0.01 [百分之一] 厘秒 [ cs ]
1.0 秒 [ s ]
有没有优雅有效的方法来处理这个问题?
编辑:也许将时间戳存储在 bigint 中?
如何处理这样的场景:我有一个带有自定义删除器的唯一指针,但第 3 方库的函数需要一个原始指针,并且我使用 .get() 在 unique_ptr 中传递存储的指针,但该函数获取原始指针的所有权。
例子:
使用自定义删除器初始化唯一指针:
std::unique_ptr<BIGNUM, decltype(&BN_free)> r(BN_bin2bn(signature.data(), bnLen, nullptr), &BN_free);
std::unique_ptr<BIGNUM, decltype(&BN_free)> s(BN_bin2bn(signature.data() + bnLen, bnLen, nullptr), &BN_free);
Run Code Online (Sandbox Code Playgroud)
将它们传递给 ECDSA_SIG 函数,该函数获取 r 和 s 唯一指针的所有权:
ECDSA_SIG_set0(ecDsaSignature.get(), r.get(), s.get()))
Run Code Online (Sandbox Code Playgroud)
在作用域末尾,调用自定义删除器,但由于 r 和 s 被移动,它崩溃了。我正在考虑使用原始指针,但是如果 ECDSA_SIG_set0 函数调用不成功会发生什么,我是否必须手动释放 r 和 s 变量?这是正确的方法,还是有更优雅的方法来处理这种情况?
先感谢您。