[转载]@Transactional Spring 事务的深入学习与使用

Spring 事务的概述  在数据库中,事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行(都失败)。 重要的是,一个事务当中的所有操作要么都成功,要么都失败,这样的特性,保

重温设计模式之 Factory

前言创建型模式的核心干将,工厂、简单工厂、抽象工厂,还记得清么,一文回顾和对比下。一 为什么需要工厂系统中总是需要创建对象的,一般使用new()来创建对象。创建对象可以是简单的new(),也可以有复杂的加工逻辑,如果在主程序中创建对象,那么就是将主干逻辑和创建对象的非主干逻辑耦合在了一起,工厂模式

性能优化:关于缓存的一些思考

利用缓存做性能优化的案例非常多,从基础的操作系统到数据库、分布式缓存、本地缓存等。它们表现形式各异,却有着共同的朴素的本质:弥补CPU的高算力和IO的慢读写之间巨大的鸿沟。和架构选型类似,每引入一个组件,都会导致复杂度的上升。以缓存为例,它带来性能提升的同时,也带来一些问题,需要开发者设计和权衡。本

无锁队列Disruptor

1.何为队列听到队列相信大家对其并不陌生,在我们现实生活中队列随处可见,去超市结账,你会看见大家都会一排排的站得好好的,等待结账,为什么要站得一排排的,你想象一下大家都没有素质,一窝蜂的上去结账,不仅让这个超市崩溃,还会容易造成各种踩踏事件,当然这些事其实在我们现实中也是会经常发生。当然在计算机世界

我所理解的Java锁

为什么需要锁当并发地访问共享资源,如果不加以管理,其结果是混乱的。就如上图,双方均想改变方块的颜色,但在任意时刻,我们并不能确定方块接下来是什么颜色,因为我们无法确定谁的时间片最终改变了方块的颜色。显然,这样的不确定性对于程序来说是不能接受的。我们所期望的,是红色方先过后,方块成了红色。接着绿色方过

caffeine实现原理(源码分析)

前言上篇文章介绍了常用的缓存框架,了解了目前内存缓存框架性能最好的是Caffeine本篇文章将详细从源码级讲解Caffeine内部实现原理,包含以下内容淘汰策略tinyLFUCaffeine内部接口关系loadputinvalidate操作的原子性缓存过期策略解析缓存淘汰算法缓存淘汰算法的作用是在有

MySQL事务隔离级别和实现原理

MySQL事务本文所说的MySQL事务都是指在InnoDB引擎下,MyISAM引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操