
事务
文章平均质量分 82
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
要不来重新认识Spring事务?三歪又学到了
从唯一性说起写了十几年代码,直到现在,我见过非常多的处理唯一性约束的方法都是放在代码里,而非数据库里。直到现在我也一直很困惑,这些人为什么不使用数据库的唯一索引呢?不过我并不想知道这个答案。他们的做法很简单,假如要保证name是唯一的,先使用Java代码执行一个查询语句:select*fromexamplewherename=?然后根据返回值来判断,如果是null则表明没有这个name,接着执行插入语句即可:insertintoexample(name)va...转载 2020-08-24 10:25:37 · 244 阅读 · 0 评论 -
为啥阿里巴巴规定要在 @Transactional 指定 rollbackFor?
阿里巴巴Java开发手册规范提示:方法【edit】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。1.异常的分类先来看看异常的分类error是一定会回滚的,这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常可查的异常(checked exceptions):Exception下除了RuntimeException外的异常不可查的异常(unchecked exceptions):R转载 2020-08-22 09:22:16 · 319 阅读 · 0 评论 -
Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现
前言本专题大纲如下:事务专题大纲「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用中的问题,这两天想了想还是单独写一篇并作为事务专题的收尾篇,也是我Spring源码专题的收尾篇。本文大纲如下:Spring事务应用大纲在看这篇文章,以及下篇源码分析的文章我希望你对Spring AOP以及有充分的了解,不然一些细节问题你可能看不明白,关于Spring AOP如果你能看完这三篇文章基本上就没什么问题了Spring官网阅读(十八转载 2020-08-13 19:40:10 · 268 阅读 · 0 评论 -
Spring事务专题(三)事务的基本概念,Mysql事务处理原理
我重新整理了大纲,思考了很久,决定单独将MySQL的事务实现原理跟Spring中的事务示例分为两篇文章,因为二者毕竟没有什么实际关系,实际上如果你对MySQL的事务原理不感兴趣也可以直接跳过本文,等待接下来两篇应用及源码分析,不过我觉得知识的学习应该慢慢行成一个体系,为了建立一个完善的体系应该要对数据库本身事务的实现有一定认知才行。本文为Spring事务专题第三篇,在前两篇文章中我们已经对Spring中的数据访问有了一定的了解,那么从本文开始我们正式接触事务,在分析Spring中事务的实现之前我们应该要转载 2020-08-13 16:59:47 · 320 阅读 · 0 评论 -
面试问到 Redis 事务,我脸都绿了。。
前言前几天有读者说自己面试被问到Redis的事务,虽然不常用,但是面试竟然被问到,平时自己没有注意Redis的事务这一块,面试的时候被问到非常不好受。虽然,这位读者面试最后算是过了,但是薪资方面没有拿到自己理想的薪资。其实这个也是正常的,一般面试被问到烂大街的,谁还问你啊,专门挑一些不常见的来问你,就是为了压你的薪资。所以在这里写一篇文章对Redis的事务进行详细的讲解,估计对Redis事务从理解到原理深入这一篇就够了。以后面试都不用担心了再被问道Redis的事务了,这一篇主要讲解Red转载 2020-07-09 16:17:33 · 248 阅读 · 0 评论 -
MySQL 可重复读,差点背上一个 P0 事故!
P0 事故:余额多扣!这是一个真实的生产事件,事件起因如下:现有一个交易系统,每次产生交易都会更新相应账户的余额,出账扣减余额,入账增加余额。为了保证资金安全,余额发生扣减时,需要比较现有余额与扣减金额大小,若扣减金额大于现有余额,扣减余额不足,扣减失败。账户表(省去其他字段)结构如下:CREATETABLE`account`(`id`bigint(20)NOTNULL,`balance`bigint(20)DEFAULTNULL,...转载 2020-06-18 16:38:23 · 303 阅读 · 0 评论 -
太难了~面试官让我结合案例讲讲自己对Spring事务传播行为的理解!
摘要: 原创出处 sf.gg/a/1190000013341344 「handaqiang」欢迎转载,保留摘要,谢谢! 前言 基础概念 1. 什么是事务传播行为? 2. Spring 中七种事务传播行为 代码验证 1.PROPAGATION_REQUIRED 2.PROPAGATION_REQUIRES_NEW 3.PROPAGATION_NESTED 4. REQUIRED,REQUIR.转载 2020-06-04 19:59:32 · 275 阅读 · 0 评论 -
再深一点:面试工作两不误,源码级理解Spring事务
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。Spring有5种隔离级别,7种传播行为。这是面试常问的内容,也是代码中经常碰到的知识点。这些知识枯燥而且乏味,其中有些非常的绕。如果栽在这上面,就实在是太可惜了。xjjdog在一些事务的基础上,再探讨几个容易淡忘的概念,从源码层面找原因,加深我们的理解,问题大概包括:Spring的事务和数据库的...转载 2020-04-30 13:52:19 · 834 阅读 · 0 评论 -
在Spring事务管理下,Synchronized为啥还线程不安全?
在synchronized 锁住方法的情况下,竟然出现了脏写Tips昨天本来打算是准备着一支烟 一杯咖啡 一个bug写一天的,突然我们组长跟我们说线上环境报错了,还出现了"服务器异常,请联系管理员"这特么不是一级事故吗?虽然有测试再前面扛枪。但是是我负责的直播模块,心理慌的一批(ps 报错图当时没保存了)分析事故原因因为是报错(因为我做这条数据查询的时候是selectOne 所以...转载 2020-04-23 17:53:51 · 391 阅读 · 0 评论 -
Spring事务传播行为详解
前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文...转载 2020-04-19 22:28:00 · 234 阅读 · 0 评论 -
一文带你深入理解 Spring 事务原理
Spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); ...转载 2020-04-07 20:30:39 · 282 阅读 · 0 评论 -
redis事务不具有回滚机制,那么它是如何进行事务控制的
redis事务任何数据库都要有一套自己的事务控制机制,redis事务是一次可以执行多个命令,它的本质是一组命令的集合。一个事务中所有的命令都会被序列化,在事务执行的过程中会按照顺序执行队列中的命令。其它客户端提交的命令请求会等到事务执行完毕再执行。总的来说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。redis事务和其它数据库事务的区别:1、redis事务...转载 2020-03-23 11:21:41 · 2210 阅读 · 1 评论 -
Spring事务失效的 8 大原因,这次可以吊打面试官了!
今天再来一篇《吊打面试官》系列,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新……)前几天栈长不是发了一篇文章,里面有一个关于事务失效的问题:用 Spring 的@Transactional注解控制事务有哪些不生效的场景?其中有个热心粉丝留言分享了下,我觉得总结得有点经验,给置顶了:但是我觉得还是总结得不够全,今天栈长我再总结一下,再延着这位粉...转载 2020-01-07 16:20:55 · 158 阅读 · 0 评论 -
Spring 事务用法示例与实现原理
关于事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性,一致性,隔离性和持久性。对于Spring事务,其最终还是在数据库层面实现的,而Spring只是以一种比较优雅的方式对其进行封装支持。本文首先会通过一个简单的示例来讲解Spring事务是如何使用的,然后会讲解Spring是如何解析xml中的标签,并对事务进行支持的。 1. 使用示例关于事务最简单的示...转载 2018-11-11 09:26:42 · 203 阅读 · 0 评论 -
【手写系列】透彻理解Spring事务设计思想之手写实现
事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败。事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Durability(持久性)。在实际开发中,我们对事务应用最多就是在数据库操作这一环,特别是Spring对数据库事务进行了封装管理。Spring对事务的支持,确实很强大,但是从本质上来讲:事务是否生效取决...转载 2018-11-16 08:51:10 · 407 阅读 · 0 评论 -
分析动态代理给Spring事务埋下的坑
前言Spring的声明式事务让我们不再编写获得连接、关闭连接、开启事务、提交事务、回滚事务等代码,通过一个简单的@Transactional注解,就让我们轻松进行事务处理。我们知道Spring事务基于AOP,采用动态代理实现,虽然使用简单,但是在实际场景中,我们也会遇到一些坑。而往往遇到坑之后,我们都会茫然,这是由于没有对Spring事务的实现机制做一点了解导致的。因此本篇博客将从原理的角度分...转载 2018-11-23 09:00:43 · 272 阅读 · 0 评论 -
干货 | 解决分布式场景下数据一致性问题,我有办法!
此次分享的缘由支付重构考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理。拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户服务。原本收到充值回调后,可以将修改订单状态和增加金币放在一个mysql事务中完成的,但是呢,因为服务拆分了,就面临着需要协调2个服务才能完成这个事务 所以就带出来,我们今...转载 2018-12-08 10:51:44 · 4022 阅读 · 0 评论 -
分布式的事务该怎么做?
分布式八大坑分布式就是魔鬼啊! 张大胖最近十分感慨,他所在的公司原来有个电商系统,后来随着用户量越来越大,对系统的可用性要求越来越高。 CTO要求把系统进行拆分, 从一个单体的应用,拆分成微服务组成的应用。 微服务听起来很美好,但是其中的苦只有做过的人才知道。 在原来的单体应用中,订单模块想要调用库存和支付,只要调用相关的类或者接口就可以了,只有一个数据库,轻轻松松就可以把所...转载 2018-12-10 15:19:38 · 686 阅读 · 0 评论 -
我是如何在面试别人Spring事务时“套路”对方的
“中国最好面试官”自从上次写了一篇“【面试】我是如何面试别人List相关知识的”的文章后,有读者专门加我微信,说我是“中国最好面试官”,这个我可受不起呀。我只是希望把面试当作是一次交流,像朋友那样,而不是像一场Q & A。但也有人觉得,我对应聘者“太好了”,这完全没必要,反正最后他也不会来。好吧,那这次我就“使点坏”,“套路”一下面试者。记一次“带套路”的面试与这个面试者聊...转载 2019-03-06 17:10:10 · 235 阅读 · 1 评论 -
互联网项目中MySQL应该选什么事务隔离级别
引言开始我们的内容,相信大家一定遇到过下面的一个面试场景面试官:“讲讲mysql有几个事务隔离级别?” 你:“读未提交,读已提交,可重复读,串行化四个!默认是可重复读”面试官:“为什么mysql选可重复读作为默认的隔离级别?” (你面露苦色,不知如何回答!) 面试官:"你们项目中选了哪个隔离级别?为什么?" 你:“当然是默认的可重复读,至于原因。。呃。。...转载 2019-03-13 22:09:07 · 544 阅读 · 0 评论 -
真正理解 MySQL 的四种隔离级别
什么是事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。事务的 ACID事务具有四个特征:原子性( Atomicity ...转载 2019-03-27 17:06:20 · 184 阅读 · 0 评论 -
足够应付面试的Spring事务源码阅读梳理
来源:编程新说Starting from a joke问:把大象放冰箱里,分几步?答:三步啊,第一、把冰箱门打开,第二、把大象放进去,第三、把冰箱门带上。问:实现Spring事务,分几步?答:三步啊,第一、找出需要事务的方法,第二、把事务加进去,第三、执行事务。You may find it's not a joke, it's serious。Try to find ...转载 2019-04-06 18:42:39 · 1262 阅读 · 0 评论 -
常用的分布式事务解决方案介绍有多少种?
来自:网易云www.zhihu.com/question/64921387/answer/225784480关于分布式事务,工程领域主要讨论的是强一致性和最终一致性的解决方案。典型方案包括: 两阶段提交(2PC, Two-phase Commit)方案 eBay 事件队列方案 TCC 补偿模式 缓存数据最终一致性 一、一致性理论分布式事务...转载 2019-06-15 20:05:13 · 303 阅读 · 0 评论 -
spring mvc事务没有生效的原因
spring-mvc事务配置如下 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED" /><tx原创 2018-03-23 14:57:24 · 1751 阅读 · 1 评论