java - 为多个源生成唯一 ID

标签 java events

考虑 N 个数据源,每个数据源都有一个事件流

Event{
    long id;
    Object data;
}

一个流中的某些事件可能具有相同的 ID,因为事件可能跨越更新、新建等。因此我们可以看到以下两个流:

<1, 2, 3, 1, 5, 2>
<3, 3, 4, 5, 4>

我现在想将这些合并到一个流中。每个订单 ID 肯定是唯一的。

简单的方法是使用字符串而不是长字符串并附加源数字,生成如下内容:

<"1 - 1", "1 - 2", "1 - 3", "2-3", "2-3" ... >

是否有更多的内存协同影响方式/更好的方法?

最佳答案

您的字符串解决方案很好,而且实际上很常见。如果您有兴趣使其更加紧凑,您可能需要使用整数元组。

分布式系统中使用的另一种常见方法是使用范围分配:有一个中央(单例)服务器来分配每个客户端可以命名其 ID 的范围。例如,此类服务器可以将范围 0-99 分配给 client1,100-199 分配给 client2 等。当客户端耗尽分配的范围时,它会再次联系服务器以分配新的范围。

关于java - 为多个源生成唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515912/

相关文章:

java - 在 Java 中向上转换 "this"引用是否有意义?

java - 一个 Portlet 中的多个页面

java - 如何使用 docker-java 玩 docker run --rm ?

javascript - 检测 JavaScript 中的选项卡/窗口激活

javascript - EXTJS:如何在树面板中的图标节点上添加单击事件

c# - Windows 窗体事件 "On Select Tab"?

java - java中多线程的意外答案

java - OnTouchListener 阻止 ListView 交互

javascript - 全局屏幕跨度 onclick 触发事件 javascript

d3.js 在回调函数点击事件中未定义的数据值