为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

http://www.cnblogs.com/shijiaqi1066/p/5783205.html

1. 数据库悲观锁

对表加锁;

操作表(增删改查);

对表解锁;

2. 数据库乐观锁

update 表 set 列 = newValue where [条件] and 列 = 旧值;

注意:set 与 where 是合并在一起的,即原子执行的。

解决ABA问题

对每张表引入版本号version。

改进:

update 表 set 列 = newValue , version = oldVersion+1  where [条件] and version = oldVersion;

update失败怎么办?读取当前值,再次update,直到指定次数,或永远。

3. CAS

即 compare and swap,swap的意思虽然为“交换”,但实际编程中swap其实可以理解为set。

相当于数据库乐观锁中使用的update语句。比较与交换是一个连在一起的操作,即比较交换是一个原子操作。

比较失败怎么办?不交换,自旋。

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/ShiJiaqi。

http://www.cnblogs.com/shijiaqi1066/p/5783205.html

最新文章

  1. shell面试题目总结
  2. 如何书写高质量的jQuery代码(转)
  3. destoon 深度整合discuz x2 UC 之免邮箱二次验证
  4. 转: Oracle中的物化视图
  5. Linux Lab
  6. Builder创建者模式
  7. Java 将自己定义的对象作为HashMap的key
  8. 文本属性Attributes 初步
  9. Dockerfile命令详解(超全版本)
  10. 移动端布局最佳实践(viewport+rem)
  11. docker~windows版本的安装与使用
  12. 齐博cms 7.0 漏洞分析
  13. Flex布局学习笔记
  14. pentaho cde 自定义复选下拉框 checkbox select
  15. HBase之CF持久化系列(续1)
  16. 高阶组件 HOC
  17. 字符设备驱动(一)---led
  18. ArcGIS AddIn调用ArcMap自带的对话框
  19. web api HttpConfiguration
  20. Fiddler(一)Fiddler介绍及应用场景

热门文章

  1. java里的静态变量是放在了堆内存还是栈内存?
  2. 让VS2010支持HTML5
  3. apache虚拟主机的设置
  4. 【转】OS X Mavericks: 防止 Mac 进入睡眠 -- 不错
  5. HTTP2.0那些事
  6. [c#美味] Guid ToString 格式知多少?
  7. 一例胜千言,详谈SQL Sever数据库锁
  8. JAX-WS(JWS)发布WebService
  9. acm位运算应用 搜索
  10. [BILL WEI] SQL 巧用临时表