这是一个计算字符串中字符数的函数:
int str_len(const char* s) {
int i = 0;
while(*(s++)) {
i++;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
为什么这会返回正确的长度?
假设我用一个简单的 String 调用这个函数"a"。然后s递增在while循环,因此值s和i均为0。
为了避免调用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()在可能的情况下避免错过可能未经检查的异常.
我想用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) 我使用以下命令通过 Jenkins 将 Docker 镜像推送到我们的私有注册表:
def dockerImage = docker.build("repo/myapp:${env.BUILD_NUMBER}")
Run Code Online (Sandbox Code Playgroud)
(BUILD_NUMBER每次构建后都会增加。)
因为我是 Helm 的新手,所以我无法决定如何为values.yaml.
我想将我的应用程序部署到多个环境,例如:
devtestprod假设我能够通过 Helm 将应用程序部署到dev,最新的BUILD_NUMBER是:
devtestprod那么标签值应该是多少呢?
image:
repository: registryt/myrepo/image
tag:
Run Code Online (Sandbox Code Playgroud) 我试图检查是否可以使用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 ×3
java-8 ×2
lambda ×2
c ×1
c89 ×1
grails ×1
groovy ×1
jenkins ×1
kubernetes ×1
methodhandle ×1
optional ×1
strlen ×1
while-loop ×1