Java对象内存结构的查看与分析。
锁是为了解决并发环境下资源竞争的手段,其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发控制主要采用的技术手段(具体可见我之前的文章),而MySQL中的锁就是其中的悲观并发控制。
韩愈说过这样一句话:“业精于勤荒于嬉,行成于思毁于随””。天才就是无止境刻苦勤奋的努力。成绩优与良;才思浓与淡,都是由勤奋注定的。
道出并发bug源头,通过例子浅谈 Java 中使用锁的注意点和并发安全容器使用注意点
读锁在前一篇文章已经进行详细描述了,一文带你学会ReentrantReadWriteLock中的lock方法
根据java虚拟机规范里面的描述:java对象分为三部分:对象头(Object Header), 实例数据(instance data),对齐填充(padding)。
摘要:当开启transaction,执行updata的语句执行成功,不执行commit或rollback;再开启另一个窗口,执行upadate语句,会出现失败(报错:锁等待超时)的情况,但是如果对于上一个窗口执行rollback,此窗口update可以执行成功,该种情况应考虑该表
一文带你了解AQS在ReentrantLock中非公平锁的实现
读锁在前一篇文章已经进行详细描述了,一文带你学会ReentrantReadWriteLock中的lock方法
锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定,从而保证一次只有一个线程能够作用于共享对象。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。
最近背八股文,发现自己对于Java的同步机制仅限于使用,和部分拾人牙慧般的底层理解。于是找了时间稍微梳理了一些,于今日进行总结叙述。
1 前言
在上一篇《InnoDB一致性非锁定读》中,我们了解到InnoDB使用一致性非锁定读来避免在一般的查询操作(SELECT FOR UPDATE等除外)时使用锁。然而锁这个事情是无法避免的,数据的写入,修改和删除都需要加锁。今天我们就继续学习InnoDB锁相关的知识。
锁是数据库系统区分于文件系统的一个关键特性。数据库使用锁来支持对共享资源进行并发访问,提供数据的完整性和一致性。此外,数据库事务的隔离性也是通过锁实现的。InnoDB会在行级别上对表数据上锁,而MyISAM只能在表级别上锁,二者性能差异可想而知。
AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。
数据库事务与锁详解
今天我们来聊一聊锁吧,我们都知道有并发就有并发安全的问题。对于有的变量不能是并发运行访问的。比如银行的存取款业务,假如可以并发进行的话,你想一想你往银行存这个月的工资200万,你老婆同一时间在银行取200万去做美容。假如不使用锁,你存完之后发现金
通过一个转账问题的场景,将数据库9种锁、3种读、4种隔离级别一次性串联起。
数据库事务与锁详解
选择对的锁,有助于提高系统的性能,是个面试热题。
摘要:本文,我们就来从源码角度深度解析线程池是如何优雅的退出程序的。
上文是针对于MySQL的锁分类
细心的你也一定关注到,有的网址是https开头的,有的是http。https开头的网站前面,会有一把小锁。这是为什么呢?
GaussDB(DWS)提供了两个集群级别的视图快速识别和查询锁等待和分布式死锁信息,可实现此类问题的秒级问题的定位和分析。
摘要:终于开始了这个很感兴趣但是一直觉得困难重重的源码解析工作,也算是一个好的开端。
摘要:我们知道SimpleDateFormat是线程不安全,本文会介绍多种解决方案来保证线程安全。
摘要:我们知道SimpleDateFormat是线程不安全,本文会介绍多种解决方案来保证线程安全。
生活中,我们会用锁来保护自身的财产不被人偷走,但今天讲的“锁”,可不是这个用途。
MySQL的XA事务崩溃了,我是这样恢复的!!
MySQL中的锁是面试中经常考察的问题,也是工作中必须要掌握的技术点,这样才能更好得使用MySQL,本文主要从全局锁,表锁,行锁来进行原理讲解,帮助大家了解MySQL中的锁。
全局锁和表锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。
线上最近出现了批量insert的死锁,百思不得解。死锁记录如下:
避免死锁的发生
几种锁的使用方式