草庐IT

hook_event_proc

全部标签

java - JUnit4 : Test a shutdown hook is called

我有一个添加关闭钩子(Hook)的方法。我需要测试(通过JUnit)钩子(Hook)中执行的代码是否被调用:publicvoidmyMethod(){Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){...codetotest...}});}如何在单元测试中模拟关机? 最佳答案 我认为您无法测试它。相反,只需测试您的代码在调用时是否正确运行(通过单独对其进行单元测试)。然后,相信Java会在正确的时间调用您的代码。即将代码提取到扩展Th

Java2D : interaction between XWindows events and frame rate

我在Linux/XWindows上的简单Java2D应用程序中遇到系统事件和窗口刷新率之间的意外交互。下面的小示例可以很好地证明这一点。这个程序创建了一个小窗口,其中半圆以不同的旋转度显示。图形以每秒60帧的速度更新,以产生闪烁的显示。这是通过BufferStrategy实现的,即调用其show方法。但是,我注意到当我(a)将鼠标移到窗口上以便窗口接收鼠标悬停事件或(b)按住键盘上的某个键以便窗口接收键盘事件时,闪烁会增加可见。因为调用BufferStrategy.show()的速率不受这些事件的影响,从控制台上的打印输出可以看出(它们应该始终保持在60fps左右).但是,更快的闪烁表

java - 确定 java 关闭钩子(Hook)线程中的退出状态

我想在关闭钩子(Hook)运行时确定进程的退出状态。我想要一个基于状态码(0或非零)的逻辑(例如:如果零不做任何其他非零发送警报电子邮件)你知道我怎样才能得到这些信息吗? 最佳答案 我试图覆盖SecurityManagercheckExit(intstatus)方法-如果在任何地方显式调用System.exit(status)则此方法有效-但是,当应用程序“正常”退出(无Activity线程)或错误终止VM时,它不会设置状态。importjava.io.BufferedReader;importjava.io.IOException

java - "long monitor contention event with owner method"的原因可能是什么?

我是初学者,我的任务是制作一个基本的聊天应用程序,其中包含两个客户端和一个服务器,用于交换目标+消息的字符串。我已经编写了一些代码,但是当我使用它时,我在另一端得到了这个“使用所有者方法的长监视器争用事件”。任何人都可以帮助我了解这是如何发生的吗?或者谁能​​告诉我一般情况下的原因? 最佳答案 是一个线程长期持有monitor/mutex,阻塞其他线程造成的。例如:synchronized(lock){/*dosomethingthattakesalongtime*/}在这种情况下,“长时间”是100毫秒或更多。(Thispullr

java - Windows 中的 JNA 键盘钩子(Hook)

我整理了一个JNA代码,用于在Windows中安装键盘Hook(使用JNA示例)。代码编译和一切,我安装了Hook(我成功获得了Hook的句柄),也可以成功卸载Hook。但是,当我按下键盘上的任何键时,回调永远不会被调用。这是我的代码(其中大部分是从JNA示例中获得的类型定义,我的部分直接转到“main”)importcom.sun.jna.IntegerType;importcom.sun.jna.Pointer;importcom.sun.jna.PointerType;importcom.sun.jna.Structure;importcom.sun.jna.FromNative

java - Hook Java 中的现有方法

我想HookJava中的System.out.print方法,并能够在调用方法部分之前读取/更改方法中使用的变量,该部分实际上将字符串添加到输出流中。在C++中,我只是绕过函数,或设置一个int3指令,以便我可以访问寄存器,但在Java中,我不知道如何完成类似的事情。 最佳答案 您可以重写方法的字节码,并在过程中捕获/更改局部变量。这不是微不足道的。查看一些注释here.也许您真正想要的是Java调试器?您可以使用eclipse将调试器连接到远程进程、添加断点以及捕获/更改局部变量。您要解决的真正问题是什么?

java - Server-Sent-Events 如何工作

我在tomcat8.0上使用java尝试了SSE(服务器发送事件)。以下是我注意到的几件事。我单击一个自动向servlet发出请求的按钮。执行Servlet的GET方法,返回一个事件流。一旦接收到完整的流,页面将再次自动发出另一个请求,再次接收相同的数据!!!我那里没有无限循环!!!服务器上实际发生了什么?一般情况下,tomcat会创建一个线程来处理每一个请求。现在发生了什么?确保事件流只发送一次到同一个连接/浏览器session的正确方法是什么?确保事件流关闭并且不会在服务器上产生资源开销的正确方法是什么?如何区分GET和POST请求。为什么选择GET?在Tomcat上使用SSE是否

java - Java 中的钩子(Hook)和抽象方法的区别

这是我大学学习资料中引用的问题。这对我来说完全没有意义。对我来说,钩子(Hook)是(主要是顺序但不仅仅是)程序中的指定点,您可以在其中指定要执行的自己的方法或回调。例如,一个应用程序有一个“onbeforeshutdownhook”,我可以在那里注册我的回调方法,在关闭之前将用户数据保存到磁盘。抽象方法是self解释的。对我来说这是完全不同的东西?还是这些东西中的任何一个都有我不知道的第二个含义?我进行了快速搜索,但没有找到任何东西。 最佳答案 我真的不认为这两件事非常相似。它们可能相关的一种方式如下所示:publicabstra

带有 System.exit 的 Java 静态 block 关闭 Hook

这段代码会死锁:publicclassMain{staticpublicfinalObjecta=newObject();static{Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){if(a==null);}});System.exit(0);}staticpublicvoidmain(finalString[]args){}}此代码将正常退出:publicclassMain{staticpublicfinalObjecta=newObject();static{finalObject

java - Transfer scroll event from sliding view to ScrollView - Sliding panel with ScrollView 像谷歌地图

所以我正在使用SlidingUpPanelLibrary在我的应用程序中,我正在尝试在滑动面板内实现ScrollView。由于滑动面板和ScrollView都是由垂直滚动条控制的,这给我带来了一些问题。一旦面板一直向上滑动,并且当ScrollView滚动到顶部时,我已经通过切换面板的拖动View部分地使其工作。我现在面临的问题是,当将面板滚动到顶部时,滚动不会像在Googlemap中那样转移到ScrollView。有点难以解释,请看这里的视频:www.youtube.com/watch?v=9MUsmQzusX8&feature=youtu.be这是面板幻灯片监听器:...slideP