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

关于Agent的简单构建和分享

前言:Agent 具备自主性、环境感知能力和决策执行能力,能够根据环境的变化自动调整行为,以实现特定的目标。

一、Agent 的原理

Agent(智能体)被提出时,具有四大能力 感知、分析、决策和执行。是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。它们具备自主性、反应性、社交性和适应性等特点,能够根据环境的变化调整自己的行为,以达到预设的目标。基于大模型构建的Agent,主要利用LLM进行进行语义理解和推理分析,结合任务分析能力通过外部工具Tool。利用RAG构建知识库来创建Memory。

 1、Planning

类比人脑,通过对任务的拆解,分解为多个小任务,通过构思方案,分步骤操作,得到最终的答案即可终止。如:ReAct、CoT(思维链)。

2、Memory

模拟大脑的记忆功能,分为长期记忆和短期记忆。长期记忆为用户行为特征、外部知识库等,短期记忆为多轮对话形式存储上下文,任务结束即可清理。

3、Tools

工具,顾名思义通过外部构建的工具辅助完成决策。如:代码分析,网页读取,天气查询等。

4、Action

通过对Planning、Memory、Tools三者的调用,完成对用户输入的回答。如:智能查询天气预报,智能机器人抓取物体等。

二、具体案例(天气查询)

1. Planning(规划)

目标:明确任务需求,制定查询计划。

  • 用户输入:用户提出天气查询需求(例如:“今天北京的天气怎么样?”)。

  • 任务拆解

    • 确定查询地点(北京)、时间(今天)。

    • 检查是否需要更详细的参数(如温度单位、是否需要降水概率等)。

  • 输出:生成一个结构化查询意图,例如:

{"action": "weather_query","location": "北京","date": "今天","params": ["temperature", "weather_condition"]
}

2. Memory(记忆)

目标:利用历史数据或上下文优化查询。

  • 短期记忆:检查对话历史中是否已有相关信息(例如用户之前提过“北京”或“今天”)。

    • 例:若用户刚问过“上海天气”,可确认是否需对比两地天气。

  • 长期记忆:检索用户偏好(如用户曾设置温度单位为“摄氏度”)。

  • 输出:补充查询参数,例如:

{"unit": "celsius","user_preference": "show_humidity"
}

3. Tools(工具)

目标:选择并调用合适的天气查询工具。

  • 工具匹配:识别可用工具(如 WeatherAPIOpenWeatherMap 等)。

  • 工具参数:将规划阶段的意图转化为工具所需的输入格式。

    • 例:调用 WeatherAPI 的请求参数:

weather_tool.query(location="北京", date="2023-11-20", unit="celsius")
  • 异常处理:准备备用工具或提示用户补充信息(如地点模糊时询问“您指的是北京市朝阳区吗?”)。

4. Action(执行)

目标:执行工具并返回用户可理解的结果。

  • 调用工具:发送请求至天气 API,获取原始数据。

    • 示例 API 返回:

{"location": "北京","date": "2023-11-20","temperature": 15,"condition": "晴","humidity": "40%"
}
  • 结果格式化:将数据转换为自然语言响应。

    • 最终输出:

      “今天北京天气晴朗,气温 15 摄氏度,湿度 40%。”

  • 错误处理:如查询失败,反馈原因(如“网络错误”或“地点不存在”

完整流程示例

  1. 用户输入:“今天北京湿度怎么样?”

  2. Planning:解析出 action=weather_query, location=北京, date=今天, params=[humidity]

  3. Memory:发现用户偏好“显示百分比”。

  4. Tools:调用 OpenWeatherMap 的湿度查询接口。

  5. Action:返回“今天北京湿度为 40%”。

三、具体实现

具体构建思路如下:

SimpleAgent/  
├── SimpleAgent.py                # 主代理类(入口)
├── llm/                          # 语言模型模块
│   ├── __init__.py               # 初始化文件
│   └── base_model.py             # 抽象模型基类
├── memory/                       # 记忆管理模块
│   ├── __init__.py
│   └── memory.py                 # 长短期记忆类
├── rag/                          # 检索增强生成模块
│   ├── __init__.py
│   └── rag.py                    # RAG检索生成模块
├── tool/                         # 工具模块
│   ├── __init__.py
│   ├── calculator.py             # 计算器工具
│   ├── weather.py                # 天气查询工具
│   └── base_tool.py              # 工具基类
└── callback/                     # 回调处理模块├── __init__.py└── event_handler.py          # 事件处理回调

llm /base_model.py  主要调用大模型作为核心。用来回答基本问题

memory/memory.py 主要用来保存对话数据,主要做简单的多轮对话

rag/rag.py 主要用来实现检索功能来使用本地知识库,使用langchain框架加载向量数据库Faiss

tool/  定义了工具基类,通过工具基类实现了calculator和weather 两个工具。

主要解析SimpleAgent:

1、如何利用大模型理解用户意图

        提示工程(Prompt Engineering)、语义相似度分析、意图分类技术、多轮对话管理

        推荐使用提示词工程

请分析用户意图并选择操作。可用工具:{tools_list}用户输入:{prompt}请返回严格的JSON格式:{{"tool": "工具名" | null,"action": "use" | "direct_response","params": "参数" | null,}}

tool_list包含工具名和工具描述,如果用户的需求工具可以实现,则通过工具调用,反之则用LLM直接回答。

print(agent.available_tools)
# 输出: {'calculator': '数学计算器工具...', 'weather': '天气查询工具...'}
2、如何定义工具和调用
2.1定义工具前,需要设置一个工具基类。
class Tool(ABC):"""工具基类"""def __init__(self):self._is_core = False  # 是否为核心工具@property@abstractmethoddef name(self) -> str:"""工具名称"""pass@abstractmethoddef use(self, params: Dict[str, Any]) -> Any:"""工具主逻辑Args:params: 参数字典Returns:执行结果"""pass
2.2定义一个天气查询Tool
import requests
from typing import Dict, Anyclass Weather(Tool):"""天气查询工具,获取指定城市的天气信息"""@propertydef name(self) -> str:return "weather"def use(self, params: Dict[str, Any]) -> Dict:city = params.get("city", "北京")# 实际调用天气APIresponse = requests.get(f"https://api.weather.com/{city}")return response.json()
 2.3 工具的调用

直接调用

result = agent.tool_use(tool_name="weather",params={"expression": "北京"}
)

通过LLM自动调度(用户自然语言输入 → Agent自动选择工具 → 返回结果:)

response = agent.llm_tool_dispatcher("查询北京的天气")
2.4 工具调用详解

通过使用_llm_analyze_intent()生成如下的意图结构化决策:

{"tool": "cweather","action": "use","params": {"expression": "北京"}
}

通过tool_use()方法调用,得到反馈结果。将反馈结果推送大模型转换为自然语言进行回复。

2.5 工具的添加

根据自己设置的base_tool来定义对应的工具(记得添加工具描述),然后在Agent中注册该工具

3、如何设置本地知识库(基于langchain)
3.1 文本文档的处理
from langchain.document_loaders import (PyPDFLoader,Docx2txtLoader,UnstructuredFileLoader
)class DocumentLoader:"""支持多种格式的文档加载器"""@staticmethoddef load(file_path: str):if file_path.endswith('.pdf'):loader = PyPDFLoader(file_path)elif file_path.endswith('.docx'):loader = Docx2txtLoader(file_path)else:  # txt/html等loader = UnstructuredFileLoader(file_path)return loader.load()
3.2. 向量数据库配置
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISSclass VectorDB:"""基于FAISS的本地向量数据库"""def __init__(self):self.embeddings = HuggingFaceEmbeddings(model_name="GanymedeNil/text2vec-large-chinese")def create_index(self, docs, save_path="vector_db"):db = FAISS.from_documents(docs, self.embeddings)db.save_local(save_path)return dbdef load_index(self, path):return FAISS.load_local(path, self.embeddings)
 3.3完整RAG实现
class LocalKnowledgeBase:def __init__(self):self.vectordb = VectorDB()self.retriever = Nonedef build_knowledge_base(self, file_paths: list):"""构建知识库"""all_docs = []for path in file_paths:docs = DocumentLoader.load(path)all_docs.extend(docs)self.vectordb.create_index(all_docs)print("知识库构建完成")def load_existing_knowledge(self, db_path):"""加载已有知识库"""self.retriever = self.vectordb.load_index(db_path)def query(self, question: str, top_k=3) -> list:"""检索知识"""if not self.retriever:raise ValueError("请先加载知识库")docs = self.retriever.similarity_search(question, k=top_k)return [doc.page_content for doc in docs]
3.4 与Agent的交互
class EnhancedAgent(SimpleAgent):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.knowledge_base = LocalKnowledgeBase()def rag_response(self, query: str) -> str:"""增强的RAG响应"""# 1. 检索相关知识contexts = self.knowledge_base.query(query)# 2. 构造增强提示prompt = f"""基于以下上下文回答问题:{contexts}问题:{query}答案:"""# 3. 生成最终回复return self.generate_response(prompt)
3.5 RAG 使用技巧

1、使用缓存或者保存为本地向量库,方便以后的查询

agent = EnhancedAgent("SmartBot")# 首次构建(耗时操作)
agent.knowledge_base.build_knowledge_base(["data/产品手册.pdf","data/常见问题.docx"
])
# 后续使用直接加载
agent.knowledge_base.load_existing_knowledge("vector_db")
from diskcache import Cachecache = Cache("query_cache")@cache.memoize(expire=3600)
def cached_query(question):return self.knowledge_base.query(question)

2、采用混合查询策略

def hybrid_search(query):# 语义检索semantic_results = self.retriever.similarity_search(query)# 关键词检索keyword_results = self.retriever.search(query, search_type="mmr")return combine_results(semantic_results, keyword_results)

3、关于知识库的更新

def update_knowledge(file_path):new_docs = load_documents(file_path)self.retriever.add_documents(new_docs)self.retriever.save("vector_db")

四、总结

基于大语言模型(LLM)的智能代理(Agent)实现,具有工具使用、记忆和检索增强生成(RAG)能力。

核心组件

  1. 语言模型(LanguageModel):基础的大模型接口

  2. 记忆系统(Memory):存储对话历史

  3. 工具系统(Tool):可扩展的工具框架

  4. 回调系统(CallbackHandler):事件处理机制

  5. RAG系统:检索增强生成功能

主要功能解析

1. 初始化与基础功能
  • __init__ 初始化代理名称、语言模型、记忆、回调和工具系统

  • greet 简单的问候功能

  • generate_response 基础文本生成功能

2. 工具系统
  • _init_tools 初始化默认工具(计算器和天气查询)

  • register_tool/unregister_tool 工具的动态注册与卸载

  • tool_use 安全执行工具调用,带超时控制和错误处理

  • available_tools 获取可用工具清单

3. 意图理解与调度
  • _llm_analyze_intent 核心意图理解方法:

    • 构造包含可用工具信息的提示词

    • 要求LLM返回结构化JSON响应

    • 使用正则表达式提取JSON结果

    • 验证结果结构有效性

  • llm_tool_dispatcher 主调度方法:

    • 如果有文件路径,使用RAG处理

    • 否则分析用户意图

    • 根据意图决定使用工具或直接响应

    • 格式化工具结果为自然语言

4. RAG功能
  • rag 方法实现检索增强生成:

    • 加载文档

    • 检索相关信息

    • 生成回答

5. 辅助功能
  • 日志记录

  • 错误处理

  • 回调系统(用于监控和扩展)

  • 结果格式化

 完整代码:https://github.com/rescal-xuan/SimpleAgent

相关文章:

关于Agent的简单构建和分享

前言:Agent 具备自主性、环境感知能力和决策执行能力,能够根据环境的变化自动调整行为,以实现特定的目标。 一、Agent 的原理 Agent(智能体)被提出时,具有四大能力 感知、分析、决策和执行。是一种能够在特定环境中自主行动、感…...

【C/S通信仿真】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 在网络编程中,TCP 协议是实现可靠通信的核心。本次实验基于 Windows 平台,使用 WinSock2 库实现客户端与服务器的双向数据传递,模拟…...

Tomcat 8 启动闪退解决方案:版本差异与调试技巧详解

在使用 Tomcat 8 时,启动闪退是常见问题,核心原因多与 JAVA_HOME 环境变量配置、版本特性及启动脚本逻辑相关。本文结合官方文档与专家实践,提供分版本解决方案及调试技巧,适用于开发与运维场景。 一、核心问题:JAVA_…...

【Project】基于spark-App端口懂车帝数据采集与可视化

文章目录 hadoop完全分布式部署hdfs-site.xmlcore-site.xmlmarpred-site.xmlyarn-site.xml spark集群部署spark-env.sh mongodb分片模式部署config 服务器初始化config 副本集 shard 服务器初始化shard 副本集 mongos服务器添加shard设置chunk大小 启动分片为集合 user 创建索引…...

基于ARM+FPGA+DSP的储能协调控制器解决方案,支持国产化

储能协调控制器的作用与设计方案 一、‌核心作用‌ ‌实时监测与协调控制‌ 实时采集储能系统电压、电流、温度等参数,监测电池电量状态及充放电功率,动态调整储能与电网、负载的功率交互,保障能源供需平衡15。支持一次调频(AGC&a…...

将天气查询API封装为MCP服务

下面我将展示如何将一个天气查询API封装为符合MCP协议的服务。我们将使用Python实现,包括服务端和客户端。 ## 1. 服务端实现 python # weather_mcp_server.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Di…...

JSON实现动态按钮管理的Python应用

在开发桌面应用程序时,动态生成用户界面元素并根据配置文件灵活管理是一项常见需求。本文将介绍如何使用Python的wxPython库结合JSON配置文件,开发一个支持动态按钮创建、文件执行和配置管理的桌面应用程序。该应用允许用户通过设置界面配置按钮名称和关…...

基于GA遗传优化TCN-BiGRU注意力机制网络模型的时间序列预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2024b(提供软件版本下载) 3.部分核心程序 (完整版代码包…...

MongoDB(docker版)备份还原

docker启动MongoDB docker run -d -p 27017:27017 --name my-mongo -v /mongodb/db:/data/db mongo备份MongoDB 使用mongodump备份数据库时,默认会将备份数据保存在当前工作目录下的dump文件夹中。 docker容器中默认备份在当前工作目录,所以此处指定当…...

[蓝桥杯 2025 省 Python B] 异或和

暴力(O(n^2)): def xor_sum(n, arr):total 0for i in range(n):for j in range(i 1, n):total (arr[i] ^ arr[j]) * (j - i)return total# 主函数 if __name__ "__main__":n int(input())arr list(map(int, input().split()…...

HTTP代理基础:网络新手的入门指南

目录 一、为什么需要了解HTTP代理? 二、HTTP代理的“中间人”角色 三、代理的三大核心类型 四、HTTP代理的5大实用场景 五、设置代理的三种方式 六、代理的优缺点分析 七、如何选择代理服务? 八、安全使用指南 九、未来趋势 结语 一、为什么需要…...

GRE 多层级网络数据处理系统

​ 一、整体架构​ 多层级网络数据处理系统,从底层硬件中断到上层协议处理,涵盖了数据包的接收、转发、解封装、路由决策和发送全流程。系统采用分层处理和模块化设计,结合了传统Linux网络协议栈与快速路径(Fast Path&#xff0…...

展望未来,楼宇自控系统如何全方位推动绿色建筑智能高效发展

在全球积极践行可持续发展理念的时代背景下,绿色建筑已成为建筑行业发展的必然趋势。绿色建筑追求在全生命周期内,最大限度地节约资源、保护环境和减少污染,为人们提供健康、舒适、高效的使用空间。而楼宇自控系统作为建筑智能化的核心技术&a…...

【计算机视觉】CV项目实战- Florence-SAM 多模态视觉目标检测+图像分割

Florence-SAM多模态视觉分析系统:技术解析与实战指南 一、项目架构与技术解析1.1 核心模型架构1.2 支持的任务模式 二、环境配置与部署实战2.1 本地部署指南2.2 运行演示系统 三、核心功能实战解析3.1 图像开放词汇检测3.2 视频目标跟踪 四、高级应用与二次开发4.1 …...

2025-04-23 Python深度学习3——Tensor

文章目录 1 张量1.1 数学定义1.2 PyTorch中的张量 2 创建 Tensor2.1 直接创建**torch.tensor()****torch.from_numpy()** 2.2 依据数值创建**torch.zeros() / torch.zeros_like()****torch.ones() / torch.ones_like()****torch.full() / torch.full_like()****torch.arange() …...

ZYNQ笔记(十三):双核 AMP 通信实验

版本:Vivado2020.2(Vitis) ZYNQ 裸机双核 AMP 实验: CPU0 接收串口的数据,并写入 OCM 中,然后利用软件产生中断触发 CPU1;CPU1 接收到中断后,根据从 OCM 中读出的数据控制呼吸灯的频…...

黑马Java基础笔记-3

短路逻辑运算符与逻辑运算符 逻辑运算符 符号作用说明&逻辑与(且)并且,两边都为真,结果才是真|逻辑或或者,两边都为假,结果才是假^逻辑异或相同为 false,不同为 true!逻辑非取反 短路逻辑…...

4.23学习总结

虽然之前写过的相关dfs和bfs的题,但方法忘的差不多了,重写了一遍相关的算法题,今天完成了岛屿数量的算法题,我利用的是bfs的算法,遍历每个结点,如果是1就count,然后再bfs向四周遍历并标记已经走过 初步看了…...

ElasticSearch:高并发场景下如何保证读写一致性?

在Elasticsearch高并发场景下,可以通过以下多种方式来保证读写一致性: 等待主分片和副本分片都确认(类似半同步机制) 设置consistency参数:在写操作时,可以设置consistency参数来控制写操作的一致性级别。…...

Qt基础007(Tcp网络编程)

文章目录 QTcp服务器的关键流程QTtcp客户端的关键流程TCP协议Socket QTcp服务器的关键流程 工程建立,需要在.pro加入网络权限 创建一个基于 QTcpServer 的服务端涉及以下关键步骤: 创建并初始化 QTcpServer 实例: 实例化 QTcpServer 。 调…...

visio导出的图片过大导致latex格式转成pdf之后很不清楚

联想电脑解决方法 右键打开方式选择【照片】,然后选择调整图片大小,将像素的宽度和高度调低。...

leetcode刷题——判断对称二叉树(C语言版)

题目描述: 示例 1: 输入:root [6,7,7,8,9,9,8] 输出:true 解释:从图中可看出树是轴对称的。 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 解释:从图中可看出最…...

STM32与i.MX6ULL内存与存储机制全解析:从微控制器到应用处理器的设计差异

最近做FreeRTos,以及前面设计的RVOS,这种RTOS级别的系统内存上的分布与CortexA系列里面的分布有相当大的区别,给我搞糊涂了。 目录 STM32(Cortex-M系列)的内存与存储机制 Flash存储内容RAM存储内容启动与运行时流程示例…...

经验分享-上传ios的ipa文件

.ipa格式的二进制文件,是打包后生成的文件,无论我们是放上去testflight测试还是正式上传到app store,都需要先上传到苹果开发者中心的app store connect上的构建版本上。 在app store connect上,上传构建版本的功能,它…...

Linux423 删除用户

查找 上面已查过:无法使用sudo 新开个终端试试 之前开了一个终端,按照deepseek排查 计划再开一个进程 开一个终端 后强制删除时显示:此事将被报告...

AI与Web3.0:技术融合

AI与Web3.0:技术融合 分享一下给大家一个从0开始学习ai 的网站。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 随着互联网技术的飞速发展,Web3.0作为下一代互联网形态,正以前所未有的速度改变着我们的生活方式和工作模式。Web3.0强…...

Python爬虫第18节-动态渲染页面抓取之Splash使用上篇

目录 引言 一、Splash 的简介与安装 1.1 简介 1.2 安装 二、Splash 的使用 三、Splash Lua 脚本开发 3.1 脚本入口与返回值 3.2 异步处理 四、Splash 对象属性 4.1 args 4.2 js_enabled 4.3 resource_timeout 4.4 images_enabled 4.5 scroll…...

Linux进程状态及转换关系

目录 1、就绪态(Ready) 2、运行态(Running) 3、僵尸态(Zombie) 4、可中断睡眠态(Interruptible Sleep) 5、不可中断睡眠态(Uninterruptible Sleep) 6、…...

Java基础:认识注解,模拟junit框架

认识注解 自定义注解 注解的原理 元注解 解析注解 应该场景-配合反射做juint框架 public static void main(String[] args) {AnnotationDemo4 a new AnnotationDemo4();Class clazz AnnotationDemo4.class;Method[] methods clazz.getDeclaredMethods();for (Method method …...

chrony服务器

时间有什么作用?约定干什么事情,会出问题,双方约定会达成 一旦有一方的时间不准确,约定都会达不成 不联网,计算机运行一个月,你的计算机就会和标准的时间差一两分钟 通常情况下,硬件时间的运…...

Springboot——Redis的使用

在当今的软件开发领域,缓存技术是提升应用性能的关键手段之一。Redis 作为一款高性能的键值对存储数据库,凭借其出色的读写速度和丰富的数据结构,在缓存场景中得到了广泛应用。Spring Boot 作为一款简化 Spring 应用开发的框架,与…...

【EasyPan】removeFile2RecycleBatch方法及递归操作解析

【EasyPan】项目常见问题解答(自用&持续更新中…)汇总版 文件批量转移到回收站方法解析 一、方法总述 removeFile2RecycleBatch方法实现将用户选中的文件/目录及其子内容批量移入回收站的业务逻辑,主要特点: 递归处理&…...

AIGC的伦理困境:机器生成内容是否该被监管?

AIGC的伦理困境:机器生成内容是否该被监管? 在当今数字时代,人工智能(AI)技术的发展日新月异,其中生成式人工智能(AIGC, AI-Generated Content)作为一项前沿技术,正以前…...

缓存一致性

什么是缓存一致性? 当数据库和缓存之间的额数据内容保持同步或最终一致,称为缓存一致性 为什么缓存不一致会发生? 因为缓存和数据库是两个独立系统,它们的更新过程不是原子操作,就可能发生以下情况: //…...

【Java学习方法】终止循环的关键字

终止循环的关键字 一、break 作用:跳出最近的循环(直接结束离break最近的那层循环) 使用场景:一般搭配if条件判断,如果满足某个条件,就结束循环,(场景:常见于暴力枚举中…...

bert学习

BERT Google在2018年提出的​​预训练语言模型​​,通过双向Transformer结构和大规模预训练。 核心特点 双向上下文 与传统模型(如LSTM或单向Transformer)不同,BERT通过同时考虑单词的​​左右上下文​​来捕捉更丰富的语义信息。…...

读书笔记:淘宝十年产品与技术演进史

作者:大淘宝技术 原文地址:读书笔记:淘宝十年产品与技术演进史 本文是对《淘宝十年产品事》与《淘宝技术这十年》两本书的阅读笔记总结。通过回顾淘宝过去十年在产品、技术、架构、中间件及开放平台等方面的发展历程,展现了其从初…...

ROS 快速入门教程02

5. Node 节点 以智能手机为例,当我们使用智能手机的某个功能时,大多时候在使用手机的某个APP。同样当我们使用ROS的某个功能时,使用的是ROS的某一个或者某一些节点。 虽然每次我们只使用ROS的某一个或者某一些节点,但我们无法下…...

卷积神经网络常用结构

空间注意力机制(Spatial Attention)详解 空间注意力机制(Spatial Attention)详解 空间注意力机制是计算机视觉中的重要组件,它使网络能够选择性地关注特征图中的重要空间区域,同时抑制不相关区域的影响。 空间注意力机制结构图 空间注意力机制详细解析…...

neo4j中节点内的名称显示不全解决办法(如何让label在节点上自动换行)

因为节点过多而且想让节点中所有文字都显示出来而放大节点尺寸 从neo4j中导出png,再转成PDF来查看时,要看清节点里面的文字就得放大5倍才行 在网上看了很多让里面文字换行的办法都不行 然后找到一个比较靠谱的办法是在要显示的标签内加换行符 但是我的节点上显示的是…...

容器化-Docker-进阶

一、自定义镜像:从基础部署到镜像定制​ (一)Linux 与 Docker 原生部署 Nginx 对比​ Linux 原生部署 Nginx # 安装依赖 sudo apt-get update && sudo apt-get install -y build-essential openssl libpcre3-dev zlib1g-dev # 下载Nginx源码 wget http://nginx.org…...

Sqlserver 自增长id 置零或者设置固定值

在 SQL Server 中,如果需要重置一个表的自增长(Identity)列的当前值,通常有几种方法可以实现。但是,值得注意的是,直接将自增长列的值设置为0并不是一个推荐的做法,因为这会破坏自增长列的连续性…...

状态模式(State Pattern)详解

文章目录 一、状态模式简介1.1 什么是状态模式?1.2 为什么需要状态模式?1.3 状态模式的核心思想二、状态模式的结构2.1 UML类图2.2 各个组件的详细说明2.3 交互过程三、状态模式的实现步骤(以Java为例)步骤1:创建状态接口步骤2:实现具体状态类步骤3:创建上下文类步骤4:…...

Shopee五道质检系统重构东南亚跨境格局,2025年电商游戏规则悄然改写

在2024年的东南亚跨境电商市场,一场以“质量”为核心的深度变革正在上演。作为头部平台的Shopee率先出招,以一套“五道质检流程”打破行业旧格局,不仅有效遏制高企的退货率,更引发从卖家结构到政策制度的连锁反应。 这场质量革命…...

Unity-无限滚动列表实现Timer时间管理实现

今天我们来做一个UI里经常做的东西:无限滚动列表。 首先我们得写清楚实现的基本思路: 所谓的无限滚动当然不是真的无限滚动,我们只要把离开列表的框再丢到列表的后面就行,核心理念和对象池是类似的。 我们来一点一点实现&#x…...

Python高级爬虫之JS逆向+安卓逆向1.6节: 函数基础

目录 引言: 1.6.1 理解函数 1.6.2 定义函数 1.6.3 调用函数 1.6.4 位置实参 1.6.5 关键字实参 1.6.6 爬虫不要进接单群 引言: 大神薯条老师的高级爬虫+安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级,中级,高级知识,涵盖的内容包括基础爬虫,高并发爬虫的设计与…...

集结号海螺捕鱼组件搭建教程与源码结构详解(第四篇)

本篇将聚焦“冰封领域”场景构建与性能优化策略。本节适合有Unity经验的技术团队,对大型特效场景优化、C与Unity协同通信及资源动态加载有深入需求的开发者。 一、冰封领域场景设计理念 冰封领域是高难度玩法场景,常用于高段位玩家房间,场景…...

02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数)

02.Python代码Pandas - Series全系列分享(使用.特点.说明.取值.函数) 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望…...

星火燎原:Spark技术如何重塑大数据处理格局

在数字化浪潮席卷全球的今天,数据已成为企业发展与社会进步的核心驱动力。面对海量且复杂的数据,传统的数据处理技术逐渐显得力不从心。而Apache Spark作为大数据领域的明星框架,凭借其卓越的性能与强大的功能,如同一束璀璨的星火…...

AI大模型和人脑的区别

为什么人脑没有幻觉,但是 AI 大语言模型有幻觉? 人脑和大型语言模型(LLM)在处理信息的方式上存在根本差异,这导致了幻觉现象主要出现在LLM中。LLM的幻觉是指模型生成了貌似合理但实际上错误或虚构的内容。 LLM的工作…...