回滚

什么导致spring事务失效

大兔子大兔子 提交于 2020-03-07 23:58:58
今天有个朋友问我一个事务不起作用的问题,如果对事务代理不了解的话,这个问题需要引起大家注意。 先看配置文件: <!-- 配置事务拦截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 事务拦截器bean需要依赖注入一个事务管理器 --> <property name="transactionManager" ref="myTransactionManager"/> <property name="transactionAttributes"> <!-- 下面定义事务传播属性--> <props> <!--del开头的方法都被事物管理--> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="set*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly<

Python连接MySQL数据库之pymysql模块使用

依然范特西╮ 提交于 2020-03-07 08:23:59
Python连接MySQL数据库之pymysql模块使用 Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。 PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 Django中也可以使用PyMySQL连接MySQL数据库。 PyMySQL安装 pip install pymysql 连接数据库 注意事项 在进行本文以下内容之前需要注意: 你有一个MySQL数据库,并且已经启动。 你有可以连接该数据库的用户名和密码 你有一个有权限操作的database 基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE

The 2017 ACM-ICPC Asia Beijing Regional Contest

☆樱花仙子☆ 提交于 2020-03-07 07:53:52
地址 Rank Solved A B C D E F G H I J 51/384 4/10 . . Ø . O O . O Ø O O : 当场通过 Ø : 赛后通过 . : 尚未通过 A Domains unsolved B K-Dimensional Foil unsolved C Graph upsolved by chelly chelly's solution 很显然的思路就是莫队+并查集 但众所周知并查集可以支持可撤销,但不是很好支持可持久化 于是就可以用上回滚莫队的套路了,回滚莫队可以把一般莫队的删除操作变成撤销操作,复杂度不改变 于是这题用回滚莫队+可撤销并查集即可解决 注意回滚莫队的时候,处理右半边的点的时候,不能连向左半边的点,否则rollback的时候跨越中间的边并没有撤销 D Chinese Checkers unsolved E Cats and Fish solved by chelly chelly's solution F Secret Poems solved by chelly chelly's solution G Liaoning Ship’s Voyage unsolved H Puzzle Game solved by chelly chelly's solution I Colored Nodes upsolved by chelly

MySQL通过binlog日志回滚数据

大城市里の小女人 提交于 2020-03-05 11:28:07
一、数据库在进行数据更改操作时,会出现数据误操作导致数据异常的情况,所以数据安全是重中至重,对于数据库服务,必须开启binlog日志服务,保证数据的安全,可逆回滚。 二进制日志的格式有三种形式分别为ROW、Statement以及MiXED 1、STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。 优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。 缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题) 2、基于行的复制(row-based replication, RBR):不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。 优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。 缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。 3、混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用

帧同步游戏开发小结

孤街浪徒 提交于 2020-03-05 01:05:44
本文发表于程序员刘宇的个人博客,转载请注明来源,博客园同步更新:https://www.cnblogs.com/xiaohutu/p/12402399.html 这几年做了一些网络同步项目,总结一下帧同步的一些东西。 1. 帧同步基本特点 所有的逻辑行为运算都在客户端进行,客户端保证彼此之间执行结果的一致性。 客户端将自己的所有操作发给服务器,服务器转发。 服务器维持一定的逻辑帧率向客户端发包,每次都带上一间隔的所有客户端发来的操作,如果没有就发空帧,附带上客户端需要执行此包的帧数。 客户端收到帧数据执行这一逻辑帧的行为,否则等待。 2. 同步性的保证 确保需要同步部分逻辑执行次序的一致性,特别关注各种容器的底层结构以及运行过程中对容器的增删改。 确保AI、物理引擎等执行结果的一致性,避免因为使用部分游戏引擎的更新特性,导致一些AI计算的时间次序问题。 确保数学运算在不同cpu上的的一致性,使用定点数或者浮点数截取等方法计算逻辑。 确保随机结果基于次数的一致性,使用次数一致性的随机算法,如梅森旋转算法。 确保客户端数据来源的一致性,存储的静态数据以及读取过程需要特别关注。 3. 逻辑画面分离 抽离开图像执行逻辑和关键帧执行逻辑的循环结构。 逻辑部分可以无画面执行,正确的输出结果。 数据关键帧(即执行AI的关键帧)可以调整,和图像帧的比例也可以调整,图像帧做好动画、位移

JDBC事务

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-03 09:15:37
如果JDBC连接处于自动提交模式,默认情况下,则每个SQL语句在完成后都会提交到数据库。 对于简单的应用程序可能没有问题,但是有三个原因需要考虑是否关闭自动提交并管理自己的事务 - 提高性能 保持业务流程的完整性 使用分布式事务 事务能够控制何时更改提交并应用于数据库。 它将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败。 要启用手动事务支持,而不是使用JDBC驱动程序默认使用的自动提交模式,请调用 Connection 对象的 setAutoCommit() 方法。 如果将布尔的 false 传递给 setAutoCommit() ,则关闭自动提交。 也可以传递一个布尔值 true 来重新打开它。 例如,如果有一个名为 conn 的 Connection 对象,请将以下代码关闭自动提交 - conn.setAutoCommit(false); Java 提交和回滚 完成更改后,若要提交更改,那么可在连接对象上调用 commit() 方法,如下所示: conn.commit( ); Java 否则,要使用连接名为 conn 的数据库回滚更新,请使用以下代码 - conn.rollback( ); Java 以下示例说明了如何使用提交和回滚对象 - try{ //Assume a valid connection object conn conn

TCL-事物隔离级别

爷,独闯天下 提交于 2020-02-29 00:43:48
事物控制语言:用于处理意外中断 事物 一个或一组SQL语句组成一个执行单元,要么全部执行,要么全不执行 执行失败、产生错误,整个单元将会回滚。(撤销所有操作) 所有影响的数据返回到事物开始前的状态。 如果单元中所有SQL语句执行成功,则事物被顺利执行 事物具备的属性:ACID(acid)属性 1.A原子性:代表事物是一个不可分割的工作单位(最小单位),要么全部执行,要么全不执行 2.C一致性:执行一个事物会使数据,从一个一致的状态,切换到,另一个一致的状态。(准确、完整、可靠) 3.I隔离型:一个事物的执行,不受其他事物的干扰(隔离级别控制) 4.D持久性:一个事物一旦提交数据就是永久性的改变,接下来操作和故障不会对其产生影响 删除就是删了,没办法撤销,只能重新插入 查看MySQL支持的存储引擎 SHOW ENGINES; InnoDB 当前服务器默认的存储引擎 支持事物 MEMORY 使用的也很多 不支持事物 MyISAM 5.5版本之前使用的 不支持事物 事物的创建 隐式事物(自动事物) 事物没有明显的开启和结束的标记(自动的开启自动的结束) 比如insert、update、delete语句 显示事物 事物具有明显的开启和结束的标记 将两个隐式语句和为一个事物 前提:必须禁用自动提交 禁用自动提交:set autocommit=0; 只正对当前事物有效,不是永久关闭 案例:转账

JAVA中的事务,事务模块总结

不想你离开。 提交于 2020-02-28 13:12:42
大家好,这是一个为了梦想而保持学习的博客。这是第二篇文章,分享一下我对【事务】的理解​。文章的风格会一直保持问答的方式讲述,这是我个人喜欢的一种风格,也是相当于模拟面试。 什么是事务? 简单的来说,一条SQL执行或则几条SQL一起执行时,我们希望这个SQL要么执行成功后提交,要么执行失败后回滚,这是我们最直观的理解。在上面这句话中,就包含了事务的几个必要属性: "执行成功后提交",意味着持久性;"执行失败后回滚",意味着一致性;"要么成功,要么失败",意味着原子性 。他们的具体理解如下: 原子性(A) :事务要么执行成功,要么执行失败,没有第三种状态。 一致性(C) :事务执行的前后数据要一致,也就是说执行成功后数据的更改和预期一致,执行失败需要回滚到更改前数据。 隔离性( I ) :多个事务并发执行时,相互隔离,互不影响。 持久性(D ):事务提交后,对数据的更改是永久性的。也就说,哪怕数据库崩溃了,那些数据也是可以被恢复过来的。 事务是如何实现的? 事务的实现分为两个部分,一个是数据库底层的事务实现,另外一个是基于Spring去实现事务管理。这里主要是讲数据库(mysql-innodb)层面的实现。下面会围绕上面所说的ACID属性来讲mysql的底层实现。 redo日志与原子性、持久性的关系 redo日志是mysql-innodb底层的一个日志文件

Oracle 课程一之Oracle体系结构

十年热恋 提交于 2020-02-28 07:16:34
课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理 1.Oracle数据库概述 •数据库:物理操作系统文件或磁盘的集合。 •实例:一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。 2. Oracle体系结构 任何硬件平台或操作系统下的ORACLE体系结构都是相同的, 包括如下四个方面: •物理结构 数据文件,日志文件,控制文件,参数文件。 •逻辑结构 表空间、段、区间、数据块。 •内存结 共享池,数据缓冲区,日志缓冲区,PGA。 •进程 用户进程、服务器进程、后台进程。 数据文件:select name from v$datafile; 控制文件:select name from v$controlfile; 日志文件:select member from v$logfile; 参数文件:$oracle_home/dbs/initSID.ora(从spfile转换,create pfile from spfile;) 归档日志文件:show parameter log_archive_dest 查看归档模式:archive log list SGA: show sga/show parameter sga/v$sgastat PGA:

面试官:分布式事务了解吗?你们是如何解决分布式事务问题的?

▼魔方 西西 提交于 2020-02-26 03:05:33
面试官心理分析 只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。 现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,起码你得明白有哪几种方案,每种方案可能有啥坑?比如 TCC 方案的网络问题、XA 方案的一致性问题。 面试题剖析 分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。 这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景。如果要玩儿,那么基于 Spring + JTA 就可以搞定,自己随便搜个 demo 看看就知道了。 这个方案,我们很少用,一般来说某个系统内部如果出现跨多个库的这么一个操作,是不合规的。我可以给大家介绍一下,