第二部分:认证 当比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就行了。 一、单向散列函数(one-way hash function) 单向散列函数也称为消息摘要函数(message digest function)、哈希函数或者杂凑函数。 单向散列函数有一个输入和 ...
分类:
其他好文 时间:
2019-10-23 20:26:34
阅读次数:
130
HTML5有一些新的表单元素:<datalist>、<keygen>、<output>。不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素。 1 <datalist>元素 <datalist>元素规定输入域的选项列表。<datalist>属性规定 ...
分类:
Web程序 时间:
2019-10-15 09:49:39
阅读次数:
111
生成器generator 生成器是指生成器对象,可以使用生成器表达式,也可以使用yield关键字得到生成器函数,调用一次得到一个对象 生成器函数 函数体中包含yield语句函数返回生成器对象 是一个迭代器,是可迭代对象 惰性求值,延迟计算 生成器对象迭代完不能回头,调用使用next 没有多余的 yi ...
分类:
其他好文 时间:
2018-08-30 00:21:18
阅读次数:
121
生成器(generator) 1、生成器是一个容器 2、生成器可以边循环边计算 3、生成器可以节约内存 4、生成器是可迭代对象 5、变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行 生成器的生成 1、生成器表达式 ...
分类:
编程语言 时间:
2017-12-04 00:04:23
阅读次数:
215
13.1.3 理解工作流的运行从前一章我们知道,用计算表达式写的 F# 代码,会转换成使用基本操作的表达式,由适当计算生成器提供。对于异步工作流来说,let! 结构转换成对 async.Bind 的调用,return 转换成 async.Return;此外,异步工作流自动延迟,因此,计算本身打包装到额外的基本操作中,确保整个代码包含在一个函数中,这个函数在后面工作流启动时执行。清单 13.3 是清单...
分类:
其他好文 时间:
2015-02-10 23:15:25
阅读次数:
271
12.7.2 创建日志记录计算
清单 12.24 首先实现两个辅助函数,用于读写控制台,且两者还会把消息写入日志,所以,它们将括在 log 计算块中。为了显示如何组合非标准计算,我们在第三个函数中,使用了两个函数。在前面的示例中,我们使用 let! 基本操作,在清单 12.24 还引入了 do!。
清单 12.24 使用计算表达式的日志 (F# Interactive)
> le...
分类:
其他好文 时间:
2015-02-02 15:57:48
阅读次数:
264
12.5.3 在 F# 中实现计算生成器
在计算表达式块前面的标识符,是类的实例,把所需的操作实现成为实例成员。许多操作都已经有了,我们根本不必要提供所有的,最基本的操作用 Bind 和 Return 成员实现。当 F# 编译器看到计算表达式,比如清单 12.18 时,会把它转换为使用这些成员的F# 代码。F# 示例转换成这样:
value.Bind(ReadInt(), fun ...
分类:
其他好文 时间:
2015-01-30 17:41:25
阅读次数:
153