小编srb*_*gan的帖子

为什么这个函数返回字符串的正确长度?(增加一个字符指针)

这是一个计算字符串中字符数的函数:

int str_len(const char* s) {
    int i = 0;
    while(*(s++)) {
        i++;
    }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

为什么这会返回正确的长度?

假设我用一个简单的 String 调用这个函数"a"。然后s递增在while循环,因此值si均为0。

c while-loop strlen c89

12
推荐指数
2
解决办法
420
查看次数

可以在较大的表达式中使用可选的ifPresent()来缓解对get()的调用吗?

为了避免调用get()哪个可以抛出异常:

if (a.isPresent())
   list.add(a.get());
Run Code Online (Sandbox Code Playgroud)

我可以用以下代码替换此表达式

a.ifPresent(list::add);
Run Code Online (Sandbox Code Playgroud)

但是如果我需要执行更大的表达式,例如:

if (a.isPresent() && b && c)
   list.add(a.get());
Run Code Online (Sandbox Code Playgroud)

是否仍然可以使用lambda表单来缓解对此的调用get()

我的用例是尽可能避免get()在可能的情况下避免错过可能未经检查的异常.

java lambda optional java-8

8
推荐指数
2
解决办法
339
查看次数

如何在groovy中执行url?

我想用http://x.x.x.x/test/test.jsp?[params]Groovy 中的格式调用 a 。在此文件中,我params从 URL获取值以进行进一步处理。但是,我首先想知道如何从 Groovy 调用此 URL。

我尝试了这一点,但没有用:(公平地说,我Groovy 的新手。)

URL url = new URL("http://192.168.1.87:8080/bridge/test.php");
URLConnection conn = url.openConnection(); 
Run Code Online (Sandbox Code Playgroud)

java grails groovy

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

Helm 动态设置 Docker 镜像标签

我使用以下命令通过 Jenkins 将 Docker 镜像推送到我们的私有注册表:

def dockerImage = docker.build("repo/myapp:${env.BUILD_NUMBER}")
Run Code Online (Sandbox Code Playgroud)

BUILD_NUMBER每次构建后都会增加。)

因为我是 Helm 的新手,所以我无法决定如何为values.yaml.

我想将我的应用程序部署到多个环境,例如:

  • dev
  • test
  • prod

假设我能够通过 Helm 将应用程序部署到dev,最新的BUILD_NUMBER是:

  • 100 为dev
  • 101 为test
  • 102 为prod

那么标签值应该是多少呢?

 image:
  repository: registryt/myrepo/image
  tag: 
Run Code Online (Sandbox Code Playgroud)

jenkins kubernetes kubernetes-helm

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

由使用MethodHandle :: invokeExact作为方法引用导致的LambdaConversionException引起的BootstrapMethodError

我试图检查是否可以使用MethodHandle :: invoke或MethodHandle :: invokeExact作为接受MethodHandle并返回通用输出的功能接口的方法引用.

(我知道invoke和invokeExact是签名多态,因此在InvokeExact中调用metafactory.但是,我想知道编译器是否能够忽略我必须做的事情来导出一个合适版本的invoke/invokeExact.)

invoke.InvokeExact0

package invoke;

import java.lang.invoke.MethodHandle;

import static java.lang.System.out;
import static java.lang.invoke.LambdaMetafactory.metafactory;
import static java.lang.invoke.MethodHandles.lookup;
import static java.lang.invoke.MethodType.methodType;

@FunctionalInterface
public interface InvokeExact0<OUTPUT> {
  public OUTPUT invokeExact(MethodHandle methodHandle) throws Throwable;

  public static <OUTPUT> InvokeExact0<OUTPUT> new_(InvokeExact0<OUTPUT> invokeExact) {
    return invokeExact;
  }

  public static void main(String... arguments) throws Throwable {
    out.println(
      (InvokeExact0<String>) metafactory(
        lookup(),
        "invokeExact",
        methodType(InvokeExact0.class),
        methodType(
          Object.class,
          MethodHandle.class
        ),
        lookup().findVirtual(
          MethodHandle.class,
          "invokeExact",
          methodType(String.class)
        ),
        methodType(
          String.class,
          MethodHandle.class
        )
      )
        .getTarget()
        .invokeExact()
    );
    out.println(InvokeExact0.new_(MethodHandle::invokeExact));
  }
}
Run Code Online (Sandbox Code Playgroud)

结果

invoke.InvokeExact0$$Lambda$1/1878246837@5ca881b5 …
Run Code Online (Sandbox Code Playgroud)

java lambda invokedynamic java-8 methodhandle

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