mdc和mdio是什么_mdc是哪个国家

mdc和mdio是什么_mdc是哪个国家在项目开发中,经常会巧妙借助MDC解决链路跟踪、统计耗时等很多问题,通过往期分享的《MDC是什么鬼?用法、源码一锅端》,对MDC有了一个深入的了解,但是细心的同学在项目中,偶尔会发现NDC的身影(可能也从未谋面),那NDC到底是个什么玩意呢?别急,通过今天的分享,能让你轻松get如下几点。1.NDC快速入门;2.NDC与MDC有何不同;3.NDC刨根问底1.ND…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在项目开发中,经常会巧妙借助 MDC 解决链路跟踪、统计耗时等很多问题,通过往期分享的《MDC是什么鬼?用法、源码一锅端》,对 MDC 有了一个深入的了解,但是细心的同学在项目中,偶尔会发现 NDC 的身影(可能也从未谋面),那 NDC 到底是个什么玩意呢?

别急,通过今天的分享,能让你轻松 get 如下几点。

1. NDC 快速入门;

2. NDC 与 MDC 有何不同;

3. NDC 刨根问底

1.NDC 快速入门

NDC 的全称是 Nested Diagnostic Context,直译过来是:嵌套诊断上下文。文字略显枯涩,能用代码解释的,一言不合就抛代码。

47de49cdd90f0ee74e46a535548676eb.png

上面这个代码来源于 MDC 分享,只是把类名换成了 SimpleNDC,然后把 MDC 相关的 API 换成了 NDC。

引入 slf4j-ext 依赖包,然后修改 logback.xml,采用%X取 NDC 中的值。

4eb270ddcf754701e698c434595d37d4.png

程序跑起来看看效果。

fb290d48f1067b5c24cc7a0b92946298.png

通过输出,能够得出如下结论。

a)NDC 提供的 push 方法,可以将一个值放进容器中,理解成入栈操作,当然可以多放几个(自己试一试);

d)通过%X获取 NDC 中所有的值;

b)NDC 中的值是线程隔离的,互不影响;

c)NDC 提供的 pop 方法,可以将一个值从容器中拿出来,理解成出栈操作。

根据结论的第二条,就能想到使用场景,当要把请求信息全部打印到日志文件中时,借助这种方式就轻而易举实现。

2.NDC 与 MDC 有何不同?

a)MDC vs NDC ?

MDC 提供的 put 方法,可以将一个 K-V 的键值对放到容器中,并且能保证同一个线程内,Key 是唯一的,不同的线程 MDC 的值互不影响;

NDC 提供的 push 方法,可以将一个值放进容器中,理解成入栈操作,当然可以多放几个;NDC 中的值是线程隔离的,互不影响。

b)  MDC vs NDC ?

在 logback.xml 中,在 layout 中可以通过声明%X{key}来输出 MDC 中 key 的信息;

在 logback.xml 中,在 layout中可以通过声明%X获取 NDC 中所有的值;

c)MDC vs NDC?

MDC 提供的 remove 方法,可以清除 MDC 中指定 key 对应的键值对信息。

NDC 提供的 pop 方法,可以将一个值从容器中拿出来,理解成出栈操作。

3.NDC 刨根问底

好奇是程序猿(媛)的通病,还是好奇的要看看 NDC 背后是什么?

ab406bd91be9067dd0b130645b655090.png

见到源码,感觉累崩。org.slf4j.NDC底层居然借助 MDC 来实现的入栈、出栈。再结合 MDC 仔细去想,其实就是借助 Map 实现的数据存储,只不过 NDC 把 key 给屏蔽啦,自己在内部给封装啦,没有对外暴露,见此应该豁然开朗了不少吧。

4.写在最后

一次冷知识的分享,知其然知其所以然,希望有所收获。

一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!

推荐阅读:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207154.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面试 SQL整理 常见的SQL面试题:经典50题

    面试 SQL整理 常见的SQL面试题:经典50题目录​SQL基础知识整理:常见的SQL面试题:经典50题三、50道面试题2.汇总统计分组分析3.复杂查询sql面试题:topN问题4.多表查询【面试题类型总结】这类题目属于行列如何互换,解题思路如下:其他面试题:SQL基础知识整理:select查询结果如:[学号,平均成绩:组函数avg(成绩)]from从哪张表中查找数…

    2022年5月20日
    26
  • STM32CubeMX介绍、下载与安装

    STM32CubeMX介绍、下载与安装推荐分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang本教程今年更新了部分内容:STM32CubeMX系列教程Ⅰ、写在前面相信很多人都知道STM32CubeMX这个工具,也是近年来开发STM32比较流行的一个工具。这个工具从两年…

    2022年6月12日
    41
  • 视音频数据处理入门:UDP-RTP协议解析「建议收藏」

    视音频数据处理入门:UDP-RTP协议解析「建议收藏」本文介绍网络协议数据的处理程序。网络协议数据在视频播放器中的位置如下所示。本文中的程序是一个UDP/RTP协议流媒体数据解析器。该程序可以分析UDP协议中的RTP包头中的内容,以及RTP负载中MPEG-TS封装格式的信息。通过修改该程序可以实现不同的UDP/RTP协议数据处理功能。原理MPEG-TS封装格式数据打包为RTP/UDP协议然后发送出去的流程如下图所示。图中首先每7个MPEG-TSP

    2022年6月28日
    25
  • 什么是HEVC?解释了高效视频编码,H.265和4K压缩

    什么是HEVC?解释了高效视频编码,H.265和4K压缩高效视频编码(HEVC),也称为H.265,可以通过蓝光最佳视频压缩方法实现两倍的压缩。但它是如何工作的,是否足以让我们看到更好看的4K内容? 我想称之为H.265,因为它听起来很酷,但它的全称是高效视频编码(HEVC)。它是高级视频编码(AVC)的新继承者,也称为H.264,它是蓝光使用的压缩方案之一。HEVC的想法是提…

    2022年4月6日
    49
  • phpstorm2021.9 永久激活码(JetBrains全家桶)

    (phpstorm2021.9 永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    195
  • iframe标签(页面嵌套)

    开发工具与关键技术:VS<iframe>作者:听民谣的老猫撰写时间:2019/6/1018:15上面两张图是两个不同的页面但是它们的基本框架都是一样,每点击一次左边的导航栏改变的都是中间的内容区域。也就是说共同的框架都是没有改变的,改变的是中间的内容。有没有什么方法可以不改变外面的基本框架只改变中间的内容???我们可以用页面嵌套方法来达到这一要求。页面嵌…

    2022年4月8日
    79

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号