小编use*_*900的帖子

java程序中的抽象

为什么输出如下?

自行车创建

安全运行..

装备改变了

因为我们不是Bike()在任何地方调用方法.

abstract class Bike {
    Bike() {
        System.out.println("bike is created");
    }

    abstract void run();

    void changeGear() {
        System.out.println("gear changed");
    }
}

//Creating a Child class which inherits Abstract class  
class Honda extends Bike {
    void run() {
        System.out.println("running safely..");
    }
}

//Creating a Test class which calls abstract and non-abstract methods  
class TestAbstraction2 {
    public static void main(String args[]) {
        Bike obj = new Honda();
        obj.run();
        obj.changeGear();
    }
}
Run Code Online (Sandbox Code Playgroud)

java constructor abstract-class

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

Eclipse - 声纳 S2629 可能误报新字符串

我正在使用最新的 Eclipse 和 Sonar 插件

回答日志记录时,有以下行:

log.debug("Request body: {}", new String(body, "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

只有在调试级别时才应该创建字符串:

/**
 * Log a message at the DEBUG level according to the specified format
 * and argument.
 * <p/>
 * <p>This form avoids superfluous object creation when the logger
 * is disabled for the DEBUG level. </p>
 *
 * @param format the format string
 * @param arg    the argument
 */
public void debug(String format, Object arg);
Run Code Online (Sandbox Code Playgroud)

但声纳将其标记为squid:S2629

“前提条件”和日志参数不应该需要求值 (squid:S2629)

并给出串联的例子

logger.log(Level.DEBUG, "出现问题:" + …

java eclipse sonarqube sonarlint-eclipse

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

与 HikariCP 的并发

我有一个java程序,它更新oracle数据库中的表。

我已经尝试使用单个 JDBC 连接,但速度非常慢,需要几个小时才能完成。

我正在尝试使用 HikariCP 来创建连接池,并让多个线程从池中获取单独的连接。

假设池中有 6 个线程和 5 个数据库连接,其中 5 个线程调用该HikariDataSource.getConnection()方法。他们每个人都会得到一个单独的数据库连接对象吗?

如果是,那么当线程调用 getConnection 方法或使用空连接执行剩余代码时,该线程是否会处于阻塞/等待状态?

如果不是,我如何让它们分开连接?

java concurrency multithreading jdbc hikaricp

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

使用`--multi-release`选项的jdeps命令失败

我运行了以下命令,但我得到了同样的错误:

$ jdeps --generate-module-info . --multi-release 9 libs/log4j-core-2.11.1.jar
Error: log4j-core-2.11.1.jar is a multi-release jar file but --multi-release option is not set

$ jdeps --generate-module-info . --multi-release 10 libs/log4j-core-2.11.1.jar
Error: log4j-core-2.11.1.jar is a multi-release jar file but --multi-release option is not set

$ jdeps --generate-module-info . --multi-release 11 libs/log4j-core-2.11.1.jar
Error: log4j-core-2.11.1.jar is a multi-release jar file but --multi-release option is not set

$ jdeps --generate-module-info . libs/log4j-core-2.11.1.jar
Error: log4j-core-2.11.1.jar is a multi-release jar file but --multi-release option is not set
Run Code Online (Sandbox Code Playgroud)

上述命令有什么问题? …

java log4j java-9 jdeps java-11

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

Spring @Async 与可完成的未来运行异步

我可能做错了什么。所以,我有春天@Async

假设我有这段代码

@Async("poolbeanname") 
Function () {
     // some code 
}
Run Code Online (Sandbox Code Playgroud)

我还有一个,假设我有这段代码

@Async("poolbeanname") 
Function () {
     CompletableFuture.runAsync{ new Runnable ()...} 
} 
Run Code Online (Sandbox Code Playgroud)

现在,通过第二个代码,我可以看到,生成了一些线程,但第一种方法似乎没有生成多个线程?

java spring asynchronous spring-boot

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

apache-commons-csv println 方法不会在输出中打印换行符

我是 apache-commons-csv 1.6 的新手

我有一个基本要求,即打印 csv 文件,其中每条记录都换行。我正在尝试使用 CSVPrinter 的 println 方法。由于某些奇怪的原因,输出文件没有任何换行符。所有内容都打印在一行中。

我尝试在 Notepad++ 中打开输出并显示不可打印的字符。记录之间没有字符。任何帮助将不胜感激。谢谢。

CSVPrinter csvPrinter = null;

if(delimiter != null && delimiter.length() > 0) {
    csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.newFormat(delimiter.charAt(0)).withHeader(header));
}else {
    csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.DEFAULT.withHeader(header));
}

for(Map<String,String> record : inputList) {
    List<String> valueList = new ArrayList<String>();
    for(String key : record.keySet()) {
        valueList.add(record.get(key));
    }
    System.out.println(valueList);
    csvPrinter.printRecord(valueList);
    csvPrinter.println();
}
csvPrinter.close();
Run Code Online (Sandbox Code Playgroud)

预期结果:

id|类型|值|键

4|excel|0|excel.sheet.no

5|excel|日/月/年|excel.日期.格式

6|excel|0|excel.baserate.rownum

实际结果: id|type|value|key4|excel|0|excel.sheet.no5|excel|dd/MM/yyyy|excel.date.format6|excel|0|excel.baserate.rownum

java newline apache-commons-csv

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

Spring DI 同时有两个构造函数

这是一种反模式,但我很好奇实际会发生什么。

如果显式定义一个无参数构造函数和一个带自动装配参数的构造函数,spring框架将如何初始化它?

@Service
class Clazz {

    private MyBean myBean;

    public Clazz(){}

    @Autowired
    public Clazz(MyBean myBean){
        this.myBean = myBean;
    }
}
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection javabeans multiple-constructors

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

观察者模式 vs 事件总线消息方法

我一直在密切关注 MVC 实现和事件总线。

为什么不使用 Event-bus 而不是 Observer Pattern 来实现 MVC 应用程序?

例如,可以说我有两个类ModelView,在这将是典型的观察者模式:

public class Model implements Subject { ... }

public class View implements Observer { ... }
Run Code Online (Sandbox Code Playgroud)

相反,使用绿色机器人事件总线或任何其他事件总线的方法有什么好处/缺点?

它会是这样的:

public class Model {
   private int field = 0; 

   void someFunctionNowTriggerStateChange() {
     this.field = field + 1;
     ...EventBus.getDefault().post(this); //pass itself as the event
   }
}

public class View {

  @Subscribe onModelUpdated(Model model) {
    updateTextLabel(model);
    //other model updates
  }   
}
Run Code Online (Sandbox Code Playgroud)

与典型的观察者相比,使用 EventBus 实现 MVC 有哪些问题(如果有)?

java architecture oop model-view-controller design-patterns

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

将 org.apache.avro.util.Utf8 转换为 java.lang.String

我用 avro 库编写了一个示例。它User从 schema生成 java 类源代码record User

我想编码Userbyte[],然后解码byte[]User

解码时,我收到错误消息:

java.lang.ClassCastException: org.apache.avro.util.Utf8 cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)

如何转换org.apache.avro.util.Utf8为java String

java avro

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

Gradle - 与because语句的依赖关系

我是 gradle 新手,我在 build.gradle.kts 中找到了依赖项,因为子句/语句

dependencies { 
  implementation("commons-io:commons-io") {
      because("IOUtils")
  }
  implementation("org.apache.commons:commons-text") {
      because("StringEscapeUtils")
  }
Run Code Online (Sandbox Code Playgroud)

我没有在任何Gradle 依赖项文档中找到because子句

它是否只是一个类似于添加 java 文档的自定义子句,并且可以重命名为任何字符串:myreason("""my reason is other""")

或者becasueGradle 使用了语句?

java dependency-management gradle

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