一种前缀匹配的工具类
Posted bohu83
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种前缀匹配的工具类相关的知识,希望对你有一定的参考价值。
背景:
如果通常前缀匹配会想到数据库或者ES的方式。如果不借助于三方,Java自己有么有类似的组件?
再看消息的代码,有这样业务场景:对于一个主题subject,想看有哪些group订阅了。而对于消费者来说,订阅的时候就是需要支持前缀匹配的,比如XXX.order.pay,支持订阅XXX.order 就能获取消息。
看到大佬使用了ConcurrentRadixTree
使用方式:
tree.getValueForExactKey(prefix)
tree.putIfAbsent(prefix, map)
为啥没见过这个呢?而不是以为的字典树。
基数树与字典树的区别在于基数树将单词压缩了, 节点变得更少,解决了字典树高度问题。
起到了startwith的作用。类似的,看下这个jar的,ConcurrentReversedRadixTree
起到了endwith的作用。
应用广泛:
除了在消息队列的应用,广泛应用的是路由器做路由,或者linux系统缓存等。
以上是关于一种前缀匹配的工具类的主要内容,如果未能解决你的问题,请参考以下文章