小编zam*_*mza的帖子

具有修补依赖项的maven项目的布局

假设,我有一个依赖于某个库的开源项目,必须修补它才能解决一些问题.我怎么做?我的想法是:

  1. 将该库源设置为模块,将它们保存在我的vcs中.优点:简单.缺点:我的仓库中的一些第三方来源,可能会减慢构建过程,很难找到修补的地方(虽然可以在README中修复)
  2. 有一个模块,就像在1中一样,但只保留修补的源文件,用类路径中的orignal库jar编译它们,并以某种方式替换构建中库jar中的*.class文件.优点:构建更快,更容易找到修补的地方.缺点:难以配置,jar hackery是不明显的(存储库和我的项目组装中的库jar会有所不同)
  3. 在主/资源中保留修补*.class文件,并在包装​​上替换,如2).优点:几乎没有.缺点:vcs中的二进制文件,很难重新编译修补的类,因为补丁编译不是自动化的.

一个不错的解决方案是使用修补的库源创建一个独特的项目,并使用-patched限定符将其部署在本地/企业存储库中.但这不适合开源项目,任何检查其来源的人都可以轻松构建.或者我应该只说"并且,在构建我的项目之前,请检查那些东西并运行mvn install".

maven-2 patch

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

在库中捆绑log4j.properties - 坏样式还是什么?

我遇到了一个很好的Java小型Web请求框架:Spark.API看起来不错,很有希望,但是库包本身很奇怪.不要理会它建议使用快照工件作为依赖项.单独留下它使用log4j进行日志记录(库现在倾向于使用jcl或slf4j)和System.out.println的事实.但它将自己的log4j.properties捆绑在spark-xxx.jar中.我花了一个小时来调查为什么当我的类路径中存在log4j.properties时,我的项目会抱怨log4j配置.-Dlog4j.debug = true给出了答案,log4j承认它已经从spark jar加载了log4j.properties.

我想知道这个(作为一个库并使用log4j和捆绑log4j.properties)是否有一些动机,或者它是否只是蹩脚.

java logging log4j spark-java

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

如何从ReflectionDBObject获取正确类型的List

我有一个模型类

public class MyClass extends ReflectionDBObject {
    private List<NiceAttribute> attributes;    
    ...
}

public class NiceAttribute extends ReflectionDBObject {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我以类型安全的方式创建它,比如

List<NiceAttribute> attrs = new ArrayList<NiceAttribute>();
attrs.add(new NiceAttribute());
MyClass myClass = new MyClass();
myClass.setAttributes(attrs);
Run Code Online (Sandbox Code Playgroud)

然后将其保存到mongo,并使用类似的代码检索

DBCollection col = ...;
col.setObjectClass(MyClass.class)
MyClass foundObject = (MyClass)col.findOne();
Run Code Online (Sandbox Code Playgroud)

但问题是,foundObjectattributes变成了一个列表BasicDBObject.看起来驱动程序不能(或不想)检测列表项类型.这是司机限制,还是我错过了什么?这个问题的优雅解决方案是什么?

顺便说一句,我知道Morphia等.也许它解决了这个问题.但是我的项目很小,而且我不想让具有更多抽象层的东西复杂化.

java mongodb

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

在Postgres SQL中选择正聚合值并忽略否定

我必须应用某种转变fn(argument).这argument等于value,但不是当它是负面的.当你得到第一个负数时value,那么你"等待"直到它与连续值相加并且这个总和变为正数.然后你做fn(argument).看到我想要的表格:

value      argument 
---------------------
  2           2      
  3           3      
 -10          0      
  4           0
  3           0
  10          7
  1           1

我可以将所有值求和并应用于fn总和,但fn对于不同的行可以有所不同,并且必须知道行号以选择具体的fn.

想要一个Postgres SQL解决方案,看起来像窗口函数适合,但我没有足够的经验来编写那样做的表达式.事实上,不幸的是,我是"思考sql"的新手.我想这可以通过命令式方式轻松完成,但我还不想编写存储过程.

sql postgresql aggregation window-functions

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