100种高级数据结构 (速查表)

一、 基础结构的扩展与组合 (Advanced Linear Structures)

这些结构在数组、链表、队列、栈等基础结构上增加了特定功能或约束。

  1. 双端队列 (Deque - Double-Ended Queue)

    • 介绍:允许在队列的前后两端都进行插入和删除操作的线性结构。
    • 应用场景:工作窃取算法(如Java的Fork/Join框架)、滑动窗口问题、撤销历史记录(前后都可以操作)。
  2. 循环缓冲区/环形缓冲区 (Circular Buffer / Ring Buffer)

    • 介绍:固定大小的数组,头尾相连,通过移动指针来实现高效的插入和删除,避免数据搬移。
    • 应用场景:生产者-消费者问题、音频/视频数据处理、高速数据流缓存、性能关键的队列实现。
  3. 位图 (Bitmap / Bitset)

    • 介绍:用比特位(bit)来存储数据(通常是布尔值)的紧凑数组,每个元素只占1bit。
    • 应用场景:快速排序、海量数据去重、布隆过滤器的基础、数据库索引。
  4. 并行数组 (Parallel Arrays)

    • 介绍:使用多个相同长度的数组,通过相同索引来关联不同属性,是一种数据组织方式而非单一结构。
    • 应用场景:在注重缓存性能和对齐的数值计算、游戏开发(ECS架构)中常见。
  5. 间隙缓冲区 (Gap Buffer)

    • 介绍:在数组中维护一个“间隙”,插入操作通过移动间隙来实现,在间隙处插入效率高。
    • 应用场景:文本编辑器(如Emacs)的核心数据结构,适用于光标附近的频繁插入删除。
  6. 链式散列表 (Chained Hash Table)

    • 介绍:数组+链表的组合,解决哈希冲突的主要方法之一。
    • 应用场景:各种编程语言字典/对象的基础实现(如Python dict早期版本)、高速缓存。
  7. 开放寻址散列表 (Open-Addressed Hash Table)

    • 介绍:所有元素都存放在数组本身中,通过探测解决冲突(线性探测、二次探测、双重哈希)。
    • 应用场景:对缓存更友好,常用于需要极高性能且数据量可预估的场景。
  8. 跳跃表 (Skip List)

    • 介绍:一种多层的有序链表,通过增加索引层来实现近似二分查找的效率。
    • 应用场景:Redis的有序集合(Sorted Set)、LevelDB的MemTable,替代平衡树的一种简单高效方案。
  9. 布隆过滤器 (Bloom Filter)

    • 介绍:一种概率型数据结构,用于快速判断一个元素绝对不在集合中或可能在其中。非常节省空间。
    • 应用场景:缓存穿透防护、爬虫URL去重、分布式系统(如Cassandra)判断数据是否存在。
  10. 布谷鸟过滤器 (Cuckoo Filter)

    • 介绍:布隆过滤器的改进版,支持删除操作,具有更高的查询性能和空间效率。
    • 应用场景:需要支持删除的大规模集合成员判定场景。

二、 树形结构 (Tree Structures)

树是层次化数据存储和高效搜索的基石。

A. 二叉搜索树 (BST) 及其变种
  1. 自平衡二叉搜索树 (AVL Tree)

    • 介绍:通过旋转操作严格保持左右子树高度差不超过1,查询效率极高。
    • 应用场景:适用于查询多、增删少的场景,如数据库索引的内存部分。
  2. 红黑树 (Red-Black Tree)

    • 介绍:通过着色和旋转规则来保持大致平衡,增删改查的综合性能很好。
    • 应用场景std::map in C++, TreeMap in Java, epoll的内核实现,广泛用于需要高效有序性的场景。
  3. 伸展树 (Splay Tree)

    • 介绍:通过“伸展”操作将最近访问的节点移动到根节点,利用“局部性原理”。
    • 应用场景:缓存、垃圾回收算法。
  4. 替罪羊树 (Scapegoat Tree)

    • 介绍:通过判断平衡因子,在插入时回溯找到“替罪羊”子树并进行重构以实现平衡。
    • 应用场景:函数式编程中的有序数据结构。
B. 多路搜索树 (B-Tree家族) - 磁盘友好的巨人
  1. B树 (B-Tree)

    • 介绍:多路平衡搜索树,一个节点可以有多个键和多个子节点,显著减少磁盘I/O次数。
    • 应用场景数据库索引(如MySQL的InnoDB引擎)、文件系统(如NTFS, HFS+, Ext4)
  2. B+树 (B+ Tree)

    • 介绍:B树的变种,所有数据都存储在叶子节点,且叶子节点形成有序链表。
    • 应用场景关系型数据库索引的标准实现,范围查询效率极高。
  3. B树 (B Tree)

    • 介绍:B+树的变种,通过非根节点和非叶子节点的键满时进行分裂优化,提高空间利用率。
    • 应用场景:某些文件系统和数据库。
  4. 2-3树 / 2-3-4树

    • 介绍:B树的特例(阶数较低),是理解B树和红黑树的重要基础。
    • 应用场景:主要用于教学,某些内存中的有序数据结构实现。
C. 空间划分树 (Spatial Partitioning Trees)
  1. 四叉树 (Quadtree) (2D)

    • 介绍:将2D空间递归地划分为四个象限。
    • 应用场景:图像处理(压缩、稀疏存储)、碰撞检测、地图点搜索。
  2. 八叉树 (Octree) (3D)

    • 介绍:四叉树在3D空间的扩展,划分为八个卦限。
    • 应用场景:3D图形学(碰撞检测、视锥裁剪)、医学成像、粒子模拟。
  3. k-d树 (k-dimensional Tree)

    • 介绍:每个节点都对k维空间中的一个维度进行划分的二叉搜索树。
    • 应用场景最近邻搜索、范围搜索、多维键值检索。
  4. R树 (R-Tree)

    • 介绍:用于存储空间数据的多路平衡树,节点代表空间中的最小边界矩形(MBR)。
    • 应用场景地理信息系统(GIS),如地图查询“查找附近的所有餐馆”,数据库的空间扩展(PostGIS)。
  5. R*树, R+树

    • 介绍:R树的变种,通过不同的插入、分裂策略来优化重叠和性能。
    • 应用场景:对R树性能要求更高的复杂空间查询。
D. 堆与优先队列 (Heaps & Priority Queues)
  1. 二项堆 (Binomial Heap)

    • 介绍:由一组二项树组成的森林,支持高效合并。
    • 应用场景:图算法(如Dijkstra)中优先队列的实现之一。
  2. 斐波那契堆 (Fibonacci Heap)

    • 介绍:理论上的最优堆结构,摊还代价非常低,特别是对于decrease-key操作。
    • 应用场景:理论价值高,实际因常数因子大而较少使用,但在某些图算法(如最小生成树)中有理论意义。
  3. 配对堆 (Pairing Heap)

    • 介绍:一种简单高效的堆,实践性能往往很好。
    • 应用场景:实际应用中常见的优先队列实现。
  4. 左倾堆 (Leftist Heap)

    • 介绍:一种用于快速合并的堆结构。
    • 应用场景:函数式编程、需要频繁合并堆的场景。
E. 树形结构的其他变种
  1. 字典树 (Trie / Prefix Tree)

    • 介绍:专门用于处理字符串的树,节点的位置代表键(字符串的前缀)。
    • 应用场景输入法提示、搜索框自动补全、IP路由表最长前缀匹配
  2. 后缀树 (Suffix Tree)

    • 介绍:包含一个字符串所有后缀的压缩字典树,是字符串处理的强大工具。
    • 应用场景生物信息学(DNA序列匹配)、文本编辑器中的快速搜索、数据压缩
  3. 线段树 (Segment Tree) / 区间树 (Interval Tree)

    • 介绍:用于存储区间或线段,高效查询符合条件的区间。
    • 应用场景:范围查询(最大值、最小值、求和)、计算机图形学、日历调度。
  4. 芬威克树/二叉索引树 (Fenwick Tree / Binary Indexed Tree)

    • 介绍:一种巧妙设计用于计算前缀和的高效数据结构,代码简洁。
    • 应用场景:频繁计算数组前缀和、动态数组区间求和(比线段树更简单高效)。
  5. 笛卡尔树 (Cartesian Tree)

    • 介绍:由一组数据构建的二叉树,满足堆性质和二叉搜索树性质。
    • 应用场景:解决范围最小查询(RMQ)问题、构建后缀树。
  6. 决策树 (Decision Tree)

    • 介绍:机器学习中的模型,用于分类和回归,结构上是树形。
    • 应用场景:数据挖掘、模式识别。
  7. 语法分析树 (Parse Tree) / 抽象语法树 (AST)

    • 介绍:编译器中表示程序语法结构的树。
    • 应用场景:编译器、解释器、代码静态分析。
  8. 默克尔树 (Merkle Tree) / 哈希树 (Hash Tree)

    • 介绍:每个叶子节点的值都是数据块的哈希值,每个非叶子节点的值是它的子节点值的哈希值。
    • 应用场景区块链(比特币、以太坊)、分布式系统(Git, IPFS)的数据一致性和完整性验证
  9. VP树 (Vantage-Point Tree)

    • 介绍:一种度量树,用于在度量空间中进行最近邻搜索。
    • 应用场景:图像检索、音频匹配。

三、 图结构 (Graph Structures)

图用于表示实体间的复杂关系。

  1. 邻接矩阵 (Adjacency Matrix)

    • 介绍:使用二维数组表示图中顶点之间的边。
    • 应用场景:稠密图、需要快速判断任意两点间是否存在边。
  2. 邻接表 (Adjacency List)

    • 介绍:为每个顶点维护一个链表,存储与其相邻的顶点。
    • 应用场景存储稀疏图的主流方法,节省空间。
  3. 邻接多重表/边表 (Incidence List/Edge List)

    • 介绍:显式地存储所有边的列表,或存储每个顶点连接到的边。
    • 应用场景:需要频繁遍历所有边的图算法。
  4. 十字链表 (Orthogonal List)

    • 介绍:针对有向图优化的邻接多重表,可以同时高效获取顶点的入边和出边。
    • 应用场景:有向图的存储。
  5. 拓扑排序 (Topological Sort)

    • 介绍:对有向无环图(DAG)的顶点进行线性排序,使得对任何边 (u, v),u都排在v前面。
    • 应用场景:任务调度、依赖解析(如Makefile, 软件包管理)、课程安排。

四、 用于特定算法和领域的数据结构

  1. 并查集/不相交集合 (Union-Find / Disjoint-Set Union - DSU)

    • 介绍:管理元素分组,支持高效的合并和查询操作。
    • 应用场景Kruskal最小生成树算法、连通分量计算、动态连通性问题
  2. 循环冗余检查 (CRC) 表

    • 介绍:预计算的查表法,用于快速计算CRC校验码。
    • 应用场景:网络数据传输、存储设备的错误检测。
  3. 双缓冲 (Double Buffering)

    • 介绍:使用两个缓冲区,一个用于后台计算,一个用于前台显示,然后交换。
    • 应用场景:计算机图形学、游戏渲染,防止屏幕撕裂。
  4. 环形缓冲区的各种变种

    • 介绍:如MPSC(多生产者单消费者)、SPMC(单生产者多消费者)等并发环形队列。
    • 应用场景:高并发编程、无锁数据结构。
  5. Zipper

    • 介绍:函数式编程中的一种数据结构,用于在不可变数据中高效地“遍历和聚焦”。
    • 应用场景:函数式语言中的树或列表的遍历和修改。
  6. 绳索 (Rope)

    • 介绍:由多个字符串片段构建的二叉树,用于高效处理超长字符串的插入、删除和连接。
    • 应用场景:文本编辑器(如Apache Xerces, TextMate 2)处理大型文档。
  7. 计数最小略图 (Count-Min Sketch)

    • 介绍:一种概率数据结构,用于估算数据流的频率。
    • 应用场景:大数据流分析、估算热门项目、网络流量监控。
  8. 分层计时轮 (Hierarchical Timing Wheel)

    • 介绍:用于管理大量定时器的高效数据结构。
    • 应用场景:网络框架(如Netty, Kafka)、操作系统内核中的定时器实现。
  9. 最大-最小堆 (Min-Max Heap)

    • 介绍:同时支持高效获取最大和最小元素的堆。
    • 应用场景:双端优先队列。
  10. 可合并堆 (Melable Heap)

    • 介绍:支持高效合并操作的堆的统称(如斐波那契堆、二项堆、配对堆)。
    • 应用场景:需要合并优先队列的算法。
  11. 范围树 (Range Tree)

    • 介绍:用于多维范围查询的树,每个节点关联一个子树。
    • 应用场景:多维数据库查询、计算几何。
  12. BK树 (Burkhard-Keller Tree)

    • 介绍:用于在度量空间中搜索相似项目的树结构。
    • 应用场景:拼写检查、模糊搜索、DNA序列匹配。
  13. 图编码 (Graph Encoding)

    • 介绍:如邻接矩阵的各种压缩表示(CSR, CSC),用于存储超大规模图。
    • 应用场景:科学计算、社交网络分析。
  14. 日志结构合并树 (LSM-Tree - Log-Structured Merge-Tree)

    • 介绍:核心思想是将随机写转换为顺序写,通过内存表和多个SSTable文件层次合并。
    • 应用场景现代NoSQL数据库的基石(LevelDB, RocksDB, Cassandra, HBase)。
  15. 布谷鸟哈希表 (Cuckoo Hashing)

    • 介绍:使用两个哈希函数和两个表,冲突时“踢走”原有元素,直到找到空位或达到最大次数。
    • 应用场景:提供最坏情况下的常数查询时间,用于高性能哈希表实现。
  16. 可扩展哈希 (Extendible Hashing)

    • 介绍:一种动态哈希技术,通过目录和页面的分裂来适应数据增长。
    • 应用场景:数据库文件组织、某些文件系统。
  17. 线性哈希 (Linear Hashing)

    • 介绍:另一种动态哈希技术,无需目录,通过逐步分裂桶来实现扩展。
    • 应用场景:数据库文件组织。
  18. 一致性哈希 (Consistent Hashing)

    • 介绍:一种特殊的哈希技术,在节点增减时,只需重新映射一小部分数据。
    • 应用场景分布式缓存/存储系统的核心算法(如Memcached, Amazon Dynamo, Riak)。
  19. 跳表的各种变种

    • 介绍:如概率跳表、锁定跳表等。
    • 应用场景:并发环境下的有序数据结构。
  20. ** van Emde Boas 树**

    • 介绍:一种用于整数密钥的特殊集合数据结构,支持所有操作在O(log log U)时间内完成(U是域大小)。
    • 应用场景:算法竞赛、对性能要求极高的特殊领域。
  21. Fusion Tree

    • 介绍:一种理论上可以在O(log_w n)时间内完成查询的树(w是机器字长),利用了CPU的并行指令。
    • 应用场景:理论计算机科学,处理极大整数集合。
  22. ** Judy Arrays**

    • 介绍:一种非常节省内存的关联数组,使用压缩的256路树。
    • 应用场景:内存极度受限的系统。

五、 并发与并行数据结构 (Concurrent & Parallel Structures)

  1. 并发链表 (Concurrent Linked List)

    • 介绍:使用锁或无锁编程技术实现线程安全的链表。
    • 应用场景:多线程编程中的共享资源池。
  2. 并发哈希表 (Concurrent Hash Map)

    • 介绍:线程安全的哈希表,如Java的ConcurrentHashMap,使用分段锁或CAS操作。
    • 应用场景:高并发环境下的缓存、计数。
  3. 并发跳表 (Concurrent Skip List)

    • 介绍:如Java的ConcurrentSkipListMap,使用无锁技术实现的有序并发字典。
    • 应用场景:需要高并发有序访问的场景。
  4. 无锁队列 (Lock-Free Queue)

    • 介绍:基于CAS操作实现的队列,完全避免锁,提供更好的扩展性。
    • 应用场景:高性能生产者-消费者场景,如线程池任务队列。
  5. 无锁栈 (Lock-Free Stack)

    • 介绍:基于CAS操作实现的栈。
    • 应用场景:内存分配、回溯算法的并行化。
  6. RCU (Read-Copy-Update)

    • 介绍:一种同步机制,读者无锁,写者复制更新后替换指针,适用于读多写少。
    • 应用场景:Linux内核数据结构(如路由表)、数据库。

六、 持久化与函数式数据结构 (Persistent & Functional Structures)

  1. 持久化数据结构 (Persistent Data Structures)

    • 介绍:保留所有历史版本的数据结构,修改操作会创建新版本而非改变旧版本。
    • 应用场景:函数式编程、事务系统、时间旅行调试、文本编辑器的撤销/重做。
  2. 不可变数据结构 (Immutable Data Structures)

    • 介绍:创建后不能被修改的数据结构,任何修改都会产生一个新的副本(通常共享部分结构)。
    • 应用场景:函数式编程(Clojure, Haskell)、React状态管理、简化并发编程。
  3. 持久化链表 (Persistent List)

    • 介绍:最简单的持久化结构,通过共享尾部来实现。
    • 应用场景:函数式语言的基础(如Lisp的cons cell)。
  4. 持久化二叉搜索树 (Persistent BST)

    • 介绍:通过路径复制来实现持久化。
    • 应用场景:需要版本历史的有序字典。
  5. 持久化数组 (Persistent Vector)

    • 介绍:使用高度平衡的树(如32路树)实现,支持高效随机访问和持久化。
    • 应用场景:Clojure的核心数据结构之一。
  6. 持久化哈希映射 (Persistent Hash Map)

    • 介绍:使用哈希数组映射尝试树(HAMT)实现。
    • 应用场景:Clojure, Scala的不可变Map实现。

七、 概率与近似数据结构 (Probabilistic & Approximate Structures)

  1. HyperLogLog (HLL)

    • 介绍:用于估算海量数据集中基数(唯一元素个数)的概率数据结构,极其节省空间。
    • 应用场景网站UV统计、数据库查询优化中的基数估算
  2. Count-Min Sketch (再次强调)

    • 应用场景:频率估算。
  3. Bloom Filter (再次强调)

    • 应用场景:存在性检测。
  4. t-Digest

    • 介绍:用于计算流式数据近似分位数(如中位数、百分位数)的数据结构。
    • 应用场景:监控系统(如Prometheus)、性能分析。
  5. Top-K Sketch / Heavy Hitters

    • 介绍:如Space-Saving算法,用于找出数据流中出现最频繁的K个元素。
    • 应用场景:网络流量分析、热门话题挖掘。

八、 硬件相关与优化结构 (Hardware-Aware & Optimized Structures)

  1. B树针对CPU缓存线的优化

    • 介绍:调整节点大小使其完全匹配CPU缓存线(如64字节),减少缓存失效。
    • 应用场景:高性能数据库(LMDB)。
  2. CSR/CSC矩阵存储格式

    • 介绍:压缩稀疏行/列格式,用于高效存储和计算稀疏矩阵。
    • 应用场景:科学计算、机器学习、图算法。
  3. 结构体数组 (Array of Structs - AoS)

    • 介绍:将对象的属性打包在一个结构体中,然后用数组存储多个结构体。
    • 应用场景:面向对象编程的常见方式。
  4. 数组结构体 (Struct of Arrays - SoA)

    • 介绍:将所有对象的同一个属性存储在单独的数组中。
    • 应用场景:数据导向设计(DOD),对SIMD指令和缓存预取友好,常用于游戏引擎、数值计算。
  5. 缓存敏感型B树 (Cache-Sensitive B-Tree - CSB+)

    • 介绍:B树的变种,优化缓存性能。
    • 应用场景:主存数据库。
  6. 位级并行数据结构

    • 介绍:利用CPU的字长特性,一次操作处理多个比特位。
    • 应用场景:位图算法、基因序列分析。

九、 抽象数据类型 (ADT) 及其多种实现

以下是一些重要的抽象数据类型,它们可以由上述多种数据结构实现。

  1. 优先队列 (Priority Queue) ADT

    • 实现:二叉堆、斐波那契堆、配对堆、平衡BST。
    • 应用场景:任务调度、Dijkstra算法、Huffman编码。
  2. 符号表/字典/映射 (Map/Dictionary) ADT

    • 实现:哈希表、红黑树、跳跃表、B树、BST。
    • 应用场景:无处不在。
  3. 集合 (Set) ADT

    • 实现:基于Map实现,或使用布隆过滤器(近似)。
    • 应用场景:去重、集合运算。
  4. 多重集合 (Multiset/Bag) ADT

    • 介绍:允许重复元素的集合。
    • 实现:Map<T, Integer>、计数布隆过滤器。
    • 应用场景:计数统计。
  5. 图 (Graph) ADT

    • 实现:邻接矩阵、邻接表、边表。
    • 应用场景:建模关系网络。
  6. 栈 (Stack) ADT

    • 实现:数组、链表。
    • 应用场景:函数调用、表达式求值、回溯。
  7. 队列 (Queue) ADT

    • 实现:数组、链表、环形缓冲区。
    • 应用场景:BFS、消息队列、缓冲。
  8. 双端队列 (Deque) ADT

    • 实现:双向链表、动态数组、环形缓冲区。
    • 应用场景:如前所述。
  9. 并查集 (Union-Find) ADT

    • 实现:父指针树(带路径压缩和按秩合并)。
    • 应用场景:如前所述。

十、 更多特定领域与新兴结构

  1. 波利亚计数桶 (Pólya’s Counting Bucket)

    • 介绍:用于组合数学计数的数据结构。
    • 应用场景:数学、算法分析。
  2. 单调队列 (Monotonic Queue)

    • 介绍:队列中的元素保持单调性(递增或递减)。
    • 应用场景:滑动窗口最大值/最小值问题。
  3. 单调栈 (Monotonic Stack)

    • 介绍:栈中的元素保持单调性。
    • 应用场景:下一个更大元素(Next Greater Element)问题、柱状图最大矩形。
  4. 差分数组 (Difference Array)

    • 介绍:用于快速对数组的某个区间进行增量操作。
    • 应用场景:区间更新、批量操作。
  5. 二进制决策图 (BDD - Binary Decision Diagram)
    * 介绍:一种用于表示布尔函数的压缩图结构。
    * 应用场景:形式化验证、硬件电路设计、模型检测。


总结与选择建议

这100种数据结构展现了计算机科学家为不同问题域量身定制解决方案的智慧和创造力。选择数据结构时,需要考虑以下因素:

  1. 操作类型和频率:是读多写少,还是写多读少?需要哪些操作(插入、删除、查找、遍历、范围查询)?
  2. 数据规模:数据是常驻内存还是需要磁盘存取?
  3. 数据特性:数据是否有序?是稀疏还是密集?是数值、字符串还是复杂对象?
  4. 并发需求:是否需要线程安全?
  5. 内存与性能的权衡:对延迟和吞吐量的要求是什么?内存限制如何?
  6. 实现复杂度:是自己实现还是使用现成库?

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

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

相关文章

一个开源的企业官网简介

简介一个完美的企业官网系统,支持手机端和电脑端展示企业风采,还可以展示企业产品/企业新闻资讯等等.普通用户PC端展示普通用户手机端展示管理后台

TCP实现线程池竞争任务

服务端&#xff1a;#include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<netinet/ip.h> #include<strings.h> #include<unistd.h> #include<ctype.h> #include<arpa/inet.h&…

Redis C++ 实现笔记(F篇)

Implementing Redis in C : F Redis C 实现笔记&#xff08;F篇&#xff09; 前言 本章代码及思路均来自Build Your Own Redis with C/C 本文章只阐述我的理解想法&#xff0c;以及需要注意的地方。 本文章为续<<Implementing Redis in C : E>>所以本文章不再…

finally 与 return的执行顺序

一、第一次试验public static void main(String[] args) throws InterruptedException {System.out.println(aaa(null));}private static StringBuilder aaa(Integer i) throws InterruptedException {StringBuilder sb new StringBuilder();try {i.toString();return sb;} ca…

Git安装教程

简介 Git 是目前全球最流行的分布式版本控制系统&#xff08;Distributed Version Control System, DVCS&#xff09;&#xff0c;核心作用是追踪文件修改历史、支持多人协同开发&#xff0c;并能高效管理代码&#xff08;或任何文本类文件&#xff09;的版本迭代。它由 Linux…

Linux安装RTL8821CE无线网卡驱动

1. 查看网卡芯片$ lspci | grep Net 01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter2. 预备配套sudo apt install -y dkms git3. 下载驱动并安装git clone https://github.com/tomaspinho/rtl8821ce.git cd r…

vue3存储/获取本地或会话存储,封装存储工具,结合pina使用存储

目录 一、基本用法&#xff08;原生 API&#xff09; 1. 存储数据 2. 获取数据 3. 删除数据 二、Vue3 中封装成工具函数&#xff08;推荐&#xff09; 三、以上工具函数在 Vue3 组件中使用 1. 在选项式 API 中使用 2. 在组合式 API&#xff08;setup 语法糖&#xff09;…

【Flink】DataStream API:基本转换算子、聚合算子

目录基本转换算子映射&#xff08;map&#xff09;过滤&#xff08;filter&#xff09;扁平映射聚合算子按键分区&#xff08;keyBy&#xff09;简单聚合&#xff08;sum/min/max/minBy/maxBy&#xff09;规约聚合&#xff08;reduce&#xff09;基本转换算子 有如下POJO类用来…

从淘宝推荐到微信搜索:查找算法如何支撑亿级用户——动画可视化

本篇技术博文摘要 &#x1f31f; 本文通过动画可视化深入解析数据结构中的核心查找算法&#xff0c;从基础概念到高阶应用&#xff0c;全面覆盖顺序查找、折半查找、分块查找、B树/B树及散列查找的核心原理与实现细节。文章以动态演示为核心工具&#xff0c;直观展现算法执行过…

图像正向扭曲反向扭曲

在图像处理领域&#xff0c;正向扭曲&#xff08;Forward Warping&#xff09;和反向扭曲&#xff08;Backward Warping&#xff09;是两种核心的图像坐标映射与像素重采样技术&#xff0c;核心区别在于“像素映射的方向”——是从“原始图像”到“目标图像”&#xff0c;还是从…

【C语言】 第三课 函数与栈帧机制详解

1 函数的基本概念 在C语言中&#xff0c;函数是程序的基本执行单元。一个函数的定义包括返回类型、函数名、参数列表和函数体。例如&#xff1a; int add(int x, int y) { // 函数定义int z x y;return z; }在使用函数前&#xff0c;通常需要声明&#xff08; declaration&am…

多个大体积PDF文件怎么按数量批量拆分成多个单独文件

在现代社会中&#xff0c;电子文档在我们的身边无所不在&#xff0c;而PDF文件时我们日常接触非常多的文档类型之一。PDF由于格式稳定、兼容性好&#xff0c;因此经常被用于各行各业。但是&#xff0c;我们平时在制作或搜集PDF文件时&#xff0c;文件太大&#xff0c;传输和分享…

ansible-角色

角色 一、利用角色构造ansible playbook 随着开发更多的playbook&#xff0c;会发现有很多机会重复利用以前编写的playbook中的代码。或许&#xff0c;一个用于为某一应用配置MySQL数据库的play可以改变用途。通过利用不同的主机名、密码和用户来为另一个应用配置MySQL数据库。…

git命令行打patch

在 Git 里打 patch&#xff08;补丁&#xff09;其实就是把某些提交的改动导出来&#xff0c;生成一个 .patch 文件&#xff0c;方便别人用 git apply 或 git am 打进代码里。&#x1f539; 常用方式1. 基于提交导出 patch导出最近一次提交&#xff1a;git format-patch -1 HEA…

文华财经多空提示指标公式 变色K线多空明确指标 文华wh6赢顺多空买卖提示指标

XX:240C;YY:MA(C,1);A1:POW(XX,2)/360-POW(YY,2)/260;A5:EMA2(EMA2(A1,20),5),LINETHICK2;A6:A5*0.9999,COLORSTICK;A20:EMA2(EMA2(A5,20),5),LINETHICK2;A60:EMA2(EMA2(A20,20),5),LINETHICK2;支撑:HHV(A5,30),COLORRED;天数:BARSSINCE(A5HHV(A5,0));YL:REF(A5,1)2.79-天数*0.…

记录一个防重Toast

当我们已经对某个按钮做了防暴力点击&#xff0c;但是依然在业务上有些复杂交互的情况&#xff0c;需要我们封装一个防重Toast。针对这类情况&#xff0c;可以直接使用下面的showDebouncedToastdata class ToastInfo(val id: Any? null,val command: MediaCommandDebouncer.M…

在线测评系统---第n天

主要完成了退出登录前后的代码的实现&#xff0c;以及题目列表的查询1.退出登录前端引入了全局前置守卫&#xff0c;如果cookie里面没有token则直接跳转到login页面&#xff1b;有则直接跳转到layout页面&#xff0c;无需重新登录后端接收到退出登录&#xff0c;将token置为无效…

机器学习从入门到精通 - 卷积神经网络(CNN)实战:图像识别模型搭建指南

机器学习从入门到精通 - 卷积神经网络(CNN)实战&#xff1a;图像识别模型搭建指南 各位&#xff0c;是不是觉得那些能认出照片里是猫还是狗、是停车标志还是绿灯的AI酷毙了&#xff1f;今天咱们就撸起袖子&#xff0c;亲手搭建一个这样的图像识别模型&#xff01;别担心不需要你…

python sqlalchemy模型的建立

SQLAlchemy 是一个功能强大的 Python SQL 工具包和对象关系映射&#xff08;ORM&#xff09;库&#xff0c;用于管理和操作关系数据库。它为 Python 开发者提供了一种用 Python 对象来运行和管理 SQL 数据库的方式。 目录 SQLAlchemy 的两个核心组成部分 SQLAlchemy 的主要功…

Rust中使用RocksDB索引进行高效范围查询的实践指南

在当今海量数据处理场景下,高效的范围查询能力成为许多系统的关键需求。RocksDB作为一款高性能的嵌入式键值存储引擎,其独特的LSM树结构和索引设计为范围查询提供了底层支持。本文将深入探讨如何在Rust中利用RocksDB的特性来实现高效范围查询,从键的设计原则到迭代器的工程实…