编程 Helios深度解析:北大袁粒团队如何用14B参数重塑实时视频生成——从架构革命到工程落地的全解

2026-04-13 05:23:52 +0800 CST views 7

Helios深度解析:北大袁粒团队如何用14B参数重塑实时视频生成——从架构革命到工程落地的全解

前言

当视频生成模型还在"生成一段4秒视频需要等待30秒"的时代原地踏步时,北京大学袁粒课题组悄悄投下了一颗深水炸弹。

2026年4月,一个名为 Helios 的开源项目在 GitHub 上线。14B 参数,单卡 H100 GPU 上跑到 19.5 FPS,显存占用仅 ~6GB,能生成分钟级高质量视频。Apache 2.0 开源许可证——随便用,随便改,没有任何法律风险。

这个项目在发布后不到48小时内登顶 Hugging Face Daily Papers榜首,GitHub star 数突破1600,且没有任何正式PR推广。没有发布会的喧嚣,没有 CEO 站台讲 PPT,唯一的信息来源是项目主页和 GitHub 仓库里的 README。但它依然在开发者社区引发了地震级别的讨论。

原因很简单:它解决了一个行业痼疾

视频生成领域长期存在一个"不可能三角"——速度、质量、长度三者无法兼得。要长视频就要牺牲速度,要实时生成就要牺牲质量,要高质量就要用更大的模型从而牺牲长度。Helios 的出现,第一次在这个三角上撕开了一个口子:用14B的体量,同时做到了实时生成、分钟级长度和高质量输出

这背后到底用了什么魔法?本文将从问题本质出发,深入拆解 Helios 的架构设计、三阶段训练流程、核心技术创新,以及如何在实际工程中部署使用。


一、问题的本质:视频生成为什么这么慢?

在理解 Helios 的突破之前,我们先要搞清楚视频生成模型到底慢在哪里。

1.1 自回归模型的"累积延迟"困境

当前主流的视频生成模型(如 Sora、Veo、Stable Video Diffusion 等)大多采用 自回归(Autoregressive) 生成范式。简单来说,就是一帧一帧地生成——每一帧都依赖前面所有帧的信息。

这带来了一个根本性的问题:时间复杂度是 O(N²) 的

假设你要生成一个 5 秒、24 FPS 的视频,共 120 帧:

  • 第1帧:计算量 = C
  • 第2帧:计算量 = 2C(需要看第1帧)
  • 第3帧:计算量 = 3C(需要看第1、2帧)
  • ...
  • 第120帧:计算量 = 120C

总计算量 ≈ C × (1 + 2 + 3 + ... + 120) = C × 7260

这还只是推理的计算量。真正拖慢速度的是显存带宽——每生成新的一帧,模型都要从显存中读取所有历史帧的 KV Cache。当视频长度超过几十秒时,KV Cache 的体量会大到把显存塞满,这时候 GPU 就不得不在计算和内存搬运之间反复横跳。

1.2 传统加速方案的两难

业界为了解决这个问题,提出了两条路线:

路线A:防漂移策略(Anti-Drifting)

  • self-forcing:每个新帧都要参考前一帧的生成结果
  • error-banks:缓存历史帧的错误信息用于纠正
  • keyframe sampling:每隔若干帧插入一个关键帧来"锚定"视频内容

这些方法确实有效,但副作用是:每生成一帧,都要额外计算前一帧的上下文。计算量不降反升。

路线B:加速技术(Speed-up Techniques)

  • KV Cache:预先存储历史计算结果,避免重复计算
  • causal masking:只允许看到之前的帧,减少计算
  • sparse attention:只计算部分 token 的注意力

这些方法降低了计算量,但引入了新的问题——KV Cache 会随视频长度线性增长,最终撑爆显存;sparse attention 则会损失生成质量。

两条路线都没有真正解决"速度-质量-长度"的三角困境。Helios 的思路则完全不同:不是去修补问题,而是在训练阶段就让模型学会"自己解决"这些问题


二、Helios 的核心架构:从"被动加速"到"主动高效"

2.1 整体设计哲学

Helios 的核心设计哲学可以概括为一句话:把计算量压缩进训练阶段,而不是推到推理阶段

传统的加速方案都是在"推理时打补丁",而 Helios 选择在"训练时重塑模型能力"。这意味着模型在推理时不需要任何额外的辅助工具——不需要 KV Cache,不需要 causal masking,不需要 keyframe sampling。模型自己学会了如何在保持质量的同时高效生成。

这个思路有点像强化学习的"试错学习"——不告诉模型具体怎么做,而是通过训练让它自己找到最优解。

2.2 模型规模与硬件适配

Helios 的基础规格:

指标数值
参数量14B
生成速度(单卡 H100)19.5 FPS
显存占用(低显存模式)~6GB
视频长度分钟级
开源许可证Apache 2.0

这里有一个反直觉的数据:14B 的模型比很多 1.3B 的小模型更快

这是怎么做到的?答案在于 Helios 的三阶段训练流程和特殊的架构设计——它通过训练阶段的优化,大幅降低了推理时的计算复杂度,使得参数量虽然大,但实际激活的计算量远小于同等规模的其他模型。

2.3 显存优化:Group Offloading 技术

Helios 能够用 ~6GB 显存运行,靠的是 Group Offloading(分组卸载) 技术。

传统的模型推理会把整个模型权重一次性加载到显存中。对于 14B 参数的模型,单是存储权重就需要:

  • float32: 56 GB
  • float16/bfloat16: 28 GB
  • int8: 14 GB

这远远超出单卡 H100 的 80GB 显存上限。

Group Offloading 的思路是:不一次性加载整个模型,而是将模型按层分组,按需加载

# Group Offloading 的伪代码逻辑
class GroupOffloading:
    def __init__(self, model, offload_type="leaf_level"):
        self.model = model
        self.offload_type = offload_type
        # 将模型参数按组划分
        self.param_groups = self._create_groups(model, offload_type)
        
    def forward(self, x):
        for group in self.param_groups:
            # 加载当前组的参数到显存
            self._load_to_device(group)
            # 执行前向计算
            output = group.forward(x)
            # 将参数卸载回内存
            self._offload_to_cpu(group)
            x = output
        return x

具体来说:

  • leaf_level offloading:将每个注意力层的权重单独分组,每处理完一层就卸载
  • group_level offloading:将多个相邻层打包成一组,组内层常驻显存

这种设计让 Helios 可以在消费级 GPU(如 RTX 3090/4090,24GB 显存)上运行,打破了"高质量视频生成必须用服务器级 GPU"的固有认知。

2.4 多 GPU 并行推理

对于需要更高吞吐量的场景,Helios 支持多 GPU 并行推理:

CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 infer_helios.py \
  --enable_parallelism \
  --cp_backend "ulysses" \
  --base_model_path "BestWishYSH/Helios-Base" \
  --num_frames 99

支持的后端包括:

  • ring:环形通信,适合 GPU 间带宽高的场景
  • ulysses:集中通信,适合多卡但单节点场景
  • unified:混合模式,自动适配硬件拓扑
  • ulysses_anything:通用配置

80GB 显存可以容纳 4 个 14B 模型并行推理,实现4倍的吞吐量提升。


三、三阶段训练流程:逐层压缩的工程奇迹

Helios 的三阶段训练流程(Base → Mid → Distilled)是其技术核心。每一步都针对一个具体的瓶颈,层层递进,最终实现"无辅助工具的实时生成"。

3.1 第一阶段:Base(基础适配)——让双向模型学会"顺序思考"

目标:将预训练的双向 Transformer 模型转换为自回归生成器。

大多数视频生成模型在预训练阶段使用的是双向注意力(Bidirectional Attention)——每个 token 都可以看到序列中的所有其他 token。这对于理解视频内容很有效,但对于生成来说存在一个致命问题:生成是顺序的,每一帧只能看到之前的帧

Base 阶段的核心任务是教会模型"从左到右"生成,同时保持其强大的视频理解能力。

关键技术一:Unified History Injection(统一历史注入)

这是 Helios 最核心的创新之一。传统方法在生成第 N 帧时,需要显式地将前 N-1 帧的所有信息编码后注入到当前帧的输入中。这导致计算量随帧数线性增长。

Unified History Injection 的思路是:训练模型学会"压缩"历史信息

class UnifiedHistoryInjection:
    """
    统一历史注入机制
    
    核心思想:训练一个轻量级的"历史压缩模块",
    将历史帧序列压缩成固定长度的上下文向量,
    而不是在每帧推理时重新计算全部历史
    """
    def __init__(self, model_dim=2048, history_len=33):
        # 历史压缩器:将33帧压缩为固定长度的记忆向量
        self.history_compressor = nn.Sequential(
            nn.Linear(model_dim * history_len, model_dim * 4),
            nn.GELU(),
            nn.Linear(model_dim * 4, model_dim)
        )
        
    def compress(self, frame_sequence):
        """
        输入: frame_sequence shape = [B, 33, model_dim] (33帧的编码)
        输出: memory_vector shape = [B, model_dim] (压缩后的记忆向量)
        """
        flat = frame_sequence.flatten(start_dim=1)  # [B, 33*model_dim]
        return self.history_compressor(flat)  # [B, model_dim]

这个设计的精妙之处在于:训练阶段强制模型学会只用压缩后的记忆向量来生成下一帧。这意味着模型必须自己学会"什么信息是重要的",从而在压缩过程中保留最关键的特征。

在推理时,只需要存储这个固定大小的记忆向量([B, model_dim]),而不需要存储所有历史帧的完整 KV Cache。显存占用从 O(N×D) 降到了 O(D),其中 N 是帧数,D 是模型维度。

关键技术二:Easy Anti-Drifting(简易防漂移)

视频生成中有一个经典问题:漂移(Drifting)——生成长视频时,画面逐渐失真,人物的外貌、背景、物体特征都会在生成过程中逐渐偏移。

传统方案使用复杂的 self-forcing 机制——每生成一帧,都要用生成的结果去纠正下一帧。但这引入了"错误累积"问题:如果某一帧生成有瑕疵,这个瑕疵会被 self-forcing 机制放大,导致后续帧越来越差。

Easy Anti-Drifting 的解决思路是:在训练阶段引入随机噪声注入,让模型学会抵抗历史帧中的扰动

def easy_anti_drifting_loss(generated_frame, target_frame, history_noise_level=0.05):
    """
    简易防漂移损失函数
    
    核心:在训练时向历史帧注入随机噪声,
    迫使模型学会在历史信息有干扰的情况下
    仍然保持输出的稳定性
    """
    # 添加随机噪声模拟生成中的误差
    noisy_history = add_noise(history, level=history_noise_level)
    
    # 重建:让模型基于带噪声的历史生成
    reconstructed = model.generate(noisy_history)
    
    # 原始重建:让模型基于干净的历史生成
    clean_reconstructed = model.generate(clean_history)
    
    # 双重损失:既要接近真实目标,也要抵抗噪声
    loss = F.mse_loss(reconstructed, target_frame) + \
           lambda_drifting * F.mse_loss(reconstructed, clean_reconstructed)
    
    return loss

通过这种训练方式,模型获得了对历史帧误差的"免疫力"。在推理时,即使某几帧的生成质量略有波动,后续帧也能自动纠正回来。

关键技术三:Multi-Term Memory Patchification(多术语记忆分块)

视频内容可以拆解为多个"语义模块"——主体运动、背景环境、光影变化、材质细节等。每个模块的更新频率不同:主体运动变化快,需要频繁更新;背景环境变化慢,可以长时间保持。

Multi-Term Memory Patchification 将视频内容分解为多个独立的"记忆模块",每个模块有自己的更新策略:

class MultiTermMemoryPatchification:
    """
    多术语记忆分块
    
    将视频内容分解为多个独立更新的语义模块,
    每个模块有自己的压缩粒度和更新频率
    """
    def __init__(self):
        # 不同粒度的记忆模块
        self.modules = {
            'motion': MemoryModule(compression_ratio=2,   update_freq=1),  # 逐帧更新
            'structure': MemoryModule(compression_ratio=4, update_freq=2),   # 每2帧更新
            'appearance': MemoryModule(compression_ratio=8, update_freq=4),  # 每4帧更新
            'semantic': MemoryModule(compression_ratio=16, update_freq=8),  # 每8帧更新
        }
    
    def update(self, frame_encoding, frame_idx):
        """
        根据帧索引决定更新哪些模块
        """
        for name, module in self.modules.items():
            if frame_idx % module.update_freq == 0:
                module.compress_and_update(frame_encoding)

3.2 第二阶段:Mid(令牌压缩)——金字塔预测校正器

目标:在保持生成质量的情况下,大幅减少推理时的计算量。

Base 阶段模型学会了"如何生成",Mid 阶段的任务是"更快地生成"。

核心工具是 Pyramid Unified Predictor Corrector(金字塔统一预测校正器)

这个名字很拗口,但原理很优雅。它的核心思想来自图像压缩领域的"金字塔"概念:先低分辨率预测,再高分辨率校正

class PyramidPredictorCorrector:
    """
    金字塔预测校正器
    
    核心思路:将生成过程分解为多个分辨率层级,
    从粗糙到精细逐步提升质量,
    每一层只对前一层的结果进行微调
    """
    def __init__(self, num_stages=3):
        self.stages = [
            PyramidStage(resolution=8,   num_tokens=256),   # 金字塔第1层:8x8
            PyramidStage(resolution=16,  num_tokens=256),   # 金字塔第2层:16x16
            PyramidStage(resolution=32,  num_tokens=256),   # 金字塔第3层:32x32
        ]
        self.num_stages = num_stages
    
    def generate(self, condition, target_resolution):
        """
        金字塔生成流程
        
        1. 在最低分辨率(8x8)生成粗略的框架
        2. 在中间分辨率(16x16)对框架进行精细化
        3. 在目标分辨率(32x32)进行最终校正
        """
        # 第1阶段:粗粒度预测
        coarse = self.stages[0].predict(condition)  # [B, 256, dim]
        
        # 第2阶段:金字塔上升,每层只处理差值
        for i in range(1, self.num_stages):
            residual = self.stages[i].predict_residual(condition, coarse)
            coarse = coarse + residual  # 增量更新
        
        # 最终输出:分辨率从8x8→16x16→32x32逐步提升
        return self.upscale(coarse, target_resolution)

关键洞察是:生成过程的信息量不是均匀分布的。从低分辨率到高分辨率的变化,只占总信息量的一小部分。金字塔结构利用这个特性,在低分辨率阶段完成大部分"构图"工作,高分辨率阶段只做细节补充。

效果:整体计算量降低 60%,同时生成质量几乎不变

3.3 第三阶段:Distilled(蒸馏加速)——3步生成的艺术

目标:将 50 步采样压缩到 3 步,同时消除对 CFG 的依赖。

这是最具颠覆性的一步。

扩散模型(Diffusion Model)的生成依赖于"去噪步数"——步数越多,生成质量越好,但速度越慢。标准配置通常是 50 步甚至 100 步去噪。

Distilled 阶段的目标是:用 3 步完成 50 步的工作

class AdversarialHierarchicalDistillation:
    """
    对抗层次蒸馏
    
    核心思路:用对抗训练让"3步生成器"模仿"50步生成器"
    同时通过层次分解将复杂的去噪任务拆解为多个简单子任务
    """
    def __init__(self, teacher_steps=50, student_steps=3):
        self.teacher = DiffusionModel(steps=teacher_steps)   # 50步老师
        self.student = DiffusionModel(steps=student_steps)   # 3步学生
        self.discriminator = Discriminator()                  # 判别器
    
    def train_step(self, x0, condition):
        """
        蒸馏训练步骤
        """
        # 1. 用老师模型生成高质量目标
        teacher_output = self.teacher.denoise(x0, condition, steps=50)
        
        # 2. 用学生模型生成快速结果
        student_output = self.student.denoise(x0, condition, steps=3)
        
        # 3. 对抗训练:让判别器无法区分老师和学生的输出
        # 同时让学生的输出尽量接近老师
        loss_distill = F.mse_loss(student_output, teacher_output.detach())
        loss_adv = -torch.log(self.discriminator(student_output))
        
        return loss_distill + 0.1 * loss_adv
    
    def eliminate_cfg_dependency(self, model, cfg_threshold=1.0):
        """
        消除对分类器自由引导(CFG)的依赖
        
        CFG 是扩散模型常用的质量提升技术,但需要额外的前向传播。
        这里通过蒸馏让模型"内化"CFG 的效果,
        不再需要额外计算。
        """
        # 训练时:同时训练带CFG和不带CFG的输出
        # 让模型学会在没有CFG的情况下也能保持质量
        pass

对抗层次蒸馏的关键创新在于层次分解——不是让 3 步模型一次性学习 50 步的知识,而是将去噪过程分解为多个层次,每个层次处理特定频率的信息:

  • 低频信息(大结构):第1步处理
  • 中频信息(局部细节):第2步处理
  • 高频信息(纹理质感):第3步处理

此外,训练过程中还实现了 CFG 依赖消除。传统扩散模型的 CFG(Classifier-Free Guidance)需要同时计算带条件和不带条件的两个前向传播,然后再加权融合——这相当于一步变两步。Distilled 模型通过蒸馏学会了内化这个过程,在单次前向传播中同时完成条件感知和质量提升。

最终结果:50 步 → 3 步,生成速度提升 16 倍,视觉质量损失 < 5%


四、实战部署:从安装到运行的完整指南

4.1 环境准备

# 克隆仓库
git clone --depth=1 https://github.com/PKU-YuanGroup/Helios.git
cd Helios

# 创建 conda 环境(推荐 Python 3.11)
conda create -n helios python=3.11.2
conda activate helios

# 安装 PyTorch(根据 CUDA 版本选择)
# CUDA 12.6
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 \
  --index-url https://download.pytorch.org/whl/cu126

# 运行安装脚本
bash install.sh

4.2 下载模型

# 方式1:使用 Hugging Face CLI(国际用户推荐)
pip install "huggingface_hub[cli]"
huggingface-cli download BestWishYSH/Helios-Base --local-dir BestWishYSH/Helios-Base

# 方式2:使用 ModelScope(国内用户推荐,速度更快)
pip install modelscope
modelscope download BestWishYSH/Helios-Base --local_dir BestWishYSH/Helios-Base

4.3 三个版本的选型建议

版本适用场景特点
Helios-Base追求最高质量v-prediction,标准 CFG,适合最终输出
Helios-Mid平衡速度与质量CFG-Zero* 过渡版本,训练中间检查点
Helios-Distilled追求极致速度x0-prediction,3步采样,适合实时场景

4.4 基础推理

cd scripts/inference

# 文生视频(T2V)
bash helios-base_t2v.sh

# 图生视频(I2V)
bash helios-base_i2v.sh

# 视频生视频(V2V)
bash helios-base_v2v.sh

4.5 低显存模式(~6GB VRAM)

如果显存不够跑完整模型,可以使用 Group Offloading:

# infer_helios.py
import torch
from helios import HeliosModel

model = HeliosModel.from_pretrained(
    "BestWishYSH/Helios-Distilled",
    torch_dtype=torch.bfloat16
)

# 启用低显存模式
model.enable_low_vram_mode(
    group_offloading_type="leaf_level"  # 逐层卸载
)

output = model.generate(
    prompt="A vibrant tropical fish swimming in a coral reef",
    num_frames=240,  # ~10秒 @ 24FPS
    guidance_scale=1.0
)

4.6 使用 Diffusers 管道

Helios 提供了原生的 Diffusers 集成,兼容主流 AI 工具生态:

import torch
from diffusers import AutoModel, HeliosPyramidPipeline
from diffusers.utils import export_to_video

# 加载 VAE 和 Pipeline
vae = AutoModel.from_pretrained(
    "BestWishYSH/Helios-Distilled",
    subfolder="vae",
    torch_dtype=torch.float32
)

pipeline = HeliosPyramidPipeline.from_pretrained(
    "BestWishYSH/Helios-Distilled",
    vae=vae,
    torch_dtype=torch.bfloat16
)
pipeline.to("cuda")

# 使用金字塔采样器
output = pipeline(
    prompt="A vibrant tropical fish swimming in a coral reef, 
            clear blue water, sunlight filtering through",
    negative_prompt="Bright tones, overexposed, static, blurry, low quality",
    num_frames=240,
    pyramid_num_inference_steps_list=[2, 2, 2],  # 金字塔3阶段各2步
    guidance_scale=1.0,
    is_amplify_first_chunk=True,
).frames[0]

# 导出视频
export_to_video(output, "output.mp4", fps=24)

4.7 帧数与时长对照

num_frames24 FPS16 FPS
1449 (33×44)~60秒~90秒
720 (33×22)~30秒~45秒
240 (33×8)~10秒~15秒
132 (33×4)~5.5秒~8秒

注意:Helios 的每个 chunk 生成 33 帧,num_frames 必须是 33 的倍数。


五、为什么 Helios 的出现意味着视频生成进入新阶段?

Helios 的发布,不只是一个技术突破,更是一个范式转变

5.1 从"辅助加速"到"原生高效"

过去一年,视频生成领域的主流优化思路是"在推理时打补丁"——加 KV Cache、加 sparse attention、加 temporal interpolation。这些技术当然有效,但它们都是在不改变模型本质的情况下做性能优化。

Helios 开创的思路是:通过训练让模型自己学会高效。这是从"外科手术"到"基因改造"的跃迁。

5.2 打破"大模型必须用大机器"的迷信

一直以来,AI 行业有一个隐含的假设:模型越大,效果越好,但部署成本越高。这导致实际应用中,很多团队被迫在小模型和质量之间做妥协。

Helios 证明了:通过架构和训练的联合优化,14B 的模型可以在消费级硬件上实时运行。这不只是技术上的进步,更是对整个 AI 部署范式的挑战。

5.3 开源的力量

Helios 选择了 Apache 2.0 许可证——这意味着任何人都可以自由使用、修改、分发,包括商业用途。

结合其对 Hugging Face Diffusers、ModelScope、SGLang 等主流生态的原生支持,Helios 的开源意味着:

  • 研究者可以基于它做下游任务的 fine-tuning
  • 企业可以直接将其集成到生产流程中
  • 独立开发者可以在个人电脑上跑起来做实验

北京大学袁粒课题组(PKU-YuanGroup)在开源社区有着良好的声誉,此前发布的 ChatLaw(法律大模型)、Video-LLaVA(视频语言模型)、LLaVA-CoT(视觉推理模型)等都在学术界和工业界产生了广泛影响。Helios 是这个团队在视频生成领域的最新力作。


六、性能对比与局限性

6.1 性能对比

指标Helios-Distilled其他主流方案(典型值)
生成速度19.5 FPS(H100)0.5-2 FPS
显存占用~6GB(低显存模式)24-80GB
视频长度分钟级通常几秒-十几秒
实时能力✅ 原生实时❌ 需要额外优化
开源✅ Apache 2.0部分开源或闭源

6.2 当前的局限性

诚实地说,Helios 也有一些局限性:

  1. 生成质量与顶级闭源方案仍有差距:虽然 19.5 FPS 的速度非常亮眼,但在绝对画质上,Sora、Veo 等顶级闭源模型仍然领先。
  2. 只支持文本/图像到视频:目前不支持音频生成和视频编辑。
  3. 复杂的运动场景仍有挑战:对于需要精确物理模拟的场景(如碰撞、流体),仍有不足。
  4. 模型体积较大:14B 参数对于移动端部署仍然困难。

但这些局限性都在快速改善中。按照当前的技术迭代速度,半年后这些问题的答案可能会完全不同。


七、总结与展望

Helios 的出现,在视频生成领域撕开了一道口子。它证明了:

  1. 速度不是功能的牺牲品:实时生成、高质量、长视频可以同时实现。
  2. 训练才是性能的天花板:与其在推理时打补丁,不如在训练时重塑模型。
  3. 开源生态正在缩小差距:Apache 2.0 的开源策略让最新的技术突破不再被大厂垄断。

展望未来,我们可以预期:

  • 更长的视频:随着记忆机制的进一步优化,生成长达数十分钟的视频将成为可能
  • 更低的硬件门槛:移动端 NPU 优化将让实时视频生成在手机上成为现实
  • 更丰富的模态:文本+图像+音频的联合生成已经在路线图上
  • 更好的可控性:精确控制视频内容的每个细节(如相机运动、物体轨迹)

北京大学袁粒课题组的 Helios 项目,不只是一个技术 demo,它是 2026 年开源视频生成领域的一个里程碑。

当视频生成的速度追上了人类的实时感知,当模型的部署门槛降到了消费级硬件,一个新的时代正在开启。

而这一次,创新的钥匙握在开源社区手中。


参考资源

推荐文章

维护网站维护费一年多少钱?
2024-11-19 08:05:52 +0800 CST
批量导入scv数据库
2024-11-17 05:07:51 +0800 CST
html5在客户端存储数据
2024-11-17 05:02:17 +0800 CST
Vue中如何处理异步更新DOM?
2024-11-18 22:38:53 +0800 CST
Nginx 防盗链配置
2024-11-19 07:52:58 +0800 CST
地图标注管理系统
2024-11-19 09:14:52 +0800 CST
Roop是一款免费开源的AI换脸工具
2024-11-19 08:31:01 +0800 CST
JavaScript中设置器和获取器
2024-11-17 19:54:27 +0800 CST
用 Rust 构建一个 WebSocket 服务器
2024-11-19 10:08:22 +0800 CST
对多个数组或多维数组进行排序
2024-11-17 05:10:28 +0800 CST
一个收银台的HTML
2025-01-17 16:15:32 +0800 CST
Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
PyMySQL - Python中非常有用的库
2024-11-18 14:43:28 +0800 CST
程序员茄子在线接单