- 博客(8)
- 收藏
- 关注
原创 mysql-幻读
但是当前读并不是从RR的底层机制出发的,而是锁定了范围内的数据,读到最新的数据,所以RR在一定情况下无法解决幻读问题,只能够解决可重复读的问题(A事务开启时的第一个查询语句就创建读试图,后续不再创建)(X):当某些数据加上了排他锁,其他事务就不能对该数据再次加同样的锁(X)也就是说:不能进行。场景2:A事务先执行查询数据的操作,其次B事务插入了某些行数据,事务A对某个范围内的数据进行修改,恰好修改到了B事务的数据,其次A事务再进行查询操作,最后会发现A事务前后两次读取数据的行数不一样。
2024-10-25 16:35:51
457
原创 mysql事务详解
串行化 (Serializatable):能解决所有问题(幻读、脏读、不可重复读)效率低。设计梳理:可重复读和读已提交是通过控制read view的生成时机实现功能区分。读未提交(Read Uncommited):A事务能够读到B事务未提交的数据。可重复读 (Repeatable Read):A事务前后两次读数据结果一致。读已提交(Read Commited):A事务只能读到已提交的数据。A事务前后两次读数据结果不一致(指的是行数,增删导致)A事务能够读到B事务未提交的数据。原子性:事务是最小的单位。
2024-09-28 21:30:31
311
1
原创 spring ioc、aop
spring ioc 就是一种把对象的控制权、管理权交给spring 容器的方法。这种方法的实现可以将对象和对象进行解耦。
2022-10-19 12:02:47
242
原创 redis在分布式场景下的使用方案
****所以使用了缓存就有可能出现缓存数据的一致性问题。所以在实时性要求不高的场景,并且允许读取到脏数据的情况下:定义一个较短的超时时间、写数据库的时候更新缓存都是最优解、延时双删。给缓存设置了同样的失效时间,导致缓存同一时间失效,在某一个时间点给数据库造成极大的并发。高并发的环境之下去查询缓存中没有的数据导致直接穿透缓存,给数据库造成极大的压力。缓存击穿就是特别热点的数据在缓存设置时间失效之后被大量访问直接击穿缓存到数据库。有读到脏数据的可能性所以加上读写锁可以解决这种问题,但是对性能的限制也是大的。
2022-09-06 15:34:14
339
原创 nginx反向代理/jvm垃圾回收机制与调优
正向代理:机器配置让服务器对网站发请求反向代理:客户端访问nginx让nginx做负载均衡(转发请求到网关)反向代理的配置:
2022-07-05 10:46:17
642
原创 谷粒商城基础篇1-数据校验和异常处理总结
1后端的数据校验就是防止他人直接用脚本提交请求攻击某一个接口。jsr303数据校验:(全局的数据校验,直接定义在实体类上)@NotNull :校验数值型的数据不能为空@NotEmpty 校验字符型的数据不能为空@NotBlank 校验该字段的输入框内至少有一个不为空格的字符(万能)@Pattern 自定义注解,里面有一个regexp(正则表达式的字段)可以定义任何你想让用户输入的格式。@Min 定义一个最小输入的数字@Max 定义一个最大能输入的数字jsr303分组校验:分组校验的作用就是防止统一的数据
2022-06-27 21:47:06
464
原创 springboot初探
启动一个spring boot项目比想象中简单太多<excludes> <exclude>**/application*.yml</exclude> <exclude>**/application*.yaml</exclude> <exclude>**/application*.properties</exclude></excludes>优先级是由下往上逐级增加。1.pom文件:
2022-02-16 09:52:54
270
原创 关于搭建ssm项目的一些总结
搭建ssm项目的时候我们需要分层设计:service,mapper,pojo,controller;上面几个层的作用是:1.pojo是一个数据库的实体类对象,能数据库中的数据实例化为一个pojo类的对象;2.mapper层是一个编写操作增删改查interface和数据库语句的xml文件的地方:实质上的作用就是操作数据库。3.service里面实际编写的业务和mapper层一致只是service层,因为service层拥有了一个mapper层的一个对象实际上调用的也是mapper层的方法,..
2022-02-15 13:35:24
772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人