<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[highmaple的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/highmaple</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; highmaple]]></copyright><item><title><![CDATA[Redis源码sds学习四-sdscpy和sdsdup]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/119421033</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/119421033</guid><author>highmaple</author><pubDate>Thu, 05 Aug 2021 16:24:42 +0800</pubDate><description><![CDATA[Redis源码sds学习四-sdscpy和sdsdup
在sds动态字符串学习二中，学习了sdscat函数，该函数是字符串拼接函数，C语言中是strcat函数是字符串拼接函数。字符串操作中很多函数，其中在C语言中，还有个常用的字符串拷贝strcpy函数，今天来学习一下redis sds中对应的字符串拷贝函数：sdscpy和sdsdup。
题外话：
学习了几个redis sds字符串操作函数，而C语言中字符串操作函数命名一般为 str*，sds中命名一般为 sds*，*部分对应是一样的，不知道后续其它动态字符]]></description><category></category></item><item><title><![CDATA[Redis源码sds学习三]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118964714</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118964714</guid><author>highmaple</author><pubDate>Wed, 21 Jul 2021 13:55:31 +0800</pubDate><description><![CDATA[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);
    ]]></description><category></category></item><item><title><![CDATA[Redis源码zmalloc内存管理(2)]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118937278</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118937278</guid><author>highmaple</author><pubDate>Tue, 20 Jul 2021 15:52:45 +0800</pubDate><description><![CDATA[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_]]></description><category></category></item><item><title><![CDATA[zmalloc内存管理(1)(Redis源码学习)]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118576839</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118576839</guid><author>highmaple</author><pubDate>Thu, 08 Jul 2021 16:40:05 +0800</pubDate><description><![CDATA[zmalloc内存管理(1)(Redis源码学习)
在学习sds.c源码时，sdsnewlen函数中开始调用zmalloc相关库函数：
sds sdsnewlen(const void *init, size_t initlen) {
    ... //省略部分代码

    // 根据是否有初始化内容，选择适当的内存分配方式
    // T = O(N)
    if (init) {
        // zmalloc 不初始化所分配的内存
        sh = zmalloc(sizeof(]]></description><category></category></item><item><title><![CDATA[组建Redis sentinel问题`GLIBC_2.14’ not found和ps -ef 的uid为数字问题]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118435121</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118435121</guid><author>highmaple</author><pubDate>Sat, 03 Jul 2021 08:47:44 +0800</pubDate><description><![CDATA[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程]]></description><category></category></item><item><title><![CDATA[柔性数组(Redis源码学习)]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118378569</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118378569</guid><author>highmaple</author><pubDate>Thu, 01 Jul 2021 08:42:39 +0800</pubDate><description><![CDATA[柔性数组(Redis源码学习)
1. 问题背景
在阅读Redis源码中的字符串有如下结构,在sizeof(struct sdshdr)得到结果为8，在后续内存申请和计算中也用到。其实在工作中有遇到过这种 struct结构 + 应用数据的情况，但没有意识到自己使用的是柔性数组，在学习阅读Redis代码中，遇到该方法，就特总结记录之。
/* * 类型别名，用于指向 sdshdr 的 buf 属性 */
typedef char * sds;
/* * 保存字符串对象的结构 */
struct sdshdr { ]]></description><category></category></item><item><title><![CDATA[__sync_fetch_and_add函数(Redis源码学习)]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/118305902</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/118305902</guid><author>highmaple</author><pubDate>Mon, 28 Jun 2021 16:09:42 +0800</pubDate><description><![CDATA[__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(&amp;used_memory, (__n))

在网上查找相关 __sync_add_and_fetch 函数的知识点，基本都是一样的]]></description><category></category></item><item><title><![CDATA[Lua __index  __newindex元表方法学习]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/105838899</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/105838899</guid><author>highmaple</author><pubDate>Wed, 29 Apr 2020 14:36:51 +0800</pubDate><description><![CDATA[在学习Lua语言的元表和元方法章节中，各种网上收例子，便于理解学习。

看到一篇很好的博客，讲到了 lua 的 rawset，rawget，index，newindex的使用，具体博客见下面链接：

作者：@qingqing-zhao
本文为作者原创，转载请注明出处：https://www.cnblogs.com/zhaoqingqing/archive/2018/11/28/10032249.h...]]></description><category></category></item><item><title><![CDATA[Cmake Practice学习遇到问题]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/103891998</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/103891998</guid><author>highmaple</author><pubDate>Wed, 08 Jan 2020 15:21:59 +0800</pubDate><description><![CDATA[在学习网上流行的Cmake实践即Cmake Practice文档时，自己按照文档都验证了其中的例子和程序，但在最后一章遇到问题并更正记录如下：

九，复杂的例子：模块的使用和自定义模块

二，编写属于自己的 FindHello 模块。

1，定义 cmake/FindHELLO.cmake 模块
FIND_PATH(HELLO_INCLUDE_DIR hello.h /usr/include/he...]]></description><category></category></item><item><title><![CDATA[2.Add Two Numbers]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/100983407</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/100983407</guid><author>highmaple</author><pubDate>Wed, 18 Sep 2019 14:55:35 +0800</pubDate><description><![CDATA[Add Two Numbers
Category Difficulty Likes Dislikes
algorithms Medium (31.66%) 5950 1551
Tags
Companies
You are given two non-empty linked lists representing two non-negative integers. The digits are s...]]></description><category></category></item><item><title><![CDATA[1.Two Sum]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/100983206</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/100983206</guid><author>highmaple</author><pubDate>Wed, 18 Sep 2019 14:53:17 +0800</pubDate><description><![CDATA[Two Sum
Category Difficulty Likes Dislikes
algorithms Easy (43.81%) 10587 350
Tags
Companies
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
Y...]]></description><category></category></item><item><title><![CDATA[cmake关于自定义gcc安装路径报错问题]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/100118923</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/100118923</guid><author>highmaple</author><pubDate>Wed, 28 Aug 2019 14:43:14 +0800</pubDate><description><![CDATA[linux服务器自定义安装gcc4.8.2为支持学习C++11，使用到cmake时总是报错如下：

-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /home/**/gcc11/gcc-4.8.2/...]]></description><category></category></item><item><title><![CDATA[统计日志—gmtime和localtime]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/99696462</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/99696462</guid><author>highmaple</author><pubDate>Sat, 17 Aug 2019 18:25:44 +0800</pubDate><description><![CDATA[在统计日志中，涉及到时间，天数的对比时，

gmtime 时间是东八区的时间，也就是在日志中，统计一天的结果时，则日志输出会在早上8点才会打印出统计信息，中国位于东八区

而 localtime 才是真正的本地时间，会在凌晨0点左右就输出日志，统计前一天的相关信息，

注意，函数别用错了。

还有个函数 localtime_r，和localtime不同，可以查查。
...]]></description><category></category></item><item><title><![CDATA[csdn 博客markdown使用方法]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/99696401</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/99696401</guid><author>highmaple</author><pubDate>Sat, 17 Aug 2019 18:21:52 +0800</pubDate><description><![CDATA[统计日志—gmtime和localtime
在统计日志中，涉及到时间，天数的对比时，
gmtime 时间是东八区的时间，也就是在日志中，统计一天的结果时，则日志输出会在早上8点才会打印出统计信息，中国位于东八区
而 localtime 才是真正的本地时间，会在凌晨0点左右就输出日志，统计前一天的相关信息，
注意，函数别用错了。
还有个函数 localtime_r，和localtime不同，可以查查...]]></description><category></category></item><item><title><![CDATA[380. Insert Delete GetRandom O(1)]]></title><link>https://blog.youkuaiyun.com/highmaple/article/details/86710629</link><guid>https://blog.youkuaiyun.com/highmaple/article/details/86710629</guid><author>highmaple</author><pubDate>Thu, 31 Jan 2019 07:17:09 +0800</pubDate><description><![CDATA[Design a data structure that supports all following operations in average O(1) time.

 

insert(val): Inserts an item val to the set if not already present.
	remove(val): Removes an item val from the ...]]></description><category></category></item></channel></rss>