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

数据结构:顺序表(Sequence List)及其实现

什么是顺序表?

顺序表是一种最简单的数据结构,它就像一排连续的小房子,每个房子里都住着一个数据元素。这些房子是按顺序排列的,每个房子都有一个门牌号(下标),我们可以通过门牌号快速找到对应的数据。

顺序表的核心特点是:数据在内存中是连续存储的。正因为数据是连续的,所以我们可以通过下标快速访问任意位置的元素。

顺序表的原理

顺序表的底层通常是用数组实现的。数组是一块连续的内存空间,每个元素都紧挨着存储。比如,我们定义一个数组 int arr[10],它就在内存中占用了 10 个连续的整数空间。

顺序表的优点:

  1. 访问速度快:通过下标可以直接访问元素,时间复杂度是 O(1)。

  2. 实现简单:用数组就能实现,代码容易理解。

顺序表的缺点:

  1. 插入和删除慢:如果要在中间插入或删除元素,需要移动大量数据,时间复杂度是 O(n)。

  2. 大小固定:数组的大小是固定的,如果数据量超过数组容量,需要重新分配更大的空间。

  3. 顺序表的基本操作

    顺序表的基本操作包括:增、删、查、改。下面我们用大白话解释这些操作。

  4. 增加元素

    • 在顺序表的末尾添加一个元素很简单,直接放到最后一个空位就行。

    • 如果要在中间插入元素,就需要把后面的元素都往后挪,腾出位置。

  5. 删除元素

    • 删除末尾元素很简单,直接丢掉就行。

    • 如果删除中间的元素,就需要把后面的元素都往前挪,填补空缺。

  6. 查找元素

    • 通过下标可以直接找到元素,速度很快。

    • 如果要根据值查找元素,需要从头到尾遍历,直到找到目标。

  7. 修改元素

    • 通过下标找到元素后,直接修改它的值就行。

C 语言实现顺序表

下面是一个简单的顺序表实现代码,包含初始化、插入、删除、查找和打印功能。

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100  // 定义顺序表的最大容量// 定义顺序表结构体
typedef struct {int data[MAX_SIZE];  // 用数组存储数据int length;          // 当前顺序表的长度
} SeqList;// 初始化顺序表
void InitList(SeqList *list) {list->length = 0;  // 初始长度为 0
}// 插入元素
int InsertList(SeqList *list, int index, int value) {if (index < 0 || index > list->length || list->length == MAX_SIZE) {return -1;  // 插入位置不合法或顺序表已满}// 将插入位置后的元素往后挪for (int i = list->length; i > index; i--) {list->data[i] = list->data[i - 1];}list->data[index] = value;  // 插入新元素list->length++;             // 长度加 1return 0;
}// 删除元素
int DeleteList(SeqList *list, int index) {if (index < 0 || index >= list->length) {return -1;  // 删除位置不合法}// 将删除位置后的元素往前挪for (int i = index; i < list->length - 1; i++) {list->data[i] = list->data[i + 1];}list->length--;  // 长度减 1return 0;
}// 查找元素
int FindList(SeqList *list, int value) {for (int i = 0; i < list->length; i++) {if (list->data[i] == value) {return i;  // 返回元素的下标}}return -1;  // 未找到
}// 打印顺序表
void PrintList(SeqList *list) {printf("顺序表内容:");for (int i = 0; i < list->length; i++) {printf("%d ", list->data[i]);}printf("\n");
}int main() {SeqList list;InitList(&list);  // 初始化顺序表// 插入元素InsertList(&list, 0, 10);  // 在第 0 个位置插入 10InsertList(&list, 1, 20);  // 在第 1 个位置插入 20InsertList(&list, 2, 30);  // 在第 2 个位置插入 30PrintList(&list);          // 打印顺序表// 删除元素DeleteList(&list, 1);  // 删除第 1 个位置的元素PrintList(&list);      // 打印顺序表// 查找元素int index = FindList(&list, 30);if (index != -1) {printf("元素 30 的下标是:%d\n", index);} else {printf("未找到元素 30\n");}return 0;
}
顺序表的使用场景
  1. 数据量固定且需要快速访问:比如存储一周的温度数据,数据量固定,且需要快速访问某一天的温度。

  2. 简单的数据存储:比如存储学生的成绩列表,数据量不大,且不需要频繁插入和删除。

  3. 作为其他数据结构的基础:顺序表是很多高级数据结构(如栈、队列)的基础。

下面是一个顺序表的示意图:

下标: 0    1    2    3    4
数据:[10, 20, 30, 40, 50]
长度:5
  • 每个格子代表一个数据元素,下标从 0 开始。

  • 数据是连续存储的,就像一排小房子。


顺序表与数组的区别

顺序表和数组看起来很相似,但它们之间有一些关键的区别。为了更好地理解,我们可以把顺序表看作是一个“高级版”的数组,它在数组的基础上增加了一些功能和灵活性。


1. 数组是什么?

数组是一种最基本的数据结构,它是一块连续的内存空间,用来存储相同类型的数据。比如:

int arr[5] = {10, 20, 30, 40, 50};

数组的特点是:

  • 大小固定:数组一旦定义,大小就不能改变了。

  • 直接访问:通过下标可以快速访问任意位置的元素。

  • 功能单一:数组只负责存储数据,没有额外的功能(比如动态扩容)。


2. 顺序表是什么?

顺序表是基于数组实现的,但它比数组更“智能”。顺序表不仅用数组存储数据,还记录了当前存储的元素个数(长度),并提供了一些常用的操作(比如插入、删除、查找等)。

顺序表的特点是:

  • 动态管理:顺序表可以动态管理数据,比如插入、删除元素。

  • 长度可变:顺序表的长度可以根据需要变化(虽然底层数组大小固定,但可以通过重新分配数组实现扩容)。

  • 功能丰富:顺序表封装了常用的操作,使用起来更方便。


3. 顺序表和数组的区别
特性数组顺序表
大小固定大小,定义后不能改变可以动态扩容(需要重新分配内存)
长度管理需要手动记录有效元素个数内部记录长度,方便管理
功能只提供存储和访问功能提供插入、删除、查找等操作
灵活性较低,适合数据量固定的场景较高,适合数据量变化的场景
实现复杂度简单较复杂,需要封装更多功能

4. 代码对比

数组的用法:

int arr[5] = {10, 20, 30, 40, 50};  // 定义一个数组
arr[2] = 100;  // 修改第 3 个元素
printf("%d\n", arr[2]);  // 访问第 3 个元素

顺序表的用法:

// 定义顺序表
typedef struct {int data[100];  // 底层数组int length;     // 当前长度
} SeqList;// 插入元素
void InsertList(SeqList *list, int index, int value) {// 插入逻辑(需要移动元素)
}// 删除元素
void DeleteList(SeqList *list, int index) {// 删除逻辑(需要移动元素)
}// 使用顺序表
SeqList list;
list.length = 0;  // 初始化长度
InsertList(&list, 0, 10);  // 插入元素
DeleteList(&list, 0);      // 删除元素

从代码中可以看出,顺序表比数组更“高级”,它封装了更多的功能,使用起来更方便。


5. 使用场景对比

数组的使用场景:

  • 数据量固定,比如存储一周的天数(7 天)。

  • 只需要简单的存储和访问,不需要频繁插入和删除。

顺序表的使用场景:

  • 数据量不确定,比如存储用户输入的数据。

  • 需要频繁插入、删除、查找等操作。


6. 图片对比

数组示意图:

下标: 0    1    2    3    4
数据:[10, 20, 30, 40, 50]
  • 数组的大小固定为 5,无法动态扩展。

顺序表示意图:

下标: 0    1    2    3    4    5    6    7
数据:[10, 20, 30, 40, 50,  _,  _,  _]
长度:5
  • 顺序表的底层数组大小可以更大(比如 8),但只使用了前 5 个位置。

  • 可以通过插入操作动态增加数据。

总结
  • 数组是最基础的数据结构,适合数据量固定、操作简单的场景。

  • 顺序表是基于数组实现的“高级版”,适合数据量变化、操作复杂的场景。

顺序表是一种简单而实用的数据结构,适合数据量固定且需要快速访问的场景。它的实现简单,但插入和删除操作效率较低。通过学习顺序表,我们可以更好地理解更复杂的数据结构。希望这篇文章能帮你轻松掌握顺序表!

版权声明:本文为原创文章,转载请注明出处。

相关文章:

数据结构:顺序表(Sequence List)及其实现

什么是顺序表&#xff1f; 顺序表是一种最简单的数据结构&#xff0c;它就像一排连续的小房子&#xff0c;每个房子里都住着一个数据元素。这些房子是按顺序排列的&#xff0c;每个房子都有一个门牌号&#xff08;下标&#xff09;&#xff0c;我们可以通过门牌号快速找到对应…...

微信云开发小程序音频播放踩坑记录 - 从熄屏播放到iOS静音

在开发小程序冥想功能时,我们遇到了几个棘手的问题:用户反馈手机熄屏后音频停止、iOS设备播放没声音、冥想音频没有访问计数和CDN缓存优化等。本文将分享这些问题的解决过程和实践经验。 微信小程序简称&#xff1a;Moodo 微信小程序全程&#xff1a;AIMoodo心情日记系统 简…...

Python基础

https://www.w3schools.com/https://docs.python.org/3/ Python 介绍 Python是跨平台的&#xff0c;它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序&#xff0c;放到Linux上也是能够运行的。 要开始学习Python编程&#xff0c;首先就得把Python安装…...

基于Go语言 XTA AI聊天界面实现

项目开源地址: XTA-AI-SDK 人工智能技术的迅速发展&#xff0c;AI聊天应用变得越来越流行。本文将介绍如何使用Go语言和LCL库&#xff08; Lazarus Component Library&#xff09;创建一个功能丰富的AI聊天界面。项目主要包含以下模块&#xff1a; 项目背景 本项目旨在为开发…...

线上项目报错OOM常见原因、排查方式、解决方案

概述 OutOfMemoryError&#xff08;OOM&#xff09;是 Java 应用程序中常见的问题&#xff0c;通常是由于应用程序占用的内存超过了 JVM 分配的最大内存限制。在 Spring Boot 项目中&#xff0c;OOM 问题可能由多种原因引起。 1. OOM 的常见原因 OOM 通常由以下几种情况引起&…...

AI大模型零基础学习(6):多模态大模型实战——让AI看懂世界

从“文字交互”到“全感官认知”的维度突破 一、多模态大模型&#xff1a;AI的“五感觉醒” 1.1 基础概念重塑 单模态局限&#xff1a;传统大模型仅处理文本&#xff08;如ChatGPT&#xff09; 多模态进化&#xff1a; 输入&#xff1a;支持文本、图像、音频、视频、3D模型 …...

基于Spring Boot+Vue的宠物服务管理系统(源码+文档)

项目简介 宠物服务管理系统实现了以下功能&#xff1a; 基于Spring BootVue的宠物服务管理系统的主要使用者分为用户管理模块&#xff0c;由于系统运行在互联网络中&#xff0c;一些游客或者病毒恶意进行注册&#xff0c;产生大量的垃圾用户信息&#xff0c;管理员可以对这些…...

简要分析LeetCode树经典题目(Java)

目录 开场白 实战环节 准备工作 遍历问题 LeetCode144. 二叉树的前序遍历 方法一 方法二 LeetCode94. 二叉树的中序遍历 LeetCode145. 二叉树的后序遍历 方法一 方法二 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 LeetCode107. 二叉树的…...

vue3开发打年兽功能

1.效果 WeChat_20250217192041 2.代码 2.1 index.vue <template><div class"pages"><TopNavigationYleftTitle"打年兽"ruleIconColor"#fff"backgroundImage""svgIpcn"backIcon4"gradientBackgroundColor&q…...

动手学Agent——Day2

文章目录 一、用 Llama-index 创建 Agent1. 测试模型2. 自定义一个接口类3. 使用 ReActAgent & FunctionTool 构建 Agent 二、数据库对话 Agent1. SQLite 数据库1.1 创建数据库 & 连接1.2 创建、插入、查询、更新、删除数据1.3 关闭连接建立数据库 2. ollama3. 配置对话…...

如何在 GitHub 中创建一个空目录 ?

GitHub 是开发人员必不可少的工具&#xff0c;它提供了存储、共享和协作代码的平台。一个常见的问题是如何在 GitHub 存储库中创建一个空目录或文件夹。GitHub 不支持直接创建空目录。但是&#xff0c;有一种解决方法是使用一个虚拟文件&#xff0c;通常是一个 .gitkeep 文件。…...

3. 导入官方dashboard

官方dashboard&#xff1a;https://grafana.com/grafana/dashboards 1. 点击仪表板 - 新建 - 导入 注&#xff1a;有网络的情况想可以使用ID&#xff0c;无网络情况下使用仪表板josn文件 2. 在官方dashboard网页上选择符合你现在数据源的dashboard - 点击进入 3. 下拉网页选…...

前端知识速记--HTML篇:HTML5的新特性

前端知识速记–HTML篇&#xff1a;HTML5的新特性 一、语义化标签 HTML5引入了许多新的语义化标签&#xff0c;如 <header>、<footer>、<article>、<section> 等。这些标签不仅提高了网页的可读性和结构性&#xff0c;还有助于SEO&#xff08;搜索引擎…...

【数据分享】1929-2024年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站…...

鸿蒙面试题

1.0penHarmony的系统架构是怎样的? 2.电话服务的框架? 3.OpenHarmony与HarmonyOS有啥区别?...

pdf-extract-kit paddle paddleocr pdf2markdown.py(效果不佳)

GitHub - opendatalab/PDF-Extract-Kit: A Comprehensive Toolkit for High-Quality PDF Content Extraction https://github.com/opendatalab/PDF-Extract-Kit pdf2markdown.py 运行遇到的问题&#xff1a; 错误&#xff1a; -------------------------------------- C Tra…...

基于STM32、HAL库、RX8025T(I2C接口)驱动程序设计

一、简介: RX8025T 是一款低功耗、高精度的实时时钟芯片,具有以下特性: I2C 接口通信 内置 32.768 kHz 晶振 提供秒、分、时、日、月、年等时间信息 支持温度补偿,提高时间精度 低功耗设计,适合电池供电的应用 二、I2C初始化: #include "stm32l4xx_hal.h&…...

基于Ubuntu+vLLM+NVIDIA T4高效部署DeepSeek大模型实战指南

一、 前言&#xff1a;拥抱vLLM与T4显卡的强强联合 在探索人工智能的道路上&#xff0c;如何高效地部署和运行大型语言模型&#xff08;LLMs&#xff09;一直是一个核心挑战。尤其是当我们面对资源有限的环境时&#xff0c;这个问题变得更加突出。原始的DeepSeek-R1-32B模型虽…...

【Go语言快速上手】第二部分:Go语言进阶之并发编程

文章目录 一、并发编程1. goroutine&#xff1a;创建和调度 goroutine2. channel&#xff1a;无缓冲 channel、有缓冲 channel、select 语句2.1 无缓冲 channel2.2 有缓冲 channel2.3 select 语句 3. sync 包&#xff1a;Mutex、RWMutex、WaitGroup 等同步原语3.1 Mutex&#x…...

《机器学习数学基础》补充资料:四元数、点积和叉积

《机器学习数学基础》第1章1.4节介绍了内积、点积的有关概念&#xff0c;特别辨析了内积空间、欧几里得空间&#xff1b;第4章4.1.1节介绍了叉积的有关概念&#xff1b;4.1.2节介绍了张量积&#xff08;也称外积&#xff09;的概念。 以上这些内容&#xff0c;在不同资料中&…...

蓝桥杯篇---IAP15F2K61S2矩阵键盘

文章目录 前言简介矩阵键盘的工作原理1.行扫描2.检测列状态3.按键识别 硬件连接1.行线2.列线 矩阵键盘使用步骤1.初始化IO口2.扫描键盘3.消抖处理4.按键识别 示例代码&#xff1a;4x4矩阵键盘扫描示例代码&#xff1a;优化后的矩阵键盘扫描注意事项1.消抖处理2.扫描频率3.IO口配…...

通过小型语言模型尽可能简单地解释 Transformer

介绍 在过去的几年里&#xff0c;我阅读了无数关于 Transformer 网络的文章&#xff0c;观看了许多视频。其中大部分都非常好&#xff0c;但我很难理解 Transformer 架构&#xff0c;而其背后的主要直觉&#xff08;上下文敏感嵌入&#xff09;则更容易掌握。在做演讲时&#…...

GcExcel

GcExcel 简述:GcExcel Java 是一款基于 Java 平台,支持批量创建、编辑、打印、导入/导出Excel文件的服务端表格组件,能够高性能处理和高度兼容 Excel。功能特性(图1)文档查询(图2)...

封装红黑树实现map和set

" 喜欢了你十年&#xff0c;却用整个四月&#xff0c;编织了一个不爱你的谎言。 " 目录 1 源码及其框架分析 2 模拟实现map和set 2.1 实现出复用红黑树的框架 2.2 支持iterator迭代器的实现 2.2.1 代码实现和--这两个运算符 2.3 map支持[ ] Hello&#xff0c;大家…...

Redis进阶使用

在日常工作中&#xff0c;使用Redis有什么需要注意的&#xff1f; 设置合适的过期时间。尽量避免大key问题&#xff0c;避免用字符串存储过大的数据&#xff1b;避免集合的数据量太大&#xff0c;要定期清除。 常用的数据结构有哪些&#xff1f;用在什么地方&#xff1f; 按…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第四节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;Read DTC Information0x19服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年2月13日 关键词&#xff1a;UDS诊断协议、0x19服务、DTC信息读取、ISO 14229-1:2023、ECU测试 一、服务功能…...

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先&#xff0c;需要安装 serialport 库。可以通过 npm 安装&#xff1a;…...

vue3+elementplus新建项目

更新node.js和npm node.js官网更新指南 可以根据自己的操作系统进行选择 我的电脑操作系统是mac os所以我的步骤如下 # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# in lieu of restarting the shell \. &…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

VLSM基础知识

VLSM&#xff08;Variable Length Subnet Mask&#xff0c;变长子网掩码&#xff09;是一种更灵活的子网划分技术&#xff0c;允许在同一网络中使用不同长度的子网掩码&#xff0c;以满足不同子网对主机数量的需求&#xff0c;最大化IP地址利用率。 一、基础概念 传统子网划分…...

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明&#xff1a; 仅供损害电脑&#xff0c;不得用于非法。损坏电脑&#xff0c;作者一律不负责。此作为作者原创&#xff0c;转载请经过同意。 欢迎来到小小小病毒&#xff08;3&#xff09; 感谢大家的支持 还是那句话&#xff1a;上代码&#xff01; …...

WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程

在当今数字化时代&#xff0c;音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者&#xff0c;正携手为智能硬件的音视频通讯注入强大动力&#xff0c;开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…...

Lua 数据库访问

Lua 数据库访问 引言 Lua 是一种轻量级的编程语言,因其简洁性和高效性,常被用于游戏开发、嵌入系统和应用程序开发。在许多情况下,数据库访问是应用程序的核心功能之一。本文将深入探讨在 Lua 中如何进行数据库访问,包括连接数据库、执行查询、处理结果以及异常处理等。 …...

rtsp rtmp 跟 http 区别

SDP 一SDP介绍 1. SDP的核心功能 会话描述&#xff1a;定义会话的名称、创建者、时间范围、连接地址等全局信息。媒体协商&#xff1a;明确媒体流的类型&#xff08;如音频、视频&#xff09;、传输协议&#xff08;如RTP/UDP&#xff09;、编码格式&#xff08;如H.264、Op…...

蓝桥杯篇---IAP15F2K61S2串口

文章目录 前言简介串口通信的基本参数1.波特率2.数据位3.停止位4.校验位 串口相关寄存器1.SCON2.SBUF3.PCON4.TMOD5.TH1/TL1 串口使用步骤1.配置波特率2.配置串口模式3.使能串口中断4.发送数据5.接收数据6.处理中断 示例代码&#xff1a;串口发送与接收示例代码&#xff1a;串口…...

Linux 远程文件复制传输-----scp/rsync/sftp

scp&#xff08;Secure Copy Protocol&#xff09;是基于 SSH 的安全文件传输工具&#xff0c;可用于在本地和远程计算机之间复制文件或目录。 1. scp&#xff08;基于 SSH 复制文件&#xff09; a. 复制文件到远程 从本地复制到远程 scp localfile.txt userremote_host:/remo…...

企业文件安全:零信任架构下的文件访问控制

在企业数字化转型的进程中&#xff0c;传统的文件访问控制模型已难以满足日益复杂的网络安全需求。零信任架构作为一种新兴的安全理念&#xff0c;为企业的文件安全访问提供了全新的解决方案。 一、传统文件访问控制的局限性 传统的文件访问控制主要基于网络边界&#xff0c;…...

用deepseek学大模型05-线性回归

deepseek.com:多元线性回归的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c;预测结果的可视化展示&#xff0c; 模型应用场景和优缺点&#xff0c;及如何改进解决及改进方法数据推…...

2009年下半年软件设计师上午真题的知识点整理(附真题及答案解析)

以下是2009年下半年软件设计师上午真题的知识点分类整理&#xff0c;涉及定义的详细解释&#xff0c;供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度&#xff0c;减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和辅存…...

Element Plus table 去除行hover效果

需求&#xff1a; 给table的指定行设置高亮背景色且去除掉这些行的hover效果 思路&#xff1a; 给指定行设置css类名选择需要设置高亮的行的单元格&#xff0c;设置鼠标禁用属性让高亮行继承父元素的背景色 考虑到表格的第一列是勾选框&#xff0c;因此仅选择 tr 下除了第一…...

2010年下半年软件设计师考试上午真题的知识点整理(附真题及答案解析)

以下是2010年下半年软件设计师考试上午真题的知识点分类整理&#xff0c;涉及定义的详细解释&#xff0c;供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度&#xff0c;减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和…...

Mac Golang 开发环境配置

Mac Golang 开发环境配置 Golang 介绍 Go&#xff08;又称Golang&#xff09;是Google开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言。 由罗伯特格瑞史莫&#xff0c;罗勃派克&#xff08;Rob Pike&#xff09;及肯汤普逊于2007年9月开始设计…...

计算机视觉中图像的基础认知

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络 一、图像/视频的基本属性…...

理解 WebGPU 中的 navigator.gpu 和 adapter:从浏览器到显卡的旅程

WebGPU 是一种现代图形 API&#xff0c;旨在为 Web 应用程序提供高性能的图形和计算功能。作为 WebGL 的继任者&#xff0c;WebGPU 提供了更底层的硬件访问和更高效的性能。在 WebGPU 开发中&#xff0c;navigator.gpu 是访问 WebGPU API 的入口点&#xff0c;而 adapter 则是浏…...

【ESP32 IDF】ESP32 linux 环境搭建

ESP32 linux 环境搭建 1. 开发环境2. linux指令 1. 开发环境 liunx镜像 liunx镜像地址 &#xff1a; https://mirrors.xjtu.edu.cn/ubuntu-releases/20.04.6/ubuntu-20.04.6-live-server-amd64.iso 有提示你装openssl&#xff0c;务必装上 2. linux指令 工具 sudo apt-get …...

react传递函数与回调函数原理

为什么 React 允许直接传递函数&#xff1f; 回调函数核心逻辑 例子&#xff1a;父组件控制 Modal 的显示与隐藏 // 父组件 (ParentComponent.tsx) import React, { useState } from react; import { Modal, Button } from antd; import ModalContent from ./ModalContent;co…...

目标检测IoU阈值全解析:YOLO/DETR模型中的精度-召回率博弈与工程实践指南

一、技术原理与数学本质 IoU计算公式&#xff1a; IoU \frac{Area\ of\ Overlap}{Area\ of\ Union} \frac{A ∩ B}{A ∪ B}阈值选择悖论&#xff1a; 高阈值&#xff08;0.6-0.75&#xff09;&#xff1a;减少误检&#xff08;FP↓&#xff09;但增加漏检&#xff08;FN↑…...

使用grafana v11 建立k线(蜡烛图)仪表板

先看实现的结果 沪铜主力合约 2025-02-12 的1分钟k线图 功能介绍: 左上角支持切换主力合约,日期,实现动态加载数据. 项目背景: 我想通过前端展示期货指定品种某1天的1分钟k线,类似tqsdk 的web_gui 生成图形化界面— TianQin Python SDK 3.7.8 文档 项目架构: 后端: fastap…...

Ubuntu下载安装Docker-Desktop

下载 Ubuntu | Docker Docs 预备工作 Ubuntu增加docker apt库-CSDN博客 安装 sudo apt-get updatesudo apt install gnome-terminal# sudo apt install -y docker-composesudo apt-get install ./docker-desktop-amd64.deb 测试 sudo docker run hello-worldHello from D…...

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…...