小编Yas*_*jaj的帖子

通过varargs参数潜在的堆污染

我理解当使用具有泛型类型的varargs时,Java 7会发生这种情况;

但我的问题是......

当Eclipse说"它的使用可能会污染堆?"时,Eclipse到底意味着什么呢?

@SafeVarargs注释如何阻止这种情况?

java eclipse generics variadic-functions

410
推荐指数
4
解决办法
10万
查看次数

模板方法和策略模式有什么区别?

有人可以向我解释模板方法模式和策略模式之间的区别是什么?

据我所知,它们是99%相同 - 唯一的区别是模板方法模式有一个抽象类作为基类,而策略类使用由每个具体策略类实现的接口.

但是,就客户而言,它们的使用方式完全相同 - 这是正确的吗?

design-patterns strategy-pattern template-method-pattern

155
推荐指数
8
解决办法
6万
查看次数

JSP:JSTL的<c:out>标记

编写JSP页面,究竟做了<c:out>什么?我注意到以下两者都有相同的结果:

<p>The person's name is <c:out value="${person.name}" /></p>
<p>The person's name is ${person.name}</p>
Run Code Online (Sandbox Code Playgroud)

java tags jsp jstl

109
推荐指数
4
解决办法
22万
查看次数

如何使用Java 8创建无限流

有没有一种简单的方法可以使用没有外部库的创建无限流?

例如在Scala中:

Iterator.iterate(0)(_ + 2)
Run Code Online (Sandbox Code Playgroud)

java java-8

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

通过Java运行cmd命令

我找到了几个用于通过Java类运行cmd命令的代码片段,但我无法理解它.

这是打开cmd的代码

public void excCommand(String new_dir){
    Runtime rt = Runtime.getRuntime();
    try {
        rt.exec(new String[]{"cmd.exe","/c","start"});

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我找到了一些其他链接来添加其他命令,如cd http://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java

如何使用Java打开命令提示符并插入命令?

任何人都可以帮助我了解如何cd目录,如:

 cd C:\Program Files\Flowella
Run Code Online (Sandbox Code Playgroud)

然后在该目录上运行其他命令?

java cmd cd

50
推荐指数
4
解决办法
24万
查看次数

龙目岛可选

我有一个类Address看起来像这样:

@Value
class Address {

   @NotNull String userId;
   @NotNull String line1;
   String line2;

   private Address(Builder b) {
      // copy everything from builder
   }

   // override getter for line2 so that it returns Optional<String>
   public Optional<String> getLine2() {
      return Optional.ofNullable(this.line2);
   }

   // and a Builder
   public static class Builder {
     // builder methods
   }
}
Run Code Online (Sandbox Code Playgroud)

在这里我被迫写Builder了一个Getter因为,如果我想在使用Lombok时返回一个Optional,我必须声明line2Optional<String>.这将生成一个接受的构建器方法Optional<String>!

还有其他方法可以使用lombok Optional吗?

java optional lombok

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

显示Java 8流处理的进度

Stream处理了几百万个元素.它背后的Map-Reduce算法需要几毫秒,因此任务完成大约需要20分钟.

Stream<MyData> myStream = readData();
MyResult result = myStream
    .map(row -> process(row))
    .peek(stat -> System.out.println("Hi, I processed another item"))
    .reduce(MyStat::aggregate);
Run Code Online (Sandbox Code Playgroud)

我想要一种显示整体进度的方法,而不是每个元素打印一行(这导致每秒数千行,需要时间,并且不提供有关整体进度的任何有用信息).我想展示类似于:

 5% (08s)
10% (14s)
15% (20s)
...
Run Code Online (Sandbox Code Playgroud)

最好(和/或最简单)的方法是什么?

java java-8 java-stream

28
推荐指数
2
解决办法
2119
查看次数

增量逻辑

我正试图深入了解post和pre incrementors,但是我对以下表达式有点困惑:

public static void main(String[] args) {
    int i = 0;
    i = i+=(++i + (i+=2 + --i) - ++i);
    // i = 0 + (++i + (i+=2 + --i) - ++i);
    // i = 0 + (1 + (3 + 2) - 1);
    // i = 0 + (6 - 1);
    System.out.println(i); // Prints 0 instead of 5
}
Run Code Online (Sandbox Code Playgroud)

我知道我在哪里错过了逻辑,但在哪里?

我尝试过的:

  • 从左到右(虽然我知道不推荐)
  • 从内部支架开始,从那里开始.

谢谢您的帮助

PS:评论是我的微积分的细节

编辑1

我试图将de hard编码值从表达式2改为其他东西,结果总是给出0

看看这个例子:

    int i = 0;
    i = …
Run Code Online (Sandbox Code Playgroud)

java logic pre-increment post-increment

21
推荐指数
2
解决办法
1285
查看次数

如何清除Oracle AQ中的队列

我第一次测试Oracle AQ.我已经设法在我创建的队列中创建了2000行测试插入.

现在,我想清除那些.在我自学的时候,我将到期时间定为一个月.我不能等那么久.我不认为我应该从队列表中删除它们.

最好的方法是什么?

oracle queue jms oracle-aq

20
推荐指数
1
解决办法
6万
查看次数

从Java调用Oracle函数

我在使用ojdbc14.jar从Java 1.6调用Oracle FUNCTION(不是存储过程)时遇到问题.

我不知道函数包含什么,因为我从远程服务器调用它,我所知道的是:

FUNCTION ap_ch_get_acct_balances (VAR_PI_MOB_NO_ACCT_NO VARCHAR2,
VAR_REPLY_CODE OUT NUMBER, VAR_EXT_RESPONSE OUT VARCHAR2, VAR_PO_ACC_BAL OUT CHAR,
VAR_PO_ACCT_NO OUT CHAR)   
Run Code Online (Sandbox Code Playgroud)

我需要使用的架构是:FCRLIVE.AP_CH_GET_ACCT_BALANCES

我在尝试这个:

String call = "{ ? = call FCRLIVE.AP_CH_GET_ACCT_BALANCES(?, ?, ?, ?, ?) }";
CallableStatement cstmt = conn.prepareCall(call);
cstmt.setQueryTimeout(1800);
cstmt.setString(1, inputCode);
cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.NUMBER);
cstmt.registerOutParameter(3, oracle.jdbc.OracleTypes.VARCHAR);
cstmt.registerOutParameter(4, oracle.jdbc.OracleTypes.CHAR);
cstmt.registerOutParameter(5, oracle.jdbc.OracleTypes.CHAR);
cstmt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

但我一直在日志文件中看到这个:

java.sql.SQLException: ORA-01006: bind variable does not exist
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2688)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
Run Code Online (Sandbox Code Playgroud)

我称这个功能错了吗?或者这可能是什么?

在此先感谢您的帮助!

java oracle jdbc

18
推荐指数
1
解决办法
5万
查看次数