Espada

酸萝卜 ♂ 别吃

Redis 笔记六

Q:什么是内存碎片 我们可以把这些分散的空座位叫作“车厢座位碎片”,知道了这一点,操作系统的内存碎片就很容易理解了。虽然操作系统的剩余内存空间总量足够,但是应用申请的是一块连续地址空间的 N 字节,但在剩余的内存空间中,没有大小为 N 字节的连续空间了,那么,这些剩余空间就是内存碎片(比如上...

Redis 笔记五

Q:如何应对变慢的Redis(总结) 个人总结版本 AOF 重写问题,比如设置了 everysec ,上一次还妹写完,下一次又来了 发生了 swap 内存交换 查看基线性能 查看延迟的绝对值 是否有慢查询 是否会出现同一时刻大批量 kv 的过期 是否存在 bigkey 是否存在透明大页 是...

Redis 笔记四

Q:异步机制Redis 实例有哪些阻塞点?Redis 实例在运行时,要和许多对象进行交互,这些不同的交互就会涉及不同的操作,下面我们来看看和 Redis 实例交互的对象,以及交互时会发生的操作。 0. 客户端:网络 IO,键值对增删改查操作,数据库操作; 0. 磁盘:生成 RDB 快照,记录 ...

Redis 笔记三

Q:万金油的 String 不一定好用场景: 开发一个图片存储系统,要求这个系统能快速地记录图片 ID 和图片在存储系统中保存时的 ID(可以直接叫作图片存储对象 ID)。同时,还要能够根据图片 ID 快速查找到图片存储对象 ID。 用 10 位数来表示图片 ID 和图片存储对象 ID,例如,...

Redis 笔记二

Q:什么是主从模式那我们总说的 Redis 具有高可靠性,又是什么意思呢? 其实,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是增加副本冗余量,将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一段时间才...

Redis 笔记一

Q:Redis 变慢的原因一 类似 Java GC S0/S1 的复制算法 这里存在一个问题,哈希冲突链上的元素只能通过指针逐一查找再操作。如果哈希表里写入的数据越来越多,哈希冲突可能也会越来越多,这就会导致某些哈希冲突链过长,进而导致这个链上的元素查找耗时长,效率降低。对于...

大容量数组随机读写的效率问题

CPU 高速缓存支棱不起来

背景昨天在刷 AcWing 每日一题的第 3732 题「矩阵复原」时,发现在大容量数组作为缓存时提交无限 TLE,但是该用 HashMap 就 ac 了。 在我浅薄的知识勺中,一直认为数组的下标作为 key 随机访问其下标的元素数据时是要快于一些集合的,HashMap 有着复杂的数据结构,底层...

LeetCode 第 243 场周赛

#1882 Process Tasks Using Servers

Problem Description 给你两个下标从 0 开始的整数数组 servers 和 tasks ,长度分别为 n 和 m 。servers[i] 是第 i 台服务器的权重 ,而 tasks[j] 是处理第 j 项任务所需要的时间(单位:秒)。 你正在运行一个仿真系统,在处理完所有...

位运算算法题小技巧

学了忘,忘了学

位运算位运算的效率就不说了,每次学会一些小技巧就忘了,还是基础不够扎实吧。。 计算某个 int 值的第 i 位(二进制位)是什么,可以用 num >> i; 有符号右移,不要在用 Integer 的 API 了 0 与 1 的转换(仅存在 1 与 0),num = 1 - num...

分布式事务与 Seata 初探

分布式事务布式事务的实现有很多种,最具有代表性的是由Oracle Tuxedo系统提出的XA分布式事务协议。 XA协议包含两阶段提交(2PC)和三阶段提交(3PC)两种实现。 当然该协议主要是一种理论方式,具体落地有相应的组件(Seata等)或者代码中自行实现。 二段式提交 当队员收到就位确认...