进程中的管道:Pipe IPC通信的一种机制,队列就是基于管道来完成通信的,但是管道是原生的通信方式 在进程之间会产生数据不安全的情况,需要自己手动加锁来处理 管道在数据传输过程中,还涉及到一个端口管理,这个需要我们在代码中做处理才能使用代码更加完善 进程中的队列:管道+锁,进程之间的数据安全 进程 ...
分类:
其他好文 时间:
2018-07-29 17:02:49
阅读次数:
116
[TOC] ReentrantLock(基于jdk1.8) ReentrantLock 可重入锁, 支持重进入的锁; 表示该锁能够支持一个线程对资源的重复加锁; 除此之外, 该锁还支持获取锁时的公平和非公平选择; __公平锁与非公平锁__ 公平锁: 在绝对时间上, 先对锁进行获取请求的一定先被满足, ...
分类:
其他好文 时间:
2018-07-28 19:37:03
阅读次数:
166
MVCC是行级锁的一个变种,但是它在很多的情况下避免了加锁操作,因此开销更低。MySQL,包括Oracle、PostgreSQL都实现了MVCC,虽然每个关系数据库实现不一样,但大都是实现了非阻塞的读操作,写操作也只锁定必要的行。 MVCC的实现原理:InnoDB的MVCC的实现原理,是通过在每行记 ...
分类:
数据库 时间:
2018-07-26 23:27:45
阅读次数:
179
mysql的锁机制比较简单,最显著的特点是不同的存储引擎支持不同的锁机制。innodb支持行锁,有时也会升级为表锁;myisam只支持表锁。表锁的特点就是开销小、加锁快;不会出现死锁;锁粒度大,发生锁冲突的概率高,并发度相对低。行锁的特点就是开销大、加锁慢;会出现死锁;锁粒度小,发生锁冲突的概率低,并发度也相对较高。1、innodb的锁类型:主要有:读锁(共享锁)、写锁(排他锁)、意向锁和MDL锁
分类:
数据库 时间:
2018-07-25 16:11:08
阅读次数:
204
synchroized是jvm提供的,无需手动控制它可以自动对多线程访问的资源进行加锁与解锁,它可以修饰方法,也可以修饰代码块. 这边博客记录下个人对synchrozied的理解如下: 1.为什么Java要提供synchronized? 当多条线程去对一个类的实例变量进行修改,这时会发生变量的不确定 ...
分类:
其他好文 时间:
2018-07-25 11:31:22
阅读次数:
195
表INNODB_TRX的结构说明 等待事务的锁ID,如trx_state的状态为LOCK WAIT,那么该值代表当前的事务等待之前事务 占用锁资源的ID。若trx_state不是LOCK WAIT, 则该值为NULL 事务的权重,反映了一个事务修改和锁定的行数。在InnoDB存储引擎中,当发生死锁需 ...
分类:
数据库 时间:
2018-07-22 16:55:36
阅读次数:
143
1、加锁代码结构 2、解锁代码结构 3、java实例 4、测试类 5、测试日志 加锁代码结构 解锁代码结构 ...
分类:
其他好文 时间:
2018-07-22 14:11:11
阅读次数:
170
使用watch构建锁的代码结构。(最着负载不断增加,系统完成一次加锁操作,重试次数不断加大) ...
分类:
其他好文 时间:
2018-07-22 12:58:42
阅读次数:
179
1、redis中使用WATCH实现锁机制,是最次之的方式。WATCH只会在数据被其他客户端抢先修改了的情况下,“通知”执行了这个命令的客户端,而不会阻止其他客户端对数据进行修改。此类锁成为“乐观锁” 2、redis提供SETNX命令确实具有基本的加锁功能,但他的功能并不完整,并且也不具备分布式锁常见 ...
分类:
其他好文 时间:
2018-07-22 12:56:19
阅读次数:
130
分布式锁在分布式应用中应用广泛,想要搞懂一个新事物首先得了解它的由来,这样才能更加的理解甚至可以举一反三。 首先谈到分布式锁自然也就联想到分布式应用。 在我们将应用拆分为分布式应用之前的单机系统中,对一些并发场景读取公共资源时如扣库存,卖车票之类的需求可以简单的使用同步或者是加锁就可以实现。 ... ...
分类:
其他好文 时间:
2018-07-20 11:29:16
阅读次数:
157