1. mysql有三种锁的级别? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间介于表级锁和行级锁之间;会出现死锁;锁定粒度介于表级锁和行级锁之间,并发 ...
分类:
数据库 时间:
2020-02-03 22:24:57
阅读次数:
88
Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 sync 包下的特殊结构 ...
分类:
编程语言 时间:
2020-02-03 12:11:42
阅读次数:
77
什么是synchronized? synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、D等)正在用这个方法,若有则要等正在使用synchronized方法的线程B(或者C、D)运行完这个方法后再运行此线程A,若没有 ...
分类:
其他好文 时间:
2020-02-02 23:55:00
阅读次数:
122
01 引擎选择 目前广泛使用的是MyISAM和InnoDB两种引擎: MyISAMMyISAM引擎是MySQL 5.1及之前版本的默认引擎,它的特点是: 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁 不支持事务 不支持外键 不支持崩溃后的安全恢复 在表有读取查询的同时,支持往表中插 ...
分类:
数据库 时间:
2020-02-02 13:42:55
阅读次数:
108
1 import java.util.concurrent.TimeUnit; 2 3 /** 4 * 对写业务加锁 5 * 对读业务不加锁 6 * 脏读 7 */ 8 public class Account { 9 10 String name; 11 double balance; 12 13 ...
分类:
编程语言 时间:
2020-01-31 20:53:53
阅读次数:
104
一、synchronized锁住的不是代码块,是对象。 1 /** 2 * synchronized 对某个对象加锁 3 */ 4 public class SynchronizedTest { 5 6 private int count = 10; 7 private Object o = new ...
分类:
编程语言 时间:
2020-01-31 20:37:58
阅读次数:
73
1.什么是synchronized synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行 ...
分类:
其他好文 时间:
2020-01-31 12:36:23
阅读次数:
78
本人曾接手过一些很奇怪的代码,基本到处都是是volatile和硬加锁,说是为了安全,就不怕死锁和性能太差吗?其实我压根不想改这种东西了,既然能过code review那么说明什么问题了?我不会让自己成为这类人。 乐观锁和悲观锁 简单解释就是,悲观锁认为在一个线程使用数据的时候,一定会有别的线程来修改 ...
分类:
编程语言 时间:
2020-01-30 22:46:51
阅读次数:
94
公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁(实现秒杀的一种解决方案) (select * from product p where p.type=’xxxxx’ for update) 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 这些分类并不是全是指锁的状态,有的指锁 ...
分类:
编程语言 时间:
2020-01-30 21:13:57
阅读次数:
64
什么是synchronized synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这 ...
分类:
其他好文 时间:
2020-01-29 23:36:25
阅读次数:
58