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

【深度学习】GAN生成对抗网络:原理、应用与发展

GAN生成对抗网络:原理、应用与发展

文章目录

  • GAN生成对抗网络:原理、应用与发展
    • 1. 引言
    • 2. GAN的基本原理
      • 2.1 核心思想
      • 2.2 数学表达
      • 2.3 训练过程
    • 3. GAN的主要变体
      • 3.1 DCGAN (Deep Convolutional GAN)
      • 3.2 CGAN (Conditional GAN)
      • 3.3 CycleGAN
      • 3.4 StyleGAN
      • 3.5 WGAN (Wasserstein GAN)
    • 4. GAN的应用场景
      • 4.1 图像生成与编辑
      • 4.2 文本到图像生成
      • 4.3 视频生成与预测
      • 4.4 数据增强
      • 4.5 异常检测
    • 5. GAN面临的挑战
      • 5.1 训练不稳定性
      • 5.2 评估困难
      • 5.3 计算资源需求高
    • 6. GAN的未来发展趋势
      • 6.1 与其他技术的融合
      • 6.2 可解释性研究
      • 6.3 低资源环境下的GAN
      • 6.4 多模态GAN
    • 7. 结论
    • 参考资料

1. 引言

生成对抗网络(Generative Adversarial Networks,简称GAN)自2014年由Ian Goodfellow等人提出以来,已经成为深度学习领域最具创新性和影响力的技术之一。GAN是一种生成模型,通过两个神经网络的“对抗”过程来生成逼真的数据,在图像生成风格迁移图像修复等多个领域展现出惊人的能力。本文将介绍GAN的基本原理、主要变体、应用场景以及未来发展趋势。

P.S. 关于另一种生成模型——扩散模型(Diffusion Model)的介绍可以参考我的另一篇文章:扩散模型(Diffusion Model)详解:原理、应用与当前进展。

2. GAN的基本原理

2.1 核心思想

GAN的核心思想可以类比为"造假者"与"鉴定者"之间的博弈:

  • 生成器(Generator):相当于造假者试图生成逼真的假数据,它接收一个随机的噪声 z z z,通过这个噪声生成图片,记作 G ( z ) G(z) G(z)
  • 判别器(Discriminator):相当于鉴定者,试图区分真实数据和生成的假数据,它的输入参数是 x x x x x x代表一张图片,它的输出 D ( x ) D(x) D(x)代表 x x x为真实图片的概率——如果为 1 1 1,就代表100%是“真实的图片”;而如果输出为 0 0 0,就代表它认为 x x x不可能是“真实的图片”。

两个网络通过对抗训练不断提升自己的能力:生成器努力生成更逼真的数据以欺骗判别器,判别器则努力提高自己的鉴别能力。这种两个网络 “魔高一尺,道高一丈” 的 内卷 对抗过程最终使得生成器能够产生高质量的、接近真实分布的数据。
这种博弈的最终结果是:在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。

举个例子:可以用GAN生成动漫风格的人物头像:具体做法可以参考这篇文章中的介绍内容:GAN学习指南:从原理入门到制作生成Demo,在这里我简单介绍一下这个例子(这个例子来源于这个项目:Chainerで顔イラストの自動生成),帮助大家更好的理解GAN的工作原理。
在这个例子中,“真实的图片”相当于是合乎要求的动漫风格的人物头像图片。
第1个epoch跑完,生成器生成的影像只有一点隐隐约约的动漫人物头像的轮廓就可以骗过判别器了:
第1个epoch跑完生成器的生成内容
于是判别器更新参数,这样生成器如果按照同样的参数生成的影像就无法骗过判别器了。于是生成器也更新参数,生成越来越“好”(与GT差距更小)的图片(下面各图依次是第5、10、200、300个epoch跑完生成器的生成内容):
第5个epoch跑完生成器的生成内容
第10个epoch跑完生成器的生成内容
第200个epoch跑完生成器的生成内容
第300个epoch跑完生成器的生成内容

2.2 数学表达

从数学角度看,GAN的训练过程可以表示为一个极小极大博弈(minimax game):

GAN的公式表达

其中:

  • G G G是生成器网络
  • D D D是判别器网络
  • p d a t a p_{data} pdata是真实数据分布
  • p z p_z pz是随机噪声的先验分布
  • G ( z ) G(z) G(z)是由生成器从噪声 z z z生成的数据
  • D ( x ) D(x) D(x)表示判别器认为 x x x是真实数据的概率

2.3 训练过程

GAN的训练通常包括以下步骤:

  1. 固定生成器G,训练判别器D以最大化目标函数。

判别器 D D D的目的: D ( x ) D(x) D(x)表示 D D D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于 D D D来说,这个值越接近1越好)。 D ( G ( z ) ) D(G(z)) D(G(z)) D D D网络判断 G G G生成的图片(我们认为 G G G生成的“不是真实的图像”,这样就可以“激励” G G G生成的图像与“真实的图像”越来越接近)的为“真实”的概率,因此 D D D的能力越强, D ( x ) D(x) D(x)应该越大, D ( G ( x ) ) D(G(x)) D(G(x))应该越小,这时 V ( D , G ) V(D,G) V(D,G)应变大。因此可以看到公式的的最前面的记号是 m a x D max_D maxD

  1. 固定判别器D,训练生成器G以最小化目标函数。

生成器 G G G的目的: D ( G ( z ) ) D(G(z)) D(G(z)) D D D网络判断 G G G生成的图片的是否真实的概率, G G G希望自己生成的图片“越接近真实越好”。也就是说, G G G希望 D ( G ( z ) ) D(G(z)) D(G(z))尽可能得大,这时目标函数 V ( D , G ) V(D,G) V(D,G)会变小。因此可以看到公式的的最前面的记号是 m i n G min_G minG

  1. 反复交替上述两个步骤,直到达到平衡状态。

在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此 D ( G ( z ) ) = 0.5 D(G(z)) = 0.5 D(G(z))=0.5

用随机梯度下降法训练D和G的算法为:
随机梯度下降法训练D和G的算法
请注意红框部分:
第一步训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending);
第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。
上述两步训练过程交替进行。

注:本节所述方法基于GAN的开山之作:Goodfellow, I., et al. (2014). Generative Adversarial Networks. NIPS.,并参考了这篇文章:GAN学习指南:从原理入门到制作生成Demo 当中的讲解。

3. GAN的主要变体

3.1 DCGAN (Deep Convolutional GAN)

DCGAN将卷积神经网络引入GAN架构,使其更适合处理图像数据,并提高了训练稳定性。
DCGAN中的G网络示意,相等于普通CNN的逆过程
DCGAN的G和D用了两个卷积神经网络(CNN),其中的G网络相当于普通CNN的逆过程,同时对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:

  • 取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。
  • 在D和G中均使用batch normalization
  • 去掉FC层,使网络变为全卷积网络
  • G网络中使用ReLU作为激活函数,最后一层使用tanh作为激活函数
  • D网络中使用LeakyReLU作为激活函数

DCGAN原文:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 。

3.2 CGAN (Conditional GAN)

条件GAN通过引入额外的条件信息(如类别标签),使生成器能够生成特定类别的数据。

3.3 CycleGAN

CycleGAN实现了不需要配对数据的图像到图像的转换,如将照片转换为艺术画风格。

3.4 StyleGAN

StyleGAN系列通过引入自适应实例归一化和风格混合等技术,实现了高分辨率、可控的图像生成。

3.5 WGAN (Wasserstein GAN)

WGAN使用Wasserstein距离代替JS散度,解决了原始GAN训练不稳定和模式崩溃的问题。

4. GAN的应用场景

4.1 图像生成与编辑

  • 高清图像生成
  • 图像风格迁移
  • 图像修复与超分辨率重建
  • 图像编辑与属性操作

4.2 文本到图像生成

结合自然语言处理技术,根据文本描述生成相应的图像。

4.3 视频生成与预测

生成连续的视频帧或预测视频的未来帧。

4.4 数据增强

为机器学习任务生成额外的训练数据,提高模型的泛化能力。

4.5 异常检测

通过学习正常数据的分布,检测出异常样本。

5. GAN面临的挑战

5.1 训练不稳定性

GAN的训练过程容易出现模式崩溃、梯度消失等问题。

5.2 评估困难

缺乏统一的、客观的评估指标来衡量生成结果的质量。

5.3 计算资源需求高

高质量GAN模型通常需要大量的计算资源和训练时间。

6. GAN的未来发展趋势

6.1 与其他技术的融合

与强化学习、自监督学习等技术的结合,拓展应用场景。

6.2 可解释性研究

提高GAN内部机制的可解释性,理解生成过程的本质。

6.3 低资源环境下的GAN

开发更高效的GAN架构,降低训练和推理的资源需求。

6.4 多模态GAN

处理跨多种模态(图像、文本、音频等)的生成任务。

7. 结论

GAN作为深度学习领域的重要创新,不仅在学术界引起了广泛关注,也在工业界找到了丰富的应用场景。尽管面临一些挑战,但随着技术的不断进步,GAN及其变体将继续在人工智能领域发挥重要作用,推动生成模型的发展。

参考资料

  1. Goodfellow, I., et al. (2014). Generative Adversarial Networks. NIPS.
    【GAN开山之作】
  2. Radford, A., et al. (2015). Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks.
    【DCGAN】
  3. Arjovsky, M., et al. (2017). Wasserstein GAN.
  4. Zhu, J.-Y., et al. (2017). Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks.
  5. Karras, T., et al. (2019). A Style-Based Generator Architecture for Generative Adversarial Networks.

希望这篇文章对你有所帮助!如果你想要更详细地了解某个特定的GAN变体或应用场景,可以告诉我,我可以为你提供更深入的内容。

相关文章:

【深度学习】GAN生成对抗网络:原理、应用与发展

GAN生成对抗网络:原理、应用与发展 文章目录 GAN生成对抗网络:原理、应用与发展1. 引言2. GAN的基本原理2.1 核心思想2.2 数学表达2.3 训练过程 3. GAN的主要变体3.1 DCGAN (Deep Convolutional GAN)3.2 CGAN (Conditional GAN)3.3 CycleGAN3.4 StyleGAN…...

LINUX基础 [三] - 进程创建

目录 前言 进程创建的初次了解(创建进程的原理) 什么是fork函数? 初识fork函数 写时拷贝 fork函数存在的意义 fork调用失败的原因 进程终止 运行完毕结果不正确 main函数返回 库函数函数exit 系统调用接口_exit 进程异常终止 进…...

AI比人脑更强,因为被植入思维模型【24】替身决策思维模型

定义 替身决策思维模型是一种在面对复杂问题或决策情境时,通过将自己代入到不同的角色(即“替身”)中,从这些角色的视角出发去思考、分析和做出决策的思维方式。这种思维模型要求决策者暂时摆脱自身固有的思维定式和立场&#xf…...

数据清洗:基于python抽取jsonl文件数据字段

基于python抽取目录下所有“jsonl”格式文件。遍历文件内某个字段进行抽取并合并。 import os import json import time from tqdm import tqdm # 需要先安装:pip install tqdmdef process_files():# 设置目录路径dir_path r"D:\daku\关键词识别\1623-00000…...

spring后端处理各种请求

在Spring MVC中处理JSON请求和返回JSON消息的步骤如下&#xff1a; 1. 添加依赖 确保项目中包含处理JSON的库&#xff0c;如Jackson。 Maven配置&#xff08;pom.xml&#xff09;&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId>…...

企业级部署zabbix分布式监控系统

目录 一、Zabbix分布式监控系统介绍 1.什么是“Zabbix” 2.Zabbix分布式监控系统的特点 3.Zabbix分布式监控系统的原理 4.Zabbix分布式监控系统的运用 5. Zabbix分布式监控系统的部署顺序 二、搭建 1.设备硬件配置参考 2.zabbix分布式监控系统各节点设备名称和IP规划 …...

OkHttp 的证书设置

在 Android 开发中&#xff0c;通过 OkHttp 自定义 SSLSocketFactory 和 X509TrustManager 可以有效增强 HTTPS 通信的安全性&#xff0c;防止中间人攻击&#xff08;如抓包工具 Charles/Fiddler 的拦截&#xff09;。以下是实现防抓包的关键技术方案&#xff1a; 一、Okhttp设…...

ETL:数据清洗、规范化和聚合的重要性

在当今这个数据呈爆炸式增长的时代&#xff0c;数据已成为企业最为宝贵的资产之一。然而&#xff0c;数据的海量增长也伴随着诸多问题&#xff0c;如数据来源多样、结构复杂以及质量问题等&#xff0c;这些问题严重阻碍了数据的有效处理与深度分析。在此背景下&#xff0c;ETL&…...

蓝桥杯备考:图的遍历

这道题乍一看好像没什么不对的&#xff0c;但是&#xff01;但是&#xff01;结点最大可以到10的5次方&#xff01;&#xff01;&#xff01;我们递归的时间复杂度是很高的&#xff0c;我们正常遍历是肯定通过不了的&#xff0c;不信的话我们试一下 #include <iostream>…...

【多媒体交互】Unity Kinect实现UI控件的点击

在Unity中&#xff0c;通过Kinect实现UI控件的点击功能&#xff0c;主要涉及手部追踪、坐标映射和手势检测三个核心环节。 实现步骤 初始化Kinect与关节追踪 使用KinectManager获取用户ID和手部关节点&#xff08;如JointType.HandLeft&#xff09;的坐标。 long userId _…...

QinQ项展 VLAN 空间

随着以太网技术在网络中的大量部署&#xff0c;利用 VLAN 对用户进行隔离和标识受到很大限制。因为 IEEE802.1Q 中定义的 VLAN Tag 域只有 12 个比特&#xff0c;仅能表示 4096 个 VLAN&#xff0c;无法满足城域以太网中标识大量用户的需求&#xff0c;于是 QinQ 技术应运而生。…...

OBS虚拟背景深度解析:无需绿幕也能打造专业教学视频(附插件对比)

想要录制教学视频却苦于背景杂乱&#xff1f;本文将手把手教你用OBS实现专业级虚拟背景效果&#xff0c;无需绿幕也能轻松营造沉浸式教学场景。文末附6个提升画面质感的免费背景资源&#xff01; 一、虚拟背景的核心价值&#xff1a;从「教师宿舍」到「虚拟讲堂」的蜕变 我们调…...

26考研——图(6)

408答疑 文章目录 一、图的基本概念二、图的存储三、图的遍历四、图的应用五、图的代码实操六、参考资料鲍鱼科技课件26王道考研书 七、总结图的存储结构邻接矩阵邻接表 图的遍历图的相关概念完全图和连通图图的连通性 关键路径学习建议 一、图的基本概念 文章链接: link 二、…...

Redis常用数据类型深度解析:从理论到最佳实践

Redis常用数据类型深度解析&#xff1a;从理论到最佳实践 一、引言二、Redis数据类型全景图三、核心数据类型详解**1. String&#xff08;字符串&#xff09;****2. Hash&#xff08;哈希表&#xff09;****3. List&#xff08;列表&#xff09;****4. Set&#xff08;集合&…...

DeepSeek-V3 模型更新,加量不加价

DeepSeek V3-0324 是 DeepSeek V3 系列的重要升级版本&#xff0c;虽然被官方称为「小版本迭代」&#xff0c;但其在技术能力、开源策略和用户体验上均有显著提升。以下是主要新特性功能和核心变化&#xff1a; 推理能力 基准测试性能显著提升&#xff1a; MMLU-Pro&#xff1…...

Vue项目的 Sass 全局基础样式格式化方案,包含常见元素的样式重置

步骤 1&#xff1a;创建全局样式文件 在项目中创建文件&#xff1a;src/assets/scss/global.scss 内容如下&#xff1a; // 全局盒模型设定&#xff08;边框计入宽高&#xff09; *, *::before, *::after {box-sizing: border-box;margin: 0;padding: 0; }// 基础元素样式重置…...

【Spring篇】Spring的生命周期

一、Bean 生命周期的核心阶段 1. 实例化&#xff08;Instantiation&#xff09; • 触发时机&#xff1a;容器启动时&#xff08;单例 Bean&#xff09;或请求时&#xff08;原型 Bean&#xff09;。 • 实现方式&#xff1a; 通过反射&#xff08;Class.newInstance() 或构造…...

Qt中通过QLabel实时显示图像

Qt中的QLabel控件用于显示文本或图像&#xff0c;不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…...

[数据结构]1.时间复杂度和空间复杂度

这里写目录标题 1. 算法复杂度2. 时间复杂度2.1 执行次数2.2 大O渐进表示法2.3 常见时间复杂度计算eg1eg2eg3eg4eg5eg6eg7eg8eg9 3. 空间复杂度eg1eg2eg3eg4 4. 常见复杂度对比5. 复杂度练习eg1 1. 算法复杂度 衡量一个算法的好坏&#xff0c;一般是从时间空间两个维度来衡量&…...

【每日算法】Day 6-1:哈希表从入门到实战——高频算法题(C++实现)

摘要 &#xff1a;掌握高频数据结构&#xff01;今日深入解析哈希表的核心原理与设计实现&#xff0c;结合冲突解决策略与大厂高频真题&#xff0c;彻底掌握O(1)时间复杂度的数据访问技术。 一、哈希表核心思想 哈希表&#xff08;Hash Table&#xff09; 是一种基于键值对的…...

物联网平台架构介绍

物联网是连接物理设备、传感器、软件等的网络系统&#xff0c;使设备能够自动收集、交换和处理数据&#xff0c;实现智能化识别、定位、跟踪、监控和管理。随着物联网技术的飞速发展&#xff0c;物联网平台架构的设计变得至关重要&#xff0c;它决定了物联网系统的性能、可扩展…...

TCP/IP三次握手的过程,为什么要3次?

一&#xff1a;过程 第一次&#xff08;SYN&#xff09;&#xff1a; 客户端发送一个带有SYN标志的TCP报文段给服务器&#xff0c;设置SYN1&#xff0c;并携带初始序列号Seqx&#xff08;随机值&#xff09;&#xff0c;进入SYN_SENT状态。等待服务器相应。 第二次&#xff08…...

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(四)

一、前言 语音转文本技术具有重要价值。它能提高信息记录和处理的效率,使人们可以快速将语音内容转换为可编辑、可存储的文本形式,方便后续查阅和分析。在教育领域,可帮助学生更好地记录课堂重点;在办公场景中,能简化会议记录工作。同时,该技术也为残障人士提供了便利,让…...

Qt开发:QInputDialog的使用

文章目录 一、QInputDialog的介绍二、 QInputDialog的基本用法三、使用 QInputDialog的实例四、QInputDialog的信号与槽 一、QInputDialog的介绍 QInputDialog 是 Qt 提供的一个对话框类&#xff0c;用于获取用户输入的文本、整数或浮点数。它提供了简单易用的静态方法和可定制…...

【系统架构设计师】软件质量管理

目录 1. 说明2. 软件质量保证2.1 说明2.2 质量保证的主要目标2.3 目标2.4 主要作用2.5 主要任务 3. 软件质量保证3.1 说明3.2 ISO 90003.3 CMM 4. 例题4.1 例题1 1. 说明 1.软件质量就是软件与明确地和隐含地定义的需求相一致的程度&#xff0c;更具体地说&#xff0c;软件质量…...

医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;医院管理 &#xff08;3&#xff09;医生管理 &#xf…...

UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法

有些差异 这么牛逼的引擎&#xff0c;居然有这种入门级别的问题&#xff0c;一触发清理&#xff0c;大概率(80%)会崩溃 无论虚幻5还是UE4都有这个问题&#xff0c;挺烦人的 实在忍不了了&#xff0c;这次&#xff0c;今天 就想问问有什么好的处理方法么&#xff1f;&#x…...

javaSE.多维数组

1 final 引用类型 final int[] arr 继承Object 的引用类型&#xff0c;不能改变引用的对象 存的其实是引用 数组类型数组&#xff0c;其实存的是引用 int [][] arr new int[][] { {1,2,3}, {4,5,6} };int [] a arr[0]; int [] b arr[1];...

Linux输入系统应用编程

什么是输入系统 Linux 输入系统是处理用户输入设备(如键盘、鼠标、触摸屏、游戏手柄等)的软件架构。在应用编程层面&#xff0c;它提供了与这些输入设备交互的接口。 主要组成部分 输入设备驱动层&#xff1a;直接与硬件交互的驱动程序 输入核心层&#xff1a;内核中的输入子…...

leetcode11.盛水最多的容器

双指针问题&#xff0c;指向前后边界&#xff0c;每次只移动高度较小的那个 class Solution { public:int maxArea(vector<int>& height) {int leftIndex0,rightIndexheight.size()-1;int result0;while(leftIndex<rightIndex){resultmax(result,(rightIndex-lef…...

ngx_http_index_loc_conf_t

定义在 src\http\modules\ngx_http_index_module.c typedef struct {ngx_array_t *indices; /* array of ngx_http_index_t */size_t max_index_len; } ngx_http_index_loc_conf_t; ngx_http_index_loc_conf_t 是 Nginx 中用于管理 index 指…...

[C++面试] 你了解视图吗?

一、入门 1、什么是 C 视图&#xff08;View&#xff09;&#xff1f;请简要说明其概念和用途 它提供了对序列&#xff08;如数组、容器等&#xff09;的非拥有性、只读或可写的访问。&#xff08;就像是个透明的放大镜&#xff0c;它能让你去看一组数据&#xff0c;但它自己…...

NetMizer-日志管理系统-远程命令执行漏洞挖掘

漏洞描述&#xff1a;NetMizer 日志管理系统 cmd.php中存在远程命令执行漏洞&#xff0c;攻击者通过传入 cmd参数即可命令执行 1.fofa搜素语句 title"NetMizer 日志管理系统" 2.漏洞验证 网站页面 验证POC /data/manage/cmd.php?cmdid...

UDP通信实现

一、Socket简介&#xff08;套接字) TCP/IP 五层网络模型的应用层编程接口称为Socket API, Socket( 套接字 ) &#xff0c;它是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换…...

Browserlist 使用指南:应对浏览器兼容性问题的解决方案

前言 在前端开发中&#xff0c;我们经常需要处理各种不同的浏览器兼容性问题。每个浏览器的版本众多&#xff0c;处理这些问题可能会让人感到头疼。幸运的是&#xff0c;有一个名为 Browserlist 的工具可以大大简化这项工作。本文将介绍 Browserlist 的作用和使用方法&#xf…...

[蓝桥杯 2023 省 A] 异或和之和

题目来自洛谷网站&#xff1a; 暴力思路&#xff1a; 先进性预处理&#xff0c;找到每个点位置的前缀异或和&#xff0c;在枚举区间。 暴力代码&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 1e520;int n; int arr[N…...

ABC391题解

A 算法标签: 模拟 #include <iostream> #include <algorithm> #include <cstring> #include <map>using namespace std;const int N 8; map<string, string> mp;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);mp.insert({…...

React - LineChart组件编写(用于查看每日流水图表)

一、简单版本 LineChart.tsx // src/component/LineChart/LineChart.tsx import React, {useEffect,useRef,useImperativeHandle,forwardRef,useMemo,useCallback, } from react; import * as echarts from echarts/core; import type { ComposeOption } from echarts/core; …...

什么情况下需要使用二级指针

当你需要一个函数修改另一个函数中的指针变量时&#xff08;改变指针变量的指向&#xff09;&#xff0c;你必须传递该指针的地址&#xff0c;也就是"指向指针的指针"。这是C语言中实现"引用传递"效果的标准方式。 函数A中声明了一个结构体指针变量mys&am…...

动态规划(8.下降路径最小和(medium))

题目链接&#xff1a;931. 下降路径最小和 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 关于这⼀类题&#xff0c;由于我们做过类似的&#xff0c;因此「状态表示」以及「状态转移」是比较容易分析出来的。 比较难的地方可能就是对于「边界条件」的处理。 1. 状…...

自动插入分号机制

&#x1f4dc; JS 自动分号插入(ASI)机制详解 自动分号插入(Automatic Semicolon Insertion)是 JavaScript 中一个独特而重要的特性&#xff0c;它影响着代码的解析和执行方式。 &#x1f31f; 核心概念速览 ASI 引擎自动补充分号 当 JavaScript 解析器遇到特定语法情况时&a…...

C语言贪吃蛇实现

When the night gets dark,remember that the Sun is also a star. 当夜幕降临时&#xff0c;请记住太阳也是一颗星星。 ————《去月球海滩篇》 目录 文章目录 一、《贪吃蛇》游戏介绍 二、WIN32部分接口简单介绍 2.1 控制台窗口大小设置 2.2 命令行窗口的名称的变更 2…...

基于数据挖掘的网络入侵检测关键技术研究

标题:基于数据挖掘的网络入侵检测关键技术研究 内容:1.摘要 随着互联网的迅速发展&#xff0c;网络安全问题日益严峻&#xff0c;网络入侵行为对个人、企业和国家的信息安全构成了巨大威胁。本文的目的是研究基于数据挖掘的网络入侵检测关键技术&#xff0c;以提高网络入侵检测…...

git上传大文件到远程仓库中

git 上传大文件报错 上传大文件文件到远程仓库上面&#xff0c;出现错误&#xff08;gitee-100M,github-50M&#xff09; remote: error: File: f422c55c723a183a1944cbec840c0171042c8251 135 MB, exceeds 100.00 MB. 意思是单个文件超过100M导致上传失败。 安装LFS curl…...

计算机网络基础之三种交换技术及其性能分析

一. 交换技术基础 1. 三种交换技术 电路交换&#xff1a;用于电话网络报文交换&#xff1a;用于电报网络分组交换&#xff1a;用于现代计算机网络 2. 人类历史上的通信网络 #mermaid-svg-AeGvrkUbCkicFOIo {font-family:"trebuchet ms",verdana,arial,sans-serif;…...

ANYmal Parkour: Learning Agile Navigation for Quadrupedal Robots

ANYmal Parkour: Learning Agile Navigation for Quadrupedal Robots 研究动机解决方案技术路线感知模块运动模块导航模块补充 实验结果 ANYmal Parkour: Learning Agile Navigation for Quadrupedal Robots 研究动机 行走控制器不能依赖于稳定和周期性的步态&#xff0c;而必…...

【AI学习笔记】AI造神时代的潘式理论与智能进化

背景前摇&#xff1a; 周会分享选题&#xff0c;决定选择这篇华为蓝军部长潘少钦先生所著的文章&#xff0c;原题目为《AI如此强大&#xff0c;我是否要改行&#xff1f;》。选择这篇文章的理由是&#xff0c;其不仅有充实扎实的AI基础知识作为铺垫&#xff0c;更具有独特鲜明…...

CVE-2021-45232未授权接口练习笔记

CVE-2021-45232 是 Apache APISIX Dashboard 中的一个严重权限漏洞&#xff0c;类似于攻击者无需密码即可拿到整个网关系统的“万能钥匙”。攻击者利用此漏洞&#xff0c;可直接操控网关流量转发规则&#xff0c;甚至远程执行代码&#xff0c;引发服务器沦陷。 默认账户密码导致…...

远场分量(平面波角谱)与倏逝波

远场分量&#xff08;平面波角谱&#xff09;与倏逝波的详细解释 在光学和电磁学中&#xff0c;远场分量&#xff08;平面波角谱&#xff09;和倏逝波是描述光场传播特性的两个核心概念&#xff0c;尤其在衍射理论、近场光学和超分辨成像中至关重要。以下是它们的物理意义、数…...

修改Flutter工程中Android项目minSdkVersion配置

Flutter项目开发过程中&#xff0c;根据模板自动生成.android项目&#xff0c;其中app>build.gradle中minSdkVersion的值是19&#xff0c;但是依赖了一个三方库&#xff0c;它的Android sdk 最小版本只支持到21&#xff0c;运行报错如下&#xff1a; 我们可以手动修改.andro…...