繁体   English   中英

在Java中为每个请求发送唯一值

[英]Sending unique value for each request in java

我有一个要求,我必须为每个请求发送唯一的值,并且出于安全目的,我必须在我的类中对此进行验证。 关于如何执行此操作的任何想法?

有许多解决此问题的方法,这取决于它的独特性。

您可以使用UUID.randomUUID()创建一个ID,该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。 这将您的问题转移到“ 耗尽n位计数器将花费多长时间 ”,并且一旦您估计了发出请求的频率,那只是一个简单的数学问题。

验证很容易-只需保留足够的历史记录即可。 数据库将最简单地为您执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM