我有一个要求,我必须为每个请求发送唯一值,为了安全起见,我必须在我的课程中验证。关于如何做到这一点的任何想法?
答案 0 :(得分:2)
这个问题有很多解决方案,因为它取决于它需要的独特性。
您可以使用UUID.randomUUID()
创建一个非常喜欢在多台计算机上唯一的ID。
你可以做到
String str = uuid.toString();
并用
反转UUID uuid2 = str.fromString(str);
assert uuid.equals(uuid2); // true
您可以使用像AtomicLong这样的计数器。如果在基数36中对其进行编码,则会得到更短的ID,但这在重新启动或进程之间并不是唯一的。
对此的修改是您可以使用以System.currentTimeMillis() * 1000
开头的AtomicLong,这样您的ID在重新启动时应该是唯一的。
您还可以将JDBC数据库用于唯一值。缺点是这是相当复杂和缓慢的。
答案 1 :(得分:0)
您需要做的就是将上次发送的值加1。这会将你的问题转移到" 耗尽n位计数器需要多长时间"一旦你估计了你提出请求的频率,这只是一个简单的数学问题。
验证很简单 - 只需保留足够的历史记录。数据库最适合您。