锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则。 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁。 表锁就是把整张表锁起来,特点是加锁快,开销小,不会出现死锁,锁粒度大,发生锁冲突的概率高,并发相对较低。 行锁 ...
分类:
数据库 时间:
2018-11-15 10:24:59
阅读次数:
167
单例模式引发相关整理 关联线程安全 在多线程下,懒汉式会有一定修改。当两个线程在if(null == instance)语句阻塞的时候,可能由两个线程进入创建实例,从而返回了两个对象。对此,我们可以加锁,保证仅有一个线程处于getInstance()方法中,从而保证了线程一致性。多线程下的单例 /* ...
分类:
其他好文 时间:
2018-11-14 14:19:01
阅读次数:
166
synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对象加锁。那么,本文来介绍一下synchronized关键字的实现原理是什么。在阅读本文之间 ...
分类:
编程语言 时间:
2018-11-13 21:45:07
阅读次数:
239
引言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢 select from table where id = ? select from table where id 意向锁存在的目的? OK,这里说一下意向锁存在的目的。假设事务T1,用X锁来锁住了表上的几条记录,那么此时表上存在IX锁,即 ...
分类:
数据库 时间:
2018-11-13 11:06:48
阅读次数:
187
GIL(Global Interpreter Look):全局解释器锁,为了避免线程竞争资源造成数据错乱。 其实每个py程序都必须有解释器参加,解释器就是一堆代码,就等于多线程要竞争同一个解释器的代码,所以要给解释器加互斥锁。而且除了自己开的线程,还有用于垃圾回收的系统线程等,所以必须加锁 加锁以后 ...
分类:
其他好文 时间:
2018-11-13 02:28:28
阅读次数:
264
1、一行代码实现1-100的和 2、如何在一个函数内修改全局变量的值 3、字典如何删除键和合并两个字典 4、说一说对python的GIL的理解 GIL是python的全局解释器锁,在一个进程中如果有多个线程执行,其中一个线程在执行的时候会霸占python解释器(加锁即GIL),那么其他线程就不能执行 ...
分类:
编程语言 时间:
2018-11-12 21:21:07
阅读次数:
202
Mysql领域的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。根据当前的数据更新语句(UPDATEusersetname=‘11111‘whereaccount=‘1‘),该条件字段account并没有添加索引,所以导致数据表被锁。我们验证一下:第一种情况,通过
分类:
数据库 时间:
2018-11-12 20:26:53
阅读次数:
213
乐观锁和悲观锁 乐观锁和悲观锁是在数据库中引入的名词,但是在并发包锁里面也引入了类似的思想,所以这里还是有必要讲解一下。 悲观锁指对数据被外界修改持保守的态度,认为数据很容易就会被其他线程修改,所以在数据被处理前就先对数据加锁,并在整个数据处理过程中,使数据处于锁定状态,悲观锁的实现往往依靠数据库提 ...
分类:
编程语言 时间:
2018-11-11 16:56:41
阅读次数:
185
1 lock是接口实现,synchronized是内置方法native实现 2 lock可以主动释放锁,synchronized只能是加锁的代码块执行完毕或者遇到异常退出被动的释放锁 3 性能方面,如果竞争资源不是很激烈的情况,两者的性能差不太多,如果是在竞争资源激烈的情况下,lock的性能要优于s ...
分类:
其他好文 时间:
2018-11-09 13:49:53
阅读次数:
238
锁概述 MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则。 最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁。 表锁就是把整张表锁起来,特点是加锁快,开销小,不会出现死锁,锁粒度大,发生锁冲突的概率高,并发相对较低。 行锁 ...
分类:
数据库 时间:
2018-11-09 12:40:55
阅读次数:
162