编辑
2023-11-12
Redis源码阅读
00

Redis中的跳表(skiplist)是一种有序的数据结构,它通过在每个节点中维护多个指向其他节点的指针,从而实现快速访问。跳表在插入、删除和查找操作上的平均复杂度为O(logN),最坏情况下为O(N),与红黑树相媲美,但实现起来比红黑树简单很多[1]

跳表的数据结构定义在Redis的server.h文件中,包括跳表节点(zskiplistNode)和跳表(zskiplist)两个结构体。跳表节点包含成员对象、分值、后向指针和层等属性;而跳表包含表头节点、表尾节点、节点数量和最大层数等属性[1]

Redis中关于跳表的相关操作函数定义在t_zset.c文件中,下面分别介绍几个基本操作函数的实现源码。

编辑
2023-11-12
算法题
00

以下是八大排序算法的C++模板代码

cpp
#include <iostream> #include <vector> using namespace std;
编辑
2023-11-11
算法题
00
编辑
2023-11-11
linux
00

Linux信号的原理是进程间通信的一种机制,它是在软件层面上对中断机制的一种模拟。信号是异步的,进程不需要等待信号的到来,而是在进程内部设置与信号对应的处理函数,当信号到达时,系统会异步触发对应的处理函数。

  1. 信号的产生:
    • 信号可以由内核产生,也可以由用户产生。例如,用户在终端输入"Ctrl + C"时会产生一个SIGINT信号,程序中的除零操作会产生一个SIGFPE信号,非法访问内存会产生一个SIGBUS信号,还可以通过终端命令或程序调用kill函数来手动发送信号[1]
编辑
2023-11-11
Redis源码阅读
00

各种算法

![image.png](/static/img/5f57e9238283d833