悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op ...
分类:
其他好文 时间:
2016-03-31 14:34:53
阅读次数:
151
由于本人水平与表达能力有限,有错误的地方欢迎交流与指正。
1 简介
可重入读写锁时基于AQS实现的,典型的使用方法如JDK1.7中的示例:
class RWDictionary {
private final Map m = new TreeMap();
private final ReentrantReadWriteLock rwl =...
分类:
编程语言 时间:
2016-03-31 11:06:14
阅读次数:
262
一、背景知识 1、锁是计算机协调多个进程或线程并发访问某一资源的机制。 A、锁分类。 | 共享锁(读锁):在锁定期间,多个用户可以读取同一个资源,读取过程中数据不会发生变化。 | 排他锁(写锁):在锁定期间,只允许一个用户写入数据,其它用户的读取,写入等操作都会被拒绝。 B、锁颗粒 | 表锁:开销小 ...
分类:
数据库 时间:
2016-03-30 16:24:14
阅读次数:
257
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(
分类:
其他好文 时间:
2016-03-14 09:34:53
阅读次数:
168
IOS内存管理retain,assign,copy,strong,weak IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外
分类:
移动开发 时间:
2016-02-25 13:49:39
阅读次数:
306
最近在监控中发现HiveServer2连接到zookeeper里的连接持续上涨,很奇怪,虽然知道HiveServer2支持并发连接,使用ZooKeeper来管理Hive表的读写锁,但我们的环境并不需要这些,我们已经关闭并发功能,以下是线上的配置,甚至把这些值都改成final了。
但是zookeeper连接依然会涨。后来想想,我们要访问的表是hive去映射的hbase,hivese...
分类:
数据库 时间:
2016-02-24 09:43:37
阅读次数:
220
MyISAM锁调度是如何实现的呢,这也是一个很关键的问题。例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获得锁(即使读请求先到锁等待队列)。但这也造成一个很大的缺陷,即大量的写操作会造成查询操作很难获得读锁
分类:
其他好文 时间:
2016-02-22 16:37:43
阅读次数:
144
MyISAM存储引擎的读锁和写锁是互斥的,读写操作是串行的。那么,一个进程请求某个 MyISAM表的读锁,同时另一个进程也请求同一表的写锁,MySQL如何处理呢?答案是写进程先获得锁。不仅如此,即使读请求先到锁等待队列,写请求后 到,写锁也会插到读锁请求之前!这是因为MySQL认为写请求一般比读请求
分类:
其他好文 时间:
2016-02-19 10:40:33
阅读次数:
142
为并发吞吐性能所做的优化 ConcurrentHashMap使用了一些技巧来获取高的并发性能,同时避免了锁。这些技巧包括: 为不同的Hash bucket(所谓hash bucket即不同范围的key的hash值)使用多个写锁; 利用JMM(Java Memory Model,java内存模型)的不
分类:
其他好文 时间:
2016-02-16 23:25:42
阅读次数:
187