我打算为我的RESTfull Spring应用程序支持ETag.我公开的大多数资源都是在DB中版本化的.
我知道ShallowEtagHeaderFilter,这不完全是我需要的,因为它只能节省带宽.
是否有针对Spring MVC的生产就绪解决方案,它将ETag标头与暴露的实体版本相关联?
我计划在我的Web应用程序中使用Couchbase作为文档存储.我正在寻找适用于Java的Couchbase客户端,如果我将Couchbase存储桶视为处理通用实体,则需要为每个存储桶创建单独的Couchbase客户端.这对系统来说有点过分(但是,我可以重用执行服务来最小化对象创建和线程管理开销.)
所以
我正在寻找可以重用Given&Then for Unit和Integration测试的BDD java框架.
换句话说1. 给出一些先决条件.2. 何时 - 取决于环境3. 然后验证何时的结果
我希望能够通过更改When,并保持Given和Then完整,更改测试的类型,例如在简单的REST服务中:
因此,在示例中,Given和Then的行为方式相同,对于集成和单元测试,以及简单地改变当测试的范围从UNIT到INTEGRATION时.
有人能指出我正确的方向吗?
我不想重新发明轮子
我一直以为enum hashCode在Java中引用了序数,因为序数似乎是hashCode的完美候选者,但事实证明它的枚举hashCode实际上是指默认的hashCode对象实现.
我明白,这并不与JLS相矛盾,但这让我感到惊讶,我想不出为什么会这样做.虽然我猜JVM,可能依赖于它以某种方式提供独特的保证,但这不再适用于64位JVM.
我已经检查过JDK 1.6和最新的JDK 7,这两种方式都是一样的.
有没有人知道原因,是这样做的?
使用序数作为hashCode是完全合理的,因为它满足了所需的所有凭证,而且从一个JVM开始到另一个JVM开始甚至是一致的,这不是必需的,但是很好.
我有一个用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) 在我们的项目中,我们使用的是ReactiveMongo用Play 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)
这有效,但感觉就像发明轮子一样.
对于这个常见问题,有没有更好的解决方案?
我正在使用 Google 优化运行 A/B 重定向测试,在 React、Redux 平台上使用 SPA。
我正在尝试解决的一个问题是 - 重定向到新页面会导致整个页面重新加载,我想避免这种情况,而是更喜欢手动进行,因此它对用户来说是无缝的,而且速度要快得多。
有没有办法做到这一点?
redirect single-page-application reactjs react-redux google-optimize
在Play Scala框架中转换Enumerator为标准的方法是什么Future[List]?
我正在尝试使用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响应?
提前致谢.
java中有一个库可以从底层服务器获取准确的DNS信息吗?
我不仅对IP到DNS映射感兴趣,还对其他记录感兴趣:A、AAAA、MX、NS、SOA、RRSIG 等。
堆:
我们正在阅读许多旧的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 ×6
iterate ×2
scala ×2
spring ×2
bdd ×1
bower ×1
couchbase ×1
dns ×1
enumerator ×1
enums ×1
hashcode ×1
http-headers ×1
ip ×1
jls ×1
jointjs ×1
lodash ×1
mx-record ×1
nosql ×1
performance ×1
react-redux ×1
reactjs ×1
redirect ×1
rest ×1
resttemplate ×1
spring-mvc ×1
tiff ×1
unit-testing ×1