实际作用:
QString Util::uniqueStringMs36()
{
static qint64 uniqueVoucher = 0;//to guarantee the uniqueness if the same
qint64 ms = QDateTime::currentMSecsSinceEpoch();
static qint64 prevMs = 0;
if (ms > prevMs) {
uniqueVoucher = 0;
}
ms += uniqueVoucher;
prevMs = ms;
uniqueVoucher++;
return QString::number(ms, 36); //base 36
}
虽然写在 中QT,你可以很容易想象std,主要问题是算法是否有效——我们从 Unix 纪元读取毫秒,我们报告一个特殊变量的值正在递增(如果函数在同一毫秒内调用)
我只需将最后生成的值保存在静态变量中,如果与新生成的值匹配,我只需添加 1,而不会受到这些零的影响 - 而不是零。并且需要更少的变量:)
PS 曾经在 FidoNet 中提出了这样一种方法来生成消息标识符;我不记得我是否进入了FTS...