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) 我正在尝试使用"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) 我有一个使用工作流插件创建的Jenkins构建管道.在开始时,管道在docker容器内部运行gulp构建,然后使用以下代码存档测试结果
step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml'])
Run Code Online (Sandbox Code Playgroud)
在以下步骤中,我将工件打包并将它们发送到二进制存储库.
当单元测试未通过时,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) 我的詹金斯文件如下所示:
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)
如何访问节点外的变量?
我有一个基本的JAXRS服务,我可以轻松地公开,但一次我希望使用依赖注入API,我怀疑Google Guice将是最好的之一.考虑到这一点,我试图整合它,但文档有点沉重,我不得不四处寻找尝试找到合适的组合
但是目前我从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) 我想打开检查失败时使用的几个"检查"和"测试"插件的报告文件.我知道无论原始任务是否被执行,我都可以使用"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 …我是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) 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) 我正在使用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验证服务器是否正常运行.该数据是被准时送到,我只是没有得到我的回调,当它到达.
我有经验OkHttp和Okio非常有限的,所以这是非常有可能的,我乱七八糟的东西了,或者忘记设置一些选项.任何帮助是极大的赞赏!:)