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

[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考

目录

一、软件测试的生命周期(重点)

1、软件测试 & 软件开发生命周期

(1)需求分析

(2)测试计划

(3)测试设计与开发

(4)测试执行

(5)测试评估

(6)上线

(7)运行维护

二、如何描述一个 Bug(重点)

1、Bug 的概念

2、描述 Bug 的要素

为什么描述 Bug 还有要素要求?

1、发现问题的版本

2、问题出现的环境

3、错误重现的步骤

4、预期行为的描述

5、错误行为的描述

6、其他

7、不要把多个 Bug 放到一起

【案例】

三、Bug 的级别(重点)

1、Blocker(崩溃)

2、Critical(严重)

3、Major(一般)

4、Minor(次要)

四、Bug 的生命周期(重点)

1、BUG 状态转换图

例如

delay 的 bug 一定要修复吗?

五、如何开始第一次测试

1、充分理解需求

2、确定测试计划

3、执行测试

4、项目上线 + 维护

六、测试的执行和 BUG 管理

如何发现更多的 bug?


想着做,做着想

一、软件测试的生命周期(重点)

软件测试贯穿于软件的整个生命周期。

  • 软件测试的生命周期是指测试流程,这个流程是按照⼀定顺序执行的一系列特定的步骤,去保证产品质量符合需求。
  • 在软件测试生命周期流程中,每个活动都按照计划的系统的执行。每个阶段有不同的目标和交付产物。


1、软件测试 & 软件开发生命周期

(1)需求分析

测试人员了解需求、对需求进行分解,得出测试需求。

  • 用户角度:软件需求是否合理。
  • 技术角度:技术上是否可行,是否还有优化空间。
  • 测试角度:是否存在业务逻辑错误、冗余、冲突等问题。

(2)测试计划
  • 根据需求编写测试计划 / 测试方案。
  • 制定测试计划:什么时候开发测试,什么时候结束测 试,耗 时多久。

(3)测试设计与开发
  • 测试人员适当的了解设计,对于设计测试用例是很有帮助的,测试人员搭建测试用例框架,根据需求和设计编写一部分测试用例。
  • 参考需求文档、技术文档等编写测试用例写测试文档,明确标注使用到的测试方法,测试工具, 测试形式等等。

(4)测试执行
  • 充分利用测试用例和测试工具对项目尽可能做到全方面的测试覆盖。
  • 测试人员一般是不需要编码的,但已经编码的模块,专业的白盒测试人员可以计划执行单元测试,完善、细化测试用例以及调整测试计划和方案。

(5)测试评估
  • 测试是否通过,本次测试是否有遗留的 BUG,最终测试人员需要产出⼀个测试报告。
  • 测试阶段是软件测试人员最为重要的工作阶段,根据测试用例和计划执行测试,在执行的过程中记录、管理缺陷,测试完成后编写测试报告。
  • 测试执行结束后,不能认为项目 100% 的问题被发现了,问题是不可能被完全发现的。

(6)上线
  • 项目测试结束后,将项目发布到线上环境,测试人员需求跟踪上线并测试线上环境下软件的运行是否正确。
  • 我们平时在本地写的代码提交到 gitee / 部署到服务器上,可以称为一个上线流程。
  • 实际在工作中,上线要分为多个步骤:
    • 沙盒(企业内部的线上环境,可以供内部人员进行测试)
    • 小流量(部分线上真实的用户可以使用到,测试人员要在线上手动测试,还要观察有没有错误日志,真实用户是否在使用过程中发现了问题)
    • 全流量、全线上。
  • 因为上线的过程中也可能存在问题,线下测试没有问题,如果推到线上可能会出现问题。
  • 线上环境和线下环境并不是完全一样的,所以每一步都需要跟进测试。

(7)运行维护
  • 测试人员需要参与项目的实施工作。测试人员对项目产品的业务和操作非常了解,加上测试人员的沟通表达能力一般都比较强
  • 所以测试人员可以参与用户使用软件的培训,在试运行项目时收集问题并及时反馈给相关负责人。

软件测试的生命周期:

需求分析(需求是否完整、正确)

  • → 测试计划(确定软件由谁测试,测试的开始和结束时间,测试哪些模块)
  • → 测试设计、测试开发(写测试用例,包括手工测试用例和自动化测试用例,编写测试工具)
  • → 测试执行(执行测试用例)
  • → 测试评估(测试人员需要产生测试报告)


二、如何描述一个 Bug(重点)

1、Bug 的概念

定义:⼀个计算机 Bug 指在计算机程序中存在的一个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些 Bug 使程序无法正确的运行。

Bug 产生于程序的源代码或者程序设计阶段的疏忽或者错误。

准确的来说:

  1. 当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误
  2. 当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

2、描述 Bug 的要素

为什么描述 Bug 还有要素要求?
  • 在心理学上说,人们在编写文档的时候,经常会出现自己想表达的和写出来的内容往往南辕北辙。
  • Bug 描述:浏览器打开链接失败。
  • 该描述下,没有明确说明哪个浏览器,失败的具体表现是什么
  • 对于开发⼈员来说无法捕捉到更多有效的信息,会造成沟通效率低下,工作质量低下等问题。

描述 Bug 的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果案例。


一个合格的 bug 描述应该包括以下几个部分:

1、发现问题的版本

  • 浏览器 / 软件产品的版本。
  • 开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。
  • 并且版本的标识也有利于统计和分析每个版本的质量。

2、问题出现的环境

  • 产品运行的环境。
  • 环境分为硬件环境和软件环境,如果是 W eb 项目,需要描述浏览器版本,客户机操作系统等,如果是 app 项目,需要描述机型、分辨率、操作系统版本等。
  • 详细的环境描述有利于故障的定位。

版本和环境也没有强区分,只要能够给出关键信息供开发人员去复现即可。


3、错误重现的步骤

  • 描述问题重现的 最短 步骤。

4、预期行为的描述

  • 要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。
  • 如果是依据需求提出的故障,能写明需求的来源是最好的。
  • 要相信:测试人员是最懂需求的。

5、错误行为的描述

  • 描述错误的现象。 crash 等可以上传 log , UI 问题可以有截图。

6、其他

  • 某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。
  • 有些有优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。

7、不要把多个 Bug 放到一起

  • 在无法确认是同一段代码造成的故障时,不要将 B ug 放在一起提交。
【案例】

提交了如下 bug:

  1. 在短信列表,选择一条短信,进行删除,删除失败。
  2. 在短信列表,选择一条短信,进行查看,在查看页面,进行删除,删除失败。(详细 √)
故障发现版本:VPS20180226_01
故障类别:兼容性
故障优先级:中
故障标题:ie下界面显示异常,界面文字有重叠
故障描述:测试环境:win7+IE8测试步骤:1、打开vps首页,点击“通知”链接,进入通知页面预期结果:通知页面显示正确,一页显示10条通知,按时间顺序倒序排列实际结果:页面显示10条通知,通知顺序正确,但是页面文字有重叠
附件:上传截图

三、Bug 的级别(重点)

  • bug 的定义每个公司都不一致,在定义级别之前需要查看公司规范。
  • 通过定义 bug 的级别,能够明确看出问题的严重程度。
  • ⼯作中开发人员通常需要按照 bug 的级别来分配优先级来处理 bug,除此之外,通过 bug 级别也能够体现出开发人员的开发质量。

1、Blocker(崩溃)

  • 阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。
  • 如:代码错误、死循环、数据库发生死锁
  • 重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试,打回给开发,开发就需要修复,修复完之后开发需要自己再仔细测试一下)。

2、Critical(严重)

系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。

  • 功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。
  • 如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。

3Major(一般)

  • 功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。
  • :操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等( 该问题实际测试中存在最多)。

4Minor(次要)

界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。

  • 如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,
  • 用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

类比生活当中:


四、Bug 的生命周期(重点)

  • 每个公司、每一个工具对 bug 生命周期的定义都是不一致的,下面仅是一个常见的例子。
  • 测试人员应该跟踪一个 Bug 的整个生命周期,从 Open 到 Closed 的所有状态。

1、BUG 状态转换图

  • 测试人员在执行测试的过程中如有发现 Bug,需要在对应的 Bug 管理平台来创建 Bug(Bug 生命起源)
  • 创建好的 Bug 需要被开发人员修复,以及测试人员的持续跟踪和测试。

  • New:测试人员新发现的 Bug,未经评审决定是否指派给开发人员进行修改。
  • Open:确认是否为有效 Bug,并且认为是否需要进行修改,无效的 Bug 则状态流转为 Rejected(拒绝),否则指派给相应的开发人员。
  • Fixed:优先级高、时间充裕,开发人员进行修改后标识成修改状态(将 Bug 修复结束了),有待测试人员的回归测试验证。
  • Rejected:如果认为不是 Bug,则拒绝修改。
  • Delay:如果认为暂时不需要修改或暂时不能修改(优先级低),则延后修改
  • Closed:修改状态的 Bug 经测试人员的回归测试验证通过,确认 Bug 已修复,则关闭 Bug。
  • Reopen:如果经验证 Bug 仍然存在,则需要重新打开 Bug打回),开发人员重新修改。

无效的 bug :

  1. open->closed
  2. open-rejected-closed

缺陷状态变更流程每个项目团队的实际做法可能不大一样。

并且需要结合实际的开发流程和协作流程来使用。


例如

测试人员新发现的 Bug

  • 必须由测试组长评审后才决定是否 Open 并分派给开发人员。
  • 测试人员 Open 的 Bug 可以直接分派给 Bug 对应的程序模块的负责人,也可以要求都先统一提交给开发主管
  • 由开发主管审核后再决定是否分派给开发人员进行修改。

Bug 的跟踪以及状态变更应该遵循一些基本原则:

  • 测试人员对每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试,确保相同的问题不再出现,才能关闭缺陷。
  • 对于拒绝修改和延迟修改的 Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表(或代表用户角度的人)的评审。

delay 的 bug 一定要修复吗?
  • 理论上来说是一定要被修复的。

五、如何开始第一次测试

1、充分理解需求

  • 文档(产品文档 + 技术文档)
  • 项目功能问产品,模块底层如何实现问开发

2、确定测试计划


3、执行测试

Bug 开发修复了之后一定要验收。


4、项目上线 + 维护


⭕作为一个 小白 在进入测试团队开始第一次测试的时候,我们需要做很多的准备:

  1. 阅读所有项目有关的文档,包括:需求文档、设计文档、用户手册。
  2. 尽可能参加各种项目会议,了解项目的背景、人员组成、尽可能的了解需求和业务。
  3. 特别针对业务专业性较强的项目,例如银行业务,需要了解各种业务知识,如高低柜、一二三类账户等、存款、贷款等。
  4. 熟悉项目所使用的测试管理工具、配置管理工具,获取对应的地址和登录方式。
  5. 阅读已有的测试方案和测试案例。
  6. 阅读旧有的bug库,了解系统功能。尤其重要的是和现有的测试团队保持一致的故障定级原则。
  7. 了解公司的规范要求,特别是用例编写规范、用例执行规范、bug提交规范、测试工具工具使用规范等。

在进行了以上的准备工作之后,第一次测试工作到来了,我们需要与测试组长确认具体的工作内容:

  1. 测试的计划是什么?
  2. 测试的内容是什么?test case 有多少?安排了几天执行?有没有自由测试的时间?
  3. 我要测试的内容开发人员是谁?需求人员是谁?
  4. 分配给我的测试内容是否需要特殊的测试资源?资源是否满足需要?

在我们确认了以上内容之后,就可以开始测试的执行了。


六、测试的执行和 BUG 管理

开始进行测试:

  1. 打开待测试的系统。
  2. 打开测试管理工具用例模块,开始执行用例。
  3. 发现 bug,进行复现并确认 bug 的复现步骤。
  4. 记录 bug。
  5. 沟通 bug。
  6. 验证以前提交的 bug。
  7. 确认本次测试完成。
  8. 编写测试报告。

执行测试时处理要做到测试用例和需求的覆盖外,还要有临时发挥的能力。

  • 根据自己的经验、对测试的感悟以及随机测试可以发现很多根据测试用例无法发现的缺陷。
  • 不能拘泥于测试用例或者已经有的测试方法,在测试执行过程中要不断总结测试方法和测试故障模型。
  • 真正优秀的测试人员在执行测试时是想着做,做着想,这样的测试效果才好,尤其是在测试过程中,对程序的处理相当了解的情况下,测试的思路会更加清晰和全面。

如何发现更多的 bug

  1. 软件测试同样存在二八原则,80% 的故障集中于 20% 的模块,如果某部分问题较多,加强测试广度和深度。
  2. 开发人员也存在二八原则,80% 的故障集中于 20% 的开发人员,如果某些开发人员的 bug 较多,加强他们开发模块的测试广度和深度。
  3. 多进行逆向思维发散性的思维(依赖测试人员经验)。
  4. 不要局限于用例和需求文档
  5. 尽早介入项目(就会尽早理解需求,不要等到开发的差不多了再介入项目。
发散一下:注册的需求来进行一次测试?功能:所有需求描述的功能
功能其他:需求未考虑到的:邮件内容是否正确?连续注册?
边界:最大值、最小值等
界面:美观,整齐
校验:email格式校验,错误校验,已注册校验、输出校验,为空等
兼容性:IE,CHROME,360.....
安全性:验证码能否起效?http请求直接发送?
性能:多用户并发
其他?
48小时真的是48小时么?

相关文章:

[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考

目录 一、软件测试的生命周期(重点) 1、软件测试 & 软件开发生命周期 (1)需求分析 (2)测试计划 (3)测试设计与开发 (4)测试执行 (5&am…...

epoll_wait未触发的小Bug

上次看了一下epoll监听的原理,在Android Jni里使用epoll,来监听Gpio口的变化事件,具体代码如下: 打开 GPIO 文件描述符,因为该文件是内核虚拟出来的,不是实际文件,所以无法使用FileObserver来监…...

Unity异步加载image的材质后,未正确显示的问题

简述: 此问题涉及到Unity的UI刷新机制 问题描述: 如图所示,想要实现在打开新的界面时候,通过修改材质的方式,修改image的显示内容。 明明已经给image添加上材质了,可还是一片空白? 先看看代…...

Python----循环神经网络(Word2Vec)

一、Word2Vec Word2Vec是word to vector的简称,字面上理解就是把文字向量化,也就是词嵌入 的一种方式。 它的核心就是建立一个简单的神经网络实现词嵌入。 其模型仅仅包括输入层、隐藏层和输出层,模型框架根据输入输出的不同,主要…...

Oracle Enqueue Names

Oracle Enqueue Names Enqueue(排队锁)是Oracle数据库中用于协调多进程并发访问共享资源的锁机制。 This appendix lists Oracle enqueues. Enqueues are shared memory structures (locks) that serialize access to database resources. They can be…...

微服务中API网关作用(统一入口、路由转发、协议转换、认证授权、请求聚合、负载均衡、熔断限流、监控日志)

文章目录 在微服务架构中,API网关主要有以下作用1. 统一入口:作为所有客户端请求的单一入口点,隐藏后端服务的复杂性2. 路由转发:将客户端请求准确路由到适当的微服务(如图中的服务A、B、C)3. 协议转换&…...

Linux `cat` 命令深度解析与高阶应用指南

Linux `cat` 命令深度解析与高阶应用指南 一、核心功能解析1. 基本作用2. 与类似命令对比二、选项系统详解1. 常用选项矩阵2. 组合使用技巧三、高阶应用场景1. 数据流处理2. 系统维护操作3. 开发调试应用四、安全与权限管理1. 访问控制策略2. 二进制文件处理五、性能优化策略1.…...

融云 uni-app IMKit 上线,1 天集成,多端畅行

融云 uni-app IMKit 正式上线,支持一套代码同时运行在 iOS、Android、H5、小程序主流四端,集成仅需 1 天,并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现,使用 Vue 3 Composition API&#x…...

VLA模型:自动驾驶与机器人行业的革命性跃迁,端到端智能如何重塑未来?

当AI开始操控方向盘和机械臂,人类正在见证一场静默的产业革命。 2023年7月,谷歌DeepMind抛出一枚技术核弹——全球首个视觉语言动作模型(VLA)RT-2横空出世。这个能将“把咖啡递给穿红衣服的阿姨”这类自然语言指令直接转化为机器人…...

IP地址详解

IP地址详解(技术向) 一、核心定义 IP地址(Internet Protocol Address)是 网络层逻辑地址,用于在网络中唯一标识设备。本质上是 32位(IPv4)或128位(IPv6)二进制数。 本机的地址为127.0.0.1,主机名:localhost192.168.0.0-192.168.255.255为私有地址,属于非注册地址,…...

C++网络编程入门学习(四)-- GDB 调试 学习 笔记

GDB 调试 学习 笔记 GDB 调试 学习 笔记调试准备启动和退出gdbgdb中启动程序退出gdb查看代码断点调试命令继续运行gdb手动打印信息 自动打印信息单步调试step 可简写 snext 可简写成 nfinish 可简写成 finuntil 可简写成 u 设置变量值 GDB 调试 学习 笔记 学习地址&#xff1a…...

C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别

在C#编程中,Server.UrlEncode 和 HttpUtility.UrlDecode 是两个常用的方法,用于处理URL编码和解码操作。理解它们的区别对于确保数据在Web应用程序中的正确传输和解析至关重要。 Server.UrlEncode 和 HttpUtility.UrlDecode的区别 Server.UrlEncode 和…...

kafka配置SASL_PLAINTEXT简单认证

Kafka ZooKeeper 开启 SASL_PLAINTEXT 认证(PLAIN机制)最全实战教程 💡 本教程将手把手教你如何为 Kafka 配置基于 SASL_PLAINTEXT PLAIN 的用户名密码认证机制,包含 Kafka 与 ZooKeeper 的全部配置,适合入门。 &…...

Flink SQL 计算实时指标同比的实现方法

在 Flink SQL 中计算实时指标的同比(Year-on-Year),核心是通过时间窗口划分周期(如日、月、周),并关联当前周期与去年同期的指标值。以下是结合流数据处理特性的具体实现方法,包含数据准备、窗口聚合、历史数据关联等关键步骤。 一、同比的定义与场景 同比指当前周期指…...

Vue Router动态路由与导航守卫实战

在 Vue Router 中,动态路由与导航守卫的结合使用能够实现复杂的路由控制逻辑,例如权限验证、动态路由加载、数据预取等功能。以下是一个结合实战的详细说明: 一、动态路由基础 动态路由通过路径参数(:)实现动态匹配&a…...

数据库健康监测器(BHM)实战:如何通过 HTML 报告识别潜在问题

在数据库运维中,健康监测是保障系统稳定性与性能的关键环节。通过 HTML 报告,开发者可以直观查看数据库的运行状态、资源使用情况与潜在风险。 本文将围绕 数据库健康监测器(Database Health Monitor, BHM) 的核心功能展开分析,结合 Prometheus + Grafana + MySQL Export…...

Oracle基础知识(二)

目录 1.聚合函数 2.COUNT(1)&COUNT(*)&COUNT(字段)区别(面试常问) 3.分组聚合——group by 4.去重:DISTINCT 、GROUP BY 5.聚合函数的过滤HAVING 6.oracle中having与where的区别 (面试常问) 7.ROUND与TRUNC函数 8.ROLLUP上卷…...

轻量化MEC终端 特点

MEC(多接入边缘计算)解决方案通过将计算能力下沉至网络边缘,结合5G网络特性,已在多个行业实现低延迟、高可靠、高安全的应用部署。以下从技术架构、核心优势及典型场景三方面进行总结: 一、技术架构 分层设计‌ MEC架…...

Git 提交大文件 this exceeds GitHub‘s file size limit of 100.00 MB

报错核心: File …/encoder-epoch-99-avg-1.int8.onnx is 173.47 MB File …/encoder-epoch-99-avg-1.onnx is 314.79 MB this exceeds GitHub’s file size limit of 100.00 MB 正确做法:使用 Git LFS 上传大文件 GitHub 对 单个文件最大限制是 100MB&…...

前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换

在 Java 中,Long 是一个 64 位的长整型,通常用于表示很大的整数。在后端,Long 类型的数据没有问题,因为 Java 本身使用的是 64 位的整数,可以表示的范围非常大。 但是,在前端 JavaScript 中,Lo…...

C语言—Linux环境下CMake设置库(动态/静态)

1. Yesterday Once More 由于昨日我们在VSCode设置了如何使用CMake构建与编译c语言项目,如有疑问,请看以下链接,今日根据昨天的配置来进一步完成项目的构建。 c语言- 如何构建CMake项目(Linux/VSCode)-CSDN博客 2. 动态…...

C语言---内存函数

memcpy函数的使用及模拟实现 memcpy的功能和strcpy类似,都是用来拷贝数据的。与strcpy不同的是,memcpy的适用性更广并且是以字节为单位来拷贝的。 void * memcpy ( void * destination, const void * source, size_t num ) memcpy函数的作用就是拷贝从so…...

vue项目启动报错(node版本与Webpack)

一、问题 因为项目需要将node版本从v14.17.0升级到v20.9.1了,然后启动项目报错 报错有些多,直接省略部分 building 2/2 modules 0 activeError: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:79:19) …...

Vite + Vue 工程中,为什么需要关注 `postcss.config.ts`?

📜 前言:当传统 CSS 遇见现代工程 在 Vue 项目开发中,CSS 管理一直是一个容易被忽视但极其重要的环节。传统的 CSS 编写方式(如手动处理浏览器兼容性、全局样式污染)已无法适应现代前端工程的需求。而 PostCSS 作为 C…...

LeetCode热题100:Java哈希表中等难度题目精解

49. 字母异位词分组 题目描述 给定一个字符串数组,要求将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词是由重新排列源单词的所有字母得到的一个新单词。 示例 示例 1: 输入: strs ["eat", "tea", "tan", &…...

设计模式1 ——单例模式

定义 在 C 里,单例模式是一种常用的设计模式,其目的是保证一个类仅存在一个实例,并且为该实例提供一个全局访问点。 实现 1 饿汉式 class Singleton { private:static Singleton instance;Singleton() default;~Singleton() default;Si…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(26):のは ・ のが ・ のを

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(26):のは ・ のが ・ のを 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)復習:(2)のは ・ のが ・ のを3、单词(1)日语(2)日语片假名单词4、相近词练习5、单词辨析记录6、总结1、前言 (1)情况说明…...

第18天-NumPy + Pandas + Matplotlib多维度直方图

示例1:带样式的柱状图 python 复制 下载 import numpy as np import pandas as pd import matplotlib.pyplot as plt# 生成数据 df = pd.DataFrame(np.random.randint(10, 100, size=(8, 4)),columns=[Spring, Summer, Autumn, Winter],index=[2015, 2016, 2017, 2018, 20…...

Qt初识.

认识 QLabel 类,能够在界面上显示字符串. 通过 setText 来设置的。参数 QString (Qt 中把 C 里的很多容器类,进行了重新封装。历史原因) 内存泄露 / 文件资源泄露对象树. Qt 中通过对象树,来统一的释放界面的控件对象. Qt 还是推荐使用 new 的…...

linux系统查看硬盘序列号

Linux系统查看硬盘信息指南 方法一:hdparm工具 sudo hdparm -i /dev/sda输出示例:在返回信息中查找"SerialNo"字段为序列号,"Model"字段为硬盘型号注意:必须使用root权限,普通用户需在命令前加s…...

用户栈的高效解析逻辑

一、背景 在之前的博客 内核逻辑里抓取用户栈的几种方法-CSDN博客 里,介绍了使用内核逻辑进行用户栈的函数地址的抓取逻辑,但是并没有涉及如何解析出函数符号的逻辑。 就如perf工具一样,它也是分为两个步骤,一个步骤是内核态抓取…...

【713. 乘积小于 K 的子数组】

Leetcode算法练习 笔记记录 713. 乘积小于 K 的子数组 713. 乘积小于 K 的子数组 此题和 209题什么区别&#xff0c;没有什么区别&#xff0c;关键时理解滑动窗口的作用。 public int numSubarrayProductLessThanK(int[] nums, int k) {if (k < 1){return 0;}int left 0;in…...

springboot 1.x2.x依赖spring版本

springboot 1.x&2.x依赖spring版本 Spring Boot 1.x 系列版本主要依赖于 Spring Framework 4.x。具体对应关系如下&#xff1a; Spring Boot 1.0.x → Spring Framework 4.0.xSpring Boot 1.1.x → Spring Framework 4.0.xSpring Boot 1.2.x → Spring Framework 4.1.xSp…...

TYUT-企业级开发教程-第9章

考点不多&#xff0c;不会考大题 异步任务 异步任务通常用于耗时较长或者不需要立即得到执行结果的业务&#xff0c;在 Spring 中&#xff0c;可以使用 Async 注解实现异步任务&#xff0c;被Async 注解标注的方法称之为异步方法&#xff0c;异步方法将在执行的时候&#xff…...

独占内存访问指令LDXR/STXR

一、原子操作的介绍 在计算机领域里&#xff0c;如果要在多线程的情况下要保持数据的同步&#xff0c;需要引入称作Load-Link&#xff08;LL&#xff09;和Store-Conditional&#xff08;SC&#xff09;的操作&#xff0c;通常简称为LL/SC。 LL操作返回一个内存地址上当前存储…...

FlashAttention:传统自注意力( Self-Attention)优化加速实现

摘要 FlashAttention 是一套专为 GPU 优化的精确自注意力&#xff08;Self-Attention&#xff09;实现&#xff0c;通过“输入/输出感知”&#xff08;IO-awareness&#xff09;和块化&#xff08;Tiling&#xff09;策略&#xff0c;利用片上 SRAM 缓存大幅降低对高带宽显存&…...

DSP定时器的计算

以下是 0 到 F 的十六进制数对应的四位二进制表示的对照表&#xff1a; 十六进制二进制00000100012001030011401005010160110701118100091001A1010B1011C1100D1101E1110F1111 定时器周期&#xff1a; 我们先将 0x1742 转换成二进制形式&#xff1a; 0x1742 0001 0111 0100 …...

2025.05.21华为暑期实习机考真题解析第二题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 灾区物资调度路径规划 问题描述 在一次严重的自然灾害后,LYA负责协调救援物资的配送工作。救援区域包含多个受灾乡镇和一个物资集结点,各个地点之间的道路状况各异,有些甚至…...

ATT Global赞助非小号全球行,引领RWA创新浪潮

领先的Web3广告生态系统构建者Advertising Time Trace (ATT Global) 今日宣布&#xff0c;将作为特别赞助商&#xff0c;鼎力支持即将于2025年5月26日在吉隆坡盛大举行的非小号全球行之“You Deserve to be Loved” WALL X特别慈善活动。此次盛会由知名Web3平台非小号与WALL X、…...

在 stm32 中 volatile unsigned signed 分别有什么作用,分别在什么场景下使用?

在STM32开发中&#xff0c; plaintext 复制 volatile 、 plaintext 复制 unsigned 和 plaintext 复制 signed 是三个关键的关键字&#xff0c;它们的用途和场景如下&#xff1a; 1. plaintext 复制 volatile 关键字 作用&#xff1a; 禁止编译器优化&#xff…...

Pandoc3.7新特性:存在合并单元格的 HTML 表格会被保留为嵌入的 HTML 表格

问题描述 在 Pandoc 3.6 中&#xff0c;当将包含合并单元格的 HTML 表格 (<table>) 转换为 Markdown 格式时&#xff0c;表格会被直接转换为 Markdown 表格格式。然而&#xff0c;在 Pandoc 3.7 中&#xff0c;同样的操作结果发生了变化&#xff1a;合并单元格的 HTML 表…...

WPS深度适配鸿蒙电脑折叠形态,国产替代下的未来何在?

首先&#xff0c;从产业升级与国产替代的角度来看&#xff0c;这是中国信息技术产业由“可用”向“好用”跃迁的重要信号。长期以来&#xff0c;中国的办公软件市场高度依赖微软Office等国外产品&#xff0c;操作系统也主要被Windows、macOS等垄断。而随着鸿蒙系统的成熟以及WP…...

[java]数组

数组 Scanner innew Scanner(System.in); int[] numbersnew int[100]; int x; int cnt0; xin.nextInt(); while(x!-1){numbers[cnt]x;sumx;xin.nextInt(); } if(cnt>0){System.out.println(sum/cnt); }所有的元素具有相同的数据类型创建后不能改变大小 定义数组 元素个数…...

torch.matmul() VS torch.einsum()

torch.matmul():标准的矩阵乘法 向量-向量&#xff08;点积&#xff09; a torch.randn(3) # [3] b torch.randn(3) # [3] c torch.matmul(a, b) # 点积&#xff0c;标量输出矩阵-向量 A torch.randn(3, 4) # [3, 4] x torch.randn(4) # [4] y torch.matmul(A, x…...

leetcode 92. Reverse Linked List II

题目描述 92. Reverse Linked List II 是第206题的进阶版206. Reverse Linked List 思路很简单&#xff0c;但一次性通过还是有点难度的。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(n…...

VUE3使用provice、inject实现组件间的方法调用

问题&#xff1a;A组件》B组件》C组件 C可以调用A的方法吗&#xff1f; A组件&#xff1a;提供一个refreshTable方法 provide(refreshTable,(e:params)>{ ElMessage(底层组件请求刷新表格e.staff_ide.shijian) params e renderTableData() }) C组件&#xff1a; 注入refres…...

WebSocket 是什么?

好记忆不如烂笔头&#xff0c;能记下点东西&#xff0c;就记下点&#xff0c;有时间拿出来看看&#xff0c;也会发觉不一样的感受. WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;用于在客户端&#xff08;如浏览器&#xff09;和服务器之间建立持久化的双向实时…...

Java虚拟机栈

有不少Java开发人员一提到Java内存结构&#xff0c;就会将JVM中的内存区理解为仅有Java堆(heap)和Java栈(stack)。这种划分想法来源于传统的C、C程序的内存布局结构&#xff0c;但是在Java里有些粗糙了。尽管这种理解和划分非常不全面&#xff0c;但是从某种意义上来说&#xf…...

内存屏障指令

一、理解内存屏障&#xff08;Memory Barrier&#xff09; 开发者显然不明白一个事实——程序实际运行时很可能并不完全按照开发者编写的顺序访问内存&#xff0c;因为现代计算机为了提高性能而采取乱序执行&#xff0c;内存乱序访问主要发生在如下两个阶段&#xff1a; 编译…...

【MC】红石比较器

在《我的世界》&#xff08;Minecraft&#xff09;中&#xff0c;红石比较器&#xff08;Redstone Comparator&#xff09; 是一种高级红石元件&#xff0c;主要用于 检测、比较或处理信号强度&#xff0c;同时还能与容器、特定方块互动。 红石比较器有两种模式&#xff1a; 比…...