• 2024-07-04【Linux】多线程(互斥 && 同步)
    我们在上一节多线程提到没有任何保护措施的抢票是会造成数据不一致的问题的。那我们怎么办?答案就是进行加锁。目录加锁:认识锁和接口:初始化:加锁&&解锁:全局的方式:局部的方式:原理角度理解:实现角度理解:同步:加锁:认识锁和接口:初始化:这个就是我们互斥锁的类型。
  • 2024-07-04JUC(java.util.concurrent)的常见类
    JUC(java.util.concurrent)的常见类Callable(这是一个interface接口)这个也是创建线程的一种方式Runnable能表示一个任务(run方法)返回:voidCallable也能表示一个任务(call方法)返回:一个具体的值,类型可以通过泛型参数来指定(Object)如果进行多线程操作,只是关心多线
  • 2024-07-02java多线程-锁的介绍
    多线程中常用锁一、锁的概念二、锁的类型2.1互斥锁(也称排它锁)2.1.1Synchronized和Lock2.1.2ReentrantLock(可重入锁)2.1.3公平锁2.1.4非公平锁2.1.5中断锁2.2共享锁2.3读写锁三、悲观锁和乐观锁3.1悲观锁3.2乐观锁3.3CAS算法四、锁竞争一、锁的概念在多
  • 2024-07-02MySQL 加锁案例--基于《MySQL 45 讲》的第 21 讲的总结
    前言丁奇大佬的《MySQL45讲》可以说是每个DBAboy的必读经典,但教材中,大佬用的毕竟是5.7版本,日常用 8.0的我还是得持怀疑的态度阅读文章。毕竟实践是检验真理的唯一标准。因此对21讲做了个总结(幸好8.0和5.7有出入,不然白搞了)。案例总结+验证+一点点个人思考秉承
  • 2024-06-22架构师必知的11种API性能优化方法
    前言接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题。这个问题既可以很简单,也可以相当复杂。有时候,只需要添加一个索引就能解决。有时候,代码需要进行重构。有时候,必须增加缓存。有时候,需要引入一些中间件,例如消息队列(MQ)。有时候,需
  • 2024-06-21MySQL----表级锁&行级锁&排它锁和共享锁&意向锁
    MySQL的锁机制锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。在MySQL中,不同存储引擎使用不同的加锁方式;我们以InnoDB存储引擎为例介绍MySQL中的锁机制,其他存储引擎中的锁相对简单一些。表级锁&行级锁表级锁:对整张表加锁。开销小,加锁快,不会出现
  • 2024-06-21Golang并发
    Sync.MutexMutex结构typeMutexstruct{ stateint32 semauint32}Sync.Mutex由两个字段构成,state用来表示当前互斥锁处于的状态,sema用于控制锁状态的信号量互斥锁state(32bit)主要记录了如下四种状态:waiter_num(29bit):记录了当前等待这个锁的goroutine数量starving(
  • 2024-06-15Go-知识并发控制mutex
    Go-知识并发控制mutex1.介绍2.数据结构2.1Mutex结构体2.2Mutex方法3.加锁解锁过程3.1简单加锁3.2加锁被阻塞3.3简单解锁3.4解锁并唤醒协程4.自旋过程4.1什么是自旋4.2自旋条件4.3自旋的优势4.4自旋的问题5.Mutex模式5.1Normal模式5.2Starving模
  • 2024-06-14一篇文章看懂Redission原理
    文章目录☃️可重入锁原理☃️锁重试和WatchDog机制☃️MutiLock原理上一篇文章讲解了Rediision的使用,这篇文章讲解其原理☃️可重入锁原理在Lock锁中,他是借助于底层的一个voaltile的一个state变量来记录重入的状态的,比如当前没有人持有这把锁,那么state=0,假如有人
  • 2024-06-12MySQL 中的 INSERT 是怎么加锁的?
    在之前的博客中,我写了一系列的文章,比较系统的学习了MySQL的事务、隔离级别、加锁流程以及死锁,我自认为对常见SQL语句的加锁原理已经掌握的足够了,但看到热心网友在评论中提出的一个问题,我还是彻底被问蒙了。他的问题是这样的:加了插入意向锁后,插入数据之前,此时执行了select…lo
  • 2024-06-07如何避免U盘数据泄露?U盘重要文件怎么加密?
    U盘是最常用的移动存储设备,小巧的体积可以帮助我们存储大量数据。而为了保护U盘数据,避免文件泄露,我们需要加密保护U盘。那么,U盘重要文件该怎么加密呢?下面我们就来了解一下吧。BitLocker当你的U盘文件不多,且加密需求比较简单时,可以选择使用BitLocker加密工具。它可以全盘加
  • 2024-06-07怎么避免电脑磁盘数据泄露?磁盘数据保护方法介绍
    电脑磁盘是电脑存储数据的基础,而为了避免磁盘数据泄露,我们需要保护电脑磁盘。下面我们就来了解一下磁盘数据保护的方法。磁盘加密磁盘加密可以通过专业的加密算法来加密保护磁盘数据,避免电脑磁盘数据泄露。在这里小编推荐使用文件夹只读加密专家来加密保护电脑磁盘。文件
  • 2024-06-03JavaEE初阶--锁进阶理解
    目录一、引言二、锁的分类1.乐观锁vs悲观锁2.重量级锁vs轻量级锁3.自旋锁vs挂起等待锁4.公平锁vs非公平锁5.可重入锁vs不可重入锁6.读写锁三、CAS1.什么是CAS?2.CAS伪代码3.CAS的实现4.CAS的应用5.CAS的ABA问题四、总结一、引言 前面的博客我们
  • 2024-06-03执行 delete from t1 where id = 10;MySQL会加什么锁?
    思考一个问题:下面一条简单的SQL,它加什么锁?deletefromt1whereid=10;带着你的答案,我们继续往下看。如果要分析上述SQL的加锁情况,必须了解这个SQL的执行前提,MySQL的隔离级别是什么?id列是不是主键?id列有没有索引?前提不同加锁处理的方式也不同。可能的情况:id列是不是主键?My
  • 2024-05-30redis实现分布式锁
    Redis实现分布式锁分布式锁一般有三种实现方式:1、基于数据库乐观锁;2、基于Redis的分布式锁;3、基于Zookeeper的分布式锁。本文档主要介绍基于Redis实现分布式锁的方法。1、加锁//redis加锁publicbooleangetLock(Jedisjedis,Stringkey,intexpire){Stringuuid=UUID.ran
  • 2024-05-29JAVAEE之线程多进阶(1)_常见的锁策略
    前言 在前面的线程初阶的内容中,我们已经简单介绍了锁,包括synchronized、volatile关键字(详细内容可见:https://blog.csdn.net/2301_80653026/article/details/138818637和https://blog.csdn.net/2301_80653026/article/details/138867371),我们在接下来要讲解的锁策略内容,对
  • 2024-05-28进程间同步(互斥锁)
    【一】什么是互斥锁互斥锁是一种用于多线程编程中控制对共享资源访问的机制限制当前时间段只能由当前进程使用,当前进程使用完成后才能其他进程继续使用基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完成后再解锁,使得其他线程可以进行访问【
  • 2024-05-27InnoDB锁
    为什么要加锁?锁的存在是为了在多个并发请求存取数据的情况下,维护数据一致性锁分类共享/排他锁对行记录加锁——行锁共享锁:S锁,在事务要读取一条记录时,需要先获取该记录的S锁。排他锁:X锁,在事务要改动一条记录时,需要先获取该记录的X锁。X锁与任何锁都不兼容对表加锁—
  • 2024-05-24互斥锁、自旋锁、读写锁、悲观锁和乐观锁
    都有哪些锁?互斥锁、自旋锁、读写锁、乐观锁、悲观锁。互斥锁与自旋锁加锁的目的就是保证共享资源在任意时间里,只有一个线程访问,这样就可以避免多线程导致共享数据错乱的问题。当已经有一个线程加锁后,其他线程加锁则就会失败,互斥锁和自旋锁对于加锁失败后的处理方式是不
  • 2024-05-21Shell阶段04 shell流程之case语句, 服务启动停止脚本(rsync, nginx), shell加锁机制
    1.流程控制语句之case语句case主要作用是对程序的选择,循环等操作#语法:case变量in变量值1)命令序列;;#命令序列结束符变量值2)命令序列;;变量值3)命令序列;;变量值N)命令序列
  • 2024-05-20java的synchronized有几种加锁方式
    在Java中,synchronized关键字提供了内置的支持来实现同步访问共享资源,以避免并发问题。synchronized主要有三种加锁方式:1.同步实例方法当一个实例方法被声明为synchronized时,该方法将同一时间只能被一个线程访问。锁是当前对象实例(即this)。publicclassSynchronizedInstanceMet
  • 2024-05-18一对一视频app开发,“锁”的合理使用很重要
    一对一视频app开发,“锁”的合理使用很重要,比如公平锁和非公平锁。一、基本概念公平锁:线程按照到来的先后顺序,排队等待使用资源。非公平锁:线程不一定按照先后顺序使用资源,而是可能出现“插队”的情况。ReentrantLock的公平锁和非公平锁synchronized是一种非公平锁,而Ree
  • 2024-05-14mysql 锁
    1,介绍  锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
  • 2024-05-13openGauss 分析查询语句是否被阻塞
    分析查询语句是否被阻塞问题现象数据库系统运行时,在某些业务场景下,查询语句会被阻塞,导致语句运行时间过长。原因分析查询语句需要通过加锁来保护其要访问的数据对象。当要进行加锁时发现要访问的数据对象已经被其他会话加锁,则查询语句会被阻塞,等待其他会话完成操作并释放锁资
  • 2024-05-13MySQL 死锁案例
    记一次MySQL死锁分析处理过程,聊聊我的思路。前车之鉴,后事之师。以一个例子为切入点一、问题背景某业务模块反馈数据库最近出现过几次死锁告警的情况,本文总结了这次死锁排查的全过程,并分析了导致死锁的原因及解决方案。希望给大家提供一个死锁的排查及解决思路。基础环境: