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

数据结构1-4 队列

一、队列是什么?

先举一个日常例子,排队买饭。

排队买饭

大家按先来后到的顺序,在窗口前排队买饭,先到先得,买完之后走开,轮到下一位买,新来的人排在队尾,不能插队。

可见,上面的“队”的特点是只允许从一端进入,从另一端离开。

这样的一个队,放在数据结构中就是“队列”。

首先,队列是一个线性表,所以它具有线性表的基本特点。

其次,队列是一个受限的线性表,受限之处为:只允许从一端进入队列,从另一端离开。

由此可得: 

        队列Queue,是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除(只允许在队尾添加元素,在队头删除元素,不支持随机访问),向队列中插入元素称为入队或进队;删除元素称为出队或离队,FIFO

相关名词解释:

  • 入队:进入队列,即向队列中插入元素
  • 出队:离开队列,即从队列中删除元素
  • 队头:允许出队(删除)的一端
  • 队尾:允许入队(插入)的一端
  • 队头元素:队列中最先入栈的元素
  • 队尾元素:队列中最后入栈的元素

二、队列的实现思路

和栈一样,队列也可以有两种实现方式:数组实现的顺序队列和链表实现的链队列。

2.1 队列的链式存储

2.1.1 原理

        队列的链式表示称为链队列,实际是一个同时带有队头指针和队尾指针的单链表。

头指针指向队头结点,尾指针指向队尾结点,即单链表的最后一个结点

以看到,要实现一个链队列,需要以下结构:

1.单链表的基本单元结点 —— QueueNode

  • 存储数据的数据域 —— data
  • 指向下一个结点的指针域 —— next

2.指向链表的头指针 —— head

3.标识队头端的队头指针 —— front

4.标识队尾端的队尾指针 —— rear

其中,头指针 head 和队头指针 front 都指向了单链表的第一个结点,所以这个指针可以合二为一,队头指针即头指针。

如此一来,我们可以借助链表的尾插法实现队列的入队操作,借助链表的头删法实现队列的出队操作。

 可参考动画版:Linked List Queue Visualization

链队列入队出队动画

2.1.2 队列的状态

【空队列】:空队列中没有元素,此时,队头下标和队尾下标均为 0,即front = rear = 0: 

【非空非满队列】:队列不是空队列且有剩余空间:

【满队列】:顺序队列分配的固定空间用尽,没有多余空间,不能再插入元素,此时 front = 0,rear = MAXSIZE:

2.1.3 代码实现

typedef int Elemtype;
typedef struct LinkNode {Elemtype data;struct LinkNode *next;
}LinkNode;//先进先出
typedef struct {LinkNode *front, *rear;
}LinkQueue;
2.1.3.1 初始化队列
//队列的初始化,使用的是带头节点的链表
void init_queue(LinkQueue &Q) {Q.front = Q.rear=(LinkNode*)malloc(sizeof(LinkNode));Q.front->next =NULL;}
2.1.3.2 入队
//入队
void enqueue(LinkQueue &Q, Elemtype m) {LinkNode *pnew = (LinkNode *)malloc(sizeof(LinkNode));pnew->data = m;pnew->next =NULL;//要让next 为nullQ.rear->next = pnew;//尾指针next指向pnew,尾插法Q.rear =pnew;//rear指向新的尾部}
2.1.3.3 出队
bool dequeue(LinkQueue &Q, Elemtype &m) {if (Q.front ==Q.rear) {//队列为空return false;}LinkNode *q=Q.front->next;//拿到第一个节点,存入qQ.front->next = q->next;让节点断链m = q->data;if (Q.rear ==q) {Q.rear = Q.front;//链表只剩一个节点时,被删除后要改变rear}free(q);
return true;}
2.1.3.4 主函数
int main() {LinkQueue Q;init_queue(Q);enqueue(Q, 3);enqueue(Q, 4);//   enqueue(Q, 5);Elemtype elem;bool ret;ret = dequeue(Q,elem);if (ret) {printf("dequeue success ele=%d\n",elem);}else {printf("dequeue failed\n");}ret = dequeue(Q,elem);if (ret) {printf("dequeue success ele=%d\n",elem);}else {printf("dequeue failed\n");}ret = dequeue(Q,elem);if (ret) {printf("dequeue success ele=%d\n",elem);}else {printf("dequeue failed\n");}return 0;
}

三、循环队列

3.1 原理

将这种顺序队列画成一个圆:

循环队列的 rear 和 front 能够在队列中一圈一圈地转,像钟表的时针和分针一样。 

【空队列】:队列中没有元素,空队列的条件  front = rear 

【满队列】:少用一个元素,rear + 1 = front

【归零法】:就像钟表的时针满 12 归零一样,front 和 rear 也应该满某个数后归零,这个数就是 MAXSIZE。

比如 rear = 6 时,如果按平常做法来 ,下一步应该是 rear = 7,但在这里,我们让其归零,所以下一步应该是 rear = 0。

用数学公式来表示上面的归零过程就是:rear % MAXSIZE

所以满队列的判断条件应该为:(rear + 1) % MAXSIZE = front。

3.2 循环队列的数组实现

3.2.1 定义

typedef int ElementType;
typedef struct {ElementType data[MaxSize];int front, rear;//队列头,队列尾
}SqQueue;

3.2.2  初始化循环队列

void init_queue(SqQueue &Q) {Q.front =Q.rear = 0;//初始化循环队列,让头尾都指向零号}

3.3.3 判断空队

bool is_empty(SqQueue Q) {return Q.front==Q.rear;}

3.3.4 入队

//入队
bool enqueue(SqQueue &Q,ElementType m ) {//判断循环队列是否满?if ((Q.rear +1) % MaxSize == Q.front){return  false;}Q.data[Q.rear]=m;Q.rear=(Q.rear + 1)%MaxSize;//rear +1 ,如果大于数组最大下标需要回到开头return  true;
}

3.3.5 出队

bool dequeue(SqQueue &Q, ElementType &m) {if (Q.front == Q.rear) {return  false;}m = Q.data[Q.front];Q.front = (Q.front + 1) %MaxSize;return true;}

3.3.6 主函数

int main() {SqQueue Q;init_queue(Q);bool ret;ret= is_empty(Q);if (ret) {printf("SqQueue is empty\n");}else{printf("SqQueue is not empty\n");}enqueue(Q, 3);enqueue(Q, 4);enqueue(Q, 5);enqueue(Q, 6);ret = enqueue(Q, 7);ret =  enqueue(Q, 8);if (ret) {printf("SqQueue success\n");}else{printf("SqQueue failed\n");}ElementType element;ret  =  dequeue(Q, element);if (ret) {printf("dequeue success\n");}else{printf("dequeue failed\n");}ret =  enqueue(Q, 8);if (ret) {printf("SqQueue success\n");}else{printf("SqQueue failed\n");}return 0;
}

 3.3循环队列的链式存储实现(单向循环链表)

队头指针为front,队尾指针为rear;

队空的判断条件:front== rear

队满的判定条件:front == rear->next

3.3.1 代码实战

typedef int ElemType;
typedef struct LNode {ElemType data;struct LNode* next;
}LNode, *LinkList;
3.3.1.1 初始化
void CircleQueue(LinkList &front,LinkList &rear) {front=(LinkList)malloc(sizeof(LNode));rear = front;rear->next = front;EnQueue(front,rear,3);EnQueue(front,rear,3);DeQueue(front,rear);DeQueue(front,rear);DeQueue(front,rear);}
3.3.1.2 入队
void EnQueue(LinkList &front,LinkList &rear, ElemType x) {LinkList pnew;if (rear->next == front) {pnew = (LinkList)malloc(sizeof(LNode));rear->data = x;pnew->next = rear->next;rear->next = pnew;rear = pnew;}else {rear->data =x;rear = rear->next;}
}
3.3.1.2 出队
void DeQueue(LinkList &front,LinkList &rear) {if (front == rear) {printf("the queue is empty\n");}else {printf("the valude=%d\n",front->data);front = front->next;}}

参考地址:https://www.51cto.com/article/656335.html

相关文章:

数据结构1-4 队列

一、队列是什么? 先举一个日常例子,排队买饭。 排队买饭 大家按先来后到的顺序,在窗口前排队买饭,先到先得,买完之后走开,轮到下一位买,新来的人排在队尾,不能插队。 可见&#x…...

地弹与振铃

地弹(Ground Bounce)和振铃(Ringing)是数字电路中常见的信号完整性问题,两者都与高速开关和寄生参数有关,但表现形式和成因不同。以下是它们的对比及解决方法: 1. 地弹(Ground Bounc…...

单一职责原则(设计模式)

目录 问题: 定义: 解决: 方式 1:使用策略模式 示例:用户管理 方式 2:使用装饰者模式 示例:用户操作 方式 3:使用责任链模式 示例:用户操作链 总结 推荐 问题&a…...

蓝桥杯深秋的苹果

题目 当深秋的苹果树丰收时,村庄的居民们兴致勃勃地采摘着红彤彤的苹果。他们将采摘下来的 NN 个苹果排成了一排,形成了一个苹果序列 AA,第 ii 个苹果的甜度值为 AiAi​(1≤i≤N1≤i≤N)。 现在村民需要将苹果序列划…...

【网页视频背景闪烁问题分析与解决方案】

网页视频背景闪烁问题分析与解决方案 现象描述 在开发带有视频背景的网页时,我们遇到了一个棘手的问题:当用户滚动页面时,视频背景区域会出现明显的闪烁现象,具体表现为: 文字内容会突然变亮或变大视频背景会突然变…...

Server 6 ,VMware 解析,ESXi 与 Workstation 应用指南(VMware ESXi 与 VMware Workstation)

目录 前言 一、VMware公司介绍 二、主要产品和技术 2.1 服务器虚拟化 2.2 桌面虚拟化 2.3 网络虚拟化与安全 2.4 云管理平台 2.5 存储与可用性 三、VMware ESXi 3.1 ESXi 是什么“超级神器” 3.2 安装与网络配置如何掌握 3.3 访问与管理如何玩转 3.4 下载地址与官网…...

今天你学C++了吗?——string(上)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

使用通义万相Wan2.1进行视频生成

使用通义万相Wan2.1进行视频生成 源代码准备运行环境准备创建Python虚拟环境并激活安装依赖包 模型下载生成视频官网的视频生成例子简单描述场景视频生成示例详细描述场景视频生成示例 最近通义万相开源了其视频生成模型。模型有两个版本,一个是1.3B的,一…...

Windows在多网络下指定上网接口

Windows在多网络下指定上网接口 一、说明 设备情况:win11,同时连接了有线网和WLAN,有线网连接着NAS必须保持连接。需求:有些情况时,有线网无网络而WLAN有网,但系统仍走着有线导致无法上网。 二、方法 过…...

前端正则表达式完全指南:从入门到实战

文章目录 第一章:正则表达式基础概念1.1 什么是正则表达式1.2 正则表达式工作原理1.3 基础示例演示 第二章:正则表达式核心语法2.1 元字符大全表2.2 量词系统详解2.3 字符集合与排除 第三章:前端常用正则模式3.1 表单验证类3.1.1 邮箱验证3.1…...

【愚公系列】《Python网络爬虫从入门到精通》038-SQLite数据库

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

npx degit 问题:could not fetch remote...

问题与处理策略 问题描述 npx degit dream-num/univer-sheet-start-kit univer-sheet-start-kit执行上述指令,报如下错误 ! could not fetch remote https://github.com/dream-num/univer-sheet-start-kit ! could not find commit hash for HEAD# 翻译无法获取远…...

空投与转账:Solana代币核心概念及代码实战精解

目录 1.空投和转账概念 1.1.空投(Airdrop) 1.2.转账(Transfer) 2.Solana 代币创建与空投核心代码总结 2.1. 代币创建核心代码 2.2. 添加元数据核心代码 2.3. 空投代币核心代码 3.效果图展示 1.空投和转账概念 1.1.空投(Airdrop) 创建新代币: 空投是铸造(Mint)新代币…...

Rust~tokio的AsyncRead

AsyncRead trait 定义 介绍 /// This trait is analogous to the [std::io::Read] trait, but integrates with /// the asynchronous task system. In particular, the [poll_read] method, /// unlike [Read::read], will automatically queue the current task for wakeup…...

NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)

B2093 查找特定的值 - 洛谷 题⽬要求下标是从0开始的,和数组的下标是吻合的,存放数据应该从下标0开始n的取值范围是1~10000数组中存放的值的绝对值不超10000,说明int类型就⾜够了找到了输出下标,找不到要输出-1,这⼀点…...

Linux下的网络通信编程

在不同主机之间,进行进程间的通信。 1解决主机之间硬件的互通 2.解决主机之间软件的互通. 3.IP地址:来区分不同的主机(软件地址) 4.MAC地址:硬件地址 5.端口号:区分同一主机上的不同应用进程 网络协议…...

【JavaWeb13】了解ES6的核心特性,对于提高JavaScript编程效率有哪些潜在影响?

文章目录 🌍一. ES6 新特性❄️1. ES6 基本介绍❄️2. 基本使用2.1 let 声明变量2.2 const 声明常量/只读变量2.3 解构赋值2.4 模板字符串2.5 对象拓展运算符2.6 箭头函数 🌍二. Promise❄️1. 基本使用❄️2. 如何解决回调地狱问题2.1回调地狱问题2.2 使…...

每日一题之屏蔽信号

问题描述 在与三体文明的对抗中,人类联邦探测到了两个重要的信号源,分别用非负整数 aa 和 bb 来表示。 为了抵御三体舰队的入侵,科学家们制定出一项关键策略——屏蔽信号,目标是要让 aa、bb 这两个信号源其中之一的数值归零。 在…...

TCP如何保证可靠性

目录 回顾TCP协议TCP报文头部 TCP如何保证可靠性?校验和序列号确认应答机制(ACK)超时重传机制连接管理机制(三次握手和四次挥手)流量控制滑动窗口滑动机制 拥塞控制慢开始 & 拥塞避免快重传 & 快恢复 回顾TCP协…...

HTTP协议深度解析:从Tomcat到HTTPS的全方位探索

目录 引言 一、Tomcat部署与Servlet容器 1.1 Tomcat部署流程 1.2 Tomcat与Servlet 二、HTTP协议的基础构成 2.1 URL 2.2 HTTP请求与响应 2.3 HTTP状态码 三、计算机网络与数据传输 3.1 局域网与路由器 3.2 IP地址与MAC地址 3.3 域名与DNS 四、HTTPS协议与数据加密…...

互联网医院实时数据监测智能分析系统设计概述(下)

阶段4:可视化仪表盘与用户界面开发 在这一阶段,我们将使用 Plotly Dash 来设计一个实时预测仪表盘,用于展示疾病传播趋势、医生评估信息等。我们还将实现实时数据更新与展示,确保数据能够及时反映系统中的变化。 1. 设计实时预测仪表盘 步骤 1:安装 Dash 依赖 首先,确…...

性能测试测试策略制定|知名软件测评机构经验分享

随着互联网产品的普及,产品面对的用户量级也越来越大,能抗住指数级增长的瞬间访问量以及交易量是保障购物体验是否顺畅的至关重要的一环,而我们的性能测试恰恰也是为此而存在的。 性能测试是什么呢?性能测试要怎么测呢&#xff1f…...

【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案

作者:Odoo技术开发/资深信息化负责人 日期:2025年2月28日 一、部署背景与目标 DeepSeek R1作为国产大语言模型的代表,凭借其强化学习驱动的推理能力,在复杂任务(如数学问题、编程逻辑)中表现优异。本地化部…...

蓝桥真题讲解

温馨提示:本系列文章非所有题都对对b组适用,b组的小伙伴请挑题看! 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 本题总结 第三题 题目链接 题目解析 代码原理 …...

javaweb将上传的图片保存在项目文件webapp下的upload文件夹下

前端HTML表单 (upload.html) 首先&#xff0c;创建一个HTML页面&#xff0c;允许用户选择并上传图片。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>图片上传</title> </head> <…...

北京大学DeepSeek与AIGC应用(PDF无套路下载)

近年来&#xff0c;人工智能技术飞速发展&#xff0c;尤其是大模型和生成式AI&#xff08;AIGC&#xff09;的突破&#xff0c;正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》&#xff0c;以通俗易懂的方式系统解…...

测量海拔以及两点间路程(十六)

一、DigitalEarthView.cpp void CDigitalEarthView::OnCheckCheliang() {isTestJu = !isTestJu;mOSG->isTestJu(isTestJu); } 二、OSGObject.cpp void COSGObject::isTestJu(bool isTest) {theApp.bNeedModify = TRUE;while(!theApp.bCanModify)Sleep(1);if(isTest){eh-&…...

Flutter状态管理框架GetX最新版详解与实践指南

一、GetX框架概述 GetX是Flutter生态中轻量级、高性能的全能开发框架&#xff0c;集成了状态管理、路由导航、依赖注入等核心功能&#xff0c;同时提供国际化、主题切换等实用工具。其优势在于代码简洁性&#xff08;减少模板代码约70%&#xff09;和高性能&#xff08;基于观…...

8. 示例:对32位数据总线实现位宽和值域覆盖

文章目录 前言示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;仿真与覆盖率分析覆盖点详细说明覆盖率提升技巧常见错误排查 示例四&#xff1a;仿真步骤 前言 针对32位数据总线实现位宽和值域的覆盖&#xff0c;并且能够用xrun运行&#xff0c;查看日志和波形。cover…...

第6篇:面向对象编程重构系统

一、OOP重构目标 数据封装:隐藏实现细节​接口抽象:规范操作入口资源自治:实现自管理生命周期扩展基础:预留多态支持接口二、完全面向对象实现(完整代码) #include <iostream> #include <Windows.h> #include <li...

CTF-web: Rust 的过程宏

Rust 的过程宏&#xff08;Procedural Macros&#xff09;是一种强大的元编程工具&#xff0c;允许你在编译时对代码进行操作和生成。与属性宏和派生宏不同&#xff0c;过程宏可以接收并处理任意 Rust 代码&#xff0c;生成新的代码片段。这里有一个简单的例子来说明 Rust 的过…...

【Kubernetes】API server 限流 之 maxinflight.go

这个文件实现了一个基于信号量(Channel)的简单限流器。 基础知识 总共有四种channel 带缓冲的channel nonMutatingChan、mutatingChan 都是带缓冲的channel &#xff0c;这类channel 的特点是&#xff1a; 这允许最多 mutatingLimit /nonMutatingLimit 个请求同时获取令牌并执…...

phpstudy安装教程dvwa靶场搭建教程

GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本&#xff0c;点击立即下载 下载完成&#xff0c;进行解压&#xff0c;注意不要有中文路径 点击.exe文件进行安装…...

React核心知识及使用场景

React是一个用于构建用户界面的JavaScript库,尤其适合构建单页面应用(SPA)。它基于组件化的开发思想,主要特点是通过虚拟DOM来提高渲染效率。以下是React的核心知识和使用场景: 一. 核心知识 组件化: 类组件和函数组件:React的组件分为类组件和函数组件。类组件通过继承…...

杰发科技AC7801——滴答定时器获取时间戳

1. 滴答定时器 杰发科技7801内部有一个滴答定时器&#xff0c;该定时器是M0核自带的&#xff0c;因此可以直接用该定时器来获取时间戳。 同样&#xff0c;7803也可以使用该方式获取时间戳。 2. 滴答定时器原理 SysTick是一个24位的递减计数器&#xff0c;它从预设的重装载值…...

「爬虫实战分享:如何高效爬取某汽车官方销售排行榜」

本文目录 &#x1f496;前言一、&#x1f4ab;代理IP的作用二、&#x1f4ab;爬虫中的挑战1.代理IP的质量和稳定性2.IP封禁问题3. 反爬虫技术的升级 三、&#x1f4ab;亮数据动态代理&#xff1a;数据采集的可靠伙伴1、真实体验 四、&#x1f4ab;爬虫实战&#xff1a;使用亮数…...

AI数据分析:用DeepSeek做数据清洗

在当今数据驱动的时代&#xff0c;数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展&#xff0c;AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础&#xff0c;其目的是…...

使用串口工具实现tcp与udp收发

1、使用串口工具实现tcp收发 2、使用串口工具实现udp收发...

onlyoffice 服务搭建及配置 - 前端 office 文件预览解决方案

文章目录 1. 安装1.1 环境要求1.2 安装步骤1.3 常用配置1.3.1 安装目录/config/default.json1.3.2 安装目录/config/local.json1.3.3 安装目录/nginx/conf1.3.4 配置生效 2. 网站嵌入2.1 代码示例2.2 最终效果 3. 常见问题3.1 数据库配置错误导致加载不出来 1. 安装 写文章时使…...

PostgreSQL的基本使用

参考视频&#xff1a;零基础入门PostgreSQL教程 文章目录 一、PostgreSQL是什么&#xff1f;二、基本使用1.下载2.操作 一、PostgreSQL是什么&#xff1f; PostgreSQL 是一个免费的对象-关系数据库服务器&#xff0c;在灵活的BSD许可证下发行。 二、基本使用 1.下载 2.操作 …...

【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)

NumPy系列文章 入门篇进阶篇终极篇 一、NumPy简介 NumPy&#xff08;Numerical Python&#xff09;是Python中科学计算的核心库&#xff0c;提供了高性能的多维数组对象和各种用于数组操作的函数。它是Python数据分析和科学计算的基础&#xff0c;被广泛应用于机器学习、数据…...

武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会

2025年2月21日下午&#xff0c;武汉大学生命科学学院与谱度众合&#xff08;武汉&#xff09;生命科技有限公司&#xff08;以下简称“谱度众合”&#xff09;在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…...

小程序画带圆角的圆形进度条

老的API <canvas id"{{canvasId}}" canvas-id"{{canvasId}}" style"opacity: 0;" class"canvas"/> startDraw() {const { canvasId } this.dataconst query this.createSelectorQuery()query.select(#${canvasId}).bounding…...

MR-图解

1、不是所有的MR都适合combine 1.1、map端统计出了不同班级的每个学生的年龄 如&#xff1a;(class1, 14)表示class1班的一个学生的年龄是14岁。 第一个map任务&#xff1a; class1 14 class1 15 class1 16 class2 10第二个map任务&#xff1a; class1 16 class2 10 class…...

[深度学习] 大模型学习2-提示词工程指北

在文章大语言模型基础知识里&#xff0c;提示词工程&#xff08;Prompt Engineering&#xff09;作为大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;应用构建的一种方式被简要提及&#xff0c;本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…...

VSCode离线安装插件

最近在其他电脑设备上部署vscode环境出现问题&#xff0c;在vscode里直接安装插件失败&#xff0c;软件提示如下&#xff1a;&#xff08;此前已经用此方法安装过中文插件&#xff09; 这里我们选择手动下载&#xff0c;会自动在浏览器中跳转到该插件的下载链接并自动下载插件&…...

python-leetcode-删除并获得点数

740. 删除并获得点数 - 力扣&#xff08;LeetCode&#xff09; 解法 1&#xff1a;动态规划&#xff08;O(n) 时间&#xff0c;O(n) 空间&#xff09; class Solution:def deleteAndEarn(self, nums: List[int]) -> int:if not nums:return 0# 统计每个数的贡献points Cou…...

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…...

STM32G431RBT6——(1)芯片命名规则

相信很多新手入门STM学的芯片&#xff0c;是STM32F103C8T6&#xff0c;假如刷到个项目换个芯片类型&#xff0c;就会感到好难啊&#xff0c;看不懂&#xff0c;就无从下手&#xff0c;不知所云。其实没什么难的&#xff0c;对于一个个不同的芯片的区别&#xff0c;就像是学习包…...

React进阶之前端业务Hooks库(三)

前端业务Hooks库 hooks 方法localStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/src/useSessionStorageStatepackages/hooks/src/createUseStorageState模块Hooks在不同场景下的应用Hooks陷阱前提例子useLatest和useMemoizedFn其他功能的…...