数据结构——常见数据结构和应用

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载) 关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系 阅读详情

数据结构是计算机科学中的一个基本概念,它涉及数据的组织、管理和存储方式。以下是对数据结构的详细解释:

一、定义与组成

  1. 数据:描述事物的符号记录,是计算机程序的输入和输出。它可以以多种形式存在,如数字、文字、图像、声音等。数据是信息的载体,具有可识别性、可存储性、可处理性和可传输性等特点。
  2. 数据对象:必须由软件理解的复合信息表示。它可以是外部实体、事物、偶发事件或事件、角色、组织单位、地点或结构等的抽象表示。数据对象具有独立性、意义性和封装性等特点,只封装数据,没有对数据的操作。
  3. 数据元素:数据的基本单位,也叫做结点或记录。在计算机程序中,数据元素通常作为一个整体进行考虑和处理。数据元素由数据项组成,数据项是构成数据元素的不可分割的最小单位。
  4. 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。这些关系定义了数据元素之间的逻辑结构和存储结构,以及可以对这些数据元素执行的操作。

二、逻辑结构

逻辑结构与数据的存储无关,独立于计算机,是从具体问题抽象出来的数学模型。常见的逻辑结构包括:

  1. 集合:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系。
  2. 线性结构:数据结构中的元素存在一对一的相互关系。典型的线性表有链表、栈和队列。它们共同的特点就是数据之间的线性关系,除了头结点和尾结点之外,每个结点都有唯一的前驱和唯一的后继,也就是所谓的一对一的关系。
  3. 树形结构:数据结构中的元素存在一对多的相互关系。每个节点有0个或多个子节点,没有父节点的节点称为根节点,每一个非根节点有且只有一个父节点。除了根节点外,每个子节点可以分为多个不相交的子树。
  4. 图形结构:数据结构中的元素存在多对多的相互关系。

三、存储结构

存储结构依赖于计算机,是数据的物理视图。常见的存储结构有:

  1. 顺序存储:用一段物理地址连续的存储单元依次存储数据元素的线性结构。特点为空间连续,支持随机访问,但中间或前面部分的插入删除时间复杂度较高,且增容的代价比较大。
  2. 链式存储:一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。包括无头单向非循环链表、带头双向循环链表等。特点为插入和删除操作的时间复杂度为O(1),但需要额外的存储空间来保存指针;查找元素需要遍历整个链表,耗时较长。
  3. 索引存储:通过索引表来存储数据元素。索引表由若干索引项组成,每个索引项至少包含两个内容:关键字和该关键字所在数据的物理地址。
  4. 哈希存储:根据关键码值(key-value)直接访问的数据结构。特点为查找、插入和删除操作的时间复杂度通常为O(1),但需要额外的存储空间来保存哈希函数和哈希表。

四、运算

运算是定义在数据的逻辑结构上的一组操作,用于对数据元素进行处理以实现特定功能。每种数据结构都有一个运算的集合,如搜索、插入、删除、更新、排序等。

五、分类

数据结构可以根据其逻辑结构和存储结构的不同进行分类,例如:

  1. 线性数据结构:如数组、链表(单链表、双向链表、循环链表)、栈和队列()等。
  2. 非线性数据结构:如树(包括二叉树、平衡二叉树、红黑树等)、图(包括有向图和无向图)和堆(包括最大堆和最小堆)等。

六、常见数据结构及其应用

  1. 数组:用于存储和管理有序集合的数据,如列表。
    public class ArrayExample {
        public static void main(String[] args) {
            int[] array = {1, 2, 3, 4, 5};
            
            // 访问数组元素
            System.out.println(array[0]); // 输出 1
            
            // 修改数组元素
            array[0] = 10;
            System.out.println(array[0]); // 输出 10
        }
    }

  2. 链表:同样用于存储和管理有序集合的数据,如队列、栈等。链表允许在任意位置进行插入和删除操作,具有灵活性。
    class Node {
        int data;
        Node next;
        
        Node(int data) {
            this.data = data;
            this.next = null;
        }
    }
    
    public class LinkedListExample {
        Node head;
        
        public void add(int data) {
            Node newNode = new Node(data);
            if (head == null) {
                head = newNode;
            } else {
                Node temp = head;
                while (temp.next != null) {
                    temp = temp.next;
                }
                temp.next = newNode;
            }
        }
        
        public void printList() {
            Node temp = head;
            while (temp != null) {
                System.out.print(temp.data + " ");
                temp = temp.next;
            }
        }
        
        public static void main(String[] args) {
            LinkedListExample list = new LinkedListExample();
            list.add(1);
            list.add(2);
            list.add(3);
            list.printList(); // 输出 1 2 3
        }
    }

  3. 栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。特点为后进先出(LIFO),通常用于递归调用、函数调用栈等场景。
    public class StackExample {
        private int maxSize;
        private int[] stackArray;
        private int top;
        
        public StackExample(int size) {
            this.maxSize = size;
            this.stackArray = new int[maxSize];
            this.top = -1;
        }
        
        public void push(int value) {
            if (isFull()) {
                System.out.println("Stack is full");
                return;
            }
            stackArray[++top] = value;
        }
        
        public int pop() {
            if (isEmpty()) {
                throw new RuntimeException("Stack is empty");
            }
            return stackArray[top--];
        }
        
        public boolean isEmpty() {
            return (top == -1);
        }
        
        public boolean isFull() {
            return (top == maxSize - 1);
        }
        
        public static void main(String[] args) {
            StackExample stack = new StackExample(3);
            stack.push(1);
            stack.push(2);
            stack.push(3);
            System.out.println(stack.pop()); // 输出 3
            System.out.println(stack.pop()); // 输出 2
        }
    }

  4. 队列:一种先进先出的线性表,允许在一端进行插入操作(入队),在另一端进行删除操作(出队)。特点为先进先出(FIFO),常用于缓冲区、任务调度等场景。
    public class QueueExample {
        private int front, rear, size;
        private int capacity;
        private int[] queue;
        
        public QueueExample(int capacity) {
            this.capacity = capacity;
            this.front = this.size = 0;
            this.rear = capacity - 1;
            this.queue = new int[capacity];
        }
        
        private boolean isFull() {
            return size == capacity;
        }
        
        private boolean isEmpty() {
            return size == 0;
        }
        
        public void enqueue(int item) {
            if (isFull())
                return;
            rear = (rear + 1) % capacity;
            queue[rear] = item;
            size = size + 1;
        }
        
        public int dequeue() {
            int item = -1;
            if (isEmpty())
                return item;
            item = queue[front];
            front = (front + 1) % capacity;
            size = size - 1;
            return item;
        }
        
        public int front() {
            if (isEmpty())
                return -1;
            return queue[front];
        }
        
        public int rear() {
            if (isEmpty())
                return -1;
            return queue[rear];
        }
        
        public static void main(String[] args) {
            QueueExample queue = new QueueExample(5);
            
            queue.enqueue(10);
            queue.enqueue(20);
            queue.enqueue(30);
            queue.enqueue(40);
            
            System.out.println(queue.dequeue()); // 输出 10
            System.out.println(queue.front());   // 输出 20
            System.out.println(queue.rear());    // 输出 40
        }
    }

  5. 树:由n(n≥1)个有限节点组成的一个具有层次关系的集合。常用于表示层次结构,如文件系统、组织结构图等。
    class TreeNode {
        int data;
        TreeNode left, right;
        
        TreeNode(int item) {
            data = item;
            left = right = null;
        }
    }
    
    // 二叉树的基本操作(如插入、遍历等)需要额外实现

  6. 图:一系列顶点(元素)的集合,这些顶点通过一系列边连接起来组成图这种数据结构。顶点用圆圈表示,边就是这些圆圈之间的连线。图用于表示网络结构,如社交网络、交通网络等。
    import java.util.*;
    
    class Graph {
        private int V; // 顶点数
        private LinkedList<Integer> adj[]; // 邻接表
        
        // 构造函数
        Graph(int v) {
            V = v;
            adj = new LinkedList[v];
            for (int i = 0; i < v; ++i)
                adj[i] = new LinkedList();
        }
        
        // 添加边
        void addEdge(int v, int w) {
            adj[v].add(w); // 添加w到v的列表
        }
        
        // 打印图(用于调试)
        void printGraph() {
            for (int v = 0; v < V; ++v) {
                System.out.print("\n Adjacency list of vertex " + v);
                for (Integer n : adj[v])
                    System.out.print(" -> " + n);
                System.out.println();
            }
        }
        
        public static void main(String args[]) {
            Graph g1 = new Graph(5);
            
            g1.addEdge(0, 1);
            g1.addEdge(0, 4);
            g1.addEdge(1, 2);
            g1.addEdge(1, 3);
            g1.addEdge(1, 4);
            g1.addEdge(2, 3);
            g1.addEdge(3, 4);
            
            g1.printGraph();
        }
    }

  7. 堆:一种特殊的完全二叉树结构,分为最大堆和最小堆。最大堆中每个节点的值都大于或等于其子节点的值;最小堆中每个节点的值都小于或等于其子节点的值。常用于实现优先队列等场景。
    import java.util.Arrays;
    
    public class MaxHeap {
        private int[] heap;
        private int size;
        private int capacity;
    
        // 构造函数,初始化堆
        public MaxHeap(int capacity) {
            this.capacity = capacity;
            this.heap = new int[capacity];
            this.size = 0;
        }
    
        // 堆化一个数组以构建最大堆
        public MaxHeap(int[] array) {
            this.capacity = array.length;
            this.heap = new int[capacity];
            this.size = capacity;
            System.arraycopy(array, 0, heap, 0, capacity);
            for (int i = size / 2 - 1; i >= 0; i--) {
                heapifyDown(i);
            }
        }
    
        // 插入一个新元素
        public void insert(int value) {
            if (size == capacity) {
                throw new IllegalStateException("Heap is full");
            }
            heap[size] = value;
            size++;
            heapifyUp(size - 1);
        }
    
        // 获取堆顶元素(最大值)
        public int getMax() {
            if (size == 0) {
                throw new IllegalStateException("Heap is empty");
            }
            return heap[0];
        }
    
        // 移除堆顶元素
        public int extractMax() {
            if (size == 0) {
                throw new IllegalStateException("Heap is empty");
            }
            int maxValue = heap[0];
            heap[0] = heap[size - 1];
            size--;
            heapifyDown(0);
            return maxValue;
        }
    
        // 上滤操作,用于插入新元素后维护堆的性质
        private void heapifyUp(int index) {
            while (index > 0) {
                int parentIndex = (index - 1) / 2;
                if (heap[parentIndex] < heap[index]) {
                    swap(parentIndex, index);
                    index = parentIndex;
                } else {
                    break;
                }
            }
        }
    
        // 下滤操作,用于移除堆顶元素后维护堆的性质
        private void heapifyDown(int index) {
            int largest = index;
            int leftChild = 2 * index + 1;
            int rightChild = 2 * index + 2;
    
            if (leftChild < size && heap[leftChild] > heap[largest]) {
                largest = leftChild;
            }
    
            if (rightChild < size && heap[rightChild] > heap[largest]) {
                largest = rightChild;
            }
    
            if (largest != index) {
                swap(index, largest);
                heapifyDown(largest);
            }
        }
    
        // 交换堆中两个元素的位置
        private void swap(int index1, int index2) {
            int temp = heap[index1];
            heap[index1] = heap[index2];
            heap[index2] = temp;
        }
    
        // 打印堆的内容
        public void printHeap() {
            System.out.println(Arrays.toString(Arrays.copyOfRange(heap, 0, size)));
        }
    
        // 主方法,用于测试
        public static void main(String[] args) {
            MaxHeap maxHeap = new MaxHeap(10);
            maxHeap.insert(3);
            maxHeap.insert(1);
            maxHeap.insert(6);
            maxHeap.insert(5);
            maxHeap.insert(2);
            maxHeap.insert(4);
    
            maxHeap.printHeap(); // 输出堆的内容
    
            System.out.println("Max: " + maxHeap.getMax()); // 输出最大值
            System.out.println("After extracting max:");
            maxHeap.extractMax();
            maxHeap.printHeap(); // 输出移除最大值后的堆内容
        }
    }

  8. 散列表:也叫哈希表,是根据键和值(key和value)直接进行访问的数据结构。通过key和value来映射到集合中的一个位置,从而可以很快找到集合中的对应元素。常用于实现快速查找、缓存等场景。
    import java.util.HashMap;
    import java.util.Map;
    
    public class HashTableExample {
        public static void main(String[] args) {
            // 创建一个HashMap实例
            Map<String, Integer> hashMap = new HashMap<>();
    
            // 插入键值对
            hashMap.put("apple", 1);
            hashMap.put("banana", 2);
            hashMap.put("orange", 3);
    
            // 访问元素
            System.out.println("Value for key 'apple': " + hashMap.get("apple"));
    
            // 检查键是否存在
            if (hashMap.containsKey("banana")) {
                System.out.println("Key 'banana' exists in the map.");
            }
    
            // 移除键值对
            hashMap.remove("orange");
    
            // 遍历HashMap
            for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
                System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
            }
        }
    }

STM32H7串口DMA避坑指南:如何解决RT-Thread默认驱动不支持的问题 本文针对STM32H7在RT-Thread系统中启用串口DMA时遇到的驱动不支持问题,提供了详细的解决方案。通过分析问题根源,指导修改驱动代码以适配H7的DMA Stream架构,并调整内存配置确保DMA可访问性,最终实现稳定高效的串口DMA通信。 阅读详情

相关推荐

Excel COUNTIF函数精确统计全解析:从模糊匹配到精准计数

在数据处理与办公自动化领域,条件计数是数据分析的基础操作,其核心原理在于对特定范围内满足设定条件的单元格进行识别与汇总。Excel中的COUNTIF函数是实现这一功能的常用工具,它通过文本匹配逻辑与通配符机制来执行条件判断。然而,其默认的模糊匹配行为常导致统计结果偏离预期,这正是精确统计的技术价值所在——确保数据汇总的准确性与可靠性,直接影响业务报告、薪酬核算、销售分析等应用场景的决策质量。本文聚焦COUNTIF函数的精确匹配技巧,深入剖析通配符(如星号*和问号?)的转义使用(通过波浪号~),并针对大小写敏

weixin_29040367的博客 352

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等; 1.2 数据结构的分类 1.2.1 排列方式 1)集合 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2)线性结构 线性

緑水長流*z 24万+

瑞芯微RK3576上手实测:8nm新U配6TOPS NPU,做AIoT项目选它还是RK3588/RK3568?

本文深度评测瑞芯微RK3576芯片在中高端AIoT项目中的表现,对比RK3588和RK3568的性能差异。RK3576采用8nm工艺,配备6TOPS NPU,在解码能力、AI推理效率和功耗控制方面表现均衡,是中端项目的黄金选择。实测数据显示其在多路视频解码和AI加速性能上优势明显,特别适合智能摄像头和工业HMI设备。

weixin_42627853的博客 716

数据结构(全)

线性结构, 树形结构, 图结构, 排序, 查找, 数据结构, 算法

s6664的博客 11万+

2.4G射频微带线阻抗匹配设计实战(WiFi/BLE)

本文深入探讨了2.4G射频微带线阻抗匹配在WiFi/BLE产品开发中的关键作用。文章详细解析了共面波导微带线结构,提供了基于SI9000工具的阻抗计算实战指南,并总结了不同PCB板厚下的设计参数对照表。同时,文章分享了PCB布局布线、与板厂沟通以及天线匹配调试等核心避坑经验,旨在帮助硬件工程师构建从射频芯片到天线的稳定高效传输通道。

j0k1l2m3n的博客 367

手把手教你为Multisim 14.0创建自定义元件:以SPICE模型导入为例

本文详细介绍了如何在Multisim 14.0中创建自定义元件,重点讲解了SPICE模型的导入与应用。通过系统性的步骤指南,包括元件符号设计、引脚定义、SPICE模型关联及验证测试,帮助工程师高效扩展元件库,满足特定设计需求。文章还提供了故障排除和性能优化的实用技巧,确保自定义元件在实际仿真中的可靠性。

weixin_42531163的博客 284

【数据结构】(一)数据结构入门

文章目录数据结构入门1 数据结构基础知识2 算法复杂度 数据结构入门 数据结构+算法=程序数据结构+算法=程序数据结构+算法=程序 1 数据结构基础知识 数据 指所有能输入到计算机中的描述客观事物的符号,包括文本、声音、图像、符号等。 数据元素 数据元素是数据的基本单位,也称节点或记录,如下图所示。 数据项 数据项表示有独立含义的数据最小单位,也称域。若干个数据项构成一个数据元素,数据项是不可分割的最小单位,如上图所示的“86”。 数据对象 数据对象是指相同特性的数据元素的集合,是数据的一个子集。 数据结

weixin_44378835的博客 1万+

全国充电站分布数据

CnOpenData推出的充电站数据覆盖全国34个省份的3万条数据,包含充电站名称、省份名称、省份代码、商圈、经纬度等地理信息以及商业类型、评分、消费等衍生信息,能为城市规划、环境科学、市场分析、技术发展和社会经济研究等多个领域提供宝贵的数据支持。

Sunny9qx的博客 4024

常见的数据结构总结(8种)

1. 顺序表(数组 Array)2. 链表 3. 栈(Stack)4. 队列(Queue)5. 树(Tree)6. 堆(Heap)7. 图(graph)8. 散列表(Hash)

m0_60416282的博客 2万+

Node-Red系列教程——NodeRed通过OPC UA读取数据并写入mysql

NodeRed通opcua读取西门子数据并存入mysql

鲸鱼姐的专栏 1万+

双目视觉实战:用Bouguet算法实现极线校正的完整代码解析

本文详细解析了Bouguet算法在双目视觉极线校正中的完整实现流程与性能调优技巧。通过旋转平分策略和基线对齐,Bouguet方法显著降低图像畸变并提升匹配精度,相比传统Hartley校正法平均重投影误差降低53%。文章涵盖从相机标定到OpenCV实战的全过程,并分享工业级调参策略,帮助开发者实现高精度立体视觉系统。

f9g0h的博客 264

【数据结构】八种常见数据结构介绍

数据结构是计算机存储、组织数据的方式。一种好的数据结构可以带来更高的运行或者存储效率。数据在内存中是呈线性排列的,但是我们可以使用指针等道具,构造出类似“树形”的复杂结构。下面介绍八个常见的数据结构。

非晚非晚的博客 6万+

Ollama系列---【ollama使用gpu运行大模型】

一、安装CudaToolkit 使用控制台命令查看当前显卡驱动中的cuda版本 nvidia-smi 二、下载CudaToolkit 注意:CudaToolkit版本要低于上面的显卡Cuda版本。 Cuda各版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive 下载好之后,一路下一步,一直默认即可。 如果安装到了自定义的位置,记得加环...

-少年-的博客 7982

常见的数据结构和应用场景

数据结构是计算机科学中的基础概念,用于组织和存储数据,以便能够高效地访问和修改。

AI大模型/Python/Java/MySQL技术栈,快来和我一起学习吧 ~ 1666

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

栈和队列是常见的数据结构,它们在不的应用场景中有着不同的用途

在队列中,新元素被添加到队列的末尾,而从队列中移除元素时,总是从队列的头部开始移除。在栈中,新元素被添加到栈的顶部,而从栈中移除元素时,总是从栈的顶部开始移除。类似于现实生活中排队等待的概念,队列中的元素按照插入的顺序排列,并且只能在队列的一端插入元素(称为队尾),在另一端删除元素(称为队头)。队列(Queue)是一种先进先出(FIFO)的数据结构,类似于我们日常生活中排队等待的场景。队列是一种常见的数据结构,它遵循先进先出(FIFO)的原则。栈和队列是常见的数据结构,它们在不的应用场景中有着不同的用途。

[Blog][Domain] programb.blog.youkuaiyun.com 1387

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

浅谈常见数据结构和算法的应用系列(一)

浅谈常见数据结构和算法的应用系列(一)

qq_41490913的博客 170

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Redis特性、应用场景和常见的数据结构

redis是用C语言开发的一个基于内存的、高性能key-value键值对的、开源nosql数据库。目前,redis的key是字符串类型的,但value支持多种数据类型:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sortedset),通过提供多种键值数据类型来适应不同场景下的存储需求。

智海观潮的博客 793

JavaScript中常见的数据结构和算法及其应用场景简介

在JavaScript编程中,数据结构和算法是必不可少的组成部分。本文将介绍JavaScript中常见的数据结构和算法以及它们的应用场景。

技术星球 202

Redis几大数据结构的应用场景和常见命令

String 单值缓存 set key value get key 对象缓存 set user:1001 value(json格式数据) mset user:1001:name zhangsan user:1001:age 20 mget user:1001:name mget user:1001:age 分布式锁 setnx product:1001 lock //返回1代表加锁成功 0表示失败 del product 1001 //完成业务逻辑之后一定要释放锁 set pro

linの编程之路 235

hashmap应用场景_浅谈常见数据结构和算法的应用系列(一)

作者丨Monica2333 来源丨码农知识点近来有小伙伴问我:刷leetcode真的有用吗,觉得收益很小,越刷越迷茫了…诚然每个人刷题的目的不一样,233酱还不是为了能水几篇文章…当然不止。我觉得刷题是一件有意思的事,就像小猫小狗咬自己尾巴,玩弄的不亦乐乎。比喻可能不太恰当,是有种沉迷小游戏的感觉。可是在艰难打野的过程中,我们不要忘了,最重要的是:了解每种技能包的特点,适合解决的问题和场景。在特定...

weixin_39559804的博客 146

c++标准库中几个常见的数据结构的区别和应用规则

https://blog.youkuaiyun.com/gogokongyin/article/details/51178378vector,list,deque使用区别:(1)如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector(2)如果你需要大量的插入和删除,而不关心随机存取,则应使用list(3)如果你需要随机存取,而且关心两端数据的插入和删除,则应使用deque1.VectorVeco...

WONITAWONITAWONITA的博客 899

redis smembersmap_Redis特性、应用场景和常见的数据结构

Redis从入门到精通​mp.weixin.qq.com【前言:本文主要介绍redis,内容丰富且实用,旨在帮助大家对redis有一个更深入、全面的了解以及在实际工作中更好的应用redis,篇幅较长,建议大家收藏,仔细阅读】Redis简介redis是用C语言开发的一个基于内存的、高性能key-value键值对的、开源nosql数据库。目前,redis的key是字符串类型的,但value支持多种数据...

weixin_34432821的博客 219

accdb原有的数据怎么清除_Redis特性、应用场景和常见的数据结构

Redis从入门到精通​mp.weixin.qq.com【前言:本文主要介绍redis,内容丰富且实用,旨在帮助大家对redis有一个更深入、全面的了解以及在实际工作中更好的应用redis,篇幅较长,建议大家收藏,仔细阅读】Redis简介redis是用C语言开发的一个基于内存的、高性能key-value键值对的、开源nosql数据库。目前,redis的key是字符串类型的,但value支持多种数据...

weixin_39609770的博客 215

redis五种数据类型的应用场景_redis底层数据结构和常见应用场景

常用的Redis数据类型包含了String、Hash、Set、List、Zset这五种,自2.8.9增加了Hyperloglog,3.2增加了Geo、5.0又新增了Streams。本文重点讨论常用的五种数据类型底层的数据结构。String的数据结构Redis最基本也是最常用的数据类型就是String类型了,可以用来存储字符串、整数、浮点数。Redis 通过 hashtable 实...

weixin_39656174的博客 588
上一篇: 低代码开发
下一篇: java——Synchronized与Lock
夏子曦
夏子曦 优质创作者: 产品设计技术领域 优质创作者: 产品设计技术领域
博客等级 码龄15年 8289粉丝 427原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值