• 软件工程


    用户文档主要描述所交付系统的功能和使用方法。下列文档中,( )属于用户文档。

     A.    需求说明书
     B.    系统设计
     C.    安装文档
     D.    系统测试计划

    解析:

    用户文档主要描述所交付系统的功能和使用方法,并不关心这些功能是怎样实现的。用户文档是了解系统的第一步,它可以让用户获得对系统准确的初步印象。 用户文档至少应该包括下述5方面的内容。

     ①功能描述:说明系统能做什么。

    ②安装文档:说明怎样安装这个系统以及怎样使系统适应特定的硬件配置。

    ③使用手册:简要说明如何着手使用这个系统(通过丰富的例子说明.怎样使用常用的系统功能,并说明用户操作错误是怎样恢复和重新启动的)。

    ④参考手册:详尽描述用户可以使用的所有系统设施以及它们的使用方法,并解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术)。

    ⑤操作员指南(如果需要有系统操作员的话):说明操作员应如何处理使用中出现的各种情况。 系统文档是从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。描述系统设计、实现和测试的文档对于理解程序和维护程序来说是非常重要的。

    以下关于需求管理的叙述中,正确的是( )。

     A.    需求管理是一个对系统需求及其变更进行了解和控制的过程
     B.    为了获得项目,开发人员可以先向客户做出某些承诺
     C.    需求管理的重点在于收集和分析项目需求
     D.    软件开发过程是独立于需求管理的活动

    解析:

    需求管理是一个对系统需求变更、了解和控制的过程。需求管理过程与需求开发过程相互关联,当初始需求导出的同时就启动了需求管理计划,一旦形成了需求文档的初稿,需求管理活动就开始了。 关于需求管理过程域内的原则和策略,可以参考:

    ①需求管理的关键过程领域不涉及收集和分析项目需求,而是假定已收集了软件需求,或者已由更高一级的系统给定了需求。

    ②开发人员在向客户以及有关部门承诺某些需求之前,应该确认需求和约束条件、风险、偶然因素、假定条件等。

    ③关键处理领域同样建议通过版本控制和变更控制来管理需求文档。

    项目管理工具用来辅助项目经理实施软件开发过程中的项目管理活动,它不能 (/)。( )就是一种典型的项目管理工具。

     A.    需求分析工具
     B.    成本估算工具
     C.    软件评价工具
     D.    文档分析工具

    解析:

    项目管理工具用来辅助软件的项目管理活动。通常项目管理活动包括项目的计划、 调度、通信、成本估算、资源分配及质量控制等。一个项目管理工具通常把重点放在某一个或某几个特定的管理环节上,而不提供对管理活动包罗万象的支持。

    项目管理工具具有以下特征:

    1. 覆盖整个软件生存周期;
    2. 为项目调度提供多种有效手段;
    3. 利用估算模型对软件费用和工作量进行估算;
    4. 支持多个项目和子项目的管理;
    5. 确定关键路径,松弛时间,超前时间和滞后时间;
    6. 对项目组成员和项目任务之间的通信给予辅助;
    7. 自动进行资源平衡; 
    8. 跟踪资源的使用;
    9. 生成固定格式的报表和剪裁项目报告。

    成本估算工具就是一种典型的项目管理工具。

    逆向工程导出的信息可以分为4个抽象层次,其中( )可以抽象出程序的抽象语法树、符号表等信息;(/)可以抽象出反应程序段功能及程序段之间关系的信息。

     A.    实现级
     B.    结构级
     C.    功能级
     D.    领域级

    解析:

    逆向工程导出的信息可分为如下4个抽象层次。

    实现级:包括程序的抽象语法树、符号表等信息。

    结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图等。

    功能级:包括反映程序段功能及程序段之间关系的信息。 ④领域级:包括反映程序分量或程序与应用领域概念之间对应关系的信息。

    在实际的项目开发中,人们总是希望使用自动工具来执行需求变更控制过程。下列描述中,( )不是这类工具所具有的功能。

     A.    可以定义变更请求的数据项以及变更请求生存期的状态转换图
     B.    记录每一种状态变更的数据,确认做出变更的人员
     C.    可以加强状态转换图使经授权的用户仅能做出所允许的状态变更
     D.    定义变更控制计划,并指导设计人员按照所制定的计划实施变更

    解析:

    对许多项目来说,系统软件总需要不断完善,一些需求的改进是合理的而且不可避免,要使得软件需求完全不变更,也许是不可能的,但毫无控制的变更是项目陷入混乱、不能按进度完成或者软件质量无法保证的主要原因之一。 一个好的变更控制过程,给项目风险承担者提供了正式的建议需求变更机制。可以通过需求变更控制过程来跟踪已建议变更的状态,使已建议的变更确保不会丢失或疏忽。 在实际中,人们总是希望使用自动工具来执行变更控制过程。有许多人使用商业问题跟踪工具来收集、存储、管理需求变更;可以使用工具对一系列最近提交的变更建议产生一个列表给变更控制委员会开会时做议程用。

    问题跟踪工具也可以随时按变更状态分类包裹变更请求的数目。 挑选工具时可以考虑以下几个方面:

    ①可以定义变更请求的数据项。

    ②可以定义变更请求生存期的状态转换图。

    ③可以加强状态转换图,使经授权的用户仅能做出所允许的状态变更。

    ④记录每一种状态变更的数据,确认做出变更的人员。

    ⑤可以定义在提交新请求或请求状态被更新后应该自动通知的设计人员。

    ⑥可以根据需要生成标准的或定制的报告和图表。

    需求管理是CMM可重复级中的6个关键过程域之一,其主要目标是( )。

     A.    对于软件需求,必须建立基线以进行控制,软件计划、产品和活动必须与软件需求保持

     B.    客观的验证需求管理活动符合规定的标准、程序和要求

     C.    策划软件需求管理活动。识别和控制已获取的软件需求

     D.    跟踪软件需求管理的过程、实际结果和执行情况

    解析:

         过程能力成熟度模型(CMM)在软件开发机构中被广泛用来指导软件过程改进。该模型描述了软件过程能力的5个成熟度级别,每一级都包含若干关键过程域(KPA)

    CMM的第二级为可重复级,它包括了6个关键过程域,分别是:需求管理软件项目计划软件项目跟踪和监督软件分包合同管理软件质量保证软件配置管理。 需求管理的目标是为软件需求建立一个基线,提供给软件工程和管理使用:软件计划、产品和活动与软件需求保持一致。             

    答案:C、A、B、A、D、A


    软件开发环境是支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制包括:提供统一的数据模式和数据接口规范的数据集成机制;支持各开发活动之间通信、切换、调度和协同的( );为统一操作方式提供支持的()。

     A.    操作集成机制
     B.    控制集成机制
     C.    平台集成机制
     D.    界面集成机制

    解析:

    软件开发环境是支持软件产品开发的软件系统。它由软件工具集和环境集成机制构成,前者用来支持软件开发的相关过程、活动和任务年;后者为工具集成和软件开发、维护和管理提供统一的支持,它通常包括数据集成控制集成界面集成

    • 数据集成机制提供了存储或访问环境信息库的统一的数据接口规范;
    • 界面集成机制采用统一的界面形式,提供统一的操作方式;
    • 控制集成机制支持各开发活动之间的通信、切换、调度和协同工作。

     系统测试由若干个不同的测试类型组成,其中( )检査系统能力的最高实际限度,即软件在一些超负荷情况下的运行情况;()主要是检查系统的容错能力。

     A.    强度测试
     B.    性能测试
     C.    恢复测试
     D.    可靠性测试

    解析:

    系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。系统测试是根据系统方案说明书来设计测试例子的,常见的系统测试主要有以下内容:

    1. 恢复测试:恢复测试监测系统的容错能力。检测方法是采用各种方法让系统出现故障,检验系统是否按照要求能从故障中恢复过来,并在约定的时间内开始事务处理,而且不对系统造成任何伤害。如果系统的恢复是自动的(由系统自动完成),需要验证重新初始化、检查点、数据恢复等是否正确。如果恢复需要人工干预,就要对恢复的平均时间进行评估并判断它是否在允许的范围内。
    2. 安全性测试:系统的安全性测试是检测系统的安全机制、保密措施是否完善,主要是为了检验系统的防范能力。测试的方法是测试人员模拟非法入侵者,采用各种方法冲破防线。系统安全性设计准则是使非法入侵者所花费的代价比进入系统后所得到的好处要大,此时非法入侵已无利可图。
    3. 强度测试:是对系统在异常情况下的承受能力的测试,是检查系统在极限状态下运行时,性能下降的幅度是否在允许的范围内。因此,强度测试要求系统在非正常数量、频率或容量的情况下运行。强度测试主要是为了发现在有效的输入数据中可能引起不稳定或不正确的数据组合。例如,运行使系统处理超过设计能力的最大允许值的测试例子;使系统传输超过设计最大能力的数据,包括内存的写入和读出等。
    4. 性能测试检査系统是否满足系统设计方案说明书对性能的要求。性能测试覆盖了软件测试的各阶段,而不是等到系统的各部分都组装之后,才确定系统的真正性能。通常与强度测试结合起来进行,并同时对软件、硬件进行测试。软件方面主要从响应时间、处理速度、吞吐量、处理精度等方面来检测。
    5. 可靠性测试:通常使用以下两个指标来衡量系统的可靠性:平均失效间隔时间MTBF 是否超过了规定的时限,因故障而停机时间MTTR 在一年中不应超过多少时间。
    6. 安装测试:在安装软件系统时,会有多种选择。安装测试就是为了检测在安装过程中是否有误、是否容易操作等。主要监测系统的每一个部分是否齐全,硬件的配置是否合理,安装中需要产生的文件和数据库是否已产生,其内容是否正确等。

    RUP是一个二维的软件开发模型,其核心特点之一是(/)。RUP将软件开发生存周期划分为多个循环(cycle),每个循环由4个连续的阶段组成,每个阶段完成确定的任务。设计及确定系统的体系结构,制定工作计划及资源要求是在( )阶段完成的。

     A.    初始(inception)
     B.    细化(elaboration)
     C.    构造(construction)
     D.    移交(transition)

    解析:

    RUP软件开发生命周期是一个二维的软件开发模型,其中有9个核心工作流,分别为:业务建模、需求、分析与设计、实现、测试部署、配置与变更管理、项目管理以及环境。

    RUP把软件开发生存周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段分别为:

    • 初始阶段:定义最终产品视图和业务模型,并确定系统范围。
    • 细化阶段:设计及确定系统的体系结构,制定工作计划及资源要求。
    • 构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
    • 移交阶段:把产品提交给用户使用。

    每个阶段都有一个或多个连续的迭代组成。迭代并不是重复地做相同的事,而是针对不同用例的细化和实现。每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对工作流中的行为进行裁剪。在每个阶段结束前有一个里程碑评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续该阶段的工作。 与其他软件开发过程相比,RUP具有自己的特点,即RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。

    答案:B、D、A、C、B


    静态分析通过解析程序文本从而识别出程序语句中可能存在的缺陷和异常之处;静态分析所包含的阶段中,( )的主要工作是找出输入变量和输出变量之间的依赖关系。

     A.    控制流分析
     B.    数据使用分析
     C.    接口分析
     D.    信息流分析

    解析:

    静态分析通过解析程序文本从而识别出程序语句的各个部分,审查可能的缺陷和异常之处,静态分析包括五个阶段:

    • 控制流分析阶段找出并突出显示那些带有多重出口或入口的循环以及不可达到的代码段;
    • 数据使用分析阶段突出程序中变量的使用情况;
    • 接口分析阶段检查子程序和过程声明及它们使用的一致性;
    • 信息流分析阶段找出输入变量和输出变量之间的依赖关系:
    • 路径分析阶段找出程序中所有可能的路径并画出在此路径中执行的语句。

    活动定义是项目时间管理中的过程之一,( )是进行活动定义时通常使用的一种工具。

     A.    Gantt
     B.    活动图
     C.    工作分解结构(WBS)
     D.    PERT图

    解析:项目时间管理包括使项目按时完成所必须的管理过程。项目时间管理中的过程包括:活动定义、活动排序、活动的资源估算、活动历时估算、制定进度计划以及进度控制。为了得到工作分解结构(Work Break down Structure,WBS)中最底层的交付物,必须执行一系列的活动,对这些活动的识别以及归档的过程就叫做活动定义。

    以下关于自顶向下开发方法的叙述中,正确的是( )

     A.    自顶向下过程因为单元测试而比较耗费时间
     B.    自顶向下过程可以更快地发现系统性能方面的问题
     C.    相对于自底向上方法,自顶向下方法可以更快地得到系统的演示原型
     D.    在自顶向下的设计中,如发现了一个错误,通常是因为底层模块没有满足其规格说明(因为高层模块己经被测试过了)

    解析:自顶向下方法的优点是:

    • 可为企业或机构的重要决策和任务实现提供信息。
    • 支持企业信息系统的整体性规划,并对系统的各子系统的协调和通信提供保证。
    • 方法的实践有利于提高企业人员整体观察问题的能力,从而有利于寻找到改进企业组织的途径。

    自顶向下方法的缺点是:

    • 对系统分析和设计人员的要求较高。
    • 开发周期长,系统复杂,一般属于一种高成本、大投资的工程。
    • 对于大系统而言,自上而下的规划对于下层系统的实施往往缺乏约束力,
    • 从经济角度来看,很难说自顶向下的做法在经济上市合算的。

    在实际应用中,用户通常依靠评价程序来测试系统的性能。以下评价程序中,( )的评测准确程度最低。事务处理性能委员会(TPC)是制定商务应用基准程序标准规范、性能和价格度量,并管理测试结果发布的非营利组织,其发布的TPC-C是()的基准程序。

     A.    核心程序
     B.    真实程序
     C.    合成基准程序
     D.    小型基准程序

     A.    决策支持
     B.    在线事务处理
     C.    企业信息服务
     D.    联机分析处理

    解析:在大多数情况下,为测试新系统的性能,用户必须依靠评价程序来评价机器的性能。对于真实程序、核心程序、小型基准程序和合成基准程序来说,其评测程度依次递减。把应用程序中用的最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序。事务处理性能委员会(TPC)是制定商务应用基准程序标准规范、性能和价格度量,并管理测试结果发布的非营利组织,其发布的TPC-C在线事务处理的基准程序,TPC-D决策支持的基准程序。

    答案:D、C、C、C、B


    关于项目范围管理描述,正确的是( )。

     A.    项目范围是指信息系统产品或者服务所应包含的功能
     B.    项目范围描述是产品范围说明书的重要组成部分
     C.    项目范围定义是信息系统要求的度量
     D.    项目范围定义是生产项目计划的基础

    解析:项目范围是为了达到项目目标,为了交付具有某种特制的产品和服务,项目所规定要做的。在信息系统项目中,产品范围是指信息系统产品或者服务所应该包含的功能,项目范围是指为了能够交付信息系统项目所必须做的工作。产品范围是项目范围的基础,产品的范围定义是信息系统要求的度量,而项目范围的定义是生产项目计划的基础。产品范围描述是项目范围说明书的重要组成部分。

    项目配置管理中,配置项的状态通常包括( )。

     A.    草稿、正式发布和正在修改
     B.    草稿、技术评审和正式发布
     C.    草稿,评审或审批、正式发布
     D.    草稿、正式发布和版本变更

    螺旋模型在( )的基础上扩展而成。

     A.    瀑布模型
     B.    原型模型
     C.    快速模型
     D.    面向对象模型

    在软件系统工具中,版本控制工具属于( ),软件评价工具属于(/)。

     A.    软件开发工具
     B.    软件维护工具
     C.    编码与排错工具
     D.    软件管理和软件支持工具

    解析:通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具 、软件管理和软件支持工具。

    • 软件开发工具:需求分析工具、设计工具、编码与排错工具。
    • 软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
    • 软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

    面向对象的分析模型主要由( )、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的(/)、完整精确的类图、针对复杂对象的状态图和描述流程化处理过程的()等。

     A.    业务活动图
     B.    顶层架构图
     C.    数据流模型
     D.    实体联系图

     A.    序列图
     B.    协作图
     C.    流程图
     D.    活动图

    答案:D、A、C、B、B、D


    软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括( )、测试用例和领域知识等。

     A.    项目范围定义、需求分析文档、设计文档
     B.    需求分析文档、设计文档、程序代码
     C.    设计文档、程序代码、界面原型
     D.    程序代码、界面原型、数据表结构

    解析:软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于软构件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软构件有助于改善软件质量。此外,大量使用软构件,软件的灵活性和标准化程度也可望得到提高。

    文档是影响软件可维护性的决定因素。软件系统的文档可以分为用户文档和系统文档两类。其中,( )不属于用户文档包括的内容。

     A.    系统设计
     B.    版本说明
     C.    安装手册
     D.    参考手册

    解析:

    用户文档主要描述所交付系统的功能和使用方法,并不关心这些功能是怎样实现的。用户文档是了解系统的第一步,它可以让用户获得对系统准确的初步印象。 用户文档至少应该包括下述5方面的内容。

    ① 功能描述:说明系统能做什么。

    ② 安装文档:说明怎样安装这个系统以及怎样使系统适应特定的硬件配置。

    ③ 使用手册:简要说明如何着手使用这个系统(通过丰富的例子说明怎样使用常用的系统功能,并说明用户操作错误是怎样恢复和重新启动的)。

    ④ 参考手册:详尽描述用户可以使用的所有系统设施以及它们的使用方法,并解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术)。

    ⑤ 操作员指南(如果需要有系统操作员的话):说明操作员应如何处理使用中出现的各种情况。 系统文档是从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。描述系统设计、实现和测试的文档对于理解程序和维护程序来说是非常重要的。

     需求管理是一个对系统需求变更、了解和控制的过程。以下活动中,( )不属于需求管理的主要活动。

     A.    文档管理
     B.    需求跟踪
     C.    版本控制
     D.    变更控制

    解析:需求管理的活动包括:1、变更控制 2、版本控制 3、需求跟踪 4、需求状态跟踪

    软件开发过程模型中,( )主要由原型开发阶段和目标软件开发阶段构成。

     A.    原型模型
     B.    瀑布模型
     C.    螺旋模型
     D.    基于构件的模型

    解析:题目所述“由原型开发阶段和目标软件开发阶段构成”符合原型模型的特点。因为原型模型先是使用原型获取需求,需求获取到之后有可能抛弃丢原型,然后根据原型获得的需求进行目标软件的开发。

    软件开发环境应支持多种集成机制。其中,( )用于存储与系统开发有关的信息,并支持信息的交流与共享;(/)是实现过程集成和控制集成的基础。

     A.    算法模型库
     B.    环境信息库
     C.    信息模型库
     D.    用户界面库

    解析:软件开发环境(SDE)是指支持软件的工程化开发和维护而使用的一组软件,由软件工具集和环境集成机制构成。 软件开发环境应支持多种集成机制,例如,平台集成、数据集成、界面集成、控制集成和过程集成等。软件开发环境应支持小组工作方式,并为其提供配置管理,环境的服务可用于支持各种软件开发活动,包括分析、设计、编程、调试和文档等。 较完善的软件开发环境通常具有多种功能,例如,软件开发的一致性与完整性维护,配置管理及版本控制,数据的多种表示形式及其在不同形式之间的自动转换,信息的自动检索与更新,项目控制和管理,以及对开发方法学的支持。

    软件开发环境具有集成性、开放性、可裁减性、数据格式一致性、风格统一的用户界面等特性,因而能大幅度提高软件生产率。

    集成机制根据功能的不同,可划分为环境信息库、过程控制与消息服务器、环境用户界面三个部分。

    1. 环境信息库。环境信息库是软件开发环境的核心,用以存储与系统开发有关的信息,并支持信息的交流与共享。环境信息库中主要存储两类信息,一类是开发过程中产生的有关被开发系统的信息,例如,分析文档、设计文档和测试报告等;另一类是环境提供的支持信息,例如,文档模板、系统配置、过程模型和可复用构件等。
    2. 过程控制与消息服务器。过程控制与消息服务器是实现过程集成和控制集成的基础。过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成使各工具之间进行并行通信和协同工作。
    3. 环境用户界面。环境用户界面包括环境总界面和由它实行统一控制的各环境部件及工具的界面。统一的、具有一致性的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效地使用工具并减轻用户的学习负担的保证。

    答案:B、A、A、A、B


     软件概要设计包括设计软件的结构、确定系统功能模块及其相互关系,主要采用( )描述程序的结构。

     A.    程序流程图、PAD图和伪代码
     B.    模块结构图、数据流图和盒图
     C.    模块结构图、层次图和HIPO图
     D.    程序流程图、 数据流图和层次图

    解析:目选项所列举的图与开发阶段的对应关系为:

    1. 需求分析阶段:数据流图。
    2. 概要设计阶段:模块结构图、层次图和HIPO图。
    3. 详细设计阶段:程序流程图、伪代码、盒图。

    软件设计包括了四个既独立又相互联系的活动:高质量的( )将改善程序结构和模块划分,降低过程复杂性;(/)的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系;(/)描述了软件与用户之间的交互关系。

     A.    程序设计
     B.    数据设计
     C.    算法设计
     D.    过程设计

    解析:软件设计包括体系结构设计、接口设计、数据设计和过程设计

    • 结构设计:定义软件系统各主要部件之间的关系。
    • 数据设计:将模型转换成数据结构的定义。好的数据设计将改善程序结构和模块划分,降低过程复杂性。
    • 接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信。
    • 过程设计:系统结构部件转换成软件的过程描述。

    答案:C、B、

  • 相关阅读:
    【多光谱与高光谱图像融合:金字塔混洗Transformer】
    Vue3中h方法和createVnode的实现-详细步骤
    Vue3 动态设置 ref
    Vue2源码学习笔记 - 20.渲染与编译—createComponent 创建组件VNode
    VirtualLab专题实验教程-3.二维分束超表面光栅
    两天学会微服务网关Gateway-Gateway网关限流
    Java架构该如何进阶?还在东拼西凑的学习?这份进阶指南相信会对你有所帮助,十多位资深大佬独家秘籍一并传授!
    飞腾CPU FT-2000/4 uboot下PHY调试记录
    【VUE复习·7】样式绑定:静态样式绑定、动态样式绑定(明亮模式 / 暗黑模式 切换的效果如何实现)
    基于云计算的区域LIS系统系统源码
  • 原文地址:https://blog.csdn.net/weixin_47203903/article/details/126957809