java:竞争条件 – 有没有办法确保几行代码一起执行?

我有一个注册页面,它接收令牌广告解析它们并在参数适用时登录用户。 在我检查令牌的时间到我从数据库中删除令牌的时间之间,另一个用户可以使用相同的令牌登录。 有没有办法确保执行特定范围的代码行而不会产生干扰,所以我不会遇到竞争条件问题? 谢谢 更新 我有两台服务器。 apache tomcat 6 red5 v0.9(免费的基于java的Flash媒体流和通信服务器) 我正在为Facebook写一个游戏应用程序。 游戏本身是用adobe flash builder 2编写的。 游戏本身将使用red5服务器提供。 问题是red5没有收到请求和响应头,因此无法检索用于从Facebook获取信息的会话信息。 解决用户连接到tomcat服务器的问题,该页面检查会话中的facebook相关信息,并使用tinyFBClient连接到facebook,并将信息存储在mysql db(用户详细信息)中,以确保这一点同一用户是要连接到red5的用户。 一旦创建了令牌。 tomcat页面显示一个对象HTML元素,以显示相关的SWF文件(游戏文件)。 tomcat页面将令牌传递给该SWF文件。 加载SWF文件后,它会获取该令牌并使用它连接到red5并找到用户信息。 我希望这些描述可以帮助您了解我的需求。 感谢您的支持!

Spring Boot在调试模式下阻止H2控制台

我正在尝试在调试模式下的WebIntegrationTest期间访问H2控制台。 但是,当我调试测试时,我注意到Spring Boot正在阻止H2控制台。 一旦达到断点,H2控制台也会被阻止。 我正在使用Spring Boot 1.3.1.RELEASE。 以下测试中的每个断点都会阻止H2控制台。 在断点1中,将显示登录页面。 然后我按下登录按钮但没有任何反应,直到我继续测试到下一个断点。 在断点2中,我已登录并可以执行查询。 但只有当我要进入下一个断点时,才会出现查询结果。 @Test public void whenGetById_thenCorrectId() throws InterruptedException { // do some stuff // breakpoint 1 Thread.sleep(1000); // breakpoint 2 Thread.sleep(1000); // breakpoint 3 } WebIntegrationTest配置如下: @ActiveProfiles(“local,unittest”) @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MyApplication.class) @WebIntegrationTest({“spring.h2.console.enabled=true”, “server.port=8080”}) public class MyResourceTest { 如何将H2-in-memory数据库与调试模式分离?

有关addBatch(String)的注意事项

在PreparedStatement的addBatch()方法addBatch(String) , Statement类中还有一个addBatch(String)方法。 我想处理一系列不同的sql语句,我正在寻找一些关于addBatch(String)意味着性能的澄清。 使用此方法是安全(和快速)还是更好地在Java中对类似的sql语句进行分组并在组中执行它们?

Java9中的 ant任务是否已更改?

自从切换到Java 9后,我无法再使用该任务打包我的应用程序。 至少有两个问题: 似乎不再支持basedir属性 我的.iss文件,用于创建Windows可执行文件,可以找到更长的时间 我找不到任何文件表明有变化。 我的ant任务是: 任何帮助非常感谢。 具有basedir属性的输出是: C:\ SfnDevelopment \ trunk \ sfnLauncher \ build.xml:248:fx:platform不支持​​org.apache中org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:396)中的“basedir”属性.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:344)org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:580)atg.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.java) :349)org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:201)位于org.apache.tools.ant的org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)。 Task.perform(Task.java:347)org.apache.tools.ant.Target.execute(Target.java:390)atg.apache.tools.ant.Target.performTasks(Target.java:411)atg .apache.tools.ant.Project.executeSortedTargets(Project.java:1397)org.apache.tools.ant.Project.executeTarget(Project.java:1366)org.apache.tools.ant.helper.DefaultExecutor.executeTargets (DefaultExecutor.java:41)在org.apache.tool s.ant.Project.executeTargets(Project.java:1249)org.apache.tools.ant.Main.runBuild(Main.java:801)org.apache.tools.ant.Main.startAnt(Main.java: 218)org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)引起:类型没有不支持“basedir”属性。 at org.apache.tools.ant.IntrospectionHelper.setAttribute(IntrospectionHelper.java:402)at org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:388)… 16更多 带有-verbose的ant的输出,没有basedir属性,是: 解析buildfile jar:file:/ C:/Program%20Files/Java/jdk-9/lib/ant-javafx.jar!/com/sun/javafx/tools/ant/antlib.xml,URL = jar:file:/ C:/Program%20Files/Java/jdk-9/lib/ant-javafx.jar!/com/sun/javafx/tools/ant/antlib.xml来自zip文件[macrodef]创建宏javafx:com.sun。 javafx.tools.ant:init-ant运行[C:\ Program Files \ Java \ jdk-9 \ bin \ java.exe,-version]运行[C:\ Program Files(x86)\ Inno Setup 5 \ iscc.exe ,/?]检测到[C:\ Program […]

是否有可能为单个队列设置死信队列

我目前在我的ActiveMQ服务器中有一个名为hello.world的Queue。 每当消息无法处理时,ActiveMQ都会创建一个名为ActiveMQ.DLQ的默认目录。 是否可以将该名称更改为hello.world.DLQ ? 原因是我将来可能有几个队列,我希望它像.DLQ

通过命令行与JNI进行调用

我需要从Java应用服务器调用tesseract OCR(它是一个用C ++进行光学字符识别的开源库)。 现在,它很容易使用Runtime.exec()运行可执行文件。 基本逻辑是 将当前保存在内存中的图像保存到文件(a .tif) 将图像文件名传递给tesseract命令行程序。 使用FileReader从Java读取输出文本文件。 通过为Tesseract编写JNI包装器,我可以获得多少性能提升? 不幸的是,没有一个可在Linux中运行的开源JNI包装器。 我必须自己做,并且想知道这个好处是否值得开发成本。

使用流程构建器或apache commons exec执行外部程序

我需要执行一个外部应用程序,它返回大量数据(需要2个多小时才能完成)并连续输出数据。 我需要做的是异步执行该程序并捕获文件中的输出。 我尝试使用java进程构建器,但它似乎挂起并仅在程序退出或强制终止时返回输出。 我尝试使用进程构建器并spwaned一个新的线程来捕获输出,但它仍然没有帮助。 然后我读了关于apache commons exec并尝试了同样的事情。 然而,这似乎也需要很长时间并返回不同的错误代码(对于相同的输入) CommandLine cmdLine = new CommandLine(“/opt/testsimulator”); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); ByteArrayOutputStream stdout = new ByteArrayOutputStream(); PumpStreamHandler psh = new PumpStreamHandler(stdout); ExecuteWatchdog watchdog = new ExecuteWatchdog(60*1000); Executor executor = new DefaultExecutor(); executor.setStreamHandler(psh); executor.setWatchdog(watchdog); try { executor.execute(cmdLine); } catch (ExecuteException e) { // TODO Auto-generated catch block e.printStackTrace(); } […]

“崩溃发生在Java虚拟机之外的本机代码中。”如何解决这个错误(Java)?

使用此链接中的库http://www.blog.kslemb.com/doku.php/en/projects/globx/java_hid 我已修改此代码以在HID终端上写入 if (HIDHandle.equals(WinBase.INVALID_HANDLE_VALUE)) { return HID_DEVICE_NOT_OPENED; } /* Write Feature report */ boolean Status=Kernel32.INSTANCE.WriteFile(HIDHandle, buffer, (int)buffersize, null, null); if (Status == false) { debug(“Write File: ” + getSystemError(Kernel32.INSTANCE.GetLastError())); return HID_DEVICE_TRANSFER_FAILED; } else { return HID_DEVICE_SUCCESS; } 此代码将成功写入HID设备,但随后会产生此错误 A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7600d4d5, […]

Wicket从文件系统创建图像

我正在制作一个项目,用户在点击产品时打开一个带有产品名称的模态窗口。 我还想在面板内的模态窗口中包含产品图像。 图像存储在我的服务器上的目录中。 我指的是这个链接 我的面板html代码看起来像这样http://wicketinaction.com/2011/07/wicket-1-5-mounting-resources/ ItemOrderPanel.html ItemOrderPanel.java final ResourceReference imageResourceReference = new ImageResourceReference(); String imageName = itm.getProductImage(); final PageParameters parameters = new PageParameters(); parameters.set(“name”, imageName); CharSequence urlForImage = getRequestCycle().urlFor(imageResourceReference,parameters); ExternalLink link = new ExternalLink(“link”, urlForImage.toString()); link.setBody(Model.of(imageName)); add(link); 在WicketApplication.java中 mountResource(“/orderPage/{name}”,new ImageResourceReference()); 我对WicketApplication.java中的这一行有疑问。 我已经创建了这样的资源文件 ImageResourceReference.java public class ImageResourceReference extends ResourceReference{ public ImageResourceReference(){ super(ImageResourceReference.class,”imagesDemo”); } @Override public IResource […]

在eclipse IDE环境之外执行Eclipse插件(jdt / ast)

我可以将Eclipse Java开发工具作为独立进程执行吗? 我需要从另一个程序使用Eclipse JDT获取Java程序的AST结构,为此,我需要执行eclipse插件作为场景后面的独立进程。 那可能吗? 如果是这样,那怎么可以呢?