摘要:
rcu入门 是什么 可参考官方文档 Read-copy update,可以理解为,先读数据,修改之后,一次性替换旧数据 是linux内核的同步机制,提供线程安全的并发访问 应用场景 典型应用场景 链表 读多写少 实现 链表插入节点 在A之前插入节点,分为3步 1.new 新节点 2.新节点next指 阅读全文
摘要:
liunx 安装 redis & redis benchmark 1.下载安装包 点击官网,下载stable版本 wget http://download.redis.io/releases/redis-6.2.4.tar.gz 2.安装 解压,并编译 tar xzf redis-6.2.4.tar 阅读全文
摘要:
在数据库的设计中,cache是极其重要的一个模块 命中率高,延迟低的cache是承受高QPS,低延时的关键 其中,在热点key场景下,全局cache很容易造成锁瓶颈 于是,我们可以采用thread local + global的两级cache,应对热点key 针对thread local cache 阅读全文
摘要:
问题 Tcmalloc 由于使用了精心设计的 cache,进而大大提高了malloc 和 free 的效率,但由之而来的是 cache 大小的难以把控,容易出现 cache 占用过大,进而 OOM 的问题,tcmalloc 提供了两个方案解决这个问题 展现 tcmalloc 维护的内存状态解决 // 阅读全文
摘要:
1.Apple 官方给出的最佳方案 → 点此 选取苹果菜单 >“系统偏好设置” 点按“用户与群组” 选择帐户 点按窗口顶部的“登录项”。 添加删除开机自启 2.程序坞中设置 程序坞找到软件图标,双指点按 勾选「登录时打开」-> 下次 Mac 开机登录就会自动打开这个软件 3.第三方工具修改 例如 腾 阅读全文
摘要:
A1是微软的一篇SIGMOD 2020年**“分布式内存图数据库”**的论文,其中关于图系统的讨论,以及新技术的运用,值得我们学习和借鉴 本文将按照以下几个方面透彻介绍A1的方方面面 一、Background 1.历史背景 有钱 : 便宜的DRAM 有技术:商业应用的RDMA bypass loca 阅读全文
摘要:
@ 5. HyperLogLog 实现 hyperloglog.c 数据结构定义 hllhdr struct hllhdr { char magic[4]; /* "HYLL" */ uint8_t encoding; /* HLL_DENSE or HLL_SPARSE. */ uint8_t n 阅读全文
摘要:
@ 4. 跳表实现 redis.h 和 t_zset.c 数据结构定义 object // 包含 meta 和 数据 指针 #define REDIS_LRU_BITS 24 typedef struct redisObject { unsigned type:4; // 类型 unsigned e 阅读全文
摘要:
4. 字典实现 dict.h 和 dict.c 数据结构定义 状态码 #define DICT_OK 0 // 操作成功 #define DICT_ERR 1 // 操作失败(或出错) 哈希表kv节点 typedef struct dictEntry { void *key; // 键 union 阅读全文
摘要:
3. 双端链表 adlist.h 和 adlist.c 数据结构定义 节点 // 节点 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; 链表 // 链表 阅读全文