Live Note

Remain optimistic

区块链是什么?

区块链是一种分布式的、数字化的、不可篡改的账本,用于以安全透明的方式记录交易和存储数据。它基于一个去中心化的节点网络,这些节点共同维护一个唯一的真实来源,使参与者能够在无需中介的情况下与系统进行交互。

区块是一个数据容器结构,用于聚合交易并将其包含在公共账本中,即区块链。链中的每个区块包含一组已通过共识过程由节点网络验证和记录的交易。一旦区块被添加到链中,它就不能被更改或删除,从而创建了一个网络上所有交易的不可篡改的记录。

区块链因匿名人士(或团体)中本聪(Satoshi Nakamoto)在 2009 年发布比特币网络时而普及。比特币是一种加密货币网络,主要处理 BTC 资产在网络上的转移,无需可信中介或权威,同时确保网络本身的安全且不可被黑客攻击。(附注:比特币网络也可能是世界上最大的漏洞赏金项目——如果你能破解它,你将立即成为万亿富翁)。

随着时间的推移,比特币的设计激发了其他更强大的区块链网络的出现,例如以太坊(Ethereum)。

Read more »

扩展运算符

1
2
3
4
5
6
7
8
9
10
11
console.log(...[1, 2, 3]) //1 2 3
console.log(1, ...[2, 3], 4) //1 2 3 4
;[...document.querySelectorAll("div")] //[<div>, <div>, ...];

function add(x, y) {
return x + y
}
add(...[1, 2]) //3

//与表达式一同使用
const arr = [...(x > 0 ? ["a"] : []), "b"]

扩展运算符的应用

  • 替代数组的 apply 方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function f(x, y, z) {}
    var args = [0, 1, 2]

    //ES5 写法
    f.apply(null, args)

    //ES6 写法
    f(...args)

    //用 Math.max 求数组中最大的数
    //ES5 写法
    Math.max.apply(null, [2, 33, 3])

    //ES6 写法
    Math.max(...[2, 33, 3])

    //用 push 将一个数组添加到另一个数组尾部
    var arr1 = [0, 1, 2]
    var arr2 = [3, 4, 5]

    //ES5 写法
    Array.prototype.push.apply(arr1, arr2)

    //ES6 写法
    arr1.push(...arr2)
  • 合并数组

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var arr1 = ["a"]
    var arr2 = ["b", "c"]
    var arr3 = ["d"]

    //ES5 写法
    arr1.concat(arr2, arr3)

    //ES6 写法
    ;[...arr1, ...arr2, ...arr3]
  • 与解构赋值结合

    Read more »

基本用法

1
2
3
4
5
var regex = new RegExp("xyz", "i")
var regex = new RegExp(/xyz/i)
var regex = /xyz/i

new RegExp(/abc/gi, "i").flags //ig 被覆盖成 i

match()、replace()、search()、split()

String.prototype.match 调用 RegExp.prototype[Symbol.match]
String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
String.prototype.search 调用 RegExp.prototype[Symbol.search]
String.prototype.split 调用 RegExp.prototype[Symbol.split]

Read more »

又一次见证历史了。

预计级别会达到VEI6,不知道后续会不会继续喷发。
没想到,疫情还未过去,出现了一个比疫情更严峻的现实问题——无夏之年

更新于 2022 年 7 月 26 日 17:22:50

我错了,最近的温度已经到达了 40℃。

公式: $$P{Q}R\ ({P}Q{R})$$

P 和 R 都是一阶公式, 如果前提条件 P 在执行 Q 前成立, 则执行后得到满足条件 R 的状态
部分正确性断言: 如果 P 在 Q 执行前为真, 那么, 如果 Q 的执行终止,则终止在使 R 为真的某个状态
终止性断言:如果 P 在 Q 执行前为真, 那么 Q 将终止在使 R 为真的某个状态
赋值公理: $$\vdash P_0 {x:=f} P$$

推理规则的表示

$$\frac{premise -> f_0, f_1, …, f_n}{conclusion -> f_0}$$

推理规则

  • Rules of Consequence:
    $$\frac{P{Q}R,\ R\rightarrow S}{P{Q}S}\ \ \ \ \ \frac{P{Q}R,\ S\rightarrow P}{S{Q}R}$$
  • Rule of Composition:
    $$\frac{P{Q_1}R_1,\ R_1{Q_2}R}{P{Q_1, Q_2}R}$$
  • Rules of Iteration:
    $$\frac{P\ &\ B{S}P}{P\ {while\ B\ do\ S}\ \neg B \ &\ P}$$

等式公理

  • 代换: $[N/x]M$ 表示表示 M 中的自由变元 x 用 N 代换的结果, N 中的自由变元代换后不能成为约束变元
  • 约束变元改名: $\lambda x:\sigma .M = \lambda y:\sigma.[y/x]M$ 例如:$\lambda x:\sigma.x + y = \lambda z:\sigma .z+y$
  • 等价公理: 计算函数实际就是在函数中使用实在变元替换形式变元, $(\lambda x:\sigma.M)N = [N/x]M$
  • 同余性规则: 相等的函数作用于相等的变元产生相等的结果, $\frac{M_1=M_2,\ N_1=N_2}{M_1N_1=M_2N_2}$