[英]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.