当前位置:网站首页>迷失在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技能

点赞和在看就是最大的支持️
边栏推荐
- 2021 CCPC Harbin B. magical subsequence (thinking question)
- How to remove the black dot in front of the title in word document
- Analysis of maker education technology in the Internet Era
- MP3是如何诞生的?
- [ 每周译Go ] 《How to Code in Go》系列文章上线了!!
- 关系型数据库
- [public class preview]: basis and practice of video quality evaluation
- TCP协议三次握手过程
- Redis 排查大 key 的3种方法,优化必备
- Arcgis 10.2.2 | arcgis license server无法启动的解决办法
猜你喜欢

从RepVgg到MobileOne,含mobileone的代码

Flutter TextField示例

一文掌握数仓中auto analyze的使用

【LeetCode】17、电话号码的字母组合

How is the entered query SQL statement executed?
![[ 每周译Go ] 《How to Code in Go》系列文章上线了!!](/img/bf/77253c87bfa1512f4b8d3d8f7ebe80.png)
[ 每周译Go ] 《How to Code in Go》系列文章上线了!!

Three or two things about the actual combat of OMS system

【C语言】符号的深度理解
![[wechat applet] collaborative work and release](/img/14/2658cf0ba6be9432c74b2490e53d05.png)
[wechat applet] collaborative work and release

输入的查询SQL语句,是如何执行的?
随机推荐
QT - plot other problems
Caduceus从未停止创新,去中心化边缘渲染技术让元宇宙不再遥远
Redis cache
Arcgis 10.2.2 | arcgis license server无法启动的解决办法
Can be displayed in CAD but not displayed in print
案例分享|金融业数据运营运维一体化建设
巅峰不止,继续奋斗!城链科技数字峰会于重庆隆重举行
解决异步接口慢导致的数据错乱问题
Flutter TextField示例
For MySQL= No data equal to null can be found. Solution
Flutter 返回按钮的监听
Open3D 曲面法向量计算
什么是商业智能(BI),就看这篇文章足够了
EhLib 数据库记录的下拉选择
Jerry added the process of turning off the touch module before turning it off [chapter]
学习突围3 - 关于精力
超详细教程,一文入门Istio架构原理及实战应用
Flutter WebView示例
Delphi SOAP WebService 服务器端多个 SoapDataModule 实现相同的接口方法,接口继承
Application practice | Shuhai supply chain construction of data center based on Apache Doris