写在前面 由于实现事务功能的方式各不相同,Spring进行了统一的抽象,形成了PlatformTransactionManager事务管理器顶级接口(平台事务管理器),事务的提交.回滚等操作全部交给它来实现 先来看下三大接口 PlatformTransactionManager : 事务管理器 TransactionDefinition : 事务的一些基础信息,如超时时间.隔离级别.传播属性等 TransactionStatus : 事务的一些状态信息,如是否是一个新的事务.是否已被标记为回滚…
1. 引言  事务特性 事务是并发控制的单元,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性.事务通常是以begin transaction开始,以commit或rollback结束.Commint表示提交,即提交事务的所有操作.具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正常结束.Rollback表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将…
写在前面: 先了解一下spring的事务.分为分明式事务管理和注解式事务管理,对于前期的事务,spring会通过扫描拦截对于事务的方法进行增强(以后讲解). 若果目标方法存在事务,spring产出的bean会是一个代理对象(cglib或者jdk). 本问讨论的是spring拦截到事务,对于事务的增强处理. spring自己的一系列接口设计 PlatformTransactionManager 事务管理器 TransactionDefinition 事务定义 TransactionStatus 事…
TestNG源代码分析:依赖管理的实现 2018-03-19 1 背景 当case之间有依赖关系,有依赖关系的case,它们的执行顺序是有限制的.TestNG提供了依赖管理功能 2 基础理论 这个执行顺序可以用拓扑排序算法实现. 只要是有向无环图就能被拓扑排序,拓扑排序维基典型实现算法: L ← Empty list that will contain the sorted elements S ← Set of all nodes with no incoming edges while S…
===================================================== SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL2源代码分析2:窗口(SDL_Window) SDL2源代码分析3:渲染器(SDL_Renderer) SDL2源代码分析4:纹理(SDL_Texture) SDL2源代码分析5:更新纹理(SDL_UpdateTexture()) SDL2源代码分析6:复制到渲染器(SDL_RenderCopy()…
前文分析了XBMC的基本结构: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分析 4:视频播放器(dvdplayer)-解码器(以ffmpeg为例) XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例) XBMC源代码分析 6:视频播放器(dvdplayer)-文件头(以ffmpeg为例) 本文我们分析XBMC中视频播放器(dvdplaye…
XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分析 4:视频播放器(dvdplayer)-解码器(以ffmpeg为例) XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例) 本文我们分析XBMC中视频播放器(dvdplayer)中的文件头部分.文件头部分里包含的是封装Dll用到的头文件.由于文件头种类很多,不可能一一分…
写在前面 TransactionStatus表示一个具体的事务状态(这里应用到了Java的一个多继承,接口允许多继承) TransactionStatus它继承了SavepointManager接口,SavepointManager是对事务中上述保存点功能的封装(Spring利用保存点功能实现了事务的嵌套功能.后面会详细说明) public interface SavepointManager { Object createSavepoint() throws TransactionExcept…
一,redis内存管理介绍 redis是一个基于内存的key-value的数据库,其内存管理是很重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,其相应的源代码在src/zmalloc.h和src/zmalloc.c两个文件里,源代码点这里. 二,redis内存管理源代码分析 redis封装是为了屏蔽底层平台的差异,同一时候方便自己实现相关的函数,我们能够通过src/zmalloc.h 文件里的相…
写在前面 事务属性通过TransactionDefinition接口实现定义,主要有事务隔离级别.事务传播行为.事务超时时间.事务是否只读. public interface TransactionDefinition { //事务传播行为类型:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中. int PROPAGATION_REQUIRED = 0; //事务传播行为类型:支持当前事务,如果当前没有事务,就以非事务方式执行. int PROPAGATION_SUPP…