来卷一卷Java中的一枚性能测试工具!

prometheus监控springboot2.X项目各种默认指标,自定义接口性能错误及其它业务指标埋点实践及总结 1/实现方案:通过Micrometer+actuator暴露拉取metric的端点给Prometheus,通过grafana导入相关优秀模板进行jvm展示,业务方便在dashboard追加自定义panel展示,其中接口指标通过aop环绕通知上报指标,还有种方案通过nginx-vts-exporter实现。 2/依赖 <dependency> &... 阅读详情

MH屏蔽了一些环境的差异,可以让狗子们快速的获取吞吐量、平均响应时间等关键性指标。但是,性能的评测标准并不仅仅是单个维度。
比起那些了不起的性能,服务响应的稳定性,可能是另外一个比较重要的话题。

百分位

有时候,我们某些重要的服务,对每个请求的延迟忍受度都很低。如果我们用比较专业的词来描述的话,那就是:我们无法忍受任何长尾请求,即使平均响应时间非常的短。
这就需要一种指标来测量这种情况。为了解决这个问题,一个比较常用的指标,就是百分位数(Percentile)。
如果非要找出一种形状的话,那它就是请求分布的直方图。
百分位可以这么理解。如果我们圈定一个时间范围,把每次请求的耗时加入到一个列表中,然后,按照从小到大的顺序将这些时间进行排序。这样,我们取出某个位置请求的耗时,这个数字 就是TP值。可以看到,TP值(Top Percentile)和中位数、平均数等是类似的,都是一个统计学里的术语。
它的意义是,超过N%的请求,都在X时间内返回。比如TP90=50ms,意思就是超过90th的请求,都在50ms内返回。
这个指标能够反映出应用接口的整体响应情况。比如,某段时间发生了长时间的GC,就会影响高百分位的请求耗时增加。
我们一般分为Tp50、TP90、TP95、TP99、TP99.9等多个段,对高百分位的值要求越高,对系统响应能力的稳定性要求越高。
对于普通的百分位分布,像Dropwizard、MicroMeter、OpenTelemetry等组件,也会累积一些直方图到监控指标里,如果你使用SpringBoot等组件,你会发现这些值存在于le中。

http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.001",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.001048576",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.001398101",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.001747626",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.002097151",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.002446676",} 0.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="0.002796201",} 0.0

// 54 other lines here

http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="12.884901886",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="14.316557651",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="15.748213416",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="17.179869184",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="22.906492245",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="28.633115306",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="30.0",} 3.0
http_server_requests_seconds_bucket{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/foo",le="+Inf",} 3.0

这些值都是估计值,采用了插值统计的方式,精度其实是受损的。如果我们的服务有更高的要求,要求抖动尽可能的少,那么我们就需要更其他的工具支持。

HdrHistogram

HdrHistogram,可以用较少的资源,来计算平均值、中位数等,且拥有较高的精度。认识HdrHistogram,是从Hytrix依赖中发现的,Hytrix用它来统计latency。
要使用它,我们只需要在pom中引入maven坐标即可。

<dependency>
    <groupId>org.hdrHistogram</groupId>
    <artifactId>HdrHistogram</artifactId>
    <version>2.1.12</version>
</dependency>

使用的时候,我们只需要传入所需要的精度就可以了。

Histogram HISTOGRAM
            = new Histogram(TimeUnit.MINUTES.toNanos(1), 3);

比如,上面这行代码,就定义了一个纳秒维度的精度。也就是说,1分钟之内的请求,都可以使用纳秒来描述请求的耗时。
它有两个参数。第一个参数是线性的区间分割方式(本质上就是数组);第二个参数是指数的线性分割方式。第一种精确,第二种占用内存少。上面的设置,如果我们有超过1分钟的请求耗时,这个桶是放不下这种数据的。
然后,在需要记录时间的地方调用如下方法。

histogram.recordValue(time);

结果分析

最后,我们使用output方法输出测试结果即可。

HISTOGRAM.outputPercentileDistribution(System.out, 1000.0);

一个测试样例结果如下:

       Value     Percentile TotalCount 1/(1-Percentile)

       0.000 0.000000000000        238           1.00
       0.041 0.100000000000     208090           1.11
       0.042 0.200000000000     620768           1.25
       0.042 0.300000000000     620768           1.43
       0.083 0.400000000000     820209           1.67
       0.166 0.500000000000    1003029           2.00
       1.541 0.550000000000    1117185           2.22
       1.625 0.600000000000    1223882           2.50
       1.667 0.650000000000    1325848           2.86
       1.708 0.700000000000    1426775           3.33
       1.750 0.750000000000    1566704           4.00
       1.750 0.775000000000    1566704           4.44
       1.792 0.800000000000    1658827           5.00
       1.792 0.825000000000    1658827           5.71
       1.875 0.850000000000    1717764           6.67
       2.000 0.875000000000    1753302           8.00
       2.251 0.887500000000    1778274           8.89
       2.543 0.900000000000    1800741          10.00
       3.043 0.912500000000    1825223          11.43
       3.333 0.925000000000    1853576          13.33
       3.459 0.937500000000    1883704          16.00
       3.501 0.943750000000    1902088          17.78
       3.501 0.950000000000    1902088          20.00
       3.543 0.956250000000    1914577          22.86
       3.625 0.962500000000    1932711          26.67
       3.667 0.968750000000    1939228          32.00
       3.709 0.971875000000    1944415          35.56
       3.793 0.975000000000    1951960          40.00
       3.875 0.978125000000    1956422          45.71
       4.127 0.981250000000    1962509          53.33
       4.459 0.984375000000    1969250          64.00
       4.543 0.985937500000    1974203          71.11
       4.583 0.987500000000    1976011          80.00
       4.627 0.989062500000    1979231          91.43
       4.711 0.990625000000    1982267         106.67
       4.835 0.992187500000    1984844         128.00
       4.919 0.992968750000    1985983         142.22
       5.083 0.993750000000    1987744         160.00
       5.251 0.994531250000    1989220         182.86
       5.543 0.995312500000    1990682         213.33
       5.919 0.996093750000    1992236         256.00
       6.167 0.996484375000    1993013         284.44
       6.543 0.996875000000    1993764         320.00
       7.043 0.997265625000    1994539         365.71
       7.667 0.997656250000    1995330         426.67
       8.375 0.998046875000    1996133         512.00
       8.959 0.998242187500    1996507         568.89
       9.839 0.998437500000    1996884         640.00
      10.879 0.998632812500    1997275         731.43
      12.127 0.998828125000    1997660         853.33
      13.879 0.999023437500    1998050        1024.00
      14.879 0.999121093750    1998248        1137.78
      16.295 0.999218750000    1998441        1280.00
      18.175 0.999316406250    1998634        1462.86
      20.223 0.999414062500    1998833        1706.67
      23.503 0.999511718750    1999026        2048.00
      26.511 0.999560546875    1999124        2275.56
      29.583 0.999609375000    1999219        2560.00
      33.183 0.999658203125    1999317        2925.71
      37.343 0.999707031250    1999416        3413.33
      43.071 0.999755859375    1999512        4096.00
      47.103 0.999780273438    1999561        4551.11
      53.183 0.999804687500    1999610        5120.00
      61.471 0.999829101563    1999659        5851.43
      77.823 0.999853515625    1999708        6826.67
      97.087 0.999877929688    1999756        8192.00
     117.759 0.999890136719    1999781        9102.22
     143.231 0.999902343750    1999805       10240.00
     171.519 0.999914550781    1999830       11702.86
     224.255 0.999926757813    1999854       13653.33
     289.279 0.999938964844    1999878       16384.00
     325.375 0.999945068359    1999891       18204.44
     375.295 0.999951171875    1999903       20480.00
     422.143 0.999957275391    1999915       23405.71
     499.711 0.999963378906    1999927       27306.67
     581.119 0.999969482422    1999939       32768.00
     685.567 0.999972534180    1999946       36408.89
     769.023 0.999975585938    1999952       40960.00
     844.799 0.999978637695    1999958       46811.43
    1065.983 0.999981689453    1999964       54613.33
    1352.703 0.999984741211    1999970       65536.00
    1603.583 0.999986267090    1999973       72817.78
    2529.279 0.999987792969    1999976       81920.00
    2879.487 0.999989318848    1999979       93622.86
    3221.503 0.999990844727    1999982      109226.67
    5070.847 0.999992370605    1999985      131072.00
    6287.359 0.999993133545    1999987      145635.56
    6922.239 0.999993896484    1999988      163840.00
    8085.503 0.999994659424    1999990      187245.71
   10199.039 0.999995422363    1999991      218453.33
   10600.447 0.999996185303    1999993      262144.00
   30572.543 0.999996566772    1999994      291271.11
   30572.543 0.999996948242    1999994      327680.00
   31621.119 0.999997329712    1999995      374491.43
   32817.151 0.999997711182    1999996      436906.67
   32866.303 0.999998092651    1999997      524288.00
   32866.303 0.999998283386    1999997      582542.22
   32866.303 0.999998474121    1999997      655360.00
   74186.751 0.999998664856    1999998      748982.86
   74186.751 0.999998855591    1999998      873813.33
   74842.111 0.999999046326    1999999     1048576.00
   74842.111 0.999999141693    1999999     1165084.44
   74842.111 0.999999237061    1999999     1310720.00
   74842.111 0.999999332428    1999999     1497965.71
   74842.111 0.999999427795    1999999     1747626.67
   86114.303 0.999999523163    2000000     2097152.00
   86114.303 1.000000000000    2000000
#[Mean    =        1.357, StdDeviation   =      108.037]
#[Max     =    86114.303, Total count    =      2000000]
#[Buckets =           24, SubBuckets     =         2048]

Percentile就是百分位。一般的业务关注TP95,要求较高的业务关注TP99,甚至TP99.99,上面的测试结果也提供了这种细分。当然,精度是在我们的构造参数里就提供了的,这些数据非常可信。
结果的下面是一些统计信息。比如,我的这段关键代码,调用了2000000次,每个调用都在1.3ns左右,但最大的也有86114.303ns。
至于最后的Buckets和SubBuckets,就涉及到HdrHistogram的一些内部原理,也就是内部的一些参数,我们倒可以不用关注它。

End

HdrHistogram是为了追求性能和稳定性的代码而生的,它才是真正的平均主义--希望所有的请求尽量的平均,没有长尾请求。
比如证券交易系统,你肯定不想自己的那笔单子正好碰上千万分之一的那种延迟。
一般这样的服务,对GC也有较高的要求,容不得半点延迟。像CMS这种动不动就Full GC的垃圾回收器,自然是不适合使用的。
评判服务的响应能力,除了一些耳熟能详的统计工具,必要的时候,我们还可以祭出更强大的工具,来助力达成这个目标。
HdrHistogram显然就是这种存在,你一定不想错过它。

Java HdrHistogram依赖 直方图统计算法 Java HdrHistogram依赖 直方图统计算法 介绍 HdrHistogram 可以用较少的资源计算平均值、中位数等各类统计值 源码地址,包含多种语言 https://github.com/HdrHistogram Java使用方法 依赖 <dependency> <groupId>org.hdrhistogram</groupId> <artifactId>HdrHistogram& 阅读详情

相关推荐

HdrHistogram:高动态范围(HDR)直方图

直方图 HdrHistogram:高动态范围(HDR)直方图 该存储库当前包含HdrHistogram的Java实现。 可以在其他存储库中找到C,C#/。NET,Python,Javascript,Rust,Erlang和Go端口。 所有这些都具有共同的概念和数据表示功能。 查看下的存储库,以获取各种实现和有用的工具。 注意:以下是直方图JavaDoc的摘录。 尽管许多内容通常也适用于其他语言实现,但是某些细节可能会因实现而有所不同(例如,迭代和同步),因此,您应查阅打算使用的特定API库的文档或标头信息。 HdrHistogram支持记录和分析可配置整数值范围内的采样数据值计数,并且该范围内的可配置值精度。 值精度表示为值记录中的有效位数,并提供对整个值范围内的值量化行为的控制,以及对任何给定级别的后续值分辨率的控制。 例如,直方图可以配置为跟踪在0到3,600,000,000之

使用grafana+Prometheus监控时PromQL内置函数详解

22)、label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...) 函数可以将时间序列 v 中多个标签 src_label 的值,通过 separator 作为连接符写入到一个新的标签 dst_label 中。14)、exp(v instant-vector) 函数,输入一个瞬时向量,返回各个样本值的 e 的指数值,即 e 的 N 次方。

8597

HdrHistogram-2.1.9-API文档-中文版.zip

赠送jar包:HdrHistogram-2.1.9.jar; 赠送原API文档:HdrHistogram-2.1.9-javadoc.jar; 赠送源代码:HdrHistogram-2.1.9-sources.jar; 赠送Maven依赖信息文件:HdrHistogram-2.1.9.pom; 包含翻译后的API文档:HdrHistogram-2.1.9-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.hdrhistogram:HdrHistogram:2.1.9; 标签:hdrhistogram、HdrHistogram、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Spring Cloud Gateway中Spring Boot Actuator采集到的uri为UNKNOWN

在将spring cloud gateway接入Prometheus之后发现收集到的指标中有很多 uri=“UNKNOWN”,如下: # HELP http_server_requests_seconds # TYPE http_server_requests_seconds histogram http_server_requests_seconds{exception="None",met...

青耕 5383

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大致流程。 2. 卡尔曼滤波(Kalman filter) 目标跟踪中使用的就是最基础的 Kalman filter 算法。这里也仅仅讨论最基础的 Kalman filter 算法。 卡尔曼滤波算法的过程很简单,如下图所示。最核心的两个步骤就是预测和更新(下图的 correct)。 在目标跟踪任务中,目标的

生命在于折腾! 2万+

西安电子科技大学841学长经验分享(总成绩第三名)

西安电子科技大学841学长经验分享(总成绩第三名)

qq_30953547的博客 1082

Prometheus

1、数据类型 Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。 时间序列是按照时间戳和值的序列顺序存放的,我们称之为向量(vector)。 时间序列中的每一个点称为一个样本(sample),样本由以下三部分组成: 指标(metric):指标名和描述当前样本特征的标签集; 时间戳(timestamp):一个精确到毫秒的时间戳; 样本值(value): 一个float64的浮点型数据表示当前样本的值。 瞬时数据(Instant ve

lcz92416的博客 4315

手撕代码系列:Conv2D

在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。

qq_55794606的博客 910

spring-prometheus的指标含义

前言 spring-boot作为一个长时间运行的服务,需要也应该能采集到一些指标来反映系统自身的运行状态。下面就spring-boot输出的一些指标分类说明。 依赖 spring-boot开启指标采集需要加入prometheus依赖。 指标处理 name type data http_server_requests_seconds summary http_server_requests_seconds_count{exception=“None”,method=“GET”,outcome=

ssehs的博客 1万+

基于STM32F407的立创球形六足双形态机器人:从Morphex复刻到毕业设计的完整开发指南

本文详细介绍了基于STM32F407主控芯片,从零开始复刻Morphex球形六足双形态机器人的完整开发过程。内容涵盖硬件选型(如总线舵机)、机械结构设计(阿基米德螺旋底盘)、软件控制(逆运动学与步态算法)以及多控制方式集成,为嵌入式系统与机器人开发的毕业设计或爱好者提供了全面的实战指南。

weixin_35414260的博客 322

【雕爷学编程】Arduino动手做(111)---震动提醒模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

雕爷学编程 1898

Prometheus监控平台中PromQL内置函数详解

PromQL就如同SQL中有一些内置函数,PromQL中也存在一些函数,我们可以在进行PromQL表达式进行使用,完成一些数据的处理,进而在Grafana等显示页面展示动态数据,下面我们分模块具体分析。 一、聚合函数 1、sum(求和) 2、min(最小值) 3、max(最大值) 4、avg(平均值) 5、stddev(标准差) 6、stdvar(标准差异) 7、count(样本数量计数) 8、count_values(对 value 进行计数) 9、bottomk(样...

nandao158的博客 5947

6、硬件工程师笔试面试知识器件篇——电容(2025版本)

本文系统介绍了电容器的基本原理、类型分类、应用场景及相关设计问题。首先阐述了电容的定义、工作原理及计算公式,详细分析了陶瓷、电解、薄膜、钽等不同类型电容的特性差异。针对高频电路设计,重点讨论了如何评估和优化电容器的寄生效应(ESR/ESL)、频率特性、温度特性等关键参数。文章还提供了PCB布局优化策略,包括缩短走线、多层板设计、去耦网络配置等方法。最后涵盖了电容器寿命计算、稳定性评估及电源电路设计中的纹波电流处理等实用内容,为硬件工程师提供了全面的电容器选型和应用指南。

XU157303764的博客 3872

Springboot 添加Grafana监控

Introduction to Micrometer with Springboot 引用:http://www.bytesville.com/springboot-micrometer-prometheus-grafana/ Springboot and Springcloud has made it easier to develop Microservices in the past cou...

不懂的博客 1万+

安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案

本文主要介绍了安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案,希望能对学习使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

MyBatis-Plus 实战:敏感字段自动加解密支持模糊查询

本文基于MyBatis-Plus框架提出了一种全链路敏感字段加密方案。通过自定义TypeHandler实现数据入库自动加密和查询自动解密,结合重写LambdaQueryWrapper处理查询条件加密,并适配多种查询方式。方案核心包括:1)AESUtil工具类提供加解密基础能力;2)EncryptTypeHandler实现字段类型转换;3)实体类通过注解配置加密字段。该方案在保证数据安全的同时,对业务代码侵入性小,支持姓名、手机号等敏感信息的全流程加密处理,满足系统开发的安全需求。

蔡定努 596

总结:Prometheus匹配模式

Prometheus匹配模式记录

w2009211777的专栏 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Metrics 监控方案的思考和实操(面向微服务组件)

背景介绍1. 现状众所周知,业界各种大中型软件系统在生产运行时,总会有一些手段来进行保驾护航。如上图所示,Metric 机制作为一个非常重要的监控手段,与日志系统,告警系统,APM 等,共同守护业务系统运行安全。没有“运行时监控机制”的软件系统都是不合格的系统,是根本没有资格上到生产环境上去的,因为掌握不了软件系统的运行状况,就像一个瞎子开着汽车上路了,是极其危险的。Metric 机制承担着收集软...

qianshanding0708的博客 5721

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Prometheus性能调优-什么是高基数问题以及如何解决?

基数的基本定义是指一个给定集合中的元素的数量。在Prometheus和可观察性的世界里,标签基数是非常重要的,因为它影响到你的监控系统的性能和资源使用。下面这张图, 可以清晰地反应基数的重要性:简单地说。基数 是指一个标签的总体数值的计数。在上面的例子中,标签1xx2xx3xx4xx5xx),的基数是2(即proddev),而指标的总体基数是10。

east4ming的博客 1529

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

聊聊springboot的http.server.requests

本文主要研究一下springboot的http.server.requests。

go4it 922

Seedance微服务间RPC超时频发,用Arthas+Prometheus实现毫秒级根因锁定

Seedance微服务RPC超时频发?本文分享实用Seedance性能调优技巧,基于Arthas动态诊断+Prometheus毫秒级指标联动,精准定位超时根因。适用于高并发生产环境,实现分钟级问题收敛。值得收藏。

LearnPlex的博客 454

JMETER性能测试

1.关联手机或者模拟器,设置手动代理,处于同一网络下执行 2.通过接口文档或者charles进行抓包获取接口以及接口参数 3.通过jmeter进行压力测试:1添加线程组,添加http请求,添加响应断言,添加聚合报告 4.添加http请求 5.添加响应断言: 6.查看聚合报告: 聚合报告参数详解: 1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 2. Samples:请求数——表示这次测试中..

weixin_44394937的博客 488

Prometheus监控指标查询性能调优

01 背景在《SRE: Google运维解密》一书中作者指出,监控系统需要能够有效的支持白盒监控和黑盒监控。黑盒监控只在某个问题目前正在发生,并且造成了某个现象时才会发出紧急警报。“白盒监控则大量依赖对系统内部信息的检测,如系统日志、抓取提供指标信息的 HTTP 节点等。白盒监控系统因此可以检测到即将发生的问题及那些重试所掩盖的问题等”。为了完善系统的白盒监控,会员团队基于 Prometheu...

爱奇艺技术产品团队 1604

2021-04-30

Zipkin服务端开启后 运行 http://localhost:9090/zipkin 2021-04-30 14:21:24.529 ERROR 3268 — [ XNIO-2 task-5] i.u.request : UT005023: Exception handling request to /error java.lang.IllegalArgumentException: Prometheus requires that all m

qq_38143144的博客 457

HdrHistogram: 分析系统性能的强大工具

> 是一个用于记录和分析高精度分布数据的库。 ## 什么是 HdrHistogram? HdrHistogram 是一个基于 Java 的开源库,可以用来记录和分析大量数值数据的分布情况。它支持记录非负整数或者浮点数,并且可以在不丢失精度的情况下压缩存储这些数据。这个库的设计目标是为系统性能分析提供一种强大而灵活的工具。 ## 如何使用 HdrHistogram? 使用 HdrHisto...

gitblog_00020的博客 933
上一篇: 老板挖来了前阿里月薪65k的大牛,分享了这份SQL调优shouce,太牛了
下一篇: Sentinel源码-NodeSelectorSlot和ClusterBuilderSlot
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值