我有一个以一定速率到达的int值流。每隔5分钟,我想从数值中计算一些百分位数,然后重新开始。
问题:我不想浪费太多内存,所以我想只为这些值保留几KB。如果我的缓冲区在5分钟内没有填满,我可以完美地计算百分位数。但是,如果缓冲区填充了,我想开始删除一些值(可能使用reservoir sampling和随机驱逐,如此处所示 - Percentiles of Live Data Capture)。不幸的是,我无法找到一个在两种情况下都能正常运行的解决方案 - 如果缓冲区未满,我不想逐出或忽略值,一旦它变满并且我开始驱逐,我总是会引入偏见。