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

博客系统--测试报告

博客系统--测试报告

  • 项目背景
  • 项目功能
  • 功能测试
    • ①登录功能测试
    • ②发布博客功能测试
    • ③删除文章功能测试
    • ④功能测试总结:
  • 自动化测试
    • 自动化脚本执行界面:
  • 性能测试

本博文主要针对个人实现的项目《博客系统》去进行功能测试、自动化测试、性能测试,并记录总结

项目背景

博客系统采用前后端不分离的方法来实现,同时使用了数据库来存储相关的数据,且已将其部署到云服务器上。前端主要有五个页面构成:登录页,文章列表页,文章详情页,文章编辑(修改)页和文章发布页。以上模拟实现了最简单的博客系统。其实现了以下的主要功能:登录、新增文章、对自己文章的删改查、查看他人文章、注销登录并使用Jwt完成了令牌登录校验等功能。
但该项目没有注册账号,点赞文章,筛选文章等功能,且用户没法自行设置头像

项目功能

该博客系统主要实现了以下几个功能:登录、注销、回到主页(文章列表页)、写文章、修改/删除自己的文章、查看文章详情、且支持MD编辑器。

  • 登录功能:由于没有注册功能,用户名以及密码只能在数据库写死,直接输入给出的用户名和密码登录即可。但是在未登录(如:Token过期)情况下按下点击任意按钮或刷新页面均会跳转到登录页面。
  • 注销功能:用户在任意界面点击右上角“注销”按钮,回到登录页面。
  • 回到主页(文章列表页)功能:用户在任意界面点击右上角“主页”按钮,进入文章列表页。
  • 写博客功能:用户在任意界面点击右上角“写文章”按钮,进入写文章页面。
  • 修改/删除博客功能:用户在查看自己写的文章时会显示“编辑”和“删除”按钮,点击“编辑”按钮会进入编辑页面,点击“更新文章”按钮会提示“修改成功”,再点击“确认”按钮后会自动跳转至文章列表页并展示更新的内容;点击“删除”按钮会提示“删除成功”,再点击“确认”按钮后会自动跳转至文章列表页,且刚才查看的文章已不再展示。
  • 查看博客功能:用户在文章列表页可以看到每篇文章下面都有“查看全文>>”按钮,点击该按钮进入文章详情页,页面包括文章作者信息,文章第一次发布的时间等。

功能测试

①登录功能测试

由于没有实现注册功能,所以我们的用户名和密码都是在数据库里写死的,所以只能用系统原始的数据进行登录

执行步骤: 访问网站-> 输入用户名及密码 ->单击"提交"
在这里插入图片描述
测试过程部分截图:

输入用户名为空::
输入不存在的用户:
在这里插入图片描述

②发布博客功能测试

在这里插入图片描述

不填写标题,发布失败:
在这里插入图片描述

③删除文章功能测试

在这里插入图片描述
从前端看的话,如果我们登录的用户并不是该篇博客的作者,是不会显示 编辑删除 这两个按钮的,但是此处可以进行思维扩展:我们也是可以通过其他工具去向后端发送请求执行删除文章操作的,此处就发现了一处bug
在这里插入图片描述
可以看到此处我们登录的是 lisi 用户,在前端展示和我们预期的一样,隐藏了编辑和删除按钮,但是当我们用Postman进行后端接口测试的时候却发现了问题:
在这里插入图片描述
我们用 lisi 账户登录后所携带的令牌去删除作者是 zhangsan 的博客,后端居然请求成功了,再到数据库里查看数据,发现博客已经被逻辑删除了,这样的情况相当于我拿着自己家的钥匙开了别人家的门,所以此处肯定是不安全的,应该进行代码层面上的逻辑校验
在这里插入图片描述

④功能测试总结:

用户登录测试用例表

用例名称用户登录功能
测试目的测试用户能通过系统给定的的用户名和密码进行登录
测试前提用户处于博客系统登录页
测试流程1)进入登录页面 2)输入事先准备的测试数据(用户名和密码)
预期结果输入正确的用户名和密码时,成功跳转至博客列表页,反之则弹出相应的错误对用户进行提示
实际结果与预期结果基本一致

发布文章测试用例表

用例名称发布文章功能
测试目的测试用户能通过在登陆后进行博客的编写及发布
测试前提用户已登录
测试流程1)登录博客系统 2)进入博文编辑页 3)输入事先准备的测试数据 (博文内容) 4)单击发布博文
预期结果如果输入了标题内容,就能进行发布,反之则发布失败,对用户进行弹窗提示
实际结果与预期结果基本一致,提示信息需要补全

删除文章测试用例表

用例名称删除文章功能
测试目的测试用户在登录后能够删除自己的文章
测试前提用户已登录,并且已经发表该文章
测试流程1)登录博客系统 2)进入个人主页 3)单击查看全文4)单击删除博文 2. 使用postman工具调用删除博文接口
预期结果用户只能对自己的博客进行删除操作
实际结果与预期结果不一致,此处代码逻辑需进行更改

自动化测试

现采用Selenium搭配Junit一些Api对博客系统设计UI自动化测试用例,
主要针对核心功能: 用户登录、博文的查看及删除、用户注销登录 功能进行测试

自动化代码 码云:

由于该项目很早前就部署在服务器上了,并且服务器配置实在过低,会导致我们在进行自动化时有些资源很难加载完全,但经过很多遍测试发现在执行自动化测试的时候只要代码逻辑正确,代码还是能够跑的通的

本次自动化测试主要执行以下逻辑:用户错误登录->用户正确登录->用户发表博客->用户查看博客->用户删除博客用户注销

①前置准备

//工具类封装
public class Utils {public static WebDriver driver;public static WebDriver createDriver(){if (driver == null){//浏览器配置WebDriverManager.edgedriver().setup();EdgeOptions options = new EdgeOptions();//允许访问所有链接options.addArguments("--remote-allow-origins=*");options.setPageLoadStrategy(PageLoadStrategy.NORMAL);driver = new EdgeDriver(options);//设置隐式等待WebDriver.Timeouts wait = driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));}return driver;}public Utils(String url){driver = createDriver();driver.get(url);}}
package tests;import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.UnhandledAlertException;import java.io.IOException;
//博客测试类
public class BlogTest extends Utils {private static String blog_system = "http://120.26.87.94:8080/blog_list.html";public BlogTest() {super(blog_system);}/*** 失败登录* @throws IOException* @throws UnhandledAlertException* @throws InterruptedException*/public void LoginFail() throws IOException, UnhandledAlertException, InterruptedException {driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("1234");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);String alertText = "";Alert alert = driver.switchTo().alert();alertText = alert.getText();Thread.sleep(2000);alert.accept();assert alertText.equals("密码错误");driver.navigate().refresh();}/*** 成功登录* @throws IOException*/public void LoginSuccess() throws IOException {//清空输入框driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();//输入正确的用户名和密码driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();//查看注销按钮driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)"));//查看urlString expect = driver.getTitle();assert expect.equals("博客列表页");}/*** 编辑博客* @throws InterruptedException*/public void EditSuc() throws InterruptedException {driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();String blogTitle = "Edit Test";driver.findElement(By.cssSelector("#title")).sendKeys(blogTitle);Thread.sleep(2000);driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);String title = driver.getTitle();assert title.equals("博客列表页");}/*** 查看博客*/public void ViewBlog() throws InterruptedException {driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();Thread.sleep(2000);}/*** 注销用户*/public void Logout(){driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)")).click();driver.quit();}/*** 删除博客* @throws InterruptedException*/public void DeleteBlog() throws InterruptedException {driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)")).click();Thread.sleep(2000);Alert alert = driver.switchTo().alert();alert.accept();}}

执行我们编写的自动化代码

自动化脚本执行界面:

博客系统自动化测试

性能测试

我们此处使用Jmeter提供的梯度压测功能对博客系统进行压测,由于服务器实在过于脆弱,此处将只设置20个线程数,以及一分钟的持续压测时间,对我们系统的 登录、查询博客列表、查询用户信息、查询作者信息以及添加博客这几个接口进行压测
在这里插入图片描述
配置好线程组之后我们在使用命令提示符,启动我们保存好的 .jmx 格式文件,并将其输出的测试报告文件及日志保存到我们指定的目录
在这里插入图片描述
按回车键执行以后,我们过一会就能在指定目录下查看其生成的性能测试报告了

双击生成的html文件,查看jmeter生成的性能测试报告了
在这里插入图片描述
在这里插入图片描述
可以看到我们发送的很多请求都调用失败了

在这里插入图片描述
可以看到基本都是一种异常

后来翻阅网上资料找到了解决方法:https://javaziliao.com/post/5948.html

相关文章:

博客系统--测试报告

博客系统--测试报告 项目背景项目功能功能测试①登录功能测试②发布博客功能测试③删除文章功能测试④功能测试总结: 自动化测试自动化脚本执行界面: 性能测试 本博文主要针对个人实现的项目《博客系统》去进行功能测试、自动化测试、性能测试&#xff0…...

打造个人知识库(Page Assist版)- 私人专属AI-本地化部署deepseek

上篇介绍了实现浏览器交互Ai Web Ui - chrome浏览器插件-Page Assist,安装即可使用,实现最简单的本地化部署AI使用。 实现浏览器交互Ai Web Ui-本地化部署的deepseek Ollama Page Assist 本编介绍使用 Page Assist 构建个人知识库,利用个…...

7zip安装与使用

在 Linux 上安装 7zip(7z) 取决于你的操作系统发行版。以下是不同系统的安装方法: 📌 1. Ubuntu / Debian 直接使用 p7zip: sudo apt update sudo apt install -y p7zip-full p7zip-rarp7zip-full → 支持 .7z 压缩和…...

蓝桥杯第15届真题解析

由硬件框图可以知道我们要配置LED 和按键、lcd,解决lcd引脚冲突 LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 按键 按键配置,由原理图按键所对引…...

springboot gradle 多项目创建

1.背景2.创建父项目3.配置gradlew4.创建子项目 1.背景 1.用IDE创建一个父项目(school_project),两个子项目(student_project,teacher_project)。子项目是两个springboot工程 2.使用gradle kotlin进行管理,…...

Protocol Buffers在MCU上的nanopb介绍及使用详解

在嵌入式系统和资源受限的环境中,传统的Protocol Buffers 可能显得过于庞大。因此,nanopb 应运而生,它是一个轻量级的 Protocol Buffers 生成器,专为嵌入式系统设计c语言设计。本文将介绍如何安装和使用 nanopb,以及通…...

leetcode日记(74)扰乱字符串

很有难度的一题,一开始真的绕了很多思维上的弯路。 最开始的想法是递归,看到题目的时候想到动态规划但是完全没有思路应该怎么用,结果确实是递归动态规划。 最开始的想法是构建树,每一层包含这一步划分的方法(实际会…...

Blazor-根级别级联值

根级别级联值注册 using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting;namespace BlazorApp1 {public class Program{public static async Task Main(string[] args){var builder WebAssemblyHostBuilder.CreateDefault…...

懒加载能够解决Spring循环依赖吗

懒加载本身并不能直接解决 Spring 循环依赖问题,但它可以在一定程度上缓解或绕过循环依赖带来的问题,下面详细分析: 1. 什么是 Spring 循环依赖 循环依赖指的是两个或多个 Bean 之间相互依赖,形成一个闭环。例如,Bea…...

Matlab中使用GUIDE工具开发图形用户界面(GUI)

文章目录 1. 初识GUIDE工具1.1 .m 和 .fig的区别和联系1.2 GUIDE工具的详细介绍1.3 GUI控件的属性1.4 自动生成的 .m 文件1.5 回调函数 2. GUI中常见的函数2.1 get 和 set 函数2.2 handles.Tag2.3 OpeningFcn 和 OutputFcn2.4 Callback2.5 CreateFcn 和 DeleteFcn2.6 ButtonDow…...

[通俗易懂C++]:引用返回和地址返回

在之前的文章中已经提到过,当使用按值传递时会创建参数的一个副本到函数中。对于基本类型(复制成本较低),这是可以的。但对于类类型(如 std::string ),复制通常成本较高。我们可以通过使用(const)引用传递(或按地址传递)来避免进行昂贵的复制。 这篇文章主要介绍一些…...

基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释

基于 ‌MySQL 数据库‌对三级视图(用户视图、DBA视图、内部视图)的详细解释,结合理论与实际操作说明: 一、三级视图核心概念 数据库的三级视图是 ANSI/SPARC 体系结构的核心思想,MySQL 的实现逻辑如下: …...

LLM - Attention Is All You Need 的理解

一:概述 当前主流的序列转换(sequence transduction)模型主要基于复杂的循环神经网络(Recurrent Neural Networks, RNNs)或卷积神经网络(Convolutional Neural Networks, CNNs),这些模型通常包含编码器(encoder)和解码器(decoder)。 性能最优的模型通常通过“ 注意…...

究竟什么是AI提示词?深入解析与实战应用

随着人工智能技术的飞速发展,AI提示词(AI Prompt)逐渐成为自然语言处理(NLP)领域的热门话题。无论是GPT-3、ChatGPT还是其他大型语言模型,提示词都扮演着至关重要的角色。那么,究竟什么是AI提示…...

deep-research开源框架 Agentic Reasoning

Agentic-Reasoning是由牛津大学团队开源的推理框架. 该框架在GPQA博士级科学题库上准确率提升35%,生物学问题得分从62%跃升至79%,显著优于DeepSeek-R1等闭源模型。 特色:Agentic-Reasoning在定义和实现code agent上做的非常出色。可以借鉴。…...

解锁智能变革密码:浙江大学2025年DeepSeek行业应用案例集深度解析

引言:AI技术驱动的时代浪潮 2025年,人工智能技术已从实验室走向千行百业,成为推动社会经济发展的核心引擎。在这一背景下,浙江大学联合DeepSeek团队推出的《2025年DeepSeek行业应用案例集》(以下简称“案例集”&#…...

C# Unity 唐老狮 No.5 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…...

《2025软件测试工程师面试》功能测试篇

什么是功能测试? 功能测试是通过验证产品功能是否满足用户需求的过程,主要关注软件的功能是否符合需求规格说明,包括软件的各种功能、特性、性能、安全性和易用性等。 功能测试的流程包括哪些步骤? 需求分析:明确软件需求,确定测试范围。测试计划:制定详细的测试计划,…...

DeepSeek如何快速开发PDF转Word软件

一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的PDF转Word工具有收费的WPS,免费的有PDFGear,以及在线工具SmallPDF、iLovePDF、24PDF等。然而,大多数免费在线转换工具存在严重隐私风险——文件需上…...

ROS环境搭建

ROS首次搭建环境 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 一、创建工作空间二、创建ROS包三、注意 注:以下内容都是在已经安装好ros的情况下如何搭建workplace 如果没有安装好,建议鱼香ros一步到位:鱼香ROS 我也是装了好久…...

深入探索DeepSeek开源之旅:开源Week全程解析

摘要 在农历新年刚刚结束之际,DeepSeek以卓越的开源精神,连续六天举办了开源Week活动。这一系列活动不仅展示了DeepSeek在技术领域的活跃度和影响力,还彰显了其对开源社区的贡献。通过这次活动,DeepSeek吸引了众多开发者和技术爱好…...

Redis是什么?如何使用Redis进行缓存操作?

Redis(Remote Dictionary Server)是一款高性能的内存键值存储系统,广泛用于缓存、消息队列、会话存储和实时数据处理等场景。它基于内存存储,支持多种数据结构,如字符串、列表、集合、有序集合和哈希表等,具…...

Unity学习笔记之——ugui的性能优化

在Unity中UI优化的核心问题就是重绘和批处理之间的平衡 一、Canvas优化要点 1.优化原因: (1)Unity为了性能优化,会合并Canvas下的所有元素; (2)如果把所有面板放到一个Canvas下,会…...

【三.大模型实战应用篇】【2.智能学员辅导系统:与大模型的深度交互】

早上七点半,初三学生小林打开数学辅导APP,发现AI老师准确指出了他昨晚作业中三次跳步计算的坏习惯——这比他亲妈观察得还细致。这背后是一场发生在代码深处的"脑力风暴",让我们潜入智能辅导系统与大模型深度交互的"暗室",看看那些让教育产生化学反应的…...

【vue-echarts】——04.配置项---legend

文章目录 一、配置项-legend图例二、显示结果一、配置项-legend图例 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 代码如下 Demo4View.vue <template><div class="about">...

面试题02.02.返回倒数第k个节点

实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本题相对原题稍作改动 示例&#xff1a; 输入&#xff1a; 1->2->3->4->5 和 k 2 输出&#xff1a; 4 说明&#xff1a; 给定的 k 保证是有效的。 题解&#xff…...

剑指 Offer II 041. 滑动窗口的平均值

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20041.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC/README.md 剑指 Offer II 041. 滑动窗口的平均值 题目描述 给定一个整数…...

OCR PDF 文件是什么?它包含什么内容?

有些 PDF 文件是通过扫描纸质书页生成的&#xff0c;这类文件有其独特的特点。有时&#xff0c;原始书籍是唯一可用的版本&#xff0c;因此只能通过扫描的方式获取内容。 如何识别 OCR PDF 文件&#xff1f; 你通常可以从外观上辨别 OCR PDF 文件——页面上的文本看起来像“锯…...

什么是最终一致性,它对后端系统的意义是什么

最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…...

CSS3中布局方式说明

CSS3 提供了多种灵活的布局方式&#xff0c;适用于不同的场景和需求。以下是主要的布局方式及其特点&#xff1a; 1. Flexbox 布局&#xff08;弹性盒子&#xff09; 用途&#xff1a;一维布局&#xff08;水平或垂直方向排列元素&#xff09;。特点&#xff1a; 通过 display…...

【开源-常用开源c/c++日志管理模块对比】

[TOC]&#xff08;开源-常用开源c/c日志管理模块对比&#xff09; 项目名称语言优点缺点适用场景开源代码链接spdlogC高性能&#xff0c;支持异步日志&#xff1b;丰富的格式化功能&#xff1b;跨平台&#xff1b;易于集成。依赖C11或更高版本&#xff1b;不适合嵌入式系统。高…...

基于log4j的自定义traceid实现

思路就是spring 做切面拦截请求&#xff0c;切面入口时生成traceId&#xff0c;然后放到MDC里面&#xff08;就是threadLocal&#xff0c;MDC是log框架提供的工具类&#xff0c;能方便在配置文件里面引用插入的值&#xff09;。 切面结束时traceId。 import com.sing.monitor…...

如何在网页上显示3D CAD PMI

在现代制造业中&#xff0c;3D CAD模型已成为产品设计和制造的核心。为了更有效地传达设计意图和制造信息&#xff0c;产品和制造信息&#xff08;PMI&#xff09;被嵌入到3D模型中。然而&#xff0c;如何在网页上清晰、准确地显示这些3D CAD PMI&#xff0c;成为了一个重要的技…...

LLMR: Real-time Prompting of Interactive Worldsusing Large Language Models

LLMR-使用大型语言模型的交互式世界实时建模 ABSTRACT 我们提出了混合现实的大语言模型&#xff08;LLMR&#xff09;&#xff0c;一个使用LLM实时创建和修改交互式混合现实体验的框架。LLMR利用新颖的策略来解决理想训练数据稀缺的困难情况&#xff0c;或者设计目标需要综合内…...

使用 OpenLIT 对 LLM 应用进行可观测

大规模语言模型&#xff08;LLM&#xff09;的可观测性 随着大规模语言模型&#xff08;LLM&#xff09;在各个领域的广泛应用&#xff0c;确保这些模型的稳定性和性能变得至关重要。为了实现这一目标&#xff0c;可观测性&#xff08;Observability&#xff09;成为了一个关键…...

C与C++的区别

C 深度剖析&#xff1a;对比 C 语言的显著差异 在编程的浩瀚宇宙中&#xff0c;C 和 C 堪称两颗耀眼的巨星&#xff0c;各自绽放出独一无二的光彩。C 语言作为经典的结构化编程语言&#xff0c;多年来在系统开发、嵌入式编程等领域始终占据着举足轻重的地位。而 C 作为 C 语言…...

【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?

https://time.geekbang.org/column/article/118826 2.6 渲染流程&#xff08;下&#xff09;&#xff1a;HTML、CSS和JavaScript&#xff0c;是如何变成页面的&#xff1f; 2.5介绍了渲染流水线中的 DOM 生成、样式计算和布局三个阶段&#xff0c;2.6讲解渲染流水线后面的阶段…...

开放鸿蒙认证,OpenHarmony兼容性认证介绍

Ⅰ、OpenHarmony开放鸿蒙兼容性测试认证&#xff1a;使用官方测试套件&#xff0c;对照PCS自检表中的必测项&#xff0c;在本地搭建的环境中对伙伴设备进行预测&#xff0c;直至取得合格的兼容性测试报告。 注&#xff1a;2025年01月01日起&#xff0c;不支持新产品基于老分支…...

磁盘空间不足|如何安全清理以释放磁盘空间(开源+节流)

背景&#xff1a; 最近往数据库里存的东西有点多&#xff0c;磁盘不够用 查看磁盘使用情况 df -h /dev/sda5&#xff08;根目录 /&#xff09; 已使用 92% 咱们来开源节流 目录 背景&#xff1a; 一、开源 二、节流 1.查找 大于 500MB 的文件&#xff1a; 1. Snap 缓存…...

【2】好未来JAVA开发工程师部分笔试题解析

编程题 1.降序的子数组最大元素和 给你一个正整数组成的数组nums&#xff0c;返回nums中一个降序子数组的最大可能元素和。 子数组是数组中的一个连续数字序列。 已知子数组[nums l, nums l1, … , nums r-1, nums r]&#xff0c;若对所有l (1<i<r)&#xff0c;nums …...

LeetCode 21. 合并两个有序链表(Python)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[] 示例 3&#xff1a; 输…...

Y3学习打卡

网络结构图 YOLOv5配置了4种不同大小的网络模型&#xff0c;分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;其中 YOLOv5s 是网络深度和宽度最小但检测速度最快的模型&#xff0c;其他3种模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大&#xff0c;在增强…...

2025-3-3 二叉树的存储结构

一、二叉树的存储结构&#xff08; 顺序存储&#xff0c;链式存储&#xff09; 1.顺序存数--&#xff08;用数组&#xff09; &#xff08;完全二叉树&#xff09;常考的基本操作&#xff1a; i 的左孩子 -----2i 右孩子-----2i1 i的父节点-----[i/2] 向下取整 i所在的层…...

RK3588V2--ES8388声卡适配记录

RK3588V2--ES8388声卡适配记录 1. ES8388声卡简单介绍2. 适配过程2.1 设备树配置 3. 问题分析与解决3.1 现声卡平台设备, 最终注册失败3.2 系统查看 I2C 设备3.3 怀疑是没有上拉电阻&#xff1f; 4. 测试阶段4.1 耳机接口测试--OK4.2 MIC测试--无法使用 5. 分析总结 1. ES8388声…...

【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II

[【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II] 题目 查看提交统计提问 总时间限制: 2000ms 内存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…...

PySide(PyQT)的视图(QGraphicsView)范例(一) 基本框架

最近学习了视图&#xff08;QGraphicsView&#xff09;的知识&#xff0c;总结一下&#xff0c;做一个demo以备忘。在demo中使用了场景&#xff08;QGraphicsScene&#xff09;、矩形框&#xff08;QGraphicsRectItem&#xff09;等构件&#xff0c;以及演示了常用的设置方法和…...

opencv 模板匹配方法汇总

在OpenCV中&#xff0c;模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法&#xff0c;通过cv2.matchTemplate函数实现&#xff0c;该函数支持的匹配方式主要有以下6种&#xff0c;下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...

_mm_shuffle_epi32解析

一 概述 _mm_shuffle_epi32和_MMSHUFFLE是与SSE指令集相关的开发工具&#xff0c;主要用于SIMD向量操作。 二 _mm_shuffle_epi32 函数 功能&#xff1a;对128位整数向量(__m128i)中的四个32位整数进行重排序 原型&#xff1a;__m128i _mm_shuffle_epi32 (__m128i a, int imm…...

Tauri+React+Ant Design跨平台开发环境搭建指南

TauriReactAnt Design跨平台开发环境搭建指南 一、环境配置与工具链搭建 1.1 基础环境准备 必备组件&#xff1a; Rust工具链&#xff08;v1.77&#xff09;&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh Node.js LTS&#xff08;v20.11.1&a…...

《基于Selenium的论坛系统自动化测试实战报告》

一、项目背景与技术选型 项目简介 目标系统&#xff1a;论坛系统 核心功能&#xff1a;用户注册/登录、会话框发送信息、好友列表、信息发送 技术栈&#xff1a;html Springboot MySQL数据库 为什么选择Selenium 支持多浏览器兼容性测试&#xff08;Chrome/Firefox/Edge&…...