答疑2 | 第7~12讲课后思考题答案及常见问题答疑
蒋德钧
你好,我是蒋德钧。
在今天的答疑中,我除了会解答课程之前的思考题以外,还会带你再进一步了解和数据结构设计、进程管理、高性能线程模型、IO 复用、预定义宏等相关的开发知识。希望你能通过这节课的答疑,进一步扩展你的知识面。
第 7 讲
对于这道题,有不少同学比如 @Kaito、@曾轼麟等同学,都对 Radix Tree、B+ 树和跳表做了对比,这里我就来总结一下。
Radix Tree 的优势
因为 Radix Tree 是前缀树,所以,当保存数据的 key 具有相同前缀时,Radix Tree 会在不同的 key 间共享这些前缀,这样一来,和 B+ 树、跳表相比,就节省内存空间。
Radix Tree 在查询单个 key 时,其查询复杂度 O(K) 只和 key 的长度 k 有关,和现存的总数据量无关。而 B+ 树、跳表的查询复杂度和数据规模有关,所以 Radix Tree 查询单个 key 的效率要高于 B+ 树、跳表。
Radix Tree 适合保存大量具有相同前缀的数据。比如一个典型场景,就是 Linux 内核中的 page cache,使用了 Radix Tree 保存文件内部偏移位置和缓存页的对应关系,其中树上的 key 就是文件中的偏移值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Redis源码解读:跨平台IO多路复用函数选择及参数传递技巧 本文深入解读了Redis源码中关于IO多路复用函数的选择机制,以及在C函数开发中传递多个参数的技巧。文章首先介绍了Redis对于不同平台的IO多路复用函数的选择机制,通过条件编译和预定义宏来区分不同平台,并展示了相应的代码逻辑。接着,文章讨论了在bio_job结构体中使用指针传递参数的局限性,并提出了利用指针指向结构体的方法来传递多个参数的解决方案。作者通过这些问题和解答,希望读者能够了解C语言编程开发的技巧,如跨平台开发和参数传递,以及对计算机系统关键机制设计的更多了解。整体而言,本文内容涵盖了Redis源码解读、跨平台开发、IO多路复用函数选择、参数传递技巧等多方面的知识,对于想要深入了解相关技术的读者具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Redis 源码剖析与实战》,新⼈⾸单¥59
《Redis 源码剖析与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论