当前位置:网站首页>迷失在Mysql的锁世界
迷失在Mysql的锁世界
2022-07-04 21:17:00 【ImportNew】
(给ImportNew加星标,提高Java技能)
1.饮料
这是一杯饮料。
这是3杯饮料,每杯饮料的味道各不相同。
但是人类并不称呼【饮料】为【饮料】,而是称呼【饮料】为【记录】。
2.红章鱼
这个红色的,长的像章鱼的家伙,我们就叫它红章鱼~
红章鱼分为头部和触手两个部分。
红章鱼有触手,且可以有任意根触手。
红章鱼爱喝饮料,把触手伸进杯子就能吸到饮料。
红章鱼将不同的触手伸进不同的杯子,就可以同时喝多杯饮料。
多只红章鱼可以同时出现。
但是正在喝饮料的红触手会排斥其它触手,即一杯饮料里最多只能有一只红触手。
先来先得,后来的触手要排队。
同一杯饮料可以有多只红章鱼在按序排队等待。
红章鱼痴迷同时吸吮多杯饮料的感觉,所以它的所有触手要么全在等待,要么全在喝饮料。
也就是说,如果红章鱼的某只触手在排队,那么它的其它触手也必须排队,即使是没人喝的饮料也要排队。
有触手排队但是没触手伸进去喝的饮料,仍然可以被后来的其它章鱼喝。
但是人类并不称呼【红章鱼】为【红章鱼】。
人类称呼【红章鱼的头部】为【意向排它锁】;
人类称呼【正在喝饮料的红触手】为【排它记录锁】。
3.绿章鱼
这些是绿章鱼。
绿章鱼的绝大多数特性和红章鱼完全相同,除了一点:绿章鱼的触手愿意跟其它绿色触手一起分享饮料。
因为红章鱼不会向其它任何颜色的章鱼分享饮料,且绿章鱼只会向绿章鱼分享饮料,
所以红章鱼和绿章鱼不会同时喝同一杯饮料,后来的要排队。
根据以上规则,红章鱼和绿章鱼可以组成很多状态。下面就是一种,编号表示他们来的顺序。
但是人类并不称呼【绿章鱼】为【绿章鱼】,
人类称呼【绿章鱼的头部】为【意向共享锁】;
人类称呼【正在喝饮料的绿触手】为【共享记录锁】。
4.空地
事实上,饮料杯未必都是相邻的,它们之间可能有空地。
无论两个饮料杯相隔多远,它们之间如果没有其它饮料杯,那我们就说这两个饮料杯之间是同一块空地。
最左边的杯子的左边,最右边的杯子的右边,仍然是空地。
对于章鱼来说,除了喝饮料的触手以外,有时候它们会有一些多余的触手,它们会在`喝饮料的时候`把多余的触手放到杯子间的空地上休息。
因为空地上啥都没有,在空地上的触手不用抢着喝饮料,所以在空地上红绿颜色的触手可以和平共处。
但是人类并不称呼【空地】为【空地】,
人类称呼【空地】为 【记录间的间隙】;
人类也不称呼那些【在空地上的触手】为【空地上的触手】,
人类称呼【在空地上的触手】为【间隙锁】;
如果一只章鱼把一只触手伸进了一杯饮料吮吸,恰巧把另一只触手放在紧挨该饮料的左边休息,那么人类会称呼这两只触手为一个【临键锁】。
5.黑触手
这个世界存在另一种红章鱼,这种红章鱼的触手是黑色的。
黑色的触手跟红绿颜色的触手都不同,黑色的触手没办法吸食饮料。
但是黑触手有一个逆天的功能,就是当黑触手接触空地时,在接触点会凭空生成一杯饮料出来!
因为黑触手可以创造出章鱼爱喝的饮料,所以其它章鱼对黑触手奉若神明,当黑触手接触到空地后,其它触手不会过来打扰。
黑触手只会降落在没有其它触手的空地。
一只有黑触手的红章鱼,可以在同一片空地上放下多只触手(如果空间足够)。
也可以在不同的空地同时放下多只触手。
但是人类并不称呼【落在空地上的黑触手】为【落在空地上的黑触手】,
人类称呼【落在空地上的黑触手】为【意向插入锁】,并且认为它是【间隙锁】的一种。
6.激光
下图是一条红色的激光,横在了所有杯子上方。
红激光十分灼热,红章鱼和绿章鱼碰到红激光就会被烧伤,所以红激光存在的时候,章鱼们就在上方盘旋不敢下来。
另一方面,没有任何触手在饮料杯或空地上时,红激光才有可能出现。
这是绿色的激光。
绿激光比较柔和,绿色的东西能够无伤的穿过绿激光,所以绿章鱼不受绿激光的影响。
事实上,绿激光可以同时出现多条,而红激光最多出现一条,且红绿激光不会同时存在。
但是人类不称呼【红激光】为【红激光】,人类称呼【红激光】为【排它表锁】。
人类也不称呼【绿激光】为【绿激光】,而是称呼【绿激光】为【共享表锁】。
转自:MCTW
链接:https://www.cnblogs.com/duck-and-duck/p/14713827.html
- EOF -
看完本文有收获?请转发分享给更多人
关注「ImportNew」,提升Java技能
点赞和在看就是最大的支持️
边栏推荐
- 刘锦程荣获2022年度中国电商行业创新人物奖
- Flutter WebView示例
- CloudCompare&Open3D DBSCAN聚类(非插件式)
- Use of class methods and class variables
- Jerry's ad series MIDI function description [chapter]
- GTEST from ignorance to proficiency (4) how to write unit tests with GTEST
- PostgreSQL基本结构——表
- flink1.13 sql基础语法(一)DDL、DML
- MongoDB中的索引操作总结
- 网上开户哪家证券公司佣金最低,我要开户,网上开户安全吗
猜你喜欢
IIC (STM32)
Arcgis 10.2.2 | arcgis license server无法启动的解决办法
Three or two things about the actual combat of OMS system
gtest从一无所知到熟练使用(3)什么是test suite和test case
Redis03 - network configuration and heartbeat mechanism of redis
MP3是如何诞生的?
【C語言】符號的深度理解
Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation
解读创客教育中的各类智能化组织发展
TCP shakes hands three times and waves four times. Do you really understand?
随机推荐
GTEST from ignorance to proficiency (4) how to write unit tests with GTEST
类方法和类变量的使用
Case sharing | integrated construction of data operation and maintenance in the financial industry
ArcGIS 10.2.2 | solution to the failure of ArcGIS license server to start
redis03——Redis的网络配置与心跳机制
Redis bloom filter
Sorting and sharing of selected papers, systems and applications related to the most comprehensive mixed expert (MOE) model in history
Delphi SOAP WebService 服务器端多个 SoapDataModule 实现相同的接口方法,接口继承
Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation
Bookmark
gtest从一无所知到熟练使用(2)什么是测试夹具/装置(test fixture)
Jerry's ad series MIDI function description [chapter]
Golang面试整理 三 简历如何书写
GTEST from ignorance to proficiency (3) what are test suite and test case
Kubeadm初始化报错:[ERROR CRI]: container runtime is not running
Redis has three methods for checking big keys, which are necessary for optimization
【活动早知道】LiveVideoStack近期活动一览
Redis cache
Monitor the shuttle return button
How to remove the black dot in front of the title in word document