小编Whi*_*cal的帖子

创建一个ResourceConfig,其行为与默认Jetty的Jersey注册相同

我有一个端点:

@POST
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String canaryTest(String JSON) {
    return JSON;
}
Run Code Online (Sandbox Code Playgroud)

当我使用Jersey在Jetty中注册时

ServletHolder holder = new ServletHolder(new ServletContainer());
Run Code Online (Sandbox Code Playgroud)

一切似乎都很好.但是,如果我尝试明确指定默认配置,它将停止工作(从端点返回媒体类型错误).即使只是将ResourceConfig的默认实例传递给ServletContainer,它也会停止工作.

ResourceConfig config = new ResourceConfig();
//config.property(x,defaultX)
//config.property(y,defaultY)
ServletHolder holder = new ServletHolder(new ServletContainer(config));
Run Code Online (Sandbox Code Playgroud)

我想手动和显式地模拟默认配置行为,所以我在这里要问的是我应该如何配置ResourceConfig以使行为保持工作(即,要设置的属性)

PS:我正在使用Jetty 9.2.6.v20141205和Jersey 2.14.Maven中的依赖关系:

  • org.eclipse.jetty.jetty-server org.eclipse.jetty.jetty-servlet
  • org.eclipse.jetty.jetty-的servlet
  • org.glassfish.jersey.containers.jersey-容器servlet的芯
  • com.sun.jersey.jersey-JSON
  • org.glassfish.jersey.media.jersey-媒体JSON - 杰克逊

java json jetty jax-rs jersey

4
推荐指数
1
解决办法
5399
查看次数

Java8 Streams 中的惰性排序(),需要在每次迭代时求助

我正在寻找一种方法来模拟 Java 8 流的以下行为。给定一个年份流,对它们进行排序,以便输出前 10 个值,这样在输出一年后,该值就会减少,并且迭代会再次重新开始:

如果我输入 2005 年、2020 年、2000 年、1967 年和 2018 年,我预计会得到以下结果(限制为 10):

2020
2019
2018 2018  
2017 2017
2016 2016 2016
2015 ...
Run Code Online (Sandbox Code Playgroud)

我正在使用的测试是:

public class LazyTest {

    public static void main(String[] args) {
        Stream.of(2005,2020,2000,1967,2018)
              .map(YearWrapper::new)
              .sorted()
              .limit(10)
              .peek(year -> year.decreaseYear())
              .forEach(System.out::println);
    }

    public static class YearWrapper implements Comparable<YearWrapper>{
        private int currentYear;

        public YearWrapper(int year){
            this.currentYear=year;
        }
        public void decreaseYear(){
            currentYear--;
        }
        @Override
        public int compareTo(YearWrapper yearsToCompare) {
            return Integer.compare(yearsToCompare.currentYear, this.currentYear);
        }

        @Override
        public String toString(){
            return …
Run Code Online (Sandbox Code Playgroud)

sorting lambda lazy-evaluation java-8 java-stream

4
推荐指数
1
解决办法
1140
查看次数

标签选择器与名称空间

似乎有2种方式对Pod进行逻辑分组,分别是:

  • 使用标签以松散耦合的方式识别组织单位
  • 创建名称空间

到底有什么区别和用例?

containers kubernetes

4
推荐指数
1
解决办法
1819
查看次数

Java Generics Silly Thing(为什么我不能推断出这种类型?)

我会尽量做空,因为这个问题还没有得到很好的回答.经过长时间的解释,请参阅此简报.

我将展示我想做的事情.像这样的东西(从构造函数中推断传入的类型,以便在另一个方法getLeaderHerd中使用它作为返回类型)...:

public class ZooCage{

    private CageFamily<T> inhabitants;  

    public <T>ZooCage(CageFamily<T> herd) {
        this.inhabitants=herd;      
    }

    public T getHerdLeader() {
        return inhabitants.getLeader();
    }   
}
Run Code Online (Sandbox Code Playgroud)

或这个

public class ZooCage{

    private (Type) T;   

    public ZooCage(CageFamily<T> herd) {
        this.T=T;       
    }

    public T getHerdLeader() {
        return inhabitants.getLeader();
    }   
}
Run Code Online (Sandbox Code Playgroud)

所以我可以从Main调用类似的东西:

ZooCage cage = new ZooCage(new CageFamily<Lion>()); //Imagine new CageFamily its not empty
Lion leader = cage.getHerdLeader();
Run Code Online (Sandbox Code Playgroud)

即使它不可能,为什么我认为这是不合理的功能?它的类型是安全的,如果编译器是智能的并且不那么冗余,那就是没有必要的类ZooCage

我,正在评估使用泛型的特定行为.我设法让它工作,但我不明白为什么我不能从arg中推断出类型.因此,我创建了这个示例,该示例在没有警告的情况下运行正常,目的是简化实际架构.

(直接查看最后的2行代码段以获得快速简报)

假设我有这两个课程.目标之一:

package Zoo;
import Zoo.Main.CageFamily;
import Zoo.Main.Vertebrate;

public class ZooCage<T extends Vertebrate>{

    private CageFamily<T> inhabitants;  

    public ZooCage(CageFamily<T> …
Run Code Online (Sandbox Code Playgroud)

java generics types inference

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

比较器中的equals()vs compareTo()/能(理论)

我不明白Javadoc:

The natural ordering for a class C is said to be consistent with equals if and only if
  (e1.compareTo((Object)e2) == 0) has the same boolean value as e1.equals((Object)e2) for
  every e1 and e2 of class C.
Run Code Online (Sandbox Code Playgroud)

为什么要那样?

我知道e1.equals(e2)= true应该始终意味着e1.compareTo(e2)== 0,但我无法理解为什么相反应该是真的.比较不平等!2个相等的对象应该与零进行比较,但是如果排序标准与它们的情况不相关,则2个不同的对象应该能够比较0.我的意思是,让不同的对象等于不正确,但不同的对象与0比较为什么不呢?

编辑:后来它表示强烈建议一致性,因为一些兼容性问题,因此问题

java collections equals comparable comparator

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

了解Liferay中的子页面层次结构

我将通过4个简单的问题总结逻辑:

  1. 私有页面可以/应该有公共子页面吗?(似乎私人页面正在为任何组/用户使用其他网站或上下文)
  2. 可以/应该公共页面是否有私人子页面?
  3. 可以/应该隐藏的页面是否有非隐藏的子页面?
  4. 可以/应该某个用户不允许进入VIEW的页面是否有允许某个用户看到的子页面?

以前的一些场景是否会改变父页面的行为?我的意思是,允许您对子页面的权限会使您自动获得查看父页面的权限.

此外,hidden和*non-hidde*n页面之间有什么区别?我可以通过链接浏览!

portlet private liferay

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

Collections.sort是否尊重绑定的输入元素中的索引?(分类稳定性)

例如,如果我按List<Individual>10人排序Individual::Age,我输入Alice(3),Bob(5)和Charles(3),输出将是Alice(3),Charles(3),Bob(5)或者是爱丽丝和查尔斯有可能以一种不同于输入的顺序输出它们的方式进行交换吗?

编辑:
似乎他的财产有一个正确的名称:https://en.wikipedia.org/wiki/Sorting_algorithm#Stability

java sorting collections comparator

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

在Maven中存储汇编文件的正确位置是什么?

在Maven的汇编指南(https://maven.apache.org/guides/mini/guide-assemblies.html)中,声明:

您会注意到程序集描述符位于$ {project.basedir}/src/assembly中,这是程序集描述符的标准位置.

但是在maven程序集插件页面(https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html)中,它说:

注意:程序集描述符必须位于目录/ src/main/resources/assemblies中才能用于Assembly Plugin.

他们是两个不同的东西?他们中的任何一个都过时了吗?

java maven maven-assembly-plugin

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

在不使用数组时,是否有任何理由将循环的迭代从零而不是一个初始化?

我的意思是

for (int i=1; i<7; i++) 
Run Code Online (Sandbox Code Playgroud)

当纯粹用于迭代次数时,它更具可读性

for (int i=0; i<6; i++)
Run Code Online (Sandbox Code Playgroud)

但有些另一种方法已经成为标准.

你怎么看?这是一种不好的做法还是气馁?

java loops for-loop initialization

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

随机/随机比较器

有没有办法模拟Collections.shuffle的行为而没有比较器易受排序算法实现的影响,结果是安全的?

我的意思是不打破可比合同等.

java sorting collections java-8

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