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