![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 58
~见贤思齐~
资深性能测试+测试开发
曾先后就职于山东城商行联盟(金融)、京东物流(电商)、奇安信(企业安全)、智联招聘。
展开
-
Java代码中如何在JSONObject按put顺序排序
编写java代码时,发现在JSONObject 对象中put 一些数据后,输出JSONObject对象信息时,展示的json信息中,排序发生了变化。"message": "压测通过""message": "压测通过"发现data下的对象顺序乱了。原创 2024-06-19 11:26:38 · 958 阅读 · 0 评论 -
java.lang.NumberFormatException: For input string: “”问题解决
java.lang.NumberFormatException: For input string原创 2022-08-16 15:22:40 · 22093 阅读 · 0 评论 -
java代码实现自动提取(ELK kibana日志平台)业务日志
近期因进行项目全链路压测,需要对服务部分接口进行业务日志提取,用来做参数化测试数据。据了解,服务日志存储于elk日志平台中。于是为了避免每次手工提取费时费事,且每次不能批量提取大量日志,决定使用脚本实现自动提取,并保存至特定目录文件中。前提:elk日志平台地址 查询索引名 查询条件以下为具体java代码,供参考:ImSearchExtractData类package com.Fulllink.imsearch;import com.Fulllink.utils...原创 2021-12-24 19:37:31 · 3752 阅读 · 2 评论 -
jmeter报错java.lang.NoClassDefFoundError: Could not initialize class io.grpc.netty.NettyChannelBuilder
背景:使用jmeter远程负载机压测rocksdb(研发在rocksdb上封了一层服务,压测的是服务接口)时,工具后台报以下错误:2021-12-09 18:02:06,970 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[线程组 1-1,6,main]java.lang.NoClassDefFoundError: Could not initialize class io.grpc.netty.NettyChannelBuilder原创 2021-12-10 20:57:29 · 3908 阅读 · 0 评论 -
java实现get请求参数串转post请求(json字符串)
前一阶段,由于系统接口变更(由原get请求变更为post请求),导致对应接口的参数化数据需要进行处理。注:post请求中,参数化数据需要使用json串。如下图:原get请求参数化信息:S_CV_EDU_LEVEL=4&S_CURRENT_CAREER_STATUS=2&CompanyId=121111111&S_CV_JOB_LEVEL_ALL=16000100040000%3B16000100070000%3B16000100080000&ip=xx.xx原创 2021-09-30 18:10:34 · 2013 阅读 · 0 评论 -
Jmeter BeanShell Sampler实现大文件分割/拆分(分割成多个指定数量文件)
性能测试时,有时需要对参数化大文件进行分割,分割数量依赖远程负载机的数量。以下为例,把csv或txt等格式大文件分割成10份。使用Jmeter BeanShell Sampler实现方式如下:beanshell代码:import java.io.*; String targetFile = "C:\\tools\\apache-jmeter-3.2-plugins\\bin\\csh\\playGameVar.txt"; String saveDir = "...原创 2021-09-15 11:12:24 · 890 阅读 · 0 评论 -
java实现-获取文件中每行指定字段值、转码为汉字并生成新文件
有时压测时,需要从日志文件中提取每行指定字段的值(S_KEYWORD_COMPLETE_NEW字段),如下:?S_KEYWORD_COMPLETE_NEW=%E7%94%9F%E4%BA%A7&NewId=60773611截取策略:以 "S_KEYWORD_COMPLETE_NEW="为开头标识,以"S_KEYWORD_COMPLETE_NEW="字段值后第一个"&"为结束。以下为具体java代码import java.io.*;/** * @Author: ji原创 2021-08-04 11:28:47 · 514 阅读 · 0 评论 -
git强制覆盖本地代码(与git远程仓库保持一致)
git强制覆盖: git fetch --all git reset --hard origin/master git pullgit强制覆盖本地命令(单条执行): git fetch --all && git reset --hard origin/master && git pull转载 2021-07-13 11:28:24 · 194 阅读 · 0 评论 -
jmeter-响应断言详细说明(转载)
一、响应断言:对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确。二、添加断言:1、apply to:通常发出一个请求只触发一个请求,所以勾选“main sampie only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了2、要测试的响应字段:(1)一般的http响应,都勾选“响应文本”;(2)url样本是对sample的url进行断言,如果请求没有重定向,就请求url,如果有重定向,就请求url和重定向url;(3)响转载 2021-07-06 10:42:09 · 790 阅读 · 0 评论 -
业务系统算法性能测试(算法压测)
怎样进行业务系统中算法或规则引擎压测原创 2021-06-01 20:30:00 · 1262 阅读 · 1 评论 -
Java VisualVm中VisualGC插件显示不支持的问题
Java VisualVm中VisualGC插件显示不支持的问题原创 2021-05-31 20:59:23 · 735 阅读 · 1 评论 -
Parsing heap dump from ‘xx.hprof‘ Java heap space
An internal error occurred during: "Parsing heap dump from 'D:\heapdump-1622186022199.hprof'".Java heap space原创 2021-05-28 16:35:50 · 1705 阅读 · 0 评论 -
JVM参数设置-jdk7、jdk8+参数设置
转载于https://www.cnblogs.com/halberts/p/11918326.htmlJVM参数设置1.基本参数参数名称 含义 默认值 -Xms 初始堆大小 内存的1/64 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 内存的1/4 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM...转载 2021-05-26 15:31:26 · 1080 阅读 · 0 评论 -
jmeter5.4.1插件管理器下载安装-Jmeter-plugins-manager
jmeter提供了基本的一些功能,但有时基本功能不满足测试需求,需要借助jmeter扩展插件来实现测试验证。1、首先下载Jmeter-plugins-manager插件,并存放到jmeter的 lib/ext 目录下。2、重新打开jmeter后,依次选择options - PluginsManager3、进入Available Plugins tab页,在插件列表中选择待使用的插件,然后点击右下角 Apply Changes and Restart JMeter按钮。....原创 2021-05-21 15:32:25 · 8295 阅读 · 3 评论 -
jmeter+jenkins 配置过程(转载)
jmeter+jenkins 配置过程转载于https://zhuanlan.zhihu.com/p/91559212一、安装jmeter第一步 安装JDK,配置JDK路径。注:jdk下载地址,推荐使用jdk1.8版本http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html环境变量配置如下:注:jdk安装在哪个盘就写哪个路径注:在path路径...转载 2021-05-20 16:56:09 · 444 阅读 · 0 评论 -
Solr的原理及使用(转载)
转载https://www.cnblogs.com/ericz2j/p/11118454.html1.Solr的简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。2.工作原理solr是基于Lucence开发的企业级搜索引擎技术,而lucence的原理是倒排索引。那么什么是倒排索引呢?接下来我...转载 2021-05-20 16:01:18 · 231 阅读 · 0 评论 -
java实现linux下命令交互操作-java调用docker(配置向导)
java实现linux下某应用程序配置向导的交互待写原创 2021-05-13 11:11:54 · 3138 阅读 · 6 评论 -
让idea自动生成类关系图
学习了解一些开源的工具源码,有时需要了解到程序入口及项目类之间的关系。Idea工具提供了这个功能。以meter5.1.1源码为例,看下RemoteJMeterEngineImpl类的关系图。操作方法:1、定位到RemoteJMeterEngineImpl类(通过快捷键 ctrl+shift+F 全局搜索)。2、选中RemoteJMeterEngineImpl类,快捷键ctrl+h------->点击左键--------->Diagrams,共两种选择,任选一种就可以看到类的关原创 2021-04-23 11:59:10 · 5023 阅读 · 0 评论 -
RunTime.getRuntime().exec()运行脚本命令介绍和阻塞(转载)
转载于:https://www.cnblogs.com/tohxyblog/p/6501396.htmljava在企业级项目开发中,无论是强制性的功能需要,还是为了简便java的实现,需要调用服务器命令脚本来执行。在java中,RunTime.getRuntime().exec()就实现了这个功能。用法: public Process exec(String command)-----在单独的进程中执行指定的字符串命令。 ...转载 2021-04-14 10:34:20 · 850 阅读 · 0 评论 -
String、StringBuffer、StringBuilder之间区别
转载于:https://blog.csdn.net/mad1989/article/details/26389541String、StringBuffer、StringBuilder区别StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuild转载 2021-04-12 20:29:04 · 52 阅读 · 0 评论 -
Java常用时间日期格式转换
转载于https://www.cnblogs.com/sharpest/p/7879377.htmlJAVA中常用的时间日期格式转换package com.qax.www.finaltest;import java.text.*;import java.util.Calendar;public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */ .转载 2021-04-08 14:15:43 · 399 阅读 · 0 评论 -
Java Runtime.exec()方法的使用(很实用)
转载于:https://www.cnblogs.com/mingforyou/p/3551199.htmlSun的doc里其实说明还有其他的用法:exec(String[] cmdarray, String[] envp, File dir)Executes the specified command and arguments in a separate process with the specified environment and working directory.那个d转载 2021-04-07 21:54:18 · 10719 阅读 · 1 评论 -
java无解压读取zip文件内容
1. 解析zip文件读取文件流:package test;import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.util.zip.ZipEntry; import java.util.原创 2021-03-26 11:27:32 · 247 阅读 · 0 评论 -
jmeter二次开发-java实现HashTree中字段值参数化
近期由于公司需求,需要开发一套性能测试平台,便于公司产品接口能够快速压测(面对使用人群:性能测试、QA、开发)。通过多次调研讨论,决定基于jmeter进行开发。 下面代码主要实现:怎样把某场景下所有业务接口转换为jmeter可识别的HashTree。HashTree中包含了TestPlan、...原创 2021-02-04 18:04:49 · 1321 阅读 · 0 评论 -
IDEA源码编译Jmeter 5.2.1
目录JMeter 5.2.1 源码编译,本地环境搭建 参考资料 所需环境 下载最新的源码 编译JMeter 在IDEA 中debug 源码 JMETER 5.2.1 源码编译,本地环境搭建JMeter5.2开始,使用gradle代替了原来ant,所以基于源码的本地环境搭建略有不同。5.2以前的源码编译参考参考资料JMeter源码官方下载地址 JMeter编译官方说明 5.2以前的源码编译参考所需环境JDK 8 + JMeter 源码 Inte.转载 2021-02-04 11:28:13 · 355 阅读 · 0 评论 -
java实现基于AmazonS3文件上传、下载、删除操作
1、创建工具类AwsS3Utilsimport com.amazonaws.AmazonServiceException;import com.amazonaws.SdkClientException;import com.amazonaws.auth.AWSStaticCredentialsProvider;import com.amazonaws.auth.BasicAWSCredentials;import com.amazonaws.client.builder.AwsClie...原创 2020-12-28 21:19:43 · 8358 阅读 · 9 评论 -
Jmeter中HashTree转jmx及jmx转HashTree实现示例
1、创建jmeter工具类StressTestUtils/** * 压力测试工具类 * @author by xxxx * @date 2020/6/30. */@Componentpublic class StressTestUtils { //获取操作系统信息 public final static String OS_NAME_LC = System.getProperty("os.name"). toLowerCase(java.uti...原创 2020-12-28 21:49:33 · 1082 阅读 · 1 评论 -
千万级以上测试数据参数化-性能测试具体实现方式(jmeter、redis)
笔者之前做过一个特别有印象的项目,测试数据量级为3000+万,因测试需求,需要测试工具或测试脚本把这些数据参数化来使用。常见的做法有以下几种:1)把测试数据提取出来放到指定文件中(txt/csv),对于参数话数据量少的场景,没问题。但测试数据一旦超过百万级,文件大小就可能几十M起步了,这样测试工具或脚本读取文件耗时较长,影响发压;下图mids文件中100万条数据,大小32.4M。2)把测试数据导入到数据库中,让测试工具或脚本去数据库中取值;3)把测试数据导入到redis中,red原创 2021-01-27 19:29:26 · 1156 阅读 · 4 评论 -
java代码实现批量数据插入redis(埋数)
由于测试需要,把文件内容批量插入到redis指定key中。mids.txt文件局部信息如下:32350194015fbe81082630400008368312350194015fbe81082630400001192122350194015fbe81082630400004927212350194015fbe810826304000011997......................以下为具体java实现代码:import redis.clients.jedis.Jedi原创 2021-01-27 14:18:01 · 4098 阅读 · 3 评论 -
性能问题诊断-接口方法多次重复调用
问题描述:某系统单交易多并发运单下发时,耗时为1340ms。问题分析:发现OMS对com.jd.eclp.master.dept.service.DeptService:getDept方法重复调用了4次(同一deptid),累计耗时:129ms。 注:系统方法调用监控使用的是pinpoint。优化方案:减少OMS系统对getDept方法的调用次数,可优化为调用一次即可。...原创 2020-10-20 23:41:52 · 1055 阅读 · 0 评论 -
java实现HTTP请求的三种方式
转载于https://www.cnblogs.com/hhhshct/p/8523697.html目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现。HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工作中使用httpClient3.1的代码还是很多,HttpClient.转载 2021-01-22 15:14:54 · 83 阅读 · 1 评论 -
JSON对象中获取指定key的值
平时处理Json对象时,想获取JSON对象中获取指定key的值,如下图,想直接取到"result"、"status"的值。{"code":0,"message":"ok","body":{"result":"success","status":"1"}}下面以get类型http请求示例详细说明:import com.alibaba.fastjson.JSONObject;import...原创 2021-01-22 14:56:14 · 14636 阅读 · 2 评论