小编mko*_*bit的帖子

读取/更新操作上的Dynamodb ConditionalCheckFailedException - java sdk

我是DynamoDB的新手,并尝试使用Transaction支持的示例场景.我正在使用dynamodb-transaction库中提供的相同实体.唯一的区别是我用散列键添加了一个范围键.这是表定义:

  • ItemId - >哈希键,字符串
  • ItemName - >范围键,字符串

@DynamoDBTable(tableName = "Item")
public static class ExampleItem {
    private String itemId;
    private String value;
    private String itemName;
    private Long version;
    @DynamoDBHashKey(attributeName = "ItemId")
    public String getItemId() {
        return itemId;
    }
    public void setItemId(String itemId) {
        this.itemId = itemId;
    }
    @DynamoDBRangeKey(attributeName="ItemName")
    public String getItemName() {
        return itemName;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value; …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services amazon-dynamodb aws-sdk

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

如何使用Jackson JSON将JSON字符串转换为Map <String,Set <String >>

我知道将JSON字符串转换为Map<String, String>通过的实现:

public <T1, T2> HashMap<T1, T2> getMapFromJson(String json, Class<T1> keyClazz, Class<T2> valueClazz) throws TMMIDConversionException {
    if (StringUtils.isEmpty(json)) {
        return null;
    }
    try {
        ObjectMapper mapper = getObjectMapper();
        HashMap<T1, T2> map = mapper.readValue(json, TypeFactory.defaultInstance().constructMapType(HashMap.class, keyClazz, valueClazz));
        return map;
    } catch (Exception e) {
        Logger.error(e.getMessage(), e.getCause());
    }
} 
Run Code Online (Sandbox Code Playgroud)

但我无法扩展它以将我的JSON转换为Map<String, Set<String>>.显然,上面的方法失败了,因为它打破了Set项并放入列表中.需要一些帮助!! 谢谢

示例JSON字符串如下所示.这个JSOn必须转换为Map<String, Set<CustomClass>>.

{
    "0": [
        {
            "cid": 100,
            "itemId": 0,
            "position": 0
        }
    ],
    "1": [
        {
            "cid": 100,
            "itemId": 1,
            "position": 0
        } …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

try-with-resources用InputStreamReader包装流的地方?

我可能会过度思考这个问题,但我只是写了代码:

try (InputStream in = ModelCodeGenerator.class.getClassLoader().getResourceAsStream("/model.java.txt"))
{
    modelTemplate = new SimpleTemplate(CharStreams.toString(new InputStreamReader(in, "ascii")));
}
Run Code Online (Sandbox Code Playgroud)

这意味着InputStreamReader永远不会关闭(但在这种情况下,我们知道它的close方法只是关闭底层的InputStream.)

人们可以把它写成:

try (InputStreamReader reader = new InputStreamReader(...))
Run Code Online (Sandbox Code Playgroud)

但这似乎更糟糕.如果由于某种原因抛出InputStreamReader,则InputStream将永远不会被关闭,对吧?这是C++中的常见问题,其中构造函数调用其他构造函数.异常可能导致内存/资源泄漏.

这里有最好的做法吗?

java java-7

8
推荐指数
2
解决办法
8006
查看次数

番石榴自动收报机缓存过期

Google Guava教程称可以使用Ticker测试缓存过期

根据我的理解,我可以用它来强制快速过期.我是对的吗?

但我试过以下代码,它没有用,有什么建议吗?

@Test
public void expireAfterWriteTestWithTicker() throws InterruptedException {
    Ticker t = new Ticker() {
        @Override
        public long read() {
            return TimeUnit.MILLISECONDS.toNanos(5);
        }
    };
    //Use ticker to force expire in 5 millseconds
    LoadingCache<String, String> cache = CacheBuilder.newBuilder()
            .expireAfterWrite(20, TimeUnit.MINUTES).ticker(t).build(loader);

    cache.getUnchecked("hello");
    assertEquals(1, cache.size());
    assertNotNull(cache.getIfPresent("hello"));
    //sleep
    Thread.sleep(10);
    assertNull(cache.getIfPresent("hello"));    //failed 

}
Run Code Online (Sandbox Code Playgroud)

testing ticker guava

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

无法更新DynamoDB中的项目

我一直试图弄清楚如何更新dynamoDB中的项目,但没有取得任何成功.

我知道如何添加和设置和删除项目但不更新.

这是我的代码:

dynamoDB.updateItem({
    "TableName": "mytable",
    "Key": {
        "thing_ID": {"S": "0000"}
    },
    "UpdateExpression": "SET",
    "ExpressionAttributeNames": {
        "SessionID": ""
    },
    "ExpressionAttributeValues": {
        "SessionID": {
            "S": "maybe this works",
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

node.js amazon-dynamodb

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

流式传输okhttp响应体

我正在使用OkHttp 实现Server-Sent Events库.服务器发送事件的工作原理是保持与服务器的开放HTTP连接,"事件"可以在该服务器上流回客户端.连接仅在错误时关闭,或者客户端明确断开连接.

使用OkHttp实现此流式传输行为的最佳方法是什么?我试图做类似的事情:

response.body().source().readAll(new Sink() {
  @Override
  public void write(Buffer source, long byteCount) throws IOException {
    Log.d(TAG, "write(): byteCount = "+byteCount);
  }

  @Override
  public void flush() throws IOException {
    Log.d(TAG, "flush()");
  }

  @Override
  public Timeout timeout() {
    return Timeout.NONE;
  }

  @Override
  public void close() throws IOException {
    Log.d(TAG, "close()");
  }
});
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我最终会看到日志消息write(),但有时可能需要很长时间(分钟).这让我觉得可能会有一些缓冲正在进行,我不会得到我的数据,直到刷新缓冲区.

我曾经用来curl验证服务器是否正常运行.该数据被准时送到,我只是没有得到我的回调,当它到达.

我有经验OkHttpOkio非常有限的,所以这是非常有可能的,我乱七八糟的东西了,或者忘记设置一些选项.任何帮助是极大的赞赏!:)

okhttp okio

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

jenkins 在工作终止后将 @(at 符号)添加到工作区名称

我使用 jenkins 流水线项目来构建我的基于 OpenEmbedded 的项目。我的声明性管道的节点包含

customWorkspace "/data/jenkins/oe/"
Run Code Online (Sandbox Code Playgroud)

Jenkins 实际上构建了一个更深的目录,在

/data/jenkins/oe/project-name/
Run Code Online (Sandbox Code Playgroud)

这不是问题。但是在我在开发过程中杀死了一项工作之后,jenkins 现在在路径中添加了 at 符号,例如

/data/jenkins/oe/project-name@2/
Run Code Online (Sandbox Code Playgroud)

这会杀死 OE。

...@2如果我删除一切从目录甚至恢复/data/jenkins/oe/。我也尝试基于此错误启用并发构建,但这些都不起作用。

是什么导致了这种行为以及如何避免它?要么禁用 at 符号使用,要么禁用子目录使用?

jenkins jenkins-pipeline

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

匹配的拼图块

我没有什么有用的东西,正在玩这样的拼图游戏:

alt text http://manual.gimp.org/nl/images/filters/examples/render-taj-jigsaw.jpg

我想知道是否有可能制作一个帮助我把它组合在一起的程序.

想象一下,我有一个小拼图,比如4x3件,但是小标签和空白是不均匀的 - 不同的部件有不同高度,不同形状,不同尺寸的这些标签.我要做的是拍摄所有这些片段,让程序分析它们并将它们的属性存储在某个地方.然后,当我拿起一块时,我可以让程序告诉我哪些碎片应该是它的"邻居" - 或者如果我必须填写一个空白,它会告诉我想要的拼图是怎么回事看.

不幸的是,我从来没有与图像处理和模式识别任何东西,所以我想请你为一些指针- 我该如何识别一块拼图(基本上是正方形,标签和孔)中的图片

然后我可能需要旋转它,使其处于正确位置,按比例缩放,然后测量每侧的标签/空白,以及每侧的斜率(如果存在).

我知道扫描/拍摄1000块拼图并使用它会花费太多时间,这只是一个宠物项目,我会学到新东西.

pattern-recognition image

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

如何使gradle/intellij/play框架协同工作?

这里有一个Gradle构建,这里建议使用play web framework.

plugins {
  id 'play'
  id 'idea'
}

repositories {
  jcenter()
  maven {
    name "typesafe-maven-release"
    url "https://repo.typesafe.com/typesafe/maven-releases"
  }
  ivy {
    name "typesafe-ivy-release"
    url "https://repo.typesafe.com/typesafe/ivy-releases"
    layout "ivy"
  }
}
Run Code Online (Sandbox Code Playgroud)

它在构建,启动等时从命令行工作正常但是一旦项目在intellij中导入(想法的项目文件生成gradle idea),依赖项(来自播放插件)不会显示在项目视图/外部库中(甚至在gradle面板中点击"刷新所有gradle项目"之后).

谢谢 :)

PS:intellij 15.0.2/gradle 2.6/播放插件

在此输入图像描述

scala intellij-idea gradle playframework

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

如何在 Jenkins 管道中加载 bash 脚本?

我们有一些复杂的 bash 脚本,现在位于 Jenkins 的托管文件部分。我们尝试将作业迁移到管道,但我们不知道将 bash 脚本转换为 groovy,因此我们希望将其保留在 bash 中。我们在 Git 中有一个 jenkins-shared-library,我们在其中存储我们的管道模板。在作业中,我们添加了正确的环境变量。

我们希望将 bash 脚本保存在 git 中而不是托管文件中。在管道中加载此脚本并执行它的正确方法是什么?我们用 尝试了一些东西libraryResource,但我们没有设法让它工作。我们必须将test.sh脚本放在 git 中的什么位置以及如何调用它?(或者在这里运行shell脚本是完全错误的)

def call(body) {
    // evaluate the body block, and collect configuration into the object
    def pipelineParams= [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = pipelineParams
    body()

    pipeline {
        agent any

        options {
            buildDiscarder(logRotator(numToKeepStr: '3'))
        }

        stages {

            stage ('ExecuteTestScript') {
                steps {
                    def script = libraryResource 'loadtestscript?'

                    script {
                        sh './test.sh'
                    }
                }
            }

        }

        post { …
Run Code Online (Sandbox Code Playgroud)

bash jenkins jenkins-pipeline

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