小编mav*_*azy的帖子

对于版本化实体,在Spring中支持ETag

我打算为我的RESTfull Spring应用程序支持ETag.我公开的大多数资源都是在DB中版本化的.

我知道ShallowEtagHeaderFilter,这不完全是我需要的,因为它只能节省带宽.

是否有针对Spring MVC的生产就绪解决方案,它将ETag标头与暴露的实体版本相关联?

java rest spring spring-mvc http-headers

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

我应该将Couchbase存储桶视为表,还是更像是模式

我计划在我的Web应用程序中使用Couchbase作为文档存储.我正在寻找适用于Java的Couchbase客户端,如果我将Couchbase存储桶视为处理通用实体,则需要为每个存储桶创建单独的Couchbase客户端.这对系统来说有点过分(但是,我可以重用执行服务来最小化对象创建和线程管理开销.)

所以

  1. 有没有办法重用现有的CouchbaseClient用于多个存储桶(不仅添加ExecutionService)
  2. 从性能的角度来看,使用单个存储桶并根据键区分对象并依赖视图选择器进行查询不是更好吗?

java performance nosql couchbase

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

是否有BDD java框架能够重用Given,那么?(随着步骤变化)

我正在寻找可以重用Given&Then for Unit和Integration测试的BDD java框架.

换句话说1. 给出一些先决条件.2. 何时 - 取决于环境3. 然后验证何时的结果

我希望能够通过更改When,并保持GivenThen完整,更改测试的类型,例如在简单的REST服务中:

  1. 单元测试
    • 特定
      • 生成一些POJO对象
    • 什么时候
      • 收到来自Given的 POJO
      • 使用此POJO调用内部服务
      • 从服务接收POJO表单的结果
      • 前锋收到了POJO 然后
    • 然后
      • When验证POJO
  2. 整合测试
    • 特定
      • 生成一些POJO对象
    • 什么时候
      • 收到来自Given的 POJO
      • 以外部服务格式加密POJO
      • 呼叫外部服务
      • 从公开的服务接收外部服务格式的结果
      • 在POJO中转换收到的结果
      • 前锋收到了POJO 然后
    • 然后
      • When验证POJO

因此,在示例中,GivenThen的行为方式相同,对于集成和单元测试,以及简单地改变当测试的范围从UNIT到INTEGRATION时.

有人能指出我正确的方向吗?

我不想重新发明轮子

java bdd integration-testing unit-testing

6
推荐指数
2
解决办法
1513
查看次数

为什么在Enum中hashCode()引用Object hashCode()实现,而不是ordinal()函数?

我一直以为enum hashCode在Java中引用了序数,因为序数似乎是hashCode的完美候选者,但事实证明它的枚举hashCode实际上是指默认的hashCode对象实现.

我明白,这并不与JLS相矛盾,但这让我感到惊讶,我想不出为什么会这样做.虽然我猜JVM,可能依赖于它以某种方式提供独特的保证,但这不再适用于64位JVM.

我已经检查过JDK 1.6和最新的JDK 7,这两种方式都是一样的.

有没有人知道原因,是这样做的?

使用序数作为hashCode是完全合理的,因为它满足了所需的所有凭证,而且从一个JVM开始到另一个JVM开始甚至是一致的,这不是必需的,但是很好.

java enums hashcode jls

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

Bower覆盖依赖

我有一个用Backbone编写的应用程序,使用Marionette和其他一些依赖项,通过bower管理:

{
  "name": "admin",
  "version": "0.1.1",
  "main": "public/javascripts/app.js",
  "dependencies": {
    "lodash": "~2.4.1",
    "console-polyfill": "~0.1.0",
    "jquery": "~2.1.1",
    "normalize-css": "~2.1.2",
    "marionette": "~1.7.4",
    "bootstrap": "~3.1.1",
    "font-awesome": "~4.1.0",
    "backbone-pageable": "~1.4.5",
    "moment": "~2.5.1",
    "swag": "~0.6.1",
    "jquery-form": "~3.46.0",
    "jquery-file-upload": "~9.5.7",
    "underscore.string": "~2.3.3",
    "bootstrap-switch": "~3.0.1",
    "joint": "~0.9.0"
  },
  "overrides": {
    "backbone": {
      "dependencies": {
        "lodash": "*",
        "jquery": "*"
      },
      "main": "backbone.js"
    },
    "backbone.wreqr": {
      "dependencies": {
        "backbone": "*"
      },
      "main": "lib/amd/backbone.wreqr.js"
    },
    "backbone-pageable": {
      "dependencies": {
        "backbone": "*"
      },
      "main": "lib/backbone-pageable.js"
    },
    "jquery-file-upload": {
      "dependencies": …
Run Code Online (Sandbox Code Playgroud)

underscore.js jointjs bower lodash

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

如何在Play 2中从ReactiveMongo返回JSON的枚举器

在我们的项目中,我们使用的是ReactiveMongoPlay 2.2.1.

问题是,Enumerator[A]返回的形式的数据流ReactiveMongo实际上是一个值对象流,它们没有逗号分隔,并且没有流开始和结束注释,可以视为数组打开和关闭声明.

这会给JSON消费者带来问题JS client,因为预期的格式是 [A1,A2, ...]

所以我们跳入了箍,并通过检查将我们Enumeratee[A]改为Enumerator[String],如果它是第一个元素,或者不是:

    var first:Boolean = true
    val aToStrs = (as.map(a => {
        if(first) {
            first = false;
            Json.stringify(Json.toJson(a))
        } else {
            "," + Json.stringify(Json.toJson(a))
        }
   }))
   Ok.chunked(
       Enumerator.enumInput(Input.El("[")) andThen
       aToStrs andThen
       Enumerator.enumInput(Input.El("]")) andThen
       Enumerator.enumInput(Input.EOF)
   )
Run Code Online (Sandbox Code Playgroud)

这有效,但感觉就像发明轮子一样.

对于这个常见问题,有没有更好的解决方案?

scala enumerator iterate playframework-2.0 reactivemongo

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

我可以手动覆盖谷歌优化重定向,并避免外部重定向吗?

我正在使用 Google 优化运行 A/B 重定向测试,在 React、Redux 平台上使用 SPA。

我正在尝试解决的一个问题是 - 重定向到新页面会导致整个页面重新加载,我想避免这种情况,而是更喜欢手动进行,因此它对用户来说是无缝的,而且速度要快得多。

有没有办法做到这一点?

redirect single-page-application reactjs react-redux google-optimize

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

将Enumeratee转换为Future [List] Scala

在Play Scala框架中转换Enumerator为标准的方法是什么Future[List]

scala playframework iterate

4
推荐指数
1
解决办法
390
查看次数

在Spring MVC中将类反序列化为JSON时更改属性名称

我正在尝试使用Spring使用其他API调用,如下所示:

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);

HttpEntity<String> request = new HttpEntity<String>(headers);
RestTemplate restTemplate = new RestTemplate();

Item item = restTemplate.exchange(url, HttpMethod.GET, request, Item.class).getBody();
Run Code Online (Sandbox Code Playgroud)

我从API获得的响应采用以下形式:

{    
"item":[{
    "itemname": "abc",
    "qty":...
}]
}
Run Code Online (Sandbox Code Playgroud)

Item类包含以下字段:

Class Item{
    @JsonProperty("itemname")
    String name;
    @JsonProperty("qty")
    int quantity;

    // Getter / setter methods
}
Run Code Online (Sandbox Code Playgroud)

我已经在字段中添加了JsonProperty注释,因为它们的名称与我从API获得的json不同.有了这个,我就能成功地反序列化api响应.

但是,当我尝试将Item类再次序列化为json时,字段名称为"itemname"和"qty".有没有办法将这些保留为"名称"和"数量",并且能够映射到API响应?

提前致谢.

spring resttemplate

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

java 获取DNS记录信息

java中有一个库可以从底层服务器获取准确的DNS信息吗?

我不仅对IPDNS映射感兴趣,还对其他记录感兴趣:A、AAAA、MX、NS、SOA、RRSIG 等

java ip dns mx-record

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

如何从ImageIO中排除特定的TIFF阅读器?

堆:

  • Java - 1.8.0_91
  • 斯卡拉 - 2.11.8
  • 图书馆 - it.geosolutions.imageio-ext imageio-ext-tiff 1.1.15

我们正在阅读许多旧的TIF图像,并且出于某种原因,读取是高度不一致的 - 由于某些原因,在不同的运行中读取同一图像可能成功或失败,例外 -

javax.imageio.IIOException: Invalid component ID 3 in SOS
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1236)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039)
at com.sun.media.imageioimpl.plugins.tiff.TIFFOldJPEGDecompressor.decodeRaw(TIFFOldJPEGDecompressor.java:654)
at com.sun.media.imageio.plugins.tiff.TIFFDecompressor.decode(TIFFDecompressor.java:2527)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.decodeTile(TIFFImageReader.java:1137)
at com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader.read(TIFFImageReader.java:1417)
Run Code Online (Sandbox Code Playgroud)

代码是这样的:

import java.io.{ByteArrayInputStream, ByteArrayOutputStream}
import javax.imageio.ImageIO

def convertToPng(data: Array[Byte]): Array[Byte] = {
    val inputStream = new ByteArrayInputStream(data)
    val image = ImageIO.read(inputStream)
    val outputStream = new ByteArrayOutputStream(inputStream.available())
    ImageIO.write(image, "png", outputStream)
    outputStream.toByteArray
}
Run Code Online (Sandbox Code Playgroud)

问题是ImageIO同时初始化2个TIFF阅读器

 com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader & 
 it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader
Run Code Online (Sandbox Code Playgroud)

要么

 it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReader
 com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader 
Run Code Online (Sandbox Code Playgroud)

第一个失败,第二个失败.如何从ImageIO配置中排除com.sun.media.imageioimpl.plugins.tiff.TIFFImageReader?

java tiff javax.imageio

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