介绍在上篇博客中我详细说明了各种单例的写法和问题。以为我们已经找到很好单例写法和问题解决办法。但是Java就是这么有意思,总有新的想法提出和问题出现。
上篇博客的的双重检查加锁(double checked locking)单例在Java1.5之前也会某种情况下产生多个实例,并且volatile关键字也会导致的一些复杂的问题枚举单例在《Effective Java 》第二版第3条中,提到这一句话...
分类:
移动开发 时间:
2016-05-12 23:31:41
阅读次数:
474
hibernate支持两种锁:悲观锁(Pessimistic Locking)和乐观锁(Optimistic Locking)悲观锁:指的是对数据库数据被外界的修改持保守态度(无论是本系统的事务处理,或者是外部系统的事务处理),在整个数据处理的过程数据都处于锁定的状态。hibernate中的悲观锁,是依靠数据库中的锁机制(因为只有数据库层才能控制本系统和外部系统对数据库的数据操作)。例如”selec...
分类:
Web程序 时间:
2016-05-10 07:09:56
阅读次数:
221
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情 ...
分类:
数据库 时间:
2016-05-04 15:46:34
阅读次数:
189
1 背景 1
1.1 MVCC:Snapshot
Read vs Current Read 2
1.2 Cluster
Index:聚簇索引 3
1.3 2PL:Two-Phase
Locking 3
1.4 Isolation
Level 4
2 一条简单SQL的加...
分类:
数据库 时间:
2016-04-29 16:45:30
阅读次数:
266
首先这两种方式都是延迟初始化机制,就是当要用到的时候再去初始化。 但是Effective Java书中说过:除非绝对必要,否则就不要这么做。 1. DCL (double checked locking)双重检查: 如果出于性能的考虑而需要对实例域(注意这个属性并没有被static修饰)使用延迟初始 ...
分类:
其他好文 时间:
2016-04-27 18:37:43
阅读次数:
203
乐观锁: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而 言,这样的开销往往无法承受。而乐观锁机制在一定程度上解决了这 ...
分类:
其他好文 时间:
2016-04-27 12:52:17
阅读次数:
179
乐观锁(Optimistic Locking): 乐观锁意思是不锁定表的情况下,利用业务的控制来解决并发问题,这样即保证数据的并发可读性又保证保存数据的排他性,保 证性能的同时解决了并发带来的脏数据问题。 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依 靠数据库的锁机制实现 ...
分类:
其他好文 时间:
2016-04-06 15:20:37
阅读次数:
184
锁(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会 ...
分类:
编程语言 时间:
2016-03-31 14:30:40
阅读次数:
208
单例模式是最简单的设计模式,实现也非常“简单”。一直以为我写没有问题,直到被 Coverity 打脸。 前段时间,有段代码被 Coverity 警告了,简化一下代码如下,为了方便后面分析,我在这里标上了一些序号: 大家知道,这可是高大上的 Double Checked locking 模式,保证多线
分类:
编程语言 时间:
2016-03-23 09:02:43
阅读次数:
287
链接地址:http://hedengcheng.com/?p=771 1 背景 1 1.1 MVCC:Snapshot Read vs Current Read 2 1.2 Cluster Index:聚簇索引 3 1.3 2PL:Two-Phase Locking 3 1.4 Isolation
分类:
数据库 时间:
2016-03-18 10:46:10
阅读次数:
270