当前位置: 首页 > wzjs >正文

公司网站建设费放什么科目济南网站制作建设

公司网站建设费放什么科目,济南网站制作建设,惠州网络推广,wordpress修改标题💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时三分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…

💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥

🏆本篇文章阅读大约耗时三分钟

⛳️motto不积跬步、无以千里

📋📋📋本文目录如下:🎁🎁🎁

目录

前言

实现

测试

章末

前言

        小伙伴们大家好,上篇文章在本地模拟了如何控制接口的负载,通过引入 Resilience4j 依赖实现,整体操作简单,并且不需要额外启动服务,文章链接如下:

【接口负载】✈️整合 Resilience4j 指定接口负载,避免过载_resilience4j 如果多个接口指定一个 api , 会判断成同一个吗-CSDN博客

        在实际项目中有很多监控指标,比如接口请求整体耗时,针对请求耗时过长的接口,需要进行统计并优化,本文 简单模拟下如何便捷实现接口耗时监控

实现

        2.1 统计接口耗时这种需求,是针对全部接口的,所以不能对业务代码造成侵入,并且要统一监控,所以可以使用拦截器,自定义一个拦截器,具体的作用就是请求进来的前后统计下时间,然后统一格式输出,方便查看

        2.2 整体流程如下

        2.3 代码实现

         拦截器方法体如下,简单看下内容:

             1.包括初始化 ThreadLocal 对象,重写了 preHandle 方法和 afterCompletion 方法

             2.请求进来后,对应的线程会先初始化一个 threadLocal 对象,之后调用执行 preHandle 方法,在这一步会往该线程的 threadLocal 对象中存放一个开始时间,之后去执行业务方法,执行结束后,会流转到 afterCompletion 方法中,这时会计算当前时间与开始时间的差值,如果超过指定范围 打印一个 Warn 级别的日志

             注:这里最后会手动调用 threadLocal 的 remove 方法释放占用,避免内存溢出风险

import lombok.extern.slf4j.Slf4j;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;/*** @author HuangBenben */
@Slf4j
@Component
public class RequestHeaderHandlerInterceptor implements HandlerInterceptor {// 为 ThreadLocal 提供初始值private final ThreadLocal<Map<String, Object>> contexts = ThreadLocal.withInitial(HashMap::new);private void set(String key, Object value) {contexts.get().put(key, value);}private Object get(String key) {return contexts.get().get(key);}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {long start = System.currentTimeMillis();set("Request_begin", start);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) {try {Long start = (Long) get("Request_begin");if (start != null) {long time = System.currentTimeMillis() - start;StringBuilder sb = new StringBuilder();sb.append("接口:").append(request.getRequestURI()).append(" 耗时:").append(time);if (time > 1000) {log.warn(sb.toString());} else {log.info(sb.toString());}}} finally {contexts.remove();}}
}

         拦截器创建好之后需要手动添加注册,保证生效

              将自定义的拦截器对象注入之后,重写 addInterceptors 方法将其添加注册,并且指定该拦截器针对的请求地址,这里配置的全部请求

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author HuangBenben */
@Configuration
public class AutoWebMvcConfigurer implements WebMvcConfigurer {@Autowiredprivate RequestHeaderHandlerInterceptor requestHeaderHandlerInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 添加自定义的拦截器registry.addInterceptor(requestHeaderHandlerInterceptor).addPathPatterns("/**");}
}

 

测试

        简单测试下,如下

        拦截器中针对耗时大于1000ms的请求会打印 Warn 级别的日志,这里就让请求 sleep 一段时间,看下执行情况

 

        结果如下,接口的请求耗时有对应的日志,并且按照规则打印日志的级别 

章末

         文章到这里就结束了,如果有其他问题,欢迎评论区沟通。

往期推荐 > > > 

【接口负载】✈️整合 Resilience4j 指定接口负载,避免过载

 【SpringBoot】⭐️整合 Redis 实现百万级数据实时排序

 【SpringBoot】✈️本地集成支付宝支付功能


文章转载自:

http://8S2heP5j.rpdmj.cn
http://EkQrN0lt.rpdmj.cn
http://9HoNEwCB.rpdmj.cn
http://8JRXJvMH.rpdmj.cn
http://X7osZUlR.rpdmj.cn
http://dBOBwx6N.rpdmj.cn
http://hJMdFe4n.rpdmj.cn
http://0OU2fXok.rpdmj.cn
http://IAtGzyq8.rpdmj.cn
http://o0Eh4O9J.rpdmj.cn
http://dewQMv0B.rpdmj.cn
http://ewO8m8a3.rpdmj.cn
http://vnTdQqy3.rpdmj.cn
http://9fJ5w0Nf.rpdmj.cn
http://EqIRhIry.rpdmj.cn
http://U6Oz2VS4.rpdmj.cn
http://Vdev58H0.rpdmj.cn
http://aRSOY1ns.rpdmj.cn
http://mmOeXqBW.rpdmj.cn
http://QL6K3d7e.rpdmj.cn
http://8JyQYCzu.rpdmj.cn
http://LFchXM4I.rpdmj.cn
http://QgiPCwXO.rpdmj.cn
http://b0hA5jGw.rpdmj.cn
http://q8uUhDdY.rpdmj.cn
http://H4KcwPgr.rpdmj.cn
http://v7QGLTMX.rpdmj.cn
http://l2gcC8Ka.rpdmj.cn
http://WCZVq8hy.rpdmj.cn
http://TsvSNYFw.rpdmj.cn
http://www.dtcms.com/wzjs/723939.html

相关文章:

  • 建筑工程类网站个人网页设计作业总结
  • vps主机上搭建网站手机电影网站怎么做
  • 贵州做网站的公司网站建设需求范文
  • 重庆招考网seo做的好的网站有哪些
  • 个人博客网站设计的目的天水 网站建设招聘
  • 医院网站设计与实现有字库 wordpress 插件
  • 珠海市网站开发公司网站平台怎么做推广
  • 灞桥微网站建设刷排名seo软件
  • 蓝山网站建设项目建设情况
  • 母婴用品商城网站建设wordpress iis rewrite
  • 做网站运营需要注意哪些问题ui界面设计培训课程
  • wordpress站安装百度商桥网站后端都需要什么意思
  • 外贸网站开发推广wordpress 微网站
  • 泉州建网站wordpress自定义字段插件
  • 深圳龙华建网站软件开发专业专升本都考什么
  • 什么网站做app好网页浏览器官方下载
  • 中国建设银行进不了登录网站android studio安卓版
  • 网站seo报告河南做酒店网络系统网站
  • 湖北做网站多少钱推荐个临汾做网站的
  • 医药企业网站设计制作宿迁市住房城乡建设局网站
  • 杭州公司的网站建设公司浩森宇特北京网站建设
  • 如何做视频门户网站做网站的服务器多少钱
  • 传统文化网站建设方案国外优秀排版设计网站
  • 宜和购物电视购物官方网站可以做设计赚钱的网站
  • 锦江建设和交通局网站女教师网课入侵录屏冫
  • 做网站能用ai好还是ps网页搜索框代码
  • 沧州手机建站哪家好店铺网站域名怎么做
  • 口碑好门户网站开发开一家软件外包公司
  • 庆阳网站设计报价健身房网站建设案例
  • 万家灯火网站建设建设银行网站注册用户名不通过