我正在通过JNI使用C++库开发一个成像处理Java 7u80应用程序.
由于我愿意与Java 8u60 并行执行流,我刚刚切换到JDK 8并重新启动了我的所有单元测试.
Java 8u60 Overall duration: **35'408 [ms]**
Java 7u80 Overall duration: **29'581 [ms]**
在我看来,Java 7比Java 8快17%(相同的代码,代码级别分别为7和8).
如果不能做任何事情,我宁愿用Java 7而不是8来实现多线程代码,以保持我已经拥有的Java 7性能.
在存储的过程中,我可以v_bar按如下所示添加局部变量:
CREATE OR REPLACE PROCEDURE A_PROC (
foo VARCHAR2
)
AS
v_bar VARCHAR2(32);
BEGIN
SELECT FOO into v_bar WHERE ...;
END A_PROC ;
Run Code Online (Sandbox Code Playgroud)
题
v_bar在下面的函数中应如何声明?
CREATE OR REPLACE FUNCTION A_FUNC(
foo VARCHAR2
) RETURN NUMBER AS total NUMBER;
BEGIN
-- Where to declare v_bar ?
v_bar := 'bla';
END A_FUNC;
Run Code Online (Sandbox Code Playgroud) 我正在尝试将以下 JSON 转换为 java 对象。
{
"Data":[
{
"AccountId":"2009852923",
"Currency":"EUR",
"Nickname":"SA 01",
"Account":{
"SchemeName":"BBAN",
"Name":"SA 01",
"Identification":"2009852923"
},
"Servicer":{
"SchemeName":"BICFI",
"Identification":"FNBSZAJJ"
}
},
{
"AccountId":"1028232942",
"Currency":"EUR",
"Nickname":"FNBCREDIT",
"Account":{
"SchemeName":"BBAN",
"Name":"FNBCREDIT",
"Identification":"1028232942"
},
"Servicer":{
"SchemeName":"BICFI",
"Identification":"FNBSZAJJ"
}
}
],
"Links":{
"self":"http://localhost:3000/api/open-banking/accounts/1009427721/transactions"
},
"Meta":{
"total-pages":1
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下 DTO(为简洁起见,尚未发布引用的类)。
{
"Data":[
{
"AccountId":"2009852923",
"Currency":"EUR",
"Nickname":"SA 01",
"Account":{
"SchemeName":"BBAN",
"Name":"SA 01",
"Identification":"2009852923"
},
"Servicer":{
"SchemeName":"BICFI",
"Identification":"FNBSZAJJ"
}
},
{
"AccountId":"1028232942",
"Currency":"EUR",
"Nickname":"FNBCREDIT",
"Account":{
"SchemeName":"BBAN",
"Name":"FNBCREDIT",
"Identification":"1028232942"
},
"Servicer":{
"SchemeName":"BICFI",
"Identification":"FNBSZAJJ"
}
}
], …Run Code Online (Sandbox Code Playgroud) 尝试计算2个表之间的计数差异.
跟着这个回答但是得到了00923. 00000 - "FROM keyword not found where expected"
SELECT ( SELECT count(*) FROM XE_ERR_OVLP WHERE FLAG = 'E')
- (SELECT count(*) FROM XE_ERR_RANG WHERE FLAG = 'H' ) as cnt;
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
我有一个查询,该查询附加多行中的字符串值并将结果插入到新表中。
我想限制插入的字符串长度。
问题
实现这一目标的最佳方法是什么:我应该使用SUBSTR还是SUBSTRB有更好的方法?
说在下面的代码中,Hazelcast 实例将是应用程序范围是真的吗?
@ApplicationScoped
public class Producer {
private HazelcastInstance instance;
@PostConstruct
public void afterCreate() {
instance = Hazelcast.newHazelcastInstance();
}
@Produces
public HazelcastInstance getInstance() {
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
这个解决方案:
@ApplicationScoped
public class Producer {
private HazelcastInstance instance;
private Producer() {}
@PostConstruct
public void afterCreate() {
instance = Hazelcast.newHazelcastInstance();
}
@PreDestroy
public void beforeDestroy() {
if(instance != null) {
instance.shutdown();
}
}
@Produces
@ApplicationScoped
public HazelcastInstance getInstance() {
return instance;
}
}
Run Code Online (Sandbox Code Playgroud) 如果以下代码是从IDE或命令行运行,然后停止:
从不执行finally子句("最后"从未打印出来).
public class Test {
public static void main(String[] args) {
try {
while (true) {
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
System.out.println("Finally");
}
}
}
Run Code Online (Sandbox Code Playgroud)
引用Java 7规范:
如果try块的执行正常完成,则执行finally块,然后有一个选择:
任何见解?
编辑
哎呀,我的坏,有限的for循环导致finally子句被调用.我没有注意到我的单元测试中的痕迹.所以他们现在不是问题.