07 2020 档案
mysql 索引和锁
摘要:mysql的查询流程一般是:mysql客户端通过协议与mysql服务器建立连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析,有一系列预处理,比如检查语句是否写正确了,然后是查询优化(比如是否使用索引扫描,如果是一个不可能的条件,则提前终止),生成查询计划,然后查询引擎启动 阅读全文
posted @ 2020-07-30 18:10 围龙小子 阅读(107) 评论(0) 推荐(0)
mysql事务详解
摘要:事务的特性(Atomicity) 原子性 -- 回滚日志 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 C(Consistency) 一 阅读全文
posted @ 2020-07-30 17:54 围龙小子 阅读(328) 评论(0) 推荐(0)
redis主从同步机制
摘要:和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。 为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。 下图为级联结构。 全量同步Redis全量复制 阅读全文
posted @ 2020-07-30 15:57 围龙小子 阅读(4663) 评论(0) 推荐(1)
MySQL同步机制
摘要:复制步骤: Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容 Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程 阅读全文
posted @ 2020-07-30 15:44 围龙小子 阅读(477) 评论(0) 推荐(0)
MongoDB-部署模式
摘要:mongodb部署有2种模式: 1、复制集 Replica Set 2、集群 shard 一、复制集复制集:是一组 mongod 实例组成,提供了数据冗余与高可用性成员:主节点(Primary)和从节点(Secondaries)最基础的复制集架构是由三个节点组成的,最常见的是 一个主节点和两个从节点 阅读全文
posted @ 2020-07-29 17:35 围龙小子 阅读(532) 评论(0) 推荐(0)
redis sentinel集群选举机制
摘要:概要 当redis集群的主节点故障时,Sentinel集群将从剩余的从节点中选举一个新的主节点,有以下步骤: 故障节点主观下线 故障节点客观下线 Sentinel集群选举Leader Sentinel Leader决定新主节点 选举过程 1、主观下线 Sentinel集群的每一个Sentinel节点 阅读全文
posted @ 2020-07-28 19:40 围龙小子 阅读(2648) 评论(2) 推荐(0)
redis集群
摘要:数据分区 槽的分配 Redis Cluster采用虚拟槽分区,将所有键使用哈希函数映射到编号为0~16383槽(slot)内,每个节点拥有一部分的槽 → 分布式存储 通过以下方式计算key属于哪一个slot: slot = CRC16(key) % 16384 每个节点只需要维护自己被分配的slot 阅读全文
posted @ 2020-07-28 19:25 围龙小子 阅读(143) 评论(0) 推荐(0)
redis集群模式
摘要:参考:https://www.cnblogs.com/L-Test/p/11626124.html 破解孤独 Redis ==> 集群的三种模式 一、主从同步/复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬 阅读全文
posted @ 2020-07-28 19:13 围龙小子 阅读(195) 评论(0) 推荐(0)
redis持久化之aof
摘要:1、保存逻辑: 当 AOF 持久化功能处于打开状态时, 服务器在执行完一个写命令之后, 会以协议格式将被执行的写命令追加到服务器状态的 aof_buf 缓冲区的末尾。 服务器配置 appendfsync 选项的值直接决定 AOF 持久化功能的效率和安全性。 当 appendfsync 的值为 alw 阅读全文
posted @ 2020-07-28 19:06 围龙小子 阅读(179) 评论(0) 推荐(0)
redis 持久化之RDB
摘要:在 Redis 运行时, RDB 程序将当前内存中的数据库快照保存到磁盘文件中, 在 Redis 重启动时, RDB 程序可以通过载入 RDB 文件来还原数据库的状态。 RDB 功能最核心的是 rdbSave 和 rdbLoad 两个函数, 前者用于生成 RDB 文件到磁盘, 而后者则用于将 RDB 阅读全文
posted @ 2020-07-28 18:52 围龙小子 阅读(216) 评论(0) 推荐(0)
redis 过期键删除策略
摘要:定时删除 定时删除策略对内存是最友好的: 因为它保证过期键会在第一时间被删除, 过期键所消耗的内存会立即被释放。 这种策略的缺点是, 它对 CPU 时间是最不友好的: 因为删除操作可能会占用大量的 CPU 时间 —— 在内存不紧张、但是 CPU 时间非常紧张的时候 (比如说,进行交集计算或排序的时候 阅读全文
posted @ 2020-07-28 18:39 围龙小子 阅读(289) 评论(0) 推荐(0)
redis-数据库 键过期如何删除
摘要:参考:http://origin.redisbook.com/internal/db.html Redis 有四个命令可以设置键的生存时间(可以存活多久)和过期时间(什么时候到期): EXPIRE 以秒为单位设置键的生存时间; PEXPIRE 以毫秒为单位设置键的生存时间; EXPIREAT 以秒为 阅读全文
posted @ 2020-07-28 18:37 围龙小子 阅读(256) 评论(0) 推荐(0)
redis-aof持久化
摘要:AOF 持久化功能的实现可以分为命令追加(append)、文件写入、文件同步(sync)三个步骤。 命令追加 当 AOF 持久化功能处于打开状态时, 服务器在执行完一个写命令之后, 会以协议格式将被执行的写命令追加到服务器状态的 aof_buf 缓冲区的末尾: struct redisServer 阅读全文
posted @ 2020-07-27 13:43 围龙小子 阅读(155) 评论(0) 推荐(0)
redis-数据库
摘要:参考:http://origin.redisbook.com/ edis 服务器的所有数据库都保存在 redisServer.db 数组中, 而数据库的数量则由 redisServer.dbnum 属性保存。 客户端通过修改目标数据库指针, 让它指向 redisServer.db 数组中的不同元素来 阅读全文
posted @ 2020-07-27 13:38 围龙小子 阅读(90) 评论(0) 推荐(0)
redis数据结构-整数集合
摘要:整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。 举个例子, 如果我们创建一个只包含五个元素的集合键, 并且集合中的所有元素都是整数值, 那么这个集合键的底层实现就会是整数集合: red 阅读全文
posted @ 2020-07-27 13:35 围龙小子 阅读(97) 评论(0) 推荐(0)
redis数据结构-跳跃表
摘要:跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。 跳跃表支持平均 O(\log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。 在大部分情况下, 跳跃表的效率可以和平衡树相媲美, 并且因为跳跃 阅读全文
posted @ 2020-07-27 13:29 围龙小子 阅读(155) 评论(0) 推荐(0)
redis数据结构-字典
摘要:字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。 字典在 Redis 中的应用相当广泛, 比如 Redis 的数据库就是使用字典来作为底层实现的, 对数据库的增、删 阅读全文
posted @ 2020-07-24 17:30 围龙小子 阅读(177) 评论(0) 推荐(0)
redis数据结构-链表
摘要:1、每个链表节点使用一个adlist.h/listNode结构来表示:typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } list 阅读全文
posted @ 2020-07-24 17:05 围龙小子 阅读(189) 评论(0) 推荐(0)
redis数据结构-SDS
摘要:参考:http://redisbook.com/preview/sds/different_between_sds_and_c_string.html Redis 只会使用 C 字符串作为字面量, 在大多数情况下, Redis 使用 SDS (Simple Dynamic String,简单动态字符 阅读全文
posted @ 2020-07-24 16:39 围龙小子 阅读(149) 评论(0) 推荐(0)
Redis性能指标监控
摘要:监控指标 性能指标: Performance 内存指标: Memory 基本活动指标:Basic activity 持久性指标: Persistence 错误指标: Error 性能指标:Performance NameDescription latency Redis响应一个请求的时间 insta 阅读全文
posted @ 2020-07-23 16:54 围龙小子 阅读(195) 评论(0) 推荐(0)
语言基础(C++)
摘要:语言基础(C++) (1) 指针和引用的区别 (2) 堆和栈的区别 (3) new和delete是如何实现的,new 与 malloc的异同处 (4) C和C++的区别 (5) C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制) (6) Struct和clas 阅读全文
posted @ 2020-07-22 21:13 围龙小子 阅读(124) 评论(0) 推荐(0)
HTTP面试题
摘要:什么是Http协议 客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。 HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协 阅读全文
posted @ 2020-07-22 20:53 围龙小子 阅读(369) 评论(0) 推荐(0)
inline和宏之间的区别
摘要:inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。 1.为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控 阅读全文
posted @ 2020-07-22 20:35 围龙小子 阅读(193) 评论(0) 推荐(0)