您现在的位置是:主页 > news > 杭州做网站哪家公司好/怎么提升关键词的质量度

杭州做网站哪家公司好/怎么提升关键词的质量度

admin2025/5/2 14:28:27news

简介杭州做网站哪家公司好,怎么提升关键词的质量度,wordpress 网易相册,绍兴市政府门户网站Metrics是一个java库,能够为你提供无与伦比的代码运行洞察功能。它是由yammer开发的,用于检测jvm上后端服务的运行状况。Metrics提供了一个强大的工具集,用于度量你的生产环境上关键组件的行为。Metrics提供了一组通用的模块库用于支持比如Gu…

杭州做网站哪家公司好,怎么提升关键词的质量度,wordpress 网易相册,绍兴市政府门户网站Metrics是一个java库,能够为你提供无与伦比的代码运行洞察功能。它是由yammer开发的,用于检测jvm上后端服务的运行状况。Metrics提供了一个强大的工具集,用于度量你的生产环境上关键组件的行为。Metrics提供了一组通用的模块库用于支持比如Gu…
Metrics是一个java库,能够为你提供无与伦比的代码运行洞察功能。
它是由yammer开发的,用于检测jvm上后端服务的运行状况。Metrics提供了一个强大的工具集,用于度量你的生产环境上关键组件的行为。

Metrics提供了一组通用的模块库用于支持比如Guice,Jetty,Log4j,Apache HttpClient,EhCache,Logback,spring等,也提供对比如Ganglia和Graphite等后端的报告。


项目官网:http://metrics.dropwizard.io/


Metrics 主要有五大基本组件

1:Counter

  记录执行次数

2:Gauge

  获取某个值

3:Meter

  用来计算事件的速率

4:Histogram

  可以为数据流提供统计数据。 除了最大值,最小值,平均值外,它还可以测量 中值(median),百分比比如XX%这样的Quantile数据 

5:Timer

  用来测量一段代码被调用的速率和用时。等于Meter+Hitogram,既算TPS,也算执行时间。


下面是代码例子

首先加入依赖

<dependency>  <groupId>io.dropwizard.metrics</groupId>  <artifactId>metrics-core</artifactId>  <version>3.1.2</version>  
</dependency>  

com.codahale.metrics.MetricRegistry  是 Metrics的核心,这里先用一个常量保存

package com.lala.core;  import com.codahale.metrics.MetricRegistry;  public class MetricConstant   
{  public static MetricRegistry REGISTER = new MetricRegistry();  
}  
上面也是说到了 Metrics支持很多输出,jmx, log4j , jetty, httpclient等等。我这里就直接输出到控制台
package com.lala.core;  import java.util.concurrent.TimeUnit;  
import com.codahale.metrics.ConsoleReporter;  
/** * 控制台打印输出 */  
public class MyConsoleReport   
{  public static void startReport()  {  final ConsoleReporter reporter = ConsoleReporter.forRegistry(MetricConstant.REGISTER)  .convertRatesTo(TimeUnit.SECONDS)  .convertDurationsTo(TimeUnit.SECONDS)  .build();  //一秒钟执行一次  reporter.start(1, TimeUnit.SECONDS);  }  
}  
首先,来一个基本的公共类

package com.lala.core;  import java.util.concurrent.TimeUnit;  
import com.codahale.metrics.MetricRegistry;  public class Base   
{  protected static MetricRegistry metric = MetricConstant.REGISTER;  protected static void secondSleep(long value)  {  try  {  TimeUnit.SECONDS.sleep(value);  } catch (InterruptedException e)  {  e.printStackTrace();  }  }  protected static void milliSecondSleep(long value)  {  try  {  TimeUnit.MILLISECONDS.sleep(value);  } catch (InterruptedException e)  {  e.printStackTrace();  }  }  
}  
接下来,就演示这五大组件的基本用法

一:Counter

[java] view plaincopy
  1. package com.lala.demo;  
  2.   
  3. import java.util.Random;  
  4.   
  5. import com.codahale.metrics.Counter;  
  6. import com.lala.core.Base;  
  7. import com.lala.core.MyConsoleReport;  
  8.   
  9. /** 
  10.  * 记录执行次数 
  11.  */  
  12. public class CounterTest extends Base  
  13. {  
  14.     final static Counter exec = metric.counter("com.pp.counter.invoke");  
  15.     public static void main(String[] args)  
  16.     {  
  17.         MyConsoleReport.startReport();  
  18.         new Thread(()->{  
  19.             for(int i=1;i<=3;i++)  
  20.             {  
  21.                 exec.inc();  
  22.                 milliSecondSleep(new Random().nextInt(500)*2);  
  23.             }  
  24.         }).start();  
  25.         secondSleep(3);  
  26.     }  
  27. }  

输出如下:

15-11-22 20:38:29 ==============================================================


-- Counters --------------------------------------------------------------------
com.pp.counter.invoke
             count = 3


二:Gauge

[java] view plaincopy
  1. package com.lala.demo;  
  2.   
  3. import com.codahale.metrics.Gauge;  
  4. import com.lala.core.Base;  
  5. import com.lala.core.MyConsoleReport;  
  6. /** 
  7.  * 获取某个值 
  8.  */  
  9. public class GaugeTest extends Base  
  10. {  
  11.     public static void main(String[] args)  
  12.     {  
  13.         MyConsoleReport.startReport();  
  14.         metric.register("com.pp.gauge.freeMemory"new Gauge<Long>(){  
  15.             public Long getValue() {  
  16.                 //这里是获取当前JVM可用内存  
  17.                 return Runtime.getRuntime().freeMemory();  
  18.             }  
  19.         });  
  20.         secondSleep(2);  
  21.     }  
  22. }  

输出如下:

15-11-22 20:39:44 ==============================================================


-- Gauges ----------------------------------------------------------------------
com.pp.gauge.freeMemory
             value = 118203344


三:Meter

[java] view plaincopy
  1. package com.lala.demo;  
  2.   
  3. import java.util.Random;  
  4. import com.codahale.metrics.Meter;  
  5. import com.lala.core.Base;  
  6. import com.lala.core.MyConsoleReport;  
  7. /** 
  8.  * Meter用来计算事件的速率 
  9.  */  
  10. public class MeterTest extends Base  
  11. {  
  12.     static final Meter requests = metric.meter("com.pp.meter.invoke");  
  13.     public static void main(String[] args)  
  14.     {  
  15.         MyConsoleReport.startReport();  
  16.         new Thread(()->{  
  17.             for(int i=1;i<=2;i++)  
  18.             {  
  19.                 requests.mark();  
  20.                 milliSecondSleep(new Random().nextInt(500)*2);  
  21.             }  
  22.         }).start();  
  23.         secondSleep(2);  
  24.     }  
  25. }  

输出如下:

15-11-22 20:40:57 ==============================================================


-- Meters ----------------------------------------------------------------------
com.pp.meter.invoke
             count = 2
         mean rate = 0.97 events/second
     1-minute rate = 0.00 events/second
     5-minute rate = 0.00 events/second
    15-minute rate = 0.00 events/second


四:Histogram

[java] view plaincopy
  1. package com.lala.demo;  
  2.   
  3. import java.util.Arrays;  
  4. import java.util.List;  
  5. import java.util.Random;  
  6. import com.codahale.metrics.Histogram;  
  7. import com.lala.core.Base;  
  8. import com.lala.core.MyConsoleReport;  
  9. /** 
  10.  * Histogram可以为数据流提供统计数据。 除了最大值,最小值,平均值外,它还可以测量 中值(median), 
  11.  * 百分比比如XX%这样的Quantile数据  
  12.  */  
  13. public class HistogramTest extends Base  
  14. {  
  15.     static final Histogram his = metric.histogram("com.pp.histogram.score");  
  16.     static List<Integer> scores = Arrays.asList(60758062904233956173);  
  17.     public static void main(String[] args)   
  18.     {  
  19.         MyConsoleReport.startReport();  
  20.         new Thread(()->{  
  21.             scores.forEach( (score) -> {  
  22.                 his.update(score);  
  23.                 milliSecondSleep(new Random().nextInt(500)*2);  
  24.             });  
  25.         }).start();  
  26.         secondSleep(10);  
  27.     }  
  28. }  

输出如下:

15-11-22 20:42:14 ==============================================================


-- Histograms ------------------------------------------------------------------
com.pp.histogram.score
             count = 10
               min = 33
               max = 95
              mean = 67.11
            stddev = 18.70
            median = 73.00
              75% <= 80.00
              95% <= 95.00
              98% <= 95.00
              99% <= 95.00
            99.9% <= 95.00


五:Timer

[java] view plaincopy
  1. package com.lala.demo;  
  2.   
  3. import com.codahale.metrics.Timer;  
  4. import com.lala.core.Base;  
  5. import com.lala.core.MyConsoleReport;  
  6. /** 
  7.  * Timer用来测量一段代码被调用的速率和用时。 
  8.  * 等于Meter+Hitogram,既算TPS,也算执行时间。 
  9.  */  
  10. public class TimerTest extends Base   
  11. {  
  12.     static final Timer timer = metric.timer("com.pp.timer.invoke");  
  13.     static void inovke(long time)  
  14.     {  
  15.         final Timer.Context context = timer.time();  
  16.         try  
  17.         {  
  18.             secondSleep(time);  
  19.         }finally  
  20.         {  
  21.             context.stop();  
  22.         }  
  23.     }  
  24.     public static void main(String[] args)   
  25.     {  
  26.         MyConsoleReport.startReport();  
  27.         inovke(1);  
  28.         inovke(2);  
  29.         inovke(2);  
  30.         inovke(8);  
  31.         secondSleep(1);  
  32.     }  
  33. }  
输出如下:

15-11-22 20:43:34 ==============================================================


-- Timers ----------------------------------------------------------------------
com.pp.timer.invoke
             count = 4
         mean rate = 0.28 calls/second
     1-minute rate = 0.38 calls/second
     5-minute rate = 0.40 calls/second
    15-minute rate = 0.40 calls/second
               min = 1.01 seconds
               max = 8.00 seconds
              mean = 3.44 seconds
            stddev = 2.86 seconds
            median = 2.00 seconds
              75% <= 8.00 seconds
              95% <= 8.00 seconds
              98% <= 8.00 seconds
              99% <= 8.00 seconds
            99.9% <= 8.00 seconds

注意:这里的输出,和上一个组件输出有些类似,但是不一样的

这里统计的是执行时间,什么最大执行时间,最小执行时间,平均执行时间等。上一个统计的是数字,什么最大数字,最小数字,平均数字等


当然了,Metrics还可以用来做心跳检测,这里就不演示了。