小编use*_*892的帖子

S3 对象级别事件未触发

我在 aws eventsbridge 中使用事件模式创建了一个事件规则:

{
  "source": [
    "aws.s3"
  ]
}
Run Code Online (Sandbox Code Playgroud)

目标是 CloudWatch 日志组。现在,当我在存储桶级别更改某些内容(例如存储桶权限)时,我会看到云监视中捕获的事件,但是当我在 s3 存储桶中添加/删除文件时,什么也没有发生。这里出了什么问题?

amazon-s3 amazon-web-services aws-event-bridge

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

Java - CMS 与 G1 垃圾收集器

cms 和 g1 垃圾收集器之间有什么区别,这使得 g1 更好?

大多数地方都说这是因为在 G1 中,堆被分为多个区域,然后区域的集合被标记为年轻/年老代,并且 gc 在少数区域上运行,而不是在整个堆上运行。我正在尝试进一步了解这一点,并且还有几个问题:

  1. 当 young gc 运行时(即 stop the world),它会在所有年轻代区域上运行,这意味着堆的整个年轻部分以及不少年轻代区域。那么它与 CMS 所需的时间相同吗?

  2. 增量压缩 - 混合收集 - 现在我认为 G1 具有优势,因为整个堆的并发标记不断发生,并且存在在所有年轻区域 + 少数旧区域上运行的混合 gc 周期(首先是大多数垃圾)。因此它也会继续从老一代中删除垃圾,而不是等待 Full gc 发生。这是对的吗 ?

上述几点是否正确?还有哪些其他差异使 g1 更好?

java garbage-collection g1gc concurrent-mark-sweep

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

Java G1GC - 卡表 (CT) 与记忆集 (RS)

为什么 g1 需要这两种数据结构?

我的理解是:

  1. CT保存了老年代中引用的实际位置信息。
  2. RS是特定于每个区域的,每个区域都有一个与其关联的RS,它存储有关指向该区域中的对象的外部引用的信息。因此,在导航 RS 时,可以使用 CT 找到参考的实际位置。

为什么RS不能保存所有信息而使用CT?

是不是因为否则会有太多重复数据存储在不同的 RS 中?例如 - 年轻代有区域 A 和 B,这两个区域中的对象具有来自老一代的相同外部引用。在这种情况下,与区域 A 和 B 关联的两个 RS 将存储该冗余信息,这种解释正确吗?

java garbage-collection jvm g1gc

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

Google Jib - 是否可以使用 CMD/ENTRYPOINT 在容器启动时运行 Linux 命令?

每当容器从 jib 映像启动时,是否可以使用 cmd 或入口点或 jib maven 插件中的任何其他机制运行 Linux 命令,然后启动 java 进程?

就我而言,我想运行这个命令:

echo "127.0.0.1 $HOSTNAME" >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)

jib maven-jib

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

CodePipeline - 为什么在用作源时必须在 S3 存储桶上启用版本控制?

我使用 S3 存储桶作为代码管道中的源代码提供程序。如果 S3 存储桶上未启用版本控制,则会引发错误。我的问题是为什么必须在源存储桶上启用版本控制?

amazon-s3 amazon-web-services aws-codepipeline

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

AWS Fargate 集群 - 限制和最佳实践

我在开发环境中有一个fargate集群,其中包含支持单个客户端的ecs服务。

我们需要再增加 50 个客户。所以想知道有关 Fargate 集群的一些最佳实践。我环顾四周,没有找到任何合适的内容(包括 aws fargate FAQ)。任何人都可以帮助我解决以下问题:

  1. 我应该为每个客户端创建一个 Fargate 集群还是在同一 Fargate 集群中为每个客户端创建一个 ecs 服务?哪一个更好,为什么?
  2. aws 中可以创建的 Fargate 集群数量是否有限制?

amazon-web-services amazon-ecs aws-fargate

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

Java优化的读/写共享资源/内存位置,无需Atomic API,例如AtomicInteger

有一个共享资源,我们需要按照以下步骤对其执行读/写操作:

  1. 当正在进行资源写操作时,则不允许读取。
  2. 当正在进行读取时,则不允许写入,但应能够读取多个读取线程。

我已经编写了如下所述的代码,但是此代码的问题是,当单个读取线程获得了锁时,所有读取都会被阻止。此外,我正在考虑使用布尔标志,例如canReadContinue。现在,当read第一次获得锁时,我会将此标志翻转为true,如果为true,则其他线程不应尝试获取该锁。

class SharedResource {

    Lock writeLock

    public Object read() {
        writeLock.acquire()
        doRead()

    }

    public void write(Object toBeWritten) {
        writeLock.acquire()

        doWrite(toBeWritten)

        writeLock.release()
    }

}
Run Code Online (Sandbox Code Playgroud)

预期没有写操作时多个线程应该能够读取。

更新1:

公共类SharedResource {

private Object writeLock = new Object();
private volatile boolean canReadContinue;
private volatile int readCount;

public void write(Object newState) throws InterruptedException {
    synchronized (writeLock) {
        // To make sure no read is going on
        while (readCount > 0) {
            wait();
        }
        System.out.println("Write thread has the lock.");
        doWrite(newState);
    }
}

public Object …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

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