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

生成对抗网络(GAN)深度解析:理论、技术与应用全景

        生成对抗网络(Generative Adversarial Networks,GAN)作为深度学习领域的重要突破,通过对抗训练框架实现了强大的生成能力。本文从理论起源、数学建模、网络架构、工程实现到行业应用,系统拆解GAN的核心机制,涵盖基础理论推导、改进模型分析、评估指标设计及多领域实践案例,为复杂分布建模提供完整技术路线。

一、理论基础:从博弈论到生成模型革命

1.1 GAN的起源与核心思想 

        GAN的全称是Generative adversarial network,中文翻译过来就是生成对抗网络。生成对抗网络其实是两个网络的组合:生成网络(Generator)负责生成模拟数据(大部分情况下是图像),最终目的是“骗过”判别器;判别网络(Discriminator)负责判断输入的数据是真实的还是生成的,目的是找出生成器做的“假数据”。生成网络要不断优化自己生成的数据让判别网络判断不出来,判别网络也要优化自己让自己判断得更准确。二者关系形成对抗,因此叫对抗网络

1.1.1生成模型的分类与定位

传统生成模型可分为:

(1)显式密度模型直接学习数据分布p(x),如变分自编码器(VAE)通过最大化对数似然log p(x)。

(2)隐式密度模型不直接建模p(x),而是通过采样过程生成数据,如GAN通过对抗训练隐式学习分布。

1.1.2对抗训练的哲学思想

        GAN是一种深度学习模型,由lan Goodfellow等人于2014年提出,其核心思想源于博弈论中的极小极大博弈(Mini max Game),含两个神经网络组件:

(1)生成器(Generator,G)尝试生成逼真数据,欺骗判别器

(2)判别器(Discriminator,D)努力区分真实数据与生成数据二者构成零和博弈,通过对抗训练达到纳什均衡

1.1.3 GAN的演进图谱

        GAN自提出以来,演进出了很多版本,针对不同的场景进行了多方面的创新。

1.2数学基础:从概率分布到博弈均衡

1.2.1概率分布与KL散度

真实数据分布p_{data}(x)生成器分布二者差异可通过KL散度衡量

但直接最小化KL散度需显式计算p_g(x),在高维空间中难以处理。

1.2.2对抗训练的数学表述

GAN的目标函数可表示为极小极大博弈

其中:

(1)x为真实数据,z为随机噪声(通常服从高斯分布或均匀分布);

(2)D(x)表示判别器对真实数据的评分(概率值);

(3)D(G(z))表示判别器对生成数据的评分。

        之后将D(x)和D(G(z))都输入到判别模型(D)中,进行判别,判断是否是真是的数据。

1.2.3纳什均衡的存在性

        当且仅当生成器数据分布和真实数据分布相等时,即p_{data}=p_g时,判别器无法区分真实与生成数据,此时判别模型(D)的最优解为目标函数达到全局最优解

1.3理论扩展:从JS散度到Wasserstein距离

1.3.1原始GAN的局限性

        原始GAN使用JS散度(Jensen-Shannon Divergence)作为优化目标,JS散度是在KL散度基础上实现的:

        当p_{data}p_g的支撑集(support)不重叠时,JS散度恒为log2,导致梯度消失

1.3.2 Wasserstein GAN(WGAN)的突破

        Arjovsky等人提出WGAN,使用Wasserstein距离(地球移动距离,Earth Mover's Distance)替代JS散度:

        其中\pi (p_{data},p_g)表示所有联合分布\gamma (x,y)的集合,其边缘分布分别为p_{data}p_g

1.3.3 WGAN的理论优势

(1)梯度连续性:即使p_{data}p_g不重叠,Wasserstein距离仍能提供有意义的梯度。

(2)训练稳定性:通过权重裁剪(Weight Clipping)或梯度惩罚(Gradient Penalty)约束判别器为1-Lipschitz函数。

(3)评估指标有效性:Wasserstein距离与生成样本质量线性相关,可用于监控训练过程。

二、数学基础:从目标函数到训练动态

2.1原始GAN的数学推导

        在进行原始GAN的数学推导之前,先熟悉一下生成器Generator和判别器Discriminator的处理过程,如下图:

2.1.1判别器的最优解

        对于固定的生成器G,判别器D的最优解为:

        即看真实数据分布p_{data}与生成器数据分布p_g和真实数据分布p_{data}之和的占比,当且仅当p_{data}=p_g时,各占一半,判别器无法区分真实与生成数据,此时则为判别器(D)的最优解。

        证明:将目标函数视为D(x)的函数,对其求导并令导数为0,解得上述表达式。

2.1.2生成器的优化目标

        将判别器最优解D^*代入原目标函数,生成器的优化问题转化为

        进一步推导可得,该目标等价于最小化p_{data}p_g之间的JS散度。

2.2改进GAN的数学模型

2.2.1 WGAN-GP(Gradient Penalty)

        为避免权重裁剪导致的参数不稳定,WGAN-GP引入梯度惩罚项:

        其中\hat{x}是真实样本与生成样本的插值,λ为惩罚系数(通常取10)。

2.2.2最小二乘GAN(LSGAN)

        使用最小二乘损失替代对数损失,缓解梯度消失问题:

2.2.3条件GAN(CGAN)

        通过添加条件变量y,实现可控生成

        条件可以是类别标签、文本描述或图像特征。

2.3训练动力学与模式崩溃

2.3.1模式崩溃(Mode Collapse)现象

        生成器可能只学习到数据分布的部分模式,导致生成样本多样性不足。数学上表现为:

        其中δ为狄拉克函数,生成器仅生成k个离散点。

2.3.2梯度消失与训练不稳定

        当判别器过强时,生成器梯度接近0,导致训练停滞。例如,当D(G(z))0时:

改进策略:

(1)训练初期最大化log D(G(z))而非最小化log(1-D(G(z)))

(2)判别器使用标签平滑(Label Smoothing),如将真实标签从1改为0.9

三、网络结构:从基础架构到高级变体

3.1基础GAN架构设计

3.1.1生成器网络

        典型结构为反卷积网络(Deconvolutional Network):

(1)输入层:随机噪声(通常d=100)

(2)全连接层:将噪声映射到高维特征空间

(3)反卷积层:逐步上采样至目标图像尺寸(如64×64×3)

(4)激活函数:输出层使用tanh(映射到[-1,1]),中间层使用ReLU

3.1.2判别器网络

典型结构为卷积网络

(1)输入层:图像

(2)卷积层:逐步下采样提取特征

(3)全连接层:输出二分类概率(真实/生成)

(4)激活函数:输出层使用sigmoid,中间层使用LeakyReLU(斜率0.2)

3.2高级GAN架构

3.2.1 DCGAN(深度卷积GAN)

关键改进:

(1)生成器和判别器中使用卷积层替代全连接层

(2)引入批量归一化(Batch Normalization)稳定训练

(3)使用步长卷积(strided convolution)替代池化操作

3.2.2 StyleGAN(风格生成对抗网络)

核心创新:

(1)风格注入机制:通过自适应实例归一化(Adaptive Instance Normalization,AdaIN)将潜在空间分解为内容与风格

(2)渐进式训练:从低分辨率(4×4)逐步训练到高分辨率(1024×1024)

(3)潜在空间解耦:学习到的潜在空间具有语义解释性(如发型、表情等)

3.2.3 TransformerGAN

将Transformer的自注意力机制引入GAN:

(1)生成器:使用基于Transformer的解码器,通过自注意力建模全局依赖

(2)判别器:使用Vision Transformer(ViT)架构,增强对图像全局结构的理解

优势:在高分辨率图像生成中表现更优,减少棋盘效应

3.3特殊场景GAN架构

3.3.1 CycleGAN(循环一致性GAN)

        用于无配对图像到图像翻译,引入循环一致性损失:

        其中G:XY,F:YX为两个生成器。

3.3.2 StarGAN

单模型实现多域图像翻译,通过域标签控制翻译方向:

(1)生成器输入:噪声z +目标域标签c

(2)判别器输出:真假判断+域分类结果

3.3.3 3DGAN

用于生成3D对象,典型架构:

(1)生成器:从噪声生成3D体素网格(Voxel Grid)或点云(Point Cloud)

(2)判别器:评估3D结构的真实性,通常基于3D卷积或Point Net

四、实现技术:从训练到评估的工程实践

4.1训练技巧与稳定性优化

4.1.1初始化策略

(1)生成器:使用正态分布初始化权重,标准差0.02

(2)判别器:使用正交初始化(Orthogonal Initialization),保持梯度范数稳定

4.1.2学习率调度

(1)Adam优化器:默认参数\beta _1=0.5\beta _2=0.999

(2)学习率衰减:每50-100个epoch将学习率减半

(3)两时间尺度更新规则(TTUR):判别器使用较高学习率,生成器使用较低学习率

4.1.3正则化技术

(1)谱归一化(Spectral Normalization):约束判别器为Lipschitz连续函数,替代权重裁剪

(2)梯度惩罚:如WGAN-GP中的实现,防止梯度爆炸

4.2评估指标设计

4.2.1 Inception Score(IS)

        基于预训练的Inception模型,评估生成样本的质量与多样性:

        其中p(y|x)是Inception模型对样本x的类别分布预测,p(y)是所有生成样本的平均类别分布。

4.2.2 Frechet Inception Distance(FID)

        计算真实数据与生成数据在特征空间中的Wasserstein-2距离:

        其中μ和Σ分别为特征向量的均值协方差矩阵

4.2.3感知路径长度(Perceptual Path Length,PPL)

        评估潜在空间的平滑性,用于衡量解耦程度:

4.3硬件加速与框架优化

4.3.1分布式训练

(1)数据并行:在多个GPU上复制模型,分割批次数据

(2)模型并行:将生成器和判别器分布在不同GPU上,适用于超大规模模型

(3)混合精度训练:使用FP16存储权重和激活值,减少显存占用并加速计算

4.3.2主流框架实现

框架

GAN实现特点

适用场景

PyTorch

动态图灵活调试,支持自定义训练循环

研究与快速原型开发

TensorFlow

静态图优化,SavedModel便于部署

生产环境大规模部署

Keras

高层API简化实现,适合初学者

教育与基础实验

JAX

基于XLA的高性能计算,支持自动向量化

理论验证与算法创新

五、应用示例:多领域生成问题解决方案

5.1图像生成:人脸合成案例

5.1.1数据准备

数据集:CelebA-HQ(30,000张高分辨率人脸图像)

预处理:裁剪、缩放至1024×1024,归一化到[-1,1]

5.1.2模型架构(StyleGAN2)

python代码示例:

import torch  import torch.nn as nn  class MappingNetwork(nn.Module):  def __init__(self, z_dim=512, w_dim=512, num_layers=8):  super().__init__()  layers = []  for i in range(num_layers):  layers.append(nn.Linear(z_dim if i == 0 else w_dim, w_dim))  layers.append(nn.LeakyReLU(0.2))  self.net = nn.Sequential(*layers)  def forward(self, z):  return self.net(z)  class SynthesisNetwork(nn.Module):  def __init__(self, w_dim=512, img_resolution=1024):  super().__init__()  # 简化版:包含多个上采样块和风格注入模块  # 实际实现包含ToRGB层、噪声注入等组件  class StyleGAN2(nn.Module):  def __init__(self, z_dim=512, w_dim=512, img_resolution=1024):  super().__init__()  self.mapping = MappingNetwork(z_dim, w_dim)  self.synthesis = SynthesisNetwork(w_dim, img_resolution)  def forward(self, z):  w = self.mapping(z)  img = self.synthesis(w)  return img

5.1.3训练过程

(1)损失函数:使用r1正则化的WGAN-GP损失

(2)渐进式训练:从4×4逐步训练到1024×1024,每阶段训练约200k步

(3)评估指标:FID=2.82(在FFHQ数据集上)

5.2图像到图像翻译:语义分割转真实图像

5.2.1问题定义

将Cityscapes数据集的语义分割图(19类)转换为逼真的城市街景图像。

5.2.2模型架构(SPADE)

python代码示例:

class SPADE(nn.Module):  def __init__(self, norm_nc, label_nc):  super().__init__()  self.param_free_norm = nn.BatchNorm2d(norm_nc, affine=False)  self.mlp_shared = nn.Sequential(  nn.Conv2d(label_nc, 128, kernel_size=3, padding=1),  nn.ReLU()  )  self.mlp_gamma = nn.Conv2d(128, norm_nc, kernel_size=3, padding=1)  self.mlp_beta = nn.Conv2d(128, norm_nc, kernel_size=3, padding=1)  def forward(self, x, segmap):  normalized = self.param_free_norm(x)  segmap = nn.functional.interpolate(segmap, size=x.size()[2:], mode='nearest')  actv = self.mlp_shared(segmap)  gamma = self.mlp_gamma(actv)  beta = self.mlp_beta(actv)  return normalized * (1 + gamma) + beta  class SPADEResnetBlock(nn.Module):  def __init__(self, fin, fout, seg_nc):  super().__init__()  self.conv1 = nn.Conv2d(fin, fout, kernel_size=3, padding=1)  self.conv2 = nn.Conv2d(fout, fout, kernel_size=3, padding=1)  self.norm1 = SPADE(fin, seg_nc)  self.norm2 = SPADE(fout, seg_nc)  self.actvn = nn.LeakyReLU(0.2)  self.shortcut = nn.Conv2d(fin, fout, kernel_size=1, bias=False)  def forward(self, x, seg):  x_s = self.shortcut(x)  dx = self.conv1(self.actvn(self.norm1(x, seg)))  dx = self.conv2(self.actvn(self.norm2(dx, seg)))  out = x_s + dx  return out

 

5.2.3实验结果

(1)评估指标:FID=18.6,LPIPS=0.125

(2)控制能力:通过调整分割图中的类别分布,可生成不同场景的街景

5.3文本到图像生成:基于CLIP的可控生成

5.3.1模型架构(DALL-E2简化版)

(1)文本编码器:使用预训练的CLIP文本编码器

(2)图像编码器:使用预训练的CLIP图像编码器

(3)扩散模型:基于文本特征生成图像,通过CLIP引导优化

5.3.2关键技术

(1)交叉注意力机制:文本特征与图像特征通过交叉注意力交互

(2)CLIP引导:通过最大化生成图像与文本描述在CLIP特征空间中的余弦相似度

5.3.3生成示例

输入文本:“一只戴着太阳镜的金毛犬在沙滩上奔跑”

生成结果:成功生成符合描述的逼真图像,毛发细节和动态表现良好

5.4视频生成:动作条件下的人体视频合成

5.4.1模型设计(MoCoGAN)

1.生成器:

(1)内容编码器:提取人物外观特征

(2)动作编码器:处理动作序列(光流或关节点)

(3)解码器:融合内容与动作特征生成视频帧

2.判别器:

(1)空间判别器:评估单帧图像质量

(2)时间判别器:评估帧间连贯性

5.4.2实验结果

在Human3.6M数据集上,生成的人体动作自然流畅

评估指标:FrechetVideoDistance(FVD)=108.2

六、挑战与未来方向

6.1当前技术瓶颈

(1)训练稳定性:模式崩溃、梯度消失/爆炸等问题仍需手动调参

(2)评估困难:缺乏统一、可靠的评估指标,IS和FID存在局限性

(3)可控性不足:难以精确控制生成结果的特定属性(如人脸的年龄、表情)

6.2前沿研究方向

(1)基于扩散模型的生成:通过迭代去噪过程生成高质量样本,如DALL-E2、Stable Diffusion

(2)生成对抗的理论突破:探索新的博弈理论框架,解决训练不稳定性

(3)多模态生成:融合文本、音频、3D等多种模态信息,实现更复杂场景的生成

(4)生成模型的可解释性:开发方法解释生成过程,理解潜在空间语义

七、结语

        生成对抗网络通过对抗训练的创新思想为数据生成提供了强大工具,其影响已渗透到计算机视觉、自然语言处理、音频处理等多个领域。从理论推导到工程实现,GAN的发展印证了深度学习中“对抗训练”范式的有效性——通过构建竞争机制,模型能够学习到更复杂、更真实的数据分布。未来,随着理论的完善和技术的融合,GAN将在创意设计、虚拟现实、科学模拟等领域发挥更大作用,推动人工智能从感知智能向创造智能迈进。

相关文章:

生成对抗网络(GAN)深度解析:理论、技术与应用全景

生成对抗网络(Generative Adversarial Networks,GAN)作为深度学习领域的重要突破,通过对抗训练框架实现了强大的生成能力。本文从理论起源、数学建模、网络架构、工程实现到行业应用,系统拆解GAN的核心机制,涵盖基础理…...

Java面试全记录:Spring Cloud+Kafka+Redis实战解析

Java面试全记录:Spring CloudKafkaRedis实战解析 人物设定 姓名:张伟(随机生成唯一姓名) 年龄:28岁 学历:硕士 工作年限:5年 工作内容: 基于Spring Cloud搭建微服务架构使用Kafka…...

人脸识别deepface相关笔记

人脸识别deepface相关笔记 项目地址项目结构 项目地址 https://github.com/serengil/deepface.git 项目结构...

量子加密通信:守护信息安全的未来之盾

摘要 在数字化时代,信息安全成为全球关注的焦点。传统加密技术面临着被量子计算破解的风险,而量子加密通信作为一种基于量子力学原理的新型加密技术,提供了理论上无条件安全的通信保障。本文将详细介绍量子加密通信的基本原理、技术实现、应用…...

三、transformers基础组件之Model

1. 什么是Model Head Model Head 是连接在模型后的层,通常为1个或多个全连接层Model Head 将模型的编码的表示结果进行映射,以解决不同类型的任务 不同的任务会有不同的Model Head。 2. 模型加载 2.1 在线加载 预训练模型的加载与Tokenizer类似,我们只需要指定想…...

【语法】C++的多态

目录 虚函数的重写: 虚函数 重写(覆盖) 虚函数重写的两个例外: 协变: 析构函数的重写: 练习: final和override关键字 抽象类 接口继承和实现继承 虚函数重写的原理: 打印虚函数表: …...

WebGIS开发新突破:揭秘未来地理信息系统的神秘面纱

你有没有想过,未来的地理信息系统(GIS)会是什么样子?是像电影里那样,一块透明屏幕就能呈现整个城市的实时动态?还是像《钢铁侠》中那样,一个手势就能操控全球地图? 其实&#xff0c…...

JVM类加载

JVM类加载 1. 类的生命周期(类加载过程)类加载的五个阶段: 2. 类加载器的分类3. 双亲委派模型4. 类的卸载与热加载5.类加载器命名空间隔离 1. 类的生命周期(类加载过程) 类加载的五个阶段: 加载&#xff…...

AD开启交叉选择功能,只选中器件,不选中网络、焊盘

AD开启交叉选择功能,只选中器件,不选中网络、焊盘。 一、打开首选项 二、打开System→Navigationg,配置如下。 三、最后点击OK即可。...

机器学习——集成学习基础

一、鸢尾花数据训练模型 1. 使用鸢尾花数据分别训练集成模型:AdaBoost模型,Gradient Boosting模型 2. 对别两个集成模型的准确率以及报告 3. 两个模型的预测结果进行可视化 需要进行降维处理,两个图像显示在同一个坐标系中 代码展示&…...

C++匿名函数

C 中的匿名函数(Lambda 表达式)是 C11 引入的一项重要特性,它允许你在需要的地方定义一个临时的、无名的函数对象,使代码更加简洁和灵活。 1. 基本语法 Lambda 表达式的基本结构: [capture list](parameter list) -…...

互联网大厂Java面试实战:Spring Boot到微服务的技术问答解析

💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

神经网络是如何工作的

人工智能最核心的技术之一,就是神经网络(Neural Networks)。但很多初学者会觉得它是个黑盒:为什么神经网络能识别图片、翻译语言,甚至生成文章? 本文用图解最小代码实现的方式,带你深入理解&am…...

Kubernetes控制平面组件:Kubelet详解(二):核心功能层

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...

【android bluetooth 框架分析 02】【Module详解 13】【CounterMetrics 模块介绍】

1. CounterMetrics 介绍 CounterMetrics 模块代码很少, 我简单介绍一下。 // system/gd/metrics/counter_metrics.cc #define LOG_TAG "BluetoothCounterMetrics"#include "metrics/counter_metrics.h"#include "common/bind.h" #i…...

Matlab自学笔记五十四:符号数学工具箱和符号运算、符号求解、绘图

1.什么是符号数学工具箱? 符号数学工具箱是Matlab针对符号对象的运算功能,它引入了一种特殊的数据类型 - 符号对象; 该数据类型包括符号数字,符号变量,符号表达式和符号函数,还包含符号矩阵,以…...

Matlab 模糊控制平行侧边自动泊车

1、内容简介 Matlab 233-模糊控制平行侧边自动泊车 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

新书速览|纯血鸿蒙HarmonyOS NEXT原生开发之旅

《纯血鸿蒙HarmonyOS NEXT原生开发之旅》 本书内容 《纯血鸿蒙HarmonyOS NEXT原生开发之旅》全面系统地介绍了基于HarmonyOS NEXT系统进行原生应用开发的实用技巧。全书共12章,内容涵盖从基础工具使用到高级功能实现的各个方面。第1章详细介绍了开发环境的搭建、Ar…...

tinyint(3)数据类型讲解

TINYINT(3) 是数据库中用于定义字段数据类型的一种写法,常见于 MySQL 等数据库系统。下面来详细了解其含义和作用: 数据类型本质 TINYINT 属于整数类型,在不同的数据库系统中,它所占用的存储空间和表示范围通常是固定的。以 MyS…...

manjaro系统详解

1. Manjaro 概述 Manjaro 是一款基于 Arch Linux 的滚动更新发行版,以 用户友好、易用性 和 硬件兼容性 为核心设计理念。它继承了 Arch 的灵活性和软件丰富性,同时通过图形化工具和稳定的更新策略降低了使用门槛,适合从新手到高级用户的广泛…...

# 实时英文 OCR 文字识别:从摄像头到 PyQt5 界面的实现

实时英文 OCR 文字识别:从摄像头到 PyQt5 界面的实现 引言 在数字化时代,文字识别技术(OCR)在众多领域中发挥着重要作用。无论是文档扫描、车牌识别还是实时视频流中的文字提取,OCR 技术都能提供高效且准确的解决方案…...

9.3.云原生架构模式

目录 一、云原生架构核心概念 云原生定义与核心原则 • 四大核心要素:容器化、微服务、DevOps、持续交付 • 核心原则:弹性、可观测性、自动化、不可变基础设施 云原生技术矩阵 • 容器与编排:Docker、Kubernetes、CRI-O • 服务治理&#…...

现代化水库运行管理矩阵平台如何建设?

政策背景 2023年8月24日,水利部发布的水利部关于加快构建现代化水库运行管理矩阵的指导意见中指出,在全面推进水库工程标准化管理的基础上,强化数字赋能,加快构建以推进全覆盖、全要素、全天候、全周期“四全”管理,完…...

木马查杀引擎—关键流程图

记录下近日研究的木马查杀引擎,将关键的实现流程图画下来 PHP AST通道实现 木马查杀调用逻辑 模型训练流程...

基于libevent的异步事件驱动型线程池实现

----------------------| IFoxThread | ← 抽象线程接口|----------------------|| dispatch() || start() || stop() || ... |----------^-----------|--------------------|----------------------| …...

ArcGIS+InVEST+RUSLE:水土流失模拟与流域管理的高效解决方案;水土保持专题地图制作

在全球生态与环境面临严峻挑战的当下,水土流失问题已然成为制约可持续发展的重要因素之一。水土流失不仅影响土地资源的可持续利用,还对生态环境、农业生产以及区域经济发展带来深远影响。因此,科学、精准地模拟与评估水土流失状况&#xff0…...

#S4U2SELF#S4U2Proxy#CVE-2021-42278/42287

#S4U2SELF Win08创建普通用户 s4u2 xwj456 可以看到普通用户是没用委托属性的 Win08手动赋予委托服务属性 setspn -A wsw/wsw.com s4u2 Win10身份验证 s4u2 xwj456 AS请求 两个勾 两个勾和include-pac记得按上(蓝色) ,发包之前把wiresh…...

利用基于LLM的概念提取和FakeCTI数据集提升网络威胁情报对抗虚假信息活动的能力

摘要 虚假新闻和虚假信息宣传活动的迅速蔓延对公众信任、政治稳定和网络安全构成了重大威胁。传统的网络威胁情报(CTI)方法依赖于域名和社交媒体账号等低级指标,很容易被频繁修改其在线基础设施的对手规避。为了解决这些局限性,我…...

uniapp|实现手机通讯录、首字母快捷导航功能、多端兼容(H5、微信小程序、APP)

基于uniapp实现带首字母快捷导航的通讯录功能,通过拼音转换库实现汉字姓名首字母提取与分类,结合uniapp的scroll-view组件与pageScrollTo API完成滚动定位交互,并引入uni-indexed-list插件优化索引栏性能。 目录 核心功能实现动态索引栏生成​联系人列表渲染​滚动定位联动性…...

使用PhpStudy搭建Web测试服务器

一、安装PhpStudy 从以下目录下载PhpStudy安装文件 Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 安装成功之后打开如下界面 点击启动Apache 查看网站地址 在浏览器中输入localhost:88,出现如下页面就ok了 二、与Unity交互 1.配置下载文件路径,点击…...

Qt/C++面试【速通笔记九】—视图框架机制

在Qt中,QGraphicsView和QGraphicsScene是用于构建二维图形界面的核心组件。它们的设计使得开发者能够高效地管理和渲染图形项,支持丰富的用户交互,例如缩放、旋转、平移等。 1. QGraphicsScene和QGraphicsView的基本概念 QGraphicsScene QG…...

react-diff-viewer 如何实现语法高亮

前言 react-diff-viewer 是一个很好的 diff 展示库,但是也有一些坑点和不完善的地方,本文旨在描述如何在这个库中实现自定义语法高亮。 Syntax highlighting is a bit tricky when combined with diff. Here, React Diff Viewer provides a simple rend…...

Python实例题:Django搭建简易博客

目录 Python实例题 题目 1. 创建 Django 项目和应用 2. 配置项目 3. 设计模型 blog_app templates blog_app post_list.html admin.py models.py urls.py views.py blog_project urls.py 代码解释 models.py: admin.py: urls.py&…...

Kotlin 异步初始化值

在一个类初始化的时候或者方法执行的时候,总有一些值是需要的但是不是立即需要的,并且在需要的时候需要阻塞流程来等待值的计算,这时候异步的形式创建这个值是毋庸置疑最好的选择。 为了更好的创建值需要使用 Kotlin 的协程来创建&#xff0…...

扩展:React 项目执行 yarn eject 后的 config 目录结构详解

扩展:React 项目执行 yarn eject 后的 config 目录结构详解 什么是 yarn eject?React 项目执行 yarn eject 后的 config 目录结构详解📁 config 目录结构各文件作用详解env.jsgetHttpsConfig.jsmodules.jspaths.jswebpack.config.jswebpackDe…...

(自用)Java学习-5.8(总结,springboot)

一、MySQL 数据库 表关系 一对一、一对多、多对多关系设计外键约束与级联操作 DML 操作 INSERT INTO table VALUES(...) DELETE FROM table WHERE... UPDATE table SET colval WHERE...DQL 查询 基础查询:SELECT * FROM table WHERE...聚合函数:COUNT()…...

cursor 如何在项目内自动创建规则

在对话框内 / Generate。cursor rules 就会自动根据项目进行创建规则 文档来自:https://www.kdocs.cn/l/cp5GpLHAWc0p...

C++ 迭代器

1.用途: 像我们之前学习的容器map,vector等,如果需要遍历该怎么做呢?这些容器大部分对下标式遍历,无法像数组灵活使用,也包括增删改查,因为它们的特性,所以需要一种其他的方法。 那么迭代器就…...

基于微信小程序的城市特色旅游推荐应用的设计与实现

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

最大m子段和

问题描述解题思路伪代码代码实现复杂度分析 问题描述 给定一个有n(n>0)个整数的序列,要求其m个互不相交的子段,使得这m个子段和最大。 输入:整数序列{nums},m。 输出:最大m子段和。 对于m1的情况,即求最…...

4.MySQL全量、增量备份与恢复

1.数据备份的重要性 在企业中数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的丢失都可能对企业产生严重的后果。通常情况下造成数据丢失的原因有如下几种: a.程…...

每日算法刷题Day4 5.12:leetcode数组4道题,用时1h

7. 704.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 思想 二分模版题 代码 c: class Solution { public:int search(vector<int>& nums, int target) {int nnums.size();int left0,rightn-1;int res-1;while(left<right){int midleft((…...

Day 15

目录 1.chika和蜜柑1.1 解析1.2 代码 2.对称之美2.1 解析2.2 代码 3.添加字符3.1 解析3.2 代码 1.chika和蜜柑 chika和蜜柑 TopK、堆、排序 1.1 解析 1.2 代码 #include <iostream> #include <vector> #include <algorithm> using namespace std; struct …...

脑机接口重点产品发展路径分析:以四川省脑机接口及人机交互产业攻坚突破行动计划(2025-2030年)为例

引言 随着人工智能和生物技术的飞速发展,脑机接口技术作为连接人类大脑与智能设备的桥梁,正在成为全球科技竞争的新焦点。2025年5月12日,四川省经济和信息化厅等8部门联合印发了《四川省脑机接口及人机交互产业攻坚突破行动计划(2025-2030年)》,为四川省在这一前沿领域的…...

leetcode 18. 四数之和

题目描述 和leetcode 15. 三数之和用同样的方法。有两个注意点。 一是剪枝的逻辑 这是和15. 三数之和 - 力扣&#xff08;LeetCode&#xff09;问题不同的地方。 无法通过这种情况&#xff1a; 二是整数溢出 最终答案 class Solution { public:vector<vector<int>…...

CentOS部署Collabora Online

1.安装Docker CentOS7安装Docker(超详细)-CSDN博客 2.拉取镜像 docker pull collabora/code:latest 3. 启动容器&#xff08;直接暴露HTTP端口&#xff09; docker run -d --name collabora -p 9980:9980 -e "usernameadmin" -e "password123456" -e …...

《Spring Boot 4.0新特性深度解析》

Spring Boot 4.0的发布标志着Java生态向云原生与开发效能革命的全面迈进。作为企业级应用开发的事实标准框架&#xff0c;此次升级在运行时性能、云原生支持、开发者体验及生态兼容性四大维度实现突破性创新。本文深度解析其核心技术特性&#xff0c;涵盖GraalVM原生镜像支持、…...

FFmpeg 与 C++ 构建音视频处理全链路实战(一)—— 环境配置与视频解封装

在数字媒体的浩瀚宇宙中&#xff0c;FFmpeg 就像一艘功能强大的星际战舰&#xff0c;承载着处理音视频数据的重任。而 C 作为一门高效、灵活的编程语言&#xff0c;犹如一位技艺精湛的星际工程师&#xff0c;能够精准操控 FFmpeg 战舰&#xff0c;完成各类复杂的音视频处理任务…...

什么是 NoSQL 数据库?它与关系型数据库 (RDBMS) 的主要区别是什么?

我们来详细分析一下 NoSQL 数据库与关系型数据库 (RDBMS) 的主要区别。 什么是 NoSQL 数据库&#xff1f; NoSQL (通常指 “Not Only SQL” 而不仅仅是 “No SQL”) 是一类数据库管理系统的总称。它们的设计目标是解决传统关系型数据库 (RDBMS) 在某些场景下的局限性&#xf…...

AI需求分析话术 | DeepSeek R1

运行环境&#xff1a;jupyter notebook (python 3.12.7) Dash 场景&#xff1a; 收集了小程序的问题点和优化建议&#xff0c;一键AI分析&#xff0c;快速排优先级 指令话术&#xff1a; 对收集的小程序问题点和建议&#xff0c;做需求分析并总结形成报告&#xff0c;报告结构…...