小编mko*_*bit的帖子

自动包装的@Repeatable注释的顺序

在此之前,我曾经手工使用数组声明包装器注释,然后像这样调用它:

@Foos({ @Foo(0), @Foo(1), @Foo(2) })
public void bar() {}
Run Code Online (Sandbox Code Playgroud)

由于我使用{ ... }初始化器创建了一个数组,所以当我稍后通过Reflection访问此方法时,顺序与声明的相同是非常清楚的.

但是,当我使用@RepeatableJava 8中的新注释时,我是否保证将保留订单?

我宣布了一组简单的注释:

public @interface Foos {
  Foo[] value();
}

@Repeatable(Foos.class)
public @interface Foo {
 int value();
} 
Run Code Online (Sandbox Code Playgroud)

并针对最多样化的场景运行一些测试:

@Foo(0) @Foo(1) @Foo(2)
public void bar1() {}

@Foo(2)
@Deprecated @Foo(5)
@Foo(10)
public void bar2() {}
Run Code Online (Sandbox Code Playgroud)

一切似乎完美无缺(当通过Reflection访问时),但我不想依赖于未记录的东西.我觉得应该是这样,但我无法在任何地方找到它!任何人都可以对此有所了解吗?

java annotations java-8

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

Java 8:映射Lambda表达式

我有一个Map<String, List<Object>> multiFieldMap,我需要迭代它的值集并将值添加到multiFieldsList如下

public List<Object> fetchMultiFieldsList() {
    List<Object> multiFieldsList = new ArrayList<Object>();
    for (Entry<String, List<Object>> entry : multiFieldMap.entrySet()) {
        String entityName = entry.getKey();
        List<Object> ids = entry.getValue();
        for (Object id : ids) {
            Object entity = queryService.query(entityName, queryService.property("id").eq(id));
            multiFieldsList.add(entity);
        }
    }
    return multiFieldsList;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这种方法可以进一步简化吗?

java collections lambda java-8

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

将Julian日期转换为Instant

我遇到了一种情况,我希望将Julian日期转换为java.time.Instant(如果有意义),或者一些可以更容易理解的Java时间.我对Julian日期的理解来自阅读维基百科页面.有许多不同的变体,我试图阅读的日期使用不同于其中任何一个的时代.

例如,让我们说时代是1750年日历(新风格)法案的开始,而朱利安日期95906.27600694445在这种情况下我认为是CE 2015年4月15日06:37:26.9 UT,我如何得到一个瞬间这个?我需要稍后调整时区.

我注意到有一个叫做的类JulianFields,但我不知道在哪里/如何使用它.此外,我在包中看到的大多数方法都使用intlong不是真的double.

那么,是否有一种简单的方法可以将使用不同时期的Julian日期转换为Java 8 Instant(或者如果我的想法错误则转换为其他时间).

java time julian-date java-8

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

在 aws 上使用 boto3 进行 dynamoDB 时出现 InvalidSignatureException

当我尝试连接到 aws 上的 dynamoDB 时,我遇到了某种凭据问题。在本地,一切正常,我可以使用环境变量进行连接AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY然后AWS_DEFAULT_REGION

dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')
Run Code Online (Sandbox Code Playgroud)

当更改为环境变量中的实时信用并将端点_url 设置为 aws 上的 dynamoDB 时,会失败并显示:

“botocore.exceptions.ClientError:调用查询操作时发生错误 (InvalidSignatureException):我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”

这些信用是有效的,因为它们在与同一 dynamoDB 通信的不同应用程序中使用。我也尝试过不使用环境变量,而是直接在方法中使用,但错误仍然存​​在。此外,为了避免尾随空格出现任何问题,我什至直接在代码中使用了凭据。我使用 Python v3.4.4。

是否还应该设置一个我不知道的标头?任何提示将不胜感激。

编辑

我现在还创建了新的凭据(以确保只有字母数字符号),但仍然没有骰子。

amazon-web-services amazon-dynamodb python-3.4 boto3

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

将多个源语言文档组合到一个Javadoc JAR中

如果我有一个项目有java,groovykotlin插件应用每个代码编写的代码,我如何创建(我应该)创建一个javadoc.jar包含所有代码文档的分发?

java插件给我的javadoc课,groovy插件给我的groovydoc任务,但这些似乎并没有合作.

如何将此文档"合并"为单个内聚工件?

javadoc gradle groovydoc kdoc

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

通过gradle更改文件权限

我创建了.jar文件并将其移至dir,但是我不明白以后如何更改该文件的权限。

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': version,
                'Main-Class':'com.asd.App',
                'Class-Path': 'com.asd'
    }
    baseName = project.name + '-all'
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
    def file = file('/home/master/project/asd')
    fileMode = 755
    destinationDir = file
    with jar
}
Run Code Online (Sandbox Code Playgroud)

gradle build.gradle

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

如何使用Java在Cassandra中检索表名?

如果在CQL shell中使用此代码,我将获得该键空间中所有表的名称.

DESCRIBE TABLES;
Run Code Online (Sandbox Code Playgroud)

我想使用ResulSet检索相同的数据.下面是我在Java中的代码.

String query = "DESCRIBE TABLES;";

ResultSet rs = session.execute(query);
for(Row row  : rs) {
    System.out.println(row);
}   
Run Code Online (Sandbox Code Playgroud)

会话和群集早先已初始化为:

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Session session = cluster.connect("keyspace_name");
Run Code Online (Sandbox Code Playgroud)

或者我想知道Java代码来检索密钥空间中的表名.

cql cassandra nosql cql3

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

Jenkins多分支管道的自定义项目识别器

当您创建Github组织或Bitbucket团队/项目时,其中一个配置项是:

项目识别器:管道Jenkinsfile

除了"Pipeline Jenkinsfile"之外没有其他选项,但是该选项甚至存在这一事实表明开发人员设想人们为顶级目录中没有单个'Jenkinsfile'的项目编写自己的自定义'识别器'回购.

任何人都可以指出我可以安装和使用的任何其他项目识别器的方向,甚至是一些关于从哪里开始实现我自己的识别器的细节?

我的特定用例是在单个存储库中,我们定义了几个工作流,这些工作流在一个仓库中协调代码/配置上的操作,我希望能够使用Bitbucket Team选项动态扫描仓库,找到所有*.Jenkinsfile跨所有分支/拉取请求的文件并填充必要的管道.

例如,在repo中是文件:

/pipelines/workflow1.Jenkinsfile
          /workflow2.Jenkinsfile
          /workflow3.Jenkinsfile
Run Code Online (Sandbox Code Playgroud)

我想jenkins创建文件夹结构:

 /team/repo/workflow1/master
                     /dev
                     /PR1
           /workflow2/master
                     /dev
                     /feature-xyz
Run Code Online (Sandbox Code Playgroud)

有关我可以从创建项目识别器开始的地方开始的任何想法(如果这是可能的话)?

github bitbucket jenkins jenkins-pipeline multibranch-pipeline

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

Jenkins ssh-agent 启动然后在管道构建中立即停止

我有一个简单的詹金斯管道构建,这是我的詹金斯文件:

pipeline {
    agent any
    stages {
        stage('deploy-staging') {
            when {
                branch 'staging'
            }
            steps {
                sshagent(['my-credentials-id']) {
                    sh('git push joe@repo:project')
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 sshagent 推送到远程服务器上的 git 存储库。我已经创建了指向 Jenkins master ~/.ssh 中的私钥文件的凭据。

当我运行构建时,我得到以下输出(我用 * 替换了一些敏感信息):

[ssh-agent] Using credentials *** (***@*** ssh key)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-cjbm7oVQaJYk/agent.11558
SSH_AGENT_PID=11560
$ ssh-add ***
Identity added: ***
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
$ ssh-agent -k
unset SSH_AUTH_SOCK; …
Run Code Online (Sandbox Code Playgroud)

ssh-agent jenkins jenkins-pipeline

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

使用 Jenkins 共享库作为类

我有一个 Jenkins 文件,我正在尝试从我的共享库中实例化一个 groovy 类。我得到“无法解决类测试”

我在共享库中有一个 src/com/org/foo.groovy 文件:

package com.org

class Test implements Serializable{
  String val
  Test(val) {
    this.val = val
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图在我的 jenkinsfile 中实例化它

@Library('Shared-Library@master') 
import com.org //also tried to use with .foo with no success

def t = new Test("a") //doesnt work
def t = new foo.Test("a")//doesnt work
def t = new com.org.foo.Test("a")//doesnt work
Run Code Online (Sandbox Code Playgroud)

如果我将文件称为类(我无权访问其构造函数),那么有效的是什么。那是:

@Library('Shared-Library@master')
def t = new foo.com.org.foo()
Run Code Online (Sandbox Code Playgroud)

这很好,让我可以使用 foo 函数。但是,我失去了赋予类常量并使用参数构造它的能力。

知道如何定义和使用共享库中的类吗?谢谢

groovy class shared-libraries jenkins jenkins-pipeline

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