软件工程第十二周

软件作坊、软件危机、软件过程控制、重型控制、敏捷、DevOps

这些术语概括了软件开发历史和实践中的几个重要概念和阶段。让我们逐一解析它们:

  1. 软件作坊(Software Craftsmanship):这是软件开发的早期模式,强调个人技能和经验。在这种模式下,程序员像工匠一样,单独或在小团队中工作,采用较少的正式结构和流程。它更多地侧重于个人能力而不是团队协作或过程控制

  2. 软件危机(Software Crisis):这个术语描述了20世纪60年代到70年代初期软件开发领域的一系列问题。随着计算机的普及和软件复杂性的增加,行业开始面临项目超时、超预算、质量低下等问题。这导致了对更严格的软件工程实践的需求。

  3. 软件过程控制(Software Process Control):为了应对软件危机,行业开始采用更系统化的方法来管理软件开发。这包括定义明确的开发阶段、文档标准和质量保证措施。这种方法旨在提高可预测性和质量控制。

  4. 重型控制(Heavyweight Processes):在对过程控制的早期响应中,出现了以严格规则和过程为特征的方法论,例如瀑布模型。这些方法被认为是“重型的”,因为它们往往是线性的,需要大量文档工作和阶段审查,缺乏灵活性。

  5. 敏捷(Agile):作为对重型控制方法的反应,敏捷开发在21世纪初期兴起,强调更快、更适应性强的开发过程。敏捷方法论如Scrum和极限编程(XP)鼓励迭代开发、团队协作、客户反馈和适应性规划

  6. DevOps:DevOps是敏捷的进一步发展,不仅关注软件开发,还包括运维方面。它旨在通过自动化、持续集成和持续交付(CI/CD)以及团队之间紧密合作来提高软件交付速度和质量。

这些概念反映了软件开发领域的演变,从早期的个体工匠式开发,到应对软件危机的过程控制,再到追求更快速、灵活和协作的敏捷和DevOps实践。每个阶段都是对前一个时期挑战的响应,展现了软件行业不断进化和适应新技术、新需求的能力


DevOps

DevOps是一种文化和实践的集合,旨在提高软件开发和IT运维的协作和效率。它的核心理念是打破传统软件开发(Dev)和运维(Ops)之间的壁垒,通过自动化和持续改进的方法来加快软件交付速度、提高服务质量,并确保更高效的工作流程。

下面是DevOps的几个关键要素:

  1. 持续集成和持续交付(CI/CD):自动化地将代码从开发阶段转移到生产环境,确保软件可以快速、频繁地发布,同时保持高质量。

  2. 自动化自动化过程减少了人为错误,提高了效率和一致性。这包括代码部署、测试、监控和基础设施管理

  3. 协作和沟通:鼓励开发和运维团队之间的紧密合作,以便更有效地解决问题和共享知识。

  4. 监控和反馈:持续监控软件和基础设施的性能,快速响应问题,并利用反馈进行改进。

  5. 微服务和容器化:将应用程序分解成小的、独立的服务,这些服务可以被快速、独立地开发和部署。容器技术如Docker和Kubernetes在这一领域非常流行。

  6. 敏捷方法论:敏捷开发方法促进了更快、更灵活的开发过程,这与DevOps的目标一致。

通过这些实践,DevOps有助于缩短系统开发周期,提高交付效率,减少部署失败的风险,确保更高的软件质量,同时提高客户满意度和业务竞争力。


云计算服务基本模型

云计算服务的三种主要模型:IaaS(基础设施即服务),SaaS(软件即服务),还有一种是PaaS(平台即服务)。我来简单地解释一下它们各自的含义和区别:

IaaS(Infrastructure as a Service,基础设施即服务)

  • 含义:IaaS提供虚拟化的硬件资源,如虚拟机、存储空间、网络等。它允许用户通过互联网访问和管理这些基础设施,而不需要购买和维护实体服务器。
  • 例子:Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform。
  • 用途:适用于需要高度自定义和控制硬件资源的场景,比如运行特定的操作系统或应用程序。

PaaS(Platform as a Service,平台即服务)

  • 含义:PaaS提供一个平台,让开发人员可以构建、测试、部署和管理应用程序。这个平台包括了软件和硬件的基础设施,还有开发工具、数据库管理系统等。
  • 例子:Heroku、Google App Engine、Microsoft Azure App Services。
  • 用途:适用于开发人员,因为它简化了编程环境的设置,让他们可以专注于软件开发而非基础设施管理。

SaaS(Software as a Service,软件即服务)

  • 含义:SaaS是一种通过互联网提供软件应用程序的模式。用户通常通过订阅方式使用软件,而无需安装和维护任何硬件或软件。
  • 例子:Google Workspace(前身为G Suite)、Microsoft Office 365、Salesforce。
  • 用途:适合大多数终端用户和企业,因为它提供即开即用的软件服务,无需担心软件的安装、更新和维护。

总结来说,IaaS提供的是云中的基础设施,PaaS提供的是开发应用程序的平台,而SaaS则直接提供可用的软件应用。这些服务模型都旨在简化用户的IT运营,减少对物理硬件和复杂软件的依赖,同时提高可扩展性和灵活性。


瀑布模型与敏捷模型

瀑布模型是计划驱动的,而敏捷模型则是价值驱动的。让我们来更详细地探讨这两种方法的特点和差异。

瀑布模型(计划驱动)

瀑布模型是一种传统的软件开发方法,其特点包括:

  • 线性和顺序:瀑布模型将软件开发过程分为几个顺序的阶段,如需求分析、设计、实现、测试、部署和维护。每个阶段在开始之前都要等待前一个阶段完成

  • 重视计划和文档:在瀑布模型中,项目计划和详细文档被视为非常重要。在项目开始前,需求和设计应该被完全定义并记录下来。

  • 难以应对变化:由于其线性和预定的性质,瀑布模型很难适应项目需求或目标的变化。

  • 风险和问题可能在后期才显现:由于测试和实施阶段在开发周期的后期,可能导致较晚发现问题和风险。

敏捷模型(价值驱动)

相比之下,敏捷模型采用了不同的方法:

  • 迭代和增量敏捷方法将项目分解为小的、可管理的部分,称为迭代。每个迭代都包括自己的需求分析、设计、实现和测试。

  • 响应变化:敏捷模型强调适应性和对变化的快速响应。需求和解决方案在整个项目过程中都在进化。

  • 重视客户合作:敏捷模型鼓励与客户的持续沟通和合作,以确保最终产品符合用户的实际需求。

  • 交付价值优先:敏捷方法重视交付具有商业价值的软件,而不是遵循预设的计划或完成大量文档工作。

总结

总的来说,瀑布模型适合那些需求稳定、明确,且不太可能在开发过程中发生变化的项目。而敏捷模型则更适合需求不断变化、需要快速反应市场变化的环境。敏捷模型通过其灵活性和对价值的关注,为快速发展和不断变化的项目提供了更有效的管理方式。


敏捷软件开发方法

Scrum 和 Scrum/XP 是敏捷软件开发方法的两种形式。它们都是以敏捷原则为基础,但有一些差异和特点。让我来解释一下它们各自的特点。

Scrum

Scrum 是一种流行的敏捷开发框架,其主要特点包括:

  • 角色:Scrum 团队通常包括产品负责人(Product Owner)Scrum Master开发团队
  • 冲刺:开发工作分为一系列固定长度的迭代,称为冲刺(Sprints),通常持续2-4周
  • 日常会议:每天进行短暂的站立会议,讨论进展、计划和挑战。
  • 冲刺规划会议:在每个冲刺开始时,团队确定在接下来的冲刺中要完成哪些工作。
  • 回顾和反思:在每个冲刺结束时进行回顾会议,评估成果并从中学习。

Scrum 侧重于管理和组织软件开发过程,但对于实际的开发实践并没有特别具体的指导。 


让我们更详细地了解 Scrum 框架中的两个关键组成部分:冲刺(Sprints)和日常站立会议。

冲刺(Sprints)

冲刺是 Scrum 框架中的核心元素,具体特点如下:

  1. 定义:冲刺是一个时间固定的工作周期,在这个周期内,Scrum 团队致力于完成一个可交付的产品增量。每个冲刺都有清晰的目标和计划的工作集。

  2. 持续时间:冲刺的持续时间通常是固定的,一般为2到4周。选择何种长度取决于项目的复杂性和团队的需求。一旦确定,冲刺的长度在整个项目期间通常保持不变,以维持一致性和节奏。

  3. 计划:每个冲刺开始之前,团队会进行冲刺规划会议,确定在接下来的冲刺中要完成的工作。这些工作通常从产品待办事项列表(Product Backlog)中挑选出来,并转换成冲刺待办事项列表(Sprint Backlog)。

  4. 目标:每个冲刺都有一个具体的目标,围绕这个目标选择待办事项,并在整个冲刺中保持焦点。

  5. 结束:冲刺结束时,团队应该交付一个“可完成”的产品增量,即满足定义好的质量标准和完成标准(Definition of Done)的工作。

冲刺的核心目标是完成当前最大价值的待办项目。这意味着:

  1. 聚焦最重要的任务:团队在每个冲刺开始时,从产品待办事项列表(Product Backlog)中选择最高优先级的任务。这些任务被认为是当前可以为项目带来最大价值的。

  2. 明确的目标:每个冲刺都设定一个明确的目标,通常是围绕着交付特定的产品特性或功能。这个目标帮助团队保持聚焦,并为冲刺期间的所有工作提供方向。

  3. 迭代交付:通过在每个冲刺结束时交付一个可工作的产品增量,Scrum 方法确保项目持续地提供价值,同时允许团队根据收到的反馈进行调整。

日常站立会议

日常站立会议是 Scrum 团队沟通和协调的关键机制,具体如下:

  1. 定义:这是一个每天举行的短会议,目的是同步团队成员之间的工作和挑战。

  2. 时间:这些会议通常很短,约15分钟左右,以保持效率。

  3. 站立:会议通常是站立进行的,目的是保持会议的节奏快速和聚焦。

  4. 内容:在会议中,每个团队成员通常会回答三个问题:

    • 昨天我完成了什么?
    • 今天我计划完成什么?
    • 我遇到了哪些障碍或挑战?
  5. 目的:这些会议的目的是为了快速识别问题和障碍,并促进团队内部的沟通。它们不是用来详细讨论解决方案的,而是为了提供状态更新和标识需要后续讨论的问题。

日常站立会议(也称为Daily Scrum)的本质是确保团队成员之间就当天的工作保持同步,它是一个日常迭代的过程。具体来说:

  1. 日常同步:这个会议让团队成员分享他们的进展、计划和面临的挑战。这样做可以确保所有人都对项目的当前状态有清晰的了解。

  2. 识别阻碍:通过日常沟通,团队可以快速识别并解决可能妨碍进度的问题,这有助于保持工作流的顺畅。

  3. 适应性调整:日常站立会议还提供了一个机会,让团队根据前一天的工作和遇到的挑战做出必要的调整,这增强了团队对变化的适应能力。

总结

冲刺和日常站立会议是 Scrum 方法中的两个核心实践。通过冲刺,团队可以保持聚焦和节奏,逐步交付产品。而日常站立会议则提供了一个机制,用于日常同步和识别团队面临的挑战,确保所有成员都保持在同一进度上。这两个实践共同支持了一个灵活、响应快速的开发环境。


Scrum/XP

Scrum/XP 结合了 Scrum 和极限编程(Extreme Programming,简称XP)的特点。它包括了 Scrum 的迭代计划和团队结构,以及 XP 的工程实践。主要特点包括:

  • Scrum 的框架:使用 Scrum 的角色、冲刺和会议等。
  • XP 的技术实践:包括持续集成、测试驱动开发(TDD)、代码重构和配对编程等。
  • 强调技术卓越Scrum/XP 更注重开发实践,确保代码质量和持续的技术改进。

Scrum 和 Scrum/XP 都是敏捷方法,但它们的侧重点略有不同。Scrum 更多关注项目管理和组织流程,而 Scrum/XP 结合了 Scrum 的流程管理和 XP 的技术实践,提供了一个更全面的框架,既关注项目管理,也关注技术实践的卓越。选择哪种方法取决于团队的特定需求、项目的复杂性和团队成员的技能水平。


燃尽图

燃尽图(Burn-down Chart)是敏捷项目管理中常用的一种工具,用来跟踪在一个冲刺(Sprint)或整个项目中剩余工作量的减少情况。它是一种可视化的表现方式,帮助团队了解他们完成任务的进度,以及是否按照计划进行。以下是关于燃尽图的一些关键点:

特点

  1. 图表类型:燃尽图通常是一种折线图,横轴表示时间(如冲刺的天数),纵轴表示剩余的工作量(如故事点、小时或其他度量单位)。

  2. 跟踪进度:图表中的线条显示了从冲刺开始到当前日期,预期和实际的工作量减少情况。

  3. 预期进度线:通常会有一条线表示理想的工作量减少趋势,它从最初的总工作量斜率到零。这条线代表了如果按照计划完成任务,工作量应该如何减少。

  4. 实际进度线:另一条线显示了实际的工作量减少情况。这条线的起点也是冲刺开始时的总工作量,但其随时间的变化反映了实际的完成情况。

用途

  1. 监控进度:燃尽图使团队能够直观地看到项目进度与计划之间的差异,帮助他们判断是否落后或超前于计划。

  2. 预测完成时间:通过分析燃尽图,团队可以估计剩余工作的完成时间,并做出相应的计划调整。

  3. 促进沟通:燃尽图作为一种视觉工具,有助于团队成员、利益相关者和管理层之间的沟通,让每个人都能理解项目的当前状态。

重要性

  • 燃尽图是敏捷开发中一个重要的信息辐射器,它提供了一种快速评估项目状态的方式。通过观察燃尽图,团队可以及时发现问题,如进度滞后或工作量估计不准确,并采取措施进行调整。

  • 然而,燃尽图只显示了剩余工作量的量化度量,它并不提供关于工作质量或项目范围变化的信息。因此,它最好与其他工具和指标一起使用,以获得全面的项目视图。


看板Kanban

看板(Kanban)是一种流行的敏捷方法,用于可视化工作流程和促进工作效率。它起源于丰田的生产系统,后来被适用于软件开发和其他知识工作领域。看板方法的核心在于通过可视化的方式管理任务和工作流程,以提高透明度和团队的生产效率。

看板的核心原则

  1. 可视化工作流程

    • 在看板中,工作流程被分解为几个阶段,每个阶段都有其对应的区域或列。这些阶段可能包括待处理(To Do)、进行中(In Progress)、待审核(Review)和完成(Done)等。
  2. 限制进行中的工作量

    • 看板鼓励限制在任何给定时间进行的任务数量。这称为“进行中工作(WIP)限制”。通过限制进行中的工作量,团队可以更专注于当前任务,减少上下文切换的开销,并更快地完成工作。
  3. 流动性工作

    • 看板方法强调任务应该持续、平稳地流动通过不同的阶段,而不是成批次地移动。
  4. 基于需求拉动工作

    • 在看板系统中,新的任务是基于当前工作流程的容量和需求“拉动”的,而不是被推入。这意味着只有在有足够容量处理新任务时,才会开始新的任务。

看板的优点

  1. 提高透明度

    • 通过将所有任务可视化,团队成员可以清晰地看到整个工作流程的状态,从而更容易识别瓶颈和阻碍。
  2. 灵活性

    • 看板方法允许团队根据当前的工作负载和优先级灵活调整任务。
  3. 增强团队协作

    • 由于整个团队都能看到每个任务的状态,因此看板促进了更好的团队合作和沟通。
  4. 持续改进

    • 看板鼓励团队持续审视和改进他们的工作流程,以提高效率和效果。

总结

看板是一种简单但强大的敏捷工具,它通过可视化的方式帮助团队有效管理工作流程。它的灵活性和对持续改进的强调使其成为许多敏捷团队首选的方法。


其他术语

Epic(史诗)

  • 定义:Epic 是一个较大的工作单元,通常涵盖了一个广泛的目标或需求。它是需求层级中的最高层次,通常跨越多个项目或产品的功能区
  • 特点:Epics 是较为抽象和宽泛的,通常需要较长时间才能完成。它们需要进一步细分为更小的部分才能实施。

Feature(功能)

  • 定义:Feature 是 Epic 的子集,代表特定的产品功能或一组功能
  • 特点:Feature 是对 Epic 进一步的细化,但仍然保持一定的广度。它涵盖的是相对较大的功能区域,但比 Epic 更具体。

Story(故事)

  • 定义:Story(通常称为用户故事)是进一步细化的需求,它描述了从用户的角度看特定功能或改进的需求。
  • 特点:Story 是相对较小、具体的功能需求,通常可以在一个迭代或冲刺中完成。用户故事帮助团队聚焦于用户价值。

Task(任务)

  • 定义:Task 是实现 Story 的具体工作项。
  • 特点:任务是需求层级中最具体的部分,代表了实际的工作指令。一个用户故事可以被分解为多个任务。

从 Epic 到 Task 的粒度递增

  • 从 Epic 到 Feature 到 Story 到 Task,每个步骤都是将大的需求细分为更小、更具体的部分。
  • 这种分解帮助团队更好地理解复杂的需求,并将其转化为具体的工作计划。
  • 随着从 Epic 到 Task 的过渡,需求的粒度逐渐增加,具体性和可操作性也随之提高。

通过这种层次化和逐步细化的方法,敏捷团队能够有效地规划和跟踪复杂的软件开发项目,同时确保工作始终聚焦于提供用户价值。

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

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

相关文章

【面试题】for...in 和 for...of 的区别

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:web前端面试题库 JavaScript 是一门强大而灵活的编程语言,提供了多种迭代对象的方式。两个常见的迭代方式是 for...in 和…

Boost获取当前时间并格式化为字符串

格式化为字符串 时间转字符串有两种方法 #include <boost/date_time/posix_time/posix_time.hpp> #include <iostream>std::string getCurrentTime() {boost::posix_time::ptime currentTime boost::posix_time::microsec_clock::local_time(); std::string …

centos 安装k8s教程(一键安装k8s)

第一步 准备几台机器 第二步 K8s Manager 服务器中添加docker支持 安装教程请查看这个博客 docker 安装详细教程 点我 第三步安装 KuboardSpray 教程在这里 第四步 下载k8s资源包 第五步 安装k8s 点击安装后 显示如下&#xff1a;等待完成

arduino入门一:点亮第一个led

void setup() { pinMode(12, OUTPUT);//12引脚设置为输出模式 } void loop() { digitalWrite(12, HIGH);//设置12引脚为高电平 delay(1000);//延迟1000毫秒&#xff08;1秒&#xff09; digitalWrite(12, LOW);//设置12引脚为低电平 delay(1000); }

电脑桌面便签工具选择哪一款?

随着互联网时代的不断发展&#xff0c;电脑成为日常工作及办公中必不可少的工具&#xff0c;通过电脑这款工具&#xff0c;大家可以更好的进行工作、学习等方面的交流&#xff1b;电脑桌面便签由于可以为大家整合一些工作及学习方面的备忘事项及笔记等&#xff0c;因而深受大家…

获取验证码在倒计时未完成前清除验证码

场景&#xff1a; 在点击获取验证码后&#xff0c;验证码开始倒计时&#xff0c;在点击登录后&#xff0c;出现弹窗不跳转页面。因此在出现弹窗后&#xff0c;即使倒计时没有结束&#xff0c;也要将倒计时的文字变为重新获取验证码。 template代码 <div class"form-b…

【Vue】Node.js的下载安装与配置

目录 一.下载安装 官网&#xff1a; 二.环境变量的配置 三.设置全局路径和缓存路径 四.配置淘宝镜像 五.查看配置 六.使用npm安装cnpm ​ 一.下载安装 官网&#xff1a; https://nodejs.org/en/download 下载完之后&#xff0c;安装的时候一直点next即可&#xff0c…

FlinkCDC实现主数据与各业务系统数据的一致性(瀚高、TIDB)

文章末尾附有flinkcdc对应瀚高数据库flink-cdc-connector代码下载地址 1、业务需求 目前项目有主数据系统和N个业务系统,为保障“一数一源”,各业务系统表涉及到主数据系统的字段都需用主数据系统表中的字段进行实时覆盖,这里以某个业务系统的一张表举例说明:业务系统表Ta…

BQL是什么如何使用?

BQL是什么如何使用&#xff1f; BQL来源于Business Query Language &#xff0c;是一种业务查询语言。是北京硕迪制信科技有限公司根据以往统计分析案例研发的一种语言。特点是通过可视化界面对业务语言进行查询、聚合、排序等操作&#xff0c;通过BQL引擎转换为数据库可执行的…

CSGO游戏搬砖市场下跌分析,是跑还是入?

CSGO市场下跌分析&#xff0c;是跑还是入&#xff1f; 以下所有都是阿阳本人最近几年观察市场和踩坑的一点经验&#xff0c;由于篇幅不长所以肯定会很浅薄&#xff0c;大伙下嘴轻点 。 首先现在真的是CSGO市场最低点吗&#xff1f;后续还会跌吗&#xff1f;我们究竟是该继续观…

Course1-Week1:机器学习简介

Course1-Week1&#xff1a;机器学习简介 文章目录 Course1-Week1&#xff1a;机器学习简介1. 课程简介1.1 课程大纲1.2 Optional Lab的使用 (Jupyter Notebooks)1.3 欢迎参加《机器学习》课程 2. 机器学习简介2.1 机器学习定义2.2 有监督学习2.3 无监督学习 3. 线性回归模型3.1…

golang学习笔记——使用映射

文章目录 使用映射声明和初始化映射添加项访问项删除项映射中的循环 使用映射 Go 中的映射是一个哈希表&#xff0c;是键值对的集合。 映射中所有的键都必须具有相同的类型&#xff0c;它们的值也是如此。 不过&#xff0c;可对键和值使用不同的类型。 例如&#xff0c;键可以…

Apach Ozone部署

前言 最近由于工作需要&#xff0c;要部署一套ozone。我自己对hadoop这套体系不是很熟悉&#xff0c;所以过程磕磕碰碰&#xff0c;好不容易勉强搭起来&#xff0c;所以记录一下部署方式 准备 三台主机&#xff0c;主机均已安装jdk、hdfs&#xff0c;相关的安装配置就不另外写…

python二叉树链树_树的链式存储结构

二叉链树是一种树状数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。每个节点包含一个数据元素和指向其左右子节点的指针。二叉链树可以是空树&#xff0c;也可以是具有以下特点的非空树&#xff1a; 1. 每个节点最多有两个子节点。…

netstat

netstat 命令用于显示网络状态 参数说明&#xff1a; -a或--all 显示所有连线中的Socket&#xff0c;默认不显示LISTEN相关 -n 拒绝显示别名&#xff0c;能显示数字的全部转化成数字 -e或--extend 显示网络扩展信息(User&#xff0c;Inode) -p或--programs 显示正在使用So…

计算机组成原理 the one day

1.计算机系统硬件软件 cpu运算器控制器 1个字&#xff08;word&#xff09;16bit&#xff1b; difference 1个字节&#xff08;Byte&#xff09;bit&#xff1b; 2.cpu主频&#xff08;时钟频率&#xff09;1/cpu时钟周期 CPI执行一条指令所需的时间周期数。 执行一条程序的…

JavaEE 多线程01

为什么引入多线程? 首先进程已经能很好的完成多任务这个情景下的并发编程了,那为什么又引入多线程呢? 这是因为在一些情景下,我么需要大量的创建和销毁进程来完成一些任务,此时多进程对系统的开销就会很大了. 假设有这样一个场景,服务器同时接收到很多个服务请求,这个时候服务…

Python基础教程: sorted 函数

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 sorted 可以对所有可迭代的对象进行排序操作&#xff0c; sorted 方法返回的是一个新的 list&#xff0c;而不是在原来的基础上进行的操作。 从新排序列表。 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程…

taro h5 ios解决input不能自动获取焦点拉起键盘

描述&#xff1a;页面中有个按钮&#xff0c;点击跳转到第二个页面&#xff08;有input&#xff09;&#xff0c;能直接获取焦点拉起键盘输入 安卓&#xff1a; 直接用focus() ios&#xff1a; focus无效&#xff0c;必须手动拉起 原理&#xff1a; 点击按钮的时候拉起一…

一元三次方程求解——浮点数二分

题目描述 思路 根与根之差的绝对值>1。可以得出距离为1的区间最多只有一个根若存在2个数x1和x2&#xff0c;且x1 < x2&#xff0c;f(x1) x f(x2) < 0&#xff0c;则(x1, x2)之间一定有一个根我们可以遍历每一个区间为1的范围&#xff0c;先判断左端点是否是根&#x…