[英]What is the best way to store ip addresses in application?
我正在开发基于Spring和JSF 2.0的应用程序。 需要记住特定IP地址的客户端在过去3分钟内尝试提交表单的次数。 如果在3分钟内记录了超过3次提交尝试,则应显示验证码。
我正在考虑使用ConcurrentMap<String, ConcurrentLinkedQueue<Long>>
来存储ip地址( String
)并在队列中提交时间(milis)( ConcurrentLinkedQueue<Long>
)。 Quartz将以3分钟的间隔清理队列(将删除3分钟以上的milis)。 要检查是否显示验证码,我将检查队列大小是否> 3。
这是正确的方法吗? 你有更好的想法吗?
Java提供了一个用于存储IP地址的特殊类: java.net.InetAddress
。 与Long
不同,除了32位地址之外,它还能够处理128位地址,并且就其使用的内存而言,它并不像String
那样浪费,这在非常大量的情况下可能变得很重要。
就个人而言,我将我的IP存储为Longs而不是Strings。
您将看到性能提升。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.