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

JMeter 的 If Controller:开启性能测试的智能大门

嘿,宝子们!今天咱们就来聊聊 JMeter 里超级厉害的 If Controller,它就像是一把神奇的钥匙,能帮我们打开灵活测试的大门,让你的测试计划变得更加智能和高效。

一、If Controller 初印象

想象一下,你正在指挥一场精彩的演出,每个演员(测试元件)都在等待你的指令。If Controller 呢,就是那个聪明的舞台调度员,它会根据你设定的条件,决定哪些演员该上台表演(执行测试操作),哪些演员要在后台待命(跳过测试操作)。这是不是很厉害呢?接下来,咱们就一步步看看怎么用好这个神奇的调度员。

二、添加 If Controller 三步走

  1. 当你打开 JMeter,就像是来到了一个空旷的大舞台,首先要做的就是创建一个测试计划,这就是我们演出的大纲啦。
  2. 然后,在测试计划里添加一个线程组,这可以看作是一群充满活力的小演员,他们会按照我们的安排进行各种表演。
  3. 最后,在线程组下面,右键点击,选择 “添加” - > “逻辑控制器” - > “If Controller”,瞧,我们的智能调度员 If Controller 就闪亮登场啦!
    在这里插入图片描述

三、配置 If Controller 大揭秘

在这里插入图片描述

(一)给它取个好名字和写个注释

就像我们每个人都有自己的名字一样,If Controller 也需要一个独特的名字,这样在复杂的测试计划中,你一眼就能认出它。比如说,你在测试一个电商网站的购物流程,用 If Controller 来判断用户是否登录成功后才能进行购物车操作,那你可以给它取名叫 “购物车的登录门禁”。

注释呢,就像是给它写个小传记,简单说明一下它的作用。比如 “这个 If Controller 负责把关,只有用户登录成功,才让购物车操作的请求通过哦”。这样,不仅你自己清楚,以后其他小伙伴看你的测试计划,也能马上明白。

(二)条件表达式 —— 核心魔法咒语

这可是 If Controller 最厉害的地方,就像一个魔法咒语,决定着测试流程的走向。

  • 简单咒语示例
    • 假设我们有一个变量${isLoggedIn},当用户登录成功后,这个变量的值会变成 “true”。那我们在条件表达式里写上${isLoggedIn} == "true",就像对 If Controller 说:“嘿,如果用户登录了,就执行下面的操作吧。”
    • 再比如,用${__groovy(2 > 1)}这个咒语,这是在考验 If Controller 的数学知识,当然 2 大于 1 是常识啦,所以这个条件总是成立,适合在一些简单的测试场景中用来确保某个操作一定会执行,就像一个保底的小魔法。
  • 复杂咒语组合技巧
    • 在一个社交媒体平台的测试中,我们可能有变量${userHasFriends}表示用户是否有好友,${userIsActive}表示用户是否活跃。那我们可以写一个复杂一点的咒语:${__groovy(${userHasFriends} == "true" && ${userIsActive} == "true")}。这就像是告诉 If Controller:“只有当用户既有好友,又很活跃的时候,才执行特定的操作,比如推荐热门话题。” 这里的 “&&” 就像一个连接两个条件的魔法胶水,只有两边的条件都满足,整个咒语才生效。
    • 还有一种情况,比如在一个在线游戏的测试中,我们想判断用户是不是 VIP 或者是不是达到了一定的等级,就可以用 “||”(或)这个魔法符号,像这样:${__groovy(${userIsVIP} == "true" || ${userLevel} > 10)}。这意味着只要用户是 VIP 或者等级大于 10,就能享受到一些特殊待遇,比如进入隐藏关卡,If Controller 就会执行相应的操作。
    • 多层嵌套魔法阵
      • 想象一下在一个大型在线学习平台的测试中,我们要根据不同的课程类型、用户的学习进度和是否付费来决定给用户展示什么样的学习资源。我们可以构建这样一个多层嵌套的魔法阵:${__groovy(((${courseType} == "Science" && ${userProgress} > 50) || (${courseType} == "Art" && ${userIsPaid} == "true")))}。这就像是一个复杂的迷宫,If Controller 要根据这些条件找到正确的路径,只有满足其中一组嵌套条件,才会执行如推荐高级课程、解锁额外学习资料等操作。是不是很神奇呢?
  • 调试魔法咒语的小窍门
    • 当我们写了一个复杂的魔法咒语,有时候可能会出现意想不到的情况,这时候就需要调试啦。我们可以请出 “调试采样器” 这个小助手。在测试计划里,在线程组下右键点击 - > 添加 - > 取样器 - > 调试取样器,然后运行测试。之后在 “查看结果树” 中,我们就能看到调试信息,就像拿到了魔法咒语的解析说明书,里面会显示条件表达式中各个变量的值以及整个表达式的求值结果。比如说,如果我们在上面的社交媒体平台测试中,发现推荐热门话题的操作没有按照预期执行,通过调试采样器,我们可能会发现原来是${userHasFriends}变量的值获取错了,或者是逻辑运算符用得不对,这样就能快速修复问题,让魔法咒语重新生效。
    • 记住哦,条件表达式一定要写得准确无误,不然 If Controller 可就会 “晕头转向”,不知道该怎么执行了,就像你给一个机器人下达了混乱的指令,它就没办法正常工作啦。

(三)性能相关的魔法选项

  • 神奇的警告提示
    • 你会看到一个像智慧老人的警告提示:“For performance it is advised to check ‘Interpret Condition as Variable Expression’ and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.” 这就像是在你踏上性能优化的冒险之旅前,一位经验丰富的导师给你的宝贵建议。如果你按照它说的做,在高并发或者大规模负载测试的魔法世界里,你的测试就能跑得更顺畅,就像给你的测试马车装上了飞速的魔法轮子,避免陷入性能的泥沼。
  • 把条件解释为变量表达式 —— 隐藏的性能宝藏
    • 当你勾选 “Interpret Condition as Variable Expression” 这个选项时,JMeter 就会变得更加聪明。比如说,你在一个在线音乐平台的测试中,有一个条件表达式${isPremiumUser},如果这个变量存在并且值为 “true”(代表用户是高级会员),If Controller 就会知道要执行给高级会员的专属操作,比如提供无损音乐下载。
    • 背后的魔法原理
      • 当 JMeter 遇到这个勾选的选项时,它会像一个敏锐的侦探,在变量的世界里寻找条件表达式的值对应的变量。如果找到了,并且这个变量的值符合 JMeter 对于真假的判断标准(非空字符串、非零数字等被视为真,空字符串、零等被视为假),那么条件表达式的结果就确定了。这种方式在处理大量变量和复杂条件时,就像找到了一条捷径,减少了不必要的计算,让测试跑得更快,特别是在高并发的场景下,就像一群飞鸟,能够更高效地穿越云层,到达目的地。
    • 什么时候开启这个宝藏
      • 在高并发测试场景中,如果你的条件表达式依赖于很多变量,比如在一个拥有海量用户的在线视频平台测试中,要根据用户的各种属性(如会员等级、观看历史、偏好设置等)来决定推荐不同的视频内容,这时候启用这个选项,就能大大提升性能,让你的测试如鱼得水,轻松应对高负载的挑战。
  • 对所有子节点求值 —— 双刃剑魔法
    • 当你勾选 “Evaluate for all children” 这个选项时,就像是给每个子节点都赋予了一个独立的小魔法,它们都会根据条件表达式来决定自己是否要行动。
    • 比如在一个企业级的办公自动化系统测试中,If Controller 下面有多个子节点,分别代表不同部门的文档审批流程。如果勾选了这个选项,每个部门的审批流程都会根据自己的条件(如文档类型、审批人权限等)来判断是否执行,就像每个部门都有自己的小裁判,根据规则决定是否参加这场审批的 “比赛”。
    • 性能影响的魔法权衡
      • 但是要注意哦,当有很多子节点并且条件表达式很复杂的时候,这把双刃剑就可能会消耗更多的魔法能量(性能),因为每个子节点都要独立地对条件表达式进行求值。不过在某些情况下,这种消耗是值得的。比如在一个需要对不同用户组进行精细化测试的场景中,每个子节点代表不同用户组的特定操作,这时候对每个子节点单独求值可以确保每个用户组的操作都能根据自己的条件准确执行,虽然会消耗更多的性能,但能保证测试的准确性和完整性,就像为了打造一件完美的魔法神器,需要花费更多的时间和精力。相反,如果子节点的操作比较相似,条件表达式也简单,不勾选这个选项可能会让你的测试更高效,就像选择了一条更平坦的道路,减少不必要的魔法消耗,避免陷入性能瓶颈的黑暗森林。

(四)使用上次采样的状态 —— 巧妙的魔法联动

  • 配置方法的小魔法
    • 有一个 “Use status of last sample” 复选框和一个神奇的变量${JMeterThread.last_sample_ok}。比如说在一个网页表单提交系统的测试中,如果勾选这个复选框,If Controller 就会根据上次表单提交的采样结果(是否成功)来决定下一步的操作。
    • 假设上次表单提交成功(返回状态码在 200 - 299 之间),那么${JMeterThread.last_sample_ok}变量的值就会变成 “true”,这时候 If Controller 就会执行如显示提交成功提示、跳转到下一个页面等后续操作,就像一个默契的接力赛,前一个操作的结果传递给了 If Controller,决定了下一步的走向。
  • 结合其他条件表达式的魔法组合
    • 在一个在线论坛的测试中,我们希望只有当上一个帖子发布请求成功并且用户的账号状态为 “正常” 时,才执行推荐相关热门帖子的后续请求。我们可以使用这样的魔法组合:${JMeterThread.last_sample_ok} && ${userAccountStatus} == "normal"。这就像是给 If Controller 戴上了两副眼镜,只有通过这两个条件的 “视力测试”,它才会执行推荐热门帖子的操作,让测试更加贴近真实的用户场景,就像一个经验丰富的魔法师,根据多种因素来施展魔法,而不是只看单一的条件。

四、添加子节点 —— 组建你的魔法表演团队

在 If Controller 下面,我们可以添加各种需要根据条件执行的元件,就像为我们的魔法表演招募不同的演员。比如右键点击 If Controller - > 添加 - > Sampler - > HTTP 请求,这就像是邀请了一个擅长发送 HTTP 请求的小精灵加入我们的团队。

然后,我们要给这个小精灵配置好任务,也就是配置 HTTP 请求的 URL、方法、参数等信息。比如说在测试一个在线旅游预订网站时,我们可以配置请求的 URL 为查询特定旅游线路详情的接口地址,方法为 GET,参数包括出发地、目的地、出行日期等,这样当 If Controller 的条件满足时,这个小精灵就会出发去获取旅游线路的详细信息,就像派一个小信使去远方带回珍贵的情报,来检查在满足特定条件(如用户已登录、搜索条件有效等)时,网站是否能够正确提供旅游线路的详细信息,确保网站的核心功能在各种条件下都能正常运行,为用户提供准确、及时的服务。

五、设置变量值 —— 准备魔法原料

  1. 在线程组下,右键点击 - > 添加 - > 配置元件 - > 用户定义的变量,这就像是打开了一个装满魔法原料的宝箱,我们可以在这里定义各种变量。
  2. 比如在测试一个智能家居控制系统时,如果条件表达式中有 “${roomTemperature}”,我们可以在 “用户定义的变量” 中添加这个变量,并设置其值为 “25”(假设当前测试环境模拟的房间温度为 25 摄氏度),这些变量就像魔法原料,将在后续的条件判断中发挥重要作用,决定着 If Controller 的行为,就像不同的魔法原料混合在一起,会产生不同的魔法效果。
  3. 使用 BeanShell 或 JSR223 处理复杂魔法逻辑示例
    • 有时候,我们需要更强大的魔法来处理复杂的变量逻辑。在 JMeter 中,BeanShell 或 JSR223 元件就是我们的魔法工具。例如,在测试一个股票交易系统时,假设我们要根据前一个请求获取的股票价格和用户设定的买入价格来动态设置一个变量 “${shouldBuy}”,以决定是否执行买入操作。我们可以在 BeanShell Sampler 中编写如下神奇的代码:
double stockPrice = Double.parseDouble(vars.get("stock_price")); // 从 JMeter 的魔法变量域中获取前一个请求中存储的股票价格变量
double buyPrice = Double.parseDouble(vars.get("user_buy_price")); // 获取用户设定的买入价格变量
if (stockPrice <= buyPrice) {vars.put("shouldBuy", "true");
} else {vars.put("shouldBuy", "false");
}
  • 这段代码就像一个聪明的小精灵助手,它首先从 JMeter 的变量域中找到股票价格和用户买入价格变量,然后像一个精明的商人一样进行比较,如果股票价格小于等于买入价格,就把 “shouldBuy” 变量设置为 “true”,否则设置为 “false”。这样,在后续的 If Controller 条件表达式中,就可以根据 “${shouldBuy}” 的值来决定是否执行买入股票的 HTTP 请求,就像根据市场行情和自己的预算来决定是否购买商品一样,实现了复杂业务逻辑下的变量动态设置和条件判断,让我们的测试更加智能和灵活。
  1. 变量作用域的魔法边界
    • JMeter 中的变量有不同的作用域,就像魔法世界里有不同的领地。全局变量就像是一个公共的魔法广场,在整个测试计划中都能被访问和使用,所有的元件都可以在这里找到需要的变量信息。而局部变量则像是一个小小的魔法房间,通常只在特定的元件或范围内有效。例如,在一个包含多个线程组的测试计划中,如果在一个线程组中通过 “用户定义的变量” 元件设置了一个全局变量 “${globalVariable}”,那么在其他线程组中也可以像在公共广场上一样访问和使用这个变量。然而,如果在一个 BeanShell Sampler 中定义了一个局部变量,如上述股票交易系统示例中的 “stockPrice” 和 “buyPrice” 变量,它们就只能在这个 BeanShell Sampler 的小魔法房间里活动,无法在其他元件中直接访问,就像房间里的秘密物品,只有在这个房间里才能使用。在使用 If Controller 进行条件判断时,我们要时刻注意变量的作用域,就像在魔法世界里要清楚每个领地的规则,确保使用的变量值是正确的,并且符合预期的作用域范围。如果不小心使用了错误作用域的变量,就可能会导致条件判断出错,就像在错误的领地使用了不合适的魔法物品,会引发意想不到的后果,从而影响测试结果的准确性,让我们的测试陷入混乱的魔法漩涡。

六、运行测试 —— 开启魔法之旅

当我们把 If Controller 和它的小伙伴们(各种测试元件和变量)都配置好后,就可以点击 JMeter 界面上的 “启动” 按钮(那个绿色的三角形图标,就像一个开启魔法大门的钥匙),让整个测试计划开始运行。这时候,If Controller 就会像一个严格的魔法指挥官,根据我们设定的条件表达式结果,决定哪些子节点元件要执行,哪些要跳过,就像指挥一场精彩的魔法交响乐,每个乐器(测试元件)都在合适的时机奏响,共同演绎出完美的测试乐章,准确地模拟各种实际使用场景下系统的行为,让我们能够发现系统中可能存在的问题,就像在魔法世界里找出隐藏的魔法陷阱,确保系统的稳定性和可靠性。

七、查看结果 —— 解读魔法的秘密语言

  1. 为了了解我们的魔法测试进行得怎么样,我们可以添加 “查看结果树” 监听器(右键点击线程组 - > 添加 - > 监听器 - > 查看结果树),这就像是打开了一本记录魔法测试过程的魔法书,里面详细记载了测试过程中的各种信息。
  2. 在 “查看结果树” 中,我们可以清楚地看到 If Controller 的执行情况以及它的子节点的执行结果。如果条件满足并且 HTTP 请求成功,我们会看到像宝藏一样的请求和响应信息,包括请求的 URL、返回的状态码、响应数据等,这些信息就像魔法咒语的反馈,告诉我们魔法是否生效,系统是否按照我们的预期工作。如果条件不满足,我们会看到 If Controller 像一个谨慎的卫士一样跳过某些操作的记录,这也能帮助我们快速定位测试过程中的问题,就像根据魔法书上的线索找到魔法失败的原因,验证测试是否按照我们设定的条件和流程进行,确保测试的准确性和可靠性,让我们的测试之旅更加顺利和有成效。
  3. 再次回顾调试魔法咒语的小窍门
    • 当我们在测试过程中遇到问题,比如某个条件表达式没有按照预期工作,导致测试结果不符合我们的期望时,不要慌张。我们可以再次请出 “调试采样器” 这个得力小助手。通过它,我们可以像解开魔法谜题一样,查看条件表达式中各个变量的实际值以及整个表达式的求值过程,就像找到魔法阵的关键节点。

相关文章:

JMeter 的 If Controller:开启性能测试的智能大门

嘿&#xff0c;宝子们&#xff01;今天咱们就来聊聊 JMeter 里超级厉害的 If Controller&#xff0c;它就像是一把神奇的钥匙&#xff0c;能帮我们打开灵活测试的大门&#xff0c;让你的测试计划变得更加智能和高效。 一、If Controller 初印象 想象一下&#xff0c;你正在指…...

node内置模块之---os 模块

os 模块的作用 os 模块是 Node.js 的一个核心模块&#xff0c;提供了与操作系统交互的一些功能。它使得 Node.js 应用可以访问操作系统的底层信息&#xff0c;并执行一些系统级的操作&#xff0c;比如文件系统操作、环境变量、进程管理等。 os 模块的相关api 文件系统路径操…...

PgSQL如何用cmd命令行备份和还原数据库

一、备份 备份为压缩的二进制格式&#xff08;通常更快且占用空间更少&#xff09; pg_dump -U username -Fc -h hostname -p port -d dbname -F p -f backup.sql-U username&#xff1a;指定连接数据库的用户名&#xff08;默认是 postgres&#xff09;。-Fc&#xff1a;备…...

neo4j学习笔记

图数据库 图数据库是基于图论实现的一种NoSQL数据库&#xff0c;其数据存储结构和数据查询方式都是图论为基础的&#xff0c;图数据库主要用于存储更多的连接数据。 图论&#xff08;GraphTheory&#xff09;是数学的一个分支。图论以图为研究对象&#xff0c;图论的图是由若干…...

Halcon 显示异常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …...

2021年3月多省联考《申论》B卷真题解析

2021年福建公务员考试申论试题&#xff08;乡镇卷&#xff09; 材料一 在传统乡镇布局中&#xff0c;部分乡镇面积小、人口少&#xff0c;但管理机构、干部职数、机构编制、财政投入均不少&#xff0c;行政运行成本较高。合理调整乡镇行政区划&#xff0c;有助于统筹设置乡镇服…...

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…...

主机A与主机B建立TCP连接的三次握手过程

&#xff08; 1 &#xff09;主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段&#xff08;第一次握手&#xff09;。&#xff08; 1 分&#xff09; &#xff08; 2 &#xff09;一旦包含 SYN 报文段的 IP 数据报到达主机 B &#xff0c; SYN 报文段被从数据报…...

vue3 vite 动态加载路由遇到的问题

记录一下动态加载路由遇到的问题 正常使用import引入静态路由是没问题的 component: () > import(/components/ExampleComponent.vue)动态引入的时候写成import就不行了 由于后端给的路由格式比较反人类…我这边先递归把获取到的数据格式做了一个整合. const processedDa…...

仿生的群体智能算法总结之一(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是10种常见的群体智能算法: 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swarm Optimization (PSO) 粒子群优…...

02pandas读取和保存数据的方法

pandas读取和保存数据的方法 一、pandas支持的数据格式二、pandas常用数据读取方法1. 准备工作2. 代码示例1.pandas数据读取常用的方法2. read_excel 方法&#xff08;1&#xff09;read_excel()方法&#xff1a;读取excel文件&#xff08;2&#xff09;head()方法&#xff1a;…...

【STM32项目】智能物联网驱动的生物样本培育与管理辅助系统(完整工程资料源码)

视频功能演示: 智能物联网驱动的生物样本培育与管理辅助系统 目录: 目录 视频功能演示: 目录:...

家教老师预约平台小程序系统开发方案

家教老师预约平台小程序系统将连接学生/家长与家教老师&#xff0c;提供一站式的家教服务预约体验。 一、用户需求分析1、家教老师&#xff1a;希望获得更多的学生资源&#xff0c;通过平台展示自己的教学特长和经验&#xff0c;管理个人日程&#xff0c;接收并确认预约请求&a…...

uniapp 自定义类微信支付键盘 (微信小程序)

效果图 代码: <view class"popups popupsB"><view class"appreciatePrice"><view class"appreciatePriceTitle">赞赏金额</view><view class"appreciatePriceInput flex ac">&#xffe5;<input typ…...

推荐5款局域网IP扫描工具,支持电脑+Android!

在日常网络管理中&#xff0c;快速扫描局域网中的设备和IP地址是一项基本但非常重要的任务。无论是排查网络问题还是进行设备管理&#xff0c;一款好用的 IP 扫描工具都能让你事半功倍。 如何选择适合自己需求的局域网 IP 扫描工具&#xff1f;有哪些功能强大又易于上手的工具…...

第十一章 图论

/* * 题目名称&#xff1a;连通图 * 题目来源&#xff1a;吉林大学复试上机题 * 题目链接&#xff1a;http://t.cn/AiO77VoA * 代码作者&#xff1a;杨泽邦(炉灰) */#include <iostream> #include <cstdio>using namespace std;const int MAXN 1000 10;int fathe…...

算法学习(21)—— BFS解决FloodFill问题

关于FloodFill 关于FloodFill算法&#xff0c;我们之前在dfs章节已经介绍过了&#xff1a;算法学习&#xff08;17&#xff09;—— FloodFill算法-CSDN博客 下面是用bfs宽搜来解决的实例 部分OJ题详解 733. 图像渲染 733. 图像渲染 - 力扣&#xff08;LeetCode&#xf…...

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标&#xff1a;  网络应用的 原理&#xff1a;网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例&#xff1a;互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…...

CSS 之 响应式设计 前世今生

CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、历史上的网站布局三、响应式设计之前的灵活布局四、响应式设计五、媒介查询六、灵活网格七、现代布局技术7.1 多栏布局7.2 伸…...

前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)

输入npm i后&#xff0c;一直卡在sill idealTree buildDeps&#xff0c;一动不动 cnpm可以安装成功&#xff0c;但使用cnpm不会生成package-lock.json文件 设置淘宝依赖&#xff0c;依然卡住&#xff0c;挂梯子也不行 解决方法&#xff1a; // 取消ssl验证 set strict-ssl …...

【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 9.2.1. Result枚举 通常情况下&#xff0c;错误都没有严重到需要停止整个程序的地步。某个函数之所以运行失败或者是遇到错误通常是由一些…...

[241231] CachyOS 2024 年终总结:性能飞跃与社区繁荣 | ScyllaDB 宣布转向开源可用许可证

目录 CachyOS 2024 年终总结&#xff1a;性能飞跃与社区繁荣ScyllaDB 宣布转向开源可用许可证 CachyOS 2024 年终总结&#xff1a;性能飞跃与社区繁荣 CachyOS 2024 年的最后一个版本 (也是第 13 个版本) 已经发布&#xff0c;同时也迎来了辞旧迎新之际。让我们一起回顾 Cachy…...

9.系统学习-卷积神经网络

9.系统学习-卷积神经网络 简介输入层卷积层感受野池化层全连接层代码实现 简介 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构&#xff0c;被应用在图像识别、自然语言处理甚至是语音识别领域&#xff0c;因为图像数据具有显著的局部与整体关系&#xff0c;其在图…...

java并发之AQS

一、简介 AQS&#xff0c;全称&#xff1a;AbstractQueuedSynchronizer&#xff0c;是一个JDK提供的用于构建锁、同步器等线程协作工具类的框架&#xff0c;内部维护FIFO双向队列&#xff08;双向链表实现&#xff09;。 AQS重要属性&#xff1a; // 表示同步状态。它既可以表…...

Synthesia技术浅析(一)

Synthesia 是一款利用人工智能技术生成视频内容的产品&#xff0c;其中变分自编码器&#xff08;Variational Autoencoder, VAE&#xff09;技术在视频生成过程中起到了关键作用。 1. 变分自编码器&#xff08;VAE&#xff09;概述 变分自编码器&#xff08;VAE&#xff09;是…...

SQL偏移类窗口函数—— LAG()、LEAD()用法详解

SQL偏移类窗口函数&#xff1a;LAG() 和 LEAD() 用法详解 在 SQL 中&#xff0c;偏移类窗口函数 LAG() 和 LEAD() 用于访问当前行的前几行或后几行的值。 1. LAG() 函数 LAG() 函数返回当前行的前几行的数据。 LAG(Expression, OffSetValue, DefaultVar) OVER (PARTITION BY …...

PHP语言的计算机基础

计算机基础与PHP语言入门 在当今信息技术高速发展的时代&#xff0c;计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识&#xff0c;不仅能增强我们对信息技术的理解&#xff0c;还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...

39. 解压报文

题目描述 为了提升数据传输的效率&#xff0c;会对传输的报文进行压缩处理输入一个压缩后的报文&#xff0c;请返回它解压后的原始报文.压缩规则:n[str]&#xff0c;表示方括号内部的str正好重复n次。注意n为正整数(0<n<100)&#xff0c;str只包含小写英文字母&#xff0…...

SpringBoot日志快速集成详解-生产实战

SpringBoot日志快速集成详解 1. 添加依赖2. 创建 logback-spring.xml 配置文件示例 logback-spring.xml 配置&#xff1a; 3. 启用 Spring Boot 自动配置4. 配置 Spring Boot 启动日志级别5. 运行与验证 博文专注于最快速的实战&#xff0c;没有那么多逼逼叨叨的理论&#xff0…...

基于 Node.js 的 ORM(对象关系映射)工具——Sequelize介绍与使用,并举案例分析

便捷性介绍 支持多种数据库&#xff0c;包括 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 提供了丰富的功能&#xff0c;帮助开发者用 JavaScript&#xff08;或 TypeScript&#xff09;代码操作数据库&#xff0c;而无需直接书写 SQL 语句。 Se…...

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案&#xff0c;适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取&#xff0c;减少交叉感染风险。 - 具备智能识别和分类功能&am…...

ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么

一、TS (TypeScript): TypeScript 是一种由微软开发的开源编程语言&#xff0c;它是 JavaScript 的一个超集&#xff0c;增加了类型系统和对ES6及以后版本新特性的支持。TypeScript 旨在解决 JavaScript 开发中的可维护性、可扩展性和大型项目中的复杂性问题。它允许开发者在编…...

【虚拟机】VMware 16图文安装和配置 AlmaLinux OS 9.5 教程

准备工作 下载AlmaLinux ISO文件&#xff1a;从AlmaLinux官方网站&#xff08;https://almalinux.org/&#xff09;下载最新版本的ISO文件。 安装VMware Workstation&#xff1a;确保您的计算机上已安装VMware Workstation。&#xff08;注&#xff1a;我这边使用的是VMware16…...

使用MySQL SLES存储库安装MYSQL

MySQL SLES存储库提供RPM包&#xff0c;用于在SUSE EnterpriseLinuxServer上安装和管理MySQL服务器、客户端和其他组件。 添加MySQLSLES存储库 为系统的存储库列表添加或更新官方MySQLSLES存储库&#xff1a; 配置文件名的开头部分&#xff0c;如mysql84&#xff0c;描述了为…...

30分钟学会HTML

HTML 基本语法 HTML&#xff08;HyperText Markup Language&#xff09;是构成网页内容的基础。它使用一系列的标签来描述网页的结构&#xff0c;包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…...

vue——滑块验证

1. 介绍 1.1 简介 基于滑动式的验证码&#xff0c;免于字母验证码的繁琐输入 用于网页注册或者登录 1.2 来源说明 vue使用滑块验证功能&#xff0c;是基于vue-monoplasty-slide-verify这样的一个开源项目&#xff0c;进行实现的&#xff0c;这是这个开源项目的网址传送阵&#…...

编程入门(2)-2024年 RAD Studio version 12发布综述

随着2024年即将画上句号&#xff0c;我想借此机会回顾一下我们在这一年中发布的一些Embarcadero产品、行业趋势&#xff0c;并感谢我们尊贵的客户们对我们的产品一如既往的支持。这一年对我们来说充满了激动人心的变化和发展&#xff0c;我们非常高兴能与您一起踏上这段旅程。 …...

2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined

2025年1月4日蜻蜓q旗舰版st完整开源包含前后端所有源文件开源可商用可二开优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined 产品介绍&#xff1a; 本产品主要贡献者优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined-青史留名&#xff0c;时光如川浪淘…...

米哈游可切换角色背景动态壁纸

米哈游可切换角色背景动态壁纸 0. 视频 B站演示: 米哈游可切换角色背景动态壁纸-wallpaper 1. 基本信息 作者: 啊是特嗷桃系列: 复刻系列 (衍生 wallpaper壁纸引擎 用)网站: 网页版在线预览 (没有搞大小适配, 建议横屏看; 这个不能切角色, 只能在wallpaper中切)仓库: GitHub…...

框架Tensorflow2

深度学习框架之Tensorflow2 Tensorflow2版本的介绍 Tensorflow(简称tf)是深度学习框架&#xff0c;大大简化了建模的方法和步骤&#xff0c;把Keras Api当作核心&#xff0c;使用非常简单&#xff0c;跨平台&#xff0c;集成各种现成模型&#xff0c;eager mode使得调试起来不…...

急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击

僵尸网络活动增加 &#xff1a;新的“FICORA”和“CAPSAICIN”僵尸网络&#xff08;Mirai 和 Kaiten 的变体&#xff09;的活动激增。 被利用的漏洞 &#xff1a;攻击者利用已知的 D-Link 路由器漏洞&#xff08;例如 CVE-2015-2051、CVE-2024-33112&#xff09;来执行恶意命…...

银行大数据平台管理系统的设计与实现

标题:银行大数据平台管理系统的设计与实现 内容:1.摘要 摘要&#xff1a;本文介绍了银行大数据平台管理系统的设计与实现。该系统旨在解决银行数据管理中的数据量大、数据类型多、数据处理复杂等问题。通过采用大数据技术&#xff0c;如 Hadoop、Spark 等&#xff0c;实现了数…...

leetcode 732. 我的日程安排表 III

题目&#xff1a;732. 我的日程安排表 III - 力扣&#xff08;LeetCode&#xff09; 这个数据规模&#xff0c;暴力就够了 struct Book {int begin;int end;Book(int b, int e) {begin b;end e;} }; class MyCalendarThree { public:MyCalendarThree() {}int book(int star…...

公共数据授权运营系统建设手册(附下载)

在全球范围内&#xff0c;许多国家和地区已经开始探索公共数据授权运营的路径和模式。通过建立公共数据平台&#xff0c;推动数据的开放共享&#xff0c;促进数据的创新应用&#xff0c;不仅能够提高政府决策的科学性和公共服务的效率&#xff0c;还能够激发市场活力&#xff0…...

现代光学基础6

总结自老师的ppt yt6 半导体激光器开卷考试学习资料 目录 半导体激光器边发射半导体激光器垂直腔面发射激光器&#xff08;VCSEL&#xff09;激光产生条件&#xff08;激光原理&#xff09;半导体激光器的水容器模型有源半导体区域类型和载流子注入发光二极管&#xff08;L…...

利用ChatGPT API构建智能应用的最佳实践

随着自然语言处理&#xff08;NLP&#xff09;技术的飞速发展&#xff0c;基于大型语言模型&#xff08;LLM&#xff09;的应用程序逐渐成为开发者的关注焦点。OpenAI 提供的 ChatGPT API 是当前流行的一项服务&#xff0c;开发者可以利用它来构建多种智能化应用&#xff0c;如…...

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild&#xff0c;源代码下载到src下&#xff0c;解压&#xff0c;进入&#xff0c;编译安装。编译时指定--prefix到相同的目录&#xff0c;即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…...

Java.函数-acwing

题目一&#xff1a; n的阶乘 804. n的阶乘 - AcWing题库 代码 import java.util.Scanner;public class Main {private static int fact(int n) {int res 1;for(int i 1; i < n; i ) res * i;return res;}public static void main(String[] args) {Scanner sc new Scann…...

文档 | Rstudio下的轻量级单页面markdown阅读器 markdownReader

需求&#xff1a;在写R数据分析项目的时候&#xff0c;代码及结果的关键变化怎么记录下来&#xff1f;最好git能很容易的跟踪版本变化。 markdown 是最理想的选择&#xff0c;本文给出一种Rstuidio下的轻量级md阅读器实现&#xff1a;markdownReader。书写md还是在Rstudio。更…...

termux配置nginx+php

只能以默认用户u0_axx运行,修改用户会报错An error occurred.或者file no found 安装nginx pkg install nginx安装php-fpm pkg install nginx修改nginx配置文件, nano ../usr/etc/nginx/nginx.conf#端口必须设置在1024以上(1024以下需要root,但php-fpm不能以root用户运行,n…...