事务

SPRING 事务属性的种类

岁酱吖の 提交于 2020-02-12 18:17:37
事务属性的种类: 传播行为、隔离级别、只读和事务超时 a) 传播行为定义了被调用方法的事务边界。 传播行为 意义 PROPERGATION_MANDATORY 表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常 PROPAGATION_NESTED 表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和 PROPAGATION_REQUIRED 看起来没什么俩样 PROPAGATION_NEVER 表示方法不能运行在一个事务中,否则抛出异常 PROPAGATION_NOT_SUPPORTED 表示方法不能运行在一个事务中,如果当前存在一个事务,则该方法将被挂起 PROPAGATION_REQUIRED 表示当前方法必须运行在一个事务中,如果当前存在一个事务,那么该方法运行在这个事务中,否则,将创建一个新的事务 PROPAGATION_REQUIRES_NEW 表示当前方法必须运行在自己的事务中,如果当前存在一个事务,那么这个事务将在该方法运行期间被挂起 PROPAGATION_SUPPORTS 表示当前方法不需要运行在一个是事务中,但如果有一个事务已经存在,该方法也可以运行在这个事务中 b) 隔离级别 在操作数据时可能带来 3 个副作用,分别是脏读、不可重复读、幻读。为了避免这 3 中副作用的发生,在标准的 SQL 语句中定义了 4 种隔离级别

数据库中的事务

房东的猫 提交于 2020-02-12 14:56:26
一. 数据库中事务的概述 数据库事务(Database Transaction)是是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。也可以理解为用户定义的一个数据库操作序列,这些操作序列要么全部执行,要么都不执行,是一个不和分割的工作单位。在数据库中事务可以是一条SQL语句,也可以是多条SQL语句。 二. 数据库中事务的特性 原子性(Atomicity):原子性是指事务包含所有的操作要么都成功,要么都回滚,因此事务的操作成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency):一致性是指事务必须是数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。如有两个银行账户A和B,两个账户总共有6000,在这种情况下,无论账户A与B之间如何进行转账,两个账户的总额一直是6000,这就体现了数据库事务的一致性。 隔离性

innodb解决幻读

只愿长相守 提交于 2020-02-12 12:45:15
1. 结论 首先说结论,在RR的隔离级别下,Innodb使用MVVC和next-key locks解决幻读,MVVC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。 2. 幻读是什么 事务A,先执行: update table set name=“hh” where id>3; 结果为: OK row xx 表名成功影响多少行数据 事务B,后执行,并且提交: insert into table values(11, uu); commit; 事务A,然后再select一下: select * from table where id>3 结果集为: … 11,uu … 事务A懵了,我特么不是id>3全部更新了吗 这次是已提交事务B对事务A产生的影响,这个影响叫做“幻读”。 幻读和不可重复读的区别是,前者是一个范围,后者是本身 3. 怎么解决的? 3.1. 当前读 所谓当前读,指的是加锁的select(S或者X), update, delete等语句。在RR的事务隔离级别下,数据库会使用next-key locks来锁住本条记录以及索引区间。 拿上面那个例子来说,在RR的情况下,假设使用的是当前读,加锁了的读 select * from table where id>3 锁住的就是id=3这条记录以及id>3这个区间范围,锁住索引记录之间的范围

缓存技术-Redis

时光毁灭记忆、已成空白 提交于 2020-02-12 12:29:58
1. Redis的了解 1.1 NoSQL 答:NoSQL(Not Only SQL),泛指非关系型的数据库,目的是解决高并发、高拓展和大数据储存问题。细分为:键值型(Redis),列存储(HBase),文档型(MongoDB),图形(Neo4j)。 1.2 Redis 答:Redis(Remote Dictionary Server远程字典服务)是一款 高性能、高并发 的key-value型分布式内存数据库,基于内存运行且支持 持久化 的NoSQL数据库。常被用于缓存和消息队列。 高性能:用户第一次访问数据后,数据存储在缓存中,之后再访问直接从缓存中获得,相当于直接操作内存。数据库数据改变后,同步改变缓存数据。 高并发:直接操作缓存能承受的请求远大于直接访问数据库,将部分数据放在33 redis中,让用户请求直接到缓存中寻找,不用访问数据库。 1.3 Redis和map区别 答:缓存分为本地缓存和分布式缓存。map是本地缓存,优点是轻量快速,缺点是多实例情况下,每个实例都有一个缓存。Redis是分布式缓存,多实例情况下,每个实例共用一个缓存,具有一致性,缺点是架构复杂。 1.4 Redis和memcached区别 答:主要是四点: Redis有更丰富的类型,memcached只支持String类型; Redis支持数据持久化,将内存数据保存到磁盘,memcached全部存在内存;

java十年技术栈[总结复习用]

让人想犯罪 __ 提交于 2020-02-12 05:09:23
以下摘自http://www.tvtv223.com/so/8/default/8.html#36-数据库的分库分表mycat java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式

java技术栈

為{幸葍}努か 提交于 2020-02-12 04:52:07
java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5 java内存模型以及垃圾回收算法

Google10年Java技术栈

旧时模样 提交于 2020-02-12 04:27:43
java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。。。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5

Java 技术栈

荒凉一梦 提交于 2020-02-12 04:20:20
朋友圈看到的,转发一下。 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。。。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5 java内存模型以及垃圾回收算法 5.1 类加载机制,也就是双亲委派模型

JAVA面试锦囊(二)

孤者浪人 提交于 2020-02-12 04:05:16
● MVC的各个部分都由哪些常见技术来实现? (1) M(Model):javaBean (2) V(View):html、jsp、volicity、freemaker (3) C(Control):Servlet、Action、 最经典的MVC模式:Jsp+Servlet+javaBean,实际上就是model2的实现方式,就是把视图和逻辑隔离开,而Model1的实现方式jsp+service+dao。 ● 简谈关系型数据库的三范式? 范式就是规范,就是关系型数据库在设计表要遵循的三个规范。要满足第二范式必须先满足第一范式,要满足第三范式必须满足第二范式。另外反三范式是指有的时候为了效率,可以设置重复的字段(如订单表总价与订单项单价)。 第一范式:是指数据库表的每一列都是不可分割的基本数据项,同一个列中不能有多个值。 第二范式:是指数据库表的每一行必须可以被唯一区分,(通常利用到的是主键列)。 第三范式:是要求一个数据表中不包含已在其他表中已包含的非关键字信息(通常利用外键,多个表的数据重复,用外键引入)。 ● 事务的四大特征? 事务是并发控制的单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的单位。事务的四大特征是: 原子性:表示事务内操作不可分割,要么都成功,要么都失败。 一致性:要么都成功,要么都失败。后面失败了要对前面的操作进行回滚。 隔离性

大数据的基础环境搭建之zookeeper的安装

北城以北 提交于 2020-02-11 19:09:06
1、ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架。 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题。 ZooKeeper 本质上是一个分布式的小文件存储系统。 提供基于类似于文件系 统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维 护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达 到基于数据的集群管理。 诸如: 统一命名服务(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息队列(sub/pub)、分布式锁、分布式协调等功能。 2、zookeeper的架构图 Leader: Zookeeper 集群工作的核心 事务请求(写操作) 的唯一调度和处理者,保证集群事务处理的顺序性; 集群内部各个服务器的调度者。 对于 create, setData, delete 等有写操作的请求,则需要统一转发给leader 处理, leader 需要决定编号、执行操作,这个过程称为一个事务。 Follower: 处理客户端非事务(读操作) 请求, 转发事务请求给 Leader; 参与集群 Leader 选举投票 2n-1台可以做集群投票。 此外,针对访问量比较大的 zookeeper 集群, 还可新增观察者角色。 Observer: 观察者角色,观察