LLM Agents的历史、现状与未来趋势
引言
大型语言模型(Large Language Model, LLM)近年在人工智能领域掀起革命,它们具备了出色的语言理解与生成能力。然而,单纯的LLM更像是被动的“回答者”,只能根据输入给出回复。为了让LLM真正“行动”起来,人们引入了**Agent(代理或智能体)**的概念。简单来说,LLM Agent就是以大型语言模型为“大脑”的智能体:它能够感知环境、规划行动、调用工具,试图自主地完成复杂任务。
LLM Agent这个概念结合了代理(Agent)技术与LLM模型能力。一方面,传统AI代理指的是能在环境中感知和行动的智能系统,包括早期的机器人代理或软件代理;另一方面,LLM提供了强大的通用智能和语言交互接口。将两者结合,诞生了基于LLM的智能体——它以自然语言为媒介,与人或环境交互,既能思考(推理)又能行动。这种新型智能体有望自动完成例如网络搜索、代码编写、任务规划等需要多步骤推理与操作的任务,因而备受关注。
本篇博客旨在系统梳理LLM Agents的历史演进、当前现状以及未来发展趋势。我们将兼顾学术深度和通俗讲解,既为研究人员提供参考脉络,也为初学者揭开LLM智能体的神秘面纱。从起源与关键转折点讲起,介绍当前主流的架构与能力、生态系统和挑战,再展望未来的发展方向,包括多模态融合、自主学习、可控性和安全性等。最后,我们将重点介绍开源社区中几个具有代表性的项目(MetaGPT、AutoGen、MCP),并推荐其他一些优秀的开源项目及其应用案例。希望通过本篇内容,读者能对LLM Agents有一个全面而清晰的认识。
起源与发展历程
早期AI代理的探索
“智能体”(Agent)并非LLM时代的新事物。早在人工智能的发展早期,研究者就提出了各种形式的代理模型。经典的定义是:智能体是能在某种环境中自主感知和行动的智能系统。在不同年代,“环境”和“智能”的含义有所不同:从物理机器人在现实环境中行动,到软件代理在虚拟环境中对话,都属于广义的Agent范畴。
上世纪60年代的ELIZA可以看作最早的文本代理之一。ELIZA是1966年出现的一个基于模式匹配的对话系统,可以模拟心理治疗师与人交谈。虽然ELIZA并没有真正的“理解”,更称不上“大型语言模型”,但它证明了基于文本交互的代理的可能性。随后几十年,AI领域还出现了各类基于规则或学习的代理。例如,强化学习领域曾涌现出基于LSTM的DQN代理,能通过大量训练在特定领域完成任务。然而,这些早期代理要么规则死板、缺乏通用性,要么训练成本高、适用范围窄,并没有体现出通用智能。可以说,在LLM出现之前,Agent研究虽然重要,但局限于较小的应用场景,缺乏“通用大脑”。
大型语言模型时代的兴起
2017年Transformer架构的提出引领了深度学习的突破,随后OpenAI的GPT系列等大型语言模型横空出世,展现出惊人的语言能力。特别是GPT-3(2020年)和后来的ChatGPT(基于GPT-3.5和GPT-4,在2022-2023年推出)的成功,标志着通用语言智能的发展进入新纪元。LLM能够在零样本或少样本条件下完成问答、写作、翻译、代码生成等众多任务。这让人们开始思考:能否让LLM不仅被动回答,而且主动执行更复杂的任务? 换言之,如果把LLM当作智能体的大脑,让它拥有决策和行动能力,会怎样?
最初的尝试往往从简单的场景入手。例如,在问答系统中引入工具使用的想法:当LLM遇到数学计算时,是否可以调用计算器?当它需要最新资讯时,能否调用搜索引擎?于是,研究者开始给LLM配备“工具”,让它决定何时调用外部API或程序来辅助完成任务。这被视为LLM向Agent转变的萌芽。此外,人们也尝试让LLM产生日志式的思考过程。比如Prompt中要求模型“先思考再给答案”,引出了*Chain-of-Thought (CoT,链式思维)*的提示技巧,让模型列出推理步骤。这些尝试为后来更复杂的LLM Agent奠定了基础:需要让模型学会自主规划步骤,并与外界交互。
一个标志性转折点是2022年提出的ReAct范式。ReAct是“Reasoning and Acting”的缩写,它提供了一种巧妙的提示方法:让LLM的输出交替包含“思考”(Reasoning,即模型的中间推理内容)和“行动”(Act,即模型决定采取的操作)。例如,模型可以先输出“我需要查询百科全书来获取相关信息”,然后作为行动去执行这个查询,再把结果反馈回来继续推理。通过在Prompt中示范这种交替的思维链+行动指令格式,LLM可以在一次对话中反复思考和操作,直到得到答案。ReAct被认为是LLM Agents的重要里程碑——它将推理(内在思考)和行动(外部交互)结合为统一框架,使得模型能够一边“思考”,一边“试探性地采取行动”。相比只会给最终答案的传统用法,ReAct赋予LLM一种代理的雏形:有了内在状态和与环境交互的循环。
自主代理的浪潮:AutoGPT和BabyAGI
进入2023年,随着ChatGPT的爆火,公众对通用AI代理的兴趣被彻底点燃。这一年春季,开源社区出现了两个现象级项目:AutoGPT和BabyAGI。它们标志着“自主的LLM代理”浪潮的开始,引发了广泛关注和跟风开发。
-
AutoGPT(自动GPT):由一位开发者Torantulina在2023年3月首次发布在GitHub上,定位为“让GPT-4自主管理任务的实验性开源项目”。AutoGPT的核心思路是在没有人工干预的情况下,让LLM自主循环:它会根据一个高层目标,不断生成下一步行动(包括可能的子任务)、执行行动、获取反馈,再调整策略,直至目标完成。举个简单例子,如果让AutoGPT以“提高个人理财”为目标,它可能自己列出任务清单(查询投资方法、分析支出等),然后逐一执行。AutoGPT配备了浏览器、文件读写、代码执行等插件,因此它在循环中可以上网搜索信息、运行Python脚本、保存/加载结果等。这个项目展示了LLM自动连贯执行任务的潜力。一时间,“让我来告诉ChatGPT干完这件事”的畅想变成了现实雏形,AutoGPT的GitHub星标飙升,掀起了全民讨论自主AI代理的热潮。不过,AutoGPT也暴露出诸多问题:例如经常生成无效方案或陷入循环,效率低下,以及对稍复杂任务仍显力不从心。但不可否认,它让大众第一次直观感受到LLM Agent的雏形与可能性。
-
BabyAGI:几乎与AutoGPT同时出现的另一个网红项目,由创业者Yohei Nakajima提出。与AutoGPT复杂的插件体系相比,BabyAGI理念更简洁——它实现了一个最小可行的自主代理框架。BabyAGI的主体是一个循环:从初始目标出发,模型会生成要执行的任务列表;每次取出最高优先级的任务,由LLM尝试完成;得到结果后,再由LLM根据剩余目标生成新的任务并调整优先级队列,如此往复。这个过程模仿人类进行项目管理的方式:不断生成-执行-调整。因为实现简单,BabyAGI被众多开发者 fork 并魔改,衍生出各种版本。虽然BabyAGI本身功能有限,但它证明了使用LLM可以搭建一个自我驱动的任务管理循环,被视为自主代理的另一个基础范例。
AutoGPT和BabyAGI的出现是LLM Agents发展史上的重要节点:它们将之前学术界的概念以开源项目形式带入公众视野。大量开发者参与测试这些自主代理,积累了经验,也暴露了问题。这些项目的火爆促使人们思考如何改进代理的可靠性和复杂任务处理能力。一时间,各种以“GPT-Agent”命名的项目层出不穷,例如具有网页界面的AgentGPT,主打长程任务的GodMode等。尽管大多停留在实验玩具阶段,但技术在快速迭代,人们对“AI可以自我调度完成任务”这一前景充满期待。
多智能体协作与记忆涌现
随着单个LLM智能体框架的发展,研究者很快将目光投向多智能体协作和长时记忆两个方向,希望突破单Agent的能力瓶颈。
多智能体协作指的是让多个LLM Agent同时存在,彼此交流协同完成任务。灵感来源很直观:在人类社会中,复杂工作往往需要团队合作,那么多个AI代理是否也能像团队那样配合?早期的有趣探索之一是角色扮演对话:让两个ChatGPT分别充当不同角色进行对话求解问题。例如一个扮演提问者,一个扮演专家,他们通过多轮问答找出答案。这种“双Agent角色扮演”在社区里很流行,被称为CAMEL方法(因为最初的论文/项目提出者将其形象地比喻为两峰驼Camel,代表AI用户和AI助手两个峰)。CAMEL展示了多代理协作解决问题的潜力——通过扮演不同角色、交流信息,LLM可以突破单一身份的限制。
进一步的,多代理不局限于两个。“AI 社会”的概念应运而生:多个智能体各有身份、拥有各自的记忆和目标,在模拟环境中持续交互,产生复杂行为。斯坦福大学在2023年提出的Generative Agents就是一项引人注目的工作:研究者在虚拟小镇中模拟了25个角色各异的代理,这些代理由LLM驱动,有着类似The Sims游戏中的日常行为,它们可以聊天、认识新朋友、记忆每天的经历,并根据记忆调整后续行动。比如,一个代理被设置为早上7点闹钟响就起床,然后去咖啡馆,遇到另一代理打招呼、闲聊,稍晚还会计划一个晚会邀请朋友们。这项研究展示了LLM驱动的代理在社交互动和记忆方面的惊人表现:多个代理之间的对话和协作让整个系统表现出类似社会的动态。这虽然是模拟环境,但启发了对未来拥有社交能力的AI代理的想象。
长时记忆是另一个关键挑战领域。传统LLM受限于固定的提示窗口(context window),难以记住长远的历史。这对一个持续运行的Agent来说显然不够——想象一个助手Agent,昨天刚和你讨论过计划,今天却“失忆”要重头再来,这是不可接受的。因此,研究者尝试赋予LLM Agent某种形式的记忆机制。例如,前面提到的Generative Agents为每个代理维护了一个记忆数据库,里面存储事件的摘要,代理会定期“回顾”记忆、更新自我认知。又如2023年出现的Reflexion方法,思路是在Agent完成一次任务后,让它对过程进行反思(例如检查哪里出错、有没有更好方法),然后把有用的经验写入自身的“长远记忆”(可以是追加在prompt里,也可以存入外部知识库)。下次遇到类似情境时,Agent先查阅自己的反思记录,从而避免重蹈覆辙。Reflexion被形象地称为让Agent具有“自我反馈循环”,相当于一种语言层面的强化学习:不是更新模型参数,而是更新模型的文字记忆。这样的机制提高了Agent连贯完成任务的成功率,也是迈向自主学习的重要一步。
2023年下半年开始,更多关于LLM Agent的新思想不断涌现。例如,为了提升决策规划能力,有研究引入树状思维(Tree of Thoughts),让模型同时展开多个思路进行搜索,再筛选最优方案。为了减少胡乱调用工具的情况,OpenAI等引入了函数调用接口,要求模型输出结构化的函数名和参数,从而安全地调用外部API,让Agent行为更加可控。大型科技公司也加入了Agent研究:Microsoft提出“HuggingGPT”,用ChatGPT作为总控代理,协调调用上百种专业模型(如图像识别、语音识别模型)去完成多模态任务;**Google推出“SayCan”**将LLM与机器人动作结合,让语言模型指导机器人完成现实操作。可以看到,LLM Agents领域在2023年呈现出百花齐放的局面,从个人助理到多Agent团队,从虚拟对话到实体机器人,各种各样的尝试相互交织。即便许多项目还不成熟,但整个方向的发展速度和关注度都在迅速提升。
走向成熟:近况概述
进入2024年至2025年,LLM Agents的研究与应用逐渐走向成熟和理性。一方面,早期过高的期待开始冷却,社区认识到让AI完全自主解决任意复杂任务仍有很长的路。但另一方面,框架化、模块化的解决方案不断涌现,人们在实践中总结经验,迭代出更稳健、更高效的Agent架构。
几个值得一提的里程碑包括:
-
OpenAI官方支持工具调用:OpenAI的GPT-4 API在2023年中加入了函数调用功能,并推出了ChatGPT插件生态。这实际上把Agent的一种能力直接集成到了主流LLM服务中——开发者可以为ChatGPT提供插件,让它按需要调用,如浏览网页、查询数据库、控制家电等。用户在与ChatGPT对话时,代理行为会自动发生(例如它决定调用某插件时,返回结果融入对话)。这一举措让Agent概念走出了纯研究圈子,进入大众产品应用。
-
学术研究系统化:2023年底到2024年,出现了多篇关于LLM Agent的综述和评测论文,开始系统总结这一领域的方法与挑战。例如,一些论文分类了Agent的典型工作流程:反思型(有自我反馈回路)、工具型(侧重调用工具)、规划型(侧重任务分解),还有多智能体协作型。社区也构建了初步的基准测试(Benchmark)来评估Agent解决复杂任务的能力,比如看它们在代码生成、任务管理上的成功率和效率。这样的研究为Agent技术的标准化和改进指明了方向。
-
多种开源框架面世:在开源社区,除了早期的AutoGPT等,后来者如LangChain、Langroid、AgentVerse、GPT Engineer、Camel等层出不穷。这些框架各有侧重:LangChain提供了强大的链式调用和记忆管理工具,被广泛用来实现自定义Agent;Camel强调多Agent角色互動;AgentVerse提供了构建复杂环境中代理的方法;GPT Engineer致力于让AI自动读写和修改代码项目…… 如今开发者已经有丰富的开源库可以选择来搭建自己的LLM Agent,而不必完全从零开始。
-
工业界的试水:不少公司开始将LLM Agent用于实际产品或业务流程中。例如,微软在Office Copilot中引入一些自动任务执行功能;一些初创公司开发AI助手,可以替用户执行跨应用的操作(发送邮件、安排日程等)。虽说还处于早期,但商业应用的尝试正在推进,反馈又反过来推动技术完善。
相关文章:
LLM Agents的历史、现状与未来趋势
引言 大型语言模型(Large Language Model, LLM)近年在人工智能领域掀起革命,它们具备了出色的语言理解与生成能力。然而,单纯的LLM更像是被动的“回答者”,只能根据输入给出回复。为了让LLM真正“行动”起来ÿ…...
最简rnn_lstm模型python源码
1.源码 GitCode - 全球开发者的开源社区,开源代码托管平台 不到120行代码,参考了《深度学习与交通大数据实战》3.2节。注意这本书只能在京东等在线商城网购,才能拿到相应的数据集和源码。我的是在当地新华书店买的——买清华出版社,记得这个…...
基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 基于Android的图书借阅和占座系统设计的目的是为用户提供图书信息、图书馆、图书资讯等内容,用户可以进行图书借阅、预约选座等操作。 与PC端应用程序相比,图书借阅和占座系统的设计主要面向于广大用户,旨在为用户提供一个图书借阅及占…...
vue3+element-plus动态与静态表格数据渲染
一、表格组件: <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…...
数据库50个练习
数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…...
Open CASCADE学习|读取点集拟合样条曲线(续)
问题 上一篇文章已经实现了样条曲线拟合,但是仍存在问题,Tolerance过大拟合成直线了,Tolerance过大头尾波浪形。 正确改进方案 1️⃣ 核心参数优化 通过调整以下参数控制曲线平滑度: Standard_Integer DegMin 3; // 最低阶…...
HTML基础教程:创建双十一购物狂欢节网页
页面概况: 在这篇技术博客中,我将详细讲解如何使用HTML基础标签创建一个简单而美观的双十一购物狂欢节主题网页。我们将逐步分析代码结构,了解每个HTML元素的作用,以及如何通过HTML属性控制页面布局和样式。 页面整体结构 首先&…...
ES6 新增特性 箭头函数
简述: ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…...
【C++算法】49.分治_归并_计算右侧小于当前元素的个数
文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 315. 计算右侧小于当前元素的个数 题目描述: 解法 归并排序(分治) 当前元素的后面,有多少个比我小。(降序&…...
Multi-class N-pair Loss论文理解
一、N-pair loss 对比 Triplet loss 对于N-pair loss来说,当N2时,与triplet loss是很相似的。对anchor-positive pair,都只有一个negative sample。而且,N-pair loss(N2时)为triplet loss的平滑近似Softpl…...
uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法
这个天坑问题,在微信开发工具上是不会显示出来的,只有在真机上才会偶尔出现随机样式偏移/裁剪/宽长偏移,询问社区也只是让你提交代码片段,并无解决办法。 一开始我怀疑是地图组件加载出现了问题,于是给地图加了一个v-if"reL…...
蓝桥杯嵌入式总结
1.lcd显示和led引脚冲突 在lcd使用到的函数中加入两行代码 uint16_t temp GPIOC->ODR; GPIOC->ODR temp; 2.关于PA15,PB4pwm波输入捕获 首先pwm输入捕获中断 使用 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); 再在输入捕获中断回调函数中使用 void HAL…...
C#的反射机制
C#反射机制详解 什么是反射? 反射(Reflection)是C#中的一项强大功能,它允许程序在运行时动态获取类型信息、访问和操作对象成员。简单来说,反射使程序可以在不预先知道类型的情况下,查看、使用和修改程序集中的代码。 常见反射…...
Java并发编程高频面试题
一、基础概念 1. 并行与并发的区别? 并行:多个任务在多个CPU核心上同时执行(物理上同时)。并发:多个任务在单CPU核心上交替执行(逻辑上同时)。类比:并行是多个窗口同时服务&#x…...
Invalid bound statement (not found)
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
【Vue-路由】学习笔记
目录 <<回到导览路由1.单页应用和多页面2.路由基本使用2.1.路由的含义2.2.VueRouter插件2.3.配置路由规则和导航2.4.组件目录存放2.5.路由模块封装 3.rounter3.1.router-link实现高亮3.2.自定义匹配类名3.3.声明式导航3.3.1.查询参数传参3.3.2.动态路由传参3.3.3.总结 3.…...
前端服务配置详解:从入门到实战
前端服务配置详解:从入门到实战 一、环境配置文件(.env) 1.1 基础结构 在项目根目录创建 .env 文件: # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境(.env.produc…...
Java安全管理器 - SecurityManager
什么是Java安全管理器? Java安全管理器是Java提供的保护JVM和程序安全的机制,它能限制用户的代码对文件、内存、资源、网络的操作和访问,防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限,防止用户恶意提交代…...
Arrays操作工具 Lambda表达式 集合 迭代器 数据结构 泛型 set集合 list集合
Arrays操作工具 自己定义的排序规则 简单理解如果是:o1 - o2 升序排列 o2 - o1 降序排列 Lambda表达式 函数式编程 函数式编程(Functional programming)是一种思想特点。 面向对象:先去找对象,让对象做事情。。函数式…...
ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射
DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…...
《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)
Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录: 卷首语:蝴蝶振翅引发的量子海啸 第一章:混沌初开——对象池的量子涅槃(深度扩展) 第二章:混沌计算——对象复活的降维打击&…...
蓝桥杯备赛---真题训练之15届蓝桥杯找回连接之旅
题目 介绍 在网络世界中,突然间失去了所有的连接。作为勇敢的冒险者,你将踏上一段惊险刺激的旅程,穿越充满谜题和挑战的网络景观,与神秘的网络幽灵对抗,解开断网之谜,找回失去的连接,带领人们重…...
PowerApps MDA-模版-文档模版无法下载和上传Word模版
Power Apps的高级设置-模版中,文档模版目前只能看到新建和上传Excel模版,看不到Word模版 这是一个已知bug, 什么时候能修复不好说,解决办法也很简单,先上传一个Excel模版,随便任何一个实体就行,为的是视图列…...
全国大学生数学建模竞赛赛题深度分析报告(2010-2024)
全国大学生数学建模竞赛赛题深度分析报告(2010-2024) 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一,本报告将对2010-2024年间的赛题进行全面统计分析,包括题目类型、领域分布、模型方法等多个维度&#x…...
职坐标解析自动驾驶技术发展新趋势
内容概要 作为智能交通革命的核心驱动力,自动驾驶技术正以惊人的速度重塑出行生态。2023年,行业在多传感器融合与AI算法优化两大领域实现突破性进展:激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级,而深度学习模型的实时决…...
快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt
引用:打造前后端分离Python权限系统 基于Django5DRFVue3.2Element PlusJwt 视频教程 (火爆连载更新中..)_哔哩哔哩_bibili 说明:1、结合个人DRF基础和该视频去根据自己的项目进行开发。 2、引用该视频中作者的思路去升华自身的项…...
HTTP 协议详解
HTTP 协议 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输超文本(如网页)。 HTTP 是万维网ÿ…...
巧记英语四级单词 Unit1-4【晓艳老师版】
tain—take拿着、sus 下面,只有sur表示上面、ob表示方向、de往下,分开 retain v.保持 re-重复,tain—take拿着,重复的拿着maintain v. 维持,维修,保养 main主要的,主要的东西都拿着的那个人维…...
Transformers without Normalization论文翻译
论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...
Ollama
目录 定义与核心功能应用场景Ollama与Llama的关系安装与使用 Ollama是一个开源的本地大语言模型(LLM)运行框架,专为在本地机器上便捷部署和运行大型语言模型而设计。以下是关于Ollama的全面介绍: 定义与核心功能 多种预训练语言模…...
社交app圈子模块0到1实现
一、逻辑分析 用户相关 用户需要能够创建圈子,这涉及到用户身份验证,确保只有注册用户可以进行创建操作。每个圈子有创建者,创建者对圈子有一定的管理权限,如设置圈子规则、邀请成员等。 圈子信息 圈子需要有名称、简介、头像等基…...
OpenCV--图像边缘检测
在计算机视觉和图像处理领域,边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域,承载了图像的重要结构信息,在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库,提供…...
批量压缩 jpg/png 等格式照片|批量调整图片的宽高尺寸
图片格式种类非常的多,并且不同的图片由于像素、尺寸不一样,可能占用的空间也会不一样。文件太大会占用较多的磁盘空间,传输及上传系统都非常不方便,可能会收到限制,因此我们经常会碰到需要对图片进行压缩的需求。如何…...
[Linux系统编程]多线程
多线程 1. 线程1.1 线程的概念1.2 进程与线程对比1.3 轻量级进程 2. Linux线程控制2.1 POSIX 线程(pthread)2.2 线程ID、pthread_t、和进程地址空间的关系2.2.1 pthread_self2.2.2 pthread_create2.2.3 pthread_join2.2.4 线程终止的三种方式2.2.5 pthre…...
进程状态(运行 阻塞 僵尸)及其场景分析
【Linux学习笔记】Linux基本指令及其分析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 前言 哈喽,各位小伙伴大家好!上期我们讲了进程PCB 今天我们讲的是进程状态(运行 阻塞 僵尸)及其场景分析。话不多说&#…...
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析
程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析 大家好!在之前的分享中,我们对程序化广告的多个关键环节进行了探讨。今天,咱们继续深入了解程序化广告中的DMP系统,聚焦于标签制作和…...
【QT】QPixmap QImage QBitmap QPicture
文章目录 **1. QPixmap****特点****典型应用场景****示例** **2. QImage****特点****典型应用场景****示例** **3. QBitmap****特点****示例** **4. 三者的主要区别****5. 如何选择?****使用 QPixmap 的情况****使用 QImage 的情况****使用 QBitmap 的情况** **6. 相…...
如何开通google Free Tier长期免费云服务器(1C/1G)
Google宣布的一项政策,为标准层级的网络提供每地域200G的免费流量。两项政策结合,于是便可以得到一台1核心、1G内存、30G磁盘、200G流量的小云服务器,可玩性大大提高。这篇文章就分享一下如何正确开机,避免产生额外的费用。 免费…...
Kaggle房价预测
实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...
4.7学习总结 java集合进阶
集合进阶 泛型 //没有泛型的时候,集合如何存储数据 //结论: //如果我们没有给集合指定类型,默认认为所有的数据类型都是object类型 //此时可以往集合添加任意的数据类型。 //带来一个坏处:我们在获取数据的时候,无法使用他的特有行为。 //此…...
设计模式 - 代理模式Proxy
设计思想: 举个通俗的例子,你想找某局长帮你做一件事情,但局长官位显赫,你又不能轻易见着,你就想到了找他的秘书,通过她传话给局长,这样你就等于请他的秘书帮你办成了那件事。秘书为什么就可以…...
计算机网络体系结构(一)
1.计算机网络概述 1.1计算机网络的概念 计算机网络是由相互连接的计算机及其周边设备构成的系统,这些计算机和设备通过各种通信介质实现数据和资源的共享。计算机网络的主要目的是为了增强信息传递的效率、便利性和可靠性。以下是一些计算机网络的关键概念…...
数据结构与算法-数学-基础数学2(扩展欧几里得算法,组合数问题)
六:扩展欧几里得算法 同余: 若 a≡b(modm),则 m 整除 a−b,即 abkm(k 为整数)。 扩展欧几里得算法 扩展欧几里得算法可用于求解 axbygcd(a,b) 的一组整数解。 #include <iostream> using namesp…...
【力扣hot100题】(072)柱状图中的最大矩阵
这绝对是我做过印象最深的算法题之一。(还有是那道盛水最多的贪心题) 当初不知道想了多少个日日夜夜,所幸这道题已经深深的烙印在了我的脑海里。 现在看来也没那么可怕()不过初见确实非常难想到单调栈。 方法如下&a…...
T-SQL语言的压力测试
T-SQL语言的压力测试 随着数据驱动技术的发展,数据库在现代应用中的角色愈加重要。而在数据库管理系统中,微软的SQL Server凭借其强大的功能和易用性,广泛应用于各行业。在这一环境中,T-SQL(Transact-SQL)…...
debian 系统gnome怎么关闭触摸屏三指滑动
ubuntu如何限制三指手势操作_ubuntu 手势-CSDN博客 参考方案给上面了, kiosk模式 就是专用模式,类似于广告机、售货机那种。 方案 在 Debian 系统的 GNOME 桌面环境中,可以通过以下方法关闭触摸屏三指滑动功能: 安装 gnome-tweaks 工具:...
【9】搭建k8s集群系列(二进制部署)之安装work-node节点组件(kube-proxy)和网络组件calico
承接上一篇文章,继续安装工作节点的第二个组件:kube-proxy 一、创建配置文件 cat > /opt/kubernetes/cfg/kube-proxy.conf << EOF KUBE_PROXY_OPTS"--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --config/opt/kubern…...
MongoDB及Yapi迁移数据
一、MongoDB安装及迁移 1、导入MongoDB GPG密钥 sudo rpm --import https://www.mongodb.org/static/pgp/server-5.0.asc 2、创建MongoDB 安装源配置文件 vi /etc/yum.repos.d/mongodb-org-5.0.repo,添加以下内容: [mongodb-org-5.0] nameMongoDB Repo…...
高效解读机器语言,profinet转ethernet ip网关烟草企业自动化升级案例分析
工业通信协议转换在烟草生产线的实践应用 某中型烟草生产企业为提高自动化水平,引进了西门子S7-1500系列PLC控制系统和防爆型科氏力质量流量计。但在系统集成阶段,技术人员发现PLC支持的PROFINET协议与流量计采用的EtherNet/IP协议存在互操作障碍&#x…...
使用Scade实现神经网络算法
在ERTS2022中,ANSYS 发表了使用Scade实现神经网络AI算法的相关工作。论文题目为《Programming Neural Networks Inference in a Safety-Critical Simulation-based Framework》 背景与挑战 神经网络在安全关键系统中的应用:随着嵌入式系统中自主性的引入…...