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:响应时间分布图

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

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

相关文章

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)

专属领域论文订阅 关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 为了答谢各位网友的支持,从今日起…

Java_简单模拟实现ArrayList_学习ArrayList

文章目录 一、 了解线性表和顺序表区别1.线性表2.顺序表 二、模拟实现1.定义接口2.定义MyArrayList3.成员变量以及构造方法4.实现打印数组5.实现add方法6.实现查找某个数是否存在contains或者某个数的下标indexOf7.获取或更改pos位置的值 get和set8.获取数组大小 size9.删除某个…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…

循环神经网络RNN专题(01/6)

一、说明 RNN用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&a…

【演讲比赛流程管理系统(C++版)】

一、演讲比赛程序需求 1.1、比赛规则 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛 每名选手都有对应的编号,如10001~10012 比赛方式:分组比赛,每组6个人 第一轮分为两个小组&a…

【深度测试】如何分析脚本以及对脚本进行测试

线上会存在一种任务,定时或者手动出发,我们称之为“脚本”,也可以称之为“job” 一、脚本的特性 无过程:只有开始和结束,过程迅速且黑盒。无交互:脚本处理的业务场景都几乎没有交互,只有数据被…

算法篇之二分

二分算法简介 特点 最简单的一种算法,也是最恶心,细节最多,最容易写出死循环的算法时间复杂度O(logN) 如何学习 明白其中的算法原理,二分并不是只有数组有序的的时候使用,而是看是否具有二段性。模板 朴素的二分模…

TCP TIME_WAIT 过多怎么处理

文章目录 1.什么是 TCP TIME_WAIT?2.为什么要 TIME_WAIT?3.TIME_WAIT 过多的影响4.解决办法4.1 调整短连接为长连接4.2 调整系统内核参数 5.小结参考文献 1.什么是 TCP TIME_WAIT? TCP 断开连接四次挥手过程中,主动断开连接的一方&#xff…

BeanFactory创建过程(基于Servlet)

BeanFactory创建过程(基于Servlet) 1. 概述1.2 那么问题就来了1.2.1 谁负责AnnotationConfigServletWebServerApplicationContext实例呢?1.2.2 ApplicationContextFactory初始化过程又是怎么样的? 1.3 总结 2. 最后 1. 概述 Anno…

什么可以用手机蓝牙控制LED???#串口通信【下】

什么可以用手机蓝牙控制LED???#串口通信【下】 前言预备知识1.小白玩串口控制的ASSII避坑1.1问题引入1.2解决问题 2.串口支持单词型指令控制2.1实现串口支持单词型指令控制的核心思路2.2利用字符数组来承接单词型指令2.3利用strstr函数来查找…

【Time Series】LSTM代码实战

一、简介 还是那句话,"时间序列金融"是一个很有"钱"景的话题,还是想尝试采用Stock时间序列预测任务DeepLearning。本文提供了LSTM预测股票的源代码。 二、算法原理 长短期记忆网络(LSTM)是一种特殊的循环神经…

如何衡量代码的复杂度

圈复杂度概要 最近的培训中了解到了一个概念,叫做圈复杂度。 圈复杂度(Cyclomatic Complexity)是一种衡量程序复杂度的度量方法。它由美国计算机科学家 Thomas J. McCabe 在 1976 年提出。圈复杂度通过统计程序的控制流图中的决策结构&…

linux有关安全的几个基本配置,禁止root登录,新建root权限账号

一、不安装多余的软件,能最小化安装就不要安装图形化界面,然后根据需求安装需要的软件。 二、防火墙要启用,如果您的这台服务器对外有服务只要放开服务就好了,就是说白了白名单,切忌一上来第一件事儿就是关闭防火墙&a…

Mobileye CES 2024 自动驾驶新技术新方向

Mobileye亮相2024年国际消费类电子产品展览会推出什么自动驾驶新技术? Mobileye再次亮相CES,展示了我们的最新技术,并推出了Mobileye DXP--我们全新的驾驶体验平台。 与往年一样,Mobileye是拉斯维加斯展会现场的一大亮点,让参观…

一文读懂Prodigal教程

2.prodigal教程 2.1 介绍 Prodigal 由橡树岭国家实验室和田纳西大学诺克斯维尔分校于2007年在能源部联合基因组研究所的主持下联合开发,是一种用于细菌和古细菌基因组的蛋白质编码基因预测软件工具,Prodigal 已成为世界上最受欢迎的微生物基因预测算法…

day28 节点操作——克隆节点、删除节点

目录 克隆节点删除节点 克隆节点 特殊情况下新增节点按以下操作: 复制一个原有的节点把复制的节点放入到指定的元素内部 克隆节点 元素.cloneNode(布尔值) cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值 若为true,则代表克隆时…

Vue3批量异步更新是如何实现

文章目录 一、什么是调度执行二、如何实现可调度?三、批量更新 & 异步更新四、Vue原理五、最后 一、什么是调度执行 多次修改数据(例如自身num10次),只进行一次页面渲染(页面只会渲染最后一次num10) 指的是响应式数据发生变化…

C++ copy()函数详细介绍

copy() 是一个标准库函数,位于 头文件中。它用于将一个容器中的元素复制到另一个容器中,或者将一个范围内的元素复制到另一个范围中。 函数参数介绍 copy( first, last, d_first );first 和 last:表示输入范围的迭代器。 first 指向要复制的…

centos7 安装 java17 安装 idea

删除旧版本的java或者说是自带的,免得干扰 查找java [wanglcentos7 java]$ rpm -qa|grep javajava-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch …

展台设计搭建中6个关键元素

一、哪种风格的会展展台设计更显示设计感 从已有的展台布置局面可以看出,不同展台设计有着不同的标准与选择原则,现有的一系列展台设计标识会随着现代化会展的提升重新进入更新诉求阶段。 二、展台设计一般会有那种可以选择的类别 从出现在展台设计优化阶…