系分 - 软件工程

news2024/9/30 11:35:28

在这里插入图片描述

个人总结,仅供参考,欢迎加好友一起讨论

系分 - 软件工程

考点摘要

  • 信息/软件系统的生命周期(★★)
  • 软件开发方法(★★★)
  • 软件开发模型(★★★★)
  • 逆向工程(★)

信息系统的生命周期

在这里插入图片描述

以上的生命周期的划分偏向项目管理,而以下的划分偏向技术开发:

在这里插入图片描述

软件系统的生命周期

在这里插入图片描述

软件开发方法

在这里插入图片描述

例题1

在这里插入图片描述

例题1解析与答案

​ 答案:D A B

​ 解析:软件开发方法是指软件开发过程所遵循的办法和步骤,从不同的角度可以进行不同的分类

​ 从开发风范上看,可分为自顶向下的开发方法和自底向上的开发方法

​ 从性质上看,可分为形式化方法和非形式化方法

​ 形式化方法是一种具有坚实数学基础的方法,允许对系统和开发过程做严格处理和论证

​ 形式化方法适用于系统安全级别要求极高的软件的开发

​ 非形式化方法则不把严格性作为其主要着眼点,通常以各种开发模型的形式得以体现

​ 从适应范围来看,可分为整体性方法与局部性方法。

​ 适用于软件开发全过程的方法称为整体性方法

​ 适用于开发过程某个具体阶段的软件方法称为局部性方法。

1 逆向工程

逆向工程的特点是从已有的程序中抽取数据结构,体系结构和程序设计信息。

它的流程为:现有系统 → 逆向工程 → 考虑新需求 → 正向工程 → 新系统。

软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据,体系结构和过程设计信息。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。

在这里插入图片描述

与逆向工程相关的概念有重构、设计恢复、再工程和正向工程:

  • 重构(restructuring),重构是指在同一抽象级别上转换系统描述形式。
  • 设计恢复(design recovery),设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
  • 逆向工程(reverse engineering),逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程
  • 正向工程(forward engineering),正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量
  • 再工程(re-engineering),再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。
逆向工程恢复信息的方法
方法导出信息
用户指导下的搜索与变换方法实现级、结构级
变换式方法实现级、结构级、功能级
基于领域知识的方法功能级、领域级
铅板恢复法实现级、结构级

例题2

在这里插入图片描述

例题2解析与答案

​ 答案:B C

​ 解析:略

2 净室软件工程CSE

净室即无尘室,洁净室,也就是一个受控污染级别的环境。

使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证而不是测试,作为发现和消除错误的主要机制。

使用统计的测试来获取认证被交付的软件的可靠性所必须的出错率信息。它是一种强调正确性的数学验证和软件可靠性的认证的软件工程模型,其目标和结果具有非常低的出错率。

软件开发模型

开发方法比开发模型要来得大一号。结构化开发方法对应V模型和瀑布模型;面向对象开发方法对应喷泉模型,统一方法模型,敏捷模型,面向服务的模型。 所有面向服务的模型都是以面向对象为基础的。

1 瀑布模型

瀑布模型也称为生命周期法,是生命周期法中最常用的开发模型,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。如图:

在这里插入图片描述

  1. 软件计划(问题的定义及规划):主要确定软件的开发目标及其可行性。
  2. 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。
  3. 软件设计:主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计(概要设计)和详细设计。
  4. 程序编码:将软件设计的结果转换成计算机可运行的程序代码。在程序编写中必须制定统一、符合标准的编写规范,以保证程序的可读性,易维护性,提高程序的运行效率。
  5. 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
  6. 软件维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求,要延续软件的使用寿命,就必须对软件进行维护。

瀑布模型有利于大型软件开发过程中人员的组织与管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。然而软件开发的实践表明,上述各项活动之间并非完全是自上而下的,而是呈线性图示,因此,瀑布模型存在严重的缺陷:

  • 由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间间隔较长,也增加了一定的风险。
  • 在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能导致整个软件项目开发失败。
  • 在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。

2 演化模型

演化模型主要针对事先不能完整定义需求的软件开发,是在快速开发一个原型的基础上,根据用户在调用原型的过程中提出的反馈意见和建议,对原型进行改进,获得原型的新版本重复这一过程,直到演化成最终的软件产品。

原型方法

软件原型是所提出的新产品的部分实现,建立原型的主要目的是为了解决在产品开发的早期阶段的需求不确定的问题,其目的是明确并完善需求、探索设计选择方案、发展为最终的产品。原型模型比较适合需求不够明确的项目。

原型有很多种分类方法。从原型是否实现功能来分,软件原型可分为水平原型垂直原型两种。水平原型也称为行为原型,用来探索预期系统的一些特定行为,并达到细化需求的目的。水平原型通常只是功能的导航,但并未真实实现功能。水平原型主要用在界面上。垂直原型也称为结构化原型,实现了一部分功能。垂直原型主要用在复杂的算法实现上

从原型的最终结果来分,软件原型可分为抛弃型原型演化型原型。抛弃型原型也称为探索型原型,是指达到预期目的后,原型本身被抛弃。抛弃型原型主要用在解决需求不确定性、二义性、不完整性、含糊性等演化型原型为开发增量式产品提供基础,是螺旋模型的一部分,也是面向对象软件开发过程的一部分演化型原型主要用在必须易于升级和优化的项目,适用于Web项目

有些文献把原型分为实验型、探索型和演化型。探索型原型的目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

还有些文献也把原型分为抛弃式原型、演化式原型和递增式原型。

原型法适合于用户没有肯定其需求的明确内容的时候。它是先根据已给的和分析的需求,建立一个原始模型,这是一个可以修改的模型(在生命周期法中,需求分析成文档后一般不再多修改)。

在软件开发的各个阶段都把有关信息相互反馈,直至模型的修改,使模型渐趋完善。在这个过程中,用户的参与和决策加强了,最终的结果是更适合用户的要求。

这种原型技术又可分为三类:抛弃式、演化式和递增式。这种原型法成败的关键及效率的高低在于模型的建立及建模的速度。

3 螺旋模型

螺旋模型将瀑布模型和演化模型相结合,它综合了两者的优点,并增加了风险分析。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈都要经过制订计划、风险分析、实施工程、客户评价等活动,并开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终的系统,如图:(需求在项目刚开始的时候往往会比较模糊,而随着项目的进行会慢慢的明确下来,也就是需求有渐进明细的特点。)

在这里插入图片描述

例题3

在这里插入图片描述

例题3解析与答案

​ 答案:A

​ 解析:略

4 喷泉模型

喷泉模型对软件复用和生命周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。"喷泉"一词本身体现了迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发活动中,分析、设计和编码之间不存在明显的边界,如图:

在这里插入图片描述

5 V模型

在开发模型中,测试常常作为亡羊补牢的事后行为,但也有以测试为中心的开发模型,那就是V模型。V模型只得到软件业内比较模糊的认可。V模型宣称测试并不是一个事后弥补行为,而是一个同开发过程同样重要的过程,如图:

在这里插入图片描述

V模型是最具有代表意义的测试模型,它是瀑布模型的变种,它在瀑布模型的基础上加强了测试,反映了测试活动与分析和设计的关系。V模型中,左边下降的是开发过程阶段,右边上升部分是测试过程的各个阶段。V模型的软件测试策略既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。让测试工作贯穿于始终

V模型强调软件幵发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质M情况下缩短开发周期。V模型适合企业级的软件幵发,它更淸楚地揭示了软件开发过程的特性及其本质。

V模型的价值在于它非常明确地表明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系:

  • 单元测试的主要目的是针对编码过程中可能存在的各种错误。例如:用户输入验证过程中的边界值的错误。
  • 集成测试的主要目的是针对详细设计中可能存在的问题,尤其是检查各单元与其他程序部分之间的接口上可能存在的错误。
  • 系统测试主要针对概要设计,检查系统作为一个整体是否有效地得到运行。例如:在产品设置中是否达到了预期的高性能。
  • 验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要。

6 增量模型

增量模型融合了瀑布模型的基本成分(重复的应用)和原型实现的迭代特征。增量模型采用随着时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的"增量“。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都作为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断重复,直到产生最终的完善产品。

增量模型强调每一个增量均发布一个可操作的产品。如图:

在这里插入图片描述

增量模型像原型实现模型和其他演化方法一样,本质上是迭代的。但与原型实现不同的是增量模型强调每一个增量均发布一个可操作产品。早期的增量是最终产品的"可拆卸"版本,但它们确实提供了为用户服务的功能,并且提供了给用户评估的平台。增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求,还需要更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。

采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源,如果核心产品很受欢迎,则可以增加人力实现下一个增量;当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。此外,增量能够有计划地管理技术风险。增量模型的缺点是如果增量包之间存在相交的情况且不能很好地处理,就必须做全盘的系统分析,不能很好的进行模块划分。增量模型将功能细化、分别开发的方法适用于需求经常改变的软件开发过程。

7 **迭代与增量的概念

在这里插入图片描述

8 基于构件的模型(构件组装模型/基于构件的软件开发)

构件(Component,组件)是一个具有可重用价值的、功能相对独立的软件单元。基于构件的软件开发(ComponentBased Software Development,CBSD)模型是利用模块化方法,将整个系统模块化,并在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。

基于构件的开发模型融合了螺旋模型的许多特征,本质上是演化型的,开发过程是迭代的基于构件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立(其中构件库包括了构件获取和构件管理)、应用软件构建、测试和发布5个阶段组成。如图:

在这里插入图片描述

构件作为重要的软件技术和工具得到了极大的发展,这些新技术标准和工具有Microsoft的DCOM/COM,Sun的EJB,OMG的CORBA等。基于构件的开发活动从标识候选构件开始,通过搜索已有构件库,确认所需要的构件是否已经存在,如果已经存在,就从构件库中提取出来复用;如果不存在,就采用面向对象方法开发它。在提取出来的构件通过语法和语义检查后,将这些构件通过胶合代码组装到一起实现系统,这个过程是迭代的。

基于构件的开发方法使得软件开发不再一切从头开始,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程,其优点构件组装模型导致了软件的复用提高了软件开发的效率;构件可由一方定义其规格说明,被另一方实现,然后供给第三方使用;构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性,可实现分步提交软件产品。缺点是由于采用自定义的组装结构标准,缺乏通用的组装结构标准,引入具有较大的风险;可重用性和软件高效性不易协调,需要精干的、有经验的分析人员和开发人员,一般的开发人员插不上手,客户的满意度低;过分依赖于构件,构件库的质量影响着产品质量

9 RAD模型(快速应用开发模型)

快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短开发周期RAD模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件采用基于构件的建造方法赢得快速开发。如果需求理解得好且约束了项目的范围,利用这种模型可以很快地创建出功能完善的“信息系统“。其流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。瀑布模型和CBSD(Component-Based Software Development基于构建的软件开发模型)的综合开发模型,如图:

在这里插入图片描述

RAD模型各个活动期所要完成的任务如下:

  1. 业务建模:以什么信息驱动业务过程运作?要生成什么信息?谁生成它?信息流的去向是哪里?由谁处理?可以辅之以数据流图
  2. 数据建模:为支持业务过程的数据流,找数据对象集合,定义数据对象属性,与其他数据对象的关系构成数据模型,可辅之以E-R图
  3. 过程建模:使数据对象在信息流中完成各业务功能。创建过程以描述数据对象的增加、修改、删除、查找,即细化数据流图中的处理框。
  4. 应用程序生成:利用第四代语言(4GL)写出处理程序,重用已有构件或创建新的可重用构件,利用环境提供的工具自动生成并构造出整个应用系统。
  5. 测试与交付,由于大量重用,一般只做总体测试,但新创建的构件还是要测试的。

与瀑布模型相比,RAD模型不采用传统的第三代程序设计语言来创建软件,而是采用基于构件的开发方法,复用已有的程序结构(如果可能的话)或使用可复用构件,或创建可复用的构件(如果需要的话)。在所有情况下,均使用自动化工具辅助软件创造。很显然,加在一个RAD模型项目上的时间约束需要“一个可伸缩的范围”。如果一个业务能够被模块化使得其中每一个主要功能均可以在不到三个月的时间内完成,那么它就是RAD的一个候选者。每一个主要功能可由一个单独的RAD组来实现,最后再集成起来形成一个整体。

RAD模型通过大量使用可复用构件加快了开发速度,对信息系统的开发特别有效。但是像所有其他软件过程模型一样,RAD方法也有其缺陷:

  • 并非所有应用都适合RAD。RAD模型对模块化要求比较高,如果有哪一项功能不能被模块化,那么建造RAD所需要的构件就会有问题;如果高性能是一个指标,且该指标必须通过调整接口使其适应系统构件才能赢得,RAD方法也有可能不能奏效。
  • 开发者和客户必须在很短的时间完成一系列的需求分析,任何一方配合不当都会导致RAD项目失败。
  • RAD只能用于信息系统开发,不适合技术风险很高的情况。当一个新应用要采用很多新技术或当新软件要求与已有的计算机程序有较高的互操作性时,这种情况就会发生。

10 统一过程(RUP/UP)

在这里插入图片描述

用例驱动:整个开发的过程是由用例来驱动的。用例贯穿于整个开发流程之中。用例是需求层面的东西,其实也可以理解为功能需求。用例不能决定架构,因为架构往往取决于非功能需求。

统一软件开发过程是一种基于面向对象技术的软件开发过程,其特点是用例驱动,以架构为核心,增量与迭代

统一软件开发过程定义了四种开发阶段,它们按照过程顺序分别是起始阶段,细化阶段,构建阶段和交付阶段,其中在构建阶段主要产生的文档有设计模型。

初始阶段:项目蓝图文档(核心需求,关键特征,主要约束),用例模型,项目计划

细化阶段:完成架构设计,淘汰高风险元素

构造阶段:UML模型,测试用例

交付阶段:可运行的软件产品,用户手册,用户支持计划。

RUP的工作流程分为两部分:核心工作流程与核心支持工作流程。核心工作流程(在项目中的流程)包括业务需求建模、分析设计、实施、测试、部署;核心支持工作流程(在组织中的流程)包括环境、项目管理、配置与变更管理。

例题4

在这里插入图片描述

例题4解析与答案

​ 答案:B A

​ 解析:略

11 敏捷开发方法

在这里插入图片描述

例题5

在这里插入图片描述

例题5解析与答案

​ 答案:D

​ 解析:略

12 敏捷开发方法 - XP极限编程

XP是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式。与其他方法论相比,其最大的不同在于:

  1. 以代码驱动的规则,其重要的文档是源代码。
  2. 在更短的周期内,更早地提供具体、持续的反馈信息。
  3. 迭代地进行计划编制,首先在最开始迅速生成一个总体计划,然后在整个项目开发过程中不断地发展它。
  4. 依赖于自动测试程序来监控开发进度,并及早地捕获缺陷。
  5. 依赖于口头交流、测试和源程序进行沟通。
  6. 倡导持续的演化式的设计。
  7. 依赖于开发团队内部的紧密协作。
  8. 尽可能达到程序员短期利益和项目长期利益的平衡。

四大价值观:

  • 沟通,加强面对面沟通
  • 简单,不过度设计
  • 反馈,及时反馈
  • 勇气,接受变更的勇气

12条过程实践规则:

  • 简单设计
  • 测试先行,测试驱动
  • 代码重构
  • 持续集成
  • 现场客户
  • 发布版本小型化
  • 系统隐喻
  • 代码集体所有制,结队编程
  • 集体代码所有制
  • 规划策略
  • 规范代码
  • 每周工作40小时机制

5大原则:

  • 快速反馈
  • 简单性假设
  • 逐步修改
  • 提倡修改
  • 优质工作

13 敏捷开发方法 - 总览

极限编程(XP):一些对费用控制严格的公司中的使用,非常有效。

水晶方法:探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。

开放式源码程序开发人员在地域上分布很广【其他方法强调集中办公】

并列争求法(SCRUM)明确定义了的可重复的方法过程

功用驱动开发方法(FDD):编程开发人员分成两类:首席程序员和“类”程序员

ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习

动态系统开发方法(DSDM):倡导以业务为核心

例题6

在这里插入图片描述

例题6解析与答案

​ 答案:B D

​ 解析:略

14 敏捷开发方法 - SCRUM并列争求法

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一步一步改写Observer观察者模式

简单的概述: Observer模式是建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步自动改变。 Observer的结构: Subject相当于…

H5 拖动排序 美食排行榜

尝试写一下拖动元素进行排序,真是想到什么去写什么 😂,有的时候很多人老是跟我说,别人都封装好了,你为什么还要自己去实现一下,写的还没别人好。但我总感觉所有都用别人写好的,就放弃思考的机会…

linux的CPU使用率达到100%的快速定位方式

一.问题现象 Linux服务器(操作系统版本是centos7.9)上面部署了若干Java站点服务,突然收到运维的CPU异常g告警,到了影响业务的情况发生,经初步排查,未出现异常进程,排除挖矿病毒的原因。 二.排查思路 &am…

[Verilog]Verilog经典电路设计(一)

Verilog经典电路设计&#xff08;一&#xff09; 1.1 8位移位寄存器 module shifter (din , clk, clr, dout) ; input din, clk, clr; output [7:0] dout; reg [7:0] dout_data;always (posedge clk) begin if (!clr) dout_data < 8b0; //同步清 &#xff0c;高电平…

第二证券|美国巨头向欧盟宣战,暴跌25%,芯片大国告急

“暴利税”完全激怒美国动力巨子。 3万亿美国巨子直接将欧盟告上法庭&#xff0c;当地时间12月28日&#xff0c;埃克森美孚公司正式申述欧盟&#xff0c;要求其撤销对石油集团征收的一项新“暴利税”。该公司表明&#xff0c;欧盟方面征收“暴利税”的行为超出了法律权限。别的…

蓝牙学习八(配对与绑定)

1.简介 Paring&#xff08;配对&#xff09;和Bonding&#xff08;绑定&#xff09;是实现蓝牙射频通信安全的一种机制&#xff0c;有两点需要注意&#xff1a; Paring/bonding实现的是蓝牙链路层的安全&#xff0c;对应用层来说是完全透明的。也就是说&#xff0c;不管有没有…

GitHub入门指南(下)

三、新手必备的GitHub基本操作 1.配置SSH Key (1) 第一次使用时&#xff0c;要配置一下账户。 在 Git Bash 客户端&#xff0c;输入&#xff1a; git config --global user.name “这里输入你在GitHub的账户名” git config --global user.email “这里输入你在GitHub的注册邮…

基于51单片机的数字电压表(PCF8591)(Proteus仿真+程序)

编号&#xff1a;32 基于51单片机的数字电压表&#xff08;PCF8591&#xff09; 功能描述&#xff1a; 本设计由51单片机最小系统PCF8591模块四路模拟量输入模块一路DA输出液晶1602显示模块 1、主控制器是89C82单片机。 2、PCF8591模数转换器进行A/D转换&#xff0c;读取四路…

Java中常见的文件操作

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 操作文件 File类 属性 构造方法 常见方法 重要方法的操作演示 文件内容的读写 FileInputStream OutputStream 按照字符读入 按照字符写入…

『分分钟玩转VueRouter●中』少开一把王者荣耀掌握VueRouter的基本使用

文章目录一、编程式路由导航二、缓存路由组件三、两个新的声明周期钩子四、路由守卫五、路由器的两种工作模式本篇博客会介绍Vue中的VueRouter的基本使用&#xff0c;编程式路由导航增加了我们进行路由跳转的灵活性&#xff0c;缓存路由组件保障了我们使用路由时的便捷性&#…

【高阶数据结构】搜索二叉树 经典习题讲解

&#x1f308;欢迎来到数据结构专栏~~搜索二叉树 (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句…

【OpenFOAM】-olaFlow-算例6- waveFloatingObject

算例路径&#xff1a; olaFlow\tutorials\waveFloatingObject 算例描述&#xff1a; 波浪作用下的浮体的刚体运动&#xff0c;属于流固耦合&#xff08;FSI&#xff09;问题 学习目标&#xff1a; 动网格设置和使用&#xff0c;网格变形控制&#xff0c;浮体的物理参数设置&…

23种设计模式(二)——享元模式【对象性能】

文章目录意图什么时候使用享元享元模式的实现内部状态和外部状态享元模式的优缺点与其他模式的关系亦称&#xff1a; 缓存、Cache、Flyweight 意图 享元模式是一种结构型设计模式&#xff0c; 它摒弃了在每个对象中保存所有数据的方式&#xff0c; 通过共享多个对象所共有的相…

数图互通房产管理系统架构分析

数图互通高校房产管理系统V5.0 使用JAVA、Canvas、H5等技术开发的图形数据交互技术架构平台&#xff1b;本系统满足XX大学房屋管理系统需求&#xff0c;高校房产综合管理信息系统平台V5.0遵循高校房产“分级授权、分类管理、网络化、图形化、精细化、流程化”的管理理念&#x…

关于新冠的几点总结

关于新冠的几点总结一、前言:二、病程阶段1. 第一阶段 反复发热2. 第二极端 退烧虚弱3. 第三阶段 咳嗽嗜睡三、处置措施:1. 思想准备2. 药/物准备3. 退烧方式4. 保持体温5. 通则不痛&#xff0c;痛则不通6. 营养补充7. 恢复关键期写在最后一、前言: 所写内容&#xff0c;为个人…

磊科路由器后门蜜罐捕获的事件分布情况

重点物联网 漏洞利用情况本节我们选取了两个漏洞进行分析。UPnP 相关的漏洞我们将在 4.4.3 进行分析&#xff0c;除去 UPnP 相关漏 洞外&#xff0c;被利用最多的是 Eir D1000 路由器的一个漏洞 [44]&#xff08;CVE-2016-10372&#xff09;&#xff0c;我们将对其进行分析。 …

Apollo浅解2

目录 用户、角色、权限 三者间的关系 权限Permission 新增一个应用时 新增一个命名空间时 角色Role 新增一个应用时 新增一个命名空间时 第三方应用 用户、角色、权限 三者间的关系 apollo也采用经典的三层权限设计&#xff0c;用户关联角色&#xff0c;角色关联权限…

DOM基础

一、DOM的概念 文档对象模型(DOM,Document Object Module)是W3C组织推荐的处理可扩展标志语言的标准编程接口&#xff0c;它允许程序和脚本动态的访问和更新文档的内容、结构和样式。 HTML的DOM操作是将文档里所有的内容(包括标签、标签里的内容、标签属性甚至注释等)都当做一…

51单片机入门 第一篇:LED灯

文章目录前言一、LED原理图二、创建keil5工程三、代码的编写四、程序的烧录总结前言 本篇文章讲正式带大家开始学习51单片机&#xff0c;希望这些文章能够很好的帮助到大家学习51单片机。 一、LED原理图 一般的51单片机上都带有8个LED灯&#xff0c;这里8个LED灯分别接到了板…

JS逆向——工信部ICP、IP、域名信息备案管理平台

问题&#xff1a;&#xff08;1&#xff09;数据列表接口token参数验证&#xff08;2&#xff09;authKey参数加密生成 1、页面中请求接口&#xff0c;观察请求头可发现&#xff0c;校验参数token为加密的字符串&#xff0c;根据该字符串并不能直观得到所用的加密方式是什么。 …