小编Gre*_*wen的帖子

从AWS Java API,如何判断何时创建了EBS快照?

我有多个运行EBS支持的EC2实例,我希望能够在其中一个后面拍摄EBS卷的快照,从该快照创建一个新的EBS卷,然后将该新的EBS卷作为附加驱动器安装到另一个上.我知道如何通过AWS Web控制台执行此操作,但我希望使用AWS Java API自动执行此过程.

如果我只是一个接一个地调用以下命令:

CreateSnapshotResult snapRes
    = ec2.createSnapshot(new CreateSnapshotRequest(oldVolumeID, "Test snapshot"));
Snapshot snap = snapRes.getSnapshot();
CreateVolumeResult volRes
    = ec2.createVolume(new CreateVolumeRequest(snap.getSnapshotId(), aZone));
String newVolumeID = volRes.getVolume().getVolumeId();
AttachVolumeResult attachRes 
    = ec2.attachVolume(new AttachVolumeRequest(newVolumeID, instanceID, "xvdg"));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Caught Exception: Snapshot 'snap-8e822cfd' is not 'completed'.
Reponse Status Code: 400
Error Code: IncorrectState
Request ID: 40bc6bad-43e0-49e6-a89a-0489744d24e6
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我显然需要等到快照完成后再从快照创建新的EBS卷.根据亚马逊文档,Snapshot.getState()的可能值是"挂起,完成或错误",因此我决定使用AWS签入以查看快照是否仍处于"挂起"状态.我写了下面的代码,但它没有用:

CreateSnapshotResult snapRes
    = ec2.createSnapshot(new CreateSnapshotRequest(oldVolumeID, "Test snapshot"));
 Snapshot snap = snapRes.getSnapshot();

 System.out.println("Snapshot request sent.");
 System.out.println("Waiting for snapshot to be created");

 String snapState = snap.getState();

 System.out.println("snapState is …
Run Code Online (Sandbox Code Playgroud)

java amazon-ec2

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

如何将多个调用链接到“into()”?

在我的一个 Rust 项目中,我有一个多级枚举层次结构。这是一个简化版本(游乐场链接):

enum Child {
    ChildA,
    ChildB,
}

enum Parent {
    ParentA(Child),
    ParentB,
}

enum GrandParent {
    GrandParentA(Parent),
    GrandParentB,
}
Run Code Online (Sandbox Code Playgroud)

为了方便起见,我在每个级别与其之上的级别之间实现了转换器:

impl From<Child> for Parent {
    fn from(c: Child) -> Self {
        Parent::ParentA(c)
    }
}

impl From<Parent> for GrandParent {
    fn from(p: Parent) -> Self {
        GrandParent::GrandParentA(p)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想从 a 转换Child为 aParent我现在可以做

let c: Child = Child::ChildA;
let p: Parent = c.into();
Run Code Online (Sandbox Code Playgroud)

但如果我想从 a 转换Child为 a Grandparent,我似乎无法将多个调用链接到into(): …

rust

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

Go 如何以及何时为有界队列通道分配内存?

我正在使用 Go 的 pprof 工具来调查我的服务的内存使用情况。几乎所有内存使用都来自设置多个有界队列通道的单个函数。我对 pprof 在这里告诉我的内容有些困惑:

$ go tool pprof ~/pprof/pprof.server.alloc_objects.alloc_space.inuse_objects.inuse_space.007.pb.gz
File: server
Type: inuse_space
Time: Dec 21, 2020 at 10:46am (PST)
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) list foo
Total: 102.73MB
ROUTINE ======================== github.com/******/foo in ***.go
   79.10MB    79.10MB (flat, cum) 77.00% of Total
         .          .    135:
         .          .    136:func foo() {
         .          .    137:    
   14.04MB    14.04MB    138:    chanA := make(chan chanAEntry, bufferSize)
         .          .    139:    defer close(chanA)
         .          .    140:
         .          .    141: …
Run Code Online (Sandbox Code Playgroud)

memory go pprof

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

如何作为函数对象访问像toInt()这样的Scala隐式函数?

我正在尝试编写一个通用的String转换器函数,它接受一个字符串和一个转换函数,并将该函数应用于字符串:

def convertString[A](s: String, f: String => A): A = f(s)
Run Code Online (Sandbox Code Playgroud)

我正在尝试传递toInt函数f,但我的IDE一直抱怨它Cannot resolve symbol toInt.

如何toInt像其他函数一样访问我可以使用的函数对象?

scala

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

从另一个切片复制后,切片中的所有条目最终都相同

我有一片uuid.UUID元素。从来源来看, auuid.UUID只是字节数组的类型别名:type UUID [16]byte

我正在尝试使用以下代码将uuid.Uuids的这片转换为 s 的片:[]byte

package main

import (
    "fmt"
    "github.com/google/uuid"
)

func main() {
    ids := []uuid.UUID {
        uuid.New(),
        uuid.New(),
        uuid.New(),
    }
    fmt.Printf("ids: %v\n", ids)
    idBytes := make([][]byte, len(ids))
    for i, id := range ids {
        idBytes[i] = id[:]
    }
    fmt.Printf("idBytes: %x\n", idBytes)
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

由于某种原因,这会产生以下输出:

ids: [66b4bb26-3c1f-4dd7-a608-aa8f799e4bfe 014e0537-c326-4021-be38-165f49595eed 5c71efff-ddb5-4f6e-8f85-c1dab013b5d1]
idBytes: [5c71efffddb54f6e8f85c1dab013b5d1 5c71efffddb54f6e8f85c1dab013b5d1 5c71efffddb54f6e8f85c1dab013b5d1]
Run Code Online (Sandbox Code Playgroud)

显然有 3 个不同的 UUID,但输出切片仅包含最后一个,重复了 3 次。这里发生了什么?

我尝试过的事情:

  1. 使用非切片类型而不是切片类型(即使用 []uint64 作为输入和输出,而不是 []uuid.UUID 和 …

arrays go slice

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

标签 统计

go ×2

amazon-ec2 ×1

arrays ×1

java ×1

memory ×1

pprof ×1

rust ×1

scala ×1

slice ×1