小编Bob*_*ous的帖子

315
推荐指数
15
解决办法
53万
查看次数

Objects.requireNonNull效率低于旧方法吗?

从JDK 7开始,我一直很乐意使用它引入的方法来拒绝null传递给不能接受它们的方法的值:

private void someMethod(SomeType pointer, SomeType anotherPointer) {
    Objects.requireNonNull(pointer, "pointer cannot be null!");
    Objects.requireNonNull(anotherPointer, "anotherPointer cannot be null!");
    // Rest of method
}
Run Code Online (Sandbox Code Playgroud)

我认为这种方法可以使代码非常整齐,易于阅读,我正在努力鼓励同事使用它.但是一位(特别是知识渊博的)同事很有耐心,并说老方法更有效率:

private void someMethod(SomeType pointer, SomeType anotherPointer) {
    if (pointer == null) {
        throw new NullPointerException("pointer cannot be null!");
    }
    if (anotherPointer == null) {
        throw new NullPointerException("anotherPointer cannot be null!");
    }
    // Rest of method
}
Run Code Online (Sandbox Code Playgroud)

他说调用requireNonNull涉及在JVM调用堆栈上放置另一个方法,并且会导致比简单== null检查更差的性能.

所以我的问题是:有没有证据表明使用这些Objects.requireNonNull方法会导致性能损失?

java performance null

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

无法确定当前目录

我试图运行在Netbeans中成功创建的.jar文件,我收到以下错误:

VM初始化期间发生错误java.lang.Error:属性init:无法确定当前工作目录.at java.lang.System.initProperties(Native Method)at java.lang.System.initializeSystemClass(System.java:1070)

我键入以运行.jar的命令是

java -jar "/path to the dist forlder/EOPPrototype.jar"
Run Code Online (Sandbox Code Playgroud)

我的类路径如下:

CLASSPATH=/opt/netbeans-7.1.2/ide/modules/ext/mysql-connector-java-5.1.13-     bin.jar:/h/USERS/local/pagola/NetBeansProjects/mylib/dist/mylib.jar:/h/USERS/local/pagola/NetBeansProjects/EOPPrototype/build/classes:.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java jvm

58
推荐指数
4
解决办法
6万
查看次数

更改DecimalFormat区域设置

DecimalFormat在Edittext的addTextChangedListener方法中有自定义,一切都很完美,但是当我更改语言(语言环境)时,我的addTextChangedListener无效.

double answer = inputDouble * counterToDouble;
DecimalFormat df = new DecimalFormat("##.########");
// df=(DecimalFormat)numberFormat;

df.setRoundingMode(RoundingMode.DOWN);
answer = Double.parseDouble(df.format(answer));

unicoinsAmmount.setText(String.valueOf(df.format(answer)));
Run Code Online (Sandbox Code Playgroud)

我搜索了我的问题并找到了NumberFormat解决方案:

NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用这段代码.

java android bigdecimal decimalformat

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

如何使用java.net.http.HttpClient记录请求/响应?

实验性地在Java 9中引入的HttpClient现在在Java 11中是稳定的,但毫不奇怪,很少有项目似乎实际使用它.文档几乎不存在.

在进行HTTP调用时,最常见的一个问题是记录请求/响应.你如何使用HttpClient,而不是在每次通话中手动记录它?是否有像所有其他HTTP客户端提供的拦截器机制?

java logging java-9 java-http-client java-11

9
推荐指数
3
解决办法
3267
查看次数

是否可以拦截 Java 11 HttpClient 请求?

基本上如标题所说。Apache HttpClient 和 Spring RestTemplate 允许定义自定义拦截器,这些拦截器环绕请求/响应并允许额外(全局)修改请求参数、日志记录等......

我在标准 Java 实现中没有看到这样的功能java.net.http.HttpClient(从 Java 11 开始)。我是否遗漏了某些东西,或者没有办法在单个上拦截所有请求/响应HttpClient

java http interceptor java-http-client

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

电子邮件验证链接是个坏主意

在我的注册过程中,用户注册,他们会通过电子邮件发送验证链接,如果他们点击它,那么他们的帐户才会被验证.但这种验证方法对于僵尸程序来说不是太容易了吗?

我认为电子邮件可以由机器人创建,但是如果验证只是点击链接,它也可以由机器人自动完成.我不确定,因为我没有这样做而且不关心测试它只是为了知道,但我的问题是这个验证方法是不是有缺陷?

我正在考虑将验证码作为文本发送给用户,他们必须将其手动复制/粘贴到表单中,并且表单受验证码保护.这是一个更好的主意吗?有任何缺陷吗?

php security registration email-verification

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

从数组生成所有连续序列

有一个数组说 [1,2,4,5,1]。我需要从中打印所有连续的子数组。

输入: [1,2,4,5,1]

输出:

 1
 1,2
 1,2,4
 1,2,4,5
 1,2,4,5,1
 2
 2,4
 2,4,5
 2,4,5,1
 4
 4,5
 4,5,1
 5
 5,1
 1
Run Code Online (Sandbox Code Playgroud)

我尝试过,但无法获得完整的系列。

//items is the main array
for(int i = 0; i < items.length; i++) {
    int num = 0;
    for(int j = 0; j < items.length - i; j++) {
        for(int k = i; k < j; k++) {
            System.out.print(items[k]);
        }
        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays logic

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

使用lambda表达式键入推理限制

虽然Java 8的类型推断看起来有了很大的改进,但我遇到了一个可能的限制,我不确定是否有一些我缺少的解决方法.场景:

class Foo<T> {
  <U> void apply(Function<T, Consumer<U>> bar) {}
}

class Bar {
  void setBar(String bar){}
}

Foo<Bar> foo = new Foo<>();
Run Code Online (Sandbox Code Playgroud)

这有效:

foo.<String>apply(bar -> bar::setBar);
Run Code Online (Sandbox Code Playgroud)

这不是:

foo.apply(bar -> bar::setBar);
Run Code Online (Sandbox Code Playgroud)

有没有办法让类型推断在这种情况下工作?

java lambda type-inference java-8

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

Java HTTP 客户端是否处理压缩

我试图在新的 Java HTTP 客户端中找到任何关于压缩处理的提及,但失败了。是否有内置配置来处理例如gzipdeflate压缩?

我希望有一个BodyHandler例如这样的东西:

HttpResponse.BodyHandlers.ofGzipped(HttpResponse.BodyHandlers.ofString())
Run Code Online (Sandbox Code Playgroud)

但我没有看到。我也没有看到任何配置HttpClient。我是不是找错地方了,还是故意没有实现并推迟支持库?

java java-http-client java-11

7
推荐指数
3
解决办法
4224
查看次数