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

双指针算法

引入

双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息。 ——OI Wiki

接下来我们来看双指针的几个具体使用方法。

板子

以 POJ3061 为例:

给定长度为 n n n 的序列 a a a,请你找到一个区间,使得这个区间的和大于等于 k k k 的条件下数字个数尽可能少。

n ≤ 1 0 5 n\leq 10^5 n105 1 ≤ a i , k ≤ 1 0 9 1\leq a_i,k\leq 10^9 1ai,k109

过程

维护两个指针,左指针 l l l 与右指针 r r r,初始时都指向数组开始( l = 1 l=1 l=1 r = 1 r=1 r=1),并额外维护区间和 s u m sum sum

如, a = { 5 , 1 , 4 , 3 , 4 } a=\{5,1,4,3,4\} a={5,1,4,3,4} k = 7 k=7 k=7

  1. 初始时, l l l 指向 a 1 a_1 a1。接着向右延伸 r r r,显然 r r r 指向 a 3 a_3 a3 时满足条件,即当 l = 1 l=1 l=1 时答案为 r − l + 1 = 3 r-l+1=3 rl+1=3

  2. 接着,我们将 l l l 滑到 a 2 a_2 a2 的位置,我们知道 r r r 不会小于 3 3 3,所以我们继续向右延伸到 r = 4 r=4 r=4,即当 l = 2 l=2 l=2 时答案为 3 3 3

  3. 然后,我们将 l l l 滑到 a 3 a_3 a3 的位置, r r r 4 4 4 开始枚举,发现正好满足条件,即当 l = 3 l=3 l=3 时答案为 2 2 2

  4. 我们再将 l l l 滑到 a 4 a_4 a4 的位置, r r r 4 4 4 开始枚举,向右延伸到 r = 5 r=5 r=5 的时候满足条件,即当 l = 4 l=4 l=4 时答案为 2 2 2

  5. 最后 l l l 滑到 a 5 a_5 a5 的位置 , r r r 5 5 5 开始枚举,发现无法满足条件,此时往右走没有能满足条件的区间,结束。

code \texttt{code} code
for(int l=1,r=1.sum=0;l<=n;l++){while(sum+a[r]<k&&r<=n){r++;}if(r==n+1){break;}ans=min(ans,r-l+1);
}

代码中,虽然 for 循环中嵌套着 while 循环,但是无论是 l l l 还是 r r r,都只是从最左边滑到最右边,所以两个指针的时间复杂度均为 O ( n ) \mathcal{O(n)} O(n),所以双指针的复杂度为 O ( n ) \mathcal{O(n)} O(n)

总结

给定一个序列 a a a,请你选取一个区间,使得这个区间在满足某个条件的前提下:

  • 求满足条件的区间数量。
  • 求满足条件的答案最值。

且这类问题满足:选取出区间 [ l , r ] [l,r] [l,r] 是满足条件的,那么比它更大的一个区间 [ l ′ , r ′ ] ( l ′ ≤ l , r ′ ≥ r ) [l',r'](l'\leq l,r'\geq r) [l,r](ll,rr) 也满足条件。并且更大的这个区间所求信息答案更差,那么我们就可以用双指针法来解决这个问题。

例题
Problem 1. Luogu P1102

A-B 数对:给出一串正整数数列以及一个正整数 C C C,要求计算出所有满足 A − B = C A - B = C AB=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。

n ≤ 2 × 1 0 5 , 1 ≤ a i , C ≤ 1 0 9 n\leq 2\times 10^5,1\leq a_i,C\leq 10^9 n2×105,1ai,C109

这道题显然可以用二分答案解决,枚举数字 B B B,二分查找是否存在 A A A 使得 A − B = C A-B=C AB=C 即可,这是因为将这些数字排序后,数列具有单调性,就能以 O ( log ⁡ n ) \mathcal{O(\log n)} O(logn) 的时间复杂度查找。

这道题同样可以使用双指针来解决。以样例为例:

a = 1 , 1 , 2 , 3 a={1,1,2,3} a=1,1,2,3 C = 1 C=1 C=1

枚举 i i i 表示 A A A,接下来要在数列中找到 B B B 使得 B = A − C B=A-C B=AC。因为题中数字有可能相同,所以满足条件的 B B B 在数列中连续出现。因为 a a a 具有单调性,所以维护 l , r l,r l,r,使得 l l l 指向第一个大于等于 B B B 的数, r r r 指向第一个大于 B B B 的数。这样,若 a l = B a_l=B al=B,则 [ l , r ) [l,r) [l,r) 为最终答案区间,对于 i i i,数对个数为枚举的 r − l r-l rl,累加进答案中。

code \texttt{code} code

sort(a+1,a+n+1);
for(int l=1,r=1,i=1;i<=n;i++){while(a[l]<a[i]-c&&l<=n){l++;}while(a[r]<=a[i]-c&&r<=n){r++;}if(a[l]==a[i]-c){ans=ans+r-l;}
}
Problem 2. Luogu P1638

逛画展:给定一个正整数数列 a a a,求一个数对 ( l , r ) (l,r) (l,r),满足所有 a i ( l ≤ i ≤ r ) a_i(l\leq i\leq r) ai(lir) 中包含 1 ∼ m 1\sim m 1m

1 ≤ n ≤ 1 0 6 1\leq n\le10^6 1n106 1 ≤ a i ≤ m ≤ 2 × 1 0 3 1 \leq a_i \leq m\le2\times10^3 1aim2×103

如果区间 [ l , r ] [l,r] [l,r] 包含 m m m 种不同的数,那么包含它的任何区间都包含 m m m 种不同的数。同时包含它的大区间答案更差,所以可以使用双指针。维护 l , r l,r l,r 为符合要求的区间,考虑贪心策略,当 l l l 固定时, r r r 向右延伸,直到凑齐 1 ∼ m 1\sim m 1m 为止,用桶记录 1 ∼ m 1\sim m 1m 是否在区间内出现, c n t cnt cnt 记录不同的 a i a_i ai 的个数。接着,尝试去除 l l l 指向的数(即 f[a[l]]--,cnt--,然后继续向右移动。

code \texttt{code} code

for(int l=1,r=0,cnt=0;l<=n;l++){while(cnt<m&&r<n){r++;if(!f[a[r]]){cnt++;}f[a[r]]++;}if(cnt<m){break;}f[a[l]]--;if(f[a[l]]==0){cnt--;}if(minn>r-l+1){minn=r-l+1;L=l;R=r;}
}
Problem 3. UVa11572

唯一的雪花: T T T 组数据,每组测试数据中有 n n n 个整数 a i a_i ai,数字可能重复。求一个尽可能长的区间,满足区间内所有的数字均不相同。

n ≤ 1 0 6 n\leq 10^6 n106 0 ≤ a i ≤ 1 0 9 0\leq a_i\leq 10^9 0ai109

显然的双指针。与上题大体相同,开一个桶 f f f,右端点向右延伸的条件为 f a r + 1 = = 0 f_{a_r+1}==0 far+1==0,区别在于这道题 a i a_i ai 1 0 9 10^9 109 级别的,显然不能直接开一个桶。这里完全可以使用 STL 里的 m a p map map s e t set set 或 hash 来解决,但这样的常数无疑是巨大的,这里使用离散化。

离散化的方法是,将大范围的数字映射到一个较小的连续区间内,从而可以使用数组来统计数字的出现次数。如,对于 a = { 1 , 1 , 1 0 9 , 1 0 9 , 1 0 9 } a=\{1,1,10^9,10^9,10^9\} a={1,1,109,109,109},我们使用离散化可以将 1 → 1 1\to 1 11 1 0 9 → 2 10^9\to 2 1092,从而实现减少桶的空间开销。具体地,将原始数组复制到一个临时数组中,对临时数组进行排序并去重,得到一个唯一的有序数组,再将原始数组中的每个数字通过二分查找映射到去重后的数组中的位置,从而实现离散化。

离散化后,因为 n ≤ 1 0 6 n\leq 10^6 n106,所以桶的大小不超过 n ≤ 1 0 6 n\leq 10^6 n106,从而可以解决这道题。

code \texttt{code} code

void lsh(){for(int i=1;i<=n;i++){p[i]=a[i];}sort(p+1,p+n+1);int num=unique(p+1,p+n+1)-p-1;for(int i=1;i<=n;i++){a[i]=lower_bound(p+1,p+num+1,a[i])-p;}
}
...
lsh();
for(int l=1,r=0;l<=n;l++){while(!f[a[r+1]]&&r<=n){r++;f[a[r]]++;}f[a[l]]--;ans=max(ans,r>n?r-l:r-l+1);
}
Problem 4. ARC098B

给定数组 a a a,求满足 a l + a l + 1 + . . . + a r = a l ⊕ a l + 1 ⊕ . . . ⊕ a r a_l+a_{l+1}+...+a_r=a_l \oplus a_{l+1}\oplus...\oplus a_r al+al+1+...+ar=alal+1...ar 的区间 [ l , r ] [l,r] [l,r] 的数量。

1 ≤ l ≤ r ≤ n ≤ 2 × 1 0 5 1\leq l\leq r\leq n\leq 2\times 10^5 1lrn2×105 0 ≤ a i < 2 20 0\leq a_i< 2^{20} 0ai<220

异或即不进位的加法,所以这道题换个说法就是你希望找出有多少个区间,他们之间做加法是不会进位的。易得若区间 [ l , r ] [l,r] [l,r] 会产生进位,则区间 [ l ′ , r ′ ] ( l ′ ≤ l , r ′ ≥ r ) [l',r'](l'\leq l,r'\geq r) [l,r](ll,rr) 也会产生进位,所以可以使用双指针法来解决。于是我们枚举 l l l,向右延伸 r r r 到最右的满足条件的位置,给答案加上 r − l + 1 r-l+1 rl+1,因为区间 [ l , r ] [l,r] [l,r] 不产生进位,则区间 [ l , r ′ ] ( l ≤ r ′ ≤ r ) [l,r'](l\leq r'\leq r) [l,r](lrr) 也不产生进位。同理,为什么可以 r r r 不变,移动一次 l l l,因为区间 [ l , r ] [l,r] [l,r] 不产生进位,则区间 [ l ′ , r ] ( l ≤ l ′ ≤ r ) [l',r](l\leq l'\leq r) [l,r](llr) 也不产生进位。

code \texttt{code} code

for(int l=1,r=0,sum=0,oplus=0;l<=n;l++){while(sum+a[r+1]==(oplus^a[r+1])&&r<n){//一定要打小括号!!!!!r++;sum=sum+a[r];oplus=oplus^a[r];}ans=ans+r-l+1;sum=sum-a[l];oplus=oplus^a[l];
}

相关文章:

双指针算法

引入 双指针顾名思义&#xff0c;就是同时使用两个指针&#xff0c;在序列、链表结构上指向的是位置&#xff0c;在树、图结构中指向的是节点&#xff0c;通过或同向移动&#xff0c;或相向移动来维护、统计信息。 ——OI Wiki 接下来我们来看双指针的几个具体使用方法。 板子…...

关于TD算法的笔记【时间差分】

1. TD算法逻辑&#xff1a;TD算法即时间差分算法&#xff0c;结合了蒙特卡洛方法和动态规划思想&#xff0c;通过当前估计值和下一个时间步观测值更新状态价值估计&#xff0c;无需完整episode或环境完整信息。 2. 下一时刻估计值计算&#xff1a;下一时刻估计值为 r_{t 1}\g…...

计算斐波那契数列

1.对于斐波那契数列的理解&#xff1a; (1)常规 该数列由兔子繁衍的想法产生&#xff0c;故又“兔子数列” 其数值为&#xff1a;1、1、2、3、5、8、13、21、34 从数学定义上走&#xff1a;F(0)1&#xff0c;F(1)1, F(n)F(n - 1)F(n - 2)&#xff08;n ≥ 2&#xff0c;n ∈…...

Oracle REGEXP_SUBSTR

在 Oracle 数据库中&#xff0c;REGEXP_SUBSTR 是一个基于正则表达式的字符串处理函数&#xff0c;用于从目标字符串中提取符合特定模式的子串。它比传统的 SUBSTR 函数更灵活&#xff0c;适用于复杂的模式匹配需求。以下是其核心原理、参数解析及实际案例详解&#xff1a; 一…...

无人机自主导航与路径规划技术要点!

一、自主导航与路径规划技术要点 1. 传感器融合 GPS/北斗定位&#xff1a;提供全局定位&#xff0c;但在室内或遮挡环境下易失效。 惯性测量单元&#xff08;IMU&#xff09;**&#xff1a;通过加速度计和陀螺仪实时追踪姿态&#xff0c;弥补GPS信号丢失时的定位空缺。 …...

DDS波形发生器仿真及技术原理

1. 引言 在现代数字信号处理、电路设计以及通信系统中&#xff0c;直接数字频率合成&#xff08;DDS&#xff09;技术因其高速、精细的频率分辨率以及连续相位输出等优点而得到广泛应用。本文主要探讨在DE2-115开发板平台上基于DDS技术实现波形发生器的设计与实践。通过该设计…...

Java使用ANTLR4解析IDL文件

文章目录 前言解析IDL文件准备两个IDL文件准备一个IDL Grammar文件maven配置生成Lexer Parser Listener Visitor代码新建实体类IDL解析遍历器单元测试 参考 前言 接着上篇&#xff1a;Java使用ANTLR4对Lua脚本语法校验&#xff0c;介绍了什么是ANTLR&#xff1f;/ 举了一个hel…...

04-Seata 深度解析:从分布式事务原理到 Seata 实战落地

Seata 深度解析&#xff1a;从分布式事务原理到 Seata 实战落地 一、分布式事务核心理论与挑战 1.1 分布式事务的本质难题 在微服务架构中&#xff0c;一次业务操作可能涉及多个服务的数据库操作&#xff0c;传统单体事务&#xff08;ACID&#xff09;无法跨越服务边界&…...

2025企业增长新引擎:AI Agent驱动人效跃迁|白皮书2.0发布

2025年伊始&#xff0c;一款名为DeepSeek-R1的国产AI大模型以其高性能、低成本等核心优势成功霸榜热搜&#xff0c;在全国乃至全球掀起一场以AI为核心的技术革新与管理变革。 面对这样极具颠覆性的革新命题&#xff0c;易路人力资源科技王天扬先生自2022年起就率团队持续专注于…...

IJCV-2025 | 深圳大学记忆增强的具身导航!ESceme:基于情景记忆的视觉语言导航

作者&#xff1a;Qi Zheng 1 , 2 ^{1,2} 1,2, Daqing Liu 3 ^{3} 3, Chaoyue Wang 3 ^{3} 3, Jing Zhang 2 ^{2} 2, Dadong Wang 4 ^{4} 4, Dacheng Tao 2 ^{2} 2单位&#xff1a; 1 ^{1} 1深圳大学电子与信息工程学院&#xff0c; 2 ^{2} 2悉尼大学计算机科学学院&#xff0c;…...

[第十六届蓝桥杯 JavaB 组] 真题 + 经验分享

A&#xff1a;逃离高塔(AC) 这题就是简单的签到题&#xff0c;按照题意枚举即可。需要注意的是不要忘记用long&#xff0c;用int的话会爆。 &#x1f4d6; 代码示例&#xff1a; import java.io.*; import java.util.*; public class Main {public static PrintWriter pr ne…...

《分布式软总线:网络抖动下的数据传输“定海神针”》

在当下&#xff0c;智能设备之间的互联互通已成为生活与工作的刚需。分布式软总线作为实现这一愿景的关键技术&#xff0c;正日益凸显其重要性。然而&#xff0c;网络环境的复杂性&#xff0c;尤其是网络抖动频繁的情况&#xff0c;给分布式软总线的数据传输带来了严峻挑战。如…...

C++函数

函数 为什么要使用函数 已经有main函数&#xff0c;为什么还要自定义函数&#xff1f;&#xff1a;“避免重复制造轮子”&#xff0c;提高开发效率 函数的定义 函数的设计方法&#xff1a;先确定函数的功能、确定函数的参数、是否需要参数&#xff0c;参数的个数&#xff0c…...

FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现

目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道&#xff0c;任…...

PCIe 学习笔记(一)

系列文章目录 【PCIe】链路测试&#xff0c;数字工程师也要会看高速信号眼图&#xff01; 【PCIe】链路训练状态机(LTSSM) - PCIe链路建立过程概述 【PCIe】PCIe设备的BDF与系统枚举过程 文章目录 系列文章目录PCIe LTSSM**1. 链路训练状态&#xff08;Training States&#…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——LED、按键测试

1&#xff09;实验平台&#xff1a;正点原子ATK-DLMP257B开发板 2&#xff09;浏览产品&#xff1a;https://www.alientek.com/Product_Details/135.html 3&#xff09;全套实验源码手册视频下载&#xff1a;正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试4.1 LED…...

深度为16,位宽8bit的单端口SRAM——学习记录

链接&#xff1a; 【Verilog HDL 训练】第 13 天&#xff08;存储器、SRAM&#xff09;-云社区-华为云 module sram #(parameter ADDR_BITS4)(input clk,input [ 7:0] addr,input [ 7:0] din,input ce,input we,output reg [ 7:0] dout);localparam MEM_DEPTH 1<<ADDR_…...

面向对象编程

在面向对象编程中&#xff0c;除了通过创建类的实例来访问其属性和方法外&#xff0c;还可以通过在一个类里创建另一个类的属性&#xff08;本质上也是持有另一个类的实例引用&#xff09;的方式来访问该类的属性和方法。下面为你详细解释这两种方式&#xff1a; 1. 通过创建实…...

远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?

远程登录一个Linux系统&#xff0c;如何用命令快速知道该系统属于Linux的哪个发行版&#xff0c;以及该服务器的各种配置参数&#xff0c;运行状态&#xff1f; 查看Linux发行版信息 查看发行版名称和版本&#xff1a; cat /etc/*-release或 lsb_release -a查看内核版本&#…...

简单socket通信,回显 服务器程序与客户端程序之间的通信。

Socket 通信编程是一种基于网络的通信方式&#xff0c;允许不同主机上的程序通过网络进行数据交换。 实现结构try catch&#xff1a; 前情了解&#xff1a; 1.如何创建服务器端 定义ServerSocket套接字&#xff0c;需要等待客户端连接&#xff0c;阻塞&#xff0c;直到接入连接…...

C# 基类型和派生类型之间的转型

1.什么是基类型和派生类 基类型&#xff1a;父类&#xff0c;所有子类都继承自它。 派生类型&#xff1a;子类&#xff0c;继承了父类的属性和方法&#xff0c;还可以添加自己的新功能。 例子&#xff1a; class Animal { }//基类型 class Dog : Animal { }//派生类型 这…...

深度学习--激活函数

激活函数通过计算加权和并加上偏置来确定神经元是否应该倍激活&#xff0c;它们将输入信号转换为输出的可微运算。大多数激活函数都是非线性的&#xff0c;由于激活函数是深度学习的基础&#xff0c;下面简要介绍一些常见的激活函数。 1 RelU函数 最受欢迎的激活函数是修正线性…...

MySQL 缓存机制全解析:从磁盘 I/O 到性能优化

MySQL 缓存机制全解析&#xff1a;从磁盘 I/O 到性能优化 MySQL 的缓存机制是提升数据库性能的关键部分&#xff0c;它通过多级缓存减少磁盘 I/O 和计算开销&#xff0c;从而提高查询和写入的效率。 1. 为什么需要缓存&#xff1f; 数据库的性能瓶颈通常集中在磁盘 I/O 上。…...

【项目管理】第17章 项目干系人管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...

编程语言到mysql ‘\‘到数量关系

在 MySQL 的模糊查询中&#xff0c;反斜杠 \ 的转义规则需要根据 转义层级 和 SQL 模式 来确定。以下是详细说明及示例&#xff1a; 一、默认模式下&#xff08;未启用 NO_BACKSLASH_ESCAPES&#xff09; 1. 规则说明 反斜杠转义&#xff1a;\ 是 MySQL 的默认转义字符。 转义…...

本地生活服务平台搭建方案详解:同城跑腿外卖系统源码一体化开发

在数字化浪潮不断推进的今天&#xff0c;本地生活服务平台正逐渐成为人们日常生活中不可或缺的一部分。从点餐外卖到同城帮买、帮送、帮取&#xff0c;用户对即时服务的需求愈发强烈。与此同时&#xff0c;创业者和本地商家也纷纷看好“同城服务 外卖配送”的一体化平台模式&a…...

索引语法SQL性能分析索引的使用

目录 准备: 一.索引语法 1). 创建索引 2). 查看索引 3). 删除索引 4).使用索引查询和普通查询的区别 二.SQL性能分析 1.SQL执行频率 2.慢查询日志 3.profile详情 4.explain 三.索引的使用 1.最左前缀法则 2.范围查询 3.索引失效情况 索引列运算 字符串不加引号…...

Docker技术基础新手入门教程

Docker技术深度解析:从架构到实战的运维指南 一、Docker核心架构与组件详解1. 什么是Docker?1. Docker引擎(Docker Engine)2. Docker对象模型二、关键技术深度剖析1. 容器隔离机制2. 容器网络模型网络驱动类型自定义网络实战3. 存储卷与数据持久化三种挂载方式对比示例:My…...

NO.93十六届蓝桥杯备战|图论基础-拓扑排序|有向无环图|AOV网|摄像头|最大食物链计数|杂物(C++)

有向⽆环图 若⼀个有向图中不存在回路&#xff0c;则称为有向⽆环图(directed acycline graph)&#xff0c;简称 DAG 图 AOV⽹ 举⼀个现实中的例⼦&#xff1a;课程的学习是有优先次序的&#xff0c;如果规划不当会严重影响学习效果。课程间的先后次序可以⽤有向图表⽰ 在…...

Rust泛型与特性

文章目录 泛型函数中的泛型结构体与枚举中的泛型特性&#xff08;trait&#xff09;默认特性Trait作为参数特性做返回值 给结构体实现方法 泛型 泛型编程是现代编程语言中重要的机制 C是通过模板来实现泛型的&#xff0c;而C语言中是没有泛型的 泛型是用来表达抽象类型的机制…...

Day08【基于预训练模型分词器实现交互型文本匹配】

基于预训练模型分词器实现交互型文本匹配 目标数据准备参数配置数据处理模型构建主程序测试与评估总结 目标 本文基于预训练模型bert分词器BertTokenizer&#xff0c;将输入的文本以文本对的形式&#xff0c;送入到分词器中得到文本对的词嵌入向量&#xff0c;之后经过若干网络…...

基于uniapp 实现画板签字

直接上效果图 代码 <template><view class"container"><!-- 签名画布 --><view class"canvas-container"><canvas canvas-id"signCanvas" class"sign-canvas"touchstart"handleTouchStart"touc…...

5.跳表(skiplist)

1. 什么是跳表 -skiplist skiplist 本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是一样的&#xff0c;可以作为key 或者 key/value 的查找模型。 skiplist &#xff0c;顾名思义&#xff0c;首先它是一个 list 。实际上…...

GitHub 封禁中国 IP:影响、原因及应对

在技术全球化的当下&#xff0c;代码托管平台如同开发者的 “数字仓库”&#xff0c;而 GitHub 无疑是其中最广为人知的一座。但在 2025 年 4 月 13 日&#xff0c;一则令人震惊的消息在国内开发者社群中炸开了锅 ——GitHub 疑似封禁中国 IP。一时间&#xff0c;这一事件迅速成…...

基于工业操作系统构建企业数字化生态的实践指南

一、工业操作系统选型策略 工业操作系统&#xff08;IIoT OS&#xff09;的选型需从功能适配性、技术成熟度、生态兼容性三个维度综合评估。以玉麟科技DIOS平台为例&#xff0c;其 "云端 终端" 架构支持全球设备管理&#xff0c;通过工业知识模型实现设备健康度预测…...

金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应”

金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应” 在2025年第一季度京东工业平台“电料辅件-安全工器具”热销品牌的激烈竞争中&#xff0c;金能电力以一组极具说服力的数据&#xff0c;向行业展示了何为“绝对头部”。从成交金额、销量到流量、客群覆…...

基于大模型的反流食管炎手术全流程风险预测与治疗方案研究报告

目录 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究方法与创新点 二、反流食管炎概述 2.1 定义与发病机制 2.2 临床症状与诊断标准 2.3 流行病学现状 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于反流食管炎预测的优势 四…...

探索 C 与 Java/Kotlin 的语言差异:从指针到高阶函数

作为一名熟悉 Java 和 Kotlin 的开发者&#xff0c;初次接触 C/C 时常会遇到一系列概念上的“文化冲击”。本文将从几个关键点出发&#xff0c;帮助你更好地理解 C/C 与 Java/Kotlin 在语言设计上的核心区别。 1. 指向未知类型的指针 void*、结构体指针访问 ->、空指针常量 …...

Redis之缓存过期淘汰策略

面试切入点 Redis内存满了怎么办&#xff1f; redis的默认内存多少&#xff1f;在哪里查看&#xff1f;如何设置修改&#xff1f; 查看redis最大占用内存 打开redis配置文件&#xff0c;设置maxmemory参数&#xff0c;maxmemory是bytes字节类型&#xff0c;注意转换。 redi…...

Rust-引用借用规则

目录 一、概述 二、借用规则 三、详细解释 3.1 第一条规则 3.2 第二条规则 3.3 第三条规则 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [Rust-引用借用规则] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 一、概述 Rust为确保程序在运行时不…...

【报错】解决pytorch出现RuntimeError: An attempt has been made to start a new process...

此错误是由于在 Windows 系统中使用多进程时&#xff0c;没有正确使用 if __name__ __main__: 语句块造成的。在 Windows 里&#xff0c;多进程的启动方式是 spawn&#xff0c;并非 fork&#xff0c;所以必须在主模块中使用 if __name__ __main__: 语句块来避免子进程重复执行…...

游戏引擎学习第228天

对上次的内容进行回顾&#xff0c;并为今天的开发环节做铺垫。 目前大部分功能我们已经完成了&#xff0c;唯一剩下的是一个我们知道存在但目前不会实际触发的 bug。这个 bug 的本质是在某些线程仍然访问一个已经被销毁的游戏模式&#xff08;mode&#xff09;之后的状态&…...

Pytorch Hook 技巧

通过 functools.partial 扩展 Pytorch Hook 机制 阅读 atom 文章源码时学习到的技巧&#xff0c;mark一下 通过 functools.partial&#xff0c;开发者无需修改原始函数或 PyTorch 的 Hook 机制&#xff0c;即可实现​​参数扩展与接口适配​​&#xff0c;这是 Python 函数式编…...

Python multiprocessing模块介绍

multiprocessing 是 Python 标准库中的一个模块&#xff0c;用于实现多进程并行计算&#xff0c;可以在多核 CPU 上显著提升程序性能&#xff0c;尤其适用于 CPU 密集型任务。Python 的多线程由于 GIL&#xff08;全局解释器锁&#xff09;限制&#xff0c;在进行 CPU 密集型任…...

[特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南

&#x1f680; 实践步骤概览 今天我们要在MAC上完成一个完整的AI项目闭环&#xff1a; 微调一个大模型 → 2. 导出模型并部署 → 3. 暴露API给web后端 → 4. 前端展示 &#x1f6e0;️ 微调模型准备 核心配置 框架&#xff1a;LLama-Factory &#x1f3ed; 算法&#xff1a…...

第二天 通过脚本控制物体移动和旋转

一、Unity脚本编程基础认知 1.1 为什么说脚本是Unity的灵魂&#xff1f; Unity引擎的核心架构采用ECS&#xff08;Entity-Component-System&#xff09;模式&#xff0c;脚本作为组件的具体实现&#xff0c;控制着游戏对象的所有行为。统计显示&#xff0c;一个中等规模的Uni…...

在SpringBoot中访问 static 与 templates 目录下的内容

目录 步骤一&#xff1a;添加 Thymeleaf 依赖 (处理 Templates 目录)步骤二&#xff1a;配置静态资源路径 (可选但建议了解)步骤三&#xff1a;访问不同目录下的 HTML 文件访问 static 目录下的 HTML 文件访问 templates 目录下的 HTML 文件 总结 在使用 Spring Boot 开发 Web …...

常见的 API 设计风格

在软件开发中&#xff0c;常见的 API 设计风格主要有以下几种&#xff0c;每种风格适用于不同的场景和需求&#xff1a; 1. RESTful API (主流) 特点&#xff1a; 基于 HTTP 协议&#xff0c;使用标准方法&#xff08;GET/POST/PUT/DELETE&#xff09;资源导向&#xff08;UR…...

Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行

Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行 Grass如何在DePIN项目丛林中脱颖而出? 答案在于其"零门槛"策略——用户是基石,其他一切皆为杠杆。 Grass通过"技术+模式"双轮驱动打破行业内卷:零知识证明技术与Solana Layer2架构确保数据真实…...

ERR_PNPM_DLX_NO_BIN No binaries found in tailwindcss

场景复现&#xff1a; 最近在vue3项目中安装了tailwindcss&#xff0c;但是它默认帮我安装的版本是4XX的&#xff0c;导致我执行 npx tailwindcss init -p报错了。 解决方案&#xff1a; 更改tailwindcss的版本为3 pnpm add -D tailwindcss3再次执行生成tailwindcss的初始…...