大模型基础应用框架(ReACT\SFT\RAG)创新及零售业务落地

如何将大语言模型的强大能力融入实际业务、产生业务价值,是现在很多公司关注的焦点。在零售场,大模型应用也面临很多挑战。本文分享了京东零售技数中心推出融合Agent、SFT与RAG的大模型基础应用框架,帮助业务完成大模型微调、部署和应用,落地场景的实践经历,供大家参考。
本文为2023京东零售技术年度盘点深度文章系列的第5篇(共11篇),欢迎持续关注。

一、前言

2023年,大语言模型以前所未有的速度和能力改变我们对智能系统的认知,成为技术圈最被热议的话题。但“百模大战”终将走向“落地为王”,如何将大语言模型的强大能力融入实际业务、产生业务价值成为致胜关键。

在零售场,大模型应用面临的核心挑战包括以下三点:

(1)模型缺乏零售领域的专业知识,建设业务专属大模型训练成本高

(2)模型内容生产伴有幻觉,而检索海量业务信息又缺乏有效技术,检索成本高

(3)在商家问答等多流程复杂业务场景下,模型缺乏自主规划能力,需要大量人工干预

为了应对上述三点挑战,九数算法中台推出了一整套大语言模型应用解决方案,一种融合基于ReAct框架的AI Agent、SFT(指令微调)与RAG(检索增强生成)技术的应用框架,不仅赋予大模型学习领域知识的能力,还显著提升了模型的自主决策和信息处理精确度,为业务人员高效落地大模型的微调、部署和应用提供了落地保障。

九数算法中台大模型基础应用框架

二、高效微调(SFT)

通用大模型虽然在处理通用知识方面表现出色,但缺乏针对零售垂直领域的知识理解。为此,需要引入经过人工标注的领域数据,对已完成预训练的通用大模型进行微调,从而得到具有该领域知识的零售垂域大模型。这个过程就是“有监督微调(Supervised Fine-Tuning)”,简称SFT

【2.1 SFT流程介绍】

SFT的流程包括数据生产、模型选型、模型微调、效果验证几个环节,每一步都存在相应的技术挑战:

(1)数据生产:创建用于微调预训练模型的高质量数据集,数据集质量对模型训练的效果至关重要。在零售场,京东沉淀了丰富的领域数据,比如电商营销策略、消费者行为数据、商品信息数据等,这些数据往往格式不统一、噪声多,如何以这些业务数据为基础,高效构建可用于微调训练的数据集,是数据生产环节的痛点

(2)模型选型:根据对中文的支持程度、参数量级、性能等选择合适的预训练模型作为微调的起点。高速发展的开源社区为业务方提供了大量可供选择的预训练模型,但不同模型擅长不同任务,需要实验对比模型表现。而开源模型存在样本标注、模型标准不统一的问题,将开源方案应用在企业环境中也需要一定的适配工作量,给业务方带来了较高的模型选型成本

(3)模型微调:使用准备好的数据集对选定的预训练模型进行微调。训练时需要设置适当的学习率、批次大小和训练周期等参数,同时监控模型的性能,如损失函数和准确率等指标。在算力资源紧缺的背景下,不少业务方面临算力资源不足的问题,如何用最小的算力资源实现最优的模型训练性能至关重要

(4)效果验证:使用独立的验证数据集对模型进行测试,评估模型训练效果。关键是建立系统的模型评估指标,并选择合适的方法高效进行效果评估

SFT流程介绍

【2.2 九数算法中台SFT框架的优势】

九数算法中台通过自研的SFT高效微调框架,从高质量数据集的构建到灵活的模型选择,训练过程中的算力优化,到效果验证,都提供了创新的解决方案,确保了SFT技术的高效实施。主要优势如下:

(1)数据生产:通过使用开源基座大模型能力,构建通用大模型数据增强(LLM Data Augmentation,简称LDA)工具,使用场景覆盖Self-Instruct、Query扩展,Query2Doc,Doc2Query等。帮助业务方高效创建可用于SFT训练的标准样本集。

(2)模型选型:集成15个左右的主流LLM模型(如言犀、ChatGLM,Llama等) ,统一模型的样本标准和训练模式,实现一份样本在多模型间随意切换;同时,开源LLM模型经过中台工程师的适配,可在九数的环境下开箱即用,帮助业务方灵活进行模型选型实验。

(3)模型微调

①支持方法广:支持对LLM模型的预训练(Pretrain)和高效微调(SFT),微调方面支持全参微调(Full-Parameter Fine-Tuning)和LoRA等参数高效微调PEFT方法(Parameter-Efficient Fine-Tuning )。支持人类反馈强化学习RLHF训练(Reinforcement Learning from Human Feedback),支持PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)等强化学习算法。

②训练性能高:通过编译优化、算子优化、网络和IO优化等方法,相比纯开源的代码性能提升40%左右;支持70B+超大规模模型微调;

③支持SFT模型蒸馏:建设模型知识蒸馏组件,在模型效果无损或损失较小的同时缩小模型规模,降低模型线上运行的成本,帮助业务方节约算力资源,未来可在端上使用。

(4)效果验证:支持高性能批量离线推理与客观+主观评估方式。通过手动融合kernel、triton编译优化、通信压缩等手段,提升批量离线推理性能。通过建立客观评估维度与用户自定义主观维度,实现生成效果验证。

目前,九数算法中台自研SFT框架已于京东内部多个业务试点应用,实现SFT技术的低成本应用。

三、检索增强生成(RAG)

大型语言模型通过监督式微调(SFT)补充了特定领域知识的不足,但在获取时效性知识、减少内容幻觉以及确保数据安全等方面依然存在挑战。在零售场景中,无论是来自C端用户的商品咨询,还是来自B端商家的平台规则咨询,对生成答案的时效性、专业度、准确性要求都更高,还需要大模型具备多轮对话的理解能力。

检索增强生成技术(Retrieval-Augmented Generation,简称RAG)的引入,有效减轻了这些问题。RAG的核心是根据用户提问(Query)从外部数据库检索相关信息,并基于此生成回答(Answer),相当于给大模型装上了“知识外挂”,基础大模型不用再训练即可随时调用特定领域知识。 这不仅提升了回答的时效性和准确性,还增加了答案的可解释性和可扩展性。此外,企业可以将数据库在本地维护,无需上传至开源模型,确保了数据安全性。

当用户询问“某两款不同品牌手机有什么不同时”时,RAG技术通过索引,为大模型“外挂”两款手机不同参数和属性数据、最新热门趋势等知识库,通过检索技术在商品知识库中找到准确的商品参数等信息,通过大模型生成能力对比两款手机在哪些重要维度有所不同,高效、精准地向用户输出两款手机差异性。

【3.1 RAG流程介绍】

RAG的流程包括检索数据增强、检索过程增强、效果增强三个阶段。

(1)检索数据增强阶段:构建用于检索的语料库的过程,包括“数据提取与处理—文本向量化—创建索引—导入向量数据库”几步。这一阶段的关键是如何通过各类技术,构建有效的语料库,以提供给模型用于生成文本的信息。

(2)检索过程增强阶段:根据用户查询(Query)在语料库中进行检索,召回相关信息,并通过LLM服务生成摘要内容的过程。检索环节中,通过文本检索与向量检索的方式计算问题与语料库内文档块之间相似度来,召回相似度最高的top K个文档块。为了提升检索的精度,往往会在首次召回后加上过滤(Filter)、排序(Rank)等环节。摘要生成环节中,结合prompt工程,利用大模型对用户问题与检索完成的答案进行总结,生成答案摘要。为提升结果准确度,大模型可根据问题范围提前进行SFT微调训练。

(3)效果增强阶段:针对RAG检索和生成结果可进行效果评估,通过客观+主观方式对RAG模式进行批量标注与评分,评价结果可用于进一步优化检索质量与生成质量。

RAG流程介绍

【3.2 九数算法中台RAG技术优势】

九数算法中台的RAG技术覆盖检索数据增强、检索过程增强、效果增强三个阶段,力求通过全流程技术方案的设计,提升RAG的效率和性能。

九数算法中台RAG架构

(1)检索数据增强阶段

①知识库构建

基于Data Warehouse构建知识库,通过增强数据粒度、对齐优化等优化策略增强知识库可用性。 增强数据粒度策略加强数据源可读性。通过推行数据标准化流程,去除无关信息、特殊字符、歧义及重复内容,对数据内容进行修订和简化,重点建设结构化知识索引,促进信息的高效检索与利用。对齐优化策略解决用户问题与文档内容不一致问题,引入假设性问题生成机制,针对语料库中每个文档设计相应的问题(Query)并嵌入文档中,提升用户问题/Query的召回率,有效解决了文档间的对齐挑战。

②数据索引优化

数据索引优化旨在通过对索引结构优化和元数据信息整合等策略提升索引内容的质量,确保数据检索的效率和精度。 索引结构优化策略提升知识库内答案相关上下文被召回概率,通过块优化技术(Chunk optimization)调整切词大小和参数,最小化噪声数据的影响;还可以通过改变索引路径,并引入图结构信息来进一步优化索引结构。添加元数据信息策略提升检索相关性,特别是在处理时间敏感的数据如电子邮件查询时,强调最新信息的相关性而不仅是内容相似性。通过在索引块中嵌入关键元数据属性(如时间戳和章节编号等结构标识),进行精细化过滤,从而提升检索效率与相关度。

③优化Embedding模型

Embedding模型将用户查询(Query)和语料块(Doc)文本转换成为向量。通过选取动态Embedding(Dynamic Embedding)模型,并微调Embedding(Fine-tuning Embedding) ,优化Embedding效果,提高其精确度和适应性。

通过选取动态Embedding模型,可将用户查询Query与知识库内容结合上下文内容转化为向量并进行匹配,提升匹配精准度。动态Embedding模型利用基于Transformer架构的深度学习模型、细粒度的语义捕获和多任务学习能力,根据对同一词汇的上下文理解,动态调整其向量表示,使得模型能够生成反映全局语义特征的向量,优化了词义多样性和歧义词汇的精准表征。为提升模型对垂域内容理解,可微调Embedding,通过对预训练Embedding模型(如BGE、Voyage等)进行微调训练,增强模型在垂直领域任务中的表现。包括针对特定领域微调,帮助模型捕捉到该领域的术语和微妙差异,以及针对具体的检索任务微调,使之精准匹配用户查询(Query)和相关文档块(Doc)。

④兼容向量数据库

支持包含Vearch、Milvus、Pinecone等在内的多种向量数据库。

(2)检索过程增强阶段

检索过程增强检涉及对搜索引擎检索流程的综合优化,包括深度理解用户查询(Query)、改进召回策略、优化过滤和排序机制以及改进生成摘要等环节。

①查询(Query)改写

通过知识推理、关键词识别、属性抽取等技术,深入理解用户查询(Query)意图,并通过查询改写(Query Rewrite)提高检索的相关性和精度。

②召回策略

召回策略优化的目标包括准确率提升性能提升两方面。准确率提升方面,我们采用多跳检索(Multi-hop Retrieval)和相关性召回策略,执行多次连续且逐渐深入的检索,以便从不同的数据源中获取更全面深刻的信息,从而提升召回的准确率;性能提升方面,引入检索结果缓存机制(Retrieval Cache)以优化系统性能,减少查询响应时间。

③过滤/排序(Filtering/Ranking)

采用排序算法和过滤机制,根据用户行为和上下文信息对召回的文档进行精准排序,排除不相关或低质量的内容。

④摘要生成

利用提示词工程(Prompt Engineering)技术,给用户提供相应的Prompt模板,优化文档摘要的自动生成结果;并通过模型微调(Fine-tuning)提升生成摘要的相关性和丰富度。

(3)效果增强阶段

①建立效果评估机制

效果增强阶段旨在通过多轮评估,明确现有RAG方案的优化方向,优化最终生成效果。我们支持主观+客观相结合的评估方式,针对检索质量和生成质量分别建立相应的评估维度,使用多种主流评估框架对RAG效果进行评估。

②针对检索质量优化

针对检索质量,采取检索策略选择检索精度调优的双重途径。基于评估反馈,筛选与当前数据集和任务目标最匹配的检索策略,包括关键词匹配、语义搜索、图数据库检索等,并对检索参数进行精细调整,以优化检索结果的准确率和相关度。

③针对生成质量优化

针对生成质量,进行模型微调数据结构重组两方面优化。根据评估效果反馈,进一步微调Embedding模型和生成模型,精确适配特定语料库和任务。此外,优化的数据结构与处理流程,以提高模型的学习效率和生成质量。

(4)联邦RAG

除上述常规RAG流程外,针对当前私域数据分散,私域数据无法在保护数据隐私的前提下参与大模型训练、RAG检索等问题,京东试点联邦RAG模式,将联邦学习(Federated Learning)和RAG相结合,支持用户私域数据在本地构建知识库,延续联邦学习数据可用不可见原则,支持异构数据分布式安全模型训练与微调,实现保障私域数据隐私的联邦RAG模式。

四、AI智能体(AI Agent)

通过SFT+RAG技术,已经可以实现相对固定流程复杂业务问题的解决。面向未来,九数算法中台致力于实现“基于意图的结果指定”这一全新的产品交互方式,通过AI Agent(智能体)赋予大模型自主规划和执行能力,高效解决多流程复杂的业务问题。

【4.1 AI Agent介绍】

AI Agent可以理解为:一个可以感知环境并能够基于当前场景做出决策的“智能体”。 当下大模型应用大多仅具备类似ChatGPT 的对话式能力,无法自主执行复杂任务。为了拓展大模型的能力,可以为其添加各类组件(如Planning/Proflie /Memory/Action等),实现复杂任务的拆解、规划和执行。AI Agent常见组件如下:

①Planning:将复杂的任务分解为更易处理的子任务,并制定出有效的策略。

②Proflie:描述了Agent的各种属性,如角色、目标、能力、知识和行为方式等。

③Memory:存储和组织从环境中获取的信息,以指导未来行动。

④Action:将抽象的决策转化为具体的行动。

AI Agent四类组件

就交互形式而言,基于大型语言模型的AI代理可以分为两大类:单一智能体(Single Agent)和多智能体系统(Multi-Agents)。

早在20世纪80年代,计算机科学家已着手探索类似AI Agent这样能与人类交互的智能软件。在大模型能力的加持下,AI Agent已成为既具有想象空间,又贴近应用的AI行业爆点。从交互形式上看,基于大语言模型的Agent(LLM-based Agent)可分为单智能体(Single Agent)和多智能体系统(Multi-Agents):

(1)单一智能体Single Agent:在其运行环境中独立作用,专注于一个特定的任务或服务领域,能够接收人类以自然语言提出的指令,并基于这些指令执行一些简单的任务,如数据查询、日程管理等,扮演人类智能助手的角色。目前比较成熟的产品包括AutoGPT、BabyAGI等等。

(2)多智能体Multi-Agents:涉及多个Agent协同工作,以解决单Agent难以独立处理的复杂问题。Agents们有不同的角色和专长,通过有效的协作共同实现目标。协作方式可以是合作型的,即通过共享信息、观点和资源来解决问题;也可以是对抗型的,比如通过竞争、谈判和辩论来优化决策过程,淘汰错误策略。这种多元化的互动模式使得多智能体系统能够应对更为复杂和动态的环境,展现出比单一智能体更加强大和灵活的问题解决能力。

【4.2 京东零售的AI Agent应用】

在复杂业务模型自主规划层面,京东零售基于ReAct范式构建Agent LLM,帮助大语言模型理解上下文,精确把握用户意图,并在复杂情况下做出决策、执行任务和使用工具。 ReAct范式结合了推理(Reasoning)与行动(Acting)机制,通过生成交替的推理路径和特定行动,优化模型的决策制定和执行流程,以及与外部资源的有效交互。此过程中,推理路径为模型提供了对行动计划的追踪与更新机制,而具体的行动则使模型能够与外部工具进行直接交互。这种交替机制增强了模型在复杂情景下的决策和多应用调度的精确度。

以常见的商家助手场景为例,随着越来越多的商家入驻京东平台,关于平台入驻规则、产品营销策略等方面的提问逐渐增多,传统的智能客服、人工回复等方式无法精准回复商家提问,且运营成本较高。京东零售基于Multi-Agents理念搭建的商家助手大模型在线推理服务架构,打通数据系统、算法系统和业务系统,不仅能够帮助商家快速了解平台规则、优化经营策略,还能通过自然语言交互提供个性化、多轮次的即时沟通服务。 这一系统的核心是算法层多个定制的AI Agents,每个Agent都有专门角色和功能,可以调用不同的工具来解决相应的问题。例如,当商家就如何提升某个商品的销量提出问题,AI Agent首先对商家提问进行语义理解,精准识别出商家的具体需求,然后调用商品信息查询的API接口,快速获取所需的数据和信息,并据此给出个性化的销量提升建议。

商家助手大模型在线推理服务架构

目前京东零售的Agent LLM已经应用于零售业务知识库构建,成功服务于商家、消费者、企业、门店等多类的用户群体,涵盖多种复杂使用场景,并支持通过工具调用来解决多流程的复杂业务问题。

五、结语

综上,九数算法中台的大模型基础应用框架融合基于ReAct框架的AI Agent、SFT(指令微调)与RAG(检索增强生成)技术,显著提高了大语言模型在零售业务的应用效率和效果。通过这一系列技术融合和创新,京东零售成功地将大模型的强大能力应用于人、货、场场景中,在人场,提供面向用户与商家的智能助手服务,如:商家助手、用户增长等;在货场,提供面向商品的知识问答服务,如:知识问答等;在场域,提供面向场域的智能运营服务,如:舆情风险挖掘、数据分析等。 零售大模型应用不仅提升了用户体验,优化了运营效率,还为零售行业的数智化转型提供了有力支撑,展现了大模型技术在零售领域广泛应用的巨大潜力和价值。

作者:京东零售技数中心

来源:京东零售技术 转载请注明来源

更多年度盘点文章

端智能:面向手机计算环境的端云协同AI技术创新

亚洲唯一!京东荣获2024年度Gartner供应链技术创新奖背后的创新探索

万字干货-京东零售数据资产能力升级与实践

2023京东零售技术年度盘点

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

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

相关文章

Linux 安装k8s

官网 常见的三种安装k8s方式 1.kubeadm 2.kops:自动化集群制备工具 3.kubespray: 提供了 Ansible Playbook 下面以kubeadm安装k8s kubeadm的安装是通过使用动态链接的二进制文件完成的,目标系统需要提供 glibc ##使用 ss 或者 netstat 检测端…

搞流量,就这点事!

资产还是负债?赚钱之前想明白! 如果说你有一个产品,大概率的情况是,如果产品被更多人看到,那么最终购买的人也会多一些。结果就是,你的利润更多。所以,在产品没问题的情况下,流量越多…

【学习心得】响应数据加密的原理与逆向思路

一、什么是响应数据加密? 响应数据加密是常见的反爬手段的一种,它是指服务器返回的不是明文数据,而是加密后的数据。这种密文数据可以被JS解密进而渲染在浏览器中让人们看到。 它的原理和过程图如下: 二、响应数据加密的逆向思路 …

MATLAB 绘制带填充配色的雷达图--附案例代码

MATLAB 绘制带填充配色的雷达图 目录 MATLAB 绘制带填充配色的雷达图摘要1. 准备数据2. 绘制雷达图3. 设置填充颜色4. 案例代码及结果4. 结语 摘要 在MATLAB 中,可以使用多种方式绘制美观的雷达图。本文将介绍如何通过详细案例和代码说明,在MATLAB中绘制…

MCU设计--M3内核整体功能说明

整体架构 内核特性 CM3内核支持3级流水哈佛结构 :数据和指令隔离Blanked SP :两个堆栈,一个堆栈只允许系统操作,另一个堆栈开放给用户。Handler and Thread modes低延迟中断进入和退出支持非对齐操作 嵌套中断向量 最大支持1-240…

前端+php:实现提示框(自动消失)

效果 php部分&#xff1a;只展示插入过程 <?php//插入注册表中$sql_insert "INSERT INTO regist_user(userid,password,phone,email)VALUES (" . $_POST[UserID] . "," . CryptPass($_POST[Password]) . "," . $_POST[Phone] . ",&qu…

【AI视野·今日NLP 自然语言处理论文速览 第八十期】Fri, 1 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 1 Mar 2024 Totally 67 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Loose LIPS Sink Ships: Asking Questions in Battleship with Language-Informed Program Sampling Authors G…

从零开始学习Netty - 学习笔记 -Netty入门【协议设计和解析】

2.协议设计和解析 协议 在计算机中&#xff0c;协议是指一组规则和约定&#xff0c;用于在不同的计算机系统之间进行通信和数据交换。计算机协议定义了数据传输的格式、顺序、错误检测和纠正方法&#xff0c;以及参与通信的各个实体的角色和责任。计算机协议可以在各种不同的层…

探索云原生世界:Spring Cloud全方位解读——构建微服务架构的利器

目录 一、微服务简介 二、微服务发展史 三、Spring Cloud 3.1 Spring Cloud 版本策略 3.2 Spring Cloud 发展历程 微服务是一种软件架构风格&#xff0c;将单一应用程序拆分成一组小型、独立的服务。每个服务运行在自己的进程中&#xff0c;服务之间采用轻量级通信机制进行交…

Open3D 进阶(21)无序点云平面检测的鲁棒统计方法

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法过程 除了寻找具有最大支持的单个平面外,Open3D还包含一个算法,该算法使…

【Java EE初阶二十九】Linux 系统的学习

当前写的博客系统程序,只是部署在咱们自己的电脑上,其他用户是无法直接访问的.由于 NAT 机制的存在,导致了IP 地址就被分成了 内网 IP 和 外网 IP. 云服务器,包括公司中使用专用服务器,一般都是 Linux 系统&#xff0c;这个系统的使用和 Windows 差异很大.(通过命令行来操作的系…

Jupyter Notebook的安装和使用(windows环境)

一、jupyter notebook 安装 前提条件&#xff1a;安装python环境 安装python环境步骤&#xff1a; 1.下载官方python解释器 2.安装python 3.命令行窗口敲击命令pip install jupyter 4.安装jupyter之后&#xff0c;直接启动命令jupyter notebook,在默认浏览器中打开jupyte…

测试环境搭建整套大数据系统-问题篇(一:实时遇到的问题)

1. java.io.IOException: Failed to deserialize JSON ‘{“age”:867,“sex”:“fba8c074f9”,“t_insert_time”:“2024-03-04 14:12:24.821”}’ 解决方式 修改数据类型。将TIMESTAMP_LTZ改为TIMESTAMP。 2. java. lang,classNotFoundException: org,apache.flink,streami…

典中典之西电A测-气压测控仿真系统

兄弟,如果你看到这篇,只能说明你A测也挂了,没办法,哥们太菜了,抄的太假过不了你电有些老师的慧眼 这坨&#x1f415;⑩我先吃为敬 环境搭建可以参考这个兄弟的博客 一、题目要求 实现功能&#xff1a;使用 Arduino UNO 微控制器&#xff0c;搭建一个 PC 上位机远程气压检测控…

账号管理支持批量测试资产可连接性,资产管理支持通过标签方式选择资产,JumpServer堡垒机v3.10.4 LTS版本发布

2024年3月4日&#xff0c;JumpServer开源堡垒机正式发布v3.10.4 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和优化&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS最新版本&#xff0c;以获得更佳的使用体验。 在v3.10.4 LTS版本中&a…

ChromeDriver全版本下载教程

确定自己的Chrome版本 step1. 打开Chrome浏览器右上角的三个点&#xff0c;再点击设置 step2. 在设置中点击“关于Chrome”&#xff0c;圈起来的红框即为当前Chrome版本&#xff0c;我的版本就是121.0.6167.185 在json中查找自己对应ChromeDriver版本下载链接 一般教程会让你…

【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数

作者推荐 【二分查找】【C算法】378. 有序矩阵中第 K 小的元素 涉及知识点 树 异或 DFS时间戳 LeetCode2322. 从树中删除边的最小分数 存在一棵无向连通树&#xff0c;树中有编号从 0 到 n - 1 的 n 个节点&#xff0c; 以及 n - 1 条边。 给你一个下标从 0 开始的整数数组…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏&#xff1a;http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…

MATLAB:Image Processing Toolbox工具箱入门实战

目录 1.基本图像导入、处理和导出 2.实战项目一&#xff1a;利用imfindcircles()函数检测和测量图像中的圆形目标 1.基本图像导入、处理和导出 Basic Image Import, Processing, and Export- MATLAB & SimulinkThis example shows how to read an image into the worksp…

Java集合框架-Collection和Map

文章目录 Collection-单列集合特点ListArrayListLinkedListVecter SetHashSetTreeSet Map-键值对集合特点Map常用APIput添加细节remove Map的三种遍历方式1.通过键找值2.通过"键值对"3.Lambda表达式foreach源码 HashMap需求 为什么要使用泛型 泛型的优点1.集合中存储…