小编sp0*_*00m的帖子

自动为我的webapp添加"www"子域

如何设置Tomcat自动重定向到"www"?如果用户输入我的域名,我希望如下:

mydomain.com

他将被重定向到:www.mydomain.com

java tomcat web-applications url-rewriting

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

两种不同类型的两个空对象的比较

public void m1(Integer f) {
    ...
}

public void m1(Float f) {
    ...
}

public void main() {
    m1(null); // error: the method m1(Integer) is ambiguous for the type Main
    m1((Integer) null); // success
}
Run Code Online (Sandbox Code Playgroud)

鉴于上面的例子中,我们可以承认在某些方面null被打出来.那么为什么要打印以下行true?当然o1,o2两者都没有价值(即null),但它们不是同一类型(Integervs Float).我首先想到false会被打印出来.

Integer i = null;
Object o1 = (Object) i;
Float f = null;
Object o2 = (Object) f;
System.out.println(o1 == o2); // prints true

// in …
Run Code Online (Sandbox Code Playgroud)

java comparison null types

6
推荐指数
1
解决办法
1025
查看次数

JAVA和泛型类型问题

我遇到泛型类型的问题:

public static class Field<T> {

    private Class<? extends T> clazz;

    public Field(Class<? extends T> clazz) {
        this.clazz = clazz;
    }

}

public static void main(String[] args) {

    // 1. (warning) Iterable is a raw type. References to generic type Iterable<T> should be parameterized.
    new Field<Iterable>(List.class);

    // 2. (error) The constructor Main.Field<Iterable<?>>(Class<List>) is undefined.
    new Field<Iterable<?>>(List.class);

    // 3. (error) *Simply unpossible*
    new Field<Iterable<?>>(List<?>.class);

    // 4. (warning) Type safety: Unchecked cast from Class<List> to Class<? extends Iterable<?>>.
    new Field<Iterable<?>>((Class<? extends Iterable<?>>) …
Run Code Online (Sandbox Code Playgroud)

java generics

6
推荐指数
1
解决办法
184
查看次数

如何使变量方法将单个数组作为varargs数组的第一个值?

鉴于变量:

Object[] ab = new Object[] { "a", "b" };
Object[] cd = new Object[] { "c", "d" };
Run Code Online (Sandbox Code Playgroud)

调用以下方法时:

public static void m(Object... objects) {
    System.out.println(Arrays.asList(objects));
}
Run Code Online (Sandbox Code Playgroud)

使用:

m(ab, cd);
Run Code Online (Sandbox Code Playgroud)

我得到了预期的输出:

[[Ljava.lang.Object;@3e25a5, [Ljava.lang.Object;@19821f]
Run Code Online (Sandbox Code Playgroud)

但使用时:

m(ab);
Run Code Online (Sandbox Code Playgroud)

我明白了:

[a, b]
Run Code Online (Sandbox Code Playgroud)

由于strings <- abstrings[0] <- ab.

如何强制编译器将ab数组作为数组的第一个值strings,然后输出:

[Ljava.lang.Object;@3e25a5
Run Code Online (Sandbox Code Playgroud)

java arrays variadic-functions

6
推荐指数
1
解决办法
128
查看次数

计算n个布尔值的"真实"数量

Boolean a, b, c, d;
Run Code Online (Sandbox Code Playgroud)

我想算一下trues的数量,每个结果都应该有自己的关联动作.也许是这样的:

int result = getResult(a, b, c, d);
switch (result) {
    case 0: break;
    case 1: break;
    case 2: break;
    case 3: break;
    default: break;
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何以getResult一种漂亮的方式编写方法体?在这个例子中,我使用四个,但它应该可以扩展到更多的布尔值.欢迎任何其他方式继续.

java boolean count

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

将对象转换为数组

public static void main(String[] args) throws Exception {
    int[] a = new int[] { 1, 2, 3 };
    method(a);
}

public static void method(Object o) {
    if (o != null && o.getClass().isArray()) {
        Object[] a = (Object[]) o;
        // java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不应该知道什么是该参数的类型omethod.我怎么能把它投射到Object[]数组中?

instanceof 因为参数可以是任何类型的数组,所以不能成为解决方案.

PS:我已经看过几个关于SO处理数组转换的问题,但没有人(还有?)你不知道数组的类型.

java arrays reflection casting

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

浏览器是否应该自动处理304响应?

可能是一个愚蠢的问题,但我还没有找到任何明确的答案.

我的服务器处理ETag缓存以获得我们所拥有的一些非常大的JSON响应,304 NOT MODIFIED如果If-None-Match标头包含与新生成的相同的散列(浅ETag),则返回空主体.

浏览器是否应该自动处理,或者异步使用API​​的浏览器内客户端应用需要实现一些逻辑来处理这样的响应(即如果304响应则使用缓存版本,否则创建/更新缓存版本)?

因为到目前为止,我已经手动实现了这个逻辑客户端,但我想知道我是否只是重新设计了方形轮...


换句话说,Cache-Control例如,使用标题,浏览器内的客户端应用程序不需要解析值,max-age例如检查,以某种方式存储它,设置超时等等:所有内容都由浏览器直接处理.问题是:浏览器在收到浏览器时应该采用相同的方式304吗?


以下是我到目前为止编写客户端的方法(使用AngularJS构建,在浏览器中运行):

myModule

  .factory("MyRepository", ($http) => {

    return {
      fetch: (etag) => {
        return $http.get(
          "/api/endpoint",
          etag ? { headers: { "If-None-Match": etag } } : undefined
        );
      }
    };

  })

  .factory("MyService", (MyRepository, $q) => {

    let latestEtag = null;
    let latestVersion = null;

    return {
      fetch: () => {
        return MyRepository
          .fetch(latestEtag)
          .then((response) => {
            latestEtag = response.headers("ETag");
            latestVersion = response.data; …
Run Code Online (Sandbox Code Playgroud)

browser etag caching http http-status-code-304

6
推荐指数
1
解决办法
1253
查看次数

Javascript - 用于在非转义字符上拆分字符串的正则表达式,例如| 但忽略\ |

我从文件中读取了一个字符串,我将其拆分为 字符.例如,字符串是

1|test pattern|prefix|url|postfix
Run Code Online (Sandbox Code Playgroud)

所以拆分必须总是给我5个子串,在上面的例子中

["1", "test pattern", "prefix", "url", "postfix"]
Run Code Online (Sandbox Code Playgroud)

当这五个子串中的任何一个包含|时出现问题 字符.我会把它存储为转义\ |

1|test pattern|prefix|url \| title |postfix
Run Code Online (Sandbox Code Playgroud)

现在,你可以看到string.split('|')不会给我想要的结果.期望的结果是

["1", "test pattern", "prefix", "url \| title ", "postfix"]
Run Code Online (Sandbox Code Playgroud)

我尝试了一些正则表达式,但这些都没有给出理想的结果.

string.split(/[^\\]\|/)  //["", "", "prefi", "$url \| $titl", " postfix"]
Run Code Online (Sandbox Code Playgroud)

看起来这只能用负面的回顾,但我无法让它工作

javascript regex

5
推荐指数
1
解决办法
1500
查看次数

前缀变量名称以指示其各自的范围或来源?

在我一直在工作的公司中,我已经看到很多使用前缀来指示变量的范围或来源,例如m对于类成员,i方法内部变量和a(或p)方法参数:

public class User {

    private String mUserName;

    public String setUserName(final String aUserName) {
        final String iUserName = "Mr " + aUserName;
        mUserName = iUserName;
    }

}
Run Code Online (Sandbox Code Playgroud)

你怎么看待这件事?是推荐(或者确切地说不是)?我发现它在第一阶段非常难看,但是我使用的越多,我就越发现在使用大方法时非常方便.

请注意,我不是在谈论匈牙利符号,前缀表示类型而不是范围.

java scope naming-conventions prefix notation

5
推荐指数
1
解决办法
313
查看次数

似乎我可以*在定义之前引用一个字段*

public enum MyEnum1 {

    FOO(BAR), BAR(FOO);

    private MyEnum1 other;

    private MyEnum1(MyEnum1 other) {
        this.other = other;
    }

    public MyEnum1 getOther() {
        return other;
    }

}
Run Code Online (Sandbox Code Playgroud)

MyEnum1生成错误Cannot reference a field before it is defined,这是可以理解的,因为声明顺序在这里很重要.但为什么以下编译呢?

public enum MyEnum2 {

    FOO { public MyEnum2 getOther() { return BAR; } },
    BAR { public MyEnum2 getOther() { return FOO; } };

    public abstract MyEnum2 getOther();

}
Run Code Online (Sandbox Code Playgroud)

FOO是指定义BAR之前BAR,我错了吗?

java enums static declaration

5
推荐指数
1
解决办法
648
查看次数