企业网站托管方式外汇平台网站开发需求说明

news/2025/10/2 7:24:58/文章来源:
企业网站托管方式,外汇平台网站开发需求说明,seo技术分类,公司做网站的 oa办公系统最近接触一个新的传统项目#xff0c;在联调过程中#xff0c;查看日志特别不方便#xff0c;既无trackId#xff0c;即无接口耗时#xff0c;所以写了该博客。话不多说#xff0c;直接上代码 1、实体类user package com.yk.domain;import lombok.Data;Data public cla…最近接触一个新的传统项目在联调过程中查看日志特别不方便既无trackId即无接口耗时所以写了该博客。话不多说直接上代码 1、实体类user package com.yk.domain;import lombok.Data;Data public class User {private Long id;private String username;private String sex;}2、接口统计返回实体封装类 /*** author : yk* date : 2024/03/11* description : 封装的基础 result*/ Data public class CommonResultT implements Serializable {private Integer code;private String message;private String traceId;private Long costTime;private T data;}2、controller层 Slf4j RestController RequestMapping(user) public class UserController {GetMapping(/query)public CommonResultUser query(RequestParam(name id, required false, defaultValue 1) Long id) {User user new User();user.setId(id);user.setUsername(yk);user.setSex(男);CommonResultUser apiResult new CommonResult();apiResult.setData(user);return apiResult;}PostMapping(/queryUser)public CommonResultUser queryAlert(RequestBody User user) {CommonResultUser apiResult new CommonResult();apiResult.setData(user);return apiResult;}} 3、aspect包 public class TraceIdUtil {public static final String REGEX -;public static final String TRACE_ID trace_id;/*** 从header和参数中获取traceId* 从网关传入数据** param request  HttpServletRequest* return traceId*/public static String getTraceIdByRequest(HttpServletRequest request) {String traceId request.getParameter(TRACE_ID);if (StringUtils.isBlank(traceId)) {traceId request.getHeader(TRACE_ID);}return traceId;}/*** 传递traceId至MDC** param traceId  链路id*/public static void setTraceId(String traceId) {if (StringUtils.isNotBlank(traceId)) {MDC.put(TRACE_ID, traceId);}}/*** 构建traceId** return*/public static String getTraceId() {if (StringUtils.isBlank(MDC.get(TRACE_ID))) {String traceId UUID.randomUUID().toString().replaceAll(REGEX, StringUtils.EMPTY);setTraceId(traceId);return traceId;}return MDC.get(TRACE_ID);}/*** 清理traceId*/public static void removeTraceId() {MDC.remove(TRACE_ID);} }package com.yk.aspect;import jakarta.servlet.ServletOutputStream; import jakarta.servlet.WriteListener; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponseWrapper;import java.io.ByteArrayOutputStream; import java.io.IOException;public class MyServletResponseWrapper extends HttpServletResponseWrapper {private final ByteArrayOutputStream buffer;private final ServletOutputStream out;public MyServletResponseWrapper(HttpServletResponse httpServletResponse) {super(httpServletResponse);buffer new ByteArrayOutputStream();out new WrapperOutputStream(buffer);}Overridepublic ServletOutputStream getOutputStream() {return out;}Overridepublic void flushBuffer()throws IOException {if (out ! null) {out.flush();}}public byte[] getContent() throws IOException {flushBuffer();return buffer.toByteArray();}static class WrapperOutputStream extends ServletOutputStream {private final ByteArrayOutputStream bos;public WrapperOutputStream(ByteArrayOutputStream bos) {this.bos bos;}Overridepublic void write(int b) {bos.write(b);}Overridepublic boolean isReady() {return false;}Overridepublic void setWriteListener(WriteListener writeListener) {}} }Getter public class MyServletRequestWrapper extends HttpServletRequestWrapper {private final String body;public MyServletRequestWrapper(HttpServletRequest request) {super(request);if (POST.equals(request.getMethod().toUpperCase(Locale.ROOT))) {StringBuilder stringBuilder new StringBuilder();BufferedReader bufferedReader null;InputStream inputStream null;try {inputStream request.getInputStream();if (inputStream ! null) {bufferedReader new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));char[] charBuffer new char[128];int bytesRead;while ((bytesRead bufferedReader.read(charBuffer)) 0) {stringBuilder.append(charBuffer, 0, bytesRead);}}} catch (IOException e) {e.printStackTrace();} finally {if (inputStream ! null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (bufferedReader ! null) {try {bufferedReader.close();} catch (IOException e) {e.printStackTrace();}}}body stringBuilder.toString();} else {body request.getQueryString();}}Overridepublic ServletInputStream getInputStream() {final ByteArrayInputStream byteArrayInputStream new ByteArrayInputStream(body.getBytes());return new ServletInputStream() {Overridepublic boolean isFinished() {return false;}Overridepublic boolean isReady() {return false;}Overridepublic void setReadListener(ReadListener readListener) {}Overridepublic int read() {return byteArrayInputStream.read();}};}Overridepublic BufferedReader getReader() {return new BufferedReader(new InputStreamReader(this.getInputStream()));}} import com.alibaba.fastjson.JSONObject; import com.yk.domain.CommonResult; import jakarta.servlet.*; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;import java.io.IOException; import java.nio.charset.StandardCharsets;Slf4j Component public class ContextFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) {log.info(ContextFilter init );}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {String traceId TraceIdUtil.getTraceId();//为了在post的时候能继续传递MyServletRequestWrapper request new MyServletRequestWrapper((HttpServletRequest) servletRequest);MyServletResponseWrapper response new MyServletResponseWrapper((HttpServletResponse) servletResponse);//消耗时间long start System.currentTimeMillis();log.info(请求入参{} , request.getBody());// 执行主体方法startchain.doFilter(request, response);// 执行主体方法 endlong end System.currentTimeMillis();byte[] content response.getContent();String resultParams ;if (content.length 0) {resultParams new String(content, StandardCharsets.UTF_8);}try {CommonResult? apiResult JSONObject.parseObject(resultParams, CommonResult.class);apiResult.setCostTime(end - start);apiResult.setTraceId(traceId);//返回消息 否则前台收不到消息log.info(返回值{}, JSONObject.toJSONString(apiResult));servletResponse.getOutputStream().write(JSONObject.toJSONString(apiResult).getBytes());} catch (Exception e) {log.info(ContextFilter error , e);servletResponse.getOutputStream().write(resultParams.getBytes());}}Overridepublic void destroy() {TraceIdUtil.removeTraceId();} }4、application.properties server.port8080#配置日志全链路跟踪 logId logging.pattern.console[%p]%d{yyyy-MM-dd HH:mm:ss.SSS}[%X{trace_id}][%X{extra_biz_info}] %m [%c#%M:%L]%n 5、pom配置 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.3/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.yk/groupIdartifactIdspringboot-hellword/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot-hellword/namedescriptionspringboot-hellword/descriptionpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.13.0/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project

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

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

相关文章

郑州做网站的大公司视频网站建设方案

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.6.1. 控制测试的运行方式 cargo test和cargo run一样,cargo test也会编译代码并生成一个二进制文件用于测试,…

5、论文-项目采购管理

1、项目采购管理过程概述 以上仅供参考,如有疑问,留言联系

作品展示html5网站模板网站备案都审核什么

移除链表元素 题目:203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出&#xf…

百度推广网站吸引力重庆vr全景制作

文章目录 前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址 前言 本文主要介绍如何在VMware ESXi上创建一台Ubuntu 22.04虚拟机,并通过Cpolar内网穿透工具配置公网地址&#xf…

2025 年微波干燥设备厂家 TOP 企业品牌推荐排行榜,黄粉虫、黑水虻、中药材、茶叶、食品、粮食、大虾、茶叶、海产品、砂型微波干燥设备公司推荐!

在当前工业生产领域,微波干燥设备凭借高效、节能、环保的特性,已成为食品加工、陶瓷生产、木材处理、化工制造、医药原料等多个行业的重要装备。然而,随着市场需求的不断增长,微波干燥设备生产厂家数量逐渐增多,行…

5、论文-采购管理

1、以上仅供参考,如有疑问,留言联系

深圳网站建设 卓越创旅游网站自己怎么做

一、CouncurrentHashMap 二、ConcurrentLinkedQueue 三、java中的阻塞队列 jdk7提供了7个阻塞队列 四、Fork / Join框架

自定义扩展控件

项目创建 创建项目时要去选择类库然后去删除这个Class1.cs文件添加新项 在添加新项时去选择组件类会得到:删除这段代码public Component1(IContainer container){container.Add(this);InitializeComponent();}会变成:…

建筑网站的设计与实现的论文濮阳房产网

建模开讲:层次分析法及其MATLAB实践主讲人:于晶贤老师课程回放地址如下,大家可以复制链接到地址栏即可观看,也可以直接点击左下角的观看:https://ke.qq.com/webcourse/index.html?fromqqchat&cid493154&term_…

千景导航站 - 一站式开发者资源与技术工具导航平台

https://www.qjcq.net 千景导航站是专为开发者、站长和技术爱好者设计的全面资源导航站,提供前端、后端、移动开发、桌面应用、网站运维、在线工具和API平台等精选资源。涵盖文档、工具推荐、在线调试和部署方案,帮助…

2025十一集训——Day1模拟赛

原题 赛前 6:40 为了模拟赛早起 7:00 开坑,还不知道密码是啥。 赛时 赛后 改题 咕咕咕本文来自博客园,作者:zhangxiao666,转载请注明原文链接:https://www.cnblogs.com/zhangxiao666qwq/p/19123152

企业网站建设 cms网站开发采集工具

正则表达式扫描的优先级 1. 先根据空格,tab,回车分割字符串,作为正则表达式匹配的基础 2. 找到完全匹配的正则表达式,以排列在前面的优先级为高 3. 如果找不到匹配的表达式,那么从头开始截取字符串来查找合…

2025十一集训——Day1做题

题单 A 咕咕咕 B 咕咕咕 C 咕咕咕 D春节十二响 vjudge luogu (Day -1 过的qwq)题意:一棵树,节点有点权,将节点分成任意个集合,要求每个集合内的节点不是祖先——后代关系,问(每个集合中的(点的最大值)之和)最…

AI元人文:价值共生体系统——构建人机文明的演进基石

AI元人文:价值共生体系统——构建人机文明的演进基石 导言:从“对齐”到“共生”的范式迁移 我们正站在智能演化的奇点前沿。传统的人工智能伦理范式,核心是“价值对齐”——试图将一套预设的、静态的人类价值观念,…

自己怎样建立个人网站建设银行网站注册不了

美业SAAS系统(Software as a Service)在美容、美发、美甲等行业中具有重要的应用价值。这种系统为美业提供了一种数字化解决方案,帮助企业更高效地管理业务和客户关系。 以下是博弈美业SAAS系统的应用价值分析: 1.经营管理&#…

2025.9.30 刷题

2025.9.30 刷题1. P2120 [ZJOI2007] 仓库建设 斜优板纸 注意 \(x\) 可能重复,需要特判 AC 2. P3628 [APIO2010] 特别行动队 板纸 AC 3. P2748 [USACO16OPEN] Landscaping P \(a , b\) 很小,考虑把每单位单独考虑 每单…

网站建设极地网商城网站主机

一、Maven和Nexus3 简介 Maven是一个采用纯Java编写的开源项目管理工具,采用一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括…

使用dw做门户网站phpcmsv9网站地图

常量:在程序执行过程中,其值不发生改变的量;1、分类: 字面值常量和自定义常量;1、字面值常量有以下几种:字符串常量、小数常量、整数常量、字符常量、布尔常量(true、false)、空常量(null);2、整数常量…

网站建设需要缴纳印花税么西安网站建设现状

本系列教程前端是借助Unity开发,后端使用Golang语言。开发一套游戏:包含登录,玩家移动同步等。 在本系类教程中会重点关注一些项目规范。比如: 文件夹目录结构等。开发UI时创建图集,图集的作用和注意事项导入贴图时图…

荣耀毕业了

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087九月是分别的季节,别了DFX和工程兄弟姐妹们,再见跑团兄弟们生活和…