C
文章平均质量分 87
highmaple
这个作者很懒,什么都没留下…
展开
-
Redis源码sds学习四-sdscpy和sdsdup
Redis源码sds学习四-sdscpy和sdsdup在sds动态字符串学习二中,学习了sdscat函数,该函数是字符串拼接函数,C语言中是strcat函数是字符串拼接函数。字符串操作中很多函数,其中在C语言中,还有个常用的字符串拷贝strcpy函数,今天来学习一下redis sds中对应的字符串拷贝函数:sdscpy和sdsdup。题外话:学习了几个redis sds字符串操作函数,而C语言中字符串操作函数命名一般为 str*,sds中命名一般为 sds*,*部分对应是一样的,不知道后续其它动态字符原创 2021-08-05 16:24:42 · 157 阅读 · 0 评论 -
Redis源码sds学习三
Redis sds动态字符串学习三GDB调试sdscat结构体指针变化问题在sds动态字符串学习之二那篇文章中,讲到了 sdscat 函数及内部内存重分配等 zremalloc 相关函数,在后来的gdb调试过程中,遇到奇怪的问题,在gdb调试到 sdsMakeRoomFor 函数中时,sds sdsMakeRoomFor(sds s, size_t addlen) { struct sdshdr *sh, *newsh; size_t free = sdsavail(s);原创 2021-07-21 13:55:31 · 99 阅读 · 0 评论 -
Redis源码zmalloc内存管理(2)
zmalloc内存管理(2)(Redis源码学习)1. 背景介绍在上一篇zmalloc内存管理(1)中留了一个问题,在 zmalloc 函数中用出现了条件编译,涉及到是否定义 HAVE_MALLOC_SIZE:#ifdef HAVE_MALLOC_SIZE update_zmalloc_stat_alloc(zmalloc_size(ptr)); return ptr;#else *((size_t*)ptr) = size; update_zmalloc_stat_原创 2021-07-20 15:52:45 · 132 阅读 · 0 评论 -
zmalloc内存管理(1)(Redis源码学习)
zmalloc内存管理(1)(Redis源码学习)在学习sds.c源码时,sdsnewlen函数中开始调用zmalloc相关库函数:sds sdsnewlen(const void *init, size_t initlen) { ... //省略部分代码 // 根据是否有初始化内容,选择适当的内存分配方式 // T = O(N) if (init) { // zmalloc 不初始化所分配的内存 sh = zmalloc(sizeof(原创 2021-07-08 16:40:05 · 331 阅读 · 0 评论 -
组建Redis sentinel问题`GLIBC_2.14’ not found和ps -ef 的uid为数字问题
RHEL6.9组建Redis sentinel集群遇到两个问题今天在组件Redis sentinel 集群时,遇到两个问题,之前已经组建多次,都没碰到类似问题,在解决这两个问题时,耗费些时间。问题1. ./redis-server: /lib64/libc.so.6: version `GLIBC_2.14’ not found 问题在将A服务器 RHEL6.9 上已经编译好的 Redis-3.0.3 整个目录,scp 到 RHEL6.9 服务器B上,在 A 上能正常运行的redis-server程原创 2021-07-03 08:47:44 · 212 阅读 · 0 评论 -
柔性数组(Redis源码学习)
柔性数组(Redis源码学习)1. 问题背景在阅读Redis源码中的字符串有如下结构,在sizeof(struct sdshdr)得到结果为8,在后续内存申请和计算中也用到。其实在工作中有遇到过这种 struct结构 + 应用数据的情况,但没有意识到自己使用的是柔性数组,在学习阅读Redis代码中,遇到该方法,就特总结记录之。/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char * sds;/* * 保存字符串对象的结构 */struct sdshdr {原创 2021-07-01 08:42:39 · 103 阅读 · 0 评论 -
__sync_fetch_and_add函数(Redis源码学习)
__sync_fetch_and_add函数(Redis源码学习)在学习redis-3.0源码中的sds文件时,看到里面有如下的C代码,之前从未接触过,所以为了全面学习redis源码,追根溯源,学习一下__sync_fetch_and_add的系列函数:#define update_zmalloc_stat_add(__n) __sync_add_and_fetch(&used_memory, (__n))在网上查找相关 __sync_add_and_fetch 函数的知识点,基本都是一样的原创 2021-06-28 16:09:42 · 357 阅读 · 0 评论 -
Cmake Practice学习遇到问题
在学习网上流行的Cmake实践即Cmake Practice文档时,自己按照文档都验证了其中的例子和程序,但在最后一章遇到问题并更正记录如下:九,复杂的例子:模块的使用和自定义模块二,编写属于自己的 FindHello 模块。1,定义 cmake/FindHELLO.cmake 模块FIND_PATH(HELLO_INCLUDE_DIR hello.h /usr/include/he...原创 2020-01-08 15:21:59 · 155 阅读 · 0 评论 -
1.Two Sum
Two SumCategory Difficulty Likes Dislikesalgorithms Easy (43.81%) 10587 350TagsCompaniesGiven an array of integers, return indices of the two numbers such that they add up to a specific target.Y...原创 2019-09-18 14:53:17 · 107 阅读 · 0 评论 -
统计日志—gmtime和localtime
在统计日志中,涉及到时间,天数的对比时,gmtime 时间是东八区的时间,也就是在日志中,统计一天的结果时,则日志输出会在早上8点才会打印出统计信息,中国位于东八区而 localtime 才是真正的本地时间,会在凌晨0点左右就输出日志,统计前一天的相关信息,注意,函数别用错了。还有个函数 localtime_r,和localtime不同,可以查查。...原创 2019-08-17 18:25:44 · 190 阅读 · 0 评论 -
csdn 博客markdown使用方法
统计日志—gmtime和localtime在统计日志中,涉及到时间,天数的对比时,gmtime 时间是东八区的时间,也就是在日志中,统计一天的结果时,则日志输出会在早上8点才会打印出统计信息,中国位于东八区而 localtime 才是真正的本地时间,会在凌晨0点左右就输出日志,统计前一天的相关信息,注意,函数别用错了。还有个函数 localtime_r,和localtime不同,可以查查...原创 2019-08-17 18:21:52 · 155 阅读 · 0 评论