如何在流条件下有效地打印具有时间跨度的字符串



假设我们得到一个数据结构清晰的流字符串输入:
content:arrive time

示例如下:

AAA : 12:00:00   
ABC : 12:00:01   
ABB : 12:00:02   
ABM : 12:00:11   

我们有一个程序来检查这个流输入如果
1)此内容以前不存在,打印此内容;
2)如果此内容到达之前且时间跨度小于10秒,则打印为空;
3)如果此内容提前到达且时间跨度超过10秒,则打印内容;

Hashtable(String, Date)是OK的,我们可以在有新数据时更新日期。

我的问题是:如果字符串数非常大,不能存储在哈希表中怎么办?考虑到我们正在设计一个24*7运行的程序,哈希表变得越来越大。
我们还有其他办法解决这个问题吗?我们能用几台服务器解决这个问题吗?

您可以使用Hashtable(String -> Date)和简单的Queue([Date, String]),每次向哈希表添加新项目时也将其添加到队列中。

每隔几分钟从队列中弹出项并从哈希表中删除它们,直到日期不够老(<10秒)。

这样你只保存最近几分钟的数据,哈希表和队列都不会增长太多。

相关内容

  • 没有找到相关文章

最新更新