『Jmeter超级干货』| Linux下Jmeter安装配置、脚本设计执行、监控及报告完整过程

『Jmeter超级干货』| Linux下Jmeter安装配置、脚本设计执行、监控及报告完整过程

  • 1 JDK安装部署
    • 1.1 JDK下载
    • 1.2 JDK配置
  • 2 Jmeter安装部署
    • 2.1 Jmeter下载
    • 2.2 Jmeter安装
    • 2.3 Jmeter相关目录配置
    • 2.4 Jmeter启动配置
    • 2.5 检查并启动
  • 3 Jmeter汉化
    • 3.1 临时修改
    • 3.2 永久修改
  • 4 准备测试对象
    • 4.1 下载安装
    • 4.2 启动服务
    • 4.3 访问测试对象
    • 4.4 注意事项
    • 4.5 其他参数
    • 4.6 网页登录数据库
  • 5 测试数据
  • 6 测试目标
  • 7 脚本设计
    • 7.1 添加http信息头管理器
    • 7.2 添加http请求默认值
    • 7.3 添加线程组
    • 7.4 添加http请求
    • 7.5 添加查看结果树
    • 7.6 运行调试
  • 8 安装jmeter-plugins-manager插件
    • 8.1 jmeter-plugins-manager包配置
    • 8.2 下载PerfMon插件并应用
    • 8.3 添加PerfMon监听器
  • 9 服务端配置ServerAgent
    • 9. 1下载ServerAgent
    • 9.2配置ServerAgent
  • 10 Jmeter配置监控指标
  • 11 GUI方式运行
  • 12 非GUI运行
    • 12.1 安装jmeter-plugins-cmd插件
    • 12.2 命令行启动性能脚本
  • 13 报告查看
  • 14 命令行生成监控图片
  • 15 命令行生成csv文件

注意:
1、之前写过一个是windows平台的,本文是Linux平台的;
2、另外需要注意的是,本文仅为示例过程,所以将客户端和服务器都用在同一台机器上。一般情况下不建议这么做,会影响性能结果的准确性。

1 JDK安装部署

1.1 JDK下载

  • 安装地址:Java Downloads;
  • 先查看自己的系统配置:
noamanelson@noamanelson-Virtual-Machine:~$ uname -a
Linux noamanelson-Virtual-Machine 6.2.0-36-generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct  9 15:34:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
  • 我的是x86_64,选对应的包即可:

在这里插入图片描述

1.2 JDK配置

  • 将下载的包上传到服务器:
    在这里插入图片描述
  • 创建一个文件夹:
sudo mkdir /usr/local/java
  • 把压缩包放到以上目录进行解压:
    在这里插入图片描述
sudo tar -zxvf jdk-21_linux-x64_bin.tar.gz 
  • 解压后删除多余的其他安装包,解压后如下:
    在这里插入图片描述
  • 配置环境变量sudo vim /etc/profile,增加java解压后的路径即可:
export JAVA_HOME=/usr/local/java/jdk-21.0.1
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
  • 保存后,使配置文件生效(以下方法如果不行,建议重启电脑):
source /etc/profile
  • 使用java -version查看安装是否ok即可。

2 Jmeter安装部署

2.1 Jmeter下载

  • 下载地址:Jmeter官网;
  • 选择文件下载:
    在这里插入图片描述

2.2 Jmeter安装

  • 将下载的Jmeter上传到服务器:
    在这里插入图片描述
  • 创建Jmeter目录:
mkdir jmeter_test
  • 查看安装包的权限并赋予执行权限:
    在这里插入图片描述
chmod +755 apache-jmeter-5.6.2.tgz

在这里插入图片描述

  • 解压到当前目录下:
tar -zxvf apache-jmeter-5.6.2.tgz 

2.3 Jmeter相关目录配置

  • 解压后如下,即安装目录为:
# /home/noamanelson/jmeter_test/apache-jmeter-5.6.2

在这里插入图片描述

  • 创建脚本存放目录jmeter_scirpt:
# /home/noamanelson/jmeter_test/jmeter_scirpt
mkdir jmeter_scirpt
  • 创建报告存放目录jmeter_report
# /home/noamanelson/jmeter_test/jmeter_report
mkdir jmeter_report
  • 创建日志存放目录jmeter_log
# /home/noamanelson/jmeter_test/jmeter_log
mkdir jmeter_log
  • 创建结果存放目录jmeter_result
# /home/noamanelson/jmeter_test/jmeter_result
mkdir jmeter_result

2.4 Jmeter启动配置

  • 打开配置文件sudo vim /etc/profile,最后添加如下内容:
export JMETER_HOME=/home/noamanelson/jmeter_test/apache-jmeter-5.6.2
exportCLASSPATH=${JMETER_HOME}/lib/ext/ApacheJMeter_core.jar:${JMETER_HOME}/lib/jorphan.jar:${CLASSPATH}
export PATH=${JMETER_HOME}/bin:$PATH
  • 使得配置文件生效(以下方法如果不行,建议重启电脑):
source /etc/profile

2.5 检查并启动

  • 输入jmeter -v,如果出现以下内容,说明安装成功了:
noamanelson@noamanelson-Virtual-Machine:~$ jmeter -v
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.6.2

Copyright (c) 1999-2023 The Apache Software Foundation

  • 输入jmeter启动即可:
    在这里插入图片描述
    在这里插入图片描述

3 Jmeter汉化

3.1 临时修改

  • 即设置后只对本次使用有效,重启后恢复默认语言;
  • 选择Options—>Choose Language—>选择语言(例如:Chinese(Simplified)简体中文)设置成功。重启Jmeter又会恢复英文;
    在这里插入图片描述

3.2 永久修改

  • 即永久性设置,设置后每次打开显示的语言都是一样的;
  • 进入到Jmeterbin目录下,找到jmeter.properties文档;
  • 打开查找language,找到language=en的行如下图,将en改为zh_CN,并且去掉前面的#号,保存退出;
vim jmeter.properties 

在这里插入图片描述

  • 重启jmeter,语言设置成功。
    在这里插入图片描述

4 准备测试对象

4.1 下载安装

  • 禅道官网找到Linux一键安装包:
    在这里插入图片描述
  • 点击下载后,使用xftp上传到ubuntu上;
  • 把上传到ubuntu上的禅道安装包复制到/opt目录下:
sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
  • 将安装包直接解压到/opt目录下:
sudo tar -zxvf ZenTaoPMS-18.8-zbox_amd64.tar.gz 

在这里插入图片描述

4.2 启动服务

  • 禅道服务包括ApacheMysql,启动命令如下;
  • 启动所有服务:/opt/zbox/zbox start
    在这里插入图片描述
  • 停止所有服务:/opt/zbox/zbox stop
  • 重启所有服务:/opt/zbox/zbox restart
  • 开机自动启动:以把 /opt/zbox/zbox restart 加到操作系统的自启目录。

4.3 访问测试对象

  • 禅道安装完并启动服务后,直接浏览器输入:
http://禅道服务器ip:apache端口。

特别注意:这里需要开放几个端口:
在这里插入图片描述
1、sudo ufw status查看开放的端口:
在这里插入图片描述
2、开放需要的端口:sudo ufw allow 端口
在这里插入图片描述
这里是引用

4.4 注意事项

  • 如果网页无法访问,请先关闭禅道所在电脑的防火墙和selinux再刷新网页访问试一下;
  • 使用云服务器请注意在安全组中开放apache使用端口;
  • 禅道默认管理员帐号是 admin,密码 123456;
  • 初次登陆请修改密码:
    在这里插入图片描述

4.5 其他参数

  • 如果不加任何参数执行 /opt/zbox/zbox 会打印输出命令可用参数:
  • Usage: ./zbox {start|stop|status} [--aport=8080] [--mport=3307]

–aport参数 可以修改Apache的端口
–mport参数 可以修改Mysql的端口

4.6 网页登录数据库

  • 禅道数据库管理用的是adminer,但是为了安全,访问adminer的时候需要身份验证,需要运行 sudo /opt/zbox/auth/adduser.sh来添加用户,如下命令:
# 进入脚本目录
cd /opt/zbox/auth

# 执行添加用户的脚本
bash adduser.sh
This tool is used to add user to access adminer
Account: admin  # 输入用户名
Password:       # 输入密码
Adding password for user admin 
  • 打开浏览器,输入 http://禅道服务的ip:apache端口 点击“数据库管理”:
    在这里插入图片描述
  • 输入用户名和密码:
    在这里插入图片描述
  • 网页直接显示登录界面:
    在这里插入图片描述

1、系 统:默认选择MySQL。
2、服务器:127.0.0.1:MySQL端口
(MySQL端口启用的是3306,那么就填写127.0.0.1:3306。
注意:ip只能写127.0.0.1)
3、用户名:root(禅道默认的数据库用户名是root) 密 码:123456(禅道默认的数据库密码是123456) 数据库:zentao。

5 测试数据

  • 将以下数据中的地址、用户名等参数改为自己的即可:
# 请求地址:
http://172.26.132.77:80/zentao/api.php/v1/tokens

# 请求方式:
POST

# 请求参数:
{"account": "admin", "password": "123456"}

6 测试目标

  • 使用登陆接口,对登陆接口进行压测;
  • 并发20,持续时间为5分钟。

7 脚本设计

7.1 添加http信息头管理器

  • 测试计划-右键-添加-配置元件-HTTP信息头管理器,如下:
    在这里插入图片描述
    在这里插入图片描述

7.2 添加http请求默认值

  • 测试计划-右键-添加-配置元件-HTTP请求默认值,如下:
    在这里插入图片描述
    在这里插入图片描述

7.3 添加线程组

  • 测试计划-右键-添加-线程(用户)-线程组,如下:
    在这里插入图片描述
    在这里插入图片描述

7.4 添加http请求

  • 线程组-右键-添加-取样器-http请求,如下:
    在这里插入图片描述
    在这里插入图片描述

7.5 添加查看结果树

  • 测试计划-右键-添加-监听器-查看结果树,如下:
    在这里插入图片描述

7.6 运行调试

  • 点击运行按钮,查看返回数据是否ok,如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

8 安装jmeter-plugins-manager插件

8.1 jmeter-plugins-manager包配置

  • 可以通过在jmeter客户端集成jmeter-plugins-manager插件,在服务端部署插件serverAgent来实时监控被压测服务器的性能;
  • 下载插件管理包:
    在这里插入图片描述
  • 放置到jmeter的安装目录lib\ext下:
    在这里插入图片描述

8.2 下载PerfMon插件并应用

  • 重启Jmeter,点击选项-插件管理器:
    在这里插入图片描述
  • PerfMon(Servers Performance Monitoring)选项,点击右下角的Apply Changes and Restart JMeter按钮应用:
    在这里插入图片描述
  • 安装完后如下:
    在这里插入图片描述

8.3 添加PerfMon监听器

  • 测试计划-右键-添加-监听器-jp@gc-PerfMon Metrics Collector,如下:
    在这里插入图片描述

9 服务端配置ServerAgent

9. 1下载ServerAgent

  • 下载ServerAgent-2.2.3.zip,下载官网地址;
    在这里插入图片描述

9.2配置ServerAgent

  • 下载后上传到linux上,并解压:
sudo unzip ServerAgent-2.2.3.zi
  • 进入到解压目录ServerAgent-2.2.3下,直接运行./startAgent.sh 启动;
    在这里插入图片描述

特别注意:
1、默认启动端口为4444;
2、也可以使用命令指定端口启动(例如将指定TCP为5678,UDP指定为6789):./startAgent.sh --tcp-port 5678--udp-port 6789--sysinfo
3、建议将此脚本写成shell脚本,授权chmod -R 777 XXX 之后下次直接启动脚本程序。
4、如果提示无法连接到4444端口,需要开放4444端口:sudo ufw allow 4444

10 Jmeter配置监控指标

  • jp@gc-PerfMon Metrics Collector上进行指标选择;
  • 点击AddRow,然后在host的地方添加需要监控的服务器的主机域名或者IP,port填写端口,Metric to collect下拉选择监控的指标(CPU、Memory、Swap、Disks I/O、Network I/O等):
    在这里插入图片描述

11 GUI方式运行

  • 直接运行脚本即可:
    在这里插入图片描述

12 非GUI运行

  • 性能测试时建议使用这种方式可以提升性能;
  • 这种方法运行时将监控数据输出到指定文件,文件必修是.jtl结尾;

12.1 安装jmeter-plugins-cmd插件

  • 在插件管理器中勾选如图即可:
    在这里插入图片描述

12.2 命令行启动性能脚本

  • 我们之前已经创建了脚本、报告等的存放路径:
    在这里插入图片描述
# /home/noamanelson/jmeter_test/jmeter_scirpt  # 脚本路径
# /home/noamanelson/jmeter_test/jmeter_report  # 报告路径
# /home/noamanelson/jmeter_test/jmeter_log     # 日志路径
# /home/noamanelson/jmeter_test/jmeter_result  # 结果路径
  • 命令行执行脚本命令为:
jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
  • 创建示例:
jmeter -n -t \
./jmeter_scirpt/test_login.jmx -l \
./jmeter_result/test_login.jtl -e -o \
./jmeter_report/
Creating summariser <summary>
Created the tree successfully using ./jmeter_scirpt/test_login.jmx
Starting standalone test @ 2023 Nov 30 16:15:44 CST (1701332144880)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +   1133 in 00:00:15 =   76.4/s Avg:   247 Min:    62 Max:  3045 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary +   2442 in 00:00:30 =   81.7/s Avg:   245 Min:   108 Max:  1383 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =   3575 in 00:00:45 =   80.0/s Avg:   245 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2585 in 00:00:30 =   86.2/s Avg:   231 Min:   117 Max:   616 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =   6160 in 00:01:15 =   82.4/s Avg:   240 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2509 in 00:00:30 =   83.6/s Avg:   238 Min:    97 Max:  1172 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =   8669 in 00:01:45 =   82.8/s Avg:   239 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2644 in 00:00:30 =   88.0/s Avg:   227 Min:    92 Max:   826 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  11313 in 00:02:15 =   84.0/s Avg:   236 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2606 in 00:00:30 =   87.0/s Avg:   229 Min:   101 Max:   985 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  13919 in 00:02:45 =   84.5/s Avg:   235 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2656 in 00:00:30 =   88.5/s Avg:   226 Min:   110 Max:  1042 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  16575 in 00:03:15 =   85.1/s Avg:   233 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2656 in 00:00:30 =   88.5/s Avg:   225 Min:   113 Max:  1199 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  19231 in 00:03:45 =   85.6/s Avg:   232 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2724 in 00:00:30 =   90.8/s Avg:   220 Min:   108 Max:  1299 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  21955 in 00:04:15 =   86.2/s Avg:   231 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   2676 in 00:00:30 =   89.2/s Avg:   223 Min:    88 Max:  1357 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
summary =  24631 in 00:04:45 =   86.5/s Avg:   230 Min:    62 Max:  3045 Err:     0 (0.00%)
summary +   1407 in 00:00:16 =   90.6/s Avg:   221 Min:   127 Max:  1441 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20
summary =  26038 in 00:05:00 =   86.7/s Avg:   230 Min:    62 Max:  3045 Err:     0 (0.00%)
Tidying up ...    @ 2023 Nov 30 16:20:45 CST (1701332445534)
... end of run

13 报告查看

  • 打开报告存放路径,比如:
/home/noamanelson/jmeter_test/jmeter_report

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

14 命令行生成监控图片

  • 新建存放图片的路径,比如mkdir jmeter_picture:
/home/noamanelson/jmeter_test/jmeter_picture
  • 命令行先执行JMeterPluginsCMD.sh,看下这个命令有没有问题:
$ JMeterPluginsCMD.sh 
Error: Unable to access jarfile /home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin/../lib/cmdrunner-2.2.jar
  • 发现这个文件找不到,我们看下图片中的/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin/../lib/cmdrunner-2.2.jar中的文件是否存在:
/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/lib
  • 结果发现是cmdrunner-2.3.jar而不是cmdrunner-2.2.jar,则需要修改JMeterPluginsCMD.sh文件;
    在这里插入图片描述
  • JMeterPluginsCMD.sh文件在/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin目录下:
    在这里插入图片描述
  • 修改为cmdrunner-2.3.jar
    在这里插入图片描述
  • 完整的执行命令如下:
JMeterPluginsCMD.sh --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
  • 示例如下:
JMeterPluginsCMD.sh \
--generate-png ./jmeter_picture/test_login.png \
--input-jtl ./jmeter_result/test_login.jtl \
--plugin-type PerfMon --width 800 --height 600

在这里插入图片描述

15 命令行生成csv文件

  • 创建csv文件存放路径,比如/home/noamanelson/jmeter_test/jmeter_csv :
mkdir jmeter_csv
  • 执行的命令为:
JMeterPluginsCMD.sh --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
  • 示例如下:
JMeterPluginsCMD.sh \
--tool Reporter \
--generate-csv ./jmeter_csv/test_login.csv \
--input-jtl ./jmeter_result/test_login.jtl \
--plugin-type PerfMon
  • 生成后如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/206808.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析 | Numpy】Numpy模块系列指南(一),从设计架构说起

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

【开源视频联动物联网平台】视频接入网关的用法

视频接入网关是一种功能强大的视频网关设备&#xff0c;能够解决各种视频接入、视频输出、视频转码和视频融合等问题。它可以在应急指挥、智慧融合等项目中发挥重要作用&#xff0c;与各种系统进行对接&#xff0c;解决视频能力跨系统集成的难题。 很多视频接入网关在接入协议…

品牌如何用软文与用户产生联结?媒介盒子分享两大要素

做软文推广&#xff0c;重要的一点就是为别人提供有价值或有意思的内容&#xff0c;比如卖车的教汽车养护知识&#xff0c;做金融的分享理财知识&#xff0c;人家觉得在这里能找到想要的东西&#xff0c;自然会成为粉丝&#xff0c;效果比强行推销要好很多。但是许多企业在做软…

【计算机毕业设计】springboot+java高校实验室器材耗材料借用管理系统94l73

实验室耗材管理系统在Eclipse/idea环境中&#xff0c;使用Java语言进行编码&#xff0c;使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务&#xff0c;本系统教师和学生申请使用实验材料&#xff0c;管理员管理实验材料&#xff0c;审核实验材料的申请…

冒泡排序算法是对已知的数列进行从小到大的递增排序。

题目描述冒泡排序算法是对已知的数列进行从小到大的递增排序每个实例输出两行&#xff0c;第一行输出第1轮结果, 第二行输出最终结果 它的排序方法如下: 1.对数列从头开始扫描&#xff0c;比较两个相邻的元素,如果前者大于后者,则交换两者位置 2.重复步骤1&#xff0c;直到没有…

抖音本地生活服务商申请条件

抖音的本地生活服务商目前有两种&#xff0c;一种是可以做全国的服务商&#xff0c;我们一般叫抖音本地生活服务商&#xff0c;一种是区域优待服务商&#xff0c;也就是后面出来的服务商&#xff0c;这两种服务商的申请方式大同小异。 相同的地方就是都需要给平台交保证金。抖…

【深度学习实验】图像处理(三):PIL——自定义图像数据增强操作(随机遮挡、擦除、线性混合)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. PIL基础操作2. Cutout&#xff08;遮挡&#xff09;2.1 原理2.2 实现2.3 效果展示 3. Random Erasing&#xff08;随机擦除&#xff09;3.1 原理3.2 实现3.3 效果展示 4. Mixup&…

简单0成本构建一个企业内部的视频点播、培训直播、安防监控、录像管理于一体的数字视频管理体系

以前&#xff0c;企业要构建一套数字化的视频管理体系&#xff0c;把企业内部的各种视频文件、直播培训、安防监控视频都整合到一套流媒体音视频服务里面&#xff0c;实现统一的对外供货、对外赋能的方案&#xff0c;是很困难的&#xff01;因为&#xff0c;原来这都是好几个项…

jupyter notebook 添加环境与删除环境

添加环境 一、查看conda现有的环境 打开 Anaconda Powershell Prompt 输入以下代码&#xff0c;查看全部环境&#xff1a;conda env list 可以看到如下已经配置的环境变量&#xff1a; 二、激活现有环境 在 Anaconda Powershell Prompt 继续输入&#xff0c;激活环境&#…

【brpc学习实践十二】bthread

概览 bthread(代码)是baidu-rpc使用的M:N线程库,是其稳定和高效的关键组件。能更好地利用多核cpu,能在pthread中运行,需要注意的是,bthread的work stealing机制会da让任务pthread发生切换,从而让thread_local变量不可信,通常在bthread_usleep或这join的时候就有可能发生…

基于单片机的蔬菜大棚温湿度控制系统

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个节日彩灯门&#xff0c;设计的系统实用性强、操作简单&#xff0c;实现了智能化、数字化。 本系统通过SHT11传感器测量出大棚内的温湿度&#xff0c;并将温湿度电信号传至单片机AT89C51,单片机系统通过预先设…

双向ESD保护 汽车级TVS二极管 ESD9B3.3ST5G工作原理、特性参数、封装形式

什么是汽车级TVS二极管&#xff1f; TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护&#xff0c;防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。 在汽车电子系统中&#xff0c;由于车辆启…

leetCode 78.子集 + 回溯算法 + 图解 + 笔记

给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2],[1,2],[3],[1…

智慧机场视频监控系统方案:AI智能助力机场智慧运营

一、方案背景 随着人们生活物质水平的上升&#xff0c;人们对机场的需求也日益增多&#xff0c;在民航新建、迁建、扩建机场项目猛增的同时&#xff0c;也需同步配备相应的安防监控系统&#xff0c;以满足民航机场安全管理要求和机场运营业务的高速发展。 二、方案概述 智慧机…

【服务部署】常用内网穿透方案

一、前言 由于一些开发及使用需求&#xff0c;需要将内网机器端口映射到公网&#xff0c;达到公网访问内网环境的目的 本文主要介绍几种常用的内网穿透方案 ssh远程端口转发 部署简单&#xff0c;无需额外安装软件包 frp反向代理 功能配置丰富&#xff0c;部署相对复杂&#…

frp 配置内网访问

frp介绍 frp 是一个开源、简洁易用、高性能的内网穿透软件&#xff0c;支持 tcp, udp, http, https 等协议。frp 项目官网是 https://github.com/fatedier/frp 下载地址&#xff1a; https://github.com/fatedier/frp/releases frp工作原理 服务端运行&#xff0c;监听一个…

键盘敲入一个字母,操作系统发生了什么?

一、设备控制器 我们的电脑设备可以接非常多的输入输出设备&#xff0c;比如鼠标键盘网卡硬盘打印机等&#xff0c;每个设备的用法和功能都不相同&#xff0c;那操作系统是如何把这些输入输出设备统一管理的呢&#xff1f; 为了屏蔽设备之间的差异&#xff0c;每个设备都有一…

前端项目环境的搭建

一、下载并且安装Node&#xff08;不安装node&#xff0c;就安装nvm。nvm安装教程&#xff09;&#xff1a; 1.官网下载Node&#xff1a;https://nodejs.org/en/ 2.测试nodejs安装是否成功&#xff1a; 在windows powerShell中输入node -v 和 npm -v&#xff0c;看到版本号就…

【23-24 秋学期】NNDL 作业9 RNN - SRN

简单循环网络&#xff08;Simple Recurrent Network&#xff0c;SRN&#xff09;只有一个隐藏层的神经网络&#xff0e; 目录 1. 实现SRN &#xff08;1&#xff09;使用Numpy &#xff08;2&#xff09;在1的基础上&#xff0c;增加激活函数tanh &#xff08;3&#xff0…

rabbitMQ镜像队列的使用

在rabbitMQ集群中&#xff0c;默认发送消息时&#xff0c;队列默认时在一个节点上存在的。 我们以node01 node02 node03三节点集群为例&#xff0c;在node01声明队列发送消息后&#xff0c;发现&#xff1a; 测试队列只在节点node01上出现。 我们手动停止node01后&#xff0c…