自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(604)
  • 收藏
  • 关注

原创 Spring异步编程- 浅谈 Reactor 核心操作符

本文介绍了Reactor响应式编程中的核心操作符,包括zip、merge、concat、flatMap等。重点解析了zip操作符的按位结对和短流优先特性,merge操作符的时间交错合并特点,以及defaultIfEmpty/switchIfEmpty的兜底策略。通过代码示例展示了不同操作符的行为差异,如mergeSequential保证顺序而merge按实际到达时间合并。这些操作符为处理异步数据流提供了灵活的组合方式。

2025-09-15 21:12:39 621

原创 Java Flow API — Publisher、Subscriber 与 Processor 实战

Java 9引入的Flow API实现了响应式编程规范,包含Publisher(发布者)、Subscriber(订阅者)、Subscription(订阅关系)和Processor(处理器)四个核心角色。示例展示了如何通过三个Processor构建数据处理链:数据从发布者依次经过各处理器加工(添加":flux"后缀),最终由订阅者接收。Processor兼具订阅者和发布者功能,通过request()控制背压机制,实现按需拉取数据。该机制为Java提供了原生响应式流支持,适用于构建异步数据管

2025-09-10 23:10:29 1066

原创 Java 声明式编程- Stream API 实战

Java 8 Stream API 核心解析 摘要:Java 8 引入的 Stream API 通过函数式编程和声明式风格显著提升了集合操作效率。文章系统讲解了 Stream 的三大核心组成(数据源、中间操作、终端操作),详细演示了流的多种创建方式,包括集合转换和并行流处理。重点分析了常见中间操作(filter、map、flatMap等)和终端操作(collect、count等)的使用场景,特别介绍了分组收集器Collectors.groupingBy的实践应用。对比传统迭代方式,阐释了Stream&quo

2025-09-10 22:55:20 951

原创 Java — Lambda 表达式与函数式接口解析

本文介绍了Java 8引入的Lambda表达式和函数式接口特性。主要内容包括:1)函数式接口的定义(仅含一个抽象方法的接口,可使用@FunctionalInterface注解);2)Lambda表达式的语法与应用,简化了匿名类的写法;3)方法引用的四种类型;4)java.util.function包中常见的函数式接口(如Consumer、Function、Supplier等)及其用法。这些特性显著提升了Java代码的简洁性和可读性,使函数式编程在Java中得以实现。

2025-09-10 22:22:39 453

原创 浅谈中断控制器:从 IRQ 到 IRR、IMR、In-Service Register

摘要:本文深入解析计算机中断机制中的核心组件。中断请求(IRQ)线由外设触发,通过可编程中断控制器(PIC)处理后以INTR信号通知CPU。PIC包含三大关键寄存器:IRR记录待处理中断,IMR设置中断屏蔽,In-Service Register标记正在处理的中断。需注意区分PIC硬件寄存器ISR与软件层面的中断服务程序(ISR routine)。文章通过键盘中断示例,完整展示了从中断触发到处理完毕的完整生命周期,并采用"前台-客户"类比形象说明PIC的工作原理,帮助理解中断处理流程中硬

2025-09-01 21:19:50 508

原创 浅谈 SQL 窗口函数:ROW_NUMBER() 与聚合函数的妙用

窗口函数执行顺序:先生成基础结果集,再对结果集进行分区/排序运算,最后把结果加到每行。保留所有行:窗口函数不会减少行数,只会增加新列。典型应用场景RANK()移动平均、窗口滑动分析掌握窗口函数,可以极大简化 SQL 写法,让我们的代码更直观、更高效。

2025-08-31 21:59:23 773

原创 从零实现一个可扩展的规则解析引擎 —— 支持 AND/OR 优先级、短路求值与多类型运算符

本文实现了一个高可扩展的规则解析引擎类型多样化:支持字符串、数字、日期、布尔;运算符丰富:equals、contains、in、regex、比较运算;逻辑正确性:严格保证AND 优先于 OR,避免短路误判;短路优化:提升性能;可扩展性:支持与 Spring Boot 集成、缓存、审计等功能。通过这种设计,你可以在实际业务场景中灵活定义规则,既满足前端可配置化,又保证后端执行的确定性和高效性。

2025-08-30 12:12:13 1097

原创 浅谈 Java 中的 import static 使用方式

import static是Java中用于导入静态成员的特性,可以直接导入静态方法、常量、内部类和枚举成员,使代码更简洁。它能导入Math类的方法/常量、Objects的requireNonNull、Map.Entry内部类以及枚举值等,但不能导入实例方法和构造方法。最佳实践包括:在工具类、测试代码和DSL风格API中使用,避免通用方法名和通配符导入。业务代码应精确导入,测试代码可放宽限制。团队应制定规范,平衡代码简洁性和可读性。

2025-08-28 23:59:14 461

原创 负载均衡之带权重的随机负载均衡算法详解与实现

带权随机负载均衡是一个简单而实用的策略,它能根据节点权重调整流量分布,避免“木桶短板效应”。在节点规模较小、权重变化不频繁的场景下,完全够用。如果需要更平滑的分布,可以考虑平滑加权轮询(SWRR)或加权一致性哈希等更高级的算法。

2025-08-26 20:26:19 1131

原创 负载均衡之平滑加权轮询(Smooth Weighted Round Robin)详解与实现

摘要(149字): 平滑加权轮询(SWRR)算法解决了传统加权轮询中高权重实例连续被选中的问题,实现更均匀的流量分配。该算法通过动态调整实例的currentWeight(初始值=固定权重),每次选择权重最高的实例后扣除总权重值,形成周期性波动。以A(5)、B(1)、C(1)为例,SWRR生成"A,A,B,A,C,A,A"的序列,既满足5:1:1比例,又避免连续请求集中。算法实现包含权重累加、最大值选择和权重扣减三个核心步骤,当总权重≤0时退化为普通轮询。Java代码通过并发锁保障线程安全

2025-08-26 19:58:19 813

原创 浅谈为什么尾递归更高效?——从调用栈和汇编的视角

尾递归是递归优化的重要技术,它能将递归调用转化为循环形式,避免栈溢出。本文详细解析了尾递归的实现原理:编译器通过参数覆盖和栈帧复用,将尾递归调用转化为跳转指令,而非普通递归的函数调用。通过对比普通递归和尾递归的调用栈及汇编代码,展示了尾递归如何实现"以递归之名,行循环之实"的高效执行。这种优化使得尾递归在大规模数据处理时既保持递归的优雅,又拥有循环的性能优势。

2025-08-25 21:14:14 365

原创 Java 泛型的“擦除”与“保留”:一次完整的编译与反编译实验

Java泛型在运行时采用擦除机制,但框架如Jackson和Guava仍能识别复杂泛型结构。本文通过实验揭示:编译器在生成字节码时虽擦除泛型类型,但会在Signature属性中保留泛型元数据。反射API通过读取这些元数据还原完整泛型结构,解释了TypeReference等工具的原理。实验表明,泛型擦除发生在编译期,而元数据保留在.class文件中,使得运行时既能进行类型检查,又支持反射获取泛型信息。这种机制使Java泛型兼具运行时效率与框架灵活性。

2025-08-24 14:18:45 456

原创 浅谈 Jackson 的 TypeReference:它是如何绕过 Java 泛型擦除的?

Jackson 通过 TypeReference 匿名子类解决泛型擦除问题,保留类型信息实现安全反序列化。核心是利用子类继承时的泛型参数捕获,通过反射获取真实类型,使 JSON 能正确映射为带泛型的对象,避免手动类型转换。类似思路也见于 Guava 的 TypeToken 等框架。

2025-08-22 00:18:27 1036

原创 浅谈 Python 正则表达式中的 groups()

本文介绍了Python中正则表达式re模块的groups()方法。通过解析智能体动作指令的实例,展示了如何使用正则表达式捕获字符串的不同部分:group(n)获取单个捕获组,而groups()返回所有捕获组组成的元组。该方法特别适用于拆分工具名和输入参数,使智能体开发、日志分析等场景的文本解析更简洁高效。文章包含代码示例和直观图解,帮助理解groups()的实际应用价值。

2025-08-18 23:24:45 447

原创 用 Python 实现一个“小型 ReAct 智能体”:思维链 + 工具调用 + 环境交互

摘要(149字): 本文介绍如何通过Python实现一个基于ReAct模式的智能体(Agent),使大语言模型(LLM)具备动态调用外部工具的能力。核心方案包括:1)设计严格交互格式的Prompt,强制模型按“思考-动作-暂停-观察”循环运作;2)通过正则匹配工具调用指令,集成Wikipedia查询、计算器和博客搜索API;3)利用消息上下文管理实现多轮交互。代码演示了模型如何自主选择工具(如搜索“法国首都”时调用Wikipedia)并整合结果生成最终答案,展现了LLM从被动生成转向主动交互的扩展性。

2025-08-18 22:40:14 1206

原创 Portkey-AI gateway 的一次“假压缩头”翻车的完整排障记:由 httpx 解压异常引发的根因分析

摘要:本文记录了作者在本地搭建Portkey AI Gateway时遇到的gzip解码错误问题。测试发现网关能接收请求但Python程序报"incorrect header check"错误,经排查发现网关返回了"Content-Encoding: gzip"头部但实际响应是明文JSON。作者通过使用httpx.stream().iter_raw()方法绕过自动解压直接获取原始字节,成功定位到问题根源在于网关返回了不匹配的压缩头部。文章详细记录了问题复现过程,包括使用

2025-08-17 22:54:30 727

原创 模型路由相关论文速览——《Universal Model Routing for Efficient LLM inference》

传统“模型路由”多数假设一个的候选 LLM 池(static pool),路由器只需要在这组已知模型里挑选最便宜且“够用”的模型;但现实中模型池经常变化:新模型不断上线,旧模型下线。每当模型池变化,重新标注训练数据、重训路由都很费时费钱。这篇论文()关注:测试时出现的新 LLM,如何在路由器的前提下把请求路到合适的新模型上。作者提出了这种新的解决方式:把“每个 LLM”表示成一个,路由器学会基于这些“LLM 特征”做决策,从而泛化至未见过的 LLM。论文在公共基准上验证了能在中有效路由。

2025-08-13 23:02:34 774

原创 AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战

摘要 本文介绍了一个基于LangGraph的多智能体任务路由系统,通过模块化设计实现对话助手功能。系统核心包括五个节点:任务分类器(supervisor_node)负责识别用户意图;旅游规划(travel_node)调用MCP工具接口;笑话生成(joke_node)使用LLM直接响应;对联生成(couplet_node)结合Redis向量检索;兜底节点(other_node)处理其他请求。系统采用TypedDict定义状态对象,通过LangGraph实现可视化流程编排,具有低耦合、易扩展的特点。关键技术包括

2025-08-12 23:00:06 962

原创 浅谈 LangGraph 子图流式执行(subgraphs=True/False)模式

摘要: 本文演示了如何在LangGraph中使用subgraphs=True参数实现嵌套工作流。通过构建包含子图(research)的父图流程,展示了子图封装与命名空间追踪功能。关键点包括:1) 子图作为独立模块处理特定任务;2) 不同stream_mode下输出带命名空间标识,便于调试;3) 提供了完整代码示例,对比了subgraphs启用前后的流式输出差异。该模式适用于复杂AI工作流(如多智能体协作),能清晰追踪子流程执行路径。

2025-08-11 22:12:54 1015

原创 LangGraph 之 stream_mode 解析——values(完整状态)、updates(增量更新)与 [“updates“, “values“] 混合模式

文章摘要: 本文介绍了LangGraph工作流中三种stream_mode的用法差异。"values"模式输出完整状态流,展示每一步执行后的全局状态;"updates"模式仅输出节点增量更新,适合实时推送;混合模式可同时获取两种数据。通过一个包含"润色主题"和"生成笑话"两个节点的简单工作流示例,对比演示了不同模式下的输出效果,并总结了各自适用场景。最后补充了直接获取最终结果的invoke方法,帮助开发者根据需要选择合适的执行方

2025-08-11 21:44:28 481

原创 LangGraph 历史追溯 & 人机协同(Human-in-the-loop,HITL)

本文介绍了如何利用get_state_history、update_state和interrupt实现可回退、可修补且支持人工干预的工作流系统。通过一个完整示例,展示了关键功能:历史追溯(get_state_history)、时间旅行恢复(从特定检查点继续)、分叉管理(检查点/命名空间)、历史修改(update_state)、人机交互(interrupt+恢复命令)以及调试机制。系统核心包含三个概念:全局状态(State)、检查点(Checkpoint)和历史分叉管理。其中检查点机制支持历史追溯和恢复,而所

2025-08-11 21:28:00 422

原创 浅谈 A2A SDK 核心组件

A2A协议的SDK为智能体服务端开发提供了一套稳定可扩展的框架,其核心组件包括:1) AgentExecutor作为业务执行引擎,负责任务执行与取消;2) EventQueue作为事件缓冲与分发中心,实现流式响应;3) DefaultRequestHandler处理协议到业务的适配;4) A2AStarletteApplication构建协议服务端容器;5) AgentCard和AgentSkill定义智能体的元信息与能力。这些组件协同工作,通过事件驱动机制解耦业务逻辑与传输层,支持流式响应和任务管理,为开

2025-08-10 16:39:23 673

原创 浅谈 A2A 协议——面向多智能体的开放通信标准

A2A协议旨在解决异构智能体之间的互操作与协作问题,支持不同厂商、语言和框架构建的智能体安全通信。其核心目标包括互操作性、动态发现、多模式交互和安全通信。协议围绕A2A Client、Server、Agent Card等关键概念,通过任务(Task)作为基本工作单元,管理有状态交互的生命周期。支持JSON-RPC、gRPC和REST三种传输协议,并依托HTTPS实现安全认证。该协议适用于需要多个智能体协作完成复杂任务的场景,通过标准化交互模型实现"黑箱"式集成。

2025-08-10 15:21:30 1288

原创 浅谈 VM 桥接模式:让虚拟机像真实电脑一样接入网络

摘要:桥接模式是虚拟化环境中虚拟机与外部网络通信的一种方式,通过虚拟交换机(vSwitch)将虚拟网卡和物理网卡桥接,使虚拟机直接接入局域网,拥有独立MAC地址、IP地址和协议栈。其优点包括完全接入局域网、独立身份和兼容性强,但也存在安全风险高、依赖DHCP等缺点。桥接模式适用于需要对外服务、模拟真实网络或与局域网设备交互的场景,核心在于理解二层转发机制和主机/虚拟机协议栈的隔离关系。

2025-08-09 12:50:54 1237

原创 LLM——浅谈 LangGraph 中断式工作流:构建一个可交互的问答流程

本文介绍了如何利用LangGraph实现智能体的中断-恢复工作流,通过一个对话机器人示例详细解析了其实现原理与代码逻辑。文章首先阐述了中断式工作流的需求场景,随后从State定义、节点函数编写、StateGraph构建、Checkpointer配置到核心执行流程进行了系统讲解。重点分析了中断机制的工作原理,包括如何通过interrupt()暂停执行、等待用户输入,再使用Command对象恢复流程继续执行。这种模式使得智能体能够在保持上下文状态的同时,灵活应对需要人工干预的场景,为开发交互式AI应用提供了强大

2025-08-06 23:03:43 1016

原创 浅谈 Python 中的 next() 函数 —— 迭代器的驱动引擎

本文深入解析了 Python 中的 next() 函数,包括其基本语法、典型用法和底层原理。next() 用于从迭代器中获取下一个元素,耗尽时会抛出 StopIteration 异常,可通过默认值参数避免。文章揭示了 for 循环本质上是通过不断调用 next() 实现的,并通过字节码分析验证了这一机制。还介绍了 next() 与 iter(callable, sentinel) 配合的高级用法,如动态生成序列和流式数据读取。最后总结了 next() 的常见使用场景,包括手动控制迭代、文件读取等。

2025-08-04 20:24:35 1445 1

原创 浅谈Python中的os.environ:环境变量交互机制

os.environ 是 Python 中用于访问和操作环境变量的字典对象,由 os 模块提供。它包含当前进程从操作系统继承的所有环境变量,表现为键值对形式。通过它可以读取、设置或删除环境变量,但这些修改仅对当前 Python 进程有效,不会影响系统全局环境变量。常见用途包括获取系统路径、动态配置程序参数等,但需注意其对进程的局部性限制。

2025-08-04 00:07:36 641

原创 Python中的sys.path与PYTHONPATH全解析:模块导入路径的底层机制与最佳实践

本文深入解析Python模块导入的核心机制,重点探讨了sys.path和PYTHONPATH的关系。sys.path是Python解释器运行时维护的模块搜索路径列表,其初始化顺序包括当前脚本目录、PYTHONPATH环境变量、标准库路径等。文章详细讲解了如何动态修改sys.path,区分了运行时路径修改与环境变量配置的差异,并指出常见误区。通过实际案例展示了多级目录项目中如何正确添加父级路径到搜索路径。最后总结了最佳实践:项目内部使用sys.path.append(),全局配置使用PYTHONPATH或.p

2025-08-03 23:51:29 1201

原创 Python 实例属性与方法命名冲突:一次隐藏的Bug引发的思考

摘要:本文探讨了Python开发中实例属性与方法同名导致的命名空间冲突问题。通过Calculator链式调用示例,分析了Python查找顺序(MRO)导致实例属性遮蔽方法的现象,验证了属性覆盖方法的工作原理。文章指出del操作无法根本解决此问题,并提出了三种最佳实践:1)避免属性与方法重名;2)使用@property装饰器设计安全访问;3)链式调用返回self时保持属性只读。最后总结了属性与方法重名的陷阱与解决原则,强调合理的命名空间管理是Python开发的关键能力。

2025-08-03 23:08:30 659

原创 LLM——基于LangChain与LangGraph实现的长篇文章自动写作工作流

本文介绍了一个基于LangChain和LangGraph的长篇文章自动写作系统。该系统能将简单的写作指令智能拆解为结构化写作计划,并逐段生成符合人类写作风格的内容,最终输出为Markdown文档。系统主要包含三大功能模块:写作计划拆解模块(plan_chain.py)负责将用户指令转化为段落级子任务;段落写作模块(write_chain.py)结合上下文逐段生成内容;保存模块将最终文章保存为Markdown文件。通过LangGraph的工作流编排,实现了"规划→写作→保存"的完整自动化写

2025-08-03 00:28:13 1115

原创 LLM——使用 LangGraph 构建 ReAct 智能体:多轮对话 + 工具调用 + 可视化流程图

本文介绍了如何构建一个具备ReAct能力的多轮智能体系统。该系统整合了LangChain工具调用、OpenAI/通义千问大模型和LangGraph状态管理,适用于旅行规划、业务辅助等场景。核心架构包含:1)通过@tool装饰器定义可调用工具;2)创建具备工具绑定能力的智能体;3)使用LangGraph构建状态图实现ReAct循环(推理→行动→观察);4)自动生成流程图可视化交互流程。系统能够处理多轮工具调用,直到输出最终答案,并通过条件路由实现动态流程控制。

2025-07-31 21:23:25 1712 1

原创 LLM综合实战——基于 MCP 和 OpenAI Function Calling 构建本地知识库智能问答助手

企业级智能问答系统实践方案 本文介绍了一个结合大语言模型与企业知识库的智能问答系统解决方案,主要特点包括: 技术架构: 使用MCP协议作为工具服务通信标准 集成OpenAI Function Calling实现自动工具调用 本地知识库kb.json存储结构化问答数据 核心功能: 模型自动判断是否需要调用知识库查询工具 通过MCP服务端获取结构化知识数据 生成格式良好的自然语言回答 系统优势: 相比传统API,MCP提供自动schema生成和流式通信支持 实现"理解问题→调用工具→生成回答&quot

2025-07-31 00:19:31 780

原创 LLM—— 基于 MCP 协议(Streamable HTTP 模式)的工具调用实践

本文介绍了MCP协议的Streamable HTTP模式工具调用实践。该模式是对HTTP+SSE的标准化升级,支持单一接口处理所有消息、流式响应和会话管理。文章通过Python示例展示了服务端工具注册和客户端调用的完整流程,对比了有状态(stateless_http=False)和无状态(stateless_http=True)两种模式的区别。Streamable HTTP模式结合了HTTP标准化、SSE流能力和JSON-RPC结构表达,为开发者提供了高效的工具调用方式、可扩展架构和可靠通信保障,是构建智能

2025-07-30 23:30:33 940

原创 LLM—— 基于 MCP 协议(SSE 模式)的工具调用实践

本文介绍了基于MCP协议SSE模式的工具调用实践。MCP提供统一工具注册和调用机制,结合SSE实现服务器向客户端的单向事件推送。文章通过Python示例展示服务端工具注册和客户端远程调用流程,说明如何使用HTTP+SSE长连接实现跨网络工具调用。该方案支持分布式架构,适用于构建远程智能体、插件化平台等场景,为跨网络工具执行系统提供安全解耦的底层能力。

2025-07-30 22:08:44 1294

原创 LLM—— 基于 MCP 协议(Stdio 模式)的工具调用实践

本文介绍了MCP(Message Control Protocol)这一轻量级通信协议,它为解决大语言模型调用外部工具的问题提供了底层架构支持。MCP支持跨语言交互、工具解耦和动态注册调用,并通过Stdio、SSE等多种传输机制实现灵活通信。文章重点演示了基于Stdio模式的本地实现方案,包含服务端工具注册和客户端调用示例,展示了其进程隔离、低延迟等优势。与OpenAI Function Calling相比,MCP更加底层通用,适合构建模块化的智能体系统。最后指出MCP可扩展应用于本地LLM代理、多语言插件

2025-07-30 21:28:13 1582

原创 基于 OpenAI Function Calling 的工具调用实践解析交互流程

本文介绍了OpenAI Function Calling功能,它使大语言模型(LLM)能够与外部函数和API协同工作。文章通过天气查询的完整示例,详细讲解了Function Calling的实现流程:首先定义工具函数和JSON Schema参数结构,然后让模型判断是否调用函数并生成结构化参数,最后执行真实函数并返回结果给模型生成自然回复。Function Calling拓展了LLM的实用性,使其从仅能"说话"升级为能"动手做事",是构建智能体(AI Agent)的核心

2025-07-30 19:37:26 1186

原创 高效管理多个异步上下文:初识 Python 中的 AsyncExitStack

AsyncExitStack 是 Python 异步编程中用于动态管理多个异步资源的工具,它比固定嵌套的 async with 更灵活安全。主要特点:1)支持运行时动态注册任意数量的异步上下文管理器;2)自动按逆序清理所有资源,确保异常时也能释放;3)避免深层嵌套,提升代码可读性。适用于不确定资源数量、需要统一清理等场景,如管理多个数据库连接或WebSocket会话。通过 enter_async_context() 注册资源,并支持用 push_async_callback() 清理非标准异步资源。它是实现

2025-07-29 20:39:22 923

原创 使用JSON Schema 的 dependencies 实现 LLM 工具调用的参数约束

本文探讨了如何利用JSON Schema的dependencies机制规范大语言模型(LLM)工具调用的参数组合。通过一个浏览器控制工具示例,展示了当不同动作(如go_to_url、click_element等)需要不同参数时,如何用dependencies强制约束参数依赖关系,避免模型生成无效请求。该方案兼容OpenAI、Qwen等主流框架,能显著提升工具调用的准确性和健壮性。建议为多功能工具定义清晰的参数依赖,并搭配描述字段以优化模型理解。

2025-07-29 19:32:00 312

原创 浅谈 Python 中的 @property 与 @cached_property

Python属性控制:四大装饰器详解 本文介绍了Python中控制属性的四个关键装饰器:@property可将方法转为只读属性,@x.setter和@x.deleter分别控制属性的写入和删除逻辑,@cached_property实现懒加载和缓存功能。@property让接口更简洁,setter/deleter可添加校验逻辑,cached_property则在首次计算后缓存结果。文章还剖析了cached_property的实现原理,包括通过__set_name__自动获取属性名的机制,解释了它如何动态识别属

2025-07-29 00:57:45 1085

原创 初识 Python 中的装饰器

Python 装饰器详解 装饰器是 Python 中用于增强函数或类功能的语法特性,本质是一个接收函数并返回新函数的闭包。文章从基础到进阶全面介绍了装饰器: 核心概念:展示了基本装饰器结构,通过闭包机制实现功能增强 实现原理:解释了函数作为一等对象和闭包机制,分析__closure__属性 高阶用法:包括带参数的装饰器(三层嵌套)、functools.wraps保持元信息、类装饰器实现 执行顺序:详细解析了多个装饰器的执行顺序(从下往上包裹,从外到内执行) 应用场景:列举了权限控制、缓存、计时等8种常见应用

2025-07-27 15:40:18 783

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除