小编Gil*_*ili的帖子

杰克逊:如果财产遗失会怎样?

如果我使用注释构造函数参数@JsonProperty但Json没有指定该属性会发生什么.构造函数得到什么价值?

如何区分具有空值的属性与JSON中不存在的属性?

java jackson

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

如何在JDBC中启动事务?

Connection.setTransactionIsolation(int) 警告:

注意:如果在事务期间调用此方法,则结果是实现定义的.

这提出了一个问题:如何在JDBC中开始事务?很清楚如何结束交易,但不知道如何开始交易.

如果a Connection在事务内部启动,我们应该如何在事务Connection.setTransactionIsolation(int)外部调用以避免特定于实现的行为?

java transactions jdbc

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

如何调试RESTful服务?

我正在寻找一种简单的方法来调试RESTful服务.例如,大多数Web应用程序都可以使用普通的Web浏览器进行调试.不幸的是,相同的浏览器不允许我测试HTTP PUT,DELETE,甚至在某种程度上测试HTTP POST.

我不打算自动化测试.我想通过快速的健全性检查来运行新服务,理想情况下无需编写自己的客户端.

debugging rest http

57
推荐指数
5
解决办法
6万
查看次数

如何编码URI参数值?

我想发送一个URI作为查询/矩阵参数的值.在我将它附加到现有URI之前,我需要根据RFC 2396对其进行编码.例如,给定输入:

http://google.com/resource?key=value1 & value2

我期待输出:

http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2

java.net.URLEncoder不会也java.net.URI不会产生正确的输出.URLEncoder用于HTML格式编码,与RFC 2396不同.URI没有一次编码单个值的机制,因此无法知道value1和value2是同一个键的一部分.

java rest url urlencode rfc2396

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

RESTful设计:何时使用子资源?

在设计资源层次结构时,何时应该使用子资源?

我曾经认为,当一个资源不能存在而没有另一个资源时,它应该被表示为它的子资源.我最近跑过这个反例:

  • 所有公司的员工都是唯一可识别的.
  • 员工的访问控制和生命周期取决于公司.

我把它建模为: /companies/{companyName}/employee/{employeeId}

请注意,我不需要查找公司以找到员工,我也应该这样做?如果我这样做,我付出代价来查找我不需要的信息.如果我不这样做,这个URL错误地返回HTTP 200:

/companies/{nonExistingName}/employee/{existingId}

  1. 我应该如何表示属于另一个资源的事实?
  2. 我应该如何表示没有另一个资源无法识别资源的事实?
  3. 子资源意味着什么关系,而不是模型?

rest api-design

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

Java 11 - 针对Java 8的性能回归?

更新:看到每个方法可能会遇到不同的性能问题,我决定将这个问题分成两个:

  1. Java 11中的空方法明显慢于Java 8
  2. 在Java 11中使用堆栈跟踪的速度明显慢于Java 8

最初的讨论可以在下面找到......


当我遇到一些令人惊讶的数据时,我正在比较我的库在Java 8和11下的性能.这是基准代码:

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.infra.Blackhole;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.concurrent.TimeUnit;

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class MyBenchmark
{
    @Benchmark
    public void emptyMethod()
    {
    }

    @Benchmark
    public void throwAndConsumeStacktrace(Blackhole bh)
    {
        try
        {
            throw new IllegalArgumentException("I love benchmarks");
        }
        catch (IllegalArgumentException e)
        {
            StringWriter sw = new StringWriter();
            e.printStackTrace(new PrintWriter(sw));
            bh.consume(sw.toString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行jmh 1.21,OracleJDK 1.8.0_192返回:

MyBenchmark.emptyMethod                avgt   25      0.363 ±   0.001  ns/op
MyBenchmark.throwAndConsumeStacktrace  avgt …
Run Code Online (Sandbox Code Playgroud)

performance microbenchmark java-8 jmh java-11

54
推荐指数
0
解决办法
3695
查看次数

如何使用JarOutputStream创建JAR文件?

如何使用编程方式创建JAR文件java.util.jar.JarOutputStream?我的程序生成的JAR文件看起来是正确的(它提取正常)但是当我尝试从中加载库时,Java抱怨它无法找到明确存储在其中的文件.如果我提取JAR文件并使用Sun的jar命令行工具重新压缩它,则生成的库可以正常工作.简而言之,我的JAR文件有问题.

请解释如何以编程方式创建JAR文件,并使用清单文件.

java jar

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

如何使用Flyway回滚迁移?

MyBatis迁移将每个SQL文件拆分为两个部分:

  1. 一个用于向前迁移一个版本
  2. 一个用于迁移一个版本

如何使用Flyway回滚版本?

java database flyway

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

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

为什么lambda会在抛出运行时异常时更改重载?

跟我说,介绍有点啰嗦,但这是一个有趣的难题.

我有这个代码:

public class Testcase {
    public static void main(String[] args){
        EventQueue queue = new EventQueue();
        queue.add(() -> System.out.println("case1"));
        queue.add(() -> {
            System.out.println("case2");
            throw new IllegalArgumentException("case2-exception");});
        queue.runNextTask();
        queue.add(() -> System.out.println("case3-never-runs"));
    }

    private static class EventQueue {
        private final Queue<Supplier<CompletionStage<Void>>> queue = new ConcurrentLinkedQueue<>();

        public void add(Runnable task) {
            queue.add(() -> CompletableFuture.runAsync(task));
        }

        public void add(Supplier<CompletionStage<Void>> task) {
            queue.add(task);
        }

        public void runNextTask() {
            Supplier<CompletionStage<Void>> task = queue.poll();
            if (task == null)
                return;
            try {
                task.get().
                    whenCompleteAsync((value, exception) -> runNextTask()).
                    exceptionally(exception …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 functional-interface

47
推荐指数
4
解决办法
1682
查看次数