- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它们(幂等函数和确定性函数)是否只是在给定相同输入的情况下返回相同结果的函数?
还是我遗漏了什么区别?
(如果有区别,请你帮我理解它是什么)
最佳答案
用更简单的话来说:
this
)
this
)
UCASE
CREATE TABLE
GETDATE
DROP TABLE
String.IndexOf
List<T>.Add
DateTime.Now
Random.Next
Directory.Create
[1]
Directory.Create
是幂等的,因为如果目录已经存在,那么它返回一个新的 DirectoryInfo
实例,就好像它只是创建了一个新的文件系统目录(就像 CreateFile
可用于打开现有文件一样)。 UCASE(val)
或 C#/.NET 中
String.IndexOf
都是确定性的,因为输出仅取决于输入。请注意,在实例方法(例如
IndexOf
)中,实例对象(即隐藏的
this
参数)计为输入,即使它是“隐藏的”:
"foo".IndexOf("o") == 1 // first cal
"foo".IndexOf("o") == 1 // second call
// the third call will also be == 1
而在 SQL
NOW()
或 C#/.NET 中
DateTime.UtcNow
不是确定性的,因为即使输入保持不变,输出也会发生变化(请注意,.NET 中的属性 getter 等效于除隐式
this
参数外不接受任何参数的方法):
DateTime.UtcNow == 2016-10-27 18:10:01 // first call
DateTime.UtcNow == 2016-10-27 18:10:02 // second call
幂等性
Dispose()
方法:参见
Should IDisposable.Dispose() implementations be idempotent?
a Dispose method should be callable multiple times without throwing an exception.
X
对
foo.Dispose()
进行初始调用,那么它将调用处理操作,
X
现在可以考虑处理
foo
。执行/控制然后传递给另一个组件
Y
,该组件也尝试处理
foo
,在
Y
调用
foo.Dispose()
之后,它也可以期望
foo
被处理(它是),即使
X
已经处理了它。这意味着
Y
不需要检查
foo
是否已经被释放,从而节省了开发人员的时间 - 并且还消除了第二次调用
Dispose
可能引发异常的错误,例如。
GET
、
HEAD
、
PUT
和
DELETE
是幂等的,但
POST
不是(
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html )
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request. The methods GET, HEAD, PUT and DELETE share this property. Also, the methods OPTIONS and TRACE SHOULD NOT have side effects, and so are inherently idempotent.
DELETE
那么:
Client->Server: DELETE /foo/bar
// `foo/bar` is now deleted
Server->Client: 200 OK
Client->Server DELETE /foo/bar
// foo/bar` is already deleted, so there's nothing to do, but inform the client that foo/bar doesn't exist
Server->Client: 404 Not Found
// the client asks again:
Client->Server: DELETE /foo/bar
// foo/bar` is already deleted, so there's nothing to do, but inform the client that foo/bar doesn't exist
Server->Client: 404 Not Found
所以你在上面的例子中看到
DELETE
是幂等的,因为服务器的状态在最后两个
DELETE
请求之间没有改变,但它不是确定性的,因为服务器返回了第一个请求的
200
而第二个请求的
404
。
关于deterministic - 幂等函数和确定性函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296211/
我使用 Deflater 编写了一个备份程序SHA-1 用于存储文件和哈希值。我看到Java的Deflater使用zlib 。如果我显式设置 Deflater 的级别,无论平台和 JRE 版本如何,我
考虑以下算法: r = 2 while r >= 1: x = -1 + 2 * random.random() y = -1 + 2 * random.random() r
我正在编写一个持久保存到磁盘的映射类。我目前只允许 str键,但如果我可以使用更多类型会很好:希望最多可以是任何可散列的(即与内置 dict 相同的要求),但更合理的是我会接受字符串、unicode、
我有一个不使用随机化的脚本,当我运行它时会给出不同的答案。我希望每次运行脚本时答案都是一样的。该问题似乎只发生在某些(病态)输入数据上。 该代码段来自一种计算线性系统特定类型 Controller 的
这对我来说不是问题,没有它我也可以生活,但我只是好奇这是否可能以及如何实现。 今天我了解到,scrapy.Request 不会按照启动的顺序完成。 伪代码示例: class SomeSpider(sc
我正在运行这个 SVD来自 scipy 的求解器,代码如下: import numpy as np from scipy.sparse.linalg import svds features = np
我正在尝试使用确定性 Miller-Rabin 算法实现素数检查功能,但结果并不总是正确的:在检查前 1,000,000 个数字时,它只找到 78,495 而不是 78,498。 这是使用 [2, 7
我正在审查各种 Android 声音 API,我想知道我应该使用哪一个。我的目标是获得低延迟的音频,或者至少是关于播放延迟的确定性行为。 我们遇到了很多问题,Android 声音 API 似乎很垃圾,
过去,我处理过对时间要求严格的软件开发。这些应用程序的开发基本上是这样进行的:“让我们编写代码,测试延迟和抖动,并优化它们,直到它们在可接受的范围内。”我觉得这非常令人沮丧。这不是我所说的 适当的工程
给定: SQL Server 表名为 TEST_TABLE TEST_TABLE 中名为 TEST_FIELD 的列 VARCHAR(50) NOT NULL 第 1 行:10YR3/6 第 2 行:
我在 64 位 Windows PC 上使用 Microsoft Visual Studio Community 2015,版本 14.xxx。 程序读取一个文本文件,其中每一行都是桥牌(四名玩家,每
我需要在 PHP 中创建一个可证明公平(确定性和种子)加密安全 (CS) 随机数生成器。我们正在运行 PHP 5,而 PHP 7 现在并不是一个真正的选择。但是,我找到了 PHP 7 的新 CS 函数
我是一名优秀的程序员,十分优秀!