悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
编程语言 时间:
2018-03-01 17:10:01
阅读次数:
249
一、数据库事务的4个基本特征 事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列。事务ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 原 ...
分类:
数据库 时间:
2018-02-28 14:13:12
阅读次数:
212
并发环境下进行编程时,需要使用锁机制来同步多线程间的操作,保证共享资源的互斥访问。加锁会带来性能上的损坏,似乎是众所周知的事情。然而,加锁本身不会带来多少的性能消耗,性能主要是在线程的获取锁的过程。如果只有一个线程竞争锁,此时并不存在多线程竞争的情况,那么JVM会进行优化,那么这时加锁带来的性能消耗 ...
分类:
编程语言 时间:
2018-02-27 23:26:31
阅读次数:
161
1. Linux中主要有哪几种内核锁? Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。 ...
分类:
系统相关 时间:
2018-02-23 12:04:14
阅读次数:
195
一、前言 在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spi ...
分类:
系统相关 时间:
2018-02-13 22:55:45
阅读次数:
531
什么是事务(transaction) 保证成批操作要么完全执行,要么完全不执行,维护数据的完整性。也就是要么成功要么失败。 事务可以是n条sql语句(n>=0) 不是所有数据库引擎支持事务,InnoDB引擎支持事务处理 事务四大特性 原子性(Atomic):事务的所有所有操作要么全部执行,要么全部不 ...
分类:
数据库 时间:
2018-02-11 19:54:39
阅读次数:
322
lock(); if(pcntl_fork() > 0){ sleep(1); //解锁 $lock->unlock(); }else{ echo "子进程 等到锁\n"; //上锁 $lock->lock(); echo "子进程 获取锁\n"; //释放锁 $lock->unlock(); ex... ...
分类:
其他好文 时间:
2018-02-11 16:19:50
阅读次数:
219
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作。在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不一致问题。 但在实践中,为了提高系统的可用性,我们一般都会进行多实例部署。而不同实例有各自的JVM, ...
分类:
数据库 时间:
2018-02-09 15:42:18
阅读次数:
225
线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 ...
分类:
编程语言 时间:
2018-02-08 00:23:00
阅读次数:
167
[Spring框架]Spring 事务管理基础入门总结. 前言:在之前的博客中已经说过了数据库的事务, 不过那里面更多的是说明事务的一些锁机制, 今天来说一下Spring管理事务的一些基础知识. 之前的文章: [数据库事务与锁]详解一: 彻底理解数据库事务一, 什么是事务 事务是逻辑上一组操作,这组 ...
分类:
编程语言 时间:
2018-02-07 17:05:13
阅读次数:
193