当前位置: 首页 > news >正文

1.2 数据模型

思维导图:

 

 

 

前言:

**1.2.1 什么是模型**

- **定义**:模型是对现实世界中某个对象特征的模拟和抽象。例如,一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。

- **具体模型与现实生活**:具体模型可以很容易地让人联想到现实生活中的事物。例如,航模飞机不仅模拟了飞机的起飞、飞行和降落,还抽象了其基本特征,如机头、机身、机翼和机尾。

**1.2.2 数据模型的定义**

- **数据模型**:数据模型也是一种模型,主要对现实世界中的数据特征进行抽象。具体来说,数据模型用于描述数据、组织数据和操作数据。

- **为什么需要数据模型**:计算机无法直接处理现实世界中的具体事物,所以需要先将这些事物数字化。数据模型是这一过程中用来表示和处理现实世界中的人、物、活动和概念的工具。简而言之,数据模型是对现实世界的模拟。

**1.2.3 数据模型与数据库系统**

- **基于数据模型的数据库系统**:现存的所有数据库系统都是基于某种数据模型构建的。

- **数据模型的重要性**:数据模型是数据库系统的核心和基础。为了更好地学习和理解数据库,首先需要了解数据模型的基本概念。

**总结**:数据库技术沿着数据模型的主线发展。数据模型为现实世界中的对象和概念提供了一个抽象的、数字化的表示方式,是数据库系统的基石。

**1.2.1 两类数据模型**

---

**数据模型的要求**:

- **真实性**:真实地模拟现实世界。
- **可理解性**:为人容易理解。
- **实现性**:易于在计算机上实现。

>由于难以全面满足上述要求,根据不同的使用对象和应用目的,数据库系统中通常会采用不同的数据模型。

---

**模型的分类**:

1. **概念模型(Conceptual Model)**:
   - 也称为信息模型。
   - 从用户的角度对数据和信息进行建模。
   - 主要用于数据库设计阶段。

2. **逻辑模型和物理模型**:
   - **逻辑模型**:
     - 包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型和半结构化数据模型等。
     - 从计算机系统的角度对数据进行建模。
     - 主要用于数据库管理系统的实现。
   - **物理模型**:
     - 数据的底层抽象,描述数据在系统内部的表示和存取方式。
     - 描述数据在存储介质(如磁盘、磁带)上的存储和访问方式。
     - 面向计算机系统,其实现是DBMS的任务。

---

**抽象过程**:

1. 从**现实世界**中抽象出信息结构(不依赖于特定的计算机系统) → **概念模型**。
2. 将概念模型转换为计算机上某个DBMS支持的数据模型 → **逻辑/物理模型**。

![抽象过程示意图](图1.7)

*图1.7 现实世界中客观对象的抽象过程*

---

**模型转换责任**:

- 从**现实世界**到**概念模型**:由数据库设计人员完成。
- 从**概念模型**到**逻辑模型**:可以由数据库设计人员完成,也可以使用数据库设计工具辅助完成。
- 从**逻辑模型**到**物理模型**:主要由数据库管理系统完成。

---

**后续内容预告**:

- 接下来将首先介绍概念模型和数据模型的组成要素。
- 然后,将深入探讨三个主要的数据模型。

---

**总结**:数据模型是数据库系统的核心和基础。不同阶段和目的下需要采用不同的数据模型,从而更好地模拟和实现现实世界中的数据结构和组织方式。

 1.2.2 概念模型

- **定义与重要性**:
  - **桥梁**:概念模型是现实世界与机器世界的中介层。
  - **用途**:用于信息世界的建模,为数据库设计人员提供工具,也是他们与用户之间的交流媒介。
  - **特点**:需具有强大的语义表达能力,简单、明确、易于用户理解。

- **信息世界的基本概念**:
  1. **实体 (Entity)**:客观存在的独特事物,例如一个职工、一个部门等。
  2. **属性 (Attribute)**:描述实体的特性,例如学生的学号、姓名等。
  3. **码 (Key)**:唯一标识实体的属性集。
  4. **实体型 (Entity Type)**:具有相同属性的实体的特性和性质的抽象表示。
  5. **实体集 (Entity Set)**:同一种类型实体的集合,例如所有学生。
  6. **联系 (Relationship)**:描述实体内部或实体之间的连接。包括一对一、一对多和多对多联系。

- **概念模型的表示方法 - 实体-联系方法**:
  - **背景**:PP.S.Chen在1976年提出。
  - **方法**:使用E-R图 (E-R diagram) 描述现实世界的概念模型。
  - **详细讲解**:关于如何从现实世界中抽取实体和联系以及如何建立E-R图将在第7章进行讲解。

---

这样的笔记格式将重要信息简明扼要地展现出来,有助于复习和快速理解。

 1.2.3 数据模型的组成要素

- **定义**:数据模型是一套精确定义的概念,用以描述系统的静态特性、动态特性及完整性约束。

数据模型主要由三部分组成:

1. **数据结构**:
    - **定义**:描述数据库的组成对象以及对象之间的联系。
    - **内容**: 
      - 对象的类型、内容、性质:例如,关系模型中的域、属性、关系等。
      - 数据之间的联系:例如,网状模型中的系型。
    - **重要性**:是描述数据模型性质的关键部分,如层次模型、网状模型和关系模型。
    - **目标**:描述系统的静态特性。

2. **数据操作**:
    - **定义**:对数据库对象的实例执行的允许操作及其规则的集合。
    - **种类**:主要包括查询和更新(插入、删除、修改)。
    - **要求**:数据模型应定义操作的确切含义、符号、规则及实现操作的语言。
    - **目标**:描述系统的动态特性。

3. **数据的完整性约束条件**:
    - **定义**:是一组完整性规则,用于保证数据的正确性、有效性和一致性。
    - **通用约束**:如关系模型中的实体完整性和参照完整性。
    - **特定约束**:例如,规定学生成绩不及格的科目数和教授的退休年龄。
    - **目的**:数据模型应反映其必须遵循的完整性约束,并提供定义完整性约束的机制。

1.2.4 常用的数据模型

**概览**:
在数据库领域中,逻辑数据模型主要有以下几种:

1. **层次模型 (Hierarchical Model)**
2. **网状模型 (Network Model)**
3. **关系模型 (Relational Model)**
4. **面向对象数据模型 (Object-Oriented Data Model)**
5. **对象关系数据模型 (Object-Relational Data Model)**
6. **半结构化数据模型 (Semistructured Data Model)**

---

- **层次模型与网状模型 (Format Models)**:
  - 在20世纪70-80年代初盛行。
  - 两者在使用和实现时都与数据库物理层的复杂结构有关。
  - 逐渐被关系模型取代,但因为很多早期应用是基于它们的,所以某些国家如美国和欧洲国家仍在使用。

- **面向对象数据模型**:
  - 20世纪80年代起,面向对象的方法在计算机领域产生了深远影响。
  - 促进了面向对象数据模型的研究和发展。
  - 为了支持面向对象模型,许多关系数据库厂商对关系模型做了扩展,产生了**对象关系数据模型**。

- **半结构化数据模型**:
  - 随Internet的发展,Web上的半结构化、非结构化数据变得越来越重要。
  - 产生了以XML为代表的半结构化和非结构化数据模型。

- **本章重点**:
  - 主要介绍层次模型、网状模型和关系模型。
  - 新型的数据模型会在第13章中进行详细讨论。

---

**数据结构的角度**:
- 数据模型主要由数据结构、数据操作和数据完整性约束条件组成。
- 在这里,我们重点介绍三种模型的数据结构。

**格式化模型的特点**:
- 实体用记录表示,其属性对应于记录的数据项或字段。
- 实体间的联系转换为记录之间的两两联系。
- 数据结构的单位是基本层次联系。这意味着两个记录及它们之间的一对多(或一对一)联系。

---

总结: 数据模型为我们提供了一个框架来思考如何在数据库中表示和组织数据。从层次模型到半结构化数据模型,每种模型都有其特定的应用和优势。在设计数据库时,选择合适的数据模型至关重要,因为它直接影响到数据的组织、存储和检索效率。

 1.2.5 层次模型

---

**定义与历史背景**  
层次模型是数据库系统中的早期数据模型,其数据组织方式是树形结构。它的典型代表是IBM公司1968年推出的IMS(Information Management System)。这是一个大型的商用数据库管理系统,曾被广泛应用。

---

**1.层次模型的数据结构**  
- **基本特点**  
  1. 有且仅有一个无双亲节点的根节点。
  2. 除根节点外的节点有且仅有一个双亲节点。
- **组织方式**  
  - 每个节点代表一个记录类型。
  - 记录类型间的联系用有向边表示,表现为父子之间的一对多关系。
  - 每个记录类型包含多个字段,字段表示实体的属性。
  - 记录类型和字段必须具有唯一的名称。
  - 同一记录类型中各个字段不能同名。
  - 记录类型可以定义排序字段,称为码字段,用于唯一地标识记录值。
  - 层次模型中有兄弟节点和叶节点,兄弟节点共享同一个父节点,而叶节点无子节点。

  **例子**:图1.9展示了一个层次模型,其中有多个节点如R₁、R₂等,它们之间存在层次关系。

---

**2.层次模型的数据操纵与完整性约束**  
- **基本操作**  
  1. 查询
  2. 插入
  3. 删除
  4. 更新
- **完整性约束**  
  - 插入操作需要相应的父节点存在。
  - 删除一个父节点会同时删除其所有子节点。

  **例子**:如图1.11所示,删除某个教研室会导致其下的所有教员信息丢失。

---

**3.层次模型的优缺点**  
- **优点**  
  1. 数据结构简单,清晰。
  2. 高查询效率,因为记录之间的联系常由指针实现。
  3. 提供良好的完整性支持。
- **缺点**  
  1. 非层次性联系难以表示。
  2. 表示多对多联系或多双亲节点的联系较为困难。
  3. 查询子节点必须通过父节点。
  4. 命令程序化,导致灵活性降低。

---

**结论**  
层次模型适合描述具有一对多的层次联系的实体。其直观性和易理解性是其突出的优点,但在某些复杂的实际应用中,它的局限性也较为明显。

1.2.6 网状模型 

---

**简介**:
- 网状模型反映非层次性的事物联系,解决层次模型在表示非树形结构时的不足。
- 典型代表为DBTG系统(亦称CODASYL系统)。

---

**1. 数据结构**

**定义**: 在数据库中,网状模型满足:
(1) 允许一个以上的结点无双亲。
(2) 一个结点可以有多于一个的双亲。

**特性**:
- 与层次模型比较,网状模型更具普遍性。
- 允许多个结点没有双亲,结点可有多个双亲,还可有复合联系。
- 层次模型是网状模型的特例。

**示例**: 图1.12展示了网状模型的不同形式。

**应用场景**: 学生选课系统中,学生与课程之间存在多对多的关系,通过引入选课记录来组织数据。

---

**2. 数据操纵与完整性约束**

- 网状模型比层次模型拥有较为宽松的完整性约束条件。
- DBTG提供了多种完整性概念和语句,如:
    1. 记录码概念:唯一标识记录的数据项集合。
    2. 确保父-子关系为一对多关系。
    3. 支持父-子记录之间的约束条件。

---

**3. 优缺点**

**优点**:
1. 直观地描述现实世界。
2. 存取效率高,性能良好。

**缺点**:
1. 结构复杂,难以掌握。
2. DDL和DML复杂,需要嵌入高级语言中,难以掌握和使用。
3. 需要选择合适的存取路径,加重了编程负担。

---

**总结**: 网状模型提供了一个能够更为直观地描述非层次性事物联系的方法。尽管它具有较高的存取效率和能够准确描述多对多的关系等优点,但其结构的复杂性和对程序员的要求较高使其使用受到一定限制。

1.2.7 关系模型

**概述**:
- 关系模型是数据库中最重要的数据模型。
- 1970年,E.F.Codd首次提出关系模型,为数据库技术奠定理论基础。
- 1981年,Codd获得ACM图灵奖。
- 20世纪80年代,大部分新的数据库管理系统都支持关系模型。

---

**1.关系模型的数据结构**:
- **基于数学**: 关系模型基于严格的数学概念。
- **关系**: 一张二维表;例:学生登记表。
- **元组**: 一张表中的一行。
- **属性**: 一张表中的一列;例:学号、姓名、年龄等。
- **码**: 可以唯一确定一个元组的属性组;例:学号。
- **域**: 同一数据类型的值的集合,决定了属性的取值范围。
- **分量**: 元组中的一个属性值。
- **关系模式**: 描述关系的方式,表示为“关系名(属性1,属性2,…,属性n)”。
- **规范性**: 关系中的每一个分量必须是不可分的数据项。

---

**2.关系模型的数据操纵与完整性约束**:
- **数据操纵**: 包括查询、插入、删除和更新。
- **完整性约束**: 
  - 实体完整性
  - 参照完整性
  - 用户定义的完整性
- **操作方式**: 关系模型中的数据操作基于集合,操作对象和结果均为关系。

---

**3.关系模型的优缺点**:
**优点**:
1. 基于严格的数学概念。
2. 概念单一,数据结构简单、清晰。
3. 存取路径对用户透明,具有高度的数据独立性。

**缺点**:
1. 查询效率可能较低。
2. 系统内部的查询优化增加了DBMS的开发难度。

---

**1.3 数据库系统的结构**:
- 从应用开发人员角度看,数据库系统通常采用三级模式结构。
- 从最终用户角度看,数据库系统的结构有多种,如单用户、主从式、分布式、客户-服务器等。
- 本章将详细介绍数据库系统的模式结构。

---

 

 

总结:

---

**重点**:
1. **定义**:数据模型是一个用于描述、构造和操作数据库的概念框架,它定义了所需的数据结构、关系及操作约束。
2. **关系模型**: 理解关系模型的组成(如关系、元组、属性、码等)及其规范性要求是核心内容。
3. **完整性约束**: 包括实体完整性、参照完整性和用户定义的完整性。
4. **三级模式结构**:外模式、概念模式和内模式的理解与区别。
5. **其他数据模型**: 除关系模型外,还需了解层次模型、网状模型、对象关系模型等。

---

**难点**:
1. **规范化**: 理解不同的规范化级别(如第一范式、第二范式等)及其为何需要。
2. **查询优化**: 虽然对于大部分应用开发者不是直接内容,但理解其背后的原理对于数据库性能优化是关键。
3. **完整性约束的应用**: 在实际应用中如何有效地使用和维护这些约束。
4. **数据模型转换**: 如何从概念模型(如E-R图)转换到关系模型。

---

**易错点**:
1. **混淆术语**:如将“关系”与“关系数据库”、“元组”与“记录”等概念混淆。
2. **规范化过程**:在进行数据库设计时,可能会错误地跳过某些规范化步骤或将数据模型规范化到不适当的级别。
3. **完整性约束的违反**:在进行数据操作时,可能会违反某些约束条件,如插入违反实体完整性的数据。
4. **误解数据模型的用途**:如将关系模型与对象关系模型混淆,或将它们用于不适合的场景。

---

总体来说,理解数据模型的基础概念是关键,但同时也需要注意其中的细节和特定的应用场景,以避免常见的误区和错误。

相关文章:

1.2 数据模型

思维导图: 前言: **1.2.1 什么是模型** - **定义**:模型是对现实世界中某个对象特征的模拟和抽象。例如,一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。 - **具体模型与现实生活**:具体模型可以很容…...

【实用工具】谷歌浏览器插件开发指南

谷歌浏览器插件开发指南涉及以下几个方面: 1. 开发环境准备:首先需要安装Chrome浏览器和开发者工具。进入Chrome应用商店,搜索“Extensions Reloader”和“Manifest Viewer”两个插件进行安装,这两个插件可以方便开发和调试。 2…...

应用层协议——DNS、DHCP、HTTP、FTP

目录 1、DNS 协议 1-1)Hosts 文件 1-2)DNS 系统 1-3)域名的组成、分类和树状结构 1-4)DNS 域名服务器类型 1-5)DNS 查询方式 1-6)DNS 域名解析的一般步骤 1-7)对象类型与资源记录 2、D…...

XML文件读写

0、.pro文件添加依赖 QT xml1、使用 QDomDocument 方式 #include <QtXml/QDomDocument> #include <QtXml/QDomProcessingInstruction> #include <QtXml/QDomElement> #include <QFile> #include <QTextStream> #include <QDebug>bo…...

Win11 安装 Vim

安装包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Ru7HhTSotz9mteHug-Yhpw?pwd6666 提取码&#xff1a;6666 双击安装包&#xff0c;一直下一步。 配置环境变量&#xff1a; 先配置系统变量中的path&#xff1a; 接着配置用户变量&#xff1a; 在 cmd 中输入…...

Mac电脑BIM建模软件 Archicad 26 for Mac最新

ARCHICAD 软件特色 智能化 在2D CAD中&#xff0c;所有的建筑构件都由线条构成和表现&#xff0c;仅仅是一些线条的组合而已&#xff0c;当我们阅读图纸的时候是按照制图规范来读取这些信息。我们用一组线条表示平面中的窗&#xff0c;再用另一组不同的线条在立面中表示同一个…...

JavaEE-网络编程套接字(UDP/TCP)

下面写一个简单的UDP客户端服务器流程 思路&#xff1a; 对于服务器端&#xff1a;读取请求&#xff0c;并解析–> 根据解析出的请求&#xff0c;做出响应(这里是一个回显&#xff0c;)–>把响应写回客户端 对于客户端&#xff1a;从控制台读取用户输入的内容–>从控制…...

微服务技术栈-Gateway服务网关

文章目录 前言一、为什么需要网关二、Spring Cloud Gateway三、断言工厂和过滤器1.断言工厂2.过滤器3.全局过滤器4.过滤器执行顺序 四、跨域问题总结 前言 在之前的文章中我们已经介绍了微服务技术中eureka、nacos、ribbon、Feign这几个组件&#xff0c;接下来将介绍另外一个组…...

函数形状有几种定义方式;操作符infer的作用

在 TypeScript 中&#xff0c;函数形状可以用多种方式进行定义。下面介绍了几种常用的函数形状定义方式&#xff1a; 函数声明&#xff1a; function add(a: number, b: number): number {return a b; }在函数声明中&#xff0c;我们直接使用 function 关键字来声明函数&…...

Java / MybatisPlus:JSON处理器的应用,在实体对象中设置对象属性,对象嵌套对象

1、数据库设计 2、定义内部的实体类 /*** Author lgz* Description* Date 2023/9/30.*/ Data // 静态构造staticName&#xff0c;方便构造对象并赋予属性 AllArgsConstructor(staticName "of") NoArgsConstructor ApiModel(value "亲友", description …...

力扣 -- 1027. 最长等差数列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int longestArithSeqLength(vector<int>& nums) {int nnums.size();int ret2;unordered_map<int,int> hash;//这里可以先把nums[0]存进哈希表中&#xff0c;方便后面i从1开始遍历hash[num…...

正则验证用户名和跨域postmessage

正则验证用户名 字母数字符号大小写8-14匹配用户名的 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>form</title> …...

jsbridge实战1:xcode swift 构建iOS app

[[toc]] 环境安装 macOs: 10.15.5 xcode: 11.6 demo:app 创建 hello world iOS app 创建工程步骤 选择&#xff1a;Create a new Xcode project选择&#xff1a;iOS-> single View App填写&#xff1a; project name: swift-app-helloidentifer: smile 包名language: s…...

零基础部署nginx mysql springboot

参考&#xff1a;写给开发人员看的Docker干货&#xff0c;零基础部署nginx mysql springboot 一、连接linux 阿里云 参考&#xff1a;部署到Linux 可能需要购买&#xff1a;购买链接 二、安装docker # 先切换到root用户下 sudo su# 更新apt-get&#xff0c;保证apt-get最新…...

6-3 模式匹配

description 给出主串s和模式串t&#xff0c;其长度均不超过1000。本题要求实现一个函数BF(string s, string t)&#xff0c;求出模式串t在主串s中第一次出现的位置&#xff08;从0开始计算&#xff09;&#xff0c;如果在s中找不到t&#xff0c;则输出-1。 函数接口定义&…...

SQL JOIN 时 USING 和 ON 的异同

在数据表做 join 时&#xff0c;即可以用 using&#xff0c;也可以用 on。有什么异同点呢。 ON 是更加普遍的用法&#xff0c;可以连接表 On 一个字段&#xff0c;多个字段&#xff0c;甚至一个条件表达式。举例 SELECT * FROM world.City JOIN world.Country ON (City.Cou…...

安全学习_开发相关_JNDI介绍(注入)RMILDAP服务

文章目录 参考&本节目的JNDI概念-RMI&LDAP服务调用检索&#xff1a;在RMI服务中调用了InitialContext.lookup()的常用类有&#xff1a;在LDAP服务中调用了InitialContext.lookup()的常用类有&#xff1a; JNDI注入-使用工具生成远程调用JNDI远程调用-工具&#xff08;j…...

C#学生选课及成绩查询系统

一、项目背景 学生选课及成绩查询系统是一个学校不可缺少的部分&#xff0c;传统的人工管理档案的方式存在着很多的缺点&#xff0c;如&#xff1a;效率低、保密性差等&#xff0c;所以开发一套综合教务系统管理软件很有必要&#xff0c;它应该具有传统的手工管理所无法比拟的…...

【C语言】利用数组处理批量数据(一维数组和二维数组)

前言:在前面学习的程序中使用的变量都属于基本类型&#xff0c;例如整型、字符型、浮点型数据&#xff0c;这些都是简单的数据类型。对于简单的问题&#xff0c;使用这些简单的数据类型就可以了。但是对于有些需要处理的数据&#xff0c;只用以上简单的数据类型是不够的&#x…...

WPF中, 如何将控件的触发事件绑定到ViewModel

在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做? 带闪电符号的触发事件 实现viewModel绑定前端触发事件的…...

解决Qt msvc编译器 中文显示乱码问题

第一步&#xff1a;代码文件选择用utf8编码带bom。第二步&#xff1a;在有中文汉字的代码文件顶部加一行&#xff08;一般是cpp文件&#xff09; #pragma execution_character_set(“utf-8”) 可以考虑放在head.h中&#xff0c;然后需要的地方就引入head头文件就行&#xff0c;…...

JAVA面经整理(7)

一)什么是AQS&#xff1f; 1)AQS也被称之为是抽象同步队列&#xff0c;它是JUC包底下的多个组件的底层实现&#xff0c;Lock&#xff0c;CountDownLatch和Semphore底层都使用到了AQS AQS的核心思想就是给予一个等待队列和同步状态来实现的&#xff0c;它的内部使用一个先进先出…...

CentOS7使用技巧

1、防火墙相关 关闭防火墙 systemctl stop firewalld 关闭防火墙开机自启 systemctl disable firewalld.service 查看防火墙状态 systemctl status firewalld...

Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法

论文题目&#xff1a;Knowledge graph-enhanced molecular contrastive learning with functional prompt 论文链接&#xff1a;https://doi.org/10.1038/s42256-023-00654-0 项目地址&#xff1a;GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence…...

CppCheck静态代码检查工具教程【Windows和Linux端】

目录 1、背景 2、特性介绍 2.1、检查结果 2.2、检查范围 2.3、支持的检查规则&#xff08;列举一些&#xff09;: 2.4、自定义规则 3、linux 端 4、windows 端 1、背景 最近调研了几款 c/c 代码静态检查工具&#xff0c;包括 cppcheck、cpplint、cppdepend、splint、ts…...

W25Q128芯片手册精读

文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…...

QT商业播放器

QT商业播放器 总体架构图 架构优点&#xff1a;解耦&#xff0c;采用生产者消费者设计模式&#xff0c;各个线程各司其职&#xff0c;通过消息队列高效协作 这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器, 项目有5部分构成&#xff1a; 前端QT用户界面 后端是集成了…...

Python的函数

近期遇到了一个没怎么看懂的Python函数的形式。 def twoSum(self, nums: List[int], target: int) -> List[int]: 后来上网查了资料。...

【物联网】STM32的中断机制不清楚?看这篇文章就足够了

在嵌入式系统中&#xff0c;中断是一种重要的机制&#xff0c;用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器&#xff0c;可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…...

深入剖析红黑树:优雅地平衡二叉搜索树

目录 一.红黑树的概念二.插入操作三.与AVL树的比较 一.红黑树的概念 在之前的学习中&#xff0c;我们了解了二叉搜索平衡树&#xff0c;AVL树通过控制每个结点中的平衡因子的绝对值不超过1&#xff0c;实现了一个高性能的树。而相较于AVL的高度平衡&#xff0c;红黑树觉得AVL为…...

最牛的html5网站建设/电脑系统优化工具

作业代码地址&#xff1a;点我 1.分析数据 训练集 列是时间&#xff0c;一共24列&#xff0c;是每天的24小时 行是检测的特征值&#xff0c;每次会检测18个特征值&#xff0c;故每18行是一天的数据 一个月20天&#xff0c;一年12个月&#xff0c;所以一共18*20*12行的数据 …...

怎么申请建立个人免费网站/查询网

CSGO的官方服务器是有排位等级制度存在的&#xff0c;让同等级的玩家共同游戏。那么csgo官匹隐藏分怎么看 ?下面小编就为大家带来官匹段位升级机制。等级01 Silver I 白银—级等级02 Silver II 白银二级等级03 Silver III 白银三级等级04 Silver IV 白银四级等级05 Silver Eli…...

布吉商城网站建设基本流程/企业seo如何优化

场景介绍app 里有一个有一个UITabBarController&#xff0c;在进入UITabBarController之前要验证用户是否已经登陆&#xff0c;如果没有登陆就弹出一个对话框&#xff0c;让用户输入登陆信息。实现方式1.在appDelegate。h里声明一个变量&#xff0c;用来绑定UITableController&…...

做笑话网站赚钱吗/友情链接购买网站

欢迎来到containerd的v1.1.6版本&#xff01; 这是containerd 1.1版本的第六个补丁版本。这个发布专门跟新了runc以修复CVE-2019-5736容器逃逸漏洞。几个CRI修复也包括在内此版本并列在下面。 运行引擎 Update runc to 6635b4f0c6af3810594d2770f662f34ddc15b40d to fix CVE-20…...

毕业设计答辩网站开发原理/关键词优化有哪些作用

点击上方蓝字关注我们之前正运动技术与大家分享了&#xff0c;运动控制器的固件升级、ZBasic程序开发、ZPLC程序开发、与触摸屏通讯和输入/输出IO的应用、运动控制器数据与存储的应用、运动控制器ZCAN、EtherCAT总线的使用等。今天&#xff0c;我们来讲解一下正运动技术运动控制…...

网站建设涉及和描述的一些问题/自媒体培训

题目传送门 大致题意&#xff1a; 输入测试用例个数T&#xff0c;输入点的个数n&#xff08;n为偶数&#xff09;&#xff0c;再分别输入n个不同的点的坐标&#xff0c;要求输出四个整数x1,y1,x2,y2,表示有一条经过点&#xff08;x1,y1),(x2,y2)的直线将该二维平面内的点分成点…...