小编Hey*_*nge的帖子

Java 8性能VS. Java 7

我正在通过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).

  1. 我想知道这样的结果是否特定于我的应用程序,或者其他人是否已经注意到将Java 7的性能降级为8?
  2. 是否在代码中进行了特殊的优化以获得最佳的Java 8?

如果不能做任何事情,我宁愿用Java 7而不是8来实现多线程代码,以保持我已经拥有的Java 7性能.

java multithreading java-7 java-8

11
推荐指数
1
解决办法
5274
查看次数

Oracle SQL功能:添加局部变量

在存储的过程中,我可以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)

oracle plsql oracle10g

4
推荐指数
1
解决办法
4588
查看次数

JSON 到 Java 对象 - 无法识别的字段,未标记为可忽略

我正在尝试将以下 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)

java json jackson

4
推荐指数
3
解决办法
2万
查看次数

Oracle PL/SQL:两个表之间的count(*)

尝试计算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)

怎么能实现这一目标?

sql oracle oracle10g

2
推荐指数
1
解决办法
91
查看次数

Oracle 10g:截断字符串

我有一个查询,该查询附加多行中的字符串值并将结果插入到新表中。

我想限制插入的字符串长度。

问题

实现这一目标的最佳方法是什么:我应该使用SUBSTR还是SUBSTRB有更好的方法?

sql oracle10g

2
推荐指数
1
解决办法
3万
查看次数

使用生产者创建应用程序范围的类成员

说在下面的代码中,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)

编辑

这个解决方案:

  1. 确保生产是应用范围的。
  2. 提供优雅的 Hazelcast 关闭。
@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)

java cdi hazelcast jakarta-ee

1
推荐指数
1
解决办法
2558
查看次数

最后一句不总是叫?

如果以下代码是从IDE或命令行运行,然后停止:

  • 从eclipse停止执行(红色按钮)
  • 按CTRL + C(命令行)
  • 当然(通过for循环替换while(true)循环

从不执行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子句被调用.我没有注意到我的单元测试中的痕迹.所以他们现在不是问题.

java finally

-1
推荐指数
1
解决办法
450
查看次数