当前位置: 首页 > news >正文

简单且循序渐进地查找软件中Bug的实用方法

“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中,也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此,发现并解决这些问题至关重要。 在本文中,我们将探讨如何以简单且循序渐进的方式定位软件中的故障。

查找 Bug:最佳方法、常见类型及工具

本文将介绍查找软件 Bug 的最佳方法,了解到常见 Bug 的类型,以及一些可以简化繁琐 Bug 查找任务的工具。

关于软件 Bug 的一些惊人事实

● 最近的 iPhone Bug 导致用户无法输入字母"I"。

● 某些 bug 的修复代价高昂,如千年虫 Bug,修复此类 Bug 可能会耗费巨资。

● 一个软件 Bug 曾导致人员死亡,如1991 年由于爱国者导弹的 Bug ,28 人因此丧生。

● 含有 Bug 的代码会对开发者及其团队的形象造成负面影响,进而影响公司的营收。

● 含有 Bug 的代码难以使用,会降低生产力。代码质量越高,工作效率就越高。最终,团队将为 Bug 付出高昂的代价。

● 2017 年,各种软件 Bug 预计给全球经济造成了 1.7 万亿美元的损失。

因此,发现并解决每个软件中的每一个小 Bug 至关重要。毫不夸张地说,软件中的 Bug 可能导致业务停摆。如果用户无法获得优质产品,他们将会转向其他替代品。接下来,让我们详细探讨如何查找 Bug。

找出软件中最多 Bug 的最佳方法

1. 在真实浏览器和设备上进行快速攻击

在没有明确需求的情况下,创建测试场景可能非常困难。在这种情况下,最有效的方法是通过输入异常值来攻击系统,以触发软件故障。这种方法有助于发现潜在的问题。

你可以通过以下方式测试软件:留空必填字段、扰乱用户界面流程、在字符输入框中输入数字、超出字符数限制、使用非法字符,以及输入过多错误的密码。

这种攻击方法的逻辑是在有限时间内快速分析软件质量。它帮助测试人员通过发现的 Bug 数量快速评估软件的质量。即使只发现一个 Bug,也可能表明主要功能存在缺陷。相反,如果这种方法没有发现 Bug,通常表明“理想路径”功能正常。

请记住,这些快速测试必须在真实用户环境中进行。这意味着在不可预测的情况下测试软件时,必须在与最终用户相同的环境中进行。

总结而言,快速测试必须在实际设备和环境中进行。即使是仿真器或模拟器,也可能无法检测到只有在真实设备上才会出现的 Bug。

2. 关注测试环境

测试人员通常需要一定时间来准备测试场景、制定时间表并设置测试流程。在此过程中,评估测试基础设施(也称为测试环境)至关重要。因为测试环境中的缺陷会导致生成测试结果时出现不必要且完全可以避免的延迟。

此外,这还可能导致出现并非由软件本身引起的 Bug。最令人头痛的是那些无法通过代码修复的环境配置相关 Bug。在这种情况下,Bug 的实际来源难以立即发现,从而导致测试延迟。

设想一个场景:测试人员发现并报告了一个 Bug,但开发人员在检查代码时却未发现任何问题。因此,当开发人员沮丧地在搜索“如何在代码中找到 Bug”时,测试无法继续进行,因为这个“Bug”实际上无法修复。

在环境配置出现问题的情况下,同一个测试每次可能会产生不同的结果。这使得 Bug 难以重现,对开发人员来说无疑是一场噩梦。

3. 自行研究

在开始测试之前,请全面了解整个应用程序或模块。运行测试前,准备充足的测试数据;若测试涉及数据库应用程序,则数据集应包括测试用例条件和数据库记录。

在代码中插入标记,以帮助开发者更容易地定位代码块或错误。这可以通过添加打印语句、注释或其他调试工具实现。使用断点,在特定位置暂停代码,检查断点前的所有操作是否正常。

无论遇到什么问题,可能以前都有人遇到过。因此,通过研究和在 Google 上搜索,往往可以找到解决方法。

4. 帕累托原则

根据帕累托原则,20% 的努力产生 80% 的结果,而剩余的 80% 的努力仅带来 20% 的结果。意大利经济学家维尔弗雷多·帕累托提出了这一原则,因此得名帕累托原则。

在软件测试中,帕累托原则意味着 80% 的 Bug 存在于 20% 的程序模块中。虽然这个比例不必严格遵循,但关键在于大多数 Bug 集中在代码的特定部分,且大多数重大 Bug 也存在于这些部分。因此,应特别关注这些代码。

5. 设定软件质量目标

测试人员应明确需要维护的软件标准,这将帮助他们识别和查找各种 Bug。

如果测试人员想知道如何在软件中找到 Bug,最好的方法是了解用户对软件在用户体验、新功能及性能等方面的期望。

明确目标有助于质量保证人员创建相应的测试场景和测试用例。如果了解用户对软件主要功能的需求和期望,那么测试人员可以优先测试那些对大多数用户重要的功能。

因此,建议与质量保证经理沟通并获取软件质量目标文档。自行研究相关内容也有助于发现重要的 Bug。

11 种常见的软件 Bug 类型

作为开发人员或软件测试人员,如果你清楚了解软件可能遇到的各种类型的 Bug,你就能更快地解决问题。

1. 功能 bug

每个程序都应该在功能上正确运行。当软件未能执行预期功能时,就会出现功能 Bug。这类问题范围广泛,从简单的问题(如不可点击的按钮)到无法使用软件的主要功能。功能测试通常用于检测功能 Bug。

例如,“保存”按钮的功能是保存文档中的更改,如果该按钮无法点击,则这是一个功能 Bug。通过功能测试,软件测试人员可以发现导致功能问题的具体 Bug。

2. 语法 Bug

这种类型的 Bug 出现在程序的源代码中。语法错误是最常见的 Bug 之一,它会阻止应用程序正确编译。这类问题通常是由于代码缺少或包含错误字符所引起的,可能是拼写错误的命令或缺少的括号。通常,开发团队在编译程序时会意识到这些 Bug。

3. 逻辑 bug

逻辑 Bug 是指那些导致软件产生错误输出、崩溃或失败的代码问题。逻辑缺陷,如无限循环,是软件流程中的 Bug。无限循环由于编写不当或编码错误而发生,导致程序故障,使特定序列不断重复,直到程序崩溃或出现外部中断(如关闭程序或断电)。 一些逻辑 Bug 的例子包括:

  • 错误地给变量赋值
  • 将两个数字相除而不是将它们相加,从而产生意外结果
4. 性能 Bug

性能缺陷是与软件速度、稳定性、响应时间或资源消耗有关的 Bug。这类问题通常在软件开发过程中被发现,且是最常见的软件 Bug 之一。这类 Bug 包括软件运行速度低于要求或响应时间超过项目规定的可接受范围。

5. 计算 Bug

当软件返回不正确的值时,无论是最终用户看到的值还是传递给其他程序的值,都会出现计算 Bug。这可能由多种原因引起,包括:

  • 软件使用错误的算法来计算值
  • 计算中存在数据类型不匹配
  • 开发人员错误地编写了计算代码或传递值给另一个程序
6. 安全 Bug

安全漏洞是软件开发人员或工程团队可能遇到的最严重缺陷之一。 与其他软件 Bug 不同,安全漏洞会使项目面临重大风险。安全漏洞使软件、公司和客户面临严重的潜在攻击。这些攻击可能给企业造成高昂的代价,无论企业规模大小。 一些最常见的安全 Bug 包括加密错误、SQL 注入漏洞、XSS 漏洞、缓冲区溢出、逻辑错误和身份验证不充分等。

7. 单元级 Bug

单元级软件 Bug 是另一种常见的 Bug。程序编码完成后,开发人员通常会进行单元测试,即测试代码的小部分以确保其正常运行。 在此过程中,团队会发现单元级 Bug,如计算错误和基本逻辑错误。由于涉及的代码量较小,这些单元级 Bug 容易被隔离和修复。

8. 系统级集成 Bug

当两个不同子系统的交互出现错误时,就会发生系统级集成 Bug。由于涉及多个软件系统,且通常由不同的开发人员编写,这类错误通常更难修复。 系统级集成 Bug 主要发生在不同开发人员编写的代码单元无法相互交互,或组件之间存在不一致时。 这类错误难以跟踪和修复,需要开发人员排查大量代码。内存溢出问题和应用程序 UI 与数据库之间的不当接口都是系统级集成 Bug 的典型例子。

9. 可用性错误

可用性缺陷是指阻止用户充分利用软件的错误,这种错误使得软件使用变得困难或不便。 复杂的内容布局或过于繁琐的注册功能都是可用性缺陷的例子。在可用性测试阶段,软件工程师和用户体验设计师必须根据《网络内容可访问性指南》和其他可用性要求检查软件,以发现这些类型的 Bug。

10. 控制流错误

软件控制流描述了接下来会发生的事情以及发生的条件。 控制流中的错误会阻止软件正确地进行下一任务,并可能减慢整个公司的工作流程。例如,当用户在问卷或流程结束时,点击“保存并下一步”按钮后未被重定向到新页面时,就会发生控制流错误。

错误、Bug 和失误随处可见,如果不及时发现和纠正,可能会造成重大损失,尤其是在 IT 行业中。一个逗号的缺失就可能影响整个 IT 产品,因此我们必须专注于检测和修复 Bug。 从一开始,所有 IT 公司都有专职测试人员,他们长时间与新软件的每个组件合作,逐一发现和消除错误。因此,在选择 IT 合作伙伴时应牢记这一点。

11. 兼容性错误

当软件或应用程序与硬件或操作系统不兼容时,就会出现兼容性错误。查找兼容性错误并不容易,因为在初始测试期间可能无法检测到它们。 因此,开发人员应进行兼容性测试,以确保软件与常见的硬件和操作系统兼容。

软件 Bug 的一些例子

按严重程度划分的软件缺陷
  • 关键缺陷:通常会阻碍整个系统或模块的功能,导致测试无法继续,直到此类缺陷被修复。例如,在尝试登录后应用程序返回服务器错误消息。
  • 高严重性缺陷:影响应用程序的关键功能,使应用程序的行为与需求规定的显著不同。例如,电子邮件服务提供商不允许在收件人字段中添加多个电子邮件地址。
  • 中严重性缺陷:是指次要功能未按需求规定的那样运行。例如,应用程序的“条款和条件”部分中的一个链接打不开。
  • 低严重性缺陷:主要与应用程序的用户界面相关,例如按钮大小或颜色不统一。
按优先级划分的软件缺陷
  • 紧急缺陷:必须在报告后 24 小时内修复。此类别包括关键严重性的缺陷。然而,低严重性缺陷也可以划分为高优先级。例如,应用程序主页上公司名称的拼写错误虽然对软件没有技术影响,但对业务有重大影响,因此属于紧急缺陷。
  • 高优先级缺陷:高优先级缺陷是必须在未来版本中修复以满足退出条件的错误。例如,高优先级缺陷指的是尽管用户输入了有效的登录数据,但应用程序无法将用户从登录页面跳转到主页。
  • 中优先级缺陷:是可以在后续版本中或即将发布的版本之后修复的错误。例如,应用程序返回预期结果,但在特定浏览器中格式不正确,这就是中优先级缺陷。
  • 低优先级缺陷:是不需要修复即可满足退出标准,但必须在应用程序发布给公众之前修复的错误。此类别通常包括拼写错误、对齐问题、元素大小和其他外观上的 UI 问题。

当你在软件中发现 Bug 时,首先做什么?

1. 开始测试其他相关的场景

Bug 总是成群结队出现的。当你在一个区域发现一个 Bug 时,通常会发现相关问题。因此,一旦发现问题,就继续查找,因为你可能会发现更多问题。

2. 记录应用程序的当前状态

这可以帮助你确定是否是外部问题导致了 Bug。你不仅需要知道如何重现问题,还需要了解当前测试环境的状态。

3. 检查是否已被报告

有些 Bug 已经被发现并报告。重复已经完成的工作是没有意义的。

4. 尽快报告

如果发现该 Bug 尚未报告(参见上一步),你必须尽快提交报告。Bug 需要被识别和确认。

给它们五分钟的曝光时间。当问题还在你脑海中时,编写一份好的 Bug 报告会更容易。你还希望缩短反馈循环的时间(从代码创建到验证完成)。这有助于提升团队的生产力。

5. 享受这一刻

我见过测试人员在发现 Bug 时变得愤怒。他们因为系统出现问题而感到沮丧。 遇到 Bug 时确实令人恼火。随着截止日期的临近和团队承受的压力增大,查找软件中的 Bug 可能是最让人不愿意做的事情。虽然一切正常运行时,你会轻松很多,但这就是你的职责。你的职责是比客户先发现 Bug。你的职责是既要扮演英雄也要扮演反派。当你下次发现 Bug 时,要感谢自己,因为你在帮助他人。

查找软件 Bug 的步骤

测试软件 Bug 的推荐方法如下:

  • 在开始测试之前,彻底了解整个应用程序或模块的功能。
  • 开始测试之前,创建具体的测试用例,特别强调包括应用程序主要风险的功能测试用例。
  • 在运行测试之前准备足够的测试数据。如果你在测试与数据库相关的应用程序,该数据集应包括测试用例条件和数据库记录。
  • 在不同的测试环境中运行测试。
  • 尝试确定预期结果,然后将你的结果与预期模式进行比较。
  • 当你认为已经完成大多数测试条件,并感到有些疲惫时,进行一些“猴子测试”(一种随机、无规律的软件测试方法,以发现潜在问题)。
  • 使用之前的测试数据模式分析当前的测试集。
  • 执行一些在其他应用程序中发现 Bug 的标准测试用例。例如,如果你在测试一个输入文本框,尝试插入一些 HTML 标签作为输入,看看显示页面上会发生什么。
  • 最后也是最好的技巧是,像测试如何破坏应用程序一样,努力查找 Bug。

Bug 查找工具

使用 Bug 识别工具可能是发现软件 Bug 的最简单方法。这些工具使跟踪、报告和分配软件开发中的 Bug 变得更简单,可以简化测试。有许多好用的工具,如 SpiraTeam、Userback 和 ClickUp,这些工具可以极大地简化软件测试。

实际设备在 Bug 查找中的作用

要在行业中发布高度完善、高效、且用户友好的软件,必须在真实用户条件下彻底测试软件。 这有助于检测和解决最终用户在实际使用中可能遇到的大部分 Bug。全面测试需要一个强大的设备实验室,使测试人员能够在各种设备、浏览器和操作系统组合中测试他们的网络和移动应用程序。 请记住,建立一个测试实验室需要大量的资金投入和持续的维护,并不适用于所有企业。

结论

随着技术的进步和竞争的加剧,软件开发变得越来越困难。你必须定期提供更新,添加新功能等。

所有这些都会导致软件中出现不同类型的 Bug。在有限的时间、资源和预算下,很难找出每一个 Bug。因此,采用某种框架来尽可能多地解决 Bug,并全面测试对你的业务最关键的应用程序至关重要。

相关文章:

简单且循序渐进地查找软件中Bug的实用方法

“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中,也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此&…...

基于springboot+vue+uniapp的高校宿舍信息管理系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...

(完整音频)DockerHub、OpenAI、GitCode,脱钩时代,我们该如何自处?

本期主播 朱峰:「津津乐道播客网络」创始人,产品及技术专家。(微博:zhufengme)高春辉:「科技乱炖」主播。“中国互联网站长第一人”,科技、互联网领域的连续创业者。(微博&#xff1…...

macos 10.15系统下载包,macOS Catalina for mac

macOS Catalina 让你喜欢的种种 Mac 体验都更进一步。你可以领略音乐、播客这两款全新 Mac app 的表演;在 Mac 上畅享各款自己心爱的 iPad app;拿起 iPad 和 Apple Pencil,拓展工作空间,释放创意灵感;再打开那些平时常…...

uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 的区别

ChatGPT uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 是 Uni-app 中两个不同的 API,它们的作用和用法有所不同: uni.showShareMenu({}) 作用:用于显示当前页面的分享菜单,通常显示在页面的右上角(类似于微…...

Spring Boot logback 日志文件配置

引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency>logback-spring.xml 配置 <?xml version"1.0" encoding"UTF-8&quo…...

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别

240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT对话情绪识别 近期确实太忙&#xff0c;此处仅作简单记录&#xff1a; 模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c…...

图像处理调试软件推荐

对于图像处理的调试&#xff0c;使用具有图形用户界面&#xff08;GUI&#xff09;且支持实时调整和预览的图像处理软件&#xff0c;可以大大提高工作效率。以下是几款常用且功能强大的图像处理调试软件推荐&#xff1a; ImageJ/FijiMATLABOpenCV with GUI LibrariesNI Vision …...

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…...

最短路算法——差分约束

差分约束 (1) 求不等式组的可行解 源点&#xff1a;从源点出发&#xff0c;一定可以走到所有的边求可行解步骤&#xff1a; 先将每个不等式 x i ≤ x j c x_i \le x_j c xi​≤xj​c,转化成一条从 s j s_j sj​走到 s i s_i si​&#xff0c;长度为 c k c_k ck​ 的一条边找…...

Log4j日志框架讲解(全面,详细)

目录 Log4j概述 log4j的架构&#xff08;组成&#xff09; Loggers Appenders Layouts 快速入门 依赖 java代码 日志的级别 log4j.properties 自定义Logger 总结&#xff1a; Log4j概述 Log4j是Apache下的一款开源的日志框架&#xff0c;通过在项目中使用 Log4J&…...

LeetCode 35, 242, 994

目录 35. 搜索插入位置题目链接标签思路代码 242. 有效的字母异位词题目链接标签思路代码 994. 腐烂的橘子题目链接标签思路代码 35. 搜索插入位置 题目链接 35. 搜索插入位置 标签 数组 二分查找 思路 本题与 704. 二分查找 十分相似&#xff0c;只不过本题在找不到 tar…...

ctfshow-web入门-文件包含(web87)巧用 php://filter 流绕过死亡函数的三种方法

目录 方法1&#xff1a;php://filter 流的 base64-decode 方法 方法2&#xff1a;通过 rot13 编码实现绕过 方法3&#xff1a;通过 strip_tags 函数去除 XML 标签 除了替换&#xff0c;新增 file_put_contents 函数&#xff0c;将会往 $file 里写入 <?php die(大佬别秀了…...

adb shell ps -T打印出来参数的含义,以及D,T,Z代表的状态含义是什么?

在Android系统中&#xff0c;使用adb shell ps命令可以查看当前系统中运行的进程信息。当你添加-T选项时&#xff08;注意&#xff0c;标准的ps命令在Android的adb shell中可能不直接支持-T选项&#xff0c;这通常与Linux中的ps命令略有不同&#xff09;&#xff0c;你可能是想…...

leetcode77组合——经典回溯算法

本文主要讲解组合的要点与细节&#xff0c;以及回溯算法的解题步骤&#xff0c;按照步骤思考更方便理解 c和java代码如下&#xff0c;末尾 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 具体要点&#xff1a; …...

springcloud-alibba之FeignClient

代码地址&#xff1a;springcloud系列: springcloud 组件分析拆解 1.FeignClient的集成 springboot版本&#xff1a;3.1.5 springcloud组件版本&#xff1a;2022.0.4 nacos客户端的版本&#xff1a;2.3.2 1.引pom 这里引入了nacos和feginclient的版本 <dependency>…...

三、docker配置阿里云镜像仓库并配置docker代理

一、配置阿里云镜像仓库 1. 登录阿里云官网&#xff0c;并登录 https://www.aliyun.com/ 2. 点击产品 - 容器 - 容器与镜像服务ACR - 管理控制台 - 镜像工具 - 镜像加速器 二、配置docker代理 #1. 创建docker相关的systemd文件 mkdir -p /etc/systemd/system/docker.servic…...

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十一)-git(3)

Git是目前最流行的版本控制系统之一&#xff0c;在现代软件开发中扮演着重要的角色。它能够有效地跟踪文件变化、协作开发&#xff0c;并存储项目的历史记录。本文的目的是向读者介绍Git的基本概念和工作原理&#xff0c;帮助初学者快速上手使用Git&#xff0c;并帮助有经验的开…...

全面解析 TypeScript 泛型的二三事

2024年了相信大家都已经在日常开发的过程中使用上了 TypeScript 了。TypeScript 增强了代码可靠性和可维护性&#xff0c;确保减少运行时错误并提高开发人员的工作效率。 TypeScript 通过类型声明 使得 javascript 拥有了强类型校验。而泛型的是类型声明中最重要的一环&#x…...

单/多线程--协程--异步爬虫

免责声明:本文仅做技术交流与学习... 目录 了解进程和线程 单个线程(主线程)在执行 多线程 线程池 协程(爬虫多用) 假异步:(同步) 真异步: 爬虫代码模版 异步-爬虫 同步效果--19秒 异步效果--7秒 了解进程和线程 ​ # --------------------> # ------> # …...

android pdf框架-11,查看图片

前10篇文章,9章关于pdf的,pdf解析后,里面也是有各种图片,于是利用pdf的view来展示图片,似乎也是个不错的想法. android手机中的图片查看功能,有的可以展示,有的不能.比如华为,荣耀对大体积的png是可以显示的,小米是不显示,只有缩略图. 一张png50m大,比如清明上河图,原图是tif…...

【CSS】深入浅出弹性布局

CSS的弹性布局&#xff08;Flexbox&#xff09;是一种用于在容器中沿着一维方向&#xff08;水平或垂直&#xff09;来布局、对齐和分配容器内项目空间的有效方式。它旨在提供一个更加有效的方式来布局、对齐和分配容器中项目的空间&#xff0c;即使它们的大小未知或是动态变化…...

医院挂号系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;患者管理&#xff0c;医生管理&#xff0c;专家信息管理&#xff0c;科室管理&#xff0c;预约信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;专家信息&#xff0…...

广州外贸建站模板

Yamal外贸独立站wordpress主题 绿色的亚马尔Yamal外贸独立站wordpress模板&#xff0c;适用于外贸公司建独立站的wordpress主题。 https://www.jianzhanpress.com/?p7066 赛斯科Sesko-W外贸建站WP主题 适合机械设备生产厂家出海做外贸官网的wordpress主题&#xff0c;红橙色…...

KDP数据分析实战:从0到1完成数据实时采集处理到可视化

智领云自主研发的开源轻量级Kubernetes数据平台&#xff0c;即Kubernetes Data Platform (简称KDP)&#xff0c;能够为用户提供在Kubernetes上的一站式云原生数据集成与开发平台。在最新的v1.1.0版本中&#xff0c;用户可借助 KDP 平台上开箱即用的 Airflow、AirByte、Flink、K…...

【人工智能】-- 智能机器人

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;机器人介绍 &#x1f348;机器人硬件 &#x1f34d;机械结构 &#x1f34d;传感器 &#x1f34d;控…...

Android广播机制

简介 某个网络的IP范围是192.168.0.XXX&#xff0c;子网 掩码是255.255.255.0&#xff0c;那么这个网络的广播地址就是192.168.0.255。广播数据包会被发送到同一 网络上的所有端口&#xff0c;这样在该网络中的每台主机都将会收到这条广播。为了便于进行系统级别的消息通知&…...

SQL FOREIGN KEY

SQL FOREIGN KEY 简介 SQL(Structured Query Language)是用于管理关系数据库管理系统(RDBMS)的标准编程语言。在SQL中,FOREIGN KEY是一个重要的概念,用于建立和维护数据库中不同表之间的关系。本文将详细介绍SQL FOREIGN KEY的概念、用途、以及如何在SQL中实现和使用FO…...

绘唐3最新版本哪里下载

绘唐3最新版本哪里下载 绘唐最新版本下载地址 推文视频创作设计是一种通过视频和文字的形式来进行推广的方式&#xff0c;可以通过一些专业的工具来进行制作。 以下是一些常用的小说推文视频创作设计工具&#xff1a; 视频剪辑软件&#xff1a;如Adobe Premiere Pro、Fina…...

[ES6] 箭头函数

JavaScript 是一种广泛使用的编程语言&#xff0c;随着其发展和演变&#xff0c;引入了很多新的特性来提高代码的可读性和开发效率。其中一个重要的特性就是 ES6&#xff08;ECMAScript 2015&#xff09;中引入的箭头函数&#xff08;Arrow Function&#xff09;。箭头函数不仅…...

BiLSTM模型实现

# 本段代码构建类BiLSTM, 完成初始化和网络结构的搭建 # 总共3层: 词嵌入层, 双向LSTM层, 全连接线性层 # 本段代码构建类BiLSTM, 完成初始化和网络结构的搭建 # 总共3层: 词嵌入层, 双向LSTM层, 全连接线性层 import torch import torch.nn as nn# 本函数实现将中文文本映射为…...

linux内核源码学习所需基础

1.面向对象的思想&#xff0c;尤其是oopc的实现方式。 2.设计模式。 这两点需要内核源码学习者不仅要会c和汇编&#xff0c;还要接触一门面向对象的语言&#xff0c;比如c&#xff0b;&#xff0b;/java/python等等任意一门都行&#xff0c;起码要了解面向对象的思想。 另外li…...

Java并发编程-AQS详解及案例实战(上篇)

文章目录 AQS概述AQS 的核心概念AQS 的工作原理AQS 的灵活性使用场景使用指南使用示例AQS的本质:为啥叫做异步队列同步器AQS的核心机制“异步队列”的含义“同步器”的含义总结加锁失败的时候如何借助AQS异步入队阻塞等待AQS的锁队列加锁失败时的处理流程异步入队的机制总结Ree…...

第11章 规划过程组(二)(11.8排列活动顺序)

第11章 规划过程组&#xff08;二&#xff09;11.8排列活动顺序&#xff0c;在第三版教材第391页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;主要输出 1、项目进度网络图 如图11-20 项目进度网络图示例 带有多个紧前活动的活动代表路径汇聚&#xff0c;而带有…...

DP学习——观察者模式

学而时习之&#xff0c;温故而知新。 敌人出招&#xff08;使用场景&#xff09; 多个对象依赖一个对象的状态改变&#xff0c;当业务中有这样的关系时你出什么招&#xff1f; 你出招 这个时候就要用观察者模式这招了&#xff01; 2个角色 分为啥主题和观察者角色。 我觉…...

如何利用GPT-4o生成有趣的梗图

文章目录 如何利用GPT-4o生成有趣的梗图一、引言二、使用GPT-4o生成梗图1. 提供主题2. 调用工具3. 获取图片实际案例输入输出 三、更多功能1. 创意和灵感2. 梗图知识 四、总结 如何利用GPT-4o生成有趣的梗图 梗图&#xff0c;作为互联网文化的一部分&#xff0c;已经成为了我们…...

深入理解 KVO

在 iOS 中&#xff0c;KVO&#xff08;Key-Value Observing&#xff09;是一个强大的观察机制&#xff0c;它的底层实现相对复杂。KVO 利用 Objective-C 的动态特性&#xff0c;为对象的属性提供观察能力。 KVO 的底层实现 1. 动态子类化 当一个对象的属性被添加观察者时&am…...

当需要对大量数据进行排序操作时,怎样优化内存使用和性能?

文章目录 一、选择合适的排序算法1. 快速排序2. 归并排序3. 堆排序 二、数据结构优化1. 使用索引2. 压缩数据3. 分块排序 三、外部排序1. 多路归并排序 四、利用多核和并行计算1. 多线程排序2. 使用并行流 五、性能调优技巧1. 避免不必要的内存复制2. 缓存友好性3. 基准测试和性…...

kubernetes集群部署:node节点部署和cri-docker运行时安装(四)

安装前准备 同《kubernetes集群部署&#xff1a;环境准备及master节点部署&#xff08;二&#xff09;》 安装cri-docker 在 Kubernetes 1.20 版本之前&#xff0c;Docker 是 Kubernetes 默认的容器运行时。然而&#xff0c;Kubernetes 社区决定在 Kubernetes 1.20 及以后的…...

第五十章 Web Service URL 汇总

文章目录 第五十章 Web Service URL 汇总Web 服务 URLWeb 服务的端点WSDL 使用受密码保护的 WSDL URL 第五十章 Web Service URL 汇总 本主题总结了与 IRIS 数据平台 Web 服务相关的 URL。 Web 服务 URL 与 IRIS Web 服务相关的 URL 如下&#xff1a; Web 服务的端点 http…...

动态白色小幽灵404网站源码

动态白色小幽灵404网站源码&#xff0c;页面时单页HTML源码&#xff0c;将代码放到空白的html里面&#xff0c;鼠标双击html即可查看效果&#xff0c;或者上传到服务器&#xff0c;错误页重定向这个界面即可&#xff0c;喜欢的朋友可以拿去使用 <!DOCTYPE html> <ht…...

axios的使用,处理请求和响应,axios拦截器

1、axios官网 https://www.axios-http.cn/docs/interceptors 2、安装 npm install axios 3、在onMouunted钩子函数中使用axios来发送请求&#xff0c;接受响应 4.出现的问题&#xff1a; &#xff08;1&#xff09; 但是如果发送请求请求时间过长&#xff0c;回出现请求待处…...

visual studio 2017增加.cu文件

右击项目名称&#xff0c;选择生成依赖项>生成自定义把CUDA11.3target勾选上&#xff1b; 把带有cuda代码的.cpp文件和.cu文件右击属性>项类型>选择CUDA C/C 右击项目名称&#xff0c;C/C>命令行添加/D _CRT_SECURE_NO_WARNINGS&#xff1b; 选择CUDA C/C>命…...

linux 管道符 |

在Linux中&#xff0c;管道符&#xff08;|&#xff09;是一个非常重要的概念&#xff0c;它允许你将一个命令的输出作为另一个命令的输入。这种机制使得Linux命令可以非常灵活地进行组合&#xff0c;从而执行复杂的任务。 管道符的基本用法 假设你有两个命令&#xff1a;com…...

Android - SIP 协议

SIP 代表(会话发起协议)。 它是一种协议&#xff0c;可让应用程序轻松设置呼出和呼入语音呼叫&#xff0c;而无需直接管理会话、传输级通信或音频记录或回放。 SIP 应用程序 SIP 的一些常见应用是。 视频会议即时消息 开发要求 以下是开发 SIP 应用程序的要求 − Android 操作系…...

Python结合MobileNetV2:图像识别分类系统实战

一、目录 算法模型介绍模型使用训练模型评估项目扩展 二、算法模型介绍 图像识别是计算机视觉领域的重要研究方向&#xff0c;它在人脸识别、物体检测、图像分类等领域有着广泛的应用。随着移动设备的普及和计算资源的限制&#xff0c;设计高效的图像识别算法变得尤为重要。…...

【】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结&#xff1a; 小菜鸡写一写基础深度学习的问题&#xff08;复制大佬的&#xff0c;自己复习用&#xff09; - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …...

NodeJs的安装与环境变量配置

Node.js的环境变量配置主要涉及设置Node.js的安装路径、npm&#xff08;Node Package Manager&#xff09;的全局模块安装路径和缓存路径&#xff0c;以及可能需要的国内镜像源配置。以下是详细的配置步骤&#xff1a; 一、安装Node.js 下载Node.js安装包&#xff1a; 访问Nod…...

进程输入输出及终端属性学习

进程的标准输入输出 当主进程fork或exec子进程&#xff0c;文件描述符被继承&#xff0c;因此0,1,2句柄也被继承&#xff0c;从而使得telnet等服务&#xff0c;可以做到间接调用别的shell或程序。比如如果是远程登录使用的zsh&#xff0c;那么其会重定向到相应的pts $ ps|gre…...

关于redis集群和事务

最近为了核算项目的两个架构指标&#xff08;可用性和伸缩性&#xff09;&#xff0c;需要对项目中使用的Redis数据库的集群部署进行一定程度的了解&#xff0c;当然顺便再学习一遍它的事务细节。 既然我在上面把Redis称之为数据库&#xff0c;那么在我们目前的项目里&#xf…...