前言 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算机资源(如CPU、RAM、IO等)的争用外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据并发访问性能的一个重要因素。从这个角度来说,锁对数据库 ...
分类:
数据库 时间:
2020-01-15 21:31:26
阅读次数:
94
并发编程的三大特性 1、原子性 对于成员变量a来说,如果线程A执行以下操作: a++; 此时需要分三步执行: (1)读取a的值 (2)将a的值加1 (3)将加1后的值赋给a 在执行以上三步过程中,如果另一个线程B对a进行了操作,那么就不能保证原子性了。 要保证原子性,可以加锁,如synchroniz ...
分类:
其他好文 时间:
2020-01-15 19:25:35
阅读次数:
87
在Linux Kernel中某些特定含义的函数命令有自己的规律,比如这里将简单的介绍一下函数名前双下划线__和devm_xxx函数的意思。 函数名称前的双下划线__ 标记需要加锁: 在内核中,有很多函数,有的是需要调用者自己加锁保护的,有些是不需要加锁保护的。对于这些场景,linux kernel采 ...
分类:
系统相关 时间:
2020-01-15 11:55:29
阅读次数:
107
栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法( Method )和运行期数据的数据集,当一个方法A被调用时就产生了一个栈帧 Fl ,并被压入到栈中, A方法又调用了B方法,于是产生栈帧 F2 也被压入栈,B方法又调用了C方法,于是产生栈帧... ...
分类:
其他好文 时间:
2020-01-14 09:33:31
阅读次数:
62
1、redis分布式锁的基本实现 redis加锁命令: 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用),超时时间设为30000毫秒(PX选项的作用) 这个key的值设为“my_random_value”。这个值必须在所有获取锁请求的客户端里保持唯一。 SETNX ...
分类:
其他好文 时间:
2020-01-14 00:08:41
阅读次数:
123
多进程的几种方法 Lock:可以避免访问资源时的冲突 Pool:可以提供指定数量的进程 Queue:多进程安全的队列,实现多进程之间的数据传递 Pipe:实现管道模式下的消息发送与接收 Lock(加锁) #加锁 ''' 输出为 work_1 start work_2 start work_1 end ...
分类:
编程语言 时间:
2020-01-12 11:49:33
阅读次数:
100
insert 如果我们有需求是需要进行加锁,才能进行在进行insert,如果在java层次来进行加锁,会导致效率很低,我们此时就可以将之前在java层次的判断放到mysql语句中,如果条件成立才进行插入数据; Update update set status=0 where id=1 insert ...
分类:
数据库 时间:
2020-01-11 22:00:08
阅读次数:
83
为什么要有锁?我们都是知道,数据库中锁的设计是解决多用户同时访问共享资源时的并发问题。在访问共享资源时,锁定义了用户访问的规则。根据加锁的范围,MySQL中的锁可大致分成全局锁,表级锁和行锁三类。在本篇文章中,会依次介绍三种类型的锁。在阅读本篇文章后,应该掌握如下的内容:为什么要在备份时使用全局锁?为什么推荐使用InnoDB作为引擎进行备份?设置全局只读的方法表级锁的两种类型MDL导致数据库挂掉的
分类:
数据库 时间:
2020-01-11 09:43:32
阅读次数:
92
一种方法就是给DNS配置文件枷锁: root@xuanfei-desktop:~# chattr +i /etc/resolv.conf //加琐 root@xuanfei-desktop:~# lsattr /etc/resolv.conf //查看加锁是否成功 有i表示成功 i /etc/res ...
分类:
其他好文 时间:
2020-01-10 17:17:54
阅读次数:
130
简介 synchronizaed关键字是JAVA阻塞同步(互斥同步)中最常用的一种方式,使用时将此关键字加到所需同步的代码块儿前即可,比如 int i = 0; synchronized (this){ i++; } synchronizaed同步方式在JAVA中是重量级加锁方式,下面来介绍一下它的 ...
分类:
编程语言 时间:
2020-01-09 20:24:20
阅读次数:
94