【算法】红黑树

news2024/9/28 13:15:24

一、红黑树介绍

红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。

红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。

红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。

红黑树的每个红色结点的两个子结点都是黑色,从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

以上信息仅供参考,建议查阅专业书籍或者咨询专业人士了解更多信息。

二、红黑树在什么情况下会变得不平衡

红黑树在以下情况下会变得不平衡:

  1. 插入操作:当插入一个新的节点时,如果插入后的树不再满足红黑树的定义,那么树就会变得不平衡。例如,新插入的节点颜色为红色,而它的父节点颜色也为红色,这就会违反红黑树的定义,导致树变得不平衡。
  2. 删除操作:当删除一个节点时,如果删除后的树不再满足红黑树的定义,那么树也会变得不平衡。例如,当删除一个红色节点后,其父节点也必须为红色,但如果其父节点也是红色,那么就会违反红黑树的定义,导致树变得不平衡。

为了保持红黑树的平衡性,需要在插入和删除操作时进行一些特定的调整。这些调整包括重新着色节点和重新排列树结构,以确保红黑树的平衡性得到维护。

三、红黑树的定义是什么

红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构。它是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。

红黑树满足以下性质:

  1. 每个节点要么是红色,要么是黑色。
  2. 根节点是黑色。
  3. 每个叶节点(NIL节点,空节点)是黑色。
  4. 如果一个节点是红色的,则它的两个子节点都是黑色。
  5. 从任一节点到其每个叶节点的所有路径都包含相同数目的黑色节点。

以上信息仅供参考,建议查阅专业书籍或者咨询专业人士了解更多信息。

四、红黑树和AVL树有哪些区别

红黑树和AVL树的区别主要体现在以下几个方面:

  1. 平衡的实现机制:红黑树通过颜色和旋转来实现平衡,而AVL树则通过左右子树的高度差来决定旋转。
  2. 插入效率:红黑树在插入时,由于它只要求部分地达到平衡要求,所以其旋转次数比AVL树要少,因此插入效率更高。
  3. 统计性能:红黑树能够以O(log2n)的时间复杂度进行搜索、插入、删除操作,而AVL树的性能与其应用场景有关,在查找效率上通常较高。

以上区别仅供参考,建议查阅专业书籍或者咨询专业人士了解更多信息。

五、红黑树的优缺点

红黑树的优点主要包括:

  1. 查找、插入和删除操作的平均和最坏情况时间复杂度都是 O(log n),这使得红黑树在大型数据集上的性能非常好。
  2. 红黑树的平衡性使得它对于一些动态插入、删除元素的应用场景非常适合。
  3. 红黑树在应用中非常广泛,常被用于各种高性能的数据结构库,例如 STL 中的 set 和 map。

红黑树的缺点主要包括:

  1. 相比于其他数据结构,红黑树的实现比较复杂,需要维护节点的颜色和平衡。
  2. 在进行大量插入和删除操作的情况下,可能会造成频繁的树重构,影响性能。
  3. 红黑树的实现需要额外的空间来存储颜色信息,这意味着相对于其他数据结构,红黑树的空间占用率可能会更高。

总的来说,红黑树是一种高效、自平衡的数据结构,特别适合在需要频繁进行动态插入和删除操作的场景中使用,例如实现高性能的集合和映射。但是在一些空间受限的场景中,可能会有更好的选择。

六、举个例子

以下是一个红黑树的例子:

假设我们有一个红黑树,其中包含了整数1到11,按照从小到大的顺序插入。在插入过程中,我们需要遵守红黑树的定义和性质,通过旋转和重新着色来保持树的平衡。

插入数字1时,因为树为空,所以直接创建一个黑色的根节点1。

接着插入数字2,因为2比1大,所以将2作为1的右子节点,并将其颜色设置为红色。此时树仍然满足红黑树的定义。

然后插入数字3,因为3比2大,所以将3作为2的右子节点,并将其颜色设置为红色。此时,节点2和节点3都是红色,违反了红黑树的定义。为了解决这个问题,我们需要进行旋转和重新着色操作,将节点2变为黑色,节点1变为红色,然后对节点1进行右旋操作。此时树重新恢复平衡。

接下来继续插入数字4到11,每次插入时都根据红黑树的定义进行相应的调整,包括旋转和重新着色操作。最终得到的红黑树就是一个平衡的二叉查找树,其中包含了数字1到11。

这个例子展示了红黑树在插入过程中的自平衡特性,通过旋转和重新着色操作来保持树的平衡性。这种平衡性确保了红黑树在查找、插入和删除操作上的高效性能。

七、红黑树为什么可以保持平衡

红黑树之所以可以保持平衡,是因为它遵守了红黑树的定义和性质。

首先,红黑树是一种平衡的二叉查找树,它的每个节点要么是红色,要么是黑色。在插入和删除操作中,红黑树通过旋转和染色来保持平衡。

其次,红黑树的核心操作是旋转和染色。旋转操作分为左旋和右旋,它们可以帮助恢复树的平衡性。染色操作则是通过改变节点的颜色来保持红黑树的性质。

在插入操作中,如果插入后的树不再满足红黑树的定义,就需要进行旋转和染色操作来恢复平衡。同样地,在删除操作中,如果删除后的树不再满足红黑树的定义,也需要进行旋转和染色操作来恢复平衡。

最后,红黑树的平衡性是通过颜色和旋转来实现的。每个节点都带有颜色属性,并且每个红色节点都必须有两个黑色的子节点(或空子节点)。这种平衡性保证了从根节点到每个叶节点的所有路径都包含相同数目的黑色节点,从而确保了查找、插入和删除操作的效率。

综上所述,红黑树通过遵守红黑树的定义和性质,通过旋转和染色操作来保持平衡,从而实现了高效的查找、插入和删除操作。

八、红黑树的实现原理是什么

红黑树的实现原理是基于二叉查找树,并通过引入额外的颜色和旋转操作来保持树的平衡。

首先,红黑树是一种自平衡的二叉查找树,它满足二叉查找树的性质,即对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,右子树中的所有节点的值都大于该节点的值。

为了保持平衡,红黑树引入了节点颜色的概念,每个节点都有一个颜色属性,可以是红色或黑色。同时,红黑树还满足以下性质:

  1. 节点是红色或黑色。
  2. 根节点是黑色。
  3. 每个叶节点(NIL节点,空节点)是黑色。
  4. 如果一个节点是红色的,则它的两个子节点都是黑色。
  5. 从任一节点到其每个叶节点的所有路径都包含相同数目的黑色节点。

在插入操作中,当插入一个新的节点时,红黑树会按照二叉查找树的规则进行插入,并将新插入的节点颜色设置为红色。然后,根据红黑树的性质进行调整,包括旋转和重新着色操作,以确保树仍然满足红黑树的定义。

在删除操作中,红黑树会先按照二叉查找树的规则进行删除,然后进行相应的调整来恢复平衡。这可能包括旋转和重新着色操作。

通过遵守这些规则和性质,红黑树能够在插入和删除操作时保持平衡,从而实现高效的查找、插入和删除操作。这种平衡性确保了红黑树在大型数据集上的性能非常好,使其成为许多数据结构库中的首选数据结构之一。

九、一个红黑树C语言用例

#include <stdio.h>  
#include <stdlib.h>  
  
// 定义红黑树节点结构体  
typedef struct node {  
    int data;           // 节点存储的数据  
    int color;          // 节点颜色,0表示黑色,1表示红色  
    struct node *left;  // 左子节点  
    struct node *right; // 右子节点  
} Node;  
  
// 创建新节点  
Node* create_node(int data) {  
    Node *new_node = (Node*)malloc(sizeof(Node));  
    new_node->data = data;  
    new_node->color = 0; // 初始化为黑色  
    new_node->left = NULL;  
    new_node->right = NULL;  
    return new_node;  
}  
  
// 插入新节点  
Node* insert(Node *root, int data) {  
    if (root == NULL) {  
        return create_node(data); // 如果树为空,创建新节点作为根节点  
    }  
  
    if (data < root->data) {  
        root->left = insert(root->left, data); // 在左子树中插入新节点  
    } else if (data > root->data) {  
        root->right = insert(root->right, data); // 在右子树中插入新节点  
    } else { // 如果要插入的数据已经存在,返回NULL  
        return NULL;  
    }  
  
    // 如果插入后违反了红黑树的性质,需要进行调整  
    if (is_red(root->right)) { // 如果右子节点是红色,需要进行左旋操作  
        root = rotate_left(root);  
    }  
    if (is_red(root->left) && !is_red(root->right)) { // 如果左子节点是红色,右子节点是黑色,需要进行右旋操作  
        root = rotate_right(root);  
    }  
    if (is_red(root->left) && is_red(root->right)) { // 如果左右子节点都是红色,需要进行染色操作  
        flip_colors(root);  
    }  
  
    return root; // 返回根节点指针,用于后续操作  
}  
  
// 判断当前节点是否为红色  
int is_red(Node *node) {  
    if (node == NULL) { // 如果节点为空,返回0(黑色)  
        return 0;  
    } else { // 如果节点不为空,判断颜色是否为红色  
        return node->color == 1;  
    }  
}  
  
// 进行左旋操作,将当前节点旋转到左边,返回新的根节点指针  
Node* rotate_left(Node *z) {  
    Node *y = z->right; // 保存右子节点指针,用于后续操作  
    z->right = y->left; // 将右子节点的左子节点设为当前节点的右子节点(作为旋转后新的左子节点)  
    y->left = z; // 将当前节点设为旋转后右子节点的左子节点(作为旋转后新的右子节点)  
    z->color = y->color; // 将当前节点的颜色设为旋转后右子节点的颜色(用于后续染色操作)  
    y->color = 1 - z->color; // 将旋转后右子节点的颜色设为当前节点的颜色(用于后续染色操作)  
    return y; // 返回新的根节点指针(旋转后的根节点)  
}

十、红黑树的插入操作和删除操作的时间复杂度是多少

插入一个节点的时间复杂度是O(log n),因为红黑树是一种平衡二叉查找树,它可以在O(log n)时间内做查找、插入和删除,这里的n是树中元素的数目。在插入过程中,如果插入的节点不是根节点,那么它会根据红黑树的性质进行旋转和染色操作,以保证树的平衡性。这些操作的时间复杂度都是O(log n)。因此,插入一个节点的时间复杂度也是O(log n)。

十一、红黑树和其他BTS树的区别是什么

红黑树和B树在多个方面存在差异。

  1. 平衡性:红黑树是一种自平衡二叉查找树,通过旋转和染色操作保持树的平衡性,从而确保高效的查找、插入和删除操作。而B树是一种多路搜索树,它的平衡性没有红黑树严格,但具有更强的鲁棒性。
  2. 节点颜色:红黑树的节点具有颜色属性,红色和黑色两种。而B树的节点没有颜色属性。
  3. 查找效率:由于红黑树的平衡性更好,其查找效率通常比B树更高。在红黑树中,查找的时间复杂度为O(log n),而在B树中,查找的时间复杂度为O(log n + k),其中k为关键字数量。
  4. 应用场景:红黑树常用于实现关联数组、动态集合和查找表等数据结构。而B树则更常用于数据库和文件系统中,因为B树的节点可以包含多个关键字和子节点,能够更有效地利用磁盘等外部存储设备的特性。

综上所述,红黑树和B树在平衡性、节点颜色、查找效率和应用场景等方面存在差异。

十二、哪种树更适合于数据索引

红黑树和B树都可以用于数据索引,但它们适用于不同的场景。

红黑树是一种自平衡的二叉查找树,它可以确保查找、插入和删除操作的效率。由于红黑树的平衡性较好,它在处理需要频繁进行查找和更新操作的数据集时表现较好。例如,关联数组、动态集合和查找表等数据结构通常使用红黑树来实现。

B树是一种多路搜索树,它适用于磁盘或其他辅助存储设备上的索引和文件系统。B树的节点可以包含多个关键字和子节点,这使得它更适合于处理大型数据集,特别是在磁盘读写操作方面具有较高的效率。因此,B树在数据库和文件系统中被广泛使用。

总的来说,如果需要频繁进行查找和更新操作,且数据集较小,可以使用红黑树作为索引。如果需要处理大型数据集,特别是在磁盘读写方面具有较高效率的场景下,可以使用B树作为索引。

十三、那在实际应用中,哪一种更适合

在实际应用中,选择红黑树还是B树作为索引取决于具体的应用场景和需求。

如果需要频繁进行查找和更新操作,且数据集较小,红黑树是一种很好的选择。它具有较好的平衡性和查找效率,可以快速定位目标数据,并且适用于需要关联数组、动态集合和查找表等数据结构的情况。

如果需要处理大型数据集,特别是在磁盘读写操作方面具有较高效率的场景下,B树是更好的选择。B树的节点可以包含多个关键字和子节点,使得它更适合于处理大型数据集,并且适用于数据库和文件系统等需要高效磁盘访问的应用。

总之,需要根据具体的应用场景和需求来选择合适的索引结构。在某些情况下,红黑树可能更适合,而在其他情况下,B树可能更为合适。

十四、一个红黑树C语言应用

创建一个红黑树涉及到多个概念和函数实现累积起来比较复杂,至关重要的是实现树节点插入、删除、旋转和重新着色的操作。下面为您简要介绍如何用C语言创建一个基本的红黑树,并展示其中的一些核心功能。此红黑树的实现仅用于学习目的,没有经过充分测试和优化。

下面是一个简单的C语言红黑树实现的框架:

#include <stdio.h>
#include <stdlib.h>

typedef enum { RED, BLACK } Color;

typedef struct Node {
    int data;
    Color color;
    struct Node *left, *right, *parent;
} Node;

typedef struct RBTree {
    Node *root;
} RBTree;

Node* createNode(int data) {
    Node *newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->color = RED;
    newNode->left = NULL;
    newNode->right = NULL;
    newNode->parent = NULL;
    return newNode;
}

RBTree* createRBTree() {
    RBTree *tree = (RBTree*)malloc(sizeof(RBTree));
    tree->root = NULL;
    return tree;
}

// 以下是红黑树操作的伪代码占位
void leftRotate(RBTree *tree, Node *x) {
    // 执行左旋转操作
}

void rightRotate(RBTree *tree, Node *y) {
    // 执行右旋转操作
}

void fixViolation(RBTree *tree, Node *newNode) {
    // 修复红黑树属性的操作
}

void insert(RBTree *tree, int data) {
    Node *newNode = createNode(data);
    // 执行常规的BST插入操作
    // 判断并修复任何可能违反红黑树性质的操作
    fixViolation(tree, newNode);
}

// 主函数,用于测试红黑树
int main() {
    RBTree* tree = createRBTree();

    insert(tree, 10);
    insert(tree, 20);
    insert(tree, 30);
    // ...添加更多节点

    // 执行其他操作,比如删除、查找等

    // 记得释放红黑树所使用的内存
    // destroyRBTree(tree);

    return 0;
}

上面的代码展示了一个非常简略的红黑树创建和插入基础的框架。`leftRotate` 和 rightRotate 函数用于调整树结构以维持红黑树特性。`fixViolation` 函数则用于检查并修正可能出现的违反红黑树性质的情况。

要实现一个完整和健壮的红黑树,你需要补完上述示例中缺失的部分,特别是以下几个重要的部分:

1. 实现 leftRotate 和 rightRotate 函数来执行旋转操作。
2. 函数 fixViolation 中实现修复红黑树属性的具体逻辑(处理双红色违规的四种情况:外侧插入、内侧插入、双侧红色和根节点)。
3. 实现搜索、删除节点以及对应的修复函数。

4. 实现内存释放的函数来避免内存泄漏。

注意,这只是一个框架示例代码,真正实现红黑树涉及到许多细节,包括对多种边界条件的处理,以确保树始终维持平衡。因此,如果你需要一个完整的红黑树实现,可以考虑查找完整的图书或者在线资源,或者直接使用现成的库。 

十五、相关链接

【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树-CSDN博客

菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t-CSDN博客

漫画算法:什么是红黑树?(适合初学红黑树小白简单易懂)_红白树 举例-CSDN博客

C语言-B树(B-树)的完整实现_b-树 c 实现-CSDN博客

rbtree 红黑树的 C 语言实现-CSDN博客

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

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

相关文章

【C语言】SCU安全项目2-BufBomb

目录 关键代码解读&#xff1a; getxs() getbuf() test() 核心思路 具体操作1 具体操作2 前段时间忙于强网杯、英语4级和一些其他支线&#xff0c;有点摸不清头绪了&#xff0c;特别是qwb只有一个输出&#xff0c;太过坐牢&#xff0c;决定这个安全项目做完后就继续投身…

LED恒流调节器FP7126:引领LED照明和调光的新时代(调光电源、汽车大灯)

目录 一、FP7126概述 二、FP7126功能 三、应用领域 随着科技的进步&#xff0c;LED照明成为了当代照明产业的主力军。而在LED照明的核心技术中&#xff0c;恒流调节器是不可或缺的组成部分。今天&#xff0c;我将为大家介绍一款重要的恒流调节器FP7126&#xff0c;适用于LED…

useConsole的封装,vue,react,htmlscript标签,通用

之前用了接近hack的方式实现了console的封装&#xff0c;目标是获取console.log函数的执行&#xff08;调用栈所在位置&#xff09;所在的代码行数。 例如以下代码&#xff0c;执行window.mylog(1)时候&#xff0c;console.log实际是在匿名的箭头函数()>{//这里执行的} con…

基础知识回顾:安装 NGINX 开源版和 NGINX Plus

原文作者&#xff1a;Robert Haynes of F5 原文链接&#xff1a;基础知识回顾&#xff1a;安装 NGINX 开源版和 NGINX Plus 转载来源&#xff1a;NGINX 中文官网 NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.cn 如今&#xff0c;NGINX 仍然是全球最受欢迎的 web 服务器…

【nice-slam】基于RGB-D类型SLAM的定位与重建(史上最详细nice-slam资料汇总)

【NICE-SLAM】基于RGB-D类型SLAM的定位与重建 1. 总结2. 论文2. 1 算法核心流程小姐2.2 论文摘要2.3 Dataset result2.3.1 Replica Dataset result2.3.2 ScanNet Dataset result2.3.3 Multi-room Apartment result2.3.4 Co-fusion Dataset (Robustness to Dynamic Objects) res…

Leetcode—2828.判别首字母缩略词【简单】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—2828.判别首字母缩略词 实现代码 class Solution { public:bool isAcronym(vector<string>& words, string s) {int i 0;int len1 words.size();int len2 s.size();if(len1 ! len2) {return false;}for(a…

Achronix提供由FPGA赋能的智能网卡(SmartNIC)解决方案来打破智能网络性能极限

作者&#xff1a;Achronix 随着人工智能/机器学习&#xff08;AI/ML&#xff09;和其他复杂的、以数据为中心的工作负载被广泛部署&#xff0c;市场对高性能计算的需求持续飙升&#xff0c;对高性能网络的需求也呈指数级增长。高性能计算曾经是超级计算机这样一个孤立的领域&a…

使用Python编写简单网络爬虫实例:爬取图片

&#x1f34e;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 ​编辑 简介 步骤 1. 安装依赖库 2. 创建目录 3. 发送HTTP请求并解析页面 4. 查找图片标签并下载图片 注意事项 结语 我的其他博客 简介 网络爬虫是一种…

CSP-S2019提高组day1-T2:括号树

题目链接 [CSP-S2019] 括号树 题目描述 本题中合法括号串的定义如下&#xff1a; () 是合法括号串。如果 A 是合法括号串&#xff0c;则 (A) 是合法括号串。如果 A&#xff0c;B 是合法括号串&#xff0c;则 AB 是合法括号串。 本题中子串与不同的子串的定义如下&#xff…

vscode颜色主题插件one dark Pro安装

1.点击扩展图标→搜索“one dark Pro”→第一个点击安装 2.安装成功后&#xff0c;不要忘了点击设置颜色主题 3.看下效果&#xff1a;

【日积月累】sql执行语句优化

目录 sql执行语句优化 1.前言2.sql执行语句优化2.1语句注意类1.避免使用 * 查询(全表查询)2.限制查询返回数3.小数据集驱动大数据集4.group by 优化5.尽量使用数值替代字符串类型6.使用varchar代替char7.批量插入性能提升 3.误操作导致索引失效1.避免查询条件字符串没有加2.避…

JVS低代码和智能BI(自助式数据分析)12.19更新功能说明

低代码更新功能 新增: 1、表单组件&#xff1a;标题、分割线、按钮等非数据组件增加小程序端隐藏设置&#xff1b; 隐藏设置允许开发者对表单组件中的非数据组件进行隐藏&#xff0c;例如&#xff0c;可能只想展示表单的部分内容&#xff0c;或者希望在特定条件下显示或隐藏…

HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】

一.HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】 1.1 项目背景 HarmonyOS(鸿蒙操作系统)是华为公司推出的一种分布式操作系统。它被设计为一种全场景、全连接的操作系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能…

HamronyOS 自动化测试框架使用指南

概述 为支撑 HarmonyOS 操作系统的自动化测试活动开展&#xff0c;我们提供了支持 JS/TS 语言的单元及 UI 测试框架&#xff0c;支持开发者针对应用接口进行单元测试&#xff0c;并且可基于 UI 操作进行 UI 自动化脚本的编写。 本指南重点介绍自动化测试框架的主要功能&#x…

grafana基本使用

一、安装grafana 1.下载 官网下载地址&#xff1a; https://grafana.com/grafana/download官网包的下载地址&#xff1a; yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.2-1.x86_64.rpm官网下载速度非常慢&#xff0c;这里选择清华大…

【单调栈】LeetCode1776:车队

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 题目 在一条单车道上有 n 辆车&#xff0c;它们朝着同样的方向行驶。给你一个长度为 n 的数组 cars &#xff0c;其中 cars[i] [positioni, speedi] &#xff0c;它表示&#xff1a; positi…

markdown文档主题颜色修改

目录 1、选择任意想选择的markdown文档主题css文件&#xff1a; 2、修改背景颜色 1、选择任意想选择的markdown文档主题css文件&#xff1a; 使用工具Typora文件主题路径&#xff1a; C:\Users\AppData\Roaming\Typora\themes&#xff0c;此处我这边就是copy了xydark的css文…

【LeetCode刷题笔记(8-2)】【Python】【接雨水】【单调栈】【困难】

文章目录 引言接雨水题目描述提示 解决方案2&#xff1a;【单调栈】结束语 【接雨水】 【LeetCode刷题笔记&#xff08;8-1&#xff09;】【Python】【接雨水】【动态规划】【困难】 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这…

总线地址/物理地址/虚拟地址

参考&#xff1a; 总线地址、物理地址、虚拟地址-CSDN博客 内存管理&#xff1a;物理地址、虚拟地址、逻辑地址_虚拟地址和物理地址-CSDN博客 总线地址 总线地址和地址总线是一个概念。地址总线 (Address Bus&#xff1b;又称&#xff1a;位址总线) 属于一种电脑总线 &#xf…

React和umi搭建项目的操作步骤

​​​​​​一、react脚手架新建项目 (1.1)、命令行 前提&#xff1a;react ES2015,nodejs v8 npx create-react-app myReactName //2022年v16以下版本 myReactName(自定义项目名) react中文官网&#xff0c;快速上手&#xff1a;react中文官网 react框架&#xff0c;…