版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1事务的概念6.2数据库恢复技术6.3数据库并发控制6.4数据库安全性6.5数据库完整性第6章数据库保护16.1事务的概念事务:是一个不可分割的操作序列,该操作序列要么全做,要么全不做。事务和程序事务的开始与结束隐式控制显式控制强调:事务和程序是两个概念。一个程序中可以包含多个事务。隐式控制:由DBMS按缺省规定自动划分。显式控制:
BEGINTRANSACTION
[事务开始]COMMIT
[事务提交,重新改写数据库]ROLLBACK
[事务提交,发生错误撤消]2BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘计算机’)COMMIT例如:
BEGINTRANSACTIONDELETEFROMSWHERES#=‘10002’;DELETEFROMSCWHERES#=‘10002’;ROLLBACK36.1事务的概念事务的ACID特性AtomicityConsistencyIsolationDurability41、原子性(Atomicity):事务是不可分割的工作单位2、一致性(Consistency)事务提交后,数据库从一个一致性状态变到另一个一致性状态。3、隔离性(Isolation)在事务完成之前,它对数据库产生的结果不能被其它事务引用。4、持续性(Durability)一旦事务执行成功(提交),其对数据库产生的效果永久有效。事务的性质(ACID)56.1事务的概念事务管理功能保证事务的ACID特性事务ACID特性可能遭到破坏的原因:多个事务并行运行时,多个事务中的操作交叉执行;事务正在执行时,被强迫终止。数据库的恢复和并发控制66.2数据库恢复硬件故障、软件故障、操作失误、恶意破坏等,导致事务运行的非正常中断,甚至破坏数据库,造成数据丢失数据库恢复:把数据库从错误状态恢复到某一个已知的正确状态76.2数据库恢复
一、数据库的故障种类事务内部故障系统故障介质故障计算机病毒8一、数据库的故障种类事务内部故障银行转帐业务:从帐号甲将一笔金额转入帐号乙BEGINTRANSACTION 读取帐号甲的余额BALANCE; BALANCE=BALANCE–AMOUNT; 写回BALANCE; if(BALANCE<0)then{ROLLBACK;} else{ 读取帐号乙的余额BALANCE1; BALANCE1=BALANCE1+AMOUNT; 写回BALANCE1;
COMMIT;}9一、数据库的故障种类事务内部故障非预期的事务内部故障:运算溢出、违约处理办法:强行回滚ROLLBACK该事务,即事务撤销(UNDO操作)10一、数据库的故障种类系统故障系统停机,需要重启。如CPU故障、OS故障、DBMS代码错误、系统断电影响正在运行的事务,但不会破坏数据库处理办法:(1)UNDO所有未完成的事务;(2)REDO所有已提交的事务11一、数据库的故障种类介质故障硬故障:磁盘损坏、磁头碰撞、瞬间强磁场干扰等出现概率小、破坏性非常大计算机病毒破坏系统、修改数据12一、数据库的故障种类各类故障的影响数据库本身被破坏数据库没有被破坏,但数据可能不正确如何恢复呢?冗余13两个关键问题:
1如何建立冗余数据2如何利用冗余数据实施数据库恢复6.2数据库恢复
二、数据库恢复技术冗余14二、数据库恢复技术如何建立冗余数据数据转储登录日志文件数据转储DBA定期地将整个数据库复制到其它外存上保存的过程后备副本/后援副本(BACKUP)15数据转储静态转储:在系统空闲的时候进行,转储期间不允许对数据库进行操作。优点:简单、保证副本和数据库数据的一致性;缺点需等待。动态转储:转储期间允许对数据库进行操作优点:效率高;缺点是不能保证副本和数据库数据的一致性,必须记录转储期间各事务对数据库的修改活动(日志文件)16两种转储方式:海量转储:每次转储数据库中的全部数据增量转储:每次转储上一次转储后更新过的数据
两种转储状态动态转储静态转储两种转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储17二、数据库恢复技术登录日志文件用来记录事务对数据库的更新操作的文件两种格式的日志文件:(1)以记录为单位的日志文件(2)以数据块为单位的日志文件例如:以记录为单位的日志文件 各个事务的开始标记 各个事务的结束标记 各个事务的所有更新操作日志记录:事务标识操作类型操作对象更新前的旧值更新后的新值18二、数据库恢复技术日志文件的作用:进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。事务故障和系统故障恢复必须用日志文件;在动态转储方式中必须建立日志文件,并结合后备副本和日志文件对数据库进行有效的恢复;静态转储时也可建立日志文件19二、数据库恢复技术登记日志文件的原则先来先登记原则:严格按照并发事务执行的时间顺序登记;先写日志文件原则:必须先写日志文件,后写数据库。20数据库镜像:自动将数据库中的全部数据或关键数据复制到另外一张盘上。应用1应用2应用3应用4update复制readreadread应用1应用2应用3应用4update恢复readread(a)(b)read镜像镜像缺点:降低系统效率21四、数据库恢复策略1.事务故障的恢复2.系统故障的恢复3.介质故障的恢复对于不同的故障类型要采用不同的恢复策略22多用户数据库系统事务执行方式串行执行:ACID无破坏,效率低并发执行:ACID可能破坏,效率高交叉并发:InterleavedConcurrency同时并发:SimultaneousConcurrency6.3并发控制23一、并发操作引起的问题丢失修改不可重复读读“脏”数据封锁协议6.3并发控制24例:银行中,C账户上原有存款500元,现有两位顾客同时给此账户存款,分别运行下面两个事务:T1:READ(C),C=C+100,WRITE(C);T2:READ(C),C=C+200,WRITE(C);运行过程可能如下:(1)先执行事务T1,然后执行事务T2(2)先执行事务T2,然后执行事务T1(3)事务T1和事务T2并发执行25读出C,C=500读出C,C=500C=C+100,C=600把C写到数据库C=C+200,C=700把C写到数据库C:600C:700C:500T1的运行T2的运行26事务T1事务T2读出C,C=500C=C+100C=600读出C,C=500C=C+200C=700丢失修改27事务T1事务T2
读出A=50读出B=100求和=150
读出B=100B=B*2WRITE(B)
读出A=50读出B=200求和=250(验算不对)不可重复读28三种不可重复读读不一致T1读A,T2修改A,T1读A删除幻影T1读取元组集合A,T2删除部分元组,T1读取元组集合A插入幻影T1读取元组集合A,T2插入一些元组,T1读取元组集合A不可重复读29事务T1事务T2
读出C=100C=C*2WRITE(C)
读出C=200
ROLLBACKC恢复为100读“脏”数据T1修改A,T2读A,T1撤销修改30导致问题的原因丢失修改、不可重复读、读“脏”数据原因:并发操作破坏了事务的隔离性是否可以找到并发操作的合理调度方式,从而避免三类问题?311、事务的表示方法:Ri(X)表示事务Ti的读X操作;Wi(X)表示事务Ti的写X操作。例:事务T1(Read(B);A=B+1;write(A))事务T2(Read(A);B=A+1;write(B)) 可以表示成:
T1:R1(B)W1(A)T2:R2(A)W2(B)二、调度可串行性32R1(X)R1(Y)W1(Y)符号→表示先于(<),即R1(X)先于W1(Y)执行,R1(Y)先于W1(Y)执行,而R1(X)和R1(Y)的先后次序无关紧要。332、冲突操作定义:如果两个操作来自不同的事务,它们对同一数据单位进行操作,并且其中至少有一个是写操作,则称这两个操作是相互冲突的或冲突操作。例:事务T0:W0(X)W0(Y)W0(Z)事务T1:R1(X)R1(Z)W1(X)则在这两个事务中有冲突操作:R1(X)与W0(X)
W1(X)与W0(X)
R1(Z)与W0(Z)调度:对于冲突操作不能同时执行,哪个先执行,哪个后执行。343、调度:事务执行的次序。设τ={T1,T2,…Tn}是一事务集,τ的一个调度S是一拟序集(∑,<s)其中:1)
∑说明S执行的操作正是T1,T2,…Tn的操作。2)<s说明调度S遵守每个事务的操作的内部执行次序3)每对冲突操作的执行次序由S决定。R1(X)R1(Z)W1(X)S1=W0(X)W0(Y)W0(Z)S1=({W0(X),W0(Y)
,W0(Z),R1(X),R1(Z)
,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)
,W0(Z),R1(X),R1(Z)
,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<R1(Z),R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)
,W0(Z),R1(X),R1(Z)
,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(Z)<R1(X),R1(X)<W1(X),R1(Z)<W1(X)})354、串行调度:如果在一个调度中,各个事务不交叉执行,而顺序地串行执行,这个调度被称为串行调度。定义:如果调度S中的任意两个事务Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,则称S为串行调度。注意:在串行调度中每一个事务都是在下一个事务开始执行之前提交。因此,串行调度没有并发性,故每一个串行调度都是一个正确的执行。5、并发调度:如果在一个调度中,各个事务交叉地执行,这个调度称为并发调度。366、可串行化的调度:如果一个事务集的并发调度与某一串行调度是等价的,则称该并发调度是可串行化的。7、串行化定理定理:一个调度S是可串行化的,当且仅当它的串行图是无环的。串行图:设S是若干事务{T1,T2,…,Tn}的一个调度,S的串行图SG(S)是一个有向图,其构成规则如下:1)图中的结点表示事务2)如果Oi和Oj是冲突操作,且Oi先于Oj执行,则在图中有一条边Ti→Tj。37R1(X)W1(X)R3(X)W3(Z)R2(X)W2(Y)W1(Y)T2T1T3R1(X)W1(X)R3(X)W3(X)R2(X)W2(Y)W1(Y)T2T1T3例:388、等价的串行调度:如果SG(S)是无环的,则S等价于SG(S)的任一拓扑排序。T2T1T3拓扑排序为:T2,T1,T3T1T2T3拓扑排序为:T1,T3,T2或为:T1,T2,T3拓扑排序:从无入弧的节点开始递归去除39W0(X)W0(Y)W0(Z)R1(X)R1(Z)W1(X)R3(Z)W3(Y)W3(Z)R4(X)R4(Y)R4(Z)R2(X)W2(Y)T0T1T2T3T4调度S的串行图拓扑排序为:T0,T2,T1,T3,T4或为:T0,T2,T3,T1,T4401、封锁:事务T在对数据进行操作之前,先向系统申请对其进行加锁,获得锁后不允许其它事务更新该数据,直到事务T释放该数据上的锁。2、封锁的类型排它锁(又称写锁,简称X锁)若事务T对数据对象A加上X锁,则其它事务不能在A上加任何类型的锁,此时,只允许事务T读取和修改A,直到T释放A上的锁。共享锁(又称读锁,简称S锁)若事务T对数据对象A加上S锁,则其它事务也可在A上加S锁,但不能加X锁,事务T和其它事务只能读取A,但不能修改A。三、基于封锁的并发控制41封锁级别加锁放锁防止丢失修改保证可重复读不读“脏”数据一级事务T在修改数据A之前必须先对其加X锁事务结束才释放X锁可防止不能保证不能保证二级一级封锁协议+事务T在读取数据A之前必须对其加S锁读完后即可释放S锁可防止不能保证能保证三级一级封锁协议+事务T在读取数据A之前必须对其加S锁事务结束才释放S锁可防止能保证能保证3、封锁协议42一级封锁协议例XlockARead(A)A=10A=A-5Write(A)CommitUnlockAXlockARead(A)A=5A=A-5Write(A)CommitUnlockA等待等待等待等待获得XlockA事务T1事务T2没有丢失修改READ(C,D)M=C+DREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockD43二级封锁协议例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2防止读“脏”数据Write(D)Write(C)XlockCXlockDUnlockCUnlockDRollBackSlockCSlockD等待等待等待获得SlockC获得SlockDUnlockCUnlockDREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockDSlockCSlockDUnlockCUnlockD等待获得XlockC获得XlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待获得SlockC获得SlockDCommitCommitCommit44三级封锁协议例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待获得XlockC获得XlockD等待CommitCommit45活锁:事务T1,T2申请数据对象A,T1先给A加锁,T1释放A上的锁后,事务T3又给A加锁,T2等待,这样,A始终被其他事务封锁,事务T2可能长时间得不到A,这种情况称为活锁。避免活锁的方法:采用先来先服务的原则。死锁:事务T1已经封锁A,而又想申请封锁B,而此时事务T2已经封锁B,而又想申请封锁A,这样,T1等待T2释放B,而T2等待T1释放A,使得T1、T2均无法继续执行下去,这种情况称为死锁。LOCKA…LOCKB…LOCKB…LOCKA…46
1)某一事务在对数据进行读、写之前,先要申请并获得对该数据的封锁。2)在释放一个封锁之后,事务不再申请和获得任何其它封锁。
说明:规则1避免了两个冲突操作同时存取同一数据。规则2把每个事务分为两个阶段:上升段和下降段。上升下降每一事务只有得到全部锁以后才放锁。4、两阶段封锁协议(2PL协议)472PL调度优点:简单缺点:易死锁例如:对于如下两个事务采用两段锁协议T1:R1(X)W1(Y)T2:W2(Y)W2(X)T1与T2的一个调度过程:
1初始时,没有事务占有锁2调度器接到R1(X),对X加读锁,执行R1(X)。3调度器接到W2(Y),对Y加写锁,执行W2(Y)4调度器接到W2(X),T2等待5调度器接到W1(Y),T1等待这样就造成了死锁。48定理:任何一个遵从2PL协议的调度都是可串行化的。说明:事务遵守2PL协议是可串行化调度的充分条件,而不是必要条件。即若并发事务都遵守2PL协议,则对这些事务的任何并发调度策略都是可串行化的;若对并发事务的一个调度是可串行化的,不一定所有事务都符合2PL协议。49预防死锁*一次封锁法:要求每个事务必须一次将所有要使用的数据全部封锁,否则,不能执行。缺点:降低了系统的并发度。*顺序封锁法:预先对数据对象规定一个封锁次序,所有事务都按这个次序实行封锁。缺点:排列封锁次序困难。判断并解除死锁*超时法:事务的等待超过了规定的时限*等待图法:检测等待图中是否有回路存在。四、死锁506.4数据库安全性数据库的安全性:就是防止非法用户使用数据库造成数据泄露、更改或破坏,以达到保护数据库的目的。计算机系统安全性为计算机系统建立和采取的各种安全保护措施,保护计算机系统(硬件、软件及数据)不会遭到破坏。保护数据库以防止不合法使用一般计算机系统中,安全措施是一级一级层层设置的第一节安全性51用户标识与鉴别存取控制视图机制审计数据加密第二节数据库安全性控制用户DBMSDBOS用户标识和鉴定存取控制操作系统安全保护密码存取*为不同的用户定义不同的视图把用户对数据库的所有操作自动记录下来放入审计日志中。Oracle安全措施主要有:
1用户标识和鉴定2存取控制3审计52XMSJCZ用户甲02-10-622:32:55进入系统用户甲02-10-820:33:07录入数据用户乙02-10-98:50:42进入系统用户乙02-10-1111:53:13修改密码用户丁02-10-137:19:29进入系统用户丁02-10-288:00:53查询数据531.用户标识与鉴别用户标识:Identification用户名:UserName,或者用户标识号:UID用户鉴别:Authentication用户名+口令:Password542.存取控制数据库安全的主要思路:存取控制给合适的人以合适的权限存取控制机制定义用户及其权限,在数据字典中登记用户权限;权限合法性检查552.存取控制两类实现存取控制的方法自主存取控制:DiscretionaryAccessControla)用户对不同的数据对象有不同的权限;b)不同用户对同一对象具有不同的权限;c)允许用户之间的传递授予权限强制存取控制:MandatoryAccessControla)以一定的密级标注数据对象b)授予每个用户以某一级别的许可证多数DBMS均支持DAC56自主存取控制DAC用户权限谁+在哪个对象上+可以干什么事情授权:将用户权限授予特定用户的过程用户数据库对象操作类型用户权限的二要素57自主存取控制DAC对象类型数据库对象操作类型数据库模式CreateSchema基本表CreateTable,AlterTable模式视图CreateView索引CreateIndex数据基本表和视图Select,Insert,Update,Delete,References,AllPrivileges数据属性列Select,Insert,Update,Delete,References,AllPrivileges58自主存取控制DACSQL标准对DAC的支持授权:Grant语句回收:Revoke语句SQL创建用户时赋予用户的权限DBA、RESOURCE、CONNECTCreateUser<用户名>[WithDBA|RESOURCE|CONNECT]59自主存取控制DAC默认用户权限:CONNECTCreateUser<用户名>[WithDBA|RESOURCE|CONNECT]CONNECT用户的初始权限:只能登录数据库RESOURCE用户的初始权限:创建基本表和视图,并成为所创建对象的属主不能创建模式和新用户可授权DBA用户的初始权限:创建新用户、模式、基本表、视图等拥有对所有数据库对象的存取权限可授权60自主存取控制DAC授权权限:Grant语句把“在某个对象上”“干某种事情”的权限授予“某个用户”GRANT<权限>ON<数据对象>TO<用户>[WITHGRANTOPTION]61自主存取控制DAC<数据对象>::=<基表>|<视图>|<属性>|…<用户>::=PUBLIC|<用户名>PUBLIC是所有数据库用户的总称若有WITHGRANTOPTION,则用户可将此特权转授给其它<用户>。不允许循环授权GRANT<权限>ON<数据对象>TO<用户>[WITHGRANTOPTION]62例如:GRANTSELECTONTABLE表1TOPUBLIC;//将对表1的SELECT特权授予所有的用户。GRANTSELECT(列1,列5)ON表1TOsam;//将对表1中1和5列的INSERT特权授予sam。GRANTALLPRIVILEGESONTABLE表1TObob,sam;//将对表1的所有操作特权授予bob和sam。GRANTUPDATE(列2,列4)ON表1TOwangWITHGRANTOPTION;//将对表1中2和4列的UPDATE特权授予wang,并允许他将此特权转授给其它用户。63自主存取控制DAC回收权限:Revoke语句把“在某个对象上”“干某种事情”的权限从“某个用户”那里要回来REVOKE<权限>ON<数据对象>FROM<用户>[CASCADE|RESTRICT]REVOKEUPDATE(Sno)ONTABLEStudentFromuser4;64以单个权限为单位授权太过麻烦角色:权限的集合为具有相同权限的用户群创建一个角色基于角色来管理权限简化授权过程创建角色给角色授权或授予角色给用户授予角色自主存取控制DAC65自主存取控制DAC角色的创建CREATEROLE<角色名>给角色授权GRANT<权限>ON<数据对象>TO<角色>GRANT<角色>TO<角色>[WITHADMINOPTION]给用户授予角色GRANT<角色>TO<用户>[WITHADMINOPTION]66角色权限的回收REVOKE<权限>ON<数据对象>FROM<角色>举例:创建角色R1使R1具有Student表的Select/Update/Insert权限将R1角色授予用户王平和李明修改R1,使其具有Student表的Delete权限自主存取控制DAC673.视图机制视图机制王平老师只能查询计算机系学生的信息系主任李明具有处置计算机系学生信息的所有权限CREATEVIEWCS_STUASSelect*FromStudentWhereSdept=‘CS’;GRANTSELECTONCS_STUTO王平;GRANTALLPRIVILIGESONCS_STUTO李明684.审计Audit和数据加密审计:C2级DBMS的必要指标,是把用户对数据库的所有操作自动记录下来放入审计日志用户级审计系统级审计数据加密69数据库完整性:数据的正确性和相容性。完整性安全性数据库完整性和安全性的区别完整性防止错误信息的输入与输出。安全性是保护数据库防止恶意的破坏和非法的存取。6.5数据库完整性70DBMS对数据库完整性的支持提供定义完整性约束的机制 实体完整性、参照完整性、自定义完整性提供完整性检查的方法违约处理:拒绝执行、级联执行6.5数据库完整性711完整性约束的概念完整性约束:加在数据之上的语义约束完整性约束的作用对象●关系:若干元组间、关系集合上以及关系之间的联系的约束●元组:元组的约束是元组中各个字段间的联系的约束●属性列:主要是列的数据类型、取值范围、精度、排序等约束条件721完整性约束的概念完整性约束的类型静态约束:数据库在确定状态时数据对象应满足的约束条件;动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间应满足的约束条件73
1)静态列约束:是对一个列的取值域等的限制。对数据类型的约束;对数据格式的约束;对取值范围或取值集合的约束;对空值的约束;2)静态元组约束:规定组成一个元组的各个列之间的约束关系。例如:库存关系中出库数量不能大于库存数量。3)静态关系约束:反映了一个关系中各个元组之间或者若干关系之间存在的联系或约束。实体完整性约束;参照完整性约束;静态约束74
1)动态列约束:规定修改列定义或列值时应满足的约束条件。如:将允许为空的列修改为不允许为空;学生的年龄只能增长。2)动态元组约束:规定修改元组的值时其各个属性列之间需要满足的约束条件例如:职工工资调整时新工资不得低于原工资+工龄*1.5。3)动态关系约束:加在关系变化前后状态上的限制条件。事务的ACID特性:原子性/一致性/隔离性/持久性动态约束752实体/参照完整性约束实体完整性:PRIMARYKEY列级定义关系级定义参照完整性:FOREIGNKEY/REFERENCES违约处理:拒绝、级联删除、设置为空762实体/参照完整性约束CREATETABLESC(SnoCHAR(8)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Cno)REFERENCESCourse(Cno)ONDELETENOACTIONONUPDATECASCADE);773用户自定义完整性约束定义属性列的约束条件列值非空:NOTNULL列值唯一:UNIQUE语义检查:CHECK短语举例:性别只允许取值“男”或“女”CREATETABLEStudent(……SsexCHAR(2)CHECK(SsexIN(“男”,“女”)),……);成绩只能在0-100之间:CREATETABLESC(….….GradeSMALLINTCHECK(Grade>=0andGrade<=100),……);78违约处理和保护:createtables(snochar(2)primarykey,sgenderchar(2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络延迟优化-洞察分析
- 虚拟偶像庆典应用-洞察分析
- 写保护动物的演讲稿(5篇)
- 《大数据存储技术与应用》 课件 项目三-任务五 浅析对象存储系统
- 维护服务环境标准制定-洞察分析
- 《人与动物的关系》课件
- 企业安全用电共筑绿色发展未来
- 产品设计中的创意激发与实现技巧
- 创新思维的跨领域应用与拓展
- 从传统到数字化现代企业实验室管理与安全规范探索研究
- 2023年深圳市云端学校应届生招聘教师考试真题
- 店铺三年规划
- 2024年员工绩效考核合同3篇
- 全国园地、林地、草地分等定级数据库规范1123
- 地推活动合同范例
- 2023年国网四川省电力公司招聘笔试真题
- 昆明理工大学《自然语言处理》2022-2023学年第一学期期末试卷
- 建设项目全过程工程咨询-终结性考试-国开(SC)-参考资料
- 陈义小学进城务工人员随迁子女入学工作制度和措施
- 2023-2024学年广东省深圳市龙华区六年级上学期期末英语试卷
- 2024年注册会计师审计考试题及答案
评论
0/150
提交评论