baskbull baskbull
2年前
操作系统学习笔记 原来自旋锁还可以这样实现!
在java中我们知道对线程使用CAS(compareandswap)来实现自旋锁,在没有学习操作系统之前,我以为这是唯一一种方法了。但是今天学到了操作系统中的同步互斥,终于明白了原来CAS、TS、Swap这些都是硬件提供的原子操作罢了!不仅CAS可以实现自旋锁,TS(TestandSet)同样可以!临界区临界区进程中访问临界资源的一段需要互斥执行
Wesley13 Wesley13
2年前
java操作lua脚本
java操作lua脚本实例1.前言在上一篇文章Redis中使用Lua脚本来实现并发下的原子操作中我对Lua语言的一些简单的语法及其在Redis中的操作进行了介绍,但是在Java开发中我们还需要进一步的学习才能使这种技术落地。今天就结合SpringDataRedis这个我们经常使用的Redis开发组件来实际尝试一下Lua脚本。
Wesley13 Wesley13
2年前
java并发处理 (同步与原子性)
3、线程同步与原子性线程安全:每一个线程只做自己的工作固然好,但是线程之间经常会相互影响(竞争或者合作),多个线程需要同时操作同一个资源(比如一个对象)是常有的事。这个时候,线程安全问题就出现了。举一个《thinkinginjava》第四版中的例子。有一个EvenGenerator类,它的next()方法用来生成偶数。如下:public
Stella981 Stella981
2年前
Redis事务,持久化,哨兵机制
1Redis事务基本事务指令Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中出现错误,事务不能回滚,Redis未提供回滚支持。multi 开启事务exec 执行事务127.0.0.1:6379multiOK127.0.0.
Wesley13 Wesley13
2年前
Java多线程并发06——CAS与AQS
在进行更近一步的了解Java锁的知识之前,我们需要先了解与锁有关的两个概念CAS与AQS。关注我的公众号「Java面典」了解更多Java相关知识点。CAS(CompareAndSwap/Set)概念CAS函数,是比较并交换函数,它是原子操作函数。原理CA
Stella981 Stella981
2年前
Apache Hudi Rollback实现分析
1\.介绍在发现有些commit出错时,可使用Hudi提供的rollback回滚至指定的commit,这样可防止出现错误的结果,并且当一次commit失败时,也会进行rollback操作,保证一次commit的原子性。2\.分析rollback(回滚)的入口在HoodieWriteClientrollback,其
Wesley13 Wesley13
2年前
C++ ORM ODB 入门(三)
本节介绍ODB的事务与异常。数据库操作经常涉及到操作多个表格,或者表格中的多行数据。因此必须保证整个过程是原子性的。ODB为数据库的事务提供了易于使用的接口。使用odb::databse的相关方法(persist、update、erase、load)时,必须处于某个事务之间。事务由odb::transcation类表示.odb::tra
Wesley13 Wesley13
2年前
mysql 数据库的四种隔离级别
最近在看高性能MYSQL一书,所以对其进行例子分析已巩固自己的印象  数据库的事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。  比如说我需要对外销售1张电影票,且登记一下销售信息到另一个表,至少需要以下3个步骤  1.查询电影票数量是否满足销售1张电影票SELECTremain\_countFROM cinemaW
3A网络 3A网络
1年前
详谈 MySQL 8.0 原子 DDL 原理
详谈MySQL8.0原子DDL原理背景MySQL5.7的字典信息保存在非事务表中,并且存放在不同的文件中(.FRM,.PAR,.OPT,.TRN,.TRG等)。所有DDL操作都不是CrashSafe,而且对于组合DDL(ALTER多个表)会出现有的成功有的失败的情况,而不是总体失败。这样主从复制就出现了问题,也导致基于复制的高可
Redis数据结构(一)-Redis的数据存储及String类型的实现
1引言Redis作为基于内存的非关系型的KV数据库。因读写响应快速、原子操作、提供了多种数据类型String、List、Hash、Set、SortedSet、在项目中有着广泛的使用,今天我们来探讨下下Redis的数据结构是如何实现的。