DeepSeek FlashMLA:用技术创新破解大模型落地难题

news2025/4/8 1:21:01

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】

文章目录

  • DeepSeek大模型技术系列十四
    • DeepSeek大模型技术系列十四》DeepSeek FlashMLA:用技术创新破解大模型落地难题
  • DeepSeek FlashMLA:用技术创新破解大模型落地难题
    • 一、引言
    • 二、技术背景
      • (一)深度学习中的注意力机制发展脉络
      • (二)硬件架构对AI计算的影响
      • (三)开源生态在AI发展中的重要性
    • 三、FlashMLA技术详解
      • (一)核心技术原理
      • (二)针对Hopper GPU的优化策略
      • (三)与其他相关技术的比较优势
    • 四、性能表现与实验评估
      • (一)性能指标分析
      • (二)实验设置与数据集选择
      • (三)实验结果与分析
    • 五、应用场景与实际案例
      • (一)自然语言处理领域
      • (二)图像识别领域
      • (三)语音识别领域
    • 六、开源贡献与社区影响
      • (一)开源代码的价值
      • (二)社区反馈与发展趋势
      • (三)对AI产业生态的推动作用
      • 更多技术内容
  • 总结

DeepSeek大模型技术系列十四

DeepSeek大模型技术系列十四》DeepSeek FlashMLA:用技术创新破解大模型落地难题

在这里插入图片描述

DeepSeek FlashMLA:用技术创新破解大模型落地难题

一、引言

在人工智能快速发展的当下,大语言模型(LLM)的性能优化成为研究和应用的关键焦点。其中,注意力机制作为Transformer架构的核心组件,对模型的理解和生成能力起着决定性作用。然而,传统的注意力机制在内存占用和计算效率方面存在诸多挑战,限制了模型在实际场景中的应用。FlashMLA技术应运而生,它是DeepSeek针对Hopper GPU精心优化的高效MLA(Multi - Head Latent Attention)解码内核,为解决这些问题提供了创新的解决方案。自2025年2月24日DeepSeek启动开源周并发布FlashMLA以来,该技术迅速引发全球开发者的高度关注,在GitHub上收获大量Star,其先进的设计理念和卓越的性能表现为AI领域带来了新的活力和发展方向。深入研究FlashMLA技术,对于推动AI技术的进步、降低计算成本、拓展应用场景具有重要的现实意义。

二、技术背景

(一)深度学习中的注意力机制发展脉络

注意力机制起源于对人类视觉注意力的模拟,旨在让模型在处理信息时能够聚焦于关键部分。在深度学习领域,它最早在机器翻译中崭露头角。传统的神经网络在处理序列数据时,难以区分不同位置信息的重要性,而注意力机制通过计算输入序列中各元素之间的关联程度,为模型提供了动态聚焦的能力。

多头注意力机制(MHA)作为注意力机制的重要拓展,在Transformer架构中得到广泛应用。MHA通过多个并行的注意力头,能够同时关注输入序列的不同方面,从而更全面地捕捉序列中的信息。然而,MHA在实际应用中暴露出内存占用过高的问题,尤其是在处理长序列时,大量的键值(KV)缓存使得内存成为性能瓶颈,限制了模型的推理速度和可扩展性。

为了应对MHA的不足,研究人员提出了多种改进方案。多查询注意力(MQA)通过减少查询头的数量来降低KV缓存的大小,但在一定程度上牺牲了性能;分组查询注意力(GQA)则将查询头分组,在减少缓存的同时试图保持性能平衡。这些方法虽然在一定程度上缓解了内存压力,但都未能从根本上解决问题。

(二)硬件架构对AI计算的影响

随着AI计算需求的不断增长,硬件架构的发展成为推动技术进步的关键因素。英伟达的Hopper架构GPU(如H100、H800)专为AI计算设计,具备强大的并行计算能力和高带宽内存。Hopper架构引入了新的Tensor Core技术,能够加速矩阵乘法和深度学习中的关键计算操作,为大规模神经网络的训练和推理提供了有力支持。

然而,硬件性能的充分发挥依赖于与之匹配的软件算法和优化技术。传统的AI算法在面对新型硬件架构时,往往无法充分利用其性能优势。因此,针对Hopper GPU进行定制化的软件优化成为提升AI计算效率的关键。FlashMLA正是在这样的背景下诞生,它紧密结合Hopper GPU的硬件特性,通过优化算法和内存管理,实现了在该硬件平台上的高效运行。

(三)开源生态在AI发展中的重要性

开源生态在AI领域的发展中扮演着不可或缺的角色。开源代码库的共享使得全球开发者能够共同参与技术的改进和创新,加速技术的迭代和传播。通过开源,研究成果能够迅速在学术界和工业界得到应用和验证,促进知识的共享和技术的普及。

在AI硬件加速领域,许多开源项目如FlashAttention、cutlass等为开发者提供了优化的算法和工具。FlashAttention专注于Transformer模型自注意力机制的优化,通过改进内存访问模式和计算流程,显著提升了模型的性能;cutlass则是NVIDIA开发的高性能矩阵运算库,为GPU上的矩阵乘法和相关计算提供了高效的实现。这些开源项目为FlashMLA的开发提供了重要的灵感和技术基础,同时FlashMLA的开源也进一步丰富了AI开源生态,为其他开发者提供了学习和创新的平台。

三、FlashMLA技术详解

(一)核心技术原理

  1. 低秩键值联合压缩:FlashMLA的核心之一是低秩键值联合压缩技术。在传统的多头注意力机制中,每个注意力头都需要独立存储键值对,这导致在推理过程中需要缓存大量数据,占用大量内存。而FlashMLA通过引入低秩压缩,将键值对映射到低维空间,大大减少了缓存数据量。具体而言,通过投影矩阵将高维的输入特征映射到低维的潜在向量空间,在推理时仅需缓存这些低维潜在向量,从而显著降低了KV缓存的大小。这种压缩方式不仅减少了内存占用,还提高了计算效率,因为在低维空间中进行计算的复杂度更低。
  2. 解耦旋转位置嵌入(RoPE):旋转位置嵌入(RoPE)是一种为Transformer模型提供位置信息的有效方式。然而,传统的RoPE与低秩KV压缩存在兼容性问题。FlashMLA提出了解耦RoPE策略,通过引入额外的多头查询和共享密钥来承载RoPE,解决了这一兼容性难题。具体来说,解耦RoPE策略将位置信息分别编码到查询和密钥中,使得在进行注意力计算时,能够更好地结合位置信息和内容信息,同时避免了与低秩KV压缩的冲突。这种策略在保证模型性能的同时,进一步提高了对长序列的处理能力。

(二)针对Hopper GPU的优化策略

  1. 硬件特性适配:Hopper GPU具有独特的硬件架构,如高速的Tensor Core和高带宽内存(HBM)。FlashMLA充分利用这些特性,通过优化算法和内存访问模式,实现了在Hopper GPU上的高效运行。例如,针对Tensor Core的矩阵乘法能力,FlashMLA对计算流程进行了定制化设计,使得矩阵乘法操作能够充分利用Tensor Core的并行计算优势,提高计算效率。在内存访问方面,FlashMLA采用了与HBM带宽相匹配的内存读写策略,减少了内存访问延迟,提高了数据传输效率。
  2. CUDA编程优化:CUDA是英伟达提供的用于GPU编程的平台和工具集。FlashMLA在CUDA编程方面进行了深度优化,通过精心编写内核函数和优化线程调度,充分发挥了GPU的并行计算能力。例如,在处理大规模数据时,FlashMLA合理分配线程块和线程,使得每个线程能够高效地处理数据,避免了线程之间的资源竞争和等待。同时,通过使用CUDA的异步内存拷贝和流机制,FlashMLA实现了数据的高效传输和计算的重叠执行,进一步提高了整体性能。
  3. 分块矩阵乘法与共享内存优化:FlashMLA采用分块矩阵乘法技术,将大规模矩阵乘法分解为多个小块矩阵的乘法,减少了每次计算的数据量,降低了内存访问压力。同时,通过优化共享内存的使用,将频繁访问的数据存储在共享内存中,提高了数据的访问速度。在计算过程中,合理安排数据在共享内存中的存储布局,减少了内存冲突,提高了数据读取和写入的效率。

(三)与其他相关技术的比较优势

  1. 与传统多头注意力(MHA)的比较:与传统的MHA相比,FlashMLA在内存占用和计算效率上具有显著优势。MHA在推理时需要缓存大量的键值对,导致内存占用随序列长度的增加呈平方增长;而FlashMLA通过低秩键值联合压缩和其他优化技术,将KV缓存减少了93.3%,内存占用仅随序列长度线性增长。在计算效率方面,FlashMLA针对Hopper GPU进行了优化,能够充分利用硬件资源,计算速度大幅提升。实验表明,在处理长序列时,FlashMLA的推理速度比MHA快数倍,使得模型能够在更短的时间内生成高质量的输出。
  2. 与其他注意力优化技术(如MQA、GQA)的比较:与MQA和GQA相比,FlashMLA在性能和通用性方面表现更优。MQA虽然减少了查询头的数量,降低了KV缓存大小,但在某些任务上会牺牲一定的性能;GQA通过分组查询在一定程度上平衡了内存和性能,但在处理复杂任务时仍存在局限性。FlashMLA则通过创新的技术设计,在减少内存占用的同时,保证了模型的性能不下降,甚至在一些任务上表现更出色。此外,FlashMLA对可变长度序列的支持更加灵活,能够更好地适应不同场景的需求。

四、性能表现与实验评估

(一)性能指标分析

  1. 内存带宽与计算性能:在H800 SXM5平台上,使用CUDA 12.6时,FlashMLA在内存受限配置下可达最高3000GB/s的内存带宽,接近H800 SXM5的硬件理论极限3350GB/s。这一优异的带宽表现得益于其分块和缓存技术,能够高效地管理和传输数据。在计算性能方面,FlashMLA能够达到580TFLOPS,为理论峰值的87%。这一性能水平在同类技术中处于领先地位,充分展示了FlashMLA对Hopper GPU的优化效果。
  2. 序列处理速度与延迟:在处理可变长度序列时,FlashMLA展现出了卓越的速度和低延迟特性。实验表明,对于包含数千个标记的长序列,FlashMLA的处理速度比传统方法快数倍。在实时应用场景中,如聊天机器人和实时翻译系统,FlashMLA能够将响应延迟降低到毫秒级别,为用户提供流畅的交互体验。这一优势使得FlashMLA在对实时性要求极高的应用中具有巨大的应用潜力。

(二)实验设置与数据集选择

  1. 实验环境搭建:为了全面评估FlashMLA的性能,实验采用了配备H800 SXM5 GPU的服务器,安装了CUDA 12.6和PyTorch 2.0及以上版本的软件环境。在硬件方面,确保了GPU的高性能运行;在软件方面,提供了支持FlashMLA运行的必要框架和库。同时,为了保证实验结果的准确性和可重复性,对实验环境进行了严格的配置和校准。
  2. 数据集选择:实验选用了多个具有代表性的数据集,涵盖了自然语言处理、图像识别和语音识别等领域。在自然语言处理方面,使用了包含长文本对话和文档的数据集,用于测试FlashMLA在处理长序列时的性能;在图像识别领域,选择了具有不同分辨率和复杂度的图像数据集,评估其在处理图像数据时的效率;在语音识别方面,采用了包含不同口音和语速的语音数据集,检验FlashMLA对语音数据的处理能力。这些数据集的选择能够全面反映FlashMLA在不同场景下的性能表现。

(三)实验结果与分析

  1. 不同场景下的性能表现:在自然语言处理任务中,FlashMLA在处理长文本对话和文档时,能够快速准确地提取关键信息,生成高质量的回复和摘要。与传统方法相比,其生成速度提高了数倍,同时保持了较高的准确率。在图像识别任务中,FlashMLA能够高效地处理大规模图像数据,对复杂图像的识别准确率与传统方法相当,但处理速度明显更快。在语音识别任务中,FlashMLA对不同口音和语速的语音数据具有良好的适应性,识别准确率高,且响应速度快,能够满足实时语音交互的需求。
  2. 与其他技术对比结果:将FlashMLA与传统的注意力机制以及其他优化技术进行对比实验,结果显示FlashMLA在各项性能指标上均表现出色。在内存占用方面,FlashMLA相较于传统MHA减少了93.3%,远低于其他优化技术;在计算效率上,FlashMLA比MHA快数倍,比其他优化技术也有显著提升。在处理长序列时,FlashMLA的优势更加明显,能够在保证准确性的同时,大幅提高处理速度,这使得它在长序列处理任务中具有不可替代的优势。

五、应用场景与实际案例

(一)自然语言处理领域

  1. 聊天机器人与虚拟助手:在聊天机器人和虚拟助手应用中,快速响应和准确理解用户意图至关重要。FlashMLA的高内存带宽和计算吞吐量能够确保模型在接收到用户输入后迅速进行处理,生成高质量的回复。以某智能客服聊天机器人为例,引入FlashMLA后,响应时间从原来的平均数百毫秒缩短至几十毫秒,用户满意度大幅提升。同时,由于FlashMLA对长对话的处理能力更强,能够更好地理解对话的上下文,回复的准确性和连贯性也得到了显著提高。
  2. 机器翻译:机器翻译需要处理大量的文本数据,对模型的计算效率和内存管理能力要求极高。FlashMLA的高效性能使得它在机器翻译领域具有巨大的应用潜力。在实际应用中,采用FlashMLA优化的翻译模型能够在保证翻译质量的前提下,显著提高翻译速度。例如,在处理大规模文档翻译时,翻译速度提升了数倍,大大提高了翻译效率,满足了用户对快速、准确翻译的需求。
  3. 文本生成:在文本生成任务中,如文章写作、故事创作等,FlashMLA能够加速模型的推理过程,生成文本的速度更快、质量更高。以某内容创作平台为例,使用FlashMLA优化的文本生成模型后,生成一篇文章的时间从原来的数分钟缩短至数十秒,同时生成的文章在语法正确性、语义连贯性和逻辑性方面都有明显提升,为用户提供了更好的创作体验。

(二)图像识别领域

  1. 实时图像检测与分类:在实时图像检测和分类任务中,如安防监控、自动驾驶等,对图像的处理速度和准确性要求极高。FlashMLA的高效性能能够满足这些实时性要求,快速准确地识别图像中的目标物体。在安防监控系统中,采用FlashMLA优化的图像识别模型能够在短时间内处理大量的监控视频数据,及时发现异常情况并发出警报,提高了监控系统的可靠性和效率。
  2. 图像生成与编辑:在图像生成和编辑领域,如生成对抗网络(GAN)、图像修复等任务中,FlashMLA能够加速模型的训练和推理过程,提高生成图像的质量和多样性。以图像修复为例,使用FlashMLA优化的模型能够更快地处理受损图像,生成更加自然、逼真的修复结果,为图像编辑和处理提供了更强大的工具。

(三)语音识别领域

  1. 语音助手与智能交互设备:语音助手和智能交互设备需要实时处理用户的语音指令,对响应速度和识别准确率要求极高。FlashMLA的低延迟特性使得它在这些应用中表现出色。在某智能音箱产品中,引入FlashMLA后,语音识别的响应时间从原来的1 - 2秒缩短至0.5秒以内,识别准确率也得到了提高,用户体验得到了极大的改善。
  2. 语音转文字与语音翻译:在语音转文字和语音翻译任务中,FlashMLA能够快速处理语音数据,提高转换和翻译的效率和准确性。在一些在线会议记录和跨国交流场景中,采用FlashMLA优化的语音处理系统能够实时将语音转换为文字,并进行准确的翻译,为用户提供了便捷的服务。

六、开源贡献与社区影响

(一)开源代码的价值

  1. 促进技术创新与共享:FlashMLA的开源为全球开发者提供了一个学习和创新的平台。通过共享代码,开发者可以深入了解其技术实现细节,借鉴其中的优化思路和算法,推动AI硬件加速技术的进一步发展。例如,一些开发者基于FlashMLA的代码,对其进行改进和扩展,应用于其他领域的模型优化,促进了技术的交叉创新。
  2. 降低开发门槛:对于中小企业和独立开发者来说,获取和使用先进的AI技术往往面临着高昂的成本和技术门槛。FlashMLA的开源使得这些开发者能够免费使用这一先进技术,降低了开发成本和技术门槛。他们可以基于FlashMLA快速搭建自己的AI应用,加速产品的研发和迭代,推动AI技术在更广泛领域的应用和普及。

(二)社区反馈与发展趋势

  1. 社区贡献与改进:自FlashMLA开源以来,社区开发者积极参与其中,提交了大量的代码改进建议和功能扩展。一些开发者针对特定的应用场景对FlashMLA进行了优化,提高了其在特定领域的性能;还有一些开发者发现并修复了代码中的潜在问题,提高了代码的稳定性和可靠性。这些社区贡献进一步推动了FlashMLA的发展和完善。
  2. 未来发展方向探讨:社区对FlashMLA的未来发展方向进行了广泛的探讨。一方面,开发者希望进一步提高FlashMLA在不同硬件平台上的兼容性,使其能够应用于更多类型的GPU和硬件环境;另一方面,探索将FlashMLA与其他新兴技术(如量子计算、边缘计算)相结合,拓展其应用场景和功能。此外,优化FlashMLA的训练过程,提高训练效率和模型质量,也是未来的重要发展方向之一。

(三)对AI产业生态的推动作用

  1. 加速产业发展:FlashMLA的开源和广泛应用加速了AI产业的发展。它为AI基础设施提供商和终端用户提供了更高效的推理框架,降低了企业的运营成本,提高了用户体验。在云计算领域,云服务提供商可以利用FlashMLA优化其AI服务,为客户提供更快、更稳定的AI推理服务,吸引更多用户;在终端应用领域,如智能硬件、移动设备等,FlashMLA的应用能够提升设备的AI性能,推动智能产品的发展。
  2. 促进产学研合作:FlashMLA的开源促进了学术界、产业界和研究机构之间的合作。学术界可以基于FlashMLA进行深入的理论研究,探索其在不同领域的应用潜力;产业界可以将FlashMLA应用于实际产品中,提高产品的竞争力。

更多技术内容

更多技术内容可参见
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】书籍。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。

总结

此文章有对应的配套新书教材和视频:

【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。
全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。
本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目。

【配套视频】

推荐系统/智能问答/人脸识别实战 视频教程【陈敬雷】
视频特色:把目前互联网热门、前沿的项目实战汇聚一堂,通过真实的项目实战课程,让你快速成为算法总监、架构师、技术负责人!包含了推荐系统、智能问答、人脸识别等前沿的精品课程,下面分别介绍各个实战项目:
1、推荐算法系统实战
听完此课,可以实现一个完整的推荐系统!下面我们就从推荐系统的整体架构以及各个子系统的实现给大家深度解密来自一线大型互联网公司重量级的实战产品项目!
2、智能问答/对话机器人实战
由浅入深的给大家详细讲解对话机器人项目的原理以及代码实现、并在公司服务器上演示如何实际操作和部署的全过程!
3、人脸识别实战
从人脸识别原理、人脸识别应用场景、人脸检测与对齐、人脸识别比对、人脸年龄识别、人脸性别识别几个方向,从理论到源码实战、再到服务器操作给大家深度讲解!

自然语言处理NLP原理与实战 视频教程【陈敬雷】
视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!

人工智能《分布式机器学习实战》 视频教程【陈敬雷】
视频特色:视频核心内容有互联网公司大数据和人工智能、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)。

上一篇:DeepSeek大模型技术系列七》DeepSeek 突破!NSA——DeepSeek 原生稀疏注意力开启硬件适配与可训练新时代
下一篇:DeepSeek大模型技术系列五》DeepSeek大模型基础设施全解析:支撑万亿参数模型的幕后英雄

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

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

相关文章

[补充]原码、反、补、移码的转换

近期在学习Java的类型转换的知识,强制类型转换的时候会遇到数据(丢失)溢出的问题。 最后在IDEA控制台输出的时候,出现了负数。了解了一下强制类型转换在计算机中的原理,随后就复习了一下原码、反、补、移码的转换的知…

安装Node.js

1.打开官网,下载安装包 2.安装过程中,全部默认,next. 3.在安装根目录下,新建两个文件夹【node_cache】和【node_global】 4.检测是否安装成功 打开控制台,node -v, npm -v, 显示版本号。 5.配置环境变量 1>从no…

【力扣】堆相关总结

priority_queue std::priority_queue 是 C 标准库中的一个容器适配器&#xff0c;提供了堆&#xff08;Heap&#xff09;数据结构的功能。它通常用于实现优先队列&#xff0c;允许你高效地插入元素和访问最大或最小元素。 头文件 #include <queue> 基本定义 std::pri…

【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)

HTML结构 一个HTML包含以下部分&#xff1a; 文档类型声明html元素 head元素body元素 例&#xff08;CSDN&#xff09;&#xff1a; 一、文档类型声明 HTML最一方的文档称为&#xff1a;文档类型声明&#xff0c;用于声明文档类型。即&#xff1a;<!DOCTYPE html>…

【漫话机器学习系列】113.逻辑回归(Logistic Regression) VS 线性回归(Linear Regression)

逻辑回归 vs 线性回归&#xff1a;详解对比 在机器学习和统计学中&#xff0c;逻辑回归&#xff08;Logistic Regression&#xff09; 和 线性回归&#xff08;Linear Regression&#xff09; 都是非常常见的模型。尽管它们的数学表达式有一定的相似性&#xff0c;但它们的应用…

Redis---缓存穿透,雪崩,击穿

文章目录 缓存穿透什么是缓存穿透&#xff1f;缓存穿透情况的处理流程是怎样的&#xff1f;缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩&#xff1f;缓存雪崩的解决办法 缓存击穿什么是缓存击穿&#xff1f;缓存击穿的解决办法 区别对比 在如今的开发中&…

Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking

一.Skywalking介绍 Apache SkyWalking是一个开源的分布式追踪与性能监视平台&#xff0c;特别适用于微服务架构、云原生环境以及基于容器&#xff08;如Docker、Kubernetes&#xff09;的应用部署。该项目由吴晟发起&#xff0c;并已加入Apache软件基金会的孵化器&#xff0c;…

Thonny+MicroPython+ESP32开发环境搭建

1、下载&安装Thonny 安装成功后&#xff0c;会在桌面生成快捷键 双击快捷键&#xff0c;打开程序&#xff0c;界面如下 2、下载MicroPython 下载地址&#xff1a;MicroPython - Python for microcontrollers v1.19版(推荐&#xff0c;此版本稳定)&#xff1a; https://do…

数据结构:反射 和 枚举

目录 一、反射 1、定义 2、反射相关的类 3、Class类 &#xff08;2&#xff09;常用获得类中属性相关的方法&#xff1a; &#xff08;3&#xff09;获得类中注解相关的方法&#xff1a; &#xff08;4&#xff09;获得类中构造器相关的方法&#xff1a; &#xff08;…

前缀和算法 算法4

算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…

USRP7440-通用软件无线电平台

1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构&#xff0c;它将射频ADC、DAC、ARM、FPGA等集成一体&#xff0c;瞬时带宽可以达到2.5GHz&#xff0c;尤其适合于射频直采应用&#xff0c;比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了&#xff0c;但是由于它是外国软件&#xff0c;使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post&#xff0c;该有的功能都有。 https://www.yunedit.com/postdetail …

移动零

一 &#xff1a;题目 二&#xff1a;思路 双指针法&#xff1a; 两个指针将数组划分成三个部分&#xff1a; 解释&#xff1a; ①&#xff1a;所以一开始dest要等于-1&#xff0c;因为没有非零的元素&#xff0c;cur0&#xff0c;因为要从头开始遍历数组 ②&#xff1a;cur为…

MySQL整体架构

目录 1 客户端 2 服务端 2.1 Server层 2.1.1 连接器 2.1.2 查询缓存 2.1.3 词法器 2.1.4 优化器 2.1.5 执行器 2.2 存储引擎层 1 客户端 ● 客户端为连接MySQL服务端的工具或者驱动&#xff0c;比如JDCB&#xff0c;ODBC等等 ● 用于连接目前服务器&#xff0c;并且发送需要执行…

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a; rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件&#xff0c;找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

记忆化搜索(典型算法思想)—— OJ例题算法解析思路

目录 一、509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 动态规划 (fib 函数) 初始化&#xff1a; 递推计算&#xff1a; 返回结果&#xff1a; 2. 记忆化搜索 (dfs 函数) 备忘录初始化&#xff1a; 递归终止条件&#xff1a; 递…

Day11,Hot100(贪心算法)

贪心 &#xff08;1&#xff09;121. 买卖股票的最佳时机 第 i 天卖出的最大利润&#xff0c;即在前面最低价的时候买入 class Solution:def maxProfit(self, prices: List[int]) -> int:min_price prices[0]ans 0for price in prices:ans max(ans, price - min_price…

翻译: 深入分析LLMs like ChatGPT 一

大家好&#xff0c;我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍&#xff0c;介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先&#xff0c;我们来谈谈你在这个文本框里输入内容并点击回车后背…

《白帽子讲 Web 安全》之移动 Web 安全

目录 摘要 一、WebView 简介 二、WebView 对外暴露 WebView 对外暴露的接口风险 三、通用型 XSS - Universal XSS 介绍 四、WebView 跨域访问 五、与本地代码交互 js 5.1接口暴露风险&#xff1a; 5.2漏洞利用&#xff1a; 5.3JavaScript 与 Native 代码通信 六、Chr…