自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Redis八股文目录

Redis缓存穿透-CSDN博客Redis缓存击穿-CSDN博客Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)-CSDN博客Redis双写一致性-CSDN博客Redis持久化-CSDN博客Redis数据过期、淘汰策略-CSDN博客分布式锁(Redission)-CSDN博客

2024-06-22 21:14:34 380

原创 分布式锁(Redission)

(比如在8080的线程1获取完库存后,8081的线程1也进行了获取,此时8080的线程1对内存进行了扣除,按理来说已经没有库存了,但是8081的线程1获取的时候还是有的,还会继续扣除,这样就会出现问题)在某个线程加锁的同时,会生成一个新的线程来启动watch dog监控,如果加锁线程没有结束watch dog会每隔(releaseTime/3)的时间做一次续期(releaseTime默认30s),如果线程结束了,我们可以发送释放锁的指令来停止watch dog续期锁。那么分布式锁怎么使用呢?

2024-06-22 14:34:41 632

原创 Redis数据过期、淘汰策略

每隔一段时间,我们就对一些key进行检查,删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查,并删除其中的过期key)。设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。这种方式对cpu友好(只在用的时候判断要不要删除不用一直判断),对内存不友好(过期的key一直存在内存中)两种LRU淘汰:全体keyLRU淘汰、设置了存活时间的keyLRU淘汰。两种随机淘汰:全体key随机淘汰、设置了存活时间的key随机淘汰。

2024-06-21 23:41:11 205

原创 Redis持久化

当主进程执行读操作的时候一切照常,但是一旦主进程要进行写操作,主进程就要把自己需要操作的数据(数据B)拷贝一份再进行写操作,并且在子进程完成任务之前,主进程想要对数据B进行读操作,就只会读自己复制出来的数据副本,而不会去读原本的数据B。简单来说就是把内存中的所有数据都记录到磁盘中。生成RDB的方式有两种,一种是执行命令save(使用主进程生成RDB,这种方式会造成拥堵),另一种是bgsave(使用子进程生成RDB,一般使用这种方式),下面我们来讲一下使用bgsave生成RDB的流程和RDB的执行原理。

2024-06-21 18:55:33 416

原创 Redis双写一致性

我们这里讨论一种特殊情况,就是缓存中的数据过期了,此时 线程1 去查缓存查不到,就会去访问数据库(此时数据库是旧数据),突然 线程2 横插一脚,它来执行了一个更新数据库的操作,把数据库的数据更新为了新数据,并去删除缓存(虽然缓存中没有数据,不过不影响),线程2 执行完毕后 线程1 继续执行,把它访问数据库(旧数据)的数据更新到缓存中,这样就出现了缓存是旧数据而数据库是新数据的情况。两种异步通知的方法当然都是存在短暂的延迟的,不能保证强一致性,都是最终数据都会变成一致的,我们可以按需选择自己的方法。

2024-06-20 20:01:16 537

原创 Redis缓存雪崩(主从复制、哨兵模式(脑裂)、分片集群)

主节点发送repl_baklog中的命令(这里就用到刚刚说的重要的变量offest,在第一次同步时,步骤4发送了第一次offest,此后步骤10只需要根据offest,就可以判断需要发送哪些数据,比如说第一次步骤4发送的offest为5,而在子节点生成数据期间,repl_baklog记录的数据为7条,此时主节点的offest就变成了 5+7=12,那么主节点就会发送 12-5=7 条最新的命令给子节点以完成同步)最后是根据slave节点的运行id,每个slave节点在运行时都有一个id,越小优先级越高。

2024-06-20 14:04:53 1387

原创 Redis缓存击穿

图片来源于黑马课程

2024-06-19 23:58:21 243

原创 Redis缓存穿透

误判:如下图,id为1的数据将下标为1、3、7的数组数据改为了1,id为2的数据将下标为9、12、14的数组数据改为了1,这时候我们查询id为3的数据,通过三个哈希函数计算出的三个哈希值为3、9、12,数组中明明没有存过这个数据,但是这几个哈希值对应的下标在数组中数据为1,过滤器机会误判数组中存在这个数据。* 原因就是fpp越小,占用的空间越大,同时使用的哈希函数越多,出现重复的可能性越小。* fpp:期望的误判率,期望的误判率越低,布隆过滤器计算时间越长。

2024-06-19 21:21:58 897

原创 关于MybatisX无法生成实体类的问题

前些天在更新了最新版本的MybatisX后猛然发现好像不能生成实体类了,在网上苦苦寻找解决方法后发现要下载回之前的版本(1.5.4),安装完成后发现确实可以生成实体类了,但是idea又总是报MybatisX的错误,忍无可忍最后下回了最新版本(1.6.3)。研究一晚上后发现,其实只要勾选了这个Model就可以生成实体类了。我看网上好像没有这种方法,特地拿出来分享。

2024-06-15 22:40:07 248 1

原创 LeetCode 907:子数组的最小值之和

不求每日一题,但求懂每一题。

2023-11-28 00:04:04 423

原创 从0开始的Ubuntu分布式配置(林子雨)

本文依照厦门大学林子雨老师的大数据教程进行安装和配置,完善了一些细节和解决了一些可能出现的错误。教程网址如下https://dblab.xmu.edu.cn/blog/4189/

2023-09-28 22:35:05 551 1

原创 链表(LinkList)的构造及其相关操作

数据结构:链表

2022-10-16 20:24:06 4227

原创 C语言位操作符

C语言位操作符

2022-09-03 19:02:07 1512

原创 C语言扫雷

扫雷

2022-08-29 19:54:47 920

原创 C语言三子棋(九宫棋)游戏

C语言三子棋(九宫棋)游戏

2022-08-16 20:39:37 1331 1

原创 C语言青蛙跳台阶问题(斐波那契数列)

C语言青蛙跳台阶问题(斐波那契数列)

2022-08-09 18:54:56 824

原创 C语言汉诺塔

C语言汉诺塔

2022-08-09 18:17:56 328

原创 C语言使用函数交换两个数的值

C语言用函数交换两个数的值

2022-07-30 19:10:34 9547 6

原创 C语言冒泡法

C语言冒泡法

2022-07-25 22:28:24 12425

原创 关于C语言中数组输入与打印

关于C语言中数组输入与打印

2022-07-24 20:47:40 5138

原创 猜数字游戏(C语言生成随机数)

猜数字游戏(C语言生成随机数)

2022-07-18 20:03:38 2179

原创 C语言中二分法的简单理解

C语言中二分法的简单理解

2022-07-16 22:39:58 2177

原创 C语言中按位取反(~)操作符

C语言中按位取反(~)操作符

2022-07-08 20:51:49 11209

原创 C语言中枚举类型enum

C语言中枚举类型enum的简单理解

2022-07-05 22:19:13 1267 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除