我正在寻找java.util.Queue或Google集合中某些行为类似于Queue的实现,但还要确保队列中的每个元素都是唯一的。(所有进一步插入均无效)
有这种可能,还是我必须手工完成?
现在,我正在使用带有LinkedList实现的Queue,并在插入之前检查其唯一性。(我使用侧面地图进行此操作,在排队之前/之后在侧面地图中添加/删除元素)。我不太喜欢
欢迎任何输入。如果它不在java.util包中,那么这可能不是一个好主意?
怎么样LinkedHashSet
?它的迭代器保留插入顺序,但是由于它是a
Set
,因此其元素是唯一的。
如其文档所述,
请注意,如果将元素 重新插入 到集合中,则插入顺序 不会 受到影响。 __
为了有效地从此“队列”的头部删除元素,请经历其迭代器:
Iterator<?> i = queue.iterator();
...
Object next = i.next();
i.remove();
我需要用唯一的元素在Redis中实现队列。目前,我正在使用Redis List实现队列(LPUSH,RPOP),并使用Redis SortedSet/Set实现唯一性。 由于密钥的高负载/请求,Redis缓存服务器使用了更多的CPU。此外,上面的方法占用了更多的内存大小(相同的密钥在列表和Sortedset中都被删除),还有没有其他方法来实现具有密钥唯一性的Redis队列呢?
3.1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例。举个大家都熟知的例子——Windows任务管理器,如图3-1所示,我们可以做一个这样的尝试,在Windows的“任务栏”的右键弹出菜单上多次点击“启动任务管理器”,看能否打开多个任务管理器窗口?如果你的桌面出现多个任务管理器,我请你吃饭,(注:电脑中毒或私自修改Windows内核者除外)。通常情况下,无论我们启动任务管理多
3.6 单例模式总结 单例模式作为一种目标明确、结构简单、理解容易的设计模式,在软件开发中使用频率相当高,在很多应用软件和框架中都得以广泛应用。 1.主要优点 单例模式的主要优点如下: (1) 单例模式提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。 (2) 由于在系统内存中只存在一个对
3.5 一种更好的单例实现方法 饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存;懒汉式单例类线程安全控制烦琐,而且性能受影响。可见,无论是饿汉式单例还是懒汉式单例都存在这样那样的问题,有没有一种方法,能够将两种单例的缺点都克服,而将两者的优点合二为一呢?答案是:Yes!下面我们来学习这种更好的被称之为Initialization Demand Holder (IoDH)的技
3.4 饿汉式单例与懒汉式单例的讨论 Sunny公司开发人员使用单例模式实现了负载均衡器的设计,但是在实际使用中出现了一个非常严重的问题,当负载均衡器在启动过程中用户再次启动该负载均衡器时,系统无任何异常,但当客户端提交请求时出现请求分发失败,通过仔细分析发现原来系统中还是存在多个负载均衡器对象,导致分发时目标服务器不一致,从而产生冲突。为什么会这样呢?Sunny公司开发人员百思不得其解。 现在我
3.3 负载均衡器的设计与实现 Sunny软件公司承接了一个服务器负载均衡(Load Balance)软件的开发工作,该软件运行在一台负载均衡服务器上,可以将并发访问和数据流量分发到服务器集群中的多台设备上进行并发处理,提高系统的整体处理能力,缩短响应时间。由于集群中的服务器需要动态删减,且客户端请求需要统一分发,因此需要确保负载均衡器的唯一性,只能有一个负载均衡器来负责服务器的管理