自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缓存击穿、缓存穿透、缓存雪崩

缓存击穿指的是某个热点数据在缓存中过期后,短时间内大量并发请求直接到数据库,导致数据库压力剧增。典型场景是对于一个设置了过期时间的热点key,当缓存失效的瞬间,大量请求恰好并发,所有请求都无法从缓存中获取到数据,只能去查询数据库,直接作用在数据库上。缓存雪崩指缓存集群大面积失效或宕机,所有请求被迫直接访问数据库,导致数据库压力过大,服务可能崩溃。缓存穿透指的是查询的数据根本不存在与数据库中,因此也不会存在于缓存中。恶意攻击或者大量不存在的请求反复查询缓存和数据库,使得数据库承受大量无效查询压力。

2024-03-17 17:00:48 351 1

原创 Redis缓存一致性

当应用Redis作为缓存时,数据源通常是持久化的数据库,而数据库中的数据可能因为用户的写操作而发生变化。**主动更新旨在解决这一问题,确保当数据库的数据发生变化时,Redis缓存中的对应数据也能及时更新,保持与数据库的一致性。线程A先删除缓存,线程B查询,未命中,线程B再查询DB,线程B根据查询的DB结果更新缓存,线程A更新DB,线程A延时删除缓存。,可能存在这样的情况:线程A在删除缓存后,线程B在读取不到缓存的情况下查询DB并将旧数据写入缓存,随后线程A才更新DB,此时缓存中的数据就会落后于DB。

2024-03-17 16:41:25 797 1

原创 Redis数据结构

为了保持数据有序性和跳表的高效性,每当我们在底层链表中插入一个节点时,都会依据一定的随机策略决定该节点是否应当出现在更高的层级作为索引节点。这样做的目的在于,即使在持续插入大量数据的过程中,也能通过适时地增加索引节点,避免因数据分布不均而导致的性能退化现象,进而防止在极端情况下跳表变成单链表,丧失其快速查找的优势。在跳表中,通过在链表的节点上增加多层索引结构,形成一个多层的链表结构,每层都是一个有序链表,高层链表的节点稀疏分布在底层链表的节点之间,并通过指针相互连接。

2024-03-15 21:51:03 773 1

原创 二叉树的遍历

BFS是一种从根节点开始,逐层遍历树的节点,每一层的所有节点都在下一层节点之前被访问。对于二叉树,BFS实现的是层次遍历,按照从上到下、从左到右的顺序访问节点:层次遍历(Level Order Traversal):首先访问第一层(根节点),然后是第二层的所有节点,接着第三层……DFS是一种遍历策略,它从根节点开始,尽可能深地探索树的分支,直到达到叶节点,然后回溯至上一层节点的未访问子节点。

2024-03-07 21:20:30 331

原创 数据库MySQL-主从复制和两阶段提交

数据库的主从复制:建立一个和主数据库完全一样的数据库环境,称为从数据库。优点:作为后备的数据库,如果主数据库服务器故障后,可切换到从数据库进行工作,避免数据丢失。还有就是便于架构的拓展,如果业务量越来越大,i/o访问频率过高,单机无法满足,此时做多库的存储,降低磁盘i/o的效率,提高io性能。Tips:MySQL默认的复制方式是异步复制,就是说主库执行完commit后,在主库写入binlog后,即可返回客户端,无需等待binlog日志传入从库,一旦主库宕机,将从提升为主,此时从库可能丢失部分数据。

2024-03-06 16:51:57 336

原创 Java反射机制

本文根据黑马课程总结总结而成。

2024-03-06 16:40:20 1473

原创 用户线程和守护线程

本文内容大部分来自动力节点课程学习,感兴趣的可以直接去看原视频课程。

2024-03-05 20:01:08 343

原创 MySQL——幻读的解决

Next-Key Locks实质上是记录锁与间隙锁的有机结合体,其锁定范围不仅涵盖了记录实体本身,而且采用了前开后闭原则,即锁定区间包含了指定记录及其右侧的间隙(相对而言锁的范围较大,会影响并发度)。而在一些实际业务场景中,特别像银行业务等对实时性要求很高的场景,快照读无法满足需求,必须采用当前读操作确保获取到到的是数据库中的实时状态。记录锁:加在索引上的锁,不包括记录本身,即使该表上没有任何索引,那么InnoDB会在后台创建一个隐藏的聚集主键索引,那么锁住的是这就是这个隐藏的聚集主键索引。

2024-03-05 19:48:56 711

原创 设计模式总结(二)

  本文根据黑马课程和网上相关示例总结而成。  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类协作起来  上述的例子是这样的:电脑和一个设备因为接口不同所以无法连接,但是可以通过一个转接器(适配器)将不能连接的两个设备实现连接。  运用共享技术来有效支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量,避免大量相似对象的开销,从而提高系统资源的利用率。享元(Flyweight)模板存在两种状态角色为:  俄罗斯方块,

2024-02-28 15:53:53 815

原创 设计模式总结(一)

本文根据狂神说和黑马课程总结,大家可以去看原版视频讲解。设计模式就是解决特定问题的一系列套路,不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性以及安全性的解决方案。

2024-02-26 09:31:47 1819 1

原创 MySQL日志

当binlog和redolog同时存在时,会存在一个先写和后写的过程。

2024-02-25 17:03:54 1309 1

原创 MySQL8:排序问题

(注意:别名一定不要命名为rank,如果命名为rank会显示有语法错误,因为MySQL中已经定义了rank()函数,下面会提到该函数)此时,用到的排序函数是row_number(),该排序函数的排序结果是:排名次序不重复,且连续。此时,用到的排序函数是dense_rank(),该排序函数的排序结果是:排名次序重复,且连续。此时,用到的排序函数是rank(),该排序函数的排序结果是:排名次序重复,但跳连。(2)分数相同的记录排名次序相同,但是排名次序不跳连,即不出现1 2 2 4 5的情况。

2023-09-23 22:57:36 76 1

原创 SpringBoot3 + Springdoc

api-doc应该响应的是的Json格式的内容,但现在显示的是base64编码,所以去查看是否是格式转换出错了,发现实在WebConfig.java中使用fastjson将其转换为Json格式的,但是由于fastjson1.x版本与SpringDoc-api冲突,不能处理字符数组,所以出错。博主在学习三更博客项目时,在P86使用Swagger时遇到了困难,由于上网搜了很多,都在说由于Swagger停止维护,SpringBoot3与Swagger不兼容,导致出错。(1) 主文件的pom.xml导入。

2023-09-08 16:34:13 348 2

原创 Spring Security6.x的登录验证

版本为:SpringBoot3.1.2, Spring Security 6.1.2。

2023-09-01 22:12:17 420

空空如也

空空如也

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

TA关注的人

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