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

【GPT入门】第 34 课:深度剖析 ReAct Agent 工作原理及代码实现

【GPT入门】第 34 课:深度剖析 ReAct Agent 工作原理及代码实现

  • 1. React Agent概述
  • 2. React Agent工作原理、关键特点、应用场景
  • 3. langchain的ReAct Agent代码实现
    • 3.1 Openai1.x 代码实现
    • 3.2 Openai 0.x的实现
    • 3.3 新旧版API异同比较

1. React Agent概述

定义与基本概念
在人工智能和自然语言处理领域,ReAct Agent(反应式智能代理)是一种独特且强大的智能代理。它基于 “推理 - 行动(Reasoning - Acting)” 的范式,将推理和行动紧密结合,以模拟人类在解决问题时的思维和行为模式。ReAct Agent 能够根据输入的问题进行逻辑推理,决定需要采取的行动,然后调用相应的工具来执行这些行动,并依据行动的结果进一步推理和调整后续行动,通过不断循环迭代来逐步解决复杂的任务。

产生背景
随着自然语言处理技术的发展,传统的基于固定规则或单一模式的智能系统在处理复杂、动态和需要多步骤推理的任务时面临挑战。例如,在问答系统中,简单地检索知识库可能无法满足用户对复杂问题的解答需求;在任务自动化场景中,固定流程的程序难以应对各种变化的情况。ReAct Agent 的出现正是为了克服这些局限性,它借鉴了人类解决问题时的思考和行动方式,通过推理和行动的协同工作,使智能系统能够更加灵活、智能地处理各种复杂任务。

2. React Agent工作原理、关键特点、应用场景

工作原理
ReAct Agent 的核心在于它能够根据接收到的问题进行推理,决定需要采取的行动,然后执行这些行动并根据行动结果不断调整后续的推理和行动。它通过在推理和行动之间循环迭代,逐步解决复杂的任务。在推理阶段,代理会分析问题、规划行动步骤;在行动阶段,代理会调用各种工具(如搜索引擎、数据库查询等)来获取所需信息。

关键特点

  • 思维链提示:ReAct Agent 借鉴了思维链提示的方法,在推理过程中会生成一系列中间思维步骤,这些步骤类似于人类在思考问题时的内心独白,能够帮助代理更好地理解问题、规划行动。
  • 与工具交互:能够与外部工具进行交互,利用工具的能力来解决问题。例如,当遇到需要查询最新信息的问题时,代理可以调用搜索引擎工具获取相关信息。
  • 动态决策:根据当前的问题和已有的信息动态地决定下一步的行动,而不是按照预设的固定流程执行任务。这种灵活性使得代理能够适应各种复杂的场景。

应用场景

  • 问答系统:在问答系统中,ReAct Agent 可以处理复杂的问题。当用户提出一个问题时,代理首先进行推理,判断是否需要查询外部信息。如果需要,它会调用搜索引擎等工具获取相关信息,然后对信息进行整合和分析,最终给出准确的答案。
  • 任务自动化:在需要完成一系列复杂任务的场景中,ReAct Agent 可以发挥重要作用。例如,在一个项目管理系统中,代理可以根据项目的目标和当前状态,推理出需要执行的任务步骤,并调用相应的工具(如文档编辑工具、任务分配工具等)来完成这些任务。
  • 信息检索与整合:当需要从多个数据源中检索和整合信息时,ReAct Agent 可以根据问题的需求,依次调用不同的数据源(如数据库、网页等),获取相关信息,并将这些信息进行整合和处理,为用户提供全面的信息服务。

3. langchain的ReAct Agent代码实现

3.1 Openai1.x 代码实现

langchan0.32版本,openai 1.x版本
serpapi 需要去官网注册 api_key,并配置到环境变量

import osfrom dotenv import load_dotenv
from langchain.agents import create_react_agent, AgentExecutor
load_dotenv()
from langchain_community.agent_toolkits.load_tools import load_tools
from langchain import hub# 加载prompt
prompt = hub.pull("hwchase17/react")# 加载工具
tools = load_tools(["serpapi"])
# 加载模型
from langchain_community.chat_models import ChatTongyi
llm = ChatTongyi(model="qwen-max",api_key=os.getenv("DASHSCOPE_API_KEY"),base_url=os.getenv("DASHSCOPE_BASE_URL")
)
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True, max_iterations=3)
res = agent_executor.invoke({"input": "谁的寿命更长: Plato, Socrates, or Aristotle"})
print('res:',res)

观察执行结果:

> Entering new AgentExecutor chain...
我需要知道这三位哲学家各自的寿命,才能回答谁的寿命更长。我将使用搜索功能来查找这些信息。
Action: Search
Action Input: Plato, Socrates, and Aristotle lifespansThe Classical Greek Philosophers Socrates: 469 - 399 B.C.E. Plato: 427 - 347 B.C.E. Aristotle: 384 - 323/2 B.C.E.根据搜索结果,我们可以计算出每位哲学家的大致寿命:
- 苏格拉底(Socrates): 469 - 399 B.C.E. = 约70年
- 柏拉图(Plato): 427 - 347 B.C.E. = 约80年
- 亚里士多德(Aristotle): 384 - 323/2 B.C.E. = 大约61或62年从这些数据中可以看出,柏拉图的寿命是最长的。
Final Answer: 在这三位哲学家中,柏拉图(Plato)的寿命最长。> Finished chain.
res: {'input': '谁的寿命更长: Plato, Socrates, or Aristotle', 'output': '在这三位哲学家中,柏拉图(Plato)的寿命最长。'}

prompt = hub.pull(“hwchase17/react”)
prompt内容:

Answer the following questions as best you can. You have access to the following tools:{tools}Use the following format:Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input questionBegin!Question: {input}
Thought:{agent_scratchpad}

3.2 Openai 0.x的实现

在openai1.x中已经过期,但可以比较他们的异同

from langchain.agents import AgentType, initialize_agent
from langchain.utilities import SerpAPIWrapper
from langchain_community.tools import TavilyAnswer
from langchain_core.tools import Tool
from langchain_openai import OpenAI
from dotenv import load_dotenv
load_dotenv()# llm = OpenAI(temperature=0)
import os
from langchain_community.chat_models import ChatTongyi
llm = ChatTongyi(# model="qwen-max", # 自问自答中,报错model="qwen-turbo", # 自问自答中,表现好api_key=os.getenv("DASHSCOPE_API_KEY"),base_url=os.getenv("DASHSCOPE_BASE_URL")
)tools = [TavilyAnswer(max_results=1, name="Intermediate Answer", description="Answer Search")]self_ask_with_search = initialize_agent(tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True,handle_parsing_errors=True,max_iterations=10
)
res = self_ask_with_search.invoke("hoW lived longer: Plato, Socrates, or Aristotle?")
print(res)
> Entering new AgentExecutor chain...
Yes.
Follow up: How long did Plato live?
Intermediate answer: Plato lived from 428/427 BCE to 348/347 BCE. He was a Greek philosopher and founder of the Academy in Athens. His most famous work is "The Republic."
Follow up: How long did Socrates live?
Intermediate answer: Socrates lived from around 470 BCE to 399 BCE. He was a Greek philosopher who was sentenced to death by poison in Athens. His most famous student was Plato.
Follow up: How long did Aristotle live?
Intermediate answer: Aristotle lived from 384 to 322 BC. He was a Greek philosopher and tutor of Alexander the Great. His works spanned many fields, including logic, biology, and ethics.
So the final answer is: Plato lived longer than both Socrates and Aristotle.> Finished chain.
{'input': 'hoW lived longer: Plato, Socrates, or Aristotle?', 'output': 'Plato lived longer than both Socrates and Aristotle.'}

3.3 新旧版API异同比较

新版api一次action就查出三个人的年龄信息,并给出最终答案。
旧版API每人都搜索一次,最后给出答案。明显新版API更高效。

相关文章:

【GPT入门】第 34 课:深度剖析 ReAct Agent 工作原理及代码实现

【GPT入门】第 34 课:深度剖析 ReAct Agent 工作原理及代码实现 1. React Agent概述2. React Agent工作原理、关键特点、应用场景3. langchain的ReAct Agent代码实现3.1 Openai1.x 代码实现3.2 Openai 0.x的实现3.3 新旧版API异同比较 1. React Agent概述 定义与基…...

MySQL介绍及使用

1. 安装、启动、配置 MySQL 1. 安装 MySQL 更新软件包索引 sudo apt update 安装 MySQL 服务器 sudo apt install mysql-server 安装过程中可能会提示你设置 root 用户密码。如果没有提示,可以跳过,后续可以手动设置。 2. 配置 MySQL 运行安全脚本…...

九、重学C++—类和函数

上一章节: 八、重学C—动态多态(运行期)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147004745?spm1001.2014.3001.5502 本章节代码: cpp/cppClassAndFunc.cpp CuiQingCheng/cppstudy - 码云 - 开源中国…...

C++·包装器

目录 function 包装各种可调用对象 包装类成员函数 应用举例 bind 一般形式 arg_list 调整参数顺序 调整参数个数&#xff08;绑死&#xff09; 应用举例 小知识 function 包含在<functional>头文件中&#xff0c;是一个类模版&#xff0c;但本质还是仿函数。…...

Linux动态监控进程利器:top命令详解

动态监控进程利器&#xff1a;top命令详解 在Linux系统的日常管理中&#xff0c;实时监控进程状态和资源使用情况是一项至关重要的任务。top命令作为Linux系统自带的强大工具&#xff0c;以其动态更新的特性&#xff0c;成为了系统管理员和开发者的得力助手。本文将全面解析to…...

家庭路由器wifi设置LAN2LAN和LAN2WAN

一、LAN2LAN 方式&#xff1a;桥接模式&#xff0c;主路由器的LAN口接入子路由器的LAN口 子路由器先重置登录密码&#xff08;知道密码可以不重置&#xff09;&#xff0c;登录后台 1、设置为动态IP模式 2、找到LAN口设置 1&#xff09;ip设置和主路由器在一个网段上&#…...

Python实现NOA星雀优化算法优化LightGBM分类模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在机器学习领域&#xff0c;分类问题是许多实际应用场景的核心任务之一&#xff0c;例如信用评估、…...

面试顺序优化:基于Matlab的高效决策方案

内容摘要 本文围绕面试顺序问题&#xff0c;通过建立数学模型并利用Matlab编程求解&#xff0c;寻找使面试总时长最短的面试顺序安排。详细介绍问题分析、模型构建及Matlab代码实现过程&#xff0c;为类似的时间优化问题提供参考&#xff0c;助力提升流程效率。 关键词&#x…...

【暑期实习之战】2024年美团秋招技术岗第一批笔试(练习)

选择题 6. 在MySQL中可以用来执行预处理语句的是() A execute B prepare C deallocate D using prepare:用于预编译SQL语句(为执行做准备),但并非执行动作本身。execute:专门用于执行已通过 PREPARE 预处理的语句,是运行预编译查询的关键步骤。✔deallocate prepare:…...

VLAN详解

VLAN&#xff08;虚拟局域网&#xff09;详解 1. 基本概念 VLAN&#xff08;Virtual Local Area Network&#xff09;是一种通过逻辑划分而非物理连接实现的局域网技术&#xff0c;允许在同一物理网络基础设施上创建多个独立的广播域。 2. 核心功能 功能说明广播域隔离不同V…...

[leetcode]1786. 从第一个节点出发到最后一个节点的受限路径数(Dijkstra+记忆化搜索/dp)

题目链接 题意 给定一个无向连通图&#xff0c;edges{u,v,w} 表示 u u u和 v v v之间有一条无向边&#xff0c;边权为 w w w n n n个点 [ 1 , n ] [1,n] [1,n] 每个点到 n n n的最短路为 d i s [ i ] dis[i] dis[i] 定义受限路径: 从起点 1 1 1到 n n n&#xff0c;路径上的…...

Ubuntu挂载HDD迁移存储PostgreSQL数据

关联博客&#xff1a;windows通用网线连接ubuntu实现ssh登录、桌面控制、文件共享 背景&#xff1a; 在个人ubuntu机器上安装了pgsql&#xff0c;新建了一张表插入了2000w数据用于模拟大批量数据分页查询用&#xff0c;但是发现查询也不慢&#xff08;在公司测试环境查询1700…...

设计模式简述(五)建造者模式

建造者模式 描述基本要素协调类使用 描述 建造者模式属于创造型设计模式。 通常用于构建一系列复杂对象&#xff0c;这些对象有一定的共性。 我们可以通过不同的建造者&#xff0c;组装不同的对象 与工厂模式的区别&#xff0c;建造者模式更侧重与基于基础构件组装而非直接创…...

ARXML文件解析-2

目录 1 摘要2 常见ARXML文件注意事项以及常见问题2.1 注意事项2.2 常见问题2.3 答疑 3 ARXML解读/编辑指南3.1 解读ARXML文件的步骤3.2 编辑ARXML文件的方法3.3 验证与调试 4 总结 1 摘要 本文主要对ARXML文件的注意事项、常见问题以及解读与编辑进行详细介绍。 上文回顾&…...

Docker设置代理

目录 前言创建代理文件重载守护进程并重启Docker检查代理验证 前言 拉取flowable/flowable-ui失败&#xff0c;用DaoCloud源也没拉下来&#xff0c;不知道是不是没同步。索性想用代理拉镜像。在此记录一下。 创建代理文件 创建docker代理配置 sudo mkdir -p /etc/systemd/s…...

ASP.NET Core Web API 参数传递方式

文章目录 前言一、参数传递方式路由参数&#xff08;Route Parameters&#xff09;查询字符串参数&#xff08;Query String Parameters&#xff09;请求体参数&#xff08;Request Body&#xff09;表单数据&#xff08;Form Data&#xff09;请求头参数&#xff08;Header Pa…...

火语言RPA--PgSQL-导入数据表格

【组件功能】&#xff1a;导入特定的表格数据到包含同样字段的数据表 将表格对象数据通过数据库操作对象导入到指定数据库。 配置预览 配置说明 源表格 表格来源有“来自表格对象”和“来自表达式”2种&#xff0c;表达式支持DataTable类型变量。 对象 对应来自表格对象&…...

Spring Cloud 网关及配置管理教学

一、课程目标 深入理解 Spring Cloud 中网关和配置管理的核心概念、原理及应用场景。熟练掌握 Spring Cloud Gateway 的配置与开发&#xff0c;能够实现请求路由、登录校验、用户信息传递等功能。学会使用 Nacos 进行配置管理&#xff0c;包括共享配置、配置热更新和动态路由的…...

202520 | 微服务

微服务 VS 单体架构 单体架构&#xff08;Monolithic Architecture&#xff09;和微服务架构&#xff08;Microservices Architecture&#xff09;是两种主流的软件设计模式&#xff0c;它们在开发、部署、扩展和维护等方面有显著差异。以下是两者的详细对比&#xff1a; 1. 定…...

32信号和槽_信号和槽存在的意义(2)

① 一个学生,可以选择多门课程来学习 一门课程,也可以被多个同学来选择 ② 张三这个同学,可以选 语文和数学 . 李四这个同学可以选 语文 和 英语 语文这门课程,既可以被张三选择,也可以被李四选择~~ ③ 引入第三张表作为关联表 ④一个信号,可以 connect 到多个槽函数上 一个槽…...

Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?

一、确定 MySQL 安装路径&#xff1a; 如果你是使用 Homebrew 安装的 MySQL&#xff0c;通常安装路径是 /usr/local/mysql/bin 。 如果你是通过官方 DMG 安装包安装的 MySQL&#xff0c;默认安装路径可能是 /usr/local/mysql/bin 。你可以在终端中使用以下命令来查找 MySQL 的…...

Django REST Framework系列教程(9)——过滤与排序

目录 前情回顾 方法一: 重写get_queryset方法 方法二: 使用django-filter 安装django-filter 自定义FilterSet类 方法三: 使用SearchFilter类 自定义SearchFilter类 排序OrderingFilter类 在前面的DRF系列教程中&#xff0c;我们以博客为例介绍了序列化器(Serializer),…...

工业级主题系统程序设计

一、架构优化方案 #mermaid-svg-gB72o6CBc2UMgkrv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gB72o6CBc2UMgkrv .error-icon{fill:#552222;}#mermaid-svg-gB72o6CBc2UMgkrv .error-text{fill:#552222;stroke:#5…...

Java 逐梦力扣之旅_[204. 计数质数]

题目: 204. 计数质数 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2&#xff1a; 输入&#xff1a;n 0 输出&…...

[3.3] 阻塞与非阻塞通信 理论+代码

文章目录 1. 阻塞通信的发生和解决2. 点对点通信应用程序案例 - 随机步行&#xff08;Random Walk&#xff09; 1. 阻塞通信的发生和解决 MPI的p2p中包括两种模式&#xff1a; a. 阻塞通信&#xff08;Blocking&#xff09; MPI_Send 和 MPI_Recv 在返回前&#xff0c;必须满…...

node_modules\deasync: Command failed.

运行&#xff1a;“yarn install” 时报错 PS D:\WebPro\hainan-mini-program> yarn install yarn install v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... warning " > babel-loader8.2.2" has un…...

二十种中药果实识别分类系统,Python/resnet18/pytorch

二十种中药果实识别分类系统,Python/resnet18/pytorch 基于pytorch训练, resnet18网络&#xff0c;可用于训练其他分类问题&#xff0c;也可自己重新训练 20类中药材具体包括&#xff1a;(1) 补骨脂&#xff0c;(2) 草豆蔻&#xff0c;(3) 川楝子&#xff0c;(4) 地肤子&…...

C++·异常

目录 概念 使用 异常的抛出和捕获 栈展开 catch匹配 继承体系例子 异常重新抛出 异常安全问题 例&#xff1a; 异常规范 小知识 概念 异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理&#xff0c; 异常使得我们能够将问题的…...

C 语言高级编程指南:回调函数与设计模式

C 语言高级编程指南&#xff1a;回调函数与设计模式 目录 回调函数详解C语言中的设计模式高级回调函数应用内存管理与安全多线程环境下的设计模式 回调函数详解 1. 什么是回调函数&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是一个通过函数指针调用的…...

SeaTunnel系列之:Apache SeaTunnel编译和安装

Apache SeaTunnel编译 Prepare编译克隆源代码本地安装子项目从源代码构建 SeaTunnel构建子模块安装 JetBrains IDEA Scala 插件安装 JetBrains IDEA Lombok 插件代码风格运行简单示例不仅如此 安装下载 SeaTunnel 发布包下载连接器插件从源代码构建 SeaTunnel 运行 SeaTunnel 在…...

zk基础—5.Curator的使用与剖析二

大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curator实现分布式Barrier 6.基于Curator实现分布式计数器 7.基于Curator实现zk的节点和子节点监听机制 8.基于Curator创…...

bge-m3+deepseek-v2-16b+离线语音能力实现离线文档向量化问答语音版

ollama run deepseek-v2:16b ollama pull bge-m3 1、离线听写效果的大幅度提升。50M 1.3G&#xff08;每次初始化都会很慢&#xff09;---优化到首次初始化使用0延迟响应。 2、文档问答历史问题处理与优化&#xff0c;文档问答离线策略讨论与参数暴露。 3、离线大模型答复中断…...

[leetcode]3123. 最短路径中的边(Dijkstra+反向搜索找边)

题目链接 题意 给定n个点的无向图 给定一个edges{u,v,w}数组 表示u到v有一条边权为w的无向边 返回一个bool数组ans&#xff0c;ans[i]1表示edges[i]在任意一条0到n-1的最短路中 思路 先Dijkstra找出最短路再从n-1出发 反向搜索 当前点i&#xff0c;邻接点j&#xff0c;边权…...

构建macOS命令速查手册:基于Flask的轻量级Web应用实践

构建macOS命令速查手册&#xff1a;基于Flask的轻量级Web应用实践 一、项目概述 本文介绍一个基于Flask框架开发的macOS命令速查Web应用。该应用通过结构化的命令数据存储和响应式前端设计&#xff0c;为用户提供便捷的命令查询体验&#xff0c;具备以下特点&#xff1a; 六…...

中国移动启动数字乡村“五新升级”:年底前,行政村5G覆盖达95%

大湾区经济网品牌观察报道&#xff0c;近日&#xff0c;在国家全面推进乡村振兴的战略背景下&#xff0c;中国移动近日发布数字乡村升级行动计划&#xff0c;以“AI大模型数智化平台”为核心引擎&#xff0c;围绕“五新升级”构建“两个新型”信息服务体系。 一、数字基建筑基&…...

借助mcpo在open-webui中使用mcp

open-webui前几天发布了0.6版本&#xff0c;我立即进行了升级。新版本中一个重要功能是通过mcpo方式支持了mcp server。本文将介绍mcpo是什么&#xff0c;以及如何在open-webui中使用它。同时&#xff0c;我也会分享几个在接入过程中遇到的问题及解决方案。 首先来介绍mcpo&…...

Mysql的备份还原

MySQL日志 日志类型 MySQL有几个不同的日志文件&#xff0c;可以帮助你找出mysqld内部发生的事情&#xff1a; 日志文件记入文件中的信息类型错误日志记录启动、运行或停止时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的语句。主要用…...

测试:正交法设计测试用例

目录 一、什么是正交法 二、利用正交表设计测试用例 正交法设计测试用例的步骤 一、什么是正交法 正交法的目的是为了减少测试用例的数量&#xff0c;让尽可能少的用例覆盖两两组合。认识正交表。 最简单的正交表是L4(2^3)&#xff0c;含意如下&#xff1a; “L”代表正…...

zk基础—5.Curator的使用与剖析一

大纲 1.基于Curator进行基本的zk数据操作 2.基于Curator实现集群元数据管理 3.基于Curator实现HA主备自动切换 4.基于Curator实现Leader选举 5.基于Curator实现分布式Barrier 6.基于Curator实现分布式计数器 7.基于Curator实现zk的节点和子节点监听机制 8.基于Curator创…...

VSCode中结合DeepSeek使用Cline插件的感受

前言 听网上有传言说AI智能插件Cline非常的好用&#xff0c;而且相对Cursor而言还是免费的&#xff0c;捆绑的大模型选择也比较的广泛。所以&#xff0c;特意安装试用了一下。 我的采用IDE是VSCode&#xff0c;捆绑的大模型是最近比较火的DeepSeek。总体使用下来感觉非常的棒。…...

安卓开发工程师-Java 常用数据结构

1. Java 中的数组和集合有什么区别&#xff1f; 数组&#xff1a; 长度固定&#xff1a;一旦声明&#xff0c;长度不能改变。类型单一&#xff1a;只能存储相同类型的元素。存储效率高&#xff1a;底层是连续的内存空间&#xff0c;访问速度快。示例代码&#xff1a; int[] …...

thinkphp8.0上传图片到阿里云对象存储(oss)

1、开通oss,并获取accessKeyId、accessKeySecret <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><tit…...

Angular 2 模板语法详解

Angular 2 模板语法详解 引言 Angular 2 作为一款强大的前端框架,以其组件化的开发模式和高效的性能被众多开发者所青睐。模板语法是Angular 2中用于定义组件UI的关键部分。本文将详细介绍Angular 2的模板语法,帮助开发者更好地理解和运用这一功能。 模板语法概述 Angula…...

进行性核上性麻痹护理攻略:多维度守护健康

日常起居护理 保证患者居住环境安全&#xff0c;清除地面障碍物&#xff0c;避免患者跌倒。家具摆放固定且合理&#xff0c;方便患者活动。为患者准备宽松、舒适、易于穿脱的衣物&#xff0c;减轻穿衣时的困难。在饮食上&#xff0c;提供富含营养、易于吞咽的食物&#xff0c;…...

MessageQueue --- RabbitMQ WorkQueue

MessageQueue --- RabbitMQ WorkQueue 什么是WorkQueue如何分发RoundRobinFair dispatch (Prefetch) --- 能者多劳 什么是WorkQueue Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。当消息处理比较耗时的时候&…...

Redis内存碎片详解!

目录 一、 什么是内存碎片&#xff1f;&#x1f914;二、 为什么 Redis 会有内存碎片呢&#xff1f;&#x1f937;‍♀️三、 如何查看 Redis 内存碎片的信息&#xff1f;&#x1f50d;四、 如何清理 Redis 内存碎片&#xff1f;&#x1f9f9;五、总结&#x1f4dd; &#x1f3…...

如何使用 Nginx 代理 Easysearch 服务

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器&#xff0c;广泛用于负载均衡、缓存、SSL 终端和服务代理等场景。本篇将尝试使用 Nginx 代理 Easysearch 服务&#xff0c;方法同样适用于 Elasticsearch 和 Opensearch。 测试环境 Easysearch 集群版本为 1.10.0&#xff…...

用python输出OLED字模库的符号

提示&#xff1a;博主是小白&#xff0c;如有不足&#xff0c;望海涵和指出 在单片机上练习使用OLED显示屏时&#xff0c;可以看到有个OLED字模库 本文用python将这些字符打印出来&#xff0c;代码如下&#xff08;本文只适用与128*64的OLED&#xff0c;如果是其它OLED&#xf…...

【java】Class.newInstance()

在 Java 中&#xff0c;Class.newInstance()是一个用于创建类的新实例的方法。它调用类的无参构造函数来创建对象。然而&#xff0c;从 Java 9 开始&#xff0c;Class.newInstance()方法已经被标记为废弃&#xff0c;推荐使用其他替代方法。 Class.newInstance()的使用 Class.…...

Apache Arrow 使用

下述操作参考 Building Arrow C — Apache Arrow v20.0.0.dev267 安装依赖组件 sudo apt-get install \build-essential \ninja-build \cmake 下载源码 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 创建build目录并且进入 mkdir a…...