Redis源码阅读01-读了一下redis启动流程涉及的源码我都读了个啥
阅读源码是学习一门技术的必经之路,经过1周左右的c语言入门学习,我就开始硬读redis的源码了。因为公司的多版本的改造,所以源码就选择redis6.x的最高版本redis6.2.7。
在阅读源码前,首先要有一些c语言的基础,所以推荐先学一学c语言的基本语法,推荐的书是《c primer plus》,这本书讲的特别细,既可以当作入门的书来看,也可以作为工具书,在遇到问题的时候翻一翻。
阅读源码应该从哪读起,不同的人有不同的看法,比如陈雷的《redis5源码设计与分析》这本书里面,首先是从redis的数据结构开始入手进行介绍的。而《Redis源码剖析与实战》的蒋德钧是从项目的目录结构开始进行介绍的。我比较急,直接就从启动开始看。我的阅读习惯就是从启动流程开始,最好是可以边跑边读,所以我首先找到redis-server的启动入口。redis-server嘛,入口就是server.c的main方法了。在redis2.x的版本里,这个文件的名就是redis-server.c,这点得注意。
读源码的过程中,为了避免看了一眼,隔天就忘的情况,我会在代码上面增加一些注释,来记录一下方法的功能,亦或者把方法的原来的英文注释说明给翻译一下。遇到一些linux的底层方法,就把方法的说明在用处进行记录。
另外使用脑图工具把整个启动流程中调用的方法进行记录,把比较关键的点使用标记进行标注。
有一些看不懂的地方,就加一些printf
语句将参数、结果等进行输出,这样可以从结果对执行过程或者是方法功能进行反推。
有一个缺点是,这么看源码真的是又慢又麻烦。但是会有脑图和经过注释的代码的输出。不算是毫无成果。会比看过就忘好一些。
同事有建议我读点重要的就行,比如说redis的数据结构,不知道xx原理不一样维护集群。我觉得不然。
在读过以后我也有一些自我怀疑,我读了源码以后和没读有啥区别,我看过了以后究竟弄懂了什么?我读过以后,把每一步都列出来,然后才好去看哪步是重要的,哪步是不重要的。别人总结的东西毕竟是别人的东西,我自己总结的是我自己的。
看过了以后其实脑子里面先有个印象,
无论是简单还是复杂的文档,一定要有输出才行。输出的东西才是自己的东西。
因为C语言用的很少,所以要自己亲自写的话还是有困难的,第一先混个代码脸熟。
ae事件循环这块还是没有读太懂。一回生二回熟,熟能生巧,再接再厉。
但是最终大抵是读完了。
未完待续。
see also at http://www.shutdown.cn/post/redis-read-code-01-start-flow/
Redis源码阅读01-读了一下redis启动流程涉及的源码我都读了个啥相关推荐
- spring源码阅读(3)-- 容器启动之BeanFactoryPostProcessor
接着上文<spring源码阅读(2)-- 容器启动之加载BeanDefinition>,当spring加载完所有BeanDefinition时,并不会马上去创建bean,而是先配置bean ...
- Netty源码分析第1章(Netty启动流程)----第4节: 注册多路复用
Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用 Netty源码分析第一章:Netty启动流程 第四节:注册多路复用 回顾下以上的小节, 我们知道了channe ...
- 【SemiDrive源码分析】【X9芯片启动流程】08 - X9平台 lk 目录源码分析 之 目录介绍
[SemiDrive源码分析][X9芯片启动流程]08 - X9平台 lk 目录源码分析 之 目录介绍 一./rtos/lk/ 目录结构分析 1.1 /rtos/lk_boot/ 目录结构分析 1.2 ...
- 【SemiDrive源码分析】【X9芯片启动流程】30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一)
[SemiDrive源码分析][X9芯片启动流程]30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一) 一.Android Kernel 启动流程分析 ...
- 【SemiDrive源码分析】【X9芯片启动流程】12 - freertos_safetyos目录Cortex-R5 DIL2.bin 之 sdm_display_init 显示初始化源码分析
[SemiDrive源码分析][X9芯片启动流程]12 - freertos_safetyos目录Cortex-R5 DIL2.bin 之 sdm_display_init 显示初始化源码分析 一.s ...
- 【SemiDrive源码分析】【X9芯片启动流程】21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇
[SemiDrive源码分析][X9芯片启动流程]21 - MailBox 核间通信机制介绍(代码分析篇)之 Mailbox for Linux 篇 一.Mailbox for Linux 驱动框架分 ...
- 【SemiDrive源码分析】【X9芯片启动流程】20 - MailBox 核间通信机制介绍(代码分析篇)之 MailBox for RTOS 篇
[SemiDrive源码分析][X9芯片启动流程]20 - MailBox 核间通信机制介绍(代码分析篇)之 MailBox for RTOS 篇 一.Mailbox for RTOS 源码分析 1. ...
- 【SemiDrive源码分析】【X9芯片启动流程】19 - MailBox 核间通信机制介绍(理论篇)
[SemiDrive源码分析][X9芯片启动流程]19 - MailBox 核间通信机制介绍(理论篇) 一.核间通信 二.核间通信软件架构 三.Mailbox 设备驱动 3.1 Mailbox for ...
- 【SemiDrive源码分析】【X9芯片启动流程】23 - MailBox 核间通信机制介绍(代码分析篇)之 RPMSG-IPCC Kernel 篇
[SemiDrive源码分析][X9芯片启动流程]23 - MailBox 核间通信机制介绍(代码分析篇)之 RPMSG-IPCC Kernel 篇 一.RPMSG 接口 1.1 Linux Kern ...
最新文章
- 通过一个端口读取多个按钮
- Qt Remote Object(QtRO)实现进程间通信
- Kotlin学习系列(二)
- ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了(转载)...
- TCP/IP之路由算法
- 【打印代码+好好理解+子串问题】LeetCode 76. Minimum Window Substring
- pix4d怎么查看点云数据_PIX4D的两种像控点刺点方式探讨
- win7上安装mysql数据库_mysql-windows系统安装mysql数据库
- [ NOI 2005 ] 聪聪与可可
- 用友nc系统服务器是云端吗,用友NC服务器硬件配置要求
- 55寸0.88mm拼接屏对比1.8mm拼接显示效果
- 腐蚀rust服务器命令_服务器指令_腐蚀rust服务器命令一览 腐蚀rust有哪些服务器命令_3DM单机...
- QuartusⅡ开发alteraFPGA如何约束时钟(关于消除警告Timing requirements not met)
- RMQ与SparseTable(ST表)
- 设计一套简单的计算机系统及其指令系统,【精品】计算机组成综合设计指导书...
- 连锁定位(Linkage Mapping)与关联定位(Association Mapping)
- java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
- 微信会员卡系统如何助力服装店提升业绩(下)
- Planet数据教育研究使用账号申请
- ManytoMany字段属性through和through_fields