相关疑难解决方法(0)

容纳Java的最后N个元素的大小限制队列

关于Java库的一个非常简单快速的问题:是否有一个现成的类,它实现了Queue一个固定的最大大小 - 即它总是允许添加元素,但它会默默地删除头元素以容纳新添加元素的空间.

当然,手动实现它是微不足道的:

import java.util.LinkedList;

public class LimitedQueue<E> extends LinkedList<E> {
    private int limit;

    public LimitedQueue(int limit) {
        this.limit = limit;
    }

    @Override
    public boolean add(E o) {
        super.add(o);
        while (size() > limit) { super.remove(); }
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,Java stdlibs中没有标准的实现,但可能是Apache Commons中的那个或类似的东西?

java queue collections

185
推荐指数
5
解决办法
11万
查看次数

固定大小队列,在新的enques上自动将旧值出列

我正在使用ConcurrentQueue共享数据结构,其目的是保存传递给它的最后N个对象(历史记录类型).

假设我们有一个浏览器,我们希望最后100个浏览Urls.我想要一个队列,当容量变满时(历史中的100个地址),当新条目插入(入队)时自动删除(出列)最旧的(第一个)条目.

我怎样才能实现这个目标System.Collections

c# queue fifo

111
推荐指数
7
解决办法
7万
查看次数

Java - 环形缓冲区

我有一个流时间序列,我有兴趣保留最后4个元素,这意味着我希望能够弹出第一个,然后添加到最后.哪个Java Collection最适合这个?矢量?

java buffer

74
推荐指数
6
解决办法
11万
查看次数

如何在C中实现循环缓冲区?

我需要一个固定大小(在创建它时可在运行时选择,而不是编译时)循环缓冲区,它可以容纳任何类型的对象,并且它需要非常高的性能.我不认为会有资源争用问题,因为虽然它是在多任务嵌入式环境中,但它是一个合作的,所以任务本身可以管理它.

我最初的想法是在缓冲区中存储一个简单的结构,它包含类型(简单的枚举/定义)和一个指向有效负载的void指针,但我希望它尽可能快,所以我愿意接受绕过的建议堆.

实际上我很高兴绕过任何标准库的原始速度 - 从我所看到的代码来看,它没有针对CPU进行大量优化:看起来他们只是为了类似的东西编译C代码,strcpy()没有手工编码组装.

任何代码或想法将不胜感激.所需的操作是:

  • 创建具有特定大小的缓冲区.
  • 放在尾巴上.
  • 从头上得到.
  • 归还计数.
  • 删除缓冲区.

c circular-buffer data-structures

66
推荐指数
5
解决办法
20万
查看次数

c#中的最大容量收集

在.Net BCL中有一个类似于列表的集合数据结构,具有最大容量,比如说配置为100个项目,当添加项目101时,从集合中弹出/删除原始的第一个项目,从而确保项目计数永远不会超过100.

我正在使用.net 3.5

提前致谢

.net c#

15
推荐指数
3
解决办法
6416
查看次数

删除最旧元素的大小有限的字典?

是否存在可用于散列数据的现有数据结构,以便能够删除最旧的元素?

我现在想到的方法是使用Dictionary快速查找字典和队列,并能够使用队列从Dictionary中删除最旧的元素.

c# data-structures

12
推荐指数
1
解决办法
3549
查看次数

需要一个高效的内存缓存,每秒可以处理4k到7k的查找或写入

我有一个高效的C#应用​​程序,它在多线程CPU上以每秒5k到10k记录的速率接收80字节的数据.

我现在需要设置一个内存缓存来检测和过滤重复记录,这样我就可以抑制它们在管道中进一步移动.

缓存规格(最大阈值)

  • 80字节的数据
  • 10,000记录/秒
  • 60秒的缓存=密钥数量= 60,000
  • (子总数48000000字节= 48Mb)
  • 理想缓存大小= 5分钟(或240Mb)
  • 可接受的运行时缓存大小膨胀= 1 GB

设置内存缓存,字典,哈希表,数组等的最佳方法是什么,它将允许最有效的查找,清除旧的缓存数据,并防止被击中的数据到期.

我查看了ASP.Net Cache,System.Runtime.MemoryCache,但我认为我需要一些更轻量级的东西来定制以获得正确的吞吐量.我也在看System.Collections.Concurrent作为替代和相关的白皮书.

有没有人对最佳方法有什么建议?

c# caching hashtable memorycache concurrentdictionary

11
推荐指数
1
解决办法
5200
查看次数