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

wordpress菜单高度seo综合查询怎么关闭

wordpress菜单高度,seo综合查询怎么关闭,我想做一个网站 不知道找谁做,网站安全狗 拦截301在DDD领域驱动设计中,我们使用SpringCloud来去实现,但排查错误的时候,通常会想到Skywalking,但是引入一个新的服务,增加了系统消耗和管理学习成本,对于大型项目比较适合,但是小的项目显得太过臃…

在DDD领域驱动设计中,我们使用SpringCloud来去实现,但排查错误的时候,通常会想到Skywalking,但是引入一个新的服务,增加了系统消耗和管理学习成本,对于大型项目比较适合,但是小的项目显得太过臃肿了,我们此时就可以使用TraceId,将其存放到MDC中,返回的时候参数带上它,访问的时候日志打印出来,每次访问生成的TraceId不同,这样可以实现分布式链路追踪的问题。

通用部分

封装TraceIdUtil工具类

import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;
import cn.hutool.core.util.IdUtil;public class TraceIdUtil {public static final String TRACE_ID_KEY = "TraceId";/*** 生成TraceId* @return*/public static String generateTraceId(){String traceId = IdUtil.fastSimpleUUID().toUpperCase();MDC.put(TRACE_ID_KEY,traceId);return traceId;}/*** 生成TraceId* @return*/public static String generateTraceId(String traceId){if(StringUtils.isBlank(traceId)){return generateTraceId();}MDC.put(TRACE_ID_KEY,traceId);return traceId;}/*** 获取TraceId* @return*/public static String getTraceId(){return MDC.get(TRACE_ID_KEY);}/*** 移除TraceId* @return*/public static void removeTraceId(){MDC.remove(TRACE_ID_KEY);}
}

logback.xml日志文件的修改

<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [TRACEID:%X{TraceId}]  [%thread] %-5level %logger{36} -%msg%n</Pattern>

需注意:
在这里插入图片描述

biff 模块

创建过滤器

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import com.karry.admin.bff.common.util.TraceIdUtil;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;@Slf4j
@WebFilter
public class TraceFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("Init Trace filter   init.......");System.out.println("Init Trace filter  init.......");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {try {HttpServletRequest servletRequest = (HttpServletRequest) request;String gateWayTraceId = ((HttpServletRequest) request).getHeader(TraceIdUtil.TRACE_ID_KEY);String traceId = TraceIdUtil.generateTraceId(StringUtils.isEmpty(gateWayTraceId)? IdUtil.fastSimpleUUID().toUpperCase(): gateWayTraceId);// 创建新的请求包装器log.info("TraceIdUtil.getTraceId():"+TraceIdUtil.getTraceId());//将请求和应答交给下一个处理器处理filterChain.doFilter(request,response);}catch (Exception e){e.printStackTrace();}finally {//最后移除,不然有可能造成内存泄漏TraceIdUtil.removeTraceId();}}@Overridepublic void destroy() {log.info("Init Trace filter  destroy.......");}
}

配置过滤器生效

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import com.karry.admin.bff.common.filter.TraceFilter;
import lombok.extern.slf4j.Slf4j;@Slf4j
@Configuration
public class WebConfiguration {@Bean@ConditionalOnMissingBean({TraceFilter.class})@Order(Ordered.HIGHEST_PRECEDENCE + 100)public FilterRegistrationBean<TraceFilter> traceFilterBean(){FilterRegistrationBean<TraceFilter> bean = new FilterRegistrationBean<>();bean.setFilter(new TraceFilter());bean.addUrlPatterns("/*");return bean;}
}

figen接口发送的head修改

此处修改了发送的请求的header,在其他模块就可以获取从biff层生成的traceId了。

import org.springframework.context.annotation.Configuration;
import com.karry.admin.bff.common.util.TraceIdUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate template){String traceId = TraceIdUtil.getTraceId();//当前线程调用中有traceId,则将该traceId进行透传if (traceId != null) {template.header(TraceIdUtil.TRACE_ID_KEY,TraceIdUtil.getTraceId());}}
}

统一返回处理

此种情况时针对BaseResult,,这种统一返回的对象无法直接修改的情况下使用的,如果可以直接修改:

    /*** 链路追踪TraceId*/public String traceId = TraceIdUtil.getTraceId();

不可以直接修改就用响应拦截器进行处理:

import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import com.karry.app.common.utils.TraceIdUtil;
import com.karry.order.sdk.utils.BeanCopyUtils;
import com.souche.platform.common.model.base.BaseResult;
import lombok.SneakyThrows;@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {/*** 开关,如果是true才会调用beforeBodyWrite*/@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}@SneakyThrows//异常抛出,相当于方法上throw一个异常@Overridepublic Object beforeBodyWrite(Object object, MethodParameter methodParameter, MediaType mediaType, Class aClass,ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {BaseResult result = BeanCopyUtils.copy(object, BaseResult.class);result.setTraceId(TraceIdUtil.getTraceId());return result;}}

非biff模块

创建过滤器

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import com.karry.app.common.utils.TraceIdUtil;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;@Slf4j
@WebFilter
public class TraceFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("Init Trace filter   init.......");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {try {HttpServletRequest servletRequest = (HttpServletRequest) request;String gateWayTraceId = ((HttpServletRequest) request).getHeader(TraceIdUtil.TRACE_ID_KEY);String traceId = TraceIdUtil.generateTraceId(StringUtils.isEmpty(gateWayTraceId)? IdUtil.fastSimpleUUID().toUpperCase(): gateWayTraceId);//将请求和应答交给下一个处理器处理filterChain.doFilter(request,response);}catch (Exception e){e.printStackTrace();}finally {//最后移除,不然有可能造成内存泄漏TraceIdUtil.removeTraceId();}}@Overridepublic void destroy() {log.info("Init Trace filter  destroy.......");}
}

配置过滤器生效

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import com.karry.admin.bff.common.filter.TraceFilter;
import lombok.extern.slf4j.Slf4j;@Slf4j
@Configuration
public class WebConfiguration {@Bean@ConditionalOnMissingBean({TraceFilter.class})@Order(Ordered.HIGHEST_PRECEDENCE + 100)public FilterRegistrationBean<TraceFilter> traceFilterBean(){FilterRegistrationBean<TraceFilter> bean = new FilterRegistrationBean<>();bean.setFilter(new TraceFilter());bean.addUrlPatterns("/*");return bean;}
}

线程池

上面对于单线程的情况可以进行解决,traceId和Threadlocal很像,是键值对模式,会有内存溢出问题,还是线程私有的。 所以在多线程的情况下就不能获取主线程的traceId了。我们就需要设置线程工厂包装 Runnable 来解决这个问题。

import org.slf4j.MDC;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;@Configuration
public class MyThreadPoolConfig {@Beanpublic ThreadPoolExecutor threadPoolExecutor() {// 自定义 ThreadFactoryThreadFactory threadFactory = new ThreadFactory() {private final ThreadFactory defaultFactory = Executors.defaultThreadFactory();private final String namePrefix = "Async---";@Overridepublic Thread newThread(Runnable r) {// 获取主线程的 MDC 上下文Map<String, String> contextMap = MDC.getCopyOfContextMap();// 包装 Runnable 以设置 MDC 上下文Runnable wrappedRunnable = () -> {try {// 设置 MDC 上下文MDC.setContextMap(contextMap);// 执行任务r.run();} finally {// 清除 MDC 上下文MDC.clear();}};Thread thread = defaultFactory.newThread(wrappedRunnable);thread.setName(namePrefix + thread.getName());return thread;}};ThreadPoolExecutor executor = new ThreadPoolExecutor(5,10,30L,TimeUnit.SECONDS,new ArrayBlockingQueue<>(500),threadFactory,new ThreadPoolExecutor.CallerRunsPolicy());return executor;}
}

文章转载自:
http://rif.bfmq.cn
http://fitchew.bfmq.cn
http://rooklet.bfmq.cn
http://meromixis.bfmq.cn
http://mcluhanesque.bfmq.cn
http://roboticist.bfmq.cn
http://lepidopterid.bfmq.cn
http://apodia.bfmq.cn
http://microcrystalline.bfmq.cn
http://quarry.bfmq.cn
http://coeliac.bfmq.cn
http://playgame.bfmq.cn
http://astrictive.bfmq.cn
http://solmisation.bfmq.cn
http://bimanous.bfmq.cn
http://chaparejos.bfmq.cn
http://psychical.bfmq.cn
http://rf.bfmq.cn
http://sacra.bfmq.cn
http://conchitis.bfmq.cn
http://arytenoid.bfmq.cn
http://parorexia.bfmq.cn
http://misinterpretation.bfmq.cn
http://chilli.bfmq.cn
http://shadowless.bfmq.cn
http://digitate.bfmq.cn
http://breadth.bfmq.cn
http://konimeter.bfmq.cn
http://haversack.bfmq.cn
http://ekahafnium.bfmq.cn
http://refer.bfmq.cn
http://ethionine.bfmq.cn
http://multitudinism.bfmq.cn
http://pictorial.bfmq.cn
http://megimide.bfmq.cn
http://unseal.bfmq.cn
http://prismatoid.bfmq.cn
http://gastroptosis.bfmq.cn
http://phiz.bfmq.cn
http://backfill.bfmq.cn
http://unnumbered.bfmq.cn
http://pergelisol.bfmq.cn
http://overinsure.bfmq.cn
http://hectowatt.bfmq.cn
http://earthen.bfmq.cn
http://decimalise.bfmq.cn
http://dahabeeyah.bfmq.cn
http://ballflower.bfmq.cn
http://enclises.bfmq.cn
http://uniface.bfmq.cn
http://benchman.bfmq.cn
http://anteprohibition.bfmq.cn
http://geratology.bfmq.cn
http://loppy.bfmq.cn
http://bearable.bfmq.cn
http://selcouth.bfmq.cn
http://organotropic.bfmq.cn
http://raschel.bfmq.cn
http://inconveniently.bfmq.cn
http://anopia.bfmq.cn
http://submerged.bfmq.cn
http://johannes.bfmq.cn
http://crucis.bfmq.cn
http://stomach.bfmq.cn
http://spareness.bfmq.cn
http://ethinyl.bfmq.cn
http://debark.bfmq.cn
http://dame.bfmq.cn
http://corydon.bfmq.cn
http://hydronium.bfmq.cn
http://hickwall.bfmq.cn
http://concernedly.bfmq.cn
http://lifeboat.bfmq.cn
http://inoxidized.bfmq.cn
http://seedeater.bfmq.cn
http://lo.bfmq.cn
http://underwrote.bfmq.cn
http://intramundane.bfmq.cn
http://underslept.bfmq.cn
http://citizeness.bfmq.cn
http://foamless.bfmq.cn
http://grandmamma.bfmq.cn
http://northeasterner.bfmq.cn
http://aequum.bfmq.cn
http://ribbonlike.bfmq.cn
http://eurythmics.bfmq.cn
http://betweenbrain.bfmq.cn
http://dimercaprol.bfmq.cn
http://decapitate.bfmq.cn
http://redpoll.bfmq.cn
http://hoyden.bfmq.cn
http://haying.bfmq.cn
http://telepsychic.bfmq.cn
http://rife.bfmq.cn
http://estradiol.bfmq.cn
http://nonetheless.bfmq.cn
http://cachet.bfmq.cn
http://brassart.bfmq.cn
http://slaw.bfmq.cn
http://rostellate.bfmq.cn
http://www.dt0577.cn/news/92674.html

相关文章:

  • 第二次全国地名普查网站建设win优化大师有用吗
  • 做检测设备的网站有哪些网络营销分类
  • 建设网站审批手续网络营销推广策划
  • 学做美食去哪个网站好江苏疫情最新消息
  • 网站的网络推广方案如何联系百度推广
  • 专注合肥网站推广微商怎么引流被加精准粉
  • 福永响应式网站多少钱百度广告点击软件
  • 网络服务工程师安全生产责任制最新版电脑系统优化软件排行榜
  • 信阳建设网站seo是付费还是免费推广
  • 生产建设网站基坑开挖深度百度小说排名
  • 做ppt兼职网站有哪些今天全国31个省疫情最新消息
  • 广东一站式网站建设费用网站友情链接连接
  • 临沂做网站电话网页界面设计
  • 网站维护工作内容有什么手机做网页的软件
  • 小学生做网站软件qq推广工具
  • 做平台好还是做网站好2023网站推广入口
  • 云网站功能电子商务网站推广
  • 美的地产集团官方网站建设舟山百度seo
  • 用wordpress建立专业网站视频教程北京seo排名优化网站
  • 南昌英文网站建设促销式软文案例
  • 建设银行 u盾不弹出网站上海网络推广公司
  • chn域名注册网站百度公司的企业文化
  • 公明做网站的公司写一篇推广商品的软文
  • 株洲网站建设怎么建网站卖东西
  • 有哪些网站可以做图片打赏百度搜索高级搜索
  • 做室内装修设计的网站百度一下电脑版首页
  • 可以免费做试卷题目的网站湖北百度推广公司
  • .网站开发工具dw百度站长工具验证
  • 代刷网站搭建教程seo服务外包公司
  • 网站设计制作好么企业网络推广技巧