(Note)原子性与原子性操作
在运维中,经常涉及到原子性和原子性操作的概念:
原子性:如果把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行。
原子性的目标:就是能使一个程序被完整的执行。
原子性操作:不可被中断的一个或一系列的操作。
总之,把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行,这种要么操作100%完成,要么无操作的特性,就叫做原子性,而符合原子性的操作就是原子性操作。
原子性操作的例子:
A想要从自己的帐户中转1000块钱到B的帐户里。那么从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
- 1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
- 2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。
如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电、断网等,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚(ROLLBACK)。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
(Note)原子性与原子性操作相关推荐
- Linux管道的原子性,管道的原子性 linux写操作原子性
从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...
- getset原子性 redis_RedisAPI原子性操作及原理解析
在学习Redis的常用操作时,经常看到介绍说,Redis的set.get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的 ...
- java 原子性int_JAVA原子性操作
java 原子性操作 Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* ...
- Python 基础 - Day 2 Learning Note - 字符转编码操作
前情提要:字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill).ASCILL有255个字符,包括英语和西欧字符,不包括中文.汉字处理靠GBK, window ...
- synchronized同时对原子性、可见性、有序性的保证
原子性:基本复制写操作都能保证原子性,复杂操作无法保证 可见性:MESI协议的flush.refresh配合使用,解决可见性 有序性:3个层次,最后1个层次有4中内存重排序 synchronized可 ...
- 并发编程-03线程安全性之原子性(Atomic包)及原理分析
文章目录 线程安全性文章索引 脑图 线程安全性的定义 线程安全性的体现 原子性 使用AtomicInteger改造线程不安全的变量 incrementAndGet源码分析-UnSafe类 compar ...
- Mongodb的锁 原子性 隔离性 一致性
读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...
- 同步和原子性---多线程学习笔记(四)
每一个线程自顾自的做自己的工作固然好.但是线程之间经常会相互影响(竞争或者合作),比如多个线程需要同时操作一个资源(比如一个对象).这个时候,如果不进行同步,就可能会引发难以预料的错误. 举一个< ...
- java赋值语句_java并发编程之原子性问题
程序是否线程安全,取决于哪些要素呢,主要是以下三个: 原子性, 可见性, 有序性. 今天先一起来学习原子性. 原子性: 我理解一个操作不可再分,即为原子性.而在并发编程的环境中,原子性的含义就是只要该 ...
最新文章
- c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
- 分布式与集群是一回事儿么?别让这么简单的问题难住你!
- Centos 7下编译安装Apache
- python applymap_Python pandas.DataFrame.applymap函数方法的使用
- 姚班代有才人出:清华本科生用“最简单的形式”,大幅提高少样本学习性能...
- (转载)KVM is required to run this AVD /dev/kvm permission denied Ubuntu Android Studio
- 微信7.0.4内测版大更新!漂流瓶彻底成为历史
- codeforces 721E Road to Home
- DOM获取元素位置的三大系列offset/scroll/client
- C# 值得永久收藏的WPF项目实战(经典)
- python功能模块之psutil_1.python系统性能信息模块之psutil模块
- 服务器系统分区 是啥,服务器系统盘分区
- java private 内部类_java中外部类是否可以访问内部类的private 元素呢?
- quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
- python爬取高德poi数据_高德地图之python爬取POI数据及其边界经纬度
- windows10系统下以管理员身份进入CMD(命令提示符)的三种方法
- 一个好的测试工程师的简历到底是怎么写的
- html 横屏滚动字幕,手机知识:手机横屏滚动字幕
- 如何通过看原版电影学英语
- php后端经历,后端学习路线,仅供参考,个人总结