-2
A
回答
3
的問題是相當普遍的,所以一些一般性的建議:
- 使用時間戳的事件發生時的
TreeSet<Long>
; - 在每個事件發生時,將其時間戳添加到該集並移除所有過期的條目(比時間早);
- 當設置的大小超過閾值時反應。
對於2.使用tailSet
方法來快速消除過期的時間戳。
這是該方法的一個簡單的例子:
public class OverloadGuard {
private SortedSet<Long> timestamps = new TreeSet<>();
private final long timeout = TimeUnit.MINUTES.toMillis(5);
private final int threshold = 10;
public synchronized void event() {
final long now = System.currentTimeMillis();
timestamps = timestamps.tailSet(now - timeout);
timestamps.add(now);
if (timestamps.size() > threshold) throw new OverloadException();
}
}
class OverloadException extends RuntimeException { }
0
由於你上面的例子示出了事件的相當低的速率(10個事件在5分鐘內),我想創建X的隊列中的時間戳。
- 流行從隊列如果是滿
- 推到隊列中的當前時間戳
- 如果堆棧已滿,並且第x時間戳與第一時間戳之間的差爲:到達每個新的消息在給定的時間間隔內發出警報!
相關問題
- 1. windows phone中的GeoCoordinateWatcher在給定的時間間隔內不觸發事件
- 2. SQL查詢在給定的時間間隔內分割數字
- 3. 按發生次數分組的時間間隔
- 4. 查詢在給定時間發生事件的頻率
- 5. 以正確的時間間隔不發生事件c#定時器
- 6. Cronjob在給定的時間間隔
- 7. 如何在間隔時間內刷新鼠標事件參數?
- 8. 給定時間間隔內的聚合函數spark
- 9. 給定時間間隔內的聚合函數
- 10. X:以固定的時間間隔觸發事件
- 11. 隨機的Cplex數發生器用一定的時間間隔
- 12. T-SQL查詢每給定的時間間隔計算正在發生的事件
- 13. 如何在給定的時間間隔內調用.post()?
- 14. 在給定的時間間隔內重新啓動html5動畫
- 15. 在給定的時間間隔內選擇年/月格式
- 16. iOS在一次給定時間允許一次觸摸事件
- 17. Quartz.NET觸發器:在指定的時間間隔內運行一次
- 18. 在很短的時間間隔內多次調用函數
- 19. 在特定的時間間隔自動生成發票 - Rails
- 20. 設置事件發生在一定時間之間
- 21. 在給定時間內分隔小時數
- 22. $發生太多次的間隔
- 23. asp.net觸發事件在服務器上的時間間隔
- 24. 如何檢查時間(分鐘/秒)是否在給定的時間間隔內?
- 25. 如何檢查時間是否在給定的時間間隔範圍內
- 26. 在給定日期時間內添加30秒間隔
- 27. 查找時間在一定的時間範圍內的發生次數和持續時間
- 28. 計數時間間隔內的觀察次數
- 29. 歸結事件的時間間隔
- 30. 在給定的時間間隔後刪除子文件夾
讓我舉個例子。如果在5分鐘的時間間隔內發生10次事件,我想停止收到消息。 – user1703787