阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】 某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:Red(ID,BatchID,SenderID,Money,ReceiverID)其中 ID 唯一标识每一个红包; BatchID 为发红包的批次,一个 BatchID 值可以对应多个ID 值;SenderID 为发红包人的标识;Money 为红包中的钱数; ReceiverID 记录抢到红包的人的标识。发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包, 其 ReceiverID 值为空值。抢某个红包时,需要判定该红包记录的 ReceiverID 值是否为空,不为空时表示该红包己被抢走,不能再抢,为空时抢红包人将自己的标识写入到 ReceiverID 宇段中,即为抢到红包。【问题1】引入两个伪指令 a = R(X) 和 W(b,X) 。其中a = R(X) 表示读取当前红包记录的ReceiverID 字段(记为数据项 X) 到变量a中, W(b,X)表示将抢红包人的唯一标识b的值写入到当前红包记录的ReceiverID 字段(数据项 X) 中,变量a为空值时才会执行 W(b,X) 操作。假设有多个人同时抢同一红包(即同时对同一记录进行操作),用 ai=Ri (X)和 Wi(bi, X)表示系统依次响应的第i个人的抢红包操作。假设当前数据项 X 为空值,同时有三个人抢同一红包,则(1)如下的调度执行序列:a1 =R1, a2 = R2(X),W1(b1 ,X),W2(b2,X), a3 = R3(X)抢到红包的是第几人?并说明理由。(2)引入共享锁指令 SLocki(X)、独占锁指令XLocki(X)和解锁指令 ULocki(X) ,其中下标i表示第i个抢红包人的指令。如下的调度执行序列:SLock1(X),a1 = R1(X),SLock2(X),a2 = R2(X),XLock1(X)......是否会产生死锁?并说明理由。 (3)为了保证系统第一个响应的抢红包人为最终抢到红包的人,请使用上述。)中引入的锁指令,对上述(1)中的调度执行序列进行修改,在满足2PL协议的前提下,给出一个不产生死锁的完整的调度执行序列。【问题2】 下面是用 SQL实现的抢红包程序的一部分,请补全空缺处的代码CREATE PROCEDURE ScrambleRed (IN BatchNo VARCHAR(20) , --红包批号( IN RecvrNo VARCHAR(20) ) 一接收红包者BEGIN--是否已抢过此批红包if exist s( SELECT * FROM Red WHERE BatchID = BatchNo AND ReceiverID = RecvrNo) thenreturn -1;end if;---读取此批派发红包中未领取的红包记录IDDECLARE NonRecvedNo VARCHAR(30);DECLARE NonRecvedRed CURSOR FORSELECT ID FROM RedWHERE BatchID = BatchNo AND ReceiverID IS NULL;-打开游标OPEN NonRecvedRed;FETCH NonRecvedRed INTO NonRecvedNo;while not error一抢红包事务BEGIN TRANSACTION;//写入红包记录UPDATE RED STE RECDIVER ID =RecvrNoWHERE ID = nonRECVED AND( a )//执行状态判定If<修改的记录数>= 1 THENCOMMIT;( b );Return 1;ElseROLLBACK;End if;( c );End while--关闭游标CLOSE NonRecved RDReturn 0;END
正确答案及解析
正确答案
解析
【问题1】(9分)(1)第2人,并发操作出现了丢失更新的问题,第2个的更新覆盖了第1个的更新,原因是破坏了事物的隔离性。(2)会产生死锁,由于数据X同时被1和2加锁了S锁,再对方没有释放的时候,都无法加成功X锁,导致1和2一直都处于等待的状态(3)XLock(X) a=R(X) W(b,X)UNLock(X)【问题2】(6分)(a)BatchID=BatchNo(b)CLOSE NonRecvedRed(c)END TRANSACTION
你可能感兴趣的试题
【说明】利用ASP+access开发网站管理系统,设计以下两个网页Add_form.asp 和Add.asp,通过它们将网站信息添加到数据库test.mdb 中website表中。下图是Add_form.asp 浏览页面,在其上输入需要添加页面内容后,单击"确定"按钮,执行Add.asp 页面完成相应内容添加到数据库test.mdb 中。
问题1:完成程序中空白处填空。
<% Option Eplicit%><Html><head><title>添加记录示例</title></head>(1)align="center">添加新网站</h2><center><table border="1" width="90%"><form name ="form1"method="(2)"action=(3)"><tr><td>网站名称</td><td><input type="(4)"name="name" size=20></td></tr><tr><td>网站地址</td><td><input type="text"name="URL" size=40></td></tr><tr><td>网站简介</td><td>(5) name ="into" row="2"cols="40"wrap="solf "></textarea></td></tr><tr><td> </td><td><input type=(6)" "value="确定"><input type=(7)" "value="(8)"</td></tr></from></table></center></body></html>
添加数据记录执行程序add.asp:
<% Otion Eplicit><% '如果上面信息已经填全了,就添加记录,否则给出错误提示信息Dim connSet conn=server.(9)("ADODB.Connection")conn.Open "Dbq="&Server,mappath("(10)")&";Driver={Microsoft Access Driver(*.mdb)};"Dim strSql,varName,varURL,varlntro,rs '定义变量VarName=Request.Form("(11)")VarURL=Request.Form(" URL")VarIntro =Request.Form("Intro")(12)="Insert into website (name,URL.intro,submit_date)Values( "&varName &","&_varURL&","& varIntro &",# "&Date( )&" # )" 'Date( )表示取服务器时间Set rs=conn.(13) (strSql)index.asp" '添加成功,则返回首页index.asp…response.(14) "请将所有信息填写完整"response. (15)"add_form.asp"%>
备选答案
(1).A.b3 B. h2 C.h3 D.空白
(2)A. get B. post C.put D.pull
(3)A.add.asp B.add C.add_form.asp D.continue
(4)A.submit B.option C.radio D.text
(5)A. textarea B.text C.select D.option
(6)A.submit B.reset C.radio D.text
(7)A.submit B.reset C.radio D.text
(8)A.submit B.确定 C.reset D.重写
(9)A.mappath B.cereateobject C.application D.server
(10)A.test B.test.mdb C.website D.website.table
(11)A.name B.text C.requesto D.response
(12)A. strSql B.varName C.varURL, D.varlntro
(13)A.open B.execute C.requesto D.response
(14)A.write B.rewrite C.redirect D.direct
(15)A.write B.rewrite C.redirect D.direct
- 查看答案
某机器字长为n,最高位是符号位,其定点整数最大值为( )。【由于网页格式问题,答案中N表示N次方】
-
- A.2^n-1
- B.2^(n-1)-1
- C.2^n
- D.2^n+1
- 查看答案
10个成员组成开发小组,若任意两人之间都有沟通路径,则一共有(7)条沟通路径
-
- A.100
- B.90
- C.50
- D.45
- 查看答案
在软件设计阶段,划分模块原则是,一个模块( )。
-
- A.作用范围应该在其控制范围之内
- B.控制范围应该在作用范围之内
- C.作用范围与控制范围互不包含
- D.作用范围与控制节围不受任何限制
- 查看答案
以下关于结构化开发方法叙述中,不正确是( )。
-
- A.“总指导思想是自顶向下,速层分解
- B.基本原则是功能分解与抽象
- C.与面向对象开发方法相比,更合适大规模、特别夏杂项目
- D.特别适合于数据处理领域项目
- 查看答案