顺序表专题(C语言)
文章目录
- 前言
- 一、数据结构相关概念
- 类比说明:书架与数据结构
- 二、线性表
- 基本概念
- 两种实现方式对比
- 三、顺序表的概念及结构
- 1. 顺序表的定义
- 2. 静态顺序表的基本结构
- 关键点解析:
- 3. 结构体成员解释
- 四、顺序表分类
- 五、动态顺序表的实现
- 总结
前言
在C语言的学习中,数组和指针是必不可少的基础,但当你试图管理大量数据、构建高效程序时,单纯依赖这些工具往往力不从心。数据结构正是为了解决数据组织和操作问题而设计的“工具箱”。顺序表是最直观、最基础的一种数据结构。它的顺序存储方式类似于我们在生活中摆放物品的顺序排列,这就像在书架上排放书籍,每本书都有固定的位置。本文将以通俗易懂的方式,深入探讨顺序表的基本概念、分类及其在C语言中的实现细节,帮助你由浅入深地认识这一重要数据结构。
一、数据结构相关概念
类比说明:书架与数据结构
想象你有一个书架,上面整齐地摆着书。每本书占据一个固定的位置,这样你可以通过位置编号快速找到想要的书。这正好和数据结构中的概念类似——
- 数据就像书籍:有内容但没有特定的组织时,查找起来会非常费力。
- 数据结构就像书架:通过合理的组织,使数据能够高效存取。
在程序设计中,数据结构主要负责两个方面:
- 数据的组织:如何将数据存储到内存中,如顺序存储或链式存储。
- 数据的操作:提供插入、删除、查找等功能,就像你在书架上增加或拿走一本书。
掌握数据结构的本质,能够帮助你写出更高效、可扩展的代码。
二、线性表
基本概念
线性表是一种基础的数据结构,其所有元素按照线性顺序排列,每个数据元素都有一个前驱(除第一个外)和后继(除最后一个外)。生活中我们经常遇到的例子如队列、栈等,都是线性表的一种。
两种实现方式对比
线性表常见两种实现方式:顺序存储和链式存储。
-
顺序存储(顺序表)
用一段连续的内存存储数据,可以直接通过下标访问。这种方式访问速度快,但在中间插入或删除元素时,需要移动大量数据,成本较高。 -
链式存储(链表)
通过节点和指针链接,可以灵活插入和删除元素,但随机访问性能较低,因为需要从头开始逐一查找。
对新手来说,当数据量不大或者主要操作是查找时,顺序表是一个很好的选择,而链表则适用于频繁插入和删除的场景。
三、顺序表的概念及结构
1. 顺序表的定义
顺序表是一种通过连续内存空间存储数据的线性表实现方式。在C语言中,这通常意味着使用数组来存储元素,同时记录当前有效元素个数。
2. 静态顺序表的基本结构
下面是一个使用固定大小数组实现的简单顺序表(静态顺序表):
#define MAXSIZE 100 // 定义顺序表的最大容量typedef struct {int data[MAXSIZE]; // 使用数组存储顺序表元素int length; // 顺序表当前包含的元素个数
} SqList;
关键点解析:
- 连续内存:数组在内存中是连续的,这使得随机访问(例如
data[i]
)非常高效。 - 容量固定:这里数组大小固定为100,因此当数据量接近上限时无法自动扩展,这也是静态顺序表的局限。
3. 结构体成员解释
data
:存放具体的数据元素。length
:记录当前顺序表中实际存放的数据个数,而不是数组的总容量。
四、顺序表分类
根据存储方式及扩展策略,顺序表可以分为以下两种类型:
类型 | 特点 | 优缺点 |
---|---|---|
静态顺序表 | 使用固定大小的数组,实现简单,内存申请一次到位。 | 优点:访问快、实现简单。缺点:容量固定,不能动态扩容。 |
动态顺序表 | 利用动态内存分配(如 malloc )实现数组,根据需要自动扩容。 | 优点:容量灵活,适应实际需求。缺点:需要处理内存分配和释放,额外的扩容处理会影响性能。 |
对于实际开发,动态顺序表更为常用,因为它可以根据数据量自动扩展,避免固定容量导致的数据溢出。
五、动态顺序表的实现
这里给出源码,自己可以去写一个测试源文件,调用这些函数进行测试
sequentialtable.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int type;
typedef struct sqlList
{type* arr;int size;int capacity;
}SL;
//顺序表初始化
void SLInit(SL* p);
//顺序表销毁
void DeleteSL(SL* p);//检查空间是否充足
void CapacityCheak(SL* p);//尾插
void PushBack(SL* p, type x);//头插
void PushFront(SL* p, type x);//头删
void PopFront(SL* p);//尾删
void PopBack(SL* p);//在任意位置插入
void SLInsert(SL* p, int pos, type x);//在任意位置删除
void SLErase(SL* p, int pos);//查找
int SLFind(SL* p, type x);//打印
void Print(SL* p);
sequentialtable.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"sequentialtable.h";void SLInit(SL* p)
{p->arr = NULL;p->size = p->capacity = 0;
}void DeleteSL(SL* p)
{if (p->arr){free(p->arr);}p->arr = NULL;p->size = p->capacity = 0;
}void CapacityCheak(SL* p)
{if (p->size == p->capacity){int newCapacity = p->capacity == 0 ? 4 : 2 * p->capacity;type* tmp = (type*)realloc(p->arr, newCapacity * sizeof(type));if (tmp == NULL){perror("realloc");exit(1);}p->arr = tmp;p->capacity = newCapacity;}
}void PushBack(SL* p, type x)
{assert(p);CapacityCheak(p);p->arr[p->size++] = x;
}void PushFront(SL* p, type x)
{assert(p);CapacityCheak(p);for (int i = p->size; i > 0; i--){p->arr[i] = p->arr[i - 1];}p->arr[0] = x;++p->size;
}void PopFront(SL* p)
{assert(p);assert(p->arr);for (int i = 0; i < p->size - 1; i++){p->arr[i] = p->arr[i + 1];}--p->size;
}void PopBack(SL* p)
{assert(p);assert(p->arr);--p->size;
}void SLInsert(SL* p, int pos, type x)
{assert(p);assert(pos >= 0 && pos <= p->size);for (int i = p->size; i > pos; i--){p->arr[i] = p->arr[i - 1];}p->arr[pos] = x;++p->size;
}void SLErase(SL* p, int pos)
{assert(p);assert(pos >= 0 && pos <= p->size);int i = 0;for (i = pos; i < p->size -1; i++){p->arr[i] = p->arr[i + 1];}--p->size;
}int SLFind(SL* p, type x)
{assert(p);int i = 0;for (i = 0; i < p->size; i++){if (p->arr[i] == x){return x;}}return -1;
}void Print(SL* p)
{int i = 0;for (i = 0; i < p->size; i++){printf("%d ", p->arr[i]);}printf("\n");
}
总结
本文从基础概念开始,详细解释了数据结构、线性表以及顺序表的原理和实现。主要内容包括:
- 数据结构概念:通过现实生活中的类比(书架)来理解数据的组织和操作原理。
- 线性表简介:讨论了线性表的特点以及顺序表和链表两种实现方式的优缺点。
- 顺序表基本结构:介绍了静态顺序表的实现方法,包括数组存储和固定容量的概念。
- 顺序表分类:比较了静态顺序表与动态顺序表的不同特点及各自适用场景。
- 动态顺序表实现:提供了详细的C语言代码示例,讲解了初始化、插入、删除和内存释放的每一步实现细节和注意事项。
对于初学者来说,理解这些概念和代码实现不仅可以帮助你更好地掌握C语言的基础知识,同时也为日后学习更高级的数据结构(如链表、树、图等)奠定坚实的基础。通过动手实践和不断调试,你将逐步体会到数据结构与算法在实际开发中的巨大威力。
希望这篇文章能让你对顺序表有一个更深入的认识,如果你有任何疑问或需要进一步讨论的地方,欢迎留言交流,持续学习和实践才是进步的关键!
如果你需要完整的代码示例、编译运行方式或更详细的图示说明,请告诉我,我会进一步提供帮助。
相关文章:
顺序表专题(C语言)
文章目录 前言一、数据结构相关概念类比说明:书架与数据结构 二、线性表基本概念两种实现方式对比 三、顺序表的概念及结构1. 顺序表的定义2. 静态顺序表的基本结构关键点解析: 3. 结构体成员解释 四、顺序表分类五、动态顺序表的实现总结 前言 在C语言…...
Python Cookbook-5.9 在排序完毕的序列中寻找元素
任务 你需要寻找序列中的一系列元素。 解决方案 解决方案如果列表L已经是排序完毕的状态,则Python 标准库提供的 bisect 模块可以很容易地检查出元素x是否在L中: import bisect x_insert_point bisect.bisect_right(L,x) x_is_present L[x_insert_point-1:x_i…...
Johnson算法 流水线问题 java实现
某印刷厂有 6项加工任务J1,J2,J3,J4,J5,J6,需要在两台机器Mi和M2上完 成。 在机器Mi上各任务所需时间为5,1,8,5,3,4单位; 在机器M2上各任务所需时间为7,2,2,4,7,4单位。 即时间矩阵为: T1 {5, …...
10:00开始面试,10:08就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
[Vue]App.vue讲解
页面中可以看见的内容不再在index.html中进行编辑,而是在App.vue中进行编辑。 组件化开发 在传统的html开发中,一个页面的资源往往都写在同一个html文件中。这种模式在开发小规模、样式简单的项目时会相当便捷,但当项目规模越来越大…...
python中的*args和**args
在 Python 里,*args 和 **kwargs 是两个特殊的语法,它们能让函数接收不定数量的参数。下面分别对它们进行介绍。 *args *args 用于向函数传递不定数量的非关键字参数,这些参数会被封装成一个元组。以下是示例代码: def sum_num…...
解决Spring Boot上传默认限制文件大小和完善超限异常(若依框架)
文章目录 报错信息问题分析技术原理解决方法1️⃣调整 Spring Boot 配置文件2️⃣检查内嵌 Tomcat 配置(可选)3️⃣ 代码自定义配置(覆盖配置文件) 全局异常处理代码 报错信息 org.springframework.web.multipart.MaxUploadSizeE…...
Pyside6使用QtWebEngine实现GUI嵌入网页内容
Pyside6是由Qt官方维护和开发的一个用于创建跨平台桌面应用程序的Python绑定库。QtWebEngine是Qt提供的一个模块,它基于Chromium项目,允许开发者在他们的应用程序中嵌入网页内容。通过结合Pyside6和QtWebEngine,开发者可以轻松地创建具有现代…...
【每日一个知识点】多项式回归(Polynomial Regression)
多项式回归(Polynomial Regression)是一种对非线性关系建模的回归方法,它是在线性回归的基础上,引入特征的高次项,从而捕捉自变量与因变量之间的非线性关系。 🔹一、基本概念 多项式回归的形式:…...
最新版PhpStorm超详细图文安装教程,带补丁包(2025最新版保姆级教程)
目录 前言 一、PhpStorm最新版下载 二、PhpStorm安装 三、PhpStorm补丁 四、运行PhpStorm 前言 PhpStorm 是 JetBrains 公司推出的 专业 PHP 集成开发环境(IDE),专为提升 PHP 开发效率设计。其核心功能包括智能代码补全、实时语法错误检…...
C++:模拟实现string
目录 一:string类 二:构造函数、拷贝构造函数及析构函数 1、构造函数 2、拷贝构造函数 3、析构函数 三、实现string中对容量操作的成员函数 1、size 2、capacity 3、reserve 4、resize 5、clear 6、empty 四、string类中对象的增删查改操作 …...
Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!
🧩 Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑! 本节的 Python 小练习系列我们将聚焦一个 冷门但高能 的工具 —— functools.partial。它的作用类似于“函数的预设模板”,能帮你写出更加灵活、优雅…...
处理Excel的python库openpyxl、xlrd、xlwt、pandas有什么区别,搞懂它
openpyxl、xlrd、xlwt、pandas 都能处理 Excel 表格,但用途和适合的场景不同。今天做个总结: 库名功能支持格式读写支持样式备注openpyxl全面的.xlsx处理库.xlsx(Excel2007)✅✅✅首选xlrd读取.xls文件的老牌工具.xls(…...
【OSG学习笔记】Day 1: OSG初探——环境搭建与第一个3D窗口
什么是 OSG? 全称:OpenSceneGraph(开源场景图) 定位:一个基于 C/OpenGL 的高性能开源3D图形开发工具包,专注于实时渲染和复杂场景管理。 核心思想:通过 场景图(Scene Graph…...
linux--------------进程控制(下)
一、进程等待 1.1 进程等待必要性 子进程退出后,若父进程不管不顾,可能会产生 “僵尸进程”,进而造成内存泄漏。进程一旦变为僵尸状态,即使使用 kill -9 也无法将其杀死,因为无法杀死一个已死的进程。父进程需要了解…...
【Axure元件分享】移动端滑动拨盘日期选择器
在移动端产品设计中,日期选择器是用户交互中常见的组件,尤其在预订、日程管理等场景中扮演着关键角色。本文将介绍一款基于Axure的移动端滑动拨盘日期选择器元件,该元件通过模拟拨盘滑动交互效果,为用户提供直观日期选择体验。 下…...
基于 JavaWeb 的 SpringBoot 在线课程会员系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Linux入门
复习:https://blog.csdn.net/ 操作系统概述 硬件和软件 计算机由硬件和软件组成 硬件:计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称 软件:用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流 而操作系统就是软件的一类. 操作系统 主要负…...
金融壹账通推出大模型一体机,加速金融行业AI落地与应用
在当前数字化和人工智能技术迅猛发展的背景下,金融行业正面临着效率提升、风险管控和客户体验优化的多重挑战。为应对这些需求,金融壹账通近期推出了全新的“大模型一体机”解决方案。该方案集算力、模型、工具链和应用场景于一体,不仅具备小投入、低门槛和私有化部署的优势,还…...
迁移WordPress网站(大文件版本)
安装插件All-in-One WP Migration,备份并下载文件,可以参考我的另外一篇文章wordpress 利用 All-in-One WP Migration全站转移使用工具解压缩.wpress文件 工具名称:wpress-extractor,github下载地址 或者 我已经上传,也…...
Linux普通用户怎么切换为root用户
在 Linux 中,普通用户切换到 root 用户的常用命令有以下几种: 切到root用户 sudo -i(当前用户的密码) su -(需要知道root 密码) 1. su 命令(需要知道 root 密码) su - 或 su - roo…...
WinForm真入门(11)——ComboBox控件详解
WinForm中 ComboBox 控件详解 ComboBox 是 WinForms 中一个集文本框与下拉列表于一体的控件,支持用户从预定义选项中选择或直接输入内容。以下从核心属性、事件、使用场景到高级技巧的全面解析: 一、ComboBox 核心属性 属性说明示例Items下拉…...
Spring 服务调用接口时,提示You should be redirected automatically to target URL:
问题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><title>Redirecting...</title><h1>Redirecting...</h1><p>You should be redirected automatically to target URL: <a href"http://xxx/api/v1/branch…...
OpenCV--模板匹配
一、引言 在计算机视觉领域,模板匹配是一种用于在图像中查找特定目标的基本技术。OpenCV 作为广泛使用的计算机视觉库,提供了强大且易于使用的模板匹配功能。无论是在工业检测、图像识别还是机器人视觉等领域,模板匹配都发挥着重要作用。本文…...
【Ragflow】14.MinerU解析脚本,接入ragflow知识库
概述 前文写了下 MinerU 的解析效果,收到不少读者催更,想利用 MinerU 替换 Deepdoc 的原始的解析器。 我认为,开发新功能基本可遵循能用-好用-用好这三个阶段: 能用:先通过脚本实现该功能,主打的是能用就行 好用&am…...
【SpringCloud】从入门到精通(上)
今天主播我把黑马新版微服务课程MQ高级之前的内容都看完了,虽然在看视频的时候也记了笔记,但是看完之后还是忘得差不多了,所以打算写一篇博客再温习一下内容。 课程坐标:黑马程序员SpringCloud微服务开发与实战 微服务 认识单体架构 单体架…...
第一章:SQL 基础语法与数据查询
1. 什么是 SQL? SQL(Structured Query Language) 是用于管理和操作关系型数据库的标准语言。核心功能: 数据查询(SELECT)数据定义(CREATE、ALTER、DROP࿰…...
Openlayers:海量图形渲染之WebGL渲染
最近由于在工作中涉及到了海量图形渲染的问题,因此我开始研究相关的解决方案。我在网络上寻找相关的解决方案时发现许多的文章都提到利用Openlayers中的WebGLPointsLayer类,可以实现渲染海量的点,之后我又了解到利用WebGLVectorLayer类可以渲…...
任务调度和安全如何结合
联邦学习与隐私保护 分布式模型训练:各边缘节点本地训练调度模型,仅共享模型参数而非原始数据,避免隐私泄露(参考[11]的联邦学习框架)。差分隐私:在奖励计算或状态反馈中加入噪声,防止通过调度…...
ARP攻击 DAI动态ARP检测学习笔记(超详细)
一、概述 ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称为物理地址)的协议,指导三层报文的转发。ARP有简单、易用的优点,但是也因为其没有任何安全认证机制而容易被攻击者利用。属于是又爱又恨的一种协议了。目前ARP攻击和ARP病毒已经成为…...
Springboot--Kafka客户端参数关键参数的调整方法
调整 Kafka 客户端参数需结合生产者、消费者和 Broker 的配置,以实现性能优化、可靠性保障或资源限制。以下是关键参数的调整方法和注意事项: 一、生产者参数调整 max.request.size 作用:限制单个请求的最大字节数(包括消…...
NO.79十六届蓝桥杯备战|数据结构-扩展域并查集-带权并查集|团伙|食物链|银河英雄传说(C++)
扩展域并查集 普通的并查集只能解决各元素之间仅存在⼀种相互关系,⽐如《亲戚》题⽬中: a 和b 是亲戚关系,b 和c 是亲戚关系,这时就可以查找出a 和c 也存在亲戚关系。 但如果存在各元素之间存在多种相互关系,普通并查…...
蓝桥杯2022年第十三届省赛真题-统计子矩阵
题目链接: 代码思路: ①枚举上、下边界。 ②求每一列前缀和。 ②固定上下边界后,在通过双指针确定子矩阵的左右边界。双指针维护一个窗口 [l, r],确保窗口中所有列的和(下面前缀和-上面前缀和)不超过 K。通过滑动窗口方式&…...
openEuler24.03 LTS下安装Spark
目录 安装模式介绍 下载Spark 安装Local模式 前提条件 解压安装包 简单使用 安装Standalone模式 前提条件 集群规划 解压安装包 配置Spark 配置Spark-env.sh 配置workers 分发到其他机器 启动集群 简单使用 关闭集群 安装YARN模式 前提条件 解压安装包 配…...
openEuler24.03 LTS下安装Flink
目录 Flink的安装模式下载Flink安装Local模式前提条件解压安装包启动集群查看进程提交作业文件WordCount持续流WordCount 查看Web UI配置flink-conf.yaml简单使用 关闭集群 Standalone Session模式前提条件Flink集群规划解压安装包配置flink配置flink-conf.yaml配置workers配置…...
Redis 持久化
一、持久化 redis 虽然是个内存数据库,但是 redis 支持RDB 和 AOF 两种持久化机制, 将数据写往磁盘,可以有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 二、Redis 支持RDB 和 AOF …...
塔能科技:智能路灯物联运维产业发展现状与趋势分析
随着智慧城市建设的推进,智能路灯物联运维产业正经历快速发展,市场规模持续扩大。文章探讨了智能路灯物联运维的技术体系、市场机遇和挑战,并预测了未来发展趋势,为行业发展提供参考。 关键词 智能路灯;物联运维&#…...
前端知识点---闭包(javascript)
文章目录 1.怎么理解闭包?2.闭包的特点3.闭包的作用?4 闭包注意事项:5 形象理解 1.怎么理解闭包? 函数里面包着另一个函数,并且内部函数可以访问外部函数的变量。 <script>function outer(){let count 0return functioninner (){countconsole.l…...
单次 CMS Old GC 耗时长问题分析与优化
目录 一、现象说明 二、CMS GC 机制简述 三、可能导致长时间停顿的原因详细分析 (一)Full GC(完全垃圾回收) 1. 主要原因 2.参数调整 (二)Promotion Failure(晋升失败) 1. 主…...
Python星球日记 - 第16天:爬虫基础(仅学习使用)
🌟引言: 上一篇:Python星球日记 - 第15天:综合复习(回顾前14天所学知识) 名人说:不要人夸颜色好,只留清气满乾坤(王冕《墨梅》) 创作者:Code_流苏…...
【回眸】Linux 内核 (十四)进程间通讯 之 信号量
前言 信号量概念 信号量常用API 1.创建/获取一个信号量 2.改变信号量的值 3. 控制信号量 信号量函数调用 运行结果展示 前言 上一篇文章介绍的共享内存有局限性,如:同步与互斥问题、内存管理复杂性问题、数据结构限制问题、可移植性差问题、调试困难问题。本篇博文介…...
Python 字典和集合(字典的变种)
本章内容的大纲如下: 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的 顺序,等等) 字典的变种 这一节总结了…...
LeetCode】寻找重复子树:深度解析与高效解法
📖 问题描述 给定一棵二叉树的根节点 root ,返回所有重复的子树。若两棵树结构相同且节点值相同,则认为它们是重复的。对于同类重复子树,只需返回其中任意一棵的根节点。 🌰 示例解析 示例1 输入: 1/ …...
[蓝桥杯] 挖矿(CC++双语版)
题目链接 P10904 [蓝桥杯 2024 省 C] 挖矿 - 洛谷 题目理解 我们可以将这道题中矿洞的位置理解成为一个坐标轴,以题目样例绘出坐标轴: 样例: 输入的5为矿洞数量,4为可走的步数。第二行输入是5个矿洞的坐标。输出结果为在要求步数…...
Appium如何实现移动端UI自动化测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 为什么要使用A…...
在集合中哪些可以为null,哪些不能为null;Java 集合中 null 值允许情况总结与记忆技巧
Java 集合中 null 值允许情况总结与记忆技巧 一、核心集合对 null 的支持情况 集合类型Key 是否可为 nullValue 是否可为 null原因/备注HashMap✅ 是✅ 是对 null key 有特殊处理(存放在数组第 0 个位置)LinkedHashMap✅ 是✅ 是继承自 HashMapTreeMap…...
Python 并发编程指南:协程 vs 多线程及其他模型比较
Python 并发编程指南:协程 vs 多线程及其他模型比较 并发编程是指在单个程序中同时处理多个任务的能力,这些任务可以交替进行(同一时刻并不一定真的同时运行),而并行则强调在同一时刻真正同时运行多个任务(…...
WPS JS宏编程教程(从基础到进阶)-- 第五部分:JS数组与WPS结合应用
目录 摘要第5章 JS数组与WPS结合应用5-1 JS数组的核心特性核心特性解析5-2 数组的两种创建方式(字面量与扩展操作符)1. 字面量创建2. 扩展操作符创建5-3 数组创建应用:提取字符串中的数字需求说明代码实现5-4 用函数创建数组(new Array、Array.of、Array.from)1. new Arra…...
STM32定时器完全指南:从基础原理到高级应用 | 零基础入门STM32第九十六步
主题内容教学目的/扩展视频TIM定时器重点课程定时器,捕获器,比较器,PWM,单脉冲。高级TIM。定时器中断。了解TIM使用 师从洋桃电子,杜洋老师 📑文章目录 一、定时器核心原理1.1 硬件架构解析1.2 核心参数公式…...
Kafka分区机制详解:原理、策略与应用
#作者:张桐瑞 文章目录 一、分区的作用二、分区策略(一)轮询策略(二)随机策略(三)按消息键保序策略 三、实际案例:消息顺序问题的解决四、其他分区策略:基于地理位置的分…...