第31讲:MySQL事务的并发问题以及事务的隔离级别

news2024/12/24 21:24:22

文章目录

    • 1.事务的并发问题
      • 1.1.事务并发之脏读
      • 1.2.事务并发之不可重复读
      • 1.3.事务并发之幻读
    • 2.事务的隔离级别
    • 3.模拟事务并发问题的产生以及如何避免
      • 3.1.事务并发问题脏读的模拟以及避免
        • 3.1.1.模拟事务并发脏读的问题
        • 3.1.2.解决事务并发脏读的问题
      • 3.2.事务并发问题不可重复读的模拟以及避免
        • 3.2.1.模拟事务并发不可重复读的问题
        • 3.2.2.解决事务并发不可重复读的问题
      • 3.3.事务并发问题幻读的模拟以及避免
        • 3.2.1.模拟事务并发幻读的问题
        • 3.2.2.解决事务并发幻读的问题

1.事务的并发问题

事务并发使用的过程中,会面临以下三类问题,无论是什么问题都可以通过隔离级别来解决。

1.1.事务并发之脏读

脏读指的是:一个事务读到另一个事务还没有提交的数据。

如下图所示:事务A中先执行了一个select语句,然后又执行了一个update语句,此时id=1的数据已经被修改过了,但是还没有提交到数据库中,表的数据显示的还是旧数据,事务B中有一个select语句,这个select刚好就要查询id=1的数据,这时就会读取到事务A还没有提交的但是已经修改过的数据,这就是事务并发使用中的脏读现象。

image-20220523173117154

事务虽然没有提交,但是在终端中已经执行了对应的SQL语句,在逻辑上已经更改了数据,此时查询等语句读到的就是已经修改过的数据,提交数据后表中、磁盘都会跟着发生变化。

1.2.事务并发之不可重复读

不可重复读指的是:一个事务中有多个select查询语句,第一次执行select查询获取的数据和后面执行select查询获取的数据不一致,两次查询出的数据不同,这种现象称之为不可重复读。

如下图所示:事务A中有多条select查询语句,第一次执行select语句获取了对应的数据,在执行后面SQL语句的操作时,事务B针对事务A查询的数据进行了修改,并且提交到了事务,当事务A在后面执行同样的select语句时,两次获取的数据就不一样了,这就引发了事务并发中的不可重复读。

image-20220523180342006

1.3.事务并发之幻读

幻读指的是:是一个事务按照条件查询数据时,并没有查询到对应的数据,这时就会在数据库中写入这条数据,但是这个时候另外一个事务恰巧在数据库中写入了这条数据,原本要写入数据的事务在执行SQL时就会写入失败,这事事务又去查询该条数据,发现并不存在的,从而导致始终无法写入,这就是幻读的现象。

如下图所示,事务A中有三条SQL语句,一条SQL根据条件查询一条数据,发现没有这条数据,接着就会向数据库中写入这条数据,此时恰巧事务B要向数据库中写入了这条数据,从而导致了事务A写入数据失败,这时事务A又去查询该数据,发现数据会在数据表中依旧没有,就会产生一种类似幻觉的现象,这就是事务并发的幻读现象。

image-20220523181246237

2.事务的隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted不能解决不能解决不能解决
Read committed可以解决不能解决不能解决
Repeatable Read(默认)可以解决可以解决不能解决
Serializable可以解决可以解决可以解决

不同的隔离级别可以解决某类并发事务产生的问题,事务隔离的级别越高,数据就越安全,但是性能会降低,事务隔离的级别越低,数据安全性就会很低,但是性能会很强。

查看当前数据库事务隔离级别的命令:

SELECT @@TRANSACTION_ISOLATION;

@@表示引用一种变量

设置事务隔离级别的命令:

SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION  LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

SESSION:当前客户端会话中生效
GLOBAL:针对全局所有的客户端会话生效

3.模拟事务并发问题的产生以及如何避免

一切并发事务问题的模拟都需要同时启动多个事务。

3.1.事务并发问题脏读的模拟以及避免

脏读指的是:一个事务读到另一个事务还没有提交的数据。

脏读并发问题的模拟流程:

  • 首先开启两个事务A、B
  • 事务A查询yexxb表中的数据
  • 事务B修改yexxb表中id=1的数据,但是不提交事务
  • 事务A再次查询yexxb表中的数据,发现查询到的数据是事务B未提交事务的数据。

当读到其他事务没有提交的数据时,就表示已经产生脏读的现象了。

3.1.1.模拟事务并发脏读的问题

1)设置事务的隔离级别为read uncommitted。

mysql> set session transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询yexxb的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 2000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

4.事务B修改yexxb中id=1的数据,但是不提交事务
mysql> update yexxb set ye = ye+1000 where id = '1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

5.事务A再次查询yexxb中的数据,发现查询的数据是事务B修改后但未提交事务的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 3000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

此时已经成功模拟出了脏读的现象,事务A有多次查询yexxb的操作,但是在事务A处理过程中,事务B也对yexxb的数据进行了修改,此时,事务A就会读到事务B对yexxb的处理操作,即使事务B没有提交事务。

image-20220523233256901

3.1.2.解决事务并发脏读的问题

处理事务并发脏读的问题有三种隔离级别可以解决,分别是read committed、repeatable read、serializable等。

由于我们目前只想解决脏读的问题,因此我们将事务的隔离级别设置成read committed级别,再次观察同样的操作是否还会出现脏读的现象。

1)设置事务的隔离级别为read committed。

mysql> set session transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| READ-COMMITTED          |
+-------------------------+
1 row in set (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询yexxb的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 3000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

4.事务B修改yexxb中id=1的数据,但是不提交事务
mysql> update yexxb set ye = ye+1000 where id = '1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

5.事务A再次查询yexxb中的数据,发现查询的数据依旧是最开始的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 3000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

6.事务B提交事务
mysql> commit;

7.事务A再次查询时,才会看到新的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 4000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.01 sec)

此时已经成功避免了脏读的问题,即使并发事务的情况下,其他的事务修改了表中的数据,只要不提交,当前事务依旧能读到旧数据。

image-20220524113752585

3.2.事务并发问题不可重复读的模拟以及避免

不可重复读指的是:一个事务中有多个select查询语句,第一次执行select查询获取的数据和后面执行select查询获取的数据不一致,两次查询出的数据不同,这种现象称之为不可重复读。

不可重复读并发问题的模拟流程:

  • 首先开启两个事务A、B
  • 事务A查询yexxb表中的数据
  • 事务B修改yexxb表中id=1的数据,修改完后立即提交事务
  • 事务A再次查询yexxb表中的数据,发现查询到的数据是事务B提交后的数据。

不可重复读和脏读的模拟场景类似,但是不可重复读是基于了另外事务提交之后的数据,此时我们不希望读取到其他事务提交的数据,我们仍然希望读到在事务一开始查询的数据,也就是希望能够重复读。

3.2.1.模拟事务并发不可重复读的问题

1)当前的事务隔离级别为READ-COMMITTED,在这个隔离级别下可以解决脏读的问题,但是不可解决不可重复读和幻读的问题,因此处于这个隔离级别下就可以模拟出不可重复读的场景。

mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| READ-COMMITTED          |
+-------------------------+
1 row in set (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询yexxb的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 4000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

4.事务B修改yexxb中id=1的数据,立即提交事务
mysql> update yexxb set ye = ye+1000 where id = '1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> commit;

5.事务A再次查询yexxb中的数据,发现查询的数据是事务B修改后已提交事务的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 5000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

此时已经模拟出了不可重复读的现象,事务A第一次执行查询语句时,拿到了yexxb表的数据,在此时,事务B对yexxb的数据进行了修改,在不提交的情况下事务A依旧可以读取重复数据,但是这时事务B也进行了提交操作,那么事务A就无法再读到之前查询出来的数据了,导致两次查询的结果都不相同,这就是不可重复读。

image-20220524091147613

3.2.2.解决事务并发不可重复读的问题

处理事务并发不可重复读的问题有两种隔离级别可以解决,分别是repeatable read、serializable等。

由于我们目前只想解决不可重复读的问题,基于性能问题,我们将事务的隔离级别设置成repeatable read级别,再次观察同样的操作是否还会出现不可重复读的现象。

repeatable read隔离级别也是MySQL中默认的隔离级别。

1)设置事务的隔离级别为repeatable read。

mysql> set session transaction isolation level repeatable read;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@transaction_isolation;
+-------------------------+
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| REPEATABLE-READ         |
+-------------------------+
1 row in set (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询yexxb的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 4000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

4.事务B修改yexxb中id=1的数据,立即提交事务
mysql> update yexxb set ye = ye+1000 where id = '1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> commit;

5.事务A再次查询yexxb中的数据,发现查询的数据是事务B修改后已提交事务的数据
mysql> select * from yexxb;
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  1 | 小明   | 5000.00 |
|  2 | 小红   | 2000.00 |
+----+--------+---------+
2 rows in set (0.00 sec)

此时已经成功解决了不可重复读的问题,即使并发事务的情况下,其他的事务修改了表中的数据,即使是提交了数据,当前事务依旧能读到旧数据。

image-20220524103716236

3.3.事务并发问题幻读的模拟以及避免

幻读指的是:是一个事务按照条件查询数据时,并没有查询到对应的数据,这时就会在数据库中写入这条数据,但是这个时候另 外一个事务恰巧在数据库中写入了整条数据,原本要写入数据的事务,此时就发现这行数据还是不存在的,但始终无法写入,这就是幻读的现象。

不可重复读并发问题的模拟流程:

  • 首先开启两个事务A、B
  • 事务A查询yexxb表中xm=小江的数据,发现查询不到
  • 此时事务B想yexxb表中插入了xm=小江的数据
  • 事务A这时插入xm=小江的数据,发现插入失败,数据已经存在
  • 事务A再次查询xm=小江的数据,发现数据是不存在的

事务A第一次查询xm=小江的数据不存在,这时想往表中写入xm=小江的数据,但是此时事务B已经在写入xm=小江的数据了,就会导致事务A无法写入,事务A再次查询xm=小江的数据时,发现数据还是不存在的,这就是幻读。

3.2.1.模拟事务并发幻读的问题

1)当前的事务隔离级别为REPEATABLE-READ,在这个隔离级别下可以解决脏读、不可重复读的问题,但是不可解决幻读的问题,因此处于这个隔离级别下就可以模拟出幻读的场景。

mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| REPEATABLE-READ         |
+-------------------------+
1 row in set (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询xm=小江的数据,发现没有任何数据
mysql> select * from yexxb where xm = '小江';
Empty set (0.00 sec)

4.事务B此时新增了xm=小江的数据,并且立即提交事务
mysql> insert into yexxb values ('3','小江','3000');
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.22 sec)


5.事务A没有查询到xm=小江的数据,此时就要插入xm=小江的数据,但是执行新增SQL时,就报错了,提示id=3的数据已经存在了
mysql> insert into yexxb values ('3','小江','3000');
ERROR 1062 (23000): Duplicate entry '3' for key 'yexxb.PRIMARY'

6.再次查询xm=小江的数据,发现依旧是没有数据的
mysql> select * from yexxb where xm = '小江';
Empty set (0.00 sec)

此时已经模拟出了幻读的现象,事务A第一次查询xm=小江的数据时,发现并没有查询到内容,此时事务A就想在表中新增xm=小江的数据了,但是就在这个时候,事务B在表中新增了xm=小江的数据,并且已经提交了数据,比事务A快了一步,事务A在插入xm=小江的数据时,就发现报错了提示数据已经存在了,事务A就该疑问了,我查询的时候并没有这个数据呀,再次查询确实没有这个数据,再次执行写入依旧无法写入,这就是幻读的现象。

image-20220524110706819

3.2.2.解决事务并发幻读的问题

处理事务并发幻读的问题有一种隔离级别可以解决,隔离级别为serializable。

想要解决幻读的问题,只能将隔离级别设置为serializable,但是serializable级别对于数据库的性能是很有影响的。

1)设置事务的隔离级别为serializable。

mysql> set session transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| SERIALIZABLE            |
+-------------------------+
1 row in set (0.00 sec)

2)开启两个事务会话,模拟脏读事务并发现象。

1.事务A开启一个事务
mysql> start transaction;

2.事务B开启一个事务
mysql> start transaction;

3.事务A查询xm=小张的数据,发现没有任何数据
mysql> select * from yexxb where xm = '小张';
Empty set (0.00 sec)

4.事务B此时去新增xm=小张的数据,发现无法写入,一直处于等待中
mysql> insert into yexxb values ('4','小张','3000');


5.事务A这时新增xm=小张的数据,数据写入成功
mysql> insert into yexxb values ('4','小张','3000');
Query OK, 1 row affected (0.00 sec)

6.事务A提交事务
mysql> commit;
Query OK, 0 rows affected (0.03 sec)

7.当事务A对表的操作完成后,事务B才输出了报错信息,提示数据已经存在了,此时也就说明了一个结论,当设置了serializable级别时,事务并发过程中,如果有一个事务正在操作这张表的数据,其他事务需要处于等待状态。
ERROR 1062 (23000): Duplicate entry '4' for key 'yexxb.PRIMARY'


7.事务A再次查询xm=小张的数据
mysql> select * from yexxb where xm = '小张';
+----+--------+---------+
| id | xm     | ye      |
+----+--------+---------+
|  4 | 小张   | 3000.00 |
+----+--------+---------+
1 row in set (0.01 sec)

此时已经成功解决了幻读的问题,即使在并发事务的情况下,其他的事务也要修改了表中的数据就会处于等待状态,无法修改,当前事务处理完成后,其他的事务才能对表进行操作。

image-20220524113248831

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB函数mesh与surf等绘制三维曲面入门

一、引言 三维曲面在实际应用中被广泛使用,能够更好的展示三维空间中曲面,以实现三维数据的可视化。 Matlab软件中可以使用mesh、fmesh、surf和fsurf等函数来实现三维曲面的绘图。其中mesh和fmesh用来绘制三维网格曲面图,surf和fsurf绘制三维…

使用OpenCV如何确定一个对象的方向

在本教程中,我们将构建一个程序,该程序可以使用流行的计算机视觉库 OpenCV 确定对象的方向(即以度为单位的旋转角度)。 最常见的现实世界用例之一是当您想要开发机械臂的取放系统时。确定一个物体在传送带上的方向是确定合适的抓…

Activiti工作流引擎中责任链模式的建立与应用原理

本文需要一定责任链模式的基础与Activiti工作流知识,主要分成三部分讲解: 一、简单理解责任链模式概念 网上关于责任链模式的介绍很多,菜鸟教程上是这样说的:责任链模式(Chain of Responsibility Pattern&#xff09…

操作系统实验二 进程创建

百年传承的实验,看不懂题意就对啦 vim写C代码的时候,记得先insetr键,Esc键后:wq保存。 更改后记得gcc重新编译。 代码显示异常,看评论区。 《操作系统》实验报告 姓名 Rhyme_7 学号 1008611 实验序号 实验二 实验名称 实验…

概率论与数理统计学习:数字特征(一)——知识总结与C语言实现案例

hello,大家好 这里是第十期的概率论与数理统计的学习,我将用这篇博客去总结知识点和用C语言实现案例的过程。 本期知识点——期望 离散型随机变量的期望连续型随机变量的期望随机变量函数的期望期望的性质 💦 期望的引入 随机变量的分布函…

基于正交对立学习的改进麻雀搜索算法-附代码

基于正交对立学习的改进麻雀搜索算法 文章目录基于正交对立学习的改进麻雀搜索算法1.麻雀优化算法2. 改进麻雀算法2.1 正态变异扰动2.2 对立学习2.3 正交对立学习3.实验结果4.参考文献5.Matlab代码6.Python代码摘要:针对麻雀搜索算法种群多样性少,局部搜…

腾讯云 如何设置mysql允许外部连接访问

大家好,本篇文章主要讲的是如何设置mysql允许外部连接访问,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 前置 windows在CMD中登陆MySQL 看到大家都如此我就放心了。。。_云草桑的博客-CSDN博客_cmd登录mysql是不是只能在bin文件…

一种经纬度轨迹数据计算物理弯道的方法,轨迹弯道算法

前言 本文使用了纯数学计算的方法计算识别了轨迹中的弯道位置,整体思路较为简单,不过最终效果十分可观,本算法已经在百万级用户的平台稳定运行,在实现过程中对GPS漂移、连续弯道、回旋弯道进行了处理。不过弯道数据仅供页面展示&a…

c语言的三种基本结构——初学者一定要了解哦

文章目录前言一、顺序结构二、选择结构(分支语句)1.选择语句之→if语句1.1 if语句的基本结构1.2 if语句之多分支:1.3 if语句的常见错误使用。2.选择语句之→switch语句2.1 switch语句基本结构:2.2 switch语句基本应用2.3 break语句…

Python实现视频自动打码,不用担心透露隐私了

准备工作 环境咱们还是使用 Python3.8 和 pycharm2021 即可 实现原理 将视频分为音频和画面画面中出现人脸和目标比对,相应人脸进行打码处理后的视频添加声音 模块 手动安装一下 cv2 模块 ,pip install opencv-python 安装 安装遇到报错&#xff0c…

基于javaweb的校园人力人事资源管理系统(java+springboot+ssm+mysql+jsp)

基于javaweb的校园人力人事资源管理系统(javaspringbootssmmysqljsp) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 基…

两种查看电脑连接的wifi密码的办法!

1.使用一行命令行语句 只需要同时按下WinR,打开命令行窗口,输入cmd,然后进入了Dos操作界面,输入 netsh wlan show profiles WIFI名称 keyclear注意:这里的名称是你自己电脑所连接的名称 即可查看电脑锁连接WIF的详细…

【K8S系列】在 Linux 上安装 KubeSphere

目录 1、多节点安装介绍 2、概念介绍 3、安装 3.1 准备主机 系统要求 3.2 下载 KubeKey 3.3 编辑配置文件 文件关键字介绍 3.3 使用配置文件创建集群 3.4 验证安装 3.5 启用 kubectl 自动补全 1、多节点安装介绍 在生产环境中,由于单节点集群资源有限、…

初识C++ (一)

这里写目录标题一. 什么是C ?二. 关键字三. 命名空间namespace关键字命名域的使用四. c输入输出hello world输入结语经过一个多月的学习终于进入C啦 希望自己能够保持对编程的热爱 继续学习下去! 并且将学习到的知识传递给大家 一. 什么是C ?…

基于javaweb的在线心理测评系统设计和实现(java+springboot+ssm+mysql+jsp)

基于javaweb的在线心理测评系统设计和实现(javaspringbootssmmysqljsp) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 …

类和对象 (三)

目录 <一>const成员 <二> 取地址及const取地址操作符重载 <三>再谈构造函数&#xff08;初始化列表&#xff09; 1.构造函数体赋值 2.初始化列表 <四>explicit关键字 <五>static成员 概念 <六>友元函数 <七>友元类 <八>内部类…

2021年上半年软件设计师上午真题及答案解析(五)

41、42、43、当UML状态图用于对系统、类或用例的动态方面建模时&#xff0c;通常是对&#xff08; &#xff09;建模。以下UML状态图中&#xff0c;假设活动的状态是A&#xff0c;事件b0发生并且a>5&#xff0c;发生条件是c状态到d状态的转换条件的是&#xff08; &#xff…

HTTP缓存

http缓存分为&#xff1a;强制缓存和协商缓存 强缓存 不需要客户端就不需要向服务器发送请求&#xff0c;直接使用本地缓存 对于强缓存的资源&#xff0c;可以看到返回的状态码是 200&#xff0c;并且会显示 from memory cache/from disk cache&#xff0c;强缓存是通过 Exp…

Go语言开发k8s-04-Service操作

文章目录1. 结构体1.1 ServiceList1.2 Service1.3 TypeMeta1.4 ObjectMeta1.5 ServiceSpec1.6 ServiceStatus1.7 对照yml文件示例2. Get List语法完整示例3. Create语法完整示例4. Get Service语法完整示例5. Update Service语法完整示例6. Delete Service语法完整示例1. 结构体…

python基于PHP的个人信息管理系统

随着现代工作的日趋繁忙,人们越来越意识到信息管理的重要性与必要性,而具有个性化特色的个人信息管理系统能够高速有效的管理个人信息,从而提升自己的工作效率 社会的发展给人们的生活压力越来越大,每天所要面临的问题也越来越多,面对如此多的事情需要去处理往往会顾此失彼,将很…