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

注意力蒸馏技术

文章目录

  • 摘要
  • abstract
  • 论文摘要
  • 简介
  • 方法
    • 预备知识
    • 注意力蒸馏损失
    • 注意力引导采样
  • 实验
  • 结论
  • 总结
  • 参考文献

摘要

本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation引导采样,这是一种改进的分类器引导方法,将注意力蒸馏损失整合到去噪过程中,大大加快了合成速度,并支持广泛的视觉特征迁移和合成应用。

abstract

This week I read a paper published in CVPR in February, "Attention Distillation: A Unified Approach to Visual Characteristics Transfer, this paper develops the Attention Distillation guided sampling, which is an improved classifier guided method to integrate the attention distillation loss into the denoising process. It greatly speeds up synthesis and supports a wide range of visual feature migration and synthesis applications.

下图中是给定参考图,文生图的示例:
在这里插入图片描述

论文摘要

最近扩散模型方面的进展显示了对图像风格和语义的内在理解。论文提出了一种新颖的注意力蒸馏损失,通过在潜在空间中反向传播来优化合成图像,同时改进了一个分类器引导,它将注意力蒸馏损失集成到去噪采样过程中,进一步加速合成过程。
在这里插入图片描述

简介

论文解决问题: 现有生成扩散模型在图像风格和语义理解方面虽然有进展,但在将参考图像的视觉特征转移到生成图像中时,使用即插即用注意力特征的方法存在局限性。

传统的方法通常将纹理定义为重复的局部模式,并通过从源图像中复制局部补丁来合成新的纹理。通常归结为以下三个原因导致的局限性:

  1. 域差距:当两幅图像存在显著差异时,目标Q(合成图像的查询)与参考图像的K,V之间的相似性较低且不可靠,导致错误的聚合结果(AdaIN和注意力能缓解这个问题)
  2. 误差积累:虽然扩散模型中的迭代采样过程可以改善目标Q和参考图中的K,V之间的巨大差异,但误差也可能积累。来自不同扩散模型层的特征集中于不同的信息,如语义和几何。不正确的匹配将会错误传播到马尔科夫链的后续层,并降低最终图像质量。
  3. 框架限制:在去噪网络的剩余分支内实现自注意力机制,参考图像中的自注意力特征可能对目标图像有潜在的影响,降低了合成的效力。
    为了解决上述局限性,本篇论文中引入一种新的注意力蒸馏损失AD loss,在此基础上,通过反向传播直接更新合成的图像。

提出方案: 首先,提出了一种新颖的注意力蒸馏损失,用于在理想和当前风格化结果之间计算损失,并在隐空间中通过反向传播优化合成图像。其次,开发了一种改进的分类器引导方法,即注意力蒸馏引导采样,将注意力蒸馏损失整合到去噪采样过程中。

方法

预备知识

隐空间扩散模型(LDM),如Stable Diffusion,由于其对复杂数据分布的强大建模能力,在图像生成方面达到了最先进的性能。在LDM中,首先使用预训练的VAE 将图像x压缩到一个学习到的隐空间中。随后,基于UNet的去噪网络被训练用于在扩散过程中预测噪声,通过最小化预测噪声与实际添加噪声之间的均方误差来实现。
L L D M = E z ∼ E ( x ) , y , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ θ ( z t , t , y ) − ϵ ∥ 2 2 ] \mathcal{L}_{\mathrm{LDM}}=\mathbb{E}_{z\sim\mathcal{E}(x),y,\epsilon\sim\mathcal{N}(0,1),t}\left[\|\epsilon_\theta(z_t,t,y)-\epsilon\|_2^2\right] LLDM=EzE(x),y,ϵN(0,1),t[ϵθ(zt,t,y)ϵ22]
其中 y 表示条件, 表示时间步长。去噪 UNet 通常由一系列卷积块和自注意力/交叉注力模块组成,所有这些都集成在残差架构的预测分支中。
KV注入在图像编辑、风格迁移和纹理合成中被广泛使用。它建立在自注意力机制之上,并将扩散模型中的自注意力特征用作即插即用的属性。自注意力机制的公式为:
S e l f − A t t n ( Q , K , V ) = s o f t m a x ( Q K T d ) V \mathrm{Self-Attn}(Q,K,V)=\mathrm{softmax}(\frac{QK^{T}}{\sqrt{d}})V SelfAttn(Q,K,V)=softmax(d QKT)V
在注意力机制的核心,是基于查询Q和键K之间的相似性计算权重矩阵,该矩阵用于对值V进行加权聚合。KV注入通过在不同的合成分支之间复制或共享KV特征来扩展这一机制。其关键假设是KV特征代表图像的视觉外观。在采样过程中,将合成分支中的KV特征替换为示例的相应时间步长的KV特征,可以实现从源图像到合成目标的外观转移。

注意力蒸馏损失

尽管KV注入取得了显著的效果,但由于残差机制的影响,它在保留参考的风格或纹理细节方面表现不足;例如,下图(a)中。KV注入仅作用于残差,这意味着信息流(红色箭头)随后受到恒等连接的影响,导致信息传递不完整。因此,采样输出无法完全再现所需的视觉细节。
在这里插入图片描述
本论文通过在自注意力机制中重新聚合特征来提取视觉元素。利用预训练的T2I扩散模型SD的UNet,从自注意力模块中提取图像特征。
在这里插入图片描述
上图中,首先根据目标分支的Q,从参考分支重新聚合KV特征(Ks和Vs)的视觉信息,这与KV注入相同。
将此注意力输出视为理想的风格化。然后,我们计算目标分支的注意力输出,并计算相对于理想注意力输出的L1损失,这定义了AD损失:
L A D = ∥ S e l f − A t t n ( Q , K , V ) − S e l f − A t t n ( Q , K s , V s ) ∥ 1 \mathcal{L}_{\mathrm{AD}}=\|\mathrm{Self-Attn}(Q,K,V)-\mathrm{Self-Attn}(Q,K_{s},V_{s})\|_{1} LAD=SelfAttn(Q,K,V)SelfAttn(Q,Ks,Vs)1
可以使用提出的AD损失通过梯度下降来优化随机隐空间噪声,从而在输出中实现生动的纹理或风格再现;例如,参见上图(b)。这归因于优化中的反向传播,它不仅允许信息在(残差)自注意力模块中流动,还通过恒等连接流动。通过持续优化,Q和Ks之间的差距逐渐缩小,使得注意力越来越准确,最终特征被正确聚合以产生所需的视觉细节。

注意力引导采样

将注意力蒸馏损失以改进的分类器引导方式纳入扩散模型的采样过程中。
分类器引导在去噪过程中改变去噪方向,从而生成来自p(zt|c)的样本,其公式可以表示为:
ϵ ^ θ = ϵ θ ( z t , t , y ) − α σ t ∇ z t log ⁡ p ( c ∣ z t ) \hat{\epsilon}_\theta=\epsilon_\theta(z_t,t,y)-\alpha\sigma_t\nabla_{z_t}\log p(c|z_t) ϵ^θ=ϵθ(zt,t,y)ασtztlogp(czt)
其中,t是时间步长,y表示提示, ϵ θ \epsilon_\theta ϵθ z t \ {z_t}  zt分别指去噪网络和LDM中的隐空间变量。 α \alpha α控制引导强度。使用基于注意力蒸馏损失的能量函数来引导扩散采样过程。

实验

由于补丁来源有限,使用传统方法合成超高分辨率纹理非常困难。在此,将注意力蒸馏引导的采样应用于MultiDiffusion模型,使纹理扩展到任意分辨率。尽管SD-1.5是在尺寸为512×512的图像上训练的,但令人惊讶的是,当结合注意力蒸馏时,它在大尺寸纹理合成中表现出了强大的能力。下图展示了将纹理扩展到512×1536的尺寸与GCD和GPDM的比较。
在这里插入图片描述
损失函数代码

def ad_loss(q_list, ks_list, vs_list, self_out_list, scale=1, source_mask=None, target_mask=None
):loss = 0attn_mask = Nonefor q, ks, vs, self_out in zip(q_list, ks_list, vs_list, self_out_list):if source_mask is not None and target_mask is not None:w = h = int(np.sqrt(q.shape[2]))mask_1 = torch.flatten(F.interpolate(source_mask, size=(h, w)))mask_2 = torch.flatten(F.interpolate(target_mask, size=(h, w)))attn_mask = mask_1.unsqueeze(0) == mask_2.unsqueeze(1)attn_mask=attn_mask.to(q.device)target_out = F.scaled_dot_product_attention(q * scale,torch.cat(torch.chunk(ks, ks.shape[0]), 2).repeat(q.shape[0], 1, 1, 1),torch.cat(torch.chunk(vs, vs.shape[0]), 2).repeat(q.shape[0], 1, 1, 1),attn_mask=attn_mask)loss += loss_fn(self_out, target_out.detach())return lossdef q_loss(q_list, qc_list):loss = 0for q, qc in zip(q_list, qc_list):loss += loss_fn(q, qc.detach())return loss# weight = 200
def qk_loss(q_list, k_list, qc_list, kc_list):loss = 0for q, k, qc, kc in zip(q_list, k_list, qc_list, kc_list):scale_factor = 1 / math.sqrt(q.size(-1))self_map = torch.softmax(q @ k.transpose(-2, -1) * scale_factor, dim=-1)target_map = torch.softmax(qc @ kc.transpose(-2, -1) * scale_factor, dim=-1)loss += loss_fn(self_map, target_map.detach())return loss# weight = 1
def qkv_loss(q_list, k_list, vc_list, c_out_list):loss = 0for q, k, vc, target_out in zip(q_list, k_list, vc_list, c_out_list):self_out = F.scaled_dot_product_attention(q, k, vc)loss += loss_fn(self_out, target_out.detach())return loss

下面这段代码主要通过自适应特征提取和优化,将内容图像的潜变量 (latents) 调整为具有风格图像特征的潜变量,实现风格迁移(Style Transfer)或风格控制 (Style-Adaptive Denoising, AD)。
1.使用了一种基于 AdaIN (Adaptive Instance Normalization) 的方法对 latents 进行风格调整:

if self.adain:noise = torch.randn_like(self.style_latent)style_latent = self.scheduler.add_noise(self.style_latent, noise, t)latents = utils.adain(latents, style_latent)

2.提取风格和内容特征:

qs_list, ks_list, vs_list, s_out_list = self.extract_feature(self.style_latent,t,self.null_embeds_for_style,add_noise=True,
)
if self.content_latent is not None:qc_list, kc_list, vc_list, c_out_list = self.extract_feature(self.content_latent,t,self.null_embeds,add_noise=True,)

3.优化 latents 使其匹配风格和内容特征:

optimizer = torch.optim.Adam([latents.requires_grad_()], lr=lr)
optimizer = self.accelerator.prepare(optimizer)

在 iters 轮优化中,计算损失 (style_loss 和 content_loss),并进行反向传播:

for j in range(iters):style_loss = ad_loss(q_list, ks_list, vs_list, self_out_list, scale=self.attn_scale)if self.content_latent is not None:content_loss = q_loss(q_list, qc_list)loss = style_loss + content_loss * weightself.accelerator.backward(loss)optimizer.step()

结论

这篇论文提出了一种统一的方法来处理各种视觉特征转移任务,包括风格/外观转移、特定风格的图像生成和纹理合成。该方法的关键是一种新颖的注意力蒸馏损失,它计算理想风格化与当前风格化之间的差异,并逐步修改合成。

总结

这篇论文提出了一种基于注意力蒸馏(Attention Distillation, AD)的新方法,用于改进扩散模型在视觉特征迁移任务中的表现。作者引入注意力蒸馏损失(AD Loss),通过反向传播优化合成图像,使其更好地匹配目标风格。此外,论文提出注意力蒸馏引导采样,将AD Loss整合到去噪过程中,加快图像合成速度,并提升细节保真度。实验表明,该方法在风格迁移、特定风格图像生成和纹理合成等任务中均优于现有技术,特别是在高分辨率纹理生成方面表现突出。该方法通过改进查询-键-值(Q-K-V)特征聚合,有效缓解域差距、误差积累和框架限制问题。

参考文献

[1] Attention Distillation: A Unified Approach to Visual Characteristics Transfer

相关文章:

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…...

Day17 -实例:利用不同语言不同框架的特征 进行识别

前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…...

Centos7 安装 TDengine

Centos7 安装 TDengine 1、简介 官网: https://www.taosdata.com TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓…...

DeepSeek调用API访问,使用AnythingLLM建立本地知识库后开放API调用,ApiFox/PostMan调用本地DeepSeek

上篇文章中我们使用AnythingLLM成功在本地部署了DeepSeek的本地知识库,并且上传了几个文件让DeepSeek学习,可点击查看: 本地部署DeepSeek并使用AnythingLLM建立本地知识库全流程,DeepSeek-R1:7b本地安装部署,DeepSeek-R1本地部署…...

SQL语句---DDL

文章目录 1、SQL语句2、DDL2.1 数据库的操作显示当前的数据库创建数据库指定编码删除数据库切换当前数据库 2.2 数据表的操作显示表创建表显示表结构修改表添加新的字段删除原有字段 修改原有字段删除数据表 2.3 Mysql数据库中常用的数据类型 1、SQL语句 结构化查询语句&#…...

Java实战:实现用户的登录注册功能

系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析:二、定义用户类:三、服务层的实现: 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面: 大…...

用LLama factory时报类似Process 2504721 got signal: 1的解决方法

之前用nohup来远程跑LLama factory微调脚本,是没有问题的,但今天发现运行类似下面这个命令时, nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一关闭ssh session,就会终止训练,报类似&…...

WPF ContentTemplate

ContentTemplate 是一个非常重要的属性,用于定义 ContentPresenter 中内容的显示样式。通过设置 ContentTemplate,你可以控制 ContentPresenter 如何呈现其绑定的内容。 下面是对 ContentTemplate 的详细解释以及它的作用和用法。 1. ContentTemplate 的…...

powershell7.5.0不支持conda的问题

经历:这周手欠使用vscode的powershell时提示我更新,我就更新了,更新完激活不了conda环境了,查询了半天是powershell最新版7.5.0与目前conda25.1.1以前的版本不支持的问题。 问题环境:powershell版本>7.5.0&#xff…...

SSE SseEmitter.completeWithError(e) 触发的处理逻辑

在 Java 客户端使用 OkHttp 监听 SSE(Server-Sent Events) 的情况下,当服务端调用 SseEmitter.completeWithError(e),客户端会触发 EventSourceListener 的 onFailure() 方法(而不是 onError)。 1. 服务端&…...

JAVA反序列化深入学习(八):CommonsCollections6

与CC5相似: 在 CC5 中使用了 TiedMapEntry#toString 来触发 LazyMap#get在 CC6 中是通过 TiedMapEntry#hashCode 来触发 LazyMap#get 之前看到了 hashcode 方法也会调用 getValue() 方法然后调用到其中 map 的 get 方法触发 LazyMap,那重点就在于如何在反…...

科技快讯 | 韩国科学家研发出全球首款仿生液态机器人;OpenAI推出GPT-4o图像生成功能

韩国科学家研发出全球首款仿生液态机器人,自由变形穿越金属栅栏 韩国首尔大学等研究团队开发出一种基于液体的下一代软体机器人,具有细胞仿生特性,能自由变形、分裂融合,并执行物质运输任务。该机器人采用“颗粒装甲”设计&#x…...

[Vue2]v-model用于表单

之前我们讲到过v-model用于双向绑定一个数据&#xff0c;通常用于表单提交数据。而之前的演示里只演示了文本输入栏&#xff0c;这里详细演示一下其他表单输入时使用v-model。 文本输入 文本输入数据就是经典的type"text"&#xff1a; <input type"text&qu…...

【机器学习】imagenet2012 数据预处理数据预处理

【机器学习】数据预处理 1. 下载/解压数据2. 数据预处理3. 加载以及训练代码3.1 使用PIL等加载代码3.2 使用OpenCV的方式来一张张加载代码3.3 h5的方式来加载大文件 最后总结 这个数据大约 140个G,128w的训练集 1. 下载/解压数据 首先需要下载数据&#xff1a; 数据最后处理…...

基于pycatia的CATIA零部件激活状态管理技术解析

一、问题背景&#xff1a;CATIA激活状态管理的痛点 在CATIA V5/V6的装配设计过程中&#xff0c;工程师经常使用激活状态控制&#xff08;Activation&#xff09;​来管理大型装配体的显示性能。但实际使用中存在一个典型问题&#xff1a;​当零部件被取消激活&#xff08;Deac…...

基于javaweb的SpringBoot水果生鲜商城系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

‌JVM 内存模型(JDK8+)

‌1. 内存模型结构图解‌ JVM 内存模型&#xff08;JDK 8&#xff09; ├── **线程私有区** │ ├── 程序计数器&#xff08;Program Counter Register&#xff09;‌ │ ├── 虚拟机栈&#xff08;VM Stack&#xff09; │ │ └── 栈帧&#xff08;局…...

基于飞腾FT2000/4的全国产标准6U VPX板卡,支持银河麒麟

1 功能 高可靠性的基于飞腾公司FT2000/4的处理器以及 X100 芯片组的标准6U VPX板卡&#xff0c;具有以太网、SATA、PCIE&#xff0c;以及显示等接口&#xff0c;产品功能框图如图1所示&#xff1a; 图 1 功能框图 2 技术指标 本产品功能和性能指标&#xff0c;见表 1。 表1 产品…...

【从零实现Json-Rpc框架】- 项目实现 - Dispatcher模块实现篇

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

WPS宏开发手册——JSA语法练习

目录 系列文章3、JSA语法练习3.1、运算练习3.2、比较练习3.3、if else练习3.4、for 练习3.5、字符串、数组方法练习3.6、语义转编程练习题 系列文章 使用、工程、模块介绍 JSA语法 JSA语法练习题 Excel常用Api 后续EXCEL实战、常见问题、颜色附录&#xff0c;持…...

【自学笔记】Go语言基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. Go 语言简介2. 基本语法变量声明与赋值常量数据类型运算符 3. 控制结构条件语句循环语句 4. 函数函数定义与调用多返回值匿名函数与闭包 5. 并发编程goroutinech…...

PyQt6实例_批量下载pdf工具_主线程停止线程池

目录 前置&#xff1a; 代码&#xff1a; 视频&#xff1a; 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点&#xff1a; 线程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信号与…...

在 Vue 项目中,登录成功后是否存储 token 与用户信息到本地

答案&#xff1a;不安全 举例&#xff1a;直接使用localStorage存储&#xff0c;本地存储可能会被 XSS 攻击窃取 localStorage.setItem(token, response.token)localStorage.setItem(userInfo, JSON.stringify({username: response.username,email: response.email})) 推荐方…...

【加密社】做一个展示币种价格的组件

具体的代码是以下,可以看到 <div id"crypto-price-widget"><p class"loading">Loading cryptocurrency prices... <span class"spinner"></span></p> </div><script> document.addEventListener(DOM…...

CANoe入门——CANoe的诊断模块,调用CAPL进行uds诊断

目录 一、诊断窗口介绍 二、诊断数据库文件管理 三、添加基础诊断描述文件&#xff08;若没有CDD/ODX/PDX文件&#xff09;并使用对应的诊断功能进行UDS诊断 3.1、添加基础诊断描述文件 3.2、基于基础诊断&#xff0c;使用诊断控制台进行UDS诊断 3.2.1、生成基础诊断 3.…...

AI日报 - 2025年3月30日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; 模型进展 | Qwen2.5-Omni多模态实时交互&#xff0c;Gemini 2.5 Pro/GPT-4o低调升级&#xff0c;Claude内部思考过程揭秘。 新模型和升级持续涌现&#xff0c;多模态与内部机制理解成焦点。 ▎&#x…...

蓝桥刷题note11(好数)

1&#xff0c;好数 一个整数如果按从低位到高位的顺序&#xff0c;奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数&#xff0c;偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数&#xff0c;我们就称之为 “好数”。 给定一个正整数 NN&#xff0c;请计算从 1 到 NN 一共…...

Go常用的设计模式

Go常用的设计模式 常见的设计模式&#xff0c;如 单例模式、工厂模式、策略模式、观察者模式、代理模式、装饰器模式 和 适配器模式 都可以在 Go 中实现&#xff0c;适用于不同的开发需求。 这些设计模式不仅能帮助你编写结构清晰、可维护的代码&#xff0c;还能让你更好地应…...

复现文献中的三维重建图像生成,包括训练、推理和可视化

要复现《One - 2 - 3 - 45 Fast Single Image to 3D Objects with Consistent Multi - View Generation and 3D Diffusion (CVPR)2024》文献中的三维重建图像生成&#xff0c;包括训练、推理和可视化&#xff0c;并且确保代码能正常运行&#xff0c;下面是基本的实现步骤和示例…...

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…...

Mysql练习题

先创建对应数据表 #先创建表 #学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student values(02 , 钱电 , 1990-12-21 , 男); insert int…...

torch不能使用cuda的解决方案

遇到了这样的报错&#xff0c;说明 torch不能使用cuda 反思 我频繁地尝试安装不同的 nvdia 驱动&#xff0c;浪费了很多时间。因为我的错误地认为nvidia会自带cuda&#xff0c;其实cuda需要单独安装。 还有我的torch是cpu版本的&#xff0c;即使nvidia cuda安装了&#xff0…...

Python 循环全解析:从语法到实战的进阶之路

一、问答题 &#xff08;1&#xff09;下面的循环体被重复了多少次?每次循环的输出结果是什么? i1 while i < 10:if i % 2 0:print(i)死循环&#xff0c;没有输出结果 i1 while i < 10:if i % 2 0:print(i)i l死循环&#xff0c;没有输出结果 i 1 while i< 10…...

代码随想录算法训练营--打卡day3

复习&#xff1a;标注感叹号的需要在电脑上重新做几遍 一.两两交换链表中的节点&#xff01;&#xff01; 1.题目链接 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 2.思路 画图 3.代码 class Solution {public ListNode swapPairs(ListNode head) …...

ubuntu 安装mysql

在 Ubuntu 系统中安装 MySQL 的步骤如下&#xff1a; 步骤 1&#xff1a;更新软件包列表 sudo apt update步骤 2&#xff1a;安装 MySQL 服务器 sudo apt install mysql-server -yUbuntu 22.04/20.04 默认安装 MySQL 8.0&#xff0c;早期版本可能默认使用 MariaDB。 如果需要…...

用Python实现资本资产定价模型(CAPM)

使用 Python 计算资本资产定价模型&#xff08;CAPM&#xff09;并获取贝塔系数&#xff08;β&#xff09;。 步骤 1&#xff1a;导入必要的库 import pandas as pd import yfinance as yf import statsmodels.api as sm import matplotlib.pyplot as plt 步骤 2&#xff1…...

Conda配置Python环境

1. 安装 Conda 选择发行版&#xff1a; Anaconda&#xff1a;适合需要预装大量科学计算包的用户&#xff08;体积较大&#xff09;。 Miniconda&#xff1a;轻量版&#xff0c;仅包含 Conda 和 Python&#xff08;推荐自行安装所需包&#xff09;。 验证安装&#xff1a; co…...

Redisson延迟队列实战:分布式系统中的“时间管理者“

目录 引言&#xff1a;延迟队列的魅力与应用 什么是Redisson延迟队列&#xff1f; 技术原理与工作机制 应用场景 环境准备&#xff1a;搭建基础 Maven依赖配置 Redisson客户端配置 延迟队列实现&#xff1a;核心代码 工作原理深度解析 数据模型与存储结构 元素流转过…...

国产化适配 - YashanDB、达梦数据库与MySQL 的兼容性及技术选型对比分析

根据知识库信息&#xff0c;以下是 YashanDB、达梦数据库与MySQL 的兼容性及技术选型对比分析&#xff1a; 1. YashanDB 与 MySQL 兼容性 协议与语法兼容 &#xff1a; YashanDB 100%兼容 MySQL 5.7协议 的常用命令&#xff08;如 SELECT、INSERT&#xff09;&#xff0c;但…...

从0开始——在PlatformIO下开展STM32单片机的HAL库函数编程指南

目录 前言 编写时钟初始化 实现Systicks_Handler&#xff0c;完成HAL库的时基更新 编写驱动测试 前言 笔者最开始的尝试是在2025年的寒假&#xff0c;准备向PlatformIO迁移HAL库&#xff0c;注意&#xff0c;截止到目前&#xff0c;PlatformIO对HAL库的支持已经非常完善了。…...

Python小练习系列 Vol.9:杨辉三角生成(数组构建 + 数学组合)

&#x1f9e0; Python小练习系列 Vol.9&#xff1a;杨辉三角生成&#xff08;数组构建 数学组合&#xff09; &#x1f53a; 本期我们带来一道简洁却优雅的经典练习 —— 生成杨辉三角&#xff0c;是训练数组操作与组合思想的绝佳题目&#xff01; &#x1f9e9; 一、题目描述…...

Webview详解(下)

第三阶段&#xff1a;性能优化 加载速度优化 缓存策略 缓存策略可以显著减少网络请求&#xff0c;提升页面加载速度。常用的缓存策略包括 HTTP 缓存和本地资源预加载。 1. HTTP 缓存 HTTP 缓存利用 HTTP 协议中的缓存机制&#xff08;如 Cache-Control、ETag 等&#xff0…...

scss基础用法

SCSS&#xff08;Sassy CSS&#xff09;是Sass的增强版本&#xff0c;作为CSS的预处理器&#xff0c;它提供了多种功能来提高代码的可维护性和效率。以下是SCSS的基础用法&#xff1a; 变量&#xff08;Variables&#xff09; 用于存储常用的值&#xff0c;如颜色、字体大小等。…...

知能行每日综测

题目1 自己的做法 答案 题目2 自己的 答案 题目3 注意&#xff1a;这道做错了&#xff0c;你们可以看看我哪里错了 题目4 我的 答案 题目5 没思路&#xff0c;不会做 已更改 题目6 答案 第七题 我的 不会 现在补综测最后一个...

c++ vs和g++下的string结构

话不多说进入正题.注:下述结构是在32位平台下进行验证&#xff0c;32位平台下指针占4个字节. vs下string的结构 string总共占28个字节&#xff0c;内部结构稍微复杂一点&#xff0c;先是有一个联合体&#xff0c;联合体用来定义 string中字符串的存储空间&#xff1a;(联合体的…...

海量数据处理

1.海量数据处理问题 给两个文件&#xff0c;分别有100亿个query&#xff0c;只有1G内存&#xff0c;如何找到两个文件交集&#xff1f; 解决方案一&#xff1a; 可以先用布隆过滤器&#xff0c;一个文件的query放进布隆过滤器&#xff0c;另一个文件依次查找&#xff0c;在的…...

洛谷题单1-P5706 【深基2.例8】再分肥宅水-python-流程图重构

题目描述 现在有 t t t 毫升肥宅快乐水&#xff0c;要均分给 n n n 名同学。每名同学需要 2 2 2 个杯子。现在想知道每名同学可以获得多少毫升饮料&#xff08;严格精确到小数点后 3 3 3 位&#xff09;&#xff0c;以及一共需要多少个杯子。 输入格式 输入一个实数 t …...

【HarmonyOS 5】初学者如何高效的学习鸿蒙?

【HarmonyOS 5】初学者如何高效的学习鸿蒙&#xff1f; 一、前言 在全球科技格局风云变幻的当下&#xff0c;谷歌安卓系统的管控逐步收紧&#xff0c;加之国际形势愈发复杂&#xff0c;打造中国人自主的操作系统&#xff0c;已成为时代发展的必然要求&#xff0c;这不仅是突破…...

Java NIO之FileChannel 详解

关键点说明 文件打开选项&#xff1a; StandardOpenOption.CREATE - 文件不存在时创建 StandardOpenOption.READ/WRITE - 读写权限 StandardOpenOption.APPEND - 追加模式 StandardOpenOption.TRUNCATE_EXISTING - 清空已存在文件 缓冲区操作&#xff1a; ByteBuffer.wrap…...

数据可视化(matplotlib)-------图表样式美化

目录 一、图表样式概述 &#xff08;一&#xff09;、默认图表样式 &#xff08;二&#xff09;、图表样式修改 1、局部修改 2、全局修改 二、使用颜色 &#xff08;一&#xff09;、使用基础颜色 1、单词缩写或单词表示的颜色 2、十六进制/HTML模式表示的颜色 3、RGB…...