在运维中,经常涉及到原子性和原子性操作的概念:

原子性:如果把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行。

原子性的目标:就是能使一个程序被完整的执行。

原子性操作:不可被中断的一个或一系列的操作。

总之,把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行,这种要么操作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)原子性与原子性操作相关推荐

  1. Linux管道的原子性,管道的原子性 linux写操作原子性

    从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...

  2. getset原子性 redis_RedisAPI原子性操作及原理解析

    在学习Redis的常用操作时,经常看到介绍说,Redis的set.get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的 ...

  3. java 原子性int_JAVA原子性操作

    java 原子性操作 Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* ...

  4. Python 基础 - Day 2 Learning Note - 字符转编码操作

    前情提要:字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill).ASCILL有255个字符,包括英语和西欧字符,不包括中文.汉字处理靠GBK, window ...

  5. synchronized同时对原子性、可见性、有序性的保证

    原子性:基本复制写操作都能保证原子性,复杂操作无法保证 可见性:MESI协议的flush.refresh配合使用,解决可见性 有序性:3个层次,最后1个层次有4中内存重排序 synchronized可 ...

  6. 并发编程-03线程安全性之原子性(Atomic包)及原理分析

    文章目录 线程安全性文章索引 脑图 线程安全性的定义 线程安全性的体现 原子性 使用AtomicInteger改造线程不安全的变量 incrementAndGet源码分析-UnSafe类 compar ...

  7. Mongodb的锁 原子性 隔离性 一致性

    读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...

  8. 同步和原子性---多线程学习笔记(四)

    每一个线程自顾自的做自己的工作固然好.但是线程之间经常会相互影响(竞争或者合作),比如多个线程需要同时操作一个资源(比如一个对象).这个时候,如果不进行同步,就可能会引发难以预料的错误. 举一个< ...

  9. java赋值语句_java并发编程之原子性问题

    程序是否线程安全,取决于哪些要素呢,主要是以下三个: 原子性, 可见性, 有序性. 今天先一起来学习原子性. 原子性: 我理解一个操作不可再分,即为原子性.而在并发编程的环境中,原子性的含义就是只要该 ...

最新文章

  1. c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
  2. 分布式与集群是一回事儿么?别让这么简单的问题难住你!
  3. Centos 7下编译安装Apache
  4. python applymap_Python pandas.DataFrame.applymap函数方法的使用
  5. 姚班代有才人出:清华本科生用“最简单的形式”,大幅提高少样本学习性能...
  6. (转载)KVM is required to run this AVD /dev/kvm permission denied Ubuntu Android Studio
  7. 微信7.0.4内测版大更新!漂流瓶彻底成为历史
  8. codeforces 721E Road to Home
  9. DOM获取元素位置的三大系列offset/scroll/client
  10. C# 值得永久收藏的WPF项目实战(经典)
  11. python功能模块之psutil_1.python系统性能信息模块之psutil模块
  12. 服务器系统分区 是啥,服务器系统盘分区
  13. java private 内部类_java中外部类是否可以访问内部类的private 元素呢?
  14. quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
  15. python爬取高德poi数据_高德地图之python爬取POI数据及其边界经纬度
  16. windows10系统下以管理员身份进入CMD(命令提示符)的三种方法
  17. 一个好的测试工程师的简历到底是怎么写的
  18. html 横屏滚动字幕,手机知识:手机横屏滚动字幕
  19. 如何通过看原版电影学英语
  20. php后端经历,后端学习路线,仅供参考,个人总结

热门文章

  1. 基于OSI模型的车载以太网
  2. Linux Android生成和应用Patch文件
  3. 视频教程-Openlayers实例详解-其他
  4. 小清新浪漫情人节告白PPT ,请务必收下!
  5. 群晖摇身一变,手机备份保险箱闪亮登场!
  6. 最近在开发一款答题类微信小程序
  7. 【细读源码】SpringBoot初始化实例中的重要方法getSpringFactoriesInstances
  8. 阿里云国际使用高速通道在 VPC 之间建立内网连接
  9. 诊断眼底病变利器!光学相干断层扫描如何检查患者眼底?
  10. 植物发育|大豆:多组学揭示体细胞胚胎发生过程DNA甲基化与发育转变的关系