"A", "to", "tea", "ted", "ten", "i", "in", "inn" 這些單詞組成的字典樹.code
基數樹與字典樹的區別在於基數樹將單詞壓縮了, 節點變得更少blog
單詞 "BANANA" 的後綴樹
. 每一個後綴以 $ 結尾
. 全部的後綴爲 A$
, NA$
, ANA$
,NANA$
, ANANA$
and BANANA$
. 葉子節點表示後綴的起始座標. 世界上後綴樹就是一個單詞的全部後綴組成的字典樹, 而且把字典樹單詞進行了壓縮隊列
在咱們的消息隊列中, 須要根據消息的 subject 查找全部訂閱了該 subject 的 group, consumer 訂閱 subject 方式是經過訂閱 subject 的前綴, 例如 subject 爲 flight.book.pay 能夠經過訂閱前綴 flight.book 來接收消息. 在咱們的應用中, 使用 concurrent-tree 的 ConcurrentInvertedRadixTree 來存儲 prefix => Map<String, Group>. 也就是 前綴 => Map<Group name, Group>.get
在查詢的時候, 經過 tree.getKeysPrefixing(subject) 來查找訂閱了 subject 的 group消息隊列