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

Elasticsearch 性能测试工具 Loadgen 之 001——部署及应用详解

在现代软件开发中,性能测试是确保应用程序稳定性和响应速度的关键环节。

今天,我们就来深入了解一款国产化功能强大的 Elasticsearch 负载测试工具——INFINI Loadgen。

40a84b36b203cf27bcab9f53527d95d7.jpeg

一、INFINI Loadgen 简介

Github地址:https://github.com/infinilabs/loadgen

Release 版本下载地址:https://release.infinilabs.com/loadgen/stable/

INFINI Loadgen 是一款专为 Elasticsearch 、EasySearch 设计的轻量级性能测试工具,旨在对 Easysearch 、Elasticsearch 进行压力测试。其主要功能包括支持多种请求类型、动态变量注册、以及对请求返回结果的断言等。——官方描述

二、安装 INFINI Loadgen

INFINI Loadgen的安装方式非常简单,为用户提供了多种选择,方便不同需求的用户进行安装。

2.1 通过脚本安装

使用以下命令,即可一键完成安装:

curl -sSL http://get.infini.cloud | bash -s -- -p loadgen

这条命令的作用是,通过curl工具从指定的URL下载安装脚本,并使用bash执行该脚本,同时传递参数-p loadgen,指定安装的软件包为loadgen

2.2 手动下载安装

如果不想使用脚本安装,也可以从官方提供的下载地址获取安装包:http://release.infinilabs.com/loadgen/。下载完成后,通过以下命令进行安装:

➜  /tmp mkdir loadgen
➜  /tmp curl -sSL http://get.infini.cloud | bash -s -- -p loadgen -d /tmp/loadgen

或者直接本地下载,拷贝到云服务器也可以。上述命令首先在/tmp目录下创建了一个名为loadgen的文件夹,然后通过curlbash命令,将安装包下载并解压到该文件夹中。在安装过程中,我们可以看到有趣的字符画和安装进度提示,最后会提示安装完成,表明loadgen已经准备就绪,可以使用了。

安装完成后,进入安装目录,执行可执行文件,即可启动INFINI Loadgen:

cd /tmp/loadgen &&./loadgen-mac-arm64

这里的loadgen-mac-arm64是根据不同系统和架构生成的可执行文件名,在实际使用中,需要根据自己的环境进行调整。

f8713511f8169fff4f5d916b264b847a.png

温馨提示:下文中的 loadgen 本质上就是现在的 loadgen-mac-arm64 重命名后的结果。

7a8d0c7d57a10b7611564eb37f76ce41.png

三、Loadgen 核心配置参数解读

站在咱们开发者角度理解,如果对 Elasticsearch 或 EasySearch 做性能测试,必须先得配置上 ES 的地址、用户名和密码,否则一切无从谈起。因此,如下的配置 loadgen.yml 非常重要。

1f11041b7176b447551104374c9513a8.png

3.1 宏观看配置文件

我第一眼看有点懵逼,感觉配置都好复杂。实际拆分成树形结构“定睛一看”,实际并不复杂。

loadgen.yml

├── env
│   ├── ES_USERNAME
│   ├── ES_PASSWORD
│   └── ES_ENDPOINT
├── runner
│   ├── no_warm
│   ├── valid_status_codes_during_warmup
│   ├── log_requests
│   ├── log_status_codes
│   ├── assert_invalid
│   ├── assert_error
│   ├── reset_context
│   ├── default_endpoint
│   └── default_basic_auth
├── variables
│   ├── id
│   ├── id64
│   ├── uuid
│   ├── now_local
│   ├── now_utc
│   ├── now_utc_lite
│   ├── now_unix
│   ├── now_with_format
│   ├── suffix
│   ├── bool
│   ├── list
│   ├── id_list
│   └── str_list
└── requests
├── request 1 (POST /_bulk)
│   ├── method
│   ├── runtime_variables
│   ├── runtime_body_line_variables
│   ├── url
│   └── body
└── request 2 (POST /medcl/_search)
├── method
├── runtime_variables
├── runtime_body_line_variables
├── basic_auth
├── url
└── body

3.2 配置文件参数详解(微观看)

在使用Loadgen进行测试之前,我们需要了解其配置文件的结构和用法。Loadgen的配置文件主要由envrunnervariablesrequests等部分组成。

2ca9e3256004fdc72f3c76163903dc2c.png

示例原因,没有涵盖全部变量。

  1. env:用于定义环境变量, 例如:

env:ES_USERNAME: elasticES_PASSWORD: elastic

这里定义了ES_USERNAMEES_PASSWORD两个环境变量,分别赋值为elastic。咱们在使用的时候要换成自己 Elasticsearch 集群的账号和密码。这些环境变量可以在后续的请求中通过$[[env.ENV_KEY]]的方式进行引用,例如在请求的认证信息中使用。

  1. runner:用于配置测试运行的相关参数,如:

runner:# total_rounds: 1no_warm: falselog_requests: falseassert_invalid: falseassert_error: false

其中,

  • total_rounds用于指定测试的总轮数,默认情况下注释掉,表示不使用该设置,Loadgen将在指定的持续时间内循环执行测试。

  • no_warm表示是否跳过预热阶段,默认为false,即不跳过。预热阶段可以让系统在正式测试前达到稳定状态,使测试结果更准确。

  • log_requests用于控制是否记录每个请求的详细信息。

  • assert_invalidassert_error分别用于设置当断言无效或请求出错时的处理方式。

  1. variables:用于定义各种类型的变量,这些变量可以在请求中使用,为请求提供动态参数。Loadgen支持多种变量类型,每种类型都有其特定的用途和配置方式。

  • file:从文件加载变量,例如:

- name: iptype: filepath: test/ip.txt

这个配置表示定义了一个名为ip的变量,类型为file,其值从test/ip.txt文件中读取。在测试过程中,每次使用该变量时,会随机从文件中读取一行作为变量值。- sequence:自动递增的数值变量,例如:

- name: idtype: sequence

定义了一个名为id的变量,类型为sequence,它会在测试过程中自动递增,从默认的最小值开始,每次增加1。- uuid:生成UUID类型的变量,例如:

- name: uuidtype: uuid

定义了一个名为uuid的变量,每次使用时会生成一个唯一的UUID值。- now_localnow_utcnow_unix:分别表示获取当前本地时间、UTC时间和Unix时间戳,例如:

- name: now_localtype: now_local
- name: now_utctype: now_utc
- name: now_unixtype: now_unix

这些变量在需要记录时间信息的测试场景中非常有用。4. requests:用于定义要发送的请求,这是配置文件的核心部分。Loadgen支持固定参数请求和基于模板的变量参数请求。- 固定参数请求示例

- request:method: GETbasic_auth:username: elasticpassword: passurl: http://localhost:9200/medcl/_search

注意:medcl 是个索引名,实际使用环节,咱们需要自己创建一下。比如:put medcl 方式就可以创建。这个请求配置表示使用GET方法,通过基本认证(用户名elastic,密码pass),向http://localhost:9200/medcl/_search发送请求。- 基于变量参数的请求示例

- request:method: GETbasic_auth:username: $[[env.ES_USERNAME]]password: $[[env.ES_PASSWORD]]url: http://localhost:9200/medcl/_search?q=name:$[[user]]

在这个请求中,使用了之前定义的环境变量ES_USERNAMEES_PASSWORD进行认证,并且在请求URL中使用了变量user,使得每次请求的查询参数name的值都可以动态变化。最后,咱们通过截图说明一下,我改动的配置有哪些,以便大家进行参考:

15cb8c83430ccc98d04ce90e9cd1af96.png

3728ac31b633d450e6f1485265a6430a.png

除了上面标红之外,其他配置都没有动。这样我们可以达到 Loadgen 从0到1效果,先用起来再说。

四、Loadgen 基准测试,先用起来再说!

4.1 基准测试

基准测试:运行Loadgen进行基准测试非常简单,只需在命令行中执行以下命令:

➜  loadgen git:(master) ✗./bin/loadgen -d 30 -c 100 -compress

这条命令中,-d 30表示测试持续时间为30秒,-c 100表示并发线程数为100,-compress表示对请求进行gzip压缩。测试过程中,Loadgen会先执行一次所有请求进行预热,预热结果会输出到终端。

预热完成后,开始正式的基准测试,测试结束后会输出详细的测试结果,包括请求的吞吐量、响应时间分布、流量统计等信息。

86006e314277e49fa4c760bf3a75964e.png

如下图所示,代表配置文件的写入 bulk 写入成功了。因为,最初,我们只是创建了索引名。

606ea000b50a856d5f7712f779bf2e9b.png

4.2 核心指标含义解读

最终指标是我们关注的重点,核心指标解读如下:

1.Requests/sec: 29.43:

  • 含义:表示服务器每秒处理的请求数量,即服务器在测试期间平均每秒能够成功接收并处理的请求数为  29.43 个 。

  • 作用:该指标反映了服务器的处理能力和吞吐量。数值越高,说明服务器在单位时间内能够处理更多的请求,在高并发场景下表现可能更好。

  • 实际业务场景类比举例:对于一个基于 Elasticsearch 的电商网站搜索服务,较高的请求处理速率意味着在促销活动等流量高峰时,能够更快地响应用户的商品搜索和查询请求,从而提升用户体验。

2.Avg Req Time: 339.804597 ms:

  • 含义:指平均每个请求的处理时间,即从服务器接收到请求到返回响应所花费的平均时间为 339.804597ms 毫秒 。

  • 作用:它体现了服务器处理单个请求的效率。这个时间越短,表明服务器处理请求的速度越快,用户等待响应的时间也就越短,体验更好。

  • 实际业务场景类比举例:在一个使用 Elasticsearch 的实时日志分析系统中,较短的平均请求处理时间意味着用户能够更快地获取日志查询结果,从而及时发现和解决问题,提升系统监控的有效性。

3.Transfer/sec: 12.81 KB:

  • 含义:代表服务器每秒的数据传输量,即在测试过程中,服务器每秒传输的数据量平均为 12.81KB 。

  • 作用:该指标反映了服务器与客户端之间的数据交互量,对于评估服务器的网络带宽使用情况和数据传输能力很重要。

  • 实际业务场景类比举例:对于一个基于 Elasticsearch 的数据可视化平台,高的数据传输速率是保证用户能够流畅加载和查看大数据集的关键。如果这个值过低,可能导致数据加载缓慢,从而影响用户体验。

五、小结

通过使用 INFINI Loadgen 进行性能测试,开发者可以有效地评估 Elasticsearch 和 EasySearch 的处理能力和稳定性。该工具不仅支持高并发的请求处理,还能通过灵活的配置选项满足不同的测试需求。安装过程简单,配置文件结构清晰,使得用户能够快速上手并进行基准测试。


【实践好文】提升 Elasticsearch 性能的关键优化技巧,50ms提升到1ms!!

提升 Elasticsearch 索引性能 TOP 10 小技巧,你用到几个?

esrally 如何进行简单的自定义性能测试?

JMeter 如何实现 Elasticsearch 8.X 性能测试?

探索 INFINI Console:提升 Elasticsearch 管理效率的新利器

读者留言:有 Elasticsearch 国产化替代品吗?现在国产化不让用 ES 了......

Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南

f69799f97e859f3871c87b5838178a42.png

更短时间更快习得更多干货!

和全球2000+ Elastic 爱好者一起精进!

elastic6.cn——ElasticStack进阶助手

9ea62954bb0f01b6b1b720b9abe44c10.gif

抢先一步学习进阶干货!

相关文章:

Elasticsearch 性能测试工具 Loadgen 之 001——部署及应用详解

在现代软件开发中,性能测试是确保应用程序稳定性和响应速度的关键环节。 今天,我们就来深入了解一款国产化功能强大的 Elasticsearch 负载测试工具——INFINI Loadgen。 一、INFINI Loadgen 简介 Github地址:https://github.com/infinilabs/l…...

Python算法详解:动态规划

动态规划(Dynamic Programming,简称 DP)是计算机科学中一种高效解决问题的算法思想。它通过将复杂问题分解为更小的子问题,记录中间结果,避免重复计算,从而提升效率。本文将从动态规划的基础思想出发&#…...

python3+TensorFlow 2.x(二) 回归模型

目录 回归算法 1、线性回归 (Linear Regression) 一元线性回归举例 2、非线性回归 3、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型,以便根据输入特征预测目标变量,在使用 TensorFlow 2.x 实现线性回归模型时&…...

lombok 没生效 java: 找不到符号 符号: 方法 setName(java.lang.String)

今天使用lombok 添加了 Data注解 set方法却没起效 解决方法 1 给lombok 添加版本号 再maven刷新下 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><optional>…...

uiautomator2教程

一、简介 uiautomator2 是一个 Python 库&#xff0c;用于 Android 的 UI 自动化测试&#xff0c;底层基于 Google uiautomator。 二、安装 1、安装adb 2、pip install uiautomator2 3、设备安装 atx - agent&#xff0c;python -m uiautomator2 init 4、安装weditor&…...

旅游风景的代码项目

敦煌莫高窟&#xff1a;用代码打开千年艺术的大门 ——一个零基础也能看懂的神奇项目 前言&#xff1a;当古老艺术遇上现代代码 想象一下&#xff0c;你坐在电脑前&#xff0c;指尖轻轻一点&#xff0c;就能穿越到敦煌莫高窟——看飞天的衣袂飘飘、听千年的驼铃声声。这不是科…...

【后端开发】字节跳动青训营之性能分析工具pprof

性能分析工具pprof 一、测试程序介绍二、pprof工具安装与使用2.1 pprof工具安装2.2 pprof工具使用 资料链接&#xff1a; 项目代码链接实验指南pprof使用指南 一、测试程序介绍 package mainimport ("log""net/http"_ "net/http/pprof" // 自…...

【测试】-- 认识测试

1. 软件测试定义 软件测试就是验证软件产品特性&#xff08;功能、性能、界面、易用性等&#xff09;是否满足用户的需求。 2. 测试的岗位 软件测试开发工程师&#xff08;测开&#xff09; 开发&#xff1a;开发测试效率工具&#xff08;自动化、性能测试、覆盖率等&#x…...

浏览器hid 和蓝牙bluetooth技术区别

HID与蓝牙技术区别 引言 在前端开发中&#xff0c;与外部设备的交互越来越重要&#xff0c;尤其是在移动设备和物联网设备日益普及的今天。HID&#xff08;Human Interface Device&#xff09;和蓝牙&#xff08;Bluetooth&#xff09;是两种常用的技术&#xff0c;用于实现设备…...

PCIE模式配置

对于VU系列FPGA&#xff0c;当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时&#xff0c;等同于K7系列中的AXI Memory Mapped To PCI Express IP。...

mysql 学习3 SQL语句--整体概述。SQL通用语法;DDL创建数据库,查看数据库,删除数据库,使用数据库;

SQL通用语法 SQL语句分类 DDL data definition language : 用来创建数据库&#xff0c;创建表&#xff0c;创建表中的字段&#xff0c;创建索引。因此成为 数据定义语言 DML data manipulation language 有了数据库和表以及字段后&#xff0c;那么我们就需要给这个表中 添加数…...

Swing使用MVC模型架构

什么是MVC模式? MVC是一组英文的缩写,其全名是Model-View-Controller,也就是“模型-视图-控制器”这三个部分组成。这三个部分任意一个部分发生变化都会引起另外两个发生变化。三者之间的关系示意图如下所示: MVC分为三个部分,所以在MVC模型中将按照此三部分分成三…...

Java定时任务实现方案(二)——ScheduledExecutorService

这篇笔记&#xff0c;我们要来介绍实现Java定时任务的第二个方案&#xff0c;使用ScheduledExecutorService&#xff0c;以及该方案的优点和缺点。 ScheduledExecutorService是Java并发包java.util.concurrent中用于执行定时任务和周期性任务的接口&#xff0c;它拓展了Executo…...

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中&#xff0c;小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案&#xff0c;用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍&#xff0c;为大家介绍如何创建主代理&#xff0c;将多个子代理挂载到主代理…...

Leecode刷题C语言之收集所有金币可获得的最大积分

执行结果:通过 执行用时和内存消耗如下&#xff1a; int dfs(int node, int parent, int f, int* coins, int k, int **children, int *childCount, int **memo) {if (memo[node][f] ! -1) {return memo[node][f];}int res0 (coins[node] >> f) - k;int res1 coins[no…...

STM32_SD卡的SDIO通信_基础读写

本篇将使用CubeMXKeil, 创建一个SD卡读写的工程。 目录 一、SD卡要点速读 二、SDIO要点速读 三、SD卡座接线原理图 四、CubeMX新建工程 五、CubeMX 生成 SD卡的SDIO通信部分 六、Keil 编辑工程代码 七、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、SD卡 速读…...

新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景

新手理解&#xff1a;Android 中 Handler 和 Thread.sleep 的区别及应用场景 Handler 是啥&#xff1f;Handler 的几个核心功能&#xff1a; Thread.sleep 是啥&#xff1f;Thread.sleep 的核心特点&#xff1a; 两者的区别它们的应用场景1. Handler 的应用场景2. Thread.sleep…...

C语言-----扫雷游戏

扫雷游戏的功能说明 &#xff1a; • 使⽤控制台实现经典的扫雷游戏 • 游戏可以通过菜单实现继续玩或者退出游戏 • 扫雷的棋盘是9*9的格⼦ • 默认随机布置10个雷 • 可以排查雷&#xff1a; ◦ 如果位置不是雷&#xff0c;就显⽰周围有⼏个雷 ◦ 如果位置是雷&#xff0c;就…...

监控与调试:性能优化的利器 — ShardingSphere

在分布式数据库系统中&#xff0c;监控和调试是确保系统高效运行的关键。ShardingSphere 提供了多种监控和调试工具&#xff0c;帮助开发者实时跟踪和优化性能&#xff0c;识别瓶颈&#xff0c;进行故障排查&#xff0c;从而提升系统的稳定性和响应速度。本文将介绍如何使用 Sh…...

Kubernetes相关知识入门详解

一、Pod的滚动升级 1.服务升级的一般思路&#xff1a;停止与该服务相关的所有服务pod&#xff0c;重新拉去更新后的镜像并启动。这种方法存在一个比较现实的问题是逐步升级导致较长时间的服务不可用。 2.Kubernetes滚动升级的思路&#xff1a;通过滚动升级的命令创建新的rc&…...

多层 RNN原理以及实现

数学原理 多层 RNN 的核心思想是堆叠多个 RNN 层&#xff0c;每一层的输出作为下一层的输入&#xff0c;从而逐层提取更高层次的抽象特征。 1. 单层 RNN 的数学表示 首先&#xff0c;单层 RNN 的计算过程如下。对于一个时间步 t t t&#xff0c;单层 RNN 的隐藏状态 h t h_t…...

Unity阿里云OpenAPI 获取 Token的C#【记录】

获取Token using UnityEngine; using System; using System.Text; using System.Linq; using Newtonsoft.Json.Linq; using System.Security.Cryptography; using UnityEngine.Networking; using System.Collections.Generic; using System.Globalization; using Cysharp.Thr…...

java+vue项目部署记录

目录 前言 一、java和vue 二、部署记录 1.获取代码 2.运行前端 3.运行后端 三、其他 1.nvm 总结 前言 近期工作需要部署一套javavue前后分离的项目&#xff0c;之前都略有接触&#xff0c;但属于不及皮毛的程度&#xff0c;好在对其他开发语言、html js这些还算熟&am…...

PID 控制算法(二):C 语言实现与应用

在本文中&#xff0c;我们将用 C 语言实现一个简单的 PID 控制器&#xff0c;并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态&#xff08;如温度、速度等&#xff09;。同时&#xff0c;我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…...

深入MapReduce——计算模型设计

引入 通过引入篇&#xff0c;我们可以总结&#xff0c;MapReduce针对海量数据计算核心痛点的解法如下&#xff1a; 统一编程模型&#xff0c;降低用户使用门槛分而治之&#xff0c;利用了并行处理提高计算效率移动计算&#xff0c;减少硬件瓶颈的限制 优秀的设计&#xff0c…...

在Spring Boot中使用SeeEmitter类实现EventStream流式编程将实时事件推送至客户端

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…...

Qt实践:一个简单的丝滑侧滑栏实现

Qt实践&#xff1a;一个简单的丝滑侧滑栏实现 笔者前段时间突然看到了侧滑栏&#xff0c;觉得这个抽屉式的侧滑栏非常的有趣&#xff0c;打算这里首先尝试实现一个简单的丝滑侧滑栏。 首先是上效果图 &#xff08;C&#xff0c;GIF帧率砍到毛都不剩了&#xff09; QProperty…...

基于ESP32-IDF驱动GPIO输出控制LED

基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED 3.1 LED电路 可以看到&#x…...

OpenCV文字绘制支持中文显示

OpenCV版本&#xff1a;4.4 IDE&#xff1a;VS2019 功能描述 OpenCV绘制文本的函数putText()不支持中文的显示&#xff0c;网上很多方法推荐的都是使用FreeType来支持&#xff0c;FreeType是什么呢&#xff1f;FreeType的官网上有介绍 FreeType官网 https://www.freetype.or…...

jenkins-k8s pod方式动态生成slave节点

一. 简述&#xff1a; 使用 Jenkins 和 Kubernetes (k8s) 动态生成 Slave 节点是一种高效且灵活的方式来管理 CI/CD 流水线。通过这种方式&#xff0c;Jenkins 可以根据需要在 Kubernetes 集群中创建和销毁 Pod 来执行任务&#xff0c;从而充分利用集群资源并实现更好的隔离性…...

消息队列篇--基础篇(消息队列特点,应用场景、点对点和发布订阅工作模式,RabbmitMQ和Kafka代码示例等)

1、消息队列的介绍 消息&#xff08;Message&#xff09;是指在应用之间传送的数据&#xff0c;消息可以非常简单&#xff0c;比如只包含文本字符串&#xff0c;也可以更复杂&#xff0c;可能包含嵌入对象。 消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09…...

Jetpack架构组件学习——使用Glance实现桌面小组件

基本使用 1.添加依赖 添加Glance依赖: // For AppWidgets supportimplementation "androidx.glance:glance-appwidget:1.1.0"// For interop APIs with Material 3implementation "androidx.glance:glance-material3:1.1.0"// For interop APIs with Mater…...

go读取excel游戏配置

1.背景 游戏服务器&#xff0c;配置数据一般采用csv/excel来作为载体&#xff0c;这种方式&#xff0c;策划同学配置方便&#xff0c;服务器解析也方便。在jforgame框架里&#xff0c;我们使用以下的excel配置格式。 然后可以非常方便的进行数据检索&#xff0c;例如&#xff…...

Linux系统下速通stm32的clion开发环境配置

陆陆续续搞这个已经很久了。 因为自己新电脑是linux系统无法使用keil&#xff0c;一开始想使用vscode里的eide但感觉不太好用&#xff1b;后面想直接使用cudeide但又不想妥协&#xff0c;想趁着这个机会把linux上的其他单片机开发配置也搞明白&#xff1b;而且非常想搞懂cmake…...

快慢指针及原理证明(swift实现)

目录 链表快慢指针一、快慢指针基本介绍二、快慢指针之找特殊节点1.删除链表的倒数第k个结点题目描述解题思路 2.链表的中间节点题目描述解题思路 三、快慢指针之环形问题1.判断环形链表题目描述解题思路 2.判断环形链表并返回入环节点题目描述解题思路 3.变种——判断快乐数题…...

web前端3--css

注意&#xff08;本文一切代码一律是在vscode中书写&#xff09; 1、书写位置 1、行内样式 //<标签名 style"样式声明"> <p style"color: red;">666</p> 2、内嵌样式 1、style标签 里面写css代码 css与html之间分离 2、css属性:值…...

一文大白话讲清楚webpack基本使用——5——babel的配置和使用

文章目录 一文大白话讲清楚webpack基本使用——5——babel的配置和使用1. 建议按文章顺序从头看&#xff0c;一看到底&#xff0c;豁然开朗2. babel-loader的配置和使用2.1 针对ES6的babel-loader2.2 针对typescript的babel-loader2.3 babel配置文件 一文大白话讲清楚webpack基…...

Python自动化运维:一键掌控服务器的高效之道

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在互联网和云计算高速发展的今天,服务器数量的指数增长使得手动运维和管理变得异常繁琐。Python凭借其强大的可读性和丰富的生态系统,成为…...

基于quartz,刷新定时器的cron表达式

文章目录 前言基于quartz&#xff0c;刷新定时器的cron表达式1. 先看一下测试效果2. 实现代码 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&…...

HTML常用属性

HTML标签的常见属性包括许多不同的功能&#xff0c;可以为元素提供附加信息或控制元素的行为。以下是一些常见的属性及其解释&#xff1a; 1. src 描述&#xff1a;src&#xff08;source&#xff09;属性指定一个资源的路径&#xff0c;通常用于图像、音频、视频等标签。常见…...

在 Babylon.js 中使用 Gizmo:交互式 3D 操作工具

在 3D 应用程序中&#xff0c;交互式操作对象&#xff08;如平移、旋转、缩放&#xff09;是一个常见的需求。Babylon.js 提供了一个强大的工具——Gizmo&#xff0c;用于在 3D 场景中实现这些功能。本文将介绍如何在 Babylon.js 中使用 Gizmo&#xff0c;并展示如何通过代码实…...

蓝桥杯练习日常|递归-进制转换

蓝桥云课760数的计算 一、递归 题目&#xff1a; 我的解题代码&#xff1a; #include <iostream> using namespace std; int sum0; int main() {// 请在此输入您的代码int n;cin>>n;int fun(int n);fun(n); cout<<sum<<\n;return 0; } // void fu…...

LabVIEW滤波器选择与参数设置

在信号处理应用中&#xff0c;滤波器是去除噪声、提取目标信号的重要工具。LabVIEW 提供多种类型的滤波器&#xff08;如低通、高通、带通、带阻&#xff09;&#xff0c;用户需要根据采样频率、信号特性和应用需求合理选择滤波器类型及参数设置。本文以 采样率 100kHz&#xf…...

【c语言日寄】Vs调试——新手向

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

C#中的Timers.Timer使用用法及常见报错

System.Timers.Timer 是一个基于服务器的计时器&#xff0c;它可以在应用程序中定期触发事件。这个计时器特别适合用于多线程环境&#xff0c;并且不应该与用户界面(UI)直接交互。在 ASP.NET 中&#xff0c;通常使用 System.Timers.Timer 来处理周期性的任务。 主要使用步骤&am…...

chrome小插件:长图片等分切割

前置条件&#xff1a; 安装有chrome谷歌浏览器的电脑 使用步骤&#xff1a; 1.打开chrome扩展插件 2.点击管理扩展程序 3.加载已解压的扩展程序 4.选择对应文件夹 5.成功后会出现一个扩展小程序 6.点击对应小程序 7.选择图片进行切割&#xff0c;切割完成后会自动保存 代码…...

mysql数据被误删的恢复方案

文章目录 一、使用备份恢复二、使用二进制日志&#xff08;Binary Log&#xff09;三、使用InnoDB表空间恢复四、使用第三方工具预防措施 数据误删是一个严重的数据库管理问题&#xff0c;但通过合理的备份策略和使用适当的恢复工具&#xff0c;可以有效地减少数据丢失的风险…...

K8S-Pod资源清单的编写,资源的增删改查,镜像的下载策略

1. Pod资源清单的编写 1.1 Pod运行单个容器的资源清单 ##创建工作目录 mkdir -p /root/manifests/pods && cd /root/manifests/pods vim 01-nginx.yaml ##指定api版本 apiVersion: v1 ##指定资源类型 kind: Pod ##指定元数据 metadata:##指定名称name: myweb ##用户…...

Unity Line Renderer Component入门

Overview Line Renderer 组件是 Unity 中用于绘制连续线段的工具。它通过在三维空间中的两个或两个以上的点的数组&#xff0c;并在每个点之间绘制一条直线。可以绘制从简单的直线到复杂的螺旋线等各种图形。 1. 连续性和独立线条 连续性&#xff1a;Line Renderer 绘制的线条…...

计算机工程:解锁未来科技之门!

计算机工程与应用是一个充满无限可能性的领域。随着科技的迅猛发展&#xff0c;计算机技术已经深深渗透到我们生活的方方面面&#xff0c;从医疗、金融到教育&#xff0c;无一不在彰显着计算机工程的巨大魅力和潜力。 在医疗行业&#xff0c;计算机技术的应用尤为突出。比如&a…...