数据库系统概论②——关系数据库基础

news2024/11/26 16:42:16

本篇文章主要讲解关系数据库基础中的基本概念,包括关系模型概述、关系的完整性约束等等内容。
同时想要了解更多数据库系统概论知识的朋友可以看下我的上一篇文章数据库系统概论①——数据库系统基本概念

文章目录

  • 1、关系数据库的基本概念
      • 1.1 关系模型概述
      • 1.2 关系数据结构
          • 1.2.1 关系
          • 1.2.2 关系模式
          • 1.2.3 关系数据库
      • 1.3 关系的完整性
          • 1.3.1 关系的完整性的概述
          • 1.3.2 实体完整性规则
          • 1.3.3 参照完整性
          • 1.3.4 用户自定义的完整性
  • 巩固基础

1、关系数据库的基本概念

1.1 关系模型概述

关系模型是数据库系统中最重要的一种模型。它由数据结构关系操作完整性约束三部分组成。

最早提出关系模型的是美国IBM公司的E.F.Codd (埃德加·科德)博士。

  • 1970年提出关系数据模型
    • E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《Communication of the ACM》,1970
  • 之后,提出了关系代数和关系演算的概念
  • 1972年提出了关系的第一、第二、第三范式
  • 1974年提出了关系的BC范式

(1)数据结构
单一的数据结构----关系,现实世界的实体以及实体间的各种联系均用关系来表示

数据的逻辑结构----二维表, 从用户角度,关系模型中数据的逻辑结构是一张二维表。

(2)关系操作

关系操作采用集合操作方式,即操作的对象和结果都是集合。这种方式也称为一次一集合的方式。

非关系数据模型的数据操作方式则为一次一记录的方式。

关系模型中常用的关系操作:

  • 查询操作:选择、投影、连接、除、并、交、差。
  • 更新操作:增加、删除、修改。

表达关系操作的关系数据语言
(1)关系代数语言。(用对关系的运算来表达查询要求的方式。)
(2)关系演算。(用谓词来表达查询要求的方式。 )
(3)介于关系代数和关系演算之间的语言SQL。

(3)完整性约束

  • 实体完整性
    • 通常由关系系统自动支持
  • 参照完整性
    • 通常由关系系统自动支持
  • 用户定义的完整性
    • 反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束
    • 用户定义后由系统支持

在这里插入图片描述
关系模型建立在集合代数的基础上

1.2 关系数据结构

关系数据结构的基本概念

  • 关系
  • 关系模式
  • 关系数据库
1.2.1 关系

(1)域
定义:
是一组具有相同数据类型的值的集合。域一般用大写字母D表示,如 D 1 , D 2 , … , D n D1,D2,…,Dn D1D2Dn等。其中域中数据的个数叫域的基数

举例:

  • 整数
  • 实数
  • 指定长度的字符串集合
  • 介于某个取值范围的整数
  • {‘男’,‘女’}
  • 介于某个取值范围的日期

(2)笛卡尔积(Cartesian Product)
定义:
给定一组域 D 1 , D 2 , … , D n D_1,D_2,…,D_n D1D2Dn,这些域中可以存在相同的域。 D 1 , D 2 , … , D n D_1,D_2,…,D_n D1D2Dn的笛卡尔积为: D 1 × D 2 × … × D 3 ={( d 1 , d 2 , … , d n )| d i ∈ D i , i = 1 , 2 , … , n } D_1×D_2×…×D_3={(d_1,d_2,…,d_n)|d_i∈D_i,i=1,2,…,n} D1×D2××D3={(d1d2dn)|diDii12n

说明:

  • 所有域的所有取值的一个组合
  • 不能重复

笛卡尔积可表示为一个二维表。

举例:
D 1 = { a , b } , D 2 = { c , d , e } , D 3 = { f , g } D1=\{a,b\}, D2=\{c,d,e\}, D3=\{f,g\} D1={a,b},D2={c,d,e},D3={f,g}

D 1 × D 2 × D 3 = { ( a , c , f ) , ( a , c , g ) , ( a , d , f ) , ( a , d , g ) , ( a , e , f ) , ( a , e , g ) , ( b , c , f ) , ( b , c , g ) , ( b , d , f ) , ( b , d , g ) , ( b , e , f ) , ( b , e , g ) } 。 D1×D2×D3=\{(a,c,f), (a,c, g) , (a,d, f) , (a,d, g) ,\\(a,e,f) , (a,e,g) , (b,c,f) , (b,c, g) ,\\ (b,d, f) ,(b,d, g) , (b,e, f) , (b,e, g) \}。 D1×D2×D3={(a,c,f),(a,c,g),(a,d,f),(a,d,g),(a,e,f),(a,e,g),(b,c,f),(b,c,g),(b,d,f),(b,d,g),(b,e,f),(b,e,g)}
结果用二维表格表示如下表所示:

在这里插入图片描述
(3)元组
笛卡尔积中每一个元素(d1,d2,… ,dn)叫作一个n元组(n-tuple)或简称元组,即行。
例: (a,c,f)

(4)分量(Component)
元素(d1,d2,… ,dn)中的每一个值叫作一个分量,即列。

(5)基数
如果 D i ( i = 1 , , … , n ) D_i(i=1,,…,n) Dii=1,,,n)为有限集,其基数为 m i ( i = 1 , 2 , … , n ) , m_i(i=1,2,…,n), mi(i=1,2,,n), D 1 × D 2 × … × D n D_1×D_2×…×D_n D1×D2××Dn的基数 = m 1 × m 2 × … × m n , =m_1×m_2×…×m_n, =m1×m2××mn即笛卡尔积的基数等于所有域的基数累乘。

举例:
D 1 D_1 D1(表示导师的集合)={张清玫、刘逸 }
D 2 D_2 D2(表示专业的集合)={计算机专业、信息专业}
D 3 D_3 D3(表示研究生的集合)={李勇、刘晨、王敏}

在上面的例子中:

   D 1 D_1 D1的基数 m 1 = 2 m_1=2 m1=2
   D 2 D_2 D2的基数 m 2 = 2 m_2=2 m2=2
   D 3 D_3 D3的基数 m 3 = 3 m_3=3 m3=3

D 1 × D 2 × D 3 D_1×D_2×D_3 D1×D2×D3的基数 = m 1 × m 2 × m 3 = 2 × 2 × 3 = 12 =m_1×m_2×m_3=2×2×3=12 =m1×m2×m3=2×2×3=12

D 1 × D 2 × D 3 D_1×D_2×D_3 D1×D2×D3的笛卡尔集为:
在这里插入图片描述

(6)关系(Relation)
假设:
导师与专业:1:1
导师与研究生:1:n

在这里插入图片描述

定义:
D 1 × D 2 × … × D n D_1×D_2×…×D_n D1×D2××Dn的子集叫做在域 D 1 , D 2 , … , D n D_1,D_2,…,D_n D1D2Dn上的关系,用 R ( D 1 , D 2 , … , D n ) R(D_1,D_2,…,D_n) R(D1D2Dn)表示。这里R表示关系的名字,n是关系的目或度(Degree)。

说明:

  • 关系中的每个元素是关系中的元组,通常用t表示。
  • 当n=1时,称该关系为单元关系
  • 当n=2时,称该关系为二元关系

可见关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)N目关系必有n个属性,属性的名称要唯一。

若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。

若一个关系有多个候选码,则选定其中一个为主码(Primary key)。主码的诸属性称为主属性(Prime attribute)。

不包含在任何侯选码中的属性称为非码属性(Non-key attribute)。在最简单的情况下,侯选码只包含一个属性。

在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全码(All-key)。

举例:
学生选课数据库中有三个关系:

  • 学生( 学号 ‾ \underline{学号} 学号,姓名,性别,年龄,籍贯,班级,系别)
  • 课程( 课号 ‾ \underline{课号} 课号,课名)
  • 成绩( 学号 ‾ , 课号 ‾ \underline{学号},\underline{课号} 学号课号,成绩)

其中带下划线的部分给出了每个关系的候选码(或称主码)。

关系的性质
关系是用集合代数的笛卡儿积定义的,是元组的集合,因此关系具有以下性质:

  • 列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域;
  • 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名;
  • 列的顺序无所谓,即列的次序可以任意交换;
  • 任意两个元组不能完全相同
  • 行的顺序无所谓,即行的次序可以任意交换;
  • 所有属性值都是原子的,即每一个分量都必须是不可分的数据项,不允许属性又是一个二维关系;

举例:
下面的工资关系(如下表)不符合关系的规范化要求,在数据库中是不被允许的,因为表示工资的属性不是一个原子分量

在这里插入图片描述

1.2.2 关系模式

定义:
关系的描述称为关系模式(Relation Schema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, dom, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。

说明:
关系模式通常可以简记为: R ( A 1 , A 2 , … , A n ) R(A_1, A_2, …, A_n) R(A1,A2,,An)其中R为关系名, A 1 , A 2 , … , A n A_1, A_2, …, A_n A1,A2,,An为属性名。而域名属性向域的映象常常直接说明为属性的类型、长度。

举例:
一个表示学生的关系可以简记为:
学生(学号,姓名,性别,年龄,籍贯,班级,系别)

1.2.3 关系数据库

定义:
在一个给定的现实世界领域中,相应于所有实体及实体之间联系的关系的集合构成一个关系数据库。

关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。

总结:
关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系,可以从上下文中加以区别。

1.3 关系的完整性

1.3.1 关系的完整性的概述

定义:
数据完整性由完整性规则来定义,关系模型的完整性规则是对关系的某种约束。

在关系模型中,数据的约束条件通过三类完整性约束条件来描述,它们是:

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

为了维护数据库中的数据完整性,在对关系数据库执行插入、删除和修改等操作时,必须遵守这三类完整性规则。

1.3.2 实体完整性规则

若属性A是基本关系R的主属性,则属性A不能取空值。

例:学生(学号,姓名,性别,年龄,籍贯,班级,系别)

  • 学号作为学生关系的主属性,则学号不能取空值

例:选课(学号,课号,成绩)

  • 学号和课号一起作为选课关系的主属性,则学号和课号都不能取空值

在关系数据库系统中,用户在建立关系模式时,应定义该模式的实体完整性规则。设置某些属性为主键,在这些属性中不能设置取空值,以保证关系数据库系统中的任何一个关系都满足实体完整性约束条件。

实体完整性规则的说明:

关系模型是用关系来描述实体及实体间的关系,所以在数据库中一个关系对应现实世界中的一个实体集,关系中的每一个元组对应一个实体。

现实世界中的每一个实体都是可以区分的,在关系中用主键唯一地标识一个实体(元组)。例如每个人,他都有自己的身份证号,而身份证号所有人都不会重复,所以它可以作为主键唯一地标识一个人。

若一个实体(元组)的主键值为空(所谓空值是“不知道”或“不确定”的值),说明存在某个未知的实体,这和实体的概念相矛盾。

1.3.3 参照完整性

(1)关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。

例: 学生实体、专业实体

  • 学生( 学号 ‾ \underline{学号} 学号,姓名,性别, 专业号 ‾ \underline{专业号} 专业号,年龄)
  • 专业( 专业号 ‾ \underline{专业号} 专业号,专业名)

学生关系引用了专业关系主码“专业号”。
学生关系中的“专业号”值必须是确实存在的专业的专业号 ,即专业关系中有该专业的记录。

(2)外键(Foreign Key)
外键的定义:
F F F是基本关系 R R R的一个或一组属性,如果 F F F与基本关系 S S S的主码 K S K_S KS相对应,则称 F F F是基本关系 R R R外键(外码)。

  • 基本关系R称为参照关系(Referencing Relation)
  • 基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)

是不是刚看觉得有点绕,那么我们就拿上面的例子来说明一下,比如关系 R R R就是学生 F F F是学生属性中的专业号专业实体就是基本关系 S S S,那么学生实体中的“专业号”就与专业实体中的主码"专业号"相对应,所以专业号( F F F)就是学生实体(基本关系 R R R)的外键,也就是外码

专业关系是被参照关系,学生关系为参照关系
在这里插入图片描述

在这我们再单独举个例子:
例:
学生( 学号 ‾ \underline{学号} 学号,年龄,性别);
课程( 课号 ‾ \underline{课号} 课号,课名);
选修( 学号 ‾ \underline{学号} 学号 课号 ‾ \underline{课号} 课号,成绩)。

“学号”和“课程号”是选修关系的外码。

  • 学生关系和课程关系均为被参照关系。
  • 选修关系为参照关系。

在这里插入图片描述

(3)参照完整性规则
若属性(或属性组) F F F是基本关系 R R R的外码它与基本关系 S S S的主码 K S K_S KS相对应(基本关系 R R R S S S不一定是不同的关系),则对于 R R R中每个元组在 F F F上的值必须为:

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值
  • 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上。
  • 外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

例:学生关系中每个元组的“专业号”属性只取两类值

  • 空值,表示尚未给该学生分配专业
  • 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业

例:选修( 学号 ‾ \underline{学号} 学号,课程号,成绩)
“学号”和“课程号”可能的取值 :

  • 选修关系中的主属性,不能取空值
  • 只能取相应被参照关系中已经存在的主码值
1.3.4 用户自定义的完整性

关系数据库系统还允许用户定义某一具体数据库所涉及的数据必须满足的约束条件。这种约束条件是对数据在语义范畴的描述,由具体应用环境来决定,这就是用户定义的完整性。

例如:限定学生关系中学生的年龄在13~35之间

  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求

  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能

例:课程(课程号,课程名,学分)

  • “课程号”属性必须取唯一值
  • 非主属性“课程名”也不能取空值
  • “学分”属性只能取值{1,2,3,4}

巩固基础

学习完上面的内容我们来进行一轮小测试来巩固下基础~

  1. 用二维表数据来表示实体之间联系的模型叫做____C____
    A) 网状模型 B) 层次模型
    C) 关系模型 D) 实体联系模型

  2. 关于关系模式码的叙述中,哪一项是不正确的 ©
    A当候选码多于一个时,选定其中一个作为主码
    B主码可以是单个属性,也可以是属性组
    C不包含在主码中的属性称为非主属性
    D若一个关系模式中的所有属性构成码,则称为全码

  3. 主键约束用来强制数据的(B)完整性。
    A)域 B)实体
    C)参照 D)ABC都可以

  4. 如果把学生看为实体,某个学生的姓名叫“张三”,则张三应看成是(D )
     A)记录型
     B)记录值
     C)属性型
     D)属性值

  5. 设有关系SC(SNO,CNO,GRADE),主码是(SNO,CNO).遵
    照实体完整性规则 (D)
    A) 只有SNO不能取空值
    B) 只有CNO不能取空值
    C) 只有GRADE不能取空值
    D) SNO与CNO都不能取空值

  6. 在下面的两个关系中、职工号和部门号分别为职工关系和部门关
    系的主键(或称主码)。
    职工( 职工号 ‾ \underline{职工号} 职工号、职工名、部门号、职务、工资)
    部门( 部门号 ‾ \underline{部门号} 部门号、部门名、部门人数、工资总额)
    在这两个关系的属性中,只有一个属性是外键(或称外来键、外码、
    外来码)。它是 (B)
    A) 职工关系的“职工号” B) 职工关系的“部门号”
    C) 部门关系的“部门号” D) 部门关系的“部门名”

  7. 设有关系模式R(A,B,C)和S(E,A,F),若R.A是R的主
    码,S.A是S的外码,则S.A的值或者等于R中某个元
    组的主码值,或者取空(null)。这是 ( 参照 ) 完整性规则

📢博客主页:https://blog.csdn.net/m0_63007797?spm=1011.2415.3001.5343
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 心无旁骛~ 原创,首发于 CSDN博客🙉
📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

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

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

相关文章

【26】C语言_数据存储

目录 数据类型的意义 大小端介绍 例题1:设计一个小程序输出存储方式: 例题2:下列程序输出什么,为什么 例题3:下列程序输出什么,为什么 例题4:下列程序输出什么,为什么 例题6&a…

函数知识点总结

函数知识点总结 函数知识点总结 一、平面直角坐标系中点的坐标 1. 各象限内2. 坐标轴上3. 各象限角平分线上4. 与坐标轴平行的直线上的点5. 点到坐标轴及原点的距离6. 平面上两点距离 一、平面直角坐标系中点的坐标 1. 各象限内 象限x,yx,\,yx,y 的关系第一象限x>0,y&…

powerDesigner如何将数据库中已有表逆向生成pdm文件

问题背景 系统升级,要在原有数据库表结构基础之上重构表系统,为了节省时间,原来能使用的表结构保留,制作升级变动,所以用到了powerDesigner的逆向生成工具。 解决方案 第一种 创建新的PDM工程 点击左上角File&…

一起Talk Android吧(第四百七十六回:缩放类视图动画)

文章目录使用方法属性介绍示例代码各位看官们大家好,上一回中咱们说的例子是"渐变类视图动画",这一回中咱们说的例子是" 缩放类视图动画"。闲话休提,言归正转,让我们一起Talk Android吧!使用方法 缩放类动画…

Servlet进阶2:JSP≈Servlet、MVC=JSP+Servlet

Servlet进阶2一、JSP的运行1. 启动tomcat2. 准备JSP文件3. 将JSP文件放在Tomcat的webapps文件夹下4. 利用Tomcat运行JSP文件二、JSP和Servlet的异同三、MVC JSP Servlet1. Servlet与JSP的优缺点2. MVC的出现一、JSP的运行 1. 启动tomcat 2. 准备JSP文件 <span style&quo…

【Ⅰ绪论】1.数据结构起源

一、起源 1、早期理解 人们都把计算机理解为数值计算工具 数值计算的特点&#xff1a;有数学方程&#xff0c;可以用计算机去做传统的数值计算 比如&#xff1a;一个线性回归的模型【机器学习】 ①根据历史数据&#xff08;黑点&#xff09;&#xff0c;去拟合这条线&#x…

【算法基础】快速排序(分治思想)

一、快速排序原理 1. 算法介绍 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(记左端为L,最右端为R) 分界点的选取有如下四种方法:(1)q[L];(2)q[(L+R)/2];(3)q[R];(4)随机选取 (2)…

node封装一个控制台进度条插件

说在前面 控制台的进度条大家都见得不少了吧&#xff1f;大家都知道控制台的进度条是怎么实现的吗&#xff1f;最近自己在写几个node脚本工具&#xff0c;期间有需要进度展示的一个需求&#xff0c;所以就顺手写了一个可以自定义的进度条插件&#xff0c;可以直接引入并配置使用…

【自然语言处理】情感分析(三):基于 Word2Vec 的 LSTM 实现

情感分析&#xff08;三&#xff09;&#xff1a;基于 Word2Vec 的 LSTM 实现本文是 情感分析 系列的第 333 篇&#xff0c;前两篇分别是&#xff1a; 【自然语言处理】情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现【自然语言处理】情感分析…

web字体和图标 web字体 字体图标

目录web字体和图标web字体字体图标网站图标使用方法&#xff08;font class 版本&#xff08;推荐&#xff09;&#xff09;图标离线使用方法图标使用方法&#xff08;Unicode 版本&#xff09;web字体和图标 web字体 用户电脑上没有安装相应字体&#xff0c;强制让用户下载该…

C++动态内存管理:new 和 delete

目录 一.前言 二.new和delete的基本使用 1.new/delete操作内置类型 三.定位new表达式(placement-new) 四.new操作数出现内存申请错误时的处理方式&#xff1a;抛异常 五.new和malloc的区别 一.前言 C沿用了C语言的底层内存管理机制&#xff1a; 然而在动态内存管理方面&am…

Java——三角形最小路径和

题目链接 leetcode在线oj题——三角形最小路径和 题目描述 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是…

AcWing 1057. 股票买卖 IV(状态机DP)

AcWing 1057. 股票买卖 IV &#xff08;1&#xff09;问题 &#xff08;2&#xff09;分析 这道题我们首先得明确一点&#xff0c;我们只有一支股票&#xff0c;只是这支股票在不同天有着不同的价格&#xff0c;因此我们可以把天作为单位划分不同的状态。同时这道题中还有一个…

极限存在准则 两个重要极限——“高等数学”

各位uu们你们好呀&#xff0c;今天小雅兰要学习的内容仍然是高等数学&#xff0c;是为&#xff1a;极限存在准则 两个重要极限。那现在就让我们一起进入高等数学的世界吧 引例 夹逼准则 准则Ⅰ 数列的夹逼准则 准则Ⅰ’ 函数的夹逼准则 重要极限Ⅰ 准则Ⅱ 单调有界数列必有极…

Servlet进阶1:Servlet原理

Servlet进阶一、Dispatcher二、doGet、doPost、Service方法的区别1. 三者联系2. 使用规则三、Servlet的生命周期四、Servlet、Servlet容器、Web服务器一、Dispatcher 一个Web App就是由一个或多个Servlet组成的&#xff0c;每个Servlet通过注解说明自己能处理的路径。早期的Se…

FreeRTOS-信号量详解

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;玩转FreeRTOS &#x1f4ac;保持…

【algorithm】认真讲解前缀和与差分 (图文搭配)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f4e3;系列专栏&#xff1a;AcWing算法笔记 今天的月色好美 文章目录前言一、前缀和算法1.1 什么是前缀和&#xff1f;1.2 一维前缀和二、二维前缀和三、一维差分四…

Java---微服务---分布式搜索引擎elasticsearch(1)

分布式搜索引擎elasticsearch&#xff08;1&#xff09;1.elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术&#xff1f;1.1.5.总结1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排1.3.es…

表单标签的使用

1、input标签 场景&#xff1a;在网页中显示收集用户消息的表单效果&#xff0c;如登录页、注册页 通过type属性值的不同&#xff0c;展示不同的效果 type属性值说明text文本框&#xff0c;用于输入单行文本password密码框&#xff0c;用于输入密码radio单选框&#xff0c;用…

检查 malloc 函数返回内容的四个理由

写在前面&#xff1a; 一些开发人员可能对检查不屑一顾&#xff1a;他们故意不检查malloc函数是否分配了内存。他们的推理很简单——他们认为会有足够的记忆。如果没有足够的内存来完成操作&#xff0c;请让程序崩溃。似乎是一个糟糕的事实。 注意。在本文中&#xff0c;mall…