小编Jai*_*e S的帖子

“同步”会影响流的内存占用吗?

我们有一个奇怪的案例OutOfMemory(堆)。给定这种方法

private void processRemainingIds(final ITransaction tx) {
    remainingIds.stream()//
        .map(this::getInternalMessage)//
        .filter(this::isMessageNeedsProcessing)//
        .forEach(msg -> registerMessageAsMissing(msg, tx));
}
Run Code Online (Sandbox Code Playgroud)

如果remainingIds足够大,则此方法会相当稳定地填充堆。

  • getInternalMessage 将加载“正常”大小的数据模型结构(即,没有斑点/小块等,只有几十个字符串和数字)
  • registerMessageAsMissing 内部调用同步方法(可能是相关的)
  • 使getInternalMessage“同步”完全改变了内存行为,堆大小不再增加

我希望上面的实现会创建很多内部消息,检查并在需要时对其进行处理,但随后丢弃每个对象并偶尔运行GC。但这不是我们所看到的,相反,我们得到了

越来越多的堆

OOM的标准问题,即 我熟悉的是“某些东西在固定住您的对象”。但是为什么要进行getInternalMessage同步更改呢?

java stream out-of-memory java-stream

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

CloudWatch 警报错误百分比 API 网关

我正在尝试使用 terraform 在 Cloudwatch 中设置和报警。我的警报基本上需要检查在 1 分钟的 2 个周期内网关中是否有超过 5% 的 5xx 错误。

我已经尝试了以下代码,但它不起作用:

resource "aws_cloudwatch_metric_alarm" "gateway_error_rate" {
  alarm_name          = "gateway-errors"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  alarm_description   = "Gateway error rate has exceeded 5%"
  treat_missing_data  = "notBreaching"
  metric_name         = "5XXError"
  namespace           = "AWS/ApiGateway"
  period              = 60
  evaluation_periods  = 2
  threshold           = 5
  statistic           = "Average"
  unit                = "Percent"

  dimensions = {
    ApiName = "my-api"
    Stage = "dev"
  }
}
Run Code Online (Sandbox Code Playgroud)

即使部署了警报,也不会显示数据。做一些测试时,我注意到该警报显然不接受单位“百分比”。

有没有人有一个例子terraformcloudformation如何配置此类报警?

amazon-web-services aws-cloudformation amazon-cloudwatch terraform cloudwatch-alarms

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

提取子网列表会导致错误 - 元组包含 1 个元素

我有一个模块,可以创建具有公共和私有子网的 VPC

module "vpc" {
  count              = var.vpc_enabled ? 1 : 0
  source             = "./vpc"
}
Run Code Online (Sandbox Code Playgroud)

作为该模块的输出,我正在提取私有子网

output "private_subnets" {
  value = aws_subnet.private.*.id
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用该子网列表作为另一个模块的输入:

module "eks" {
  source          = "./eks"
  name            = var.name
  private_subnets = var.vpc_enabled ? module.vpc.private_subnets : var.private_subnets_id
}
Run Code Online (Sandbox Code Playgroud)

基本上我想要实现的是,用户可以选择是否要创建新的 VPC 或使用现有 VPC 的子网列表作为输入。

我现在遇到的问题是我在 terraform plan 中遇到以下错误:

  on main.tf line 32, in module "eks":
  32:   private_subnets = var.vpc_enabled ? module.vpc.private_subnets : var.private_subnets_id
    |----------------
    | module.vpc is tuple with 1 element

This value does not have any …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform terraform-provider-aws

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

使用Java 8流比较两个列表相同位置的元素

我有两个列表,我想将列表 1 的每个元素与列表 2 的每个元素进行比较,并在列表 3 中获得结果,例如

List1 = {99,22,33}

list2 = {11,24,33}
Run Code Online (Sandbox Code Playgroud)

结果:

list3 = {1,-1,0}
Run Code Online (Sandbox Code Playgroud)

我如何最好使用流来做到这一点?

java list java-stream

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

Collections.emptyList() 和 Collections::emptyList 有什么区别

编码时使用java流显示错误

Optional.ofNullable(product.getStudents())
                .orElseGet(Collections.emptyList())
                .stream().map(x->x.getId)
                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

此代码显示以下错误 错误

不兼容的类型,必需的供应商> 但空列表被干扰到 List : 不存在 T 类型变量的实例,因此 List 符合供应商>

但是如果我替换Collections.emptyList()WITH Collections::emptyList It 就完美了。

Collections.emptyList() 与 Collections::emptyList 有什么区别?

java java-8 java-stream method-reference

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