ComfyUI流程图生图原理详解
一、引言
ComfyUI 是一款功能强大的工具,在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题,并深入剖析图生图过程及相关参数,帮助读者快速入门并深入理解其原理。
二、ComfyUI 的安装与配置中遇到的问题
(一)安装过程中的常见问题及解决方法
- Python 与 PyTorch 版本兼容性
ComfyUI 官网推荐使用 Python 3.12,而 Python 3.12 仅支持 PyTorch 2.X 版本。因此,在安装时务必确保所安装的 PyTorch 版本与 Python 版本相互兼容。 - PyTorch CUDA 与服务器 CUDA 版本兼容性
若服务器的 CUDA 版本较低(如 CUDA 11.2),鉴于 PyTorch 的底层算力逻辑通常具有兼容性,可尝试安装 CUDA 11.8 的 PyTorch 版本。 - numpy 版本兼容性
通常建议安装 numpy<2.0,以避免潜在的兼容性问题。
(二)解决运行时的 CUDA 错误
若在运行python main.py
时遭遇 CUDA 错误,可通过以下命令解决:
python main.py --listen 0.0.0.0 --disable-cuda-malloc
(三)ComfyUI 工作流与模型管理
- 安装插件
在 ComfyUI 管理器中,插件安装类似于下载 GitHub 项目。一般情况下,插件会自动通过pip install requirement.txt
来安装所需依赖。 - 解决连接问题
- 网络检查(Linux 系统):若遇到无法连接到 GitHub 项目的问题,首先检查是否能通过正常网络访问 GitHub。若网络连接问题影响插件下载,可尝试使用国内镜像或通过 VPN 解决。
- 手动下载插件:若仍无法连接 GitHub,可手动下载插件的压缩包,解压后将其放置到
custom_nodes/
目录下,然后手动执行pip install requirement.txt
来安装依赖。
三、图生图原理剖析
(一)图生图基础概念
在图生图过程中,checkpoints 由以下几部分组成:
- model:扩散模型(作用于潜在空间)
- CLIP:文本编码器
- VAE:编码器和解码器
在潜在空间中,会进行扩散操作(对应 K 采样器)。其基本流程为:encode 将输入的文本、图像编码转化为计算机可识别的向量数据,借助 clip 找到与文本对应图像相似的向量,得到文本和图像组合的潜在空间向量。在此基础上进行扩散,在 latent 里得到扩散后的潜在空间向量,最后通过 Decoder(即 vae)解码,转化为人眼可见的图像。
(二)图生图(Image - to - Image)过程及相关参数解析
-
CLIP 文本编码的正向和负向条件
CLIP 的文本编码
CLIP(Contrastive Language - Image Pretraining)模型旨在将文本和图像映射到同一潜在空间,以便相互检索,主要采用对比学习方法进行训练。假设文本输入为 T = { t 1 , t 2 , . . . , t n } T = \{ t_1, t_2,..., t_n \} T={t1,t2,...,tn},其中 t i t_i ti 是文本中的第 i i i 个词汇。CLIP 使用 Transformer 模型对文本进行编码,得到文本的嵌入向量 z T z_T zT,即:
z T = f T ( T ) z_T = f_T(T) zT=fT(T)
其中, f T f_T fT 是文本编码器,负责将文本映射到潜在的嵌入空间。正向条件 (Positive Condition)
正向条件用于衡量生成图像与文本描述的相似性,目标是使生成图像符合输入文本描述。在图生图任务中,正向条件通常由文本来引导生成图像的内容。 正向条件公式为:
L contrastive = − log exp ( z T T z I / τ ) ∑ i = 1 N exp ( z T T z i / τ ) L_{\text{contrastive}} = -\log \frac{\exp(z_T^T z_I / \tau)}{\sum_{i=1}^N \exp(z_T^T z_i / \tau)} Lcontrastive=−log∑i=1Nexp(zTTzi/τ)exp(zTTzI/τ)
其中, τ \tau τ 是温度参数,用于控制对比学习的难度。生成过程的目标是通过生成的图像 I ′ I' I′ 和输入文本描述的语义嵌入 z T z_T zT 来最小化对比损失。负向条件 (Negative Condition)
在图像生成过程中,CLIP 模型通过对比学习最大化正向条件和负向条件之间的相似度差异。负向条件通过增加对比损失中的 “负样本” 来实现,这些负样本通常是与目标图像无关或对立的文本描述。 对比损失公式(包含负向条件)为:
L contrastive = − log exp ( z T T z I / τ ) ∑ i = 1 N exp ( z T T z i / τ ) − log exp ( z T T z I / τ ) ∑ j = 1 M exp ( z T T z j neg / τ ) L_{\text{contrastive}} = -\log \frac{\exp(z_T^T z_I / \tau)}{\sum_{i=1}^N \exp(z_T^T z_i / \tau)} - \log \frac{\exp(z_T^T z_I / \tau)}{\sum_{j=1}^M \exp(z_T^T z_j^{\text{neg}} / \tau)} Lcontrastive=−log∑i=1Nexp(zTTzi/τ)exp(zTTzI/τ)−log∑j=1Mexp(zTTzjneg/τ)exp(zTTzI/τ)
其中:- z T z_T zT 是文本的嵌入向量, z I z_I zI 是图像的嵌入向量。
- z j neg z_j^{\text{neg}} zjneg 是与文本 T T T 语义不相关的负样本图像的嵌入。
- τ \tau τ 是温度参数,用于调整正负样本之间的相似度,控制对比学习的难度。
- M M M是负样本的数量。
负向条件的作用在于,通过 ∑ j = 1 M exp ( z T T z j neg / τ ) \sum_{j=1}^M \exp(z_T^T z_j^{\text{neg}} / \tau) ∑j=1Mexp(zTTzjneg/τ) 这部分,增加与目标图像不相关的文本条件,以对比正样本和负样本的相似度。从而使模型在生成图像时,避免生成与负向条件相关的图像表示,确保生成图像与负向文本描述的图像不同。
例如,若输入文本是 “a dog with a hat”(一只戴着帽子的狗),而负向文本是 “a dog without a hat”(一只没有帽子的狗),模型会倾向于生成戴帽子的狗,避免生成没戴帽子的狗,负向条件在此过程中对生成无帽子的狗进行惩罚。
2. K - 采样器与潜在空间的生成
-
K - 采样的过程
K - 采样器是生成过程的关键部分,负责在潜在空间中从随机噪声开始,逐步调整生成的潜在表示,引导其趋近于目标图像。
在扩散模型中,K - 采样器控制从潜在空间随机噪声逐步过渡到目标图像的过程,具体包括:- 从随机噪声开始:初始时,潜在空间的表示 z z z 接近随机噪声。
- 逐步去噪:K - 采样器通过控制采样过程中的步数和噪声水平,逐步去除噪声,生成图像。
-
参数解释
在 K - 采样器的过程中,以下几个关键参数需要关注:- 步数(Steps):步数决定了从噪声到最终图像过渡过程的迭代次数。步数越多,去噪过程越精细,生成图像的细节越丰富。但增加步数也会增加计算开销。
- 采样器(Sampler):采样器是负责实际去噪过程的算法,常见的有 Euler、Laplacian 等。不同的采样器采用不同的数学策略从噪声中提取图像信息,选择不同的采样器会影响图像生成的速度和质量。
- 温度参数(Temperature, τ \tau τ):温度参数通常用于控制正向条件与负向条件之间的平衡。增大温度会使模型输出更随机、多样化;减小温度则使输出更稳定,偏向高置信度的内容。
- 随机种子(Random Seed):随机种子控制生成过程的随机性,确保在相同输入下能够复现生成结果。改变随机种子会导致在相同文本条件下生成不同的图像。
-
K - 采样器公式
K - 采样器的公式通常涉及生成模型的去噪过程。假设从噪声表示 x T x_T xT 开始,经过 t t t 步去噪生成 x 0 x_0 x0:
p ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , σ t 2 ) p(x_{t - 1} | x_t) = N(x_{t - 1}; \mu_{\theta}(x_t, t), \sigma_t^2) p(xt−1∣xt)=N(xt−1;μθ(xt,t),σt2) 其中:- μ θ \mu_{\theta} μθ 是神经网络模型,用于预测去噪过程的均值。
- σ t \sigma_t σt 是时间步长 t t t 对应的标准差,表示噪声的强度。
3. VAE 解码器:从潜在空间生成图像
VAE 解码器公式
VAE 解码器负责将潜在空间中的表示 z z z 映射回图像空间,将潜在空间中的抽象向量转化为可视化图像。
假设潜在空间中的向量为 z z z,VAE 解码器的目标是将 z z z 转换为最终的图像 x x x,公式为:
x = g θ ( z ) x = g_{\theta}(z) x=gθ(z)
其中, g θ g_{\theta} gθ 是解码器网络,将潜在向量 z z z 映射回图像空间。
VAE 损失函数
VAE 的损失函数由两部分组成:
- 重构误差:用于衡量生成的图像与真实图像之间的差异。
- KL 散度:用于衡量潜在变量的分布与标准正态分布之间的差异。
VAE 损失函数如下:
L VAE = E q [ log p θ ( x ∣ z ) ] − D KL ( q ϕ ( z ∣ x ) ∥ p ( z ) ) L_{\text{VAE}} = \mathbb{E}_q[\log p_{\theta}(x|z)] - D_{\text{KL}}(q_{\phi}(z|x) \| p(z)) LVAE=Eq[logpθ(x∣z)]−DKL(qϕ(z∣x)∥p(z))
其中:
- 第一项是重构误差,反映生成图像与真实图像的相似度。
- 第二项是 KL 散度,衡量编码器输出的潜在分布与标准正态分布之间的差异。
(三)变分自编码器(VAE)模型的编码与解码过程
-
编码过程
- 神经网络处理:将输入图像 x ( i ) x^{(i)} x(i) 送入作为概率编码器的神经网络(多层感知器 MLP),该网络学习将高维图像数据映射到低维空间,以提取图像的关键特征。
- 计算分布参数:该神经网络输出近似后验 q ϕ ( z ∣ x ( i ) ) q_{\phi}(z | x^{(i)}) qϕ(z∣x(i)) 服从的多元高斯分布的均值 μ ( i ) \mu^{(i)} μ(i) 和标准差 σ ( i ) \sigma^{(i)} σ(i),它们是关于数据点 x ( i ) x^{(i)} x(i) 和变分参数 ϕ \phi ϕ 的非线性函数,即: log q ϕ ( z ∣ x ( i ) ) = log N ( z ; μ ( i ) , σ 2 ( i ) I ) \log q_{\phi}(z | x^{(i)}) = \log \mathcal{N}(z ; \mu^{(i)}, \sigma^{2(i)} I) logqϕ(z∣x(i))=logN(z;μ(i),σ2(i)I)
- 重参数化采样:为对采样过程进行梯度计算,采用重参数化技巧。从后验分布中采样 z ( i , l ) z^{(i, l)} z(i,l),公式为: z ( i , l ) = μ ( i ) + σ ( i ) ⊙ ϵ ( l ) z^{(i, l)} = \mu^{(i)} + \sigma^{(i)} \odot \epsilon^{(l)} z(i,l)=μ(i)+σ(i)⊙ϵ(l)
其中 ϵ ( l ) ∼ N ( 0 , I ) \epsilon^{(l)} \sim \mathcal{N}(0, I) ϵ(l)∼N(0,I), ⊙ \odot ⊙ 表示元素 - wise 乘积。通过均值、标准差与随机噪声的运算,将图像 x ( i ) x^{(i)} x(i) 编码为低维的隐变量 z ( i , l ) z^{(i, l)} z(i,l)。
-
解码过程
- 确定解码器输出类型:根据数据类型,若为实值数据, p θ ( x ∣ z ) p_{\theta}(x | z) pθ(x∣z) 假设为多元高斯分布。
- 解码神经网络运算:解码器同样使用 MLP。其均值 μ \mu μ 和标准差 σ \sigma σ 由 MLP 计算得出,相关公式为:
log p ( x ∣ z ) = log N ( x ; μ , σ 2 I ) \log p(x | z)=\log \mathcal{N}(x ; \mu, \sigma^{2} I) logp(x∣z)=logN(x;μ,σ2I)
其中:
μ = W 4 h + b 4 \mu = W_{4} h + b_{4} μ=W4h+b4,
log σ 2 = W 5 h + b 5 \log \sigma^{2} = W_{5} h + b_{5} logσ2=W5h+b5,
h = tanh ( W 3 z + b 3 ) h = \tanh(W_{3} z + b_{3}) h=tanh(W3z+b3),
θ = { W 3 , W 4 , W 5 , b 3 , b 4 , b 5 } \theta = \{W_{3}, W_{4}, W_{5}, b_{3}, b_{4}, b_{5}\} θ={W3,W4,W5,b3,b4,b5} 是 MLP 的权重和偏置。将编码得到的隐变量 z ( i , l ) z^{(i, l)} z(i,l) 输入到解码器中,经过一系列运算,最终输出重构图像 x ^ ( i ) \hat{x}^{(i)} x^(i)。
- 图像展示
通过以下流程图直观展示 VAE 模型的编码和解码过程:
在该流程图中:
- 编码过程:输入图像 x x x 进入编码神经网络(MLP),该网络输出均值 μ \mu μ 和标准差 σ \sigma σ。借助从标准正态分布采样得到的噪声 ε \varepsilon ε( ε ∼ N ( 0 , I ) \varepsilon \sim \mathcal{N}(0, I) ε∼N(0,I)),通过重参数化技巧计算得到隐变量 z z z,实现将高维图像数据压缩为低维隐变量表示,完成特征提取。
- 解码过程:得到的隐变量 z z z 被输入到解码神经网络(MLP)。解码过程是编码的逆过程,尝试从低维隐变量中恢复出原始图像的特征,输出尽可能与输入图像相似的重构图像 x ′ x' x′。
相关文章:
ComfyUI流程图生图原理详解
一、引言 ComfyUI 是一款功能强大的工具,在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题,并深入剖析图生图过程及相关参数,帮助读者快速入门并深入理解其原理。 二、ComfyUI 的安装与配置中遇到的问题 &a…...
洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
题意 有一个圆,圆周上按顺时针方向给出 2 n 2n 2n个点。第 i i i个点的颜色是 c o l o r i color_i colori,其中数据保证 1 ≤ c o l o r i ≤ n 1\le color_i\le n 1≤colori≤n,而且每种不同的颜色有且只有两个点。不存在位置重叠的点…...
kubekey一键部署k8s高可用与kubesphere
kubekey一键安装k8s与kubesphere还是蛮方便的,kubesphere官网上面也提到了高可用安装的一些事宜,但是没有涉及到kubesphere资深的redis的系统的部署问题,本文简单给出对应配置,其实这个配置在kubephere的cluster-configuration.ya…...
SwiftUI 5.0 中宝藏视图修改器 containerRelativeFrame 趣谈(下)
概览 小伙伴们都知道,为了将 SwiftUI 中多如牛毛的视图井然有序、有条不紊的组织起来,我们必须借助容器(Container)伏虎降龙般地威力。而如何最大限度的让容器中的子视图能根据容器尺寸安排自己的空间,则需要一些技术手段来洞幽察微。 在过去,我们往往使用 GeometryRead…...
ElasticSearch基础和使用
ElasticSearch基础 1 初识ES相关组件 (1)Elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。Elasticsearch结合kibana、Logstash、Beats组件 也就是elastic stack(ELK) 广泛应…...
我用 Cursor 开发了一款个人小记系统
https://note.iiter.cn 项目背景 在日常工作和学习中,我们经常需要快速记录一些想法、收藏一些有用的链接或者保存一些重要的文本、图片内容。虽然市面上已经有很多笔记软件,但我想要一个更轻量、更简单的工具,专注于快速记录和智能检索。于是我开发了这款个人小记系统。 系统…...
如何使用Three.js制作3D月球与星空效果
目录 1. 基本设置2. 创建星空效果3. 创建月球模型4. 添加中文3D文字5. 光照与相机配置6. 动画与控制7. 响应式布局8. 结语 在本文中,我们将一起学习如何利用Three.js实现一个3D月球与星空的效果,并添加一些有趣的元素,比如中文3D文字和互动功…...
DeepSeek接入网络安全领域,AI高效驱动,重新定义网络防御边界!
DeepSeek新一代模型的发布,标志着AI大模型的应用将逐步走向普及,并加速AI技术在各行业的赋能与全面落地。在科技日新月异的今天,AI技术凭借其强大的数据处理与分析能力,已成为推动社会进步的核心动力。 在网络安全领域࿰…...
【动态规划】斐波那契数列模型
目录 动态规划 动态规划的基本步骤 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 算法分析 算法代码 算法代码 面试题 08.01. 三步问题 - 力扣(LeetCode) 算法分析 算法代码 优化 746. 使用最小花费爬楼梯 - 力扣&#x…...
Spring中的IOC详解
文章目录 IOC IOC容器的工作原理Bean的生命周期Bean的自动装配 AutowiredResourceInject 使用Spring底层组件 IOC Spring的核心之一是IOC,IOC全称为Inversion of Control,中文译为控制反转,是面向对象编程中的一种设计原则,可…...
深挖vue3基本原理之七 —— 功能模块的深度技术解析
Vue 3 四个核心功能模块的深度技术解析 一、Effect 调度系统:同步/异步任务队列 实现原理 // runtime-core/src/scheduler.ts const queue: (EffectJob | null)[] [] let isFlushing false const resolvedPromise Promise.resolve()function queueJob(job: Ef…...
数据结构 day 07
数据结构 day07 7. 树7.3. 层次遍历代码实现 8. 查询算法8.1. 顺序查找 seqSearch代码实现 8.2. 二分法查找 binarySearch代码实现 8.2. 分块查找 blockSearch代码实现 8.3. 哈希表 hash 9. 排序算法9.1. 冒泡排序 bubSort代码实现 9.2. 选择排序 selSort代码实现 9.3. 插入排序…...
《代码随想录》刷题笔记——回溯篇【java实现】
文章目录 组合组合总和 III电话号码的字母组合组合总和组合总和II思路代码实现 分割回文串※思路字符串分割回文串判断效率优化※ 复原 IP 地址优化版本 子集子集 II使用usedArr辅助去重不使用usedArr辅助去重 递增子序列※全排列全排列 II重新安排行程题意代码 N 皇后解数独直…...
React:初识React
React是什么? React是由Meta公司研发,也就是Facebook的公司(马克扎克伯格这个见人)研发的构建Web和原生交互界面的库 不仅可以写网页,还可以写苹果和安卓上面的app React的优势: React也是前端里最流行的…...
全面理解-c++中的内存布局
在 C 中,程序的内存布局指的是程序运行时,代码和数据在内存中的组织和分布方式。一般来说,C 程序的内存可以划分为以下几个主要区域: 1. 代码段(Text Segment,也称为 .text 段) 存储内容&…...
百度沈抖:传统云计算不再是主角,智能计算呼唤新一代“操作系统”
Create 2024 百度AI开发者大会 4月16日,Create 2024 百度AI开发者大会在深圳召开。期间,百度集团执行副总裁、百度智能云事业群总裁沈抖正式发布新一代智能计算操作系统——万源,通过对AI原生时代的智能计算平台进行抽象与封装设计ÿ…...
【银河麒麟高级服务器操作系统】服务器卡死后恢复系统日志丢失-分析及处理全过程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 服务器环境以及配置 【机型】 处理器ÿ…...
VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)
文章目录 VSCode Error Lens 插件介绍**功能概述****开发背景****使用方法****适用场景** VSCode Error Lens 插件介绍 功能概述 Error Lens 是一款增强 VS Code 错误提示的扩展工具,通过 内联显示错误和警告信息,直接定位代码问题,提升开发…...
ffmpeg configure 研究1-命令行参数的分析
author: hjjdebug date: 2025年 02月 14日 星期五 17:16:12 CST description: ffmpeg configure 研究1 ./configure 命令行参数的分析 文章目录 1 configure 对命令行参数的分析,在4019行1.1 函数名称: is_in1.2. 函数名称: enable1.3. 函数名称: set_all 2 执行退出判断的关键…...
如何调整 Nginx工作进程数以提升性能
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点20分 Nginx 的工作进程数࿰…...
分布式 NewSQL 数据库(TiDB)
TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB是 PingCAP公司自主设计、研发的开源分布式关系型数据…...
try learning-git-branching
文章目录 mergerebase分离 HEAD相对引用利用父节点branch -f 撤销变更cherry-pick交互式 rebase只取一个提交记录提交的技巧rebase 在上一次提交上amendcherry-pick 在上一次提交上 amend tag多分支 rebase两个parent节点纠缠不清的分支偏离的提交历史锁定的Main推送主分支合并…...
【kafka系列】Kafka事务的实现原理
目录 1. 事务核心组件 1.1 幂等性生产者(Idempotent Producer) 1.2 事务协调器(TransactionCoordinator) 1.3 事务日志(Transaction Log) 2. 事务执行流程 2.1 事务初始化 2.2 发送消息 2.3 事务提…...
数据结构6
一、哈希散列--通讯录查找 #include "hash.h" #include <stdio.h> #include <stdlib.h> #include <string.h>//int *a[10];int hash_function(char key) {if (key > a && key < z){return key - a;}else if (key > A && …...
Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用
Flutter 的 Widget Key 提议大调整?深入聊一聊 Key 的作用 在 Flutter 里,Key 对象存在的目的主要是区分和维持 Widget 的状态,它是控件在渲染树里的「复用」标识之一,这一点在之前的《深入 Flutter 和 Compose 在 UI 渲染刷新时…...
src和href区别
src和href区别 (1)请求资源类型不同(2)作用结果不同(3)解析方式不同 (1)请求资源类型不同 href 用来建立文档和元素之间的链接(是引用),常用的有a、linksrc 在请求src资源时候会将指向的资源下载并且应用到文档中(引入),常用的有script、iframe、image。 (2)作用结果不同 hr…...
STM32之SG90舵机控制
目录 前言: 一、硬件准备与接线 1.1 硬件清单 1.2 接线 二、 SG90舵机简介 1.1 外观 1.2 基本参数 1.3 引脚说明 1.4 控制原理 1.5 特点 1.6 常见问题 三、 单片机简介 四、 程序设计 4.1 定时器配置 4.2 角度控制函数 4.3 主函数调用 五、 总结 …...
尚硅谷课程【笔记】——大数据之Hadoop【一】
课程视频链接:尚硅谷Hadoop3.x教程 一、大数据概论 1)大数据概念 大数据(Big Data):指无法再一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发…...
QEMU 搭建 Ubuntu x86 虚拟机
1. 安装 QEMU 在 Ubuntu 系统中,可以通过以下命令安装 QEMU: sudo apt-get update sudo apt-get install qemu-system-x86_64 qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager2. 创建虚拟硬盘镜像 qemu-img create -f raw ubuntu…...
mac 意外退出移动硬盘后再次插入移动硬盘不显示怎么办
第一步:sudo ps aux | grep fsck 打开mac控制台输入如下指令,我们看到会出现两个进程,看进程是root的这个 sudo ps aux|grep fsck 第二步:杀死进程 在第一步基础上我们知道不显示u盘的进程是:62319,我们…...
Acwing-基础算法课笔记之基础算法(双指针)
Acwing-基础算法课笔记之基础算法(双指针) 一、双指针算法概念二、关于双指针的一个问题三、模板 一、双指针算法概念 双指针(又称尺取法)是一个常用的优化技巧,用来解决序列的区间问题。 两个指针i,j&am…...
PCIE基础学习
PCIE PIO模式: 一个CPU传输一个32bit给PCIE(IP)。CPU直接与PCIE做数据传输。 DMA模式: CPU通过PCIE bridge 与多个PCIE设备连接,CPU发送命令给桥,桥控制PCIE与memory直接数据连接。 tlp报文 读报文 …...
架构——Nginx功能、职责、原理、配置示例、应用场景
以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…...
【教程】比亚迪车机接入AI大模型语音助手
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 更新说明: v1.1.0.2 1、新增长按音量键触发,不再需要迪加 (需设置modelisten)。 2、新增kimi、豆包、ChatGPT等多个GPT接口。 3…...
ios中常见的设计原则和设计模式
七大设计原则 1:开闭原则 对扩展开放,对修改关闭,在设计模块的时候,使模块在不被修改的前提下可以扩展功能 2:依赖倒置原则 实现尽量依赖抽象,不依赖具体实现 (1)高层模块不应该依赖底层模…...
WSL Ubuntu 安装 CUDA 教程
WSL Ubuntu 安装 CUDA 教程 1. 概述2. 准备工作3. 删除旧的 GPG 密钥4. 安装 CUDA Toolkit4.1 使用 WSL-Ubuntu 包安装(推荐) 5. 设置环境变量6. 注意事项7. 参考链接8. 总结 1. 概述 随着 WSL 2 的推出,Windows 用户现在可以在 Windows 子系…...
案例-02.部门管理-查询
一.查询部门-需求 二.查询部门-思路 API接口文档 三.代码实现 1.controller层:负责与前端进行交互,接收前端所发来的请求 注:Slf4j用于记录日志使用,可以省略private static Logger log LoggerFactory.getLogger(DeptControlle…...
【ARM】解决ArmDS Fast Models 中部分内核无法上电的问题
1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示: 图2-1 3、软硬件环境 1)…...
docker 基础命令使用(ubuntu)
docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...
WEB安全--SQL注入--二次注入
一、原理: 二次注入的关键在于攻击者的输入并不立即执行,而是经过某些存储或处理后,在后续某个步骤中再触发注入攻击 二、示例: 2.1、sqli-labs-master/less-24: admin# 第一次在网页注册账号和密码时没有漏洞&#x…...
c++中什么时候应该使用final关键字?
在C中,final关键字是自C11标准引入的重要特性,主要用于类继承和虚函数重写机制的约束。下面从技术原理、使用场景和最佳实践三个维度进行系统分析,并给出工业级代码示例。 目录 一、技术原理深度解析 二、关键使用场景分析 1. 类级别的fi…...
DeepSeek学术秘籍:如何让DeepSeek辅助论证?
随着人工智能技术的飞速发展,AIGC技术在学术领域的应用逐渐引起了广泛关注。其中最近大火的DeepSeek作为一款基于大语言模型的应用,其出现标志着学术论文写作中研究方法的一次重大变革。 辅助论证 在学术论文写作中,借助DeepSeek优化辅助论证…...
Atlassian工具集:Jira与Confluence集成优势、使用技巧、更新功能等
本文由Atlassian全球白金合作伙伴-龙智翻译整理,深入探讨了Jira和Confluence最受欢迎的集成功能与技巧,期待为您新一年的团队协作开个好头。 此前,来自K15t 的Customer Advocate Matt Reiner 和Atlassian副产品经理David Olive在一场学习会议…...
传输层协议TCP ( 下 )
文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…...
【Deepseek 零门槛指南】DeepSeek 教程和常见问题解答 | 大白技术控
粉丝朋友们大家好,我是极客学长。最近一直在玩 DeepSeek,积累了一点经验,用它提高写作的效率挺好用的。 在使用DeepSeek的过程中,也遇到了如下几个问题(相信很多小伙伴也遇到了): DeepSeek 官网卡顿,突然出…...
ELK组成及实现原理
ELK是由三个主要组件组成的日志处理和搜索平台,分别是: Elasticsearch:Elasticsearch 是一个基于Lucene构建的开源搜索引擎,提供强大的搜索、分析功能。它负责存储和索引所有数据,并提供实时搜索能力。数据可以通过HTT…...
迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试
将编译好的镜像全部进行烧写,镜像在源码根目录 out/rk3568/packages/phone/images/目录下。 烧写完成之后,在调试串口查看打印日志,如下图所示: 然后打开 hdc 工具,运行测试程序,输入“led_test 1”&…...
【C++】IO流
目录 一、C语言的输入与输出二、流是什么三、CIO流3.1 C标准IO流3.2 C文件IO流3.2.1 二进制读写3.2.2 文本读写 四、stringstream的简单介绍结尾 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据…...
前端知识速记--css篇:CSS3中的常见动画及实现方式
前端知识速记–css篇:CSS3中的常见动画及实现方式 常见的CSS3动画 1. 过渡 (Transitions) 过渡是一种非常简单的动画效果,允许你在元素的状态变更时平滑过渡到新状态。 语法格式: transition: property duration timing-function delay;…...
一个根据输入内容过滤下拉选的组件
1.element的select自定义过滤不是很灵,使用了input和dropdown 组件 <template><div class"autocomplete-wrapper"><!-- 使用 el-input 组件 --><el-inputv-model"inputValue"input"handleInput"placeholder&q…...