Jmeter性能测试手册

news2025/3/1 0:59:39

目录

目录     2

  1. 简介... 4
  2. JMeter与LoadRunner区别... 4
  3. 环境配置... 5

3.1 安装JDK. 5

3.2 配置JDK环境变量... 9

3.3 安装并配置Maven. 13

3.4 下载JMeter 15

  1. JMeter分类使用... 16

4.1 对于Dubbo类接口的测试.. 16

4.1.1 安装开发工具IDEA. 16

4.1.2 配置字符集格式... 16

4.1.3 使用IDEA导入Maven工程.. 18

4.1.4 配置pom.xml导入项目依赖包... 26

4.1.5 pom.xml中加入被测API 27

4.1.6 点击刷新Maven项目... 28

4.1.7 配置zookeeper地址及调用接口... 28

4.1.8 新建包名以及测试类型.. 29

4.1.9 代码示例(统一账务查询接口).. 31

4.1.10 对项目进行打包.. 35

4.1.11 对依赖包进行输出lib目录.. 36

4.1.12进入项目路径检查各个包... 39

4.1.13解压JMeter 40

4.1.14 拷贝target中jar包至JMeter \lib\ext 41

4.1.15 拷贝lib中jar包至JMeter \lib. 42

4.1.16 开启JMeter界面... 43

4.1.17 进行冒烟测试或联通性测试... 47

4.1.18 指标参数说明... 47

4.2 对于WebService类接口的测试.. 48

4.2.1 开启一个干净版JMeter 48

4.2.2 新建线程组... 49

4.2.3 新建soap/xml请求.. 49

4.2.4 贴入xml报文及URL地址... 50

4.2.5 新增断言.. 50

4.2.6 新建聚合报告.. 51

4.2.7 新建查询结果树... 51

4.2.8 运行进行冒烟或联通测试... 52

4.3 监控工具NMON的使用... 53

4.3.1 NMON简介... 53

4.3.2 NMON安装... 53

4.3.3 NMON 运行.. 54

4.4 商用监控工具dytrace的配置及使用... 55

4.4.1 打开已安装完毕dytrace客户端... 55

4.4.2 创建系统配置文件.. 57

4.4.3 右击新增的配置名称,添加层... 58

4.4.4 远程进入应用服务器,配置Agent 62

4.4.5 进入任意目录上传Agent 的jar包... 62

4.4.6 运行jar包.. 63

4.4.7 进入生成路径.. 65

4.4.8 替换剪切板中的配置信息... 65

4.4.9 修改应用配置文件.. 67

4.4.10 保存并重启应用.. 67

4.4.11 回到监控端验证链接是否正确.. 68

4.5 多台压力机并发实现.. 71

4.4.1 测试项目拷贝至跳板机上... 71

4.4.2 同样的项目拷贝至另外一台网络相同的压力机上... 72

4.4.3 修改JMeter中配置文件.. 72

4.4.4 同理修改另一台压力机上的JMeter中配置文件.. 73

4.4.5 分别启动两台机器中的server.bat 73

4.4.5 打开JMeter界面,测试可以同时压力并发.. 74

1.      简介

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

2.      JMeter与LoadRunner区别

JMeter与LoadRunner都是非常优秀的性能测试软件,区别内容如下表格。

对比项

JMeter

LoadRunner

安装

简单,解压即可

复杂,LoadRunner安装包大于1GB,安装时间较长

录制/回放

支持

支持

测试协议

偏少,用户可自行扩展

较多,用户不可自行扩展

分布式大规模压力

支持

支持

IP欺骗功能

不支持

支持

图形报表

支持(较弱)

支持(很强)

测试逻辑控制

支持

支持

监控服务资源(CPU、内存)

支持

支持

功能测试

支持

不支持

测试成本

免费开源

商业收费(费用很高)

3.      环境配置

3.1 安装JDK

进入Oracle官网下载

Java Downloads | Oracle

注意:JMeter支持1.4或更高JDK版本

 

用鼠标左键双击JDK安装包,会出现下图所示的安装界面。

其实上面那个步骤是在加载配置,为安装JDK做前期准备。之后会出现下图所示的界面。

  1. 我们选中“我接受该许可证协议中的条款”,“下一步”按钮将自动激活,然后点击该按钮,会出现下图所示的自定义安装界面。
  2. 可以根据需要选择不同的安装路径和安装内容。这里我们保持默认选择。点击“下一步”出现下图所示的“正在安装”界面。
  3. 等待进度条到100%的时候,又会跳出“自定义安装”界面,这个时候要安装的是语言支持插件。直接点击下一步。
  4. 然后会出现浏览器关联选项,可以根据自己的需要选择,安装完毕后还可以在控制面板中更改该选项。
  5. 点击“下一步”会出现安装完成的提示。当然这步要注意一下,360安全卫士可能会提示木马防火墙,大家要选择“允许程序的所有操作”,否则可能会造成JDK安装不完整。

3.2 配置JDK环境变量

1、完成了第一步,只是把JDK环境安装完成了。这个时候还要通过一系列的环境变量的配置才能使用JDK环境进行JAVA开发。配置环境变量包括java_home,path和classpath三个部分。

2、用鼠标右击“我的电脑”,选择“属性”->“高级”->“环境变量”->“系统变量”->“新建”。

  1. 在“变量名”输入框中写入“java_home”,在“变量值”输入框中写入“C:\Program Files\Java\jdk1.6.0” (根据安装路径填写),然后点击“确定”,java_home就设置完成了。

  1. 下面开始“classpath”的配置。选中“系统变量”查看是否有classpath项目,如果没有就点击“新建”,如果已经存在就选中classpath选项,点击“编辑”按钮,然后在“变量名”中填写“classpath”,在“变量值”中填写“C:\Program Files\Java\jdk1.6.0\jre\lib”(根据安装路径填写)。
  2. 现在可以进行“path”的配置了。同上在“classpath”设定时类似,“变量名”输入框填写“path”,“变量值”输入框填写“C:\Program Files\Java\jdk1.6.0\bin”(根据安装路径填写)。
  3. JDK的环境变量已经配置完成,可以通过打开命令提示符窗口,输入命令“java -version”, 看到Java版本的信息,来确定安装是否成功。首先点击“开始”,然后点击“运行”。 
  4. 然后会出现下图所示的输入界面,输入“cmd”,按"Enter"键。
  5. 这个时候就进入了“命令提示符”窗口。这个时候输入“java -version”,特别注意 java和-version之间有一个空格,按"Enter"键。
  6. JDK版本信息就全部显示出来了,也表面JDK已经安装和配置完成,可以开始进行JAVA开发了。

3.3 安装并配置Maven

首先,先到官网去下载maven。这里是官网的地址:http://maven.apache.org/download.cgi  请选择最新的版本下载,这里咱们下载的是apache-maven-3.1.1-bin.zip,在如图所示的红色部分

解压apache-maven-3.1.1-bin.zip,并把解压后的文件夹下的apache-maven-3.1.1文件夹移动到D:\Java下,如果没有Java这个文件夹的话,请自行创建。

右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量,有以下系统变量需要配置:

新建系统变量   MAVEN_HOME  变量值:D:\Java\apache-maven-3.1.1

编辑系统变量  Path         添加变量值: ;%MAVEN_HOME%\bin

最后检验配置是否成功:用win键+R,来打开命令行提示符窗口,即Dos界面,输入mvn --version  若出现以下情况说明配置成功

注意事项

如果配置错误,请确保你已正确配置JDK环境变量

JDK环境变量配置参考经验:http://jingyan.baidu.com/article/ca41422fe3b7261eae99edc6.html

3.4 下载JMeter

下载地址:Apache JMeter - Apache JMeter™

下载后解压即可使用。

4.      JMeter分类使用

4.1 对于Dubbo类接口的测试

4.1.1 安装开发工具IDEA

安装比较简单,一直点下一步即可

4.1.2 配置字符集格式

【右击属性】进入安装路径

打开配置文件

最后添加-Dfile.encoding=UTF8

4.1.3 使用IDEA导入Maven工程

 

 

 

 

4.1.4 配置pom.xml导入项目依赖包

4.1.5 pom.xml中加入被测API

4.1.6 点击刷新Maven项目

4.1.7 配置zookeeper地址及调用接口

4.1.8 新建包名以及测试类型

4.1.9 继承AbstractJavaSamplerClient类或实现JavaSamplerClient接口 

方法介绍

@Override
public void setupTest(JavaSamplerContext javaSamplerContext) {
   
}

主要用于并发测试前的一下准备操作,一般做一些接口参数常量初始化 

@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
    return null;
}

 主要为多线程并发方法体,一般用于调用接口请求,计算响应时间及断言结果 

@Override
public void teardownTest(JavaSamplerContext javaSamplerContext) {

}

主要用于并发结束后的一些操作

@Override
public Arguments getDefaultParameters() {
    return null;
}

主要用于JMeter UI界面展示参数项

4.1.9 代码示例(统一账务查询接口)

import com.bestpay.account.service.facade.BalanceQueryFacade;import com.bestpay.account.service.facade.model.BalanceDTO;import com.bestpay.account.service.facade.model.BalanceParamDTO;import com.bestpay.dubbo.result.Result;import org.apache.jmeter.config.Arguments;import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;import org.apache.jmeter.samplers.SampleResult;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.UUID; /** * 压测脚本 * Created by qinjie on 2016/1/27. * 账务余额查询接口 * 场景比例 */public class JTestBalanceQueryFacade extends AbstractJavaSamplerClient{     //加载 BalanceQueryFacade    private ApplicationContext context = new ClassPathXmlApplicationContext( "classpath:applicationContext.xml");    private BalanceQueryFacade balanceQueryFacade = (BalanceQueryFacade)context.getBean(BalanceQueryFacade.class);     //创建余额查询参数对象    private BalanceParamDTO balanceParamDTO;     //创建接口返回对象    private Result<BalanceDTO> result;     /**     * 重写JmetergetDefaultParameters方法为获取Jmeter中默认参数     * @return Arguments默认参数列表     */    public Arguments getDefaultParameters(){         //创建默认参数取值对象        Arguments arguments = new Arguments();         //账户类型        arguments.addArgument("accountType","");         //资金账户号        arguments.addArgument("accountNo","");         //账户名称(可以为空)        arguments.addArgument("accountName","");         //客户账户号        arguments.addArgument("contractNo","");         //币种(可以为空)        arguments.addArgument("ccy","");         //核算机构(可以为空)        arguments.addArgument("settleBranch","");         //账户属性(可以为空)        arguments.addArgument("accAttribute","");         //账户性质(可以为空)        arguments.addArgument("accNature","");         //余额方向(可以为空)        arguments.addArgument("drCrFlag","");         //状态(可以为空)        arguments.addArgument("status","");         //区域码(可以为空)        arguments.addArgument("areaCode","");         //会计日(可以为空)        arguments.addArgument("accDate","");         return arguments;     }      /**     * 初始化压测准备     * @param arg0 默认参数     */    public void setupTest(JavaSamplerContext arg0){      }     /**     * 执行压测完毕后     * @param arg0 默认参数     */    public void teardownTest(JavaSamplerContext arg0){     }      /**     * 执行压力测试代码     * @param javaSamplerContext  默认参数对象     * @return 响应时间等     */    @Override    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {        //实例化参数对象        balanceParamDTO = new BalanceParamDTO();         balanceParamDTO.setAccountType(javaSamplerContext.getParameter("accountType"));         balanceParamDTO.setAccountNo(javaSamplerContext.getParameter("accountNo"));         balanceParamDTO.setAccountName(javaSamplerContext.getParameter("accountName"));         balanceParamDTO.setContractNo(javaSamplerContext.getParameter("contractNo"));         balanceParamDTO.setCcy(javaSamplerContext.getParameter("ccy"));         balanceParamDTO.setSettleBranch(javaSamplerContext.getParameter("settleBranch"));         balanceParamDTO.setAccAttribute(javaSamplerContext.getParameter("accAttribute"));         balanceParamDTO.setAccNature(javaSamplerContext.getParameter("accNature"));         balanceParamDTO.setDrCrFlag(javaSamplerContext.getParameter("drCrFlag"));         balanceParamDTO.setStatus(javaSamplerContext.getParameter("status"));         balanceParamDTO.setAreaCode(javaSamplerContext.getParameter("areaCode"));         balanceParamDTO.setAccDate(null);         //创建返回对象        SampleResult sampleResult = new SampleResult();         //创建日志ID        String tranceLogID = UUID.randomUUID().toString();         //记录调用起始时间点        sampleResult.sampleStart();         result = balanceQueryFacade.queryBalance(balanceParamDTO,tranceLogID);         //记录接口返回时间点        sampleResult.sampleEnd();         //返回结果传递SampleResult        sampleResult.setSuccessful(result.isSuccess());        sampleResult.setResponseMessage(result.toString());         return sampleResult;    }     /**     * 接口联通性测试     * @param args 默认参数     */    public static void main(String[]args){        JTestBalanceQueryFacade jTestBalanceQueryFacade = new JTestBalanceQueryFacade();        JavaSamplerContext arg = new JavaSamplerContext(jTestBalanceQueryFacade.getDefaultParameters());        jTestBalanceQueryFacade.runTest(arg);        jTestBalanceQueryFacade.teardownTest(arg);    }}可以通过Main方法进行接口调用测试

4.1.10 对项目进行打包

先clean 然后进行package

4.1.11 对依赖包进行输出lib目录

开始种,运行CMD

切换至工程路径

运行mvn dependency:copy-dependencies -DoutputDirectory=lib

4.1.12进入项目路径检查各个包

   

4.1.13解压JMeter

4.1.14 拷贝target中jar包至JMeter \lib\ext 

4.1.15 拷贝lib中jar包至JMeter \lib

4.1.16 开启JMeter界面

如果zk地址为综测地址,建议放入综测进行打开

右键创建线程组

显示自己的测试类

 

4.1.17 进行冒烟测试或联通性测试

4.1.18 指标参数说明

Samples:请求次数

Average:平均响应时间

Median:中间值

90%Line:90%响应时间

Min:最小响应时间

Max:最大响应时间

Error%:错误率

Throughput:  TPS 每秒或每分钟处理交易笔数

至此Dubbo类接口测试联通成功

4.2 对于WebService类接口的测试

4.2.1 开启一个干净版JMeter

4.2.2 新建线程组

 

4.2.3 新建soap/xml请求

4.2.4 贴入xml报文及URL地址

4.2.5 新增断言

4.2.6 新建聚合报告

4.2.7 新建查询结果树

4.2.8 运行进行冒烟或联通测试

联通成功

4.3 监控工具NMON的使用

4.3.1 NMON简介

nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外,它并不会消耗大量的 CPU 周期,通常低于百分之二。在更新的计算机上,其CPU使用率将低于百分之一。

4.3.2 NMON安装

上传nmon工具

4.3.3 NMON 运行

键盘输入cmd 即监控cpu memory disks

4.4 商用监控工具dytrace的配置及使用

4.4.1 打开已安装完毕dytrace客户端

远程进入172.17.162.73  用户admin/password

4.4.2 创建系统配置文件

 

4.4.3 右击新增的配置名称,添加层

选择【应用程序】=》Java,命名英文的层,点【下一步】

根据实际情况,选择监控应用系统版本及JVM版本,并下一步

非初次安装直接点【下一步】

复制剪切板内容至txt文本

点击【下一步】

 

4.4.4 远程进入应用服务器,配置Agent

4.4.5 进入任意目录上传Agent 的jar包

 

4.4.6 运行jar包

执行java -jar dynatrace-agent-6.2.0.1238-unix.jar

4.4.7 进入生成路径

4.4.8 替换剪切板中的配置信息

4.4.9 修改应用配置文件 

加入配置信息

4.4.10 保存并重启应用

日志显示监控成功

4.4.11 回到监控端验证链接是否正确 

说明监控ok,双击配置名称

选择传感器,及浏览

点击刷新按钮

勾选监控的类并确定

选择【活动的并启动 PurePath】并确定

选择【Agent概述】

右击选择部署

至此dytrace部署完毕

4.5 多台压力机并发实现

4.4.1 测试项目拷贝至跳板机上

4.4.2 同样的项目拷贝至另外一台网络相同的压力机上

4.4.3 修改JMeter中配置文件

进入bin目录修改jmeter.properties中remote_hosts,添加压力机的ip,其中localhost为本地机器也是压力机

4.4.4 同理修改另一台压力机上的JMeter中配置文件

4.4.5 分别启动两台机器中的server.bat

4.4.5 打开JMeter界面,测试可以同时压力并发

设置1秒内,启动1个线程,循环1次

由于两台机器,所以都是2倍。即,1秒内启动2线程,各循环1次。

5、Troubleshoot

5.1、JMETE进程数不进行递增。

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

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

相关文章

leetcode_27_最小栈

class MinStack { public:MinStack() {}void push(int val) {//只要是压栈&#xff0c;先将元素保存到_elem中_elem.push(val);//如果x小于_min中栈顶的元素&#xff0c;将x再压入_min中if(_min.empty() || val < _min.top()){_min.push(val);}}void pop() {//如果——min栈…

OSPF路由协议

OSPF基本信息 OSPF&#xff08;Open Shortest Path First&#xff09;开放式最短路径优先协议是用于网际协议&#xff08;IP&#xff09;网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议&#xff08;IGP&#xff09;&#xff0c;在单一自治系统&#xff08…

【论文通读】CLIP改进工作综述

CLIP改进工作综述 前言1. 语义分割1.1 Lseg1.2 GroupViT 2. 图像检测2.1 ViLD2.2 GLIP2.3 GLIPv2 3. 图像生成3.1 CLIPasso 4. 视频理解4.1 CLIP4Clip4.2 ActionCLIP 5. 其它领域5.1 CLIP-VIL5.2 AudioCLIP5.3 PointCLIP5.4 DepthCLIP 总结参考链接 前言 CLIP作为多模态对比学…

torch.nn中的L1Loss和MSELoss

我们打开Pytorch官网&#xff0c;找到torch.nn中的loss function&#xff0c;进去如下图所示。 L1LOSS 我们先来看看 L1LOSS 损失函数的使用。下图是官网给出的描述。 L1loss有两种方式&#xff0c;一种是将所有误差累加作为总损失&#xff0c;另一种是将所有误差累加之后求平…

java八股文面试[数据库]——一个B+树中大概能存放多少条索引记录

MySQL设计者将一个BTree的节点的大小设置为等于一个页. (这样做的目的是每个节点只需要一次I/O就可以完全载入), InnoDB的一个页的大小是16KB,所以每个节点的大小也是16KB, 并且BTree的根节点是保存在内存中的,子节点才是存储在磁盘上. 假设一个B树高为2&#xff0c;即存在一个…

Cyber RT基础入门与实践_Hello Apollo

Hello Apollo 进入云实验环境模块的模块内包的 进入云实验环境 <1> 创建本节实验工程目录&#xff0c;创建完成后&#xff0c;工程目录如下所示&#xff1a; cyber_demo |-- cyber_01 |-- demo_main | |-- BUILD | |-- main.cc |–BUILD |–cyberfile.xml |–cyber_demo.…

YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享

实际项目应用&#xff1a;火灾预警系统、智能监控系统、工业安全管理、森林火灾监测以及城市规划和消防设计等应用场景中具有广泛的应用潜力&#xff0c;可以提高火灾检测的准确性和效率&#xff0c;保障人员和财产的安全。数据集说明&#xff1a;YOLO火焰目标检测数据集&#…

栈和队列经典笔试题

文章目录 栈和队列的回顾&#x1f4bb;栈&#x1fa73;队列&#x1f45f; 栈和队列经典笔试题&#x1f50b;有效的括号&#x1f3b8;用队列实现栈 &#x1f56f;用栈实现队列&#x1f52d;设计循环队列&#x1f9fc; 安静的夜晚 你在想谁吗 栈和队列的回顾&#x1f4bb; 栈&am…

在VR全景中嵌入3D模型有哪些优势?

现阶段&#xff0c;很多商企都会引入VR全景展示来宣传推广自己的产品、服务以及环境&#xff0c;但是环境展示凸显的沉浸式体验只是 VR全景一部分的价值所在&#xff0c;商企使用VR全景还有一个优势就是互动性&#xff0c;通过丰富多样的互动性&#xff0c;让用户同VR场景中的物…

Linux下systemd深入指南:如何优化Java服务管理与开机自启配置

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

网络编程day6作业

完成网络聊天室编写 ser #define ERR_MSG(msg) do{\fprintf(stderr,"__%d__",__LINE__);\perror(msg);\ }while(0) #define IP "127.0.0.1" #define PORT 6666 //创建链表 Linklistptr list_create(); Linklistptr node_buy(datatype e); int list_inser…

【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集

【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集 提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【三维重建】【深度学习】【数据集】基于COLMAP制作个人Gen6D测试数据集前言下载安装colmap软…

龙迅LT86102UX HDMI一进二出,支持分辨率4K60HZ

龙迅LT86102UXE 1. 描述 龙迅LT86102UX HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1&#xff1a;2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预强调的 TX 输出&#xff0c;支持长电缆应用&#xff0c;板载无 XTAL&#xff0c;可节省 BOM 成本。 LT86102UX HDM…

海保人寿:开源治理保障科技与保险融合,助力保险业务数字化改革创新

海保人寿保险股份有限公司&#xff08;简称“海保人寿”&#xff09;是第一家在海南筹建开业的全国性保险机构。从成立之初&#xff0c;便深耕于数字化创新&#xff0c;在自身多业务环节中实现数字化转型&#xff0c;依托优秀的研发体系与数智融合的业务系统&#xff0c;不断推…

MAYA材质学习(各种好看的)

例子2 例子3 例子4 例子5 例子6 例子7

如何解决GitHub 访问不了?小白教程

GitHub 是全球最大的代码开源平台&#xff0c;小伙伴们平时都喜欢在那里找一些优质的开源项目来学习&#xff0c;以提升自己的编程技能。 但是很多小白初探GitHub 发现访问不了&#xff0c;不能访问 通过一下方法绕过这堵墙&#xff0c;成功下载 GitHub 上的项目。过程非常简单…

Ukey连接虚拟前置机,浦银安盛基金用USB Server解决

浦银安盛基金一直使用物理前置机来连接Ukey&#xff0c;物理前置机维护管理不便&#xff0c;严重影响金融交易效率。因此&#xff0c;浦银安盛基金想要推进企业虚拟化&#xff0c;通过在虚拟机中部署前置机程序的方式&#xff0c;将前置机部署到虚拟机中。但虚拟机中的前置机&a…

SpringCloud整体架构概述

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; SpringCloud整体架构概述 SpringCloud对常见的分布式系统模式提供了简单易用的编程模型&#xff0c;帮助开发者构建弹性、可靠、协调的应用程序。 SpringCloud是在Spr…

在线升级之ICAP,ISP,BIN,HEX,MCS

学到了ICAP&#xff0c;做做笔记。 具体可参考&#xff1a;FPGA中ICAP原语的使用——Multiboot功能的实现_朽月的博客-CSDN博客 ICAP是管理内部配置访问端口的原语&#xff0c;于是我学习的第一个原语。对于原语的概念简而言之就是类似IP核的存在&#xff0c;是既成的电路结构&…

使用Puppeteer爬取地图上的用户评价和评论

导语 在互联网时代&#xff0c;获取用户的反馈和意见是非常重要的&#xff0c;它可以帮助我们了解用户的需求和喜好&#xff0c;提高我们的产品和服务质量。有时候&#xff0c;我们需要从地图上爬取用户对某些地点或商家的评价和评论&#xff0c;这样我们就可以分析用户对不同…