关闭

笔试选择题十一

134人阅读 评论(0) 收藏 举报
分类:
一、

丢失修改

下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。

考虑飞机订票系统中的一个活动序列:
甲售票点(甲事务)读出某航班的机票余额A,设A=16.
乙售票点(乙事务)读出同一航班的机票余额A,也为16.
甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.
乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.

结果明明卖出两张机票,数据库中机票余额只减少1。

归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。前文(2.1.4数据删除与更新)中提到的问题及解决办法往往是针对此类并发问题的。但仍然有几类问题通过上面的方法解决不了,那就是:
 不可重复读

不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:
事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。
事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。
事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读) 
读"脏"数据

读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。

产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。

设有两个事务T1,T2,其并发操作如下所示,下面评价正确的是()
步骤          T1         T2
1          读A=100
2                      读A=100
3.         A=A+10写回 
4.                     A=A-10写回
这两个事务的问题出在,原本两个事务的目的是T1先把A的值加10,A变为110,。然后T2把A的值再减10,即A变回100。
但是根据题目中的执行顺序,A的值变为90,即T2的修改覆盖了T1的修改,这种现象叫做丢失修改。
二、与Mysql服务器相互作用的通讯协议包括TCP/IP,Socket,共享内存,命名管道
三、新建一个管理员用户admin,需要使用的参数()
(1)useradd -u 0 -o admin
(2)useradd -g -0 admin
(3)useradd -p -d admin
(4)useradd -e -f admin
正确答案:A;本题考察linux下的命令;
解析:-u 表示指定用户的用户号,由于系统用户的用户号是0,所以指定用户号为0。如果同时有-o选项,则可以
重复使用其他用户的标识号;即-u 0 -o admin的到相同的效果。但是系统本身存在用户号为0 的系统用户,则这
里应该使用-o admin参数;u表示创建用户.g表示创建用户组 -e指定账号的有效期限,缺省表示永久有效。 
-f指定在密码过期后多少天即关闭该账号。-p表示创建密码

四、下面()组命令,将变量count值赋值为1

DECLARE @count 
SELECT @count=1
@表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量)
申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;
赋值:有两种方法式(@num为变量名,value为值)
set @num=value;   或   select @num=value;
DECLARE @count表示选定变量,SELECT @count=1表示为count赋值;这里的赋值语句还可以使用SET @count=1;但是select和set在赋值语句中有些区别:SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,即如果数据表中存在多个count变量,则不能使用SET赋值;
五、c++中规定,重载运算符必须和用户定义的自定义类型的对象一起使用。
下面重载乘法运算符的函数原型声明中正确的是ABD
MyClass operator *(double ,MyClass);
MyClass operator *(MyClass ,MyClass);
MyClass operator *(double ,double);
MyClass operator *(MyClass ,double)
六、下列哪个IP地址可以分配给一台计算机?
256.1.3.4
197.3.11.0
199.5.89
11.15.33.235

互联网的网络地址分为A~E五类,其中
A类地址:0.0.0.0 ~ 127.255.255.255
主机号是后24位
B类地址:128.0.0.0 ~ 191.255.255.255
主机号是后16位
C类地址:192.0.0.0 ~ 223.255.255.255
主机号是后8位
D类地址:224.0.0.0 ~ 239.255.255.255
后28位为多播组号
E类地址:240.0.0.0 ~ 255.255.255.255
后27位待用

所以,A错。
主机号全为0的时候,表示一个网段
主机号全为1的时候,是一个指向网络的广播。关于广播的具体分类请看TCP/IP卷一的第12章。
所以B代表一个网段。
C的话,参照TCP/IP详解卷一第三章 IP:网际协议的图3-3,代表了一个直接相连的网络。
D作为一个A类地址,是可以分配给一台计算机的。

0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25812次
    • 积分:1503
    • 等级:
    • 排名:千里之外
    • 原创:126篇
    • 转载:41篇
    • 译文:0篇
    • 评论:5条
    最新评论