小编Dou*_*hes的帖子

在java.time.Period类中,withDays(),withMonths(),withYears()的目的是什么

我注意到java.time.Period类包含一些与可用的静态工厂方法相同的实例方法.

  • .withDays() 行为与...相同 Period.ofDays()
  • .withMonths() 行为与...相同 Period.ofMonths()
  • .withYears() 行为与...相同 Period.ofYears()

这些实例方法令人困惑,因为它们创建了一个新的Period并返回它们,但没有考虑它们被调用的Period的状态.

Period p = Period.ofWeeks(3);
p = p.withDays(2);
Run Code Online (Sandbox Code Playgroud)

似乎合乎逻辑的是,这将返回3周,2天的时间段,但它只返回2天的时间段.这就像我打电话一样Period.ofDays(2).

此外,还有五种其他静态工厂方法,没有类似的实例方法.

那么,这三种实例方法是否存在?如果是这样,用例是什么?

java java-8 java-time

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

AWS API Gateway OPTIONS请求返回500错误

我是API网关和Lambda的新手。我正在尝试将基于Node.js Express的API部署到lambda。我正在使用awslabs中的aws- serverless -express示例。这样,我的许多AWS配置都是为我自动创建的。

看来我的API通过API网关正常工作。我的帖子和获取方法工作正常。但是,我需要支持CORS。我的应用程序应该对OPTIONS请求返回正确的CORS响应,但是在AWS上不起作用。

最终,无论我做什么,我都会收到500份关于期权要求的回复。我还无法弄清楚如何获得有关这500个错误的任何信息。我不确定是什么原因造成的。

这就是500响应的主体{"message": "Internal server error"}

这些是响应头:

内容长度:36

内容类型:application / json

日期:2017年7月9日星期日17:56:24 GMT

状态:500

通过:1.1 9af17e5a616bfc9ac07fc7e415ade9e6.cloudfront.net(CloudFront)

x-amz-cf-id:1_AZmkLqf1rjkog2MRtvcBAe54aIZdPWmNApBTwG48Af-v_g9WHkZw ==

x-amzn-requestid:ec216a62-64cf-11e7-ad2b-4f1e96508dba

x-cache:来自Cloudfront的错误

我很确定我的OPTIONS请求甚至没有到达Lambda上的应用程序。

我尝试使用API​​网关(和我的应用程序)配置CORS。我正在尝试将其配置为允许所有来源。

如果有什么可以寻找或调试的问题?

编辑:

为了调试此问题,我尝试为API网关启用CloudWatch登录。

API网关的CloudWatch配置

之后,我在CloudWatch中看到了这两个网关查找日志:

在此处输入图片说明

我一直在使用产品,所以我单击该链接并看到以下内容:

在此处输入图片说明

我认为这是一长串的日志条目。我不确定在这种情况下“流”是什么意思。这些条目有数百个。因此,我选择一个带有最新时间戳的时间戳,然后单击它。现在我看到了:

在此处输入图片说明

看来我所有的网关日志都像这样。IE:显然是空的。

因此,我是否可以正确设置日志记录?我在找对地方了吗?

amazon-web-services node.js aws-lambda aws-api-gateway

7
推荐指数
2
解决办法
3949
查看次数

您可以在运行时将结构的void指针强制转换为特定的结构类型吗?

我有一个像这样定义的结构:

struct GameState {
    int score;
    int moves;
    bool won;

    void *metadata;
};
typedef struct GameState GameState;
Run Code Online (Sandbox Code Playgroud)

元数据指针将指向在运行时决定的另一个类型的结构.例如,它可能是:

struct KlondikeMetadata{
    bool draw3;
    int drawcount;
};
typedef struct KlondikeMetadata KlondikeMetadata;
Run Code Online (Sandbox Code Playgroud)

或者可能:

struct FreeCellMetadata{
    int reserveCells;
};
typedef struct FreeCellMetadata FreeCellMetadata;
Run Code Online (Sandbox Code Playgroud)

使用的实际元数据结构取决于用户正在玩的游戏.99%的时间这不是问题,因为我知道用户正在玩什么游戏.但是,有些情况下我不会(也不可能)知道这一点.

我的问题是,有没有办法在运行时确定或指定正确的元数据类型?

例如,如果我可以向GameState结构添加一个属性,指示元数据值是KlondikeMetadata类型并使用它来将元数据转换为该类型,我想我会是金色的.有没有办法做到这一点?有没有办法在C中指定一个类型并在运行时强制转换变量?

c struct pointers void

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