小编xer*_*593的帖子

Java 11中的空方法明显慢于Java 8

当我遇到一些令人惊讶的数字时,我正在使用jmh 1.21 比较JDK 8和11的性能:

Java version: 1.8.0_192, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.362 ± 0.001  ns/op


Java version: 9.0.4, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score    Error  Units
MyBenchmark.emptyMethod  avgt   25  0.362 ±  0.001  ns/op


Java version: 10.0.2, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.723 ± 0.001  ns/op


Java version: 11.0.1, vendor: Oracle Corporation

Benchmark                Mode  Cnt  Score   Error  Units
MyBenchmark.emptyMethod  avgt   25  0.724 ± 0.002 …
Run Code Online (Sandbox Code Playgroud)

java-8 jmh java-11

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

Spring jdbcTemaplate如何一次性向DB2服务器发送完整的批量大小?

当jdbcTemplate.batchUpdate(...)正在运行时,我可以看到DB行数逐渐增加(通过count(*)在表中运行),最初是2k然后是3k并且直到10k.2k和3k不是确切的数字有时我得到235然后4567.

我期待一次性提交10 k行(批量大小).根据我的理解,如果最初,我得到行计数0然后下一行计数应该是10k.我不希望逐个插入性能原因,这就是为什么使用批量更新功能,似乎它也不会一次性全部提交.

我想将数据(10k行)仅发送到DB服务器一次,用于我的批量大小.为此,我应该在配置中指定什么?

下面是我编写jdbcTemplate批量更新批量大小为10k的方式.

public void insertRows(...) { 
    ... 
    jdbcTemplate.batchUpdate(query, new BatchPreparedStatementSetter(){
    @Override public void

    setValues(PreparedStatement ps, int i) throws SQLException {
        ... 
    }

    @Override public int getBatchSize() { 
        if(data == null){ 
            return 0; 
        }
        return data.size(); 
    }
   }); 
}
Run Code Online (Sandbox Code Playgroud)

编辑:将@Transactional添加到isertRows方法仍然可以看到相同的行为.使用Transnational它会在10k行之后提交,但是当我看到count使用UR时(从mytable中选择count(*)与ur)它会显示逐渐更新的数据(2k 4k,直到10k).这意味着数据以块的形式进入服务器(可能是一个再见).我如何一次性发送所有内容.这个问题表明它是使用mysql中的rewriteBatchedStatements实现的,我们在DB2中也有类似的东西.

我正在使用DataSource实现com.ibm.db2.jcc.DB2BaseDataSource

java spring-jdbc jdbctemplate db2-9.7

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

无法使用Java构建Maven:无法运行程序“ cmd”“格式错误的参数已嵌入引号”

我重新安装了netbean 11.1。现在,我正在尝试构建一个项目,但是出现以下错误输出:

无法运行程序“ cmd”(在目录“ C:\ projects \ open”中):格式错误的参数已嵌入引号:“ C:\ Program Files \ NetBeans-11.1 \ netbeans \ java \ maven \ bin \ mvn.cmd”

cd C:\projects\open; "JAVA_HOME=C:\\Program Files\\Java\\jdk-11.0.5" cmd /c "\"\"C:\\Program Files\\NetBeans-11.1\\netbeans\\java\\maven\\bin\\mvn.cmd\" -DskipTests=true -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans-11.1\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 clean install\"" Cannot run program "cmd" (in directory "C:\projects\open"): Malformed argument has embedded quote: "C:\Program Files\NetBeans-11.1\netbeans\java\maven\bin\mvn.cmd" -DskipTests=true -Dmaven.ext.class.path="C:\Program Files\NetBeans-11.1\netbeans\java\maven-nblib\netbeans-eventspy.jar" -Dfile.encoding=UTF-8 clean install
Run Code Online (Sandbox Code Playgroud)

我之前用netbeans 11.1构建了这个项目,但是有了新的pc。然后重新安装,我确定上次尝试安装所有内容时都没有问题。

java windows maven netbeans-11

8
推荐指数
5
解决办法
9679
查看次数

MockClassLoader无法访问jdk / internal / reflect超类jdk.internal.reflect.MagicAccessorImpl

我正在将项目迁移到Java9中,在切换到新的Java版本后,测试开始失败,看来PowerMock正在尝试访问一些它无法访问的类。

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.973 sec <<< FAILURE! - in com.Test
initializationError(com.Test)  Time elapsed: 0.007 sec  <<< ERROR!
org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by org/powermock/core/classloader/MockClassLoader cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl
Run Code Online (Sandbox Code Playgroud)

Maven-surefire-插件

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
            <include>**/*Test.groovy</include>
            <include>**/*Spec.*</include>
        </includes>
        <forkMode>always</forkMode>
        <argLine>--add-modules java.xml.bind</argLine>
        <argLine>--add-modules java.activation</argLine>
        <argLine>--add-opens=java.base/java.lang=ALL-UNNAMED --illegal-access=warn</argLine>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

powermock依赖

<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.7.4</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-all</artifactId>
            </exclusion> …
Run Code Online (Sandbox Code Playgroud)

java powermock maven powermockito

7
推荐指数
4
解决办法
6232
查看次数

如何找到 Windows 10 上 Java 的安装位置?

我最近在我的机器上安装了 Java(Java Runtime 1.8.121)。我需要设置 JAVA_HOME 并从安装它的 Java 文件夹中设置变量。

我在网上查看的所有地方都说 Java 文件夹应该位于 Program files (x86) 中,但是,却找不到它。它不在程序文件(x86)中,不在程序文件中。由于使用了软件中心,因此安装时我无法选择目的地。它简单地完成了安装。

有人可以帮我找到 Java 文件夹在哪里,以便我可以设置 JAVA_HOME 吗???!

java java-home appv windows-10

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

Maven pom.xml 中将 log4j2 的所有用法升级到 2.15.0(包括使用 log4j2 的依赖项)的最简单方法是什么?请参阅 CVE-2021-44228

log4j2 <= 2.14.1 发现严重安全漏洞(请参阅https://nvd.nist.gov/vuln/detail/CVE-2021-44228)。如何更新 Spring Boot 应用程序的 pom.xml 以确保 log4j2 的所有(递归)使用都使用版本 2.15.0?

security log4j log4j2 spring-boot log4shell

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

将 Springboot 应用程序隔离为电子邮件应用程序的 DEV 环境和 PROD 环境

我的 springboot 应用程序在 DEV 环境中运行良好,现在我想隔离 DEV 和 PROD 环境,以便它获取各自的代码。

我确实浏览了一些教程并获得了一些线索,但无法就如何分离出 PROD 部分得出结论。

这个应用程序基本上在从角度应用程序提交表单时向 gmail 发送电子邮件。这就是我到目前为止在 springboot 应用程序上所做的,以将其隔离。

我已经根据实际文件创建application-dev.properties并添加了两个单独的 gmail 帐户,一个用于 DEV,一个用于 PROD。并将配置文件添加到 POM.xmlapplication-prod.propertiesapplication.properties

有关如何从现有代码创建 PROD 环境的任何帮助都将非常有帮助。我对 springboot 以及如何针对不同环境进行分析还很陌生。

application.properties 文件(实际文件)是:

server.port=8084

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=test1@gmail.com
spring.mail.password=xxxxxxxxxxxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
Run Code Online (Sandbox Code Playgroud)

新的 application-dev.properties 文件

server.port=8084
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=test1@gmail.com
spring.mail.password=xxxxxxxxxxxxxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

spring.profiles.active=@activatedProperties@
Run Code Online (Sandbox Code Playgroud)

新的 application-prod.properties 文件

server.port=8085
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=test2@gmail.com
spring.mail.password=xxxxxxxxxxxxxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
Run Code Online (Sandbox Code Playgroud)

POM.xml 文件

<profile>
  <id>dev</id>
  <properties>
    <activatedProperties>dev</activatedProperties>
  </properties>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
</profile>
<profile>
  <id>prod</id>
  <properties>
    <activatedProperties>prod</activatedProperties>
  </properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

主要的EmailClientHmwApplication.java文件如下: …

email environment-variables spring-boot

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

从MySQL数据库删除数百万行的最快方法是什么?

我的数据库空间不足,因此我对旧记录进行了备份。现在,我必须清除这些记录,并且我的参考列是“日期”。

我尝试使用标准方法:

DELETE FROM table WHERE date >= '2017-01-01' AND date <= '2017-12-31'
Run Code Online (Sandbox Code Playgroud)

但这显然要花费太多时间,因为要删除的行超过700万行。有没有办法加快速度?我试图划分成几个月甚至更小的块,但是在运行代码一段时间后,我与服务器断开了连接。

提前致谢。

编辑:

CREATE TABLE table (

  id INT(11) NOT NULL AUTO_INCREMENT,
  date DATE DEFAULT NULL,
  # 18 more columns

  PRIMARY KEY (id)
)
ENGINE = INNODB,
AUTO_INCREMENT = 29616055,
AVG_ROW_LENGTH = 317,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_general_ci;
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

如何将句子拆分为固定长度的块而不会有效地断词?

输入:“这个过程持续了好几年,对于聋孩子来说,一个月甚至两三年内,无数的项目和表达方式都是用最简单的日常交际方式,听力小孩子从这些不断轮换和模仿他的谈话中学习到的。在他家里听到的模拟是我的,并提出主题并唤起他自己想法的自发表达。”

CHUNK_SIZE: 200, (可以说它有 200 个字符长)。

输出:

[“这个过程持续了好几年,对于聋子来说,在一个月甚至两三年内,使用最简单的日常交际的无数项目和表达很少”,

“听到孩子从这些不断的轮换和模仿中学习,他在家里听到的对话模拟是我的,并提出话题并唤起他自己的自发表达”,

“想法。”]

我知道一种方法是计算长度并检查我是否打破了任何单词等等,但有人告诉我这是非常低效和不可取的..所以我在这里寻求帮助。

javascript algorithm

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