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

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

如果你常逛技术社区,大概率听过 “大语言模型(LLM)能做很多事”—— 写文案、答问题、编代码,但真要把它放进实际业务里,比如给公司做个智能客服、给团队搭个文档问答工具,却总卡壳:要么模型记不住上下文,聊两句就 “断片”;要么模型不懂专业知识,回答全是 “通用废话”;要么调用外部工具时,得自己写一堆复杂逻辑……
这时候,LangChain 就该登场了。它不是一个新的 AI 模型,而是帮你 “盘活” LLM 的开发框架,像给模型搭了个 “工具箱 + 操作台”,让你不用从零造轮子,就能快速搭建出能用、好用的 LLM 应用。今天就用最通俗的话,带你入门 LangChain。
一、先搞懂:LangChain 到底是干嘛的?
先抛个结论:LangChain 是连接 LLM 与实际业务的 “桥梁”
你可以把 LLM 想象成一个 “聪明但没经验的实习生”—— 脑子好使,但不知道公司的业务规则、没有存业务数据的文件夹、不会用公司的办公软件(比如查订单的系统、调数据的 API)。而 LangChain 就是这个实习生的 “带教老师”:
  • 给它准备 “业务手册”(连接知识库),让它懂公司的专业知识;
  • 帮它记 “工作笔记”(管理对话记忆),让它不忘记之前聊过的内容;
  • 教它用 “办公工具”(调用外部系统),让它能完成查订单、算数据这类实际任务;
  • 给它定 “工作流程”(编排任务链),让它按步骤把复杂事情做对。
简单说,直接用 LLM 像 “徒手干活”,用 LangChain 就是 “带着工具干活”—— 效率和效果完全不是一个级别。
二、核心功能:LangChain 能帮你解决哪些痛点?
新手不用一开始就啃复杂概念,先记住 LangChain 最常用的 4 个核心能力,覆盖 80% 的入门场景:
1. 记事儿:让 LLM “不健忘”(Memory 功能)
你有没有过这种体验:跟 AI 聊 “帮我推荐一款性价比高的笔记本”,聊到一半说 “再推荐个同价位的平板”,AI 却问 “你说的同价位是多少?”—— 这就是 LLM “健忘”,默认记不住之前的对话。
LangChain Memory 模块就是帮 LLM “记事儿” 的:
  • 简单场景用「ConversationBufferMemory」:直接存完整对话历史,比如智能客服记用户之前提过的 “订单号 12345”;
  • 复杂场景用「BufferWindowMemory」:只记最近几轮对话,避免信息太多卡壳,比如聊天机器人只需要记住用户最后 3 句话;
  • 专业场景用「EntityMemory」:专门记关键信息(比如用户的姓名、偏好、需求),比如理财顾问记住 “用户风险承受能力低”。
举个简单代码例子,让 AI 记住对话:
 
 
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain.llms import OpenAI
# 初始化记忆模块,存对话历史
memory = ConversationBufferMemory()
# LLM和记忆模块组合成对话链
conversation_chain = ConversationChain(
llm=OpenAI(api_key="你API密钥"),
memory=memory
)
# 第一次对话
print(conversation_chain.run("我想买一款适合办公的笔记本,预5000元"))
# 第二次对话,AI会记住“预5000元”
print(conversation_chain.run("有没有同价位的平板推荐?"))
运行后你会发现,AI 不会再问 “预算多少”,直接推荐 5000 元左右的平板 —— 这就是 Memory 的作用。
2. 查资料:让 LLM “懂专业”(Retrieval 功能)
LLM 的 “知识库” 截止到训练时(比如 GPT-4 截止到 2023 年),而且不懂你公司的产品手册、行业文档。想让它回答 “我们公司产品的保修政策”,直接问只会 “瞎猜”。
LangChain Retrieval 模块就是帮 LLM “查资料” 的,核心是 “检索增强生成(RAG)”—— 简单说就是:用户提问后,先从你的专业文档里找答案,再让 LLM 基于找到的资料回答,避免 “瞎编”。
比如做一个 “产品手册问答工具”,步骤很简单:
  1. 加载文档:把你的产品 PDF、Word 文档上传,LangChain 会自动读取内容;
  1. 拆分文档:把长文档切成小片段(比如每段 200 字),方便 LLM 处理;
  1. 存储向量:把片段转成 “向量”(可以理解成 “语义标签”),存在向量数据库里;
  1. 检索回答:用户提问时,先从向量库找最相关的片段,再让 LLM 总结回答。
代码示例(用 Chroma 向量库):
 
 
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 1. 加载产PDF手册
loader = PyPDFLoader("你的产品手册.pdf")
documents = loader.load()
# 2. 拆分文档(每500字,重50字保持连贯)
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(documents)
# 3. 存储到向量库
vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings(api_key="你API密钥"))
# 4. 搭建问答链,用户提问时先查资料再回答
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(api_key="你API密钥"),
chain_type="stuff", # 把找到的资料塞PromptLLM回答
retriever=vectorstore.as_retriever()
)
# 测试:问产品保修政策
print(qa_chain.run("我们产品的保修期限是多久?"))
这样回答的内容完全来自你的产品手册,不会有 “幻觉”,专业度拉满。
3. 串流程:让 LLM “按步骤做事”(Chains 功能)
很多任务不是 “问一句答一句” 这么简单,比如 “先分析用户的问题类型,再决定是查知识库还是直接回答,最后整理成简洁的回复”—— 这需要多步操作,LangChain Chains 模块就是帮你 “串流程” 的。
你可以把 Chain 理解成 “任务流水线”:把多个步骤(比如 “处理问题→查资料→生成回答→检查格式”)串起来,让 AI 自动按顺序执行。
比如做一个 “客户投诉处理链”,步骤是:
  1. 提取投诉关键词(比如 “订单延迟”“产品破损”);
  1. 查对应解决方案(从投诉处理手册里找);
  1. 生成标准化回复(包含道歉、解决方案、联系方式)。
代码示例(用 SequentialChain 串步骤):
 
 
from langchain.prompts import PromptTemplate
from langchain.chains import SequentialChain, LLMChain
from langchain.llms import OpenAI
llm = OpenAI(api_key="你API密钥")
# 步1:提取投诉关键词
extract_template = "从用户投诉中提取核心问题:{complaint}\n核心问题:"
extract_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(extract_template), output_key="core_issue")
# 步2:查解决方案(这里简化为LLM生成,实际可对接知识库)
solve_template = "针对投诉核心问题「{core_issue}」,生成解决方案:\n解决方案:"
solve_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(solve_template), output_key="solution")
# 步3:生成标准化回复
reply_template = "用户投诉:{complaint}\n解决方案:{solution}\n请生成标准化回复(包含道歉、方案、联系方式):"
reply_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(reply_template), output_key="final_reply")
 
运行后会直接输出标准化回复,比如:“非常抱歉您的订单延迟未送达,我们已查询到物流卡在 XX 环节,将为您优先协调配送,预计 24 小时内更新物流,如有问题可联系客服热线 400-XXX-XXXX。”
4. 用工具:让 LLM “能干活”(Agents 功能)
有时候,LLM 需要 “动手做事”—— 比如查实时天气、查用户订单、调用翻译 API,这些不是靠 “说” 能解决的,需要调用外部工具。LangChain Agents 模块就是让 LLM“自己决定用什么工具、怎么用”。
比如做一个 “智能助手”,能查实时天气(调用天气 API)、算数学题(用计算器工具):
  1. 给 AI 列 “工具清单”:告诉它有 “天气查询工具”“计算器工具”;
  1. AI 分析用户需求:比如用户说 “北京今天天气怎么样?”,AI 判断需要用 “天气查询工具”;
  1. AI 调用工具:自动传参数(比如 “城市 = 北京”),获取结果;
  1. AI 整理结果:把工具返回的信息转成自然语言回答。
虽然入门阶段不用写复杂的工具调用代码,但你要知道:Agents 是 LangChain “进阶” 的关键 —— 它让 LLM 从 “只会说” 变成 “能做事”,比如自动查订单、自动生成报表、自动发邮件。
三、新手入门:3 步搭建你的第一个 LangChain 应用
看完理论,动手做个最简单的 “文档问答工具”,感受一下 LangChain 的效率:
步骤 1:准备环境
首先安装需要的库(Python 环境):
 
 
# 安LangChain核心库、OpenAI(GPT模型)、PDF加载器、向量库
pip install langchain openai pypdf chromadb
步骤 2:准备文档
找一个你熟悉的文档(比如《Python 基础语法.pdf》),放在代码同一个文件夹里。
步骤 3:写代码运行
复制下面的代码,替换 “你的 API 密钥” 和 “文档路径”,运行:
 
 
 
# 2. 拆分文档
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(documents)
# 3. 存储到向量库
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings(api_key="sk-你OpenAI密钥") # 替换成你API密钥
)
# 4. 搭建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=OpenAI(api_key="sk-你OpenAI密钥"),
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# 5. 提问测试
while True:
question = input("请输入你的问题(输q退出):")
if question == "q":
break
print("回答:", qa_chain.run(question))
现在,你可以问 “Python 的列表和元组有什么区别?”“怎么用 Python 读取 CSV 文件?”——AI 会基于你的 PDF 文档回答,比直接问 ChatGPT 更贴合你的资料。
四、新手避坑:3 个最容易踩的误区
  1. 误区 1:上来就用 Agents
很多新手觉得 Agents “很酷”,不管什么任务都用 Agents,结果代码复杂还容易出错。其实 80% 的简单任务(比如单轮问答、固定流程)用 Chain 就够了,Agents 适合需要 “动态决策” 的场景(比如不确定用哪个工具、需要多轮调用工具)。
  1. 误区 2:不优化文档拆分
做 RAG 时,直接把整个文档扔进去,结果 AI 回答混乱 —— 因为文档太长,拆分后的片段要么不完整,要么包含无关信息。新手建议用「RecursiveCharacterTextSplitter」,把 chunk_size 设为 500-1000 字,chunk_overlap 设为 50-100 字,保持语义连贯。
  1. 误区 3:忽视 Prompt 模板
觉得 “让 LLM 自由发挥更好”,结果回答格式混乱、重点不突出。其实用 Prompt 模板(比如 “请用「问题 + 原因 + 解决方案」的格式回答:{question}”)能让 AI 的回答更规范,新手一定要养成写模板的习惯。
五、总结:LangChain 入门的核心逻辑
新手不用一开始就掌握所有功能,记住一个核心逻辑:LangChain 是 “LLM 的辅助工具集”,你需要什么功能,就用什么模块——
  • 要记对话,用 Memory;
  • 要查资料,用 Retrieval;
  • 要串流程,用 Chain;
  • 要调用工具,用 Agent。
从最简单的 “文档问答”“对话机器人” 做起,慢慢尝试更复杂的场景(比如智能客服、自动化报表),你会发现:原来把 LLM 放进实际业务里,并没有那么难。
如果想深入学习,推荐先看 LangChain 官方文档(https://python.langchain.com/),再跟着网上的实战项目练手(比如 “搭建个人知识库 AI”“做一个智能邮件助手”),边做边学,进步最快。
 

相关文章:

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​

LangChain 入门:从 0 到 1 搞懂 LLM 应用开发框架​如果你常逛技术社区,大概率听过 “大语言模型(LLM)能做很多事”—— 写文案、答问题、编代码,但真要把它放进实际业务里,比如给公司做个智能客服、给团队搭个文档问答工具,却总卡壳:要么模型记不住上下文,聊两句就 “…...

[JOI Open 2023] 古代机器 2 / Ancient Machine 2 题解

[JOI Open 2023] 古代机器 2 / Ancient Machine 2传送门:[JOI Open 2023] 古代机器 2 / Ancient Machine 2 完全不会做这种交互题。 形式化题意:交互库有一个 01 串 \(s\)(下标从 \(0\) 开始),你需要通过若干次询问求出 \(s\),每次询问,你可以构造一个大小为 \(m\) 的自…...

Visual Studio 2022配置fftw第三方库

#visual studio#ide 目录1. 介绍 2.获取FFTW 3.生成lib文件 4.在VS2022中的项目属性中进行配置 5.测试代码 参考链接 1. 介绍 FFTW是一个可以进行可变长度一维或多维DFT的开源C程序库,是目前最快的FFT算法实现。本文简述了在Windows平台上,如何在C++中调用FFTW,所使用的IDE…...

[React] nextjs useSWR导致的死循环,一直重复渲染rerender

export const useDashboards = () => {// return useSWR<Dashboard[]>("/api/dashboards");return JSON.parse("[xxxxxxxxxx]")}使用一段mockup的data, 导致useEffect(()=>{doSth}, Dashboards)里面的Dashboards一直变化, 在一堆代码里找了几…...

使用 Rust 实现的基础的List 和 Watch 机制

本文分享自天翼云开发者社区《使用 Rust 实现的基础的List 和 Watch 机制》。作者:l****n 使用 Rust 实现的基础的List 和 Watch 机制 介绍 在日常的开发过程中,有一个很重要的任务是能够通过Rust语言实现K8s中的各种生态组件,在这个过程中,既需要能过够了解K8S的工作原理也…...

flask下的MySQL增查配置

flask下的MySQL增删配置 添加数据 @app.route(/add) def add_data():u = UserInfo()new_user1 = UserInfo(nickname=flask_test1, mobile=13888888888, signature=理想, create_time=datetime.now(), role_id=1)new_user2 = UserInfo(nickname=flask_test2, mobile=13999999999…...

解码C语言指针

一、指针的定义与本质 1. 指针是什么? 指针是一种 存储变量内存地址 的特殊变量。所有数据存储在内存中,每个内存单元都有唯一地址(编号),指针通过记录地址实现对数据的间接访问。 2. 指针的核心作用直接操作内存:动态内存分配、硬件编程等。 提高效率:传递大对象时避免…...

windows下Qt调用fftw库

环境:Windows 11 Qt:6.8.3 程序中需要用到fftw库来进行傅里叶变换,通过网上的资料,配置了很久一直没成功,后来发下还是没有配置正确,最后终于成功,顺便记录一下 1.下载fftw3.3.5 http://www.fftw.org/install/windows.html,根据自已编译器版本下载32位或64位,我的Qt …...

AT_agc056_c [AGC056C] 01 Balanced

不难设 \(d_i\) 为前缀 \(i\) 中 \(0/1\) 数量的差值,显然有两个限制:\(d_{l - 1} = d_r\) \(|d_{i - 1} - d_i| \le 1\)可以差分约束,事实上,直接跑差分约束就可以得到字典序最小的构造了,这也算本题的价值之一。...

模拟费用流(s ver.)

1或许会在我彻底学会模拟费用流后同步发表于洛谷,希望退役前能等到彻底学会的那一天。推荐阅读:网络流——Alex_Wei 模拟费用流一般通过题目性质来快速找到增广路,进而降低单次增广的时间复杂度,不太能降低增广轮数。 消圈定理:一轮增广结束后,若残量网络上无负环,则当前…...

自推流SRS6.0配置相关

前提条件: 开通 1935、1985、8080 、8000(UDP)、 1900 、 8443端口;后面2个是开通https必须配置的。mkdir -p /data/www (本人习惯) 下载最新版 srs: git clone -b develop https://gitee.com/ossrs/srs.gitcd /data/www/srs/trunk ./configure make至此,srs安装成功。…...

火山引擎多模态数据湖:基于 Daft 与 Lance,构筑 AI 时代数据湖新范式

在 AI 技术飞速发展的当下,数据作为 AI 的 “燃料”,其形态与处理方式正发生深刻变革。本篇文章来自火山引擎LAS团队琚克俭在“2025AICon 全球人工智能开发与应用大会”分享,主要围绕 “AI 场景下多模态数据处理” 主题,介绍LAS团队基于 Daft+ Lance打造的多模态数据湖方案…...

doris窗口函数 LAG()(取上一条)和 LEAD()(取下一条)函数

在 Apache Doris 中,若需实现 “相邻数据间取上一条 / 下一条数据的字段值”,核心是利用 窗口函数(Window Function) 中的 LAG()(取上一条)和 LEAD()(取下一条)函数。这两个函数专门用于在有序的数据集内,获取当前行相邻行的指定字段值,无需手动关联表,效率更高。场…...

debmirror工具

安装mtli:~# apt install -y debmirror 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: ed liblockfile-simple-perl liblog-agent-perl 下列【新】软件包将被安装: debmirror ed liblockfile-simple-perl liblog-a…...

centos7卸载openjdk-java11

[root@localhost ~]# rpm -qa|grep -i openjdk java-11-openjdk-headless-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-devel-11.0.23.0.9-2.el7_9.x86_64 java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64# 卸载命令, yum remove 会同时卸下该包及其不再被其它已安装包依赖的包。…...

jenkins的安装和配置

windows 安装 jenkins 自动化构建部署至linux服务器上 一、环境准备1、git安装环境 参考链接 https://www.cnblogs.com/yuarvin/p/12500038.html 2、maven安装环境,包括jdk环境安装 参考链接 https://www.cnblogs.com/yuarvin/p/7837963.html 3、Jenkins 安装环境 参考链接 ht…...

深入解析:【Day 52 】Linux-Jenkins

深入解析:【Day 52 】Linux-Jenkinspre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析

本土开发者如何选择代码管理工具?Gitee与GitHub深度对比解析 在数字化转型浪潮下,代码管理工具已成为开发者日常工作的必备基础设施。面对国内外众多选择,新手开发者往往陷入选择困难。本文将从本土化开发视角,深入剖析主流代码管理工具的差异化优势,为开发者提供科学的选…...

MES系统核心组件

核心总览 在半导体工厂中,MES(Manufacturing Execution System,制造执行系统) 是最高层的指挥中枢,它负责管理生产线上从投料开始到成品产出的全部作业流程。而其他各种“XX Server”则是MES这个大脑指挥下的专业功能模块,负责处理特定类型的任务和数据。 各服务器功能详…...

易基因:多组学整合分析揭示DNA甲基化与基因组改变在肿瘤进化中的协同驱动机制|Nat Genet/IF29重磅

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,伦敦大学学院癌症研究所Nnennaya Kanu和弗朗西斯克里克研究所Peter Van Loo团队合作在国际遗传学Top期刊《自然遗传学》(Nature Genetics)发表题为“DNA methylation cooperates with genomic alterat…...

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率

AI 视频模型大比拼(2025年7月版):价格、效果与分辨率pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

为什么芯片行业需要私有化部署软件?

在芯片研发过程中,每天产生的大量设计数据、测试结果和知识产权,构成了企业的核心竞争优势。一旦这些数据泄露,不仅可能导致数百万美元的研发投入付诸东流,更可能让企业在全球竞争中失去领先地位。 近年来,芯片行业面临的数据安全挑战日益严峻。根据行业报告,2024年芯片设…...

C++ std::string

C++ 标准库中的 std::string 是处理字符串的核心类,封装了字符串的存储、管理和操作,相比 C 风格的 char* 更安全、易用。 1、基本概念 1.1 基本特性 std::string 定义在 <string> 头文件中(属于 std 命名空间),本质是对动态字符数组的封装动态大小:自动扩容,无需…...

MathType数学公式编辑器v7.9.1

MathType全球最受欢迎的专业数学公式编辑器工具软件,可视化公式编辑器轻松创建数学方程式和化学公式。兼容Office Word、PowerPoint、Pages、Keynote、Numbers 等700多种办公软件,用于编辑数学试卷、书籍、报刊、论文、幻灯演示等文档轻松编写各种复杂的物理公式、化学方程式…...

git常见冲突场景及解决办法 - 指南

git常见冲突场景及解决办法 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

有关字节的基础知识

什么是字节位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示。字符:是指计算机中使用的字母、数字、字和符号 1bit表示一位 1Byte表示一个字节 1B=8b 1024B=1KB 1024KB=1M 102…...

strip去符号前后对比

strip去符号前后对比 strip 是 binutils 中用于给二进制文件(可执行程序、静态库、动态库)去符号信息的工具。它只修改符号表,不碰指令内容,因此去除符号后的二进制文件中,各部分指令和原来是完全一一对应的,各section大小和偏移也不变,各符号的偏移也不变,只是原本的指…...

2025 ICPC网络赛第一场 L cover

给一个长度为 \(n\) 的序列 \(\{a_n\}\) 和 \(m\) 个操作,其中第 \(i\) 个操作是把区间 \([l_i,r_i]\) 都赋值为 \(c_i\)。 现在按顺序遍历每个操作,每个操作可执行可不执行。 最大化序列的颜色段数,即 \(1+\sum\limits_{i=2}^n[a_{i-1}\not=a_i]\)。 \(1\leq a_i,c_i\leq n…...

文件自动同步软件用哪个好,高效选择指南

内容概要 在数字化办公日益普及的今天,文件自动同步软件已成为提升团队协作效率的重要工具。面对市场上琳琅满目的选择,“文件自动同步软件用哪个好”成为了许多企业IT管理者和个人用户共同关注的问题。本指南将深入剖析各类文件自动同步软件的核心优势,特别推荐如Ftrans FT…...

【初赛】指针 - Slayer

指针的性质是理解其行为和使用方式的核心,主要包括以下几个方面: 1. 指针是存储地址的变量 指针的本质是一个变量,但其存储的不是数据本身,而是另一个变量(或内存单元)的内存地址。例如:int a = 10; int* p = &a; 中,p 存储的是 a 的内存地址(如 0x7ffd6b6a45c4)…...

国产化FPGA-2050-基于JFMK50T4(XC7A50T)的核心板

基于JFMK50T4(XC7A50T)的核心板(IEB-PS-3051-邮票孔) 一、核心板概述板卡基于JFMK50T4国产化FPGA芯片,设计的一款工业级核心板,板卡集成主芯片、电源、DDR、配置芯片,大大减轻客户的扩展开发困难。丰富的IO和4个GTP,让用户轻易设计PCIe的数据卡,AD卡,结合本公司国产…...

hbase学习2

一、表管理操作创建表 hbase create 表名, 列族1, 列族2, ...示例:创建student表,有info和score两个列族 create student, info, score 2. 查看所有表 hbase list 3. 查看表描述 hbase describe 表名 describe student 4. 检查表是否存在 hbase exists 表名 5. 禁用/启用表 h…...

基于Python+Vue开发的健身房管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的健身房管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的健身房管理系统项目,大学生可以在实践中学习和提升…...

2025年纷享销客生态伙伴大会无锡站圆满举办!

近日,2025年纷享销客生态伙伴大会(无锡站)成功举办。大会以“智享未来,领创 CRM 新纪元”为主题,吸引了众多生态伙伴齐聚一堂,共话 CRM 行业新趋势,共探 AI 赋能下的客户经营新范式。一、数智化浪潮下的CRM变革与机遇<纷享销客经营副总裁 张睿> 纷享销客经营副总…...

英语_阅读_digital technology_待读

These days, digital technology is everywhere in our lives.如今,数字科技无处不在地出现在我们的生活中。 From smartphones to tablets, we use digital devices every day at school, at home and when hanging out with friends.从智能手机到平板电脑,我们每天在学校、…...

达梦 两个bug json 导致数据库crash 和 优化器解析or 导致结果不一样

##sample1 无法解析 json 数据库直接crash. 分析函数,定位到BUG 升级数据库软件,问题得到规避 ########sample 2 优化器解析or 导致结果不一样--测试1 原有的查询顺序,查到空行。 SQL> SELECT coltablename,DONO,colupdateable,colupdateableFROM SEBMDEV.DATAOBJECT…...

MySQL迁移至GreatSQL后,timestamp字段插入报错解析

MySQL迁移至GreatSQL后,timestamp字段插入报错解析 背景描述 某业务系统进行国产化适配,将MySQL的数据迁移到 GreatSQL 后,执行 INSERT INTO ,update_time传参为空时报错,报错信息为:ERROR 1048 (23000): Column update_time cannot be null ,而原来旧的MySQL环境中没有这…...

2025年文件摆渡系统哪个品牌好推荐

内容概要 在寻找文件摆渡系统的过程中,企业往往关心哪个品牌能够更好地满足其安全、高效的数据交换需求。2025年,市场上涌现出众多品牌,但“文件摆渡系统哪个品牌好”这一问题,不少企业给出了共同的答案——Ftrans Ferry跨网文件安全交换系统。该系统凭借其全面的安全防护、…...

VU9P板卡设计方案:565-基于VU9P的32@ SFP28+4@ QSFP28路光纤交换板卡

、板卡概述 板卡基于Xilinx FPGA VU9P 设计的一款32路SFP28+4路QSFP28的光纤交换板卡,用于以太网的交换功能的验证。 二、板卡原理框图三、板卡主要性能 ● 主芯片:选用 XCVU9P-2FLGB2104I(702, 76)47.5*47.5 ● 32路SFP28,支持1G、10G以太网协议; 1G,10G 自动适配。 ●…...

Python中使用列表、map和filter函数配合lambda表达式来操作集合

在 Python 中,map()、filter() 和 lambda 表达式是处理集合(如列表)的常用工具,可以快速实现 转换 和 过滤 操作。以下是具体示例:1. map() 函数:对列表元素进行转换 作用: 对列表的每个元素应用一个函数,返回转换后的元素组成的迭代器。 语法: map(function, iterabl…...

大模型decoder中权重矩阵的理解 - 实践

大模型decoder中权重矩阵的理解 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importan…...

文件安全外发平台用哪个,最佳选择是什么?

内容概要 在探讨文件安全外发平台用哪个这一话题时,我们首先要对文件安全外发平台有一个全面的了解。这类平台主要用于确保企业文件在外部传输过程中的安全性,防止数据泄露。市面上存在多种文件安全外发平台,它们各有千秋。而要说到安全管控强大且稳定传输大文件的平台,“F…...

【初赛】数 - Slayer

0x3f3f3f3f = 1061109567 0x7f7f7f7f = 2139062143 0x7fffffff = 2147483647 0xffffffff = 4294967295 0x1fffffff = 536870911 0x1f1f1f1f = 522133279...

http连接(webFlux vs tomcat)

HTTP连接的最大数量不是一个固定的值,它取决于一个由硬件资源、操作系统配置、网络栈、以及应用程序本身共同构成的复杂系统。 简单来说:在一台配置良好的现代服务器上,使用异步非阻塞模型(如WebFlux),支持超过100万甚至更多的并发HTTP连接在理论上是可行的。 而对于传统…...

英语_阅读_Generative AI_待读

Artificial Intelligence (AI) has become part of our everyday life.人工智能(AI)已经成为我们日常生活的一部分。 It makes our smart devices smarter.它让我们的智能设备变得更聪明。 You might have already used some AI programs at school.你可能已经在学校使用过一…...

P8500 [NOI2022] 冒泡排序 题解

Description 最近,小 Z 对冒泡排序产生了浓厚的兴趣。 下面是冒泡排序的伪代码: 输入: 一个长度为 n 的序列 a[1...n] 输出: a 从小到大排序后的结果 for i = 1 to n do:for j = 1 to n - 1 doif (a[j] > a[j + 1])交换 a[j] 与 a[j + 1] 的值冒泡排序的交换次数被定义为在…...

【初赛】链表 - Slayer

链表性质知识点总结 链表是一种线性数据结构,其核心特点是数据元素(称为 “节点”)通过指针或引用连接,而非像数组那样存储在连续的内存空间中。这种结构决定了它与数组截然不同的性质,适用于频繁插入 / 删除、内存动态分配的场景。 一、链表的核心定义与结构基本构成链表…...

纷享销客CRM系统自定义APL代码破解企业深度定制难题

在许多中大型企业,尤其是央企、金融、高科技等行业,对 CRM 系统提出了更为复杂的业务流程定制需求。尽管零代码、低代码配置工具有一定的灵活性,但在面对高度复杂、深度融合业务逻辑的安全机制或特殊流程时,仍显乏力。 为此,纷享销客提供了服务端代码级定制能力,通过自定…...

第2章 zynq开发板FSBL的生成和NAND烧录

前言 由于本人较懒,记录主要是过程,由于zynq的比stm32做的人少很多,资料也少很多,我会简要介绍原理,操作流程主要由图片加少量文字组成,每一章都是在之前的章节基础上做的一、新建FSBL工程 打开vivado,打开SDK打开后会自动根据之前生成的HDF自动生成硬件平台新建一个FSB…...

工具大全

<!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><title>工具大全</title><style>/*全…...