上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 35 下一页
摘要: 一、CAP理论 CAP理论是分布式系统设计中的一个重要原则,它指出对于一个分布式系统,不可能同时满足以下三个特性: 一致性(Consistency):所有节点在同一时刻看到的数据是一致的。 可用性(Availability):每一个请求必须得到响应,哪怕返回的是旧数据 分区容忍性(Partition 阅读全文
posted @ 2024-11-07 23:02 jock_javaEE 阅读(128) 评论(0) 推荐(0)
摘要: 一、缓存击穿 定义:缓存击穿指一个热点Key在缓存中过期失效的瞬间,大量并发请求同时访问该Key,所有请求都穿透到数据库,导致数据库压力瞬间激增 特征: 针对单个热点key 缓存刚好过期时发生 并发请求量大 场景示例 双11秒杀商品的详情页缓存过期 热门新闻/视频的缓存过期 登录态Token集中过期 阅读全文
posted @ 2024-11-07 16:09 jock_javaEE 阅读(95) 评论(0) 推荐(0)
摘要: 一、epoll多路复用 这里重点要说的就是redis的IO编程模型,首先了解下 为什么要有多路复用呢 ? 案例 引用知乎上一个高赞的回答来解释什么是I/O多路复用。假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择: 第一种选择:按顺序逐个检查,先检查A,然后是B 阅读全文
posted @ 2024-11-06 15:03 jock_javaEE 阅读(135) 评论(0) 推荐(0)
摘要: 1、Redis 持久化——混合持久化 RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 AOF 各种的 优点,Redis 4.0 之后新增了混合持久化的方式 在开启混合持久化的情况下,AO 阅读全文
posted @ 2024-11-05 22:08 jock_javaEE 阅读(223) 评论(0) 推荐(0)
摘要: 一、quicklist 在 Redis 3.0 之前,List 对象的底层数据结构是双向链表或者压缩列表。然后在 Redis 3.2 的时候,List 对象的底层改由 quicklist 数据结构实现。 其实 quicklist 就是「双向链表 + 压缩列表」组合,因为一个 quicklist 就是 阅读全文
posted @ 2024-11-05 03:43 jock_javaEE 阅读(239) 评论(0) 推荐(0)
摘要: 一、链表 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的,所以 Redis 自己设计了一个链表数据结构。 链表节点结构设计 先来看看「链表节点」结构的样子: typedef struct listNode { //前置节点 struct listNode * 阅读全文
posted @ 2024-11-05 01:45 jock_javaEE 阅读(89) 评论(0) 推荐(0)
摘要: 一、@Autowired 的实现原理 实现 @Autowired 的关键是:AutowiredAnnotationBeanPostProcessor 在 Bean 的初始化阶段,会通过 Bean 后置处理器来进行一些前置和后置的处理。实现 @Autowired 的功能,也是通过后置处理器来完成的。这 阅读全文
posted @ 2024-11-01 21:06 jock_javaEE 阅读(133) 评论(0) 推荐(0)
摘要: 一、单线程环境下 底层:hash表结构 (数组 + 链表) 使用无参构造创建对象时 会默认长度11的数组 加载因子0.75 Hashtable<Object, Object> hashtable = new Hashtable<>(); 添加第一个元素 hashtable.put("键","值"); 阅读全文
posted @ 2024-10-19 22:21 jock_javaEE 阅读(108) 评论(0) 推荐(0)
摘要: 一、能具体说一下ConcurrentHashmap的实现吗 ? ConcurrentHashmap线程安全在jdk1.7版本是基于分段锁 实现,在jdk1.8是基于CAS+synchronized 实现。 1.7分段锁 从结构上说,1.7版本的ConcurrentHashMap采用分段锁机制,里面包 阅读全文
posted @ 2024-10-19 20:20 jock_javaEE 阅读(60) 评论(0) 推荐(0)
摘要: 一、HashMap的数据结构 数据结构示意图如下: 其中,桶数组是用来存储数据元素,链表是用来解决冲突,红黑树是为了提高查询的效率。 数据元素通过映射关系,也就是散列函数,映射到桶数组对应索引的位置 如果发生冲突,从冲突的位置拉一个链表,插入冲突的元素 如果链表长度>8&数组大小>=64,链表转为红 阅读全文
posted @ 2024-10-19 01:59 jock_javaEE 阅读(51) 评论(0) 推荐(0)
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 35 下一页