我正在寻找将Java应用程序作为*NIX守护程序或Windows服务运行的最佳方法.我查看了Java Service Wrapper,Apache Commons项目'jsvc'和Apache Commons项目'procrun'.到目前为止,Java Service Wrapper看起来是最好的选择...但是,我想知道是否还有其他"开源友好"许可产品.
在没有遇到竞争条件的情况下,在并发程序中从BlockingQueue中获取对象的最佳方法是什么?我目前正在做以下事情,我不相信这是最好的方法:
BlockingQueue<Violation> vQueue;
/*
in the constructor I pass in a BlockingQueue object
full of violations that need to be processed - cut out for brevity
*/
Violation v;
while ( ( v = vQueue.poll(500, TimeUnit.MILLISECONDS) ) != null ) {
// do stuff with the violation
}
Run Code Online (Sandbox Code Playgroud)
我还没有达到竞争状态......但是,我不确定这是否真的安全.
我试图运行一个使用绑定变量对mysql数据库引擎的查询.我想知道如何告诉引擎"重置"绑定变量赋值.我敢肯定,一个例子会比我的大脑更好地解释.
这是查询:
INSERT INTO site_support_docs
(
ASSET_ID,
TIME_STAMP,
SITE_NAME,
DOCUMENT_NAME,
DOCUMENT_LOCATION,
DOCUMENT_CONTENT,
DOCUMENT_LAST_MODIFIED
)
VALUES (?, ?, ?, ?, ?, ?, STR_TO_DATE(?, '%M %e, %Y %r'))
ON DUPLICATE KEY UPDATE asset_id = ?,
time_stamp = ?,
site_name = ?,
document_name = ?,
document_location = ?,
document_content = ?,
document_last_modified =
STR_TO_DATE(?, '%M %e, %Y %r')
Run Code Online (Sandbox Code Playgroud)
我的问题是第八个"?" 当只有七个时,它被解释为一个新的绑定变量.无论如何,我想我可以恢复使用实际值...但是,我确信有更好的方法.马特