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

性能测试和Jmeter

文章目录

  • 前言
  • 性能测试理论知识
    • 什么是性能?
    • 什么是性能测试?
    • 性能测试的作用
    • 性能测试与功能测试的区别
    • 性能测试常见术语
    • 性能测试的策略
      • 基准测试
      • 负载测试
      • 稳定性测试
      • 压力测试
      • 并发测试
    • 常见性能测试指标
      • 响应时间
      • 并发数
      • 吞吐量
      • 点击数和错误率
      • 资源使用率
    • 性能测试的流程
  • Jmeter模拟性能测试
    • Jmeter组件
      • 事务控制器
      • 聚合报告
      • 第三方插件PerfMon(仅作参考)
    • 压力测试场景(仅供参考)
    • 并发测试场景
    • 补充:Jmeter生成测试报告
  • 性能分析和调优
    • 服务器资源瓶颈
      • CPU
      • 内存
      • 磁盘IO
      • 网络
    • 数据库瓶颈
      • 慢查询
      • 数据库连接池
      • 数据库锁
    • JVM内存瓶颈
    • 压测机瓶颈
  • 参考目录


前言

阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。


性能测试理论知识

什么是性能?

在这里插入图片描述
通俗的讲, 时间特性指的就是软件系统处理用户请求的响应时间。资源特性指的是在软件系统运行过程中,系统资源的消耗情况。系统资源大致包括:CPU、内存、磁盘IO等

什么是性能测试?

性能测试就是测试人员借助性能测试工具,模拟系统在不同场景下,对系统的各项性能指标进行测试。

以电商软件为例,系统会出现以下常见场景:

  1. 日常在线用户500万(稳定运行情况下)
  2. 双11当天,在线用户3亿(超大量用户)
  3. 双11零点,有一千万用户同时秒杀抢购(大量用户同时使用)

性能测试的作用

  1. 系统上线时, 评估系统能力
  2. 系统上线后, 寻找性能瓶颈, 优化性能
  3. 评估软件能否满足未来的需要

性能测试与功能测试的区别

功能测试:
功能测试主要关注系统是否按照需求规格说明书中定义的功能进行正常运行,并符合用户的期望。其目的是验证软件的有效性或正确性,即确认软件在各种输入情况下能够按照业务逻辑正确地处理数据,并产生预期的输出结果。

性能测试:
性能测试主要关注系统在不同负载和压力下的表现和响应能力。它通过模拟实际使用场景或特定负载情况,评估系统的性能指标,例如响应时间、吞吐量、并发用户数等。性能测试的目的是评估系统的效率、可靠性和可扩展性,确保系统能够在预期的负载下稳定运行。

测试方法:
功能测试通常采用黑盒测试方法,测试人员基于需求规格说明书或用户需求进行测试,验证软件是否满足特定功能要求。

性能测试通常采用白盒测试方法,测试人员需要了解系统的内部机制和架构,并使用性能测试工具进行负载模拟和性能指标的监测与分析。

一般是功能测试通过之后做性能测试。

性能测试常见术语

  1. 并发:并发就是大量用户在同一时间访问同一系统。
    业务层面的并发用户数:指的是同时向服务器发送请求的用户数量。
    后端服务器层面的并发用户数:指的是同时向服务器发送请求的请求数量。

  2. 用户数
    系统用户数:系统注册的用户
    在线用户数:成功登陆系统用户数
    并发用户数:同时使用系统的用户数量。

性能测试的策略

基准测试

基准测试狭义上又称单用户测试 ,当性能测试环境确定后,通常选取业务模型中的重要业务做基准测试,对被测系统施加⼀定压力,从而获取被测系统在单用户运行情况下的各项性能指标,并作为后续性能优化和比较、多用户并发测试和混合场景测试等的参考依据。

广义上讲, 基准测试是一种评估软件性能指标的活动。通过基准测试确定系统的性能基准线,当系统的软硬件发生变化后再进行测试,对比基准线来确定变化对性能的影响。

负载测试

负载测试通过逐步加载的方式,确定在满足系统性能指标的情况下,找出系统所能够承受的最大负载量的测试。

负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员在其身体状况保持正常的情况下所能举起的最大重量。

例如,⼀个软件系统的响应时间要求不超过2秒,如果在这个前提下不断增加用户访问量,系统的响应时间就会变长。假设当访问量超过1万⼈时系统的响应时间超过2秒,那么就可以确定在系统响应时间不超过2秒的前提下,系统的最大负载量是1万⼈。

在这里插入图片描述

稳定性测试

稳定性测试是在服务器稳定运行(日常使用的业务负载)的情况下进行长时间测试,并保证服务器能满足业务需求。

在这里插入图片描述
场景一: 实际测试的最大负载达不到用户正常使用的15人,那么就说明设计不合理,不进行稳定性测试。 类比到软件上就应该回去检查代码是否出现了BUG、或者设计不合理等情况。
场景二:稳定运行的负载量为10。 要根据需求进行设定, 稳定性测试并不是在最大负载情况下进行长时间测试。

压力测试

压力测试用于评估被测系统在高于预期、高于指定容量负载需求或低于最少需求资源的条件下,查看系统是否有良好的容错能力和可恢复能力。

进行压力测试时通常采用逐步增加系统负载的方式,使系统某些资源达到饱和甚至失效,从而发现那些只有在高负载条件下才会出现的缺陷,如同步问题、内存泄漏等。

通过对被测系统进行压力测试,也能找出被测系统的性能拐点,获得系统所能提供的最大服务级别(系统所能承受的最大压力),评估系统在峰值负载或超出最大负载情况下的处理能力。

压力测试的方式:
在这里插入图片描述
在这里插入图片描述
如上图所示,随着用户数(负载)的逐步上升, 系统资源、吞吐量、系统响应时间的变化。
在A-B区间,随着系统用户数的增加,系统的处理能力会增大。(低负载区)
在B-C区间,随着系统用户数的增加,系统的处理能力基本不变。(高负载区)
在C-D区间,随着系统用户数的增加,系统的处理能力减小。(崩溃区)

压力测试和负载测试的区别:
负载测试是在保持性能指标要求的前提下测试系统能够承受的最大负载。

压力测试则是测试系统性能达到极限的状态。

例如,软件系统要求的响应时间不超过2秒。进行负载测试时发现,当访问量达到1万时,系统响应时间不超过2秒,而当访问量超过1万时,系统响应时间则会超过2秒。

负载测试: 在满足系统响应时间指标的前提下,该系统能够承受的最大访问量是1万。

压力测试 :继续增加系统的访问量,并观察系统的性能变化。例如,当系统访问量增加到2万时,发现系统响应时间延迟到5秒,当访问量增加到3万时,系统崩溃,⽆法做出响应。由此可以确定系统能达到的极限访问量是3万

并发测试

并发测试用于评估被测系统的某些操作同时发生时的性能表现.。
例如,测试系统多个用户同时登录时的响应能力,或系统的某⼀功能被多个用户同时操作时的性能表现。
例如,通过模拟多个用户同时访问某⼀条件数据,或模拟多个用户同时更新数据,可能发现系统的数据库访问错误、写⼊错误等。

常见性能测试指标

响应时间

响应时间(Response Time),是指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。不包括前端页面的处理和渲染时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。
在这里插入图片描述

并发数

并发数:某一时刻同时向服务器发送请求的用户数

吞吐量

吞吐量:指系统在单位时间内处理请求的数量。
从业务角度看:业务数/小时、业务数/天、页面访问量/天、访问人数/天
从网络角度看:字节数/天、字节数/小时

从技术角度看
吞吐量的表现形式有TPS和QPS:
QPS(Query per Second)每秒查询数:即服务器每秒处理的请求数量。
在这里插入图片描述
TPS(Transactions per Second)每秒事务数:服务器每秒处理的事务请求的数量。
事务:即业务,一次操作可能会产生多个请求,这一次操作称为一次事务。
在这里插入图片描述
页面上的一次支付操作会有三个请求,这一次操作称为事务。QPS=TPS*n个请求,此处为45

点击数和错误率

点击数:客户端向服务器发送请求时,所有的请求总数量。点击数不是指页面上的一次点击,包括页面资源元素(图片、链接、CSS、JS等)的请求总数量。
点击量:一般指用户点击数量

错误率:系统在负载情况下,失败业务的概率。错误率=(失败业务/总业务数)*100%

  • 绝大多数系统要求错误率接近于0
  • 错误率是性能测试的指标,是由于高负载导致的错误,而不是代码BUG导致的。

资源使用率

在这里插入图片描述

性能测试的流程

在这里插入图片描述

  1. 需求分析:熟悉系统的业务功能和技术架构。了解系统的用户需求和预期负载,明确性能测试的目标和内容。

  2. 制定测试计划:制定详细的测试计划,包括测试用例、测试数据和测试时间表。明确每个测试场景的输入、操作步骤和预期输出。关于测试计划的格式,可自行查阅资料
    在这里插入图片描述

  3. 测试用例设计,关于测试用例的格式,可自行查阅资料
    在这里插入图片描述

  4. 搭建测试环境:搭建与生产环境相似的测试环境,包括服务器、数据库、缓存等组件的设置和配置。确保测试环境能够支持预期的负载和数据量。

  5. 编写测试脚本、执行性能测试脚本

  6. 收集性能数据:收集性能测试期间产生的数据,包括日志、性能指标记录等,用于后续的分析和评估。

  7. 分析测试结果:根据收集到的性能数据,进行性能分析,找出性能瓶颈、潜在问题以及系统的弱点,并提出优化建议。

  8. 撰写测试报告:总结性能测试的结果和分析,撰写测试报告,包括测试过程、测试结果、性能问题和优化建议等内容。关于测试报告的格式,可自行查阅资料

  9. 优化和改进:根据测试报告中的性能问题和优化建议,对系统进行优化和改进,如代码优化、数据库调优、服务器配置调整等。

  10. 再次测试:在优化和改进后,再次进行性能测试,检验优化效果,确保系统在实际负载下的性能能够满足要求。

Jmeter模拟性能测试

Jmeter的基本操作请看另外一篇博客,或自行查阅自行、查看Jmeter自带文档。除另外一篇博客外,在此再介绍一些Jmeter组件用于性能测试。

Jmeter组件

事务控制器

作用:将多个请求汇总成一个事务,易于查看整个事务的性能指标。
位置:线程组->右键->添加->逻辑控制器->事务控制器

在这里插入图片描述
如果,电商网站整个下单业务包括登录、加入购物车、结算、下订单的操作,如果我们想收集整个业务的性能指标,就需要用到事务控制器。
在这里插入图片描述

聚合报告

作用:收集性能测试中, 系统的各项性能指标。如:响应时间、吞吐量、错误率等。
位置:测试计划->右键->添加->监听器->聚合报告
在这里插入图片描述

第三方插件PerfMon(仅作参考)

作用:监控系统的资源指标(CPU、内存、磁盘IO、网络)
操作步骤:

  1. 下载Jmeter插件管理工具jar包 jmeter-plugins.org
    jmeter-plugins.org
    在这里插入图片描述

  2. 将下载好的插件管理工具jar包 jmeter-plugins.org 放到Jmeter文件夹lib\ext目录下

  3. 重启Jmeter,在选项下面可以看到插件管理器
    在这里插入图片描述

  4. 打开 Plugins Manager

  5. 选择Available Plugins

  6. 搜索 PerfMon插件 勾选

  7. 点击右下角安装按钮

PerfMon组件添加方法:线程组->监听器->jp@gc - PerfMon Metrics Collector
PerfMon组件工作原理:需要在服务器端安装资源监听服务程序,启动并收集资源指标,使用PerfMon汇总资源指标并展示。
在这里插入图片描述
在这里插入图片描述
随后,我们要对jp@gc - PerfMon Metrics Collector进行配置,才能接收到服务端的资源指标信息。
在这里插入图片描述

压力测试场景(仅供参考)

假设有一个电商网站的性能需求如下(具体性能指标仅作演示),峰值场景(高负载场景)相比于日常场景下的下订单业务,对TPS和响应时间要求不同,我们要对峰值场景(高负载场景)进行性能测试,该如何进行呢?
在这里插入图片描述
按照压力测试策略的设计方案,我们进行如下测试步骤。
在这里插入图片描述
Jmeter脚本大致设计
在这里插入图片描述

  1. 添加线程组
  2. 添加事务控制器
  3. 在事务控制器下添加HTTP请求-登录,我们要测试整个下单业务的性能指标,所以使用事务控制器
  4. 在事务控制器下添加HTTP请求-添加购物车
  5. 在事务控制器下添加HTTP请求-结算
  6. 在事务控制器下添加HTTP请求-下订单
  7. HTTP请求-下订单下添加常数吞吐量定时器,由于高负载场景下的吞吐量为50,在逐步增加负载的情况下,最后将吞吐量设为50。
  8. 添加聚合报告和jp@gc - PerfMon Metrics Collector
  9. 执行,通过聚合报告和PerfMon查看性能指标

并发测试场景

在这里插入图片描述
在这里插入图片描述
Jmeter脚本大致设计

  1. 添加线程组,线程数设为50
  2. 添加HTTP请求-下订单, 秒杀活动肯定是已经提前完成了登录、物品加入购物车等操作。
  3. 测试数据提前准备
  4. HTTP请求-下订单下添加同步定时器,用于模拟50个用户同时发送请求。
  5. 添加聚合报告和jp@gc - PerfMon Metrics Collector
  6. 执行,通过聚合报告和PerfMon查看性能指标

补充:Jmeter生成测试报告

在这里插入图片描述

性能分析和调优

在这里插入图片描述

服务器资源瓶颈

CPU

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

内存

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

磁盘IO

在这里插入图片描述

网络

在这里插入图片描述

数据库瓶颈

慢查询

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

数据库连接池

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

数据库锁

在这里插入图片描述

JVM内存瓶颈

在这里插入图片描述
使用jvisualvm监控JVM内存
jvisualvm本地监控与远程监控

压测机瓶颈

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


参考目录

https://www.bilibili.com/video/BV12Q4y1C7Wf
https://www.bilibili.com/video/BV19Q4y167Qo/
https://www.bilibili.com/video/BV12W4y197qU
https://blog.csdn.net/2201_76100073/article/details/138165025
https://blog.csdn.net/weixin_55807049/article/details/141757657
https://blog.csdn.net/cs888zsy/article/details/144588686

相关文章:

性能测试和Jmeter

文章目录 前言性能测试理论知识什么是性能?什么是性能测试?性能测试的作用性能测试与功能测试的区别性能测试常见术语性能测试的策略基准测试负载测试稳定性测试压力测试并发测试 常见性能测试指标响应时间并发数吞吐量点击数和错误率资源使用率 性能测试…...

Linux网络之数据链路层协议

目录 数据链路层 MAC地址与IP地址 数据帧 ARP协议 NAT技术 代理服务器 正向代理 反向代理 上期我们学习了网络层中的相关协议,为IP协议。IP协议通过报头中的目的IP地址告知了数据最终要传送的目的主机的IP地址,从而指引了数据在网络中的一步…...

数据结构第八节:红黑树(初阶)

【本节要点】 红黑树概念红黑树性质红黑树结点定义红黑树结构红黑树插入操作的分析 一、红黑树的概念与性质 1.1 红黑树的概念 红黑树 ,是一种 二叉搜索树 ,但 在每个结点上增加一个存储位表示结点的颜色,可以是 Red和 Black 。 通过对 任何…...

【大模型知识点】位置编码——绝对位置编码,相对位置编码,旋转位置编码RoPE

由于Transformer 中的自注意模块具有置换不变性(不关心输入序列的顺序),因此需要使用位置编码来注入位置信息以建模序列,使模型能够区分不同位置的 token,并捕捉序列的顺序关系。 在介绍一些位置编码方法前&#xff0…...

【大模型篇】推理模型大作战(QwQ-32B vs DeepSeek-R1)

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。 欢迎关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 写在前面 当我让QwQ-32B vs DeepSeek-R1 写一封未来自己的信 大家更喜欢哪种风格? QwQ-32B 模…...

【汇编语言】单片机程序执行过程

一、任务需求 指示灯LED4闪烁,亮0.5秒,灭0.5秒,无限循环 二、针对硬件的编程 1、确定原理图2、确定硬件的物理关系 三、设计步骤 1.用自己的语言描述工作流程 1.1指示灯LED4亮1.2延时0.5秒1.3指示灯LED4灭1.4延时0.5秒1.5跳转到1.1步 …...

MYSQL之创建数据库和表

创建数据库db_ck (下面的创建是最好的创建方法,如果数据库存在也不会报错,并且指定使用utf8mb4) show databases命令可以查看所有的数据库名,可以找到刚刚创建的db_ck数据库 使用该数据库时,发现里面没有…...

MybatisPlus

1.增删改查入门案例&#xff1a; 首先导入依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency> 然后这些增删改查…...

HCIE云计算学什么?怎么学?未来职业发展如何?

随着云计算成为IT行业发展的主流方向&#xff0c;HCIE云计算&#xff08;华为认证云计算专家&#xff09;作为华为认证体系中的高端认证之一&#xff0c;逐渐成为了许多网络工程师和IT从业者提升职业竞争力的重要途径。 那么&#xff0c;HCIE云计算究竟学什么内容&#xff0c;如…...

小程序 -- uni-app开发微信小程序环境搭建(HBuilder X+微信开发者工具)

目录 前言 一 软件部分 1. 微信开发者工具 2. HBuilder X 开发工具 二 配置部分 1. 关于 HBuilder X 配置 2. 关于 微信开发工具 配置 三 运行项目 1. 新建项目 2. 代码编写 3. 内置浏览器 编译 4. 配置小程序 AppID获取 注意 四 实现效果 前言 uni-app开发小程…...

多线程-线程本地变量ThreadLocal

简介 ThreadLocal是线程本地变量&#xff0c;用于存储独属于线程的变量&#xff0c;这些变量可以在同一个线程内跨方法、跨类传递。每一个ThreadLocal对象&#xff0c;只能为当前线程关联一个数据&#xff0c;如果要为当前线程关联多个数据&#xff0c;就需要使用多个ThreadLo…...

MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模

2025-03-05&#xff0c;由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE&#xff08;MuJoCo and Blender simulation Environment&#xff09;模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染&#xff0c;为机器人操作任务规划提供了逼真的视…...

计算机网络笔记(一)——1.1计算机网络在信息时代中的作用

21世纪的一些重要特征是数字化、网络化和信息化&#xff0c;它是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络&#xff0c;因为网络可以迅速地传递信息。网络现在已经成为信息社会的命脉和发展知识经济的重要基础。 有三大类网络大家应该很熟悉&#xff0c;即…...

第十五届蓝桥杯省赛电子类单片机学习过程记录(客观题)

客观试题: 01.典型的BUCK电源电路包含哪些关键器件(ABCD) A. 电容 B. 二极管 C. 电感 D. MOSFET 解析: 典型的 BUCK 电源电路是一种降压型的直流-直流转换电路,它包含以下关键器件: A.电容:电容在电路中起到滤波的作用。输入电容用于平滑输入电压的波动,减少电源噪声对…...

计算机组成与体系结构-存储系统

主存编址 存储单元&#xff1a;最小存储单元&#xff0c;一般为4bit。每个存储单元有自己的二进制编号 存储器&#xff1a;多个存储单元排布而成。常见的有8*4存储器&#xff08;8个4bit的存储单元&#xff09; 编址内容&#xff1a; 按字编址&#xff1a;存储体的最小存储单…...

better-sqlite3之exec方法

在 better-sqlite3 中&#xff0c;.exec() 方法用于执行包含多个 SQL 语句的字符串。与预编译语句相比&#xff0c;这种方法性能较差且安全性较低&#xff0c;但有时它是必要的&#xff0c;特别是当你需要从外部文件&#xff08;如 SQL 脚本&#xff09;中执行多个 SQL 语句时。…...

WinUI 3 支持的三种窗口 及 受限的窗口透明

我的目标 希望能够熟悉 WinUI 3 窗口的基本使用方式&#xff0c;了解可能出现的问题 。 WinUI 3 支持三种窗口模式&#xff0c;分别为&#xff1a;常规窗口模式、画中画模式、全屏模式。 窗口模式&#xff1a;常规 即我们最常见的普通窗口。 支持&#xff1a;显示最大化按钮…...

【运维笔记】Navicat中删除mongo 某个时间之前的数据

【运维笔记】Navicat中删除mongo 某个时间之前的数据 一、场景与需求1.1、场景1.2、需求 二、解决方案三、实战3.1、【Navicat】使用sql语句 &#xff08;推荐&#xff09;Step 1&#xff1a;使用查询窗口 - 查询Step 2&#xff1a;确认第一步的数据是否是需要删除的数据Step 3…...

java2025年常见设计模式面试题

1. 请解释建造者模式&#xff08;Builder Pattern&#xff09;及其应用场景。 答案&#xff1a; 建造者模式用于创建一个复杂的对象&#xff0c;同时允许用户只通过指定复杂对象的类型和内容就能构建它们&#xff0c;隐藏了复杂的构建逻辑。 示例&#xff1a; public class C…...

Docker部署Ragflow(完美解决502 bad gateway)

Docker快速启动Ragflow:Dev 系统准备 ubuntu server 24.04 CPU ≥ 4 cores (x86);RAM ≥ 16 GB;Disk ≥ 100 GB; 更新系统 sudo apt update 下载源码 git clone https://github.com/infiniflow/ragflow.git cd ragflow/docker # 切换稳定版本分支 git checkout -f v0.17.…...

算法中的背包问题详解:部分背包与0-1背包

1. 背包问题概述 背包问题是组合优化中的经典问题&#xff0c;其核心目标是&#xff1a;在给定容量的背包中装入一组物品&#xff0c;使得物品的总价值最大化。根据物品是否可分割或重复选择&#xff0c;背包问题分为多个变种&#xff0c;其中最常见的两种是&#xff1a; 部分…...

Stream特性(踩坑):惰性执行、不修改原始数据源

在日常开发中&#xff0c;Stream API 提供了一种高效且易于使用的工具集来处理集合数据。 本文主要讲解 Stream 的两个特性&#xff1a;惰性执行&#xff0c;不修改原始数据源。 为什么说这两个、而不讲下其他的特性呢&#xff1f;主要是因为在开发中如果忽略这两个特性的话&…...

Varlens(手机上的单反)Ver.1.9.3 高级版.apk

Varlens 是一款专业级手机摄影软件&#xff0c;旨在通过丰富的功能和高自由度参数调节&#xff0c;让手机拍摄效果媲美微单相机。以下是核心功能总结&#xff1a; 一、核心功能 专业拍摄模式 支持手动/自动/程序模式&#xff0c;可调节ISO、快门速度、EV、白平衡等参数27 提供…...

【无监督学习】层次聚类步骤及matlab实现

层次聚类 &#xff08;四&#xff09;层次聚类1.算法步骤2.MATLAB 实现参考资料 &#xff08;四&#xff09;层次聚类 层次聚类是一种通过逐层合并或分裂数据点构建树状结构&#xff08;树状图&#xff0c;Dendrogram&#xff09;的聚类方法。它分为两种类型&#xff1a; 凝聚…...

uploadlabs通关思路

目录 靶场准备 复现 pass-01 代码审计 执行逻辑 文件上传 方法一&#xff1a;直接修改或删除js脚本 方法二&#xff1a;修改文件后缀 pass-02 代码审计 文件上传 1. 思路 2. 实操 pass-03 代码审计 过程&#xff1a; 文件上传 pass-04 代码审计 文件上传 p…...

doris:Elasticsearch

Elasticsearch Catalog 除了支持自动映射 ES 元数据外&#xff0c;也可以利用 Doris 的分布式查询规划能力和 ES(Elasticsearch) 的全文检索能力相结合&#xff0c;提供更完善的 OLAP 分析场景解决方案&#xff1a; ES 中的多 index 分布式 Join 查询。 Doris 和 ES 中的表联合…...

JetBrains学生申请

目录 JetBrains学生免费授权申请 IDEA安装与使用 第一个JAVA代码 1.利用txt文件和cmd命令运行 2.使用IDEA新建项目 JetBrains学生免费授权申请 本教程采用学生校园邮箱申请&#xff0c;所以要先去自己的学校申请校园邮箱。 进入JetBrains官网 点击立即申请&#xff0c;然…...

PDFMathTranslate安装使用

PDF全文翻译&#xff01;&#xff01;&#xff01;&#xff01; PDFMathTranslate安装使用 它是个啥 PDFMathTranslate 可能是一个用于 PDF 文件的数学公式翻译 工具。它可能包含以下功能&#xff1a; 提取 PDF 内的数学公式 将数学公式转换成 LaTeX 代码 翻译数学公式的内…...

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…...

2025-03-09 学习记录--C/C++-PTA 练习11-4 字符定位(最后一次找到的字符)

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> char *match(char *s, char ch); int main(void …...

C语言数据结构之顺序表

目录 1.线性表 2.顺序表 2.1.静态顺序表 2.2.动态顺序表 2.2.1.初始化 2.2.2.清空顺序表 2.2.3.扩容&#xff0b;尾插 2.2.4.尾出函数 2.2.5.头插函数 2.2.6.头出函数 2.2.7.在中间位置插入 2.2.8.删除中间位置数据 2.2.9.查找函数 2.2.10.总结 3.OJ例题 3.1.合…...

【Git】合并冲突

合并冲突 可是&#xff0c;在实际分支合并的时候&#xff0c;并不是想合并就能合并成功的&#xff0c;有时候可能会遇到代码冲突的问题。 为了演示这问题&#xff0c;创建一个新的分支 dev1 &#xff0c;并切换至目标分支&#xff0c;我们可以使用 git checkout -b dev1 一步…...

【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高

1、HarmonyOS Web组件本地资源跨域问题&#xff1f; 关于资源跨域问题的解决&#xff0c;可以参考以下官网文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 方法一 为了使Web组件能够成功访问跨域资源&#xff0c;开…...

高效数据分析实战指南:Python零基础入门

高效数据分析实战指南 —— 以Python为基石&#xff0c;构建您的数据分析核心竞争力 大家好&#xff0c;我是kakaZhui&#xff0c;从事数据、人工智能算法多年&#xff0c;精通Python数据分析、挖掘以及各种深度学习算法。一直以来&#xff0c;我都发现身边有很多在传统行业从…...

【语料数据爬虫】Python爬虫|批量采集征集意见稿数据(1)

前言 本文是该专栏的第5篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“征集意见稿”数据。同时,本文也是采集“征集意见稿”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑…...

电力场景绝缘子缺陷分割数据集labelme格式1585张4类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;1585 标注数量(json文件个数)&#xff1a;1585 标注类别数&#xff1a;4 标注类别名称:["broken part","broken insulat…...

《C++ 构造、拷贝构造与析构函数:对象的诞生、克隆与消逝之旅》

类的6个默认成员函数 构造函数 是对一个对象实例化时的初始化 例如在C语言中写的堆的时候要初始化StackInit&#xff0c;而c祖师爷写的构造函数本质上就是自动调用初始化。 构造函数默认构造函数自己写的&#xff08;符合规定的显示表达式&#xff09; 注&#xff1a;一般情况下…...

uniapp uniCloud引发的血案(switchTab: Missing required args: “url“)!!!!!!!!!!

此文章懒得排版了&#xff0c;为了找出这个bug, 星期六的晚上我从9点查到0点多&#xff0c;此时我心中一万个草泥马在崩腾&#xff0c;超级想骂人&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; uniCloud 不想…...

【论文阅读】VAD: Vectorized Scene Representation for Efficient Autonomous Driving

一、介绍 VAD是华科团队设计的一个端到端无人驾驶框架&#xff0c;针对传统的无人驾驶框架的模块化设计的问题&#xff0c;该算法使用向量化的策略进行了端到端的实现。传统的模块化设计使得感知模块完全依赖于感知模块的计算结果&#xff0c;这一解耦实际上从规划模块的角度损…...

uniapp版本加密货币行情应用

uniapp版本加密货币行情应用 项目概述 这是一个使用uniapp开发的鸿蒙原生应用&#xff0c;提供加密货币的实时行情查询功能。本应用旨在为用户提供便捷、实时的加密货币市场信息&#xff0c;帮助用户随时了解市场动态&#xff0c;做出明智的投资决策。 应用采用轻量级设计&a…...

使用 Java 执行 SQL 语句和存储过程

使用 Java 执行 SQL 语句和存储过程&#xff0c;通常有两种主要的方式&#xff1a;使用 JDBC&#xff08;Java Database Connectivity&#xff09;或者通过框架如 Spring Data JPA、MyBatis 等。 1. 使用 JDBC 执行 SQL 语句 JDBC 是 Java 操作数据库的标准 API。以下是通过 …...

算法系列之深度优先搜索寻找妖怪和尚过河问题的所有方式

在算法学习中&#xff0c;深度优先搜索&#xff08;DFS&#xff09;是一种常用的图搜索算法&#xff0c;通过递归或栈实现&#xff0c;适合路径搜索、连通性、拓扑排序、回溯、生成、环路检测、强连通分量和可达性等问题。本文将介绍如何利用深度优先搜索解决“妖怪和尚过河问题…...

大白话JavaScript闭包实现原理与在实际开发中的应用场景

大白话JavaScript闭包实现原理与在实际开发中的应用场景 答题思路 解释闭包的概念&#xff1a;先简单直白地说明闭包是什么&#xff0c;让读者对闭包有一个初步的认识。阐述闭包的实现原理&#xff1a;详细讲解闭包是如何形成的&#xff0c;涉及到函数作用域、变量的生命周期…...

【redis】数据类型之geo

Redis的GEO数据类型用于存储地理位置信息&#xff08;如经纬度&#xff09;&#xff0c;并提供高效的地理位置查询功能&#xff08;如计算两地距离、搜索附近地点等&#xff09;。其底层基于Sorted Set&#xff08;有序集合&#xff09;实现&#xff0c;通过Geohash编码将经纬度…...

C++后端服务器开发技术栈有哪些?有哪些资源或开源库拿来用?

一、 C后台服务器开发是一个涉及多方面技术选择的复杂领域&#xff0c;特别是在高性能、高并发的场景下。以下是C后台服务器开发的一种常见技术路线&#xff0c;涵盖了从基础到高级的技术栈。 1. 基础技术栈 C标准库 C11/C14/C17/C20&#xff1a;使用现代C特性&#xff0c;如…...

第五次CCF-CSP认证(含C++源码)

第五次CCF-CSP认证 第一道&#xff08;easy&#xff09;思路及AC代码 第二道&#xff08;easy&#xff09;思路及AC代码solution 1solution 2 第三道&#xff08;mid&#xff09;思路及AC代码&#xff08;mid&#xff09; 第一道&#xff08;easy&#xff09; 题目链接 思路及…...

tcp udp区别

TCP&#xff08;传输控制协议&#xff09; 和 UDP&#xff08;用户数据报协议&#xff09; 是两种常用的传输层协议&#xff0c;它们在数据传输方式、可靠性和应用场景等方面有显著区别。以下是它们的主要区别&#xff1a; 1. 连接方式 TCP&#xff1a;面向连接的协议。通信前需…...

驱动 AI 边缘计算新时代!高性能 i.MX 95 应用平台引领未来

智慧浪潮崛起&#xff1a;AI与边缘计算的时代 正悄然深植于我们的日常生活之中&#xff0c;无论是火热的 ChatGPT 与 DeepSeek 语言模型&#xff0c;亦或是 Meta 智能眼镜&#xff0c;AI 技术已经无形地影响着我们的生活。这股变革浪潮并未停歇&#xff0c;而是进一步催生了更高…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

&#x1f48c; 所属专栏&#xff1a;【单片机开发软件技巧】 &#x1f600; 作  者&#xff1a; 于晓超 &#x1f680; 个人简介&#xff1a;嵌入式工程师&#xff0c;专注嵌入式领域基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大家&#xff1…...

Linux 进程管理工具 Supervisor

介绍 Supervisor 是一个用 Python 编写的进程管理工具&#xff0c;旨在帮助你监控和控制多个进程。它特别适用于需要确保某些服务在服务器启动时自动运行&#xff0c;并且在崩溃时自动重启的场景。 写在前面&#xff1a; 因为现在很多第三方的包的最新版本都是基于 python3了…...