jmeter接口测试项目实战详解,零基础也能学,源码框架都给你
目录
1.什么是jmeter?
2.jmeter能做什么?
3.jmeter环境搭建
3.1前提:
3.2jmeter下载:
3.3jmeter环境搭建:
3.3.1mac当中jmeter环境搭建:
3.4jmeter基本配置
3.4.1.切换语言
3.4.2.安装插件
4.jmeter组件
4.1测试计划
4.2线程组
4.2.1取样器错误后要执⾏的动作
4.2.2线程属性
4.3jmeter监听器
4.3.1聚合报告
4.3.2后端监听器
4.3.3察看结果树
4.3.4取样器
4.3.5配置元件
4.3.6逻辑控制器
4.3.7前置处理器
4.3.8后置处理器
4.3.9断⾔
4.3.10定时器
5.jmeter的目录内容:
6.Jmeter动态参数的解决思路是什么?
7.jmeter里面调用变量是什么怎么调用?
8.测试报告
8.1 认识ant
8.1.1 ant下载
8.1.2ant环境变量配置:
8.1.3验证环境:
8.2 认识build.xml文件
8.2目录结构
8.3自动发送邮件:
1.什么是jmeter?
JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流协议的测试
2.jmeter能做什么?
1.JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具,方便用户可以无代码的方式编写性能测试脚本。JMeter的特点可以总结为如下:
2.JMerer测试工具不仅仅可以做性能测试,也可以做API的测试,可以和构建工具整合起来,如Ant,Maven,以及CI工具的整合,以及也可以和Grafana可视化整合起来
3.JMeter支持多种协议进行性能测试,如HTTP,HTTPS,WS
3.jmeter环境搭建
3.1前提:
1、需要安装JDK的环境,配置java环境变量(参考:)
2、查看java环境是否搭建成功:javac / java -version
3.2jmeter下载:
下载地址:
3.3jmeter环境搭建:
3.3.1mac当中jmeter环境搭建:
控制台: sudo vim .bash_profile
把下面的复制进去,JMETER_HOME=后面是jmeter的路径,改成自己的路径
#JMETER export JMETER_HOME=/Applications/tools/apache-jmeter-5.4.1 export PATH=$JMETER_HOME/bin:$PATH
3.4jmeter基本配置
3.4.1.切换语言
环境搭建成功之后,就可以直接在控制台输入jmeter启动,启动成功后,先切换成中文
3.4.2.安装插件
第一步:选项--插件管理
第二步:在搜索框输入json 勾选第一行 点击右下角安装插件
jmeter接口测试视频教程:敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0
4.jmeter组件
4.1测试计划
在JMeter的测试工具中,把测试计划可以理解为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在一个测试计划里面包含了很多的线程组来进行执行,测试计划也是JMeter脚本的根节点。
4.2线程组
测试套件,等于postman里面的集合。JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组
在JMeter的测试⼯具中,依据业务的形态来设置它的⽬录结果,但是设置性能测试的场景,主要是在线程组中来进⾏设置。JMeter的线程组可以理解为是建⽴了⼀个线程池,在执⾏的过程中处理线程组⾥⾯的各个业务逻辑,线程组的信息具体如下:
4.2.1取样器错误后要执⾏的动作
这部分可以理解为当客户端向服务端发送请求后,以及发送请求的过程中出错后的异常处理⽅式。
继续
如果有⼀个请求错误,其他的请求会继续,不会因为有⼀个请求错误的导致其他请求终⽌。
启动下⼀个进程循环
如果请求出现问题,同⼀脚本中的其他请求就都不再执⾏,直接执⾏下⼀个进程的信息。如登录后下⼀个请求是查看个⼈主⻚,但是因为登录出错,下个接⼝查看个⼈主⻚就不会被执⾏。
停⽌线程
停⽌线程指的是如果请求失败,就停⽌当前线程执⾏,不再继续执⾏。如果线程数很多的,那么导致的结果是停⽌的线程就会很多,处于真正运⾏的线程会很少,最后导致服务器的负载不够,⼀般不建议构选改选项。
停⽌测试
如果请求失败,那么停⽌所有线程执⾏,也就是说停⽌整个测试。
⽴即停⽌测试
如果请求失败,⽴即停⽌整个测试场景的执⾏。
4.2.2线程属性
线程数
⼀个线程可以理解为对应模拟⼀个⽤户,所以线程数越多,那么也就认为可以模拟的⽤户数越多。
Ramp-Up时间(秒)
该属性指的是所有线程从启动到开始运⾏的时间间隔,单位是秒,也就是说所有线程在多⻓时间内开始执⾏,如线
程数设置50,设置的时间为5秒,那么计算的公式为:
每秒执⾏线程数=线程数/Ramp-Up
具体如:
如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执⾏后,每秒会启动5个线程,如果Ramp-Up设置为
0,那么开始执⾏后,50个线程会⽴刻启动
循环次数
循环次数可以理解为,请求的重复次数。如果选择“永远”,那么请求将⼀直进⾏,不建议这样操作。
延迟创建线程直到需要如50个线程数,Ramp-Up时间是10秒,执⾏后线程是全部就绪的,那么就是每隔1秒启动5个线程数
调度器
思维调度器可以理解为设置何时开始运⾏。
持续时间
测试计划持续多⻓时间
启动延迟
从当前时间延迟多⻓时间开始运⾏测试,也就是说点击执⾏后,仅仅是做初始化的场景,不会执⾏测试,等待延迟
到达后开始运⾏测试,执⾏的时间为持续时间设置的时间。
4.3jmeter监听器
4.3.1聚合报告
聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚合报告会显示在⼀⾏⾥⾯,那么⼀般来说,聚合报告都是根据取样器来显示每个取样器的执⾏结果信息。聚合报告的信息具体如下:
Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量
4.3.2后端监听器
后端监听器可以把JMeter与influxdb,grafana整合起来,把性能测试过程中的数据存储到influxdb,然后最后显示在grafana的可视化界⾯中。
4.3.3察看结果树
结果树能够很清晰的显示每个取样器执⾏的结果信息,以及每个取样器的⽹络请求信息
4.3.4取样器
取样器是JMeter的基本单元,⼀般性的各种都是取样器来发起的
HTTP请求
可以把它理解为⼀个独⽴的测试⽤例,或者说是⼀个测试场景。
4.3.5配置元件
配置元件可以理解为对取样器的各种请求进⾏辅助配置。
HTTP信息头管理器
每个HTTP的请求都是需要请求头的信息的,那么可以把请求头的信息添加到HTTP信息头管理器,然后需要把它放在取样器的前⾯。
HTTP Cookie管理器
在系统登录成功后需要访问系统中的其他⽹络请求,但是需要记住⽤户登录成功后的sessionID的信息,那么使⽤HTTP Cookie管理器就可以⾃动记录下这些信息。
在JMeter中,如果一个网站使用的是session来实现的,但是jmeter无法获取登录成功后的sessionid,那么也就导致登录后的请求,都会重定向到登录的页面,也就是说无法验证我是谁,可以使用cookie管理器来解决它内部会记住所有网络请求的cookie信息,并且会让所有的网络请求间的cookie共享,如下图:
⽤户定义的变量
在测试中,如果某些请求参数存在变化,⽐如是⽤户名和密码,那么就可以单独的独⽴出来,⽤户定义的变量可以
很轻松的来解决这部分的问题。
HTTP请求默认值
每个取样器发送⽹络请求的时候都是需要IP地址等信息,但是使⽤HTTP请求默认值可以很轻松的把请求的地址独
⽴出来。
4.3.6逻辑控制器
逻辑控制器主要控制JMeter的执⾏顺序,它的存在使整体的测试的灵活度更⾼。⽐如接⼝A执⾏完成后得到的结果
信息,经过逻辑控制器判断之后,再执⾏接⼝B或者是接⼝C。⼀般性的⽽⾔,简单控制器使⽤的最多,但是也看具
体的场景进⾏设置。
4.3.7前置处理器
在执⾏取样器之前,需要进⾏初始化的设置,等价于UnitTest测试框架中的setUp()的⽅法。
用户参数
我们⼀个测试点,需要多次操作,并且每次操作的数据都是不⼀样的测试步骤⼀致,但是测试数据每次不⼀样(前置处理器)
比如:登录的账户
CSV 数据⽂件设置
将数据放到一个文件里直接调用(配置元件里面)
记事本
csv文件
jmeter接口测试视频教程:
敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0
4.3.8后置处理器
在执⾏取样器之后执⾏,如API测试中经常会涉及到上个API的输出是下个API的输⼊,那么就会使⽤到后置处理器
中的正则表达式提取器或者是JSON提取器,BeanShell断⾔等。
正则表达式提取器:(后置处理器--正则表达式提取器)
测试地址
- 模板:⽤$$引⽤起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第⼏个值给user_id。例如:$1$表示匹配到的第⼀个值
- 匹配数字:0代表随机取值,-1代表所有值,此时提取结果是⼀个数组,其余正整数代表第⼏个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过 {user_id_2}来取第2个匹配的内容。
- 缺省值:正则匹配失败时,取的值
4.3.9断⾔
主要⽤来验证返回的结果数据与预期的结果数据是否完全匹配,⼀般最常⽤的是响应断⾔和JSON断⾔。
4.3.10定时器
定时器主要⽤来在测试计划执⾏的过程中,定时器⽤来缓减线程运⾏,⽐如刻意的等待3秒后再执⾏下⼀个请求的信息
延时等待
api的测试用例执行的速度非常快的,基本只在毫秒级别的,但是在某些时候,由于业务的特性吗,想让他延迟几秒钟执行,那么这个时候就用延时等待(定时器--固定定时器)
5.jmeter的目录内容:
bin目录:可执行的应用程序
extras目录:扩展插件目录
lib目录:所用到的插件目录,里面均为jar包
6.Jmeter动态参数的解决思路是什么?
假设一个图书管理系统,可以进行增删改查,我们在登录成功之后,会返回一个token值,通过登录接口的后置处理器中的json提取器或者正则表达式提取器,我们一般用json提取器,定义一个变量来存储登录成功后的token,在下个接口中我们在请求头当中调用这个变量。
7.jmeter里面调用变量是什么怎么调用?
在请求头添加token jwt ${token}
添加--配置元件--http信息头管理器--添加
8.测试报告
8.1 认识ant
8.1.1 ant下载
下载地址:
8.1.2ant环境变量配置:
mac配置ant环境变量:
#ant环境变量
export ANT_HOME=/Applications/tools/apache-ant-1.10.1
export PATH=$ANT_HOME/bin:$PATH
windows配置ant环境变量:
把他(目录到bin目录)配置到path环境变量
8.1.3验证环境:
控制台输入ant,现实如下说明环境已经搭建好
8.2 认识build.xml文件
ant构建工具,该构建工具执行的时候依赖于build.xml的文件,在build.xml文件里面会定义具体执行的脚本,执行的顺序,以及测试报告存储的目录
1 xml version="1.0" encoding="UTF8"?>2 3 <project name="ant-jmeter-test" default="run" basedir=".">4 5 <property name="jmeterPath" value="/Applications/tools/apache-jmeter-5.4.1"/>6 <property name="mailhost" value="smtp.sina.cn"/>7 <property name="username" value="wuya1303@sina.com"/>8 <property name="password" value="admin123"/>9 <property name="mailfrom" value="wuya1303@sina.com"/>
10 <property name="mail_to" value="1730645056@qq.com"/>
11 <property name="mailsubject" value="无涯课堂API测试报告"/>
12 <property name="mail_port" value="25"/>
13 <property name="message" value="Hi!请查收下,无涯课堂API测试报告,如有任何疑问,请联系我,谢谢!"/>
14
15
16 <tstamp>
17 <format property="time" pattern="yyyyMMddhhmm" />
18 </tstamp>
19 <property name="jmeter.home" value="${jmeterPath}" />
20 <property name="jmeter.result.jtl.dir" value="${jmeterPath}\tests\report\jtl" />
21 <property name="jmeter.result.html.dir" value="${jmeterPath}\tests\report\html" />
22 <property name="htmlReportNameSummary" value="testReport" />
23 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl" />
24 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html" />
25
26
27 <target name="run">
28 <antcall target="test" />
29 <antcall target="report" />
30 <antcall target="sendEmail" />
31 </target>
32
33 <!--执行接口测试-->
34 <target name="test">
35 <echo>执行接口自动化测试</echo>
36 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
37 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
38 <!--要执行的测试脚本-->
39 <testplans dir="${jmeterPath}\tests\script" includes="1212.jmx" />
40 <property name="jmeter.save.saveservice.output_format" value="xml"/>
41 </jmeter>
42 </target>
43
44 <!--解决报告中NAN字段显示问题-->
45 <path id="xslt.classpath">
46 <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
47 <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar"/>
48 </path>
49
50 <!--生成HTML测试报告-->
51 <target name="report">
52 <echo>生成接口自动测试报告</echo>
53 <xslt classpathref="xslt.classpath"
54 force="true"
55 in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}"
56 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
57
58 <!--复制图片-->
59 <copy todir="${jmeter.result.html.dir}">
60 <fileset dir="${jmeter.home}/extras">
61 <include name="collapse.png" />
62 <include name="expand.png" />
63 </fileset>
64 </copy>
65 </target>
66 <!--自动发送邮件-->
67 <target name="sendEmail">
68 <echo>发送自动化测试报告</echo>
69 <mail mailhost="${mailhost}"
70 ssl="ture"
71 user="${username}"
72 password="${password}"
73 mailport="${mail_port}"
74 subject="${mailsubject}"
75 messagemimetype="text/html"
76 tolist="${mail_to}">
77 <from address="${mailfrom}" />
78 <attachments>
79 <fileset dir="${jmeter.result.html.dir}">
80 <include name="${htmlReportNameSummary}${time}.html"/>
81 <include name="collapse.png" />
82 <include name="expand.png" />
83 </fileset>
84 </attachments>
85 <message>
86 ${message}
87 </message>
88 </mail>
89 </target>
90 </project>
8.2目录结构
tests
用来存放测试的所有资料
report
用来存放测试报告 里面再创建html和jtl的文件夹
scrip
用来存放测试脚本
8.3自动发送邮件:
1、 在JMeter的extras下找到ant-jmeter-1.1.1.jar,把它copy到ant的apache-ant-1.10.0\lib下。
2、自动发送邮件,需要三个jar包,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下
3、输出测试报告的配置
打开jmeter的bin目录下的jmeter.properties文件,做如下修改:
把jmeter.save.saveservice.output_format=csv
修改为jmeter.save.saveservice.output_format=xml
4、build文件修改代码:
1、修改jmeter的路径
2、修改收到测试报告的邮箱
3、修改要执行测试用例的路径和脚本
6.生成测试报告:在控制台进入到测试用例tests的目录下,输入ant
7.生成的报告在哪打开?
jmeter--tests--report--html
最下面就是你最新生成的 点击就能直接打开
生成的测试报告如下:
jmeter接口测试视频教程:
敢称史上最全,jmeter接口测试实战教程,一学就会,零基础入门必看_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1As4y1z7a3/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75
相关文章:

jmeter接口测试项目实战详解,零基础也能学,源码框架都给你
目录 1.什么是jmeter? 2.jmeter能做什么? 3.jmeter环境搭建 3.1前提: 3.2jmeter下载: 3.3jmeter环境搭建: 3.3.1mac当中jmeter环境搭建: 3.4jmeter基本配置 3.4.1.切换语言 3.4.2.安装插件 4.jmet…...

MySQL中去重 distinct 和 group by 是如何去重的
1:测试数据 CREATE TABLE student (stu_no VARCHAR(40) NOT NULL,name VARCHAR(100) NOT NULL );insert into student values(1,name1); insert into student values(2,name2); insert into student values(3,name1); insert into student values(4,name2); i…...

在职读研是理想还是情怀?你想要的都将在社科大能源管理硕士项目实现
在职读研是理想还是情怀呢,每个读研人的想法不同,原因也有所不同。但选择在职继续攻读硕士学位的群体也有着共同点,他们都是想拥有高学历,拥有高目标的一群人。探寻新的起点和终点是他们想所要追求的。不管读研的初心是什么&#…...

携手共建数字钢铁,Hightopo亮相第三届钢铁展洽会
4 月 26 日备受期待的第三届钢铁展洽会在日照盛大召开。图扑软件作为智慧钢铁行业领先的 2D 和 3D 图形界面可视化解决方案提供商,受邀参与此次展会。 图扑软件携智慧钢铁三维可视化监控体系亮相“钢铁展洽会”,向众多钢铁企业展示了一系列图扑 HT 数字…...

Leetcode2383. 赢得比赛需要的最少训练时长
Every day a Leetcode 题目来源:2383. 赢得比赛需要的最少训练时长 解法1:模拟 可以分开考虑在比赛开始前,需要最少增加的精力和经验数量。 每次遇到一个对手,当前精力值都需要严格大于当前对手,否则需要增加精力值…...

js代码执行过程、调用栈、执行上下文
参考资料 极客时间课程《浏览器工作原理与实践》 – 李兵 一、js代码执行过程 (一)javascript代码的执行流程 浏览器执行javascript代码的流程如下图所示: javascript的执行机制是:先编译,再执行。在编译阶段生成了…...
互联网摸鱼日报(2023-05-12)
互联网摸鱼日报(2023-05-12) InfoQ 热门话题 建设和改进持续业务交付能力| BizDevOps 公开课 一部手机就可运行,精通Python等20种语言!谷歌终于能与OpenAI 打擂台了,全新PaLM 2比肩GPT-4 蚂蚁数科开发者…...
【Python从入门到实践3.1】扑克发牌知识点(range函数,def函数,else语句配合使用,random库,列表推导式)
扑克发牌知识点 range函数def函数else语句配合使用:random库列表推导式 本篇博文需要特别感谢"Python从入门到精通"课程中一位同学对扑克发牌程序做出的知识点分析,本博文的内容大多也是从这位同学的分析而来. range函数 Range()函数: *返回一…...

Spring Cloud第二季--Spring Cloud Bus
文章目录 Spring Clud Bus什么是总线基本原理 牛刀小试 Spring Clud Bus 在Spring Cloud学习–配置中心(Config)中实现了集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,但同时也有一个弊端&am…...

Unittest自动化测试之unittestunittest_生成测试报告
unittest_生成测试报告 测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用unittest 可以生成测试报告 方式一、使用第三方 HTMLTestRunner 执行测试用例集,生成网页版测试报告(推荐) HTMLTestRunn…...
一个查询IP地理信息和CDN提供商的离线终端工具
Nali 功能 支持多种数据库 纯真 IPv4 离线数据库ZX IPv6 离线数据库Geoip2 城市数据库 (可选)IPIP 数据库 (可选)ip2region 数据库 (可选)DB-IP 数据库 (可选)IP2Location DB3 LITE 数据库 (可选) CDN 服务提供商查询支持管道处理支持交互式查询同时支持IPv4和IPv6支持多语言…...

RflySim平台使用篇 | Rflysim3D软件使用系列教程(二)
导读: RflySim3D(支持体验版)和RflySimUE5(支持完整版)为本平台核心三维显示软件, 分别基于UE4 和UE5 引擎开发,具备高逼真虚拟现实显示效果。本视频主要讲解了如何将自定义的三维场景如何加载到RflySim3D…...
2023 年第五届河南省 CCPC 大学生程序设计竞赛
题目地址 题目PDF地址 题解地址 Problem A. 小水獭游河南 ∣ a ∣ ≤ ∣ Σ ∣ 26 ,暴力枚举 a 判断 b 是否为是回文串即可,时间复杂度 O ( ∣ Σ ∣ ∣ s ∣ ) 。 |a| ≤ |Σ| 26,暴力枚举 a 判断 b 是否为是回文串即可,时间…...

nginx liunx最新版本安装flask部署
一、nginx安装 1.进入Nginx官网的资源下载页:http://nginx.org/en/download.html 2.下载nginx-1.22.1.tar.gz, 3解压: tar -zxvf nginx-1.22.1.tar.gz解压完成后会在当前目录下得到一个新的nginx文件夹 4.终端进入nginx文件夹目录&#x…...

热图 -- pheatmap or ggplot2
文章目录 brief数据准备 pheatmap实例最朴素的方式数据缩放取消聚类更改每个小方格的大小聚类以及聚类方式和参数修改热图呈现的颜色修改legend ggplot2实例ggplot2实例变式添加 group bar做成dotplot pheatmap 多图组合问题 brief 这里主要记录了pheatmap 以及 ggplot2实现热…...

EIScopus检索 | 2023年智能交通与未来出行国际会议(CSTFM 2023)
会议简介 Brief Introduction 2023年智能交通与未来出行国际会议(CSTFM 2023) 会议时间:2023年7月28日-30日 召开地点:中国长沙 大会官网: CSTFM 2023-2023 International Conference on Smart Transportation and Future Mobility(CSTFM 202…...

如何系列 如何在Windows和Linux安装Nginx
文章目录 Windows一 下载Nginx二 启动Nginx三 验证 Linux一 安装依赖项二 下载Nginx源码包三 安装四 验证五 常用命令附录 Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作…...

“1+X+N”模式助力企业数字化转型
近期,中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求,中电金信采用“1XN”服务模式,服务客户全面的企业架构转型规划。项目组联合行方协同创新,首次将企架建模方法应用于…...

JavaEE(系列3) -- 多线程(线程的中断与线程等待)
新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…...
想装一台自己的电脑,可以先了解下这些问题
时间:2023年5月11日19:09:56 ✨✨✨问题清单: ↪️计算机中CPU和内存是什么?分别有什么作用? ↪️为什么计算机中要有内存?CPU访问内存中的数据和访问硬盘中的数据有什么差别? ↪️CPU的基准速度表示什…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...