Redis原理篇——数据结构
一.动态字符串SDS我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串集合。可见字符串时Redis中最常用的一种数据结构。不过Redis没有直接使用c语言中的字符串,因为c语言字符串存在很多问题:SDS之所以叫做动态字符串,是因为它具备动态扩容的能力,例如一个内容为“hi”的SDS:加入我们要给SDS追加一段字符串“,Amy”,这里首先会申请新内存空间:IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变,有序等特征。结构如下:为了
Redis数据结构——五种数据类型
String是Redis中常见的数据存储类型:Redis的List类型可以从首、尾操作列表中的元素:哪一个数据结构能满足上述特征?Redis的List结构类似一个双端链表,可以从首、尾操作列表中的元素:Set是Redis中的单例集合,满足下列特点:可以看出当插入一个非整数值的时候,编码就会由IntSet转换为HT格式底层源码:Zset也就是SortedSet,其中每一个元素都需要指定一个score值和member值:Hash结构与Redis中的Zset非常类似:两者的区别在于是否需要排序,因
Redis分布式锁——秒杀超卖
分布式锁应用场景秒杀环境下:订单服务从库存中心拿到库存数,如果库存总数大于0,则进行库存扣减,并创建订单订单服务负责创建订单库存服务负责扣减库存模拟用户访问库存多线程并发访问,出现超卖问题,线程不安全。没有保证原子性单体锁的分类单体应用锁指的是只能在 一个JVM 进程内有效的锁。我们把这种锁叫做单体应用锁分布式锁核心逻辑分布式锁的核心逻辑就是在多个服务中设置一个公共的资源,在公共资源中设置锁,供多个服务去同时抢夺锁资源,一旦其中一个线程抢夺成功,其他线程就进入自旋状态,不同的尝试访问获
操作系统——内存管理(非连续)
一、分页存储管理的基本概念将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个页框或页帧或内存块或物理块。每个页框有一个编号,即页框号或内存块号或页帧号或物理块号,从0开始。将用户进程的地址空间也分为与页框大小相等的一个个区域,称为页或页面。每个页面也有一个编号,即页号,页号也是从0开始。注意:页框不能太大,否则可能产生过大的内部碎片操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。各个页面不必连续存放
Mysql——索引的创建与设计原则
1.索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。①普通索引在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数据类型中,其值是否唯一和非空,要由字段本身的完整性约束条件决定。建立索引以后,可以通过索引进行查询。例如,在表student的字段name上建立一个普通索引,查询记录时就可以根据该索引进行查询。②唯一性索引使用UNIQUE参数可以设置索引为唯一性索引,在创建唯一性索引时,限制该索引的值必须是唯一的,但允许有空值。
MySQL——分析查询语句:EXPLAIN
定位了查询慢的SQL之后,我们就可以使用EXPLAIN或 DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MysQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的这部分最耗费时间)。这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具
Mysql——ER模型
刚刚的ER模型展示了电商业务的框架,但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之间的关系,还不能对应到具体的表,以及表与表之间的关联。太过庞大且复杂,所以我们做了业务简化,比如针对SKU(StockKeepingUnit,库存量单位)和SPU(StandardProductUnit,标准化产品单元)的含义上,我们直接使用了SKU,并没有提及SPU的概念。比如说,我们新建一个班级表,而每个班级都有多个学生,每个学生则对应一个班级,班级对学生就是一对多的关系。...
找工作 4 个月, 面试 15 家,拿到 3 个 offer
最后祝愿你也能顺利拿下大厂offer,共勉!httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。
MySQL——多版本并发控制(MVCC)
MVCC(MultiversionConcurrencyControl),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读.操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。这里介绍了MVCC在。...
今日推荐
周排行