小编Chr*_*ner的帖子

AWS Java SDK 2.0为S3对象创建一个预签名URL

我知道使用SDK的1.x版,就像按照文档一样简单

java.util.Date expiration = new java.util.Date();
long msec = expiration.getTime();
msec += 1000 * 60 * 60; // Add 1 hour.
expiration.setTime(msec);

GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT); 
generatePresignedUrlRequest.setExpiration(expiration);

URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest); 
Run Code Online (Sandbox Code Playgroud)

但是看2.0文档,但我找不到与之接近的任何东西GeneratePresignedUrlRequest

希望有另外一个简单的模式吗?

java amazon-s3 amazon-web-services

14
推荐指数
1
解决办法
1058
查看次数

DynamoDBMapper仅在唯一时保存项目

我试图根据两个不同列的组合将表中的项保持唯一.

我有一个instanceId和imageId列(以及其他)并基于StackoverflowAWS论坛上的几个帖子,下面应该有效吗?

public void saveUnique(Server server) {
    DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
    Map<String, ExpectedAttributeValue> expectedAttributes =
        ImmutableMap.<String, ExpectedAttributeValue>builder()
            .put("instanceId", new ExpectedAttributeValue(false))
            .put("imageId", new ExpectedAttributeValue(false))
            .build();
    saveExpression.setExpected(expectedAttributes);
    saveExpression.setConditionalOperator(ConditionalOperator.AND);
    try {
        mapper.save(server, saveExpression);
    } catch (ConditionalCheckFailedException e) {
        //Handle conditional check
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试保存重复项(相同的instanceId和imageId)时,它都会成功保存到数据库中.

我在这里错过了什么?

EDIT RE notionquest回答

更新到下面的答案.

我有一个每分钟运行一次API的工作.API的响应表示为ServerPOJO.它Server有一个名为的属性instanceId.

我要确保,如果ServerinstanceId已经在数据库中,不救它.

Server对象的另一个属性id设置为表主键.

public void saveUnique(Server server) {
    DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();

    Map<String, ExpectedAttributeValue> …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services amazon-dynamodb

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

GraphQL,如何返回byte[]类型

我将缩略图作为字节数组保存在数据库中。我似乎无法弄清楚如何通过 GraphQL 将这些返回给前端客户端。

在标准 REST 方法中,我只需发送一个带有字节的 POJO,然后我就可以轻松地将其渲染出来。

然而试图返回 abyte[]正在抛出

无法将类型定义 (ListType{type=NonNullType{type=TypeName{name='Byte'}}}) 与 java 类型 (class java.lang.Byte) 匹配:Java 类不是 List 或泛型类型信息丢失:类 java.lang.Byte

该错误是描述性的,告诉我出了什么问题,但我不知道如何解决。

我的thumbnail.graphqls样子:

type Thumbnail {
    id: ID!
    resource: [Byte!]
}
Run Code Online (Sandbox Code Playgroud)

和缩略图 POJO

public class Thumbnail extends BaseEntity {
    byte[] resource;
}
Run Code Online (Sandbox Code Playgroud)

graphql-spring-boot-starter在Java端使用来处理事情,并且我认为它支持Byte开箱即用,那么我哪里出了问题?

对 GraphQL 非常陌生,因此这可能是一个明显的错误。

干杯,

java spring-boot graphql

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

Silverstripe合并GroupedLists

我正在尝试返回一个GroupedList包含来自两个页面的信息dataobjects.有没有一种简单的方法将两个列表合并在一起?

public function getGroupedContent()
{
    $dataobjects = GroupedList::create(FileNetObject::get());
    $pages = GroupedList::create($this->Children());

    $result = ??;


    return $result;
}
Run Code Online (Sandbox Code Playgroud)

ArrayList合并失败一样标准的array_merge-我建议最好从查询把它变成一个单一的前合并在一起的结果GroupedList

php silverstripe

5
推荐指数
1
解决办法
296
查看次数

在SilverStripe中向CMS添加按钮

如何在启动操作的CMS后端添加按钮?我可以在我想要的地方显示按钮:

public function getCMSFields()
{
    $fields = parent::getCMSFields();

    $fields->addFieldsToTab("Root.ButtonTest", array(
            FormAction::create('doAction', 'Action button')
        )
    );

    return $fields;
}

public function doAction() 
{
   //Do something
}
Run Code Online (Sandbox Code Playgroud)

但是,单击时添加的按钮不执行任何操作.

我已经看到了一个如何在主操作栏上放置按钮(保存/发布旁边)的例子,但这不是我想要做的.

查看我能找到的唯一文档页面,我是否需要在以下内容中执行以下操作:

public function getCMSActions()
{
    $actions = parent::getCMSActions();
    //Something here?
}
Run Code Online (Sandbox Code Playgroud)

目前还不是很清楚如何创建按钮调用的动作.

button silverstripe content-management-system

4
推荐指数
1
解决办法
2499
查看次数

获取字符串中的最后一个数字(JavaScript)

var str = "7-Dec-1985" var str = "12-Jan-1703" var str = "18-Feb-1999"

我如何才能从弦乐中拔出一年?我尝试了许多不同的RegExp,但似乎都没有工作.

我本以为re = new RegExp(/(\d+)\D*\z/);有工作但遗憾却没有.

任何建议将非常感激

javascript regex

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

嵌套对象的简单 Jackson 反序列化

这应该是微不足道的,但由于某种原因,我似乎无法做到正确。

我有以下 JSON 响应

{
  "info": "processing",
  "data": {
    "id": "123",
    "cars": [
      {
        "id": "1"
      },
      {
        "id": "2"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我试过用简单的 POJO 转换它

@JsonRootName(value = "data")
public class Product {

    String id;

    List<Car> cars;

}
Run Code Online (Sandbox Code Playgroud)

public class Car {

    String id;

}
Run Code Online (Sandbox Code Playgroud)

但这会返回一个Productid 和 products 为 null的空对象。当然我不需要JsonDeserialize为这个简单的动作编写自定义?

java json jackson

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

使用 websockets 和 SpringBoot 广播消息

我试图了解如何使用带有 Spring Boot 的 websockets 向 Javascript 应用程序发布/广播消息。我能找到的所有示例都在使用StompJs客户端 - 但是我无法StompJs在我的客户端代码中使用,而且我不确定我的后端是否正确,这无济于事。

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/subscribe")
                .setAllowedOrigins("*")
                .withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/topic");
    }

}
Run Code Online (Sandbox Code Playgroud)

只需使用一个简单@Scheduled的每 5 秒产生一次时间,并将其发送到time主题(好吧,我相信这就是它在做什么......)

@Component
@Slf4j
public class TimeSender {
    private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm:ss");

    private SimpMessagingTemplate broker;

    @Autowired
    public TimeSender(final SimpMessagingTemplate broker) {
        this.broker = broker;
    }

    @Scheduled(fixedRate = 5000)
    public void …
Run Code Online (Sandbox Code Playgroud)

java websocket spring-boot

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

Spring Boot 和 Lets Encrypt 没有共同的密码套件

使用很棒的库 acme4j,我创建了 3 个文件。

  • 域名.csr
  • 域.key
  • 域链.crt

我遇到的问题是,当我将它们转换为 keystore.p12 时,我无法让 Spring Boot 使用它。我使用以下命令创建了 keystore.p12 文件:

openssl pkcs12 -export -out keystore.p12 -inkey domain.key -in domain-chain.crt
Run Code Online (Sandbox Code Playgroud)

配置是这样设置的

server:
  port: 9443
  ssl:
    key-store: keystore.p12
    key-password: secret
    key-store-type: PKCS12
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试击中终点,我就会javax.net.ssl.SSLHandshakeException: no cipher suites in common被抛出。

这似乎是一个相对常见的问题,一个建议是按照https://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html启用调试

所以,这样做并再次击中终点我可以看到

javax.net.ssl|DEBUG|2B|reactor-http-epoll-2|2019-05-03 07:47:10.917 NZST|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 for TLS11
javax.net.ssl|DEBUG|2B|reactor-http-epoll-2|2019-05-03 07:47:10.917 NZST|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|2B|reactor-http-epoll-2|2019-05-03 07:47:10.917 NZST|HandshakeContext.java:294|Ignore unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 for TLS11
javax.net.ssl|DEBUG|2B|reactor-http-epoll-2|2019-05-03 07:47:10.918 NZST|HandshakeContext.java:294|Ignore unsupported cipher suite: …
Run Code Online (Sandbox Code Playgroud)

java ssl spring-boot lets-encrypt

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

Silverstripe-使模块从自定义页面类型扩展的最佳方法

我的网站结构是所有自定义页面类型,具有从Page.php扩展的单个父页面。

class CustomPage extends Page {}

class  Custom_Controller extends Page_Controller {
    //load all javascript/css for entire site here etc
}


class SomeClass extends CustomPage {}

class SomeClass_Controller extends Custom_Controller
{
    // etc etc you get the point. 
}
Run Code Online (Sandbox Code Playgroud)

现在,站点中的所有其他页面分别从CustomPage和Custom_Controller扩展。Page.php几乎是空的。

现在,使用未在内部编写的模块时就会出现问题。例如,Blog *模块将不会继承新基类Custom_Controller中定义的javascripts / css / functions,因为它被设置为扩展Page_Controller。

从根本上使Blog_Controller扩展Custom_Controller而不修改Blog模块的理想方法是什么?

*博客模块只是一个例子。这适用于所有模块。

php extends silverstripe

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

Javascript - 替换大量的if语句

我有一些不同的单选按钮,可以返回种族和性别.该脚本在内部应用程序内部运行,因此不是返回"boy","girl"或"both",而是返回7707330,7707333和7707336.类似于种族单选按钮.

然后,我需要根据种族和性别的组合验证数据.这是一个非常简单的任务,但我最终得到了15个if语句!一切都按预期工作,但必须有一个更清洁的解决方案?

function test(radioResults) {
    var1 = radioResults[0].toString();
    var2 = radioResults[1].toString();

    var roll = parseFloat(parent.roll);

    if (var2 == '7707330') {
        gender = 'boy';
    }
    if (var2 == '7707333') {
        gender = 'girl';
    }
    if (var2 == '7707336') {
        gender = 'both';
    }

    if (var1 == '7707341') {
        maori(gender);
    }
    if (var1 == '7707344') {
        pasifika(gender);
    }
    if (var1 == '7707347') {
        all(gender);
    }
}

function maori(gender) {
    //Maori 
    if (gender == 'boy') {
        ethnicity = parseFloat(parent.getMBoys);
        validation(ethnicity);
    }
    if (gender …
Run Code Online (Sandbox Code Playgroud)

javascript refactoring if-statement code-cleanup

0
推荐指数
1
解决办法
5270
查看次数