我的问题与:幂等方法意味着什么,在调用java.lang.AutoCloseable的close方法的情况下有什么副作用?
关于Java.util.stream.stream.peek()
中的方法,在Oracle Certified Professional Java SE 8 Study Guide>第4章函数式编程>使用流>使用通用中间操作一书中指出,peek()的目的是在不改变结果的情况下执行操作
我的问题是:我是否可以说在实践中,peek中的动作(消费者动作)应该是幂等的,即使peek()
中的有状态代码可以编译?
您不应该这样做,因为这意味着操作可以改变最终结果,因为一个幂等操作可以改变它所操作的对象。
下面的示例在peek()
方法中使用了一个幂等操作,但更改了结果(根据您指出的文档,这不是一个好的做法)
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class SomeClass {
private String state = "some-value";
public void idempotent() {
state = "other-value";
}
@Override
public String toString() {
return "SomeClass{" +
"state='" + state + '\'' +
'}';
}
}
public class Idempotent {
public static void main(String[] args) {
Set<SomeClass> collect = Stream.of(new SomeClass(), new SomeClass())
.peek(SomeClass::idempotent)
.collect(Collectors.toSet());
System.out.println(collect);
}
}
在peek()
操作之前,流由[“some-value”,“some-value]
组成,在具有幂等操作的peek()
之后,流由[”other-value“,”other-value“]
组成。
我读过很多地方说HTTP补丁是非幂等的。有人能解释一下为什么它是非幂等的吗?因为根据定义,幂等方法可以改变资源状态,也可以不改变资源状态,但是重复的请求在第一个请求之后应该不会有进一步的副作用。重复的补丁请求如何改变资源状态?
正如我们所知,Java是一种面向对象的语言。在Java中,一切都是对象。我们还知道对象有一些东西(实例变量/字段)和一些事情(方法)。它的安全,我们改变了使用方法,即实例变量的状态;二传手
我想提出我的问题的一种方式是:如果我使用put来进行一个非幂等调用,然后使用POST来这样做,会有什么问题呢?
本文向大家介绍Kafka中的幂等是怎么实现的相关面试题,主要包含被问及Kafka中的幂等是怎么实现的时的应答技巧和注意事项,需要的朋友参考一下 pid+序号实现,单个producer内幂等? 扩展问题: Kafka中有那些地方需要选举?这些地方的选举策略又有哪些? 失效副本是指什么?有那些应对措施? 多副本下,各个副本中的HW和LEO的演变过程 为什么Kafka不支持读写分离? Kafka在可靠性
接口是在Java5中引入的,而接口与语句一起出现在Java7中。扩展了接口(从Java7开始)。 在《OCA/OCP Java SE7-Programmer I&II学习指南》一书中,第399页说: 如果我们多次调用会发生什么?看情况.对于实现的类,要求实现是幂等的。这意味着您可以整天调用,第二次或以后都不会发生任何事情。[...]对于实现的类,则没有这样的保证。 因此本文认为,的实现必须是幂等的