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

LangChain框架-Chain 链详解

摘要

        本文基于源码分析与官方文档梳理,系统解析 LangChain 框架中的核心组件 Chain 链,旨在帮助开发者深入理解其设计原理、功能分类及实践应用场景。

  作为 LangChain 的核心机制,Chain 链采用管道-过滤器(Pipe-Filter)架构,通过面向对象函数调用的方式或更高级的LCEL(LangChain Expression Language),以声明式语法将多个功能组件(如模型、检索器、记忆模块等)串联为可复用的工作流。其核心运行逻辑为:以串行化数据流方式传递处理结果,前一环节的输出自动作为下一环节的输入,最终完成复杂任务的端到端执行。

Chain 父类

   Chain 是 LangChain 框架中所有链的抽象基类,定义了链式组件的统一接口与核心生命周期逻辑。它是构建复杂应用(如 RAG、多步推理)的底层基础,支持通过继承实现自定义链或组合内置链。

核心功能

  • 工作流编排

    • 结构化调用序列:通过 _call() 方法编码对模型、检索器、其他链等组件的调用顺序,形成可复用流水线。

    • LCEL 兼容:支持通过 | 运算符与其他组件(如 Runnable)组合,例如 chain = prompt | model | output_parser

  • 状态管理

    • Memory 集成:通过添加 Memory 对象,Chain 类可以实现状态管理。Memory 类在每次链调用的开始和结束时被调用,在开始时通过memory.load_memory_variables() 在调用前加载变量并将其传递给链,在结束时通过memory.save_context()保存返回的变量。使用方式如:

    • chain = ConversationChain(llm=llm, memory=ConversationBufferMemory())

  • 可观测性

    • Callbacks 回调:通过传递 Callbacks 对象,Chain 类可以执行额外的功能,如支持日志、监控等扩展功能,通过 callbacks 属性注入处理器,触发 on_chain_starton_chain_end 、on_chain_error等事件。

  • 可组合性

    • Chain 类的 API 非常灵活,使得它可以轻松地与其他组件(包括其他链)组合在一起,形成更复杂的应用程序。例如:

    • parent_chain = ChainA() | ChainB()

关键属性

属性

作用

memory

状态存储器(如 ConversationBufferMemory),用于跨调用保存上下文信息

callbacks

回调机制,支持日志记录、监控追踪等扩展功能(如StdOutCallbackHandler)。

verbose

调试模式开关,输出详细执行日志。

tags

链调用的分类标签,这些标签将与每次链调用关联用于回调过滤

metadata

元数据(如环境标识),这些元数据将与每次链调用关联,并作为参数传递给 callbacks 中定义的处理程序。

核心方法

  • 执行入口

    • 同步调用

      • invoke(inputs):基础执行方法,返回完整输出字典。

    • 异步调用

      • ainvoke(inputs):异步执行,需子类实现 _acall()

  • 生命周期钩子

    • _call(inputs)抽象方法,子类必须实现核心逻辑(如调用模型、处理文档)。

    • _acall(inputs):异步逻辑入口,默认同步转异步(可覆盖实现)。

  • 输入输出处理

    • prep_inputs(inputs):预处理输入(合并 memory 中的变量)。

    • prep_outputs(outputs):后处理输出(验证结构并更新 memory)。

  • 序列化与调试

    • save(file_path):导出链配置为 JSON/YAML 文件(保留组件参数,不保存运行时状态)。

    • dict():返回链的配置字典(可用于重建对象)。

Chain 链分类

文档处理与组合

类型说明
基础组合
StuffDocumentsChain文档拼接器:将所有文档内容直接拼接为单一上下文字符串,适合短文本场景(需注意 Token 限制)。常用于直接注入完整上下文到 Prompt 中。
MapReduceDocumentsChain分治处理器:先对每个文档独立执行映射操作(如提取关键词),再将结果合并后统一处理(如生成摘要)。适用于大规模文档的并行处理。
RefineDocumentsChain迭代优化器:通过多次迭代逐步完善输出,每次处理部分文档并结合前次结果优化最终内容。适合长文档生成或需渐进式改进的场景。
MapRerankDocumentsChain重排序器:先对每个文档映射处理(如打分),再根据得分排序并筛选高权重文档。常用于优先处理相关性高的内容。
ReduceDocumentsChain文档压缩器:通过截断、摘要或聚类减少文档数量,解决上下文过长问题。例如,将 100 篇文档压缩为 10 篇关键摘要。
create_stuff_documents_chain动态文档拼接链:基于 StuffDocumentsChain 的工厂函数,允许动态生成提示模板并直接拼接所有文档内容。支持自定义文档分隔符、头部/尾部提示词注入,适用于需要灵活控制上下文格式的场景(如生成报告、批量问答)。
摘要与生成
load_summarize_chain摘要流水线:内置预配置链,支持多种摘要模式(Map-Reduce、Refine 等),自动加载文档并生成结构化摘要。
QAGenerationChain问答对生成器:从文档中提取关键信息,自动生成“问题-答案”对,用于构建训练数据或增强检索效果。
AnalyzeDocumentChain文档解析器:分析文档结构(如表格、章节)、提取元数据或识别关键实体(如人名、日期),常用于预处理阶段。

检索与问答

类型说明
基础检索
RetrievalQA检索增强问答:结合检索器(如向量数据库)与 LLM,先检索相关文档,再生成答案。支持多种检索后端(FAISS、Chroma 等)。
VectorDBQA向量数据库问答RetrievalQA 的别名,专为向量数据库设计,支持相似度检索与混合搜索(关键词+向量)。
create_retrieval_chain动态检索链:根据输入动态选择检索策略(如切换不同数据库或调整检索参数),实现灵活适配。
带来源的问答
create_qa_with_sources_chain带来源的问答生成器:生成答案的同时自动关联来源片段(如文档段落),输出结构化结果。
QAWithSourcesChain溯源问答:在答案中标注引用来源(如文档 ID 或段落),适用于需验证可信度的场景(如学术研究)。
RetrievalQAWithSourcesChain检索溯源问答:在 RetrievalQA 基础上追加来源追踪,输出格式为 {"answer": "...", "sources": [...]}
VectorDBQAWithSourcesChain向量数据库溯源问答:针对向量数据库的扩展,记录检索到的向量片段及其元数据。
对话式检索
ConversationalRetrievalChain历史感知检索:结合聊天历史优化检索结果(如根据对话上下文调整查询语句),支持连续多轮问答。
ChatVectorDBChain向量库对话链:旧版对话检索链,已整合至 ConversationalRetrievalChain,专用于向量数据库历史管理。

API 与结构化数据

类型说明
API 调用
APIChain通用 API 调用器:根据自然语言描述生成 API 请求参数(如 URL、Headers),执行调用并解析响应。支持 RESTful 和 GraphQL。(已弃用)被LangGraph 的实现代替。
OpenAPIEndpointChain规范驱动调用器:基于 OpenAPI 规范自动构建 API 请求,确保参数合法性,适用于标准化接口(如 GitHub API)。
LLMRequestsChain请求生成器:利用 LLM 解析用户指令生成 HTTP 请求(如构造查询参数),常用于爬虫或自动化工具。
SimpleRequestChain简易HTTP请求链:执行基础HTTP请求(GET/POST),返回原始响应文本。适用于无需复杂解析的API调用。
数据库与图数据

SQLDatabaseChain

用于 将自然语言转换为 SQL 查询并执行 的链。它允许用户通过自然语言与数据库交互,无需手动编写 SQL 语句。
create_sql_query_chainSQL 生成器:将自然语言转换为 SQL 查询语句,执行后返回结果(需配合 SQLDatabase 组件)。
GraphQAChain图数据库问答:支持多种图数据库(Neo4j、ArangoDB)的通用问答链,自动生成查询语言(如 Cypher)。
GraphCypherQAChainCypher 查询链:专为 Neo4j 设计,生成并执行 Cypher 查询,处理图结构数据(如社交网络分析)。
NeptuneSparqlQAChainSPARQL 查询链:针对 Amazon Neptune 图数据库,支持 RDF 数据查询与语义推理。
ArangoGraphQAChainArangoDB 问答链:专为 ArangoDB(多模型数据库)设计,支持 AQL 查询语言,处理文档、图和键值数据。
FalkorDBQAChainFalkorDB 问答链:针对 FalkorDB(高性能图数据库)优化,兼容 Redis 生态,执行高效图遍历查询。
HugeGraphQAChainHugeGraph 问答链:适配百度 HugeGraph 的问答链,支持 Gremlin 查询,适用于大规模图分析场景。
KuzuQAChainKuzu 问答链:为 KuzuDB(嵌入式图数据库)设计的轻量级链,适合边缘计算或本地化部署。
NebulaGraphQAChainNebulaGraph 问答链:支持 NebulaGraph 的 nGQL 查询语言,擅长分布式图数据的高并发查询。
NeptuneOpenCypherQAChainNeptune OpenCypher 链:兼容 Amazon Neptune 的 OpenCypher 方言,提供与 Neo4j 相似的语法支持。
OntotextGraphDBQAChainOntotext GraphDB 链:专为语义图数据库 GraphDB 设计,支持 SPARQL 和 RDF 推理,适用于知识图谱场景。
GraphSparqlQAChain通用 SPARQL 链:跨图数据库的 SPARQL 查询链,兼容任何支持 SPARQL 协议的存储(如 Virtuoso)。

逻辑与计算

类型说明
数学与验证
LLMMathChain数学计算器:解析数学问题(如方程、单位换算),调用 Python 计算库(如 SymPy)确保结果精确性。
LLMCheckerChain逻辑验证器:检查生成内容的逻辑一致性(如事实矛盾、循环论证),支持多轮修正。
LLMSummarizationCheckerChain摘要校验器:对比原文与摘要的关键信息完整性,防止遗漏或曲解。
路由与多链组合
RouterChain路由选择器:根据输入内容(如意图识别)动态选择子链执行(如区分“客服问答”和“订单查询”)。
MultiPromptChain多提示路由:为不同任务分配专用提示词(Prompt),自动匹配最优提示生成回答。
LLMRouterChainLLM 驱动路由器:利用 LLM 分析输入内容(如意图识别),动态选择最优子链执行。
MultiRetrievalQAChain多检索器路由链:根据问题类型选择不同检索器(如全文检索 vs 向量检索),合并结果生成答案。
MultiRouteChain通用多路由链:支持自定义路由规则(如正则匹配、关键词检测),扩展性更强。
SimpleSequentialChain简易顺序链SequentialChain 的轻量版,仅传递最终结果(不保留中间输出)。
SequentialChain顺序执行器:严格按顺序执行多个链,前链的输出作为后链的输入,支持中间结果传递。

内容生成与增强

类型说明
生成与扩展
HypotheticalDocumentEmbedder (HyDE)假设文档生成器:根据问题生成虚拟文档,提升检索相关性(如“什么是量子计算?”→ 生成假想解释段落用于检索)。
FlareChain不确定性标记器:在生成内容中标记低置信度部分(如 “[可能需要验证]”),提示用户人工审核。
generate_example示例生成工具:根据 Schema 生成结构化示例数据,用于测试或引导模型输出格式。
结构化输出
create_extraction_chain信息抽取器:从文本中提取结构化字段(如 JSON),支持实体、关系、事件抽取(需定义输出 Schema)。
create_tagging_chain分类打标器:为文本添加多标签分类(如情感极性、主题类别),支持开放式或预定义标签集。
create_structured_output_runnable格式强制器:确保输出符合预定义格式(如 Pydantic 模型),防止 LLM 自由发挥导致解析失败。
create_citation_fuzzy_match_chain模糊引文匹配器:从文本中模糊匹配并标准化引文(如论文标题→DOI),支持容错查询。
create_citation_fuzzy_match_runnable可运行版引文匹配:功能同 create_citation_fuzzy_match_chain,但返回 LCEL Runnable 对象,便于流式处理。
create_extraction_chain_pydanticPydantic 抽取器:基于 Pydantic 模型定义输出结构,强制生成符合类型约束的数据(如日期格式校验)。
create_tagging_chain_pydanticPydantic 打标器:使用 Pydantic 模型定义标签枚举,确保分类结果严格匹配预定义选项。
create_qa_with_structure_chain结构化问答生成器:强制问答输出为指定 JSON Schema 格式,适合 API 集成场景。

对话与历史

类型说明
ConversationChain基础对话链:管理多轮对话历史,支持记忆窗口控制(如仅保留最近 5 轮),内置模板处理对话上下文。(已弃用)使用 RunnableWithMessageHistory函数代替。
create_history_aware_retriever历史感知检索器:将对话历史融入检索查询(如重写查询语句),提升长对话场景的连贯性。

安全与审核

类型说明
OpenAIModerationChain内容审核器:调用 OpenAI Moderation API 检测有害内容(如暴力、仇恨言论),自动拦截违规输出。
ConstitutionalChain原则审核器:基于预设伦理原则(如“避免偏见”)修正模型输出,实现 Constitutional AI 的自我修正机制。

问答评估与生成

Chain说明
QAGenerateChain问答对生成链:从文档生成“问题-答案”对,用于构建评估数据集或增强检索。
QAEvalChain问答评估链:对比模型生成的答案与参考答案,输出准确性评分(如BLEU、ROUGE)。
ContextQAEvalChain上下文问答评估链:评估答案在给定上下文中的相关性(是否基于文档内容)。
CotQAEvalChain思维链评估链:评估模型推理过程(Chain-of-Thought)的逻辑一致性,而不仅是最终答案。

其他工具链

类型说明
TransformChain自定义转换器:允许注入任意函数处理数据(如清洗文本、计算特征),作为链式流程的中间节点。
NatBotChain浏览器自动化器:控制浏览器执行点击、表单填写等操作,常用于网页爬取或自动化测试。
load_chain动态加载器:从配置文件(JSON/YAML)加载链定义,支持热更新与模块化部署。

Chain 链的组装方式

函数调用

核心特点
  • 面向过程编程:通过实例化 Chain 对象并调用方法逐步执行。

  • 手动管理流程:需要开发者显式传递输入/输出,适合简单链或调试场景。

语法示例
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate# 定义组件
prompt = PromptTemplate.from_template("翻译成{language}:{text}")
llm = ChatOpenAI(model="gpt-3.5")# 组装链
chain = LLMChain(llm=llm, prompt=prompt)# 执行链(显式传递参数)
result = chain.run(language="法语", text="你好!")  # 输出:"Bonjour !"
适用场景
  • 单链快速测试(如简单问答、翻译)。

  • 需要逐步调试中间结果(如查看生成的 Prompt 内容)。

优缺点
优点缺点
简单直观,学习成本低代码冗余,复杂流程难维护
直接控制每一步输入输出不支持流式、异步等高级特性

LCEL (LangChain Expression Language)

核心特点
  • 声明式编程:用管道符 | 连接组件,类似函数式编程。

  • 自动流程管理:输入/输出自动传递,支持异步、流式、并行等高级模式。

语法示例
from langchain_core.runnables import RunnablePassthrough, RunnableParallel# 定义组件
prompt = PromptTemplate.from_template("翻译成{language}:{text}")
llm = ChatOpenAI(model="gpt-3.5")
output_parser = StrOutputParser()# 组装链(声明式管道)
chain = (RunnableParallel({  # 并行提取参数"language": lambda x: x["lang"],"text": RunnablePassthrough() })| prompt            # 生成 Prompt| llm               # 调用模型| output_parser     # 解析输出
)# 执行链(输入自动路由)
result = chain.invoke({"lang": "法语", "text": "你好!"})  # 输出:"Bonjour !"
适用场景
  • 复杂多步骤流程(如 RAG:检索 → 过滤 → 生成 → 审核)。

  • 需要高性能、流式响应或并发的生产环境。

  • 与其他 LangChain 组件(Agents、Tools)深度集成。

优缺点
优点缺点
代码简洁,流程可视化学习曲线较陡峭
内置异步/流式/批处理调试中间结果需额外配置
无缝组合任意组件对简单任务可能显得过度设计

两种方式对比

维度函数调用LCEL
语法复杂度简单,适合少量步骤灵活,适合多组件编排
调试便利性易于逐步调试需结合 RunnableLambda 插入调试点
性能优化手动实现异步 / 缓存内置异步、缓存、批处理
组件兼容性仅支持 Chain 类支持所有 Runnable 对象
代码可读性面向过程,逻辑分散声明式,流程清晰

 参考文献

使用指南 | LangChain中文网

相关文章:

LangChain框架-Chain 链详解

摘要 本文基于源码分析与官方文档梳理,系统解析 LangChain 框架中的核心组件 Chain 链,旨在帮助开发者深入理解其设计原理、功能分类及实践应用场景。 作为 LangChain 的核心机制,Chain 链采用管道-过滤器(Pipe-Filter&#xff09…...

Java虚拟机 - JVM与Java体系结构

Java虚拟机 JVM与Java体系结构为什么要学习JVMJava与JVM简介Java 语言的核心特性JVM:Java 生态的基石JVM的架构模型基于栈的指令集架构(Stack-Based)基于寄存器的指令集架构(Register-Based)JVM生命周期 总结 JVM与Jav…...

elementUI调整滚动条高度后与固定列冲突问题解决

/* 1. 首先确保基础样式生效 */ .el-table.el-table–scrollable-x .el-table__body-wrapper { overflow-x: auto !important; } /* 2. 设置滚动条高度(对所有表格生效) */ .el-table__body-wrapper::-webkit-scrollbar { height: 10px !important; } …...

基于 nvitop+Prometheus+Grafana 的物理资源与 VLLM 引擎服务监控方案

一、方案背景与目标 在人工智能与高性能计算场景中,对物理资源(尤其是 GPU)的实时监控以及对 VLLM 引擎服务的性能追踪至关重要。本方案通过整合 nvitop、Prometheus 和 Grafana 三大组件,构建一套完整的监控体系,实现…...

互联网大厂Java求职面试:Spring AI与大模型交互在短视频平台中的应用

互联网大厂Java求职面试:Spring AI与大模型交互在短视频平台中的应用 面试场景设定 郑薪苦,一名有着丰富项目经验但总是能用奇葩比喻解释复杂技术的程序员,正在接受某知名互联网大厂技术总监的面试。 第一轮提问 面试官:假设我…...

【Lua】java 调用redis执行 lua脚本

【Lua】java 调用redis执行 lua脚本 public Object executeLuaScript(String script, List<String> keys, Object... args) {// 注意: 这里 Long.class 是返回值类型, 一定要指定清楚 不然会报错return this.redisTemplate.execute(RedisScript.of(j脚本, Long.class), k…...

【工奥阀门科技有限公司】签约智橙PLM

近日&#xff0c;工奥阀门科技有限公司正式签约了智橙泵阀行业版PLM。 忠于质量&#xff0c;臻于服务&#xff0c;精于研发 工奥阀门科技有限公司&#xff08;以下简称工奥阀门&#xff09;坐落于浙江永嘉&#xff0c;是一家集设计、开发、生产、销售、安装、服务为一体的阀门…...

灌区量测水自动化监测解决方案

一、方案背景 随着社会发展和人口增长&#xff0c;水资源需求不断增大。我国水资源总量虽然丰富&#xff0c;但时空分布不均&#xff0c;加之农业用水占比大且效率偏低&#xff0c;使得水资源短缺问题日益凸显。农业用水一直是我国的耗水大户&#xff0c;占全部耗水总量的60%以…...

SpringBoot整合MQTT实战:基于EMQX构建高可靠物联网通信,从零到一实现设备云端双向对话

一、引言 随着物联网(IoT)技术的快速发展&#xff0c;MQTT(Message Queuing Telemetry Transport)协议因其轻量级、低功耗和高效的特点&#xff0c;已成为物联网设备通信的事实标准。本文将详细介绍如何使用SpringBoot框架整合MQTT协议&#xff0c;基于开源MQTT代理EMQX实现设…...

AI与机器学习深度集成:从设备端能力爆发到开发工具智能化

简介 AI与机器学习技术正以惊人的速度在移动开发领域深入集成,设备端AI能力爆发与AI辅助开发工具的崛起,为开发者带来了前所未有的高效开发体验和应用创新机遇。本文将全面解析Google最新AI技术栈(包括ML Kit 2.0和Gemini Nano模型)的特性与应用场景,探索Android Studio …...

界面控件DevExpress WinForms v24.2 - 数据处理功能增强

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…...

Linux的MySQL头文件和找不到头文件问题解决

头文件 #include <iostream> #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/resultset.h> #include <cppconn/prepared_statement.h> #include <cppconn/exception.h&g…...

wps excel将表格输出pdf时所有列在一张纸上

记录&#xff1a;wps excel将表格输出pdf时所有列在一张纸上 1&#xff0c;调整缩放比例&#xff0c;或选择将所有列打印在一页 2&#xff0c;将表格的所有铺满到这套虚线...

zabbix7.2最新版本 nginx自定义监控(三) 设置触发器

安装zabbix-get服务 在zabbix-server端口安装zabbix-get服务 [rootlocalhost ~]# dnf install -y zabbix-get Last metadata expiration check: 1:55:49 ago on Wed 14 May 2025 09:24:49 AM CST. Dependencies resolved. Package Architectur…...

CDN加速对云手机延迟的影响

一、CDN加速对云手机延迟的核心作用 缩短物理距离&#xff0c;降低网络延迟 CDN通过全球分布的节点&#xff0c;将云手机的服务内容&#xff08;如应用数据、画面流&#xff09;缓存至离用户最近的服务器&#xff0c;减少数据传输的物理距离。例如&#xff0c;用户在中国访问美…...

为什么 Docker 建议关闭 Swap

在使用 Docker 时&#xff0c;关闭系统 Swap&#xff08;交换分区&#xff09; 是一个常见的推荐做法&#xff0c;尤其是在生产环境中。虽然 Docker 不强制要求禁用 Swap&#xff0c;但出于性能、稳定性、可控性和资源管理的目的&#xff0c;通常建议这样做。 为什么 Docker 建…...

缓存的相关内容

缓存是一种介于数据永久存储介质与数据应用之间数据临时的存储介质 实用化保存可以有效地减少低俗数据读取的次数 (例如磁盘IO), 提高系统性能 缓存不仅可以用于提高永久性存储介质的数据读取效率&#xff0c;还可以提供临时的数据存储空间 spring boot中提供了缓存技术, 方便…...

[ctfshow web入门] web77

信息收集 上一题的读取flag方式不能用了&#xff0c;使用后的回显是&#xff1a;could not find driver 解题 同样的查目录方法 cvar_export(scandir("glob:///*"));die();cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString…...

C++学习-入门到精通-【7】类的深入剖析

C学习-入门到精通-【7】类的深入剖析 类的深入剖析 C学习-入门到精通-【7】类的深入剖析一、Time类的实例研究二、组成和继承三、类的作用域和类成员的访问类作用域和块作用域圆点成员选择运算符(.)和箭头成员选择运算符(->)访问函数和工具函数 四、具有默认实参的构造函数重…...

API 加速方案:如何使用 Redis 与 Memcached 进行高效缓存优化

API 加速方案:如何使用 Redis 与 Memcached 进行高效缓存优化 1. 引言 在现代 Web 开发中,API 响应速度至关重要。用户期望实时访问数据,而后端服务可能受到数据库查询、计算开销或网络传输的限制。这时候,缓存技术可以有效减少 API 延迟,提升系统性能。 本篇文章将深入…...

主成分分析的应用之sklearn.decomposition模块的PCA函数

主成分分析的应用之sklearn.decomposition模块的PCA函数 一、模型建立整体步骤 二、数据 2297.86 589.62 474.74 164.19 290.91 626.21 295.20 199.03 2262.19 571.69 461.25 185.90 337.83 604.78 354.66 198.96 2303.29 589.99 516.21 236.55 403.92 730.05 438.41 225.80 …...

1. Go 语言环境安装

&#x1f451; 博主简介&#xff1a;高级开发工程师 &#x1f463; 出没地点&#xff1a;北京 &#x1f48a; 人生目标&#xff1a;自由 ——————————————————————————————————————————— 版权声明&#xff1a;本文为原创文章&#xf…...

IP协议深度解析:互联网世界的核心基石

作为互联网通信的基础协议&#xff0c;IP&#xff08;Internet Protocol&#xff09;承载着全球99%的网络数据流量。本文将深入剖析IP协议的核心特性、工作原理及演进历程&#xff0c;通过技术原理、协议对比和实战案例分析&#xff0c;为您揭示这个数字世界"隐形交通规则…...

Oracle DBMS_STATS.GATHER_DATABASE_STATS 默认行为

Oracle DBMS_STATS.GATHER_DATABASE_STATS 默认行为 DBMS_STATS.GATHER_DATABASE_STATS的默认选项究竟是’GATHER’还是’GATHER AUTO’&#xff1f;这个问题非常重要&#xff0c;因为理解默认行为直接影响统计信息收集策略。 一 官方文档确认 根据Oracle 19c官方文档&#…...

C++天空之城的树 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析

C++天空之城的树 全国青少年信息素养大赛 C++复赛/决赛模拟练习题 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、C++专栏 电子学会C++一级历年真题解析...

HTTP 请求走私(HTTP Request Smuggling)

HTTP 请求走私&#xff08;HTTP Request Smuggling&#xff09;是一种通过利用前端代理&#xff08;如负载均衡器、CDN&#xff09;和后端服务器在 解析 HTTP 请求时存在不一致性 的漏洞&#xff0c;从而实现 注入恶意请求 的攻击技术。 一、基本原理 HTTP 请求走私主要依赖两…...

基于WebRTC的实时语音对话系统:从语音识别到AI回复

基于WebRTC的实时语音对话系统&#xff1a;从语音识别到AI回复 在当今数字化时代&#xff0c;实时语音交互已成为人机界面的重要组成部分。本文将深入探讨一个基于WebRTC技术的实时语音对话系统&#xff0c;该系统集成了语音识别(ASR)、大语言模型(LLM)和语音合成(TTS)技术&am…...

typeof运算符和深拷贝

typeof运算符 识别所有值类型识别函数判断是否是引用类型&#xff08;不可再细分&#xff09; //判断所有值类型 let a; typeof a //undefined const strabc; typeof str //string const n100; typeof n //number const …...

.Net HttpClient 使用 Cookie

在 HttpClient 中使用 Cookie Cookie 是服务器存储在客户端的小型数据片段&#xff0c;可用于身份验证、会话跟踪等。 .Net HttpClient 支持 Cookie 功能&#xff0c;本教程详细介绍了Cookie 的管理与使用。 初始化 #!import "./Ini.ipynb"什么是 Cookie Cookie …...

Python爬虫实战:通过PyExecJS库实现逆向解密

1. 核心定义 1.1 PyExecJS 库 PyExecJS 是 Python 的第三方库,通过调用 JavaScript 运行时环境(如 Node.js、PhantomJS),实现 Python 与 JavaScript 的无缝交互。其核心功能包括: JavaScript 代码编译与执行跨语言函数调用与数据传递多引擎支持与自动环境检测1.2 字段加…...