1 d_user = D('User');10 $this->user = M('user');11 12 //打款的配置信息13 $this->arr = array(14 'userA' => 1,15 ...
分类:
Web程序 时间:
2014-10-11 01:06:04
阅读次数:
389
锁是处理数据库事务并发的一种技术,当两个或更多数据库事务并发地访问相同数据时,锁可以保证同一时间只有一个事务可以修改数据。锁的方法通常有两种:乐观锁和悲观锁。乐观锁认为多个并发事务之间很少出现冲突,也就是说不会经常出现同一时间读取或修改相同数据,在乐观锁中,其目标是让并发事务自由地同时得到处理,而不是发现或预防冲突。两个事务在同一时刻可以访问相同的数据,但为了预防冲突,需要对数据执行一次检查,检查...
分类:
其他好文 时间:
2014-09-30 23:59:30
阅读次数:
198
目录一、数据库事务的定义二、数据库事务并发可能带来的问题三、数据库事务隔离级别四、使用Hibernate设置数据库隔离级别五、使用悲观锁解决事务并发问题六、使用乐观锁解决事务并发问题Hibernate事务与并发问题处理(乐观锁与悲观锁)一、数据库事务的定义 数据库事务(Database Trans....
分类:
系统相关 时间:
2014-09-24 14:21:16
阅读次数:
310
悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题;而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后不成功。这就是悲观锁与乐观锁的区别,悲观锁会把整个对象加锁占为自有后才去做操作,乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据。这一节将对乐观锁进行深入探讨。
上节讨论的Synchr...
分类:
其他好文 时间:
2014-09-09 21:38:29
阅读次数:
330
锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修...
分类:
编程语言 时间:
2014-09-09 10:46:08
阅读次数:
223
volatile既然不足以保证数据同步,那么就必须要引入锁来确保。互斥锁是最常见的同步手段,在并发过程中,当多条线程对同一个共享数据竞争时,它保证共享数据同一时刻只能被一条线程使用,其他线程只有等到锁释放后才能重新进行竞争。对于java开发人员,我们最熟悉的肯定就是用synchronized关键词完成锁功能,在涉及到多线程并发时,对于一些变量,你应该会毫不犹豫地加上synchronized去保证变...
分类:
其他好文 时间:
2014-09-05 19:58:11
阅读次数:
204
假如两个线程同时修改数据库同一条记录,就会导致后一条记录覆盖前一条,从而引发一些问题。例如: 一个售票系统有一个余票数,客户端每调用一次出票方法,余票数就减一。情景: 总共300张票,假设两个售票点,恰好在同一时间出票,它们做的操作都是先查询余票数,然后减一。一般的sql语句: declare...
分类:
数据库 时间:
2014-09-04 14:48:59
阅读次数:
257
锁( locking )
业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算
处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中
(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机
制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓
的 “ 锁 ” ,即给我们选...
分类:
其他好文 时间:
2014-08-29 18:20:08
阅读次数:
207
对于CAS是一种有别于synchronized的一种乐观锁实现.是一种非阻塞锁算法.CAS通过与原始预期值进行比较来确定是否修改主内存中数据的一种方案.基于一个线程的失败或者挂起不应该影响其他线程的失败或挂起这样的前提,而提出硬件层次的实现数据处理的互斥。可以自动更新共享数据,而且能够检测到其他线程的干扰,而
compareAndSet() 就用这些代替了锁定。对于实现CAS的原子类(Atom...
分类:
编程语言 时间:
2014-08-22 10:56:46
阅读次数:
261