版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ICS01.140.20CCSL7043信息技术应用创新工程建设规范第11部分:迁移适配通用技术要求EngineeringspecificationfortheApplicationInnovationProjectofInformationTechnologyPart11:Generaltechnicalrequirementsofmigrationandadaptation DB43/T2258—2021I前言 Ⅲ Ⅴ 12规范性引用文件 13术语和定义 14缩略语 15应用软件迁移适配要求 25.1迁移适配评估 25.2编译型应用软件迁移适配实施要求 25.3解释型应用软件迁移适配实施要求 35.4存储位置要求 35.5权限要求 35.6安装脚本要求 35.7兼容性要求 45.8功能验证 45.9性能优化 46编译型内核驱动软件迁移适配要求 56.1迁移适配评估 56.2迁移适配实施要求 56.3功能验证 66.4性能优化 6附录A(规范性)Qt开发环境迁移 7附录B(规范性)Gtk开发环境迁移 附录C(规范性)Python开发环境迁移 附录D(资料性)驱动软件迁移适配的软件分析方法 DB43/T2258—2021本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。《信息技术应用创新工程建设规范》分为以下几个部分:——第1部分:台式微型计算机通用技术要求;——第2部分:便携式微型计算机通用技术要求;——第3部分:服务器通用技术要求;——第4部分:操作系统通用技术要求;——第5部分:操作系统硬件兼容性通用技术要求;——第6部分:操作系统软件兼容性通用技术要求;——第7部分:办公套件通用技术要求;——第8部分:电子公文通用技术要求;——第9部分:驱动开发通用技术要求;——第10部分:应用开发通用技术要求;——第11部分:迁移适配通用技术要求;——第12部分:国产化信息系统建设质量管理规范;——第13部分:国产化信息系统运行维护规范;——第14部分:国产化信息系统建设验收规范;——第15部分:云计算通用技术要求。本部分为第11部分。本部分由湖南省国家密码管理局提出。本部分由湖南省工业和信息化厅归口。本部分起草单位:银河麒麟软件(长沙)有限公司、中国人民解放军国防科技大学、飞腾信息技术有限公司、湖南湘江鲲鹏信息科技有限责任公司、湖南中软信息系统有限公司、湖南长城科技信息有限公司、湖南国科微电子股份有限公司、长沙景嘉微电子股份有限公司、珠海金山办公软件有限公司、鹏城实验室。本部分主要起草人:魏立峰、吴庆波、张铎、孙立明、彭欢、蒋林轩、战茅、王晓川、朱浩、王静、谌志华、蔡威、张月、韩光、吕超、董昱、曹泽文、孙洪桥、付志鹏。DB43/T2258—2021V引言湖南省为深入贯彻国家网络强国战略,全面落实中央有关文件精神,部署开展湖南省信息技术应用创新工程建设,保障全省各级党政机关关键信息基础设施信息安全和信息系统安全可靠运行。针对自主可控产品体系初具规模,但相关产品和工程实施标准规范还很缺乏的现状,为了规范工程建设,加速工程进度,扩大建设结果,同时有力提升自主可控产业发展水平,确保信息安全,由湖南省国家密码管理局作为业务主管单位、湖南省工业和信息化厅作为技术归口单位,由中国人民解放军国防科技大学、中国电子信息产业集团有限公司等单位与湖南省合作制定了《信息技术应用创新工程建设规范》地方标准。《信息技术应用创新工程建设规范》主要由自主可控核心产品、典型应用、工程管理等方面的规范组成,重点解决应用创新工程建设当中产品选型、应用开发、工程实施等基础环节的实际问题,可为应用创新工程的用户使用单位、集成建设单位和相关产品研制单位,在产品和应用规范化、软硬件兼容适配、工程实施标准等方面提供一般性指引。《信息技术应用创新工程建设规范》未来将根据自主可控产业和应用创新工程的发展变化进行相应的必要调整和补充。DB43/T2258—20211信息技术应用创新工程建设规范第11部分:迁移适配通用技术要求本文件规定了应用软件程序和设备驱动程序在不同操作系统之间迁移适配的技术要求,应用软件迁移适配要求包括开发环境迁移适配、代码重编译、运行环境迁移适配、存储位置、权限、安装脚本和兼容性要求,设备驱动程序迁移适配包括代码设计、代码适配、代码重编译、打包、内核兼容性等要求,并提出迁移后的功能验证和性能优化要求。本文件适用于指导信息技术应用创新工程建设中应用软件和设备驱动程序在不同操作系统上的迁移适配工作,也为应用软件和设备驱动程序迁移后的软件测试提供指导。2规范性引用文件下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。DB43/T1777.6—2020信息技术应用创新工程建设规范第6部分:操作系统软件兼容性通用技术要求DB43/T2260—2021信息技术应用创新工程建设规范第9部分:驱动开发通用技术要求DB43/T2259—2021信息技术应用创新工程建设规范第10部分:应用开发通用技术要求3术语和定义下列术语和定义适用于本文件。3.1动态链接库dynamiclinklibrary是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源。3.2驱动程序driver驱动程序是硬件厂商根据操作系统编写的配置文件,操作系统通过驱动来与控制设备和进行通信。3.3版本魔术信息vermagicinformation版本魔术信息是一个描述内核版本号以及基础内核配置的字符串。4缩略语下列缩略语适用于本文件:2DB43/T2258—2021CRC:循环冗余校验(CyclicRedundancyCheck)DKMS:动态内核模块支持(DynamicKernelModuleSupport)GDK:图形开发工具包(GraphicsDevelopmentKit)GPU:图形处理器(GraphicsProcessingUnit)GTK:跨多种平台的图形工具包(GIMPToolkit)5应用软件迁移适配要求5.1迁移适配评估在迁移适配工作开始之前,应按以下要求进行迁移适配评估:a)迁移软件源码分析:分析迁移软件的主要功能和模块组成,建立功能模块与功能实现的映射关系;b)基础运行环境分析:分析迁移软件所在源平台和目标平台的开发环境、运行环境、开发规范以及处理器指令集的差异,评估这些差异对迁移软件代码的影响;c)第三方软件栈分析:分析目标平台上的第三方软件栈(包括数据库、中间件、办公套件、浏览器等)数据、二次开发接口、操作习惯等是否兼容,确定可以重用、需要迁移改造的功能模块和代码段范围,确定迁移适配的技术路线;d)迁移适配工作量评估:根据迁移适配可能的技术路线,从技术方案和管理实施等角度评估不同组合的迁移工作量、复杂度和成本;e)迁移环境准备:主要包括硬件设备、操作系统以及调试工具等的准备和部署。5.2编译型应用软件迁移适配实施要求5.2.1开发环境迁移适配要求a)应分析应用软件的架构和实现技术、与操作系统平台的耦合度和依赖度,确定迁移所涉及的各类系统机制;b)将与系统调用无关的部分代码进行剥离,在国产操作系统环境下重建工程,重用代码;c)根据软件分析中运行环境、开发环境和接口的差异进行代码修改,实现与原系统相同的软件功能,例如Qt项目迁移,当前主要从Qt4迁移到Qt5,具体迁移参照表应符合附录A的规定;Gtk迁移主要从gtk2迁移到gtk3,具体内容应符合附录B的规定。5.2.2代码重编译要求代码重新编译时,应对编译脚本和编译选项进行移植,将编译脚本和编译选项更改为目标体系结构支持的编译脚本和编译选项。生成软件包时,命名和打包规范应按照DB43/T1777.6—2020中6.5节要求执行。5.2.3运行环境迁移适配要求应用软件运行前应确认所依赖的第三方运行库是否存在,如缺少对应的动态链接库,应针对不同的操作系统查找和安装动态链接库对应的软件包。在采用Deb格式软件包的操作系统中,可通过执行“apt-filesearch动态库名”的方式来查找指定的动态链接库所对应的软件包;在采用RPM格式软件包的操作系统中,可通过“yumwhatprovides动态库名”的方式来查找指定的动态链接库所对应的软件包。找到对应的动态库包之后,可通过操作系统DB43/T2258—2021DB43/T2258—2021厂商提供的软件源进行下载和安装。如已安装动态链接库软件包但是链接地址错误,可以通过将动态链接库所在的目录路径添加到LD_LIBRARY_PATH环境变量或者系统指定的链接库配置文件/etc/ld.so.conf的方式进行修复。5.3解释型应用软件迁移适配实施要求解释型应用软件可在操作系统环境下直接运行,具有较好的跨平台可移植性,大部分软件无需修改源代码,迁移工作量相对较小。但针对以下情况,应进行少量修改并重新编译:a)当目标平台和移植前的环境不一致时,则需根据版本差异,修改源代码中库和接口的调用相关部分,例如Python应用程序,目前主要从python2迁移到python3,迁移后应注意语法变化和迁移时宜使用的工具,应符合附件C的要求;b)如果通过JNI或其他形式调用的库是采用C/C++等编译型语言开发,则被调用库的代码需按照5.2节重新编译或修改;c)对软件运行需要的第三方软件栈,包括第三方国产数据库、中间件、办公套件、浏览器等软件栈进行迁移和替换;d)系统运行时如缺少对应的动态链接库,则需要针对不同的国产操作系统,按照5.2.3节寻找和安装对应的动态库包。5.4存储位置要求应用软件可执行程序、动态库、配置文件、数据文件、缓存文件的存储位置,应符合DB43/T2259—2021第6章的要求。5.5权限要求5.5.1权限分离要求具有前端交互逻辑的应用软件的可执行程序,应以普通用户权限运行,不应使用sudo、pkexec等命令来提权运行。具有前端交互逻辑的应用软件的可执行程序,如果需要特权态执行某些操作,应使用前后端分离的方式实现,通过dbus等技术与后端具有管理员权限的服务端通讯,实现相关功能。5.5.2权限提升要求时用户鉴别要求前端应用程序使用dbus等技术与后端具备管理员权限的服务通讯时,应使用policykit等技术进行身份鉴别,用于确定用户是否具备该项行为的权限。5.6安装脚本要求a)宜将维护者脚本作为软件包的一部分,当安装、升级、移除软件包时,软件包管理系统会自动执行这些脚本;b)维护者脚本应是可执行文件,以#!符号开头,且这些脚本应是可读的,可被任何人执行,不应全局可写;c)包管理系统可查看维护者脚本的退出状态,如果脚本运行错误,应返回一个非零值;如果脚本运行正常,应返回零值;d)用户与软件包通过维护者脚本中的配置文件进行交互时,应先安装一个配置脚本作为控制信息文件;e)升级软件包时,包管理系统将调用旧版本和新版本软件包中的脚本组合,用户应检查参数DB43/T2258—20214f)在软件包解压之前应先为正在被升级的包停止相关服务,然后完成所需的配置工作;在移除软件包之前,应先停止一个软件包的相关进程,然后修改相关文件或连接,和/或卸载软件包所创建的文件;g)维护者脚本调用的程序不应在程序名前添加路径,其路径会设置在PATH环境变量中。5.7兼容性要求5.7.1与操作系统解耦要求应用软件不应依赖操作系统提供的任何动态链接库(除基础C库外)。应用软件不应直接修改操作系统提供的配置文件,宜通过操作系统提供的接口来修改。部分系统配置可通过新增高优先级配置文件来进行配置覆盖,新增的配置文件以“两位数字-应用名.conf”的形式命名。5.7.2动态库依赖自包含要求应用软件所使用的动态链接库应尽量独立于操作系统,应用软件所依赖的动态链接库(除基础C库外)应放置在自设置的lib目录中。5.8功能验证应用软件迁移适配后,应进行以下功能验证:a)按照应用软件的功能点逐一进行功能测试,保证迁移后的系统与原有系统功能一致;b)检查迁移后应用软件的用户界面,是否符合通用规范,是否符合美观性和易用性;c)检查迁移后应用软件的安全性,是否与原有系统具有相同的安全性;d)检查迁移后应用软件的容错性,是否与原有系统具有相同的容错性;e)检查应用软件在不同平台的安装配置能力,检查在不同平台、不同配置下应用软件的适配性;f)与原有系统集成适配验证;g)用户使用场景验证。5.9性能优化迁移适配时,应通过数据采集、瓶颈分析、问题定位、策略优化、修改验证5个过程的多次迭代进行性能优化,使应用软件迁移后的性能不低于迁移前的性能。迁移过程包含以下内容:a)数据采集:通过设置Web会话、线程、CPU、I/O、网络、内存等数据采集点,持续采集应用软件的运行数据,同时根据性能指标评估体系,对应用软件性能指标采集性能评估数据;b)瓶颈分析:对采集到的数据开展分析,对耗时较多部分,运用时间切片工具进行分析,找出消耗量大的资源;c)问题定位:使用运行监控分析工具分析资源消耗较大的原因,可从线程、内存等层面逐步定位问题;d)策略优化:建立用于性能优化的专家知识库,提供系统性建议,为快速解决问题提供依据和建议方案;e)修改验证:实施建议方案并进行效果验证,确保问题得到解决;f)宜通过loadrunner、JMeter等性能测试工具分析应用软件的性能,分析比对找出瓶颈并进行优化。 DB43/T2258—202156编译型内核驱动软件迁移适配要求6.1迁移适配评估在迁移适配工作开始之前,应按以下要求进行迁移适配评估:a)软件分析:应从适配性、规范性以及体系结构相关代码三个方面进行分析,初步得到了代码的移植范围。具体的软件分析方法见附录D;b)技术路线选定:应根据软件分析的成果,按照尽量少地对驱动程序进行修改的原则设计迁移技术路线,以满足驱动的兼容性要求;c)工作量评估:应结合关键性、性能、复杂处理、体系结构支持等对工作量进行加权,获取较为科学的工作量,并根据这个工作量以及工作计划要求来合理配置研发人员和测试人员;d)迁移环境准备:主要包括硬件设备、操作系统以及测试验证工具的准备和部署。6.2迁移适配实施要求6.2.1代码设计要求驱动程序宜进行合理的代码层次分离,分为内核框架层和核心代码逻辑层,其中内核框架层实现驱动程序内核与Linux内核进行对接的部分,调用Linux提供的API接口函数和数据结构,这部分随着内核的升级而变化,需要重编译;核心代码逻辑层实现驱动程序的核心功能,比如读硬件寄存器的操作、核心算法等,通过内核框架层代码挂接入Linux内核。6.2.2代码编写要求代码编写应符合以下适配要求:a)驱动程序中应加入驱动签名,增加作者和许可证等签名信息;b)应根据内核和相关依赖模块的接口变化模块校验信息和模块版本控制信息,修改驱动程序接口,保证符号表、模块校验信息和模块版本控制信息等与当前系统的匹配;c)应对驱动程序代码中的体系结构相关指令、嵌入式汇编函数和编译宏进行替换。为了保证Linux内核升级时驱动程序内部调用的符号可用,应遵循DB43/T2260.1—2021中5.1节规定的原则。6.2.3代码重编译要求代码重新编译时,应对编译脚本和编译选项进行移植,将编译脚本和编译选项更改为目标体系结构支持的编译脚本和编译选项。6.2.4打包要求为了减少Linux内核升级导致设备驱动程序重新编译的工作量,驱动程序打包时宜采用DKMS内核模块打包方式,内核模块打包应符合DB43/T2260—2021中第6.6节要求。6.2.5内核兼容性要求导出符号的CRC信息设备驱动程序所使用的导出符号的CRC信息应与内核中所记录的对应符号的CRC信息保持一致,以确保设备驱动程序和内核的兼容性。DB43/T2258—20216多内核版本兼容若识别驱动程序需同时兼容多个内核版本,驱动程序中应包含对所兼容的内核版本的相关判断逻辑。6.3功能验证驱动程序迁移适配后,应进行以下功能验证:a)按照驱动程序的功能点逐一进行功能测试,保证迁移后的驱动与原有功能一致;b)检查内核能否正常加载驱动程序;c)检查驱动程序在不同平台的安装配置能力,检查在不同平台、不同配置下驱动程序的适配性;d)若发现问题,应跟踪系统日志,分析问题产生的原因并进行相应的修改,然后进行回归测试,直到通过所有的功能测试。6.4性能优化迁移适配时,应根据应用场景和体系结构对操作系统参数配置进行优化,包含以下内容:a)在工作场景(比如高速网卡的高并发访问、GPU显卡的实时虚拟化等)下,应对通用场景下的默认系统参数重新进行优化配置;b)宜通过修改内核源码目录下etc目录中的配置文件sysctl.conf来实现配置优化;c)针对特定的国产处理器,宜根据处理器的拓扑、核数、工作频率等,对设备、驱动程序、应用软件等的工作方式进行针对性优化;d)宜利用ftrace、kprobe、kgdb、systemtap等内核调试工具分析驱动程序代码的执行效率,分析比对找出瓶颈并进行优化。 DB43/T2258—20217Qt开发环境迁移Qt项目迁移前应配置项目所需的Qt模块,包括提供GUI程序基本功能的qtbase基础模块,提供渲染和创建svg文件功能的qtsvg,以及提供脚本化机制的qtscript等扩展模块。Qt迁移应包括头文件迁移、函数迁移、类迁移、常量迁移、模块迁移、webkit头文件迁移和webkit类迁移。A.1Qt头文件迁移Qt4和Qt5的头文件迁移参照表见表A.1。表A.1头文件迁移参照表A.2Qt函数迁移Qt4和Qt5的函数迁移参照表见表A.2,Qt5缺失的函数应修改迁移软件源代码实现程序逻辑。表A.2函数迁移参照表无无QCoreApplication::setEQCoreApplication::installNativeEv无QAbstractItemModel::seQAbstractItemModel::rolQDesktopServices::storagQStandardPaths::writableQDesktopServices::diQGuiApplication::commitDaDB43/T2258—20218表A.2函数迁移参照表(续)QHeaderView::setMovable(boQHeaderView::setSectioQHeaderView::sectionQHeaderView::setClickable(boolclicQHeaderView::setSectionsQHeaderView::sectionsCQHeaderView::setResizeMode(intloQHeaderView::setSectionRQHeaderView::resizeMode(intlogicQHeaderView::sectionReQNetworkConfiguration::bQNetworkConfiguration::beareQSslCertificate::isBlaQSslCertificate::alternateSuQSslCertificate::subjectAlternativeQTest::qWaitForWindoA.3Qt类迁移Qt4和Qt5类迁移见表A.3。表A.3类迁移参照表QHttpResponseHeader,QHttpReA.4Qt常量迁移Qt4和Qt5常量迁移见表A.4,Qt5缺失的常量应修改迁移软件源代码实现程序逻辑。9DB43/T2258—2021DBT— 43/2258DBT—表A.4常量迁移参照表无无Qt::WA_MergeSoftkeysRec无无无无无QEvent::Accessibility无A.5Qt模块迁移Qt4和Qt5模块迁移见表A.5。表A.5模块迁移参照表A.6webkit头文件迁移webkit到webengine头文件迁移见表A.6。表A.6webkit到webengine头文件迁移参照表A.7webkit类迁移webkit到webengine类迁移对照见表A.7。DB43/T2258—2021表A.7webkit到webengine类迁移参照表 DB43/T2258—2021Gtk开发环境迁移B.1开发者在已有的gtk2项目中应做的适配a)开发者不得引用无效头文件gtk3规定的可引用的头文件见表B.1。表B.1gtk3中可引用的头文件使用makeCFLAGS+="-DGTK_DISABLE_SINGLE_INCLUDES"去除无效头文件。b)应去除已弃用符号使用makeCFLAGS+="-DGDK_DISABLE_DEPRECATED-DGTK_DISABLE_DEPRECATED"定义去除已弃用符c)应使用已有的访问接口,不得直接访问gtk对象使用makeCFLAGS+="-DGSEAL_ENABLE"去除无效接口。d)应把GDK_<keyname>替换为GDK_KEY_<keyname>e)应通过GIO打开外部程序f)应通过cairo进行绘制GdkGC和GdkImage对象不能继续使用。1)开发者不应继续使用GdkBitmap位图操作,宜使用cairo_mask()实现相同效果;2)开发者不应继续使用gdk_draw_drawable(),宜使用cairo_push_group()实现相同效果;3)开发者应使用pango_cairo_show_layout()替换gdk_draw_layout_with_colors();B.2开发者将程序代码向gtk3迁移应做的适配a)开发者应使用get_preferred_width/height替换size_request;b)开发者应使用以下cairo接口进行GDK功能替换,见表B.2;DB43/T2258—2021表B.2替换GDK功能的cairo接口无c)开发者应使用cairosurfaces替换GdkPixmap对象和相关函数;d)开发者应使用GdkVisual处理图层信息,替换GdkColormap和其相关函数;e)开发者应使用cairo_surface或GdkPixBufGdk替换GDKDrawable、GdkPixmGdkWindow类中可以替换GdkDrawable相关的函数见表B.3。表B.3GdkWindow类中替换GdkDrawable相关的函数DB43/T2258—2021DBT— 43/2258DBT—和gdk_display_add_client_message_filter();g)开发者宜通过添加<gtk/gtkx.h>来使用GtkPlug与GtkSocket组件;h)开发者应使用cairo_t替代GtkWidget::draw信号;i)开发者应使用gtk_orientable_set_orientation()和gtk_progress_bar_set_inverted()替换gtk_progress_bar_set_orientation()来设置GtkProgressBar进度条,当前进度条的方向值见表B.4。表B.4当前进度条的方向值j)开发者应通过GtkBoxexpand和GtkBoxfill扩大和填充标志,默认值已由原来的“水平”和“垂直”变成了“从不”和“自动”;k)开发者不应使用GtkObject类,若已有代码中有从GtkObject类中继承的对象,需要进行l)GtkEntryCompletion信号“match-selected”和“cursor-on-match”在gtk2中的错误已被修复,如涉及相关代码,开发者需要进行相应调整;m)开发者宜使用gtk_window_set_has_resize_grip()和gtk_window_get_has_resize_grip()替换gtk_statusbar_set_has_resize_grip()和gtk_statusbar_get_has_resize_grip();n)开发者应在正确的位置安装gtk+的模块,gtk+2.x的位置是libdir/gtk-2.0及其子目录,gtk+3的位置是libdir/gtk-3.0及其子目录,如使用GTK+3链接到libgtk2.x的模块,将导致错误。DB43/T2258—2021Python开发环境迁移应用程序从python2迁移到python3,语法变化见表C.1。表C.1python2到python3迁移参照表无无无无从python2迁移到python3,宜使用以下工具:a)python自带的2to3脚本,可对单个文件或目录进行自动检测,标示迁移python3需要修改的b)Pylint、Pyflakes(或flake8封装器)工具,能检测出python2到python3无法检测出的、迁移python3导致异常的不良代码。 DB43/T2258—2021驱动软件迁移适配的软件分析方法D.1适配性分析驱动软件的适配性分析,主要是结合Linux内核驱动程序的动态加载过程,分析该驱动软件与内核模块或者内核接口的适配性。包含以下几个方面:一是模块信息校验匹配,设备驱动程序的编译和加载应针对同一内核版本完成,只有和当前运行内核版本信息一致的驱动程序才能被加载;二是驱动软件版本控制匹配,内核通过检查module_layout校验,对驱动软件版本MODVERSIONS进行匹配校验,要求和内核版本保持一致。内核在加载外置模块时会校验驱动模块版本魔术信息,版本魔术信息定义如下:#defineVERMAGIC_STRING\MODULE_VERMAGIC_SMP\MODULE_VERMAGIC_PREEMPT\MODULE_VERMAGIC_MODULE_UNLOAD\MODULE_VERMAGIC_MODVERSIONS\MODULE_ARCH_VERMAGIC\MODULE_RANDSTRUCT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡村医生年终个人工作总结2篇
- 2025-2030智慧农业行业市场发展现状深度调研及未来趋势评价报告
- 2025-2030智慧农业物联网技术应用政策现状及市场投资趋势
- 2025-2030智慧农业气象服务提升项目分析评估咨询调研报告
- 2025-2030智慧农业技术无人机应用市场名词发展分析
- 2025-2030智慧健康运营食品加工业市场现状竞争分析及投资机会评估规划研究报告
- 年会讲话稿资料15篇
- 《森林报》读后感(汇编15篇)
- 对外软件开发合同样本合同三篇
- 2026年中药抗心律失常实践技能卷及答案(专升本版)
- 2025年山东春考语文考试真题及答案
- 2025年殡仪馆火化师招聘笔试题库附答案
- 2025年足球裁判员考试题及答案
- 监狱视频管理办法
- 股东考核管理办法
- 大数据平台建设工期保证体系及保证措施
- 2025年吉林省长春市中考英语真题(原卷版)
- 新疆圣雄氯碱有限公司2万吨-年废硫酸再生处理项目环评报告
- 2025年口腔正畸主治考试《基础知识》新版真题卷(含答案)
- 冒顶片帮事故培训
- 苏教版高中化学必修二知识点
评论
0/150
提交评论