需求很简单的,就是有一个 1W 个左右的 CIDR 集合(包括 IP 、CIDR ),想匹配一个 IP 在不在这里面。宿主语言是 Java 之类不直接操作指针的语言。输入结果是一个 true 或者 false 就可以了。 现在我只会 loop 的方法和 binary trie…… IPv6 和 IPv4 我会分成两个集合分开来匹配就可以了。
找了一下论文,感觉有很多的 Longest prefix match 的算法,但是不知道哪个改起来合适……写起来简单,性能也还可以,内存占用也不太。
大家有没有什么推荐的算法,不要那种要 128 次匹配(对于 IPv6 )的那种。先谢谢了。