说道多线程的安全问题,很多人想到就就是加锁。用到synchronized关键字。 那就要先说说synchronized问什么能够保证线程安全了。 首先要了解线程的工作方式:线程工作分为工作内存和主内存。主内存就是堆和静态区。当线程运行时,首先将主内存的数据拿到工作内存 然后在工作内存中运行,再将数据 ...
分类:
编程语言 时间:
2017-06-18 17:27:06
阅读次数:
134
表设计阶 引擎选择 目前广泛使用的是MyISAM和InnoDB两种引擎: MyISAM引擎是MySQL 5.1及之前版本的默认引擎,它的特点是: 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁 不支持事务 不支持外键 不支持崩溃后的安全恢复 在表有读取查询的同时,支持往表中插入新纪录 ...
分类:
数据库 时间:
2017-06-18 15:15:31
阅读次数:
204
SQL Server 中的 NOLOCK 究竟是什么意思 一般用于此类语句中:select * from t with(NOLOCK) nolock是不加锁查询。能够读取被事务锁定的数据,也称为脏读。 说明: 使当前会话的查询,不受其他会话的事务所堵塞。 可是这样做,就读取了其他事务的“改动后未提交 ...
分类:
数据库 时间:
2017-06-18 10:41:30
阅读次数:
159
1.单例模式的定义 单例模式(Singleton Pattern):用来创建独一无二的,只能有一个实例的对象的入场券。 在我们进行开发的时候,有些对象我们只需要一个,比如:配置文件,工具类,线程池、缓存、日志对象等。如果创造出多个实例,就会导致许多问题,比如占用资源过多,不一致的结果等。使用单例模式 ...
分类:
其他好文 时间:
2017-06-17 20:36:43
阅读次数:
213
锁机制适用于高并发场景:高并发订单、秒杀…… apache压力测试 Mysql锁详解 语法 加锁:LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 解锁:UNLOCK TABLES Read:读锁|共享锁 : 所有的客户端只能读 ...
分类:
数据库 时间:
2017-06-16 21:16:42
阅读次数:
260
以下内容转自http://ifeve.com/deadlock/: 死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。 例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发 ...
分类:
编程语言 时间:
2017-06-16 10:14:54
阅读次数:
125
以下内容转自http://ifeve.com/deadlock-prevention/: 在有些情况下死锁是可以避免的。本文将展示三种用于避免死锁的技术: 加锁顺序 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生。 如果能确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发 ...
分类:
编程语言 时间:
2017-06-16 10:10:37
阅读次数:
122
1. 事务里的写操作,四种隔离级别,都会加排他锁。 2. 事务里的读操作,前三种隔离级别,不会加锁,最后一种隔离级别,会加共享锁。 3. 上面的写、读操作,都是隐式加的锁。 可以自己显示对读操作进行加锁:SELECT ... LOCK IN SHARE MODE(对这行数据加共享锁);SELECT ...
分类:
数据库 时间:
2017-06-15 21:39:46
阅读次数:
167