例如,这个正则表达式
(.*)<FooBar>
Run Code Online (Sandbox Code Playgroud)
将匹配:
abcde<FooBar>
Run Code Online (Sandbox Code Playgroud)
但是如何让它在多行中匹配呢?
abcde
fghij<FooBar>
Run Code Online (Sandbox Code Playgroud) 从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方法会导致性能损失?
我试图运行在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)
我错过了什么?
我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 9中引入的HttpClient现在在Java 11中是稳定的,但毫不奇怪,很少有项目似乎实际使用它.文档几乎不存在.
在进行HTTP调用时,最常见的一个问题是记录请求/响应.你如何使用HttpClient,而不是在每次通话中手动记录它?是否有像所有其他HTTP客户端提供的拦截器机制?
基本上如标题所说。Apache HttpClient 和 Spring RestTemplate 允许定义自定义拦截器,这些拦截器环绕请求/响应并允许额外(全局)修改请求参数、日志记录等......
我在标准 Java 实现中没有看到这样的功能java.net.http.HttpClient(从 Java 11 开始)。我是否遗漏了某些东西,或者没有办法在单个上拦截所有请求/响应HttpClient?
在我的注册过程中,用户注册,他们会通过电子邮件发送验证链接,如果他们点击它,那么他们的帐户才会被验证.但这种验证方法对于僵尸程序来说不是太容易了吗?
我认为电子邮件可以由机器人创建,但是如果验证只是点击链接,它也可以由机器人自动完成.我不确定,因为我没有这样做而且不关心测试它只是为了知道,但我的问题是这个验证方法是不是有缺陷?
我正在考虑将验证码作为文本发送给用户,他们必须将其手动复制/粘贴到表单中,并且表单受验证码保护.这是一个更好的主意吗?有任何缺陷吗?
有一个数组说 [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 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 HTTP 客户端中找到任何关于压缩处理的提及,但失败了。是否有内置配置来处理例如gzip或deflate压缩?
我希望有一个BodyHandler例如这样的东西:
HttpResponse.BodyHandlers.ofGzipped(HttpResponse.BodyHandlers.ofString())
Run Code Online (Sandbox Code Playgroud)
但我没有看到。我也没有看到任何配置HttpClient。我是不是找错地方了,还是故意没有实现并推迟支持库?
java ×8
java-11 ×2
android ×1
arrays ×1
bigdecimal ×1
http ×1
interceptor ×1
java-8 ×1
java-9 ×1
jvm ×1
lambda ×1
logging ×1
logic ×1
multiline ×1
null ×1
performance ×1
php ×1
regex ×1
registration ×1
security ×1