Jmeter高级使用

文章目录

    • JMeter之计数器
    • JMeter之集合点
    • JMeter之断言
    • JMeter之动态关联
      • 后置处理器:
      • 正则表达式提取器
    • JMeter之分布式测试
    • JMeter之组件执行顺序
      • 元件的作用域
      • 元件的执行顺序
        • 配置元件
        • Http Cookie管理器
    • 多协议接口的性能测试
      • Debug采样器
      • Http请求中文乱码的解决
      • Post参数设置
      • WebService接口
      • JMeter之数据库
      • BeanShell 取样器
      • JMeter之FTP程序
    • 逻辑控制器
      • 简单控制器
      • 如果(If)控制器
      • 循环控制器
      • While控制器
      • ForEach控制器
      • 交替控制器
      • Switch 控制器
      • 随机(顺序)控制器
      • 事务控制器
      • 吞吐量控制器
    • 定时器特点
      • 固定定时器
      • 同步定时器(Synchronizing Timer)
    • 函数助手
    • JMeter插件安装-非GUI界面
      • 插件安装
      • 监听器-察看结果树
      • 监听器-聚合报告
      • 非GUI界面启动
      • 性能优化-注意事项
      • 测试报告解析

JMeter之计数器

作用:允许用户在线程组中任何位置创建引用的计数器。计数器配置允许用户配置起始点,最大值和增量。计数器将从开始循环到最大,然后从开始重新开始,继续进行,直到测试结束。
在这里插入图片描述

JMeter之集合点

  • 用于操作与操作之间设置等待时间,类似于LR中的思考时间
  • 定时器/同步定时器,需要将集合点设置在需要的元件前面,才有效。
  • 模拟用户组的数量:集合多少人后再执行请求
  • 超时时间:多少秒没集合到指定人数算超时

JMeter之断言

  • 作用:判断用于检测测试中得到的相应数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否于预期一致。
  • 断言(检查点)
    • 响应断言(创建检查点)
    • 断言结果(对于结果的判断)
    • 断言持续时间(持续时间)
    • Size Assertion(字节大小)
    • 注意:与位置相关,需要放在请求范围内

JMeter之动态关联

后置处理器:

  • 用于对Sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据。
  • 两种方式:正则,xpath(返回为xml)
    • 例如:每一个新建的bug,会有一个自动分配的自增长的ID,需要使用正则表达式提取器获取这个由服务器返回的值。
    • . 任意单个字符
    • +一次或者多次
    • *匹配多次
    • ? 在找到第一个匹配项后停止。
    • 模板:是使用提取到的第几个参数。因为可能有多个值匹配,所以要使用模板。从 1 开始匹配,依次类推。这里只有一个,所以填写$1 $即可;
    • 匹配数字:表示如何取值。0 代表随机取值,-1 代表全部取值。这里只y有一个,填 1 即可;
    • 缺省值表示参数没有取到值的话,默认给它的值。一般不填。

正则表达式提取器

在这里插入图片描述

  • 引用名称:下一个请求要引用的参数名称,如填写bugid,则可用${bugid}引用它
  • 正则表达式中()括起来的部分就是要提取的

JMeter之分布式测试

  • JMeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让JMeter工具提供更大的负载能力,有了使用多台机器同时产生负载的机制。
  • JMeter分布式执行原理:
    • 1、JMeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为客户机(Agent)。
    • 2、执行时,Controller会把脚本发送到每台Agent上,Agent拿到脚本后就开始执行,agent执行时不需要启动GUI,是通过命令行模式执行的。
    • 3、执行完成后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总
  • 前提条件:关闭防火墙
    • 1.Agent在jmeter.properties添加server_port=1099
    • 2.在Controller机器的bin目录下,找到jmeter.properties
    • 3.运行所有Agent机器上的jmeter-server.bat文件
    • 4.启动Controller机器上的JMeter应用,选择菜单“运行/远程启动”分别来启动Agent,也可以直接选择“远程全部启动”来将所有的Agent启动
  • 注意事项:
    • 控制机本身也可以作为一台agent,在remote_hosts后面加上127.0.0.1即可,但控制机(Controller)和执行机 (agent)最好分开,由于Controller需要发送信息给agent并且会接收agent回传回来的测试数据,其自身会有较大消耗,所以建议单独用一台机器作为Controller。
    • 参数文件:如果使用csv进行参数化,那么需要把参数文件在每台agent上拷一份且路径需要设置成一样的。
    • 每台机器上安装的JMeter版本和插件最好都一致,否则会出一些意外的问题。
  1. bin目录下有一个create-rmi-keystore.bat执行这个按提示生成密钥。会在bin目录下生成一个rmi_keystore.jks文件。
  2. 修改jmeter.properties文件下server.rmi.ssl.disable=true
  3. 找到jmeter.properties文件,修改如下两个配置项,server_port=5000,server.rmi.localport=5000
  4. 执行jmeter_server.bat

JMeter之组件执行顺序

元件的作用域

在这里插入图片描述

  • 元件的作用域是依靠“测试计划”的树形结构中元件的父子关系来确定的
  • HTTP1、2、3无作用域的概念
  • 循环控制器:HTTP2、3 图形结果
  • 图形结果: HTTP2、3
  • 聚合报告: HTTP1、2、3
  • 注意:从各个元件的层次结构判断每个元件的作用域
  • 在这里插入图片描述
  • 固定定时器:http1
  • 循环控制器:http2、http3、图形结果、随机控制器
  • 图形结果:http2、http3
  • 响应断言:jdbc
  • 聚合报告:所有
  • 在这里插入图片描述

元件的执行顺序

  1. 配置元件
  2. 前置处理程序
  3. 定时器
  4. 采样器后置处理程序
  5. 断言
  6. 监听器
    如果在同一个作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。
    在这里插入图片描述
配置元件
配置元件的作用主要为了初始化默认值和变量,以便后续取样器引用。相对于JAVA语言中间定义一些常量和静态变量。配置元件作用域是最初始阶段处理,配置元件仅对其所在的测试树分支有效,在同一个作用域的任何采样器前,同时,线程组A 中间定义了配置元件中间的用户定义变量,线程组同样可以引用该变量,所以,配置元件的作用域是可以跨线程组的。
Http Cookie管理器
  • 存储在用户客户端的数据
  • 当用户结束浏览器会话时,系统将终止所有的Cookie。当web服务器创建了Cookie后,只要在有效期内,访问同一个服务器时,浏览器首先要检查本地的Cookies,并将其发送给Web服务器。
  • jmeter.properties修改为true
  • CookieManager.save.cookies=true重启JMeter
  • 添加 配置元件/HTTP Cookie 管理器

多协议接口的性能测试

Debug采样器

  • Debug Sampler 生成一个包含所有 JMeter 变量和/或属性值的示例。
  • 这些值可以在“查看结果树-响应数据”窗格中查看https://jmeter.apache.org/usermanual/component_reference.html#Debug_Sampler
  • 注意:
    • Debug Sampler 取样器会把自定义的变量输出到响应数据,方便调试
    • 压测时,需要删除Debug Sampler 取样器,避免占用客户端资源。
      在这里插入图片描述

Http请求中文乱码的解决

测试地址:http://www.weather.com.cn/data/sk/101010100.html
1、“HTTP 请求”中Content encoding设置为utf-8。(如果插入系统是乱码)
2、添加后置处理器“BeanShell PostProcessor” prev.setDataEncoding(“utf-8”)
3、在文件jmeter.propeties修改,注意去掉#,sampleresult.default.encoding=UTF-8

Post参数设置

  1. Form格式参数用Parameters设置
  2. JSON格式参数
    • 增加“配置元件”/“HTTP信息头管理器”Content-Typeapplication/json
    • 在Body Data设置参数{phoneNumber":“20000000000”,“password”:“netease123”}
    • Webservices接口
      Content-Type application/x-www-form-urlencoded

WebService接口

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言(通过 xml 描述)间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。在Jmeter中可以使用Http取样器来完成压测。

实例:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=g
etSupportCity

JMeter之数据库

  • 实现jdbc请求与http请求的关联
    在这里插入图片描述
  • 实验:要求遍历打印某个表某列的所有数据,需要使用“循环控制器”和“计数器”
    • 多个线程使用不同的用户名,类似CSV:计数器+JDBC请求
    • 同一个线程使用循环控制器+计数器
    • 在这里插入图片描述

BeanShell 取样器

  • 是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法

  • 一种松散类型的脚本语言

  • Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器(java文件大小为175K)

  • 执行标准Java语句和表达式

  • 主要针对Jmeter变量的操作,可以实现调试、线程组间的通信。

  • vars:操作JMeter变量,实际引用了JMeter线程中的局部变量容器(本质是Map),连通JMeter和BeanShell,常用方法:

  • vars.get(String key) //从JMeter中获得变量值

  • vars.put(String key, String value)//数据存到JMeter变量

  • prev:获取前面的sample返回的信息,常用方法:

    • getResponseDataAsString(): 获取响应信息;
    • getResponseCode(): 获取响应代码;
  • log: 写入信息到日志中,log.info(“”)

1.从开发那获取jar
2.JMeter测试计划添加jar包
3.通过BeanShell Sampler进行调用并保存结果
4.在其他地方直接使用转化后的变量 ${sha}
在这里插入图片描述

JMeter之FTP程序

需求:
上传文件到服务器put
下载文件到本地get
sampler-> FTP 服务器
注意:“FTP请求缺省值” 的使用
在这里插入图片描述

逻辑控制器

逻辑控制器可以分为两类:控制取样器的执行顺序;对于脚本进行分组,方便统计结果。

简单控制器

最基本的控制器,没有任何附加作用,不参与脚本运行,可以用来命名某些操作(如采样器等)

如果(If)控制器

  • 目的:判断条件,可以引用变量。
  • 当为 true 时,执行子节点Interpret Condition as Variable Expression?
  • 如果选择了此项,则条件必须是一个表达式,需要使用 $ {__jexl3 } 或$ {__groovy } 表达式)
  • Evaluate for all children
    • 勾选:对所有采样器执行前都判断一次
    • 不勾选:仅入口判断一次
  • 注意事项:在if逻辑控制器的Expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有__jexl3__groovy函数,如果是字符串的比较,需要加””,例如:$ {__jexl3(“${gender_1}”==“男”,)}
  • 表达式支持
    • ==   是否等于,如$ {__jexl3($ {VAR}==1,)},判断${VAR}变量是否等于1
    • !=  不等于,如$ {__jexl3($ {VAR}!=1,)},判断${VAR}变量是否不等于1
    • !  非,如$ {__jexl3(!($ {VAR}!=1),)}对${VAR}!=1的结果取反
    • &&或||  且与或, ${__jexl3(${VAR}==1 && “${name}”==“tom01”,)}
    • 或者>== 大于等于,如$ {__jexl3(${count}>=10,)}

    • 在这里插入图片描述

循环控制器

目的:循环该控制器下面字节点的次数。
线程组里循环次数设置了n次,循环控制器下的循环次数也设置了m次,则该控制器下的请求运行的次数是(n*m)次。

While控制器

  • 目的:将一直运行其所有子项,直到条件为 false 为止
  • Condition的可能值如下:
    • 为空(不输入任何值) – 直到循环体内最后一个sampler请求失败,才会退出循环
    • LAST – 直到循环前最后一个sampler请求失败,才会退出循环
    • 其它 – 条件值等同于字符串"false"(等同于输入框中输入false)时,退出循环
  • Condition输入框的可以输入最终计算结果等同于“false”的变量、函数。这允许使用JavaScript, BeanShell, 属性(propertie) 或变量(variable)

ForEach控制器

  • 目的:遍历变量值
  • 一般和用户自定义变量(User Defined Variables)一起使用,其在用户自定义变量中读取一系列相关的变量。每一个线程下执行时该控制器下的采样器或控制器都会被执行一次或多次(次数和用户变量有关)。输入应包括的几个变量,每个变量由变量名、下划线、和数字组成,每个变量必须有一个值。
  • 在这里插入图片描述

交替控制器

每次循环时执行不同的请求
在这里插入图片描述

Switch 控制器

  • 该控制器可以控制里面的请求根据某些规则,在不同数字时选择控制器下的对应数字位的不同sampler。一般可以用在模拟多线程同时操作不同请求的测试场景。
  • Switch Value:设置你要访问的请求索引(从0开始的)或者直接设置访问的请求名称。数字对应的就是每个请求的顺序(注意点:第一个是0),这num可以通过计数器,counter函数,random函数来自动生成(一般常用rando函数)。

随机(顺序)控制器

  • 随机控制器:其下属节点在执行中,是随机读取某一个执行的。
  • 随机顺序控制器:其下的子节点全部执行,但顺序是随机的

事务控制器

  • 目的:统计该控制器下面的子节点运行的时间。
  • 举例:在事务控制器下面创建两个http请求和“用表格查看结果”。
  • Generate parent sample,勾选上这一项后只显示控制器下面所有子节点的总共的时间。
  • Include duration…generated sample:统计定时器等待的时间。如果你添加了定时器,然后勾选了这一项,则会将你定时器等待的时间也统计出来。

吞吐量控制器

  • 目的:控制该控制器下面子节点运行次数。
  • Total Executions:吞吐量的次数;
  • Percent Executions:吞吐量占的百分比。

定时器特点

  • 负责定义请求之间的延迟间隔
  • 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是之后)
  • 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行
  • 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入

固定定时器

如果需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

同步定时器(Synchronizing Timer)

  • 类似于loadrunner当中的集合点(rendezvous point)作用相似,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
  • Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量
  • Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数

函数助手

  • 随机数 ${__Random(1,100,)} 配置元件/随机变量也可以产生随机数
  • 时间 ${__time(,)}
  • 唯一数 ${__UUID}
  • 计数器 ${__counter(TRUE,i)}线程迭代的次数
    • 实现每次调用计数器都会产生一个新值,从1开始每次累加1
    • true:针对每个虚拟用户是独立的
    • false:所有虚拟用户是公用的

JMeter插件安装-非GUI界面

插件安装

  • 下载地址:https://jmeter-plugins.org/install/Install/
  • 安装方法:
    • 把jmeter-plugins-manager-1.7.jar放入/lib/ext里面,然后重启Jmeter。
    • 加载插件 Option->Plugin Managger

监听器-察看结果树

  • 察看结果树以树状结构组织显示所有取样器的响应。显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。
  • 注意: 因为生成查看结果树需要消耗大量的系统资源(CPU,内存等),负载测试期间不得使用查看结果树。

监听器-聚合报告

  • 聚合报告为测试中的每个不同名称的请求创建一个表记录。
  • 对于每个请求,它统计了响应信息并提供请求计数、最小值、最大值、平均值、错误率、近似吞吐量(请求/秒)和每秒千字节吞吐量。
  • 在聚合报告中,各个响应时间不能超过客户的要求,就是合格,例如不能超过响应时间2s,大于2s就是不合格的。
  • 在这里插入图片描述

非GUI界面启动

  • 压测参数
    • -h 帮助
    • -n 非GUI模式
    • -t 指定要运行的 JMeter 测试脚本文件
    • -l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)
    • -r Jmter.properties文件中指定的所有远程服务器
    • -e 在脚本运行结束后生成html报告
    • -o 用于存放html报告的目录(目录要为空,不然报错)
  • 官方配置文件地址http://jmeter.apache.org/usermanual/get-started.html
    jmeter -n -t F:\jmeter-2022\ch13-bugfree-resolve.jmx -l
    F:\jmeter-2022\demo2022.jtl -e -o F:\jmeter-2022\report

性能优化-注意事项

  • 使用非GUI模式:jmeter -n -t test.jmx -l result.jtl
  • 少使用Listener, 如果使用-l参数,可以被删除或禁用。
  • 在加载测试期间不要使用“察看结果树”或“用表格察看结果”表监听器,只能在脚本阶段使用它们来调试脚本。
  • 不要使用大量的相似samplers,而是循环使用一个sampler,使用参数化来达到不同sample的效果。
    http://jakarta.apache.org/jmeter/usermanual/best-practices.html#lean_mean
  • 不要使用函数模式
  • 使用CSV输出而不是XML
  • 只保存你需要的数据,尽可能少地使用断言
  • 尽量使用脚本语言
  • 如果测试需要大量数据,可以提前准备好测试数据放到数据文件中,以CSV Read方式读取
  • 用内网压测,减少其他带宽影响压测结果
  • 如果压测大流量,尽量用多几个节点以非GUI模式向服务器施压

测试报告解析

Jmeter压测生成图形化HTML测试报告解析

  • APDEX(Application performance Index)
    • Apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意
    • T(Toleration threshold):可接受(容忍或满意)阈值,即用户可接受的响应时间
    • F(Frustration threshold):不可接受(失败)阈值,即用户不可接受响应时间
  • Over Time(随着时间的变化)
    • Response Times Over Time:响应时间变化趋势
    • Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分布
    • Active Threads Over Time:并发用户数趋势
    • Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
    • Latencies Over Time:平均响应延时趋势
    • Connect Time Over Time:连接耗时趋势
  • Throughput
    • Hits Per Second (excluding embedded resources):每秒点击次数
    • Codes Per Second (excluding embedded resources):每秒状态码数量
    • Transactions Per Second:即TPS,每秒事务数
    • Response Time Vs Request:响应时间和请求数对比
    • Latency Vs Request:延迟时间和请求数对比
  • Response Times
    • Response Time Percentiles:响应时间百分比
    • Response Time Overview:响应时间概述
    • Time Vs Threads:活跃线程数和响应时间
    • Response Time Distribution:响应时间分布图

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

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

相关文章

cip、ethernet/ip开源协议栈:开发源代码

EtherNet/IP是一个工业以太网协议,它结合标准协议TCP和UDP,在以太网上基础上的通用工业协议(CIP)。 该协议由ODVA维护。ODVA还管理其他CIP实现,如DeviceNet。 协议栈和源代码下载 www.jngbus.com 在开发Ethernet/Ip…

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 🌈你好呀!我是 是Yu欸 🌌 202…

QSqlRelationalTableModel 关系表格模型

一、 1.1 QSqlRelationalTableModel继承自QSqlTableModel,并且对其进行了扩展,提供了对外键的支持。一个外键就是一个表中的一个字段 和 其他表中的主键字段之间的一对一的映射。例如,“studInfo”表中的departID字段对应的是“departments…

【SpringCloud】使用OpenFeign进行微服务化改造

目录 一、需求与背景二、OpenFeign 远程调用技术原理三、项目代码演示3.1 引入依赖3.2 实现OpenFeign注解修饰接口3.3 指定 OpenFeign 远程调用接口的扫描路径 四、OpenFeign 在日志中打印Request和Response五、OpenFeign 客户端超时配置六、使用 OpenFeign 实现服务降级6.1 实…

【python】OpenCV—Tracking(10.1)

学习来自《Learning OpenCV 3 Computer Vision with Python》Second Edition by Joe Minichino and Joseph Howse 文章目录 检测移动的目标涉及到的 opencv 库cv2.GaussianBlurcv2.absdiffcv2.thresholdcv2.dilatecv2.getStructuringElementcv2.findContourscv2.contourAreacv2…

STM32 IIC电量计LTC2944

1 描述 LTC2944 可在便携式产品应用中测量电池充电状态、电池电压、电池电流及其自身温度。宽输入电压范围允许使用高达 60V 的多节电池。精密库仑反向积分电流通过电池正极端子与负载或充电器之间的检测电阻器。 电压、电流和温度由内部 14 位无延迟 ΔΣ™ ADC 测量。测量结…

09-信息收集-APP及其他资产等

信息收集-APP及其他资产等 信息收集-APP及其他资产等一、APP提取季抓包及后续配合1、某APK一键提取反编译2、利用bp抓取更多URL 二、某IP无web框架下的第三方测试1、各种端口一顿乱扫 —— 思路2、各种接口一顿乱扫 —— 思路3、接口部分一顿测试 —— 思路 三、**案例演示**1、…

KubeSphere 社区双周报|Fluent Bit 升级到 v2.2.2|2024.01.18-02.01

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.01.18-02.01…

新加坡大带宽服务器优势特点

随着互联网技术的不断进步,大带宽服务器在满足高速数据传输需求方面发挥着越来越重要的作用。新加坡,作为全球互联网基础设施的重要枢纽,其大带宽服务器在全球范围内备受关注。本文将深入探讨新加坡大带宽服务器的优势特点,以及如…

【Python基础】Numpy使用指南

文章目录 Numpy使用指南1 numpy简介2 numpy安装3 ndarray3.1 ndarry轴与秩3.2 ndarray 相关属性3.3 创建 ndarray 对象3.4 np.radom相关方法3.5 reshape方法3.6 ndarray对象转其他数据结构 4 numpy的数据类型5 numpy访问与修改5.1 一维array5.2 numpy中的轴 6 numpy计算6.1 基本…

Methodot低代码实战教程(一)——熟悉可视化Echart组件

一、产品介绍: Methodot是行云创新旗下一款面向研发使用的一站式云原生开发及应用托管平台,产品内有大量开箱即用的服务和开发工具,例如: 支持开发团队进行微服务架构设计(例如一个袜子商店管理系统)&…

病原菌共感染研究思路

近年来,多微生物共感染在临床上的报道日益增多。其中,多细菌共感染占据了细菌感染的25% ,其发病率和严重性也相应增加。尤其在形成生物膜后,这种共感染对疾病的发生、发展和临床治疗生重要影响,同时也给临床治疗带来了更大的挑战。 随着测序的发展,应用高通量转录组…

Java黑马——拼图小游戏

拼图小游戏(GUI) AWT包会有些兼容问题,不支持某些中文 在本次游戏的GUI开发中,我们将使用Swing包 一、主界面分析 这些东西统一称为组件,JFrame是一个组件、JMenuBar也是一个组件、等等 1、练习一:创建主…

离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope

离线生成双语字幕整合包,一键生成中英双语字幕,基于AI大模型 制作双语字幕的方案网上有很多,林林总总,不一而足。制作双语字幕的原理也极其简单,无非就是人声背景音分离、语音转文字、文字翻译,最后就是字幕文件的合并&#xff0c…

AI大模型开发架构设计(7)——人人都需要掌握的AI编程及应用案例实战

文章目录 人人都需要掌握的AI编程及应用案例实战1 AI代码生成模型与AI编程助手介绍程序设计方式的发展自动代码生成AI编程工具 2 AI编程助手的代码生成模型架构剖析以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模…

消息中间件特性

一:消息队列的主要作用是什么? 1.消息队列的特性: 业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

Base64编码原理

Base64编码原理非常简单,首先确定好要编码的字符串,并查找其对应的 ASCII码将其转换为二进制表示,每三个8位的字节转换为四个6位的字节 (384 624),把6位的最高位添两位数字0 ,组成四个8位的字节…

内裤洗衣机有用吗?口碑好的小型洗衣机推荐

随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高强度的清洁,而小小…

前端JavaScript篇之let、const、var的区别

目录 let、const、var的区别 let、const、var的区别 let、const和var是JavaScript中用于声明变量的关键字,它们之间有一些区别。 首先,var是在ES5中引入的关键字,而let和const是在ES6中引入的。在ES6之前,我们只能使用var来声明…

基于STM32F103C8T6最小系统板(对标某淘)

原理图和PCB都和某淘购买一样!!! 原理图 PCB 3D图