上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 32 下一页
摘要: 一、epoll多路复用 这里重点要说的就是redis的IO编程模型,首先了解下 为什么要有多路复用呢 ? 案例 引用知乎上一个高赞的回答来解释什么是I/O多路复用。假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择: 第一种选择:按顺序逐个检查,先检查A,然后是B 阅读全文
posted @ 2024-11-06 15:03 jock_javaEE 阅读(87) 评论(0) 推荐(0)
摘要: 1、Redis 持久化——混合持久化 RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 AOF 各种的 优点,Redis 4.0 之后新增了混合持久化的方式 在开启混合持久化的情况下,AO 阅读全文
posted @ 2024-11-05 22:08 jock_javaEE 阅读(126) 评论(0) 推荐(0)
摘要: 一、quicklist 在 Redis 3.0 之前,List 对象的底层数据结构是双向链表或者压缩列表。然后在 Redis 3.2 的时候,List 对象的底层改由 quicklist 数据结构实现。 其实 quicklist 就是「双向链表 + 压缩列表」组合,因为一个 quicklist 就是 阅读全文
posted @ 2024-11-05 03:43 jock_javaEE 阅读(127) 评论(0) 推荐(0)
摘要: 一、链表 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的,所以 Redis 自己设计了一个链表数据结构。 链表节点结构设计 先来看看「链表节点」结构的样子: typedef struct listNode { //前置节点 struct listNode * 阅读全文
posted @ 2024-11-05 01:45 jock_javaEE 阅读(48) 评论(0) 推荐(0)
摘要: 一、@Autowired 的实现原理 实现 @Autowired 的关键是:AutowiredAnnotationBeanPostProcessor 在 Bean 的初始化阶段,会通过 Bean 后置处理器来进行一些前置和后置的处理。实现 @Autowired 的功能,也是通过后置处理器来完成的。这 阅读全文
posted @ 2024-11-01 21:06 jock_javaEE 阅读(119) 评论(0) 推荐(0)
摘要: 一、单线程环境下 底层:hash表结构 (数组 + 链表) 使用无参构造创建对象时 会默认长度11的数组 加载因子0.75 Hashtable<Object, Object> hashtable = new Hashtable<>(); 添加第一个元素 hashtable.put("键","值"); 阅读全文
posted @ 2024-10-19 22:21 jock_javaEE 阅读(52) 评论(0) 推荐(0)
摘要: 一、能具体说一下ConcurrentHashmap的实现吗 ? ConcurrentHashmap线程安全在jdk1.7版本是基于分段锁 实现,在jdk1.8是基于CAS+synchronized 实现。 1.7分段锁 从结构上说,1.7版本的ConcurrentHashMap采用分段锁机制,里面包 阅读全文
posted @ 2024-10-19 20:20 jock_javaEE 阅读(16) 评论(0) 推荐(0)
摘要: 一、HashMap的数据结构 数据结构示意图如下: 其中,桶数组是用来存储数据元素,链表是用来解决冲突,红黑树是为了提高查询的效率。 数据元素通过映射关系,也就是散列函数,映射到桶数组对应索引的位置 如果发生冲突,从冲突的位置拉一个链表,插入冲突的元素 如果链表长度>8&数组大小>=64,链表转为红 阅读全文
posted @ 2024-10-19 01:59 jock_javaEE 阅读(20) 评论(0) 推荐(0)
摘要: 一、简介 在多线程编程中,相信很多小伙伴都遇到过并发修改异常ConcurrentModificationException,本篇文章我们就来讲解并发修改异常的现象以及分析一下它是如何产生的。 异常产生原因:并发修改异常指的是在并发环境下,当方法检测到对象的并发修改,但不允许这种修改时,抛出该异常。 阅读全文
posted @ 2024-10-17 22:35 jock_javaEE 阅读(149) 评论(0) 推荐(0)
摘要: 一、RPC原理 在上述图中,通过1-10的步骤图解的形式,说明了RPC每一步的调用过程。具体描述为: 1、客户端想要发起一个远程过程调用 2、客户端Stub程序【客户端代理对象】接收到了客户端的功能调用请求,将客户端请求调用的方法名,携带的参数等信息做序列化操作,并打包成数据包。 3、调用Socke 阅读全文
posted @ 2024-10-09 17:33 jock_javaEE 阅读(112) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 32 下一页