在分布式系统中,为保证同一时间只有一个客户端可以对共享资源进行操作,需要对共享资源加锁来实现,常见有三种方式: 基于数据库实现分布式锁 基于 Redis 实现分布式锁 基于 Zookeeper 实现分布式锁 高并发下数据库锁性能太差,本文不做探究。仅针对Redis 和 Zookeeper 实现的分布 ...
分类:
其他好文 时间:
2020-05-24 09:53:33
阅读次数:
65
浅谈数据库悲观锁和乐观锁 现在我们简单聊一下数据库中的悲观锁和乐观锁 悲观锁 悲观锁正如其名称,比较悲观。总会认为:每当修改数据时,会有其他线程也会同时修改该数据。所以针对这种情况悲观锁的做法是:读取数据之后就加锁(eg: select...for update),这样别的线程读取该数据的时候就需要 ...
分类:
数据库 时间:
2020-05-19 22:28:12
阅读次数:
73
单例模式是设计模式中最简单模式了,主要作用是对于一个类,在整个项目中只实例化一次,本次记录四种实现方式,并说说优劣性。 1.懒汉模式实现: class Single1 { //懒汉模式顾名思义,就是比较懒,在类加载的时候不调用实例方法 //当真正调用的时候去实例化方法 private static ...
分类:
其他好文 时间:
2020-05-18 14:41:56
阅读次数:
51
当有多个事务同时更新一条sql时,mysql是如何处理的呢?很显然,使用加锁的方式,一个事务获得了锁,进行操作,其他事务排队一个个等着,等当前这个事务执行完释放锁,其他事务获取锁取到锁的进行操作。这里的锁就是独占锁,也就是X锁。 那么如果有查询这一行数据时,是要加锁吗?不是的,mysql为了提高性能 ...
分类:
数据库 时间:
2020-05-18 01:05:05
阅读次数:
117
sudo cd help 查看帮助 ll 查看当前文件夹 cd MetaXcan/ 进入文件夹 cd ../.. 返回上两级文件夹 cd 返回之前的文件夹 mkdir [文件夹] 创建文件夹 sudo less document 打开文件阅读 sudo wc c l w data.txt 查看文件字 ...
分类:
系统相关 时间:
2020-05-16 21:02:10
阅读次数:
80
在Ubuntu执行命令时,会出现无法对目录 “/var/lib/apt/lists/ 加 锁”的错误。 使用sudo apt-get update命令时出现如下错误: E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource ...
分类:
其他好文 时间:
2020-05-16 10:40:06
阅读次数:
211
单例设计模式:确保一个类只有一个实例,并提供该实例的全局访问点。即使用一个私有构造函数,一个私有静态变量及一个公有静态函数来实现。 1 /* 2 单例模式,懒汉式 3 弊端:线程不安全,有延迟加载的情况出现,即不是在类创建时就已经加载了,而是调用的getInstance() 4 解决方法:加锁,即在 ...
分类:
其他好文 时间:
2020-05-15 00:35:04
阅读次数:
88
摘要 在这篇文章中,我将从上一篇的一个小例子开始,跟你介绍一下InnoDB中的行锁。 在这里,会涉及到一个概念:两阶段加锁协议。 之后,我会介绍行锁中的S锁和X锁,以及这两种锁的作用。 但是我们会发现仅仅有行锁是不能解决幻读问题的,于是我会用例子的方式跟你介绍各种间隙锁。 最后,我会聊一聊粒度更大的 ...
分类:
数据库 时间:
2020-05-13 09:36:37
阅读次数:
72
前言 在并发编程中,如果要想保证共享数据的安全性,我们一般都需要加锁。但是加锁会使得程序效率明显降低。 在java.util.concurrent.atomic包下,JDK中就为我们提供了使用CAS算法的无锁的原子操作类,可以提高并发编程程序的效率。 这些原子操作类的CAS算法都是利用Unsafe提 ...
分类:
其他好文 时间:
2020-05-11 23:29:07
阅读次数:
71
/* * Copyright(C) 2020 Burgess Fan aLL rights reserved. * * 文件名称:mutex.c * 创 建 者:Burgess * 创建日期:2020年05月10日 */ #include <stdio.h> #include <unistd.h> ...
分类:
编程语言 时间:
2020-05-10 13:11:34
阅读次数:
85