在开发过程中,通常会有一个接口被很多个上游调用或者Request里面有一个消息类型,我们需要根据具体的消息类型去做对应的处理,传统的做法是通过if-else去判断消息的类型,...

在开发过程中,通常会有一个接口被很多个上游调用或者Request里面有一个消息类型,我们需要根据具体的消息类型去做对应的处理,传统的做法是通过if-else去判断消息的类型,...
1、创建实体类,实体类上加上版本号字段,同时加上@version注解 2、数据库加上对应的版本号字段 3、mybatis-plus加上乐观锁配置信息 4、单测测试先读再修改,...
1、引入对应的依赖 2、添加缓存相关的常量(缓存名称、缓存过期时间、缓存大小) 3、定义枚举,多个缓存的话直接遍历枚举 4、使用
1、创建项目 引入对应的依赖 2、配置数据库和Mapper映射 application.yml 在启动类上面加上MapperScan注解 3、写对应的Mapper接口 (注解...
package time; import java.time.*;import java.time.format.DateTimeFormatter; public clas...
首先众所周知,InnoDB 三种行锁: Record Lock(记录锁):锁住某一行记录Gap Lock(间隙锁):锁住一段左开右开的区间Next-key Lock(临键锁)...
原因 在以前的物理内存中,多个进程共享物理内存,所以要对每个进程进行分配,因此每个进程的可用物理内存就比较小,并且可能会相互影响。有了虚拟内存之后1、每个进程有了不依赖物理内...
具体的池子 自旋锁:对worker进行操作时需要上锁,因为切片不是线程安全的 具体的worker实现 worker接口 队列类型的worker
grep操作: **与操作: ** grep pattern1 files| grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。 或...
mongo的or、sort、limit
并发买票 1、初始化 redis中设置总票数和0订单数2、本地初始化 根据评估,本地初始化票数,只能是本地有票的情况下才去redis中访问,两个地方同时有票才可以买票成功,否...
DMA技术 传统的文件传输过程1、read调用 从用户态切换到内核态2、CPU发起IO请求,然后返回,磁盘控制器将数据放入磁盘控制缓冲区,然后发起IO中断信号3、将数据从磁盘...
CPU Cache 通常分为三级缓存:L1 Cache、L2 Cache、L3 Cache,级别越低的离 CPU 核心越近,访问速度也快,但是存储容量相对就会越小。其中,在多...
用循环队列的方式
MGET源码 整个mget操作其实分为了以下几步: 1、 获取分区slot和key的映射关系,遍历出所需key对应的每个分区slot。 2、 判定,slot个数是不是小于2,...
内存分配的过程 1、分配的内存实际上说虚拟地址,而不是物理地址,这个地址只是分配,还没有映射,需要用到的时候再进行映射2、需要进行读写的时候,发现没有映射就会触发缺页中断,如...
Linux内存分布 如32位系统,下面的3G是用户空间,上面的1G是内核空间,每个虚拟内存中的内核地址,其实关联的都是相同的物理内存Linux中内存分布,从地位到高位分别是程...
上下文切换的时候,CPU的开销都具体有哪些呢?开销分成两种,一种是直接开销、一种是间接开销。直接开销就是在切换时,cpu必须做的事情,包括:1、切换页表全局目录2、切换内核态...