- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
7年前关闭。
Improve this question
问题:
我们有一个执行许多计算并且有些复杂的现有系统。事实上,有时用户不知道某些数据是如何得出的。 (如果没有对代码的细节进行广泛的研究,我们也不知道)。我们正在努力实现一项功能,该功能使我们能够准确地向用户展示为产生答案所做的工作。
一般解决方案:
为了实现这一点,我们需要以某种方式通过我们的系统传递一个“上下文”,我们可以在处理过程中添加一些事实。然后可以对这些事实进行格式化并呈现给用户。
具体可能的解决方案:
我知道有两种方法可以传递上下文。一种方法是增加每个函数以引入“桶”或集合,当需要将某些东西返回给用户时可以添加到该集合中。这将需要我们对函数/api 进行大量更改以接收、可能修改并将这个额外的变量传递给其他函数。
另一种方法是使用 ThreadLocal 变量,我们可以在线程中的任何位置检索它并填充数据。此外,我们希望通过将其包装在 java @Annotations 中来使此填充对开发人员无缝,然后可以由方面处理以填充此“上下文”。
我们想要探索的正是这种将 ThreadLocal 用作不可见的隐藏“上下文”的想法。
具体来说:
因此,我们正在研究的基本思想是@Annotate 方法,以便可以根据传递给函数的参数或从函数检索的结果将一些事实添加到 ThreadLocal 变量中。这样,我们可以在遇到函数时对其进行装饰,并且这些函数会“自动”找到上下文并按照注释定义中指定的方式对其进行扩充。
问题(最后):
是否有一个已经存在的现有框架可以做类似或类似的事情?
谢谢
-AP_
最佳答案
听起来您可以对代码进行更改。您是否考虑过仅使用日志框架(如 slf4j)并在您感兴趣的方法的入口和导出点将跟踪消息写入日志?日志记录基本上是审计,我认为这是您真正需要的。
使用注释方法您会发现的困难是有一些方法可以在运行时处理它们。如果您正在谈论的类是 spring bean,您可以使用 spring 方面,或者您可以使用编译时编织 (CTW) 围绕带注释的方法引入建议,以审计有关方法的参数和返回值的信息(在推送您可以使用加载时间编织,但这种方法对于大多数应用程序来说确实是无稽之谈)。 CTW 要困难得多,但如果您在代码中创建对象实例(也就是说,您正在审核域模型,而不是静态基础设施),或者您正在审核一大堆泥浆,那么 CTW 是必要的。
最后,经过 35 年的来之不易的经验,我可以告诉你一个事实(尽管我无法真正证明这一点),如果你遇到这些问题,扔掉系统总是更容易也更便宜你有并从头开始重新实现它。总是。
乙
关于java - 寻找使用 Java ThreadLocal 进行通用数据收集的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932420/
我一直在读这个article关于 Tomcat 中的 ThreadLocal 泄漏。第一个示例包含以下代码: public class MyCounter { private int
天真地,我希望 ThreadLocal 是 Thread 到值类型的某种 WeakHashMap。所以当我了解到一个 ThreadLocal 的值实际上是 saved in a map in the
一 简单例子 1 代码 package concurrent.threadlocal; /** * ThreadLocal测试 * * @author cakin */ public class T
并发编程-ThreadLocal 说在前面的话 今天的文章很短,但是很经典,值得你仔细阅读每一个文字… 正如我开篇所说,我们要整理一些java并发编程的学习文档,这一篇就是第七篇:ThreadLoca
最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑。原本的打算是在入口处新增变量,在操作数据的时
前言 ThreadLocal为变量在每个线程中都创建了一个副本,所以每个线程可以访问自己内部的副本变量,不同线程之间不会互相干扰。本文会基于实际场景介绍ThreadLocal如何使用以及内部实现机
来源:blog.csdn.net/mycs2012/article/details/90898128 1、FastThreadLocal的引入背景和原理简介 2、实现源码分析 2.1、Unpadded
来源:blog.csdn.net/mycs2012/article/details/90898128 1、FastThreadLocal的引入背景和原理简介 2、实现源码分析 2.1、Unpadded
.Net 4. ThreadLocal<> 实现 IDisposable。但似乎调用 Dispose() 实际上并没有释放对所持有的线程本地对象的引用。 这段代码重现了这个问题: using Syst
在类(class)ReentrantReadWriteLock以下是奇怪的评论: transient ThreadLocalHoldCounter readHolds; Sync() { re
如果我们有一个 ThreadLocal 属性(每个线程都有其唯一的属性),那么哪个是正确的(我们不想使用自动 setter/getter): A) private ThreadLocal _someP
我正在浏览 ThreadLocal类文档,想知道它可以在什么场景下使用。 首先我认为它可以用于那些我们有第三方/遗留类并且我们想要处理同步问题的场景。然后我查看了 ThreadLocal 的其他示例,
我最近读了一篇关于 Equation Group's Sophisticated Hacking 的文章确凿的证据是一个常量,也出现在 JDK 8 源代码中,例如ThreadLocal.java HA
我的基于 ThreadLocal 的类遇到问题。任何帮助,将不胜感激。这是一个带有简单列表的基类: public class ThreadLocalTest { protected static fi
使用ThreadLocal类编程时,字段应该声明为final吗?如果编写类似 private ThreadLocal threadLocal 的代码稍后在构造函数中初始化它,因为变量 threadLo
我有以下类(class) 这个类用来保存我所有的ThreadLocal数据成员 public class ThreadLocalManager { public static final Th
在一次工作 session 上。我听说Thread Local绝对是一种反模式,因为新的应用程序服务器使用称为新IO的新线程技术。事实上,他们告诉我ThreadLocal的问题是一个完整的线程必须等待
ThreadLocal 是否会自动清除为已完成的线程创建的值? 最佳答案 是的,这些变量可用于垃圾收集,但前提是没有其他对这些值的引用(由其他线程持有)。但是当你说一个线程完成时,它不应该像一个线程池
我意识到 ThreadLocal 已被多次访问,尤其是 SimpleDateFormat 示例。 但似乎即使将 SDF 设置为“ThreadLocal”,我们仍然为每个线程创建一个 SDF() 实例,
在 JSR 315 中添加了对 servlet 和过滤器的异步支持。在这样的过滤器中创建的 ThreadLocal 线程安全吗? ResourceFilter com.app.fil
我是一名优秀的程序员,十分优秀!