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

穿透单链表的神秘屏障,洞察数据结构的真谛

在这里插入图片描述
❤个人主页:折枝寄北的博客
❤专栏位置:数据结构

在这里插入图片描述

单链表实现逻辑

  • 0. 前言
  • 1. 概念及结构
  • 2. 实现逻辑
    • 2.1 相关函数的声明
    • 2.2 函数代码实现
      • 2.2.1 打印
      • 2.2.2 创建新节点
      • 2.2.3 尾插
      • 2.2.4 头插
      • 2.2.5 尾删
      • 2.2.6 头删
      • 2.2.7 查找
      • 2.2.8 pos位置前插入
      • 2.2.9 pos位置的删除
      • 2.2.10 pos位置后插入
      • 2.2.11 pos位置后删除
  • 3. 测试逻辑

0. 前言

单链表的结构简单而精妙,每个节点仅包含一个数据元素和一个指向下一个节点的指针。这种结构使得单链表在处理动态数据时游刃有余,无论是数据的增删改查,都能以一种优雅的方式实现。与顺序表相比,单链表在内存使用上更加灵活,无需预先分配固定大小的空间,能够根据实际需求动态扩展,这使得它在处理大量数据时更具优势。
本篇文章将带你走进单链表的世界,从它的基本概念、结构特点,到各种常见操作的实现逻辑,我们将一一深入剖析。通过详细的代码示例和生动的解释,你将能够清晰地理解单链表的每一个细节,掌握其在实际编程中的应用技巧。无论你是数据结构的初学者,还是希望在编程中运用更高效数据结构的开发者,这篇文章都将为你提供宝贵的指导,帮助你在编程的道路上更进一步 。

1. 概念及结构

在这里插入图片描述
定义:
链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含两部分:数据域和指针域。数据域用于存储数据元素,指针域用于存储指向下一个节点的指针(或者地址)。链表的节点是动态分配的,不像数组那样在内存中连续存储。链表的这种结构使得它在插入和删除操作时具有较高的灵活性。

链表特点:

  1. 动态性
    链表的长度可以动态改变。在程序运行过程中,可以根据需要随时添加或删除节点。例如,在一个音乐播放器的播放列表中,用户可以随时添加新的歌曲(插入节点)或者删除不想要的歌曲(删除节点),链表能够很好地适应这种动态变化。

  2. 内存分配灵活
    链表的节点不需要在内存中连续存储。它可以在内存的任意位置分配节点空间,通过指针将节点连接起来。这使得链表能够更好地利用内存碎片。相比之下,数组需要连续的内存空间,当内存中没有足够大的连续空间时,数组可能无法分配足够的内存。

  3. 插入和删除操作方便
    在链表中插入和删除节点时,只需要修改相邻节点的指针即可。例如,在单链表中插入一个节点,只需要将前一个节点的指针指向新节点,再将新节点的指针指向原来的下一个节点。删除操作也是类似,只需要将前一个节点的指针直接指向要删除节点的下一个节点。而数组在插入和删除元素时,可能需要移动大量元素来保持数组的连续性,效率较低。

结构示例:
在这里插入图片描述

2. 实现逻辑

2.1 相关函数的声明

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>//重定义类型
typedef int SLTDataType;typedef struct SListNode
{SLTDataType data;//数据struct SListNode* next;//存下一个结构体地址的指针//SLTNode* next;  不可以这么写//SLTNode* next;  不可以这么写,在重定义前定义会编译报错}SLTNode;//打印链表
void SLTPrint(SLTNode* phead);//链表尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x);//链表头插
void SLTPushFront(SLTNode** pphead, SLTDataType x);//链表尾删
void SLTPopBack(SLTNode** pphead);//链表头删
void SLTPopFront(SLTNode** pphead);//链表查找
SLTNode* SListFind(SLTNode* phead, SLTDataType x);//pos位置前插入
void SListInsert(SLTNode** pphead,SLTNode* pos, SLTDataType x);//pos位置的删除
void SListErase(SLTNode** pphead, SLTNode* pos);//pos位置后插入
void SListInsertAfter(SLTNode* pos, SLTDataType x); //pos位置后删除
void SListInsertAfter(SLTNode* pos);

2.2 函数代码实现

2.2.1 打印

//打印
void SLTPrint(SLTNode* phead)
{//不用断言SLTNode* cur = phead;//while (cur != NULL)while (cur){printf("%d->", cur->data);cur = cur->next;//不可以写成cur++,指针虽然可以++//但是地址是连续的增加,而链表的地址不一定是连续的}printf("NULL\n");
}

2.2.2 创建新节点

//创建新结点
SLTNode* BuySLTNode(SLTDataType x)
{//申请新节点SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));//申请失败if (newnode == NULL){perror("malloc fail");return NULL;}//初始化新节点newnode->data = x;newnode->next = NULL;return newnode;
}

2.2.3 尾插

//链表尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = BuySLTNode(x);//如果链表本身为空if (*pphead == NULL){*pphead = newnode;}//不为空,新结点链接在尾部else{//找尾SLTNode* tail = *pphead;while (tail->next != NULL){tail = tail->next;}tail->next = newnode;}}

2.2.4 头插

//链表头插
void SLTPushFront(SLTNode** pphead, SLTDataType x)
{assert(pphead);SLTNode* newnode = BuySLTNode(x);newnode->next = *pphead;*pphead = newnode;
}

2.2.5 尾删

//链表尾删
void SLTPopBack(SLTNode** pphead)
{//链表为空//暴力检查assert(pphead);assert(*pphead != NULL);//温柔检查/*if (*pphead == NULL){free(*pphead);*pphead = NULL;}*///1.只有一个节点//2.多个结点if ((*pphead)->next == NULL){free(*pphead);*pphead = NULL;}找尾//SLTNode* prev = NULL;//SLTNode* tail = *pphead;//while (tail->next != NULL)//{//	prev = tail;//	tail = tail->next;//}//free(tail);//tail = NULL;//prev->next = NULL;//找尾SLTNode* tail = *pphead;while (tail->next->next!= NULL) {tail = tail->next;}free(tail->next); tail->next = NULL;
}

2.2.6 头删

//链表头删
void SLTPopFront(SLTNode** pphead)
{//链表为空,暴力检查是否可以删除assert(*pphead != NULL);SLTNode* first = *pphead;*pphead = first->next;free(first);first = NULL;
}

2.2.7 查找

//链表查找
SLTNode* SListFind(SLTNode* phead, SLTDataType x)
{//遍历SLTNode* cur = phead;while (cur){if (cur->data == x){return cur;}cur = cur->next;}return NULL;
}

2.2.8 pos位置前插入

//pos位置前插入
void SListInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x)
{//如果pos为空,进行判断处理assert(pos);if (pos == *pphead){SLTPushFront(pphead, x);}else{//找到pos的前一个位置SLTNode* prev = *pphead;while (prev->next!= pos){prev = prev->next;}SLTNode* newnode = BuySLTNode(x);prev->next = newnode;newnode->next = pos;}
}

2.2.9 pos位置的删除

//pos位置的删除
void SListErase(SLTNode** pphead, SLTNode* pos) 
{assert(pphead);assert(pos);//assert(*pphead);if (*pphead == pos){SLTPopFront(pphead);}else{//找到pos的前一个位置SLTNode* prev = *pphead;while (prev->next != pos){prev = prev->next;}prev->next = pos->next;//删除pos位置结点free(pos);}}

2.2.10 pos位置后插入

//pos位置后插入
void SListInsertAfter(SLTNode* pos, SLTDataType x)
{assert(pos);SLTNode* newnode = BuySLTNode(x);newnode->next = pos->next;pos->next = newnode;
}

2.2.11 pos位置后删除

```cpp
//pos位置后删除
void SListInsertAfter(SLTNode* pos) 
{assert(pos);assert(pos->next);SLTNode* del = pos->next;pos->next = del->next;free(del);del = NULL;
}

3. 测试逻辑

对每个函数都进行逻辑测试,检查是否存在运行错误即情况遗漏。

#include"SList.h"//void TestSList1()
//{
//	SLTNode** plist = NULL;
//	//尾插
//	SLTPushFront(&plist, 1);
//	SLTPushFront(&plist, 2);
//	SLTPushFront(&plist, 3);
//	SLTPushFront(&plist, 4);
//	SLTPrint(plist);
//
//	//SLTPushBack(&plist, 2);
//	//SLTPushBack(&plist, 3);
//	SLTPopBack(&plist);
//	SLTPrint(plist);
//
//	SLTPopBack(&plist);
//	SLTPrint(plist);
//
//	SLTPopBack(&plist);
//	SLTPrint(plist);
//}//void TestSList2()
//{
//	SLTNode** plist = NULL;
//	//尾插
//	SLTPushFront(&plist, 1);
//	SLTPushFront(&plist, 2);
//	SLTPushFront(&plist, 3);
//	SLTPushFront(&plist, 4);
//	SLTPrint(plist);
//
//	SLTPopFront(&plist);
//	SLTPrint(plist);
//
//	SLTPopFront(&plist);
//	SLTPrint(plist);
//
//	SLTPopFront(&plist);
//	SLTPrint(plist);
//
//	SLTPopFront(&plist);
//	SLTPrint(plist);
//}//void Func(int y)
//{
//	y = 1;
//}//void Func(int* p)
//{
//	*p = 1;
//	return p;
//}//void Func(int** ptr)
//{
//	*ptr = (int*)malloc(sizeof(int));
//}//void TestSList3()
//{
//	SLTNode* plist = NULL;
//	//尾插
//	SLTPushFront(&plist, 1);
//	SLTPushFront(&plist, 2);
//	SLTPushFront(&plist, 3);
//	SLTPushFront(&plist, 4);
//	SLTPrint(plist);
//
//	//把值为2的那个结点*2
//	SLTNode* ret = SListFind(plist, 2);
//	ret->data *= 2;
//	SLTPrint(plist);
//
//}void TestSList4()
{SLTNode* plist = NULL;//尾插SLTPushFront(&plist, 1);SLTPushFront(&plist, 2);SLTPushFront(&plist, 3);SLTPushFront(&plist, 4);SLTPushFront(&plist, 5);SLTPrint(plist);//把值为2的那个结点*2SLTNode* ret = SListFind(plist, 2);SListInsert(&plist,ret, 20);SLTPrint(plist);SListErase(&plist, ret);ret = NULL;SLTPrint(plist);
}
int main()
{/*TestSList1();TestSList2();*///TestSList3();//int* px = NULL;//Func(&px);//free(px);TestSList4();return 0;
}

感谢您的阅读支持!!!
后续会持续更新的!!!
文末投票支持一下!!!

在这里插入图片描述

相关文章:

穿透单链表的神秘屏障,洞察数据结构的真谛

❤个人主页&#xff1a;折枝寄北的博客 ❤专栏位置&#xff1a;数据结构 单链表实现逻辑 0. 前言1. 概念及结构2. 实现逻辑2.1 相关函数的声明2.2 函数代码实现2.2.1 打印2.2.2 创建新节点2.2.3 尾插2.2.4 头插2.2.5 尾删2.2.6 头删2.2.7 查找2.2.8 pos位置前插入2.2.9 pos位置…...

腾讯云智测试开发面经

1、投递时间线 2.20投递简历&#xff0c;3.11第一轮面试&#xff0c;3.30第二轮面试&#xff0c;4.4第三轮面试&#xff0c;4.10第四轮面试&#xff0c;4.11offer意向书 2、第一轮面试 第一轮面试技术面&#xff0c;面试官是导师&#xff0c;面试时长40多分钟 1&#xff09…...

react+antd封装一个可回车自定义option的select并且与某些内容相互禁用

需求背景 一个select框 现在要求可多选 并且原有一个any的选项 其他选项为输入后回车自己增加 若选择了any 则其他选项不可选择反之选择其他选项any不可选择 并且回车新增时也不可直接加入到选中数组只加入到option内 并且不可重复添加新内容 实现过程 <Form.Item …...

笔记1——数据通信网络基础

一、概述 数据通信网络&#xff1a;由路由器、交换机、防火墙、无线设备以终端构成的网络 功能&#xff1a;实现数据互通 二、网络设备 交换机&#xff1a; 特点&#xff1a;距离终端用户最近的设备 作用&#xff1a;终端接入、二层交换机 广播域:交换机连接的终端构成一个广播…...

全国产FMC子卡-16bit 8通道2.4G

国产化FMC DA子卡&#xff0c;16bit 8通道2.4GS/s 全国产FMC子卡是一款高分辨率、高采样率的全国产多通道标准双宽DAC FMC子板。其接口电气和结构设计均依据FMC标准(ANSI/VITA 57.1)&#xff0c;通过两个高密度FMC连接器&#xff08;HPC&#xff09;连接至FPGA载板。它提供8路A…...

ZLMediaKit 源码分析——[4] ZLToolKit 中EventPoller之异步任务处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一&#xff1a;获取音频和视频设备 第五篇 WebRTC学习二&#xff1a;WebRTC音视频数据采集 第六篇 WebRTC学习三…...

基于 DeepSeek 与天地图搭建创新地理信息应用

一、技术背景 DeepSeek 是由国内公司研发的一款具有强大参数规模与性能的大语言模型&#xff0c;它能够处理复杂的自然语言指令&#xff0c;提供丰富的分析与建议。天地图则是国家地理信息公共服务平台&#xff0c;提供权威、丰富的地理信息数据&#xff0c;涵盖卫星影像、矢量…...

python函数装饰器

python函数装饰器 声明&#xff1a;博主并没有系统学习过python语言&#xff0c;在实际项目中遇到关于python不懂的语法&#xff0c;这里仅作为个人学习积累笔记 1.1 python函数相关基础 深入了解python函数装饰器移步&#xff1a;Python 函数装饰器 下面的笔记来源于上述链接…...

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…...

Modbus TCP转profibusDP网关接防撞雷达快速配置

Modbus TCP转profibusDP网关接防撞雷达快速配置 在工业自动化领域中&#xff0c;不同的设备可能使用不同的通信协议。当需要将使用 ModbusTCP 协议的防撞雷达连接到ProfibusDP网络时&#xff0c;需要使用协议转换器来实现协议的转换。 本文将详细介绍如何通过ModbusTCP转Profi…...

O(1) 时间复杂度数据设计题

0x00 preface 所谓 O ( 1 ) O(1) O(1) A P I API API 设计&#xff0c;并不是说&#xff0c;时间复杂度必须是**“总是”常数级别的。 对于一个操作来说&#xff0c;如果他偶尔是 O ( N ) O(N) O(N) 的&#xff0c;大部分时间都是 O ( 1 ) O(1) O(1) 的&#xff0c;并且&a…...

基于Spring AI与Ollama构建本地DeepSeek对话机器人

1、安装ollama&#xff1a; 打开Ollama下载官网&#xff0c;根据自己的操作系统下载相应版本的安装文件。 由于Ollama默认安装在C盘&#xff0c;而Ollama和模型文件都非常大&#xff0c;如果安装在C盘非常占用系统空间&#xff0c;可以使用下面的方法将Ollama安装到指定为止 …...

边缘计算赋能淘宝API:分布式节点缓存降低高并发延迟

以下是关于 “边缘计算赋能淘宝 API&#xff1a;分布式节点缓存降低高并发延迟” 的相关内容介绍&#xff1a; 背景 淘宝作为大型电商平台&#xff0c;每天面临海量的用户访问和高并发请求。在传统的集中式计算架构下&#xff0c;处理如此大规模的请求容易导致网络延迟、响应速…...

Keepalived+LVS+nginx高可用架构

注明&#xff1a;所有软件已经下载好&#xff0c;防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…...

CMake学习--如何在CMake中编译静态库、动态库并在主程序中调用

目录 一、背景知识二、使用方法&#xff08;一&#xff09;编译静态库&#xff08;二&#xff09;编译动态库&#xff08;三&#xff09;在主程序中调用库 三、总结 一、背景知识 在C/C开发中&#xff0c;库&#xff08;Library&#xff09;是预先编译好的代码集合&#xff0c…...

技术回顾day3

1.获取文件信息、获取视频信息 走的都是同一个方法&#xff1a;baseController里面的getFile。 在getFile方法里面进行判断文件的类型&#xff0c;判断是不是m3u8类型或者ts类型做一些额外的处理。 获取信息底层就是读取文件&#xff0c;然后写入response的OutputStream ou…...

【dp + 裴蜀定理】P8646 [蓝桥杯 2017 省 AB] 包子凑数 题解

P8646 [蓝桥杯 2017 省 AB] 包子凑数 题解 题目传送门 P8646 [蓝桥杯 2017 省 AB] 包子凑数 一、题目描述 小明发现包子铺有N种蒸笼&#xff0c;每种能放A_i个包子&#xff08;无限供应&#xff09;。问有多少个正整数X无法被这些蒸笼数量的组合表示出来。若无限多个则输出…...

在HarmonyOS NEXT 开发中,如何指定一个号码,拉起系统拨号页面

大家好&#xff0c;我是 V 哥。 《鸿蒙 HarmonyOS 开发之路 卷1 ArkTS篇》已经出版上市了哈&#xff0c;有需要的朋友可以关注一下&#xff0c;卷2应用开发篇也马上要出版了&#xff0c;V 哥正在紧锣密鼓的写鸿蒙开发实战卷3的教材&#xff0c;卷3主要以项目实战为主&#xff0…...

网络华为HCIA+HCIP 策略路由,双点双向

目录 路由策略&#xff0c;策略路由 策略路由优势 策略路由分类 接口策略路由 双点双向 双点双向路由引入特点: 联系 路由回灌和环路问题 路由策略&#xff0c;策略路由 路由策略:是对路由条目进行控制&#xff0c;通过控制路由条目影响报文的转发路径&#xff0c;即路…...

探索Doris:日志分析的新宠,是否能取代老牌ES?

在大数据时代&#xff0c;日志存储与分析对于企业的运营和决策起着至关重要的作用。Elasticsearch&#xff08;简称 ES&#xff09;作为一款广泛应用的开源分布式搜索和分析引擎&#xff0c;长期以来在日志管理领域占据着举足轻重的地位。然而&#xff0c;随着技术的不断发展&a…...

常见电源模块设计

目录 1. 5V电源模块 2. 3.3V电源模块 3. 1.9V电源模块 4. 220V转12V电源模块 1. 5V电源模块 参考电路 电路说明&#xff1a; 这个电路采用的是稳压芯片78L05&#xff0c;我是用的12V的电源模块转成为5V,为后续的供电。 2. 3.3V电源模块 参考电路&#xff1a; 电路说明…...

虚幻引擎控制角色跟随移动方向旋转的方法

在UE5中&#xff0c;要控制角色随移动方向旋转&#xff0c;可以使用蓝图和C两种方式来实现。 使用蓝图 1、选中角色移动组件&#xff0c;勾选将旋转朝向运动。 2、选中当前角色类 取消勾选使用控制器旋转的几个选项 3、这时&#xff0c;摄像机会跟着角色一起旋转。如果不希望…...

Oracle 23ai Vector Search 系列之3 集成嵌入生成模型(Embedding Model)到数据库示例,以及常见错误

文章目录 Oracle 23ai Vector Search 系列之3 集成嵌入生成模型&#xff08;Embedding Model&#xff09;到数据库示例&#xff0c;以及常见错误使用安装了Oracle 23ai 的虚拟机&#xff08;Oracle Database 23ai Free VirtualBox Appliance&#xff09;1.下载[Oracle VM Virtu…...

RISC-V debug专栏2 --- Debug Module(DM)

Debug Module&#xff08;DM&#xff09;的核心功能 DM 就像一个翻译官&#xff0c;负责把调试器的抽象指令&#xff08;比如 “暂停处理器”&#xff09;转换成硬件能听懂的具体操作。它必须实现以下基本功能&#xff1a; 必要功能&#xff08;必须实现&#xff09;&#xff…...

LLM 分词器Tokenizer 如何从 0 到 1 训练出来

写在前面 大型语言模型(LLM)处理的是人类的自然语言,但计算机本质上只能理解数字。Tokenizer(分词器) 就是架在自然语言和计算机数字表示之间的一座至关重要的桥梁。它负责将我们输入的文本字符串分解成模型能够理解的最小单元——Token,并将这些 Token 转换成对应的数字…...

蓝桥杯冲刺:一维前缀和

系列文章目录 蓝桥杯系列&#xff1a;一维前缀和 文章目录 系列文章目录前言一、暴力的写法&#xff1a;二、一维前缀和的模板&#xff1a; 具体实现&#xff1a; 三、具体例题&#xff1a;求和 1.题目参考&#xff1a;2.以下是具体代码实现&#xff1a; 总结 前言 上次我介绍…...

光学关键尺寸量测设备市场报告:2024年全球市场销售额达到了14.75亿美元

一、引言 光学关键尺寸量测设备作为半导体制造、精密加工等领域的核心工具&#xff0c;其重要性不言而喻。随着科技的飞速发展&#xff0c;这些设备在提升产品精度、缩短研发周期、降低生产成本等方面发挥着越来越关键的作用。本报告旨在深入分析光学关键尺寸量测设备的技术特…...

链表的操作-反转链表

链表 160相交链表 代码 class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* h1headA;ListNode* h2headB;while(h1&&h2){if(h1!h2){h1h1->next;h2h2->next;}else{return h1;}}if(h1nullptr){h1headB;}else{h…...

2025 年浙江危化品经营单位考试攻略分享​

浙江的考试由省应急管理部门主导。理论考试突出危化品在电商、物流等新兴业态下的安全管理知识&#xff0c;这与浙江发达的电商产业紧密相关。对危险化学品的环境危害及防治知识考查细致。实际操作考核模拟杭州、宁波等地危化品仓储物流中心的作业情况。​ 报名材料准备齐全后…...

python使用cookie、session、selenium实现网站登录(爬取信息)

一、使用cookie 这段代码演示了如何使用Python的urllib和http.cookiejar模块来实现网站的模拟登录&#xff0c;并在登录后访问需要认证的页面。 # 导入必要的库 import requests from urllib import request, parse# 1. 导入http.cookiejar模块中的CookieJar类&#xff0c;用…...

STM32开发板上生成PWM正弦波

在STM32开发板上生成正弦波通常需要结合定时器&#xff08;TIM&#xff09;、数模转换器&#xff08;DAC&#xff09;或脉宽调制&#xff08;PWM&#xff09;以及时钟系统的配置。以下是分步指南&#xff1a; 方法1&#xff1a;使用DAC 定时器&#xff08;推荐&#xff09; 步…...

Spring Boot 实现文件秒传功能

前言 在开发Web应用时&#xff0c;文件上传是一个常见需求。然而&#xff0c;当用户需要上传大文件或相同文件多次时&#xff0c;会造成带宽浪费和服务器存储冗余。此时可以使用文件秒传技术通过识别重复文件&#xff0c;实现瞬间完成上传的效果&#xff0c;大大提升了用户体验…...

【Vue2】数据绑定_MVVM模型_数据代理_事件处理

目录 一、 数据绑定 1. Vue中有2种数据绑定的方式&#xff1a; 2. 响应式原理 el 与 data 的两种写法 二、 MVVM模型 三、 数据代理 1.回顾Object defineproperty方法 2. 何为数据代理 3.Vue中的数据代理 四、 事件处理 1.事件的基本使用&#xff1a; 2. Vue中的事…...

Python数据类型-dict

Python数据类型-dict 字典是Python中一种非常强大且常用的数据类型&#xff0c;它使用键-值对(key-value)的形式存储数据。 1. 字典的基本特性 无序集合&#xff1a;字典中的元素没有顺序概念可变(mutable)&#xff1a;可以动态添加、修改和删除元素键必须唯一且不可变&…...

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…...

解决Oracle PL/SQL中“表或视图不存在“错误的完整指南

解决Oracle PL/SQL中"表或视图不存在"错误的完整指南 前言问题概述根本原因分析一、 编译时与运行时验证差异二、权限问题三、 Schema命名问题 实际案例演示案例1&#xff1a;动态分表查询案例2&#xff1a;权限不足的场景 实用排查步骤排查流程图最佳实践建议解决方…...

从实用的角度聊聊Linux下文本编辑器VIM

本文从实用的角度聊聊Vim的常用命令。何为实用&#xff1f;我举个不实用的例子大家就明白了&#xff0c;用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富&#xff0c;在程序员中被广泛使用&#xff0c;和Emacs并列成…...

MySQL的进阶语法8(SQL优化——insert、主键、order by、group by、limit、count和update)

目录 一、插入数据 1.1 insert 1.2 大批量插入数据 二、主键优化 2.1 数据组织方式 2.2 页分裂 2.2.1 主键顺序插入效果 2.2.2 主键乱序插入效果 2.3 页合并 2.4 索引设计原则 三、order by优化 3.1 执行以下两条语句&#xff08;无索引&#xff09; 3.2 创建索引…...

STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出

目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的&#xff1f; 问题1&#xff1a;如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2&#xff1a;哪些寄存器&#xff0c;去哪里找呢&#xff1f; 问题三&#xff0c;寄存器的含义&#xff…...

FreeRTOS源码下载分享

FreeRTOS源码下载分享 官网下载太慢了&#xff0c;分享下FreeRTOSv202411 FreeRTOSv202411.00.zip 链接: https://pan.baidu.com/s/1P4sVS5WroYEl0WTlPD7GXg 提取码: g6aq...

PyArrow 核心技术与应用:高效数据处理与跨生态集成实践

Apache Arrow 作为列式内存数据格式的行业标准&#xff0c;其 Python 接口 PyArrow 正在重塑数据科学生态。本文深入解析 PyArrow 的核心计算能力&#xff0c;涵盖统计函数、分组聚合、窗口操作及跨库集成&#xff0c;通过完整代码示例演示如何利用其高性能特性优化数据处理流程…...

机试题——PCB印刷电路板布线

题目描述 在 PCB 印刷电路板设计中&#xff0c;器件之间的连线需要避免线路的阻抗值增大&#xff0c;而且器件之间还可能存在其他干扰源。为了简化问题&#xff0c;我们将电路板简化为一个 ( M * N ) 的矩阵&#xff0c;每个位置&#xff08;单元格&#xff09;的值表示其源干…...

数据化管理(一)---什么是数据化管理

目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…...

Android 10.0 通过广播控制systemui状态栏动态显示和隐藏功能实现

1.前言 在10.0的系统rom定制化开发中&#xff0c;在某些特定的产品开发中&#xff0c;需要通过接口来控制系统状态栏的显示和隐藏&#xff0c; 所以就需要了解systemui状态栏的显示构造过程&#xff0c;然后通过相关接口来显示和隐藏状态栏&#xff0c;接下来就来 实现相关的功…...

Linux服务器安装MinerU

安装MinerU 为了确保项目的稳定性和可靠性&#xff0c;我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时&#xff0c;能够获得最佳的性能表现和最少的兼容性问题。 这里我们以基础的 [[Linux服务器部署PaddleX实战教程]] 使…...

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引&#xff1a;屏幕前的你还在AI智能搜索框这样搜索吗&#xff1f;“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” &#xff0c;。看到此篇文章的小伙伴们&#xff01;请准备好你的思维魔杖&#xff0c;开启【霍格沃茨模式】&#xff0c;看我如何更新秘密的【知识炼金…...

Vite 内联 CSS 和 JS 的解决方案

使用 vite-plugin-singlefile&#xff08;推荐&#xff09; 这个插件专门用于将整个 Vite 应用打包成单个 HTML 文件&#xff0c;内联所有 JS 和 CSS。 安装 pnpm i vite-plugin-singlefile -D配置 vite.config.js import { defineConfig } from vite import { viteSingleF…...

致敬生物信息学先驱:玛格丽特·戴霍夫(Margaret Dayhoff,1925-1983)

李升伟 编译 社论 发布于&#xff1a;2025年3月11日 《自然-计算科学》第五卷 第187页&#xff08;2025年&#xff09; 在玛格丽特戴霍夫&#xff08;Margaret Dayhoff&#xff0c;1925-1983&#xff09;百年诞辰之际&#xff0c;我们聚焦这位先驱在生物信息学领域留下的不朽…...

Knife4j文档请求异常 空指针

打开swagger文档报空指针异常 java.lang.NullPointerException: nullat springfox.documentation.oas.mappers.SchemaMapper.model(SchemaMapper.java:97)at springfox.documentation.oas.mappers.SchemaMapper.mapModel(SchemaMapper.java:85)at springfox.documentation.oas…...

笔记2——网络参考模型

一、OSI参考模型&#xff1a; 应用层&#xff1a; 报文 给应用程序提供接口 表示层&#xff1a; 进行数据格式的转换 会话层&#xff1a; 在通讯双方之间建立、管理和终止会话 传输层&#xff1a; 数据段&#xff1b;建立、维护、取消一次端到端的数据传输过程&#xff1b;控制…...