假设我定义了一个名为的自定义注释@Unsafe.
我想提供一个注释处理器,它将检测对注释方法的引用@Unsafe并打印警告.
例如,鉴于此代码......
public class Foo {
@Unsafe
public void doSomething() { ... }
}
public class Bar {
public static void main(String[] args) {
new Foo().doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
...我希望编译器打印如下:
WARN > Bar.java, line 3 : Call to Unsafe API - Foo.doSomething()
Run Code Online (Sandbox Code Playgroud)
它在精神上非常相似@Deprecated,但我的注释是在传达不同的东西,所以我不能@Deprecated直接使用.有没有办法用注释处理器实现这一目标?注释处理器API似乎更关注应用注释的实体(Foo.java在我的示例中),而不是引用注释成员的实体.
此问题提供了一种使用ASM作为单独构建步骤实现它的技术.但我想知道我是否可以通过javac和注释处理以更自然的方式做到这一点?
我想在我们的应用程序中添加groovy-shell-server.我们最近遇到了几个生产问题,内部API的调用可以加快诊断速度,甚至可以提供短期修复.Groovy-shell-server提供了一种实现这一目标的好方法.
但实际上在生产中使用它会带来潜在的复杂性.让我们说,尽管经过仔细的同行评审,我们还是会执行一个固定CPU的脚本,或者陷入无限循环.我需要一些方法来杀死那个线程,发音!所以我在考虑增强groovy-shell-server以支持正在运行的Groovy客户端线程的可选硬件停止().
我知道Thread.stop()本质上是不安全的 ; 之前在StackOverflow上讨论过它.我的问题是,您认为这种情况下的好处可能超过风险吗?使用Thread.stop()作为一种失控的GroovyShell服务器线程的"紧急制动"是一种实用的选择吗?或者将对象置于不一致状态的可能性太高了?
(或者,如果某人有更好的方式来提供对正在运行的java应用程序的编程,可中断访问,我会全力以赴.)
适用于 Windows 的预构建电子二进制文件包括文件ffmpeg.dll. 如何确定实际编译了底层 ffmpeg 库的哪个版本以生成此 dll?我需要这些信息来通过 ffmpeg 了解给定版本的电子中可能存在哪些已知漏洞(CVE 等)。
据我了解,当我下载我的依赖项(我正在使用)时,ffmpeg dll 本身是从https://github.com/electron/nightlies/releases/获取的electron-prebuilt-compile。但是我没有清楚地了解该二进制文件的来源是什么。我认为它可能来自https://chromium.googlesource.com/chromium/third_party/ffmpeg/但是我不清楚那个 repo 与原始 ffmpeg repo 的关系(例如,从 ffmpeg 中合并修复的频率回购到铬第三方回购等)
我尝试按照 cody 的建议搜索 dll 的内容,但没有运气:
$ strings ffmpeg.dll | grep -i ffmp
FFmpeg video codec #1
Huffyuv FFmpeg variant
Not yet implemented in FFmpeg, patches welcome
C:\projects\libchromiumcontent\src\out-x64\static_library\ffmpeg.dll.pdb
ffmpeg.dll
$ strings ffmpeg.dll | grep -i version
H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
MPEG-4 part 2 Microsoft variant …Run Code Online (Sandbox Code Playgroud)