我正在使用类型的对象
Map<Long, Map<UUID, OperationEntry>> stepOperations = new ConcurrentHashMap<>();
Run Code Online (Sandbox Code Playgroud)
来控制一些操作的执行。我有一个 Kafka 消息处理程序方法,在收到有关操作状态更改的消息后,需要根据传递的 UUID 在 stepOperations 映射中查找并更新记录的状态。
UUID 类未被覆盖(标准 java.util.UUID)。
如果地图中存在密钥“3102869c-7653-4fb7-ad47-a629b5cbac90”(如屏幕截图所示),那么从 containsKey 方法获得意外结果的原因可能是什么?
这是代码中有问题的部分:
private OperationEntry getOperationLogEntry(UUID requestId) {
return stepOperations.values().stream()
.filter(value -> value.containsKey(requestId))
.map(value -> value.get(requestId))
.findFirst()
.orElse(null);
}
Run Code Online (Sandbox Code Playgroud)
使用 ConcurrentHashMap 类是因为它保证支持多线程处理。传入的 Kafka 消息由由 16 个线程组成的线程池进行处理。
内部地图的存在可能是这里的潜在问题吗?
简单的测试例如
Map<UUID, String> testMap = new java.util.concurrent.ConcurrentHashMap<>();
UUID key = UUID.randomUUID();
testMap.put(key, "testValue");
if (testMap.containsKey(key)) {
System.out.println(testMap.get(key));
}
Run Code Online (Sandbox Code Playgroud)
按预期工作
我需要一个6字符的字母数字ID,用于我的rails应用程序,它将呈现给系统的用户,并且在我的系统中的所有对象实例中必须是唯一的.我不指望超过几千个对象实例,所以6个字符远远超过我真正需要的.
此时我在我的Rails应用程序中使用UUIDTools gem来生成一个uuid.我应该使用哪种UUIDTools生成方法,以及结果uuid的哪一端应该从中获取6个字符,以保证唯一性?
例如,如果我生成ef1cf087-95c9-4868-bd95-cea950a52b58
,我想ef1cf0
从它的前面使用,还是a52b58
从后端使用?
......作为旁注/问题:我是不是错了?有没有更好的办法?
我有一个程序将消息分派给不同的进程.我需要平衡负载,但不是非常精确,几乎相同的数字是可以的.由于每条消息都有一个uuid字段,我想用uuid值来做.在我测试了uuid随机性之后,我发现它并不像我经历的那样随机.我有最后一个和第一个约80%的差异.这是不可接受的,所以我想知道是否有一种算法可以使它更随机.
这是我的测试代码.
import uuid
from collections import Counter
COUNT = 3000
def b(length):
holder = []
for i in xrange(COUNT):
holder.append(str(uuid.uuid4())[:length])
return Counter(holder)
def num(part_count):
sep = 0xffffffffffffffffffffffffffffffff / part_count
parts = []
for i in xrange(COUNT):
# str_hex = str(uuid.uuid4())[:4]
num = int(uuid.uuid4().hex,16)
divide = num/sep
if divide == part_count:
divide = part_count - 1
parts.append(divide)
return Counter(parts)
if __name__ == "__main__":
print num(200)
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
Counter({127L: 29, 198L: 26, 55L: 25, 178L: 24, 184L: 24, 56L: 23, 132L: 23, …
Run Code Online (Sandbox Code Playgroud) 自从更新到5.0.1后我就得到了这个
警告:在加载的库中检测到UUID不匹配 - 在磁盘上是:/ Users/alfredjunco/Library/Developer/Xcode/iOS DeviceSupport/5.0.1(9A405)/Symbols/System/Library/Frameworks/CoreLocation.framework/CoreLocation
我也得到了这个,但我不知道它是否重要
无法加载符号文件:警告:无法读取/Library/MobileSubstrate/MobileSubstrate.dylib的符号(找不到文件).警告:没有本地发现的MobileSubstrate.dylib副本,从远程设备上的内存中读取.这可能会减慢调试会话的速度.
在PHP中检查2个uuids是否正确的正确方法是什么?我需要检查2个具有uuid值的变量并根据结果进行操作.我尝试过strcmp()但是没有产生正确的值.
谢谢!mmiz
我有一个看起来像这样的UUID:d30d7840-8f7f-012f-e231-1231390f85a2.
这是哪个版本/类型的UUID?我正在查看版本位(第3部分的第一个字符),但无法确定如何在零处识别它.
有没有可用于将纯字符串转换为UUID格式字符串的实用方法?
例如:
普通字符串: f424376fe38e496eb77d7841d915b074
UUID格式化字符串: f424376f-e38e-496e-b77d-7841d915b074
我只是想在不使用任何java逻辑的情况下转换为UUID格式,因此寻找java.lang,java.util或Apache等软件包中可用的预定义实用程序.
我有一个名为的表students
从外部源填充.数据带有复合键,然后我想用它来生成UUID uuid_generate_v5
.我现在正在这样做
UPDATE students SET id = uuid_generate_v5(uuid_ns_url(), CONCAT(composite1, composite2));
Run Code Online (Sandbox Code Playgroud)
当有一行插入此表时,我有兴趣将其移动到触发器中.我该怎么做呢?
我想将UUID用于数据库记录,但如果我将其用于URL,我希望它是5到8个字符.
我知道我需要使用SecureRandom
和base64
,但我如何指定我需要的长度?