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

探秘 JMeter 前置处理器:让性能测试如虎添翼

想象一下,你是一位超级英雄,要对一个庞大的虚拟城市(Web 应用)进行全面的 “健康检查”。JMeter 就是你的神奇工具包,而其中的前置处理器,就像是这个工具包里的各种超级武器,能帮助你轻松应对各种复杂的测试任务。今天,就让我们一起深入了解这些强大的武器,看看它们如何在实际工作中发挥巨大作用。

HTML 链接解析器(HTML Link Parser)

实际场景引入

假如你在测试一个新闻资讯网站,这个网站上有大量的文章链接,还有用户评论表单。你需要模拟用户浏览文章、点击链接查看详情,以及提交评论的操作。要是手动一个个去添加这些链接和表单到测试计划里,那可太麻烦啦!这时候,HTML 链接解析器就像一个勤劳的小助手,能帮你自动搞定这些繁琐的工作。

工作原理详解

当 JMeter 向服务器请求一个网页后,服务器会返回一堆 HTML 代码。HTML 链接解析器就像是一个精通 HTML 语言的 “侦探”,它会仔细地在这堆代码里寻找链接(也就是那些<a>标签里的href属性)和表单(<form>标签)。一旦找到,就把它们提取出来,整理得井井有条,方便 JMeter 后续使用。

操作步骤与示例

  1. 打开 JMeter,新建一个测试计划。就像你要搭建一个测试的 “战场”,先把场地准备好。
  2. 添加一个线程组,假设我们设置 10 个线程,这就好比安排 10 个 “小战士” 同时去执行任务。
  3. 在线程组下添加一个 HTTP 请求,输入你要测试的新闻网站首页地址。
  4. 接着,在线程组下添加 “HTML Link Parser” 前置处理器。
  5. 运行测试,你会发现,在结果树里,所有的文章链接和评论表单都被解析出来了,就像小助手给你整理好了一份清单。
    在这里插入图片描述

HTTP URL 重写修改器(HTTP URL Re - writing Modifier)

工作场景介绍

你在测试一个在线商城,这个商城为了防止用户信息被窃取,采用了一种特殊的方式来保存用户登录后的会话信息,就是把会话 ID 藏在 URL 里,每次请求的 URL 都会被重写。这时候,JMeter 要想模拟用户在商城里逛来逛去,从一个页面跳到另一个页面,还得保证登录状态不掉线,就需要 HTTP URL 重写修改器来帮忙了。

原理剖析

当 JMeter 从服务器拿到一个被重写过 URL 的页面时,HTTP URL 重写修改器就像一个 “URL 密码破解大师”,它能从这个 URL 里找到藏起来的会话 ID。然后,在后续每个线程组发出的请求里,它都会把这个会话 ID 悄悄地添加进去,让服务器以为这些请求都是同一个登录用户发出的。

配置与使用示例

  1. 同样先搭建好测试计划和线程组,并添加 HTTP 请求指向商城的某个页面。
  2. 在线程组下添加 “HTTP URL - Re - writing Modifier” 前置处理器。
  3. 根据商城的 URL 重写规则,在处理器里进行配置。比如,如果重写规则是在 URL 后面加上一串类似;session=12345的东西,你就在这里设置好相关参数。
  4. 运行测试,看看每个请求的 URL 是不是都带上了正确的会话 ID。
    在这里插入图片描述

用户参数(User Parameters)

多用户测试场景需求

假设你要测试一个在线游戏平台,这个平台有很多玩家同时在线。你得模拟不同玩家的行为,比如有的玩家喜欢玩射击游戏,有的喜欢玩角色扮演游戏,而且每个玩家都有自己的账号和密码。这时候,就需要用到用户参数了,它能让每个线程都代表一个不同的玩家,带着自己的 “身份信息” 去测试游戏平台。

功能原理阐述

用户参数就像是一个 “参数制造工厂”,它可以为每个线程定制不同的参数值。这些参数可以在测试计划里提前设置好,也能从一个外部文件(比如 CSV 文件,就像一个存储着所有玩家信息的大表格)里读取。这样,当 JMeter 以多线程的方式运行测试时,每个线程就像一个真实的玩家,用自己的参数去操作游戏平台。

实际设置与测试示例

  1. 创建测试计划和线程组。
  2. 在线程组下添加 “User Parameters” 前置处理器。
  3. 假如我们要模拟三个玩家,就在这里添加三个用户相关的参数,比如 “username1”“password1”“username2”“password2”“username3”“password3”,并分别设置好对应的账号密码。
  4. 在后续的 HTTP 请求中,比如登录请求,就可以用${username1}${password1}这样的形式来引用这些参数。
  5. 运行测试,你会看到不同的线程用不同的账号登录游戏平台,就像真的有多个玩家在同时登录一样。
    在这里插入图片描述

BeanShell 前置处理器(BeanShell PreProcessor)

复杂业务场景下的需求

你在测试一个金融交易系统,这个系统的交易金额计算规则特别复杂,要根据当前的汇率、市场波动情况以及用户的会员等级等多个因素来确定。普通的参数设置根本满足不了这个需求,这时候就轮到 BeanShell 前置处理器大显身手啦!它可以让你通过编写代码来实现复杂的计算逻辑。

脚本能力展示

BeanShell 前置处理器就像一个 “代码魔法师”,它允许你在发送请求之前,编写一段 BeanShell 脚本代码。这段代码可以做很多事情,比如根据当前时间生成一个唯一的交易订单号,或者根据用户的等级调整交易手续费。它还能对 JMeter 里的变量进行各种操作,像赋值、修改、判断等等。

代码示例与操作流程

  1. 创建测试计划、线程组和 HTTP 请求。
  2. 在线程组下添加 “BeanShell PreProcessor” 前置处理器。
  3. 在脚本区域编写代码,例如:
import java.util.Date;
long time = new Date().getTime();
String orderNumber = "TRX" + time;
vars.put("orderNumber", orderNumber);

这段代码根据当前时间生成了一个以 “TRX” 开头的唯一订单号,并把它设置为 JMeter 的变量 “orderNumber”。
4. 在后续的 HTTP 请求中,比如提交交易请求时,就可以用${orderNumber}来引用这个订单号。
5. 运行测试,看看请求里是不是带上了正确生成的订单号。
在这里插入图片描述

JSR223 前置处理器(JSR223 PreProcessor)

与 BeanShell 对比优势场景

还是以刚才的金融交易系统为例,随着业务的发展,交易逻辑变得更加复杂,对性能的要求也更高了。这时候,虽然 BeanShell 前置处理器能满足需求,但代码写起来有点繁琐,而且性能上也有点力不从心。这时候,JSR223 前置处理器就来救场啦!它支持更多的脚本语言,其中 Groovy 语言特别好用,不仅性能更好,还能让代码写得更简洁、更高效。

支持语言及特性

JSR223 前置处理器就像一个 “多语言脚本舞台”,除了 Groovy,还支持 JavaScript、Python 等多种符合 JSR223 规范的脚本语言。Groovy 语言有很多强大的特性,比如闭包,它可以让你的代码像搭积木一样,简单又灵活。而且它对新的 Java 特性支持得更好,能让你更方便地和现代 Java 开发环境集成。

Groovy 脚本示例与应用

  1. 创建测试计划、线程组和 HTTP 请求。
  2. 在线程组下添加 “JSR223 PreProcessor” 前置处理器。
  3. 在脚本区域选择语言为 “Groovy”,并编写代码,例如:
def currentTime = new Date().getTime()
def transactionFee = 0.05
if (vars.get('userLevel') == 'VIP') {transactionFee = 0.03
}
vars.put('transactionFee', transactionFee)

这段 Groovy 代码根据用户等级(假设已经存在 “userLevel” 变量)来确定交易手续费,并把结果设置为变量 “transactionFee”。
4. 在后续的 HTTP 请求中,比如计算交易金额时,就可以用${transactionFee}来引用这个手续费。
5. 运行测试,看看交易金额的计算是不是按照正确的手续费来进行的。
在这里插入图片描述

JDBC 前置处理器(JDBC PreProcessor)

数据库相关测试场景

你在测试一个在线图书馆管理系统,这个系统的很多功能都和数据库紧密相关。比如,要测试用户借阅书籍的功能,就需要先在数据库里准备一些不同状态的书籍数据,有的是可借阅的,有的是已借出的。这时候,JDBC 前置处理器就派上用场了,它能让你在测试之前,通过执行 SQL 语句来操作数据库,准备好所需的数据。

数据库操作原理

JDBC 前置处理器就像一个 “数据库使者”,它可以在 JMeter 执行 HTTP 请求之前,先和数据库建立连接。然后,你可以通过编写 SQL 语句,让它在数据库里执行各种操作,比如查询数据、插入数据、更新数据等等。执行完后,还可以把查询结果存储为 JMeter 的变量,供后续请求使用。

SQL 语句编写与执行示例

  1. 首先要确保 JMeter 已经配置好数据库驱动(把数据库驱动 jar 包放到 JMeter 的 lib 目录下,就像给 JMeter 装上了通往数据库的 “钥匙”)。
  2. 创建测试计划、线程组和 HTTP 请求。
  3. 在线程组下添加 “JDBC PreProcessor” 前置处理器。
  4. 在前置处理器中配置数据库连接信息,比如数据库的地址、用户名、密码等。然后编写 SQL 语句,比如:
INSERT INTO books (title, status) VALUES ('《百年孤独》', 'available');

这条语句在数据库里插入了一本名为《百年孤独》且状态为可借阅的书籍。
5. 运行测试,看看数据库里是不是真的多了这本书。
在这里插入图片描述

RegEx 用户参数(RegEx User Parameters)

数据关联场景需求

你在测试一个社交媒体平台,用户登录后,可以查看自己的个人信息,然后还能对自己发布的内容进行点赞、评论等操作。在这个过程中,需要从登录后的响应里获取用户的 ID,然后在后续的点赞、评论请求里使用这个 ID。这时候,RegEx 用户参数前置处理器就能帮你实现这个数据关联的需求。

正则表达式提取原理

RegEx 用户参数前置处理器就像一个 “数据提取小能手”,它利用正则表达式这个强大的工具,从 HTTP 请求的响应内容里,按照你设定的规则,精准地提取出你想要的参数值。正则表达式就像是一个定制的 “数据筛选器”,只有符合你设定模式的内容才能被提取出来。

实际表达式编写与应用

  1. 创建两个 HTTP 请求,一个用于登录,一个用于点赞操作。
  2. 在登录请求所在的线程组下添加 “RegEx User Parameters” 前置处理器。
  3. 假设登录响应里用户 ID 的格式是<user_id>12345</user_id>,那我们可以设置正则表达式为<user_id>(.*?)</user_id>,这里(.*?)就是用来提取用户 ID 的部分。
  4. 设置提取的变量名为 “userId”。
  5. 在点赞请求中,用${userId}作为请求参数,指定要点赞的用户。
  6. 运行测试,看看点赞请求是不是正确地使用了从登录响应里提取的用户 ID。
    在这里插入图片描述

样本超时(Sample Timeout)

性能瓶颈场景引入

你在测试一个在线视频播放平台,有时候用户会遇到视频加载特别慢的情况,等了好久都播放不出来。这可能是因为网络不好,也可能是服务器太忙了。在性能测试中,我们要模拟这种情况,看看系统在这种压力下的表现。样本超时前置处理器就能帮我们实现这个测试。

超时机制原理

样本超时前置处理器就像一个 “时间警察”,它为每个 HTTP 请求都设置了一个时间限制。当请求开始执行时,它就开始计时。如果请求在规定的时间内没有完成,它就会果断出手,中断这个请求的执行。这样可以避免因为个别请求长时间不响应,导致整个测试被卡住。

超时设置与结果分析

  1. 创建测试计划、线程组和 HTTP 请求(假设是请求播放一个视频的请求)。
  2. 在线程组下添加 “Sample Timeout” 前置处理器。
  3. 设置超时时间,比如 15000 毫秒(15 秒)。
  4. 运行测试,如果某个视频请求超过 15 秒还没完成,查看结果中关于这个超时请求的记录。从记录里,我们可以分析出是哪个环节可能出了问题,是网络延迟太高,还是服务器处理能力不足。

在这里插入图片描述

相关文章:

探秘 JMeter 前置处理器:让性能测试如虎添翼

想象一下&#xff0c;你是一位超级英雄&#xff0c;要对一个庞大的虚拟城市&#xff08;Web 应用&#xff09;进行全面的 “健康检查”。JMeter 就是你的神奇工具包&#xff0c;而其中的前置处理器&#xff0c;就像是这个工具包里的各种超级武器&#xff0c;能帮助你轻松应对各…...

如何在gitlab cicd中实现每月10号上午执行

在 GitLab CI/CD 中&#xff0c;可以通过设置定时触发器&#xff08;Schedules&#xff09;和脚本中的时间判断逻辑结合&#xff0c;确保任务只在每月 10 号的上午运行。 以下是实现的步骤&#xff1a; 1. 设置定时触发器 GitLab 提供了 Schedules 功能&#xff0c;可以指定每…...

深度学习基础知识

深度学习是人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;领域的一个重要分支&#xff0c;以下是对深度学习基础知识的归纳&#xff1a; 一、定义与原理 定义&#xff1a;深度学习是一种使计算机能够从经验中学习并以概念层次结构的方式理解世界的机…...

面试加分项:Android Framework AMS 全面概述和知识要点

第一章:AMS 的架构与组件 1.1 AMS 整体架构 在 Android 系统的庞大体系中,AMS(Activity Manager Service)就如同一个中枢神经系统,是整个系统的核心服务之一,对应用的性能和用户体验有着直接且关键的影响 。它的整体架构由 Client 端和 Service 端两大部分组成,这两端相…...

网安——CSS

一、CSS基础概念 CSS有两个重要的概念&#xff0c;分为样式和布局 CSS的样式分为两种&#xff0c;一种是文字的样式&#xff0c;一种是盒模型的样式 CSS的另一个重要的特质就是辅助页面布局&#xff0c;完成HTML不能完成的功能&#xff0c;比如并排显示或精确定位显示 从HT…...

知识图谱常见的主流图数据库

在知识图谱中&#xff0c;主流使用的图数据库包括以下几种&#xff1a; Neo4j&#xff1a;这是目前全球部署最广泛的图数据库之一&#xff0c;具有强大的查询性能和灵活的数据模型&#xff0c;适用于复杂关系数据的存储和查询。 JanusGraph&#xff1a;JanusGraph是一个开源的…...

阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能

在城市的脉络中&#xff0c;地下管网犹如隐秘的动脉&#xff0c;支撑着现代生活的运转。而在这庞大网络的关键节点上&#xff0c;阀井扮演着不可或缺的角色。然而&#xff0c;由于其密闭性和复杂性&#xff0c;阀井内部一旦发生可燃气体泄漏&#xff0c;将对公共安全构成严重威…...

【6】Word:海名公司文秘❗

目录 题目 List.docx Word.docx List.docx和Word.docx 题目 List.docx 选中1/4全角空格复制→选中全部文本→开始→替换&#xff1a;粘贴将1/4全角空格 替换成 空格选中全部文本→插入→表格→将文本转化成表格→勾选和布局→自动调整→勾选 选中第一列&#xff0c;单机右键…...

微信原生小程序自定义封装组件(以导航navbar为例)

封装 topnav.js const App getApp(); Component({// 组件的属性列表properties: {pageName: String, //中间的titleshowNav: { //判断是否显示左上角的按钮 type: Boolean,value: true},showHome: { //判断是否显示左上角的home按钮type: Boolean,value: true},showLocat…...

<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加

更新日志&#xff1a; Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备&#xff1a; 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…...

HQL(JPQL)和原生SQL实现查询自定义返回类

维修申请实例RepairApplyInstance: package com.byx.scaffold.common.entity.jpa;import com.byx.scaffold.common.entity.jpaEnum.RepairStatusConstant; import lombok.Data;import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence…...

微信小程序 实现拼图功能

微信小程序 实现拼图 效果示例功能描述代码示例 效果示例 微信小程序 碎片拼图 功能描述 在微信小程序中&#xff0c;实现一个简单的拼图小游戏。用户需要将四张碎片图片拖动到目标图片的正确位置&#xff0c;具体功能如下&#xff1a; 拖动功能&#xff1a; 用户可以通过手指…...

《C++11》并发库:简介与应用

在C11之前&#xff0c;C并没有提供原生的并发支持。开发者通常需要依赖于操作系统的API&#xff08;如Windows的CreateThread或POSIX的pthread_create&#xff09;或者第三方库&#xff08;如Boost.Thread&#xff09;来创建和管理线程。这些方式存在以下几个问题&#xff1a; …...

【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍

从帝国理工的PPT学习。 什么是RDMA Remote Direct Memory Access&#xff0c;也就是Remote的DMA&#xff0c;是一种硬件机制&#xff0c;能直接访问远端结点的内存&#xff0c;而不需要处理器介入。 其中&#xff1a; Remote&#xff1a;跨node进行数据传输Direct&#xff…...

Autodl转发端口,在本地机器上运行Autodl服务器中的ipynb文件

通过 SSH 隧道将远程端口转发到本地机器 输入服务器示例的SSH指令和密码&#xff0c;将远程的6006端口代理到本地 在服务器终端&#xff0c;激活conda虚拟环境 conda activate posecnnexport PYOPENGL_PLATFORMegljupyter notebook --no-browser --port6006 --allow-root从…...

【Linux】常见指令(一)

Linux常见指令 01.whoami02.pwd03.ls04.mkdir05.cd 本文LInux环境为&#xff0c;使用XShell远程登陆到Linux。 具体如何环境搭建&#xff0c;大家可以查看其他博客。 01.whoami whoami 指令用来查看当前账户是谁。 如上图所示&#xff0c;使用whoami指令&#xff0c;查看到现在…...

AI学习之自然语言处理(NLP)

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是计算机科学、人工智能和语言学领域的交叉学科&#xff0c;旨在让计算机能够理解、处理和生成人类语言。以下为你详细介绍&#xff1a; 自然语言处理的关键技术 词法分析&#xff1a;将文本…...

全面解析锁服务设计:内存锁、数据库锁与分布式锁的选择与实现

在构建分布式系统时&#xff0c;锁服务通常用于控制多个线程或进程对共享资源的访问。为了灵活适配不同的锁实现方式&#xff0c;我们可以设计一个基础的锁服务接口&#xff0c;然后根据需求提供不同的实现。例如&#xff0c;内存锁、数据库锁和分布式锁。 1. 锁服务基础接口设…...

jenkins-系统配置概述

一. 引文&#xff1a; Jenkins除了强大的功能插件实现的持续交付集成外&#xff0c; 本身也是有一些比较重要的可配项。 接下来我们来看一看。 配置入口: 系统管理-->系统设置 二. 基础配置&#xff1a; 1.主目录(home directory): Jenkins所有的数据文件存放路径(可通过…...

《数据思维》之数据可视化_读书笔记

文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 数据之道&#xff0c;路漫漫其修远兮&#xff0c;吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准&#xff1a;准确、有…...

kafka消费堆积问题探索

背景 我们的商城项目用PHP写的&#xff0c;原本写日志方案用的是PHP的方案&#xff0c;但是&#xff0c;这个方案导致资源消耗一直降不下来&#xff0c;使用了20个CPU。后面考虑使用通过kafka的方案写日志&#xff0c;商城中把产生的日志丢到kafka中&#xff0c;在以go写的项目…...

一文掌握Docker

目录 1.快速入门 1.1.部署MySQL 1.2.命令解读 2.Docker基础 2.1.常见命令 2.1.1.命令介绍 2.1.2.演示 2.1.3.命令别名 2.2.数据卷 2.2.1.什么是数据卷 2.2.2.数据卷命令 2.2.3.挂载本地目录或文件 2.3.镜像 2.3.1.镜像结构 2.3.2.Dockerfile构建镜像 2.3.3.构建…...

慧集通(DataLinkX)iPaaS集成平台-系统管理之UI库管理、流程模板

UI库管理 UI库管理分为平台级和自建两种&#xff0c;其中平台级就是慧集通平台自己内置的一些ui库所有客户均可调用&#xff0c;自建则是平台支持使用者自己根据规则自己新增对应的UI库。具体界面如下&#xff1a; 自建UI库新增界面&#xff1a; 注&#xff1a;平台级UI库不支…...

【学习笔记】Macbook管理多个不同的Python版本

在MacBook上管理不同项目的不同Python版本&#xff0c;可以使用多种方法。以下是一些常见的方法&#xff1a; 1. 使用 pyenv pyenv 是一个非常流行的工具&#xff0c;可以让你轻松安装和切换多个Python版本。以下是安装和使用 pyenv 的步骤&#xff1a; 安装 pyenv 安装依赖…...

前端如何设计一个回溯用户操作的方案

同一个项目&#xff0c;为什么我本地无法复现&#xff0c;只有客户的设备才复现&#xff1f; 如何获取用户的操作路径呢&#xff1f; 两种方案&#xff1a;埋点和rrweb 埋点就很简单了&#xff0c;将所有可能操作的节点都进行预埋数据&#xff1b;但埋点简单并不省心&#xff…...

WPF、控件模板(ControlTemplate)和数据模板(DataTemplate)

前言 在 WPF 中&#xff0c;控件种类丰富且功能非常完善。一个显著的优点是 WPF 提供了强大的自定义能力和灵活的用户界面表现&#xff0c;能够满足各种复杂的应用需求。其中&#xff0c;ControlTemplate 和 DataTemplate 是两个非常重要的概念&#xff0c;分别用于自定义控件…...

MAC上安装Octave

1. 当前最新版Octave是9.3版本&#xff0c;需要把mac os系统升级到14版本&#xff08;本人之前的版本是10版本&#xff09; https://wiki.octave.org/Octave_for_macOS octave的历史版本参考此文档&#xff1a;Octave for macOS (outdated) - Octavehttps://wiki.octave.org/Oc…...

RabbitMQ(三)

RabbitMQ中的各模式及其用法 工作队列模式一、生产者代码1、封装工具类2、编写代码3、发送消息效果 二、消费者代码1、编写代码2、运行效果 发布订阅模式一、生产者代码二、消费者代码1、消费者1号2、消费者2号 三、运行效果四、小结 路由模式一、生产者代码二、消费者代码1、消…...

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤&#xff1a; #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…...

年后找工作需要注意的事项

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewClause 22/Clause 45Clause 22Clause 45 PHY Link 状态的软件实现 转自&#xff1a; 开心果 Need Car 2022年10月20日 09:50 上海 Overview PHY…...

鸿蒙UI开发——文本级联选择器

1、概 述 ArkUI提供了一个文本选择器&#xff08;showTextPickerDialog&#xff09;&#xff0c;可以方便的实现文本级联选择&#xff0c;例如&#xff1a;省->市->区&#xff0c;示意如下&#xff1a; 下面针对文本选择器做简单介绍。 2、接口介绍 定义文本滑动选择器…...

后盾人JS -- JS运算符与流程控制

嘻嘻 赋值运算符与算术运算符 没什么好说的&#xff0c;等号谁都会用 比较运算符注意事项 如果一个是字符一个是数字也是可以比较的&#xff08;&#xff09; 是判断值和类型是否相等 <!DOCTYPE html> <html lang"en"><head><meta charset…...

Hive SQL必刷练习题:留存率问题

首次登录算作当天新增&#xff0c;第二天也登录了算作一日留存。可以理解为&#xff0c;在10月1号登陆了。在10月2号也登陆了&#xff0c;那这个人就可以算是在1号留存 今日留存率 &#xff08;今日登录且明天也登录的用户数&#xff09; / 今日登录的总用户数 * 100% 解决思…...

笔记本电脑 选购 回收 特权模式使用 指南

笔记本电脑 factor 无线网卡&#xff1a;有些笔记本无法检测到特定频段的信息&#xff0c;会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件&#xff0c;>>表示添加到后续文件的末尾 一种更简…...

基于PyQt - 6的医疗多模态大模型医疗研究系统中的创新构建与应用(上 .文章部分)

一、引言 1.1 研究背景与意义 在当今数智化时代,医疗行业正经历着深刻的变革,对智能化、高效化的需求日益迫切。传统的医疗模式在面对海量的医疗数据、复杂的诊断流程以及个性化的治疗需求时,逐渐显露出局限性。随着人工智能技术的飞速发展,多模态大模型作为一种前沿技术…...

下载文件,浏览器阻止不安全下载

背景&#xff1a; 在项目开发中&#xff0c;遇到需要下载文件的情况&#xff0c;文件类型可能是图片、excell表、pdf、zip等文件类型&#xff0c;但浏览器会阻止不安全的下载链接。 效果展示&#xff1a; 下载文件的两种方式&#xff1a; 一、根据接口的相对url&#xff0c;拼…...

1.15学习

web ctfhub-网站源码 打开环境&#xff0c;查看源代码无任何作用&#xff0c;但是其提醒就在表面暗示我们用dirsearch进行目录扫描&#xff0c;登录kali的root端&#xff0c;利用终端输入dirsearch -u 网址的命令扫描该网址目录&#xff0c;扫描成功后获得信息&#xff0c;在…...

shell练习2

需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 #!/bin/bashnmap -sn 192.168.1.0/24 | grep Nmap scan report for | awk {print $5} 注意&#xff1a;当运行 bash ip.sh 时出现 nmap: command not found 的错误…...

MySQL学习笔记5【SQL优化/视图/存储过程/触发器】

MySQL学习笔记 SQL优化 1. 插入数据优化 普通插入&#xff1a; 采用批量插入&#xff1a; 每次插入不建议超过1000条记录&#xff0c;这样可以减少事务开销&#xff0c;提高性能。示例&#xff1a; INSERT INTO tb_user (name, age) VALUES (Alice, 25), (Bob, 30), ...;手动提…...

C++单例模式的设计

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。在C中&#xff0c;单例模式通常用于管理全局资源或共享状态。 以下是C中实现单例模式的几种常见方式&#xff1a; 懒…...

【Linux系统编程】—— 自动化构建工具Makefile指南

文章目录 背景基本使用推导过程适度扩展语法 背景 Makefile 是衡量开发者是否具备完成大型工程能力的一个重要标志。在一个工程中&#xff0c;源文件的数量可能极多&#xff0c;这些文件会按照类型、功能或模块分布在多个目录中。Makefile 通过定义一系列规则&#xff0c;指定…...

【SpringBoot应用篇】SpringBoot+MDC+自定义Filter操作traceId实现日志链路追踪

【SpringBoot应用篇】SpringBootMDC自定义Filter操作traceId实现日志链路追踪 解决的问题解决方案MDC具体逻辑ymllogback-spring.xmlTraceIdUtil操作工具类TraceIdFilter自定义过滤器GlobalExceptionHandler全局异常处理类TraceIdAspect切面UserController测试验证 多线程处理M…...

少一点If/Else - 状态模式(State Pattern)

状态模式&#xff08;State Pattern&#xff09; 状态模式&#xff08;State Pattern&#xff09;状态模式&#xff08;State Pattern&#xff09;概述状态模式&#xff08;State Pattern&#xff09;结构图状态模式&#xff08;State Pattern&#xff09;涉及的角色 talk is c…...

【SVN】版本发布快捷操作

摘要&#xff1a;因为每次发版都需要制作一份相同的文件夹&#xff0c;而大部分的包都不需要变更&#xff0c;但是文件又非常大&#xff0c;记录自己的操作经验。 首先在SVN Repository Browser 界面把上一次的版本复制一份&#xff0c;复制的时候重命名为新的版本号 右击要复…...

nacos环境搭建以及SpringCloudAlibaba脚手架启动环境映射开发程序

1&#xff1a;下载nacos 地址&#xff1a;https://github.com/alibaba/nacos/tags 2:选择server的zip包下载 3:启动mysql服务&#xff0c;新建数据库&#xff1a;nacos_yh 4&#xff1a;解压下载的nacos_server 进入conf目录 5&#xff1a;mysql运行sql脚本变得到下面的表 6&a…...

【笔记整理】记录参加骁龙AIPC开发者技术沙龙的笔记

AIoT 首先了解了一个概念叫AIoT&#xff0c;我的理解就是AI IoT 5G&#xff0c;通过AI的发展使得边缘计算、数据整合和处理变得快捷方便&#xff0c;不仅限于传统的云端数据处理&#xff0c;在边缘的IoT设备上也可以进行智能化打造&#xff0c;通过5G的通信能力扩展可以实现…...

Kotlin 协程基础十 —— 协作、互斥锁与共享变量

Kotlin 协程基础系列&#xff1a; Kotlin 协程基础一 —— 总体知识概述 Kotlin 协程基础二 —— 结构化并发&#xff08;一&#xff09; Kotlin 协程基础三 —— 结构化并发&#xff08;二&#xff09; Kotlin 协程基础四 —— CoroutineScope 与 CoroutineContext Kotlin 协程…...

DAMA CDGA 备考笔记(二)

1. 考点分布 2. 第二章 数据处理伦理知识点总结 伦理是建立在是非观念上的行为准则。伦理准则通常侧重于公平、尊重、责任、诚信、质量、可靠性、透明度和信任等方面。数据伦理是一项社会责任问题不是法律问题。 度量指标&#xff1a;培训员工人数、合规/不合规事件、企业高管…...

【Lua学习之旅】之单行/多行注释

Lua的注释 单行注释多行注释 单行注释 lua中的单行注释采用两个短横线"--" --这是lua单行注释多行注释 写法一&#xff1a; --[[ 这个lua的多行注释&#xff0c; 很多资料说多行注释不可以嵌套&#xff0c; 根据我的测试&#xff0c;这种写法的多行注释在lua54版…...