稀疏 4D 字节数组的想法

本文关键字:数组 字节数 4D 字节 稀疏 | 更新日期: 2023-09-27 18:33:49

>我需要存储大约 60000 个类似 IP 地址的东西,以便我可以快速确定存储是否包含地址或返回与 3.4.*.**.5.*.* 等模式匹配的所有地址。前面的实现使用HashTables嵌套了四个级别。它不是完全线程安全的,这给我们带来了错误。我需要通过锁定外层来确保此线程的安全,或者我可以将所有这些更改为 ConcurrentDictionaries ,但这两个选项似乎都不太正确。一般来说,在字典中使用字节作为键对我来说从来都不太合适,尤其是重量级字典。建议?

稀疏 4D 字节数组的想法

Guava使用前缀trie来存储IP查找匹配。您可以在此处查看代码:

https://code.google.com/p/google-collections/source/browse/trunk/src/com/google/common/collect/PrefixTrie.java?r=2

这是Java代码,但我相信你可以很容易地把它改编成C#。前缀trie技术独立于语言而适用,并免费为您提供尾随通配符匹配。如果你想要任意通配符,你仍然需要自己实现它。或者,您可以构建类似于有向无环字图 (DAWG) 的数据结构。这将允许您更直接地实现任意通配符匹配。