Java开发必须要掌握的知识点就包括如何使用锁在多线程的环境下控制对资源的访问限制 ◆ Synchronized ◆ 首先我们来看一段简单的代码: 12345678910111213141516171819 public class NotSyncDemo { public static int i ...
分类:
编程语言 时间:
2019-03-26 10:30:19
阅读次数:
197
一。AQS介绍 AQS(AbstractQueuedSynchronizer)抽象队列同步器,属于多线程编程的基本工具;JDK对其定义得很详细,并提供了多种常用的工具类(重入锁,读写锁,信号量,CyclicBarrier,CountDownLatch),在阅读源码的时候,我是从具体工具类往上读的,这 ...
分类:
其他好文 时间:
2019-03-25 00:54:44
阅读次数:
158
问题背景: 想要协议栈给不是接口ip的报文,ipv4回复arp request,ipv6回复 ndisc solication。 涉及到的知识点: 1.守护进程(apue中有通用code) 2.raw socket抓包 3.文件读写锁 4.用户态回复数据包(参见arposion) 5.写日志 ...
分类:
其他好文 时间:
2019-03-20 10:29:16
阅读次数:
202
悲观锁 总是架设最坏的请款,每次拿数据都认为别人会修改数据,所以要加锁,别人只能等待,直到我释放锁才能拿到锁;数据库的行锁、表锁、读锁、写锁都是这种方式,java中的synchronized和ReentrantLock也是悲观锁的思想。 乐观锁 总是架设最好的情况,每次拿数据都认为别人不会修改数据, ...
分类:
其他好文 时间:
2019-03-12 14:17:13
阅读次数:
189
悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做 ...
分类:
其他好文 时间:
2019-03-02 18:27:39
阅读次数:
169
Mysql数据库引擎有哪些?区别、如何选择? + 引擎MyISAM: 如果表主要是用于插入新记录和读出记录,那么选择MyISAM引擎能实现处理高效率 在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁 ...
分类:
Web程序 时间:
2019-03-02 00:49:41
阅读次数:
217
(0)版本支持mysql5.5及之前的版本是不支持onlineddl的,需要锁全表;mysql5.6及之后的版本支持onlineddl,需要提前获取mdl写锁,在copy数据的时候会降级成mdl读锁;(1)onlineddl简单版工作原理建立一个临时文件,扫描表A主键的所有数据页用数据页中表A的记录生成B+树,存储到临时文件中生成临时文件的过程中,对A的操作记录到日志文件中,临时文件生成后,将日志
分类:
其他好文 时间:
2019-03-01 13:06:21
阅读次数:
200
锁的分类: 1.从粒度来分:表锁和行锁。 2.从类型来分:读锁和写锁。 表锁 偏向MyISAM存储引擎,加锁快,开销小,并发程度最低。 当事务1对表A上了读锁,事务1再想去select同数据库下的其他表就不给查了。事务2此时要修改表A,就阻塞了。 当事务1对表A上了写锁,再想去查找同数据库下其他的表 ...
分类:
数据库 时间:
2019-02-27 20:38:24
阅读次数:
224
多线程中,对共享资源进行访问,为了防止并发引起的相关问题,通常都是引入锁的机制来处理并发问题。 获取到资源的线程A对这个资源加锁,其他线程比如B要访问这个资源首先要获得锁,而此时A持有这个资源的锁,只有等待线程A逻辑执行完,释放锁,这个时候B才能获取到资源的锁进而获取到该资源。 这个过程中,A一直持 ...
分类:
其他好文 时间:
2019-02-26 00:46:18
阅读次数:
352
一.Mysql锁分类 二.MyISAM 1.开门见山 MyISAM表锁有两种模式:表共享读锁(table read lock)和表独占写锁(table write lock),锁的解释如下: myISAM表的读操作,不会阻塞其他用户对同一个表的读请求,但会阻塞对同一个表的写请求。 myISAM表的写 ...
分类:
数据库 时间:
2019-02-25 09:26:27
阅读次数:
224