小编Pet*_*ler的帖子

我为什么要使用Hamcrest-Matcher和assertThat()而不是传统的assertXXX() - 方法

当我查看Assert类JavaDoc中的示例时

assertThat("Help! Integers don't work", 0, is(1)); // fails:
// failure message:
// Help! Integers don't work
// expected: is <1> 
// got value: <0>
assertThat("Zero is one", 0, is(not(1))) // passes
Run Code Online (Sandbox Code Playgroud)

比方说,我没有看到一个很大的优势assertEquals( 0, 1 ).

如果构造变得更复杂但是你看到更多的优点,那么对于消息可能很好吗?可读性?

java testing junit hamcrest junit4

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

如何在Maven settings.xml中设置存储库的顺序

我在settings.xml中有3个存储库,因为我需要来自所有存储库的工件.每当找不到依赖项时,Maven就会尝试

Downloading: http://some.server/mvn2repo/releases/org/apache/lucene/lucene-core/2.9.1/...
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository
Downloading: http://some.server/mvn2repo/3rdParty/org/apache/lucene/lucene-core/2.9.1/...
[INFO] Unable to find resource 'org.apache.lucene:lucene-core:pom:2.9.1' in repository
Downloading: http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.9.1/lucene-core-2.9.1.pom
<success>
Run Code Online (Sandbox Code Playgroud)

所有存储库,但大多数时候在中心(repo1)找到工件.我希望Maven先检查这个回购.我在settings.xml中尝试了声明顺序,但是没有用.根据fgysin,我也尝试了相反的顺序,它没有改变任何东西.

我的Maven版本:

C:\>mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.6.0_15
Java home: C:\Program Files\Java\jdk1.6.0_15\jre
Default locale: de_AT, platform encoding: Cp1252
OS name: "windows vista" version: "6.0" arch: "amd64" Family: "windows"
Run Code Online (Sandbox Code Playgroud)

我的 settings.xml

<profiles>
    <profile>
        <id>space</id>
        <repositories>
            <repository>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
                <id>s1-releases</id>
                <name>System One Releases</name>
                <url>http://some.server/mvn2repo/releases</url>
            </repository>
            <repository>
                <releases> …
Run Code Online (Sandbox Code Playgroud)

java dependency-management maven

53
推荐指数
3
解决办法
8万
查看次数

使用Nancy返回包含有效Json的字符串

我收到一个包含来自其他服务的有效JSON的字符串.我想用Nancy转发这个字符串,但也将内容类型设置为"application/json",这将允许我删除在客户端使用$ .parseJSON(数据)的需要.

如果我使用Response.AsJson,它似乎会破坏字符串中的JSON并添加转义字符.我可以用字符串创建一个Stream并设置响应类型如下:

Response test = new Response();
test.ContentType = "application/json";
test.Contents = new MemoryStream(Encoding.UTF8.GetBytes(myJsonString)); 
Run Code Online (Sandbox Code Playgroud)

但是想知道是否有更简单的方法?

c# json nancy

47
推荐指数
4
解决办法
3万
查看次数

为什么代码质量不受欢迎?

我喜欢我的代码是有序的,即格式正确,可读,设计,测试,检查错误等.事实上我对它很狂热.(甚至可能比狂热更多...)但在我的经验中,帮助代码质量的行动很难实现.(通过代码质量,我的意思是您日常生成的代码的质量.软件质量与开发过程等的整个主题要广泛得多,而不是这个问题的范围.)

代码质量似乎并不受欢迎.我的经验中的一些例子包括

  • 可能每个Java开发人员都知道JUnit,几乎所有语言都实现了xUnit框架,但在我所知道的所有公司中,只有很少的正确单元测试存在(如果有的话).我知道由于技术限制或紧迫的截止日期,并不总是可以编写单元测试,但在我看到的情况下,单元测试可能是一种选择.如果开发人员想为他/她的新代码编写一些测试,他/她可以这样做.我的结论是开发人员不想编写测试.

  • 静态代码分析通常在小型项目中进行,但并不真正用于强制执行编码约定或在企业项目中发现可能的错误.通常甚至会忽略像潜在空指针访问这样的编译器警告.

  • 会议发言人和杂志会谈论很多关于EJB3.1,OSGI,云和其他新技术,但几乎没有关于新的测试技术或工具,新的静态代码分析方法(例如SAT解决方案),有助于保持更高质量的开发流程,如何遗留代码的一些讨厌的野兽被测试,...(我没有参加很多会议,它可能在敏捷主题的会议上看起来不同,因为单元测试和CI等具有更高的价值.)

那么为什么代码质量如此不受欢迎/被认为无聊呢?

编辑:
谢谢你的回答.其中大多数涉及单元测试(并已在相关问题中进行了讨论).但是还有很多其他的东西可以用来保持代码质量很高(参见相关问题).即使您无法使用单元测试,也可以使用每日构建,向IDE或开发过程添加一些静态代码分析,尝试配对编程或强制执行关键代码的审核.

unit-testing code-analysis

46
推荐指数
8
解决办法
6834
查看次数

如何在Java中实现列表折叠

我有一个List,并希望将其减少为单个值(函数式编程术语"折叠",Ruby术语inject),如

Arrays.asList("a", "b", "c") ... fold ... "a,b,c"
Run Code Online (Sandbox Code Playgroud)

由于我感染了函数式编程思想(Scala),我正在寻找一种更简单/更短的编码方式

sb = new StringBuilder
for ... {
  append ...
}
sb.toString
Run Code Online (Sandbox Code Playgroud)

java collections functional-programming folding

23
推荐指数
5
解决办法
3万
查看次数

AccessController.doPrivileged

我想弄清楚一些遗留代码在做什么.这条线到底在做什么,为什么我会这样需要呢?

String lineSeparator = (String) java.security.AccessController.doPrivileged(
       new sun.security.action.GetPropertyAction("line.separator")); 
Run Code Online (Sandbox Code Playgroud)

我在Weblogic 8上运行的web/ejb应用程序的logger实现中找到了它.据我所知,没有启用特殊的安全策略.(我不喜欢从sun.*包中导入,所以我想摆脱这条线;-)

java security api java-ee

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

我应该用什么实现Forth来学习Forth?

我想开始学习Forth(比如相关的Stack Overflow问题,学习和使用Forth是否实用?).我看到有很多实现.我想用一个

  • ANS 1994兼容版本(如果合理,但坚持标准可能会很好)
  • 小而紧凑的实现,我不想要一个完整的操作系统.
  • 视窗
  • 好用,我是Forth的新手;-)

可以推荐什么特定的实现?

ide forth

19
推荐指数
2
解决办法
9361
查看次数

是否有针对Apache POI的Scala包装器?

我想使用Apache POI在Scala应用程序中读取/创建Excel文件.当然,我可以直接使用POI库,毕竟它是Java,但我想让Scala感觉到.那么是否有一个Scala包装器带来了Scala的感觉(使用隐式转换),即某种"Scala-POI-DSL"免费提供?

excel scala apache-poi

19
推荐指数
3
解决办法
9193
查看次数

Java大文件磁盘IO性能

我的硬盘上有两个(每个2GB)文件,想要将它们相互比较:

  • 使用Windows资源管理器复制原始文件大约需要.2-4分钟(即读写 - 在同一物理和逻辑磁盘上).
  • java.io.FileInputStream两次读取并在每个字节的字节上比较字节数组需要20多分钟.
  • java.io.BufferedInputStream 缓冲区为64kb,文件以块的形式读取然后进行比较.
  • 比较完成是一个紧凑的循环

    int numRead = Math.min(numRead[0], numRead[1]);
    for (int k = 0; k < numRead; k++)
    {
       if (buffer[1][k] != buffer[0][k])
       {
          return buffer[0][k] - buffer[1][k];
       }
    }
    
    Run Code Online (Sandbox Code Playgroud)

我该怎么做才能加快速度呢?NIO应该比普通的流更快吗?Java无法使用DMA/SATA技术,而是做一些缓慢的OS-API调用吗?

编辑:
谢谢你的答案.我做了一些基于它们的实验.安德烈亚斯表示

流或nio方法没有太大差别.
更重要的是正确的缓冲区大小.

我的实验证实了这一点.由于文件是以大块读取的,因此即使是额外的缓冲区(BufferedInputStream)也不会提供任何内容.优化比较是可能的,并且我通过32次展开获得了最佳结果,但与磁盘读取相比,花费的时间比较小,因此加速很小.看起来我无能为力;-(

java comparison performance nio stream

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

使用哪种Wiki文本语法或Markdown?

在我的个人知识库上工作...我想格式化我的文档,甚至在wiki语法的本地硬盘上.有时我会将它们上传到(公司)维基,有时我会从那里下载它们.计划中有一些工具可以支持此流程并搜索我的知识库(文档)以供日后使用.显然,我希望降价与大多数兼容,最大限度地减少转换工作.

所以我的问题类似于这个相关的问题,但是

  • 当我开始新的东西时,我应该使用什么wiki文本版本或Markdown(方言)?(即文档项目和wiki的种类).
  • 什么是最被使用/认可的?
  • 工具支持(编辑器和/或库)在哪里最好?有关的前卫.语言是Java,Ruby,Scala.

syntax markdown wiki knowledge-management

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