小编Car*_*den的帖子

为什么Optional.map使此分配有效?

Optional<ArrayList<String>> option = Optional.of(new ArrayList<>());

Optional<ArrayList<?>> doesntWork = option;

Optional<ArrayList<?>> works = option.map(list -> list);
Run Code Online (Sandbox Code Playgroud)

第一次尝试分配不会编译,而第二次则带有mapdo。感觉map应该没有实际完成任何事情,但是由于某种原因,这使我Optional<ArrayList<String>>变成了Optional<ArrayList<?>>。是否存在某种隐式强制转换?

java generics optional java-8

36
推荐指数
2
解决办法
1451
查看次数

我应该如何使用kubernetes管理部署

我希望找到一种很好的方法来自动化从kubernetes集群上的代码到已部署应用程序的过程.

为了构建和部署我的应用程序,我需要首先构建docker镜像,标记它,然后将其推送到ECR.然后,我需要使用docker镜像的新标签更新我的deployment.yaml,并使用kubectl apply -f deployment.yaml运行部署.

这将在kubernetes集群上执行滚动部署,将pod更新为容器映像的新版本,一旦此部署完成,我可能需要执行其他特定于应用程序的操作,例如运行数据库迁移或缓存清除/升温可能需要也可能不需要为给定部署运行.

我想我可以编写一个运行所有这些命令的shell脚本,并在我想要启动新部署时运行它,但我希望有一个更好/行业标准的方法来解决我错过的这些问题.

当我写这个问题时,我注意到stackoverflow推荐这个问题:Kubernetes Deployments.其中一个答案似乎暗示至少一些我正在寻找的东西即将推出kubernetes,但我想确保如果有一个更好的解决方案我现在可以使用,至少我知道它.

deployment kubernetes

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

在Android上将byte []通过jni传递给C的问题

我有一个byte[]Java,它将其长度报告为256字节,我将其传递给C中的本机函数.

当我试图从这个数组中获取数据时,这是完全错误的,当我将其打印出来时,它与我在将其传递给C之前打印出来的数据不匹配.

我尝试了几种方法来访问数据,包括两者GetByteArrayRegion,GetByteArrayElements但似乎没有任何东西给我我期望的数据.

当我正在调查这个我想看看JNI相信jbyteArray的长度是用GetArrayLength-它报道的长度1079142960,远远超过了256个字节我的预期.每次调用函数时,值也不同,例如,另一个时间GetArrayLength返回1079145720.

这是我用来访问数组的代码:

JNIEXPORT jbyteArray function(JNIEnv* env, jbyteArray array) {
    int length = (*env)->GetArrayLength(env, array);

    jbyte data[256];

    (*env)->GetByteArrayRegion(env, array, 0, 256, data);
    //also tried
    //jbyte *data = (jbyte*) (*env)->GetByteArrayElements(env, array, NULL);
}
Run Code Online (Sandbox Code Playgroud)

这看起来非常简单,所以我不确定发生了什么.Java中的数组看起来很好,但它是在C中生成并传回来的,所以我认为Java不关心的东西可能会出错,但是当它回到C时会破坏数组.

这是我用来生成数组并将其传递回Java的代码:

//there is some openSSL stuff here that sets up a pointer to an RSA struct called keys that is size bytes large

jbyteArray result = (*env)->NewByteArray(env, size);

(*env)->SetByteArrayRegion(env, result, 0, size, (jbyte*)keys; …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface android openssl

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