摘要: 单线程:指redis网络IO和键值对读写。Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 采用单线程原因 多线程会有共享资源竞争带来的额外开销,如锁。为了避免竞争,采用了单线程。 redis快的原因 内存 内存操作比磁盘快 数据结构 高效的数据结构,参考Re 阅读全文
posted @ 2023-03-13 17:10 kiper 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 目录1. 全局锁1.1 使用场景1.2 readonly和FTWRL区别2. 表级锁2.1 表级锁类型2.1.1 表锁2.1.2 元数据锁(MDL)2.1.3 意向锁2.1.4 自增锁2.2 如何安全地给表新增字段2.2.1 新增字段阻塞场景2.2.2 新增字段安全方案2.2.2.1 方案2.2.2 阅读全文
posted @ 2023-03-13 09:51 kiper 阅读(96) 评论(0) 推荐(1) 编辑
摘要: |题目|难度|要点| | | | | |区域和检索 - 数组不可变|●|构造前缀和数组,避免每次O(n)遍历统计区间和| |二维区域和检索 - 矩阵不可变|●|矩阵前缀和,并通过矩阵加减拼凑目标矩阵| 区域和检索 - 数组不可变 class NumArray { private int[] preS 阅读全文
posted @ 2023-03-11 21:43 kiper 阅读(11) 评论(0) 推荐(0) 编辑
摘要: |题目|难度|要点| | | | | |删除有序数组中的重复项|●|快指针与慢指针值不同,那么应该将值放在慢指针下一位| |移除元素|●|快指针对应值若不需移除,那么应该将值放在当前慢指针| |最长回文子串|●|以当前位置或者当前位置及相邻位置扩散寻找回文子串 删除有序数组中的重复项 class S 阅读全文
posted @ 2023-03-11 20:26 kiper 阅读(12) 评论(0) 推荐(0) 编辑
摘要: Java内存模型 并发场景下,可见性/原子性/有序性是并发编程Bug源头,而Java内存模型解决了可见性和有序性问题。 Java内存模型定义 可见性问题原因是缓存,有序性问题原因是编译优化。为了兼顾程序性能和功能正常,按需禁用缓存以及编译优化。而按需,则是按照开发者代码完成。 Java 内存模型是个 阅读全文
posted @ 2023-03-11 16:44 kiper 阅读(68) 评论(0) 推荐(1) 编辑
摘要: 5种类型操作 string 类型|命令|作用 -|-|- string|| |set key val|设置键值对 |set key val nx ex timeout|设置键值对,nx代表不存在则设置,ex表示过期时间设置 |del key|删除键值对 |get key|获取值 |mset key1 阅读全文
posted @ 2023-03-11 16:28 kiper 阅读(63) 评论(0) 推荐(0) 编辑
摘要: redis快的原因 内存操作 优秀的数据结构 redis数据类型和底层数据结构 底层数据结构 简单动态字符串 双向链表 压缩列表 哈希表 跳表 整数数组 数据类型和底层数据结构映射关系 键和值的组织结构 全局哈希表:保存了所有键值对的映射关系 一个哈希表,其实就是一个数组,数组每个元素称为一个哈希桶 阅读全文
posted @ 2023-03-11 16:23 kiper 阅读(189) 评论(0) 推荐(1) 编辑
摘要: noip http://wiki.noip.space/basic/ 阅读全文
posted @ 2023-03-09 14:53 kiper 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 目录背景核心矛盾解决思路异常根源cpu缓存导致的可见性问题线程切换带来的原子性问题编译优化带来的有序性问题 背景 核心矛盾 CPU/内存/IO设备的速度差异 解决思路 计算机体系结构——CPU 增加了缓存,以均衡与内存的速度差异 操作系统——操作系统增加了进程、线程,以分时复用 CPU,进而均衡 C 阅读全文
posted @ 2023-03-08 19:44 kiper 阅读(17) 评论(0) 推荐(1) 编辑
摘要: C++11 阅读全文
posted @ 2023-03-02 23:41 kiper 阅读(8) 评论(0) 推荐(0) 编辑