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

etcd性能测试

etcd性能测试

本文参考官方文档完成etcd性能测试,提供etcd官方推荐的性能测试方案。

1. 理解性能:延迟与吞吐量

etcd 提供稳定、持续的高性能。有两个因素决定性能:延迟和吞吐量。延迟是完成一项操作所花费的时间。吞吐量是在某个时间段内完成的操作总数。通常情况下,当 etcd 接受并发的客户端请求时,随着整体吞吐量的增加,平均延迟也会上升。

etcd 使用 Raft 共识算法在成员之间复制请求并达成一致。共识性能,尤其是提交延迟,受到两个物理限制因素的制约:网络输入输出(IO)延迟和磁盘输入输出(IO)延迟。完成一个 etcd 请求的最短时间是成员之间的网络往返时间(RTT),再加上 fdatasync 将数据提交到永久存储所需的时间。数据中心内的往返时间可能长达几百微秒。在美国境内典型的往返时间约为 50 毫秒,而在各大洲之间可能慢至 400 毫秒。对于传统机械硬盘,典型的 fdatasync 延迟约为 10 毫秒。对于固态硬盘(SSD),延迟通常低于 1 毫秒。为了提高吞吐量,etcd 将多个请求成批处理,然后提交给 Raft 算法。这种批处理策略使得 etcd 即使在重负载情况下也能实现高吞吐量。

2. 基准测试

对 etcd 性能进行基准测试可以使用 etcd 自带的基准测试命令行工具来完成。
为了获取一些基准性能数据,我们考虑搭建一个由三个成员组成的 etcd 集群,其硬件配置如下:

  • Kubernetes v1.28.2,使用kubeadm部署;
  • 3 台机器,每台配置为 4 个虚拟 CPU + 8GB 内存 + 50GB 固态硬盘(虚拟,SCSI);机器使用VMware Workstation虚拟机。
  • 1 台(客户端)机器,配置为 4个虚拟 CPU + 16GB 内存 + 50GB 固态硬盘(虚拟,SCSI);
  • 操作系统为 Ubuntu 20.04;
  • etcd 版本为 3.5.9,Go 语言版本为 1.22.2;

说明

benchmark是etcd项目自带的压测工具,项目源码:https://github.com/etcd-io/etcd/tree/master/tools/benchmark

2.1 测试环境准备

benchmark安装

工具包括在etcd源码中,克隆仓库进行安装。这里将benchmark安装到测试的客户端机器中:

git clone https://github.com/etcd-io/etcd.git
cd etcd# 安装
$ go install -v ./tools/benchmark

安装会将可执行文件放在 $GOPATH/bin 中。如果未设置GOPATH环境变量,则该工具将安装到 $HOME/go/bin 中。

etcd环境准备

这里使用k8s的etcd集群环境作为测试对象,etcd使用kubeadm自动部署。也可以自行部署etcd环境:

# etcd集群环境信息如下,此时leader节点为https://192.168.0.52:2379
root@master1:~# etcdctl endpoint status member list --cluster -w table
+---------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|         ENDPOINT          |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+---------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| https://192.168.0.53:2379 |  94d50163269e24a |   3.5.9 |   47 MB |     false |      false |       140 |    2530830 |            2530830 |        |
| https://192.168.0.51:2379 | 520e81a36ed5d9f0 |   3.5.9 |   46 MB |     false |      false |       140 |    2530830 |            2530830 |        |
| https://192.168.0.52:2379 | 626555ae08021005 |   3.5.9 |   45 MB |      true |      false |       140 |    2530830 |            2530830 |        |
+---------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+# etcd测试key
root@master1:~# etcdctl put testkey testvalue
OK
root@master1:~# etcdctl get testkey
testkey
testvalue
测试客户端配置

由于etcd使用https进行访问,这里配置benchmark连接使用https,将k8s相应证书目录拷贝到客户端机器下:

root@master1:/etc# ls /etc/kubernetes/
admin.conf  controller-manager.conf  kubelet.conf  manifests  pki  scheduler.conf  tmproot@master1:/etc# scp -r kubernetes/ root@192.168.0.54:`pwd`
The authenticity of host '192.168.0.54 (192.168.0.54)' can't be established.
ED25519 key fingerprint is SHA256:4KsD0Oi0sAARWMDCznPaRK+rcgOB5lN8XmBWt0rFCcc.
This host key is known by the following other names/addresses:~/.ssh/known_hosts:1: [hashed name]~/.ssh/known_hosts:4: [hashed name]~/.ssh/known_hosts:5: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.54' (ED25519) to the list of known hosts.# benchmark工具带证书路径运行即可
root@worker1:~# benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=1 --clients=1     range YOUR_KEY --consistency=l --total=10000 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key# 配置命令别名
root@worker1:~# alias benchmark="benchmark --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key"# 设置host地址
root@worker1:~# HOST_3=https://192.168.0.53:2379
root@worker1:~# HOST_2=https://192.168.0.52:2379
root@worker1:~# HOST_1=https://192.168.0.51:2379

2.2 etcd读性能

线性化(Linearizable)读请求会经过集群成员中的法定人数成员以达成一致性,从而获取最新的数据。可序列化(Serializable)读请求比线性化读请求的开销更低,因为可序列化读请求由任何单个 etcd 成员来处理,而无需大部分节点的参与,其代价是可能会返回过期的数据。

使用的性能测试命令如下:

# 单连接线性化读请求
benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=1 --clients=1 range testkey --consistency=l --total=10000# 单连接可序列化读请求
benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=1 --clients=1 range testkey --consistency=s --total=10000# 多连接并发线性化读请求
benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=100 --clients=1000 range testkey --consistency=l --total=100000# 多连接并发可序列化读请求
benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=100 --clients=1000 range testkey --consistency=s --total=100000

etcd读性能测试数据如下:

请求数量Key的大小(字节)Value的大小(字节)连接数客户端数量一致性(Consistency)平均读QPS请求平均延迟
10,000825611Linearizable2184.6ms
10,000825611Serializable5731.7ms
100,00082561001000Linearizable2430403ms
100,00082561001000Serializable4374216ms

2.3 etcd写性能

etcd写性能使用的性能测试命令如下:

# 向etcd集群的leader发起写请求,单连接。备注:${HOST_2}为集群的leader,见上面查询结果
benchmark --endpoints=${HOST_2} --target-leader --conns=1 --clients=1 put --key-size=8 --sequential-keys --total=10000 --val-size=256
# 向etcd集群的leader发起写请求,多连接
benchmark --endpoints=${HOST_2} --target-leader  --conns=100 --clients=1000 put --key-size=8 --sequential-keys --total=100000 --val-size=256# 向etcd集群所有成员发起写请求,多连接
benchmark --endpoints=${HOST_2},${HOST_2},${HOST_3} --conns=100 --clients=1000 put --key-size=8 --sequential-keys --total=100000 --val-size=256

在这种配置下,etcd 写入性能测试数据:

key的数量Key的大小(字节)Value的大小(字节)连接数客户端数量请求的etcd目标服务器平均写QPS请求平均延迟内存消耗(Average server RSS)
10,000825611只请求leader节点2543.9msxx MB
100,00082561001000只请求leader节点1695306msxx MB
100,00082561001000请求所有节点1507283msxx MB

建议在新环境中首次设置 etcd 集群时运行基准测试,以确保该集群达到足够的性能;集群的延迟和吞吐量可能会因细微的环境差异而受到影响,例如将etcd和其他高I/O的应用程序部署到同一个节点上,将严重影响etcd的读写效率,甚至影响etcd集群的稳定性。

3. 参考资料

etcd performance:https://etcd.io/docs/v3.6/op-guide/performance/#benchmarks

相关文章:

etcd性能测试

etcd性能测试 本文参考官方文档完成etcd性能测试,提供etcd官方推荐的性能测试方案。 1. 理解性能:延迟与吞吐量 etcd 提供稳定、持续的高性能。有两个因素决定性能:延迟和吞吐量。延迟是完成一项操作所花费的时间。吞吐量是在某个时间段内…...

在shell脚本内部获取该脚本所在目录的绝对路径

目录 需求描述 方法一:使用 dirname 和 readlink 命令 方法二:使用 BASH_SOURCE 变量 方法三:仅使用纯 Bash 实现 需求描述 工作中经常有这样情况,需要在脚本内部获取该脚本自己所在目录的绝对路径。 假如有一个脚本/a/b/c/…...

JavaEE企业级开发 延迟双删+版本号机制(乐观锁) 事务保证redis和mysql的数据一致性 示例

提醒 要求了解或者熟练掌握以下知识点 spring 事务mysql 脏读如何保证缓存和数据库数据一致性延迟双删分布式锁并发编程 原子操作类 前言 在起草这篇博客之前 我做了点功课 这边我写的是一个示例代码 数据层都写成了 mock 的形式(来源于 JUnit5) // Dduo import java.u…...

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测 目录 SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【SCI一区级】Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测(程…...

【Python】天气数据可视化

1. Python进行数据可视化 在数据分析和科学计算领域,Python凭借其强大的库和简洁的语法,成为了众多开发者和科研人员的首选工具。数据可视化作为数据分析的重要环节,能够帮助我们更直观地理解数据背后的规律和趋势。本文将详细介绍如何使用P…...

c#的.Net Framework 的console 项目找不到System.Window.Forms 引用

首先确保是建立的.Net Framework 的console 项目,然后天健reference 应用找不到System.Windows.Forms 引用 打开对应的csproj 文件 在第一个PropertyGroup下添加 <UseWindowsForms>true</UseWindowsForms> 然后在第一个ItemGroup 下添加 <Reference Incl…...

Ubuntu 重置密码方法

目录 修改过 root 密码&#xff0c;重置密码的方法没改过 root 密码‌&#xff0c;重置密码的方法 修改过 root 密码&#xff0c;重置密码的方法 Ubuntu 默认禁用root用户&#xff0c;意思就是安装好Ubuntu系统后&#xff0c;root用户默认是没有密码的&#xff0c;普通用户通过…...

电机控制常见面试问题(二十)

文章目录 一.整流电路绕组接法二.电机为什么需要转速器三.电机转矩产生原理四.电机控制中载波频率大小的确定五.开关周期 Tpwm 一.整流电路绕组接法 为了引出直流的输出&#xff0c;一定要在整流变压器的二次侧引出零线&#xff0c;所以二次侧绕组必须接成星形 一次绕组必须要…...

Linux系统之yum本地仓库创建

目录 一.Linux软件安装 1.Rpm包安装 2.yum本地仓库安装 二.yum本地仓库建立 三.编译 一.Linux软件安装 软件安装共2种安装方式&#xff0c;通过rpm包安装或通过yum仓库库安装。 先下载安装包命令的方式去安装软件包安装结束 得到一个可以执行程序 绝对路径下的程序 1.…...

未来技术的发展趋势与影响分析

区块链技术在版权中的应用越来越受到关注。它的基本原理是通过分布式账本将每一份作品的版权信息储存起来&#xff0c;确保这些信息不可篡改、不可删除。这就意味着&#xff0c;当创作者发布作品时&#xff0c;可以在区块链上登记相关信息。这样&#xff0c;任何人都能验证版权…...

ROS2 架构梳理汇总整理

文章目录 前言正文机器人平台整体架构&#xff08;ROS2&#xff09;图一、个人理解整体架构 ROS2架构图一、个人理解ROS2整体架构图二、开发者整理ROS2整体架构图三、Intel整理ROS2整体架构图四、DDS具体架构说明 ROS2 Control架构图一、官方整整理ROS2 Control整体架构 总结 前…...

蓝桥杯算法精讲:二分查找实战与变种解析

适合人群&#xff1a;蓝桥杯备考生 | 算法竞赛入门者 | 二分查找进阶学习者 目录 一、二分查找核心要点 1. 算法思想 2. 适用条件 3. 算法模板 二、蓝桥杯真题实战 例题&#xff1a;分巧克力&#xff08;蓝桥杯2017省赛&#xff09; 三、二分查找变种与技巧 1. 查找左边…...

多层感知机实现

激活函数 非线性 ReLU函数 修正线性单元 rectified linear unit relu(x)max(0,x) relu的导数&#xff1a; sigmoid函数 s i g m o i d ( x ) 1 1 e − x sigmoid(x)\frac{1}{1e^{-x}} sigmoid(x)1e−x1​ 是一个早期的激活函数 缺点是&#xff1a; 幂运算相对耗时&…...

Linux进程控制--进程创建 | 进程终止 | 进程等待 | 进程替换

1.进程创建 现阶段我们知道进程创建有如下两种方式&#xff0c;起始包括在以后的学习中有两种方式也是最常见的&#xff1a; 1、命令行启动命令(程序、指令)。 2、通过程序自身&#xff0c;使用fork函数创建的子进程。 1.1 fork函数 在linux操作系统中&#xff0c;fork函数是…...

Linux 网络编程(二)——套接字编程简介

文章目录 2 Socket 套接字 2.1 什么是 Socket 2.2 Socket编程的基本操作 2.3 地址信息的表示 2.4 网络字节序和主机字节序的转换 2.4.1 字节序转换 2.4.2 网络地址初始化与分配 2.5 INADDR_ANY 2.6 Socket 编程相关函数 2.7 C标准中的 main 函数声明 2.8 套接字应用…...

串行通信 与 并行通信 对比

总目录 一、并行通信 1. 定义与核心特点 1&#xff09; 定义 并行通信是指通过多条数据线同时传输一组数据的各个位&#xff08;如8位、16位或更多&#xff09;&#xff0c;以字节或字为单位进行数据交换的通信方式。 2&#xff09;核心特点 特点描述传输速度快多位同时传…...

基于springboot+vue的北部湾地区助农平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

Docker技术系列文章,第七篇——Docker 在 CI/CD 中的应用

在当今快速发展的软件开发领域&#xff0c;持续集成与持续部署&#xff08;CI/CD&#xff09;已经成为提高软件交付效率和质量的关键实践。而 Docker 作为一种流行的容器化技术&#xff0c;为 CI/CD 流程提供了强大的支持。通过将应用及其依赖项打包成容器&#xff0c;Docker 确…...

Hive SQL中 ?+.+ 的用法,字段剔除

一、含义 ?. 的用法代表剔除表中的特定字段&#xff0c;建议按照字段顺序列出以确保正确性。 二、参数设置 -- 首先需要设置一个参数&#xff1a; set hive.support.quoted.identifiersNone; --然后指定要剔除哪个字段 select (dateline)?. from test.dm_user_add三、举例…...

Vue学习笔记集--pnpm包管理器

pnpm包管理器 官网&#xff1a; https://www.pnpm.cn/ pnpm简介 pnpm全称是performant npm&#xff0c;意思为“高性能的npm”&#xff0c;它通过硬链接和符号链接共享依赖&#xff0c;提升安装速度并减少存储占用。 功能特点 节省磁盘空间&#xff1a;依赖包被存放在一个统…...

游戏交易系统设计与实现(代码+数据库+LW)

摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对游戏交易信息管理的提升&#x…...

为什么视频文件需要压缩?怎样压缩视频体积即小又清晰?

在日常生活中&#xff0c;无论是为了节省存储空间、便于分享还是提升上传速度&#xff0c;我们常常会遇到需要压缩视频的情况。本文将介绍为什么视频需要压缩&#xff0c;压缩视频的好处与坏处&#xff0c;并教你如何使用简鹿视频格式转换器轻松完成MP4视频文件的压缩。 为什么…...

腾讯pcg客户端一面

Java 基本引用类型 常见异常以及怎么处理 所有类的父类是什么&#xff0c;有哪些常用方法 常用线程池有哪些 线程池的创建参数 如何实现线程同步 常用锁有哪些 Lock和reentrantlock有什么不一样 Reentrantlock要手动释放锁吗 数据结构 数组和链表的区别 队列和栈的区别 为什么…...

解决vscode终端和本地终端python版本不一致的问题

&#x1f33f; 问题描述 本地终端&#xff1a; vscode终端&#xff1a; 别被这个给骗了&#xff0c;继续往下看&#xff1a; 难怪我导入一些包的时候老提示找不到&#xff0c;在本地终端就不会这样&#xff0c;于是我严重怀疑vscode中的python版本和终端不一样&#xff0c…...

常见几种网络攻击防御方式

xss跨站脚本攻击 反射型 XSS&#xff08;Reflected XSS&#xff09;&#xff1a; 恶意脚本是通过 URL 参数或者表单提交直接传递给服务器的&#xff0c;并且立即在响应页面中反射返回给用户。 假设有一个登录页面&#xff0c;用户可以通过 URL 参数传递一个消息&#xff1a; &…...

操作系统之输入输出

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

TCP/IP的网络连接设备

TCP/IP层物理层网卡、集线器、中继器数据链路层网桥、交换机网络层路由器传输层网关应用层 1.网桥&#xff1a;网桥主要功能是将一个网络的数据沿通信线路复制到另一个网络中去&#xff0c;可以有效的连接两个局域网 2.网关&#xff1a;网关又称协议转换器&#xff0c;是将两…...

记一次feign调用400,参数过长导致,修改解决

feign客户端PostMapping("/website/checkChooseColumn") boolean checkChooseColumn(RequestParam("chooseColumn") String chooseColumn);服务端 PostMapping("/checkChooseColumn") public boolean checkChooseColumn(RequestParam("cho…...

【大模型基础_毛玉仁】4.3 参数选择方法

目录 4.3 参数选择方法4.3.1 基于规则的方法4.3.2 基于学习的方法1&#xff09;公式&#xff1a;2&#xff09;Child-tuning 的两种变体模型3&#xff09;Child-tuning总结 4.3 参数选择方法 参数选择方法: 对预训练模型中部分参数微调&#xff0c;不添加额外参数以避免推理时…...

企业级Linux服务器初始化优化全流程

实战指南&#xff1a;企业级Linux服务器初始化优化全流程 本文基于某电商平台百万级并发服务器的真实调优案例整理&#xff0c;所有操作均在Rocky Linux8.5验证通过&#xff0c;不同发行版请注意命令差异 一、服务器安全加固&#xff08;Situation-Task-Action-Result&#xff…...

亿级分布式系统架构演进实战(十一)- 垂直拆分(服务治理体系、安全架构升级)

亿级分布式系统架构演进实战&#xff08;一&#xff09;- 总体概要 亿级分布式系统架构演进实战&#xff08;二&#xff09;- 横向扩展&#xff08;服务无状态化&#xff09; 亿级分布式系统架构演进实战&#xff08;三&#xff09;- 横向扩展&#xff08;数据库读写分离&#…...

飞速(FS)InfiniBand解决方案助力领先科技公司网络升级

国家&#xff1a;越南 行业&#xff1a;信息技术 网络类型&#xff1a;InfiniBand网络 方案类型&#xff1a;HPC网络 案例亮点 通过真实使用场景的全面测试&#xff0c;确保出色兼容性和高可用性&#xff0c;显著降低部署风险和运营成本。 借助飞速&#xff08;FS&#xf…...

[Qt5] QMetaObject::invokeMethod使用

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…...

深入理解垃圾收集算法:从分代理论到经典回收策略

垃圾收集&#xff08;Garbage Collection, GC&#xff09;是现代虚拟机自动内存管理的核心机制。它不仅能自动回收不再使用的对象&#xff0c;还能极大减轻开发者在内存管理上的负担。本文将详细讲解垃圾收集算法的基本思想、分代收集理论以及几种经典的垃圾收集算法。 注&…...

数据降维——PCA与LDA

特征选择和特征提取 特征选择和特征提取是数据降维的重要步骤。 1. 定义与目标 特征提取&#xff1a; 目标&#xff1a;通过变换&#xff08;如投影、编码&#xff09;将原始高维特征映射到新的低维空间&#xff0c;新特征是原始特征的组合&#xff08;线性或非线性&#xff…...

机器学习中的 K-均值聚类算法及其优缺点

K-均值聚类是一种常用的无监督学习算法&#xff0c;用于将数据集中的样本分为 K 个簇。其工作原理是通过迭代优化来确定簇的中心点&#xff0c;实现样本的聚类。 算法步骤如下&#xff1a; 随机选择 K 个样本作为初始簇中心。根据每个样本和簇中心的距离将样本归类到最近的簇…...

RAID原理

一、RAID 0 原理 ​核心特点​ ​条带化&#xff08;Striping&#xff09;​&#xff1a;数据被分割成块&#xff08;Block&#xff09;&#xff0c;交替写入多个磁盘​&#xff08;至少2块&#xff09;。​无冗余&#xff1a;不提供数据备份或校验&#xff0c;依赖所有磁盘同…...

2025系统分析师---软件工程:深度剖析常见软件开发方法

在软件工程这一复杂而精妙的领域中&#xff0c;软件开发方法的选择与实施无疑是项目成功的关键所在。作为一名资深软件技术专家&#xff0c;我深知不同的开发方法适用于不同的业务场景&#xff0c;各自具备独特的优缺点。本文将深入探讨几种常见的软件开发方法&#xff0c;包括…...

中文字符计数器,助力所有python对齐业务(DeepSeek代笔)

编码制式反推双宽&#xff0c;精准字宽库力推中文对齐。 笔记模板由python脚本于2025-03-26 23:49:24创建&#xff0c;本篇笔记适合为中文终端显示和文本输出对齐烦恼的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅…...

扫描注解指定路径

10.扫描注解 在 Spring Boot 中&#xff0c;EnableConfigurationProperties 和 ConfigurationPropertiesScan 是两个用于显式启用和管理 ConfigurationProperties 类的注解。它们提供了更灵活的方式来注册和扫描 ConfigurationProperties 类&#xff0c;尤其是在某些复杂场景或…...

像素到数据:Selenium,OpenCV,Tesseract,Python构建的智能解析系统

基于Selenium与OCR技术的网页信息智能提取方案 一、应用场景解析 在Web自动化测试和数据分析领域,经常需要处理动态渲染的网页信息,特别是当页面元素以图像形式呈现时。本文介绍的解决方案结合了浏览器自动化与图像识别技术,有效解决了以下典型场景: 动态渲染的可视化数据…...

徘徊检测:视觉分析技术的安防新方向

利用视觉分析的方式检测徘徊检测 背景 随着时代的发展&#xff0c;失业率上升导致社会不稳定因素增加&#xff0c;安保问题愈发突出。特别是在住宅区、工厂、办公园区等公共场所&#xff0c;对于徘徊人员的检测成为确保安全的关键一环。传统的安保手段如人工巡逻、监控录像回…...

CentOS 7 挂载与卸载文件系统

一、挂载文件系统​ 1. 查看系统磁盘与分区情况​ 在挂载文件系统之前&#xff0c;需要先了解系统中的磁盘和分区信息。使用fdisk -l命令&#xff0c;可列出所有磁盘和分区的详细信息&#xff0c;示例如下&#xff1a; [rootlocalhost ~]# fdisk -lDisk /dev/sda: 53.7 GB, …...

MySQL实战(尚硅谷)

要求 代码 # 准备数据 CREATE DATABASE IF NOT EXISTS company;USE company;CREATE TABLE IF NOT EXISTS employees(employee_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT );DESC employees;CREATE TABLE IF NOT EXISTS departments…...

JavaScript 改变 HTML 内容

JavaScript 改变 HTML 内容 JavaScript 改变 HTML 内容的核心在于通过 DOM&#xff08;文档对象模型&#xff09;操作实现动态更新&#xff0c;以下是主要方法及场景解析&#xff1a; 一、直接修改元素内容 1. innerHTML 属性 用于获取或设置元素的 HTML 内容&#xff08;包…...

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(部分题解)

文章目录 前言日期统计题意&#xff1a; 冶炼金属题意&#xff1a; 岛屿个数题意&#xff1a; 子串简写题意&#xff1a; 整数删除题意&#xff1a; 总结 前言 一年一度的&#x1f3c0;杯马上就要开始了&#xff0c;为了取得更好的成绩&#xff0c;好名字写了下前年2023年蓝桥…...

机器学习——Bagging、随机森林

相比于Boosting的集成学习框架&#xff0c;Bagging(Bootstrap Sampling&#xff0c;自助聚集法&#xff0c;又称为自助采样)作为一种自助聚集且并行化的集成学习方法&#xff0c;其通过组合多个基学习器的预测结果来提高模型的稳定性和泛化能力。其中随机森林是Bagging学习框架…...

数据库——MySQL基础操作

一、表结构与初始数据 假设存在以下两张表&#xff1a; 1. student 表 字段名数据类型描述idINT学生唯一标识符nameVARCHAR(100)学生姓名ageINT学生年龄sexVARCHAR(10)学生性别 初始数据&#xff1a; idnameagesex1张三20男2李四22女3王五21男 2. course 表 字段名数据类…...

存储过程、存储函数与触发器详解(MySQL 案例)

存储过程、存储函数与触发器详解&#xff08;MySQL 案例&#xff09; 一、存储过程&#xff08;Stored Procedure&#xff09; 定义 存储过程是预先编译好并存储在数据库中的一段 SQL 代码集合&#xff0c;可以接收参数、执行逻辑操作&#xff08;如条件判断、循环&#xff09;…...

2025年注册安全工程师考试练习题

注册安全工程师练习题&#xff0c;涵盖了不同的知识点和题型&#xff1a; 单选题 某机械制造企业委托具有相应资质的中介服务机构的专业技术人员为其提供安全生产管理服务。依据《安全生产法》&#xff0c;保证该企业安全生产的责任由&#xff08; &#xff09;负责。 A. 专业…...