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

java多线程测试websocket demo(使用文件流)

这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线程测试来模拟不同场景下的并发请求,以便对WebSocket服务器进行压力测试和性能优化。整个demo会包括创建WebSocket服务器和客户端的代码,以及多线程测试的代码实现。通过这个demo,可以更好地了解WebSocket通信的多线程测试方法和实现。

@ClientEndpoint
public class WebSocketClient {private static final AtomicInteger connectedCount = new AtomicInteger(0);private static final LongAdder firstFrameLatencySum = new LongAdder();private static final CountDownLatch latch = new CountDownLatch(20);private static final int MESSAGE_SIZE = 1024;private static final int CONCURRENCY_LEVEL = 20;private static final AtomicLong startTime = new AtomicLong(0);@OnOpenpublic void onOpen(Session session) {connectedCount.incrementAndGet();}@OnMessagepublic void onMessage(String message) {startTime.set(System.nanoTime());System.out.println(Thread.currentThread().getName() + ": " + message);}@OnClosepublic void onClose(Session session, CloseReason closeReason) {connectedCount.decrementAndGet();}public static void main(String[] args) throws URISyntaxException, Exception {for (int i = 0; i < CONCURRENCY_LEVEL; i++) {WebSocketContainer container = ContainerProvider.getWebSocketContainer();Session session = container.connectToServer(WebSocketClient.class, new URI("ws://you_url"));session.getBasicRemote().sendBinary(ByteBuffer.wrap(generateMessage()));latch.countDown();}latch.await(100, TimeUnit.SECONDS);System.out.println("Connected clients: " + connectedCount.get());System.out.println("Average first frame latency: " + (firstFrameLatencySum.sum() / CONCURRENCY_LEVEL) + " nanoseconds");}private static byte[] generateMessage() {try {FileInputStream fileInputStream = new FileInputStream("D:\\smn.wav");byte[] fileData = new byte[fileInputStream.available()];fileInputStream.read(fileData);fileInputStream.close();return ArrayUtils.subarray(fileData, 0, 300000);} catch (IOException e) {throw new RuntimeException(e);}}
}

相关文章:

java多线程测试websocket demo(使用文件流)

这个demo主要是利用Java多线程来测试WebSocket通信。首先&#xff0c;创建一个WebSocket服务器和客户端&#xff0c;然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试&#xff0c;可以验证WebSocket通信的并发性能和稳定性。同时&#xff0c;可以通过多线…...

Tosei 自助网络店铺管理系统network_test.php_RCE漏洞复现

简介 Tosei 自助洗衣机是日本一家公司的产品,在 network_test.php 文件存在命令执行 漏洞复现 FOFA语法: body="tosei_login_check.php" 主要是日本 访问界面如下所示: 验证POC: /cgi-bin/network_test.php 拼接访问url: https://ip:port/cgi-bin/network_tes…...

uni-app 国际化

vue i18n v9的迁移后的$t()无法获取数组、对象 http://t.csdnimg.cn/WkCHy api:vue i18n [intlify] Not found ‘language’ key in ‘zh-Hans’ locale messages. [intlify] Fall back to translate ‘language’ key with ‘zh’ locale. [intlify] Not found ‘languag…...

git:git reset 和 git revert

在使用 git 进行项目开发的过程中&#xff0c;有时会出现错误提交的情况&#xff0c;这时就需要能够撤销错误的提交&#xff0c;将代码恢复到提交之前的样子。根据不同情况&#xff0c;可以使用 git reset 或 git revert 命令。 一. git reset git reset 的原理是修改 HEAD 的…...

LeetCode:670. 最大交换(Java 贪心)

目录 670. 最大交换 题目描述&#xff1a; 实现代码与解析&#xff1b; 贪心 原理思路&#xff1a; 670. 最大交换 题目描述&#xff1a; 给定一个非负整数&#xff0c;你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释…...

【STM32】STM32学习笔记-Unix时间戳(41)

00. 目录 文章目录 00. 目录01. Unix时间戳02. UTC/GMT03. 时间戳转换04. C 标准库 <time.h>05. 时间相关函数示例5.1 time函数5.2 gmtime函数5.3 localtime函数5.4 mktime函数5.5 ctime函数5.6 asctime函数5.7 strftime函数 06. 预留07. 附录 01. Unix时间戳 •Unix 时…...

2016年认证杯SPSSPRO杯数学建模B题(第一阶段)低分辨率下看世界全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 B题 低分辨率下看世界 原题再现&#xff1a; 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制&#xff0c;拍摄设备只能在较低的分辨率下成像。为简单起见&#xff0c;我们只考虑单色成像。假设成像的分辨率为 32 64&#xff0c…...

16、Kafka ------ SpringBoot 整合 Kafka (配置 Kafka 属性 及对应的 属性处理类 解析)

目录 配置 Kafka 及对应的 属性处理类配置KafkaKafka配置属性的约定代码演示生产者相关的配置消费者相关的配置 代码&#xff08;配置文件&#xff09;application.properties 配置 Kafka 及对应的 属性处理类 配置Kafka spring.kafka.* 开头的配置属性&#xff0c;这些属性将由…...

【蓝桥杯选拔赛真题61】python偶数平方 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析

目录 python偶数平方 一、题目要求 1、编程实现 2、输入输出...

智能语音识别源码系统+语义理解+对话管理+语音合成 带完整的搭建教程

人工智能技术的不断发展&#xff0c;智能语音识别技术逐渐成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;目前市场上的智能语音识别产品大多存在一定的局限性&#xff0c;如识别率不高、功能单一等。为了解决这些问题&#xff0c;罗峰给大家分享一款基于智能语音…...

cdh6.3.2的hive配udf

背景 大数据平台的租户要使用udf&#xff0c;他们用beeline连接&#xff0c; 意味着要通过hs2&#xff0c;但如果有多个hs2&#xff0c;各个hs2之间不能共享&#xff0c;需要先把文件传到hdfs&#xff0c;然后手动在各hs2上create function。之后就可以永久使用了&#xff0c;…...

在DevEco开发工具中,使用Previewer预览界面中的UI组件

1、在DevEco工具中&#xff0c;点击并展开PreViewer预览器 2、在PreViewer预览器中&#xff0c;点击Tt按钮&#xff08;Inspector&#xff09;切换至组件查看模式 3、在组件查看模式下选择组件&#xff0c;代码呈现选中状态&#xff0c;右侧呈现组件树&#xff0c;右下方呈现组…...

【蓝桥杯冲冲冲】旅行计划

蓝桥杯备赛 | 洛谷做题打卡day18 文章目录 蓝桥杯备赛 | 洛谷做题打卡day18旅行计划题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解代码我的一些话 旅行计划 题目描述 Kira酱要去一个国家旅游。这个国家有 N N N 个城市&#xff0c;编号为 1 1 1 至 N N…...

Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪

0 开发需求 1、硬件&#xff1a;Ultraleap 手部追踪相机&#xff08;Ultraleap 3Di&#xff09; 2、软件&#xff1a;在计算机上安装Ultraleap Gemini (V5.2) 手部跟踪软件。 3、版本&#xff1a;Unity 2021 LTS 或更高版本 4、Unity XR插件管理&#xff1a;可从软件包管理器窗…...

HarmonyOS鸿蒙学习基础篇 - Text文本组件

该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 Text文本组件是可以显示一段文本的组件。该组件从API Version 7开始支持&#xff0c;从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 子组件 可…...

pytorch学习笔记(十一)

优化器学习 把搭建好的模型拿来训练&#xff0c;得到最优的参数。 import torch.optim import torchvision from torch import nn from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear from torch.utils.data import DataLoaderdataset torchvision.datas…...

【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁

目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法&#xff1a; 1.普通方法 将synchronized修饰在普通同步方法&#xff0c;那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…...

jQuery 删除元素 —— W3school 详解 简单易懂(十四)

通过 jQuery&#xff0c;可以很容易地删除已有的 HTML 元素。 删除元素/内容 如需删除元素和内容&#xff0c;一般可使用以下两个 jQuery 方法&#xff1a; remove() - 删除被选元素&#xff08;及其子元素&#xff09;empty() - 从被选元素中删除子元素 jQuery remove() 方…...

在 Linux 上搭建 Java 环境

目录 一、安装jdk 1. 挑选 jdk 版本 2. 安装 3. 验证 jdk 二、安装tomcat 1. 下载压缩包 2. 上传压缩包给 Linux &#xff08;需要用到 rz 命令&#xff09; 3. 解压压缩包&#xff08;需要用到 unzip&#xff09; 4. 进入 bin 目录 5. 给启动脚本增加可执行权限 6. 启…...

深度学习-Pytorch如何保存和加载模型

深度学习-Pytorch如何保存和加载模型 用pytorch构建模型&#xff0c;并训练模型&#xff0c;得到一个优化的模型&#xff0c;那么如何保存模型&#xff1f;然后如何又加载模型呢&#xff1f; pytorch 目前在深度学习具有重要的地位&#xff0c;比起早先的caffe&#xff0c;te…...

2.数据结构 顺序表(自留笔记)

文章目录 一.静态顺序表&#xff1a;长度固定二.动态顺序表1.下面证明原地扩容和异地扩容代码如下&#xff1a;2.下面是写一段Print&#xff0c;打印数字看看&#xff1a;3.头插4.尾删5.头删6.越界一定会报错吗7.下标插入8.下标删除9.查找数字10.应用&#xff1a;利用顺序表写一…...

将python打包成exe文件

将python打包成exe文件 文章目录 将python打包成exe文件1.安装PyInstaller2.配置pyinstaller到环境变量3.打包 以上一篇文章&#x1f517;用python删除重复文件并放入回收站为例&#xff0c;演示了如何用python写一个删除重复文件并放入回收站的功能代码&#xff0c;但是每次都…...

大数据处理,Pandas与SQL高效读写大型数据集

大家好&#xff0c;使用Pandas和SQL高效地从数据库中读取、处理和写入大型数据集&#xff0c;以实现最佳性能和内存管理&#xff0c;这是十分重要的。 处理大型数据集往往是一项挑战&#xff0c;特别是在涉及到从数据库读取和写入数据时。将整个数据集加载到内存中的传统方法可…...

【2024年5月备考新增】《软考高项论文专题 (2)论文背景(合集)》

1 论文的项目背景 1.1 论文写法 段落字数 - 正文全部字数不少于2000字孙悟空大闹天宫,被如来镇压,唐僧收服孙悟空,开始去西天取经。背景500字因为路途遥远,所以需要九九八十一难,才能取得正经。过渡段150字第一难、第二难 … 第八十一难过程1300字取得正经,唐僧只受了八…...

Mysql复习1--理论基础+操作实践--更新中

Mysql 索引索引的分类索引失效sql优化 删除数据库数据恢复 索引InnoDB引擎MyISAM引擎Memory引擎Btree索引支持支持支持hash索引不支持不支持支持R-tree索引不支持支持不支持Full-text索引5.6版本以后支持支持不支持 索引 解释说明: 索引指的是帮助mysql高效的获取数据的结构叫…...

微信小程序打卡定位实现方案

1背景 业务场景是考勤打卡,在考勤打卡这个业务场景中有两个关键技术点:定位和人员识别。用户界面初步确定是用微信小程序来实现,本文就定位问题做了技术上的调研。 2调研内容 平台注意事项 获取位置 选择位置 查看位置 距离计算 定位精度 防作弊 Demo 3调研结果 3.1平台注…...

小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译

#知识点&#xff1a; 1、PYC 文件反编译 2、Python-Web-SSTI 3、SSTI 模版注入利用分析 各语言的SSIT漏洞情况&#xff1a; SSIT漏洞过程&#xff1a; https://xz.aliyun.com/t/12181?page1&time__1311n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgrefhtt…...

计算机毕业设计 基于SpringBoot的律师事务所案件管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

如何使用宝塔面板配置Nginx反向代理WebSocket(wss)

本章教程&#xff0c;主要介绍一下在宝塔面板中如何配置websocket wss的具体过程。 目录 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 2、代理配置内容 三、注意事项 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 map $http_upgrade $connection_…...

vulhub之redis篇

CVE-2022-0543 | redis的远程代码执行漏洞 简介 CVE-2022-0543 该 Redis 沙盒逃逸漏洞影响 Debian 系的 Linux 发行版本,并非 Redis 本身漏洞, 漏洞形成原因在于系统补丁加载了一些redis源码注释了的代码 原理分析 redis一直有一个攻击面,就是在用户连接redis后,可以通过ev…...

深圳微商城网站建设/搜狗网

由于解决方案供应商都希望能抓住物联网带来的机遇&#xff0c;所以不久他们在与客户交流中可能会提出一个新名词——区块链技术。甚至在10月末落幕的HPC China 2016大会也设立了区块链、比特币与高性能计算论坛&#xff0c;邀请了小蚁创始人达鸿飞&#xff0c;比特大陆/区块链项…...

海外购物网站上填手机号码怎么做/特大新闻凌晨刚刚发生

2019独角兽企业重金招聘Python工程师标准>>> Table of Contents 1 游戏中必不可少的 UI 元素 2 使用 CocoStudio UI 编辑器设计配置界面 2.1 首先建立主配置界面&#xff1a; 2.2 其次我们需要一个 “修改密码” 的二级 UI 界面&#xff1a; 3 编写代码控制页面逻辑…...

广东省建设职业注册中心网站/网站推广工具

下面我们就一起来看看高情商的人说早安语句&#xff0c;早上好高情商句子。1、幸福其实很简单&#xff0c;有时就在我们身边&#xff0c;只是我们没有觉察&#xff0c;也没有去珍惜&#xff0c;只是失去以后才发觉其可贵。2、现在无法触碰的难过&#xff0c;终将可当作笑话去讲…...

wordpress的文章调用/网络推广要求

sudo apt install fbterm fbterm-ucimf ucimf-sunpinyin fbterm -i fbterm_ucimf之后可以在终端里输入和显示中文&#xff0c;效果还不错&#xff0c;嘿嘿&#xff5e;...

软件工程主修课程/网站为什么要做seo

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 作者简介 吕洋洋 某大型资管公司在职量化策略研究员&#xff0c;熟悉数据清洗工作&#xff0c;擅于运用宏观因子、行业因子等进行对期货品种价格影响建模与相关性分析&#xff0c;理解机器学习多元回归…...

菏泽做网站建设找哪家好/seo研究中心论坛

__filename变量获取当前模块文件的带有完整绝对路径的文件名&#xff1b;【包含文件名本身的绝对路径】 __dirname变量获得当前文件所在目录的完整目录名。【不包含文件名本身的绝对路径】 该方法用于获取一个路径中的目录名&#xff0c;使用方式如下&#xff1a;path.dirname(…...