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

使用Jmeter对AI模型服务进行压力测试

一、JMeter介绍

Apache JMeter 是一款开源的性能测试工具,主要用于评估Web应用程序的负载和性能。它支持多种类型的测试,包括但不限于:

  • 负载测试:模拟大量用户访问系统以检测其在高负载下的表现。
  • 性能测试:评估系统在不同条件下的响应速度和稳定性。
  • 稳定性测试:长时间运行测试以检查系统的稳定性和可靠性。
  • 并发测试:测试系统处理同时发生的多个请求的能力。
JMeter的主要优点包括:
  • 跨平台支持:可以在Windows、Linux、macOS等多种操作系统上运行,并支持多语言界面。
  • 丰富的测试类型:不仅限于Web应用,还可以用于数据库、FTP服务器等的性能测试。
  • 易于使用:拥有直观的图形用户界面(GUI),便于快速创建测试计划和执行测试。

二、安装JMeter

为了成功安装和运行JMeter,首先需要确保系统中已安装Java Development Kit (JDK)。

2.1 安装JDK
  1. 下载JDK:前往Oracle官网下载适合您操作系统的JDK版本。请注意选择与您的操作系统兼容的版本。

  2. 重要提示:自Java 11起,JDK不再默认生成jre目录。如果您需要jre目录,可以通过以下命令手动创建:

    • 打开命令提示符(Windows)或终端(Linux/macOS),并以管理员权限运行。
    • 切换到JDK安装目录下,例如:
      cd C:\Program Files\Java\jdk-<version>
    • 运行以下命令来生成jre目录:
      bin\jlink --module-path jmods --add-modules java.se --output jre
  3. 配置环境变量(如果未自动配置):

    • 在Windows上,添加JAVA_HOME环境变量指向JDK安装目录,并将%JAVA_HOME%\bin添加到PATH变量中。
    • 在Linux/macOS上,编辑~/.bashrc~/.zshrc文件,添加如下行:
      export JAVA_HOME=/path/to/your/jdk
      export PATH=$JAVA_HOME/bin:$PATH
    • 使用source ~/.bashrcsource ~/.zshrc使更改生效。

完成上述步骤后,您可以继续安装JMeter。请确保JDK已正确安装并通过运行java -version命令验证安装是否成功。

2.2 安装JMeter

从官网下载:http://jmeter.apache.org/download_jmeter.cgi

选择binaries文件下载,下载后解压即可。

选择zip文件下载后,解压压缩包即可。然后添加环境变量:

我的电脑----属性----高级----环境变量----在系统变量

(1)JMETER_HOME

D:\apache-jmeter-5.2.1\apache-jmeter-5.2.1

(2)CLASSPATH

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

2.3 启动Jmeter

在bin目录下找到jmeter.bat文件,双击运行就可以了,会打开以下两个界面,不要关闭命令行界面

三 使用Jmeter

安装并启动Jmeter后,我们就可以测试我们的模型服务了,根据之前文章的介绍,我们现在已经有一个ChatGLM3的模型服务。

下面我们对服务进行压测:

3.1 设置语言

3.2 增加线程组

右击测试计划--添加--线程--线程组

添加线程组后可以看到有三个属性:

线程数:就是启动的线程个数。

Ramp-Up时间(秒):所有线程在时间段内把请求发送完(循环次数是1),而且请求的时间间隔是固定的=Ramp-Up time/线程数。

比如1秒10个线程数就是在1秒内开启10个线程;

比如5秒10个线程数就是每秒开启2个线程;

循环次数:就是每秒的线程数循环启动多少次。

比如线程数(5),ramp-up time(1), 循环次(2),就是每秒10个线程,总共10个线程;

比如线程数(10),ramp-up time(2), 循环次(2),就是每秒10个线程,总共20个线程;

所以并发个数是由这三个属性值一起设定的。

对这三个参数的深入理解和使用可以参考文章。

3.3 添加HTTP请求

3.4 添加HTTP请求header

3.5 添加结果树

添加查看结果树可以看到请求的返回信息,比如点击运行(绿色小三角),就能看到返回

3.6 添加常量吞吐量定时器

常数吞吐量定时器可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。

只有此线程:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的目标吞吐量乘以该线程的数量

所有活动线程:设置的目标吞吐量将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

当前线程组中的所有活动线程:与所有活动线程的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

所有活动线程(共享):设置的目标吞吐量将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和所有活动线程选项的效果完全相同。

当前线程组中的所有活动线程(共享):与当前线程组中的所有活动线程基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

这里设置的是目标吞吐量,结合3.2中的参数,我们预设1秒钟10个线程,那1分钟就是600个,所以这里我的目标吞吐量设置为600.

3.7 添加汇总报告

3.8 生成html报告

生成jtl文件

 E:\program files\apache-jmeter-5.6.2\apache-jmeter-5.6.2\bin> .\jmeter -n -t HTTP请求.jmx  -l result.jtl

生成html

 E:\program files\apache-jmeter-5.6.2\apache-jmeter-5.6.2\bin> .\jmeter -g result.jtl -o .\result

可以看到我们通过以上步骤,得到了比较完整的测试报告~通过报告我们可以分析出服务的TPS,最大响应时间等信息,再结合你的GPU使用率,就可以得出基本的结论,下一步就是思考怎么提升服务性能增加qps了~

相关文章:

使用Jmeter对AI模型服务进行压力测试

一、JMeter介绍 Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于评估Web应用程序的负载和性能。它支持多种类型的测试&#xff0c;包括但不限于&#xff1a; 负载测试&#xff1a;模拟大量用户访问系统以检测其在高负载下的表现。性能测试&#xff1a;评估系统在…...

测试用例管理平台哪些好用?9款主流测试平台对比

在当今软件开发领域&#xff0c;测试用例管理平台已成为提升产品质量和团队协同效率的关键工具。本文将围绕“测试用例管理平台”这一核心关键词&#xff0c;全面解析市面上9款主流产品&#xff0c;帮助企业管理者和测试团队快速了解各平台的核心优势和适用场景&#xff0c;从而…...

C++函数传值与传引用对比分析

在C编程中&#xff0c;函数参数传递的方式直接影响程序的性能、内存管理以及代码逻辑的正确性。传值&#xff08;Pass by Value&#xff09;和传引用&#xff08;Pass by Reference&#xff09;是两种最常用的参数传递方式&#xff0c;它们各有优缺点&#xff0c;适用于不同的场…...

【se-res模块学习】结合CIFAR-10分类任务学习

继CIFAR-10图像分类&#xff1a;【Res残差连接学习】结合CIFAR-10任务学习-CSDN博客 再优化 本次训练结果在测试集上的准确率表现可达到90%以上 1.训练模型&#xff08;MyModel.py&#xff09; import torch import torch.nn as nnclass SENet(nn.Module): # SE-Net模块def…...

二元随机响应(Binary Randomized Response, RR)的翻转概率

随机响应&#xff08;Randomized Response&#xff09;机制 ✅ 回答核心&#xff1a; p 1 1 e ε 才是「翻转概率」 \boxed{p \frac{1}{1 e^{\varepsilon}}} \quad \text{才是「翻转概率」} p1eε1​​才是「翻转概率」 而&#xff1a; q e ε 1 e ε 是「保留真实值」…...

湖北理元理律师事务所:债务优化中的“生活保障”方法论

债务危机往往伴随生活质量骤降&#xff0c;如何在还款与生存间找到平衡点&#xff0c;成为债务优化的核心挑战。湖北理元理律师事务所基于多年实务经验&#xff0c;提出“双轨并行”策略&#xff1a;法律减负与生活保障同步推进。 债务优化的“温度法则” 1.生存资金预留机制…...

RFID智能书柜:精准定位,找书告别 “大海捞针”

在传统图书馆的浩瀚书海&#xff0c;找书无异于在错综复杂的迷宫里徘徊。读者在书架间来回奔波&#xff0c;耗费大量时间精力&#xff0c;还常一无所获。RFID智能书柜的出现&#xff0c;彻底改写了这一局面。它搭载的RFID读写器与天线协同工作&#xff0c;能实时精准定位贴有RF…...

视觉图像处理及多模态融合初探

(一)指标汇总 1. 图像采集与质量提升 指标描述可能的量化值图像清晰度反映图像中物体的边缘和细节的清晰程度例如:1-10 分(1 为极不清晰,10 为非常清晰)噪声水平表示图像中随机噪声的多少例如:噪声强度百分比(0%-100%)畸变程度描述图像中物体形状的变形程度例如:畸变…...

射频前端模组芯片(PA)三伍微电子GSR2337 兼容替代SKY85337, RTC7646, KCT8247HE

射频前端模组芯片&#xff08;PA&#xff09;三伍微电子GSR2337 兼容替代SKY85337, RTC7646, KCT8247HE 型号GSR2337 ‌频率‌: 2.4 GHz ‌类型‌: FEM (PALNASW) ‌WIFI‌: 11n/ac/ax ‌功率‌: 21dBmEVM-43dB5V ‌封装‌: 3*3 mm ‌电压‌: 3.3V & 5V ‌P2P‌: SKY85…...

python 接收c++的.so传的jsoncpp字符串

叮&#xff01;快来看看我和文心一言的奇妙对话&#xff5e;点击链接 https://yiyan.baidu.com/share/57o6vGa3GY -- 文心一言&#xff0c;既能写文案、读文档&#xff0c;又能绘画聊天、写诗做表&#xff0c;你的全能伙伴&#xff01; 要从 C 动态链接库 (.so 文件) 中接收 JS…...

EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展

一、引言 在数字化浪潮下&#xff0c;智能硬件蓬勃发展&#xff0c;从智能家居到工业物联网&#xff0c;深刻改变人们的生活与工作。音视频通讯作为智能硬件交互与协同的核心&#xff0c;重要性不言而喻。但嵌入式设备硬件资源受限&#xff0c;传统音视频方案集成困难。EasyRT…...

Day19 常见的特征筛选算法

常见的特征筛选算法 1. 方差筛选 原理 &#xff1a;方差衡量的是数据的离散程度。在特征筛选中&#xff0c;如果某个特征的方差很小&#xff0c;说明该特征在不同样本上的值差异不大&#xff0c;那么它对模型的区分能力可能很弱。方差筛选就是通过设定一个方差阈值&#xff0…...

如何使用极狐GitLab 软件包仓库功能托管 terraform?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Terraform 模块库 (BASIC ALL) 基础设施仓库和 Terraform 模块仓库合并到单个 Terraform 模块仓库功能引入于极狐GitLab 15.1…...

15前端项目----用户信息/导航守卫

登录/注册 持久存储用户信息问题 退出登录导航守卫解决问题 持久存储用户信息 本地存储&#xff1a;&#xff08;在actions中请求成功时&#xff09; 添加localStorage.setItem(token,result.data.token);获取存储&#xff1a;&#xff08;在user仓库中&#xff0c;state中tok…...

重定向及基础实验

1.if指令 if (判断条件){ 执行语句; } if的正则表达式 #比较变量和字符串是否相等&#xff0c;相等时if指令认为该条件为true&#xff0c;反之为false ! #比较变量和字符串是否不相等&#xff0c;不相等时if指令认为条件为true&#xff0c;反之为false ~ #区分大小写字符&…...

CBO和HBO区别及介绍

CBO&#xff08;Cost-Based Optimizer&#xff09;和 HBO&#xff08;Heuristic-Based Optimizer&#xff09;是两种数据库查询优化器的类型&#xff0c;它们在优化策略和实现方式上有显著的区别。以下是详细的解释和对比&#xff1a; 1. CBO&#xff08;Cost-Based Optimizer…...

华为HCIP-AI认证考试版本更新通知

​华为HCIP-AI认证考试版本更新通知​ ​HCIP-AI-EI Developer V2.5认证发布​ 华为官方宣布&#xff0c;​HCIP-AI-EI Developer V2.5认证考试将于2025年3月31日正式上线。新版认证聚焦AI工程化开发与行业实践&#xff0c;新增大模型部署优化、AI边缘计算等前沿技术内容&…...

【算法-链表】链表操作技巧:常见算法

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找前缀和位运算模拟 链表是一种灵活的数据结构&#xff0c;广泛用于需要频繁插入和删除的场景。掌握链表的常见操作技巧&#xff0c;如插入、删除、翻转和合并等&#xff0c;能帮助开发者更…...

【探寻C++之旅】第十三章:红黑树

请君浏览 前言1. 红黑树的概念1.2 红黑树的规则1.3 红黑树如何确保最长路径不超过最短路径的两倍&#xff1f;1.4 红黑树的效率 2. 红黑树的实现2.1 红黑树的结构2.2 红黑树的插入情况1&#xff1a;变色情况2&#xff1a;单旋变色情况2&#xff1a;双旋变色代码演示 2.3 红黑树…...

JavaScript 性能优化全攻略:从基础到实战

引言 在现代 Web 开发中,JavaScript 作为核心语言,其性能直接影响用户体验。无论是单页应用(SPA)还是复杂交互页面,性能优化始终是开发者关注的核心。 本文将从基础策略、最新技巧、常见误区和实战案例四个维度,系统性地解析 JavaScript 性能优化的关键方法,并提供可复…...

Kafka消息队列之 【消费者分组】 详解

消费者分组(Consumer Group)是 Kafka 提供的一种强大的消息消费机制,它允许多个消费者协同工作,共同消费一个或多个主题的消息,从而实现高吞吐量、可扩展性和容错性。 基本概念 消费者分组:一组消费者实例的集合,这些消费者实例共同订阅一个或多个主题,并通过分组来协调…...

HuggingFace与自然语言处理(从框架学习到经典项目实践)[ 01 API操作 ]

本教程适用与第一次接触huggingface与相应框架和对nlp任务感兴趣的朋友&#xff0c;该栏目目前更新总结如下&#xff1a; ​​Tokenizer​​&#xff1a; 支持单句/双句编码&#xff0c;自动处理特殊符号和填充。 批量编码提升效率&#xff0c;适合训练数据预处理。Datasets​…...

uniapp-文件查找失败:‘@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue‘

uniapp-文件查找失败&#xff1a;‘dcloudio/uni-ui/lib/uni-icons/uni-icons.vue’ 今天在HBuilderX中使用uniapp开发微信小程序时遇到了这个问题&#xff0c;就是找不到uni-ui组件 当时创建项目&#xff0c;选择了一个中间带的底部带选项卡模板&#xff0c;并没有选择内置u…...

springboot+vue实现在线网盘(云盘)系统

今天教大家如何设计一个网盘&#xff08;云盘&#xff09;系统系统 , 基于目前主流的技术&#xff1a;前端vue&#xff0c;后端springboot。 同时还带来的项目的部署教程。 视频演示 springbootvue实现在线网盘&#xff08;云盘&#xff09;系统 图片演示 一. 系统概述 用过百…...

启智平台调试 qwen3 4b ms-swift

以上设置完成后&#xff0c;我们点击新建任务。等待服务器创建和分配资源。 资源分配完成后我们看到如下列表&#xff0c;看到资源running状态&#xff0c;后面有一个调试按钮&#xff0c;后面就可以进入代码调试窗体界面了。 点击任务名称 跳转 访问github失败 加速器开启…...

KAXA凯莎科技AGV通信方案如何赋能智能仓储高效运作?

AGV智慧物流系统融合了先进的自动导航技术和智能控制算法&#xff0c;通过激光雷达、摄像头、激光传感器等多种感知设备&#xff0c;实现仓库内的精准定位与自主导航。系统具备环境实时感知能力&#xff0c;能够动态避障&#xff0c;并基于任务调度智能规划最优路径&#xff0c…...

【AI提示词】费曼学习法导师

提示说明 精通费曼学习法的教育专家&#xff0c;擅长通过知识解构与重构提升学习效能。 提示词 Role: 费曼学习法导师 Profile language: 中文description: 精通费曼学习法的教育专家&#xff0c;擅长通过知识解构与重构提升学习效能background: 认知科学硕士背景&#xff0…...

体绘制中的传输函数(transfer func)介绍

文章目录 VTK volume不透明度传输函数梯度不透明度传输函数颜色传输函数VTK volume VTK (Visualization Toolkit) 中的 Volume(体积)是一个重要的概念,特别是在处理和可视化三维数据时。以下是 VTK Volume 的一些关键概念: 定义: Volume 在 VTK 中代表一个三维数据集,通…...

Algolia - Docsearch的申请配置安装【以踩坑解决版】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…...

【文档智能】开源的阅读顺序(Layoutreader)模型使用指南

一年前&#xff0c;笔者基于开源了一个阅读顺序模型&#xff08;《【文档智能】符合人类阅读顺序的文档模型-LayoutReader及非官方权重开源》&#xff09;&#xff0c; PDF解析并结构化技术路线方案及思路&#xff0c;文档智能专栏 阅读顺序检测旨在捕获人类读者能够自然理解的…...

现在的AI应用距离通用agent差的那点儿意思

现在的AI应用距离通用Agent差的那点儿意思 引言&#xff1a;从"生成力"到"行动力" 当前AI应用最显著的进步体现在内容生成能力上——无论是ChatGPT的流畅对话&#xff0c;还是Midjourney的惊艳画作&#xff0c;都展示了强大的生成力。然而&#xff0c;正…...

LeetCode 热题 100 238. 除自身以外数组的乘积

LeetCode 热题 100 | 238. 除自身以外数组的乘积 大家好&#xff0c;今天我们来解决一道经典的算法问题——除自身以外数组的乘积。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求在不使用除法的情况下&#xff0c;计算数组中每个元素的乘积&#xff0c;其中每个元素的…...

分享 2 款基于 .NET 开源的实时应用监控系统

前言 在现代软件开发和运维管理中&#xff0c;实时应用监控系统扮演着至关重要的角色。它们能够帮助开发者和运维人员实时监控应用程序的状态&#xff0c;及时发现并解决问题&#xff0c;从而确保应用的稳定性和可靠性。今天大姚给大家分享 2 款基于.NET 开源的实时应用监控系…...

使用pytorch保存和加载预训练的模型方法

需要使用到的函数 在 PyTorch 中&#xff0c;torch.save() 和 torch.load() 是用于保存和加载模型的核心函数。 torch.save() 函数 主要用途&#xff1a;将模型或模型的状态字典&#xff08;state_dict&#xff09;保存到文件中。 语法&#xff1a; torch.save(obj, f, pi…...

Linux/AndroidOS中进程间的通信线程间的同步 - 消息队列

本文介绍消息队列&#xff0c;它允许进程之间以消息的形式交换数据。数据的交换单位是整个消息。 POSIX 消息队列是引用计数的。只有当所有当前使用队列的进程都关闭了队列之后才会对队列进行标记以便删除。POSIX 消息有一个关联的优先级&#xff0c;并且消息之间是严格按照优…...

DNA Launcher:打造个性化安卓桌面,开启全新视觉体验

DNA Launcher是一款专为安卓手机设计的桌面美化软件&#xff0c;旨在为用户提供丰富多样的桌面美化选项和全新的操作逻辑。通过这款软件&#xff0c;用户可以轻松调整桌面布局、更换主题、添加个性化元素&#xff0c;打造出独一无二的手机桌面。它支持多分辨率重新布局&#xf…...

Flink SQL DataStream 融合开发模式与动态配置热加载机制实战

一、为什么需要 SQL 与 DataStream 融合开发? 在实时数仓构建中,Flink SQL 的易用性和声明式优势广受欢迎;但遇到业务逻辑复杂、需要灵活控制时,DataStream API 提供了不可替代的灵活性。 而现实中,我们常常遇到如下痛点: 场景问题解决方式多业务线、多个 Kafka Topic,…...

4.2java包装类

在 Java 里&#xff0c;基本数据类型不具备对象的特性&#xff0c;像不能调用方法、参与面向对象的操作等。为了让基本数据类型也能有对象的行为&#xff0c;Java 提供了对应的包装类。同时&#xff0c;自动拆箱和自动装箱机制让基本数据类型和包装类之间的转换更加便捷。 包装…...

在一台服务器上通过 Nginx 配置实现不同子域名访问静态文件和后端服务

一、域名解析配置 要实现通过不同子域名访问静态文件和后端服务&#xff0c;首先需要进行域名解析。在域名注册商或 DNS 服务商处&#xff0c;为你的两个子域名 blog.xxx.com 和 api.xxx.com 配置 A 记录或 CNAME 记录。将它们的 A 记录都指向你服务器的 IP 地址。例如&#x…...

C++23 views::as_rvalue (P2446R2) 深入解析

文章目录 引言C20 Ranges库回顾什么是Rangesstd::views的作用 views::as_rvalue 概述基本概念原型定义工作原理 应用场景容器元素的移动与其他视图适配器结合使用 总结 引言 在C的发展历程中&#xff0c;每一个新版本都会带来一系列令人期待的新特性&#xff0c;这些特性不仅提…...

Mockoon 使用教程

文章目录 一、简介二、模拟接口1、Get2、Post 一、简介 1、Mockoon 可以快速模拟API&#xff0c;无需远程部署&#xff0c;无需帐户&#xff0c;免费&#xff0c;跨平台且开源&#xff0c;适合离线环境。 2、支持get、post、put、delete等所有格式。 二、模拟接口 1、Get 左…...

15.thinkphp的上传功能

一&#xff0e;上传功能 1. 如果要实现上传功能&#xff0c;首先需要建立一个上传表单&#xff0c;具体如下&#xff1a; <form action"http://localhost/tp6/public/upload"enctype"multipart/form-data" method"post"><input type&…...

G口大带宽服务器线路怎么选

G口大带宽服务器线路选择指南 ​​一、线路类型与特点​​ ​​单线&#xff08;电信/联通/移动&#xff09;​​ ​​优势​​&#xff1a;带宽独享、价格低、延迟稳定&#xff0c;适合单一运营商用户集中场景。​​劣势​​&#xff1a;跨运营商访问延迟高&#xff08;如电信…...

低秩适应(LoRA)与量化LoRA(QLoRA)技术解析

LoRA&#xff1a;从线性代数到模型微调 从矩阵分解理解Lora 假设我们有一个大模型中的权重矩阵&#xff0c;形状为1024512&#xff08;包含约52万个参数&#xff09;。传统微调方法会直接更新这52万个参数&#xff0c;这不仅计算量大&#xff0c;而且存在过拟合风险。 LoRA的…...

Webug4.0靶场通关笔记22- 第27关文件包含

目录 一、文件包含 1、原理分析 2、文件包含函数 &#xff08;1&#xff09;include( ) &#xff08;2&#xff09;include_once( ) &#xff08;3&#xff09;require( ) &#xff08;4&#xff09;require_once( ) 二、第27关渗透实战 1、打开靶场 2、源码分析 3、…...

OpenCV CPU性能优化

OpenCV 在 CPU 上的性能优化涉及多个层次&#xff0c;从算法选择到指令级优化。以下是系统的优化方法和实践技巧&#xff1a; 一、基础优化策略 1. 内存访问优化 连续内存布局&#xff1a;优先使用 cv::Mat::isContinuous() 检查 cpp if(mat.isContinuous()) {// 可优化为单循…...

OpenCV进阶操作:图像的透视变换

文章目录 前言一、什么是透视变换&#xff1f;二、透视变换的过程三、OpenCV透视变换核心函数四、文档扫描校正&#xff08;代码&#xff09;1、预处理2、定义轮廓点的排序函数3、定义透视变换函数4、读取原图并缩放5、轮廓检测6、绘制最大轮廓7、对最大轮廓进行透视变换8、旋转…...

MySQL事务隔离机制与并发控制策略

MySQL事务隔离机制与并发控制策略 MySQL事务隔离机制与并发控制策略一、数据库并发问题全景解析二、事务隔离级别深度解析三、MySQL并发控制核心技术1. 多版本并发控制&#xff08;MVCC&#xff09;2. 锁机制 四、隔离级别实现差异对比五、生产环境最佳实践六、高级优化技巧七、…...

【算法学习】递归、搜索与回溯算法(二)

算法学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言&#xff1a; 在&#xff08;一&#xff09;中我们挑了几个经典例题&#xff0c;已经对递归、搜索与回溯算法进行了初步讲解&#xff0c;今天我们来进一步讲解…...

SpringBoot整合PDF导出功能

在实际开发中&#xff0c;我们经常需要将数据导出为PDF格式&#xff0c;以便于打印、分享或存档。SpringBoot提供了多种方式来实现PDF导出功能&#xff0c;下面我们将介绍其中的一些。 HTML 模板转 PDF&#xff08;推荐&#xff09; 通过模板引擎&#xff08;如 Thymeleaf 或…...