自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 压缩表笔记

压缩表的结构zlbytes 表示整个压缩表占用的内存字节大小zltail 指向压缩列表的尾节点的指针zllen 压缩列表的节点数量entryX 压缩列表的节点们zlend 压缩列表末端的标记(压缩列表是由特殊编码的连续内存块顺序组成的)压缩表节点的结构如下previous_entry_length 表示前一个节点的字节长度encoding 表示当前节点数据的编码以及数据类型和长度content 表示存储的内容注意:如果前一个节点的字节长度小于254..

2023-03-07 15:59:22 123

原创 跳跃表笔记

在redis中,有序集合zset使用了跳跃表,此外,集群节点中的内部数据结构也使用到了跳跃表跳跃表支持最快O(logN),最慢O(N)的查询时间复杂度

2023-03-07 15:41:31 81

原创 字典-键值对

哈希表节点的结构key 键value 值 值可以为一个指针,也可以是一个uint-64的整数,或者是一个int-64的整数。next是指向下一个哈希节点的指针,发生键冲突的时候,采用链地址法来解决冲突,类似于Java中的hashMap。哈希表的结构table是一个哈希节点组成的数组size为数组的大小sizemask是数组的最大索引值used为数组中已有数据节点的数量以下是一个哈希表的结构redis中字典的结构字典类型dictType和..

2023-03-06 18:08:28 704

原创 sds笔记

结构free // 空余空间len //已使用空间char buf[] //数据buf[] 数组中,存放的数据会在最后以空字符结尾free len都不计算数据中的最后一个空字符,这是redis为了使用c的一些api而保留的c的风格记录free和len一方面可以很快的返回len,不必每次都遍历数组长度,减少strlen这类api的时间复杂度。其次,还可以在对字符串进行写操作时,通过判断free和len来确认扩缩容,防止内存泄漏和内存溢出。再者,扩缩容时,会根据总大...

2023-03-06 16:02:07 93

原创 一、分布式数据库

分布式数据库集中式数据库多个node,多分片单节点,单存储能承担更高的访问压力性能瓶颈离用户最近的node获取数据数据传输可能需要更长时间高可用单点问题必须进行数据同步数据管理简单分布式数据的核心:数据分片数据同步数据分片:水平分片:按行对数据进行分割,分散到不同的节点,表结构一致垂直分片:按列对数据进行分割,把一个表结构拆分成多个小表数据同步:它是分布式数据库的底线,数据的一致性需要靠同步来保证。集中式数据库到分布式数据库...

2021-02-02 21:25:38 246

原创 redis内存回收及共享笔记

redis采用的是引用计数的方式来标记对象的引用状态,当被创建时,refcount被初始化为1,当对象被一个新程序引用时,refcount增加一,当不再被一个程序引用时就减少一,当refcount=0时,则对象占用过的内存会被释放,对象的生命周期包含三个阶段,创建对象,操作对象,释放对象;之所以说被一个新程序引用时,是因为redis中对象是可以共享的,如果一个程序A已经创建了对象a,那么如果有新的程序B要创建一个一样的对象a,则会让B的键的值指针指向a,从而达到共享内存,节约空间的作用,此时a的refc.

2021-01-24 13:44:12 216

原创 MYSQL缓存池笔记整理

**mysql的INNODB引擎是基于磁盘存储的,管理方式也是按照页管理的,表空间结构大概如下:如果所有的请求都需要磁盘IO的话,那无疑是很耗时的,所以在中间就有一层缓存来进行缓冲,mysql的缓存池就是这个缓冲的角色,通过缓存池可以弥补部分cpu和磁盘的速度差距。读操作如果数据是首次读,那么按页读取后会将磁盘读出来页的数据存到缓存池,这样如果下次获取相同的页时,就不会区磁盘读取,而直接返回缓存池中的数据页。写操作要写数据肯定需要先获取数据,那么首先会读,然后,对要写的数据并不会直接被写入到磁盘,

2021-01-23 20:00:42 160

原创 spring循环依赖

spring中依赖注入的方式set注入构造器注入工厂注入循环依赖主要发生在bean生命周期中的这个部分构造注入产生的循环依赖发生在实例化阶段,这个spring并不能解决这个问- 题。set注入则发生在populateBean阶段。spring 并不能解决所有场景的循环依赖,解决场景主要如下图为了解决循环依赖,它引入了三级缓存的方式,三级缓存主要是这三级:private final Map<String, Object> singletonObjects = new

2021-01-23 15:46:22 269

原创 redis对象编码笔记

redis通过encoding属性来设定对象使用的编码,而不是特定的指定某一个类型的对象固定一个编码,可以提高redis的灵活性和效率。1、字符串对象字符串对象有int,raw,embstr三种编码,编码会根据字符串类型和长度来改变,且可以配置这个长度如果是整数值,则用long类型,使用int编码如果是字符串值,且长度大于32个字节,则使用raw编码如果是字符串值,且长度小于等于32个字节时,使用embstr编码二、列表对象列表对象有zipList和linkedList两种编码,当列表.

2021-01-21 19:05:53 135

原创 mysql的join分析与优化

CREATE TABLE `t1` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE `t2` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL,...

2020-09-12 11:21:15 96

原创 sharding-jdbc+seata实现分库分表,多数据源整合和seata分布式事务

sharding-jdbc+seata实现分库分表和分布式事务sharding-jdbc 的相关理论&使用文档参考官网(https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/)seata 的相关理论&使用文档参考官网(https://github.com/seata/seata)sharding-jdbc可以理解为增强版的驱动,用户可以通过对图中..

2020-09-01 16:25:53 5813 1

原创 sharding-proxy + sharding-scaling实现不停服分库分表数据迁移

sharding-proxy + sharding-scaling实现不停服数据迁移sharding-proxy 的相关理论&使用文档参考官网(https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-proxy/)sharding-proxy 的相关理论&使用文档参考官网(https://shardingsphere.apache.org/document/legacy/4.x

2020-08-30 12:04:31 3394 3

原创 select count(*) 数据量大时,怎么解决他的慢?

我们都知道在不同的 MySQL 引擎中,count(*) 有不同的实现方式:MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高;而 InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。数据量大了以后,innodb的方式自然就很慢,那么innodb自身是如何优化的呢?因为innodb的B+索引存放数据的方式,所以只要从最小的索引树去取数据计算,就好了,在保证逻辑正确的前.

2020-08-16 10:09:46 4952

原创 普通聚合项目,采用水平分层结构,构建与打包

ideafile->new->project选择spring initalizr 然后确认下jdk版本后,直接next编写group,artifact信息,别的不需要动,注意,最下方的pakage和group一致即可,不需要加上artifact然后一路next然后编辑一下setting的mvn和jdk'的版本,然后删除当前项目的一些东西,项目文件夹里只剩下.idea,.gitignor,demo.iml,pom.xml即可然后右键项目,new->module,选

2020-08-16 10:04:31 294

原创 zookeeper+schedule实现分布式定时任务

zookeeper+schedule实现分布式定时任务下载zk创建一个springboot项目源码地址 [zk-task](https://github.com/yangzhouhu/zk_task)下载zk官网下载地址:https://zookeeper.apache.org/我这里下载的是3.4.10下载解压后在在1路径下将2复制一份并重命名为3,然后编辑3添加dataDir和dat...

2019-09-19 22:21:31 2724

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除