事务

1.怎样理解(什么是)事务?

当同一个操作需要多条sql执行,一条执行失败,其余哪怕执行成功了也要回滚数据;除非所有的sql都完美的执行成功了。

2.事务是什么时候回滚的?

runtimeExcetion的时候

3.Spring事务

Spring事务有声明式事务和编程式事务,

而声明式事务的原理是AOP,AOP又是通过动态代理实现的。

Spring声明式事务优点:

1.解耦

2.我们只需要写业务,不需要关注事务。

Spring声明式事务缺点:

是方法级别的事务控制,只能对方法进行事务控制,不能对方法的某几行进行事务控制。

4.事务传播行为

指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。

在这里插入图片描述

5.数据库事务特性

⑴ 原子性(Atomicity)

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

⑵ 一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

⑶ 隔离性(Isolation)

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

⑷ 持久性(Durability)

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

6.数据库事务的隔离级别

MySQL数据库为我们提供的四种隔离级别:

① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

③ Read committed (读已提交):可避免脏读的发生。

④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

7.分布式事务

第一种方案:最终一致性,需要业务系统结合 MQ 消息中间件实现,在实现过程中需要保
证消息的成功发送及成功消费。即需要通过业务系统控制MQ 的消息状态
第二种方案:实时性分布式事务,TCC 框架

最终一致性:

一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。

第一步:首先主动方有个预处理的动作,就是插入一条数据到数据库
(可以单独抽离出来一个服务器,任何主动方都是通过数据源连接这个数据库,
给数据源一个IP地址就可以连接这个数据库)表中,
这条数据的状态为待确认,然后执行生产者的业务代码时,如果失败就回滚,捕捉异常,把预处理的这条数据给删除了,
数据库就没有数据了,消费方就不会有消息执行。双方数据一致。
如果成功的话,修改数据的状态,把待确认改为待发送,再把信息发给MQ,
在MQ发送信息到消费方有可能导致数据丢失,消费方无法接收信息,那么之前插入数据库中那条数据还是处于待发送状态,
正常情况下消费方如果能接收数据,处理完消费方就会链接到数据库把待发送那条信息删除,删除成功就说明主动方跟消费方都执行成功.
直接删除,不做物理删除,原因:数据量会越来越多。导致服务器的查询速度变慢。
如果数据丢失,消费方无法接收信息,生产者有个定时任务,会不断去数据库找状态为待发送的那条记录,
如果找到待发送这条数据就再次把信息发到MQ,因为不会无限次数发送,因此如果发送6次均为失败就会转人工客服,
度变慢。
如果数据丢失,消费方无法接收信息,生产者有个定时任务,会不断去数据库找状态为待发送的那条记录,
如果找到待发送这条数据就再次把信息发到MQ,因为不会无限次数发送,因此如果发送6次均为失败就会转人工客服,
比如发送短信通知客服,客服去排查哪条消息再告诉运维,在排查消费端为什么接收不到,这样就可以保证数据的最终一致性.

代码下载地址: https://pan.quark.cn/s/bc087ffa872a "测控电路课后习题详解"文件.pdf是一份极具价值的学术资料,其中系统地阐述了测控电路的基础理论、系统构造、核心特性及其实际应用领域。 以下是对该文献的深入解读和系统梳理:1.1测控电路在测控系统中的核心功能测控电路在测控系统的整体架构中扮演着不可或缺的角色。 它承担着对传感器输出信号进行放大、滤除杂音、提取有效信息等关键任务,并且依据测量与控制的需求,执行必要的计算、处理与变换操作,最终输出能够驱动执行机构运作的指令信号。 测控电路作为测控系统中最具可塑性的部分,具备易于放大信号、转换模式、传输数据以及适应多样化应用场景的优势。 1.2决定测控电路精确度的关键要素影响测控电路精确度的核心要素包括:(1)噪声与干扰的存在;(2)失调现象与漂移效应,尤其是温度引起的漂移;(3)线性表现与保真度水平;(4)输入输出阻抗的特性影响。 在这些要素中,噪声干扰与失调漂移(含温度效应)是最为关键的因素,需要给予高度关注。 1.3测控电路的适应性表现测控电路在测控系统中展现出高度的适应性,具体表现在:* 具备选择特定信号、灵活实施各类转换以及进行信号处理与运算的能力* 实现模数转换与数模转换功能* 在直流与交流、电压与电流信号之间进行灵活转换* 在幅值、相位、频率与脉宽信号等不同参数间进行转换* 实现量程调整功能* 对信号实施多样化的处理与运算,如计算平均值、差值、峰值、绝对值,进行求导数、积分运算等,以及实现非线性环节的线性化处理、逻辑判断等操作1.4测量电路输入信号类型对电路结构设计的影响测量电路的输入信号类型对其电路结构设计产生显著影响。 依据传感器的类型差异,输入信号的形态也呈现多样性。 主要可分为...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值