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

LangChain概述

文章目录

    • 为什么需要LangChain
    • LLM应用开发的最后1公里
    • LangChain的2个关键词
    • LangChain的3个场景
    • LangChain的6大模块

为什么需要LangChain

    首先想象一个开发者在构建一个LLM应用时的常见场景。当你开始构建一个新项目时,你可能会遇到许多API接口、数据格式和工具。对于一个非AI领域的开发者来说,要去研究每一个工具、接口都有着巨大的负担。现在,假设你要构建一个涉及语言处理的应用,比如一个智能聊天机器人,你可能会想:我难道要一步步去学习如何训练一个语言模型,如何处理各种数据,还要解决所有的兼容性问题吗?这就是LangChain的价值所在。LangChain是一个集成框架,它为开发者提供了一系列的工具和组件,使得与语言模型中各种数据(如Google Analytics、Stripe、SQL、PDF、CSV等)的连接、语言模型的应用和优化变得简单直接。其实,LangChain就好比一把“瑞士军刀”,你不再需要为每一个任务找一个新工具,它提供了一站式的解决方案。正如你要修理一个小小的家用电器,而你已经拥有了一个完整的工具箱。不管你遇到什么问题,打钉子、拧螺丝、剪线,工具箱里总有一个合适的工具等着你。

LangChain为你提供了这样的工具箱,不仅涵盖了基础工具,还为个性化需求提供了自定义组件解决方案。现在,随着LangChain在开发者社区中的受欢迎程度逐渐上升,可以明显地看到使用LangChain的开发者数量呈现激增的趋势。2023年8月,LangChain开源框架已经收获了惊人的数据:5.82万个星标、557位专注开发者,以及7800位积极的分支开发者。这些数字从深层次上代表了众多开发者对LangChain实用性和未来潜力的坚定认可。正是因为LangChain连接了开发者和复杂的LLM应用,因此,开发变得更为简单、高效。也因为这种受欢迎程度和媒体报道的广泛传播,越来越多的开发者,不论是LLM领域的还是非LLM领域的,都选择使用LangChain。

LLM应用开发的最后1公里

想象一下,一个对编程完全陌生的初学者,正面临着如何与模型进行交互的诸多问题,哪怕是简单的GET或POST请求,都可能成为其开发路上的第一道门槛。而LangChain的存在恰恰能跨越这道门槛,使得LLM应用开发变得触手可及。

首先,LangChain的简洁性让它脱颖而出。开发者只需要写儿行代码,就能运行一个大型LLM程序,甚至快速构建一个响应式的机器人。这种简洁性意味着,无论是对于有经验的开发者还是初人此领域的新手,LangChain都能为他们进入LLM应用开发的世界铺平道路。

LangChain还为开发者集成了丰富的内置链组件,为开发者解决了重复编写代码的问题。面对特定的任务,如摘要或问答,LangChain提供了专门的摘要链和问答链,简化了开发流程。Agent的引入将工具和数据库的整合提升到了一个新的层次,使得开发者可以全心投人任务。

借助LangChain,开发者除了可以实现LLM与真实世界的在线数据增强,即RAG(检索增强生成),还能在私有环境中部署模型,或是针对特定任务选择更精确的模型平台及型号,甚至随时切换各大平台推出的新模型。而对于那些未选择使用LangChain的开发者来说,他们很可能会被各模型平台的接口选择、提示词的编写,以及输出格式的处理等问题所困扰,这些复杂的问题会成为开发过程中的巨大障碍,甚至导致开发者“从人门到放弃”。

在LLM应用开发中,一个经常被遗漏但至关重要的环节是,如何为LLM编写合适的提示词,确保LLM能够准确理解开发者的意图。对于许多开发者,特别是初学者来说,这可能是一个具有挑战性的任务。然而,LangChain为这一问题提供了有力的解决方案。

对于那些在模型提示词编写上感到困惑的开发者来说,LangChain提供了多种模板供选择。这并不仅仅是一些随意整合的模板,而是与各种应用、工具紧密集成的组件,其中包含了大量已经经过实际验证的提示词模板。这意味着开发者无须从零开始编写程序,只需要在LangChain提供的模板中找到与任务相匹配的部分,并进行相应的调整即可。

以SQL查询为例,这是一个对许多开发者来说相对熟悉,但在与LLM结合时可能存在困惑的领域。如果一个开发者刚开始接触如何为SQL编写提示词,他可以轻松地在LangChain中找到SQL组件的提示词模板。这些模板中包括如何编写语法正确的PostgreSQL查询、如何查看查询结果,以及如何返回针对输入问题的答案。更进一步,LangChain提供的提示词模板也包括各种查询的最佳实践,如限制PostgreSQL查询结果、正确使用列名、注意使用当前日期的函数等。例如,LangChain提供了以下格式化SQL提示词模板(翻译):

1 你是一个PostgreSQL专家。给定一个输人问题,首先创建一个语法正确的PostgreSQL查询来运行,然后查看查询结果,并返回针对输人问题的答案。
2 除非用户明确指定了要返回的结果数量,否则应使用PostgreSQL的LIMT子句来限制查询结果,最多返回topk条记录。你可以对结果进行排序,以返回数据库中最有信息价值的数据。
3 绝对不要查询表中的所有列。你只能查询回答问题所需的列。用双引号(")将每个列名包裹起来,表示它们是界定的标识符。
4 注意只使用你在表中可以看到的列名,不要查询不存在的列。此外,要注意哪一列在哪个表中。
5 如果问题涉及“今天”,请注意使用CURRENT DATE函数获取当前日期。
6 
7 使用以下格式:
8 
9 问题:这里的问题
10 SQL查询:要运行的SQL查询
11 SQL结果:SQL查询的结果
12 答案:这里的最终答案
13 
14 只使用以下表:
15
16 {table info)
17
18 问题:{inpu}

t想象一下,如果没有LangChain提供的这个提示词模板,当你要开始编写一段SQL查询代码时,会走多少弯路?LLM应用开发的最后1公里,其意义是确保开发者无须为了一个小细节而多走弯路,正如居民无须跑很远坐公交车一样,每一个关键的细节都能得到及时而准确的处理,使得整个开发过程更为高效。

LangChain的2个关键词

在现代软件工程中,如何将庞大复杂的系统划分为更小、更易于管理和使用的部分,已经成了设计和开发的核心考量。在这个背景下,LangChain以“组件”和“链”作为2个关键概念,为LLM应用开发者提供了便利。

首先来谈谈“组件”。在LangChain中,组件不是代码的拼凑,而是一个具有明确功能和用途的单元。组件包括LLM模型包装器、聊天模型包装器及与数据增强相关的一系列工具和接口。这些组件就是LangChain中的核心,你可以把它们看作数据处理流水线上的各个工作站。每个组件都有其特定的职责,如处理数据的输入输出、转化数据格式。

然而,单纯的组件还不足以满足复杂应用的需求,这时“链”便显得尤为关键。在LangChain的体系中,链是将各种组件连接在一起的纽带,它能够确保组件之间的无缝集成和在程序运行环境中的高效调用。无论是对于LLM还是其他工具,链都扮演着至关重要的角色。举个例子,LLMChain,这是LangChain中最常用的链,它可以整合LLM模型包装器和记忆组件,让聊天机器人拥有“记忆”。

值得一提的是,LangChain并没有止步于提供基础的组件和链。反之,它进一步为这些核心部分提供了标准的接口,并与数据处理平台及实际应用工具紧密集成。这样的设计不仅强化了LangChain与其他数据平台和实际工具的连接,也确保了开发者能在一个开放且友好的环境中轻松地进行LLM应用开发。

以最常见的聊天机器人为例,为了在各种场景中为用户提供自然、流畅的对话体验,聊天机器人需要具备多种功能,包括与用户进行日常交流、获取天气信息及实时搜索。这一设计目标意味着要处理的任务范围覆盖了从简单的日常对话到复杂的信息查询,因此,一个结构化、模块化的设计方案是必要的。

在此背景下,LangChain的“组件”和“链”提供了极大的帮助。利用LangChain的组件,开发者可以为聊天机器人设计不同的模块,如与用户进行日常交流的模块、获取天气信息的模块及进行实时搜索的模块。每个模块中的组件都具备特定的功能,并专门处理与之相关的任务。例如,当需要回答关于天气的问题时,机器人可以调用“搜索工具组件”来获取天气信息数据。

但是,单纯的组件无法满足机器人的整体运作。为了确保组件之间可以协同工作并为用户提供顺畅的体验,需要用到LangChain的“链”来整合这些组件。例如,当用户询问一个涉及多个组件的问题时,如“今天天气怎么样,同时告诉我量子力学是什么”,LangChain的链就可以确保“搜索工具组件”和“维基百科查询组件”协同工作,为用户提供完整的回答。

具体来说,当用户提出问题时,LangChain提供的API允许机器人执行以下操作:

  1. 请求LLM解释用户的输人,并根据输人内容生成对应的查询请求,这可能涉及一个或多个组件;
  2. 根据生成的查询请求,激活对应的组件以获取必要的数据或信息;
  3. 利用LLM生成基于自然语言的回答,将各组件的返回结果整合为用户可以理解的回答。

通过这种方式,开发者无须深人每一个复杂的处理细节,只需要利用LangChain的API输人用户的问题,并将得到的答案呈现给用户即可。这不仅使聊天机器人能够提供丰富的信息服务,还能确保LLM应用自然而然地融人人们的日常生活,达到设计初衷。

LangChain的3个场景

LangChain正在重新定义LLM应用的开发方式,尤其是在问答系统、数据处理与管理、自动问答与客服机器人这3个场景下。以下是对LangChain在这3个场景下作用的分析。第1个场景是问答系统。问答系统已经成为许多LLM应用的重要组成部分,从简单的搜索工具到复杂的知识库查询工具。LangChain在这方面展现了其出色的能力。

当开发者面临需要从长篇文章或特定数据源中提取信息的挑战时,LangChain可以轻松地与这些外部数据源交互,迅速提取关键信息,然后执行生成操作,以生成准确的回答。

第2个场景是数据处理与管理,如RAG。在数据驱动的当下,RAG成了一个非常热门的LLM应用落地方向。RAG结合了检索和生成两个阶段,为用户提供了更为精准和富有深度的回答。LangChain采用了LEDVR工作流,实现了RAG的功能。

LEDVR工作流将数据处理的每一个步骤标准化,确保了数据从输入到输出的完整性和准确性。首先,开发者会使用文档加载器,如WebBaseLoader,从外部数据源导人所需的数据。这一步确保了数据的完整性和原始性。接着,数据会被传输到嵌人包装器,如OpenAIEmbeddings中。这一步的主要目的是将每一份文档转化为一个能够在机器学习模型中使用的向量。这个向量能够捕获文档的主要特征,使得后续的处理更为高效。

为了更好地处理大量的数据,LangChain中引入了分块转化步骤。通过使用如RecursiveCharacter TextSplitter这样的工具,文档被切割成更小的数据块。这不仅提高了处理速度,还使得每一个数据块都能得到更为精准的处理。当所有的数据块都被处理完毕,它们会被存储到向量存储系统,如FAISS中。这个存储系统能够确保数据的安全,同时也能提供一个高效的查询接口。最后,检索器(如ConversationalRetrievalChain)被用来从向量存储系统中检索相关的文档。这一步结合了用户查询和向量存储系统中的数据,为用户提供了最为相关的回答。

第3个场景是自动问答与客服机器人。在许多在线平台上,客服机器人已经成为用户与公司之间的首要交互点。利用LangChain,开发者成功构建了能够实时响应用户查询的客服机器人。这种实时响应得益于LangChain的Agent功能,其中涉及LLM决策,并根据反馈不断优化交互的过程。这样的设计使客服机器人不仅能够及时响应,还能提供更加精确的信息或解决方案。LangChain已经在这3个关键场景中展现了强大的潜力,为开发者提供了实用且强大的工具,使开发者可以更加高效地实现各种开发需求。

LangChain的6大模块

针对LLM应用开发者的需求,LangChain推出了6大核心模块。如下图所示,这些模块覆盖了从模型I/O到数据增强,从链到记忆,以及从Agent到回调处理器的全方位功能。借助这些模块中的包装器和组件,开发者能够更为方便地搭建LLM应用。

图片名称
  1. 模型I/O(Model IO):对于任何大语言模型应用来说,其核心无疑都是模型自身。LangChain提供了与任何大语言模型均适配的模型包装器(模型I/O的功能),分为LLM和聊天模型包装器(Chat Model)。模型包装器的提示词模板功能使得开发者可以模板化、动态选择和管理模型输人。LangChain自身并不提供大语言模型,而是提供统一的模型接口。模型包装器这种包装方式允许开发者与不同模型平台底层的API进行交互,从而简化了大语言模型的调用,降低了开发者的学习成本。此外,其输出解析器也能帮助开发者从模型输出中提取所需的信息。
  2. 数据增强(Data Connection):许多LLM应用需要的用户特定数据并不在模型的训练集中。LangChain提供了加载、转换、存储和查询数据的构建块。开发者可以利用文档加载器从多个来源加载文档,通过文档转换器进行文档切割、转换等操作。
    矢量存储和数据检索工具则提供了对嵌人数据的存储和查询功能。
  3. 链(Chain):单独使用LLM对于简单应用可能是足够的,但面对复杂的应用,往往需要将多个LLM模型包装器或其他组件进行链式连接。LangChain为此类“链式”应用提供了接口。
  4. 记忆(Memory):大部分的LLM应用都有一个对话式的界面,能够引用之前对话中的信息是至关重要的。LangChain提供了多种工具,帮助开发者为系统添加记忆功能。记忆功能可以独立使用,也可以无缝集成到链中。记忆模块需要支持两个基本操作,即读取和写入。在每次运行中,链首先从记忆模块中读取数据,然后在执行核心逻辑后将当前运行的输人和输出写人记忆模块,以供未来引用。
  5. Agent:核心思想是利用LLM选择操作序列。在链中,操作序列是硬编码的,而在Aget代理中,大语言模型被用作推理引擎,确定执行哪些操作,以及它们的执行顺序。
  6. 回调处理器(Callback):LangChain提供了一个回调系统,允许开发者在LLM应用的各个阶段对状态进行干预。这对于日志记录、监视、流处理等任务非常有用。通过API提供的callbacks参数,开发者可以订阅这些事件。

相关文章:

LangChain概述

文章目录 为什么需要LangChainLLM应用开发的最后1公里LangChain的2个关键词LangChain的3个场景LangChain的6大模块 为什么需要LangChain 首先想象一个开发者在构建一个LLM应用时的常见场景。当你开始构建一个新项目时,你可能会遇到许多API接口、数据格式和工具。对于…...

Ubuntu 16.04安装Lua

个人博客地址:Ubuntu 16.04安装Lua | 一张假钞的真实世界 在Linux系统上使用以下命令编译安装Lua: curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz tar zxf lua-5.3.3.tar.gz cd lua-5.3.3 make linux test 安装make 编译过程如果提示以下信息…...

独立开发者产品日刊:将 Figma 设计转化为全栈应用、对话 PDF生成思维导图、视频转 AI 笔记、AI问答引擎、Mac 应用启动器切换器

独立开发者产品日刊,每日汇集 ProductHunt 热榜产品介绍,用一个 Slogan 帮你概括产品内容,期望能够让你快速浏览get最新产品创意,激发在产品上的灵感。 Lovable Builder.io Slogan:将 Figma 设计转化为全栈应用 类别…...

【算法】经典博弈论问题——威佐夫博弈 python

目录 威佐夫博弈(Wythoff Game)【模板】 威佐夫博弈(Wythoff Game) 有两堆石子,数量任意,可以不同,游戏开始由两个人轮流取石子 游戏规定,每次有两种不同的取法 1)在任意的一堆中取走任意多的石子 2)可以在两堆中同时取走相同数量…...

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具,旨在通过自然语言交互和强大的算法能力,帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户,使数据分析变得简单高效。 核心功能 自然语言交互&#x…...

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…...

1.23学习记录

web XYNU2024信安杯 哎~想她了 源代码找到提示,访问页面第一层数组绕过,第二层发现ls /可以执行,接着用less代替tac和cat less /fl[a-z]g exp: URL/?fj1[]1&fj2[]2&cmdless /fl[a-z]gmisc [SWPU 2020]套娃 下载附件…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective(三) 文章概括 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…...

NeetCode刷题第17天(2025.1.27)

文章目录 086 Course Schedule II 课程安排二087 Graph Valid Tree 图有效树088 Number of Connected Components in an Undirected Graph 无向图中的连接组件数量 086 Course Schedule II 课程安排二 您将获得一个数组 prerequisites ,其中 prerequisites[i] [a,…...

Seed Edge- AGI(人工智能通用智能)长期研究计划

Seed Edge 是字节跳动豆包大模型团队推出的 AGI(人工智能通用智能)长期研究计划12。以下是对它的具体介绍1: 名称含义 “Seed” 即豆包大模型团队名称,“Edge” 代表最前沿的 AGI 探索,整体意味着该项目将在 AGI 领域…...

企业知识管理推动企业整体效能提升与创新能力发展的路径探索

内容概要 企业知识管理是指通过对组织内外部知识的识别、获取、整合与应用,提升企业整体运营效能与竞争力的一系列管理活动。其重要性在于,知识作为一种无形资产,能够显著影响企业的决策质量和创新能力。在当今快速发展的市场环境中&#xf…...

【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么

刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后,逐渐搞懂了这…...

ZZNUOJ(C/C++)基础练习1000——1010(详解版)

目录 1000 : AB Problem C语言版 C版 1001 : 植树问题 C语言版 C版 1002 : 简单多项式求和 C语言版 C版 1003 : 两个整数的四则运算 C语言版 C版 1004 : 三位数的数位分离 C语言版 C版 补充代…...

volatile之四类内存屏障指令 内存屏障 面试重点 底层源码

目录 volatile 两大特性 可见性 有序性 总结 什么是内存屏障 四个 CPU 指令 四大屏障 重排 重排的类型 为什么会有重排? 线程中的重排和可见性问题 如何防止重排引发的问题? 总结 happens-before 和 volatile 变量规则 内存屏障指令 写操作…...

【deepseek】deepseek-r1本地部署-第二步:huggingface.co替换为hf-mirror.com国内镜像

一、背景 由于国际镜像国内无法直接访问,会导致搜索模型时加载失败,如下: 因此需将国际地址替换为国内镜像地址。 二、操作 1、使用vscode打开下载路径 2、全局地址替换 关键字 huggingface.co 替换为 hf-mirror.com 注意:务…...

Lesson 121 The man in a hat

Lesson 121 The man in a hat 词汇 customer n. 顾客,回头客 相关:Customs 注意大写 n. 海关,关税    custom n. 1. 风俗习惯【通常是复数】    例句:这些是中国人的习俗。       These are Chinese customs.    …...

Excel中LOOKUP函数的使用

文章目录 VLOOKUP(垂直查找):HLOOKUP(水平查找):LOOKUP(基础查找):XLOOKUP(高级查找,较新版本Excel提供): 在Excel中&…...

【Convex Optimization Stanford】Lec3 Function

【Convex Optimization Stanford】Lec3 Function 前言凸函数的定义对凸函数在一条线上的限制增值扩充? 一阶条件二阶条件一些一阶/二阶条件的例子象集和sublevel set关于函数凸性的扩展(Jesen Inequality)保持函数凸性的操作非负加权和 & 仿射函数的…...

香港维尔利健康科技集团重金投资,内地多地体验中心同步启动

香港维尔利健康科技集团近期宣布,将投资数亿港元在内地多个城市建立全新的健康科技体验中心。这一战略举措旨在进一步拓展集团在内地市场的布局,推动创新医疗技术的普及和应用。 多地布局,覆盖主要城市 据悉,维尔利健康科技集团将…...

2025春晚临时直播源接口

临时接口 https://lualist.kooldns.cn/d/%E6%96%87%E4%BB%B6/%E4%B8%B4%E6%97%B6.txt?signCuMCVC5Q0Sb4wA8OQVdNep55oKtaiSxT1du4-DgWeOo:0 备用接口 https://vip.123pan.cn/1833444709/q/%E4%B8%B4%E6%97%B6.txt...

二叉树的层序遍历||力扣--107

目录 题目 思路 代码 题目 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 输入:root [3,9,20,null,null,15,7] 输出…...

DeepSeek LLM解读

背景: 量化巨头幻方探索AGI(通用人工智能)新组织“深度求索”在成立半年后,发布的第一代大模型DeepSeek试用地址:DeepSeek ,免费商用,完全开源。作为一家隐形的AI巨头,幻方拥有1万枚…...

如何写美赛(MCM/ICM)论文中的Summary部分

美赛(MCM/ICM)作为一个数学建模竞赛,要求参赛者在有限的时间内解决一个复杂的实际问题,并通过数学建模、数据分析和计算机模拟等手段给出有效的解决方案。在美赛的论文中,Summary部分(通常也称为摘要)是非常关键的,它是整个论文的缩影,能让评审快速了解你解决问题的思…...

C++ 拷贝构造

拷贝构造函数会在以下几种场景中被调用: 1. 用一个对象显式初始化另一个对象。 2. 对象按值传递给函数。 3. 函数按值返回对象。 4. 将对象插入到容器中。 5. 明确调用拷贝构造函数。 1. 当用一个对象显式初始化另一个对象时 MyClass obj1("Hello"); MyClass obj2…...

kotlin内联函数——runCatching

1.runCatching作用 代替try{}catch{}异常处理,用于捕获异常。 2.runCatching函数介绍 参数:上下文引用对象为参数返回值:lamda表达式结果 调用runCatching函数,如果调用成功则返回其封装的结果,并可回调onSuccess函…...

代码随想录算法训练营第三十八天-动态规划-完全背包-322. 零钱兑换

太难了 但听了前面再听这道题感觉递推公式也不是不难理解 动规五部曲 dp[j]代表装满容量为j(也就是目标值)的背包最少物品数量递推公式:dp[j] std::min(dp[j], dp[j - coins[i]] 1)当使用coins[i]这张纸币时,要向前找到容量为…...

跨域问题及解决方案

跨域问题不仅影响开发效率,还可能导致项目进度延误。因此,理解和掌握跨域问题的原理及其解决方案对于前端开发者和后端开发者来说都至关重要。本文将详细介绍什么是跨域、跨域产生的原因,以及常见的后端跨域解决方案。 文章目录 一、什么是跨…...

Python Matplotlib库:从入门到精通

Python Matplotlib库:从入门到精通 在数据分析和科学计算领域,可视化是一项至关重要的技能。Matplotlib作为Python中最流行的绘图库之一,为我们提供了强大的绘图功能。本文将带你从Matplotlib的基础开始,逐步掌握其高级用法&…...

相互作用感知的蛋白-小分子对接模型 - Interformer 评测

Interformer 是一个应用于分子对接和亲和力预测的深度学习模型,基于 Graph-Transdormer 架构的模型,利用相互作用(氢键、疏水)感知的混合密度网络(interaction-aware mixture den sity network, MDN&#x…...

力扣【669. 修剪二叉搜索树】Java题解

一开始在想为什么题目说存在唯一答案。然后发现是二叉搜索树就合理了。如下图:如果0节点小于low,那其左子树也都小于low,故可以排除;对于4,其右子树也是可以排除。 代码如下: class Solution {public Tre…...

装机爱好者的纯净工具箱

对于每一位电脑用户来说,新电脑到手后的第一件事通常是检测硬件性能。今天为大家介绍一款开源且无广告的硬件检测工具——入梦工具箱。 主要功能 硬件信息一目了然 打开入梦工具箱,首先看到的是硬件信息概览。这里不仅包含了内存、主板、显卡、硬盘等常…...

Spring Boot 实现文件上传和下载

文章目录 Spring Boot 实现文件上传和下载一、引言二、文件上传1、配置Spring Boot项目2、创建文件上传控制器3、配置文件上传大小限制 三、文件下载1、创建文件下载控制器 四、使用示例1、文件上传2、文件下载 五、总结 Spring Boot 实现文件上传和下载 一、引言 在现代Web应…...

【开源免费】基于SpringBoot+Vue.JS在线考试学习交流网页平台(JAVA毕业设计)

本文项目编号 T 158 ,文末自助获取源码 \color{red}{T158,文末自助获取源码} T158,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

Electron学习笔记,安装环境(1)

1、支持win7的Electron 的版本是18,这里node.js用的是14版本(node-v14.21.3-x86.msi)云盘有安装包 Electron 18.x (截至2023年仍在维护中): Chromium: 96 Node.js: 14.17.0 2、安装node环境,node-v14.21.3-x86.msi双击运行选择安…...

个人通知~~~

因学业问题,作品发布比较【慢】所以将间隔调整为3天一作 另外声明:二月一号正式改名:饼干帅成渣 (谐音) 没关住的快关注,求求了。不求点赞,评论,收藏。 最后祝大家新年快乐&…...

C# 中 [MethodImpl(MethodImplOptions.Synchronized)] 的使用详解

总目录 前言 在C#中,[MethodImpl(MethodImplOptions.Synchronized)] 是一个特性(attribute),用于标记方法,使其在执行时自动获得锁。这类似于Java中的 synchronized 关键字,确保同一时刻只有一个线程可以执…...

盛水最多的容器

hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧! function maxArea(height) {// 初始化最大水量为 0let maxWater 0;// 初始化左指针,指向数组的第一个元素let left 0;// 初始化右指针&#xf…...

数据分析系列--①RapidMiner软件安装

目录 一、软件下载及账号注册 1.软件下载 1.1 CSDN下载国内下载,国内镜像相对快,点击下载 1.2 官网软件下载地址:AI Studio 2025.0 ,服务器在国外相对较慢. 2.软件注册 2.1 点击 注册界面 开始注册,如图: 3.邮箱验证 二、软件安装 1. 新年文件夹,名字最好为英文名 2. 双…...

DeepSeek-R1:开源Top推理模型的实现细节、使用与复现

核心观点 ● 直接用强化学习就可以让模型获得显著的推理能力,说明并不一定需要SFT才行。 ● 强化学习并不一定需要复杂的奖励模型,使用简单的规则反而取得意想不到的效果。 ● 通过知识蒸馏让小模型一定程度上也有推理能力,甚至在某些场景下…...

Linux(19)——使用正则表达式匹配文本

新年快乐! 目录 一、正则表达式: 二、通过 grep 匹配正则表达式: 三、查找匹配项: 一、正则表达式: 正则表达式使用模式匹配机制查找特定内容,vim、grep 和 less 命令都可以使用正则表达式,P…...

STM32 对射式红外传感器配置

这次用的是STM32F103的开发板(这里面的exti.c文件没有how to use this driver 配置说明) 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成,M3固定安装孔,有输出状态指示灯,输出高电平灯灭,输出…...

2025年1月25日(赋值前引用)

pycharm 提示&#xff1a; 局部变量 ‘start_time’ 可能在赋值前引用 局部变量 ‘stop_time’ 可能在赋值前引用 Traceback (most recent call last):File "/home/raspberry/Desktop/python/01_其他/04_超声波/ml_01_超声波测距.py", line 63, in <module>mai…...

C++基础(1)

目录 1. C发展历史 2. C第一个程序 3. 命名空间 3.1 namespace的价值 3.2 命名空间的定义 3.3 命名空间的使用 4. C输入和输出 5. 缺省参数 6. 函数重载 6.1 实现函数重载的条件 6.2 函数重载的应用 1. C发展历史 C的起源可以追溯到1979年&#xff0c;当时Bjarne…...

【第十天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-两种常见的字符串算法(持续更新)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的字符串算法2.字符串算法3.详细的字符串算法1&#xff09;KMP算法2&#xff09;Rabin-Karp算法 总结 前言…...

开发者交流平台项目部署到阿里云服务器教程

本文使用PuTTY软件在本地Windows系统远程控制Linux服务器&#xff1b;其中&#xff0c;Windows系统为Windows 10专业版&#xff0c;Linux系统为CentOS 7.6 64位。 1.工具软件的准备 maven&#xff1a;https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-m…...

一次端口监听正常,tcpdump无法监听到指定端口报文问题分析

tcpdump命令&#xff1a; sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各个部分的详细解释&#xff1a; 1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。 2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡&#xff09;&#xff0c;即计算机该指定网络接口捕…...

【C++题解】1393. 与7无关的数?

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1393. 与7无关的数&#xff1f; 类型&#xff1a;简单循环 题目描述&#xff1a; 一个整数&#xff0c;如果这个数能够被 7 整除&#xff0c;或者其中有一位是7&#xff0c;我们称…...

【自学嵌入式(6)天气时钟:软硬件准备、串口模块开发】

天气时钟&#xff1a;软硬件准备、串口模块开发 软硬件准备接线及模块划分ESP8266开发板引脚图软件准备 串口模块编写串口介绍Serial库介绍 近期跟着网上一些教学视频&#xff0c;编写了一个天气时钟&#xff0c;本篇及往后数篇都将围绕天气时钟的制作过程展开。本文先解决硬件…...

高低频混合组网系统中基于地理位置信息的信道测量算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…...

Kotlin函数式API

Kotlin函数式API 1.maxBy val list listOf("Apple","Banana", "Orange","pear","Grape","Watermelon") val maxLengthFruit list.maxBy {it.length} println(maxLengthFruit) 2.map 集合中zhi的map函数是最…...