格密码学习笔记(一):格的定义、基本区域和行列式

2023-10-30

格的基本定义

定义1 给定 n n n维实数空间 R n \mathbb{R}^n Rn中的一组线性无关向量 B = { b 1 , … , b n } ⊂ R n \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} \subset \mathbb{R}^n B={b1,,bn}Rn,其整数系数线性组合构成的集合被称为格(Lattice),即 L = ∑ i = 1 n b i ⋅ Z = { B x : x ∈ Z n } \mathcal{L} = \sum^n_{i=1} \bm{b}_i \cdot \mathbb{Z} = \{ \bm{B} \bm{x} : \bm{x} \in \mathbb{Z}^n \} L=i=1nbiZ={Bx:xZn}

定义中,冒号 : : :有时也写成竖号 ∣ | ,表示满足(subject to,s.t.)的意思; B = { b 1 , … b n } \bm{B} = \{ \bm{b}_1, \dots \bm{b}_n \} B={b1,bn}被称为格基

如下图所示,同一个格 L \mathcal{L} L可能有不同格基,如 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,,bn} C = { c 1 , … , c n } \bm{C} = \{ \bm{c}_1, \dots, \bm{c}_n \} C={c1,,cn},即 L = ∑ i = 1 n b i ⋅ Z = ∑ i = 1 n ⋅ Z \mathcal{L} = \sum^n_{i=1} \bm{b}_i \cdot \mathbb{Z} = \sum^n_{i=1} \cdot \mathbb{Z} L=i=1nbiZ=i=1nZ

在这里插入图片描述

为了区分格基以方便阅读,有时会特地注明 L ( B ) \mathcal{L}(\bm{B}) L(B) L ( C ) \mathcal{L}(\bm{C}) L(C)

b 1 , … , n ∈ R m \bm{b}_1, \dots, \bm{n} \in \mathbb{R}^m b1,,nRm,若 m = n m=n m=n,则 L = L ( B ) \mathcal{L} = \mathcal{L}(\bm{B}) L=L(B)被称为满秩格。在格密码中,一般研究的是满秩格。

也可以不用基向量表示格,而把格看成欧式空间上点集的离散子群。这个概念在现代密码学中很重要。很多密码方案的设计都涉及到群这个工具。从这个角度出发,可以更好地把握格密码学习的切入点。

定义2 格(Lattice)是 R n \mathbb{R}^n Rn的满足离散性质的加法子群。

群的完整定义具体可以参考Introduction to Modern Cryptography这本书,这本经典教材有一门公开课。

密码学原理《Introduction to modern Cryptography》_哔哩哔哩_bilibili

简而言之,是一个集合,在该集合上有一种二元运算,二元运算满足封闭性和结合律、且存在单位元和逆元,若再满足交换律则称为阿尔贝群。易证 R n \mathbb{R}^n Rn是加法群, L \mathcal{L} L R n \mathbb{R}^n Rn的子群而且是离散的。

格的基本区域

定义3 对格基 B = { b 1 , … b n } \bm{B} = \{ \bm{b}_1, \dots \bm{b}_n \} B={b1,bn},所有在 [ 0 , 1 ) n [0, 1)^n [0,1)n中的实数系数组合生成的空间称为格的基本区域,即 P ( B ) = ∑ i b i ⋅ [ 0 , 1 ) \mathcal{P}(\bm{B}) = \sum_i \bm{b}_i \cdot [0, 1) P(B)=ibi[0,1) P ( B ) = { B ⋅ a ∣ a ∈ R n , 0 ≤ a i ≤ 1 } \mathcal{P}(\bm{B}) = \{ \bm{B} \cdot \bm{a} | \bm{a} \in \mathbb{R}^n, 0 \leq a_i \leq 1 \} P(B)={BaaRn,0ai1}

格的基本区域算是一个基本量。

这个定义中的公式有点难以理解。以图2为例,假如 a = ( 0.2 , 0.33 ) \bm{a} = (0.2, 0.33) a=(0.2,0.33),则可得到蓝色向量;取 a \bm{a} a的所有可能值,可获得所有可能的蓝色向量,所有可能的蓝色向量叠加起来构成的区域即格的基本区域。

换个说法,所有基向量张成的平行多面体即格的基本区域。平行多面体有点类似机器学习里的超平面,超过三维时难以想象它长什么样子。平行多面体里的“平行”指的是几何体的每个面都有与之相对平行的一个面。

在这里插入图片描述

定理1 假设格 L \mathcal{L} L的秩为 n n n,对 L \mathcal{L} L上的一组线性无关向量 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,,bn},当且仅当 P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)L={0}时, B \bm{B} B L \mathcal{L} L的格基。该定理被称为格基判定定理

证明: 分为两步走,首先证明必要性,再证明充分性。
(1)必要性:当 B \bm{B} B L \mathcal{L} L的格基时, P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)L={0}
L \mathcal{L} L的格点由 B \bm{B} B的整数系数组合形成,而 P ( B ) \mathcal{P}(\bm{B}) P(B)则由 B \bm{B} B的小于1的实数系数组合形成,易知两者交集仅有原点 0 \bm{0} 0
(2)充分性:当 P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)L={0}时, B \bm{B} B L \mathcal{L} L的格基。
由于 B \bm{B} B L \mathcal{L} L上,故存在 r ∈ R n \bm{r} \in \mathbb{R}^n rRn使得 ∑ b i ⋅ r i \sum \bm{b}_i \cdot r_i biri也在格上。以下图为例,选取的 r \bm{r} r可以是 ( 0.5 , 0.5 ) (0.5, 0.5) (0.5,0.5)

在这里插入图片描述
此外,由于 B \bm{B} B L \mathcal{L} L上, B \bm{B} B是某组格基乘以对应的整数系数向量,故 ∑ b i ⋅ ⌊ r i ⌋ \sum \bm{b}_i \cdot \lfloor r_i \rfloor biri也在格上。此处 ⌊ ⋅ ⌋ \lfloor \cdot \rfloor 是向下取整符号。由格的二元运算封闭性可得, ∑ b i ⋅ ( r i − ⌊ r i ⌋ ) \sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor) bi(riri⌋)也在格上。

由于 0 ≤ r i − ⌊ r i ⌋ < 1 0 \leq r_i - \lfloor r_i \rfloor <1 0riri<1,故 ∑ b i ⋅ ( r i − ⌊ r i ⌋ ) \sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor) bi(riri⌋) P ( B ) \mathcal{P}(\bm{B}) P(B)中。

综上, ∑ b i ⋅ ( r i − ⌊ r i ⌋ ) \sum \bm{b}_i \cdot (r_i - \lfloor r_i \rfloor) bi(riri⌋) L \mathcal{L} L P ( B ) \mathcal{P}(\bm{B}) P(B)的交集点。由于 P ( B ) ∩ L = { 0 } \mathcal{P}(\bm{B}) \cap \mathcal{L} = \{ \bm{0} \} P(B)L={0},可得 r i = ⌊ r i ⌋ r_i = \lfloor r_i \rfloor ri=ri,即它必然是整数。

证毕。

用定理1可以判断一组线性无关向量是否为格基,以下图为例。对于格 Z 2 \mathbb{Z}^2 Z2,图(a)和图(b)都是格基,而图©由于 P ( B ) \mathcal{P}(\bm{B}) P(B)包含非零格点 ( 1 , 0 ) (1, 0) (1,0)故不是格基,图(d)由于 P ( B ) \mathcal{P}(\bm{B}) P(B)不包含格点 ( 0 , 0 ) (0, 0) (0,0)故也不是格基。

在这里插入图片描述

格的行列式

定义4 基本区域 P \mathcal{P} P的体积称为格的行列式,即 d e t ( L ) = v o l ( P ) \mathrm{det}(\mathcal{L}) = \mathrm{vol}(\mathcal{P}) det(L)=vol(P)

体积这个词有点抽象,一维空间里指长度,二维空间里指面积,三维及以上等多维空间里指体积。下文链接给出一个示例说明为何行列式就是体积。

Bat特白:行列式就是体积/面积?——(一)

不同的格基定义了不同的基本区域,然而所有基本区域的体积均一样。以下图为例,蓝色区域和黄色区域的体积是一样的。换而言之,对于 L = L ( B ) = L ( C ) \mathcal{L} = \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L=L(B)=L(C),有 v o l ( P ( B ) ) = v o l ( P ( C ) ) \mathrm{vol}(\mathcal{P}(\bm{B})) = \mathrm{vol}(\mathcal{P}(\bm{C})) vol(P(B))=vol(P(C))

在这里插入图片描述
行列式不是某一组基向量的性质,而是格本身的性质,即格的不变量。为了证明这个关系,接下来先介绍矩阵相乘行列式和不同格基之间的关系。

矩阵相乘的物理意义是将一个坐标系中的点映射到另一个坐标系中去。假设存在两个矩阵 M 1 \bm{M}_1 M1 M 2 \bm{M}_2 M2,有 d e t ( M 1 M 2 ) = d e t ( M 1 ) d e t ( M 2 ) \mathrm{det}(\bm{M}_1 \bm{M}_2) = \mathrm{det}(\bm{M}_1) \mathrm{det}(\bm{M}_2) det(M1M2)=det(M1)det(M2)

怎么证明行列式乘法定理:|AB|=|A||B|?

简而言之, d e t ( M 2 ) \mathrm{det}(\bm{M}_2) det(M2)求出矩阵 M 2 \bm{M}_2 M2包含多少个正交基基本区域, d e t ( M 1 ) \mathrm{det}(\bm{M}_1) det(M1)求出正交基基本区域经过 M 1 \bm{M}_1 M1变换后的体积,二者相乘得到矩阵 M 1 M 2 \bm{M}_1 \bm{M}_2 M1M2的体积。

定理2 对于两组不同的格基 B \bm{B} B C \bm{C} C,当且仅当存在幺模矩阵 U \bm{U} U使得 C = U B \bm{C} = \bm{UB} C=UB时, B \bm{B} B C \bm{C} C对应的格一样,即 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)

证明: 分为两步走,先证明必要性,再证明充分性。
(1)必要性:若 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C),则 C = U B \bm{C} = \bm{UB} C=UB U \bm{U} U是幺模矩阵。

易知存在矩阵 U \bm{U} U V \bm{V} V使得 C = U B \bm{C} = \bm{UB} C=UB B = V C \bm{B} = \bm{VC} B=VC,有 C = U V C \bm{C} = \bm{UVC} C=UVC U V = I \bm{UV} = \bm{I} UV=I

进一步有 d e t ( I ) = d e t ( U ) d e t ( V ) = 1 \mathrm{det}(\bm{I}) =\mathrm{det}(\bm{U}) \mathrm{det}(\bm{V})=1 det(I)=det(U)det(V)=1

注意,由于 C ∈ L \bm{C} \in \mathcal{L} CL是格基,它在格上,由定义1可知, U \bm{U} U是整数系数生成的矩阵;同理, V \bm{V} V也是整数矩阵。因此,有 d e t ( U ) = d e t ( V ) = ± 1 \mathrm{det}(\bm{U})=\mathrm{det}(\bm{V})=\pm 1 det(U)=det(V)=±1,即 U \bm{U} U V \bm{V} V都是幺模矩阵。

(2)充分性:若 C = U B \bm{C} = \bm{UB} C=UB U \bm{U} U是幺模矩阵,则 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)

注意幺模矩阵是整数矩阵,易知 L ( C ) = ∑ c i ⋅ Z = ∑ b j ⋅ Z ⋅ Z ⊆ L ( B ) \mathcal{L}(\bm{C}) = \sum \bm{c}_i \cdot \mathbb{Z} = \sum b_j \cdot \mathbb{Z} \cdot \mathbb{Z} \subseteq \mathcal{L}(\bm{B}) L(C)=ciZ=bjZZL(B);同理,有 L ( B ) ⊆ L ( C ) \mathcal{L}(\bm{B}) \subseteq \mathcal{L}(\bm{C}) L(B)L(C)。综上,有 L ( B ) = L ( C ) \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L(B)=L(C)

证毕。

推论1 对于 L = L ( B ) = L ( C ) \mathcal{L} = \mathcal{L}(\bm{B}) = \mathcal{L}(\bm{C}) L=L(B)=L(C),有 v o l ( P ( B ) ) = v o l ( P ( C ) ) \mathrm{vol}(\mathcal{P}(\bm{B})) = \mathrm{vol}(\mathcal{P}(\bm{C})) vol(P(B))=vol(P(C))

证明: 根据定理2,有 C = U B \bm{C} = \bm{UB} C=UB U \bm{U} U是幺模矩阵,则 d e t ( C ) = d e t ( U B ) = d e t ( U ) d e t ( B ) = ± d e t ( B ) \mathrm{det}(\bm{C}) = \mathrm{det}(\bm{UB}) = \mathrm{det}(\bm{U})\mathrm{det}(\bm{B})=\pm \mathrm{det}(\bm{B}) det(C)=det(UB)=det(U)det(B)=±det(B),正负号表示方向,而体积取绝对值。

证毕。

定义5 记格基为 B = { b 1 , … , b n } \bm{B} = \{ \bm{b}_1, \dots, \bm{b}_n \} B={b1,,bn}中心平行多面体的定义为 P = ∑ i = 1 n b i ⋅ [ − 1 2 , 1 2 ) \mathcal{P} = \sum^n_{i=1} \bm{b}_i \cdot [ - \frac{1}{2}, \frac{1}{2} ) P=i=1nbi[21,21)

如下图所示,当格的秩为2时,以原点为中心的橘红色区域即中心平行多面体。

在这里插入图片描述

与中心平行多面体平行的所有基本区域叠加起来可以张成整个空间,且构成空间的一种划分。即 { P + x ∣ x ∈ L } \{ \mathcal{P} + \bm{x} | \bm{x} \in \mathcal{L} \} {P+xxL} R n \mathbb{R}^n Rn的一种划分方式,如图的灰色斜线是 R n \mathbb{R}^n Rn的一种划分。

如果在欧式空间中任意取一个足够大的超球体 S ⊆ R n \bm{S} \subseteq \mathbb{R}^n SRn,可以发现球中基本平行多面体的个数与球的体积大致成线性关系,换而言之,球中格点的个数与球的体积近似成正比例,即 ∣ S ∩ L ∣ ≈ v o l ( S ) / d e t ( L ) | \bm{S} \cap \mathcal{L} | \approx \mathrm{vol}(\bm{S}) / \mathrm{det}(\mathcal{L}) SLvol(S)/det(L)

密度的角度来看,行列式只是根据空间中一块足够大的区域中格点的数量来定义,即 d e t ( L ) ≈ v o l ( S ) / ∣ S ∩ L ∣ \mathrm{det}(\mathcal{L}) \approx \mathrm{vol}(\bm{S}) / | \bm{S} \cap \mathcal{L} | det(L)vol(S)/∣SL,所以行列式不依赖于具体格基的取值。同样可“证”推论1

一个单位球里格点的个数可以看成密度,两个不同格可能密度一样,但格点的位置排布大不相同。

致谢

  • Simons格密码公开课官网

Mathematics of Lattices - Simons Institute for the Theory of Computing

  • 哔哩哔哩中英双语视频(字幕组:重庆大学大数据与软件学院 后量子密码研究小组)

【中英字幕】Simons格密码讲座第1讲:格的数学定义_哔哩哔哩_bilibili

  • 其它格密码讲解课程和博文

格密码入门课程_哔哩哔哩_bilibili

格密码的基础概念_唠嗑!的博客-CSDN博客_格密码

格(Lattice)基础(一)_Amire0x的博客-CSDN博客_两组格基生成同一个格的充要条件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格密码学习笔记(一):格的定义、基本区域和行列式 的相关文章

  • OpenCV中基于LBP算法的人脸检测测试代码

    下面是OpenCV 3 3中基于CascadeClassifier类的LBP算法实现的人脸检测 从结果上看 不如其它开源库效果好 如libfacedetection 可参考 https blog csdn net fengbingchun
  • 自动控制原理-频率特性 G(jw ) 定义

    目录 预先的知识点 正题 定义一 物理定义 定义二 定义三 理解即可 不要求掌握 运用 预先的知识点 1 复数 一般定义
  • 超高频RFID读写器构建医疗化验全程RFID跟踪管理系统

    1 背景 Ambient ID发布了超高频UHF Gen 2 RFID系统的解决方案 使用Trimble旗下Thingmagic超高频RFID读写器 用来跟踪那些从医院到化验室里进行诊断测试的标本瓶 标本瓶里盛有人体组织或血液 这个方案可以
  • dnsmasq安装

    一 dnsmasq下载 下载地址 Index of dnsmasq 二 dnsmasq配置 决定dnsmasq支持什么功能是通过修改src config h 需要的XX功能通过 define XX make时 XX功能编译到dnsmasq命
  • JavaScript中的iterable

    遍历Array可以采用下标循环 遍历Map和Set就无法使用下标 为了统一集合类型 ES6标准引入了新的iterable类型 Array Map和Set都属于iterable类型 具有iterable类型的集合可以通过新的for of循环来
  • Laravel初探——安装

    安装Composer 1 curl sS https getcomposer org installer php 2 mv composer phar usr local bin composer 3 composer install 安装
  • Java之美[从菜鸟到高手演变]之设计模式二

    在阅读过程中有任何问题 请及时联系 egg 邮箱 xtfggef gmail com 微博 http weibo com xtfggef 如有转载 请说明出处 http blog csdn net zhangerqing 我们接着讨论设计模
  • 变量的声明和定义

    1 声明和定义的区别 变量声明规定了变量的类型和名字 而定义是在声明的基础上还开辟了存储空间 可能还会为变量初始化一个初始值 2 c 为什么要将声明和定义分开 c 支持分离式编译机制 允许将程序分割为若干个文件 每个文件可被独立编译 而为了
  • 华为云云耀云服务器L实例评测

    目录 引出 起因 si因 解决报错 诶嘿 连上了 不出意外 就出意外了 打开数据库 what 找华为云求助 教训 备份 教训 密码 解决 1 改密码 2 新建一个MySQL 密码设置复杂一点 3 开启 binlog备份 MySQL的binl
  • Java二维数组静态以及动态初始化方法

    import java util Random public class test2 public static void main String args 二维数组静态初始化 int arr 1 2 3 4 5 6 7 8 9 Syste
  • java8 函数式接口与 Lambda 表达式

    函数式接口与 Lambda 表达式 1 函数式接口 举例复习接口的匿名实现 函数式接口 2 Lambda表达式 什么是Lambda Lambda的几种编写规则解释示例 Lambda 的方法引用与构造器引用 方法引用的解释与编写 方法引用示例
  • Winform实现ComboBox模糊查询

    1 新增项目 using System using System Collections Generic using System ComponentModel using System Data using System Drawing
  • 【Web3 系列开发教程——创建你的第一个 NFT(7)】创建一个 NFT DApp,给你的 NFT 赋予属性,例如图片

    在本文中 你将构建一个 NFT 铸币机 并学习如何通过使用 Metamask 和 Web3 工具将你的智能合约连接到 React 前端 来创建一个NFT dApp 我认为 对于具备 Web2 开发背景的开发者来说 最大的挑战之一是弄清楚如何
  • 故障诊断专家系统研究之五-----推理机制及可信度算法

    推理机制及可信度算法 在第三章和第四章中讨论了如何表示燃气轮机专家的知识以及如何把这些知识存储到知识库之中 即关于知识表示和知识库的问题 而故障诊断专家系统的另一个核心组件就是基于知识的诊断推理机 本章在前两章讨论的知识表示和知识库的基础之
  • 计算机专业大学生如何规划大学四年?

    首先必须学好计算机专业四大核心课程 数据结构 计算机网络 计算机组成原理 计算机操作系统 在此之前呢 建议学习一门面向过程和一门面向对象的语言 对我们进一步学习计算机大有裨益 比如C语言程序设计 Java程序设计 文末有福利 一 计算机专业

随机推荐

  • Mybatis中的StatementType

    原文 http luoyu ds iteye com blog 1517607 要实现动态传入表名 列名 需要做如下修改 添加属性statementType STATEMENT 同时sql里的属有变量取值都改成 xxxx 而不是 xxx
  • 雅可比(Jacobi)计算特征值和特征向量

    雅可比迭代法法 在图形图像中很多地方用到求矩阵的特征值和特征向量 比如主成分分析 OBB包围盒等 编程时一般都是用数值分析的方法来计算 这里介绍一下雅可比迭代法求解特征值和特征向量 雅可比迭代法的原理 网上资料很多 详细可见参考资料1 这里
  • 最小二乘法(OLS)python 实践

    参考链接 1 基本原理 https zhuanlan zhihu com p 149280941 2 python实现 https zhuanlan zhihu com p 22692029 实现结果 线性回归 coding utf 8 简
  • 2022 数学建模C题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路

    2022 数学建模国赛B题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路 定时更新 全部内容见 https mianbaoduo com o bread mbd Y5WUkpps 注 题目阅读后主要告诉我们的内容见标蓝的关键词
  • oracle 11g安装教程完整版

    64位WIN7 oracle11g plsql安装 上部转自Oracle 11g R2 for Win7旗舰版 64位 的安装步骤 1 下载Oracle 11g R2 for Windows的版本 下载地址 http www oracle
  • MemTest64内存测试

    MemTest64是一款测试电脑内存稳定性的测试 软件同时支持32位64位运行环境 界面如下 一 使用步骤 设定使用模式 点击开始 二 各个设置项说明 测试内存 可打开任务管理器查看内存和CPU使用情况 选择合适内存值 无限制运行 建议慎用
  • Spring Boot的底层原理

    一 Spring Boot简介 1 什么是Spring Boot Spring Boot是由Pivotal团队提供的框架 其设计目的是用来简化新Spring应用的初始搭建以及开发过程 该框架使用了特定的方式 继承starter 约定优先于配
  • Java基础:Stream流常用方法

    获取Stream流的方式 java util stream Stream 是Java 8新加入的流接口 并不是一个函数式接口 获取一个流非常简单 有以下几种常用的方式 所有 Collection 集合都可通过 stream 默认方法获取流
  • 【uniapp项目路由,配置,修改uni ui默认样式,小程序端不生效问题】

    1 对不同平台进行不同配置或样式 对不同端的css样式不一样 使用 ifdef endif 包裹 其中MP表示小程序端 表仅在小程序端是那个样式 ifdef APP PLUS margin top 88rpx endif ifdef H5
  • isis安装指南(Liunx版本)+ ASP

    ISIS Integrated Software for Imagers and Spectrometers 是一个数字图像处理软件包 用于处理当前和过去 NASA 和国际行星任务收集的图像 例如 从PDS下载的LRO月球影像数据源文件为I
  • 三维视觉--基于Kinect2.0深度相机的点云获取方案实现(C++版)

    上一篇中使用的点云获取设备是Intel Realsense d455相机 这两天接触的相机不少 也发现很多点云检测和分割的论文中使用的都是Kinect相机 今天就再分享一篇使用Kinect2 0获取点云并使用C 实现 首先还是相机SDK的下
  • PADS Logic VX2.7 原理图库绘制

    首先打开PADS Logic VX2 7 1 点击文件 点击库 2 新建库 3 存放放在你想存放的文件夹中 文件命名尽量英文数字 其实中文也没事我试过 哈哈哈 后缀pt9 然后点击保存 4 点击管理库列表 先点击刚刚创建的库 点击上 移动到
  • 面向对象和面向过程:两种程序设计思想的基础介绍和对比

    一 面向过程程序设计 面向过程 程序 算法 数据结构 面向过程的核心理念是 步骤分解 即把需要解决的问题分成一个个步骤 并用不同函数来实现它们 设计思维 自顶向下 逐步求精 按照逻辑顺序从上到下完成整个过程的编写 让我们用一个简单的数学问题
  • 3DMAX中的7个基本建模小窍门

    3DMAX中的7个基本建模小窍门 在这里 我们分享一些基本的3dmax建模技巧 希望能帮助您作为3D艺术家的成长和发展 虽然这篇文章是从3ds Max的角度进行阐述的 但这里提到的所有内容对于任何其他建模应用程序都同样有效 例如Maya C
  • 软件测试52讲-笔记(持续更新中...)

    软件测试52讲 01 你真的懂测试吗 从 用户登录 测试谈起 02 如何设计一个 好的 测试用例 03 什么是单元测试 如何做好单元测试 04 为什么要做自动化测试 什么样的项目适合做自动化测试 05 你知道软件开发各阶段都有哪些自动化测试
  • Linux上安装Matlab2020a

    目录 一 下载 Crack 和 ISO 镜像文件 二 安装MATLAB 1 挂载镜像并开始运行 install 文件 2 选择 使用Key安装 3 取消挂载 三 激活MATLAB 四 创建快捷启动方式 一 下载 Crack 和 ISO 镜像
  • 硬件系统工程师宝典(34)-----FLASH电路如何设计?

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们了解了存储器可分为RAM和ROM 根据不同特性也可以逐级细分 并且简单介绍了EEPROM 今天我们讲一讲FLASH有哪几种 NOR FLASH
  • elementui table组建高度动画

    el table transform all 0 3s height 0 Vue component el table extends Element Table created this KaTeX parse error Expecte
  • The PLY Polygon File Format

    The PLY Polygon File Format Author Greg Turk Introduction This document presents the PLY polygon file format a format fo
  • 格密码学习笔记(一):格的定义、基本区域和行列式

    文章目录 格的基本定义 格的基本区域 格的行列式 致谢 格的基本定义 定义1 给定 n n n维实数空间 R n mathbb R n