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

深入解析C++ STL Queue:先进先出的数据结构

一、引言

在计算机科学中,队列(Queue)作为一种遵循先进先出(FIFO)​原则的数据结构,是算法设计和系统开发的基础组件。C++ STL中的queue容器适配器以简洁的接口封装了底层容器的操作,为开发者提供了高效的FIFO操作方案。本文将通过完整代码示例,深入剖析队列的核心机制,揭示其底层实现原理,并探讨最佳实践与常见陷阱。文章包含4000余字详细解析,帮助开发者全面掌握队列的应用艺术。

https://example.com/queue-structure.png

二、环境准备

  • 编译器要求​:支持C++11及以上标准
  • 开发环境​:Visual Studio/CLion/Code::Blocks
  • 关键头文件​:#include <queue>
  • 命名空间​:using namespace std;

三、完整代码示例

cpp

#include <iostream>
#include <queue>
using namespace std;int main() {// 创建一个整数类型的队列queue<int> myQueue;// 向队列中添加元素myQueue.push(10);myQueue.push(20);myQueue.push(30);// 访问队列头部元素cout << "队列头部元素: " << myQueue.front() << endl; // 输出: 10// 访问队列尾部元素cout << "队列尾部元素: " << myQueue.back() << endl; // 输出: 30// 移除队列头部元素myQueue.pop();cout << "移除后队列头部元素: " << myQueue.front() << endl; // 输出: 20// 检查队列是否为空if (myQueue.empty()) {cout << "队列为空" << endl;}else {cout << "队列不为空" << endl;}// 获取队列的大小cout << "队列的大小: " << myQueue.size() << endl; // 输出: 2// 遍历队列(队列没有直接遍历的方法,需要依次弹出元素)cout << "队列中的元素: ";while (!myQueue.empty()) {cout << myQueue.front() << " "; // 输出队列头部元素myQueue.pop(); // 移除队列头部元素}cout << endl;// 再次检查队列是否为空if (myQueue.empty()) {cout << "队列为空" << endl; // 输出: 队列为空}return 0;
}

四、核心操作解析

4.1 容器初始化

cpp

queue<int> myQueue;                  // 创建空队列(默认使用deque作为底层容器)
queue<int, list<int>> listQueue;     // 使用list作为底层容器
queue<int, vector<int>> vecQueue;    // 使用vector作为底层容器(需C++11支持)

关键特性​:

  • 默认底层容器为deque,但支持自定义(list/vector)
  • 初始化时自动构造空容器,无默认容量限制

4.2 基本操作指令

操作时间复杂度行为描述示例
push(x)O(1)将元素x压入队列尾部myQueue.push(100);
pop()O(1)移除队列头部元素(不返回值)myQueue.pop();
front()O(1)访问队列头部元素int x = myQueue.front();
back()O(1)访问队列尾部元素int y = myQueue.back();
empty()O(1)检查队列是否为空if(myQueue.empty())
size()O(1)返回队列中元素数量int s = myQueue.size();

底层实现原理​:

cpp

// 典型queue实现(以deque为底层容器)
template<typename T, typename Container=deque<T>>
class queue {
protected:Container c;  // 底层容器
public:void push(const T& val) { c.push_back(val); }void pop() { c.pop_front(); }T& front() { return c.front(); }T& back() { return c.back(); }// ...其他成员函数
};

五、进阶操作实践

5.1 自定义底层容器

cpp

// 使用list作为底层容器(支持中间插入删除)
queue<int, list<int>> listQueue;
listQueue.push(10);  // 底层调用list::push_back
listQueue.push(20);// 使用vector作为底层容器(需预分配空间)
vector<int> vec;
vec.reserve(1000);
queue<int, vector<int>> vecQueue(vec);

性能对比​:

底层容器push操作pop操作内存连续性适用场景
dequeO(1)O(1)通用场景(默认选择)
vectorO(1)O(1)预知最大容量
listO(1)O(1)频繁中间操作

5.2 队列的容量管理

cpp

queue<int> s;
cout << "当前容量: " << s.size() << endl;  // 输出0s.push(1);
cout << "容量变化: " << s.size() << endl;  // 输出1// 注意:标准库queue不提供capacity()方法
// 需要通过size()跟踪元素数量

六、遍历操作的深度探讨

6.1 间接遍历方法

cpp

queue<int> tempQueue = originalQueue;
while (!tempQueue.empty()) {process(tempQueue.front());tempQueue.pop();
}

注意事项​:

  • 遍历会破坏原有队列结构
  • 需要临时副本保留原始数据

6.2 迭代器模拟实现

cpp

// 自定义队列迭代器(仅用于演示原理)
template<typename T>
class QueueIterator {typename deque<T>::iterator it;
public:QueueIterator(typename deque<T>::iterator i) : it(i) {}T& operator*() { return *it; }QueueIterator& operator++() { ++it; return *this; }bool operator!=(const QueueIterator& other) { return it != other.it; }
};// 使用示例
queue<int> s;
s.push(1); s.push(2); s.push(3);
auto begin = QueueIterator<int>(s.c.begin());
auto end = QueueIterator<int>(s.c.end());
for (auto it = begin; it != end; ++it) {cout << *it << " ";  // 输出1 2 3
}

七、性能优化策略

7.1 预分配内存(vector底层容器)

cpp

vector<int> vec;
vec.reserve(1000);  // 预分配内存
queue<int, vector<int>> s(vec);  // 使用预分配空间// 测试性能
for (int i=0; i<100000; ++i) {s.push(i);  // 减少动态扩容次数
}

7.2 移动语义优化

cpp

queue<vector<int>> s;
vector<int> bigData(1000000, 42);// 使用移动语义避免深拷贝
s.push(move(bigData));  // bigData变为空

八、常见陷阱与解决方案

8.1 遍历导致的元素丢失

cpp

queue<int> s;
s.push(1); s.push(2);
auto front = s.front();  // 获取头部元素
s.pop();                 // 导致元素丢失
cout << front;           // 输出1(安全操作)// 错误示例:
// int x = s.front();
// s.pop();
// cout << x;  // 仍输出1,但元素已丢失

安全准则​:

  • 在弹出元素前必须保存需要使用的值

8.2 多线程安全问题

cpp

// 非线程安全操作
void unsafe_push(queue<int>& s) {for (int i=0; i<1000; ++i) {s.push(i);  // 可能出现数据竞争}
}// 解决方案:使用互斥锁
mutex mtx;
void safe_push(queue<int>& s) {lock_guard<mutex> lock(mtx);for (int i=0; i<1000; ++i) {s.push(i);}
}

九、与其他容器的对比

特性queuestackpriority_queue
访问原则FIFOLIFO最大/最小元素优先
底层容器默认dequedequevector
典型应用场景任务调度函数调用拓扑排序
时间复杂度(插入)O(1)O(1)O(log n)

十、实战应用场景

10.1 广度优先搜索(BFS)

cpp

// 图的BFS遍历实现
vector<vector<int>> graph = {{1,2}, {0,3}, {0,3}, {1,2}};
vector<bool> visited(4, false);
queue<int> q;q.push(0);
visited[0] = true;while (!q.empty()) {int node = q.front();q.pop();cout << "访问节点: " << node << endl;for (int neighbor : graph[node]) {if (!visited[neighbor]) {visited[neighbor] = true;q.push(neighbor);}}
}

10.2 生产者-消费者模型

cpp

#include <thread>
#include <mutex>
#include <condition_variable>queue<int> buffer;
mutex mtx;
condition_variable cv_produce, cv_consume;void producer() {for (int i=0; i<10; ++i) {unique_lock<mutex> lock(mtx);buffer.push(i);cout << "生产: "<< i << endl;cv_consume.notify_one();cv_produce.wait(lock, []{ return buffer.size() < 5; });}
}void consumer() {while (true) {unique_lock<mutex> lock(mtx);cv_produce.wait(lock, []{ return !buffer.empty(); });int item = buffer.front();buffer.pop();cout << "消费: " << item << endl;cv_produce.notify_one();if (item == 9) break;}
}

10.3 打印机任务队列

cpp

class PrinterQueue {queue<string> tasks;mutex mtx;
public:void addTask(string doc) {lock_guard<mtx> lock(mtx);tasks.push(doc);cout << "添加任务: " << doc << endl;}void processTasks() {while (true) {lock_guard<mtx> lock(mtx);if (!tasks.empty()) {string doc = tasks.front();tasks.pop();cout << "正在打印: " << doc << endl;}}}
};

十一、总结与展望

本文通过完整代码示例和深度解析,系统阐述了C++ STL Queue的核心特性:

  • FIFO原则的完美实现
  • 底层容器适配器的灵活选择
  • 高效O(1)时间复杂度的操作

选择建议​:

  • 需要严格先进先出 → 优先选择queue
  • 需要后进先出 → 使用stack
  • 需要优先级处理 → 选择priority_queue

相关文章:

深入解析C++ STL Queue:先进先出的数据结构

一、引言 在计算机科学中&#xff0c;队列&#xff08;Queue&#xff09;作为一种遵循先进先出&#xff08;FIFO&#xff09;​原则的数据结构&#xff0c;是算法设计和系统开发的基础组件。C STL中的queue容器适配器以简洁的接口封装了底层容器的操作&#xff0c;为开发者提供…...

永磁同步电机控制算法-反馈线性化控制

一、原理介绍 基于非线性系统的精确线性化控制方法&#xff0c;采用精确反馈线性化原理对永磁同步电机进行输入-输出线性化&#xff0c;该方法通过坐标变换和状态反馈将系统的数学模型转变为两个线性子系统&#xff0c;在实现线性化的同时也对系统中电流和转速存在的耦合现象进…...

开源 RAG 引擎:文档理解精准、检索高效、可视化干预灵活,一站式搞定

引言&#xff1a; RAGFlow 是一款基于深度文档理解的开源 RAG 引擎&#xff0c;与 LLM 结合后可实现精准引用问答。它支持 20 多种文档格式解析&#xff0c;配备智能分块策略及混合检索方案&#xff0c;还有可视化干预界面&#xff0c;且支持 Docker 快速部署&#xff0c;堪称…...

URP-UGUI相关知识

一、UGUI的基本组成部分 Canvas &#xff08;画布&#xff09;所有UI都需要放在Canvas画布下面&#xff0c;不然无法显示EventSystem 所有的事件响应系统都需要依赖于EventSystem,若删除该组件&#xff0c;交互效果就 不会显示 1.Canvas(画…...

COMSOL多孔结构传热模拟

多孔结构传热模拟涉及对多孔介质内部复杂的热量传递过程进行建模和分析&#xff0c;这类模拟对于优化材料设计、提高能源效率以及解决环境问题等方面具有重要意义。本案例介绍在COMSOL内建立全连通多孔结构几何模型&#xff0c;并将孔隙及基体划分两相材料&#xff0c;进行多孔…...

【CSS】层叠,优先级与继承(四):层叠,优先级与继承的关系

层叠&#xff0c;优先级与继承的关系 前文概括 【CSS】层叠&#xff0c;优先级与继承&#xff08;一&#xff09;&#xff1a;超详细层叠知识点 【CSS】层叠、优先级与继承&#xff08;二&#xff09;&#xff1a;超详细优先级知识点 【CSS】层叠&#xff0c;优先级与继承&am…...

CDN加速http请求

一、CDN加速定义 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是通过全球分布式节点服务器缓存网站内容&#xff0c;使用户就近获取数据的技术。其核心目标是缩短用户与内容之间的物理距离&#xff0c;解决网络拥塞、带宽不足等问题&#xff…...

python实战项目63:获取腾讯招聘信息内容并进行统计分析

python实战项目63:获取腾讯招聘信息内容并进行统计分析 一、需求分析二、流程分析1、获取指定招聘工作类型的目标地址url。2、采集详情页信息。3、保存数据4、完整爬虫代码三、统计分析一、需求分析 本项目的需求是爬取腾讯社会招聘信息网中社会招聘的不同工作类别岗位数据,…...

FlinkUDF用户自定义函数深度剖析

Flink 作为一款强大的流批一体数据处理引擎&#xff0c;其灵活性和扩展性在很大程度上依赖于用户自定义函数&#xff08;User-Defined Functions, UDF&#xff09;。UDF 允许开发者根据业务需求扩展 Flink 的核心功能&#xff0c;实现复杂的数据转换、聚合或分析。本文将系统性…...

Python图形界面编程(一)

目录 一、相关的库 1、tkinter库 2、PyQt库 二、图形界面编程要点 三、tkinter控件 1、tkinter控件表 2、tkinter的常用控件 3、tkinter的扩展控件 四、tkinter布局 1、简单示例 2、默认情况下的grid规则 3、调整窗口和网格 &#xff08;1&#xff09;调整窗口 &…...

HarmonyOS Grid 网格列表可长按 item 拖动移动位置

方案一 @Component struct WorkCircleCreatePage {// 存储车控列表的数组@State VehicleDoorArr: IVehicleDoor[] = []// 当前移动的Item索引@State CurrentIndex: number = -1// 拖动时显示的数据@State MoveItem: IVehicleDoor = { title: , icon: }// 拖动时放大倍数@State…...

出现 ORA-00904: “TENANT_ID“: 标识符无效 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 1. 问题所示 执行代码的时候,出现如下所示: org.springframework.jdbc.BadSqlGrammarException:</...

榜单持久化

榜单持久化的基本流程是这样的&#xff1a; 创建表 持久化Redis数据到数据库 清理Redis数据 现在&#xff0c;创建表的动作已经完成&#xff0c;接下来就轮到Redis数据的持久化了。持久化的步骤如下&#xff1a; 读取Redis数据 判断数据是否存在 不存在&#xff0c;直接结束…...

璞华ChatBI闪耀2025数博会:对话式数据分析引领数智化转型新范式

4月17日至19日&#xff0c;2025中国&#xff08;武汉&#xff09;数字经济产业博览会在武汉盛大举办&#xff0c;璞华集团携自主研发的“ChatBI自然语言问答式数据分析平台”惊艳亮相。以 "通过对话让数据说话" 为主题&#xff0c;璞华集团在 A3-T8 展位构建了沉浸式…...

力扣DAY63-67 | 热100 | 二分:搜索插入位置、搜索二维矩阵、排序数组查找元素、搜索旋转排序数组、搜索最小值

前言 简单、中等 √ 二分法思路很简单&#xff0c;但是判断边界太麻烦了&#xff01;难道真的要去背模板吗 搜索插入位置 我的题解 循环条件左不超过右&#xff0c;目标大于中间值&#xff08;向下取整&#xff09;时&#xff0c;左中1&#xff0c;小于&#xff0c;右中-1&…...

leetcode-哈希表

哈希表 127. 单词接龙 题目 字典 wordList 中从单词 beginWord 到 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s(1) -> s(2) -> ... -> s(k)&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 s(i) 都在…...

信息技术有限公司项目管理手册

这篇文档是信息技术有限公司的项目管理指导手册&#xff0c;对软件公司项目管理者具有重要价值&#xff0c;主要体现在以下几个方面&#xff1a; 管理全面规范 涵盖内容广&#xff1a;从项目的整体管理到各个具体领域&#xff0c;如范围管理、进度管理、成本管理等&…...

TFTP服务调试

在tftpboot目录下进行sudo minicom 启动内核时 问题&#xff1a;程序启动卡在Loading阶段 原因&#xff1a;tftp协议的问题 、或者网卡配置的问题 解决&#xff1a;1.检查网线是否插好 多试几次 2.检查tftp服务是否正常 在minicom中调试ping pc机的ip地址 2.进入boot调…...

date-picker组件的shortcuts为什么不能配置在vue的data的return中

在 Vue 中&#xff0c;shortcuts 是一个选项&#xff0c;通常用于配置像 date-picker 这样的组件的日期快捷方式。这里有一些原因解释为什么 shortcuts 不应该配置在 data 的 return 中&#xff0c;而是应该配置在 data 的外部&#xff08;例如&#xff0c;直接作为组件的一个属…...

迭代器模式:统一数据遍历方式的设计模式

迭代器模式&#xff1a;统一数据遍历方式的设计模式 一、模式核心&#xff1a;将数据遍历逻辑与数据结构解耦 在软件开发中&#xff0c;不同的数据结构&#xff08;如数组、链表、集合&#xff09;有不同的遍历方式。如果客户端直接依赖这些数据结构的内部实现来遍历元素&…...

RocketMQ 核心架构速览

欢迎光临小站&#xff1a;致橡树 文章现有讲述比较简单&#xff0c;后续逐渐丰富各部分内容。 Apache RocketMQ 作为阿里巴巴开源的一款分布式消息中间件&#xff0c;凭借其高吞吐、低延迟、高可用等特性&#xff0c;成为金融级稳定性场景的首选解决方案。本文将深入剖析 Roc…...

kafka安装、spark安装

kafka简介 Kafka就是一个分布式的用于消息存储的消息队列。 kafka角色 Kafka中存储的消息&#xff0c;被消费后不会被删除&#xff0c;可以被重复消费&#xff0c;消息会保留多长&#xff0c;由kafka自己去配置。默认7天删除。背后的管理工作由zookeeper来管理。 kafka安装 …...

迅为RK3562开发板ARM四核A53核心板多种系统适配全开源

迅为RK3562开发板ARM四核A53核心板多种系统适配全开源 RK3562开发板(2GB内存16GB存储)...

用交换机连接两台电脑,电脑A读取/写电脑B的数据

1、第一步&#xff0c;打开控制面板中的网络和共享中心&#xff0c;如下图配置&#xff0c;电脑A和电脑B均要配置&#xff1b; 注意&#xff1a;要保证电脑A和电脑B在同一子网掩码下&#xff0c;不同的IP地址&#xff1b; 2、在电脑上同时按‘CommandR’&#xff0c;在弹出的输…...

线程入门3

synchronized修饰方法 synchronized可以修饰代码块(在线程入门2中有例子)&#xff0c;也可以修饰普通方法和静态方法。 修饰普通方法 修饰普通方法简化写法&#xff1a; 修饰静态方法 修饰静态方法简化写法&#xff1a; 注意&#xff1a;利用synchronized上锁&#xff0c;锁的…...

【C++】AVL树

目录 一、AVL树的引入 二、AVL树 &#x1f354;AVL树的概念 &#x1f35f;AVL树节点的定义 &#x1f32e;AVL树的插入 &#x1f96a;AVL树的旋转 三、AVL树的验证 四、结语 一、AVL树的引入 &#x1f31f;我们知道 map/multimap/set/multiset 这几个容器的共同点是&#…...

Java大师成长计划之第1天:Java编程基础入门

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 欢迎来到“Java大师成长计划”系列文…...

Java线程中断机制详解

中断机制是Java中一种协作式的线程停止方式&#xff0c;它提供了一种优雅的线程间通信机制&#xff0c;用于请求另一个线程停止当前工作。 中断机制的核心概念 中断标志位(Interrupt Status) 每个线程都有一个boolean类型的中断状态标志&#xff08;native方法控制&#xff09…...

gem5-gpu教程06 回归测试

gem5-gpu包括gem5风格的回归测试,以避免常见错误,并在变更集之间保持模拟系统性能的一致性。如果你想为gem5-gpu做出贡献,你必须确保你的更改通过了包含的回归测试。 回归测试是一种软件测试类型,其主要目的是确保新代码的更改没有对现有功能造成影响。在软件开发过程中,当…...

查询Hologres或postgresql中的数据

因Hologres使用postgresql的语法.所以两者查询一样. 方案1: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;/*** 一个使用简单连接池管理PostgreSQL连接的工具类。*/ publi…...

C# 文件读取

文件读取是指使用 C# 程序从计算机文件系统中获取文件内容的过程。将存储在磁盘上的文件内容加载到内存中&#xff0c;供程序处理。主要类型有&#xff1a;文本文件读取&#xff08;如 .txt, .csv, .json, .xml&#xff09;&#xff1b;二进制文件读取&#xff08;如 .jpg, .pn…...

On the Biology of a Large Language Model——Claude团队的模型理解文章【论文阅读笔记】其一CLT与LLM知识推理

这个学习笔记&#xff0c;是在精读Anthropic的博客 On the Biology of a Large Language Model 的过程中留下的笔记。 由于原文非常长&#xff0c;我会分2-3 个博客来写。 作者的思路 作者对常用的LLM特征解读工具 SAE/Transcoder 进行了优化&#xff0c;增加了跨层连接的能力…...

Postman忘记密码访问官网总是无响应

1.Header Editor插件下载 百度网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1EV6cY7TYQVgPjip3v-vhfQ 提取码&#xff1a;yyds 2.插件配置 下载规则url&#xff1a;https://azurezeng.github.io/static/HE-GoogleRedirect.json ![在这里插入图片描述](htt…...

NEUOJ网格路径

​ 在一个 77 的网格中&#xff0c;从左上方的方格走到左下方的方格&#xff0c;共有 88418 条路径。每条路径对应一个由字符 D&#xff08;向下&#xff09;、U&#xff08;向上&#xff09;、L&#xff08;向左&#xff09;和 R&#xff08;向右&#xff09;组成的 48 字符描…...

深度学习中的黑暗角落:梯度消失与梯度爆炸问题解析

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4o-mini模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...

【数字图像处理】机器视觉(1)

判别相对应的点 1. 图像灰度化 2. 局部特征 3. 仿射不变性特征 图像变化的类型 【1】几何变化&#xff1a;旋转、相似&#xff08;旋转 各向相同的尺度缩放&#xff09;、仿射&#xff08;非各向相同的尺度缩放&#xff09; 【2】灰度变化&#xff1a;仿射灰度变化 角点 角…...

# 构建和训练一个简单的CBOW词嵌入模型

构建和训练一个简单的CBOW词嵌入模型 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;词嵌入是一种将词汇映射到连续向量空间的技术&#xff0c;这些向量能够捕捉词汇之间的语义关系。在这篇文章中&#xff0c;我们将构建和训练一个简单的Continuous Bag of Words…...

Ubuntu20.04下GraspNet复现流程中的问题

pytorchcudacudnn的版本问题相对于GraspNet来说至关重要&#xff01;&#xff01;&#xff01;至关重要&#xff01;&#xff01;&#xff01;至关重要&#xff01;&#xff01;&#xff01;&#xff08;重要的事情说三边&#xff09; 我的显卡是3070 那么首先说结论 使用30系…...

【ROS2】机器人操作系统安装到Ubuntu简介

主要参考&#xff1a; https://book.guyuehome.com/ROS2/1.系统架构/1.3_ROS2安装方法/ 官方文档&#xff1a;https://docs.ros.org/en/humble/Installation.html 虚拟机与ubuntu系统安装 略&#xff0c;见参考文档 ubutun换国内源&#xff0c;略 1. 设置本地语言 确保您有…...

从0到1掌握机器学习核心概念:用Python亲手构建你的第一个AI模型(超多代码+可视化)

&#x1f9e0; 一、开始 真正动手实现一个完整的AI项目&#xff01;从数据预处理、特征工程、模型训练&#xff0c;到评估与调优&#xff0c;一步步还原你在动画视频中看到的所有核心知识点。 &#x1f4e6; 二、环境准备 建议使用 Python 3.8&#xff0c;推荐工具&#xff1…...

Java面试题汇总

1王二哥 https://javabetter.cn/sidebar/sanfene/redis.html#_10-redis-%E6%8C%81%E4%B9%85%E5%8C%96%E6%96%B9%E5%BC%8F%E6%9C%89%E5%93%AA%E4%BA%9B-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB 2.小林 https://www.xiaolincoding.com/redis/data_struct/command.html#…...

Ollama API 应用指南

1. 基础信息 默认地址: http://localhost:11434/api数据格式: application/json支持方法: POST&#xff08;主要&#xff09;、GET&#xff08;部分接口&#xff09; 2. 模型管理 API (1) 列出本地模型 端点: GET /api/tags功能: 获取已下载的模型列表。示例:curl http://lo…...

React SSR + Redux 导致的 Hydration 报错踩坑记录与修复方案

一条“Hydration failed”的错误&#xff0c;让我损失了半天时间 背景 我在用 Next.js App Router Redux 开发一个任务管理应用&#xff0c;一切顺利&#xff0c;直到打开了 SSR&#xff08;服务端渲染&#xff09;&#xff0c;突然看到这个令人头皮发麻的报错&#xff1a; …...

【论文精读】Reformer:高效Transformer如何突破长序列处理瓶颈?

目录 一、引言&#xff1a;当Transformer遇到长序列瓶颈二、核心技术解析&#xff1a;从暴力计算到智能优化1. 局部敏感哈希注意力&#xff08;LSH Attention&#xff09;&#xff1a;用“聚类筛选”替代“全量计算”关键步骤&#xff1a;数学优化&#xff1a; 2. 可逆残差网络…...

iOS18 MSSBrowse闪退

iOS18 MSSBrowse闪退 问题方案结果 问题 最近升级了电脑系统(15.4.1)&#xff0c;并且也升级了xcode(16.3)开发工具。之后打包公司很早之前开发的项目。 上线之后发现在苹果手机系统18以上&#xff0c;出现了闪退问题。 涉及到的是第三方MSSBrowse&#xff0c;在选择图片放大的…...

create_function()漏洞利用

什么是 create_function() create_function() 是 PHP 早期提供的一个用来创建匿名函数的函数&#xff1a; $func create_function($a,$b, return $a $b;); echo $func(1, 2); // 输出 3 第一个参数是函数的参数列表&#xff08;字符串形式&#xff09;&#xff0c;第二个参…...

leetcode-数组

数组 31. 下一个排列 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大…...

Tailwind CSS 实战:基于 Kooboo 构建个人博客页面

在现代 web 开发中&#xff0c;Tailwind CSS 作为一款实用优先的 CSS 框架&#xff0c;能让开发者迅速搭建出具有良好视觉效果的页面&#xff1b;Kooboo 则是一个强大的快速开发平台&#xff0c;提供了便捷的页面管理和数据处理功能。本文将详细介绍如何结合 Tailwind CSS 和 K…...

C#学习1_认识项目/程序结构

一、C#项目文件的构成 1.新建一个项目 2.运行项目 3.认识文件 1&#xff09;解决方案&#xff08;Solution&#xff09;&#xff1a;组织多个项目的容器 抽象理解&#xff1a;餐厅 解决方案.sln文件&#xff0c;点击即可进入VS编辑 2&#xff09;项目&#xff08;…...

边缘计算在工业自动化中的应用:开启智能制造新时代

在工业4.0的浪潮中&#xff0c;智能制造成为推动工业发展的核心驱动力。随着物联网&#xff08;IoT&#xff09;技术的广泛应用&#xff0c;工业设备之间的互联互通变得越来越紧密&#xff0c;但这也带来了数据处理和传输的挑战。边缘计算作为一种新兴技术&#xff0c;通过将计…...