小编ant*_*tak的帖子

如何使用他们的更改来解决挑选冲突?

git cherry-pick FOO产生了冲突.

我可以去通过冲突的文件,并删除之间的界限<<<<<<<,并=======和冲突标记自己,但我希望有一个更简单的方法.

我认为svn相当于选择theirs-conflict解决.

我该怎么办git

我不希望git checkout --theirs <file>因为它似乎产生相同的结果git checkout foo <file>而不是仅仅git diff FOO~..FOO <file>应用.

git

98
推荐指数
1
解决办法
7万
查看次数

什么时候应该将脚本放在/ src/main/scripts(maven标准)中,什么时候不放?

Maven的标准目录布局说,脚本应放置在src/main/scripts一个Maven项目.除了"约定优于配置"的优点之外,还有其他优势吗?我有一个使用程序集插件构建可执行jar-with-dependencies的项目.还有一些有用的脚本随之而来.是否有任何工具可以利用此布局来构建其他内容,例如,包含jar和这些脚本的存档在合理的位置?

[更新]事实上,我甚至会说,将脚本放入src/main/scripts不利的,就使用maven-assembly插件而言.看来一切都在/src/main(src/main/java当然除外)被复制到jar-with-dependencies的根目录,与src/main/resources此一样,这很有用.但是没有充分的理由在jar中加入脚本,尽管它没有特别的危害.如果,代替将它们放置在src/main/scripts一它们放在src/scripts(类似于标准src/assembly,这也不包括),那么它们不是复制到罐子,并且可以通过该组件的插件的稍后运行被复制到一个更大的存档.

更新:似乎我们必须区分从java代码中启动的运行时脚本和启动jar或执行其他操作的其他脚本.对于前者,将它们放入src/main/scripts可能是合适的.对于后者,不合适.

更新:我输入了一个针对maven文档错误.

更新:src/main/scripts目录已从标准目录布局文档中删除,因为它具有误导性.(然而遗留物仍然留在POM简介中,因为它与project.build.scriptSourceDirectory物业有关.)

maven maven-assembly-plugin

25
推荐指数
0
解决办法
6293
查看次数

比较两个整数的通用函数?

是否有一个相当标准的C(Linux)函数,或者一个代码有效但性能良好的方法,用于比较任意大小的两个整数?

我正在寻找一些int intcmp(const void *a, const void *b, size_t size)适用于整数ab任何实际尺寸的参数size.(memcmp()如果架构是大端的话,我会工作(我认为).)

我倾向于使用的实现是这样的(有效整数比较函数的改进),但它不是完全通用的,并且有足够的代码开销,我通常会在插入之前三思而后行.

int intcmp(const void *a, const void *b, size_t size) {

    #define CASE_SIZE_RETURN_A_B_CMP(_t) \
        case sizeof(_t): \
            return ((*(_t *)(a) > *(_t *)(b)) - (*(_t *)(a) < *(_t *)(b)))

    switch (size) {
    CASE_SIZE_RETURN_A_B_CMP(char);
    CASE_SIZE_RETURN_A_B_CMP(short);
    CASE_SIZE_RETURN_A_B_CMP(int);
    CASE_SIZE_RETURN_A_B_CMP(long long);
    }
    #undef CASE_SIZE_RETURN_A_B_CMP

    assert(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

13
推荐指数
1
解决办法
3035
查看次数

奇怪的例外"无效的接收器类型类java.lang.Object;不是...的子类型"

我在使用jre1.8.0_66的代码运行中遇到这个奇怪的异常:

Exception in thread "main" java.lang.BootstrapMethodError: call site initialization exception
    at java.lang.invoke.CallSite.makeSite(CallSite.java:341)
    at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:307)
    at java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:297)
    at main
Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type class java.lang.Object; not a subtype of implementation type interface Fruit
    at java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:233)
    at java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:303)
    at java.lang.invoke.CallSite.makeSite(CallSite.java:302)
    ... 3 more
Run Code Online (Sandbox Code Playgroud)

这是什么意思?代码如下:

public static interface Fruit {

    int getPickingMonth();
}

public static class Apple implements Fruit, Serializable {

    @Override
    public int getPickingMonth() {
        return 11;
    }
}

public static class Orange implements Fruit, Serializable {

    @Override
    public int …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

13
推荐指数
1
解决办法
2912
查看次数

CodeContracts:布尔条件求值为常数值,为什么?

我收到了这个警告,但无法弄清楚问题......

CodeContracts:警告:布尔条件d1.Count!= d2.Count始终求值为常量值.如果它(或它的否定)出现在源代码中,您可能会有一些死代码或冗余检查

代码如下:

public static bool DictionaryEquals<TKey, TValue>(IDictionary<TKey, TValue> d1, IDictionary<TKey, TValue> d2)
{
    if (d1 == d2) return true;
    if (d1 == null || d2 == null) return false;
    if (d1.Count != d2.Count) return false; // <-- warning here

    // Equality check goes here

    return true;
}
Run Code Online (Sandbox Code Playgroud)

// Equality check goes here部分可以按原样,或由适当的实现替换,我仍然得到相同的警告.

c# code-contracts

11
推荐指数
1
解决办法
972
查看次数

Java Enum valueOf效率

您认为哪种效率更高?

使用'WeekDay'只是一个例子:

public enum WeekDay {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}
Run Code Online (Sandbox Code Playgroud)

循环并首先验证日期字符串:

public void parseString(String line) {
    String[] tokens = line.split();
    String day = tokens[1]; // day 'should' always be a weekday
    if (isValidWeekDay(day)) {
        WeekDay weekDay = WeekDay.valueOf(day); // won't throw exception
        ...
    } else {
        throw new InvalidWeekDayException(day); // subclass of RuntimeException
    }
}
private boolean isValidWeekDay(String day) {
    for (WeekDay weekDay : WeekDay.values()) {
        if(weekDay.toString().equals(day))
           return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者因为在99.99%的情况下,一天是正确的:

public void parseString(String line) …
Run Code Online (Sandbox Code Playgroud)

java enums

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

工厂创建的实例的AutoCloseable"资源泄漏"警告?

我在Eclipse中获得AutoCloseable的这些"资源泄漏"警告似乎可以节省生命.

但是,如何让它们为工厂创建的实例工作?

例如(a有效,但b没有):

public static void main(String[] args) {
    // a) This emits a warning
    new AutoCloseable() {
        @Override
        public void close() throws Exception {}
    };

    // b) But this doesn't!
    newResource();
}

public static AutoCloseable newResource() {
    return new AutoCloseable() {
        @Override
        public void close() throws Exception {}
    };
}
Run Code Online (Sandbox Code Playgroud)

是否有我可以坚持的注释newResource()或我可以做的事情让编译器(或者它是Eclipse?)知道所有权的变化?

java eclipse autocloseable

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

使用org.slf4j.MDC和Netty频道?

我想要做的实质上是 如何将MDC与线程池一起使用?正在询问,但有Netty.

我想要相关的MDC信息Channel.Netty有哪些选择?如果我需要手动重置MDC,我可以从一个地方连接哪些方法来执行此操作?

java logging logback slf4j netty

9
推荐指数
0
解决办法
813
查看次数

"通过varargs参数的潜在堆污染"为Enum <E> ...为什么?

这个问题特定于使用带有泛型的varargs Enum<E>:

Type safety: Potential heap pollution via varargs parameter elements如果我像这样定义方法,为什么会收到此警告:

<E extends Enum<E>> void someMethod(E... elements)
Run Code Online (Sandbox Code Playgroud)

与此相反:

<E extends Enum<E>> void someMethod(E[] elements)
Run Code Online (Sandbox Code Playgroud)

因此,在声明方法之前我应该​​注意什么@SafeVarargs

类似的问题

这个问题类似于这些问题,Collection<T>...但这些答案中显示的情景似乎不适用于Enum<E>...:

与此问题相反,它质疑为什么没有警告:

示例代码

这是我试图污染堆的原因,但每次不良尝试都会产生java.lang.ArrayStoreException污染,而不是污染的数组.

我正在使用Eclipse 4.6.0Java JDK 8u74.

public static void main(String[] args) {
    Foo[] x = { Foo.A };
    someMethod(x);

    Foo y = x[0];  // How does one get a ClassCastException here?
}

private …
Run Code Online (Sandbox Code Playgroud)

java enums variadic-functions

8
推荐指数
1
解决办法
5217
查看次数

Guava的Cache <K,Semaphore> with weakValues()是否是线程安全的?

我需要一个按键锁定机制来保护键绑定的关键部分.

虽然a ConcurrentMap<K, Semaphore>足以满足并发性,但我也不希望地图累积旧密钥并无限增长.

理想情况下,数据结构最终(或直接)释放用于未使用锁的密钥的内存.

我有点认为Guava的Cache构建weakValues()可以解决这个问题:

private static final LoadingCache<K, Semaphore> KEY_MUTEX = CacheBuilder.newBuilder()
        .weakValues()
        .build(new CacheLoader<K, Semaphore>() {
            @Override
            public Semaphore load(K key) throws Exception {
                return new Semaphore(1);
            }
        });
Run Code Online (Sandbox Code Playgroud)

是否有任何理由可能无法提供足够的并发控制?

或者为什么这可能不会导致未使用的对被垃圾收集?

java multithreading weak-references guava

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