性能测试-groovy语言1

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师

Jmeter之Groovy语言

  • Groovy简介
  • 为何性能测试中选择Groovy
  • windows下载Groovy
    • 进入官网
    • 配置环境变量
  • Groovy的数据类型
    • groovy的保留字
    • 字符串
      • 1. 单引号字符串 (Single-quoted strings)
      • 双引号字符串 (Double-quoted strings)
      • 三引号字符串 (Triple-quoted strings)
      • 字符串插值 (String interpolation)
    • 数值类型
      • byte 字节型
      • char 字符型
      • short 短整型
      • int 整型
      • long 长整型
      • java.math.BigInteger 无限精度型
      • 小数型
        • double(双精度浮点型)​
        • java.math.BigDecimal(高精度小数)​
        • 类型自动转换示例​
        • 不同类型数值进行算术运算的规则


Groovy简介

roovy 是一种基于 JVM(Java 虚拟机)的动态/静态混合编程语言,语法与 Java 高度兼容,同时融合了脚本语言的灵活性和现代语言特性(如闭包、元编程等)。

为何性能测试中选择Groovy

Groovy在性能测试中因兼具接近Java的执行效率(尤其静态编译时)与脚本化的高效开发能力,可快速构建灵活的测试逻辑,尤其适合复杂场景的自动化验证。
知识点:Groovy易于掌握,动态语言,运行速度快,兼容java

windows下载Groovy

进入官网

进入:https://groovy.apache.org/download.html
在这里插入图片描述
点击download下载,下载完成后解压文件

配置环境变量

打开Window下环境变量设置窗口,新建一个名为GROOVY HOME的环境变量,变量的值是解压后Groovy sdk的目录
在这里插入图片描述
path变量

在这里插入图片描述
验证:环境变量配置成功

在这里插入图片描述

安装完成后,在bin目录下有一个GroovyConsole.bat文件,双击打开,可以在里面编写并执行Groovy程序。
这里我用groovy自带的编译器,其实用idea会方便一些。

在这里插入图片描述

在这里插入图片描述

这里我选择用idea创建项目,会方便很多。
Groovy约等于java,且更加简洁。

Groovy的数据类型

groovy的保留字

abstractassertbreakcase
catchclassconstcontinue
defdefaultdoelse
enumextendsfinalfinally
forgotoifimplements
importinstanceofinterfacenative
newnullnon-sealedpackage
publicprotectedprivatereturn
staticstrictfpsuperswitch
synchronizedthisthreadsafethrow
throwstransienttrywhile

字符串

Groovy提供了多种灵活的字符串表示方式,比Java更加简洁和强大。以下是Groovy中字符串的主要类型和使用方法:

1. 单引号字符串 (Single-quoted strings)

  • 最简单的字符串表示方式
  • 不支持插值和转义字符(除\本身)
  • 类似于Java的字符串
def str1 = 'Hello World'
println str1  // 输出: Hello World

双引号字符串 (Double-quoted strings)

  • 支持字符串插值(String interpolation)
  • 支持转义字符
  • 如果字符串不包含插值表达式,则与单引号字符串相同
def name = "Groovy"
def str2 = "Hello ${name}"  // 字符串插值
println str2  // 输出: Hello Groovydef path = "C:\\Program Files\\Groovy"
println path  // 输出: C:\Program Files\Groovy

三引号字符串 (Triple-quoted strings)

  • 支持多行字符串
  • 保留字符串中的换行和缩进
  • 双三引号支持插值,单三引号不支持
// 单三引号(不支持插值)
def str3 = '''Line 1
Line 2
Line 3'''
println str3// 双三引号(支持插值)
def user = "张三"
def str4 = """用户: ${user}
年龄: 25"""
println str4

字符串插值 (String interpolation)

  • 只在双引号和双三引号字符串中有效
  • 使用${expression}语法
  • 可以包含任意Groovy表达式
def a = 10
def b = 20
def str5 = "a + b = ${a + b}"
println str5  // 输出: a + b = 30def date = new Date()
def str6 = "当前时间: ${date.format('yyyy-MM-dd')}"
println str6

总结:

字符串名称语法是否可以混用是否多行转义字符
单引号的'...'\
三个单引号的'''...'''✔️\
双引号的"..."✔️\
三个双引号的"""..."""✔️✔️\
斜线的/.../✔️✔️\

数值类型

Groovy的数值型包括整数型(Integer)和小数型(decimal)两种,整型又包括以下几种:

byte 字节型

byte b = 127  // byte 范围: -128 到 127
println "byte 值: ${b}, 类型: ${b.getClass().name}"

char 字符型

byte b = 127  // byte 范围: -128 到 127
println "byte 值: ${b}, 类型: ${b.getClass().name}"

short 短整型

short s = 32767  // short 范围: -32768 到 32767
println "short 值: ${s}, 类型: ${s.getClass().name}"

int 整型

int i = 2147483647  // int 范围: -2^31 到 2^31-1
println "int 值: ${i}, 类型: ${i.getClass().name}"

long 长整型

long l = 9223372036854775807L  // long 范围: -2^63 到 2^63-1,需加 'L' 后缀
println "long 值: ${l}, 类型: ${l.getClass().name}"

java.math.BigInteger 无限精度型

import java.math.BigInteger
BigInteger bi = new BigInteger("123456789012345678901234567890")
println "BigInteger 值: ${bi}, 类型: ${bi.getClass().name}"

小数型

double(双精度浮点型)​
double d = 3.141592653589793  // double 是默认的浮点类型
println "double 值: ${d}, 类型: ${d.getClass().name}"
java.math.BigDecimal(高精度小数)​
import java.math.BigDecimalBigDecimal bd = new BigDecimal("123.45678901234567890")
println "BigDecimal 值: ${bd}, 类型: ${bd.getClass().name}"
类型自动转换示例​
int intValue = 100
long longValue = intValue  // int 自动转换为 long
println "int -> long: ${longValue}, 类型: ${longValue.getClass().name}"double doubleValue = longValue  // long 自动转换为 double
println "long -> double: ${doubleValue}, 类型: ${doubleValue.getClass().name}"
不同类型数值进行算术运算的规则

对于二元运算符,两个不同类型的数值进行运算后它们的结果按照以下规则确定:

  • 对于byte、char、short、int这几种类型之间运算的结果为int。
  • 涉及long与byte、char、short、int之间运算的结果为long。
  • 涉及BigInteger与其它类型数值之间的运算结果为BigInteger。
  • BigDecimal与byte、char、short、int之间的运算结果为BigDecimal。
  • float、double与BigDecimal之间的运算结果为double。
  • 两个BigDecimal之间的运算结果为BigDecimal。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天邑TY1613_S905L3SB_安卓9-高安非-高安版-通刷-TTL线刷固件包

天邑TY1613_S905L3SB_安卓9-高安非-高安版-通刷-TTL线刷固件包刷机说明:本固件为TTL刷机方式,需要准备如下工具;电烙铁TTL线刷机优盘TTL接触点位于处理器左侧,从上往下数第二脚GND、3TXD、4RXD跑码工具-【工具大全】-putty跑码工具…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-7,(知识点:晶体管放大倍数计算)

目录 1、题目 2、解答 3、相关知识点 晶体管的电流分配关系 直流电流放大系数\(\overline{\beta}\) 交流电流放大系数\(\beta\) 晶体管的放大条件 总结 【硬件-笔试面试题】硬件/电子工程师,笔试面试题汇总版,持续更新学习,加油&…

力扣-152.乘积最大子数组

题目链接 152.乘积最大子数组 class Solution {public int maxProduct(int[] nums) {int[] dpMax new int[nums.length]; //包括nums[i]的乘积最大值int[] dpMin new int[nums.length]; //包括nums[i]的乘积最小值int res nums[0];dpMax[0] nums[0];dpMin[0] nums[0];fo…

HTTP/1.0、HTTP/1.1 和 HTTP/2.0 主要区别

一句话总结 HTTP/1.0: 短连接,每次请求都需要建立一个新的 TCP 连接,性能较差。HTTP/1.1: 长连接,默认开启 Keep-Alive,连接可复用,解决了 1.0 的大部分问题,是目前使用最广泛的版本。HTTP/2.0: 二进制、多…

Navicat 17.3 正式发布 | 现已支持达梦、金仓和 IvorySQL 数据库

🚀🚀🚀 Navicat 很高兴地宣布:Navicat 17.3 版本正式发布。此次更新包含多项突破性功能,包括新增对达梦、金仓和 IvorySQL 等数据库的支持,全面强化 AI 功能并新增阿里通义千问等 AI 大模型,同…

前端性能新纪元:Rust + WebAssembly 如何在浏览器中实现10倍性能提升(以视频处理为例)

前端性能新纪元:Rust WebAssembly 如何在浏览器中实现10倍性能提升(以视频处理为例) JavaScript,作为 Web 开发的基石,是动态的、灵活的,但在性能上,它也存在着天生的“软肋”。对于那些计算密…

Web前端:JavaScript find()函数内判断

🎯 find是什么?find() 是 JavaScript 数组(Array)提供的一个内置方法,用于在数组中查找第一个满足条件的元素。简单来说:它像侦探一样遍历数组,找到第一个符合条件的成员就返回它。⚙️ 核心作用…

MySQL详解三

MySQL详解三事务ACID特性原子性一致性隔离性持久性事务的隔离级别读未提交(Read Uncommitted)读已提交(Read Committed)可重复读(Repeatable Read)串行化(serializable)MVCC聚集索引的隐藏列read view锁全局…

ABQ-LLM:用于大语言模型的任意比特量化推理加速

温馨提示: 本篇文章已同步至"AI专题精讲" ABQ-LLM:用于大语言模型的任意比特量化推理加速 摘要 大语言模型(LLMs)在自然语言处理任务中取得了革命性的进展。然而,其实际应用受到巨大的内存与计算开销的限制…

kafka的shell操作

Kafka 提供了丰富的 shell 命令工具,位于 Kafka 安装目录的 bin/ 目录下(Windows 系统为 bin/windows/)。这些命令用于管理主题、生产者、消费者、分区等核心组件。以下是常用的 Kafka shell 操作大全:一、主题(Topic&…

client-go: k8s选主

快速上手 下面这个代码就是一个选主的大概逻辑 package mainimport ("context""flag""fmt"_ "net/http/pprof""os""path/filepath""time""golang.org/x/exp/rand"v1 "k8s.io/api/core/v…

为什么Java的String不可变?

为什么Java的String不可变? 场景: 你在开发多线程用户系统时,发现用户密码作为String传递后,竟被其他线程修改。这种安全隐患源于对String可变性的误解。Java将String设计为不可变类,正是为了解决这类核心问题。 1️⃣…

在Ubuntu上使用QEMU学习RISC-V程序(1)起步第一个程序

文章目录一、 引言二、 环境准备三、编写简单的RISC-V程序四、 编译步骤详解五、使用QEMU运行程序六、程序详解七、退出QEMU八、总结附录:QEMU中通过UTRA显示字符工作原理1、内存映射I/O原理2、add.s程序工作流程3、关键指令解析4、QEMU模拟的UART控制器5、为什么不…

R拟合 | 一个分布能看到三个峰,怎么拟合出这三个正态分布的参数? | 高斯混合模型 与 EM算法

1. 效果已知数据符合上图分布,怎么求下图的三个分布的参数mu, sigma,及每个分布的权重 lambda? 2. 代码: 高斯混合模型(Gaussian Mixture Model,简称GMM) library(mixtools) set.seed(123) # 确保结果可重复…

Excel自动分列开票工具推荐

软件介绍 本文介绍一款基于Excel VBA开发的自动分列开票工具,可高效处理客户对账单并生成符合要求的发票清单。 软件功能概述 该工具能够将客户对账单按照订单号自动拆分为独立文件,并生成可直接导入发票清单系统的标准化格式。 软件特点 这是一款体…

【自用】JavaSE--Stream流

概述获取Stream流集合的stream流集合名.stream( );collection集合List集合与Set集合都属于Collection集合,因此可以直接调用stream方法获取stream流,示例如下结果>map集合map集合存在键值对,因此无法使用该方法直接获取stream流&#xff0…

【Elasticsearch】快照与恢复功能详解

《Elasticsearch 集群》系列,共包含以下文章: 1️⃣ 冷热集群架构2️⃣ 合适的锅炒合适的菜:性能与成本平衡原理公式解析3️⃣ ILM(Index Lifecycle Management)策略详解4️⃣ Elasticsearch 跨机房部署5️⃣ 快照与恢…

技嘉z370主板开启vtx

技嘉z370vtx应该默认就是开启状态,虽然主板开启的vtx但是系统默认设置会导致vtx不能使用 1. 关闭hyper-V,Windows虚拟机监控程序平台,虚拟机平台 控制面板->程序->启用或关闭windows功能 2.以管理员身份运行CMD bcdedit /set hypervisorlaunchtype off 3.…

Springmvc的自动解管理

中央转发器&#xff08;DispatcherServlet&#xff09;控制器视图解析器静态资源访问消息转换器格式化静态资源管理一、中央转发器Xml无需配置<servlet><servlet-name>chapter2</servlet-name><servlet-class>org.springframework.web.servlet.Dispatc…

C#_定时器_解析

问题一:这里加lock是啥意思?它的原理是, 为什么可以锁住? private readonly Timer _timer;/// <summary>/// 构造函数中初始化定时器/// </summary>public FtpTransferService(){// 初始化定时器_timer new Timer(_intervalMinutes * 60 * 1000);_timer.Elapsed…