字节跳动开源 LangManus:不止是 Manus 平替,更是下一代 AI 自动化引擎
当 “AI 自动化” 成为科技领域最炙手可热的关键词,我们仿佛置身于一场激动人心的变革前夜。各行各业都在翘首以盼,期待 AI 技术能够真正解放生产力,将人类从繁琐重复的工作中解脱出来。在这个充满无限可能的时代,字节跳动悄然发布了一款重量级开源项目——LangManus。
LangManus 的出现,如同在平静的湖面投下了一颗石子,激起了层层涟漪。它不仅仅是一个被看作是智能体协作平台 Manus 的 “平替” 项目,更被寄予厚望,有望成为下一代 AI 自动化引擎的基石,推动 AI 自动化技术的普及和发展。
LangManus 的雄心壮志,不仅仅停留在口号上。它深度整合了强大的大语言模型(LLM)能力,并巧妙地将网络搜索、网页爬取、Python 代码执行等多种实用工具融为一体,目标直指复杂任务的自动化解决。 这不禁让人好奇,LangManus 究竟是如何构建起如此强大的自动化能力?它又将如何重塑我们对 AI 自动化的认知?又将如何赋能开发者,开启 AI 自动化的新篇章?
今天,就让我们一同拨开 LangManus 的神秘面纱,深入探寻其背后的技术逻辑与无限可能。
AI 自动化的新变量:从 Manus 到 LangManus 的跃迁
在 AI 自动化的发展历程中,智能体(Agent) 扮演着至关重要的角色。它们如同具备自主意识的 “数字员工”,能够理解指令、规划任务、调用工具,并最终完成目标。在众多智能体平台中,Manus 以其独特的智能体协作模式脱颖而出,为复杂任务的处理提供了全新的思路,展现了 AI 自动化在解决复杂问题方面的巨大潜力。
然而,Manus 并非完美无缺。作为一个相对封闭的平台,其开放性和可定制性受到一定的限制。 正是在这样的背景下,字节跳动开源了 LangManus,试图在 Manus 的基础上,构建一个更开放、更强大、更灵活的 AI 自动化平台。
LangManus 的诞生,不仅仅是技术上的简单复刻,更是一次对 AI 自动化未来发展方向的深刻探索。它从一开始就选择了 “开源” 这条道路,将自身置于全球开发者社区的聚光灯下,接受来自各方的审视和改进。 这种开源的底色,注定了 LangManus 将拥有更强大的生命力和更广阔的发展前景。
LangManus 的目标不仅仅是成为 Manus 的 “平替”,更宏大的愿景是构建一个 AI 自动化开源生态,将 LLM 的强大能力与各种实用工具以前所未有的方式结合起来,真正实现任务的自动化处理,并将技术红利回馈给整个开发者社区,共同推动 AI 自动化技术的进步。 这,才是 LangManus 真正的野心所在。
LangManus 技术解构:多智能体协作驱动的自动化引擎
LangManus 能够承载如此宏大的愿景,绝非空穴来风。其核心竞争力,源于其精巧的技术架构和丰富的功能特性。 它不仅仅是一个简单的工具集合,更是一个 精心设计的自动化引擎,能够驱动多个智能体高效协同工作,共同完成复杂任务。
1. 多智能体系统:精细分工,高效协作
LangManus 的核心架构是 多智能体系统。 它并没有采用 “单打独斗” 的模式,而是将复杂的自动化任务分解为多个子任务,并分配给不同的智能体协同完成。 这种 “分而治之” 的策略,极大地提升了任务处理的效率和灵活性。
在 LangManus 的智能体系统中,各个智能体角色分工明确,各司其职,如同一个高效运转的团队:
- 协调员 (Coordinator): 作为任务的入口,协调员负责接收用户的指令,理解用户的意图,并将任务分解并分配给合适的智能体。 它如同团队的 “项目经理”,负责任务的整体调度和分配。
- 规划员 (Planner): 当接收到的任务较为复杂,需要多步骤才能完成时,规划员就 역할이 한다. 它负责制定详细的任务执行计划,将复杂任务拆解为一系列可执行的子任务,并规划好各个子任务的执行顺序和依赖关系。 规划员如同团队的 “战略家”,负责制定任务的整体执行策略。
- 主管 (Supervisor): 主管是任务执行的指挥中心。 它负责监督整个任务的执行过程,监控各个智能体的运行状态,并根据任务执行情况动态调整任务分配和执行策略。 在任务执行过程中,主管还可以根据需要调用其他智能体,例如研究员、程序员、浏览器等,来协助完成任务。 主管如同团队的 “指挥官”,负责任务的执行指挥和调度。
- 研究员 (Researcher): 研究员是信息的探索者,负责网络搜索和数据挖掘。 当任务需要从互联网上获取信息时,研究员就会被调用。 它能够利用网络搜索工具(如 Tavily API)快速准确地找到所需的信息,并将信息提供给其他智能体使用。 研究员如同团队的 “情报专家”,负责信息的收集和挖掘。
- 程序员 (Programmer): 程序员是代码的创造者,负责编写和执行 Python 代码。 当任务需要执行特定的计算或逻辑操作时,程序员就会被调用。 它能够根据任务需求,编写相应的 Python 代码,并在 LangManus 提供的代码执行环境中运行代码,并将结果返回给其他智能体。 程序员如同团队的 “工程师”,负责代码的编写和执行。
- 浏览器 (Browser): 浏览器是网页的操控者,能够模拟用户在浏览器中的各种操作,例如点击链接、填写表单、滚动页面等。 当任务需要在网页上进行交互时,浏览器就会被调用。 它可以自动化完成网页上的各种操作,并将网页内容提取出来供其他智能体使用。 浏览器如同团队的 “网页操作员”,负责网页的自动化操作。
- 报告员 (Reporter): 报告员是结果的呈现者,负责整理任务执行的最终结果,并生成结构化的报告。 报告可以以多种形式呈现,例如文本报告、表格报告、图表报告等,方便用户理解和使用任务执行结果。 报告员如同团队的 “信息分析师”,负责结果的整理和呈现。
通过以上这些智能体的精细分工和高效协作,LangManus 能够有效地处理各种复杂自动化任务,展现出强大的自动化能力。
2. LLM 深度集成:三层 LLM 系统,灵活应对不同场景
LangManus 的核心驱动力,来自于对大语言模型(LLM)的深度集成。 它不仅仅简单地调用 LLM 的 API,而是构建了一个 三层 LLM 系统,充分发挥 LLM 在不同场景下的优势。
- 推理 LLM: 位于最上层的是推理 LLM,它主要负责 高层次的决策和推理。 例如,协调员智能体和规划员智能体就主要依赖推理 LLM 的能力,来理解用户指令、制定任务计划、分配任务等。 推理 LLM 需要具备强大的语言理解能力、逻辑推理能力和规划能力。 LangManus 兼容多种主流 LLM,例如 Qwen、OpenAI 等,开发者可以根据实际需求选择合适的推理 LLM。
- 基础 LLM: 位于中间层的是基础 LLM,它主要负责 基础的语言处理任务。 例如,主管智能体、研究员智能体、报告员智能体等都需要使用基础 LLM 的能力,来进行信息抽取、文本生成、报告撰写等任务。 基础 LLM 需要具备良好的文本生成能力和信息抽取能力。 LangManus 可以灵活配置基础 LLM,以适应不同的任务需求和成本预算。
- 视觉语言 LLM: 位于最底层的是视觉语言 LLM,它主要负责 处理视觉信息。 例如,当浏览器智能体需要处理网页上的图像信息时,就需要调用视觉语言 LLM 的能力,来理解图像内容、识别图像元素等。 视觉语言 LLM 的集成,使得 LangManus 能够处理更加复杂的网页自动化任务,例如图像识别验证码、网页截图分析等。
通过构建这三层 LLM 系统,LangManus 能够充分利用不同 LLM 的优势,灵活应对各种复杂的自动化场景,实现更高效、更智能的自动化任务处理。
3. 强大的工具生态:功能丰富,扩展性强
除了强大的智能体系统和 LLM 集成,LangManus 还拥有一个 功能丰富的工具生态,为任务的执行提供了强大的支持。 这些工具涵盖了网络搜索、信息检索、代码执行、网页操作等多个方面,满足了各种自动化任务的需求。
LangManus 集成的主要工具包括:
- 网络搜索 (Tavily API): 用于从互联网上搜索信息,支持关键词搜索、自然语言搜索等多种搜索方式。
- 神经搜索 (Jina): 用于进行向量相似度搜索,可以高效地检索与给定向量最相似的文档或信息。
- Python REPL 和代码执行环境: 用于执行 Python 代码,支持代码的动态执行和结果的实时反馈。
- 浏览器控制: 用于自动化控制浏览器,模拟用户在浏览器中的各种操作,例如网页浏览、表单填写、数据抓取等。
这些工具并非是孤立存在的,而是可以被 LangManus 的智能体系统灵活调用和组合使用,以完成各种复杂的自动化任务。 此外,LangManus 还具有良好的 扩展性,开发者可以根据自己的需求,轻松地添加新的工具,扩展 LangManus 的功能。
4. 可视化工作流管理:清晰掌控任务执行过程
为了方便用户管理和监控自动化任务,LangManus 提供了 可视化的工作流管理功能。 用户可以通过 Web 界面清晰地查看任务的工作流程图,了解任务的执行进度、各个智能体的运行状态、以及任务的执行结果。
工作流程图 以图形化的方式展示了任务的执行流程,包括各个智能体之间的协作关系、任务的执行步骤、以及数据的流转路径。 用户可以通过工作流程图直观地了解任务的整体执行逻辑。
任务分配监控 功能可以实时监控各个智能体的任务分配情况和执行状态。 用户可以查看当前正在运行的任务、已完成的任务、以及任务的执行日志,及时发现和解决任务执行过程中出现的问题。
可视化工作流管理功能的加入,极大地提升了 LangManus 的易用性和可维护性,使得用户能够更加方便地管理和监控自动化任务的执行过程。
5. API 服务:便捷集成,灵活扩展
为了方便开发者进行二次开发和集成,LangManus 提供了基于 FastAPI 的 API 服务,并支持 流式传输。 开发者可以通过 API 接口,将 LangManus 集成到自己的应用程序或系统中,实现更加灵活和定制化的自动化功能。
API 服务支持 流式传输,这意味着在处理大量数据或长时间运行的任务时,可以实时地将结果返回给客户端,而无需等待整个任务执行完成。 流式传输技术可以有效地提升用户体验,并降低系统的资源消耗。
基于 FastAPI 构建的 API 服务,具有高性能、易扩展、易使用等优点,方便开发者快速构建各种基于 LangManus 的自动化应用。
6. 兼容 AWS Graviton 和 Docker:性能与易用性兼顾
LangManus 还特别强调了对 AWS Graviton 和 Docker 的支持。
AWS Graviton 是亚马逊云科技推出的基于 ARM 架构的处理器,具有高性能、低功耗、高性价比等优点。 LangManus 对 AWS Graviton 的支持,意味着用户可以在 AWS Graviton 实例上部署 LangManus,获得更高的性能和更低的成本。
Docker 是一种流行的容器化技术,可以将应用程序及其依赖项打包成一个独立的容器,方便应用程序的部署和管理。 LangManus 对 Docker 的支持,使得用户可以更加方便地部署和运行 LangManus,并实现应用程序的快速迭代和升级。
对 AWS Graviton 和 Docker 的支持,体现了 LangManus 在 性能和易用性 方面的双重追求,力求为用户提供更加高效、便捷的自动化解决方案。
快速上手:几行命令,开启 LangManus 之旅
想要亲身体验 LangManus 的强大功能吗? 上手 LangManus 非常简单,只需几行命令,即可快速搭建起 LangManus 的运行环境,并开始构建你的自动化应用。
1. 安装依赖
首先,你需要安装 LangManus 运行所依赖的一些软件包。 LangManus 推荐使用 uv
包管理器,它比传统的 pip
包管理器更快更高效:
pip install uv # 推荐使用 uv 包管理器
然后,使用 Git 克隆 LangManus 的代码仓库到本地:
git clone https://github.com/byteplus/lang-manus.git
cd lang-manus
进入 lang-manus
目录后,使用 uv pip
安装项目依赖:
uv pip install -r requirements.txt
LangManus 的浏览器智能体依赖于 playwright
库,你需要安装 playwright
浏览器驱动:
playwright install
2. 配置 API 密钥和模型信息
安装完成后,你需要配置 LangManus 所需的 API 密钥和模型信息。 在 LangManus 项目根目录下,有一个 .env
文件,你需要将你的 API 密钥(例如 OpenAI API Key、Tavily API Key 等)以及你想要使用的 LLM 模型信息配置到这个文件中。
.env
文件中可能包含以下配置项(具体配置项可能会根据 LangManus 版本有所变化,请参考 LangManus 官方文档):
OPENAI_API_KEY=your_openai_api_key
TAVILY_API_KEY=your_tavily_api_key
LLM_MODEL_NAME=gpt-3.5-turbo # 你想要使用的 LLM 模型名称
请根据你的实际情况,将 your_openai_api_key
、your_tavily_api_key
和 gpt-3.5-turbo
替换为你自己的 API 密钥和模型名称。
3. 启动 LangManus Web UI
完成配置后,你就可以使用以下命令启动 LangManus 的 Web 用户界面了:
python webui.py
运行该命令后,LangManus Web UI 将会在本地启动,你可以在浏览器中访问 http://localhost:8000
(默认地址)来体验 LangManus 的各种功能。
4. 更多详细步骤
以上只是 LangManus 的快速上手指南,更详细的安装和配置步骤,以及更多高级功能的使用方法,请参考 LangManus 官方 GitHub 仓库中的文档。 LangManus 官方文档提供了非常详细的说明和示例,可以帮助你更深入地了解和使用 LangManus。
快应用场景:LangManus 的无限可能
LangManus 的应用场景非常广泛,几乎涵盖了所有需要自动化任务处理的领域。 无论是企业内部效率提升,还是个人效率工具的打造,LangManus 都能发挥重要的作用。 其核心功能是在大模型的基础上完成任务自动化,即自动化处理多步骤、复杂性的任务,让繁琐的工作变得简单高效。
以下是一些 LangManus 的典型应用场景:
1. 自动化周报生成: 告别手动整理数据、撰写周报的繁琐工作。 利用 LangManus,可以自动化地从各种数据源(例如数据库、Excel 表格、在线报表等)收集数据,并使用 LLM 智能分析数据,自动生成内容详实、图文并茂的周报。
2. 智能客服系统: 构建 7x24 小时在线的智能客服系统,快速响应用户问题,提供高效、便捷的客户服务。 LangManus 可以集成到各种客服平台,自动化处理用户咨询、解答常见问题、处理投诉建议等,有效提升客户服务效率和用户满意度。
3. 企业级私密部署方案: 对于对数据安全和隐私有较高要求的企业,LangManus 提供了企业级私密部署方案。 企业可以将 LangManus 部署在自己的私有服务器或云平台上,确保数据安全可控,满足企业内部的自动化需求。
4. 人力资源:智能简历筛选: 在招聘季,HR 部门需要处理大量的简历。 利用 LangManus,可以自动化地筛选简历,根据预设的条件(例如学历、工作经验、技能等)快速筛选出符合要求的简历,大幅提升招聘效率。
5. 房产决策:数据驱动分析: 在进行房产投资决策时,需要收集和分析大量的房产数据。 LangManus 可以自动化地从各种房产网站、数据平台抓取数据,并利用 LLM 分析数据,辅助投资者进行房产投资决策。
6. 旅行规划:个性化行程推荐: 旅行规划往往需要耗费大量的时间和精力。 LangManus 可以根据用户的个性化需求(例如旅行目的地、旅行时间、预算、兴趣爱好等),自动化地生成个性化的旅行行程推荐,包括景点推荐、酒店预订、交通规划等,一键搞定旅行计划。
除了以上这些典型场景,LangManus 还可以应用于舆情监控、内容创作、市场调研、金融分析、智能家居等众多领域,其应用潜力几乎是无限的。 开发者可以根据自己的想象力和创造力,利用 LangManus 构建各种各样的自动化应用,提升工作效率,解放生产力。
开源的力量:LangManus 的独特优势与未来展望
诚然,LangManus 的目标是向 Manus 看齐,甚至超越 Manus。 但开源赋予了 LangManus 独特的优势,这是 Manus 等封闭平台所无法比拟的。
开源意味着更多的可能性。 LangManus 的代码完全公开透明,全球开发者都可以自由地查看、修改、使用和分发 LangManus 的代码。 这种开放性吸引了全球开发者的目光,激发了社区的创新活力,促进了技术的快速迭代和发展。
开源意味着更强大的社区支持。 LangManus 的开源模式,使其能够汇聚全球开发者的智慧和力量。 开发者可以共同参与 LangManus 的开发和维护,贡献代码、提交 Bug、提出建议,共同推动 LangManus 的进步。 强大的社区支持是 LangManus 持续发展的坚实后盾。
开源意味着更广阔的应用前景。 LangManus 的开源特性,降低了使用门槛,使得更多的开发者和企业可以免费使用 LangManus,并根据自己的需求进行定制和扩展。 开源模式加速了 LangManus 的普及和应用,使其能够在更广泛的领域发挥作用。
尽管 LangManus 目前还处于快速发展阶段,在某些方面可能还有提升空间,但它所代表的 开源力量,必将推动 AI 自动化技术的快速发展,并深刻地改变我们的工作和生活方式。 我们有理由相信,在字节跳动以及全球开源社区的共同努力下,LangManus 将在 AI 自动化领域扮演越来越重要的角色,并最终成为 下一代 AI 自动化引擎 的领航者。
结语
LangManus,作为字节跳动开源的 AI 自动化框架,为开发者提供了一个强大的工具,可以更加便捷地构建各种自动化应用。 它的开源特性和多智能体协作的架构,使其具备了广阔的应用前景。 随着社区的不断完善和技术的不断发展,LangManus 有望在 AI 自动化领域扮演越来越重要的角色,并最终引领 AI 自动化技术的未来发展方向。
如果你对 AI 自动化充满好奇,渴望探索 AI 技术的无限可能,不妨亲自体验 LangManus,或许它将为你开启全新的工作方式,带你进入 AI 自动化的新世界。 现在,正是拥抱开源、拥抱 AI 自动化的最佳时机!
AI 不仅能聊天,还能编辑图片和绘画!ChatTools 带您体验 GPT-4o 图片编辑的强大,更有 Midjourney 免费无限生图功能,让您尽情挥洒创意!平台还支持 Claude 3.7, DeepSeek-R1 等多种模型,快来探索吧!
相关文章:
字节跳动开源 LangManus:不止是 Manus 平替,更是下一代 AI 自动化引擎
当 “AI 自动化” 成为科技领域最炙手可热的关键词,我们仿佛置身于一场激动人心的变革前夜。各行各业都在翘首以盼,期待 AI 技术能够真正解放生产力,将人类从繁琐重复的工作中解脱出来。在这个充满无限可能的时代,字节跳动悄然发布…...
第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组真题
文章目录 1 幸运数题目描述:答案:4430091 代码: 2 有奖问答题目描述:重点:答案:8335366 代码: 3 平方差题目描述:思路:数学找规律代码: 4 更小的数题目描述&a…...
springboot+tabula解析pdf中的表格数据
场景 在日常业务需求中,往往会遇到解析pdf数据获取文本的需求,常见的做法是使用 pdfbox 来做,但是它只适合做一些简单的段落文本解析,无法处理表格这种复杂类型,因为单元格中的文本有换行的情况,无法对应到…...
静态链接part1
比较多这一部分,包含了编译和链接,书还没看完就先记录一下其中编译的一部分 编译 gcc编译分为预处理、编译、汇编、链接四个步骤 预处理 也称预编译,主要处理的是源代码文件中以“#”开始的预编译指令,这里简单讲一下规则&…...
golang通过STMP协议发送邮件功能详细操作
一.简介 在 Go 语言中接入 IMAP 和 SMTP 服务来进行邮件的发送和接收操作,可以通过使用一些现有的第三方库来简化操作,常见的库有 go-imap 和 gomail,它们可以帮助我们连接和操作 IMAP 邮箱(读取邮件)以及通过 SMTP 发送邮件 二.实现 1. IMA…...
分布式锁在秒杀场景中的Python实现与CAP权衡
目录 一、分布式锁的前世今生 二、秒杀系统的 “硬核” 挑战 三、Python 实现分布式锁的 “实战演练” Redis 实现:快准狠 ZooKeeper 实现:稳如老狗 数据库实现:老实本分 四、CAP 理论的 “三角恋” 五、性能优化的 “锦囊妙计” 锁粒度控制:粗细有道 超时机制:别…...
数据驱动的温暖守护:智慧康养平台如何实现 “千人千面” 的精准照护?
在当今数字化时代,七彩喜智慧康养平台借助数据的力量,正逐步打破传统养老服务模式的局限,实现 “千人千面” 的精准照护。 通过收集、分析和利用大量与老年人相关的数据,这些平台能够深入了解每位老人的独特需求,并据…...
基于SSM的校园美食交流系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
多线程进阶
进阶的内容,就关于线程的面试题为主了,涉及到的内容在工作中使用较少,但面试会考!!! 锁的策略 加锁的过程中,在处理冲突的过程中,涉及到的一些不同的处理方法,此处的锁…...
聊一聊接口测试时遇到第三方服务时怎么办
目录 一、使用 Mock 或 Stub 模拟第三方服务 二、利用第三方服务的沙箱(Sandbox)环境 三、测试隔离与数据清理 四、处理异步回调 五、容错与异常测试 六、契约测试 在我们进行接口测试时,有的时候会遇到要调用第三方服务即外部的API&am…...
《Python星球日记》第22天:NumPy 基础
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、NumPy 简介1. 什么是 NumPy?为什么使用 NumPy?2. 安…...
Spring Boot 中 Bean 的生命周期详解
Spring Boot 中 Bean 的生命周期详解 一、引言 在 Spring Boot 应用中,Bean 是构成应用程序的基础组件。理解 Bean 的生命周期对于开发高效、稳定的 Spring Boot 应用至关重要。本文将深入探讨 Spring Boot 中 Bean 的完整生命周期过程。 二、Bean 生命周期的基本…...
结构化需求分析:功能、数据与行为的全景建模
目录 前言1 功能模型:数据流图(DFD)的结构与应用1.1 数据流图的基本构成要素1.2 数据流图的层次化设计1.3 数据流图的建模价值 2 数据模型:ER图揭示数据结构与关系2.1 ER图的基本组成2.2 建模过程与注意事项2.3 数据模型的价值体现…...
OpenCompass模型评估
OpenCompass面向大模型的开源方和使用者, 提供开源、高效、全面的大模型评测开放平台。 一、OpenCompass文档 1.基础安装 使用Conda准备 OpenCompass 运行环境: conda create --name opencompass python3.10 -y conda activate opencompass2. 安装 Op…...
基于51单片机语音实时采集系统
基于51单片机语音实时采集 (程序+原理图+PCB+设计报告) 功能介绍 具体功能: 系统由STC89C52单片机ISD4004录音芯片LM386功放模块小喇叭LCD1602按键指示灯电源构成 1.可通过按键随时选择相应的录音进行播…...
NeuroImage:膝关节炎如何影响大脑?静态与动态功能网络变化全解析
膝骨关节炎(KOA)是导致老年人活动受限和残疾的主要原因之一。这种疾病不仅引起关节疼痛,还会显著影响患者的生活质量。然而,目前对于KOA患者大脑功能网络的异常变化及其与临床症状之间的关系尚不清楚。 2024年4月10日,…...
高级java每日一道面试题-2025年4月01日-微服务篇[Nacos篇]-Nacos集群的数据一致性是如何保证的?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos集群的数据一致性是如何保证的? 我回答: Nacos 集群数据一致性保障机制详解 在 Java 高级面试中,Nacos 集群的数据一致性保障是考察分布式系统核心能力的关键点。以下是 Nacos 通过多种机制和技术确保…...
阿里云 OSS 在 ZKmall开源商城的应用实践
ZKmall开源商城通过深度整合阿里云OSS(对象存储服务),构建了高效、安全的文件存储与管理体系,支撑商品图片、用户上传内容等非结构化数据的存储与分发。结合阿里云OSS的技术特性与ZKmall的微服务架构,其实践方案可总结…...
【Linux】线程池与封装线程
目录 一、线程池: 1、池化技术: 2、线程池优点: 3、线程池应用场景: 4、线程池实现: 二、封装线程: 三、单例模式: 四、其他锁: 五、读者写者问题 一、线程池: …...
protobuf的应用
1.版本和引用 syntax "proto3"; // proto2 package tutorial; // package类似C命名空间 // 可以引用本地的,也可以引用include里面的 import "google/protobuf/timestamp.proto"; // 已经写好的proto文件是可以引用 我们版本选择pr…...
linux shell编程之条件语句(二)
目录 一. 条件测试操作 1. 文件测试 2. 整数值比较 3. 字符串比较 4. 逻辑测试 二. if 条件语句 1. if 语句的结构 (1) 单分支 if 语句 (2) 双分支 if 语句 (3) 多分支 if 语句 2. if 语句应用示例 (1) 单分支 if 语句应用 (2) 双分支 if 语句应用 (3) 多分支 …...
图论整理复习
回溯: 模板: void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯ÿ…...
企业指标设计方法指南
该文档聚焦企业指标设计方法,适用于企业中负责战略规划、业务运营、数据分析、指标管理等相关工作的人员,如企业高管、部门经理、数据分析师等。 主要内容围绕指标设计展开:首先指出指标设计面临的困境,包括权责不清、口径不统一、缺乏标准规范、报表体系混乱、指标…...
AIP-217 不可达资源
编号217原文链接AIP-217: Unreachable resources状态批准创建日期2019-08-26更新日期2019-08-26 有时,用户可能会请求一系列资源,而其中某些资源暂时不可用。最典型的场景是跨集合读。例如用户可能请求返回多个上级位置的资源,但其中某个位置…...
SAP系统控制检验批
问题:同一批物料多检验批问题 现象:同一物料多采购订单同一天到货时,对其采购订单分别收货,导致系统产生多个检验批,需分别请检单、检验报告等,使质量部工作复杂化。 原因:物料主数据质量试图设…...
JavaScript 代码混淆与反混淆技术详解
一、代码混淆:让别人看不懂你的代码 混淆技术就是一种“代码伪装术”,目的是让别人很难看懂你的代码逻辑,从而保护你的核心算法或敏感信息。 1. 变量名压缩 原理:把变量名改成乱码,比如把calculatePrice改成a&#…...
Android studio | From Zero To One ——手机弹幕
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 滚动显示 代码activity_main.xmlactivity_fullscreen.xmlAndroidManife…...
面向对象的需求分析与UML构造块详解
目录 前言1 面向对象的需求分析概述2 UML构造块概述3 UML事物详解3.1 结构事物(Structural Things)3.2 行为事物(Behavioral Things)3.3 分组事物(Grouping Things)3.4 解释事物(Annotational T…...
LeetCode 2843.统计对称整数的数目:字符串数字转换
【LetMeFly】2843.统计对称整数的数目:字符串数字转换 力扣题目链接:https://leetcode.cn/problems/count-symmetric-integers/ 给你两个正整数 low 和 high 。 对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字…...
RocketMQ深度百科全书式解析
一、核心架构与设计哲学 1. 设计目标 海量消息堆积:单机支持百万级消息堆积,适合大数据场景(如日志采集)。严格顺序性:通过队列分区(Queue)和消费锁机制保证局部顺序。事务…...
A2A与MCP Server:AI智能体协作与工具交互的核心协议对比
A2A与MCP Server:AI智能体协作与工具交互的核心协议对比 摘要 在AI智能体技术爆发式增长的今天,谷歌的A2A协议与Anthropic的MCP协议正在重塑AI系统架构。本文通过协议栈分层模型、企业级架构设计案例及开发者实践指南三大维度,揭示二者在AI生…...
如何将网页保存为pdf
要将网页保存为PDF,可以按照以下几种方法操作: 1. 使用浏览器的打印功能 大多数现代浏览器(如Chrome、Firefox、Edge等)都支持将网页保存为PDF文件。步骤如下: 在 Google Chrome 中: 打开你想保存为PDF…...
位运算与实战场景分析-Java代码版
一、为什么每个程序员都要掌握位运算? 在电商秒杀系统中,位运算可以快速判断库存状态;在权限管理系统里,位运算能用极小的空间存储复杂权限配置;在算法竞赛中,位运算更是高频出现的性能优化利器。这项看似…...
【“星睿O6”AI PC开发套件评测】+ Debian 系统安装及 sysbench 跑分对比
很荣幸这次可以得到机会评测 “星睿O6”AI PC开发套件。第一篇文章,我将分为两个部分: 官方 Debian 系统安装到 NVMEsysbench 跑分以及对比 RK3568 和 I712700KF 正文开始之前,忍不住还是想放几张开箱照片,板子实在是太精致了。…...
java——继承
继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。继承是指在原有类的基础上,进行功能扩展,创建新的类型。 概念与作用 代码复用:继承能够避免重…...
STM32嵌入式开发从入门到实战:全面指南与项目实践
STM32嵌入式开发从入门到实战:全面指南与项目实践 一、STM32开发基础概述 1.STM32微控制器核心特性 STM32微控制器基于ARM Cortex - M内核,具备显著的架构优势。其32位处理能力,能够高效处理复杂的计算任务,相较于传…...
企业数据孤岛如何破
企业数据孤岛如何破 背景信息传统方式Flink CDC如何用技术之力 背景信息 在数字化转型的浪潮中,企业数据的价值正从“事后分析”向“实时驱动”快速迁移。企业需要快速、高效地将分散在不同系统中的数据整合起来,以支持实时分析和业务决策。诚然&#x…...
源码编译安装Nginx
源码编译安装Nginx 源码编译安装Nginx创建nginx服务用户安装编译环境依赖包下载Nginx源码构建编译选项,创建makefile文件编译安装nginx为Nginx创建服务单元设置Nginx开机自启服务 yum安装Nginxyum安装openresty 源码编译安装Nginx 如果需要最新版本及定制化模块可以通过源码安…...
查看容器内的eth0网卡对应宿主机上的哪块网卡
查看容器内的eth0网卡对应宿主机上的哪块网卡 问题描述解决办法1. 进入容器,查看网卡的iflink(接口链路索引)值方法1:方法2: 2. 从宿主机过滤查询到的iflink(接口链路索引)值3. 确定veth接口连接的网桥方法2: brctl查看连接到网桥的接口--推荐 4. 查看网桥连接的物理网卡 问题描…...
虚拟偶像“C位出道”:数字浪潮下的崛起与财富密码(3/10)
摘要:虚拟偶像作为数字时代的新宠,凭借数字技术与文化创意的深度融合,在全球范围内迅速崛起。从早期的简单2D形象到如今高度逼真、智能交互的3D虚拟偶像,其发展得益于计算机图形学、动作捕捉、AI等技术的进步。虚拟偶像不仅在娱乐…...
swift菜鸟教程13(函数)
一个朴实无华的目录 今日学习内容:1.Swift 函数1.1函数定义:使用关键字 func。1.2函数参数:以逗号分隔。1.3不带参数函数1.4元组作为函数返回值1.5没有返回值函数1.6函数参数名称1.6.1局部参数名1.6.2外部参数名 1.7可变参数1.8常量ÿ…...
MacOS红队常用攻击命令
MacOS红队常用攻击命令 1.自动化武器2.系统信息3.服务 & 内核信息4.快捷命令5.网络相关6.brew相关 / 软件包相关7.高权限命令8.创建一个管理员权限的后门用户 1.自动化武器 1、linPEAS LinPEAS 是一个脚本,用于在 Linux/Unix/MacOS 主机上搜索提权路径 2、me…...
无人机的振动与噪声控制技术!
一、振动控制技术要点 1. 振动源分析 气动振动:旋翼桨叶涡脱落(如叶尖涡干涉)、动态失速(Dynamic Stall)引发的周期性气动激振力(频率与转速相关)。 机械振动:电机偏心、传动轴不…...
如何使用 Spring Boot 实现分页和排序?
全文目录: 开篇语1. 创建 Spring Boot 项目2. 配置数据库连接3. 创建实体类4. 创建 Repository 接口5. 创建分页和排序服务6. 创建控制器7. 测试分页和排序请求示例:返回结果: 8. 总结 文末 开篇语 哈喽,各位小伙伴们,…...
浅谈编译型语言的运用
如大家所熟悉的,程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了,程序执行效率高,依赖编译器,如 C/C、Golang 等,…...
知识了解02——了解pnpm+vite+turbo+monorepo的完整构建步骤(react子项目)
(1)初始化monorepo 1)创建项目目录并进入当前目录 2)初始化 pnpm 工作区,生成一个package.json文件 3)在项目根目录下创建 pnpm-workspace.yaml 文件,并定义工作区目录 (2)安装 Turborepo 1)安…...
MySQL 半同步复制,给数据找靠谱 “分身”
目录 一背景 二、MySQL 复制基础概念 为何需要 MySQL 复制 传统异步复制 半同步复制的诞生 三、MySQL 半同步复制原理详解 主要组件及作用 工作流程 半同步复制流程图 四、MySQL 半同步复制配置与代码示例 环境准备 主服务器配置 从服务器配置 示例说明 五、MyS…...
uniapp离线打包提示未添加videoplayer模块
uniapp中使用到video标签,但是离线打包放到安卓工程中,运行到真机中时提示如下: 解决方案: 1、把media-release.aar、weex_videoplayer-release.aar放到工程的libs目录下; 文档:https://nativesupport.dcloud.net.cn/…...
机器人零位标定修正流程介绍
如果想看运动学标定可以看看 机器人运动学参数标定, 一次性把运动学参数和零位标定等一起标定求解. 1. 零位标定 零位标定是机器人运动学标定中的一个重要步骤,其目的是校正机器人关节的初始位置误差。以下是需要进行零位标定的主要原因: 制造误差 在机…...
应用层通信报文设计
/* --------------------------------------------------------------- | 魔数 2byte | 协议版本号 1byte | 序列化算法 1byte | 报文类型 1byte | --------------------------------------------------------------- | 状态 1byte | 保留字段 4byte | 数据长…...