V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
voidmnwzp
V2EX  ›  程序员

这周上班摸鱼的时候读完了 redis sds 的源码,请教下源码的阅读方式

  •  1
     
  •   voidmnwzp ·
    NullpointerW · 2022-09-16 19:24:25 +08:00 via iPhone · 3159 次点击
    这是一个创建于 802 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每天工作都在大量使用 redis ,为了能在简历上写一句“熟悉 redis 阅读过部分源码”这周一拉了 6.0 的源码先从 sds 看起,虽然目前做 Java 开发,但 c 还是没怎么忘,毕竟是根源的东西,今天下班前终于读完了一千多行的 sds.c ,代码写得倒也是简单易懂,就这么流水账地读下来也没什么障碍,其实感觉最主要看下 sdsheader 和初始化时根据 initlen 选择哪个类型以及预分配多少长度就行了。重点思想就是通过 header.len O(1)获取长度和二进制安全,剩下什么 sdscat 、sdscatfmt 之类的功能性代码占比很大,虽然也是逐句看了,但估计很快也会忘了,接下来准备看 dict.c ,不知道之后是按之前看法逐行阅读还是主要看核心数据结构,目前感觉逐行看进度慢易疲劳,还容易忘,但也能多多少少的体会吸收到作者精简易读的代码风格

    11 条回复    2022-09-18 12:08:53 +08:00
    joApioVVx4M4X6Rf
        1
    joApioVVx4M4X6Rf  
       2022-09-16 19:46:58 +08:00
    要能发一篇文章就更好了
    klo424
        2
    klo424  
       2022-09-16 19:52:33 +08:00
    说来惭愧,我至今我还没完整阅读过任何一个开源项目的源码。
    nightwitch
        3
    nightwitch  
       2022-09-16 21:20:20 +08:00 via Android   ❤️ 8
    下策: 干读
    中策: 读完以后整理成笔记,方便以后翻阅
    上策: 仿写一个阉割版的
    上上策: 寻找里面的不足,修改后 pull request ,简历上写上 Redis Contributor
    laball
        4
    laball  
       2022-09-16 21:58:53 +08:00
    @nightwitch 牛逼
    sadfQED2
        5
    sadfQED2  
       2022-09-16 22:09:48 +08:00 via Android   ❤️ 1
    @klo424 说来更加惭愧,我没读过任何开源项目源码,可每次面试都会和面试官讨论各个开源组件的源码细节😂
    MaxFang
        6
    MaxFang  
       2022-09-17 01:23:35 +08:00
    @sadfQED2 老哥这等高深内功可否传授在下一二。
    MaxFang
        7
    MaxFang  
       2022-09-17 01:28:35 +08:00
    [如何阅读 Redis 源码?]( https://blog.huangz.me/diary/2014/how-to-read-redis-source-code.html)
    配合《 Redis 设计与实现》,相互结合并整理输出,效果会比较好。
    pengtdyd
        8
    pengtdyd  
       2022-09-17 01:55:23 +08:00
    说来惭愧,我至今我还没完整阅读过任何一个开源项目的源码。
    +1
    godfunc
        9
    godfunc  
       2022-09-17 19:54:09 +08:00
    读过一段时间,一般是先看书(不过现在的书基本都是 5.0 之前的版本了,有些内容对不上),然后执行一些 command 断点了看执行流程
    daokedao
        10
    daokedao  
       2022-09-18 09:25:41 +08:00
    以前是博览群书,现在还要博览群码
    AmosAlbert
        11
    AmosAlbert  
       2022-09-18 12:08:53 +08:00
    @sadfQED2 这咋做到的😀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:11 · PVG 13:11 · LAX 21:11 · JFK 00:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.