首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
KaBuMjue
获赞
9
粉丝
0
关注
4
看过 TA
0
上海大学
2021
C++
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑KaBuMjue吗?
发布(4)
刷题
KaBuMjue
2020-09-29 23:47
已编辑
C++
阅读Redis6.0源码之字典
虽然字典在很多高级语言中都有,用途很广泛,但C语言却是没有,所以还得自己"造轮子"。接下来就看看Redis是如何实现字典数据结构的,相关文件为dict.h,dict.c。 dict.h 在dict.h中定义了多种数据结构用于实现字典。 dict -- 字典 typedef struct dict { dictType *type; // 指明该字典使用的特定函数,如使用的哈希函数 void *privdata; // 私有数据 dictht ht[2]; // 两个哈希表 long rehash...
0
点赞
评论
收藏
转发
KaBuMjue
2020-09-07 22:41
C++
阅读Redis6.0源码之链表
因为C标准库没有实现链表这种数据结构,而链表十分常用,所以Redis实现了自己的链表数据结构,相关文件为adlist.h、adlist.c. adlist.h Redis实现的链表是双向的,所以链表节点除了包含数据指针外,还有指向前一个节点以及后一个节点的指针。具体定义如下: typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; 然后是链表的定义: typedef struct list { listNode *head; ...
0
点赞
评论
收藏
转发
KaBuMjue
2020-09-04 23:27
已编辑
C++
阅读Redis6.0源码之SDS(Simple Dynamic String)
Redis使用SDS(Simple Dynamic String)来实现字符串对象,相关文件为sdsalloc.h、sds.h、sds.c。 sdsalloc.h 只是"重命名",仅有三行代码: #define s_malloc zmalloc #define s_realloc zrealloc #define s_free zfreesds.h重要代码 sds.h中定义了5种sdshdr(SDS头部)类型,sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64。其中sdshdr5并不使用,其它类型适用不同长度的字符串,其定义如下: /* N...
0
点赞
评论
收藏
转发
KaBuMjue
2020-09-02 14:31
已编辑
C++
阅读Redis6.0源码之内存管理篇
Redis的内存管理是由zmalloc.h和zmalloc.c实现的,编译时会先判断是否使用tcmalloc(google开发的内存分配器,全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理)和jemalloc(一种内存分配器,与其它内存分配器相比,它最大的优势在于多线程情况下的高性能以及内存碎片的减少),然后判断是否为Mac系统,如果上面三者都无法使用的话才会使用标准库libc。默认情况下Redis6.0使用的是jemalloc,关于jemalloc, 这个博文讲的很好。 zmalloc.h重要代码 选择的内存管理的方式不同,相应的zmal...
0
点赞
评论
收藏
转发
1
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务