Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day04】——Java高级篇

2023-02-24 15:52:07 浏览数 (1)

  

7.SpringCloudAlibaba常用组件以及作用

Gateway网关:路由 用户鉴权

Nacos注册中心:服务注册与发现 配置中心

Sentinel熔断:服务流量控制和服务降级

Feign:远程调用

Dubbo:远程调用 高并发情况下  比Feign好用

Setea:分布式事务解决方案

Ribbon:负载均衡

8.事务的四大特性

简称ACID

A 原子性 事务是一个完整的操作 事务各步骤是不可分的 要么都执行 要么都不执行

C 一致性 事务完成的时候 数据必须处于统一状态

I 隔离性 对数据修改所有并发事务是隔离的 事务是独立的 它不应该以任何方式依赖于或影响其他

事务

D 永久性 事务完成后 它对数据库的修改永久保持 

9.Spring五个隔离级别

首先说一下事务并发会引起的三种情况

脏读

A事务对一条记录进行修改 尚无提交 B事务已经看到了A的修改结果 若A发生回滚 B读到的数

据就是错误的

不可重复读

        A事务对一条记录进行修改 尚无提交 B事务第一次查询该记录 看到的是修改之后的结果 此时

A发生回滚 B事务又一次查询该记录 看到的是回滚的结果 同一个事务内 B两次查询结果不一致 这

就是不可重复读

幻读

        A事务对所有记录进行修改 尚未提交 此时B事务创建了一条新记录 A B都提交 A查看所有数

据 发现有一条数据没有被修改 因为这是B事务新增的 就像看到幻象一样 这就是幻读

非重复度和幻像读的区别:         非重复读是指同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。

        幻像读是指同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。

        表面上看,区别就在于非重复读能看见其他事务提交的修改和删除,而幻像能看见其他事务提交的插入。 

默认

        使用数据库默认隔离级别 

读未提交

        事务尚无提交 其他事务可以看到该事务的修改结果 隔离级别最差,脏读、不可重复读、幻读

都不能避免。

读已提交

        事务只能看到其他事务提交之后的数据。可避免脏读,不可重复读、幻读无法避免。

不可重复读原因:A事务修改,B事务查询,A提交前和提交后,B事务看到的数据是不一致的。

幻读原因:A事务修改,B事务新增,B事务提交前,A事务已经提交。B事务提交后,A发现仍有

数据未修改。

可重复读

        一个事务多次查询,无论其他事务对数据如何修改,看到的数据都是一致的。因为A事务查询

数据时,若B同时在修改数据,A事务看到的永远是B事务执行前的数据。只有当A提交或者回滚之

后,看到的才是最新的被B修改知乎的数据。可避免脏读、不可重复读,幻读无法避免。

 序列化

        事务顺序执行,可避免脏读、不可重复读、幻读,但效率最差。因为A事务执行时,其他事务

必须等待。

0 人点赞