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

CrewAI Community Version(二)——Agent

目录

  • 1. Agent总览
  • 2. Agent属性
  • 3. 创建Agent
    • 3.1 YAML配置
    • 3.2 直接用代码定义
    • 3.3 运行结果
  • 参考

1. Agent总览

  在CrewAI框架中,Agent是一个能具备下列能力的自主单元:
  1. 执行特定的任务
  2. 基于它的角色和目标进行决策
  3. 使用工具完成任务
  4. 与其他Agent交流协作
  5. 维持交互时的记忆
  6. 条件允许的情况下委派任务

2. Agent属性

属性参数类型含义
角色rolestr定义Agent在Crew中的能力
目标goalstr指导Agent进行决策
背景信息backstorystr为Agent提供上下文和个性特征,丰富交互
大语言模型llmUnion[str, LLM, any]增强Agent的大语言模型,默认为OPENAI_MODEL_NAME环境变量指定的模型或GPT-4
工具toolsList[BaseTool]Agent可用的工具,默认为空列表
函数调用的大语言模型function_calling_llmOptional[Any]用于调用工具的大语言模型,如果指定,将会覆盖crew的llm
最大迭代max_iterintAgent提供最佳答案之前的最大迭代数,默认为20
每分钟最大请求数max_rpmOptional[int]每分钟最大请求限制以避免速率限制
最大执行时间max_execution_timeOptional[int]任务执行的最大时间
记忆(疑似参数不存在)memoryboolAgent是否应该保持交互时的记忆
详细日志verbosebool打开详细的执行日志以便调试,默认为false
允许委派任务allow_delegationbool允许Agent将任务委派给其他Agent,默认为False
步骤回调step_callbackOptional[Any]每个Agent步骤调用的函数,覆盖crew回调
Cachecachebool为工具启用缓存,默认为True
系统提示词模板system_templateOptional[str]自定义Agent系统提示词模板
提示词模板prompt_templateOptional[str]自定义Agent提示词模板
响应模板response_templateOptional[str]自定义Agent响应模板
允许代码执行allow_code_executionOptional[bool]为Agent启用代码执行,默认为False
最大重试限制max_retry_limitint发生错误时重试的最大次数,默认值为2
尊重上下文窗口respect_context_windowbool通过总结将消息保持在上下文窗口大小之内,默认为True
代码执行模式code_execution_modeLiteral[“safe”, “unsafe”]代码执行模式:safe(Docker)或unsafe(直接),默认为safe
嵌入器embedderOptional[Dict[str, Any]]Agent使用的嵌入器的配置
知识来源knowledge_sourcesOptional[List[BaseKnowledgeSource]]Agent使用的知识来源
使用系统提示词模板use_system_promptOptional[bool]是否使用系统提示词模板(支持o1模型),默认为True

3. 创建Agent

3.1 YAML配置

  通过crewai create crew <your-project-name>后,在<your-project-name>/src/<your-project-name>/config/agents.yaml中以如下的形式定义Agents:

code_assistant:role: >高级Python开发工程师goal: >编写和调试Python代码backstory: >有10年开发经验的Python开发专家

  在<your-project-name>/src/<your-project-name>/config/tasks.yaml中以如下的形式定义Tasks:

coding_task:description: >1. 根据用户的要求编写Python代码。2. 解释用户给出的Python代码。3. 调试并修改用户给出的Python代码expected_output: >根据用户的要求或代码{code},给出一份正确且高效的Python代码agent: code_assistantlibrary_used: ['scikit-learn', 'numpy', 'matplotlib']

  在<your-project-name>/src/<your-project-name>/crew.py中创建一个继承CrewBase的类:

from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task# If you want to run a snippet of code before or after the crew starts,
# you can use the @before_kickoff and @after_kickoff decorators
# https://docs.crewai.com/concepts/crews#example-crew-class-with-decorators@CrewBase
class CodeAssistant():"""CodeAssistant crew"""# Learn more about YAML configuration files here:# Agents: https://docs.crewai.com/concepts/agents#yaml-configuration-recommended# Tasks: https://docs.crewai.com/concepts/tasks#yaml-configuration-recommendedagents_config = 'config/agents.yaml'tasks_config = 'config/tasks.yaml'# If you would like to add tools to your agents, you can learn more about it here:# https://docs.crewai.com/concepts/agents#agent-tools@agentdef code_assistant(self) -> Agent:return Agent(config=self.agents_config['code_assistant'],allow_code_execution=True,code_execution_mode='safe',max_execution_time=300,max_retry_limit=3,verbose=True)@taskdef coding_task(self) -> Task:return Task(config=self.tasks_config['coding_task'],)@crewdef crew(self) -> Crew:"""Creates the CodeAssistant crew"""# To learn how to add knowledge sources to your crew, check out the documentation:# https://docs.crewai.com/concepts/knowledge#what-is-knowledgereturn Crew(agents=self.agents, # Automatically created by the @agent decoratortasks=self.tasks, # Automatically created by the @task decoratorprocess=Process.sequential,verbose=True,# process=Process.hierarchical, # In case you wanna use that instead https://docs.crewai.com/how-to/Hierarchical/)

  在<your-project-name>/src/<your-project-name>/main.py中修改inputs:

mycode = """
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as pltplt.style.use("deeplearning.mplstyle")
plt.rcParams["font.family"] = "sans-serif"
plt.rcParams["font.sans-serif"] = ["SimHei", "Microsoft YaHei"]  # 设置中文字体
plt.rcParams["axes.unicode_minus"] = False  # 正确显示负号class MySoftMaxRegression:def __init__(self, alpha, la=1, penalty=None, epoch=1e3):self.m = Noneself.c = None # 类别个数self.w = Noneself.b = Noneself.dict = Noneself.reverse_dict = Noneself.alpha = alphaself.la = laself.e = epochself.ln = penalty is Noneself.l1 = penalty == "l1"self.l2 = penalty == "l2"self.jwb = []def _onehotencoder(self, y):y_unique = np.unique(y)t = tuple(zip(y_unique, np.arange(len(y_unique))))self.dict = {key: value for key, value in t}self.reverse_dict = {key: value for value, key in t}y_temp = np.zeros((len(y), len(np.unique(y))))for i in range(len(y)):y_temp[i][self.dict.get(y[i])] = 1return y_tempdef _softmax(self, x):x_temp = np.exp(np.dot(x, self.w.T) + self.b.T)x_sum = np.sum(x_temp, axis=1).reshape(len(x), 1)return x_temp / x_sumdef _loss(self, x, y):loss = -np.sum(np.log(self._softmax(x)) * y)if self.ln:return lossif self.l1:return loss + np.sum(np.abs(self.w))if self.l2:return loss + np.sum(self.w ** 2)def plotlearingcurve(self, st=0, end=None):end = int(self.e) if end is None else endplt.figure(1)plt.plot(np.arange(st, end + 1), self.jwb[st:end + 1])plt.xlabel("迭代次数")plt.ylabel("代价函数值")plt.title(f"学习曲线图从迭代次数{st}开始")def fit(self, x, y):self.m = len(x)self.c = len(np.unique(y))self.w = np.zeros((self.c, len(x[0])))self.b = np.zeros((self.c, 1))y_onehot = self._onehotencoder(y)self.jwb.append(self._loss(x, y_onehot))count = 0while count < self.e:w_temp = self.w - self.alpha * np.dot(((self._softmax(x) - 1) * y_onehot).T, x) / self.mif self.l1:w_temp = w_temp - self.alpha * self.la * np.sign(w_temp)if self.l2:w_temp = w_temp - 2 * self.alpha * self.la * w_tempself.b = self.b - self.alpha * np.sum((self._softmax(x) - 1) * y_onehot, axis=0).reshape(self.c, 1) / self.mself.w = w_tempself.jwb.append(self._loss(x, y_onehot))count += 1print(self.jwb)def predict(self, x):return self._softmax(x)def parameters(self):return self.w, self.b# 加载数据集,这里以鸢尾花数据集为例
iris = load_iris()
X = iris.data
y = iris.target# 分割数据集,60%作为训练集,40%作为测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
scaler = StandardScaler()
Xn_train = scaler.fit_transform(X_train)
Xn_test = scaler.transform(X_test)
SoftReg = MySoftMaxRegression(1)
SoftReg.fit(Xn_train, y_train)
SoftReg.plotlearingcurve()
y_pred = np.argmax(SoftReg.predict(Xn_test), axis=1)
print(np.sum(y_pred == y_test) / len(y_test))
print(SoftReg.parameters())
"""def run():"""Run the crew."""inputs = {"code": mycode}try:CodeAssistant().crew().kickoff(inputs=inputs)except Exception as e:raise Exception(f"An error occurred while running the crew: {e}")def train():"""Train the crew for a given number of iterations."""inputs = {"code": mycode}try:CodeAssistant().crew().train(n_iterations=int(sys.argv[1]), filename=sys.argv[2], inputs=inputs)except Exception as e:raise Exception(f"An error occurred while training the crew: {e}")def replay():"""Replay the crew execution from a specific task."""try:CodeAssistant().crew().replay(task_id=sys.argv[1])except Exception as e:raise Exception(f"An error occurred while replaying the crew: {e}")def test():"""Test the crew execution and returns the results."""inputs = {"code": mycode}try:CodeAssistant().crew().test(n_iterations=int(sys.argv[1]), openai_model_name=sys.argv[2], inputs=inputs)except Exception as e:raise Exception(f"An error occurred while testing the crew: {e}")

3.2 直接用代码定义

  只需将上面crew.py中的Agent定义以如下方式更改:

    @agentdef code_assistant(self) -> Agent:return Agent(role='高级Python开发工程师',goal='编写和调试Python代码',backstory='有10年开发经验的Python开发专家',allow_code_execution=True,code_execution_mode='safe',max_execution_time=300,max_retry_limit=3,verbose=True)

3.3 运行结果

  在项目路径下先安装依赖,然后运行:

crewai install
crewai run

  由于设置了allow_code_execution=True和code_execution_mode=‘safe’,因此需要在电脑上安装docker,否则将无法运行。
  总的来说,CrewAI的代码执行相当差劲,从接下来的运行结果图中就可以看出。
  下图是运行过程创建的docker容器,容器名为code-interpreter。
在这里插入图片描述
  下面是运行结果:
在这里插入图片描述
  这里对inputs中的code进行了分析,得到了这段代码的目的是实现softmax回归的分析。
在这里插入图片描述
  这里执行代码,发现缺少sklearn即scikit-learn库。
在这里插入图片描述
  下面三张图都在尝试解决依赖问题,但是发现安装scikit-learn的时候缺少C++编译。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  修改后的代码:

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei']  # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号class MySoftMaxRegression:def __init__(self, alpha=0.1, la=1, penalty=None, epoch=1000):self.m = None  # 样本数量self.c = None  # 类别个数self.w = None  # 权重矩阵self.b = None  # 偏置向量self.dict = None  # 类别到索引的映射self.reverse_dict = None  # 索引到类别的映射self.alpha = alpha  # 学习率self.la = la  # 正则化系数self.epoch = epoch  # 迭代次数self.ln = penalty is None  # 无正则化self.l1 = penalty == "l1"  # L1正则化self.l2 = penalty == "l2"  # L2正则化self.loss_history = []  # 损失历史记录def _onehotencoder(self, y):"""将类别标签转换为one-hot编码"""y_unique = np.unique(y)self.dict = {label: idx for idx, label in enumerate(y_unique)}self.reverse_dict = {idx: label for idx, label in enumerate(y_unique)}y_onehot = np.zeros((len(y), len(y_unique)))for i, label in enumerate(y):y_onehot[i, self.dict[label]] = 1return y_onehotdef _softmax(self, x):"""计算softmax概率"""scores = np.dot(x, self.w.T) + self.b.T# 数值稳定性处理scores -= np.max(scores, axis=1, keepdims=True)exp_scores = np.exp(scores)return exp_scores / np.sum(exp_scores, axis=1, keepdims=True)def _loss(self, x, y_onehot):"""计算损失函数"""probs = self._softmax(x)# 交叉熵损失loss = -np.sum(np.log(probs) * y_onehot) / len(x)# 正则化项if self.l1:loss += self.la * np.sum(np.abs(self.w))elif self.l2:loss += self.la * np.sum(self.w ** 2)return lossdef plot_learning_curve(self):"""绘制学习曲线"""plt.figure(figsize=(10, 6))plt.plot(range(len(self.loss_history)), self.loss_history)plt.xlabel("迭代次数")plt.ylabel("损失值")plt.title("学习曲线")plt.grid(True)plt.show()def fit(self, x, y):"""训练模型"""self.m = len(x)self.c = len(np.unique(y))# 初始化参数self.w = np.random.randn(self.c, x.shape[1]) * 0.01self.b = np.zeros((self.c, 1))y_onehot = self._onehotencoder(y)for i in range(self.epoch):# 前向传播probs = self._softmax(x)# 计算梯度dw = np.dot((probs - y_onehot).T, x) / self.mdb = np.sum(probs - y_onehot, axis=0).reshape(self.c, 1) / self.m# 应用正则化if self.l1:dw += self.la * np.sign(self.w)elif self.l2:dw += 2 * self.la * self.w# 参数更新self.w -= self.alpha * dwself.b -= self.alpha * db# 记录损失current_loss = self._loss(x, y_onehot)self.loss_history.append(current_loss)# 每100次打印损失if i % 100 == 0:print(f"Epoch {i}, Loss: {current_loss:.4f}")def predict(self, x):"""预测类别"""probs = self._softmax(x)return np.array([self.reverse_dict[idx] for idx in np.argmax(probs, axis=1)])def score(self, x, y):"""计算准确率"""y_pred = self.predict(x)return np.mean(y_pred == y)def get_parameters(self):"""获取模型参数"""return self.w, self.b# 示例数据集 - 手动创建简单的多分类数据集
def create_dataset():np.random.seed(42)# 类别0的数据x0 = np.random.randn(50, 2) + np.array([2, 2])y0 = np.zeros(50)# 类别1的数据x1 = np.random.randn(50, 2) + np.array([-2, 2])y1 = np.ones(50)# 类别2的数据x2 = np.random.randn(50, 2) + np.array([0, -2])y2 = np.ones(50) * 2x = np.vstack([x0, x1, x2])y = np.hstack([y0, y1, y2])# 打乱数据indices = np.arange(len(x))np.random.shuffle(indices)return x[indices], y[indices]# 数据标准化
def standardize(x):mean = np.mean(x, axis=0)std = np.std(x, axis=0)return (x - mean) / std# 创建并准备数据
x, y = create_dataset()
x = standardize(x)# 分割训练集和测试集
split = int(0.8 * len(x))
x_train, y_train = x[:split], y[:split]
x_test, y_test = x[split:], y[split:]# 创建并训练模型
model = MySoftMaxRegression(alpha=0.1, epoch=1000)
model.fit(x_train, y_train)# 评估模型
print(f"训练集准确率: {model.score(x_train, y_train):.4f}")
print(f"测试集准确率: {model.score(x_test, y_test):.4f}")# 绘制学习曲线
model.plot_learning_curve()

  虽然修改后的代码仍然能执行并没有错误修改,但是没有在docker里执行并得到结果,因此根据需求编写代码任务得到的代码可信度存疑。

参考

https://docs.crewai.com/concepts/agents

相关文章:

CrewAI Community Version(二)——Agent

目录 1. Agent总览2. Agent属性3. 创建Agent3.1 YAML配置3.2 直接用代码定义3.3 运行结果 参考 1. Agent总览 在CrewAI框架中&#xff0c;Agent是一个能具备下列能力的自主单元&#xff1a;   1. 执行特定的任务   2. 基于它的角色和目标进行决策   3. 使用工具完成任务 …...

阿里云VS AWS中国区:ICP备案全攻略与常见误区解析

导语 在中国大陆开展互联网服务时,ICP备案是必不可少的合规步骤。然而,随着云服务的多样化,许多企业在选择备案路径时常常感到困惑。本文将深入解析阿里云和AWS中国区的备案区别,为您提供清晰的操作指南,助您避开备案陷阱,确保业务合规运营。 一、备案基本原则 1. 服务器决定…...

基于libdxfrw库读取样条曲线并离散为点

在计算机辅助设计&#xff08;CAD&#xff09;与制造&#xff08;CAM&#xff09;领域&#xff0c;DXF&#xff08;Drawing Exchange Format&#xff09;格式文件被广泛用于存储与交换矢量图形信息。样条曲线作为DXF文件中常见的复杂曲线类型&#xff0c;其准确读取与离散化处理…...

学习 Apache Kafka

学习 Apache Kafka 是一个很好的选择&#xff0c;尤其是在实时数据流处理和大数据领域。以下是一个系统化的学习建议&#xff0c;帮助你从入门到进阶掌握 Kafka&#xff1a; 1. 先决条件 在开始 Kafka 之前&#xff0c;确保你具备以下基础&#xff1a; Java 基础&#xff1a;K…...

5.3/Q1,GBD数据库最新文章解读

文章题目&#xff1a;The burden and trend prediction of ischemic heart disease associated with lead exposure: Insights from the Global Burden of Disease study 2021 DOI&#xff1a;10.1186/s12940-025-01155-w 中文标题&#xff1a;与铅暴露相关的缺血性心脏病的负担…...

java智慧城管综合管理系统源码,前端框架:vue+element;后端框架:springboot;移动端:uniapp开发,技术前沿,可扩展性强

智慧城管综合执法系统采用B/S模式设计与手机等移动终端架构&#xff0c;采用 java编程语言前端框架&#xff1a;vueelement&#xff1b;后端框架&#xff1a;springboot&#xff1b;数据库&#xff1a;mysql5.7&#xff1b;移动端&#xff1a;uniapp技术开发设计。具有使用与维…...

【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码)

目录 效果一览程序获取程序内容代码分享研究内容GRU门控循环单元在锂电池剩余寿命预测中的应用摘要关键词1. 引言1.1 研究背景1.2 研究现状与问题1.3 研究目的与意义2. 文献综述2.1 锂电池剩余寿命预测传统方法2.2 深度学习在锂电池寿命预测中的应用2.3 研究空白与本文切入点3.…...

开发首个Spring Boot应用

&#x1f4cb; 前置条件 &#x1f3af; 在开始之前&#xff0c;请打开终端并运行以下命令以确保已安装正确版本的 Java&#xff1a; $ java -version openjdk version "17.0.4.1" 2022-08-12 LTS OpenJDK Runtime Environment (build 17.0.4.11-LTS) OpenJDK 64-Bi…...

2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup

2025第十六届蓝桥杯大赛&#xff08;软件赛&#xff09;网络安全赛 Writeup 2025第十六届蓝桥杯大赛&#xff08;软件赛&#xff09;网络安全赛 Writeup情报收集黑客密室逃脱 数据分析ezEvtxflowzip 密码破解EnigmaECBTraineasy_AES 逆向分析ShadowPhases 漏洞挖掘分析RuneBrea…...

HTTP 协议深度解析:从基础到实战的完整指南

HTTP&#xff08;HyperText Transfer Protocol&#xff09;是 ​应用层协议&#xff0c;用于客户端&#xff08;浏览器、APP&#xff09;与服务器之间的数据交互。以下从协议原理、核心机制到实际案例全面解析&#xff0c;涵盖 HTTP/1.1 到 HTTP/3 的演进。 一、HTTP 核心特性 …...

5G助力智慧城市的崛起——从概念到落地的技术实践

5G助力智慧城市的崛起——从概念到落地的技术实践 引言&#xff1a;智慧城市中的“隐形脉络” 随着城市化的快速推进&#xff0c;传统的城市管理方式已经难以满足人口增长和资源优化的需求。智慧城市的概念应运而生&#xff0c;通过技术创新实现智能化、可持续发展的城市生态…...

4.25test

R7-5 小黄与研究生会(20) 分数 12 全屏浏览 切换布局 作者 王秀 单位 福州大学 福州大学研究生院怡山的同学们为了在国家对抗新冠疫情期间献出自己的一份力量,他们决定为奋战在一线的医护人员送去了演出。小黄作为研究生协会的会长,他让每位男同学均带去了若干只猫或狗…...

Unity-Shader详解-其一

今天我们来介绍Unity的一大核心组件&#xff1a;shader。 Shader Shader就是我们的着色器&#xff0c;用于控制图形的渲染的计算和生成。 对于不同的引擎&#xff0c;具体实现渲染的方法也不一样&#xff0c;也就是我们俗称的不同的图形引擎API&#xff0c;比如OpenGL,Direct…...

WPF与C++ 动态库交互

WPF与C++动态库交互技术详解 一、基本交互方式概述 WPF应用程序与C++动态库交互主要有以下几种方式: ​​P/Invoke调用​​(平台调用)​​COM互操作​​​​C++/CLI桥接层​​​​内存映射文件​​​​命名管道/Socket通信​​本文将重点介绍最常用的P/Invoke和C++/CLI两种…...

自动化测试实战篇

文章目录 目录1. 自动化实施步骤1.1 编写web测试用例1.2 自动化测试脚本开发1.3 测试报告 目录 自动化实施步骤 1. 自动化实施步骤 1.1 编写web测试用例 注&#xff1a; 因为这里仅作为演示&#xff0c;所以设计的用例并不是非常完整 1.2 自动化测试脚本开发 # common/Util…...

基于pandoc的MarkDown格式与word相互转换小工具开发(pyqt5)

这里写目录标题 开发目标准备工作源代码程序打包其他事项命令行使用pandoc关于pandoc默认表格无边框的说明 开发目标 采用word格式模板&#xff0c;实现高级定制样式。具备配置保存功能&#xff0c;方便快捷。自定义转换选项、pandoc路径。 准备工作 开发环境&#xff1a;Wi…...

JVM知识点(一)---内存管理

一、JVM概念 什么是JVM&#xff1f; 定义&#xff1a; Java Virtual Machine - java程序的运行环境(java二进制字节码的运行环境) 好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越界越界检查多态 比较jvm jre jdk区别 学习路…...

Apache NetBeans 25 发布

Apache NetBeans 25 已于 2025 年 2 月 20 日发布3。NetBeans 是一个主要面向 Java 的集成开发环境&#xff0c;同时支持 C/C、PHP、JavaScript 和其他编程语言1。以下是一些主要的更新内容&#xff1a; Gradle 的优化与增强&#xff1a;优化单文件测试功能&#xff0c;即使测试…...

【设计模式区别】装饰器模式和适配器模式区别

装饰器模式&#xff08;Decorator Pattern&#xff09;和适配器模式&#xff08;Adapter Pattern&#xff09;都是 结构型设计模式 或者说 包装模式 &#xff08;Wrapper&#xff09;&#xff0c;用于解决对象的组合和扩展问题&#xff0c;但它们的核心目的、结构和使用场景有显…...

矫平机终极指南:特殊材料处理、工艺链协同与全球供应链管理

一、特殊材料矫平&#xff1a;挑战与创新解决方案 1. 高温合金&#xff08;如Inconel 718&#xff09;处理 技术难点&#xff1a; 屈服强度高达1100 MPa&#xff0c;传统矫平力不足 高温下易氧化&#xff0c;需惰性气体保护环境 解决方案&#xff1a; 采用双伺服电机驱动&a…...

stm32进入睡眠模式的几个注意点

&#xff08;1&#xff09;关闭systick &#xff08;2&#xff09;先关闭外设时钟&#xff0c;再屏蔽中断&#xff0c;避免先屏蔽中断再关闭外设时钟导致中断挂起无法进入睡眠模式&#xff08;立即被唤醒&#xff09;。 参考&#xff1a; 注&#xff1a;图片截自《RM0433参考手…...

深入理解网络安全中的加密技术

1 引言 在当今数字化的世界中&#xff0c;网络安全已经成为个人隐私保护、企业数据安全乃至国家安全的重要组成部分。随着网络攻击的复杂性和频率不断增加&#xff0c;保护敏感信息不被未授权访问变得尤为关键。加密技术作为保障信息安全的核心手段&#xff0c;通过将信息转换为…...

学习设计模式《六》——抽象工厂方法模式

一、基础概念 抽象工厂模式的本质是【选择产品簇(系列)的实现】&#xff1b; 抽象工厂模式定义&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类&#xff1b; 抽象工厂模式功能&#xff1a;抽象工厂的功能是为一系列相关对象或相互依…...

MySQL 数据类型

文章目录 数据类型数据类型分类数据类型tinyint类型&#xff08;整型&#xff09;总结bit类型&#xff08;字节&#xff09; 浮点类型float类型decimal类型 字符串类型char类型varchar&#xff08;变长字符串&#xff09; char 和 varchar的对比日期类型enum和set类型&#xff…...

基于Tcp协议的应用层协议定制

前言&#xff1a;本文默认读者已掌握 TCP 协议相关网络接口知识&#xff0c;将聚焦于应用层协议的设计与剖析&#xff0c;有关底层通信机制及业务逻辑部分仅作简要概述&#xff0c;不再展开详述。 目录 服务器 一、通信 二、协议 1.序列化与反序列化 2. 封包与解包 三、业…...

Flink反压问题解析

一、什么是反压(Backpressure)? 反压(Backpressure) 是流处理系统中的一种流量控制机制。当下游算子处理速度低于上游数据生产速度时,系统会向上游传递压力信号,迫使上游降低数据发送速率,避免数据堆积和系统崩溃。 Flink 通过动态反压机制实现这一过程,但其副作用是…...

C语言中结构体的字节对齐的应用

一、字节对齐的基本原理 计算机的内存访问通常以固定大小的块&#xff08;如 4 字节、8 字节&#xff09;为单位。若数据的内存地址是块大小的整数倍&#xff0c;称为 自然对齐。例如&#xff1a; int&#xff08;4 字节&#xff09;的地址应为 4 的倍数。 double&#xff08…...

大规模数据同步后数据总条数对不上的系统性解决方案:从字段映射到全链路一致性保障

一、引言 在数据同步&#xff08;如系统重构、分库分表、多源整合&#xff09;场景中&#xff0c;“本地数据一致&#xff0c;生产环境条数对不上”是典型痛点。问题常源于并发处理失控、数据库性能瓶颈、字段映射错误、缓存脏数据等多维度缺陷。本文结合实战经验&#xff0c;…...

美团Java后端二面面经!

场景题是面试的大头&#xff0c;建议好好准备 Q. [美团]如何设计一个外卖订单的并发扣减库存系统&#xff1f; Q.[美团]为啥初始标记和重新标记需要STW&#xff1f; Q.[美团]骑手位置实时更新&#xff0c;如何保证高并发写入&#xff1f; Q.[美团]订单表数据量过大导致查询…...

35-疫苗预约管理系统(微服务)

技术&#xff1a; RuoYi框架 后端: SpringBootMySQLspringCloudnacosRedis 前端: vue3 环境&#xff1a; Idea mysql maven jdk1.8 用户端功能 1.首页:展示疫苗接种须知标语、快速预约模块 2.疫苗列表:展示可接种的疫苗 3.预约接种: 用户可进行疫苗预约接种 修改预约时间 …...

Ext JS模拟后端数据之SimManager

Ext.ux.ajax.SimManager 是 Ext JS 框架中用于拦截 Ajax 请求并返回模拟数据的核心工具,适用于前后端分离开发、原型验证或独立测试场景。它通过配置灵活的规则和模拟处理器(Simlet),帮助开发者在不依赖真实后端的情况下完成前端功能开发。 simlets 是simulated servers的…...

BT169-ASEMI无人机专用功率器件BT169

编辑&#xff1a;ll BT169-ASEMI无人机专用功率器件BT169 型号&#xff1a;BT169 品牌&#xff1a;ASEMI 封装&#xff1a;SOT-23 批号&#xff1a;最新 引脚数量&#xff1a;3 特性&#xff1a;单向可控硅 工作温度&#xff1a;-40℃~150℃ BT169单向可控硅&#xff…...

4月26日星期六今日早报简报微语报早读

4月26日星期六&#xff0c;农历三月廿九&#xff0c;早报#微语早读。 1、广州多条BRT相关线路将停运&#xff0c;全市BRT客运量较高峰时大幅下降&#xff1b; 2、国务院批复&#xff1a;同意在海南全岛等15地设立跨境电商综合试验区&#xff1b; 3、我国首次实现地月距离尺度…...

如何将 sNp 文件导入并绘制到 AEDT (HFSS)

导入 sNp 文件 打开您的项目&#xff0c;右键单击 “Result” 绘制结果 导入后&#xff0c;用户可以选择它进行打印。请参阅下面的示例。要点&#xff1a;确保从 Solution 中选择它。...

Shell脚本-for循环应用案例

在Shell脚本编程中&#xff0c;for循环是一种强大的工具&#xff0c;用于处理重复性任务。无论是批量处理文件、遍历目录内容还是简单的计数任务&#xff0c;for循环都能提供简洁而有效的解决方案。本文将通过几个实际的应用案例来展示如何使用for循环解决具体的编程问题。 案…...

MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码

目录 MATLAB发布代码---生成文档pdf 分节符对发布文件的分节 实时脚本 Matlab workspace与m脚本数据共享 发布和共享 MATLAB 代码 在实时编辑器中创建和共享实时脚本 发布 MATLAB 代码文件 (.m) 添加帮助和创建文档 发布 MATLAB 代码文件 (.m) 可创建包括您的代码、注释…...

Shell脚本-while循环语法结构

在Shell脚本编程中&#xff0c;while循环是一种重要的流程控制语句&#xff0c;它允许我们重复执行一段代码&#xff0c;直到指定的条件不再满足为止。与for循环不同&#xff0c;while循环通常用于条件驱动的迭代&#xff0c;而不是基于列表或范围的迭代。本文将详细介绍Shell脚…...

Java基础第四章、面向对象

一、成员变量 示例&#xff1a; 二、JVM内存模型 类变量就是静态变量 三、构造方法 默认构造方法、定义的构造方法(不含参数、含参数) 构造方法重载&#xff1a; this关键字 this关键字应用&#xff1a;对构造方法进行复用&#xff0c;必须放在第一行 四、面向对象的三大特征 1…...

【基础IO上】复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux系统下,一切皆文件 | 重定向原理

1.关于文件的预备知识 1.1 文件的宏观理解 广义上理解&#xff0c;键盘、显示器等都是文件&#xff0c;因为我们说过“Linux下&#xff0c;一切皆文件”&#xff0c;当然我们现在对于这句话的理解是片面的&#xff1b;狭义上理解&#xff0c;文件在磁盘上&#xff0c;磁盘是一…...

linux离线部署open-metadata

OpenMetadata 环境及离线资源关闭防火墙禁止防火墙关闭 SELinux 创建用户安装JDK安装mysql安装Elasticsearch安装open-metadata 环境及离线资源 系统&#xff1a;CentOS Linux release 7.9.2009 (Core) JDK&#xff1a;17 Mysql&#xff1a; 8.0 OpenMetadata&#xff1a;1.6.…...

Exposure Adjusted Incidence Rate (EAIR) 暴露调整发病率:精准量化疾病风险

1. 核心概念 1.1 传统发病率的局限性 1.1.1 公式与定义 传统发病率公式为新发病例数除以总人口数乘以观察时间。例如在某社区观察1年,有10例新发病例,总人口1000人,发病率即为10/10001=0.01。 此公式假设所有个体暴露时间和风险相同,但实际中个体差异大,如部分人暴露时间…...

信令与流程分析

WebRTC是h5支持的重要特征之一&#xff0c;有了它&#xff0c;不再需要借助音视频相关的客户端&#xff0c;直接通过浏览器的Web页面就可以实现音视频聊天功能。 WebRTC项目是开源的&#xff0c;我们可以借助WebRTC&#xff0c;构建自己的音视频聊缇娜功能。无论是前端JS的Web…...

声音分离人声和配乐base,vocals,drums -从头设计数字生命第6课, demucs——仙盟创梦IDE

demucs -n htdemucs --two-stemsvocals 未来之窗.mp3 demucs -n htdemucs --shifts5 之.mp3demucs -n htdemucs --shifts5 -o wlzcoutspl 未来之窗.mp3 伴奏提取人声分离技术具有多方面的重大意义&#xff0c;主要体现在以下几个领域&#xff1a; 音乐创作与制作 创作便利…...

Chrmo手动同步数据

地址栏输入 chrome://sync-internals分别点击这2个按钮即可触发手动同步...

【Dify系列教程重置精品版】第1课 相关概念介绍

文章目录 一、Dify是什么二、Dify有什么用三、如何玩转Dify?从螺丝刀到机甲战士的进阶指南官方网站:https://dify.ai github地址:https://github.com/langgenius/dify 一、Dify是什么 Dify(D​​efine + ​​I​​mplement + ​​F​​or ​​Y​​ou)。这是一款开源的大…...

【HTTP通信:生活中的邮局之旅】

HTTP通信&#xff1a;生活中的邮局之旅 HTTP通信就像是现代社会的邮政系统&#xff0c;让信息能够在互联网的城市间穿梭。下面我将用邮局比喻和图表来解释这个过程&#xff0c;以及它在现代应用中的重要性。 HTTP通信的旅程图解 #mermaid-svg-gC3zCsPpsFcq3sy3 {font-family:…...

Operating System 实验二 内存管理实验

目录 实验目标: 实验设备: 实验内容: (1)验证FIFO和Stack LRU页面置换算法 【代码(注释率不低于30%)】 【实验过程(截图)】 【结论】 (2)分别用FIFO和Stack LRU页置换算法,自己设定一个页面引用序列,绘制页错误次数和可用页帧总数的曲线并对比(可用Excel绘…...

深入解析YOLO v1:实时目标检测的开山之作

目录 YOLO v1 算法详解​ ​1. 核心思想​ ​2. 算法优势​ ​3. 网络结构&#xff08;Unified Detection&#xff09;​​ ​4. 关键创新​ ​5. 结构示意图&#xff08;Fig1&#xff09;​ Confidence Score 的计算​ 类别概率与 Bounding Box 的关系​ 后处理&…...

windows作业job介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、作业job是什么&#xff1f;二、使用步骤1.代码示例 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; winapi网站&#xff1a; h…...

POLARIS土壤相关数据集

POLARIS相关数据集属于杜克大学&#xff08;Duke University&#xff09;土木与环境工程系&#xff08;CEE&#xff09;的水文学研究团队。该团队有三个总体主题&#xff1a;1&#xff09; 改善地球系统模型中地表异质性的表示&#xff0c;2&#xff09; 利用环境数据来描述在陆…...