mysql 事物 锁行 测试_MySQL Transaction--RR事务隔离级别下加锁测试

==============================================================================

按照非索引列更新

在可重复读的事务隔离级别下,在非索引列上进行更新和删除会对所有数据行进行加锁,阻止其他会话对边进行任何数据的增删改操作。

如果更新或删除条件为c3=4且c3列上没有索引则:1、不允许其他会话插入任意记录,因为所有记录的主键索引上存在X排他锁,无法申请插入意向X锁(lock_mode X insertintention waiting Record lock)2、不允许其他会话删除任意记录,因为所有记录的主键索引上存在X排他锁3、不允许其他会话更新任意记录。因为所有记录的主键索引上存在X排他锁

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##=========================================##

测试数据:CREATE TABLE`tb4001` (

`id`bigint(20) NOT NULLAUTO_INCREMENT,

`c1`int(11) DEFAULT NULL,

`c2`varchar(200) DEFAULT NULL,

`c3`int(11) DEFAULT NULL,PRIMARY KEY(`id`),KEY`idx_c1` (`c1`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into tb4001(c1,c2,c3) values(2,2,2);insert into tb4001(c1,c2,c3) values(4,4,4);insert into tb4001(c1,c2,c3) values(7,7,7);insert into tb4001(c1,c2,c3) values(8,8,8);

##=========================================##

##测试1:在没有索引的列上更新

##事务隔离级别:RR

会话1:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=777 where c3=7;

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(9,9,9);

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息------- TRX HAS BEEN WAITING 13 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 75 page no 3 n bits 80 index PRIMARY of table `test1`.`tb4001` trx id 10573 lock_mode X insert intention waiting Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0

0: len 8; hex 73757072656d756d; ascsupremum;;---------------------TRANSACTION 10571, ACTIVE 404 sec

2 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1201 127.0.0.1admin

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=888 where c3=8;

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息------- TRX HAS BEEN WAITING 5 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 75 page no 3 n bits 80 index PRIMARY of table `test1`.`tb4001` trx id 10573lock_mode X waiting

Record lock, heap no2 PHYSICAL RECORD: n_fields 6; compact format; info bits 0

0: len 8; hex 8000000000000001; asc;;1: len 6; hex 00000000293c; asc )

2 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1201 127.0.0.1admin

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;delete from tb4001 where c3=8;

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息------- TRX HAS BEEN WAITING 4 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 75 page no 3 n bits 80 index PRIMARY of table `test1`.`tb4001` trx id 10573lock_mode X waiting

Record lock, heap no2 PHYSICAL RECORD: n_fields 6; compact format; info bits 0

0: len 8; hex 8000000000000001; asc;;1: len 6; hex 00000000293c; asc )

2 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1201 127.0.0.1 admin

View Code

==============================================================================

按照非唯一索引更新

在可重复读的事务隔离级别下,按照非主键非唯一索引进行更新和删除,会对满足条件的行加行锁+满足条件的区域加gap锁

如果更新或删除条件为c1=4且c1列上有非唯一索引则:1、允许其他会话插入c1<>4的记录,但不允许插入c1=4的记录2、允许其他会话更新c1<>4的记录,但不允许将记录更新为c1=4的记录3、允许其他会话删除c1<>4的记录。4、允许插入\删除\修改在c1列索引上与c1=4相邻的记录,虽然操作会影响gap锁的边界值。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##=========================================##

测试数据:CREATE TABLE`tb4001` (

`id`bigint(20) NOT NULLAUTO_INCREMENT,

`c1`int(11) DEFAULT NULL,

`c2`varchar(200) DEFAULT NULL,

`c3`int(11) DEFAULT NULL,PRIMARY KEY(`id`),KEY`idx_c1` (`c1`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into tb4001(c1,c2,c3) values(2,2,2);insert into tb4001(c1,c2,c3) values(4,4,4);insert into tb4001(c1,c2,c3) values(7,7,7);insert into tb4001(c1,c2,c3) values(8,8,8);

##=========================================##

##测试1:在没有索引的列上更新

##事务隔离级别:RR

会话1:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=777 where c1=7;

##=========================================##

会话2:begin;SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(9,9,9);

会话2未被阻塞成功执行

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(7,7,7);

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息---TRANSACTION 10600, ACTIVE 7 sec inserting

mysql tables in use 1, locked 1LOCK WAIT2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1MySQL thread id53, OS thread handle 140674620851968, query id 1317 127.0.0.1 admin update

insert into tb4001(c1,c2,c3) values(7,7,7)------- TRX HAS BEEN WAITING 7 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 75 page no 4 n bits 72 index idx_c1 of table `test1`.`tb4001` trx id 10600 lock_mode X locks gap before rec insertintention waiting

Record lock, heap no5 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 4; hex 80000008; asc;;1: len 8; hex 8000000000000004; asc;;---------------------TRANSACTION 10598, ACTIVE 270 sec

4 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1306 127.0.0.1admin

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;delete from tb4001 where c1=8;

会话2未被阻塞成功执行

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=888 where c1=8;

会话2未被阻塞成功执行

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;delete from tb4001 where c1=4;

会话2未被阻塞成功执行

##=========================================##

View Code

==============================================================================

按照非唯一索引+条件更新

在可重复读事务隔离级别下,按照对非唯一索引列进行更新,会对扫描到的所有索引记录进行更新,无论该记录是否满足WHERE中的其他条件。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##=========================================##

测试数据:CREATE TABLE`tb4001` (

`id`bigint(20) NOT NULLAUTO_INCREMENT,

`c1`int(11) DEFAULT NULL,

`c2`varchar(200) DEFAULT NULL,

`c3`int(11) DEFAULT NULL,PRIMARY KEY(`id`),KEY`idx_c1` (`c1`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into tb4001(c1,c2,c3) values(2,2,2);insert into tb4001(c1,c2,c3) values(4,4,4);insert into tb4001(c1,c2,c3) values(4,4,44);insert into tb4001(c1,c2,c3) values(7,7,7);insert into tb4001(c1,c2,c3) values(8,8,8);

##=========================================##

##会话1:

##事务隔离级别:RR

会话1:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=444 where c1=4 and c3=4;

##=========================================##

##会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=444 where c1=4 and c3=44;

会话2未被阻塞成功执行

##执行结果:会话2被阻塞

mysql tablesin use 1, locked 1LOCK WAIT2 lock struct(s), heap size 1136, 1row lock(s)

MySQL thread id76, OS thread handle 140674621384448, query id 1636 127.0.0.1admin updatingupdate tb4001 set c2=444 where c1=4 and c3=44

------- TRX HAS BEEN WAITING 13 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 79 page no 4 n bits 72 index idx_c1 of table `test1`.`tb4001` trx id 10781lock_mode X waiting

Record lock, heap no3 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 4; hex 80000004; asc;;1: len 8; hex 8000000000000002; asc;;---------------------TRANSACTION 10780, ACTIVE 52 sec

4 lock struct(s), heap size 1136, 5 row lock(s), undo log entries 1MySQL thread id75, OS thread handle 140674621916928, query id 1618 127.0.0.1admin

##=========================================##

View Code

==============================================================================

按照非唯一组合索引更新

假设表TB1上有列C1和C2,有索引IDC_C1_C2(C1,C2)

在可重复提交事务隔离级别下,会话1按照C1=3 AND C2=4进行更新,则:1、会话2按照C1=3 AND C2=4进行更新,更新操作被阻塞2、会话2按照C1=3 AND C2=M(M<>4)进行更新,更新操作不会被阻塞3、会话2可以在C1=3 AND C2=4之后间隙插入记录,但不能在C1=3 AND C2=4之前的间隙插入记录

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##=========================================##

##测试数据CREATE TABLE`tb4001` (

`id`bigint(20) NOT NULLAUTO_INCREMENT,

`c1`int(11) DEFAULT NULL,

`c2`varchar(200) DEFAULT NULL,

`c3`int(11) DEFAULT NULL,PRIMARY KEY(`id`),KEY`idx_c1_c3` (`c1`,`c3`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into tb4001(c1,c2,c3) values(2,2,2);insert into tb4001(c1,c2,c3) values(4,4,4);insert into tb4001(c1,c2,c3) values(4,4,44);insert into tb4001(c1,c2,c3) values(7,7,7);insert into tb4001(c1,c2,c3) values(8,8,8);

##=========================================##

##会话1:

##事务隔离级别:RR

会话1:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=444 where c1=4 and c3=4;

##=========================================##

##会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=444 where c1=4 and c3=44;

会话2未被阻塞成功执行

##=========================================##

##会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=444 where c1=2 and c3=2;

会话2未被阻塞成功执行

##=========================================##

##会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(4,4,3);

会话2被阻塞

##=========================================##

View Code

==============================================================================

按照唯一索引进行更新

在可重复读的事务隔离级别下,在唯一索引列上进行更新和删除在唯一索引的索引行上加排他锁。

如果更新或删除条件为c1=7且c1列上存在唯一索引则:1、阻止其他会话删除和修改c1=7的记录2、阻止其他会话插入c1=7的记录3、允许其他会话插入\删除\修改c1<>7的记录,但不允许将记录修改为c1=7的记录

以上限制通过在唯一索引的索引记录上加排他锁X来实现,不会生产GAP锁

在根据唯一索引进行更新时,读提交事务隔离级别(RC)和可重复读事务隔离级别(RR)都只需要依赖唯一索引便可以保证事务ACID特性,无须使用GAP锁。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

##=========================================##

测试数据:CREATE TABLE`tb4001` (

`id`bigint(20) NOT NULLAUTO_INCREMENT,

`c1`int(11) DEFAULT NULL,

`c2`varchar(200) DEFAULT NULL,

`c3`int(11) DEFAULT NULL,PRIMARY KEY(`id`),UNIQUE KEY`idx_c1` (`c1`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;insert into tb4001(c1,c2,c3) values(2,2,2);insert into tb4001(c1,c2,c3) values(4,4,4);insert into tb4001(c1,c2,c3) values(7,7,7);insert into tb4001(c1,c2,c3) values(8,8,8);

##=========================================##

##测试1:在没有索引的列上更新

##事务隔离级别:RR

会话1:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=777 where c1=7;

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(6,6,6);

会话2未被阻塞成功执行

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;insert into tb4001(c1,c2,c3) values(7,7,7);

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息---TRANSACTION 10727, ACTIVE 9 sec inserting

mysql tables in use 1, locked 1LOCK WAIT2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1MySQL thread id53, OS thread handle 140674620851968, query id 1553 127.0.0.1 admin update

insert into tb4001(c1,c2,c3) values(7,7,7)------- TRX HAS BEEN WAITING 9 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 77 page no 4 n bits 72 index idx_c1 of table `test1`.`tb4001` trx id 10727lock mode S waiting

Record lock, heap no4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 4; hex 80000007; asc;;1: len 8; hex 8000000000000003; asc;;---------------------TRANSACTION 10721, ACTIVE 32 sec

3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1544 127.0.0.1admin

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c2=888 where c1=8;

会话2未被阻塞成功执行

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;update tb4001 set c1=7 where c1=8;

会话2未被阻塞成功执行

##执行结果:会话2被阻塞

使用SHOW ENGINE INNODB STATUS \G查看阻塞发生时的锁信息---TRANSACTION 10730, ACTIVE 4 sec updating or deleting

mysql tables in use 1, locked 1LOCK WAIT4 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 1MySQL thread id53, OS thread handle 140674620851968, query id 1567 127.0.0.1admin updatingupdate tb4001 set c1=7 where c1=8

------- TRX HAS BEEN WAITING 4 SEC FOR THIS LOCK TO BE GRANTED:

RECORD LOCKS space id 77 page no 4 n bits 72 index idx_c1 of table `test1`.`tb4001` trx id 10730lock mode S waiting

Record lock, heap no4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

0: len 4; hex 80000007; asc;;1: len 8; hex 8000000000000003; asc;;---------------------TRANSACTION 10721, ACTIVE 100 sec

3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1MySQL thread id52, OS thread handle 140674621650688, query id 1544 127.0.0.1admin

##=========================================##

会话2:SET SESSION tx_isolation='REPEATABLE-READ';

STARTTRANSACTION;SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;delete from tb4001 where c1=8;

会话2未被阻塞成功执行

View Code

==============================================================================

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

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

相关文章

修复mysql的view_MYSQL数据损坏修复方法

1、myisamchk使用 myisamchk 必须暂时停止 MySQL 服务器。例如&#xff0c;我们要检修 discuz 数据库。执行以下操作&#xff1a;# service mysql stop (停止 MySQL )&#xff1b;# myisamchk -r /数据库文件的绝对路径/*MYI# service mysql startmyisamchk 会自动检查并修复数…

centos7mysql语句创建表格_CentOS7中安装MySQL(简便)及 网站的搭建

一、首先&#xff0c;我们需要配置CentOS7中网络环境的搭建&#xff0c;物理机IP为192.168.100.39&#xff0c;虚拟机IP为192.168.100.139&#xff0c;网络模式设置为桥接模式&#xff0c;再进入系统挂载光盘、输入命令 cd /yum.repos.d 修改yum源配置文件&#xff0c;接下…

mysql系列_Mysql系列(三)—— Mysql字符集和比较规则

一、前言字符集表示的是存储的二进制与字符如何映射的关系&#xff0c;比较规则指的是字符如何排序的规则&#xff0c;比如字符如果使用order by到底按什么规则进行排序。二、查看命令查看支持的字符集命令是&#xff1a;SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式],CHARA…

复数卷积 tensorflow_PyTorch 中的傅里叶卷积

欢迎关注 “小白玩转Python”&#xff0c;发现更多 “有趣”注意: 在这个 Github repo 中提供了1D、2D 和3D Fourier 卷积的完整方法。我还提供了 PyTorch 模块&#xff0c;可以方便地将傅里叶卷积添加到可训练模型中。链接如下&#xff1a;https://github.com/fkodom/fft-conv…

python time智能等待_Python Selenium智能等待

前言在使用python selenium进行自动化测试实践的过程中&#xff0c;经常会遇到元素定位不到&#xff0c;弹出框定位不到等等各种定位不到的情况&#xff0c;在大多数的情况下&#xff0c;无非是以下两种情况&#xff1a;1、有frame存在&#xff0c;定位前&#xff0c;未switch到…

go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区

删除数据库DROP DATABASE [IF EXISTS] 数据库名;例如&#xff1a;删除school数据库IF EXISTS 为可选&#xff0c;判断是否存在&#xff0c;如果不存在则会抛出异常删除数据表DROP TABLE [IF EXISTS] 表名;例如&#xff1a;删除student表注意&#xff1a;删除具有主外键关系的表…

java中的位移运算符_java中的移位运算符(, , )

java中有3种移位运算符<>> : 右移运算符&#xff0c;不改变符号位&#xff0c;num >> n 表示二进制右移n位&#xff0c;结果相当于 num / (2的n次方)>>> : 无符号右移&#xff0c;长度扩展为4字节&#xff0c;最高位都为0&#xff0c;但正数扩展位补…

现代软件工程系列 软件 = 程序 + 软件工程

软件随想: 软件 程序 软件工程 最近和几个同道谈论了一些程序&#xff0c;架构&#xff0c;软件的问题&#xff0c;大家身在此山中&#xff0c;绕来绕去&#xff0c;始终没有能有明确清晰的结论。我把一些想法写在这里&#xff0c;供专家指正。 几乎所有程序员都知道“程序…

现代软件工程系列 学生和老师都不容易

老师的难处 - V2.0 的困难 有笑话说某人请客, 客人无论是坐轿或是步行前来, 主人都能奉承一番。 有客人说自己是爬着来的&#xff0c; 主人奉承说 - 稳妥之至! 据说有些学校的有些课还是沿用 N 年前的教案和教材, 这当然稳妥之至。我看到学校用很多年前的稳妥教材把学生…

现代软件工程系列 学生的精彩文章 (1)

讲了很多课, 碰到了很多学生, 他们教给我不少东西, 下面是一些我印象中的精彩文章: http://teamkingofcsharp.spaces.live.com/blog/cns!59FC2D3DD66822AA!188.entry December 26“大教堂”与“市集” 软件项目的管理者总是无比艳羡传统行业&#xff0c;无论是工业的流水线还是…

jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

一、springboot jpa项目文件配置#----------------------------------------------------------###########################################################datasource 配置MYSQL数据源&#xff1b;########################################################## 数据库sprin…

现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心...

from: http://teamkingofcsharp.spaces.live.com/blog/cns!59FC2D3DD66822AA!222.entry 感想 平常心 初中的数学老师常常和我说&#xff1a;“你要学会保持一颗平常心”。我是一个不那么豁达开朗的人&#xff0c;对很多事情都会很看重&#xff0c;GPA&#xff0c;排名&#x…

现代软件工程系列 学生读后感 梦断代码

from:http://ttcs.spaces.live.com/blog/cns!C3759CC6FCEEBDD7!121.entry?sa147831050November 10梦断代码读后介绍 一&#xff0c;这本书讲了什么&#xff1f;软件是人们自以为最有把握&#xff0c;实则最难掌握的技术。作者罗森伯格对OSAF主持的Chandler项目进行长期调查&am…

java 中violate_Java中的Volatile关键字

Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说&#xff0c;对volatile变量的读取会从计算机的主存中读取&#xff0c;而不是从CPU缓存中读取&#xff0c;对volatile变量的写入会写入到主存中&#xff0c;而不只是写入到CPU缓存。实际上&#xff0c;…

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心>点击导入插件>选中前…

顶级程序员的心得 - Coders at Work

这篇博客经历了 CSDN 的历次改版后&#xff0c;格式已经坏了&#xff0c; 我重新写了一篇&#xff0c;重排了格式&#xff1a; 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客顶级程序员的心得 –– Coders at Work我2009年读了 “Coders at Work”, …

敏捷软件开发宣言–Manifesto for Agile Software Development

敏捷开发, 谁不会呀, 不就是 没文档, 出活快, 用户说啥都能改? 下面是一个笑话, 王屋村的大牛说 - 我最近转手接了一个活, 完事能挣四五万, 我拿过图纸一看, 不就是盖一烟囱吗? 我们是敏捷 (Agile) 的团队&#xff0c;要文档作甚? 马上开始干活&#xff01; 都快盖好了&am…

教师管理系统设计报告java_教师办公管理系统的设计与实现

随着计算机及网络技术的飞速发展&#xff0c;Internet/Intranet应用在全球范围内日益普及&#xff0c;当今社会正快速向信息化社会前进&#xff0c;信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来&#xff0c;提高了我们的工作效率。教师办公管理系统是一个教育…

顶级程序员的心得–Coders at Work

最新版本在这里&#xff1a; (2584条消息) 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客https://blog.csdn.net/SoftwareTeacher/article/details/113489014

scrum–yesterday once more

在敏捷开发的 SCRUM 流程中, 一个基本要求就是团队中的成员在每日例会中介绍自己昨天的进度, 今天的计划, 和遇到的困难。 下面是《现代软件工程》课程上一个学生团队在2/18 和 2/19 这两天的报告。 粗粗看去, 不禁有 “昨日重来” 的感觉。 一些同学的任务在2/18 报告的 yest…