![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书摘要
文章平均质量分 88
快乐划水程序猿
记录点滴成长
展开
-
《分析模式》第0-2章 责任
时隔多年终于更新,学习总结分享知识总是快乐的❤0.0 译者序作者Matrin Fowler 软件设计大师,曾在thoughtworks(全球性软件及咨询公司)任职过设计模式真实问题映射为分析模型,分析模型映射为设计模型,再映射为代码,编译构建,形成系统练习方式用熟悉的语言抠一遍例子模型图画成UML图,实现完整的模块图有点意思的类比分析模型分为模型的建立(type)和模型的实现(class)1.1 概念模型理解和简化问题的模型针对问题设置概念模型提供功能和开发维护成本之前原创 2021-08-17 09:17:38 · 275 阅读 · 1 评论 -
《redis设计与实现》第三部分 (第16章 哨兵)
第三部分 多机数据库的实现16.0 第16章 Sentinel哨兵系统可以监视所有主服务器下,以及主服务器下的所有从服务器。如果被监视的主服务器下线,哨兵系统可以讲下线的从服务器升级成新的主服务器16.1 启动并初始化Sentinel16.1.1 初始化服务器sentinel本质是运行一个特殊模式下的Redis服务器,并不使用数据库,所以初始化sentinel不需要载入RDB和AOF可能会用到的主要功能复制命令SLAVEOF:Sentinel内部使用,客户端不可以使用发布与订阅命令:SU原创 2020-10-28 22:04:28 · 171 阅读 · 0 评论 -
《redis设计与实现》第三部分 (第15章 复制)
第三部分 多机数据库的实现15.0 第15章 复制用户可以通过执行slaveof选项,让一个服务器去复制另一个服务器,被复制的服务器为主服务器,对主服务器进行复制的服务器称之为从服务器。主从服务器的数据库保存相同的数据,概念上称“数据库状态一致”服务器127.0.0.1:12345成为127.0.0.1:6379的从服务器,之后在6379主服务器设置键值,在12345服务器上也可以获取该键值。如果在主服务器上删除了键值,主从服务器最后也会删除键值// for example127.0.0.1:原创 2020-10-27 15:23:28 · 195 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第24章 监视器)
24.0 监视器通过客户端执行MONITOR,客户端可以把自己变成一个监视器,实时地接收并打印出服务器当前处理的命令请求信息流程客户端向服务器发送一条命令请求,服务器处理这条命令请求,还会将这个命令请求信息发送给所有的监视器24.1 成为监视器某个客户端向服务器发送MONITOR命令,这个客户端的REDIS_MONITOR标志会被打开,客户端会被加入到链表的表尾//code0 server.cvoid monitorCommand(client *c) { /* igno原创 2020-10-26 19:43:27 · 147 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第23章 慢查询日志)
23.0 慢查询日志主要的功能:记录执行时间超过给定时长的命令请求,可以用这个功能产生的日志来监视和优化查询速度两个选项:时间和最多保存的条目slowlog-log-slower-than 执行时间超过多少微秒的命令记录到日志slowlog-max-len指定服务器最多保存多少条查询日志(先进先出,如果日志条目满了,最早的一条会被删除)example one127.0.0.1:6379> config set slowlog-max-len 5OK127.0.0.1:6379原创 2020-10-26 19:42:44 · 161 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第22章 二进制位数组)
感兴趣的是variable-precision SWAR算法,因为看书进度问题没研究透彻,未完待研究!22.0 二进制位数组redis提供了四个命令处理二进制数位组:SETBIT、GETBIT、BITCOUNT、BITOP四个命令处理二进制位数组SETBIT命令为位数组指定偏移量上的二进制位设置值,位数组的偏移量从0开始计数,而二进制位的值可能是0或者1SETBIT bit 0 1SETBIT bit 3 1GETBIT获取位数组指定偏移量伤的二进制位GETBIT bit 0B原创 2020-10-25 23:25:17 · 154 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第21章 排序)
本章节主要介绍SORT命令的实现原理,包括ASC、DESC、ALPHA、LIMIT、STORE、BY、GET在内的所有SORT命令选项的实现原理21.1 SORT cmpobj: 排序带有BY选项的字符串值时使用比如要排序numbers创建等长的数组;数组每一项都是redisSortObject结构将数组numbers的每一项转换成double类型的浮点数存储在score中;根据score排序;最后返回排好序的列表(redisSortObject结构中的obj变量返回给客户端)//原创 2020-10-23 23:00:45 · 145 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第20章 Lua脚本)
20 Lua脚本Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,设计的目的是为了嵌入应用程序中,为应用程序提供灵活的扩展和定制功能。EVAL命令可以直接对输入的脚本进行求值EVALSHA命令则可以根据脚本的SHA1校验和来对脚本进行求值,这个命令要求校验和对应的脚本至少被EVAL执行过一次20.1 Redis服务器初始化Lua环境创建并修改Lus环境的整个过程:创建一个基础的Lua环境载入多个函数库到Lua环境中,Lua可以使用函数库进行数据操作创建全局表格redi原创 2020-10-23 20:55:25 · 216 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第19章 事务)
19 事务Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。基本概念:事务提供了一种将多个命令请求打包,然后一次性按顺序执行多个命令的机制,在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后再去处理其他客户端的命令请求。执行过程:事务首先以MULTI命令为开始,接着将多个命令放入事务当中,最后由EXEC命令将事务提交给服务器执行19.1 事务的实现经历三个阶段:事务开始、命令入队、事务执行19.1.1 事务开始M原创 2020-10-23 12:40:26 · 195 阅读 · 0 评论 -
《redis设计与实现》第四部分 (第18章 发布与订阅)
18 发布与订阅主要命令PUBLISH、SUBSCRIBE、PSUBSCRIBE等订阅频道:执行SUBSCRIBE,客户端可以订阅一个或多个频道,从而成为频道的订阅者有其他客户端向被订阅的频道发送消息时,频道的所有订阅者都会收到这条消息订阅模式执行PSUBSCRIBE,客户端可以订阅一个或者多个模式(类似于正则表达式),从而成为模式的订阅者有其他客户端向某个频道发消息时,消息不仅回传给频道的订阅者,还会发送给与频道匹配的模式的订阅者举例说明A订阅了频道news.itB订阅了频原创 2020-10-22 23:25:46 · 110 阅读 · 0 评论 -
《redis设计与实现》第二部分 (第14章 服务器)
14 服务器参考大佬代码:https://www.cnblogs.com/dpains/p/7640528.html14.1 命令请求执行的过程14.1.1 发送命令请求用户在客户端输入命令请求,客户端会将这个命令请求转换成协议格式,然后通过连接到服务器的套接字,将协议格式的命令请求发送给服务器14.1.2 读取命令请求客户端与服务器之间的连接套接字因为客户端的写入而变得可读,服务器将调用命令请求处理器来执行一下操作读取套接字协议格式的命令请求,并将其保存到客户端状态的输入缓冲区中对原创 2020-10-22 20:49:16 · 233 阅读 · 0 评论 -
《redis设计与实现》第二部分 (第13章 客户端)
13.0 客户端每个与服务器连接的客户端,服务器都为这些客户端建立了相应的Client,这个结构保存了客户端当前的状态信息,以及执行相关功能时所需要用到的数据结构,其中包括:客户端的套接字描述符客户端的名字客户端的标志值指向客户端正在使用的数据库的指针以及该数据库的号码客户端当前要执行的命令、命令参数、命令参数的个数以及指向命令实现函数的指针客户端的输入缓冲区和输出缓冲区客户端的复制状态信息,以及进行复制所需的数据结构客户端执行BRPOP、BLPOP等列表阻塞命令时使用的数据结构客户原创 2020-10-21 15:39:26 · 216 阅读 · 3 评论 -
《redis设计与实现》第二部分 (第12章:事件)
12.0 第12章 事件分类文件事件:服务器通过套接字和客户端(或者其他服务器连接),文件事件是服务器对套接字操作的抽象时间事件:redis服务器中的一些操作serverCron需要在给定的时间点执行,时间事件就是服务器对这类定时操作的抽象12.1 文件事件基于Redis模式开发了网络事件处理器文件事件处理器使用I/O多路复用来监听多个套接字,根据套接字目前执行的任务来为套接字关联不同的事件处理器套接字准备好执行连接应答accept、读取read、写入write、关闭close,原创 2020-10-20 12:53:39 · 210 阅读 · 5 评论 -
《redis设计与实现》 第二部分(第9-11章):单机数据库的实现
9.0 第9章 数据库9.1 服务器中的数据库redis服务器将所有的数据库都保存在服务器状态的db数组中,db数组的每一个元素的数据结构是redisDb初始化服务器时,会根据服务器状态的dbnum属性来决定数据库的数量。默认情况下,该选项的值为16,Redis默认会创建16个数据库//code0: server.h/* Configuration */ int verbosity; /* Loglevel in redis.conf */ i原创 2020-10-13 20:11:34 · 234 阅读 · 2 评论 -
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
不得不夸赞redis的轻量级,以及代码透明度。可以通过这本书《Redis设计与实现》看原理,对照着官网上的src看code,理解更深刻!!!可能还需要看几遍,一遍看过去也不能全部记住,重复是硬道理!!!0. 前言特性:redis内置集合数据类型,支持对集合执行交集、并集、差集等一部分命令只能对特定数据类型执行(append只能对字符串,hset只能对哈希表),还有一部分命令可以对全部的数据类型执行(del、type以及expire)1. 引言单机功能:第一部分、第二部分、第四部分原创 2020-10-11 18:37:06 · 173 阅读 · 2 评论 -
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南Kubernetes需要容器运行时(Container Runtime Interface, CRI)的支持,目前官方支持的cri包含:docker、containerd、cri-o和frakti。禁用selinux需要在主机上禁用selinux,让容器可以读取主机文件系统修改系统文件/etc/sysco...原创 2020-03-03 20:26:07 · 1066 阅读 · 0 评论 -
读书摘要系列之《kubernetes权威指南·第四版》第一章:kubernetes入门
《kubernetes权威指南·第四版》第一章:kubernetes入门k8s底层除了用docker,也可以用rocker,rocker是coreOS推出的竞争性产品service和pod之间的关系通过Lable来绑定pod最底层有pause容器(pod的根容器),用来pod内部docker之间的网络通信和数据共享(业务容器共享pause的网络栈和Volume挂载卷);sidec...原创 2020-02-18 20:31:49 · 639 阅读 · 0 评论