1、引入依赖:import com.google.common.base.Stopwatch;
2、基础用法:
Stopwatch stopwatch = Stopwatch.createStarted(); //创建计时器并开始计时
doSomething();
log.info("doSomething 耗时: "+ stopwatch.toString()); //stopwatch.toString()会自动选用合适的时间单位并且打印出来。因此无需自己打印单位。
3、其他用法
Stopwatch stopwatch = Stopwatch.createStarted();
doSomething1();
log.info("doSomething1耗时: "+ stopwatch.toString());
stopwatch.reset(); //重置时间且停止计时
stopwatch.start(); //开始计时
doSomething2();
stopwatch.stop(); //停止计时
doSomething3();
stopwatch.start(); //开始计时
doSomething4();
stopwatch.stop(); //停止计时
log.info("doSomething2 + doSomething4 共耗时: "+ stopwatch.toString()); //注意这里没有doSomething3
tip:打印耗时时,如果要指定时间单位,可用stopwatch.elapsed() eg:stopWatch.elapsed(TimeUnit.MILLISECONDS);
1、引入依赖:import org.springframework.util.StopWatch;
2、基础用法:
StopWatch stopWatch = new StopWatch();
stopWatch.start();
doSomething1()
stopWatch.stop();
log.info(“doSomething1耗时:{}ms”+ stopWatch.getTotalTimeMillis());
3、其他用法:
StopWatch stopWatch = new StopWatch();
stopWatch.start(“task1”);
Thread.sleep(1000);
stopWatch.stop();
stopWatch.start(“task2”);
Thread.sleep(2000);
stopWatch.stop();
log.info(stopWatch.toString()); //打印各个任务的时间及占总时长的 比重
log.info(stopWatch.getLastTaskTimeMillis()); //打印上一个任务的耗时 (2000ms)
log.info(stopWatch.getTotalTimeMillis()); //打印所有任务的耗时(3000ms)
注意: 在调用stopWatch.stop()前,当前执行的任务时长不会算入总时长,且stopWatch.getLastTaskTimeMillis()得到的也是上一个已stop的任务耗时。
即如果上面代码去掉第七行的stopWatch.stop()。第9、10行打印出来的结果将都是1000ms
Google Stopwatch适用于单个任务的计时,Spring StopWatch适用于多个任务的计时。
效果创建一个类ClaViewpackage com.example.zklx2;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util....
环境:编程环境:Ubuntu12.04编程工具:vim编译工具:gcc输入法:搜狗注意:在window8系统下使用SecureCRT通过root用户账号远程登录到Ubuntu12.04系统的(SecureCRT是一款支持SSH的终端仿真程序,是Windows下登录UNIX或Linux服务器主机的软件。)(SSH是Secure Shell的缩写,安全外壳协议。是建立在应用_stray '\357' in program
在SharePoint 上配置 Project 2013创建 Project Web App实例在 SharePoint 管理中心中的“应用程序管理”部分,单击“管理服务应用程序”。在“管理服务应用程序”页上,单击“ProjectServer Service 应用程序”。在“管理 Project Web App 网站”页上,单击“创建Project Web App实例”。然
目录1、引出问题2、for循环内部的int类型的i++是怎么执行的3、for循环内部的double类型的i++是怎么执行的4、for循环内部的short类型的i++是怎么执行的5、while循环和for循环可以互相转换的原因1、引出问题大家有没有思考过为什么for循环或者while循环中都是用int类型的值,而不是用short类型或者double类型的值吗,比如:for (int i = 0; i < 10; i++) { System.out.println("hello," + i)_for循环中为什么一般用int
众所周知,redis作为一个nosql有5种数据类型,那么redis 是怎么存储这些数据的呢redis可以用object encoding命令进行查询内部编码类型一.stringint:8个字节的长整型。 embstr:小于等于39个字节的字符串。 raw:大于39个字节的字符串。二.hashziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个), 同时所有值都小于hash-max-ziplist-valu_windows的redis设置编码
基本原理要明白 telnetlib 中各个 read 函数的意义,首先要了解 telnetlib 的工作原理。 telnetlib 首先通过 socket 连接从网络接收数据,把数据存储到自己的 raw queque 中,然后对其进行(telnet 协议相关的)处理(cook)。处理结果存放在 cooked queue 中供应用程序取用。整个过程如下图.各 read 函数的意义各种 rea..._read_very_eager
我想我也有同样的问题,我希望这些信息能有所帮助。在我的例子中,我正在连接到Maya中的mel和python端口,因此我不知道此体验是否对您和您的情况有用。在This answer向我表明我根本不需要Telnet/telnetlib来完成我要做的I/O,并建议使用asynchat。结果显示,并非所有出现在服务器端的输出都可供客户端读取。在我使用asynchat作为第二种意见之前,我不知道会发生这种情..._python telnet 等待回显
基本接口:WebMvcConfigurer或者WebMvcConfigurerAdapter;函数:addInterceptors(InterceptorRegistry registry);参数类型说明:InterceptorRegistry类只包含List<InterceptorRegistration>列表一个成员字段;InterceptorRegistration类封装了Interceptor对象、includeUrl和excludeUrls;(1)向系统注册一个拦截器_addinterceptors(interceptorregistry registry)
wayland和weston的介绍:https://blog.csdn.net/LG1259156776/article/details/53260920weston.ini配置:http://manpages.ubuntu.com/manpages/bionic/man5/weston.ini.5.htmlweston使用说明:https://blog.csdn.net/al..._weston配置优化
原文出处:http://www.cnblogs.com/biosli/articles/1414259.html最近遇到了创建连接点的问题(飞信就能自己创建来着),到网上搜罗了一下解决方法。这里总结一下:这些方法主要是针对函数DMProcessConfigXML里面的第一个参数来的,函数的具体使用方法参见MSDN。MSDN没有对第一个参数做太多解释,下面提供一些使用实例:创建cmn
题目按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”代码#include#include#includeusing namespace std;vector ResolveStr(vect
r:Python中字符串前面加上 r 表示原生字符串(rawstring)_正则表达式前面的r是什么意思