『 测试 』测试基础

news2025/5/12 13:53:02

文章目录

    • 1. 调试与测试的区别
    • 2. 开发过程中的需求
    • 3. 开发模型
      • 3.1 软件的生命周期
      • 3.2 瀑布模型
        • 3.2.1 瀑布模型的特点/缺点
      • 3.3 螺旋模型
        • 3.3.1 螺旋模型的特点/缺点
      • 3.4 增量模型与迭代模型
      • 3.5 敏捷模型
        • 3.5.1 Scrum模型
        • 3.5.2 敏捷模型中的测试
    • 4 测试模型
      • 4.1 V模型
      • 4.2 W模型(双V模型)


1. 调试与测试的区别

调试与测试两词只有一字之差, 但两者目的并不相同, 调试的目的在于发现并解决问题, 而测试的目的在于发现问题;

  • 权限

    通常在gitee等代码仓库中都具有权限管理, 而一般测试人员只有读权限, 没有写权限, 因此测试人员只能读, 不能写;

  • 参与角色

    测试与调试的人员角色也不同, 通常大部分情况, 调试由开发人员进行, 而测试通常由测试人员进行;

测试人员的主要工作职责是为了保障产品质量, 但产品质量并不只由测试人员保障, 产品质量由整个项目组(产品经理, 前/后端开发, 测试, 交互, 设计…)共同保障;

  • 阶段

    测试与调试的阶段也不同, 调试通常只在开发阶段进行, 而测试需要贯穿项目(软件)的整个生命周期;

测试人员通常是产品质量最后的把关者;


2. 开发过程中的需求

开发过程中一般分为两种需求, 分别为用户需求与软件需求;

  • 用户需求

    一般用户需求指甲方或是终端用户使用产品时必须要完成的任务, 通常用户需求较为简单;

    如:

    • 用户可以随时查看商品库存量
  • 软件需求

    软件需求通常是用户需求转化而来, 通常是技术化的描述;

    如:

    • 系统需为管理员提供实时库存量查询接口, 响应时间<=1s;

总而言之用户需求是用户(甲方/客户)以自然语言提出, 反映业务目标和使用场景的, 而软件需求是由开发团队通过分析用户需求转化而来, 更加表现为技术化的描述;

用户需求与软件需求的表现形式不同, 通常用户需求以业务视角描述, 可能存在模糊性和主观性, 通常情况下, 用户需求不会第一时间就被解决, 而是需要对用户需求进行评估, 分析, 细化等过程转化为对应的软件需求才能着手被解决;

软件需求通常使用结构化文档, 如例图, User Story, SRS文档等进行描述;

用户需求软件需求
口头描述, 邮件/会议记录, 业务流程图 功能需求, 非功能需求, 数据模型

其次用户需求更关注高层次需求, 如"做什么", 不涉及实现方式;

而软件需求明确"怎么做", 需具备技术实现细节;

用户需求典型问题软件需求典型问题
- 表述模糊(如"更方便")
- 隐性需求未明示
- 不同用户需求冲突
- 技术要求不完整(如缺少性能指标)
- 需求不可测试(如"代码要优雅")
- 技术可行性判断失误

  • 简要软件需求文档示例(实现用户注册功能)

    1.1.1.1 注册账号
    1.1.1.1.1 功能概述
    1.1.1.1.1.1 匿名用户通过邮箱注册账户,需激活后登录。
    1.1.1.1.2 输入规则

    字段名称必填性长度/位数格式要求附加规则
    姓名必填6~15字符汉字/字母/空格-
    邮箱必填-标准邮箱格式格式错误时提示
    密码必填6~15字符字母+数字组合两次输入不一致时提示
    验证码必填6位数字纯数字邮箱发送,有效期5分钟
    1.1.1.1.3 处理规则

    1.1.1.1.3.1 用户同意协议后填写信息,提交时校验字段合法性:
    1.1.1.1.3.1.1 校验失败:高亮错误字段并提示原因。
    1.1.1.1.3.1.2 校验成功:发送含24小时有效激活链接的邮件。

    1.1.1.1.4 异常规则
    1.1.1.1.4.1 未收到激活邮件:登录界面可重新发送,每邮件限24小时有效。

    1.1.1.1.5 数据规则
    1.1.1.1.5.1 存储表user_account,含user_id(自增主键)、email(唯一)、is_activated(默认false)。
    1.1.1.1.5.2 密码SHA-256加盐存储,激活链接含一次性Token。

    1.1.1.1.6 后置条件
    1.1.1.1.6.1 未激活账户禁止登录及操作系统功能。


需要明确一点的是并不是所有的用户需求都是合理的, 因此用户需求才需要经过评估, 分析等过程转化为软件需求;

用户需求不能直接作为开发和测试的依据, 针对用户需求, 产品经历需要进行需求分析(技术可行性, 市场可行性, 成本投入和收益占比等)后才可转变为软件需求;


3. 开发模型

3.1 软件的生命周期

实际上软件的生命周期就是软件的开发模型;

软件生命周期是指软件从规划, 需求分析, 设计, 开发, 测试, 部署, 维护到最终退役的完整过程, 是软件开发的全流程框架, 覆盖软件"从生到死"的各个阶段;

常见的几种开发模型有: 瀑布模型, 敏捷模型, 螺旋模型…

  • 瀑布模型生命周期(严格线性, 不可逆)

    需求分析 -> 设计 -> 编码 -> 测试 -> 维护

  • 敏捷模型生命周期(持续迭代)

    需求 -> 开发 -> 测试 -> 交付 -> 反馈 -> 新需求

  • 螺旋模型生命周期(强调风险管理)

    计划 -> 风险分析 -> 开发 -> 评估 -> 下一轮循环


假设存在一个用户需求为"邮箱注册功能", 其生命周期大概为如下:

  1. 计划

    1. 目标:明确功能范围和用户场景。
      用户通过邮箱注册账号(必填项)。
      需验证邮箱有效性(发送验证链接或验证码)。
      防止重复注册或恶意注册(如频率限制、CAPTCHA)。
  2. 需求分析

    1. 功能定义:
      邮箱注册为核心流程,需覆盖验证、防重复、安全防护。
      非功能需求:邮件送达率 > 95%,响应时间 < 2秒。
  3. 设计

    1. 前端设计:
      注册页面布局(邮箱输入框、验证码/验证链接触发按钮)。
      错误提示(邮箱格式错误、重复注册、验证码超时)。
    2. 后端设计:
      邮箱格式校验(正则表达式)。
      验证邮件/短信服务集成(如SMTP、第三方API)。
      数据库设计(存储邮箱、密码哈希、验证状态)。
  4. 编码

    1. 前端开发:
      实现表单提交逻辑,绑定邮箱验证接口。
      处理验证成功/失败的交互反馈。
    2. 后端开发:
      实现邮箱验证码生成、存储(Redis缓存)。
      邮件发送服务调用(异步队列)。
      用户信息加密存储(如bcrypt哈希密码)。
  5. 测试

    1. 功能测试:
      正常流程:输入有效邮箱 → 接收验证邮件 → 激活账号。
      异常流程:无效邮箱格式、重复注册、验证码过期/错误。
    2. 安全测试:
      SQL注入、XSS攻击防御。
      验证码防爆破(限流策略)。
    3. 部署验证:
      灰度发布:先小范围开放注册功能,监控异常。
      配置生产环境:邮件服务参数、数据库连接、日志监控。
  6. 运行维护

    1. 修复性维护
    2. 完善性维护
    3. 预防性维护
  7. 退役

    1. 替代方案:
      逐步迁移用户至新注册方式(如手机号登录)。
    2. 数据清理:
      标记废弃邮箱账号,归档或删除历史数据。

不同企业对不同的软件的生命周期的框架不同, 如可能针对软件特定的特色功能在不同的阶段将会有不同的差异;


3.2 瀑布模型

瀑布模型是最早提出的软件生命周期模型, 其特点是:

  • 每个流程只执行一次
  • 线性的开发流程

3.2.1 瀑布模型的特点/缺点

瀑布模型最大的缺点在于一个可以运行的产品很迟才能被看到;

假设一个非常简单的用户需求被提出, 那么在上述过程, 包括"问题定义, 问题可行性…"等过程的阶段时间都很短, 上线过程也会比较快;

但若是出现一个非常复杂的用户需求被提出时, 对应的各个过程的时间开销将被延长, 因此可能当前较为流行的功能或者板块在长时间未上线后在对应功能板块不再流行时上线, 对应的资源开销将会贬值(没有收益/收益太低);

同时瀑布模型还有一个缺点就是, 由于所有流程只执行一次并且是线性执行, 因此如果在开发过程当中某个流程出现了问题后将需要向前追溯, 如测试人员在测试阶段发现问题需要反馈给编码对应人员, 开发人员认为没有问题将会继续向前追溯(设计), 以此类推, 这意味追溯甚至可能一直到源头, 即重新从问题定义, 即瀑布模型的源头, 否则如果出现问题并未解决的问题将暴露给用户, 将会降低用户的使用体验;

优点/特点缺点
- 强调开发的阶段性
- 线性结构, 每个阶段只执行一次
- 是其他模型的基础框架
1. 测试后置:
- 各阶段的遗留风险推迟到测试阶段才被发现, 导致大面积返工, 失去及早修复的机会
- 必须留有足够的时间给测试, 否则导致测试不充分, 将缺陷直接暴露给用户(产品质量差)
2. 周期太长, 产品可能在需求/功能过时时才被看到和使用

瀑布模型的适用场景一般是需求固定的小型项目, 一般不适用于规模庞大, 复杂度高, 风险大的项目;


3.3 螺旋模型

螺旋开发模型的适用场景通常是一些规模庞大, 复杂度高, 风险大的项目;

螺旋模型是基于瀑布模型进行修改的模型, 将螺旋模型进行展开后得到的是一个类似于瀑布模型的"迭代式瀑布模型";

螺旋模型与瀑布模型最大的差别就在于螺旋模型在各阶段都引入了风险分析;

同时螺旋模型还引入了原型, 其中原型在螺旋模型中属于风险缓解工具, 主要用于验证关键技术的可行性与确认需求理解一致性, 原型通常不进入生产代码, 其生命周期仅限于当前迭代, 若原型验证失败, 触发的则是风险对应策略;

每个阶段均以 计划 -> 风险分析 -> 原型开发 -> 用户评估 的顺序进行;


3.3.1 螺旋模型的特点/缺点

螺旋模型引入了风险分析和原型, 其目的是减少各阶段遗留的风险问题, 避免把问题留到后面的阶段;

螺旋模型同样具有缺点, 对一个项目而言, 使用了螺旋模型进行开发, 那么意味着项目组需要存在对应的风险分析人员来进行风险分析;

各阶段是否遗留问题取决于风险分析人员, 该项与风险分析人员的技术能力直接挂钩;

优点/特点缺点
- 强调严格的全过程分析管理
- 强调各开发阶段的质量
- 增加风险分析和原型
- 项目中可能存在的风险性与风险管理人员的技能水平有直接关系
- 需求人员, 资金, 时间的增加和投入可能会导致项目成本提高

3.4 增量模型与迭代模型

  • 增量模型

    当存在一个需求时, 增量模型旨在将大需求拆分成若干个小需求, 将每个小需求独立开发上线;

    增量模型的每个增量都是一个完整的功能子集, 按照顺序开发并逐步集中到系统中;

  • 迭代模型

    相比于增量模型而言, 迭代模型同样会将一个需求细化为几个小需求, 随后对小需求进行基本实现, 随后进行上线, 通过由抽象逐步细化实施将抽象转化为具象, 不断优化;

    迭代模型中的每一次迭代都可以是一个可运行的版本, 逐步优化功能和设计;

通常情况下迭代模型和增量模型会在一个项目的开发中配合使用;

迭代模型和增量模型的适用场景通常为大型项目, 且需求不明确的场景;


3.5 敏捷模型

敏捷模型又被成为增量开发迭代模型;

目前的开发人员在使用迭代瀑布模型来进行软件开发时将面临各种问题, 主要的困难包括在项目开发期间处理来自客户的变更请求以及合并这些变更所需的高成本时间, 而敏捷模型主要来解决这种问题;

虽然上述的螺旋模型中可以有效的避免问题的遗留, 但在开发过程中, 一款产品的功能是在不断变化的, 螺旋模型只能避免在计划过程中的问题遗留, 但无法避免用户/甲方的需求变更;

相比长期计划而言, 敏捷模型更强调灵活性和适应性, 相对其他模型而言, 敏捷模型是较为弹性的;

敏捷模型的主要目的是促进项目的快速完成;

通常情况下在敏捷模型中, 需求将被分节为许多可以增量开发的小部分, 敏捷模型采用迭代开发, 每次的迭代都旨在小而易于管理;

一次为客户计划, 开发和部署一个迭代, 通常不制定长期计划, 同时没有固定的风险分析阶段;

  • 在敏捷模型中有一个非常重要的《敏捷宣言》, 其内容为:

    • “个体与交互重于过程和工具”

      即团队成员的沟通与合作比讲话的流程和工具更为重要, 强调高效的沟通;

    • “可用的软件重于完备的文档”

      即优先交付实际可运行的软件, 而非追求完美的文档, 强调轻文档;

    • “客户协作重于合同谈判”

      即与客户持续合作, 而非通过合同条款固定需求, 主动及时了解当下的需求;

    • “响应变化重于遵循计划”

      即灵活适应需求变化, 而非死守原始计划, 能主动迎接变化;

    敏捷宣言强调人本, 实用, 协作, 灵活;

    目标是快速交付价值并适应变化;

    轻文档, 轻流程, 重目标, 重产出;


3.5.1 Scrum模型

Scrum模型是敏捷模型中的一种, 其中Scrum中, 主要由三类角色和五个重要会议组成;

  • 三类角色

    三类角色分别为产品经理(Product Owner), 项目经理(Scrum Master)以及研发团队(Team)组成;

    • 产品经理(Product Owner)

      产品经理通常负责整理User Story, 定义其商业价值, 对其进行排序, 制定发布计划并对产品负责;

      即收集需求, 产出软件需求文档;

    • 项目经理(Scrum Master)

      项目经理负责召开各种会议, 协调项目, 为研发团队服务;

    • 研发团队(Team)

      研发团队则由不同技能的组员组成, 通过紧密协同, 完成每一次迭代的目标并交付产品;

与瀑布模型不同, Scrum模型将会把产品开发分节为若干个小迭代(Sprint), 其中每个小迭代周期为一周到四周不等, 但通常不会超过四周, 参与的团队成员通常是5-9人, 每期迭代要完成的User Story是固定的, 每次迭代完成后都会进行向上交付(重目标, 重交付), 而通常瀑布模型需要集所有人的能力进行开发;

在 Scrum 模型的流程中, 主要围绕五个会议(事件), 分别为发布计划会议, 迭代计划会议, 每日例会, 演示会议, 回顾会议;

  • 发布计划会议(Release Planning Meeting)

    通常情况下, 在发布会议中, 产品经理需要负责讲解User Story, 对其进行估算和排序, 发布计划会议产出就是制定出这一期迭代要完成的Story列表, 即Sprint Backlog;

    • 目的

      确定产品发布的长期目标和范围, 规划多个Sprint(迭代)的总体方向;

    • 参与者

      产品经理, 项目经理, 开发团队和关键利益相关者;

    • 关键内容

      • 梳理产品代办列表(Product Backlog)并确定优先级
      • 估算整体时间框架和资源需求
      • 制定发布路线图
  • 迭代计划会议(Sprint Planning Meeting)

    该会议中项目团队将要对每一个Story进行任务分解, 分解的标准是完成该Story的所有任务, 每个任务都有明确的负责人, 并完成工时的初估计;

    • 目的

      为单个Sprint制定详细任务目标并明确交付内容;

    • 参与者

      产品经理, 项目经理, 开发团队

    • 关键内容

      • 从产品代办列表中选取本Sprint要完成的高优先级需求
      • 将需求拆解为具体的开发任务 (Sprint Backlog)
      • 估算任务工作量并分配职责
  • 每日例会(Sprint Planning Meeting)

    每天项目经理将会召集站立会议, 团队成员回答昨天做了什么, 今天计划做什么, 有什么问题;

    • 目的

      同步团队进度, 快速识别障碍, 确保Sprint目标顺利推进;

    • 参与者

      开发团队, 项目经理(主持)

    • 关键内容(每人回答三个问题)

      • 昨天完成了什么

        明确知道每个人的进度;

      • 今天计划做什么

        今日的目标和计划;

      • 遇到了什么阻碍

        及时解决问题能够保证产品在规定的迭代周期内正常交付;

  • 演示会议(Sprint Review Meeting)

    迭代结束后, 召开演示会议, 相关人员受邀参加, 团队负责向大家展示本次迭代取得的成果, 期间大家的反馈记录下来, 由产品经理整理, 形成新的Story;

    • 目的

      向客户或利益相关者展示Sprint成果, 收集反馈;

    • 参与者

      产品负责人, 开发团队, Scrum Master, 客户/用户代表;

    • 关键内容

      • 演示可运行的增量功能
      • 讨论反馈并调整后续需求优先级
  • 回顾会议(Sprint Retrospective Meeting)

    回顾上一次迭代流程中的问题, 不断优化;

    • 目的

      总结Sprint的优缺点, 持续改进团队协作和流程;

    • 参与者

      开发团队, 产品经理, 项目经理

    • 关键内容

      • 讨论"哪些做得好", “哪些需要改进”, “下一步行动”
      • 制定具体的改进措施




会议 核心作用 关键产出
发布计划会议 明确长期目标与路线图 发布计划, 优先级排序
迭代计划会议 制定短期任务清单 Sprint目标, Sprint Backlog
每日例会(站会) 同步进展与解决问题 每日任务清单, 障碍解决方案
演示会议 交付成果并获取反馈 可运行增量, 需求调整方向
回顾会议 优化团队协作与流程 改进措施清单(如流程调整)

3.5.2 敏捷模型中的测试

敏捷模型中的测试主要要求轻文档和快速迭代;

  • 快速迭代

    在敏捷模型中的测试需要进行快速迭代, 如在测试过程中的测试用例的迭代速度要快, 需要及时发生变化, 且测试用例要尽可能完整的去写一确保全面, 确保不会将问题暴露给用户;

  • 轻文档

    测试人员在测试过程中通常需要撰写多种文档, 包括但不限于测试用例, 测试计划文档, 测试报告等;

    在敏捷开发模型过程中, 测试人员不应该使用传统的Excel编写测试用例的方法, 更多的是需要使用类似于思维导图, 探索性测试(强调自由度, 设计和执行同时进行, 根据测试结果不断调整测试计划), 自动化测试等;

在敏捷开发模型过程中, 测试人员应该多主动和开发人员了解需求, 讨论设计, 研究Bug出现的原因;


4 测试模型

下文中出现的两个模型, 即V模型和W模型本质上也是开发模型, 被称作测试模型的原因在于下列两个模型更加注重测试, 因此被称作测试模型;


4.1 V模型

在V模型中, 明确标注了测试过程中存在不同类型的测试;

其中每一阶段的测试都需要参考之前的设计或者需求, 如单元测试需要参考详细设计, 集成测试需要参考概要设计, 系统测试需要参考需求分析与系统, 验收测试需要参考用户需求;

  • 通常在V模型中不同的测试阶段由不同的人员进行

    • 单元测试

      一般由开发人员进行测试, 如一个类或是一个函数;

    • 集成测试

      由开发人员与测试工程师完成, 其中开发人员主导, 测试人员辅助;

    • 系统测试

      由测试工程师完成;

    • 验收测试

      验收测试通常由客户或业务代表(最终用户, 产品经理)进行;

同时, V模型同样存在缺点, 最大的缺点是V模型仅仅把测试作为在编码之后的一个阶段, 未在需求阶段就介入测试;

这个缺点与瀑布模型有异曲同工之处, 主要为当在测试过程中某处出现问题需要回溯返工, 以造成过大的时间开销;


4.2 W模型(双V模型)

W模型本质上是在V模型上进行了优化;

W模型将测试贯穿于软件的生命周期;

W模型也被称为双V测试, 其中本质是在该测试模型中存在了两个V, 分别为开发与测试两个过程;

其中开发V模型并不单单指编码阶段, 而是为产品开发流程而实施的各个阶段;

在W模型中, 开发与测试两个过程基本上属于并行阶段;

但同样的W模型也具有缺点, 其主要的缺点为如下:

  • 需求, 设计, 编码等活动被视为串行的;
  • 测试和开发活动页保持着一种线性的前后关系, 上一阶段完全结束下一阶段才能开始进行工作;
  • 重流程, 无法支持敏捷开发模式, 对当前软件开发复杂多变的需求面临着困惑;

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

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

相关文章

robomaster机甲大师--电调电机

文章目录 C620电调ID设置速率 电调发送报文电调接收报文cubemx程序初始化发送接收 C620电调 ID设置 速率 1Mbps 电调发送报文 发送的数据为控制电机的输出电流&#xff0c;需要将can数据帧的ID设置为0x200 电调接收报文 机械角度&#xff1a;电机的0到360度映射到0到几千转…

少儿编程机构用的教务系统

在编程教育行业快速发展的今天&#xff0c;培训机构面临着学员管理复杂、课程体系专业性强、教学效果难以量化等独特挑战。爱耕云教务系统针对编程培训机构的特殊需求&#xff0c;提供了一套全方位的数字化解决方案&#xff0c;帮助机构实现高效运营和教学质量提升。 为什么编…

基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块

以下是针对ESP8266开发板的红外遥控解码系统开发教程&#xff0c;基于VSCodePlatformIO环境编写 一、概述 本实验通过ESP8266开发板实现&#xff1a; 红外遥控信号解码自定义按键功能映射串口监控输出基础设备控制&#xff08;LED&#xff09; 硬件组成&#xff1a; NodeMC…

Linux中的防火墙

什么是防火墙 windows防火墙的设置 linux防火墙设置命令 什么是防火墙&#xff1f; 防火墙是一种网络安全设备&#xff0c;它能够&#xff1a; 监控和过滤进出网络的流量 阻止不安全的连接 保护计算机和网络免受未授权访问 创建一个安全边界 简单来说&#xff0c;防火…

补补表面粗糙度的相关知识(一)

表面粗糙度&#xff0c;或简称粗糙度&#xff0c;是指表面不光滑的特性。这个在机械加工行业内可以说是绝绝的必备知识之一&#xff0c;但往往也是最容易被忽略的&#xff0c;因为往往天天接触的反而不怎么关心&#xff0c;或者没有真正的去认真学习掌握。对于像我一样&#xf…

力扣刷题Day 46:搜索二维矩阵 II(240)

1.题目描述 2.思路 方法1&#xff1a;分别找到搜索矩阵的右、下边界&#xff0c;然后从[0][0]位置开始遍历这部分矩阵搜索目标值。 方法2&#xff1a;学习Krahets佬的思路&#xff0c;从搜索矩阵的左下角开始遍历&#xff0c;matrix[i][j] > target时消去第i行&#xff0c…

Kubernetes 集群部署应用

部署 Nginx 应用 命令行的方式 1. 创建 deployment 控制器的 pod # --imagenginx&#xff1a;这个会从 docker.io 中拉取&#xff0c;这个网站拉不下来 # kubectl create deployment mynginx --imagenginx# 使用国内镜像源拉取 kubectl create deployment mynginx --imaged…

Unity3D仿星露谷物语开发42之粒子系统

1、目标 使用例子系统&#xff0c;实现割草后草掉落的特效。 通过PoolManager获取特效预制体&#xff0c;通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…

python 上海新闻爬虫, 东方网 + 澎湃新闻

1. 起因&#xff0c; 目的: 继续做新闻爬虫。我之前写过。此文先记录2个新闻来源。后面打算进行过滤&#xff0c;比如只选出某一个类型新闻。 2. 先看效果 过滤出某种类型的新闻&#xff0c;然后生成 html 页面&#xff0c;而且&#xff0c;自动打开这个页面。 比如科技犯罪…

[Java实战]Spring Boot 整合 Freemarker (十一)

[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎&#xff0c;凭借其简洁语法、卓越性能和灵活扩展性&#xff0c;在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力&#xff0c;开发者能快速构建动态页面、…

LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?

文章目录 摘要描述题解答案题解代码分析编码方法解码方法 示例测试及结果时间复杂度空间复杂度总结 摘要 在分布式系统中&#xff0c;数据的序列化与反序列化是常见的需求&#xff0c;尤其是在网络传输、数据存储等场景中。LeetCode 第 271 题“字符串的编码与解码”要求我们设…

C#游戏开发中的注意事项

目录 一、性能优化:提升游戏运行效率 1. 避免不必要的循环和迭代 2. 减少字符串拼接 3. 利用Unity的生命周期函数 4. 使用对象池(Object Pooling) 二、内存管理:避免内存泄漏和资源浪费 1. 及时释放非托管资源 2. 避免空引用异常 3. 合理使用引用类型和值类型 4. …

Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)

下载地址&#xff1a; 前端&#xff1a;https://download.csdn.net/download/2401_83418369/90811402 后端&#xff1a;https://download.csdn.net/download/2401_83418369/90811405 一、前端vue部分的搭建 这里直接看另一期刊的搭建Vue前端工程部分 前端vue后端ssm项目_v…

Spyglass:在batch/shell模式下运行目标的顶层是什么?

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 除了可以在图形用户界面(GUI)中运行目标外&#xff0c;使用Batch模式或Shell模式也可以运行目标&#xff0c;如下面的命令所示。 % spyglass -project test.prj -ba…

微服务架构中如何保证服务间通讯的安全

在微服务架构中,保证服务间通信的安全至关重要。服务间的通信通常是通过HTTP、gRPC、消息队列等方式实现的,而这些通信链路可能面临多种安全风险。为了应对这些风险,可以采取多种措施来保证通信安全。 常见的服务间通信风险 1.数据泄露:在服务间通信过程中,敏感数据可能会…

工具篇-Cherry Studio之MCP使用

一、添加MCP 打开Cherry Studio,如果没有可以到官网下载:Cherry Studio 官方网站 - 全能的AI助手 按上面步骤打开同步服务器 1、先去注册ModelScope,申请令牌 2、再打开MCP广场,找到高德MCP 选择工具测试,这里有个高德的api key需要申请 打开如下地址高德开放平…

Python 运维脚本

1、备份文件 import os import shutil# 定义配置文件目录和备份目录的路径 config_dir "/root/python/to/config/files/" backup_dir "/root/python/to/backup/"# 遍历配置文件目录中的所有文件 for filename in os.listdir(config_dir):# 如果文件名以…

大模型项目:普通蓝牙音响接入DeepSeek,解锁语音交互新玩法

本文附带视频讲解 【代码宇宙019】技术方案&#xff1a;蓝牙音响接入DeepSeek&#xff0c;解锁语音交互新玩法_哔哩哔哩_bilibili 目录 效果演示 核心逻辑 技术实现 大模型对话&#xff08;技术&#xff1a; LangChain4j 接入 DeepSeek&#xff09; 语音识别&#xff08;…

单链表设计与实现

01. 单链表简介 在数据结构中&#xff0c;单链表的实现可以分为 带头结点 和 不带头结点 两种方式&#xff0c;这里我们讨论第二种方式。 头结点&#xff1a;链表第一个节点不存实际数据&#xff0c;仅作为辅助节点指向首元节点&#xff08;第一个数据节点&#xff09;。头指…

springboot生成二维码到海报模板上

springboot生成二维码到海报模板上 QRCodeController package com.ruoyi.web.controller.app;import com.google.zxing.WriterException; import com.ruoyi.app.domain.Opportunity; import com.ruoyi.app.tool.QRCodeGenerator; import com.ruoyi.common.core.page.TableDat…