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

【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用

🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈

在这里插入图片描述

文章目录

  • 1. LoadRunner 是什么?
  • 2. LoadRunner 安装
    • 前提:浏览器的选择 —— IE / 360极速浏览器
  • 3. 为什么选择 LoadRunner?
  • 4. 介绍 LoadRunner 三大组件
  • 5. LoadRunner 相关使用
    • 5.1 前置知识:了解 WebTours 系统
      • 5.1.1 WebTours 如何启动?
      • 5.1.2 WebTours 配置
    • 5.2 组件一:Virtual User Generator
      • 5.2.1 脚本录制
        • 💛脚本录制
        • 💛编译
        • 💛运行(回放)
      • 5.2.2 脚本加强
        • 💛为什么要脚本加强
        • 💛如何脚本加强?
    • 5.3 组件二:Controller
      • 5.3.1 Controller 的打开方式
      • 5.3.2 场景的设计
      • 5.3.3 场景的运行
    • 5.4 组件三:Analysis
      • 5.4.1 测试场景运行执行完成后生成测试报告
      • 5.4.2 测试报告

本期内容主要介绍性能测试工具 —— LoadRunner,上一篇文章已经介绍了性能测试相关内容以及概念,可回顾:【软件测试】性能测试 —— 基础概念篇

1. LoadRunner 是什么?

LoadRunner 是一款开源桌面应用性能测试软件,主要用于评估软件系统,如 Web应用、移动应用、企业级ERP系统等在不同负载条件下的性能表现。它通过模拟大量虚拟用户(Virtual Users, VUsers)同时访问系统,帮助测试人员发现性能瓶颈、验证系统稳定性,并优化系统架构以满足性能需求。

2. LoadRunner 安装

前提:浏览器的选择 —— IE / 360极速浏览器

其它浏览器在录制脚本时会可能存在一定的问题,为了保险起见,我们这里选择 IE 浏览器或者 360极速浏览器

现在电脑貌似默认浏览器不是 IE,是 Edge 浏览器了,没有 IE 浏览器的话,这里推荐 360 极速浏览器~

下载 360 极速浏览器(注意是360极速浏览器,不是360浏览器哦!!)

或者使用 LoadRunner 自带的浏览器可以录制到,并且代码很少,无需删减 ~

以 Loadrunner12 为例,以下为安装过程:

Loadrunner 下载安装包:【点击这里】

  1. 双击 HP LoadRunner 12.53 Community Edition.exe 启动安装程序

在这里插入图片描述

  1. 安装程序开始解压,选择默认路径或者指定路径,点击 install

在这里插入图片描述

  1. Loadrunner 程序会使用到 Visual C++ 的库,如果缺少这些库,安装程序会提示安装,此时,选择 “确定” 进行安装即可,如过程中提示重启,按要求重启即可,重启后会继续进行安装过程

在这里插入图片描述

  1. 按照默认操作一步步进行安装(安装的过程可能不是特别快,耐心等待哦~)
  2. 安装过程中会有如下的提示,这里不勾选指定代理证书!!! 去掉勾选!【重要】

在这里插入图片描述

  1. 安装完成后,界面会出现如下 3 个图标,说明安装成功!

在这里插入图片描述

此时,就安装成功啦!!!

3. 为什么选择 LoadRunner?

我们可能在接触性能测试前,就听说过一些测试工具,如 Jmeter、LoadRunner 等,在这里说明本期内容选择讲解 LoadRunner 工具的原因,有以下 3 点:

  • Jmeter 没有录制功能(对于初学者,可能不太友好),LoadRunner 有录制功能
  • LoadRunner 可以设计非常丰富的测试场景
  • 相比于 Jmeter 而言,LoadRunner 能够产生非常丰富的测试报告

市面上几款性能测试工具对比:

工具核心优势使用场景
LoadRunner协议支持全面适合复杂企业级应用 金融、电信等对性能要求严苛的行业
JMeter开源免费,社区活跃中小型项目或API性能测试
Gatling高性能,基于Scala编写脚本高性能,基于Scala编写脚本
Locust分布式扩展性强,支持Python脚本需要灵活自定义负载模型的场景

4. 介绍 LoadRunner 三大组件

从安装成功后,我们可以看到三个图标,分别是 Virtual User Generator、Controller、Analysis

  1. 三大组件作用
    Virtual User Generator录制脚本,编写脚本
    Controller设计场景,运行场景
    Analysis产生性能测试报告
  2. 三大组件之间的关系
    在这里插入图片描述

5. LoadRunner 相关使用

本期内容要录制的这个系统,是 LoadRunner 自带的一个系统 —— WebTours,LoadRunner 为了让用户熟练使用该工具,给大家提供了这样的一个项目~

5.1 前置知识:了解 WebTours 系统

5.1.1 WebTours 如何启动?

找到自己安装 LoadRunner 的路径,点击 Web,里面有 Start HP Web Tours Server,双击即可启动!

方式一】本机部署

在这里插入图片描述

双击后,出现这样一个黑框,则启动成功!(这里是在自己的主机上部署)

在这里插入图片描述
这里也可以看到提示,如果按 Ctrl+C 或者关闭界面,就访问不到了~

方式二】远程部署

在这里插入图片描述
在这里插入图片描述

5.1.2 WebTours 配置

在这里插入图片描述
双击 HP Web Tours Application,可以看到如下:

在这里插入图片描述
点击 sign up now,进行注册

在这里插入图片描述
注册成功后,登录进来了~ 如下:

在这里插入图片描述
特别说明

1)端口号如何查看?

之前启动 WebTours,会给一个 IP 地址(目前笔者打开并未提供端口号,直接本地部署),通过 WebTours > conf > httpd.conf 中,会给出端口号,有了IP和端口号,就可以访问服务器部署的服务~

在这里插入图片描述

2) 用户信息如何查看?

在这里插入图片描述

WebTours 通过 WebTours > cgi-bin > users,可以看到用户的信息,文件名就是登录 WebTours 的账号,打开文件后,文件内容的第一行就是当前账号登录密码

5.2 组件一:Virtual User Generator

5.2.1 脚本录制

💛脚本录制

我们这里对 WebTours 登录进行录制~ 主要分为以下 4 个步骤:

  • 启动 WebTours
  • 使用 Virtual User Generator 进行录制
  • 简化脚本代码
  • 针对脚本进行加强

接着,我们一起具体去看看吧~

双击 【Virtual User Generator】 图标,打开【Virtual User Generator】

步骤一点击 New Script and Solution 创建

在这里插入图片描述
点击后,出现这样一个界面,我们根据自己需要选择对应的协议,基于这里,我们对 WebTours 系统做性能测试,是 Web 项目,因此,我们选择 Web-HTTP/HTML 协议(没找到的小伙伴,可以对界面进行左右滚动)点击 【Create】即可创建

特别说明】在公司里,如果我们要做性能测试,不知道用什么协议,怎么做呢?
这里就不用慌啦~ 直接与开发去沟通即可~ 很多小伙伴可能比较担心,笔者目前也是在实习阶段(第二段实习ing),在笔者第一段实习中,总是害怕麻烦别人,不是很敢去问,和 leader 沟通一下,一定要去问!! 组里的同事都是很好的,也很耐心讲解,也可以专门约人 one to one 解答,很多业务相关的,不问是很难自己弄清楚的~不问不清楚怎么完成好任务捏!当然,能通过自己解决的,就尽量自己解决,笔者喜欢自己先思考解决,或者找相应的文档,实在解决不出来,整理好相关的问题,描述好问题,去请教组里的同事,所以,小伙伴们也不用担心哦!

在这里插入图片描述
在这里插入图片描述

创建后,打开页面如下,先来认识这几个参数~

在这里插入图片描述

步骤二点击录制按钮

在这里插入图片描述
点击录制后,会出现这样一个安全警告,选择【是(Y)】即可~

在这里插入图片描述

出现这个组件的时候,证明当前脚本已经开始录制了~

在这里插入图片描述
步骤三录制过程

接下来,我们录制登录这样一个过程~ 点击开始录制后,操作该页面进行登录,最后停止录制,代码即可生成啦~

在这里插入图片描述

步骤四脚本进行删减

我们只需要登录这个操作的脚步,事实上,会录制很多脚本进去,导致代码很长,我们需要进行手动删减~

在这里插入图片描述

我们也可以自己编写登录这个代码,脚本录制的意义就是根据录制过程生成代码而不需要自己写~

Action()
{web_url("login","URL=http://127.0.0.1:1080/WebTours/","TargetFrame=","Resource=0","Referer=",LAST);web_submit_form("login",ITEMDATA,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,LAST);return 0;
}
💛编译

在这里插入图片描述

💛运行(回放)

在这里插入图片描述
Q1:脚本中加上了思考时间lr_think_time(27);,为什么运行结果没有思考时间?
A1:需要在 Runtime Settings 中设置,将 【Ignore think time】 的勾选改为勾选 【Replay think time as recorded】

在这里插入图片描述
在这里插入图片描述

5.2.2 脚本加强

💛为什么要脚本加强

我们知道,性能测试指标有并发数,CPU 相关指标,通过这个简单的脚本,并不能监控到这些指标,比如上述脚本,我们并没有并发的场景产生,因此,有了脚本加强!

注册函数,一定要在请求之前,否则会报错
选了参数,更改日志

💛如何脚本加强?
  1. 事务插入

概念理解】事务简单理解就是一组独立的操作

具体操作】函数:开始事务:lr_start_transaction("login"); 结束事务:lr_end_transaction("login", LR_AUTO);

使用工具:点击【View】中的 【Steps Toolbox】,可以搜索对应的事务

在这里插入图片描述
注意事项:事务必须要有开始和结束,并且开始事务和结束事务之间的事务名称必须一致

  1. 插入集合点

概念理解】在 LoadRunner 中为了达到并发这个机制,引入集合,让用户同时发送请求

集合,我们可以想象,比如一群人集合在一起,并发就是大量用户同时去访问,这里的集合就对应并发,假设后续我们创建了 100W 个虚拟用户去执行编写好的性能测试脚本,为了模拟并发这个操作,让这 100w 个虚拟用户集合在一起,在满足条件后同时执行下一个步骤,这样就达到一个并发的效果~ (为什么这 100w 个用户达到某个点的时间不一样,因为每个用户的设备不同,网络因素不同等,如果不进行特殊处理,那么它们达到某个点的时间就是不一致的)

具体操作】函数:lr_rendezvous("rendezous1");

在这里插入图片描述

  1. 插入检查点

概念理解】检查点是为了检查 Web 服务器返回的网页是否正确,允许插入 Text 检查点来验证网页上是否存在指定的 Text

具体操作】函数:web_reg_find();

在这里插入图片描述

注意事项:检查点的函数是注册类函数,需要放在检查页面的请求之前,检查执行请求后页面中有无该元素

  1. 参数化

概念理解】模拟多个用户登录时,需使用不同的账号,复制代码修改用户名和密码参数是不合理的,使用参数化即可解决这个问题

具体操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意!!! 如果想在执行日志中看到使用参数的具体信息,则需要修改日志展示级别,修改方式如下:

在这里插入图片描述
同时,修改 Action 脚本的执行次数,这样就会执行 2 次 Action 脚本了~(注意!!!这里只是改执行 Action 次数,init 和 end 仍然只执行一次)

在这里插入图片描述

  1. 打印日志

具体操作

函数:lr_log_message 或者 lr_output_message

在这里插入图片描述
脚本如下:

Action()
{web_url("login","URL=http://127.0.0.1:1080/WebTours/","TargetFrame=","Resource=0","Referer=",LAST);// 插入检查点web_reg_find("Fail=NotFound","Search=All","SaveCount=","Text=Welcome",LAST);// 这里创建一个集合点lr_rendezvous("rendezous1");// 开启事务lr_start_transaction("login");web_submit_form("login",ITEMDATA,"Name=username", "Value={username}", ENDITEM,"Name=password", "Value={password}", ENDITEM,LAST);// 如果当前用户是xxxx,则输出xxxx hello!if(strcmp("xxxx",lr_eval_string("{username}")) == 0) {lr_log_message("%s hello!",lr_eval_string("{username}"));}// 结束事务lr_end_transaction("login", LR_AUTO);lr_log_message("登录成功");return 0;
}

相关日志对应如下:

在这里插入图片描述

5.3 组件二:Controller

5.3.1 Controller 的打开方式

Controller 的打开方式有 2 种,如下:

方式一通过 Virtual User Generator 打开

在这里插入图片描述
(补充说明:一个场景就是一个 Scenario)

在这里插入图片描述
Q:什么是压力产生器呢?
A:压力产生器也叫施压机器,这里的压力产生器就是 localhost,我们用户用本机去发送的一个请求
施压机器:发起请求的角色,用户本地电脑
被压机器:处理请求的角色,服务器

方式二直接双击 Controller 图标打开
在这里插入图片描述
在这里插入图片描述

5.3.2 场景的设计

通过这个页面 Design,我们可以先简单的进行设计~ 具体解释如下图:

在这里插入图片描述

Q:有同学就有疑惑了,为什么不在 Virtual User Generator 中直接进行运行呢 ?
A:因为在 Virtual User Generator 直接运行脚本,无法达到性能测试的目的,即无法监控性能测试的指标

选择了上述的 4 个选项后, LoadRunner 给出了预估虚拟用户的调度图,如下:

在这里插入图片描述

5.3.3 场景的运行

  1. 点击 Run,进入运行场景页面,如下:

在这里插入图片描述
在这里插入图片描述
如果选择了,仍然没有展示 8 个图表,如下图,需要重新进去打开(这是 LoadRunner 的一个 Bug ~)

在这里插入图片描述

  1. 运行场景页面解释,如下:

在这里插入图片描述

  1. 详细讲解监控指标,如下:

在这里插入图片描述

  1. 添加系统资源监视

首先需要在系统服务中打开对应的服务:RemoteRegistry 和 RpcSs

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择我们想要保留查看的系统数据,其它的 Delete 即可

  1. 运行场景

在这里插入图片描述
运行场景结束后,可以根据图表看看相关数据 ~

5.4 组件三:Analysis

5.4.1 测试场景运行执行完成后生成测试报告

设置执行完成测试后自动生成测试报告,如下:

在这里插入图片描述

5.4.2 测试报告

在这里插入图片描述
小 Tips:可以合并图表进行对比查看
在这里插入图片描述

可以看到点击率和吞吐量的图,趋势一致~ 但是吞吐量曲线稍微延后一些,如下:
原因:吞吐量表示的是响应的数据交互量,先有请求后有返回,因此吞吐量曲线稍微延后一些

在这里插入图片描述
Q:如果请求变多但是吞吐量没有什么变化,原因可能有什么?
A:

  • 服务器响应变慢,来不及响应
  • 压力没有给到服务器
  • 服务器有一定的阈值,超过阈值请求不载响应

从上面的问题也可以看到,性能测试不仅是执行的内容,更是需要对性能测试报告的分析,通过性能测试报告,去发现一些问题~ 性能测试这方面,还有很多需要学习和探索~

💛💛💛本期内容回顾💛💛💛

在这里插入图片描述
✨✨✨本期内容到此结束啦~

相关文章:

【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. LoadRunner 是什么?2. LoadRunner 安装前提:浏览器的选择 —— IE / 360极速浏览器…...

Linux面试题集合(6)

创建多级目录或者同级目录 mkdir -p 文件名/文件名/文件名 mkdir -p 文件名 文件名 文件名 Linux创建一个文件 touch 文件名 DOS命令创建文件 echo 内容>文件名(创建一个有内容的文件) echo >文件名(创建一个没有内容的文件&#xff09…...

技术测评:小型单文件加密工具的功能解析

最近在测试一款名为OEMexe的文件加密工具,发现它确实有一些独特之处值得分享。这款软件体积非常小巧,仅209KB,属于绿色单文件版程序,无需安装即可直接运行。 主要特点 多格式支持:能够处理多种常见文件格式&#xff0…...

06、基础入门-SpringBoot-依赖管理特性

06、基础入门-SpringBoot-依赖管理特性 Spring Boot 的依赖管理特性是其核心优势之一,极大地简化了项目的构建和维护过程。以下是其主要特点: ## 1. 父项目依赖管理 ### 1.1 继承 spring-boot-starter-parent 在 pom.xml 文件中,通过继承 spr…...

基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真

基于 Python 的界面程序复现:标准干涉槽型设计计算及仿真 在工业设计与制造领域,刀具的设计与优化是提高生产效率和产品质量的关键环节之一。本文将介绍如何使用 Python 复现一个用于标准干涉槽型设计计算及仿真的界面程序,旨在帮助工程师和…...

我的创作纪念日——《惊变256天》

我的创作纪念日——《惊变256天》 机缘收获日常成就憧憬 最近,博主收到了 CSDN 发来的系统消息,这才惊觉,自上次第128天创作纪念日之后,竟又悄然走过了 128 天。站在 256 天这个颇具意义的里程碑前回望,博主在2023 年 …...

Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器

目录 1. 回显服务器 -- echo server 1.1 相关函数介绍 1.1.1 socket() 1.1.2 bind() 1.1.3 recvfrom() 1.1.4 sendto() 1.1.5 inet_ntoa() 1.1.6 inet_addr() 1.2 Udp 服务端的封装 -- UdpServer.hpp 1.3 服务端代码 -- UdpServer.cc 1.4 客户端代码 -- UdpClient.…...

回溯法理论基础 LeetCode 77. 组合 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合

目录 回溯法理论基础 回溯法 回溯法的效率 用回溯法解决的问题 如何理解回溯法 回溯法模板 LeetCode 77. 组合 回溯算法的剪枝操作 LeetCode 216.组合总和III LeetCode 17.电话号码的字母组合 回溯法理论基础 回溯法 回溯法也可以叫做回溯搜索法,它是一…...

LeetCode --- 156双周赛

题目列表 3541. 找到频率最高的元音和辅音 3542. 将所有元素变为 0 的最少操作次数 3543. K 条边路径的最大边权和 3544. 子树反转和 一、找到频率最高的元音和辅音 分别统计元音和辅音的出现次数最大值,然后相加即可,代码如下 // C class Solution {…...

第五项修炼:打造学习型组织

最近一直接到的需求,都是公司董事长或总经理都特别推崇《第五项修炼:打造学习型组织》的内容,让各个层级的管理者都持续学习、应用、实践。我不禁开始反思,这背后到底隐藏着什么原因? 随着商业环境的变化和复杂性的增加…...

Bellman - Ford 算法与 SPFA 算法求解最短路径问题 ——从零开始的图论讲解(4)

目录 前言 为什么Dijkstra算法面对负权值图会有误差??? 举例说明 什么是Bellman -Ford算法? BF算法的核心思想 什么是松弛 为什么最多松弛N-1次? 代码实现 举例 初始状态(dist[] 数组) 第 1 轮松弛(遍历所有边) …...

Python训练营打卡 Day27

函数专题2:装饰器 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 昨天我们接触到了函数大部分的功能,然后在你日常ctrl点进某个复杂的项目,发现函数上方有一个xxx,它就是装饰器 装饰器本质…...

初识计算机网络。计算机网络基本概念,分类,性能指标

初识计算机网络。计算机网络基本概念,分类,性能指标 本系列博客源自作者在大二期末复习计算机网络时所记录笔记,看的视频资料是B站湖科大教书匠的计算机网络微课堂,祝愿大家期末都能考一个好成绩! 视频链接地址 一、…...

5月16日day27打卡

函数专题2:装饰器 知识点回顾: 装饰器的思想:进一步复用函数的装饰器写法注意内部函数的返回值 作业: 编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值) logger def …...

【生成式AI文本生成实战】DeepSeek系列应用深度解析

目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...

【Pandas】pandas DataFrame kurt

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 安恒[实习]安全服务工程师 1. SQLMap爆出当前库名的参数是什么? 2. Nmap探测系统的参数&am…...

在 Visual Studio Code (VSCode) 中配置 MCP(Model Context Protocol)

前提条件 安装 VSCode:确保已安装最新版本的 VSCode(建议使用 1.99 或以上版本,支持 MCP)。安装 GitHub Copilot 扩展:MCP 通常与 GitHub Copilot 的代理模式(Agent Mode)结合使用,…...

顶层架构 - 消息集群推送方案

一、推送基础概念简述 在即时通讯(IM)系统中,最基础的一件事就是“如何把消息推送给用户”。为了实现这个过程,我们要先了解两种常见的网络通信方式:HTTP 和 WebSocket。 1. HTTP 是什么? HTTP 就像一次性…...

C++性能测试工具——Vtune等的介绍

一、介绍 我们在前面的相关文章中对C性能的测试和分析工具(见“C性能测试工具gprof和gperftools基础”等)有一个初步的了解和应用,其实类似的相关工具还有不少。为了进一步的让开发者们掌握更多的相关性能测试分析相关的方法,对另…...

车道线检测----CLRKDNet

今天的最后一篇 车道线检测系列结束 CLRKDNet:通过知识蒸馏加速车道检测 摘要:道路车道是智能车辆视觉感知系统的重要组成部分,在安全导航中发挥着关键作用。在车道检测任务中,平衡精度与实时性能至关重要,但现有方法…...

【AI模型部署】

解决python引入huggingface_hub模块下载超时问题 背景问题解决 背景 AMD Ryzen™ AI处理器通过独特的NPUGPU异构架构,为AI工作负载提供强大的并行计算能力。本方案展示了如何将YOLOv8目标检测、RCAN超分辨率重建和Stable Diffusion文生图三类模型分别部署到NPU和GP…...

排序01:多目标模型

用户-笔记的交互 对于每篇笔记,系统记录曝光次数、点击次数、点赞次数、收藏次数、转发次数。 点击率点击次数/曝光次数 点赞率点赞次数/点击次数 收藏率收藏次数/点击次数 转发率转发次数/点击次数 转发是相对较少的,但是非常重要,例如转发…...

电子电器架构 --- Zonal架构正在开创汽车电子设计新时代

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?

阅读和解析 TCC(Tiny C Compiler) 的源代码需要对编译器的基本工作原理和代码结构有一定的了解。以下是分步骤的指南,帮助你更高效地学习和理解 TCC 的源代码: 1. 前置知识准备 C 语言基础:TCC 是用 C 语言编写的&…...

Java 泛型与类型擦除:为什么解析对象时能保留泛型信息?

引言&#xff1a;泛型的“魔术”与类型擦除的困境 在 Java 中&#xff0c;泛型为开发者提供了类型安全的集合操作&#xff0c;但其背后的**类型擦除&#xff08;Type Erasure&#xff09;**机制却常常让人困惑。你是否遇到过这样的场景&#xff1f; List<String> list …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(22):复习

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(22):复习 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)复习(2)復習3、单词(1)日语(2)日语片假名单词4、对话练习5、单词辨析记录6、总结1、前言 (1)情况说明 自己在今年,在日本留学中,目前在语言学校,…...

Java基础学习

Java 基础大纲 1. Java 概述 Java 语言特点&#xff08;跨平台、面向对象、自动内存管理&#xff09; JVM、JRE、JDK 的作用与区别 开发环境搭建&#xff08;安装 JDK、配置环境变量、IDE 使用&#xff09; 2. 基础语法&#xff08;已经学习&#xff09; 变量与数据类型&a…...

MGX:多智能体管理开发流程

MGX的多智能体团队如何通过专家混合系统采用全新方法,彻底改变开发流程,与当前的单一智能体工具截然不同。 Lovable和Cursor在自动化我们的特定开发流程方面取得了巨大飞跃,但问题是它们仅解决软件开发的单一领域。 这就是MGX(MetaGPT X)的用武之地,它是一种正在重新定…...

2025第三届盘古石杯初赛(计算机部分)

前言 比赛的时候时间不对&#xff0c;打一会干一会&#xff0c;导致比赛时候思路都跟不上&#xff0c;赛后简单复现一下&#xff0c;希望大家批批一下 计算机取证 1、分析贾韦码计算机检材&#xff0c;计算机系统Build版本为&#xff1f;【标准格式&#xff1a;19000】 183…...

XML介绍及常用c及c++库

一.xml概述 1.什么是XML&#xff1f; XML&#xff08;eXtensible Markup Language&#xff09;是一种标记语言&#xff0c;1998 年 2 月&#xff1a;XML 1.0 发布&#xff0c;用于存储和传输结构化数据。与HTML专注于数据显示不同&#xff0c;XML专注于数据本身及其结构。 它…...

动态规划-63.不同路径II-力扣(LeetCode)

一、题目解析 与62.不同路径不同的一点是现在网格中有了障碍物&#xff0c;其他的并没有什么不同 二、算法解析 1.状态表示 dp[i][j]表示&#xff1a;到[i,j]位置时&#xff0c;不同的路径数 2.状态转移方程 由于多了障碍物&#xff0c;所以我们要判断是否遇到障碍物 3.初…...

海盗王3.0的数据库3合1并库处理方案

原版的海盗王数据库有3个accountserver&#xff0c;gamedb&#xff0c;tradedb&#xff0c;对应到是账号数据库&#xff0c;游戏数据库&#xff0c;商城数据库。 一直都有个想法&#xff0c;如何把这3个库合并到一起&#xff0c;这样可以实现一些功能。 涉及到sqlserver的数据库…...

Vue百日学习计划Day16-18天详细计划-Gemini版

重要提示&#xff1a; 番茄时钟&#xff1a; 每个番茄钟为25分钟学习&#xff0c;之后休息5分钟。每完成4个番茄钟&#xff0c;进行一次15-30分钟的长休息。动手实践&#xff1a; DOM 操作和事件处理的理解高度依赖于实际编码。请务必在浏览器中创建 HTML 页面&#xff0c;并配…...

【C++】15.并发支持库

本篇内容参考自cplusplus 1. thread 1.1 thread thread库底层是对各个系统的线程库&#xff08;Linux下的pthread库和Windows下Thread库&#xff09;进行封装。C11thread库的第一个特点是可以跨平台&#xff0c;第二个特点是Linux和Windows下提供的线程库都是面向过程的&…...

Linux系统编程——exec族函数

我们来完整、系统、通俗地讲解 Linux 系统编程中非常重要的一类函数&#xff1a;exec 族函数&#xff08;也叫 exec family&#xff09;。 一、什么是 exec&#xff1f; exec 系列函数的作用是&#xff1a; 用一个新的程序&#xff0c;替换当前进程的内容。 也就是说&#xf…...

职教实训室中的写实数字人:技术与应用方案

在当今快速发展的数字化时代&#xff0c;职业教育的重要性日益凸显。面对传统教学模式中个性化不足、互动性差等挑战&#xff0c;深声科技基于2D写实交互数字人的解决方案为职教实训室带来了全新的变革。本文将详细介绍该技术方案的核心原理、产品特色及其在职业培训中的实际应…...

Nginx模块配置与请求处理详解

Nginx 作为模块化设计的 Web 服务器,其核心功能通过不同模块协同完成。以下是各模块的详细配置案例及数据流转解析: 一、核心模块配置案例 1. Handler 模块(内容生成) 功能:直接生成响应内容(如静态文件、重定向等) # 示例1:静态文件处理(ngx_http_static_module)…...

54. 螺旋矩阵

题目链接&#xff1a; a54. 螺旋矩阵 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 题目分析&#xff1a; 改题目需要判断是否溢出边界&#xff0c;与59不同&#xff0c;59可以判断是否为0…...

virtualbox虚拟机中的ubuntu 20.04.6安装新的linux内核5.4.293 | 并增加一个系统调用 | 证书问题如何解决

参考文章&#xff1a;linux添加系统调用【简单易懂】【含32位系统】【含64位系统】_64位 32位 系统调用-CSDN博客 安装新内核 1. 在火狐下载你需要的版本的linux内核压缩包 这里我因为在windows上面下载过&#xff0c;配置过共享文件夹&#xff0c;所以直接复制粘贴通过共享文…...

代码随想录算法训练营第三十八天打卡

今天是动态规划的第三天&#xff0c;昨天的不同路径与整数分解的几道题目大家理解得如何&#xff1f;如果有疑问大家还是多去想想dp数组究竟是什么含义&#xff0c;还有我的状态转移是否正确&#xff0c;初始化是否正确&#xff0c;这一点很重要&#xff0c;今天的题目依旧是跑…...

【论信息系统项目的整合管理】

论信息系统项目的整合管理 某省机场管理集团航空货运站原有物流生产信息系统无法满足机场货运站生产信息与航空公司、对方航站、进出口航空货物按海关监管要求电子报关等行业信息实时共享发展需要&#xff0c;生产信息需多次重复录入问题已成为业务发展最大瓶颈&#xff0c;急需…...

小学数学题批量生成及检查工具

软件介绍 今天给大家介绍一款近期发现的小工具&#xff0c;它非常实用。 软件特点与出题功能 这款软件体积小巧&#xff0c;不足两兆&#xff0c;具备强大的功能&#xff0c;能够轻松实现批量出题。使用时&#xff0c;只需打开软件&#xff0c;输入最大数和最小数&#xff0c…...

Python线性回归:从理论到实践的完整指南

Python线性回归&#xff1a;从理论到实践的完整指南 线性回归是数据科学和机器学习中最基础且最重要的算法之一。本文将深入探讨如何使用Python实现线性回归&#xff0c;从理论基础到实际应用&#xff0c;帮助读者全面理解这一重要的统计学和机器学习方法。 什么是线性回归&a…...

python 爬虫框架介绍

文章目录 前言一、Requests BeautifulSoup&#xff08;基础组合&#xff09;二、Scrapy&#xff08;高级框架&#xff09;三、PySpider&#xff08;可视化爬虫&#xff09;四、Selenium&#xff08;浏览器自动化&#xff09;五、Playwright&#xff08;新一代浏览器自动化&…...

强化学习算法实战:一个例子搞懂sarsa、dqn、ddqn、qac、a2c及其区别

简介 在学习强化学习算法&#xff1a;sarsa、dqn、ddqn、qac、a2c、trpo、ppo时&#xff0c;由于有大量数学公式的推导&#xff0c;觉得十分晦涩&#xff0c;且听过就忘记了。 但是当把算法应用于实战时&#xff0c;代码的实现要比数学推导直观很多。 接下来通过不同的算法实现…...

文章记单词 | 第86篇(六级)

一&#xff0c;单词释义 pretty /ˈprɪti/- adj. 漂亮的&#xff1b;相当的 /adv. 相当地labour /ˈleɪbə(r)/- n. 劳动&#xff1b;劳工&#xff1b;分娩 /v. 劳动&#xff1b;努力&#xff08;英式英语&#xff0c; labor&#xff09;imaginary /ɪˈmdʒɪnəri/- adj. …...

firewall防火墙

一.Firewalld 防火墙概述 1.firewalld 简介 firewalld 的作用是为包过滤机制提供匹配规则(或称为策略)&#xff0c;通过各种不同的规则告诉netfilter 对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙,firewa11d 提供了…...

TII-2024《AGP-Net: Adaptive Graph Prior Network for Image Denoising》

推荐深蓝学院的《深度神经网络加速&#xff1a;cuDNN 与 TensorRT》&#xff0c;课程面向就业&#xff0c;细致讲解CUDA运算的理论支撑与实践&#xff0c;学完可以系统化掌握CUDA基础编程知识以及TensorRT实战&#xff0c;并且能够利用GPU开发高性能、高并发的软件系统&#xf…...

Pageassist安装(ollama+deepseek-r1)

page-assist网站&#xff1a;https://github.com/n4ze3m/page-assist 首先电脑配置node.js&#xff0c;管理员打开命令窗口输入下面命令下载bun npm install -g buncd 到你想要安装page-assist的地方&#xff08;推荐桌面&#xff09; 输入下列命令 git clone https://gith…...