- 博客(19)
- 收藏
- 关注
原创 事务的特性是什么?
事务是数据库操作的一个工作单位,它包含了一组操作序列,这些操作要么全部执行成功,要么全部失败,保证了数据的一致性和完整性。一致性:在转账的过程中,数据要一致,A扣除了500,B必须增加500。隔离性:在转账的过程中,隔离性体现在A像B转账,不能受其他事务干扰。A向B转账500,转账成功,A扣除500元,B增加500元。持久性:体现在事务提交后,要把数据持久化(可以说是落盘操作)原子性 :体现在要么都成功,要么都失败。原子性( Atomicity )隔离性( lsolation)
2024-10-24 10:34:09
211
原创 Redis是单线程的,为什么还那么快?
目前的IO多路复用都是采用的epoll模式实现,它会在通知用户进程Socket就绪的同时,把已就绪的Socket写入用户空间,不需要挨个遍历Socket来判断是否就绪,提升了性能。IO多路复用是指利用单个线程来同时监听多个Socket,并在某个Socket可读、可写时。得到通知,从而避免无效的等待,充分利用CPU资源。什么是IO多路复用模型?
2024-10-23 21:19:08
244
原创 Redis的数据过期策略有哪些?
1. SLOW模式:定时执行,频率默认为10Hz.可以通过修改配置文件redis.conf来调整频率。2.FAST模式:执行频率不固定,每次时间循环会尝试执行,两次间隔不低于2ms,每次耗时不超过1ms.
2024-10-17 22:57:05
275
原创 Redis的数据如何与Mysql进行同步?(双写一致性)
延时过程中可能会出现脏数据(主数据库更新的数据还没写入到从数据库,而这时有进程读到了从数据库的旧数据,并更新了缓存。导致缓存和数据库不一致),不能保证强一致性。2 利用cana中间件,不需要修改业务代码,伪装成mysql的一个从节点,canal通过读取binlog数据更新缓存。1 使用MQ中间件,更新数据之后,通知缓存删除。改进方案:读操作使用共享锁,写操作使用排他锁。
2024-10-16 11:12:40
603
原创 什么情况下索引会失效?
例如有两条数据甲和乙,数据甲的a字段小于数据乙的a字段,而数据乙的b字段小于数据甲的b字段。此时甲数据排在乙数据的前面,自然不符合用b索引查询的条件。个人理解:在创建联合索引时 是按照a、b、c的顺序来排序,也就是说先比较a的大小,如果a的值相等再比较b的大小,最后才是c。所以如果想跳过 a索引去查询后面的索引是无法实现的。因为此时的B+数是优先按a的大小来排序的。例子:创建了一个联合索引(name,status,address)
2024-10-14 16:27:23
505
原创 什么是覆盖索引?
在MySQL中,覆盖索引(Covering Index)是一种数据库索引技巧,指的是一个索引包含了查询所需的所有数据,因此不需要回表查询就能得到所需的结果。换句话说,就是查询的列(SELECT的列)和用于过滤的列(WHERE子句中的列)都包含在索引中。3 中因为查询列中有gender,需要回表查询,所以不是覆盖索引。注:id为主键,name为辅助索引。
2024-10-14 15:44:56
216
原创 SQL语句执行很慢,如何分析?
1 通过key 和 key_len 检查是否命中了索引。2 通过tye 字段查看sql是否有进一步优化的空间。3 通过extra建议 判断是否出现了回表的情况。最差也要保证type为 range。
2024-10-14 11:08:50
301
原创 是什么缓存雪崩?怎么解决?
设置缓存时使用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到数据库,数据库瞬时压力过大崩溃。将缓存失效时间分散。可以在原有的失效时间基础上增加一个随机值,这样每一个缓存的失效时间重复率就会降低。与缓存击穿的区别:雪崩是很多key过期,击穿是某一个key过期。
2024-10-14 10:13:21
107
原创 什么是缓存击穿?怎么解决?
给某个key设置了过期时间,当key过期的时候,恰好这个时间点对这个key有大量的请求发过来,这些大并发的请求可能会瞬间把数据库压垮。当缓存失效时,不立即去查询数据库,先使用如Redis的setnx设置一个互斥锁,当第一个进程查询数据库成功并将数据写入缓存后再释放锁。需要数据强一致性 选择分布式锁。需要高可用性 选择逻辑过期。
2024-10-14 10:04:46
213
原创 什么是缓存穿透?怎么解决?
的数据,如果从存储层查不到数据则不写入缓存,将导致每次查询这个不存在的数据都要到数据库去查询。可能会导致数据库崩溃。这种情况大概率是受到了攻击。布隆过滤器主要用于检索一个元素是否在一个集合中。可以使用redisson实现布隆过滤器。缓存穿透是指查询一个一定。
2024-10-14 09:46:02
238
原创 MVC框架要解决哪些事情?
1. 将url映射到java类或java类方法。2. 封装用户提交的数据3. 处理请求->调用相关的业务处理->封装相应数据
2024-09-23 21:20:35
119
原创 Spring AOP
AOP (Aspect Orient Programming),直译过来就是 面向切面编程。大白话版:Spring AOP就像是在你的程序中悄悄安排了一位助手,它能在你执行某些关键操作(比如付款、登录)之前或之后,自动帮你完成额外的工作(比如记录日志、检查权限),而无需你每次都亲自去操作。
2024-09-20 17:07:22
1679
原创 Spring自动装配
一句话版本:Spring的自动装配是Spring容器自动识别并配置Bean之间依赖关系的过程。在没有自动装配的情况下,开发者需要显式地在配置文件(如XML)中或者通过注解来定义Bean之间的依赖关系。而自动装配可以让Spring容器根据某些规则,自动地完成这些Bean的依赖注入。在xml中显式配置;在java中显式配置;隐式的bean发现机制和自动装配。新建两个实体类,Cat Dog 都有一个叫的方法新建一个用户类 User1.在xml中显式配置2.1。
2024-09-19 19:18:48
1536
转载 依赖注入(DI)
2. Set 注入:要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 则不是set方法 , 是 is + 属性首字母大写 .<property name="address" value="重庆"/><property name="name" value="小明"/><property name="name" value="小明"/><property name="name" value="小明"/>
2024-09-19 10:32:52
78
原创 理解IoC
啥是IoC? 官方定义:IOC(控制反转)是一种编程范式,它通过将对象的创建和管理工作交给外部容器(如框架)来减少代码间的耦合。 人话:IOC就像是你在学校食堂吃饭时,不用自己去做饭,而是告诉食堂阿姨你想要吃什么,然后阿姨就会给你准备好饭菜。这样,你就可以省去做饭的时间,专心吃饭和学习。IoC好在哪里? 想象一下你是一家餐厅的老板,你的餐厅特别受欢迎,因为你有一道招牌菜——红烧肉。在传统的经营方式中,你可能需要亲自去市场买肉、调料等食材,然后自己烹饪
2024-09-17 21:15:09
953
1
空空如也
请大家指正一下错误在哪
2022-09-09
请大家看看怎么理解这个题解?
2022-09-15
请各位看看哪里出错了?!。
2022-09-06
为啥0分qwq,是哪里出了问题
2022-08-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅