我git cherry-pick FOO
产生了冲突.
我可以去通过冲突的文件,并删除之间的界限<<<<<<<
,并=======
和冲突标记自己,但我希望有一个更简单的方法.
我认为svn
相当于选择theirs-conflict
解决.
我该怎么办git
?
我不希望git checkout --theirs <file>
因为它似乎产生相同的结果git checkout foo <file>
而不是仅仅git diff FOO~..FOO <file>
应用.
在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
可能是合适的.对于后者,不合适.
更新:该src/main/scripts
目录已从标准目录布局文档中删除,因为它具有误导性.(然而遗留物仍然留在POM简介中,因为它与project.build.scriptSourceDirectory
物业有关.)
是否有一个相当标准的C(Linux)函数,或者一个代码有效但性能良好的方法,用于比较任意大小的两个整数?
我正在寻找一些int intcmp(const void *a, const void *b, size_t size)
适用于整数a
和b
任何实际尺寸的参数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) 我在使用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) 我收到了这个警告,但无法弄清楚问题......
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
部分可以按原样,或由适当的实现替换,我仍然得到相同的警告.
您认为哪种效率更高?
使用'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) 我在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?)知道所有权的变化?
我想要做的实质上是 如何将MDC与线程池一起使用?正在询问,但有Netty.
我想要相关的MDC信息Channel
.Netty有哪些选择?如果我需要手动重置MDC,我可以从一个地方连接哪些方法来执行此操作?
这个问题特定于使用带有泛型的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.0和Java 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) 我需要一个按键锁定机制来保护键绑定的关键部分.
虽然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)
是否有任何理由可能无法提供足够的并发控制?
或者为什么这可能不会导致未使用的对被垃圾收集?