就这一次,用20张图带你彻底击溃Redis跳表,java反射机制原理
生活随笔
收集整理的這篇文章主要介紹了
就这一次,用20张图带你彻底击溃Redis跳表,java反射机制原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
但是每次查找元素是需要進行遍歷,就算我知道某個元素一定在大致的什么位置,也只能一步步走過去,看到這里要覺得有優化的空間,那你也蠻厲害的了,說不定早幾年跳表就是你的發明了。
如圖刪除元素5和插入元素49時的處理:
平衡樹
===
平衡樹也是處理動態查找問題的一把好手,樹一般是基于鏈表實現的,只不過樹的節點之間并不是鏈表簡單的線性關系,會有兄弟姐妹父親等節點,并且各個層級有數量的限制,可以看到樹其實還是蠻復雜的。
節點需要存儲的信息很多,各個指針指來指去,復雜的結構增加了調整平衡性的難度,不同情況下的左旋右旋,所以出現了紅黑樹這種工程版本的AVL,但是在實際場景中可能并不需要這些兄弟姐妹父親關系,有種殺雞宰牛刀的意味了。
紅黑樹的節點結構定義:
#define COLOR_RED 0x0
#define COLOR_BLACK 0x1
typedef struct RBNode{
int key;
unsigned char color;
struct RBNode *left;
struct RBNode *right;
struct RBNode *parent;
}rb_node_t, *rb_tree_t;
另外紅黑樹調整屬性過程中插入分為3種情況,刪除分為4種情況,還是比較難以理解的,除非你穿紅上衣&
總結
以上是生活随笔為你收集整理的就这一次,用20张图带你彻底击溃Redis跳表,java反射机制原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每日linux——网络命令2
- 下一篇: 小红书如何应对万亿级社交网络关系挑战?图