如何删除我不感兴趣的数组项?如果我愿意离开他们 - 我的记忆会被不必要的物品所淹没.
我需要在Perl中实现一项任务.一个文件不断填充包含以下内容的消息:
"IP - URL"
Run Code Online (Sandbox Code Playgroud)
我需要不断读取这个文件并测量是否有超过,比如五个,相同的IP - URL对,比如说,五秒间隔.
如果我每五秒从最后一个位置读取文件并计算重复数据,那么我可以遇到五秒钟内有八个相同线对的情况,但在第一次读取时有四个,另外四个在五秒钟后第二次读取.因此,我需要检查最后五个重复行之间的间隔.
我能做什么:
$pairs[$ip_url_line] = ['time-stamp',....,'time-stamp-N']
Run Code Online (Sandbox Code Playgroud)
然后获取此哈希键的最后五个数组项并计算时移.如果它超过五秒 - 做一些事情.
当然,我可以遍历循环中的所有哈希元素和所有数组项,并检查它是否超过5秒,但它太资源太昂贵了.
grep.它很简单,很容易证明是正确的,它试图避免一次做太多的工作,并且它会让你的桌子变得不合理地大.步骤3的间隔为1分钟,没有条目可能超过11分钟.(如果在00:00:00添加了1.2.3.4的第一个条目,则可以添加最新的条目而不会将第一个条目添加为00:04:59.最新的步骤3扫描可以在不删除的情况下运行整个数组将是00:09:58;假设最坏的情况,下一次扫描将在00:10:58.)如果你可以在内存中保留11分钟的数据,那你就是金色的.
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |