一.JMH是什么 JMH是一个Java工具,用于构建.运行和分析用Java和其他语言编写的以JVM为目标的 nano/micro/milli/macro 基准测试. 二.基本注意事项 1)运行JMH基准测试的推荐方法是使用Maven设置一个独立的项目,该项目依赖于应用程序的jar文件.这种方法是首选的,以确保基准被正确初始化并产生可靠的结果. 2)我们也可以在现有项目中运行基准测试,甚至可以在IDE中运行基准测试,但是设置更加复杂,结果也不那么可靠.3)在所有情况下,使用JMH的关键是使注释或字…
一.JMH中的基本概念 1)Mode Mode 表示 JMH 进行 Benchmark 时所使用的模式.通常是测量的维度不同,或是测量的方式不同.目前 JMH 共有四种模式: 1.Throughput: 整体吞吐量,例如“1秒内可以执行多少次调用”. 2.AverageTime: 调用的平均时间,例如“每次调用平均耗时xxx毫秒”. 3.SampleTime: 随机取样,最后输出取样结果的分布,例如“99%的调用在xxx毫秒以内,99.99%的调用在xxx毫秒以内” 4.SingleShotTi…
一.IntelliJ IDEA JMH Plugin 这是一个插件,允许您以与JUnit相同的方式使用JMH.以下是已经实现的功能: 1.@Benchmark method generation(自动生成带有@Benchmark的方法) 2.Running a separate @Benchmark method(像junit一样,运行单独的Benchmark方法) 3.Running all the benchmarks in a class(运行类中所有的Benchmark方法) 在Inte…
本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍,总结下来比较推荐,Visualvm,Perfino,yourkit和Jprofiler(推荐值按顺序依次递减),其它工具不太推荐使用.下面是文章目录结构:  一.VisualVm  1.简介 2 2.安装插件并启动VisualVM 2 3.内存分析 3 4.CPU分析 5 5.线程分析 6 6.连接…
Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍,总结下来比较推荐,Visualvm,Perfino,yourkit和Jprofiler(推荐值按顺序依次递减),其它工具不太推荐使用.下面是文章目录结构…
JMH 简单入门 什么是 JMH JMH 是 Java Microbenchmark Harness 的缩写.中文意思大致是 "JAVA 微基准测试套件".首先先明白什么是"基准测试".百度百科给的定义如下: 基准测试是指通过设计科学的测试方法.测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试. 可以简单的类比成我们电脑常用的鲁大师,或者手机常用的跑分软件安兔兔之类的性能检测软件.都是按一定的基准或者在特定条件下去测试某一对象的的性能,比…
Spring boot学习1 构建微服务:Spring boot 入门篇 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适). 使用spring boot好处…
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + mybatis.本篇博客主要介绍mybatis的使用方法,配置起来相对简单!mybatis是一种持久化技术,它内部封装JDBC,将SQL语句外部化,换句话说,就是讲SQL语句提前定义在文件中.官网文档也是相当的友好:http://www.mybatis.org/mybatis-3/zh/getting…
TestNG是什么? TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母). TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展.它的灵感来源于JUnit.它的目的是优于JUnit,尤其是在用于测试集成多类时. TestNG的创始人是Cedric Beust(塞德里克·博伊…
Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:SpringMvc是spring的一个模块 基于MVC的一个框架 无需中间整合层来整合.MVC表示的全称为:Model(模型),view(视图),controller(控制器). 2>.Spring MVC关键组件说明 1>.前端控制器 DispatcherServlet(不需要程序员开发) 作用 : 接收…
Java基础-SSM之Spring快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin…
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心读完文章的话,你将获得和了解: Ruby 语言的基本语法和使用方式 Java 语言的基本语法和使用方式 从老司机的角度分析和讲解 Ruby 和 Java 语言语法的特点和区别 它们的各自适合并且擅长的应用场景 网上单独介绍 Ruby ,Java 的文章应该很多,但是对比两种编程语言的基本语法使用的文…
一.工具下载 yum -y install httpd-tools 二.AB工具使用 格式: ab [options] [http://]hostname[:port]/path 例如:ab -n -c https://www.baidu.com/ 参数: //在测试会话中所执行的请求个数.默认时,仅执行一个请求 -n requests Number of requests to perform //一次产生的请求个数.默认是一次一个. -c concurrency Number of mult…
一.测试Get请求 1.每次并发请求10个,总共1000个请求 ab -n -c https://www.baidu.com/ 2.指定Header参数 通过-H来指定 ab -n -c -H 'Accept-Encoding: gzip' -H 'storeId: 12' https://www.baidu.com/?a=1&b=2 二.测试Post请求 ab -n -c -p "post.txt" -T "application/json" -H &qu…
Java BlockingQueue接口java.util.concurrent.BlockingQueue表示一个可以存取元素,并且线程安全的队列.换句话说,当多线程同时从 JavaBlockingQueue中插入元素.获取元素的时候,不会导致任何并发问题(元素被插入多次.处理多次等问题). 从java BlockingQueue可以引申出一个概念:阻塞队列,是指队列本身可以阻塞线程向队列里面插入元素,或者阻塞线程从队列里面获取元素.比如:当一个线程尝试去从一个空队列里面获取元素的时候,这个线…
1,项目创建    新建maven项目,如下图: 选择路径,下一步 输入1和2的内容,点完成 项目创建完毕,结构如下图所示: 填写pom.xml里内容,为了用于打包,3必须选择jar,4和5按图上填写 2,项目配置2-1,application.propertiesserver.address=localhostserver.context-path=/server.port=8090 #------ isosurface ---------spring.datasource.url=jdbc:…
类ArrayBlockingQueue是BlockingQueue接口的实现类,它是有界的阻塞队列,内部使用数组存储队列元素.这里的"有界"是指存储容量存在上限,不能无限存储元素.在同一时间内存储容量存在着一个上限值,这个上限制在初始实例化的时候指定,之后便不能修改了. ArrayBlockingQueue内部采用FIFO (First In, First Out)先进先出的方法实现队列数据的存取,队首的元素是在队列中保存时间最长的元素对象,队尾的元素是在队列中保存时间最短的元素对象.…
前言: PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码. PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则. 安装及使用: 1.在Eclipse中 安装 PMD插件运行方式 ECLIPSE菜单 > HELP > Install New Software > 弹出窗口中在 work with中输入 PMD - http://sourceforge.net/projects/pmd/files/pm…
什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架. 使用 Spring Boot有什么好处 其实就是简单.快速.方便!平时如果我…
1. ab简介 ab全称Apache Bench,是apache附带的一个小工具,它可以同时模拟多个并发请求,测试apache等Web服务器的最大负载压力. 本文通过一个简单的示例,介绍了使用ab进行web页面性能测试.查看结果方法及运行参数详解. 运行环境为Windows 10系统. 2. ab下载 Apache官网:http://httpd.apache.org/download.cgi 2.1 Windows系统 对于windows系统,可访问页面https://www.apachelou…
一.单元测试的目的?      单元测试是编写测试代码,用以检测特定的.明确的.细颗粒的功能!  严格来说,单元测试只针对功能点进行测试,不包括对业务流程正确性的测试.现在一般公司都会进行业务流程的测试,这也要求测试人员需要了解需求! 测试人员也不好过啊~~ 目前开发所用的单元是Junit框架,在大多数java的开发环境中已经集成,可以方便开发自己调用! 注意:单元测试不仅仅是要保证代码的正确性,一份好的单元测试报告,还要完整地记录问题的所在和缺陷以及正确的状态,方便后面代码的修复,重构和改进!…
这一章,我们学习线程的创建.线程的启动.线程的名字设置.线程的休眠.线程的加入.守护线程. 一个线程是一个单独的类的对象. 想让一个普通的类变成多线程,那么这个类需要继承Thread. 创建多线程的步骤: 1.创建一个类 2.使这个类继承自Thread 3.在类中重写run方法 4.在主线程main中调用这个类的start()方法 注意:我们调用这个多线程的类是使用start()方法,而不是run()方法. 这个是我们多线程类: public class MyThread extends Thr…
英文原文:Micro Benchmarking with JMH: Measure, don't guess!翻译地址:使用JMH进行微基准测试:不要猜,要测试!原文作者:Antonio翻译作者:Hollis转载请注明出处. 很多Java开发人员都知道把一个变量声明为null有助于垃圾回收(译者注:一般而言,为null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC收集器判定垃圾,从而提高了GC的效率.),也有部分人知道使用final定义一个内联方法能够提高性能.但是,我…
前言 Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字节码文件中一些字节的作用,那么理解反编译的原理并不是什么问题. 甚至像下面这样的 Class 文件你都能看懂一二. 一般在逆向研究和代码分析中,反编译用到的比较多.不过在日常开发中,有时候只是简单的看一下所用依赖类的反编译,也是十分重要的. 恰好最近工作中也需要用到 Java 反编译,所以这篇文章介…
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工具,其中包括: jcmd:打印一个 Java 进程的类,线程以及虚拟机信息.适合用在脚本中.使用 jcmd - h 来查看使用方法. jconsole:提供 JVM 活动的图形化展示,包括线程使用,类使用以及垃圾回收(GC)信息. jhat:帮助分析内存堆存储. jmap:提供 JVM 内存使用信息…
Awesome Java 这是Github上关于Java相关的工具,框架等等资源集合. 原文参考: https://github.com/akullpp/awesome-java. @pdai 最全的Java后端知识体系 https://www.pdai.tech, 每天更新中.... Awesome Java Bean Mapping Build Bytecode Manipulation Caching CLI Cluster Management Code Analysis Code Co…
什么是JMH JMH 是 OpenJDK 团队开发的一款基准测试工具,一般用于代码的性能调优,精度甚至可以达到纳秒级别,适用于 java 以及其他基于 JVM 的语言.和 Apache JMeter 不同,JMH 测试的对象可以是任一方法,颗粒度更小,而不仅限于rest api. 使用时,我们只需要通过配置告诉 JMH 测试哪些方法以及如何测试,JMH 就可以为我们自动生成基准测试的代码. JMH生成基准测试代码的原理 我们只需要通过配置(主要是注解)告诉 JMH 测试哪些方法以及如何测试,JM…
TPCx-BB是大数据基准测试工具,它通过模拟零售商的30个应用场景,执行30个查询来衡量基于Hadoop的大数据系统的包括硬件和软件的性能.其中一些场景还用到了机器学习算法(聚类.线性回归等).为了更好地了解被测试的系统的性能,需要对TPCx-BB整个测试流程深入了解.本文详细分析了整个TPCx-BB测试工具的源码,希望能够对大家理解TPCx-BB有所帮助. 代码结构 主目录($BENCH_MARK_HOME)下有: bin conf data-generator engines tools…
平时写js经常遇到这样做是不是更快点?但又没有具体简单可测试的工具,最近也倒序看博客园司徒正美 js分类下的文章 [ps:去年灵光一闪,发现看博客园排名前100的博客.按照文章分类倒序看是学习最快的方式 O(∩_∩)O~] 看到这篇文章时 (转)Google Closure: 糟糕的JavaScript http://www.cnblogs.com/rubylouvre/archive/2009/12/07/1615593.html 文中有些 性能优化对比的举例,让我想起去年我寻找js性能基准测…
JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件.何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级.当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析. JMH比较典型的应用场景: 想准确的知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性: 对比接口不同实现在给定条件下的吞吐量: 查看多少百分比的请求在多长时间内完成: JMH的使用 mvn命令行…