产业新知热门
加国央行再次疯狂加息 月供将暴涨 物价竟会这样变化 无人幸免的购物节“大逃杀” 兼职做自媒体这些天:有人年入五块四,有人时薪一百二 瞄准数亿过敏人群,以过敏数字疗法为切点,杭州数智医掘金新蓝海 武汉大学疑似出现霍乱病例 期货不严格止损是超短线交易失败的根源 ,精细赛道也能走到上市! 预制菜,会有“刺客”吗推荐资讯
让区块链变成人人可用的工具,上海原创Web3.0操作系统是如何诞生的 隐私之变|自我主张时代变革,从构建WEB3.0的ID体系开始 被投资圈盯上,风头超过元宇宙,Web3.0到底是啥? Web3.0,勾勒下一代互联网模样 为什么说中国汽车产业已经真正“支棱”起来了 我在新能源汽车行业打工10年:从月薪2千涨至年薪40万,终于熬出头 对话梅宏院士:数字化转型不是想不想,而是必须转 王兴继续“电商零售梦”:告别社区团购 美团优选变身明日达超市并发模拟的四种方式
来自:网络
一、Postman
首先演示一下 Postman 最基本的使用,创建一个 Spring Boot 项目,测试的代码如下:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("test")public class TestConrtoller { @GetMapping("demo") public String testDemo() { return "result~"; }}
为了便于操作,一般会将
http://127.0.0.1:8080 是经常使用的地址+端口号,可以设置为环境, 点击右上角的设置图标
知道基本使用之后,我们来看一下如何模拟并发测试
这个时候会创建出Concurrency的文件夹,我们可以把刚才测试的demo的例子放进这个文件夹下:
点击 Run Concurrency
你可以立马感觉到 CPU 在“燃烧”,因为要记录并打印日志,显示的话是一条一条来的,其实测试的速度,要比你看到的打印的日志的速度快,绿色表示正常
二、Apache Bench(AB)
ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。
ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。
使用的话,首先需要安装 Apache 服务器
网站:传送门 http://httpd.apache.org/download.cgi
因为我的操作系统是 windows10, 这里选择 File for Microsoft Windows
Linux下的安装是非常简单的,这里不再演示
文件解压到本地文件夹下,如果不是解压在c盘,需要设置参数,注意文件路径最好都是英文, 关于需要设置参数,conf->httpd.conf 使用文本编辑器打开, 需要修改的有三个地方:
配置完成后,命令行cmd进入 D:softUtilApache24bin 目录下
httpd.exe -k install
httpd.exe -k start
测试:
三、并发模拟工具JMeter
JMeter也是一款性能测试工具,是图形化的。 下载地址:传送门 http://jmeter.apache.org/
四、代码模拟
这里需要用到一个类,就是 CountDownLatch。 CountDownLatch 是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成。
CountDownLatch 用一个给定的计数器来初始化,该计数器的操作是原子操作,即同时只能有一个线程去操作该计数器。调用该类await方法的线程会一直处于阻塞状态,直到其他线程调用 countDown 方法使当前计数器的值变为零,每次调用 countDown 计数器的值减1。
当计数器值减至零时,所有因调用await()方法而处于等待状态的线程就会继续往下执行。这种现象只会出现一次,因为计数器不能被重置。 下图和它的方法可以体现出来:
CountDownLatch类只提供了一个构造器:
public CountDownLatch(int count) { };
然后下面这 3 个方法是 CountDownLatch 类中最重要的方法(上图能够反映出来)
public void await() throws InterruptedException { };
public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };public void countDown() { };下面还需要看一个类 Semaphore
Semaphore 与 CountDownLatch 相似,不同的地方在于 Semaphore 的值被获取到后是可以释放的,并不像 CountDownLatch 那样一直减到底。
它也被更多地用来限制流量,类似阀门的 功能。如果限定某些资源最多有N个线程可以访问,那么超过N个主不允许再有线程来访问,同时当现有线程结束后,就会释放,然后允许新的线程进来。有点类似于锁的lock与 unlock过程。相对来说他也有两个主要的方法:
用于获取权限的acquire(),其底层实现与CountDownLatch.countdown()类似;用于释放权限的release(),其底层实现与acquire()是一个互逆的过程。
通过这两个类可以进行并发的模拟:
测试一下:
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.*;@Slf4jpublic class CuncurrencyTest { public static int clientTotal = 5000; public static int threadTotal = 200; public static int count = 0; public static void main(String[] args) throws InterruptedException { ExecutorService executorService = Executors.newCachedThreadPool(); final Semaphore semaphore = new Semaphore(threadTotal); final CountDownLatch countDownLatch = new CountDownLatch(clientTotal); for (int i = 0; i < clientTotal; i++) { executorService.execute(() -> { try { semaphore.acquire(); add(); semaphore.release(); } catch (InterruptedException e) { e.printStackTrace(); log.error("exception",e); } countDownLatch.countDown(); }); } countDownLatch.await(); executorService.shutdown(); log.info("count:{}",count); } private static void add() { count++; }}
上面是对代码的并发模拟的简单形式,值得注意的是,这里提到的两个类不是专门做并发模拟,它们的用途很广泛,等之后更新Java网络编程的东西的时候,还会详细介绍它们。
更多相关内容
-
4000+游戏都在选择的数据分析平台,到底拥有怎样的底层架构
游戏投放素材是用视频还是图片? 广告文案怎么写点击率会更高? 哪个渠道效果更好? 这是投放人员在每次...
-
小红书品牌分析
摘要:随着“人货场”的中心从“场”转移到“人”,品牌与之对应的营销方法也在随之改变。流量的本质,就...
-
巴菲特说:一生中最重要的选择是婚姻
今天的每日一学,跟基金没有关系。更多的是一些关于生活,关于选择,关于婚姻的思考。 先说结论:选择...
-
100个楼盘宣布停贷!商品房预售制,该取消了
短短两三天的时间,从刚开始的14个楼盘,到32个再到52个,业主选择集体停贷,已经成为了全国性的现象。 ...
-
每逢周三,这个App一打开,真香!
成晚财经 呈现最新 俗话说
-
倒计时3天!“创客北京2022”报名即将截止,长风联盟温馨提示抓紧最后报名时间
创客北京,智创未来!第七届“创客中国”北京市中小企业创新创业大赛暨“创客北京2022”创新创业大赛(...
-
【课程上新】岗位评估要素及评估方法选择
限时拼团640 【岗位价值评估实战课】上新 【今
-
曾经大火的“再来一瓶”已有30年,洋河等酒企为何选择现在开启
引言: 曾在快消行业备受关注的“再来一瓶”营销活动依旧热门,领域甚至已经广泛到功能饮料、啤酒、...
-
【行业信息】宝马在海外市场推订阅服务,付费使用座椅加热
7月12日消息,据海外媒体报道,在韩国的Connected Drive商店中,宝马推出了座椅加热、方向盘加热等订阅...
-
Size的玄学被打破了
来自:机器之心 有关 batch size 的设置范围,其实不必那么拘谨。 我们知道,batch size 决定了...
推荐阅读