数据库程序员面试分模拟题10_第1页
数据库程序员面试分模拟题10_第2页
数据库程序员面试分模拟题10_第3页
数据库程序员面试分模拟题10_第4页
数据库程序员面试分模拟题10_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库程序员面试分模拟题10简答题1.

DBMS_OUTPUT提示缓冲区不够,怎么增加?正确答案:采用命令“DBMS_OUTPUT.ENABLE(20000);”,另外,如果DBMS_OUTPUT(江南博哥)的信息不能显示,那么需要设置SETSERVEROUTPUTON。[考点]系统包

2.

后台进程、服务器进程和用户进程之间的区别是什么?正确答案:后台进程、服务器进程和用户进程间的关系如下图所示。

(1)USERPROCESS(用户进程)

用户进程指的是Oracle客户端进程。例如,常用的Oracle的SQL*Plus就是最常用的客户端进程。

(2)SERVERPROCESS(服务器进程)

服务器进程指的是与客户端连接的服务器端的后台进程。对于每个前台的用户进程,后台都有一个服务器进程与之对应。服务器主要是通过它和用户进程进行联系、沟通及进行数据的交换。

(3)BACKGROUNDPROCESSES(后台进程)

后台进程是Oracle的程序,在Oracle实例启动的时候启动,用来管理数据库的读写、恢复和监视等工作,例如PMON、SMON等进程。后台进程是Oracle实例的核心。

在UNIX操作系统上,Oracle的后台进程对应于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows操作系统上,Oracle的后台进程对应于操作系统线程,打开任务管理器,只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在ORACLE.EXE进程中的线程。[考点]后台进程

3.

Oracle中哪个包可以获取环境变量的值?正确答案:可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值。[考点]系统包

4.

如何查询SCHEDULERJOB的运行日志?正确答案:可以通过查询视图DBA_SCHEDULER_JOB_RUN_DETAILS来获取SCHEDULERJOB的运行日志、产生的错误等信息。代码如下:

SELECTJRD.LOG_ID,JRD.JOB_NAME,N.JOB_CLASS,

TO_CHAR(JRD.LOG_DATE,'YYYY-MM-DDHH24:MI:SS')LOG_DATE,

JRD.STATUS,JRD.ERROR#,JRD.RUN_DURATION运行时长,JRD.ADDITIONAL_INF.O

FROMDBA_SCHEDULER_JOB_LOGN,DBA_SCHEDULER_JOB_RUN_DETAILSJRD

WHEREN.LOG_ID=JRD.LOG_ID

ANDN.JOB_NAME='JOB_INSERT_SQL_LHR'

--JOB的名称

ORDERBYJRD.LOG_IDDESC;

从查询结果中可以看到,JOB_INSERT_SQL_LHR从2016-11-2913:03:36开始执行的时候就报错了,报错信息可以从ADDITIONAL_INFO列里找到,其报错的具体信息如下:

ORA-01658:unabletocreateINITIALextentforsegmentintablespaceTS_LHR

ORA-06512:at"DB_MONITOR.PKG_SQL_HISTORY_LHR",line180

可见,涉及的程序是DB_MONITOR用户下的PKG_SQL_HISTORY_LHR包,而ORA-01658的错误是由于表空间不足引起的。[考点]JOB

5.

如何在AWR中查看每秒执行事务的个数?正确答案:该题考查的是对AWR报告的熟悉程度。AWR中每秒事务数在LoadProfile部分的最后,负载较低的数据库每秒执行事务的个数可能小于1;而对于一些负载比较大的场景,每秒可能会有50、1000,甚至高达10000的事务,所以,这个只与具体的场景有关。[考点]ASH/AWR/ADDM

6.

在MySQL中,VARCHAR与CHAR的区别是什么?VARCHAR(50)中的50代表的含义是什么?正确答案:CHAR是一种固定长度的类型,VARCHAR则是一种可变长度的类型。

CHAR列的长度固定为创建表时声明的长度。长度可以为0~255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串。长度可以指定为0~65535之间的值。VARCHAR的最大有效长度由最大行大d,~ll使用的字符集确定。在MySQL4.1之前的版本,VARCHAR(50)的“50”指的是50字节(Byte)。如果存放UTF8汉字时,那么最多只能存放16个(每个汉字3字节)。从MySQL4.1版本开始,VARCHAR(50)的“50”指的是50字符(Character),无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。

CHAR和VARCHAR类型声明的长度表示保存的最大字符数。例如,CHAR(30)可以占用30个字符。对于MyISAM表,推荐CHAR类型;对于InnoDB表,推荐VARCHAR类型。另外,在进行检索的时候,若列值的尾部含有空格,则CHAR列会删除其尾部的空格,而VARCHAR则会保留空格。[考点]数据类型

7.

V$SESSION_LONGOPS视图的作用是什么?正确答案:在Oracle11g之前的版本,长时间运行的SQL可以通过监控V$SESSION_LONGOPS来观察,当某个操作执行时间超过6s时,就会被记录在V$SESSION_LONGOPS中。通常可以监控到全表扫描、全索引扫描、哈希连接、并行查询等操作。[考点]性能诊断

8.

区块链技术和比特币有什么区别?正确答案:区块链技术是比特币(比特币是一种使用P2P技术的去中心化数字货币)的底层技术,比特币在没有任何中心化机构运营和管理的情况下,多年运行非常稳定,没有出现过任何问题,所以有人注意到了它的底层技术,把比特币技术抽象提取出来,称之为区块链技术,或者分布式账本技术。区块链技术不局限于比特币,它可以用于创造任何其他加密货币,比如以太坊和莱特币,每种都有它们各自的区块链。[考点]NewSQL和区块链

9.

请列举一次你曾经处理过的故障。正确答案:没有唯一答案,读者根据自己的维护经验讲解即可,下面给出一个作者曾经处理过的故障诊断案例。

1.故障环境项目sourcedbdb类型RACdbversion.0db存储ASMOS版本及kernel版本AIX64位2.故障发生现象及报错信息有一套数据库做测试的时候,CPU利用率很高,当时抓取了CPU和AWR的信息。发生问题的时间段是19~23点,其中,nmon数据截图如下图所示。可以看到CPU的利用率是非常高的,下边来看看AWR中的数据。从等待事件中可以很明显地看出,“enq:SQ-contention”和“DFSlockhandle”这两个等待事件异常。“Top5TimedEvents”部分也是AWR报告中非常重要的部分,从这里可以看出等待事件中排在前五位的是哪些事件,从而基本上就可以判断出性能瓶颈在什么地方。在这里,“enq:SQ-contention”等待了172254次,等待时间为69652s,平均等待时间为69652/172254s=404ms,等待类别为Configuration即配置上的等待问题。3.有关序列等待的基础知识根据AWR报告的内容基本可以断定,只要解决了“enq:SQ-contention”和“DFSlockhandle”这两个等待事件即可解决问题。其实,“enq:SQ-contention”“rowcachelock”“DFSlockhandle”和“enq:SV-contention”这4个等待事件都与Oracle的序列有关,如下:SELECT*FROMV$EVENT_NAMEWHERENAMEIN('rowcachelock';'enq:SQ-contention','DFSlockhandle','enq:SV-contention');其中,PAREMETER1的值为“name|mode”或“type|mode”的事件为队列等待。在这类等待事件中,name代表队列的名称,type代表队列的类型,mode代表队列的模式。使用如下的SQL可以查询到锁的名称和请求的mode值:SELECTCHR(BITAND(P1,-16777216)/16777215)||CHR(BITAND(P1,16711680)/65535)"LOCK",BITAND(P1,65535)"MODE"FROMV$SESSION_WAITWHEREEVENTIN('enq:SQ-contention','DFSlockhandle','enq:SV-contention');其中,MODE值见下表。模式代码解释1NullMode2Sub-Shoe3Sub-Exclusive4Share5Share/Sub-Exclusive6Exclusive使用如下的SQL可以查询SQ和SV这两种锁的解释:SELECT*FROMV$LOCK_TYPEDWHERED.TYPEIN('SV','SQ');事实上,Oracle为了管理序列使用了如下表所示的三种锁。锁rowcachelockSQ锁(SequenceCache)SV锁(SequenceOrdering)产生的条件NOCACHECACHE+NOORDER或CACHE+ORDER(单实例)CACHE+ORDER(RAC)拥有的锁模式6-X(Exclusive)6-X(Exclusive)5-SSX(Share/Sub-Exclusive)表现出的等待事件rowcachelockenq:SQ-contentionOracle10g表现为DFSlockhandle,而Oracle11g中表现为enq:SV-contention简介在赋予了NOCACHE属性的序列上,在调用SEQUNECE.NEXTVAL过程中,将数据字典信息进行物理修改时拥有该锁,等待事件表现为rowcachelock赋予了CACHE属性的序列调刖NEXTVAL期间,应该以SSX模式获得SQ锁。若许多会话同时为了获取SQ锁而发生争用,则等待enq:SQ-contention事件在RAC上节点之间顺序得到保障的情况下,调用SEQUENCE.NEXTVAL期间拥有该锁。在RAC环境中,赋予CACHE+ORDER属性的序列上发生,在Oracle10g表现为DFSlockhandle,而在Oracle11g中表现为enq:SV-contention。解决办法:尽量设置为NOORDER并增大其CACHE值参数含义P1代表V$ROWCACHE中的CACHE#P1可以查询到锁的名称和请求的MODE值。P2值是序列的OBJECT_ID。因此,若利用P2值与DBA_OBJECTS的结合,就可以知道对哪个序列发生了等待现象P1可以查询到锁的名称和请求的MODE值解决办法尽量设置为NOORDER属性并增大其CACHE值,一般情况下可以增大到1000

在RAC上创建序列时,在赋予了CACHE属性的状态下,若没有赋予ORDER属性,则各节点将会把不同范围的序列值CACHE到内存上。比如,在拥有两个节点的RAC环境下,创建CACHE值为100的序列,则节点1使用1~100,节点2使用101~200。若两个节点之间都通过递增方式使用序列,则必须赋予ORDER属性。Oracle序列默认是NOORDER,如果设置为ORDER,那么在单实例环境没有影响,在RAC环境中,多实例实际缓存相同的序列,此时在多个实例并发取该序列的时候,会有短暂的资源竞争来在多实例之间进行同步。因此,性能相比NOORDER要差,所以RAC环境非必须的情况下不要使用ORDER,尤其要避免NOCACHEORDER组合。

有一点必须要注意,当没有赋予CACHE属性时,不管ORDER属性使用与否或RAC环境与否,一直等待rowcachelock事件。rowcachelock是可以在全局范围内使用的锁,单实例环境或多实例环境同样可以发生。如果使用了CACHE,而此时DB崩溃了,那么序列会从CACHE值之后重新开始,在CACHE中没有使用的序列会被跳过,这样就会导致序列不连续。在创建序列时,CACHE的默认值设定为较小的20。因此创建并发量多的序列时,CACHE值应该取1000以上的较大值。

另外,若一次性同时创建许多会话时,有时会发生enq:SQ-contention等待事件。其原因是V$SESSION.AUDSID列值是利用序列创建的。Oracle在创建新的会话后,利用名为SYS.AUDSES$的序列的NEXTVAL来创建AUDSID值。在Oracle10g下SYS.AUDSES$的CACHE值默认为20,但在Oracle11g下SYS.AUDSES$的CACHE值默认为10000,通过如下的SQL可以查询:

SELECT*FROMDBA_SEQUENCESDWHERED.SEQUENCE_NAME='AUDSES$';

4.故障解决过程

首先查洵出现问题时间段的ASH视图DBA_HIST_ACTIVE_SESS_HISTORY,通过该视图可以找到需要的序列名称。可以有多种查询方法:

SELECTD.SQL_ID,COUNT(1)FROMDBA_HISL_ACTIVE_SESS_HISTORYD

WHERED.SAMPLE_TIMEBETWEENTO_DATE('20160823170000','YYYYMMDDHH24MISS')AND

TO_DATE('20160823230000','YYYYMMDDHH24MISS')

ANDD.EVENT=enq:SQ-contention'GROUPBYD.SQL_ID;

可以看到SQL_ID为3jhvjgj7kbpmt的SQL最多,查看具体SQL内容:

SELECT*FROMV$SQLAWHEREA.SQL_IDIN('3jhvjgj7kbpmt');

由此可以知道,产生等待的序列名称为ONLNID,另外,也可以从DBA_HIST_ACTIVE_SESS_HISTORY视图的P2值获取到序列的名称,SQL语句如下:

SELECTD.EVENT,D.P1TEXLD.P1,D.P2TEXLD.P2,

CHR(BITAND(P1,-16777216)/16777215)||

CHR(BITAND(P1,16711680)/65535)"Lock",

BITAND(P1,65535)"Mode",D.BLOCKlNG_SESSION,D.BLOCKING_SESSION_STATUS,D.BLOCKING_SESSION_SERIAL#,

D.SQL_ID,TO_CHAR(D.SAMPLE_TIME,'YYYYMMDDHH24MISS')SAMPLE_TIME,D.*

FROMDBA_HIST_ACTIVE_SESS_HISTORYD

WHERED.SAMPLE_TIMEBETWEENTO_DATE('20160823170000','YYYYMMDDHH24MISS')AND

TO_DATE('20160823230000','YYYYMMDDHH24MISS')

ANDD.EVENT='enq:SQ-contention';

由以上的查询结果可知,序列的OBJECT_ID为47989,通过DBA_OBJECTS就可以查询到序列的名称了。另外,LOCK为SQ代表的是序列的CACHE锁(SEQUENCECACHE),MODE为6代表EXCLUSIVE排它锁。

SELECT*FROMDBA_OBJECTSDWHERED.object_id='47989';

知道了序列名称后,通过DBA_SEQUENCES视图就可以查询到序列的属性了:

SELECT*FROMDBA_SEQUENCESDWHERED.sequence_name='ONLNID';

可以看到,该序列是NOORDER属性,CACHE值为默认的20,对于并发值很高的系统而言,该默认值太低,所以需要调整到1000。可以执行SQL语句“ALTERSEQUENCEONLNlDCACHE1000;”调整其CACHE值即可解决该问题。[考点]等待事件

10.

SQLServer提供的3种恢复模型都是什么?有什么区别?正确答案:SQLServet提供了3种恢复模型,分别是:

1)简单恢复,允许将数据库恢复到最新的备份。

2)完全恢复,允许将数据库恢复到故障点状态。

3)大容量日志记录恢复,允许大容量日志记录操作。

这些模型都是针对不同的性能、磁盘和磁带空间以及保护数据丢失的需要。例如,当选择恢复模型时,必须考虑下列业务要求之间的权衡:

1)大规模操作的性能(如创建索引或大容量装载)。

2)数据丢失表现(如已提交的事务丢失)。

3)事务日志空间损耗。

4)备份和恢复过程的简化。

根据正在执行的操作,可以有多个适合的模型。选择了恢复模型后,设计所需的备份和恢复过程。下表提供了三种恢复模型的优点和含义的概述。恢复模型优点工作损失表现能否恢复到即时点?简单恢复1)允许高性能大容量复制操作2)收回日志空间以使空间要求最小必须重做自最新的数据库或差异备份后所发生的更改可以恢复到任何备份的结尾处,随后必须重做更改完全恢复1)数据文件丢失或损坏不会导致工作损失2)可以恢复到任意即时点(例如,应用程序或用户错误之前)1)正常情况下没有2)如果日志损坏,那么必须重做自最新的目志备份后所发生的更改可以恢复到任何即时点大容量日志记录恢复允许高性能大容量复制操作。大容量操作使用最少的日志空间如果日志损坏,或者自最新的日志备份后发生了大容量操作,那么必须重做自上次备份后所做的更改,否则不丢失任何工作可以恢复到任何备份的结尾处,随后必须重做更改

简单恢复所需的管理最少。在简单恢复模型中,数据只能恢复到最新的完整数据库备份或差异备份的状态。不使用事务日志备份,而使用最小事务日志空间。一旦不再需要日志空间从服务器故障中恢复,日志空间便可重新使用。与完整模型或大容量日志记录模型相比,简单恢复模型更容易管理,但如果数据文件损坏,那么数据损失表现会更高。

完全恢复和大容量日志记录恢复模型为数据提供了最大的保护性。这些模型依靠事务日志提供完全的可恢复性,并防止最大范围的故障情形所造成的工作损失。完全恢复模型提供最大的灵活性,可将数据库恢复到更早的即时点。

大容量日志记录模型为某些大规模操作(如创建索引或大容量复制)提供了更高的性能和更低的日志空间损耗,不过这将牺牲时间点恢复的某些灵活性。很多数据库都要经历大容量装载或索引创建的阶段,因此可能希望在大容量日志记录模型和完全恢复模型之间进行切换。[考点]备份恢复

11.

什么是细粒度审计?正确答案:从Oracle9i开始,引入了细粒度的对象审计,使得审计变得更为关注某个方面,并且更为精确。细粒度的审计可以在访问某些行和列时审计对表的访问,从而极大地减少审计表的记录数量。使用标准的审计,可以发现访问了哪些对象,以及由谁访问,但是无法知道访问了哪些行或列。细粒度审计被称为FGA(Fine-GrainedAudit),由DBMS_FGA的PL/SQL程序来实现。[考点]审计

12.

数据表损坏的修复方式有哪些?正确答案:可以使用myisamchk来修复,具体步骤如下:

1)修复前将mysqld服务停止。

2)打开命令行方式,然后进入mysql的/bin目录。

3)执行myisamchk-recover数据库所在路径/*.MYI。

使用repairtable或者OPTIMIZEtable命令来修复,REPAIRTABLEtable_name修复表,OPTIMIZETABLEtable_name优化表,REPAIRTABLE用于修复被破坏的表。

OPTIMIZETABLE用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZETABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。[考点]备份恢复

13.

你们公司的数据库有多大?大一点的表有多大?有多少行?正确答案:对于数据库的大小,需要注意的问题是数据库的大小不能以表空间的分配大小而论,而应该以表空间的占用空间大小而论,并且需要减掉SYSTEM、SYSAUX、TEMP和Undo这些表空间占用的空间。因为有的系统Undo空间可能分配得很大,比如500GB,所以,计算数据库大小的时候应该排除这些表空间。

对于表空间大小,若有如下的结果:

可以说数据库大约有(2205-751-629-14-2)MB=809MB,而并非是2.2GB。

至于大一点的表有多大?有多少行?这个问题考查DBA对自己库的熟悉程度,通过下面的SQL语句可以查询一个表的大小:

可以看到最大的表是LKILL用户下的T_KILL表,大约7GB,约有4400W条的数据量,读者应该以自己实际管理的库为准。[考点]性能诊断

14.

什么是字符设备、块设备和裸设备?正确答案:字符设备:对字符设备的读写不需要通过OS的缓冲区(Buffer),它不可被文件系统MOUNT。字符特殊文件与外设进行I/O操作时每次只传输一个字符,通常不支持随机存取数据。

块设备:对块设备的读写需要通过OS的缓冲区(Buffer),它可以被MOUNT到文件系统中。块设备文件用来同外设进行定长的包传输,它使用了Cache机制,在外设和内存之间一次可以传送一整块数据。块设备通常支持随机存取和寻址,并使用缓存器。

裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。裸设备使用字符特殊文件,它由应用程序负责对它进行读写操作,不经过文件系统的缓冲。[考点]裸设备(RAW)

15.

进程MMAN、MMNL和MMON这3个进程的作用分别是什么?正确答案:从如下的输出结果可以看到,每个ASM实例或数据库实例都有这3个进程:

其中:

1)MMAN(MemoryManagerProcess,内存管理进程)进程会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。

2)MMON(ManageabilityMonitorProcess,可管理性监视器进程)和它的slave进程(Mnnn)主要用来维护AWR信息和各种与可管理性相关的后台任务,具体包括:①启动slave进程Mnnn去做AWR快照。若MMON进程HANG住,则AWR不可用。②当某个测量值(Metrics)超过了其度量阀值(ThresholdValue)时发出alert告警。③为最近改变过的SQL对象捕获指标信息。

3)MMNL(ManageabilityMonitorLiteProcess)将SGA中的ASH(ActiveSessionHistory)Buffer中的统计资料写到磁盘。当ASHBuffer满的时候MMNL会把它写到磁盘上。[考点]后台进程

16.

OGG的告警日志文件的位置在哪里?正确答案:OGG的告警日志文件为$OGG_HOME/ggserr.log,如下:

[考点]OGG

17.

设有如下关系表:

供应者:SUPPLIER(SNO,SNAME,CITY),其中,SNO为供应者编号,SNAME为供应者姓名,CITY为所在城市。

零件:PART(PNO,PNAME,WEIGHT),其中,PNO为零件号,PNAME为零件名称,WEIGHT为重量。

工程:JOB(JNO,JNAME,CITY),其中,JNO为工程号,JNAME为工程名,CITY为所在城市。

联系关系:SPJ(SNO,PNO,JNO,QTY),其中,QTY为数量。

1)查找给工程J1提供零件P1的供应者号SNO。

2)查找在北京的供应者给武汉的工程提供零件的零件号。

3)查找由供应者S1提供的零件名PNAME。

4)查找CITY值为上海的工程号和名称。

5)将工程J3的城市改为广州。

6)将所有重20公斤的零件改为重10公斤。

7)将给工程J1提供零件P1的供应者S1改为S2。

8)将值(S3,麦苗,上海)加到SUPPLIER中。

9)删除所有上海工程的数据。正确答案:1)SELECTSNOFROMSPJ,PART,JOBWHERESPJ.PNO=PART.PNOANDSPJ.JNO=JOB.JNOANDPART.PNAME='P1'ANDJOB.JNAME='J1';

2)SELECTPNOFROMSPJ,PART,JOBWHERESPJ.PNO=PART.PNOANDSPJ.JNO=JOB.JNOANDJOB.CITY='武汉'ANDSUPPLIER.CITY='北京';

3)SELECTPNAMEFROMPARTWHEREPNOIN(SELECTPNOFROMSPJ,SUPPLIERWHERESPJ.SNO=SUPPLIER.SNOANDSUPPLIER.SNAME='S1');

4)SELECTJNO,JNAMEFROMJOBWHERECITY='上海';

5)UPDATEJOBSETCITY='广州'WHEREJNAME='J3';

6)UPDATEPARTSETWEIGHT='10公斤'WHEREWEIGHT='20公斤';

7)UPDATESUPPLIERSETSNAME='S2'WHERESNAME='S1'ANDSNOIN

(SELECTSNOFROMSPJ,JOB,PARTWHERESPJ.JNO=JOB.JNOANDJOB.JNAME='J1'ANDSPJ.PNO=PART.PNOANDPART.PNAME='P1');

8)INSERTINTOSUPPLIERVALUES(;S3','麦苗','上海');

9)DELETEFROMSPJWHEREJNOIN(SELECTJNOFROMJOBWHERECITY='上海');

DELETEFROMJOBWHERECIT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论