java - 在应用程序中存储 ip 地址的最佳方法是什么?

标签 java spring jsf-2

我正在开发一个基于 Spring 和 JSF 2.0 的应用程序。需要记住来自特定 IP 地址的客户端在过去 3 分钟内尝试提交表单的次数。如果在 3 分钟内记录了超过 3 次提交尝试,则应显示验证码。

我正在考虑使用 ConcurrentMap<String, ConcurrentLinkedQueue<Long>>用于在队列 ( String ) 中存储 IP 地址 ( ConcurrentLinkedQueue<Long> ) 和提交时间 (milis)。队列将以 3 分钟为间隔由 Quartz 清理(超过 3 分钟的 milis 将被删除)。要检查是否显示验证码,我将检查队列大小是否 > 3。

这是正确的方法吗?你有更好的想法吗?

最佳答案

Java 提供了一个特殊的类来存储IP 地址:java.net.InetAddress .与 Long 不同,除了 32 位地址外,它还能够处理 128 位地址,并且在内存方面不像 String 那样浪费用途,这在非常大批量的情况下可能变得很重要。

关于java - 在应用程序中存储 ip 地址的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689789/

相关文章:

java - 找不到 WebApplicationContext : no ContextLoaderListener registered?

java - 尽管有 xml,但仍因缺少 ListView 而收到 RuntimeException

java - 如何在android中将图像转换为base64字符串?

java - 在推土机中默认后调用自定义转换器

Java-调用.net wcf web服务Spring

java - Spring Integration 轮询器有时会运行一次然后停止

java - 多个应用程序的相同 Hibernate Search Lucene 索引

java - 三层架构 Spring MVC 中的异常处理

java - 在 JSF 2 中执行操作后导航到同一页面

validation - 在“调用应用程序”阶段将inputText标记为无效