1、表结构CREATETABLE`t3`(`id`int(11)NOTNULL,`id2`int(11)DEFAULTNULL,`id3`int(11)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`id2`(`id2`,`id3`))ENGINE=InnoDBDEFAULTCHARSET=utf8;2、数据mysql>select*fromt3;+----+-
分类:
数据库 时间:
2018-02-09 22:24:26
阅读次数:
233
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作。在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不一致问题。 但在实践中,为了提高系统的可用性,我们一般都会进行多实例部署。而不同实例有各自的JVM, ...
分类:
数据库 时间:
2018-02-09 15:42:18
阅读次数:
225
线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。 ...
分类:
编程语言 时间:
2018-02-08 00:23:00
阅读次数:
167
package 第二章.错误的加锁;/** * Created by zzq on 2018/1/22. */public class BadLockOnInteger implements Runnable{ public static Integer i = 0; static BadLockO ...
分类:
其他好文 时间:
2018-02-07 12:10:14
阅读次数:
137
一、先说锁的概念 锁级别: 1.行级锁: InnoDB引擎(也支持表级锁,默认是行级锁),开销大,加锁慢;会出现死锁。锁定粒度最小,发生锁冲突的概率最低,并发度最高。 2.表级锁:MylSAM引擎和Memory引擎,开销小,加锁快;不会出现死锁,锁定粒度最大,发生锁冲突的概率最高,并发度最低。 3. ...
分类:
数据库 时间:
2018-02-06 20:28:09
阅读次数:
310
一、背景 熟悉MySQL数据库的朋友们都知道,查询数据常见模式有三种: 1. select ... :快照读,不加锁 2. select ... in share mode:当前读,加读锁 3. select ... for update:当前读,加写锁 从技术层面理解三种方式的应用场景其实并不困难 ...
分类:
数据库 时间:
2018-02-06 13:03:50
阅读次数:
199
不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。正例: 反例: subList 也一样 ...
分类:
编程语言 时间:
2018-02-05 12:42:00
阅读次数:
251
多线程一共就俩问题:1.线程安全(访问共享数据) 2.线程通信(wait(),notify()) 1.线程安全,无非就是加锁,访问共享资源时,synchronized 2.线程通信,就是控制各个线程之间的额执行顺序,线程之间是无法进行通讯的,也是借助于第三方object,object的wait()和 ...
分类:
编程语言 时间:
2018-02-05 12:35:38
阅读次数:
135
![](http://i2.51cto.com/images/blog/201802/04/ae9cd115835ab1ad91839155e78f2e0e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3po
分类:
数据库 时间:
2018-02-04 21:03:08
阅读次数:
190
![](http://i2.51cto.com/images/blog/201802/04/0595d2efd7968747cbe0bd6ca88a3dd0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3po
分类:
数据库 时间:
2018-02-04 20:57:44
阅读次数:
148