【模型压缩+推理加速】知识蒸馏综述解读

知识蒸馏综述解读

  • 论文: https://arxiv.org/abs/2006.05525

最近Deepseek R1的技术报告中,训练部分提到使用了知识蒸馏,就像系统性的看看蒸馏算法的原理。看了很多的博客,很多都没有详细把知识蒸馏系统的讲清楚。我们还是读一下这篇 2021年的综述 “Knowledge Distillation: A Survey” 。虽然这篇文章不是针对大模型的知识蒸馏综述,但可以作为大模型蒸馏学习的入门。

这篇综述写的非常详细,系统性总结了知识蒸馏的很多基础知识,比如:知识的类型、蒸馏方案、师生结构、蒸馏算法。以及还有详细的对比效果,充分说明各种蒸馏算法的优劣。


论文结构:

知识蒸馏综述
├─ 1.Introduction
│  └─ 模型压缩与加速
├─ 2.知识类型
│  ├─ 响应式知识(Soft Targets)
│  ├─ 特征式知识(中间层特征)
│  └─ 关系型知识(样本/层间关系)
├─ 3.训练方案
│  ├─ 离线蒸馏(预训练教师)
│  ├─ 在线蒸馏(联合优化)
│  └─ 自蒸馏(同网络迭代)
├─ 4.教师-学生架构
│  ├─ 简化结构
│  ├─ 量化结构
│  └─ 同构/异构设计
├─ 5.关键算法
│  ├─ 对抗蒸馏(GAN结合)
│  ├─ 多教师蒸馏
│  ├─ 图基蒸馏
│  └─ 数据无蒸馏
├─ 6.性能对比
├─ 7.应用领域
│  ├─ 视觉识别(CIFAR10/100准确率提升0.33%-7.32%)
│  ├─ NLP(BERT压缩)
│  └─ 语音识别(实时性优化)
└─ 8.挑战与未来

也就是对应下图

在这里插入图片描述


1. Introduction

知识蒸馏的定义与发展

起源:Bucilua等 [2] 首次提出模型压缩,通过大模型或集成模型指导小模型训练。 正式提出:Hinton等 [5] 将其命名为“知识蒸馏”,强调通过“暗知识”(如Soft Targets)提升学生模型性能。


2. 知识类型(Knowledge)

知识蒸馏的核心是提取教师模型的知识并迁移到学生模型。如Fig 3 所示,知识类型可以分为响应式知识特征式知识关系型知识三类。

在这里插入图片描述

2.1 响应式知识(Response-Based Knowledge)

在这里插入图片描述

  • 定义:如Fig 4所示,直接模仿教师模型的输出层响应(如分类概率)。
  • 核心方法
    • Soft Targets [5]:通过温度参数 T T T 软化logits,保留类间关联信息。
      p ( z i , T ) = exp ⁡ ( z i / T ) ∑ j exp ⁡ ( z j / T ) p(z_i, T) = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)} p(zi,T)=jexp(zj/T)exp(zi/T)
    • 损失函数:KL散度(式1、3),强制学生输出匹配教师的概率分布。
  • 应用场景:图像分类(如CIFAR10实验中,IRG方法通过响应式知识提升准确率2.33%)、目标检测。
  • 局限性:依赖输出层,忽略中间层的语义信息;仅适用于监督学习。

2.2 特征式知识(Feature-Based Knowledge)

在这里插入图片描述

  • 定义:如Fig 6 所示,利用教师模型中间层的特征表示指导学生学习。
  • 核心方法
    • Fitnets [14]:直接匹配中间层特征(hint layer),使用L2损失。
    • Attention Transfer(AT) [16]:通过注意力图传递知识,适用于深层网络。
    • Feature Distillation(FT) [19]:通过“因子”(factors)简化特征表示。
  • 损失函数
    L F e a D = L F ( Φ t ( f t ( x ) ) , Φ s ( f s ( x ) ) ) L_{FeaD} = \mathcal{L}_F\left(\Phi_t(f_t(x)), \Phi_s(f_s(x))\right) LFeaD=LF(Φt(ft(x)),Φs(fs(x)))
    其中 Φ \Phi Φ 处理特征尺寸差异, L F \mathcal{L}_F LF 包括L2、L1、交叉熵等。
  • 挑战
    • 如何选择hint层(深层特征可能过拟合)。
    • 特征尺寸不匹配时的对齐问题(如ResNet与MobileNet)。

2.3 关系型知识(Relation-Based Knowledge)

在这里插入图片描述

  • 定义:如Fig 7所示,捕捉教师模型中层间关系或样本间的关联。
  • 核心方法
    • FSP矩阵 [17]:通过Gram矩阵建模层间关系,使用Frobenius范数损失。
    • Instance Relation Graph(IRG) [7]:构建样本关系图,保留结构信息。
    • Similarity-Preserving(SP):匹配输入对的激活相似性。
  • 损失函数
    L R e l D = L R 1 ( Ψ t ( f ^ t , f ˇ t ) , Ψ s ( f ^ s , f ˇ s ) ) L_{RelD} = \mathcal{L}_{R^1}\left(\Psi_t(\hat{f}_t, \check{f}_t), \Psi_s(\hat{f}_s, \check{f}_s)\right) LRelD=LR1(Ψt(f^t,fˇt),Ψs(f^s,fˇs))
    其中 Ψ \Psi Ψ 计算特征对的相似性, L R 1 \mathcal{L}_{R^1} LR1 包括EM距离、Huber损失等。
  • 挑战
    • 图结构设计的复杂性(如如何定义节点和边)。
    • 计算成本高(需处理大量样本对)。

3. 蒸馏方案(Distillation Schemes)

在这里插入图片描述

Fig 8 展示了知识蒸馏中三种典型的训练方案,对应第三章中提到的离线蒸馏、在线蒸馏和自蒸馏:

  1. 离线蒸馏
    教师模型预先训练完成后固定,学生模型通过模仿教师的输出(如软标签或中间特征)进行学习。图示中教师为红色(已训练),学生为黄色(待训练),知识单向传递。该方案简单易行,但可能因师生容量差距导致知识传递效率受限。

  2. 在线蒸馏
    教师与学生同时训练,形成端到端框架。教师通常由学生的集合或动态更新的模型构成,如多网络协作学习。图示中两者均为黄色,体现同步优化。此方案通过相互监督提升性能,但需平衡教师容量与训练效率。

  3. 自蒸馏
    同一模型的不同部分或阶段间进行知识传递。例如,利用深层特征监督浅层网络,或不同训练阶段的模型状态互导。图示中教师与学生为同一模型(黄色),强调自我优化。该方案无需外部教师,但依赖模型内部结构设计。

这三种方案在图示中通过颜色和箭头区分:红色代表预训练完成的教师,黄色代表训练中的模型,箭头方向表示知识传递路径。离线蒸馏为单向传递,在线蒸馏为双向互动,自蒸馏则为模型内部循环。


4. 师生结构(Teacher-Student Architecture)

在这里插入图片描述

如图Fig 9, 展示了知识蒸馏中教师模型与学生模型之间的典型架构关系,主要分为四种类型:

  1. 简化结构
    学生模型是教师模型的简化版本,通过减少网络层数或通道数来降低复杂度,同时保留核心功能。例如,将深层网络缩短为浅层网络,或减少每层的神经元数量。

  2. 量化结构
    学生模型与教师模型结构相同,但参数被量化(如降低浮点精度),从而减少存储和计算需求,同时通过知识蒸馏保持性能。

  3. 相同结构
    学生模型与教师模型架构完全一致,常见于在线蒸馏或自蒸馏场景,通过协作学习或自我优化提升性能。

  4. 小型优化结构
    学生模型采用高效的基础操作(如深度可分离卷积)或通过神经架构搜索(NAS)优化的全局结构,以在有限资源下最大化性能。

这些架构设计旨在弥合教师与学生之间的容量差距,确保知识有效传递。例如,简化结构适用于离线蒸馏,量化结构结合模型压缩,相同结构支持在线协作,而优化结构则通过算法设计提升效率。架构选择需平衡模型复杂度与知识传递效果,以适应不同应用场景的需求。


5. 蒸馏算法

本章详细介绍知识蒸馏的核心算法,按技术路线分为对抗蒸馏多教师蒸馏跨模态蒸馏等九类,分析其原理、方法及应用场景。

5.1 对抗蒸馏(Adversarial Distillation)

在这里插入图片描述

如Fig 10 所示,结合生成对抗网络(GAN)增强知识迁移,解决数据不足或噪声问题。

  1. 生成对抗网络生成数据

    • 结构:使用生成器(G)生成合成数据,用于增强训练集或直接训练学生模型。教师模型可能作为判别器(D)指导生成过程。
    • 应用:缓解数据不足问题,生成更具挑战性的样本以提升学生鲁棒性。
  2. 判别器区分师生输出

    • 结构:引入判别器(D)区分学生(S)和教师(T)的输出(如logits或特征),迫使学生模仿教师分布。
    • 目标:通过对抗训练缩小师生模型的分布差异,增强知识传递效果。
  3. 在线联合优化

    • 结构:教师与学生同时训练,判别器监督两者的协同学习,形成动态优化循环。
    • 优势:避免离线蒸馏的静态知识传递,提升适应性和泛化能力。

5.2 多教师蒸馏(Multi-Teacher Distillation)

在这里插入图片描述

Fig 11,展示了集成多个教师模型的知识,提升学生泛化性。该框架利用多个教师模型的知识训练学生:

  1. 知识整合方式

    • 平均响应:直接平均多个教师的logits作为监督信号。
    • 特征融合:结合不同教师的中间特征或关系知识。
    • 动态选择:按迭代或样本动态选择教师知识(如随机选取教师)。
  2. 优势

    • 多源知识互补,提升学生模型的多样性和鲁棒性。
    • 适用于跨领域、跨模态或多任务场景(如多语言翻译)。

5.3 跨模态蒸馏(Cross-Modal Distillation)

在这里插入图片描述

迁移不同模态(如图像、文本)的知识,解决模态缺失问题。该框架实现不同模态间的知识迁移:

  1. 典型场景

    • 输入模态转换:例如从RGB图像(教师)到深度图像(学生)。
    • 输出模态转换:如从文本模态(教师)到视觉模态(学生)。
  2. 核心机制

    • 利用配对样本(如同步的RGB和深度数据)传递标注信息。
    • 通过对抗学习或特征对齐弥合模态差异,确保知识有效迁移。

5.4 图基蒸馏(Graph-Based Distillation)

在这里插入图片描述

通过图结构建模特征或样本间关系。该框架通过图结构建模数据关系以传递知识:

  1. 图的构建方式

    • 特征图关系:使用Gram矩阵或注意力机制建模层间特征关联。
    • 样本关系:通过相似度矩阵或图神经网络(GNN)捕捉样本间的结构信息。
  2. 应用

    • 保持数据的流形结构,适用于图像分类、动作识别等需保留关系的任务。

5.6 数据无蒸馏(Data-Free Distillation)

在这里插入图片描述

在无真实数据情况下,基于教师特征生成合成数据。该框架在无真实数据时生成合成数据进行知识传递:

  1. 数据生成方法

    • GAN生成:通过GAN生成合成样本,利用教师模型的特征分布指导生成。
    • 特征重构:基于教师的层激活或谱信息重建输入数据。
  2. 挑战

    • 生成数据的多样性和质量直接影响学生模型的泛化能力。

5.7 量化蒸馏(Quantized Distillation)

在这里插入图片描述

结合模型量化与知识蒸馏,降低计算成本。该框架结合量化技术压缩模型:

  1. 量化与蒸馏结合

    • 教师量化:将高精度教师模型量化(如32位→8位),作为学生的监督源。
    • 学生量化:训练低精度学生模型,通过蒸馏保留教师的知识。
  2. 优势

    • 减少模型存储和计算需求,同时通过知识蒸馏补偿量化带来的精度损失。

6. 性能对比

本章通过实验对比不同知识蒸馏方法在CIFAR-10和CIFAR-100数据集上的性能,验证蒸馏策略的有效性,并总结关键观察。

6.1 实验设置

  • 数据集
    • CIFAR-10:10类,5万训练/1万测试图像(32×32)。
    • CIFAR-100:100类,数据规模同上。
  • 评估指标:分类准确率(%)。
  • 对比方法:涵盖离线、在线、自蒸馏及不同知识类型的典型算法(如FSP、DML、IRG等)。

6.2 主要实验结果

第六章强调知识蒸馏的核心要素——知识类型(响应型、特征型、关系型)与蒸馏策略(离线、在线、自蒸馏)的协同作用。Table 5 的结果验证了这一框架:

CIFAR-10 性能对比

在这里插入图片描述

  1. 离线蒸馏(响应型 + 特征型知识)

    • 代表方法:FSP(关系型)、IRG(关系型)、SP(特征型)。
    • 表现:轻量化模型(如 ResNet8、ResNet20-x0.5)的准确率提升显著(如 IRG 提升 2.33%)。
    • 第六章关联:关系型知识(如特征间的空间关系、层间依赖)在压缩模型中尤为关键,因其保留了数据的结构信息,弥补了师生容量差距。
  2. 在线蒸馏(动态知识交互)

    • 代表方法:DML(响应型)、PCL(响应型)。
    • 表现:师生同步优化使 ResNet32、ResNet110 的准确率进一步提升(如 PCL 提升 0.62%)。
    • 第六章关联:在线策略通过动态调整教师(如多学生协作或迭代更新的教师),充分利用响应型知识的实时反馈,避免离线蒸馏的静态局限性。
  3. 自蒸馏(内部知识迁移)

    • 代表方法:Xu & Liu(特征型)。
    • 表现:ResNet32 提升 0.90%,依赖模型内部深层特征对浅层的监督。
    • 第六章关联:自蒸馏通过“温故知新”机制(如浅层学习基础特征,深层学习抽象知识),实现模型自优化,无需外部教师。
CIFAR-100 性能对比

在这里插入图片描述

CIFAR100 的复杂性(100 类)凸显了知识类型与任务适配的重要性,第六章强调多知识融合策略创新

  1. 离线蒸馏(多知识融合)

    • 代表方法:RKD(关系型 + 特征型)、SemCKD(特征型)。
    • 表现:复杂任务中,多知识融合(如 RKD 对 VGG11 提升 3.40%)优于单一知识类型,因关系型知识捕捉类间差异,特征型知识保留层次表征。
    • 第六章关联:第六章指出,复杂任务需结合多层次知识(如浅层的低级特征与深层的语义关系),RKD 等方法通过联合优化特征距离与关系矩阵,提升泛化能力。
  2. 在线蒸馏(动态适应类间差异)

    • 代表方法:DCM(响应型)、KDCL(响应型 + 特征型)。
    • 表现:MobileNet 在 DCM 下提升 4.87%,超越离线方法。
    • 第六章关联:在线蒸馏的动态协作(如师生互导)更适应多类场景的分布变化,通过实时调整知识传递路径,优化类间边界的学习。
  3. 自蒸馏(结构设计驱动)

    • 代表方法:Tf-KD(特征型)、CS-KD(关系型)。
    • 表现:ResNet18 提升 2.72%,依赖模型内部的层次化监督(如跨阶段特征对齐)。
    • 第六章关联:自蒸馏的有效性依赖架构设计(如第六章提到的 ABF 融合模块、HCL 层次对比损失),通过结构化知识传递(如空间权重分配、多尺度特征对齐)增强模型深度表达。

7. Applications

  • 计算机视觉:知识蒸馏用于压缩复杂视觉模型(如目标检测),使其适配边缘设备(如无人机、安全摄像头)的实时推理需求。
  • 自然语言处理(NLP):通过蒸馏生成轻量级NLP模型(如文本分类、翻译),支持聊天机器人、移动设备等实时场景的高效部署。
  • 边缘计算:轻量化模型经蒸馏后可在资源受限的边缘设备(如物联网终端)运行,支撑实时视频分析、图像处理等边缘智能应用。
  • 推荐系统:蒸馏技术优化推荐模型的计算效率,使其更灵活地分布式部署,基于用户行为数据提供个性化服务。
  • 异常检测:构建轻量级蒸馏模型识别网络流量或用户行为中的异常模式,提升网络安全威胁检测的速度与能效。
  • 数据安全:结合知识蒸馏与图谱技术,强化敏感内容识别、异常行为监测,应用于数据防护、态势感知等安全解决方案。
  • 多模态与跨任务迁移:通过原型引导或特征增强,实现跨模态(如图像-文本)或跨任务(如分类-检测)的知识迁移,拓展模型泛化能力。
  • 量子计算:探索蒸馏技术优化量子模型表示,提升量子硬件上的算法运行效率,推动量子计算的实际应用落地。

8. 挑战和方向

核心挑战
  1. 师生能力鸿沟:教师模型难以完美捕捉数据分布,学生因容量限制导致知识传递效率受限。
  2. 数据偏差放大:生成数据质量依赖教师与种子数据,易引入偏差或模式单一问题。
  3. 隐私与通信瓶颈:联邦学习中需平衡隐私保护与通信效率,异构设备差异加剧技术难度。
  4. 计算存储成本:大型教师模型训练开销大,学生模型压缩(如量化)易损精度。
  5. 知识适配性不足:不同任务(如图像/文本)需定制知识类型(响应/特征/关系),通用方法缺失。
  6. 可解释性与伦理:学生继承黑箱决策逻辑,缺乏透明度,且需约束偏好/价值对齐风险。
未来方向
  1. 抽象知识迁移:转向推理模式、偏好对齐等高层知识,适配LLM等复杂模型。
  2. 自监督蒸馏创新:结合自监督学习,利用无标签数据提升泛化,降低标注依赖。
  3. 多模态跨领域融合:突破模态差异,实现图像-文本-语音等多源知识协同迁移。
  4. 联邦隐私蒸馏:设计隐私保护协议(如差分隐私),优化分布式场景下的知识交互。
  5. 边缘智能优化:结合量化/剪枝,开发轻量化框架,适配物联网设备实时推理。
  6. 强化学习结合:引入奖励模型(如DPO、RRHF),优化生成质量与对齐性,拓展对话系统应用。
  7. 可解释性增强:设计可视化机制(如特征重要性传播),提升模型透明度与伦理合规。
  8. 硬件协同设计:针对专用硬件(TPU、量子计算)优化蒸馏策略,提升计算效率。

引用

[1] Bashivan, P., et al. (2019). Teacher-Guided Neural Architecture Search. ICCV.

[2] Bucilua, C., et al. (2006). Model Compression. SIGKDD.

[3] Chung, J., et al. (2020). Adversarial Knowledge Distillation. NeurIPS.

[4] Gou, J., et al. (2020). Knowledge Distillation: A Survey. IEEE TPAMI.

[5] Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the Knowledge in a Neural Network. NIPS Workshop.

[6] Jiao, X., et al. (2020). TinyBERT: Distilling BERT for Natural Language Understanding. EMNLP.

[7] Liu, X., et al. (2019). Instance Relation Graph for Knowledge Distillation. CVPR.

[8] Polino, A., et al. (2018). Model Compression via Distillation and Quantization. ICLR.

[9] Mirzadeh, A., et al. (2020). Are We Distilling the Right Knowledge? ICML.

[10] Park, D., & Kwak, N. (2020). Multi-Teacher Knowledge Distillation with Representation Calibration. CVPR.

[11] Phuong, H., & Lampert, C. H. (2019). Understanding Knowledge Distillation via Neural Tangent Kernel. ICLR.

[12] Tang, J., & Wang, D. (2018). Ranking Distillation for Top-N Recommendation. KDD.

[13] Yuan, L., et al. (2020). Knowledge Distillation with Self-Supervision. CVPR.

[14] Yim, J., et al. (2017). A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning. CVPR.

[15] Yu, X., et al. (2017). On Compressing Deep Models by Low Rank and Sparse Decomposition. CVPR.

[16] Zagoruyko, S., & Komodakis, N. (2017). Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer. ICLR.

[17] Yim, J., et al. (2017). A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning. CVPR.

[18] Zhang, Y., et al. (2018). Deep Mutual Learning. CVPR.

[19] Kim, J., Park, S. & Kwak, N. (2018). Paraphrasing complex network: Network compression via factor transfer. In: NeurIPS.

[20] Zhang, Y., Xiang, T., Hospedales, T. M. & Lu, H.(2018b). Deep mutual learning. In: CVPR.

[21] Zhang, L., Song, J., Gao, A., Chen, J., Bao, C. &Ma, K. (2019b). Be your own teacher: Improve the performance of convolutional neural networks via self distillation. In: ICCV.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivo 湖仓架构的性能提升之旅

作者:郭小龙 vivo互联网 大数据高级研发工程师 导读:本文整理自 vivo互联网 大数据高级研发工程师 郭小龙 在 StarRocks 年度峰会上的分享,聚焦 vivo 大数据多维分析面临的挑战、StarRocks 落地方案及应用收益。 在 即席分析 场景&#xff0c…

代码随想录算法训练营第十四天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

今日题目 226.翻转二叉树 题目链接:226. 翻转二叉树 - 力扣(LeetCode) 思考:翻转二叉树,就是对每一个根节点,都交换左右节点,左右节点进入递归继续交换它们的左右节点。 代码: # De…

Java设计模式--单例模式

单例模式(构造器私有) 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,有以下特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 反射可以破坏单例模式…

2025年如何避免使用验证码求解器时被IP封禁

引言 2025年,验证码求解器已成为自动化网络抓取和其他在线流程的关键工具。然而,自动化用户面临的一个常见挑战是IP封禁。当网站检测到自动化活动时,通常会阻止发出请求的IP地址,导致验证码挑战无法解决。本文将探讨使用验证码求…

JVM详解(包括JVM内存模型与GC垃圾回收)

📖前言: 学会使用Java对于一个程序员是远远不够的。Java语法的掌握只是一部分,另一部分就是需要掌握Java内部的工作原理,从编译到运行,到底是谁在帮我们完成工作的? 接下来着重对Java虚拟机,也就…

【无标题】大亚湾文化体育场多美啊。

请推荐一些常用并且免费的,可直接在线运行【Python】代码的平台并列出对应网址 好的,用户想让我推荐一些常用且免费的、可以直接在线运行Python代码的平台,并且需要列出对应的网址。我需要先回想一下自己知道的在线Python运行环境&#xff0…

权限提升—Windows权限提升土豆家族溢出漏洞通杀全系

前言 OK,Java安全更新不下去了,实在是太难啦啊,想起来提权这一块没怎么更新过,接下来都主要是更新提权这一块的文章了,Java安全的话以后有耐心再搞了。 手动提权 今天主要是讲这个手动的提权,手动提权相…

Vue3 知识点总结

Vue3 知识点总结 1. 核心概念 1.1 Composition API 1.1.1 setup 函数 setup是Vue3中的新的配置项,是组件内使用Composition API的入口在setup中定义的变量和方法需要return才能在模板中使用setup执行时机在beforeCreate之前,this不可用 export defa…

python --face_recognition(人脸识别,检测,特征提取,绘制鼻子,眼睛,嘴巴,眉毛)/活体检测

dlib 安装方法 之前博文 https://blog.csdn.net/weixin_44634704/article/details/141332644 环境: python3.8 opencv-python4.11.0.86 face_recognition1.3.0 dlib19.24.6人脸检测 import cv2 import face_recognition# 读取人脸图片 img cv2.imread(r"C:\Users\123\…

【bug】[42000][1067] Invalid default value for ‘xxx_time‘

MySQL错误解决:Invalid default value for xxx_time’问题分析与修复方案 问题描述 在MySQL数据库操作中,当尝试创建或修改表结构时,可能会遇到以下错误信息: [bug] [42000][1067] Invalid default value for xxx_time这个错误…

Go环境相关理解

Linux上安装的环境变量 ## set go env export GOPATH$HOME/go_workspace export GOPATH/usr/local/go export PATH$PATH:$GOPATH/bin go.mod 和go.sum的理解 go.mod文件 ‌go.mod文件定义了模块的路径和依赖版本‌。它遵循 语义化版本2.0.0规范,记录了当前项目所依…

Next.js 深度解析:全栈React框架的架构哲学与实践精髓

Next.js 作为 React 生态中最流行的全栈框架,已经超越了简单的SSR工具,发展成为完整的Web开发解决方案。以下从八个维度进行深度剖析: 一、核心架构设计 双引擎驱动模型 页面路由系统:基于文件系统的约定式路由渲染引擎&#xff…

禾赛盈利了,但激光雷达没有胜利

还远没有到激光雷达党欢呼的时候。 3月,随着禾赛科技公布2024年报,全世界第一家也是唯一一家实现全年盈利的激光雷达上市公司诞生,为了这个盈利目标,禾赛科技奋斗了十年。 但极大的出货量和不高的盈利水平,让禾赛科技…

心房颤动新机制:ATM/p53通路早期抑制

急性心肌梗死(AMI)是心血管疾病中的“大魔头”,它悄无声息地侵蚀着心脏的肌肉,导致心脏功能受损,严重时甚至危及生命。而心房颤动(AF),这一常见的心律失常,往往在AMI后悄…

Linux 安装 Redis

虚拟机安装 linux https://www.bilibili.com/video/BVldD42177qg?p16 1、安装 gcc,编译环境 yum y install gcc-g 2、将 redis-7.2.4.tar.gz放到 linux。如,放到 opt 里 3、进入/opt 目录下,解压 tar -zxvf redis-7.2.4.tar.gz 4、进入 redis-7.2.4.tar…

六级备考 词汇量积累(day11)

sculpture 雕像 allege 指责,声称 pledge 发誓 breach 违背,违反 defaulty 违约,违反 infringe 侵犯 infringing on small farmers interest blacmail 勒索 idle 无所事事的 deceive 欺骗 perceive 察觉 conceive 设想 conception 设想 verdi…

关于金碟K3,禁用和启用需要流程审批后执行

真是难受,是设计师蠢呢自己问题比较多呢,现在都还没有弄好 点击禁用和启用,通过流程来执行 到底是蠢呢还是设计问题,搞了半日没有效果,搞那么复杂! 而且有样板都没有草鞋成功 BOS设计,表单属性,操作列表: 1、启用禁用流程

导入 Excel 规则批量修改或删除 PDF 文档内容

需要对 PDF 文档内容进行修改的时候,通常我们会需要借助一些专业的工具来帮我们完成。那我们如果需要修改的 PDF 文档较多的时候,有什么方法可以帮我们实现批量操作呢?今天这篇文章就给大家介绍一下当我们需要批量修改多个 PDF 文档的时候&am…

msyql--基本操作之运维篇

检查 root 用户的权限 查看该用户针对这个数据库的权限 -- 如果在终端连接mysql时需要 mysql -u root -p -- 查看用户权限 SELECT user, host FROM mysql.user WHERE user root;可以看的出来root有他的访问权限,如过没有localhost或者% 说明没有访问权限 添加…

Vue 3使用 Socket

在 Vue 3 中使用 Socket(如 WebSocket 或基于 WebSocket 的库比如 Socket.IO)可以通过组合式 API(Composition API)来实现得更清晰、模块化。下面我给你展示一个完整的例子,包括使用原生 WebSocket 和使用 Socket.IO 的…