小编Gil*_*ili的帖子

版本化RESTful服务?

我在http://example.com/v1/SomeResource上部署了RESTful Web服务.有一天,新的协议版本(不向后兼容)被部署到http://example.com/v2/SomeResource.从客户端看,此升级可能在两个HTTP请求之间的任何时间发生.

服务器如何向客户端指示它不再支持v1调用,并且客户端应该升级到v2?我可以使用适当的响应代码吗?

我想向客户提供以下信息:

  1. 发生了不兼容的升级.客户端无法使用新服务,因为协议可能完全不同.
  2. 新客户端软件的URL.
  3. 向用户解释他们必须升级的消息.

versioning rest

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

如何使用纯SQL选择N个随机行?

我们如何组合如何在SQL中请求随机行?SQL Server 2005中的多个随机值,使用单个纯SQL查询选择N个随机行?理想情况下,我希望尽可能避免使用存储过程.这甚至可能吗?

澄清:

  1. 纯SQL指的是尽可能接近ANSI/ISO标准.
  2. 解决方案应该"足够有效".授予ORDER BY RAND()可能会有效,但正如其他人所指出的那样,这对于中型桌子来说是不可行的.

sql random

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

所有事件驱动的框架都应该是单线程的吗?

http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html认为多线程GUI框架是一个失败的梦想.那么非GUI框架呢?这个经验法则是否扩展到所有事件驱动的框架?

以下是引起我注意的文章的引用:

输入事件处理的问题在于它倾向于以与大多数GUI活动相反的方向运行.通常,GUI操作从一堆库抽象的顶部开始并"向下".我在我的应用程序中运行一个由一些GUI对象表示的抽象概念,所以我从我的应用程序开始,调用高级GUI抽象,调用较低级别的GUI抽象,调用丑陋的内容.工具包,然后进入操作系统.相比之下,输入事件从OS层开始,逐步向上调度抽象层,直到它们到达我的应用程序代码.

现在,由于我们使用抽象,我们自然会在每个抽象中单独进行锁定.不幸的是,我们有经典的锁定订单噩梦:我们有两种不同类型的活动,希望获得相反订单的锁定.所以僵局几乎是不可避免的.

oop events multithreading

10
推荐指数
2
解决办法
1868
查看次数

如何将值映射回枚举?

给定枚举,其中每个实例都与某个值相关联:

public enum SQLState
{
  SUCCESSFUL_COMPLETION("00000"),
  WARNING("01000");

  private final String code;
  SQLState(String code)
  {
    this.code = code;
  }
}
Run Code Online (Sandbox Code Playgroud)

如何构建Map以进行有效的反向查找?我尝试了以下方法:

public enum SQLState
{
  SUCCESSFUL_COMPLETION("00000"),
  WARNING("01000");

  private final String code;
  private static final Map<String, SQLState> codeToValue = Maps.newHashMap();
  SQLState(String code)
  {
    this.code = code;
    codeToValue.put(code, this); // problematic line
  }
}
Run Code Online (Sandbox Code Playgroud)

但Java抱怨道:Illegal reference to static field from initializer.也就是说,静态Map 所有枚举值之后被初始化,因此您无法从构造函数中引用它.有任何想法吗?

java enums guava

10
推荐指数
1
解决办法
597
查看次数

为什么ImmutableMap.builder().build()选择正确的类型参数?

为什么Map<String, ?> test = ImmutableMap.builder().build();编译失败,但Map<String, ?> test = ImmutableMap.<String, Object>builder().build();工作正常?

第一个代码片段失败:

error: incompatible types
  Map<String, ?> test = ImmutableMap.builder().build();
                                                   ^
  required: Map<String,?>
  found:    ImmutableMap<Object,Object>
Run Code Online (Sandbox Code Playgroud)

我相信番石榴提交者意味着这个工作.

java guava

10
推荐指数
1
解决办法
2900
查看次数

ResourceContext.matchResource(URI)的Jersey 2替换是什么?

如何在Jersey 2.0下找出任意URI映射到的资源?在Jersey 1.x下,我使用ResourceContext.matchResource(URI).

我正在尝试做什么:我正在尝试处理通过URI引用另一个资源的传入请求.例如,这是一个将用户链接到部门的操作.

POST /departments/5
{
  "user": "http://example.com/users/10"
}
Run Code Online (Sandbox Code Playgroud)

POST/departments/5解决:

class DepartmentResource
{
  @POST
  void linkUser() { ... }
}
Run Code Online (Sandbox Code Playgroud)

为了兑现这个请求,我需要将URI解析回UserResource并从那里解析为其数据库ID.添加@Context UriInfolinkUser()不会帮助,因为这UriInfo相当于部门,而不是用户的URI.

更新:我在https://github.com/eclipse-ee4j/jersey/issues/2444上提交了一份错误报告

UPDATE2:发布了一个后续问题:Jersey2:从资源导航到实例

java jersey jersey-2.0

10
推荐指数
1
解决办法
2863
查看次数

什么是scrypt输出的最大长度?

我想在数据库中存储一个scrypt -hashed密码.我可以期待的最大长度是多少?

scrypt

10
推荐指数
1
解决办法
2628
查看次数

是否可以将方法引用转换为MethodHandle?

是否可以将方法引用(例如SomeClass::someMethod)转换为MethodHandle实例?我想要编译时检查的好处(确保存在类和方法)以及使用MethodHandleAPI 内省方法的能力.

用例:当且仅当请求未被特定方法触发时(以避免无限递归),我才需要执行代码.我想要一个编译时检查以确保类/方法存在但运行时检查以将调用者与方法进行比较.

所以回顾一下:是否可以将方法引用转换为MethodHandle

java java-8 methodhandle method-reference

10
推荐指数
1
解决办法
1033
查看次数

jmh表示M1比M2快,但M1代表M2

我写了一个JMH基准,涉及两种方法:M1和M2.M1引用M2但由于某种原因,JMH声称M1比M2快.

这是基准源代码:

import java.util.concurrent.TimeUnit;
import static org.bitbucket.cowwoc.requirements.Requirements.assertThat;
import static org.bitbucket.cowwoc.requirements.Requirements.requireThat;
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.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class MyBenchmark {

    @Benchmark
    public void assertMethod() {
        assertThat("value", "name").isNotNull().isNotEmpty();
    }

    @Benchmark
    public void requireMethod() {
        requireThat("value", "name").isNotNull().isNotEmpty();
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(MyBenchmark.class.getSimpleName())
                .forks(1)
                .build();

        new Runner(opt).run();
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,M1是assertThat(),M2是requireThat().意思,在引擎盖下assertThat()调用requireThat().

以下是基准输出:

# JMH …
Run Code Online (Sandbox Code Playgroud)

java performance-testing jmh

10
推荐指数
1
解决办法
339
查看次数

如何实现 CompletableFuture.allOf() 在任何 future 失败时异常完成?

CompletableFuture.allOf()我想实现和的混合,CompletableFuture.anyOf()其中一旦所有元素成功完成,返回的 future 就会成功完成,或者只要任何元素异常完成,它就会异常完成(具有相同的异常)。在多个元素失败的情况下,返回其中任何一个的异常就足够了。

用例

我有一个任务需要聚合CompletableFutures 列表返回的子结果,但是一旦其中任何一个失败,该任务就应该停止等待。我知道子任务将继续运行,这没关系。

相关问题

我发现等待未来的列表最初看起来像是一个重复的问题,但接受的答案使用CompletionService需要CallableRunnable作为输入。我正在寻找一种将已运行的CompletionStages 作为输入的解决方案。

java completable-future

10
推荐指数
1
解决办法
7575
查看次数