小编Han*_*örr的帖子

如何在maven多项目中找到不必要的依赖项?

如果您正在开发一个大型的进化多模块maven项目,那么在poms中给出一些不必要的依赖关系似乎是不可避免的,因为它们被其他依赖项传递包含在内.例如,如果你有一个最初包含C的模块A,就会发生这种情况.稍后你重构并让A依赖于模块B,而模块B又取决于C.如果你不够小心,你最终会同时使用B和C A的依赖列表.但是当然你不需要将C放入A的pom中,因为无论如何它都是可传递的.是否有工具可以找到这种不必要的依赖项?

(这些依赖关系实际上并没有受到伤害,但它们可能会模糊您的实际模块结构,并且在pom中使用较少的东西通常会更好.:-)

dependencies maven-2 modularity module

12
推荐指数
1
解决办法
5756
查看次数

为什么scala maven工件为每个scala版本而不是每个scala版本的分类器都有一个工件?

由于Scala -versions 之间只有源兼容性,因此您不得不为它们支持的每个scala版本编译scalatestscalamock等库.让我感到困惑的是,这些库提供了大量的工件(scalatest_2.9.0,scalatest_2.9.1,scalatest_2.10等等) - 每个scala版本都有一个,这样maven存储库中就堆满了许多由人工制作的文物.相同的来源.我的直觉告诉我宁愿为每个scala版本使用一个带有分类器的工件.(事实上​​,maven pom参考提到有时用jdk14和jdk15分类器来完成这些工件,这看起来和我类似.)那么,为什么Scala人会去寻找许多神器矫枉过正:-)而不是?

scala classification maven

12
推荐指数
1
解决办法
481
查看次数

如何使用EL + JSTL将任意对象转换为String?(调用toString())

有没有办法用EL和JSTL调用对象上的toString()?(我需要枚举的String表示形式作为JSP EL表达式中的映射索引.)我希望${''+object}像java 一样工作,但EL不是很好,并且似乎没有任何函数可以做它.

澄清:我有一个somemap将字符串映射到字符串的变量someenum,我有一个枚举变量.我想做点什么${somemap[someenum.toString()]}.(当然.toString()不起作用,但是什么呢?)

java jsp jstl el

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

JAXB:作为枚举的匿名简单类型?

当通过XJC编译器从XSD生成Java时,我总是得到具有匿名simpleTypes的元素的类型java.lang.String,如下所示:

    <xsd:element name="Product">
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Product1"/>
            <xsd:enumeration value="Product2"/>
            <xsd:enumeration value="Product3"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

当然,我想要一个枚举.有没有办法欺骗XJC生成和使用一个?

我们正在使用JAXB 2.1.3.注意:在你问之前,不,我不能改变架构并使其适应XJC的错误.

binding xsd jaxb

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

字段读取和volatile的同步之间的区别

一篇包含一些并发技巧的文章中,一个示例针对以下几行进行了优化:

double getBalance() {
    Account acct = verify(name, password);
    synchronized(acct) { return acct.balance; }
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,同步点是确保此线程读取的acct.balance的值是最新的,并且对acct.balance中对象的字段的任何挂起写入也写入主存储器.

这个例子让我想一想:将acct.balance(即Account类的字段余额)声明为不是更有效率volatile吗?它应该更有效,除了你synchronize对acct.balance的所有访问权限,并且不会锁定整个acct对象.我错过了什么吗?

java concurrency synchronization volatile synchronized

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

ParameterizedTest,在Eclipse Testrunner中具有名称

当你运行JUnit 4 ParameterizedTest与Eclipse的TestRunner,图形表示是相当愚蠢的:每个测试你有一个叫做节点[0],[1]等等是否有可能给测试[0],[1]等明确的名字呢?实现toString测试方法似乎没有帮助.

(这是JUnit测试的后续问题,具有动态的测试次数.)

java eclipse junit unit-testing parameterized-unit-test

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

是否有工具可以使所有类包受保护并尽可能最终?

背景:我注意到在许多项目中,内部代码中的几乎所有类都是公共的而不是最终的,即使它们不需要.但是,对我来说,默认情况下做出这个决定似乎是明智的,但如果它们实际意味着要从系统的其他部分使用,那么只能使类公开.拥有包受保护的类是一种简单的机制,可以强制模块之间的边界,并作为类的预期用途的文档.

如果有一个(最好的免费的:-)工具来保护所有可以保护的类而不破坏程序,并且可能使所有的东西都没有子类,那么这将是开始有意识地使用保护机制的良好起点.(当然你需要事后调整一下.)你知道这样的工具吗?

警告:我知道有更好的模块化机制,如OSGI和计划的超级包装等等.但是在许多当前项目中,这不是一个选项,使用普通的旧Java机制是您可以轻松完成的.此外,这仅适用于您拥有共享代码所有权(这样每个人都可以根据需要将内容更改回公共状态)以及您是否正在开发最终产品,而不是供其他人使用的库.我也不太确定最终做事的好处 - 这可以防止AOP和嘲弄.

澄清:正如我所说,我不是在谈论那些无法改变它的人,而是关于中型项目的内部代码,鼓励每个人根据需要改变和重构所有内容.当我谈论受保护的包裹或最终将其视为"受到保护,直到某人感到迫切需要解除这些限制".如果有人觉得需要解除工具设置的限制,欢迎他这样做.

java ide module

9
推荐指数
1
解决办法
136
查看次数

捕获StackOverflowError有什么危害?

只是好奇.在回答有关捕获StackOverflowErrors的问题时,有人写道:"当然,在某种情况下,堆栈溢出可能会使应用程序不一致,就像内存耗尽一样".StackOverflowErrors有什么特别之处,它们可能会破坏应用程序状态,比如在出现Bug时抛出NullPointerException?我能想到的一件事是StackOverflowError可能发生在通常永远不会抛出异常(或其他Throwable)的地方(例如一个简单的getter),所以程序可能没有为此做好准备.还有更多恶魔般的问题吗?

java stack-overflow

9
推荐指数
1
解决办法
311
查看次数

从数据库中的类似日志的表中只读取新行

我们有几个服务器将行块插入关系数据库中的表中,并且一个服务器偶尔从表中读取新数据.(该表在概念上是某种日志文件 - 数据仅插入但从未修改过,读取服务器显示日志的尾部.)有没有办法让读取服务器只读取新数据?我们可以随意构建表格.

我脑海中浮现但不起作用的一些想法是:

  • 将行标记为已读取不适合我们的应用程序:读取服务器不应更改数据库.(写入数据库以显示内容并不是一件好事,并且可能会有多个会话显示这些内容.)

  • 我们可以在每行填充数据库系统时间的时间戳.问题是这不是提交时间的时间戳,而是插入时间的时间戳.如果您要求数据库"在现在5分钟到现在之间给我所有值",您就不能依赖所有存在的值,因为可能有正在进行的事务.您将不得不再次询问此间隔中的值,这是我想要避免的.

  • 我们可以插入从序列中填充的运行行数.运行事务时出现的问题与使用时间戳时相同.

有没有解决问题的方法,或者我是否必须应用一些启发式方法,例如假设最大事务时间并始终询问"现在 - 最大事务时间"之后写入的值并读取一些数据两次?

如果重要:我们使用Oracle来做到这一点.但我认为只有其他数据库才有效的答案也是普遍感兴趣的.

database-design

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

如何找出elasticsearch解析query_string的结果?

有没有办法通过elasticsearch API 找出实际解析查询字符串查询的方式?您可以通过查看lucene查询语法手动执行此操作,但如果您可以查看解析器具有的实际结果的某些表示,那将非常好.

lucene elasticsearch

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