小编mko*_*bit的帖子

DynamoDBMapper加载与查询

DynamoDBMapper提供了从表中读取一个项目的不同方法:

  • 询问
  • 加载

是否有推荐,哪些可以使用?在快速测试中,以下两个代码段为具有主键= hash和range key = date的表返回相同的"MyEntry"项,而查询方法大约快10%.

加载

public MyEntry getEntryForDay(final Integer hash, final LocalDate date) {
    return mapper.load(MyEntry.class, hash, date);
}
Run Code Online (Sandbox Code Playgroud)

询问

public MyEntry getEntryForDay(final Integer hash, final LocalDate date) {
    final MyEntry hashKeyValues = new MyEntry ();
    hashKeyValues.setHash(hash);
    final Condition rangeKeyCondition = new Condition()//
            .withComparisonOperator(ComparisonOperator.EQ.toString())//
            .withAttributeValueList(new AttributeValue().withS(new LocalDateMarshaller().marshall(date)));
    final DynamoDBQueryExpression<MyEntry> queryExpression = new DynamoDBQueryExpression<MyEntry>()//
            .withHashKeyValues(hashKeyValues)//
            .withRangeKeyCondition("date", rangeKeyCondition)//
            .withLimit(1);
    final List<MyEntry> storedEntries = mapper
            .query(MyEntry.class, queryExpression);
    if (storedEntries.size() == 0) {
        return null;
    }
    return storedEntries.get(0);
}
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb

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

如何索引jsonb整数值

我正在尝试使用"newish"JSONB类型.

我有一个documents带有propertiesjsonb字段的表,在那里是一个字段publication_year.我想查找一年范围内的所有文件记录,例如2013-2015. [编辑:查询一系列值是这里的主要挑战,即使我使用了下面的完全匹配示例.请求的方法也适用于美元范围(价格> 20美元,价格<40美元)或时间戳范围).

我试过了:

create index test1 on documents using gin ((cast(properties->'announced_on_year' as integer)));

ERROR:  cannot cast type jsonb to integer
Run Code Online (Sandbox Code Playgroud)

以及:

create index test1 on documents using gin (cast(properties->>'publication_year' as integer));

ERROR:  data type integer has no default operator class for access method "gin"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.`
Run Code Online (Sandbox Code Playgroud)

我从这篇文章中看到http://www.postgresql.org/message-id/10736.1409063604@sss.pgh.pa.us这应该是可能的,但我无法弄清楚正确的语法.

当我只做一个简单的索引:

create index test1 on …
Run Code Online (Sandbox Code Playgroud)

postgresql indexing gwt-gin jsonb

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

当舞台不稳定时停止管道

我有一个使用工作流插件创建的Jenkins构建管道.在开始时,管道在docker容器内部运行gulp构建,然后使用以下代码存档测试结果

step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml'])
Run Code Online (Sandbox Code Playgroud)

在以下步骤中,我将工件打包并将它们发送到二进制存储库.

当单元测试未通过时,Jenkins了解构建不稳定并将其标记为黄色.然而,它仍然继续在管道中的后续步骤.当单元测试失败时,有没有办法让管道停止?

jenkins-workflow

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

Jenkins管道(工作流程)阶段视图消失

我有问题,在一些Jenkins管道项目中,舞台视图变得不可见.

通常,您可以看到"最近更改"和"永久链接"之间的阶段视图.在一些项目运行后,舞台视图消失.如果我克隆项目,则视图在克隆中可见,但在原始项目中不可见.

这是克隆项目的一种解决方法,但不是一个好的,因为我不能每周替换这份工作.

有人曾经看过这个问题并且有想法,如何解决这个问题?

舞台视图div位于作业概述页面上,但它不可见:

<div class="cbwf-stage-view">
    <div class="cbwf-widget cbwf-controller-applied pipeline-staged" objecturl="/user/myname/my-views/view/MaintainedByMe/job/Category/job/ProjectName/" fragcaption="Stage View" cbwf-controller="pipeline-staged"></div>
    <link rel="stylesheet" href="/adjuncts/ee6b655e/org/jenkinsci/pipeline/stageview_adjunct.css" type="text/css">
    <script src="/adjuncts/ee6b655e/org/jenkinsci/pipeline/stageview_adjunct.js" type="text/javascript"></script>
</div>
Run Code Online (Sandbox Code Playgroud)

我的詹金斯文件:

def sonarHostUrl = 'http://sonar.host.url:1234'

node('Build') {
    echo "enforce a clear workspace:" // because there were some other problems
    deleteDir()

    stage('Checkout') {
        checkoutFromSVN()
    }
    stage('Compile') {
        mvn 'clean compile test-compile'
    }
    stage('Unit Tests') {
        mvn '-B org.jacoco:jacoco-maven-plugin:prepare-agent test'
        step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
    }
    stage('Deploy to Nexus') {
        mvn 'install deploy -DskipTests'
        archiveArtifacts artifacts: '**/project-name*.jar', onlyIfSuccessful: false
    } …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-workflow jenkins-pipeline

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

如何在Jenkins文件Groovy函数中访问阶段外的变量?

我的詹金斯文件如下所示:

import groovy.json.*
def manifestFile = "C:\\manifest.yml"

node {
  stage('Build') { 

  }
  stage('Deploy') { 
    checkDeployStatus()
  } 
}

def boolean checkDeployStatus() {
  echo "${manifestFile}"
  return true
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外如下:

groovy.lang.MissingPropertyException: No such property: manifestFile for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
Run Code Online (Sandbox Code Playgroud)

如何访问节点外的变量?

groovy jenkins jenkins-pipeline

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

如何让Google Guice与JaxRS合作(泽西岛)

我有一个基本的JAXRS服务,我可以轻松地公开,但一次我希望使用依赖注入API,我怀疑Google Guice将是最好的之一.考虑到这一点,我试图整合它,但文档有点沉重,我不得不四处寻找尝试找到合适的组合

  • 在web.xml
  • Context Listener(我应该使用ServletContainer还是GuiceContainer)
  • 服务
  • 是用@Singleton或@Request注释服务还是什么都没有(我应该用@Singleton注释 - 文档说我应该但是然后说默认是请求范围)
  • 是否使用@InjectParam注释构造函数参数

但是目前我从Google Guice那里得到错误,他们会根据我是否使用@InjectParam注释而改变.

如果我用@InjectParam注释,那么我得到

       Mar 29, 2013 9:52:04 PM com.sun.jersey.spi.inject.Errors processErrorMessages
   SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
   SEVERE: The class com.hillingar.server.dao.interfaces.UserDao is an interface and cannot be instantiated.
   SEVERE: Missing dependency for constructor public com.hillingar.server.SessionUtility(com.hillingar.server.dao.interfaces.UserDao) at parameter index 0
Run Code Online (Sandbox Code Playgroud)

如果我没有注释,那么我得到

    Mar 29, 2013 9:54:59 PM com.sun.jersey.spi.inject.Errors processErrorMessages
SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
  SEVERE: Missing …
Run Code Online (Sandbox Code Playgroud)

java jax-rs jersey guice guice-servlet

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

Gradle:仅在任务失败时执行操作

我想打开检查失败时使用的几个"检查"和"测试"插件的报告文件.我知道无论原始任务是否被执行,我都可以使用"finalizedBy来执行另一个任务.使用这些知识,我只有在相应的任务(在这个例子中checkstyle)失败时才尝试以下方法打开报告:

task showCheckStyleResultsInBrowser(type: Exec) {
    ext.htmlFileName = "main.html"
    executable 'open'
    args 'file:///' + checkstyleMain.reports.xml.destination.parent + "/" + ext.htmlFileName
}

task showCheckStyleResultsIfFailed {
    ext.aCheckFailed = true
    doLast {
        if (ext.aCheckFailed) {
            showCheckStyleResultsInBrowser.execute()
        }
    }
}

checkstyleMain {
    finalizedBy 'showCheckStyleResultsIfFailed'
    doLast {
        // convert the xml output to html via https://stackoverflow.com/questions/20361942/generate-checkstyle-html-report-with-gradle
        ant.xslt(in: reports.xml.destination,
                 style: new File('config/checkstyle/checkstyle-noframes-sorted.xsl'),
                 out: new File(reports.xml.destination.parent, showCheckStyleResultsInBrowser.htmlFileName))

        showCheckStyleResultsIfFailed.aCheckFailed = false
    }
}
Run Code Online (Sandbox Code Playgroud)

解释(据我所知):

  • showCheckStyleResultsInBrowser实际上是打开报告的任务.您可以忽略它实际执行的操作,但如果检查任务失败则应该执行该操作
  • showCheckStyleResultsIfFailed任务声明一个属性aCheckFailed并将其初始化为true.执行时,它会检查它是否仍然为真(这意味着检查未成功完成),如果是,则使用打开报告showCheckStyleResultsInBrowser.
  • checkstyleMain是执行实际检查的任务.我对它的结果很感兴趣.但是我不知道如何去做.因此,在checkStyleMain …

gradle build.gradle

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

读取/更新操作上的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万
查看次数

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

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
查看次数

流式传输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
查看次数