一个键盘码代码,两只黄鹂名翠柳

MySQL的事务隔离级别及MVCC机制

MySQL实现了四种隔离级别,分别是读未提交(RU)、读已提交(RC)、可重复读(RR)和串行化读(SERIALIZABLE)。读未提交(RU):不管其他事务是否提交更新都可以实时看到最新数据,隔离级别最低,脏读的问题没有解决,更别说可重复读和幻读了。读已提交(RC):只可以看到其他事务已经提交事务后的更新,解决了脏读的问题,但没有解决可重复读和幻读。可重复读(RR):在事务中的任何时间点看查询到的数据都是一样的,解决了脏读和可重复读的问题,但没有解决幻读的问题。串行化读(SERIALIZABLE)所有数据库请求都只用一个线程执行,不管读写并发的事情,所以在这个隔离级别下隔离效果最好,性能最差。相关概念解析脏读:同时两个事务A和B,  A修改了记录1 ,同时B读取了记录1,此时A记录回滚,那么B读到的就是一条未提交的脏数据,RU级别就会出现 查看全文

redis整数集合数据结构源码解析

整数集合是集合键的底层实现之一,当一个集合只包含整数时,redis会使用整数集合作为集合的底层实现,整数集合类型会尽可能的节约内存空间,只有新插入的数据大于encoding时,才会升级集合类型。数据结构整数集合的定义包含三个部分,encoding表示集合元素的数据类型,length表示集合包含多少元素,contents存储集合成员的一段连续的地址空间。1、整数集合typedef struct intset {     // 集合的编码,可以为16 32 64位的整数类型     uint32_t encoding;     // 集合长度  & 查看全文

redis跳跃表数据结构源码解析

跳跃表,是一种有序的数据结构,可以在一个节点中维护多个执行其他节点的指针,从而快速访问其他节点。大多数情况下跳跃表的效率可以跟平衡树相媲美,并且跳跃表的实现相对简单,redis使用跳跃表做有序集合的底层实现。数据结构redis的跳跃表包含头尾指针、跳跃表的长度以及维护的跳跃表中的最大层数。跳跃表的接点由key、score、前驱节点以及多个后继节点的指针组成。1、跳跃表typedef struct zskiplist {     // 头节点和尾节点     struct zskiplistNode *header, *tail;     // 跳跃表的长 查看全文

redis字典数据结构源码解析

字典,又称关联数组或者映射,是用于保存键值对的数据结构,字典中的每一个key都是唯一的。通常用作hash类型和string类型的数据存储结构。数据结构redis的字典是由两张hash表组成的,以用户字典的扩容,hash表的基本数据类型是hash表节点。具体定义如下。1、字典typedef struct dict {     dictType *type;     // 保存了type中需要用的私有数据     void *privdata;     // ht[0]用来正常访问,ht[1]用来rehashing   查看全文

redis链表数据结构及源码解析

链表在redis中使用非常频繁,常用的list数据就是使用链表数据结构,除此之外,还有发布与订阅、监视器也用到了链表。数据结构redis的链表由多个链表节点组成,每个链表节点分别保存了前驱和后继节点,形成了一个双向链表。最终的链表会包含一个头节点、尾节点以及链表长度。具体定义如下。1、链表节点typedef struct listNode {     // 前驱节点     struct listNode *prev;     // 后继节点     struct listNode *next; &nbs 查看全文

redis字符串——sds源码解析

redis没有直接使用C语言传统的字符串(以空字符结尾的字符串数组),而是自己构建了一种为简单动态字符串(simple dynamic strring, SDS), 并将SDS作为redis默认的字符串表示。数据结构redis定义的SDS由协议头和字符串组成,根据字符串的长度分为五种不同类型的字符串,不同长度的字符串分别使用不用的类型。header组成header = len  + alloc  + flag + bufheader释义len字符串的长度alloc字符串实际占用的存储空间(不包含header和null)flag字符串类型, sdshdr5 ... sdshdr64buf字符串指针SDS类型类型字符串长度备注sdshdr50 - 31空字符串使用sdshdr8表示sdshdr832 - 255sdshdr1 查看全文

safari支持使用IE模式

mac中safari如何开启IE模式?1、打开偏好设置->高级->勾选在菜单栏中显示开发按钮。2、点击菜单栏打开->用户代理->其他,把下面的UA随便选一个放进去即可。Internet Explorer 8, Windows XP, Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) Internet Explorer 8, Windows Vista, Mozilla/4.0 (compatible; MSIE 7.0; Windows&nbs 查看全文

nginx支持http2

http2特点二进制分帧(Binary Format)- http2.0的基石多路复用 (Multiplexing) / 连接共享头部压缩(Header Compression)请求优先级(Request Priorities)服务端推送(Server Push)nginx如何升级http2.0协议nginx服务器升级http2.0协议需要满足如下条件:1、nginx版本高于1.9.5;2、编译的版本需要加载 ssl模块和 http2模块。http2协议也基于ssl/tls协议。重新编译命令如下./configure --prefix=/usr/local/nginx  --with-http_ssl_module  --with-http_v2_module3、nginx.conf文件修改listen&nbs 查看全文
加载更多
php ( 6 )
index ( 5 )
redis ( 5 )
源码 ( 5 )
ssl ( 4 )
数据结构 ( 4 )
awk ( 3 )
http ( 3 )
hql ( 3 )
字体 ( 3 )
https ( 3 )
测试 ( 2 )
php:// ( 2 )
chrome ( 2 )
firefox ( 2 )
selenium ( 1 )
字典 ( 1 )