Spring 计时器StopWatch

背景

在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,简单且粗暴的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的Java工具类。

实例代码

package cn.zzg.mybatisplus.controller;import cn.zzg.mybatisplus.entity.BaseProjectPO;
import org.springframework.util.StopWatch;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/stopWatch")
public class StopWatchController {@GetMapping("/test")public void test() throws InterruptedException {StopWatch stopWatch = new StopWatch();stopWatch.start("getUp");Thread.sleep(2000);stopWatch.stop();stopWatch.start("washUp");Thread.sleep(4000);stopWatch.stop();stopWatch.start("closeDoor");Thread.sleep(60000);stopWatch.stop();System.out.println(stopWatch.prettyPrint());System.out.println(stopWatch.getTotalTimeMillis());System.out.println(stopWatch.getLastTaskName());System.out.println(stopWatch.getLastTaskInfo());System.out.println(stopWatch.getTaskCount());}}

运行结果

StopWatch '': running time (millis) = 66016
-----------------------------------------
ms     %     Task name
-----------------------------------------
02004  003%  getUp
04001  006%  washUp
60011  091%  closeDoor66016
closeDoor
org.springframework.util.StopWatch$TaskInfo@7cdb0296
3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot-项目部署

SpringBoot项目部署可以通过将项目打成可执行的jar包或war包来实现,也可以使用容器化技术如Docker将项目部署到云平台中。在部署时需要注意配置文件的位置和启动参数的设置,同时确保目标环境中的Java版本与项目所需的Java版本一致。部署完成后&#xff0…

边缘计算的挑战和机遇

边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我们不断地研究和创新&…

华为机试真题实战应用【赛题代码篇】-VLAN资源池(附Java、C++和python代码)

目录 题目描述 思路解析 思路1 思路2 代码实现 PYTHON C++

服务器怎么更换cdn?-速盾网络

随着互联网的不断发展,网站的访问量也越来越大,这就需要使用CDN(内容分发网络)来提供更好的用户体验和更高的网站加载速度。然而,在使用CDN的过程中,有时候我们需要更换CDN服务商,本文将介绍服务…

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架,可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站,也可以…

DynamoDB和Cassandra、MongoDB的比较

DynamoDB和Cassandra、MongoDB的比较 前面说过Cassandra受2007年Amazon发表的Dynamo论文影响非常深,在DynamoDB发布的第一天,提供Cassandra商业化支持的DataStax公司的Jonathan Ellis就写了一篇文章,分析了Cassandra和DynamoDB的差异。 虽然J…

如何在BTC生态中创造独特的数字资产?bitget教程

BRC-20通证是什么? 听说了吗?BRC-20通证在比特币上搞事情啦!它们不依赖智能合约,直接在比特币的最小单位上动手脚。这就像在用最小的积木搭房子,太神奇了!虽然现在还在实验阶段,但已经有很多人…

12AOP面向切面编程/GoF之代理模式

先看一个例子: 声明一个接口: // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口: package com.sunsplanter.prox…

流星全自动网页生成系统重构版源码

流星全自动网页生成系统重构版源码分享,所有模板经过精心审核与修改,完美兼容小屏手机大屏手机,以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑,全自动网页制作系统无需繁琐…

错误处理(基于ESP-IDF)

主要参考资料 B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》 ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html ESP-IDF编程指南>API指南>严…

第十五届蓝桥杯单片机组备赛——中断系统与外部中断应用

文章目录 一、中断系统二、中断应用 一、中断系统 中断源:IAP15F2K61S2有多个中断源,包括外部中断0/1,定时器/计数器0/1/2/3,串行接口,SPI接口,ADC 转换结束中断,PCA模块,比较器中断…

二、QT下载、安装及问题解决(windows系统)

本章节最重要的一点:安装时,路径中不能有中文,切记,否则QT不能正常运行。 下载两种途径: 1、官网下载,慢且不好访问; 2、国内一些大学网站的镜像,下载比较快,但是可能…

Android中的anr定位指导与建议

1.背景 8月份安卓出现了一次直播间卡死(ANR)问题,且由于排查难度较大,持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨. 这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住…

lenovo联想笔记本电脑拯救者Legion Y7000 2019 PG0(81T0)原装出厂Windows10系统

链接:https://pan.baidu.com/s/1fn0aStc4sfAfgyOKtMiCCA?pwdas1l 提取码:as1l 联想拯救者原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具:…

更换为mainwindow.ui更新工程架构

文章目录 前言一、新建带mainwindow.ui的工程1.新建工程2. 添加工程模块添加opencv的库3.添加资源3.1工程上添加资源3.2引用资源 4.添加曲线文件4.1 复制关键文件到新工程4.2 新进显示曲线的ui带.h的为了方面名字取一样4.3添加曲线显示控件4.4 添加工具 5. 添加曲线.h文件内容6…

MySQL之单表查询

素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

2.1 python文本处理-正则表达式

python正则模块介绍 标准库模块 re 模块方法 # 将正则表达式样式编译成一个正则对象。一般用于多次使用正则对象的场景 re.compile(pattern) # 扫描string字符串并查找符合patten样式的第一个位置,返回对应的 Match 结果,否则返回 None re.search(patt…

数据库结构文档生成(通过PDMReader)

将数据库的表结构生成数据库结构文档有三种方法: 1、通过 PDMReader生成文档; 2、使用EZDML 工具生成(下载地址:EZDML - 下载); 3、使用SCREW 插件,通过java代码生成。 本文章先介绍通过PDM…

Python入门0基础学习笔记

1.编程之前 在编写代码之前,还有两件事需要做: 安装 Python 解释器:计算机是没法直接读懂 Python 代码的,需要一个解释器作为中间的翻译,把代码转换成字节码之后再执行。 Python 是翻译一行执行一行。一般说的安装 …

kafka为什么快

消息发送 1、批量发送: Kafka 通过将多个消息打包成一个批次,减少了网络传输和磁盘写入的次数,从而提高了消息的吞吐量和传输效率。 2、异步发送: 生产者可以异步发送消息,不必等待每个消息的确认,这大大提高了消息发送的效2.率 …