嵌入式系统中的方法占用优化_第1页
嵌入式系统中的方法占用优化_第2页
嵌入式系统中的方法占用优化_第3页
嵌入式系统中的方法占用优化_第4页
嵌入式系统中的方法占用优化_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

19/24嵌入式系统中的方法占用优化第一部分方法占用对嵌入式系统性能的影响 2第二部分静态分配与动态分配方法比较 4第三部分基于编译器优化的内存分配策略 7第四部分数据结构优化减少空间占用 11第五部分代码重构和程序重用方法 13第六部分虚拟内存技术在方法占用的应用 15第七部分固件更新机制对方法占用的影响 17第八部分方法占用优化在嵌入式系统中的实践 19

第一部分方法占用对嵌入式系统性能的影响方法占用对嵌入式系统性能的影响

引言

在嵌入式系统中,方法占用是指执行方法所需内存空间的大小。优化方法占用对系统性能至关重要,因为它会影响代码大小、执行时间和内存消耗。

代码大小

方法占用直接影响代码大小。较大的方法占用需要更多内存来存储代码指令。这可能导致系统代码空间不足,从而限制系统的功能和扩展能力。

执行时间

较大的方法占用会增加执行时间。这是因为系统需要花费更多时间从内存中加载代码指令。对于实时系统,执行时间延迟可能是不可接受的,因为它可能会导致任务超时或系统故障。

内存消耗

方法占用会增加内存消耗。较大的方法占用需要更多的栈空间来存储局部变量和函数调用信息。这可能导致系统内存不足,从而影响其他任务或程序的执行。

方法占用优化策略

为了优化方法占用,可以采用以下策略:

*内联函数:将小函数代码直接嵌入调用位置,从而消除函数调用的开销和额外的栈空间需求。

*使用寄存器:尽可能将局部变量存储在寄存器中,而不是栈上。这可以减少内存访问时间和栈空间消耗。

*优化数据结构:选择合适的的数据结构可以减少方法中变量和对象的占用空间。例如,使用数组而不是链表可以节省空间。

*重构代码:重构代码可以消除冗余和不必要的代码段,从而减少方法占用。

*使用编译器优化选项:启用编译器优化选项,例如内联和循环展开,可以帮助减少方法占用。

其他考虑因素

除了上述策略之外,还应考虑以下因素:

*硬件限制:嵌入式系统通常受限于内存大小和处理能力。优化方法占用应考虑这些限制。

*系统需求:方法占用优化应符合系统需求。过度的优化可能会导致代码大小减小但执行时间增加。

*可维护性:优化应保持代码的可维护性和可读性。复杂的优化可能会使代码难以理解和修改。

示例

以下示例展示了优化方法占用对嵌入式系统性能的影响:

|方法占用|代码大小(字节)|执行时间(微秒)|内存消耗(字节)|

|||||

|未优化|2,000|100|1,500|

|内联函数|1,500|80|1,200|

|使用寄存器|1,200|70|1,000|

|重构代码|1,000|60|800|

该示例表明,通过采用多项优化策略,方法占用减少了50%,执行时间减少了40%,内存消耗减少了47%。

结论

方法占用优化是嵌入式系统设计中至关重要的因素。通过优化方法占用,可以提升系统性能、减小代码大小、降低执行时间和节约内存消耗。采用各种优化策略并考虑系统限制、需求和可维护性,可以有效地优化方法占用,从而提高嵌入式系统的整体性能和可靠性。第二部分静态分配与动态分配方法比较关键词关键要点静态分配与动态分配方法比较

主题名称:静态分配

1.内存分配预分配:在系统启动时为所有任务预先分配固定数量的内存,无论任务实际使用多少内存。

2.可预测性高:静态分配消除了内存碎片化,从而确保了系统的可预测性能,因为每个任务始终可以访问其分配的内存。

3.内存浪费:静态分配可能会导致内存浪费,因为任务可能无法充分利用其分配的内存,特别是对于尺寸变化较大的任务。

主题名称:动态分配

静态分配与动态分配方法比较

#1.基本原理

静态分配:在编译时分配内存,每个变量或对象都分配一个固定的内存地址。这种方法简单易实现,但在系统运行时动态分配内存,可能导致内存碎片。

动态分配:运行时分配内存,使用指针或引用来指向分配的内存块。这种方法提供了更大的灵活性,可以减少内存碎片,但开销较大。

#2.优点

静态分配:

*速度快:编译时即可确定内存分配,无需在运行时进行动态分配。

*效率高:没有指针寻址的开销。

*易于调试:由于内存分配是固定的,因此更容易调试内存问题。

动态分配:

*灵活性强:允许在运行时分配和释放内存,可以适应应用程序的动态变化。

*减少内存碎片:可以将释放的内存块重新用于新分配,从而最大限度地利用内存空间。

*数据结构灵活:支持动态数据结构,如链表和树,可以根据需要灵活地调整大小。

#3.缺点

静态分配:

*内存利用率较低:由于内存分配是固定的,因此可能导致未使用的内存空间。

*灵活性差:难以满足应用程序动态变化的需求,可能需要重新编译代码。

*内存碎片:在某些情况下,静态分配也会导致内存碎片,尤其是当需要释放和重新分配大量内存时。

动态分配:

*速度慢:需要在运行时动态分配内存,开销较大。

*效率较低:指针寻址引入额外的开销。

*调试困难:指针指向的内存区域可能发生变化,导致调试内存问题更困难。

#4.适用场景

静态分配适用于:

*实时系统或资源受限的嵌入式系统,要求响应速度快和内存利用率高。

*内存需求相对稳定,不会发生大的变化。

*数据结构相对简单,不需要频繁地调整大小。

动态分配适用于:

*应用程序内存需求动态变化,需要灵活的内存分配机制。

*需要支持灵活的数据结构,例如链表和树。

*可以接受较高的内存开销和调试难度。

#5.性能比较

静态分配通常比动态分配速度更快,开销更低。但是,动态分配提供更大的灵活性,可以减少内存碎片。

下表总结了静态分配与动态分配方法的关键差异:

|特征|静态分配|动态分配|

||||

|内存分配时间|编译时|运行时|

|内存利用率|较低|较高|

|灵活性|较差|较高|

|内存碎片|可能存在|减少|

|速度|快|慢|

|效率|高|低|

|调试难度|易|难|

#6.小结

静态分配和动态分配各有其优缺点,适合不同的应用程序场景。在嵌入式系统的方法占用优化中,需要根据应用程序的需求和资源限制仔细权衡这两种方法,以选择最合适的内存分配机制。第三部分基于编译器优化的内存分配策略关键词关键要点基于代码重定位的内存分配

1.将不常用的代码段移动到内存中不频繁访问的区域,以释放常用代码执行所需的空间。

2.采用代码覆盖率分析等技术识别不常用的代码段,并进行针对性的重定位。

3.通过将不同功能模块的代码段分离放置,优化代码的执行效率和内存访问速度。

基于函数内联的内存分配

1.将函数调用替换为函数内联,消除函数调用开销并释放用于函数传递数据的栈空间。

2.考虑函数复杂度和代码大小,选择适当的内联策略,平衡性能提升和代码bloat。

3.采用编译器优化选项和工具,自动识别和内联合适的函数。

基于数据结构优化的内存分配

1.选择合适的动态数据结构(如数组、链表、哈希表),根据数据访问模式优化内存分配。

2.采用内存池技术管理数据块,减少内存碎片并提高内存分配效率。

3.考虑数据对齐和结构体填充,优化内存访问速度和存储空间利用率。

基于内存分离的内存分配

1.将系统内存划分为多个区域,根据不同类型的数据和代码进行隔离分配。

2.使用内存管理单元(MMU)或虚拟内存技术实现内存隔离,防止不同任务之间的数据污染。

3.通过建立严格的内存访问控制机制,增强系统的安全性。

基于静态分析的内存分配

1.使用静态分析技术确定代码和数据的内存使用模式,预测内存需求。

2.根据静态分析结果,优化内存布局和分配策略,减少内存碎片和提高空间利用率。

3.利用编译器优化选项和工具,自动进行静态分析和优化过程。

基于自适应内存分配

1.根据系统的运行时负载动态调整内存分配,适应不同的内存使用模式。

2.使用算法监控内存使用情况,并触发内存回收或扩充机制。

3.采用自适应数据结构和内存管理策略,提升系统的可扩展性。基于编译器优化的内存分配策略

引言

在嵌入式系统中,内存占用优化至关重要,因为它影响着系统的性能、功耗和成本。基于编译器的优化技术提供了高效的方法来减少内存占用,同时保持代码的可读性和可维护性。

函数内联

函数内联将一个函数的代码直接插入调用该函数的代码中,从而消除了函数调用开销。这可以减少代码大小,特别是在调用频繁的小函数的情况下。

尾递归消除

尾递归消除将递归函数的最后一层调用转换为循环,从而避免了堆栈帧的分配和回收。这可以显著降低递归函数的内存占用。

局部变量寄存器分配

编译器可以将局部变量分配到寄存器中,而不是堆栈上。这可以减少堆栈空间的使用,因为寄存器访问比堆栈访问更快。

常量折叠

编译器可以识别代码中的常量表达式,并将其折叠为常量值。这可以减少代码大小,因为它消除了对临时变量或表达式的需要。

公共子表达式消除

编译器可以识别代码中的公共子表达式,并将其存储在临时变量中,以便在稍后重新使用。这可以减少内存占用,因为无需为每次使用而存储相同的表达式。

死代码消除

编译器可以识别永远不会执行的代码,并将其从代码中删除。这可以减少代码大小,因为无需为死代码分配内存。

回流分析

回流分析可以确定变量的生存范围,并释放变量不再使用时占用的内存。这有助于减少内存碎片,从而优化内存分配。

静态内存分配

静态内存分配将应用程序的所有数据结构分配在编译时确定的固定内存区域中。这可以提高内存效率,因为它消除了动态内存分配的开销。

局部堆栈分配

局部堆栈分配将函数的局部变量分配在函数的堆栈帧中,而不是堆上。这可以减少堆占用,因为局部变量在函数调用后立即释放。

代码压缩

代码压缩技术可以减少编译后的代码大小,从而减少内存占用。这些技术包括指令集缩减、分支目标预测和代码重排。

最佳实践

为了有效利用基于编译器优化的内存分配策略,请考虑以下最佳实践:

*优先使用内置的数据类型和函数。

*避免使用不必要的临时变量。

*使用循环而不是递归。

*声明变量具有最小的可能范围。

*使用编译器提供的优化选项。

*定期分析代码以识别优化机会。

通过实施这些策略,嵌入式系统开发人员可以显著减少内存占用,从而提高系统性能、降低功耗并优化成本。第四部分数据结构优化减少空间占用关键词关键要点主题名称:数组优化

1.动态数组:使用动态数组可以避免静态数组分配过大或过小的空间,从而优化空间占用。

2.稀疏数组:对于包含大量零值的数组,可以采用稀疏数组进行存储,只存储非零元素及其索引,大大减少空间消耗。

3.位数组:对于以二进制形式存储数据的数组,可以采用位数组进行优化,将一个元素映射到一个位,仅需存储数据是否存在,极大地节省空间。

主题名称:结构体优化

数据结构优化减少空间占用

在嵌入式系统中,优化内存占用至关重要。数据结构选择和优化可以显着减少代码尺寸和数据存储需求。以下介绍几种优化数据结构的方法:

1.优先使用位域(BitField)

位域允许在有限的存储空间中存储多个相关值。它们特别适用于存储布尔值、枚举或其他需要有限范围的值。通过将位域打包在一起,可以节省大量空间。

2.使用单链表和双链表

链表是存储线性数据的灵活方式。单链表可以减少内存占用,因为它们只存储每个元素的指针,而不是实际值。双链表提供了更快的遍历,但需要更多的存储空间。

3.采用数组存储结构

数组提供了一种快速、高效地存储和访问连续数据的结构。它们比链表占用更少的空间,因为不需要额外的指针。但是,它们在插入和删除操作上效率较低。

4.优化数组存储布局

在使用数组时,可以优化存储布局以最大程度地减少空间占用。例如,可以通过使用结构体或联合来将不同类型的数据存储在同一内存块中。

5.采用树形结构

树形结构提供了高效的层次化数据存储。它们特别适用于存储有层次关系的数据,例如文件系统或数据库。通过使用共享节点,可以减少冗余数据。

6.利用哈希表

哈希表是一种使用哈希函数快速查找和检索数据的结构。它们特别适合存储大量数据,因为它们可以将数据分散到多个存储桶中,从而减少搜索时间。

7.数据压缩技术

数据压缩技术可以减少存储的数据大小。无损压缩(如Huffman编码)可以保留数据的原始内容,而有损压缩(如JPEG)则可以牺牲一定程度的准确性来实现更大的压缩率。

8.避免内存碎片

内存碎片是指内存中未使用的空间被分散到多个块中。它会导致内存浪费和性能下降。通过使用内存管理器或内存池,可以减少碎片并优化内存使用。

9.定制数据结构

在某些情况下,可能需要定制数据结构以满足特定要求。这涉及创建一种新的数据结构,它结合了现有结构的优点,同时避免了它们的缺点。

10.测量和分析

在优化数据结构时,测量和分析是至关重要的。通过使用剖析器或其他工具,可以确定哪些数据结构最适合特定应用程序。通过不断测量和改进,可以实现代码尺寸和内存占用的显着减少。第五部分代码重构和程序重用方法代码重构和程序重用方法

代码重构

代码重构是一种系统性地修改代码结构和组织,而不改变其外部行为的技术。其目标是提高代码的可读性、可维护性和可测试性。嵌入式系统中的代码重构可以通过以下方法进行:

*重命名变量和函数:使用更具描述性的名称,加强代码的可读性。

*拆分函数:将冗长的函数拆分为更小的、可管理的部分。

*内联函数:将小的、频繁调用的函数内联到调用它们的代码中。

*提取方法:将重复的代码块提取到一个单独的方法中。

*引入模式:使用设计模式来组织和重用代码。

程序重用

程序重用涉及在不同的软件项目中重复使用代码。这可以显着减少开发时间和成本,同时提高代码质量。嵌入式系统中常见的程序重用技术包括:

*模块化:将代码组织成独立的、可重用的模块。

*库:创建一个包含常用功能的库,可以链接到其他程序。

*框架:提供一个通用的结构和功能集合,应用程序可以建立在其上。

*组件:开发可插拔、可重用的代码组件,用于构建更复杂的系统。

*模式:使用设计模式来促进代码重用和灵活性。

代码重构和程序重用的好处

代码重构和程序重用的结合为嵌入式系统开发提供了以下好处:

*提高代码质量:降低复杂性、提高可读性和可维护性。

*减少开发时间:重用经过测试的代码块,避免重复工作。

*降低成本:减少开发和维护费用。

*提高可扩展性:通过模块化设计,更容易添加新功能和修改现有功能。

*提升团队协作:标准化代码结构和命名约定,促进团队内部的理解和协作。

实施注意事项

在嵌入式系统中实施代码重构和程序重用时,需要考虑以下注意事项:

*性能影响:重构和重用可能会增加代码大小和执行时间,需要仔细分析。

*硬件限制:嵌入式系统通常具有严格的内存和处理能力限制,需要仔细考虑重构和重用的影响。

*测试:在进行任何重构或重用之前,必须彻底测试代码,以确保其正确性和稳定性。

*持续集成:建立自动化测试和集成过程,以确保代码重构和重用不会引入错误。

*团队沟通:在重构和重用代码之前,与团队成员进行清晰的沟通至关重要,以避免混乱和错误。第六部分虚拟内存技术在方法占用的应用虚拟内存技术在方法占用优化中的应用

嵌入式系统中的方法占用是指代码和数据在内存中占据的空间大小。为了优化方法占用,可以采用虚拟内存技术。

虚拟内存技术是一种计算机系统中的内存管理技术,它允许将一部分内存空间映射到另外一部分内存空间中。这使得程序可以访问远大于实际物理内存的空间,从而解决有限内存空间的问题。

在嵌入式系统中应用虚拟内存技术可以有效优化方法占用,具体方法如下:

1.代码和数据分离

虚拟内存技术可以将代码和数据分开存储在不同的内存区域中。这使得代码和数据可以独立寻址,并允许使用不同的分页机制和保护级别,从而提高系统安全性。

2.动态内存分配

虚拟内存技术允许动态分配内存。这意味着程序可以在运行时请求额外的内存空间,而无需预先分配。这有助于优化内存利用率,并减少方法占用。

3.内存共享

虚拟内存技术允许多个程序共享相同的内存区域。这对于嵌入式系统中资源有限的情况非常有用,可以节省内存空间,并提高系统的整体性能。

4.虚拟地址空间扩展

虚拟内存技术可以扩展虚拟地址空间,使其远大于实际物理内存空间。这使得嵌入式系统能够运行需要大量内存的应用程序,而无需增加实际的物理内存。

5.内存分页

虚拟内存技术可以使用分页机制来管理内存。分页将内存划分为固定大小的页,并使用页表来跟踪每个页的位置。这使得虚拟内存空间的管理更加高效,并可以优化方法占用。

应用实例

在嵌入式系统中,虚拟内存技术已成功应用于以下领域:

*操作系统:虚拟内存技术是现代嵌入式操作系统的关键组件,它允许操作系统在有限的物理内存空间上运行多个应用程序。

*图形处理:虚拟内存技术可以用于存储和管理图形数据,这使得嵌入式系统能够处理复杂的图形应用程序。

*多媒体播放:虚拟内存技术可以用于缓存音频和视频数据,从而提高多媒体播放的性能。

*数据记录:虚拟内存技术可以用于记录大量数据,而无需使用外部存储设备。

*网络通信:虚拟内存技术可以用于存储和管理网络数据,这使得嵌入式系统能够处理高带宽的网络通信。

结论

虚拟内存技术是优化嵌入式系统中方法占用的有效方法。它允许代码和数据分离、动态内存分配、内存共享、虚拟地址空间扩展和内存分页。通过应用这些技术,嵌入式系统可以提高内存利用率,并运行需要大量内存的应用程序。第七部分固件更新机制对方法占用的影响固件更新对方法占用优化

固件更新是嵌入式系统生命周期中至关重要的过程。它允许系统及时更新,以修复错误、添加新功能并提高性能。然而,固件更新可能对方法占用产生重大影响,从而对系统的总体效率产生不利影响。

固件更新机制

有两种主要的固件更新机制:

*Over-the-Air(OTA)更新:通过无线连接(例如Wi-Fi或蜂窝)传输新固件,而无需物理访问设备。

*手动更新:通过USB连接或其他物理手段加载新固件,需要用户干预。

影响方法占用的因素

固件更新对方法占用的影响取决于以下几个因素:

*更新频率:频繁更新会增加方法调用的次数,从而增加方法占用。

*更新大小:较大的更新需要更多的代码和数据空间,从而增加方法占用的静态部分。

*固件验证:为了确保固件更新的完整性,通常需要进行验证过程,这涉及额外的代码和数据消耗。

*安全机制:固件更新可能涉及敏感信息,因此需要安全措施,例如加密或签名,从而增加方法占用。

优化方法占用

为了最小化固件更新对方法占用的影响,可以采取以下优化措施:

*使用增量更新:仅更新已更改的功能或模块,而不是整个固件,从而减少更新大小。

*采用高效的数据结构:使用紧凑的数据结构来存储固件更新相关的信息,例如压缩或按位域存储。

*优化验证算法:选择计算开销较低且验证速度较快的验证算法。

*使用共享代码:在不同功能或模块之间共享通用代码,以减少代码重复并节省方法占用。

案例研究

以下是一个实际案例,说明固件更新对其方法占用的影响:

|固件更新类型|更新频率|更新大小|方法占用增加|

|||||

|OTA|每月|100KB|3%|

|手动|每半年|500KB|7%|

结论

固件更新是嵌入式系统中不可或缺的过程,但它会对方法占用产生影响。通过实施优化措施,例如使用增量更新、采用高效的数据结构和共享代码,可以最小化这种影响,从而提高系统的效率和性能。定期评估和优化固件更新策略对于长期维护嵌入式系统至关重要。第八部分方法占用优化在嵌入式系统中的实践关键词关键要点【方法占用优化技术】

1.栈空间优化:通过分析函数调用栈帧大小、栈帧对齐、函数参数传递和局部变量分配等方面,优化栈空间利用率,防止栈溢出。

2.数据空间优化:采用数据结构紧凑化、变量重叠、只读数据段压缩等技术,减少数据空间占用,提高代码效率。

3.代码空间优化:运用指令编码、函数内联、循环展开、代码段压缩等方法,缩小代码尺寸,减小嵌入式系统的存储空间需求。

【低功耗设计】

方法占用优化在嵌入式系统中的实践

方法占用优化在嵌入式系统设计中至关重要,因为它有助于减少代码大小,提高性能,并延长电池寿命。以下是一些优化方法占用的实践:

#代码分区

代码分区将代码分成不同的段或节,每个段或节具有特定的属性,如只读、只写或可执行。这有助于优化内存使用,因为只读段可以存储在ROM中,而可执行段可以存储在闪存中。

#函数内联

函数内联将函数调用替换为函数体的直接插入。这消除了函数调用开销,从而提高了性能。然而,内联也会增加代码大小,因此需要谨慎使用。

#尾递归

尾递归是指函数在自身末尾调用自身。编译器可以优化尾递归,将其转换为循环,从而减少堆栈空间使用并提高性能。

#数据结构优化

嵌入式系统通常具有有限的内存资源,因此优化数据结构以减少内存占用至关重要。例如,使用数组而不是链表,或者使用位字段而不是布尔变量。

#变量分配优化

变量分配优化涉及将变量分配到最合适的内存区域,如寄存器、RAM或ROM。将频繁使用的变量分配到寄存器中可以提高性能,而将不常用的变量分配到ROM中可以节省RAM空间。

#栈大小优化

栈是一个数据结构,用于存储函数调用时的局部变量和返回地址。优化栈大小可以防止栈溢出,这是一种严重的错误。过大的栈会浪费内存,而过小的栈会限制函数调用的深度。

#汇编优化

在某些情况下,使用汇编语言可以手动优化方法占用。汇编语言提供了对底层硬件的直接访问,允许开发人员执行特定于平台的优化。

#工具支持

有许多工具可以帮助进行方法占用优化,例如:

-编译器优化器:编译器可以自动执行多种优化,如内联和代码分区。

-剖析工具:剖析工具可以分析程序执行情况,并识别可以优化的瓶颈。

-内存概要分析工具:内存概要分析工具可以显示程序的内存使用情况,并帮助确定代码占用过大的区域。

案例研究

以下是一些在嵌入式系统中成功应用方法占用优化技术的案例研究:

-汽车电子:通过使用代码分区和函数内联,汽车电子系统可以减少代码大小,提高性能,并延长电池寿命。

-医疗设备:医疗设备通常受到严格的认证要求。通过使用尾递归和数据结构优化,医疗设备制造商可以确保代码符合安全性和可靠性标准。

-工业自动化:工业自动化系统通常需要实时性能。通过使用栈大小优化和汇编优化,工业自动化设备制造商可以提高系统响应能力和可靠性。

结论

方法占用优化在嵌入式系统设计中至关重要。通过应用代码分区、函数内联、尾递归、数据结构优化、变量分配优化、栈大小优化和汇编优化等技术,开发人员可以减少代码大小,提高性能,并延长电池寿命。此外,使用工具和案例研究可以帮助优化过程,并确保最佳结果。关键词关键要点主题名称:方法占用对代码效率的影响

关键要点:

1.方法占用的内存大小会直接影响代码的效率,尤其是对于嵌入式系统中受限的存储空间。

2.大型方法会增加代码空间,导致存储溢出或性能下降。

3.优化方法占用可以减少代码大小,提高代码效率和嵌入式系统的整体性能。

主题名称:方法占用对执行时间的的影响

关键要点:

1.方法调用会产生调用开销,包括参数传递、指令寻址和返回操作。

2.大型方法通常包含更多的指令,导致执行时间增加。

3.优化方法占用可以减少执行时间,提高嵌入式系统的实时性。

主题名称:方法占用对cache性能的影响

关键要点:

1.嵌入式系统通常使用缓存来提高内存访问速度。

2.大型方法会增加缓存未命中率,导致性能下降。

3.优化方法占

温馨提示

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

评论

0/150

提交评论