Jmeter高级使用

news2024/11/26 14:49:45

文章目录

    • 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.coloradmin.cn/o/1426181.html

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

相关文章

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

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

Netty如何解决粘包以及半包问题,以及目前最常用的LengthFieldBasedFrameDecoder

粘包(Sticky Packets)和半包(Half Packets) 粘包(Sticky Packets)和半包(Half Packets)是在网络通信中常见的两种问题,特别是在基于流的传输协议(如TCP&…

基于tidevice实现iOS app自动化使用详解

目录 1、IOS自动化工具概述 2、tidevice工具的原理和使用 2.1、tidevice的原理 2.2、tidevice实现的功能 2.3、tidevice的安装 2.4、tidevice的使用 2.4.1、设备管理 1、查看已连接的设备的列表 2、检测设备连接状态 3、等待设备连接,只要有就连接就结束监…

《区块链简易速速上手小册》第9章:区块链的法律与监管(2024 最新版)

文章目录 9.1 法律框架和挑战9.1.1 基础知识9.1.2 主要案例:加密货币的监管9.1.3 拓展案例 1:跨国数据隐私和合规性9.1.4 拓展案例 2:智能合约的法律挑战 9.2 区块链的合规性问题9.2.1 基础知识9.2.2 主要案例:加密货币交易所的合…

【读点论文】A Survey of Deep Learning Approaches for OCR and Document Understanding

A Survey of Deep Learning Approaches for OCR and Document Understanding Abstract 文档是许多领域(如法律、金融和技术等)中许多业务的核心部分。自动理解发票、合同和简历等文件是有利可图的,开辟了许多新的商业途径。通过深度学习的发展,自然语言…

cesium-场景出图场景截屏导出图片或pdf

cesium把当前的场景截图,下载图片或pdf 安装 npm install canvas2image --save npm i jspdf -S 如果安装的插件Canvas2Image不好用,可自建js Canvas2Image.js /*** covert canvas to image* and save the image file*/ const Canvas2Image (function…

elementUI中分开的时间日期选择组件,控制日期的禁用

<el-date-picker v-model"query.startTime" type"datetime" :picker-options"startPickerOptions" format"yyyy-MM-dd HH时" popper-class"date-picker" placeholder"选择日期时间"></el-date-picker>…

【Mysql】数据库架构学习合集

目录 1. Mysql整体架构1-1. 连接层1-2. 服务层1-3. 存储引擎层1-4. 文件系统层 2. 一条sql语句的执行过程2-1. 数据库连接池的作用2-2. 查询sql的执行过程2-1. 写sql的执行过程 1. Mysql整体架构 客户端&#xff1a; 由各种语言编写的程序&#xff0c;负责与Mysql服务端进行网…

[C#][opencvsharp]opencvsharp sift和surf特征点匹配

SIFT特征和SURF特征比较 SIFT特征基本介绍 SIFT(Scale-Invariant Feature Transform)特征检测关键特征&#xff1a; 建立尺度空间&#xff0c;寻找极值关键点定位&#xff08;寻找关键点准确位置与删除弱边缘&#xff09;关键点方向指定关键点描述子 建立尺度空间&#xff0…

python爬虫实战——获取酷我音乐数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: 版 本&#xff1a; python 3.8 编辑器&#xff1a;pycharm 2022.3.2 模块使用: requests >>> pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install…

【数据分享】1929-2023年全球站点的逐日最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

【云原生之kubernetes系列】--污点与容忍

污点与容忍 污点&#xff08;taints)&#xff1a;用于node节点排斥Pod调度&#xff0c;与亲和效果相反&#xff0c;即taint的node排斥Pod的创建容忍&#xff08;toleration)&#xff1a;用于Pod容忍Node节点的污点信息&#xff0c;即node节点有污点&#xff0c;也将新的pod创建…

GM8775C——DSI 转双通道 LVDS 发送器

1 产品概述 GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单 / 双通道 LVDS 功能&#xff0c; MIPI 支持 1/2/3/4 通道可选&#xff0c;每通道最高支持 1Gbps 速率&#xff0c;最大支持 4Gbps 速率。 LVDS 时钟频率高达 154MHz &#xff…

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【数据分享】1929-2023年全球站点的逐月最高气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

vue如何使用vuedraggable实现不同面板之间的拖拽排序,拖拽复制功能?【vuedraggable】

vuedraggable官方文档链接使用说明https://www.itxst.com/vue-draggable/re7vfyfe.htmlhttps://www.itxst.com/vue-draggable/re7vfyfe.html 效果图&#xff1a; 使用vuedraggable拖动左边的字段和逻辑到右边形成不同的规则校验 <!-- ****--date 2024-02-01 11:34****-…

私募证券基金动态-23年12月报

成交量&#xff1a;12月日均7,696.93亿元 2023年12月A股两市日均成交7,696.93亿元&#xff0c;环比下降12.39%、同比下降2.26%。12月整体21个交易日&#xff0c;无单日交易日成交金额过万亿&#xff0c;单日交易日最低成交金额为6,122.84亿元&#xff08;12月25日&#xff09;…

GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

【C/Python】GtkApplicationWindow

一、C语言 GtkApplicationWindow 是 GTK 库中用于创建应用程序主窗口的一个控件。 首先&#xff0c;需要确保环境安装了GTK开发库。然后&#xff0c;以下是一个简单的使用 GtkApplicationWindow 创建一个 GTK 应用程序的示例&#xff1a; #include <gtk/gtk.h>static …

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

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