精华内容
下载资源
问答
  • 在 x86-64 机器上,int64 读写操作是否具有原子性? 假设变量 val 是 int64, 现在有两个线程,线程 writer 只负责向 val 写入数据,线程 reader 只负从 val 读取数据 假设 val 当前值为 0x0102030405060708 writer...

    x86-64 机器上,int64 的读写操作是否具有原子性?

    假设变量 valint64, 现在有两个线程,线程 writer 只负责向 val 写入数据,线程 reader 只负从 val 读取数据

    假设 val 当前值为 0x0102030405060708

    writer 线程正在执行写操作,将数据 0x0000111100002222 写入 val

    reader 线程正在执行读操作,从 val 读取数据

    那么 reader 线程得到的 val 只能是 0x01020304050607080x0000111100002222 还是某个不确定的中间状态?

    如果 int64 的读写操作具有原子性,那么 reader 线程得到的只能是 0x01020304050607080x0000111100002222

    如果 int64 的读写操作不具有原子性,那么 reader 线程得到可能是中间某个不确定的状态,比如前一半是 writer 正在写入的数据,后一半是旧的数据 0x0000111105060708

    测试程序如下:

    1. 写入 val 的值一定是符合奇偶校验的
    2. 开启 10 个线程同时向 val 输入数据
    3. 读线程连续的从 val 读取数据,并检查是否符合奇偶校验
    4. 如果 int64 的读写操作具备原子性,读线程得到的数据一定是符合奇偶校验的

    测试发现,在 x86 64 机器上, int64 的读写操作确实具备原子性

    package main
    
    import (
    	"log"
    	"math/rand"
    	"sync"
    )
    
    func check(v int64) bool {
    	var num int = 0
    	for i := 0; i < 64; i++ {
    		if v&0x01 != 0 {
    			num++
    		}
    		v = v >> 1
    	}
    	return num%2 == 0
    }
    
    func write(p *int64) {
    	v := rand.Int63()
    	if check(v) {
    		v = v ^ 0x01
    	}
    	*p = v
    }
    func main() {
    	var wg sync.WaitGroup
    	var val int64
    	write(&val)
    
    	for i := 0; i < 10; i++ {
    		wg.Add(1)
    		go func() {
    			defer wg.Done()
    			for i := 0; i < 10000000; i++ {
    				write(&val)
    			}
    		}()
    	}
    
    	go func() {
    		for {
    			v := val
    			if check(v) {
    				log.Fatalf("atomic test faile, val = %d", v)
    			}
    		}
    	}()
    
    	wg.Wait()
    	log.Printf("test finished")
    
    }
    
    展开全文
  • 结果表明,根据团簇的性质,有可能扩大对IR区域的灵敏度光谱分布,并获得在室温下具有异常高的负磁致电阻(Δρ/ρ> 100%)的硅。 在半导体材料的晶格中形成具有不同性质和浓度的杂质原子簇是获得具有独特物理性质...
  • 通过基于非平衡格林函数(NEGF)方法进行第一性原理计算,研究了夹在两个Z形石墨烯-纳米碳(zGNR)电极之间单碳原子链(SCAC)自旋依赖性电子传输性质。自旋密度泛函理论(DFT)。 我们计算结果表明,将具有不...
  • 基于全量子理论,分别研究了几种重要光场作用下,从原子玻色-爱因斯坦凝聚(BEC)体耦合输出的原子激光量子相干特性。结果表明,粒子数态光场...表明用光场诱导产生的原子激光具有与初始光场完全相同量子相干性质
  • 事务ACID性质 ...事务具有原子性指是,数据库将事务中多个操作当作一个整体来执行,服务器要么就执行事务中所有操作,要么就一个操作也不执行 对于Redis事务功能来说,事务队列中命令

    事务的ACID性质

    • 在传统的关系式数据库中,常常用ACID性质来检验事务功能的可靠性和安全性

    在Redis中,事务总是具有以下的特性:

    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性 (Isolation)
    • 当Redis运行在某种特定的持久化模式下时,事务也具有耐久性 (Durability)

    一、原子性

    • 事务具有原子性指的是,数据库将事务中的多个操作当作一个整体来执行,服务器要么就执行事务中的所有操作,要么就一个操作也不执行
    • 对于Redis的事务功能来说,事务队列中的命令要么就全部都执行,要么就一个都不执行,因此,Redis的事务是具有原子性的

    演示案例

    以下展示的是一个成功执行的事务,事务中的所有命令都会被执行: 在这里插入图片描述

    • 与此相反,以下展示了一个执行失败的事务,这个事务因为命令入队出错而被服务器拒绝执行,事务中的所有命令都不会被执行: 在这里插入图片描述

    —————————————————————————

    Redis事务不支持回滚机制

    Redis的事务和传统的关系型数据库事务的最大区别在于,Redis不支持事务回滚机制 (rollback),即使事务队列中的某个命令在执行期间出现了错误,整个事务也会继续执行下去,直到将事务队列中的所有命令都执行完毕为止。

    • Redis的作者在事务功能的文档中解释说,**不支持事务回滚是因为这种复杂的功能和Redis追求简单高效的设计主旨不相符,**并且他认为,Redis事务的执行时错误通常都是编程错误产生的,这种错误通常只会出现在开发环境中,而很少会在实际的生产环境中出现,所以他认为没有必要为Redis开发事务回滚功能

    下面的这个例子中,即使RPUSH命令在执行期间出现了错误,事务的后续命令也会继续执行下去,并且之前执行的命令也不会有任何影响:
    在这里插入图片描述

    二、一致性

    • 事务具有一致性指的是,如果数据库在执行事务之前是一致的,那么在事务执行之后, 无论事务是否执行成功,数据库也应该仍然是一致的
    • 一致”指的是数据符合数据库本身的定义和要求,没有包含非法或者无效的错误数据
    • Redis通过谨慎的错误检测和简单的设计来保证事务的一致性,下面将分别介绍三个Redis事务可能出错的地方,并说明Redis是如何妥善地处理这些错误,从而确保事务的一致性的

    ①入队错误

    • 如果一个事务在入队命令的过程中,出现了命令不存在,或者命令的格式不正确等情况,那么Redis将拒绝执行这个事务

    在以下展示的示例中,因为客户端尝试向事务入队一个不存在的命令YAHOOOO,所以客户端提交的事务会被服务器拒绝执行:
    在这里插入图片描述

    • 因为服务器会拒绝执行入队过程中出现错误的事务,所以Redis事务的一致性不会被带有入队错误的事务影响

    在这里插入图片描述

    ————————————————————————

    ②执行错误

    • 除了入队时可能发生错误以外,事务还可能在执行的过程中发生错误 关于这种错误有两个需要说明的地方:

    • 执行过程中发生的错误都是一些不能在入队时被服务器发现的错误,这些错误只会在命令实际执行时被触发

    • 即使在事务的执行过程中发生了错误,服务器也不会中断事务的执行,它会继续执行事务中余下的其他命令,并且已执行的命令(包括执行命令所产生的结果)不会被出错的命令影响

    对数据库键执行了错误类型的操作是事务执行期间最常见的错误之一

    在下面展示的这个例子中,我们首先用SET命令将键"msg"设置成了一个字符串键,然后
    在事务里面尝试对"msg"键执行只能用于列表键的RPUSH命令,这将引发一个错误,并且这种错误只能在事务执行(也即是命令执行)期间被发现:

    在这里插入图片描述

    • 因为在事务执行的过程中,出错的命令会被服务器识别出来,并进行相应的错误处理, 所以这些出错命令不会对数据库做任何修改,也不会对事务的一致性产生任何影响

    ————————————————————————

    ③服务器停机

    如果Redis服务器在执行事务的过程中停机,那么根据服务器所使用的持久化模式,可能 有以下情况出现:

    • 如果服务器运行在无持久化的内存模式下,那么重启之后的数据库将是空白的,因此数据总是一致的
    • 如果服务器运行在RDB模式下,那么在事务中途停机不会导致不一致性,因为服务器可以根据现有的RDB文件来恢复数据,从而将数据库还原到一个一致的状态。如果找不到可供使用的RDB文件,那么重启之后的数据库将是空白的,而空白数据库总是一致的
    • 如果服务器运行在AOF模式下,那么在事务中途停机不会导致不一致性,因为服务器可以根据现有的AOF文件来恢复数据,从而将数据库还原到一个一致的状态。如果找不到可供使用的AOF文件,那么重启之后的数据库将是空白的,而空白数据库总是一致的

    综上所述,无论Redis服务器运行在哪种持久化模式下,事务执行中途发生的停机都不会影响数据库的一致性

    三、隔离性

    • 事务的隔离性指的是,即使数据库中有多个事务并发地执行,各个事务之间也不会互相影响,并且在并发状态下执行的事务和串行执行的事务产生的结果完全相同
    • 因为Redis使用单线程的方式来执行事务(以及事务队列中的命令),并且服务器保证, 在执行事务期间不会对事务进行中断,因此,Redis的事务总是以串行的方式运行的,并且事务也总是具有隔离性的

    四、耐久性(持久性)

    • 事务的耐久性指的是,当一个事务执行完毕时,执行这个事务所得的结果已经被保存到永久性存储介质(比如硬盘)里面了,即使服务器在事务执行完毕之后停机,执行事务所得的结果也不会丢失

    因为Redis的事务不过是简单地用队列包裹起了一组Redis命令Redis并没有为事务提供任何额外的持久化功能,所以Redis事务的耐久性由Redis所使用的持久化模式决定:

    • 当服务器在无持久化的内存模式下运作时,事务不具有耐久性: 一旦服务器停机,包括 事务数据在内的所有服务器数据都将丢失

    • 当服务器在RDB持久化模式下运作时,服务器只会在特定的保存条件被满足时,才会执行BGSAVE命令,对数据库进行保存操作,并且异步执行的BGSAVE不能保证事务数据被第一时间保存到硬盘里面,因此RDB持久化模式下的事务也不具有耐久性。

    • 当服务器运行在AOF持久化模式下,并且appendfsync选项的值为always时,程序总会 在执行命令之后调用同步(sync)函数,将命令数据真正地保存到硬盘里面,因此这种配置 下的事务是具有耐久性的当服务器运行在AOF持久化模式下,并且appendfsync选项的值为everysec时,程序会

    • 每秒同步一次命令数据到硬盘。因为停机可能会恰好发生在等待同步的那一秒钟之内,这可 能会造成事务数据丢失,所以这种配置下的事务不具有耐久性

    • 当服务器运行在AOF持久化模式下,并且appendfsync选项的值为no时,程序会交由操作系统来决定何时将命令数据同步到硬盘。因为事务数据可能在等待同步的过程中丢失,所以这种配置下的事务不具有耐久性
      在这里插入图片描述
      不论Redis在什么模式下运作,在一个事务的最后加上SAVE命令总可以保证事务的耐久性(不过因为这种做法的效率太低,所以并不具有实用性):

    在这里插入图片描述

    展开全文
  • 我们发现它们具有自然种群反转,最适合于利用观测到的原子跃迁辐射玻色性质。 在可观察到的原子Majorana混合中,我们包括通过高强度X射线束提高了长寿命亚稳态激发X射线速率:在当前XFEL设施中,可以想到...
  • InPBi中Bi纳米级分布是通过原子探针层析成像和透射电镜确定。 沿生长方向和在膜平面内,Bi原子的分布均不均匀。... 具有或不具有这些Bi相关纳米结构InPBi层中区域表现出不同光学性质
  • 匿名用户1级2017-05-03 回答ACID,是指在数据库管理系统(DBMS)中事务所具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。在数据库系统中,一个事务是...

    匿名用户

    1级

    2017-05-03 回答

    ACID,是指在数据库管理系统(DBMS)中事务所具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

    在数据库系统中,一个事务是指由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。

    1)原子性:

    整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

    比如说,一个事务开始更新100行记录,但是在更新了20行之后(因为某种原因)失败了,那么此时数据库会回滚(撤销)对那20条记录的修改。

    2)一致性:

    在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

    事务将数据库从一个一致性状态带入另一个一致性状态。 比如说,在一个银行事务(在描述关系数据库事务的特性时,基本上都是用银行事务来作为描述对象的)中,需要从存储账户扣除款项,然后在支付账户中增加款项。 如果在这个中转的过程发生了失败,那么绝对不能让数据库只执行其中一个账户的操作,因为这样会导致数据处于不一致的状态(这样的话,银行的账目上,借贷就不平衡了)。

    如果数据库系统运行中发生故障,有些事物尚未完成就被迫中断了,系统就将此事务中对数据库的所有已经完成的操作全部撤销,滚回到事务开始时的一致状态。

    3)隔离性:

    两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

    这个特性是说,直到事务结束时(commit/rollback),其他事务(或者会话)对此事务所操作的数据都不可见(但并不是说其他会话的读取会被阻塞)。 比如说,一个用户正在修改hr.employees表,但是没有提交,那么其他用户在这个修改没有提交之前是看不到这个修改的。

    4)持久性:

    在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

    指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

    被提交的更改会永久地保存到数据库中(并不是说以后就不可以修改)。 事务提交之后,数据库必须通过“恢复机制”来确保事务更改的数据不会丢失。

    展开全文
  • 通过基于非平衡格林函数(NEGF)方法进行第一性原理计算,研究了夹在两个Z形石墨烯-纳米碳(zGNR)电极之间单碳原子链(SCAC)自旋依赖性电子传输性质。自旋密度泛函理论(DFT)。 我们计算结果表明,将具有不...
  • 原子转移自由基聚合在超支化大分子合成中应用,胡淑婕,于德梅,超支化聚合物是一类具有不同于线性聚合物性质的新型高分子材料,原子转移自由基聚合(ATRP)作为一种活性可控聚合方法,在超支化�
  • 本文的目的是证明中子可以具有激发态。 玻尔原子的众所周知的特征是它的电子壳可以稳定的基态或各种激发态存在。... 这些状态的性质的计算表明,通常被视为基本粒子的两个超子Λ0和∑0是中子的激发态。
  • 原子、分子与离子

    2016-10-02 09:33:00
    0. 原子 化学元素周期表是根据原子序数从小至大排序的化学元素列表。...不同的原子具有不同的性质好特点,“质子数决定了原子的身份,电子数则决定了原子的性情” 没有人能创造原子,它一直存在着...

    0. 原子

    化学元素周期表是根据原子序数从小至大排序的化学元素列表。

    • 元素周期表刻画的就是原子,迄今为止人类只发现了百十来种原子,正是它们组成了这斑斓的大千世界,
      • 一般而言,一个原子不同于另一个原子的原因就在于原子核内的质子数不同;
      • 不同的原子具有不同的性质好特点,“质子数决定了原子的身份,电子数则决定了原子的性情
    • 没有人能创造原子,它一直存在着,从世界开始的那一天起,创造或者毁灭一个氢原子,也许就像向太阳系引进一颗新的行星或毁灭一颗业已存在的行星那样不可能;
      • 道尔顿《化学哲学的新体系》(1808,道尔顿也是红绿色盲(道尔顿症)的发现者和提出者)

    1. 电离与离子

    • 一杯水中约 5.6 亿个 H2O 分子便会有一个不安分的 H2O 分子,其中的一个 H+ 原子脱离 H2O 的怀抱,

      质子从一个水分子转移给另一个水分子,形成 H3O+和OH-。通常将水合氢离子H3O+简写为H+,其电离方程式为:H2O+H2O≒H3O+ + OH-,简写为 H2O≒H+ + OH-

    • 碳酸饮料的碳酸:H2CO3 = H+ + HCO3-(使溶液呈酸性)

    • 小苏打: HCO3- + H2O = H2CO3 + OH-(使溶液呈碱性)

    2. 原子如何结合

    • 原子若想形成物质,原子们就必须依靠共用外层电子的方法抱成团;
      • 当氢气和氧气混合起来燃烧的时候,氢原子和氧原子就会通过共用电子形成水;

    转载于:https://www.cnblogs.com/mtcnn/p/9423504.html

    展开全文
  • Redis事务ACID性质

    2019-07-12 09:41:19
    在Redis中,事务总是具有原子性(Atomicity)、一致性(Consistency)、和隔离性(Isolation),并且当Redis运行在一些特定持久化模式下,事务也具有耐久性(Durability)。 原子性 事务具有原子性是指,数据库...
  • 在固体物理学中,固体能带结构(又称电子能带结构)描述了禁止或允许电子所带有能量,这是周期性晶格中...当原子形成分子时,原子轨道之间发生相互作用会产生具有孤立能级分子轨道。比如两个氢原子靠近时候,...
  • 原子力显微镜,它是继扫描隧道显微镜(Scanning Tunneling Microscope)之后发明一种具有原子级高分辨新型仪器,可以在大气和液体环境下对各种材料和样品进行纳米区域物理性质包括形貌进行探测,或者直接进行...
  • 原子吸收分光光度计测定法由于其本身所具有的许多优点,已经在冶金、地质、化工、农业、医药、环保等各个领域获得了广泛的应用。尽管预处理的方法因试样性质不同而不同,但无论试样是固体还是液体,是无机物还是有机...
  • 机械和化学领域是众所周知的,但由于缺乏亚原子尺度的实验技术,核的结构和核键的性质仍然是个谜。 最近人们对核在宏观尺度上的整体作用的认识迫使进行更多的研究。 在我们的旅行中,我们以可用的质量缺陷数据为...
  • 原子力显微镜,它是继扫描隧道显微镜(Scanning Tunneling Microscope)之后发明一种具有原子级高分辨新型仪器,可以在大气和液体环境下对各种材料和样品进行纳米区域物理性质包括形貌进行探测,或者直接进行...
  • 多层MoS(2)AL和F原子化学吸附MoS(2)AL表现出金属行为,而被H原子吸附结构仍然是半导体,具有微小带隙。 我们结果表明,在MoS2中形成周期性重复结构可以开发出用于工程化纳米材料有前途技术,并为...
  • 化学组成为43.6%硼和56.4%氮,具有四种不同变体:六方氮化硼(HBN)、菱方氮化硼(RBN)、立方氮化硼(CBN)和纤锌矿氮化硼(WBN)。1. 氮化硼结构氮化硼六方晶系结晶,最常见为石墨晶格,也有无定形变体,除了六方晶...
  • 第五章 表面结构与性质 e 非理想固体表面接触角 实际表面与理想表面不同之处 1 固体表面本身或由于表面污染特别是高能表面固 体表面在 化学组成上往往是不均一 2 因原子或离子排列紧密程度不同不同晶面具有 ...
  • 原子力显微镜,它是继扫描隧道显微镜(Scanning Tunneling Microscope)之后发明一种具有原子级高分辨新型仪器,可以在大气和液体环境下对各种材料和样品进行纳米区域物理性质包括形貌进行探测,或者直接进行...
  • 而我们所谓的原子性就是这个性质:不可再分 原子性可以保障线程安全,因为是不可再分,所以在同一时间,只能有一个线程能够正确操作,达到了线程安全效果 相对于锁而言,原子粒度更细,锁保证的原子粒度...
  • 采用线性缀加平面波方法, 研究了霰石主要成分CaCO3电子结构和线性光学特性, 结果发现, 霰石主要成分CaCO3是一种具有直接带隙 4.29119 eV 化合物, 在这种化合物中, C原子的2s态和O原子的2s态杂化形成了阴离子...
  • 石墨烯,即以蜂窝状晶格排列的单层碳原子,具备一系列出色的性质。自从石墨烯在2003年被发现以来,研究者发现它具有优异的强度、导热性和导电性。最后一种性质使得这种材料非常适合用来制作电路中的微小接触点,但最...
  • A2BB′X6型双钙钛矿分子材料由于其结构稳定、性质优异、成本低廉等优点受到了人们广泛关注,具有无毒、环境稳定性高等特点,同时也成为目前太阳能电池研究领域热点。为了筛选优质双钙钛矿分子,本文采用密度...
  • 由于自阴影效应和沉积原子的有限扩散,形成了在其间具有空隙柱状膜。 随着基底旋转速度增加,微观结构从倾斜柱状结构发展为螺旋形和柱形结构。 柱直径在30-50nm范围内。 较高旋转速度有利于较大结节...
  • 笼型聚倍半硅氧烷的性质及其合成路线图 POSS是由Si-O交替连接的硅氧骨架组成的无机内核,其形状如同一个“笼子”,故得名为笼型聚倍半硅氧烷,其三维尺寸在1.3nm之间,其中Si原子之间的距离为0.5nm,R基团之间距离...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 218
精华内容 87
关键字:

原子具有的性质是