针对链表结构的并发控制算法研究_第1页
针对链表结构的并发控制算法研究_第2页
针对链表结构的并发控制算法研究_第3页
针对链表结构的并发控制算法研究_第4页
针对链表结构的并发控制算法研究_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1/1针对链表结构的并发控制算法研究第一部分基于时间戳的链表并发控制算法 2第二部分基于版本控制的链表并发控制算法 4第三部分基于复制的链表并发控制算法 6第四部分基于事务的链表并发控制算法 9第五部分基于锁的链表并发控制算法 10第六部分基于无锁的链表并发控制算法 13第七部分基于乐观并发的链表并发控制算法 15第八部分基于悲观并发的链表并发控制算法 18

第一部分基于时间戳的链表并发控制算法关键词关键要点【基于时间戳的链表并发控制算法】:

1.时间戳:每个链表节点分配一个时间戳,用于标识节点的创建或修改时间。

2.并发控制:当多个线程同时对链表进行修改时,并发控制算法确保修改的顺序与时间戳的顺序一致。

3.原子操作:并发控制算法使用原子操作来确保链表的修改操作是不可中断的,从而避免数据损坏。

【链表的并发控制】:

基于时间戳的链表并发控制算法

基于时间戳的链表并发控制算法是一种用于管理并发访问链表数据的算法。该算法通过为每个链表节点分配一个时间戳来实现并发控制。时间戳表示节点被最后一次更新的时间。当一个线程想要修改一个链表节点时,它需要先检查该节点的时间戳。如果节点的时间戳小于线程自己的时间戳,则该线程可以修改该节点。否则,该线程需要等待,直到该节点的时间戳小于或等于线程自己的时间戳。

基于时间戳的链表并发控制算法是一种乐观并发控制算法。这意味着它假设大多数情况下,线程不会同时修改同一个链表节点。因此,该算法允许线程在不加锁的情况下修改链表节点。只有当多个线程同时修改同一个链表节点时,该算法才会发生死锁。

基于时间戳的链表并发控制算法的优点是,它是一种轻量级的并发控制算法,不会对系统性能产生太大的影响。该算法的缺点是,它可能会发生死锁。

算法描述

基于时间戳的链表并发控制算法的详细描述如下:

1.每个链表节点都维护一个时间戳,表示该节点被最后一次更新的时间。

2.当一个线程想要修改一个链表节点时,它需要先检查该节点的时间戳。

3.如果节点的时间戳小于线程自己的时间戳,则该线程可以修改该节点。

4.否则,该线程需要等待,直到该节点的时间戳小于或等于线程自己的时间戳。

5.当一个线程修改了一个链表节点后,它需要更新该节点的时间戳。

算法分析

基于时间戳的链表并发控制算法是一种乐观并发控制算法。这意味着它假设大多数情况下,线程不会同时修改同一个链表节点。因此,该算法允许线程在不加锁的情况下修改链表节点。只有当多个线程同时修改同一个链表节点时,该算法才会发生死锁。

基于时间戳的链表并发控制算法的优点是,它是一种轻量级的并发控制算法,不会对系统性能产生太大的影响。该算法的缺点是,它可能会发生死锁。

为了减少死锁的发生概率,可以采用以下措施:

*使用随机时间戳。这可以防止多个线程在同一时间修改同一个链表节点。

*使用超时机制。如果一个线程在一定时间内没有修改完一个链表节点,则该线程将被终止。

*使用死锁检测和恢复机制。如果发生死锁,则可以检测到死锁并恢复系统。

应用场景

基于时间戳的链表并发控制算法可以用于各种应用场景,包括:

*操作系统内核

*数据库管理系统

*编译器

*虚拟机

*分布式系统

总结

基于时间戳的链表并发控制算法是一种轻量级的并发控制算法,可以用于管理并发访问链表数据的场景。该算法的优点是,它不会对系统性能产生太大的影响。该算法的缺点是,它可能会发生死锁。第二部分基于版本控制的链表并发控制算法关键词关键要点【基于版本控制的链表并发控制算法】:

1.基于版本控制的链表并发控制算法是一种通过创建链表元素的版本来实现并发控制的算法。

2.每个版本都有一个版本号,版本号更大的版本是更新的版本。

3.当一个线程想要修改链表时,它会创建一个新版本,并将新版本链接到链表中。

【并发控制】:

基于版本控制的链表并发控制算法

1.算法思想

基于版本控制的链表并发控制算法是一种通过维护链表中每个节点的多个版本来实现并发控制的算法。该算法的核心思想是,当一个线程想要修改链表中的某个节点时,它首先创建一个该节点的新版本,然后将新版本与旧版本链接起来。这样,其他线程仍然可以访问旧版本,而修改线程则可以对新版本进行修改。当修改线程完成修改后,它将新版本标记为有效版本,并删除旧版本。

2.算法步骤

1.当一个线程想要修改链表中的某个节点时,它首先创建一个该节点的新版本,并将新版本与旧版本链接起来。

2.其他线程仍然可以访问旧版本,而修改线程则可以对新版本进行修改。

3.当修改线程完成修改后,它将新版本标记为有效版本,并删除旧版本。

3.算法的优缺点

优点:

1.基于版本控制的链表并发控制算法可以有效地防止链表中的数据被并发修改。

2.该算法不需要对链表进行加锁,因此具有很高的并发性。

3.该算法的实现相对简单,易于理解和实现。

缺点:

1.基于版本控制的链表并发控制算法可能会导致链表中的数据冗余。

2.该算法可能会导致链表的查询和修改操作变得更加复杂。

4.算法的应用

基于版本控制的链表并发控制算法可用于各种场景,包括:

1.多线程编程中,当多个线程需要同时访问和修改一个链表时。

2.数据库系统中,当多个用户需要同时访问和修改一个链表时。

3.分布式系统中,当多个节点需要同时访问和修改一个链表时。第三部分基于复制的链表并发控制算法关键词关键要点【链式复制算法】:

1.链表头上的元素通过链表复制,在多个副本中更新。

2.在每个副本上执行读写操作。

3.在日志记录中记录链式复制的状态。

【环式复制算法】:

基于复制的链表并发控制算法

#算法概述

基于复制的链表并发控制算法是一种实现链表并发访问和更新的算法。该算法的主要思想是维护链表的多个副本(又称“版本”),每个副本都拥有一个独立的链表头指针。当一个线程要访问或更新链表时,它会先获取链表的一个副本(即一个版本),然后对该副本进行访问或更新,而不会影响其他副本。当需要将更改合并到主链表中时,算法会使用一种称为“合并”的机制将各个副本中的更改合并到主链表中,从而保证链表的完整性和一致性。

#经典算法

基于复制的链表并发控制算法的经典算法有:

1.原子快照(AtomicSnapshot)算法:

原子快照算法是一种基于复制的链表并发控制算法,它使用一种称为“原子快照”的技术来实现对链表的并发访问和更新。原子快照技术能够在一段时间内对链表进行快照,在这个时间段内,链表的状态不会改变,因此线程可以安全地访问和更新链表的快照,而不会影响其他线程。

2.链表复制(ChainReplication)算法:

链表复制算法也是一种基于复制的链表并发控制算法,它使用一种称为“链表复制”的技术来实现对链表的并发访问和更新。链表复制技术将链表复制成多个副本,每个副本都拥有一个独立的链表头指针。当一个线程要访问或更新链表时,它会先获取链表的一个副本,然后对该副本进行访问或更新,而不会影响其他副本。当需要将更改合并到主链表中时,算法会使用一种称为“合并”的机制将各个副本中的更改合并到主链表中。

#算法特点

基于复制的链表并发控制算法具有以下特点:

1.高并发性:

基于复制的链表并发控制算法由于采用了多个副本的设计,因此能够支持高并发访问和更新。每个线程都可以获取链表的一个副本进行访问或更新,而不会影响其他线程。

2.高容错性:

基于复制的链表并发控制算法由于采用了多个副本的设计,因此具有较高的容错性。当某个副本发生故障时,算法可以自动切换到其他副本继续运行,从而保证链表的可用性。

3.低复杂度:

基于复制的链表并发控制算法的实现复杂度较低,易于理解和实现。该算法只需要维护多个链表副本,并实现一种合并机制将各个副本中的更改合并到主链表中即可。

#算法应用

基于复制的链表并发控制算法广泛应用于各种需要并发访问和更新链表的场景中,例如:

1.操作系统内核:

基于复制的链表并发控制算法可以用于实现操作系统的内核数据结构,如进程队列、设备队列等。这些数据结构通常需要支持高并发访问和更新,因此使用基于复制的链表并发控制算法能够有效地提高系统的性能和可靠性。

2.数据库系统:

基于复制的链表并发控制算法可以用于实现数据库系统的索引结构,如B+树索引、哈希索引等。这些索引结构通常需要支持高并发访问和更新,因此使用基于复制的链表并发控制算法能够有效地提高数据库系统的性能和可靠性。

3.分布式系统:

基于复制的链表并发控制算法可以用于实现分布式系统的复制数据结构,如分布式队列、分布式哈希表等。这些数据结构通常需要支持跨多个节点的并发访问和更新,因此使用基于复制的链表并发控制算法能够有效地提高分布式系统的性能和可靠性。第四部分基于事务的链表并发控制算法关键词关键要点【基于事务的链表并发控制算法】:

1.基于事务的链表并发控制算法利用事务管理理论来确保链表操作的正确性,实现对链表进行并发操作而不会导致数据不一致问题。

2.基于事务的链表并发控制算法通常采用锁机制,如行锁或表锁,来控制对链表的并发访问,保证数据的完整性。

3.基于事务的链表并发控制算法需要考虑事务的隔离性、一致性和持久性等特性,以确保链表数据的正确性和可靠性。

【乐观并发控制算法】:

基于事务的链表并发控制算法

基于事务的链表并发控制算法将链表上的操作作为事务进行,并通过引入事务的概念来实现并发控制。事务是指一组原子的操作,要么全部执行成功,要么全部执行失败。在基于事务的链表并发控制算法中,每个事务都会获得一个唯一的事务ID,并且在事务执行期间,链表上的数据会被加锁,以防止其他事务对数据进行修改。当事务提交时,加锁的数据会被释放,其他事务就可以对数据进行修改。

基于事务的链表并发控制算法主要有以下几种:

*锁机制:锁机制是基于事务的链表并发控制算法中最常用的方法。在锁机制中,每个事务在对其操作的链表上获取一个锁,以防止其他事务对数据进行修改。锁可以是读锁或写锁,读锁允许事务读取数据,但不能修改数据,而写锁允许事务读取和修改数据。当事务提交时,加锁的数据会被释放,其他事务就可以对数据进行修改。

*时间戳机制:时间戳机制是基于事务的链表并发控制算法的另一种常用方法。在时间戳机制中,每个事务在开始执行时都会获得一个唯一的时间戳。当事务对链表上的数据进行修改时,会将时间戳写入数据。当其他事务读取数据时,会检查数据的時間戳,如果数据的時間戳比事务开始执行时的时间戳舊,则事务可以读取数据,否则事务不能读取数据。

*乐观并发控制:乐观并发控制是基于事务的链表并发控制算法的第三种常用方法。在乐观并发控制中,事务在执行操作时不加锁,而是假设其他事务不会对数据进行修改。当事务提交时,会检查数据是否被其他事务修改过。如果数据没有被其他事务修改过,则事务提交成功,否则事务提交失败。

基于事务的链表并发控制算法可以有效地防止链表上的并发访问冲突,但它也会带来一定的性能开销。锁机制和时间戳机制都会导致事务等待,而乐观并发控制则可能会导致事务提交失败。因此,在选择基于事务的链表并发控制算法时,需要考虑应用程序的具体需求。第五部分基于锁的链表并发控制算法关键词关键要点【慄名称】:乐观并发控制算法

1.乐观并发控制算法基于这样的假设:事务在执行过程中不会发生冲突。如果发生冲突,则事务将被中止并重新执行。

2.乐观并发控制算法不需要在事务开始前获取锁。这使得它具有较高的并发性。

3.乐观并发控制算法的缺点是,如果发生冲突,则事务需要重新执行。这可能会导致性能下降。

【慄名称】:悲观并发控制算法

基于锁的链表并发控制算法

基于锁的链表并发控制算法是一种通过使用锁来控制对链表的并发访问的算法。锁是一种数据结构,它允许多个线程同时访问共享数据,但只能有一个线程同时写入数据。

基于锁的链表并发控制算法通常使用两种类型的锁:

*互斥锁(mutexlock):互斥锁用于控制对链表的写入访问。只有一个线程可以同时持有互斥锁,因此只有一个线程可以同时写入链表。

*读写锁(read-writelock):读写锁用于控制对链表的读写访问。多个线程可以同时持有读写锁的读锁,但只有一个线程可以同时持有读写锁的写锁。因此,多个线程可以同时读取链表,但只有一个线程可以同时写入链表。

基于锁的链表并发控制算法的优点是简单易懂,并且可以保证链表数据的完整性。但是,基于锁的链表并发控制算法也存在一些缺点,例如:

*性能开销:锁的引入会带来一定的性能开销,因为线程在访问链表数据之前必须先获取锁。

*死锁:如果两个或多个线程同时持有锁并且等待对方释放锁,则可能会发生死锁。

*饥饿:如果一个线程长时间无法获取锁,则可能会发生饥饿。

为了解决上述问题,研究人员提出了许多改进的基于锁的链表并发控制算法。这些算法通常使用更复杂的锁机制来减少锁的开销,并防止死锁和饥饿的发生。

下面介绍几种常见的基于锁的链表并发控制算法:

*Peterson算法:Peterson算法是一种经典的基于锁的链表并发控制算法。它使用两个互斥锁来控制对链表的写入访问。Peterson算法可以防止死锁和饥饿,但它的性能开销比较大。

*Herlihy算法:Herlihy算法是一种改进的基于锁的链表并发控制算法。它使用一个读写锁来控制对链表的读写访问。Herlihy算法可以防止死锁和饥饿,并且它的性能开销比Peterson算法更小。

*TL2算法:TL2算法是一种无锁的链表并发控制算法。它使用一种称为“标记更新(mark-update)”的技术来控制对链表的写入访问。TL2算法可以防止死锁和饥饿,并且它的性能开销非常小。

总结

基于锁的链表并发控制算法是链表并发控制算法中的一种重要类型。基于锁的链表并发控制算法简单易懂,并且可以保证链表数据的完整性。但是,基于锁的链表并发控制算法也存在一些缺点,例如性能开销、死锁和饥饿等。为了解决这些问题,研究人员提出了许多改进的基于锁的链表并发控制算法。这些算法通常使用更复杂的锁机制来减少锁的开销,并防止死锁和饥饿的发生。第六部分基于无锁的链表并发控制算法关键词关键要点无锁链表的并发控制

1.无锁链表的并发访问模型:

-每个线程都维护自己的本地链表,并持有链表上的读锁或写锁。

-当一个线程更新链表时,需要先获取写锁,然后将局部链表与公共链表合并。

-读操作只需要获取读锁,可以并行执行。

2.无锁链表的数据结构:

-链表中的每个节点都包含一个原子引用计数器,用于记录该节点被引用的次数。

-每个节点还包含一个原子标记,用于指示该节点是否被标记为已删除。

3.无锁链表的并发操作:

-插入操作:新插入的节点先被添加到局部链表中,然后尝试将其合并到公共链表中。

-删除操作:将要删除的节点标记为已删除,然后尝试将其从公共链表中移除。

-查找操作:在公共链表中搜索要查找的节点,如果找不到,则尝试在局部链表中搜索。

基于时间戳的链表并发控制

1.时间戳的生成:

-每个线程都有一个本地时钟,用于生成时间戳。

-时间戳的生成方式可以是单调递增的,也可以是随机生成的。

2.时间戳的管理:

-每个链表节点都包含一个时间戳字段,用于记录该节点被创建或修改的时间。

-链表上的每个操作都会更新时间戳字段,以反映操作的时间。

3.时间戳的比较:

-当两个线程同时尝试更新同一个链表节点时,会比较各自的时间戳。

-时间戳较新的线程被允许更新节点,而时间戳较旧的线程则需要等待或放弃更新。#基于无锁的链表并发控制算法

1.无锁链表的并发控制挑战

链表是一种广泛应用的数据结构,它具有简单、灵活、支持动态插入和删除等优点。然而,在多线程环境下,链表的并发访问可能会导致数据不一致和竞争问题。因此,需要设计有效的并发控制算法来保证链表的并发安全。

2.基于无锁的链表并发控制算法概述

基于无锁的链表并发控制算法是一种不使用锁机制来实现链表并发安全的算法。它主要通过使用原子操作和特殊的数据结构来实现并发控制。原子操作是指一次性完成的操作,它保证操作要么完全成功,要么完全失败,不会产生中间状态。

3.基于无锁的链表并发控制算法的工作原理

基于无锁的链表并发控制算法的工作原理可以分为以下几步:

1.使用原子操作来更新链表节点的指针。例如,当一个线程想要插入一个新节点时,它先使用原子操作将新节点插入到链表中,然后再使用原子操作更新链表头节点的指针。

2.使用特殊的数据结构来实现链表的并发控制。例如,可以使用带有标记的链表来实现链表的并发安全。标记链表中的每个节点都有一个标记字段,表示该节点是否可以被修改。当一个线程想要修改一个节点时,它先检查该节点的标记字段,如果标记字段为可修改,则进行修改,否则等待该节点的标记字段变为可修改。

4.基于无锁的链表并发控制算法的优缺点

基于无锁的链表并发控制算法的主要优点是它不需要使用锁机制,因此可以避免锁竞争和死锁问题。此外,它可以提高链表的并发性能,因为多个线程可以同时访问链表而不必等待锁。

然而,基于无锁的链表并发控制算法也存在一些缺点。主要缺点是它需要使用原子操作,而原子操作通常比普通操作开销更大。此外,它可能需要使用特殊的数据结构,这可能会增加链表的复杂性和开销。

5.基于无锁的链表并发控制算法的应用

基于无锁的链表并发控制算法可以应用于各种需要并发访问链表的场景中。例如,它可以用于实现多线程的链表数据结构、多线程的哈希表等。

6.结论

基于无锁的链表并发控制算法是一种有效的方法来保证链表的并发安全。它不需要使用锁机制,因此可以避免锁竞争和死锁问题。此外,它可以提高链表的并发性能,因为多个线程可以同时访问链表而不必等待锁。然而,基于无锁的链表并发控制算法也存在一些缺点。主要缺点是它需要使用原子操作,而原子操作通常比普通操作开销更大。此外,它可能需要使用特殊的数据结构,这可能会增加链表的复杂性和开销。第七部分基于乐观并发的链表并发控制算法关键词关键要点【基于乐观并发的链表并发控制算法】:

1.乐观并发控制的基本思想是允许事务在执行过程中暂时访问和修改被其他事务锁定的数据,只有当事务提交时才检查是否存在冲突。

2.基于乐观并发的链表并发控制算法主要包括以下几个步骤:事务开始时,首先获取一个版本号;事务在执行过程中,可以访问和修改数据,但并不立即提交;当事务提交时,将当前版本号与数据项的版本号进行比较,如果两个版本号相同,则提交事务,否则回滚事务。

3.基于乐观并发的链表并发控制算法具有以下优点:吞吐量高、延迟低、可扩展性好。

【链表并发控制算法的性能分析】:

基于乐观并发的链表并发控制算法

#引言

链表是一种广泛应用于各种编程语言和数据结构中的数据结构。在并行编程中,链表的并发控制是一个重要的问题。乐观并发控制算法是一种常用的链表并发控制算法,它允许多个线程同时对链表进行操作,并在发生冲突时进行仲裁。

#基本思想

基于乐观并发的链表并发控制算法的基本思想是,允许多个线程同时对链表进行操作,并在发生冲突时进行仲裁。仲裁的原则是,如果两个线程同时修改了同一个节点,那么只有一个线程的修改会被提交,而另一个线程的修改会被回滚。

#算法描述

基于乐观并发的链表并发控制算法的具体实现步骤如下:

1.当一个线程想要修改链表中的一个节点时,它首先会创建一个该节点的副本。

2.线程对副本进行修改。

3.线程将修改后的副本提交到链表中。

4.如果在提交过程中,另一个线程已经修改了该节点,那么提交就会失败,并且第一个线程的修改会被回滚。

5.如果提交成功,则第一个线程的修改会被提交到链表中。

#优缺点

基于乐观并发的链表并发控制算法具有以下优点:

*吞吐量高:由于允许多个线程同时对链表进行操作,因此吞吐量很高。

*延迟低:由于仲裁是在提交时进行的,因此延迟很低。

基于乐观并发的链表并发控制算法也具有一些缺点:

*不保证原子性:由于允许多个线程同时对链表进行操作,因此不保证原子性。

*可能会出现死锁:如果两个线程同时修改了同一个节点,并且都无法提交,那么就会出现死锁。

#应用

基于乐观并发的链表并发控制算法广泛应用于各种编程语言和数据结构中,例如Java的ConcurrentLinkedQueue和C++的std::list。

#相关研究

近年来,对基于乐观并发的链表并发控制算法进行了广泛的研究。这些研究主要集中在以下几个方面:

*提高吞吐量:研究人员提出了各种方法来提高基于乐观并发的链表并发控制算法的吞吐量,例如使用非阻塞数据结构和优化仲裁算法。

*降低延迟:研究人员提出了各种方法来降低基于乐观并发的链表并发控制算法的延迟,例如使用硬件事务内存和优化提交过程。

*保证原子性:研究人员提出了各种方法来保证基于乐观并发的链表并发控制算法的原子性,例如使用锁和使用多版本并发控制。

#结论

基于乐观并发的链表并发控制算法是一种常用的链表并发控制算法,它允许多个线程同时对链表进行操作,并在发生冲突时进行仲裁。该算法具有吞吐量高、延迟低等优点,但也不保证原子性,可能会出现死锁。近年来,对基于乐观并发的链表并发控制算法进行了广泛的研究,这些研究主要集中在提高吞吐量、降低延迟和保证原子性等方面。第八部分基于悲观并发的链表并发控制算法关键词关键要点悲观并发的链表并发控制算法基本原理

1.基本概念:理解链表并发控制算法的基本概念,包括冲突、死锁、饥饿等,以及悲观并发的基本原理和实现方法。

2.算法实现:熟悉悲观并发链表并发控制算法的具体实现,包括基本思想、关键数据结构、算法流程和主要操作等。

3.性能分析:掌握悲观并发链表并发控制算法的性能分析方法,包括时间复杂度、空间复杂度和吞吐量等,以及算法性能受哪些因素影响。

悲观并发的链表并发控制算法优化

1.优化策略:了解悲观并发链表并发控制算法的优化策略,包括锁粒度优化、锁管理策略优化、死锁检测与避免策略优化等。

2.算法改进:熟悉悲观并发链表并发控制算法的改进方法,包括基于时间戳的悲观并发算法、基于锁升级的悲观并发算法和基于多版本并发控制的悲观并发算法等。

3.并行技术:探索悲观并发链表并发控制算法与并行技术的结合,包括多线程技术、多核技术和分布式技术等,以及如何在这些并行技术下优化悲观并发链表并发控制算法。

悲观并发的链表并发控制算法应用

1.典型应用场景:了解悲观并发链表并发控制算法的典型应用场景,包括数据库管理系统、操作系统内核、分布式系统和云计算等。

2.应用案例分析:熟悉悲观并发链表并发控制算法在具体应用场景中的应用案例,包括实现方法、性能评估和应用效果等。

3.前沿应用探索:探索悲观并发链表并发控制算法在人工智能、大数据和物联网等前沿领域的潜在应用,以及如何将算法应用到这些领域。

悲观并发的链表并发控制算法安全问题

1.安全漏洞分析:掌握悲观并发链表并发控制算法存在的安全漏洞,包括死锁、饥饿、竞争条件和数据损坏等,以及漏洞产生的原因和危害。

2.安全防护策略:熟悉悲观并发链表并发控制算法的安全防护策略,包括死锁检测与避免、饥饿检测与避免、竞争条件检测与避免和数据损坏检测与修复等。

3.安全评估方法:了解悲观并发链表并发控制算法的安全评估方法,包括渗透测试、代码审计和形式化验证等,以及如何使用这些方法评估算法的安全性。

悲观并发的链表并发控制算法研究现状与

温馨提示

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

评论

0/150

提交评论