基于cycle of curves的Nova证明系统(2)

news2024/11/17 3:54:10

主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。

前序博客见:

  • 基于cycle of curves的Nova证明系统(1)

5. IVC Proof进一步压缩

本文提出了两种压缩IVC proof的方案:

  • 1)compression without SNARKs
  • 2)compression with SNARKs

https://github.com/Microsoft/Nova代码中的CompressSNARK采用了这两种压缩方式。

5.1)compression without SNARKs

已知某convincing proof:
π i = ( ( \pi_i=(( πi=((𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) _i^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)})) i(2)),(Ui(1),Wi(1)),(Ui(2),Wi(2)))

Prover P \mathcal{P} P端执行如下步骤,获得压缩proof π i ′ \pi_i' πi

  • 1)为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2) fold pairs:将 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)的committed pairs ( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 2 ) , W i ( 2 ) ) _i^{(2)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)}) i(2)),(Ui(2),Wi(2)) 进行fold:
    Fold P ( pk , ( \text{Fold}_{\mathcal{P}}(\text{pk},( FoldP(pk,(𝕦 i ( 2 ) , _{i}^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) → ( T ˉ i ( 2 ) , ( ⋅ , W i + 1 ( 2 ) ) ) _{i}^{(2)}),(\mathbb{U}_{i}^{(2)}, \mathbb{W}_{i}^{(2)}))\rightarrow (\bar{T}_i^{(2)},(\cdot, \mathbb{W}_{i+1}^{(2)})) i(2)),(Ui(2),Wi(2)))(Tˉi(2),(,Wi+1(2)))
  • 2)输出压缩proof:
    π i ′ = ( \pi_i'=( πi=(𝕦 i ( 2 ) , U i ( 2 ) , ( T ˉ i ( 2 ) , W i + 1 ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) ) _i^{(2)},\mathbb{U}_i^{(2)},(\bar{T}_i^{(2)},\mathbb{W}_{i+1}^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)})) i(2),Ui(2),(Tˉi(2),Wi+1(2)),(Ui(1),Wi(1)))

Verifier V \mathcal{V} V端执行如下步骤,来验证 压缩proof π i ′ \pi_i' πi

  • 1)执行初始folding流程: U i + 1 ( 2 ) : = Fold V ( vk , \mathbb{U}_{i+1}^{(2)}:=\text{Fold}_{\mathcal{V}}(\text{vk}, Ui+1(2):=FoldV(vk,𝕦 i ( 2 ) , U i ( 2 ) , T ˉ i ( 2 ) ) _i^{(2)},\mathbb{U}_i^{(2)},\bar{T}_i^{(2)}) i(2),Ui(2),Tˉi(2))
  • 2)若满足以下6个条件,则验证通过:
    • 2.1)索引值 i i i必须大于0;
    • 2.2)𝕦 i ( 2 ) . x 0 = H 1 ( vk , i ( 1 ) , z 0 ( 1 ) , z i ( 1 ) , U i ( 2 ) ) _{i}^{(2)}.x_0=H_1(\text{vk},i^{(1)},z_0^{(1)},z_i^{(1)},\mathbb{U}_i^{(2)}) i(2).x0=H1(vk,i(1),z0(1),zi(1),Ui(2))
    • 2.3)𝕦 i ( 2 ) . x 1 = H 2 ( vk , i ( 2 ) , z 0 ( 2 ) , z i ( 2 ) , U i ( 1 ) ) _{i}^{(2)}.x_1=H_2(\text{vk},i^{(2)},z_0^{(2)},z_i^{(2)},\mathbb{U}_i^{(1)}) i(2).x1=H2(vk,i(2),z0(2),zi(2),Ui(1))
    • 2.4) ( U i ( 1 ) , W i ( 1 ) ) (\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}) (Ui(1),Wi(1)) pair 满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)
    • 2.5) ( U i ( 2 ) , W i ( 2 ) ) (\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)}) (Ui(2),Wi(2)) pair 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
    • 2.6)“ ( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) _i^{(2)}) i(2)) pair 严格 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2) ” 改为 ”𝕦 i ( 2 ) . E ˉ = 0 ˉ ( 2 ) _{i}^{(2)}.\bar{E}=\bar{0}^{(2)} i(2).Eˉ=0ˉ(2) 且 𝕦 i ( 2 ) . s = 1 ˉ ( 2 ) _{i}^{(2)}.s=\bar{1}^{(2)} i(2).s=1ˉ(2)

压缩proof的递归运算:

  • 压缩proof π i ′ \pi_i' πi 和 新的evaluation值: z i + 1 ( 1 ) : = F 1 ( z i ( 1 ) , aux i ( 1 ) ) z_{i+1}^{(1)}:=F_1(z_i^{(1)}, \text{aux}_i^{(1)}) zi+1(1):=F1(zi(1),auxi(1)) 以及 z i + 1 ( 2 ) : = F 2 ( z i ( 2 ) , aux i ( 2 ) ) z_{i+1}^{(2)}:=F_2(z_i^{(2)}, \text{aux}_i^{(2)}) zi+1(2):=F2(zi(2),auxi(2)),足以供Nova prover执行another step for Iteration i + 1 i+1 i+1。【注意,压缩proof π i ′ \pi_i' πi是readily incremental的。】
  • 为便于理解,本论文中基于未压缩proof π i \pi_i πi构建了IVC方案,也可基于压缩proof π i ′ \pi_i' πi来构建IVC方案。Nova论文,在”compression without SNARKs“之后,使用了某SNARK来将proof π i ′ \pi_i' πi进一步压缩为 π i ′ ′ \pi_i^{''} πi′′

5.2)compression with SNARKs

针对relation R s a t \mathcal{R}_{sat} Rsat的通用SNARK可用于进一步压缩IVC proof。Nova论文中采用Spartan SNARK来压缩IVC proof。

已知”compression without SNARKs“的压缩proof:
π i ′ = ( \pi_i'=( πi=(𝕦 i ( 2 ) , U i ( 2 ) , ( T ˉ i ( 2 ) , W i + 1 ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) ) _i^{(2)},\mathbb{U}_i^{(2)},(\bar{T}_i^{(2)},\mathbb{W}_{i+1}^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)})) i(2),Ui(2),(Tˉi(2),Wi+1(2)),(Ui(1),Wi(1)))

Prover P \mathcal{P} P端执行如下步骤,获得压缩proof π i ′ ′ \pi_i^{''} πi′′
在这里插入图片描述
Verifier V \mathcal{V} V端执行如下步骤,来验证 压缩proof π i ′ \pi_i' πi

  • 1)执行初始folding流程: U i + 1 ( 2 ) : = Fold V ( vk , \mathbb{U}_{i+1}^{(2)}:=\text{Fold}_{\mathcal{V}}(\text{vk}, Ui+1(2):=FoldV(vk,𝕦 i ( 2 ) , U i ( 2 ) , T ˉ i ( 2 ) ) _i^{(2)},\mathbb{U}_i^{(2)},\bar{T}_i^{(2)}) i(2),Ui(2),Tˉi(2))
  • 2)若满足以下6个条件,则验证通过:
    • 2.1)索引值 i i i必须大于0;
    • 2.2)𝕦 i ( 2 ) . x 0 = H 1 ( vk , i ( 1 ) , z 0 ( 1 ) , z i ( 1 ) , U i ( 2 ) ) _{i}^{(2)}.x_0=H_1(\text{vk},i^{(1)},z_0^{(1)},z_i^{(1)},\mathbb{U}_i^{(2)}) i(2).x0=H1(vk,i(1),z0(1),zi(1),Ui(2))
    • 2.3)𝕦 i ( 2 ) . x 1 = H 2 ( vk , i ( 2 ) , z 0 ( 2 ) , z i ( 2 ) , U i ( 1 ) ) _{i}^{(2)}.x_1=H_2(\text{vk},i^{(2)},z_0^{(2)},z_i^{(2)},\mathbb{U}_i^{(1)}) i(2).x1=H2(vk,i(2),z0(2),zi(2),Ui(1))
    • 2.4) ( U i ( 1 ) , W i ( 1 ) ) (\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}) (Ui(1),Wi(1)) pair 满足 R1CS ( 1 ) \text{R1CS}^{(1)} R1CS(1)
    • 2.5) ( U i ( 2 ) , W i ( 2 ) ) (\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)}) (Ui(2),Wi(2)) pair 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)
    • 2.4) π s a t \pi_{sat} πsat为 relation R s a t \mathcal{R}_{sat} Rsat with instance ( U i + 1 ( 2 ) , U i ( 2 ) ) (\mathbb{U}_{i+1}^{(2)},\mathbb{U}_{i}^{(2)}) (Ui+1(2),Ui(2)) 的convincing SNARK proof。
    • 2.5)2.6)“ ( ( (𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) _i^{(2)}) i(2)) pair 严格 满足 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2) ” 改为 ”𝕦 i ( 2 ) . E ˉ = 0 ˉ ( 2 ) _{i}^{(2)}.\bar{E}=\bar{0}^{(2)} i(2).Eˉ=0ˉ(2) 且 𝕦 i ( 2 ) . s = 1 ˉ ( 2 ) _{i}^{(2)}.s=\bar{1}^{(2)} i(2).s=1ˉ(2)

6. Nova IVC proof的延展性 及 应对措施

Nova的IVC proof具有延展性问题。

假设某adversary知道某valid Nova IVC proof π i \pi_i πi 以及相应的参数:

  • IVC公共参数 p p pp pp
  • 函数描述: F 1 : F 1 a 1 × F 1 b 1 → F 1 a 1 F_1: \mathbb{F}_1^{a_1}\times\mathbb{F}_1^{b_1}\rightarrow \mathbb{F}_1^{a_1} F1:F1a1×F1b1F1a1 F 2 : F 2 a 2 × F 2 b 2 → F 2 a 2 F_2: \mathbb{F}_2^{a_2}\times\mathbb{F}_2^{b_2}\rightarrow \mathbb{F}_2^{a_2} F2:F2a2×F2b2F2a2
  • 索引号 i ∈ N i\in\mathbb{N} iN
  • 起始值 z 0 ( 1 ) ∈ F 1 a 1 z_0^{(1)}\in\mathbb{F}_1^{a_1} z0(1)F1a1 z 0 ( 2 ) ∈ F 2 a 2 z_0^{(2)}\in\mathbb{F}_2^{a_2} z0(2)F2a2
  • claimed evaluations值 z i ( 1 ) ∈ F 1 a 1 z_i^{(1)}\in\mathbb{F}_1^{a_1} zi(1)F1a1 z i ( 2 ) ∈ F 2 a 2 z_i^{(2)}\in\mathbb{F}_2^{a_2} zi(2)F2a2

针对相同的iteration i i i,该adversary可对不同于 z i ( 2 ) z_i^{(2)} zi(2) z p r i m e ( 2 ) z_{prime}^{(2)} zprime(2)构建proof π p r i m e \pi_{prime} πprime,而IVC Verifier的参数为:
( p p , ( F 1 , F 2 ) , i , ( z 0 ( 1 ) , z 0 ( 2 ) ) , ( z i ( 1 ) , z p r i m e ( 2 ) ) , π p r i m e ) (pp, (F_1,F_2), i, (z_0^{(1)},z_0^{(2)}),(z_i^{(1)},z_{prime}^{(2)}),\pi_{prime}) (pp,(F1,F2),i,(z0(1),z0(2)),(zi(1),zprime(2)),πprime)
为让IVC Verifier验证通过。

需强调:

  • 为计算 z i ( 2 ) z_i^{(2)} zi(2),adversary无需知道所有的辅助值 ( aux 0 ( 2 ) , aux 1 ( 2 ) , ⋯   , aux i − 1 ( 2 ) ) (\text{aux}_0^{(2)},\text{aux}_1^{(2)},\cdots,\text{aux}_{i-1}^{(2)}) (aux0(2),aux1(2),,auxi1(2))。在不知道前 i − 1 i-1 i1个辅助的情况下,修改替换最后一个辅助值 aux p r i m e ( 2 ) ≠ aux i − 1 ( 2 ) \text{aux}_{prime}^{(2)}\neq \text{aux}_{i-1}^{(2)} auxprime(2)=auxi1(2),可为iteration i i i的替换值 z p r i m e ( 2 ) z_{prime}^{(2)} zprime(2)构建proof π p r i m e \pi_{prime} πprime

延展性会带来现实世界漏洞。假设:

  • Alice使用其秘密辅助值来计算 z i ( 2 ) z_i^{(2)} zi(2),且 z i ( 2 ) z_i^{(2)} zi(2)中编码了其payment地址。
  • Alice将 z i ( 2 ) z_i^{(2)} zi(2)和相应的proof发送给某payment合约。
  • 攻击者可拦截Alice的消息,将 z i ( 2 ) z_i^{(2)} zi(2)替换为 编码了攻击者payment地址的 z p r i m e ( 2 ) z_{prime}^{(2)} zprime(2),以及有效的proof π p r i m e \pi_{prime} πprime 发送个payment合约。payment合约会将资金发送给攻击者,而不是给Alice。
    事实上,若Tornado Cash中使用statement可延展的证明系统,则可能盗取资金。

若函数 F F F为确定性函数——即输入中不包含辅助参数,则不存在延展性问题。因为此时,函数 F F F的第 i i i次迭代的结果 z i z_i zi 由初始值 z 0 z_0 z0完全确定。

而对具有辅助输入的Nova IVC,为解决其延展性问题,可采用如下3种策略:

  • 1)压缩(Compression):基于cycle of curves的Nova证明系统(1)的”4.3 修订版Nova Prover算法“中,Prover在输出final folded instance的同时会输出a satisfying witness。可替换为,Prover在输出final folded instance的同时输出 a zkSNARK proof that it has a valid witness for this folded instance。若该zkSNARK方案是simulation extractable,则该final proof是非延展性的。事实上,Nova的当前实现就是采用这种方案,在解决延展性问题的同时,对final proof进行了压缩。但是,这与IVC概念不兼容:压缩之后,另一方无法通过folding进一步继续迭代了。这样的结果就是,整个IVC chain的计算仅能由单一方完成。
  • 2)上下文(context):将verification key vk \text{vk} vk扩展为包含一个额外的context元素 ctx \text{ctx} ctx。这样可确保非延展性,但是与IVC不兼容。额外的context元素包含了该计算的最后一步,且阻止了其它方使用folding进一步延长IVC chain。
  • 3)递增上下文(Incremental context):为确保非延展性的同时,支持IVC的incremental aspect,每次一方与另一方交互时更新verification key vk \text{vk} vk,从而各方都可延长IVC chain。

6.1 延展性攻击

本节展示对IVC chain最后一步的延展性攻击。

已知:
π i = ( ( \pi_i=(( πi=((𝕦 i ( 2 ) , _i^{(2)}, i(2),𝕨 i ( 2 ) ) , ( U i ( 1 ) , W i ( 1 ) ) , ( U i ( 2 ) , W i ( 2 ) ) ) _i^{(2)}),(\mathbb{U}_i^{(1)},\mathbb{W}_i^{(1)}),(\mathbb{U}_i^{(2)},\mathbb{W}_i^{(2)})) i(2)),(Ui(1),Wi(1)),(Ui(2),Wi(2)))

延展性攻击操作如下:

  • 1)根据论文《Revisiting the Nova Proof System on a Cycle of Curves》第6章”Proof of Security“可知,可解析𝕨 i ( 2 ) _i^{(2)} i(2) 来获取relational witness:
    w ^ i ( 2 ) = ( vk , ( i − 1 ) ( 2 ) , z 0 ( 2 ) , z i − 1 ( 2 ) , aux i − 1 ( 2 ) , U i − 1 ( 1 ) , \hat{w}_{i}^{(2)}=(\text{vk}, (i-1)^{(2)}, z_0^{(2)}, z_{i-1}^{(2)},\text{aux}_{i-1}^{(2)},\mathbb{U}_{i-1}^{(1)}, w^i(2)=(vk,(i1)(2),z0(2),zi1(2),auxi1(2),Ui1(1),𝕦 i − 1 ( 1 ) , T ˉ i − 1 ( 1 ) ) _{i-1}^{(1)},\bar{T}_{i-1}^{(1)}) i1(1),Tˉi1(1))
    其中 z i ( 2 ) = F 2 ( z 0 ( 2 ) , aux 0 ( 2 ) ) z_i^{(2)}=F_2(z_0^{(2)}, \text{aux}_0^{(2)}) zi(2)=F2(z0(2),aux0(2)) U i ( 1 ) = Fold V ( vk , U i − 1 ( 1 ) , \mathbb{U}_i^{(1)}=\text{Fold}_{\mathcal{V}}(\text{vk}, \mathbb{U}_{i-1}^{(1)}, Ui(1)=FoldV(vk,Ui1(1),𝕦 i ( 1 ) , T ˉ i − 1 ( 1 ) ) _i^{(1)},\bar{T}_{i-1}^{(1)}) i(1),Tˉi1(1))
    从而可根据𝕨 i ( 2 ) _i^{(2)} i(2) 来解析获取 w ^ i ( 2 ) \hat{w}_{i}^{(2)} w^i(2)

  • 2)找到一个不同的辅助值:使用 z i − 1 ( 2 ) z_{i-1}^{(2)} zi1(2),(假设对于 F 2 F_2 F2很容易)找到某 aux p r i m e ( 2 ) \text{aux}_{prime}^{(2)} auxprime(2),使得:
    z p r i m e ( 2 ) : = F 2 ( z i − 1 ( 2 ) , aux p r i m e ( 2 ) ) ≠ F 2 ( z i − 1 ( 2 ) , aux i − 1 ( 2 ) ) = z i ( 2 ) z_{prime}^{(2)}:=F_2(z_{i-1}^{(2)},\text{aux}_{prime}^{(2)})\neq F_2(z_{i-1}^{(2)},\text{aux}_{i-1}^{(2)})=z_{i}^{(2)} zprime(2):=F2(zi1(2),auxprime(2))=F2(zi1(2),auxi1(2))=zi(2)

  • 3)为 R1CS ( 2 ) \text{R1CS}^{(2)} R1CS(2)计算

Nova系列博客

  • Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记
  • Nova 和 SuperNova:无需通用电路的通用机器执行证明系统
  • Sangria:类似Nova folding scheme的relaxed PLONK for PLONK
  • 基于Nova/SuperNova的zkVM
  • SuperNova:为多指令虚拟机执行提供递归证明
  • Lurk——Recursive zk-SNARKs编程语言
  • Research Day 2023:Succinct ZKP最新进展
  • 2023年 ZK Hack以及ZK Summit 亮点记
  • 基于cycle of curves的Nova证明系统(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/676645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Rust】1、实战:语法和数据结构、生命周期-所有权-借用、自制 CPU、内存、文件

文章目录 零、Rust 好用的资源一、概述1.1 安全性1.1.1 垂悬指针1.1.2 数据竞争1.1.3 迭代器失效 1.2 性能1.3 vscode 設置 二、基础语法2.1 循环2.2 引用2.3 生命周期2.4 泛型2.5 实战grep项目2.6 数组2.6.1 数组和切片2.6.2 动态数组2.6.3 初始化 2.7 包含第三方库2.8 命令行…

深入理解深度学习——BERT(Bidirectional Encoder Representations from Transformers):输入表示

分类目录:《深入理解深度学习》总目录 相关文章: BERT(Bidirectional Encoder Representations from Transformers):基础知识 BERT(Bidirectional Encoder Representations from Transformers&#xff09…

【Linux】MySQL 高级 SQL 语句 (一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 MySQL 高级 SQL 语句 MySQL 高级(进阶) SQL 语句SELECT:显示表格中一个或数个字段的所有数据记录DISTINCT:不显示重复的数据记录WHERE:有条…

CVE-2022-25411

文章目录 CVE-2022-25411一、漏洞介绍二、渗透步骤1、打开网站2、目录扫描3、访问后台4、添加文件后缀5、上传shell6、查看flag值 CVE-2022-25411 一、漏洞介绍 Maxsite CMS文件上传漏洞。 MaxSite CMS是俄国MaxSite CMS开源项目的一款网站内容管理系统。马克斯程序(MaxCMS)以…

【Syncfusion系列】SfDataGrid 轻松实现分页和Excel导出

前言 Syncfusion 封装了一个控件 SfDataGrid ,通过SfDataGrid我们只需要 极少量 代码就能分页和Excel导出。 效果展示 包安装 安装下面三个包 将表格绑定到数据库 这次我使用的是一个本地的小型数据库:sqlit 我通过 sqlit-net 这个包 进行访问 sqlit…

Dify 基于 ChatGPT 构建本地知识库问答应用

一、Dify 自从 ChatGPT 横空出世之后,其极高的语言理解和交互能力不仅让人惊呼,ChatGPT不仅能够处理事实性问题,还能理解和生成情感色彩更浓厚的对话内容,能够识别用户的情感倾向,并据此作出相应的回应。这么好的东西…

Linux——文件基础IO的文件描述符和重定向理解

目录 前言: 首先来回顾一下open函数,即在进程中同时打开多个文件: Linux底层进程与文件的关系 : 2.1关闭stdin: 运行结果: ​编辑由结果知:fd1指向文本文件cyq.txt,原本fd1是默…

机器学习多步时间序列预测解决方案

近年来,随着机器学习与深度学习的发展机器学习平台的成熟,数据科学家们不再需要关心底层的基础设施及构建复杂的训练与推理环境,从而可以把主要的时间与精力放在数据与算法本身。在机器学习变得更容易的今天,越来越多的传统行业已…

HAL库——STM32CubeMX中断相关配置(中断反转LED状态)

STM32CubeMX中断相关配置 文章目录 STM32CubeMX中断相关配置1. 选择你要用的芯片(双击打开)2. 设置串口写入3. 配置时钟树,外部时钟为系统时钟(PLL倍频时钟)4. 查看原理图,找到可以中断控制的器件,或者外接小灯来达到中…

中国版chatGPT【文心一言】

文心一言是一款基于人工智能技术的中文自然语言处理工具,它可以用于文本生成、情感分析、关键词提取等多种应用场景。相比于GPT等其他自然语言处理模型,文心一言有着更多的优势。 首先,文心一言具有更高的准确率和可靠性。它采用了最新的深度…

Redis之RDB和AOF持久化原理解析

Redis之RDB和AOF持久化原理解析 一 RDB持久化原理及缺点 说明: 主进程是没法读取物理内存的,所以会在主进程有一个页表来读取物理内存中的数据子进程共享主进程的数据,会复制页表,写入磁盘中写操作是会拷贝一份在进行写操作 二…

【MySql】MySql事务隔离级别与一致性

文章目录 理解隔离性隔离级别查看与设置隔离性读未提交Read Uncommitted读提交Read Committed可重复读 Repeatable Read串行化serializable一致性(Consistency) 理解隔离性 MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行 一个事务可能由…

计算机网络——自顶向下方法(第四章学习记录)

本章学习网络层:数据平面 前一章中我们学习了运输层依赖于网络层的主机到主机的通信服务,提供了各种形式的进程到进程的通信。在本章中我们将看到与运输层和应用层不同的是,在网络中的每一台主机和路由器中都有一个网络层部分。 网络层能够…

【FreeRTOS】FreeRTOS学习笔记 ---- 堆和栈,第1个FreeRTOS程序,创建任务函数及任务管理

🍀作者:阿润菜菜 目录 一、通过故事介绍FreeRTOS1.什么是FreeRTOS?2.FreeRTOS能做什么? 二、如何使用FreeRTOS? --- 第1个FreeRTOS程序三、FreeRTOS的堆和栈1.堆和栈的概念2.堆和栈的分配方式3.堆和栈的溢出检测 四、创…

【创建一个螺旋状的相机轨迹并可视化该轨迹以及每个点的姿态】

文章目录 焦点的作用static const Eigen::Vector3d b_cam_z(0, 0, 1);static const Eigen::Matrix3d R_w_base = (Eigen::Matrix3d() << 0, 0, -1, 1, 0, 0, 0, -1, 0).finished()import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import …

canvas详解03-绘制图像和视频

canvas 更有意思的一项特性就是图像操作能力。可以用于动态的图像合成或者作为图形的背景,以及游戏界面(Sprites)等等。浏览器支持的任意格式的外部图片都可以使用,比如 PNG、GIF 或者 JPEG。你甚至可以将同一个页面中其他 canvas 元素生成的图片作为图片源。 引入图像到 …

canvas详解04-绘制文字

绘制文本 canvas 提供了两种方法来渲染文本: fillText(text, x, y [, maxWidth]) 在指定的 (x,y) 位置填充指定的文本,绘制的最大宽度是可选的。 strokeText(text, x, y [, maxWidth]) 在指定的 (x,y) 位置绘制文本边框,绘制的最大宽度是可选的。 #一个填充文本的示例…

Vue电商项目--购物车操作

购物车动态展示数据 但是这个数据的格式不完美 一层套一层 重新对vuex进行存储处理 这里接口写错 这一块&#xff0c;我们通过计算属性加工一下&#xff0c;重新渲染到页面上 在这里我们考虑一个问题&#xff0c;那就是将计算出来的总值计算到页面上 这里还有一个问题&#x…

qt读写xml文件

Qt使用XML模块&#xff0c;在.pro文件中添加 QT xml Qt 提供了三种读写 XML 文档的方法&#xff1a; QXmlStreamReader/QXmlStreamWriter&#xff1a; 一种快速的基于流的方式访问良格式 XML 文档&#xff0c;特别适合于实现一次解析器&#xff08;所谓“一次解析器”&…

前端vue入门(纯代码)13

【13.Vue的消息订阅与发布】 备注&#xff1a;全局事件总线用的更多些&#xff0c;消息订阅与发布只需了解即可。【注意点1】&#xff1a;由于“消息订阅与发布”可依赖的第三方库太多了&#xff0c;这里使用pubsub-js 问题&#xff1a;“全局事件总线”和“消息订阅与发布”都…