Trie / Radix Tree / Suffix Tree

Trie (字典樹)

"A", "to", "tea", "ted", "ten", "i", "in", "inn" 這些單詞組成的字典樹.code

 

Radix Tree (基數樹)

基數樹與字典樹的區別在於基數樹將單詞壓縮了, 節點變得更少blog

 

Suffix Tree (後綴樹)

單詞 "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消息隊列

相關文章
相關標籤/搜索