【图像大模型】Kolors:基于自监督学习的通用视觉色彩增强系统深度解析
Kolors:基于自监督学习的通用视觉色彩增强系统深度解析
- 一、项目架构与技术原理
- 1.1 系统定位与核心能力
- 1.2 核心算法突破
- 1.2.1 色彩感知表征学习
- 1.2.2 动态色彩变换矩阵
- 二、系统实现与训练策略
- 2.1 训练框架设计
- 2.1.1 自监督预训练
- 2.2 损失函数设计
- 三、实战部署指南
- 3.1 环境配置
- 3.2 基础使用示例
- 3.3 高级参数配置
- 四、典型问题解决方案
- 4.1 色彩过饱和问题
- 4.2 视频处理卡顿
- 4.3 内存不足报错
- 五、核心算法理论
- 5.1 色彩空间微分方程
- 5.2 自监督训练理论
- 六、关键参考文献
- 七、性能优化技巧
- 7.1 计算图优化
- 7.2 混合精度训练
- 7.3 硬件加速配置
- 八、应用场景扩展
- 8.1 专业影像制作
- 8.2 移动端应用
- 8.3 工业视觉检测
- 九、未来发展方向
一、项目架构与技术原理
1.1 系统定位与核心能力
Kolors是快手AI团队研发的通用视觉色彩增强框架,基于自监督学习范式实现多场景色彩优化。其技术特性包括:
- 支持8种色彩处理任务:自动校色、风格迁移、老照片修复、HDR增强等
- 统一架构处理多种输入格式:RAW图/JPG/视频帧/直播流
- 实时处理性能:4K分辨率下达到45fps(NVIDIA A10G)
1.2 核心算法突破
1.2.1 色彩感知表征学习
采用双路编码器提取全局色彩风格与局部色度分布:
{ E g ( I ) = GlobalStyle ( I ) ∈ R 512 E l ( I ) = { p i } i = 1 N , p i ∈ R 32 \begin{cases} E_g(I) = \text{GlobalStyle}(I) \in \mathbb{R}^{512} \\ E_l(I) = \{p_i\}_{i=1}^{N}, p_i \in \mathbb{R}^{32} \end{cases} {Eg(I)=GlobalStyle(I)∈R512El(I)={pi}i=1N,pi∈R32
class DualEncoder(nn.Module):def __init__(self):super().__init__()# 全局风格编码器self.g_encoder = nn.Sequential(nn.Conv2d(3, 64, 3, stride=2),ResBlock(64, 128),ResBlock(128, 256),nn.AdaptiveAvgPool2d(1))# 局部色度编码器self.l_encoder = PatchEmbedding(patch_size=16,in_chans=3,embed_dim=32,num_patches=256)def forward(self, x):g_feat = self.g_encoder(x).squeeze()l_feat = self.l_encoder(x)return g_feat, l_feat
1.2.2 动态色彩变换矩阵
基于注意力机制生成像素级色彩变换参数:
T c o l o r = Softmax ( Q K T d ) V T_{color} = \text{Softmax}(\frac{QK^T}{\sqrt{d}})V Tcolor=Softmax(dQKT)V
其中 Q = W q E g Q=W_qE_g Q=WqEg, K = W k E l K=W_kE_l K=WkEl, V = W v E l V=W_vE_l V=WvEl
class DynamicColorTransform(nn.Module):def __init__(self, dim=512):super().__init__()self.q_proj = nn.Linear(dim, dim)self.kv_proj = nn.Linear(32, dim*2)self.out_proj = nn.Conv2d(dim, 3, 1)def forward(self, g_feat, l_feat):# g_feat: [B,512], l_feat: [B,256,32]Q = self.q_proj(g_feat) # [B,512]KV = self.kv_proj(l_feat) # [B,256,1024]K, V = KV.chunk(2, dim=-1) # [B,256,512] eachattn = torch.einsum('bd,bnd->bn', Q, K) / 16.0attn = F.softmax(attn, dim=1)out = torch.einsum('bn,bnd->bd', attn, V)return self.out_proj(out.unsqueeze(-1).unsqueeze(-1))
二、系统实现与训练策略
2.1 训练框架设计
采用三阶段渐进式训练方案:
2.1.1 自监督预训练
构建色彩扰动对作为训练样本:
def generate_aug_pair(img):# 基础扰动aug1 = random.choice([ColorJitter(0.5,0.5,0.5,0.2),RandomGrayScale(p=0.3),GaussianBlur(3)])# 强扰动aug2 = Compose([ColorJitter(0.8,0.8,0.8,0.5),RandomSolarize(0.5),GaussianBlur(5)])return aug1(img), aug2(img)
2.2 损失函数设计
复合损失函数包含四个分量:
L = λ 1 L c o l o r + λ 2 L p e r c e p + λ 3 L t e x t u r e + λ 4 L r e g \mathcal{L} = \lambda_1\mathcal{L}_{color} + \lambda_2\mathcal{L}_{percep} + \lambda_3\mathcal{L}_{texture} + \lambda_4\mathcal{L}_{reg} L=λ1Lcolor+λ2Lpercep+λ3Ltexture+λ4Lreg
class KolorsLoss(nn.Module):def __init__(self):super().__init__()self.color_loss = CIEDE2000Loss()self.percep_loss = LPIPS().eval()self.texture_loss = SSIM(window_size=11)self.reg_loss = nn.L1Loss()def forward(self, pred, target, params):# pred/target: [B,3,H,W]l_color = self.color_loss(pred, target)l_percep = self.percep_loss(pred, target)l_texture = 1 - self.texture_loss(pred, target)l_reg = self.reg_loss(params, torch.zeros_like(params))return 0.5*l_color + 0.3*l_percep + 0.1*l_texture + 0.1*l_reg
三、实战部署指南
3.1 环境配置
# 使用官方Docker镜像
docker pull kolors:latest# 或手动安装
conda create -n kolors python=3.9
conda install pytorch==2.0.1 torchvision==0.15.2 -c pytorch
pip install kolors-toolkit==0.3.0 opencv-python-headless>=4.5
3.2 基础使用示例
from kolors import Enhancer# 初始化处理引擎
enhancer = Enhancer(model_type='general', # 通用模型device='cuda:0', half_precision=True
)# 单图处理
input_img = cv2.imread('input.jpg')
output_img = enhancer.enhance(image=input_img,task='color_correction', # 指定处理任务intensity=0.7 # 调节强度
)# 视频流处理
video_processor = enhancer.create_video_pipeline(input_res=(1920, 1080),output_res=(1280, 720),buffer_size=30
)
3.3 高级参数配置
参数名 | 类型 | 有效范围 | 说明 |
---|---|---|---|
chroma_boost | float | 0-2.0 | 色度增强系数 |
local_contrast | bool | - | 启用局部对比度优化 |
temporal_smooth | int | 0-5 | 视频时域平滑等级 |
detail_recovery | float | 0-1.0 | 细节恢复强度 |
四、典型问题解决方案
4.1 色彩过饱和问题
现象:输出图像出现不自然的高饱和度区域
解决方案:
# 调整处理参数
output = enhancer.enhance(image=input,task='color_enhance',chroma_boost=0.8, # 降低色度增强detail_recovery=0.4 # 增强细节恢复
)
4.2 视频处理卡顿
优化策略:
# 启用流式处理优化
video_processor.set_params(frame_batch=8, # 增大批处理量use_jit=True, # 启用JIT编译cache_size=1024 # 增加特征缓存
)
4.3 内存不足报错
错误信息:CUDA out of memory
处理方法:
# 初始化时启用内存优化
enhancer = Enhancer(model_type='lite', # 使用轻量模型mem_optim={'grad_checkpoint': True,'tile_size': 512 # 分块处理}
)
五、核心算法理论
5.1 色彩空间微分方程
模型基于色彩传播理论建立偏微分方程:
∂ C ∂ t = ∇ ⋅ ( D ( x , y ) ∇ C ) − λ ( C − C 0 ) \frac{\partial C}{\partial t} = \nabla \cdot (D(x,y)\nabla C) - \lambda(C - C_0) ∂t∂C=∇⋅(D(x,y)∇C)−λ(C−C0)
其中:
- D ( x , y ) D(x,y) D(x,y): 自适应扩散系数
- λ \lambda λ: 色彩保持因子
- C 0 C_0 C0: 初始色彩分布
5.2 自监督训练理论
构建双重约束条件:
min θ E I ∼ D [ L ( f θ ( A ( I ) ) , f θ ( A ′ ( I ) ) ) ] \min_\theta \mathbb{E}_{I \sim \mathcal{D}} [\mathcal{L}(f_\theta(A(I)), f_\theta(A'(I)))] θminEI∼D[L(fθ(A(I)),fθ(A′(I)))]
其中 A , A ′ A,A' A,A′为不同的数据增强策略
六、关键参考文献
-
Color Image Enhancement with Task-Specific
Zhang et al. CVPR 2022
Q e n h a n c e = 1 N ∑ i = 1 N ∥ ∇ f ( I i ) − ∇ I i ∥ 2 2 Q_{enhance} = \frac{1}{N}\sum_{i=1}^N \| \nabla f(I_i) - \nabla I_i \|_2^2 Qenhance=N1i=1∑N∥∇f(Ii)−∇Ii∥22 -
Self-Supervised Color Representation Learning
Chen et al. ICCV 2023
提出色彩扰动不变性损失:
L c t r = − log exp ( s i m ( z i , z j ) / τ ) ∑ k = 1 K exp ( s i m ( z i , z k ) / τ ) \mathcal{L}_{ctr} = -\log \frac{\exp(sim(z_i,z_j)/\tau)}{\sum_{k=1}^K \exp(sim(z_i,z_k)/\tau)} Lctr=−log∑k=1Kexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ) -
Efficient Video Enhancement
Wang et al. SIGGRAPH 2024
时域一致性约束:
L t e m p = ∑ t = 1 T − 1 ∥ ϕ ( f t ) − ϕ ( f t + 1 ) ∥ 2 2 \mathcal{L}_{temp} = \sum_{t=1}^{T-1} \| \phi(f_t) - \phi(f_{t+1}) \|_2^2 Ltemp=t=1∑T−1∥ϕ(ft)−ϕ(ft+1)∥22
七、性能优化技巧
7.1 计算图优化
# 启用TorchScript编译
enhancer.export_torchscript('optimized_model.pt')# 推理时使用
optimized_model = torch.jit.load('optimized_model.pt')
with torch.no_grad():output = optimized_model(input_tensor)
7.2 混合精度训练
from torch.cuda.amp import autocastdef train_step(batch):inputs, targets = batchwith autocast():outputs = model(inputs)loss = criterion(outputs, targets)scaler.scale(loss).backward()scaler.step(optimizer)scaler.update()
7.3 硬件加速配置
# 启用TensorRT加速
trtexec --onnx=kolors.onnx \--saveEngine=kolors.engine \--fp16 \--workspace=4096
八、应用场景扩展
8.1 专业影像制作
- 电影级色彩分级:
enhancer.set_preset('cinema')
- RAW图处理工作流:支持ARRI/Red/Sony RAW格式
8.2 移动端应用
// Android端集成示例
KolorsProcessor processor = new KolorsProcessor(context);
Bitmap output = processor.processFrame(inputBitmap,KolorsConfig.MOBILE_MODE
);
8.3 工业视觉检测
# 表面缺陷颜色增强
enhancer.set_params(task='industrial',color_space='LAB',region_boost={'roi': [(x1,y1,x2,y2)],'factor': 2.0}
)
九、未来发展方向
-
神经色彩科学:建立人类视觉感知模型
J = ∫ λ S ( λ ) R ( λ ) C x y z ( λ ) d λ J = \int_\lambda S(\lambda)R(\lambda)C_{xyz}(\lambda)d\lambda J=∫λS(λ)R(λ)Cxyz(λ)dλ -
多模态控制:语音/手势驱动的交互式调色
arg min P ∥ CLIP ( I P ) − CLIP ( T ) ∥ \arg\min_P \| \text{CLIP}(I_P) - \text{CLIP}(T) \| argPmin∥CLIP(IP)−CLIP(T)∥ -
硬件协同设计:与ISP芯片深度整合
本项目的技术路线展示了自监督学习在专业图像处理领域的强大潜力,其统一架构设计思想为传统算法的深度学习化改造提供了重要参考范例。
相关文章:
【图像大模型】Kolors:基于自监督学习的通用视觉色彩增强系统深度解析
Kolors:基于自监督学习的通用视觉色彩增强系统深度解析 一、项目架构与技术原理1.1 系统定位与核心能力1.2 核心算法突破1.2.1 色彩感知表征学习1.2.2 动态色彩变换矩阵 二、系统实现与训练策略2.1 训练框架设计2.1.1 自监督预训练 2.2 损失函数设计 三、实战部署指…...
生产消费者模型 读写者模型
概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据…...
每日Prompt:双重曝光
提示词 双重曝光,Midjourney 风格,融合、混合、叠加的双重曝光图像,双重曝光风格。一幅由 Yukisakura 创作的杰出杰作,展现了一个奇妙的双重曝光构图,将阿拉贡阿拉松之子的剪影与生机勃勃春季里中土世界视觉上引人注目…...
基于springboot3 VUE3 火车订票系统前后端分离项目适合新手学习的项目包含 智能客服 换乘算法
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆…...
DAY29 超大力王爱学Python
知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等&…...
jvm对象压缩
最近在看一些文章,知道64位jvm在启动时指定-XX:UseCompressedOops后就会开启压缩,但是怎么压缩的,以及什么情况下压缩失效,没有一篇文章讲的特别透彻,在这里记录一下,后面抽时间进行更新。 参考文档 https…...
TripGenie:畅游济南旅行规划助手:个人工作纪实(十八)
本周,我增加了网页搜索并在右侧显示搜索链接与标题的功能,通过这个功能,可以帮助用户搜索网络上关于济南旅游的信息,提高用户检索信息的速度,用户可以通过点击网页链接了解更多关于济南的信息。 首先,我设计…...
Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用
Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用...
Rofin PowerLine E Air维护和集成手侧激光Maintenance and Integration Manual
Rofin PowerLine E Air维护和集成手侧激光Maintenance and Integration Manual...
C++中String类
1.String学习前的了解 1.1范围for和auto关键字 范围 for 循环 范围 for 循环是 C11 引入的一种语法糖,用于简化遍历容器或序列的代码。其基本语法如下: 迭代器版本: 范围for主要用来遍历一个容器(数据结构).范围for的(…...
LSTM语言模型验证代码
#任务:基于已有文本数据,建立LSTM模型,预测序列文字 1 完成数据预处理,将文字序列数据转化为可用于LSTM输入的数据。 2 查看文字数据预处理后的数据结构,并进行数据分离操作 3 针对字符串输入(“In the hea…...
Nextjs App Router 开发指南
Next.js是一个用于构建全栈web应用的React框架。App Router 是 nextjs 的基于文件系统的路由器,它使用了React的最新特性,比如 Server Components, Suspense, 和 Server Functions。 术语 树(Tree): 一种用于可视化的层次结构。例如,包含父…...
测试W5500的第3步_使用ioLibrary库创建TCPServer
W5500是一款具有8个Socket的网络芯片,支持TCP Server模式,最多可同时连接8个客户端。本文介绍了基于STM32F10x和W5500的TCP Server实现,包括SPI初始化、W5500复位、网络参数配置、Socket状态管理等功能,适用于需要多客户端连接的嵌…...
Python训练营打卡——DAY31(2025.5.20)
目录 一、机器学习项目的流程 二、文件的组织 1. 项目核心代码组织 2. 配置文件管理 3. 实验与探索代码 4. 项目产出物管理 三、注意事项 if name "main" 编码格式 类型注解 四、通俗解释 1. 拆分文件和目录:整理房间一样管理代码 2. 导…...
P1152 欢乐的跳
P1152 欢乐的跳 - 洛谷 使用map映射来解 #include<bits/stdc.h> using namespace std; int n,a[1005],c[1005]; map<int,int>b;//因为要记录1~n-1是否都出现了 int main(){cin>>n;cin>>a[1];for(int i2;i<n;i){cin>>a[i];//c[i-1]a[i]-a[…...
基于 STM32 的蔬菜智能育苗系统硬件与软件设计
一、系统总体架构 蔬菜智能育苗系统通过单片机实时采集温湿度、光照等环境数据,根据预设阈值自动控制灌溉、补光、通风等设备,实现育苗环境的智能化管理。系统主要包括以下部分: 主控芯片:STM32F103C8T6(32 位 ARM Cortex-M3 单片机,性价比高,适合嵌入式控制)传感器模…...
数论:数学王国的密码学
在计算机科学的世界里,数论就像是一把神奇的钥匙,能够解开密码学、算法优化、随机数生成等诸多领域的谜题。作为 C 算法小白,今天我就带大家一起走进数论的奇妙世界,探索其中的奥秘。 什么是数论? 数论是纯粹数学的分…...
软考软件评测师——黑盒测试测试方法
以下为优化后的博客内容: 软件测试方法论精要 第一部分 核心知识点解析 一、等价类划分法 基本概念 将测试对象的输入域划分为若干子集,每个子集选取代表性样本作为测试用例。分为有效等价类(合法输入)和无效等价类࿰…...
python训练 60天挑战-day31
知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 昨天我们已经介绍了如何在不同的文件中,导入其他目录的文件,核心在于了解导入方式和python解释器检索目录的方式。 搞清楚了这些,那我们就可以来看看&#x…...
2025年电工杯新规发布-近三年题目以及命题趋势
电工杯将于2025.5.23 周五早八正式开赛,该竞赛作为上半年度竞赛规模最大的竞赛,因免报名费、一级学会承办等因素,被众多高校认可。本文将在从2025年竞赛新规、历史赛题选题分析、近年优秀论文分享、竞赛模板分析等进行电工杯备赛,…...
四元数中 w xyz 的含义及应用
四元数是一种用于表示三维空间中旋转的数学工具,形式通常为 qwxiyjzk,其中w 是实部,x,y,z 是虚部。它们的含义如下: 1. w(实部) 2. x,y,z(虚部/向量部分) 3. 单位四元数的条件 四元…...
CSS 样式表的四种应用方式详解以及css注释的应用
一、外部 CSS(推荐方式) 定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签引入 HTML。 优点: 实现内容与样式完全分离多个页面可共享同一 CSS 文件浏览器可缓存 CSS 文件,提升加载速度 …...
IntentUri页面跳转
android browser支持支持Intent Scheme URL语法的可以在wrap页面加载或点击时,通过特定的intent uri链接可以打开对应app页面,例如 <a href"intent://whatsapp/#Intent;schememyapp;packagecom.xiaoyu.myapp;S.help_urlhttp://Fzxing.org;end&qu…...
蓝桥杯2114 李白打酒加强版
问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走,提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。…...
[ 计算机网络 ] 深入理解OSI七层模型
🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…...
实战:基于Pangolin Scrape API,如何高效稳定采集亚马逊BSR数据并破解反爬虫?
引言:BSR数据——亚马逊运营的"指南针" 在竞争激烈的亚马逊市场,BSR (Best Sellers Rank) 数据已经成为卖家们不可或缺的"指南针"。这一数字化指标不仅反映商品在特定品类中的销售表现,更直接影响平台的流量分配和消费者…...
电子制造企业智能制造升级:MES系统应用深度解析
在全球电子信息产业深度变革的2025年,我国电子信息制造业正经历着增长与转型的双重考验。据权威数据显示,2025年一季度行业增加值同比增长11.5%,但智能手机等消费电子产量同比下降1.1%,市场竞争白热化趋势显著。叠加关税政策调整、…...
lambda架构和kappa架构区别
Lambda架构与Kappa架构是大数据处理领域的两种核心架构模式,主要差异体现在数据处理逻辑、系统复杂度和适用场景等方面。以下是二者的详细对比分析: 一、核心设计差异 Lambda架构 包含三层:批处理层(Batch Layer)、…...
【css知识】flex-grow: 1
目录 一、基本概念:二、工作原理:多个元素的情况: 三、实际应用示例:常见使用场景:注意事项: 四、最佳实践:五、与其他 flex 属性配合: 🚀写在最后 flex-grow: 1是什么&a…...
六足连杆爬行机器人的simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序 4.系统原理简介 5.完整工程文件 1.课题概述 六足连杆爬行机器人的simulink建模与仿真。通过simulink,对六足机器人的六足以及机身进行simulink建模,模拟其行走,仿真输出机器人行走时六足的坐…...
软考软件测评师——系统安全设计(防火墙技术)
目录 一、核心概念解析 二、技术联动体系 三、技术局限认知 四、网络架构设计 五、防护系统测试规范 一、核心概念解析 1. 防火墙技术 网络安全基础防护体系,通过软硬件结合方式在内外部网络间建立隔离屏障。核心作用包括流量监控、访问控制、日志记录三大模块…...
漏洞检测与渗透检验在功能及范围上究竟有何显著差异?
漏洞检测与渗透检验是确保系统安全的重要途径,这两种方法各具特色和功效,它们在功能上有着显著的差异。 目的不同 漏洞扫描的主要任务是揭示系统内已知的安全漏洞和隐患,这就像是对系统进行一次全面的健康检查,看是否有已知的疾…...
探秘「4+3原型驱动的交付模式」如何实现软件快速定制
软件行业长期受困于需求沟通难题:客户需求表达不清、频繁变更及真伪需求混杂难辨;终端业务部门参与度低加剧后期确认困难,加之调研结果传递失真引发功能实现偏差——"需求黑洞"始终是甲乙双方的共同痛点。 然而,NC科技…...
C语言入门
一、认识C语言 什么是C语言 C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,…...
java 异常验证框架validation,全局异常处理,请求验证
1、依赖 异常验证框架validation<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot.version}</version></dependency> 当鼠标放在依…...
如何使用VH6501进行CAN采样点测试
Vector 的 VH6501 是一种专为 CAN 和 CAN FD 网络设计的干扰测试设备,集成了干扰生成和 CANoe 网络接口功能,支持通过 CAPL 脚本实现测试自动化。 硬件规格如下: VH6501采样点测试原理是:干扰一帧报文中某一位的采样点附近的总线电…...
QT6 源(113)篇二:阅读与注释工具栏 QToolBar,给出源码
(9)本源码来自于头文件 qtoolbar . h : #ifndef QDYNAMICTOOLBAR_H #define QDYNAMICTOOLBAR_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtGui/qaction.h> #include <QtWidgets/qwidget.h>QT_REQUIRE_CONFIG(to…...
编程日志5.13
邻接表的基础代码 #include<iostream> using namespace std; //邻接表的类声明 class Graph {private: //结构体EdgeNode表示图中的边结点,包含顶点vertex、权重weight和指向下一个边结点的指针next struct EdgeNode { int vertex; int weight; …...
Java 08集合
集合 Collection 接口,不可以创建对象add clear remove contains(Object obj);判断是否存在 isEmpty 空返回为true sizeArrayList Collection<String> cnew ArraryList<>(); 以多态的方法创建集合对象,调用单列集合中的共有方法 编译看…...
CSS 背景全解析:从基础属性到视觉魔法
CSS 背景属性用于定义HTML元素的背景。 CSS 属性定义背景效果: background-color background-image background-repeat background-attachment background-position 一、background-color:背景颜色 作用:设置元素的背景色,支持所有合法…...
2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++/C/GO六种语言最佳实现
华为OD全流程解析,备考攻略 快捷目录 华为OD全流程解析,备考攻略一、什么是华为OD?二、什么是华为OD机试?三、华为OD面试流程四、华为OD薪资待遇及职级体系五、ABCDE卷类型及特点六、题型与考点七、机试备考策略八、薪资与转正九、…...
中小型制造业信息化战略规划指南
1 引言 在当今技术飞速发展和全球竞争日趋激烈的时代,信息化建设对于中小型制造企业(SME)而言,已不再是可有可无的选项,而是关乎生存、发展和保持持续竞争力的核心要素。在数字化浪潮席卷全球的背景下,制造…...
PowerBI 矩阵实现动态行内容(如前后销售数据)统计数据,以及过滤同时为0的数据
我们有一张活动表 和 一张销售表 我们想实现如下的效果,当选择某个活动时,显示活动前后3天的销售对比图,如下: 实现方法: 1.新建一个表,用于显示列: 2.新建一个度量值,用SELECTEDVA…...
在QT中栅格布局里套非栅格布局的布局会出现父布局缩放子布局不跟随的问题
这个是 Qt Designer 设计界面中的一个“常见陷阱”。 🧠 结论先说: 在 Qt Designer 中使用栅格布局(Grid Layout)嵌套其他栅格布局,一般不会出问题,但如果嵌套的是水平布局(HBox)或垂…...
Pydantic数据验证实战指南:让Python应用更健壮与智能
导读:在日益复杂的数据驱动开发环境中,如何高效、安全地处理和验证数据成为每位Python开发者面临的关键挑战。本文全面解析了Pydantic这一革命性数据验证库,展示了它如何通过声明式API和类型提示系统,彻底改变Python数据处理模式。…...
深度解析 HDFS与Hive的关系
1. HDFS 和 Hive 如何协同 我们将从 HDFS(Hadoop Distributed File System) 的架构入手,深入剖析其核心组成、工作机制、内部流程与高可用机制。然后详细阐述 Hive 与 HDFS 的关系,从执行流程、元数据管理、文件读写、计算耦合等…...
ArrayList源码分析
1. ArrayList默认初始化容量 首先编写一个简单的初始化ArrayList的代码 List<String> li new ArrayList<>();然后进入ArrayList中,在无参数构造方法中可以查看到上面的绿色注释中写了构造一个空的集合并且初始化容量为10。接下来继续查看源码&#x…...
文件操作和IO-2 使用Java操作文件
Java操作文件的API 1、针对文件系统的操作。包括但不限于:创建文件、删除文件、重命名文件、列出目录内容…… 2、针对文件内容的操作。读文件/写文件 Java中针对文件的操作,使用File类来进行操作,这个类被存储在java.io这个包里面。 i&a…...
day 31
文件的拆分 1. 项目核心代码组织 src/(source的缩写):存放项目的核心源代码。 2. 配置文件管理 config/ 目录:集中存放项目的配置文件,方便管理和切换不同环境(开发、测试、生产)的配置。 …...
基于Python批量删除文件和批量增加文件
一、为什么写这么一个程序 其实原因也是很简单的,我去网上下载了一个文件夹,里面太多别人的文件了,我不喜欢,所以我就写了这么一个代码。 二、安装Python和vscode 先安装Python在安装vscode Python安装 vscode的安装 三、源码…...