我已经配置了ssh密钥,但仍然无法成功git克隆。错误信息是:
git clone git@gitlab.alibaba-inc.com:alimail-frontend/ragusa.git
Cloning into 'ragusa'...
remote: Counting objects: 108885, done.
Corrupted MAC on input. (76220/108885), 19.05 MiB | 7.62 MiB/s
ssh_dispatch_run_fatal: Connection to 100.67.155.102 port 22: message authentication code incorrect
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决它。是不是git配置有问题?
我想使用巴拿马项目中的外部函数接口来访问 Java19 中的 C 库。C 接口非常简单:
typedef struct {
int len;
char name[100];
} ent;
ent* foo();
Run Code Online (Sandbox Code Playgroud)
调用时,函数 foo 返回指向 的指针struct ent,其中len指示字符串的大小name。
对应的Java端是:
private static final MemoryLayout ENT_LAYOUT = MemoryLayout.structLayout(
JAVA_INT.withName("len"),
MemoryLayout.sequenceLayout(100, ValueLayout.JAVA_BYTE).withName("name")
);
Run Code Online (Sandbox Code Playgroud)
为了方便访问,我想使用VarHandle:
private static final VarHandle VH_ENT_LEN = ENT_LAYOUT.varHandle(groupElement("len"));
Run Code Online (Sandbox Code Playgroud)
以及后来
int len = (int)VH_ENT_LEN.get(segment);
String name = segment.asSlice(ENT_LAYOUT.byteOffset(groupElement("name")), len).getUtf8String(0);
Run Code Online (Sandbox Code Playgroud)
这仍然有点混乱。
我天真的期望解决方案应该是这样的:
private static final VarHandle VH_ENT_NAME = ENT_LAYOUT.varHandle(groupElement("name"), sequenceElement());
byte[] nameRaw = (byte[])VH_ENT_NAME.get(segment);
Run Code Online (Sandbox Code Playgroud)
但是我得到:
java.lang.RuntimeException: java.lang.invoke.WrongMethodTypeException:
cannot convert MethodHandle(VarHandle,MemorySegment,long)byte …Run Code Online (Sandbox Code Playgroud)