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

企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent

作者:计缘

前言

我之前写过两篇如何构建 AI 应用/AI Agent 的文章,里面涵盖了多个环节,多个领域的组件,整体的核心思路是想表达AI应用的本质是以 AI Agent 为表现层/推理指引层/业务入口层的一个有机系统,Sandbox,LLM,MCP,MEM,可观测等都是这个系统里重要的组成。

《万字长文告诉你企业如何基于MCP实现AI应用架构新范式转型》

《3个月,200+客户,4万+字,和大家聊聊企业AI应用(AI Agent)的落地实践》

但是目前鲜有客户完全落地了这套系统,而更多的是使用其中某几个组件做 POC 和尝试,最常见的组合就是普通服务 + LLM,进阶一点的就是普通服务 + LLM + MCP(不带 MCP Registry)。使用 AI 网关和 MSE Nacos 也有比较成熟的落地方案,所以今天通过真实案例,向大家分享再进阶一点的 Sandbox 的落地实践。

AI Agent 试验田

目前,LLM 的使用被大众最广泛认知的还是以 Chat 模式为主,而 AI Agent 让大家体感最强的,或者说目前应用最好的是在 Coding 场景,而且每家厂商几乎都将 Coding 功能明显的展现了出来。

  • 通义千问:

image

  • Minimax:

image

  • Gemini:

image

  • Kimi:展示的相对隐晦一些。

image

  • Grok:算是为数不多不主打 Coding 的 LLM,但 Grok 4 Heavy 的 Coding 能力也不赖。

image

  • ChatGPT:还是以 DeepSearch,任务推理为主,没有明显的展现出其 Coding 能力。

image

之所以各个厂商都在 Coding 场景落地 AI Agent,我个人认为有这么几个因素:

  • 人潜意识里其实都有创造的欲望,但绝大多数人都只有想法,没有实践落地能力。大模型出来后,在某些场景下可以帮助人们实现想法,满足了人们的部分欲望,但人的欲望是无限的,之前那些产物并不能变现,比如最早时期 SD 出来那会。LLM Coding + Vibe Coding 概念出来后更是引起了一股浪潮,最重要的是 LLM Coding + Vibe Coding 的产物是有机会变现的,甚至开公司创业。
  • Coding 的产物可以被大众的评判标准量化,从而直观的体现出 LLM 能力的强弱。现在评测 LLM 能力的那些数据集的质量以及客观公正性我在这里就不赘述了,绝大多数人对那个是无感的。但是 LLM 写出来的代码至少是能被广大开发工程师拿来检验的。
  • Coding 的场景几乎用到了 AI Agent 系统的所有必备要素。Planning,Sandbox,LLM,MCP,MEM,可观测等。需要将这些要素有机的结合起来,构成 Coding AI Agent 系统,才能让 LLM 写出相对成熟可用的代码。
  • 当 AI Agent 这套系统在 Coding 场景下验证成熟后,整套 AI Agent 系统的架构可以很快复用到其他场景,只需要替换整体架构里具象的组件即可,比如替换 LLM 版本,替换不同的 MCP 服务,替换不同的 Prompt,替换不同的 RL 评测方式等。

泛 Chat 类型 Coding AI Agent 整体架构

image

这里我不对整体架构做解释,我想通过落地过程中,或者说 AI Agent 场景中势必会遇到的挑战点以及解法的维度向大家做分享,然后你们再回头来看这个架构图,应该自然而然就可以理解了。

泛 Chat 类型 AI Agent 的挑战点及解法

从目前看,无论是 Coding 场景,还是写 PPT 啊,文本分析啊,文生图/图生图啊等等,还是用 Chat 类型模型更加易用。包括互联网其他客户的现存业务在融入 AI 能力时,基本也都是 Chat 模式,比如一些客户的智能点餐业务,一些 CRM/ERP 厂商的智能客服,智能问数,智能 BI 等等,都是 Chat 模式。

我锚定后续出现的其他 AI Agent 的场景,大概率也都是以泛 Chat 模式为主。整体的方案架构中,会因为 Chat 模式带来额外的挑战点,所以我将 Chat 模式和 AI Agent 作为一个整体系统架构来看挑战点。

本文作为偏方案科普向文章,会尽可能用大白话表述,非常细节的内容就不在文章里赘述了。有想要针对某个点做详细讨论的同学,可以联系我和我们的团队。(钉钉群号:64970014484)

会话亲和性(Session 亲和性)

这是 Chat 模式最具代表性的一个挑战点。以 Gemini,Claude 为例,每次新建一个聊天/对话/chat 就产生了一个新的会话:

image

会话发起后,你会和 LLM 进行交互,此时该会话底层就会有对应的计算资源实例在运行,提供运行环境(Runtime)。

在这个会话中,你和 LLM 的交互产生几类数据:

  1. 你的文本输入和 LLM 的文本输出,就是各种文字。
  2. Coding 场景中,LLM 会产生各种代码文件。
  3. Coding 场景中,为了可以运行程序,需要动态安装各种依赖(比如 NodeJS 技术栈通过 npm 安装的各种依赖,Python 技术栈通过 pip 安装的各种依赖等),同样也是各种文件。
  4. 计算资源实例,或者说 Runtime 的各种状态,比如 OS 层面的环境变量值等。

上述第一类数据可以存在各类数据库里,但是后三类数据在计算资源实例还在存活时,只能在实例中。这时可能会有同学要问,挂载一个文件系统行不行呢?

  • 存储上述 2,3 类数据,是如果是一个非生产级,或者内部使用的系统,可以。
  • 存储上述 2,3 类数据,如果是 To C 场景的生产级系统,不建议。

因为在这个场景中,数据的隔离性是强诉求,挂载 NAS 并做不到绝对强隔离,除非一个实例挂载一个文件系统,这也不现实,因为在这个场景下计算资源实例会非常多。

上述第 4 类数据无论如何只能是在实例级别,因为和 OS,和容器文件系统相关。

综上,在这种场景下,需要会话和计算资源实例通过某种方式绑定,每次打开这个会话,请求要路由到相同的实例,从而保证该会话生命周期里所有数据、状态的一致性。

阿里云函数计算 FC 支持多种亲和性方式

函数计算 FC 支持三种亲和性:

  • MCP SSE 亲和。

    • 基于 MCP SSE 协议规格,系统确保携带相同 SessionId 的客户端请求始终路由到同一个实例实现亲和行为。
  • HeaderField 亲和。

    • 基于 HTTP 请求头中的指定字段值实现会话亲和。
  • Cookie 亲和。

    • 基于 HTTP Cookie 中的特性值实现会话亲和。

在帮助客户落地时,大都使用了 HeaderFiled 亲和方式,在每个会话里发起请求时,Header 里会带着 UserID+会话 ID 作为 SessionID,实现了会话里的每个请求都能路由到相同的实例中,从而保证了会话的所有数据、状态的一致性。

除此以外,函数计算 FC 在函数级别还可以设置每个实例的 Session 并发度,即一个实例允许接几个 Session 的请求,从而满足更灵活的业务场景。

image

除了 AI Agent 场景,该能力在游戏场景也有广泛应用,比如 IGame 工作室的《第四纪元》游戏底层游戏服、平台服、WS 服全部使用函数计算 FC,实现游戏底层完全 Serverless 化:《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏

会话级别的隔离性

在泛 Chat 类型的场景下,用户的不同会话之间,不同用户的会话之间都需要完全隔离,这是数据安全、用户隐私安全的的刚需诉求。

这里包括了以下若干方面的隔离性:

  • 运行会话的计算资源实例之间的网络隔离。
  • 运行会话的计算资源实例之间的存储隔离。
  • 运行会话的计算资源实例能否完全与外界隔离,既是否能允许访问公网。
    • 在 AI Agent Coding 场景是需要允许公网的,因为要动态安装依赖。
    • 但是很多依赖组件是从外网下载,网络质量不可控,导致下载时间过长或者超时,所以有客户会穷举某个技术栈的依赖组件,构建一个内网下载源,此时需要实例禁止访问公网,做到更强的安全性。
  • 运行会话的计算资源实例不能被公网访问。
  • 运行会话的计算资源实例只能被指定的内网服务访问。
  • 运行会话的计算资源实例和下游服务之间的互通管控。
    • 有些场景下不允许实例访问其他内网服务。
    • 有些场景下需要允许实例访问其他内网服务。

函数计算 FC 实例之间的隔离性

  • 函数计算 FC 相同函数的每个实例之间,不同函数的实例之间都是网络隔离的。
  • 函数计算 FC 函数的每个实例有自己独立的磁盘空间,实例之间的磁盘是隔离的。
  • 函数计算 FC 函数可以设置是否可以允许访问公网,可以根据具体业务场景开启或关闭。
  • 函数计算 FC 函数可以禁用被公网访问。
  • 函数计算 FC 函数可以设置只允许被指定的 VPC 内的资源访问。
  • 函数计算 FC 函数可以配置 VPC,可以和指定 VPC 打通网络,实现灵活管控和内网其他服务之间的网络。

image

会话存储机制

从存储机制和介质类型方面来说,无非就是两种方式:

  • 云盘+OSS
  • 挂载文件系统

以上两类方式在这个场景中都会用到,会在合适的场景下使用合适的方案。这个场景的存储机制包括 4 个核心问题:

  • 存储成本问题。
  • 数据完整性问题。
  • 动态挂载存储问题。
  • 限制每个路径下上传文件的总量。

存储成本问题

这个问题主要源自 AI Agent Code Interptreter Sandbox 场景的不确定性特性之一,环境依赖的不确定性。即每个用户发起的 Coding 任务,都需要各种不同的依赖包,所以需要在执行任务的过程中动态安装依赖。

所以,以 NodeJS 为例,会在构建项目的过程中在 node_modules 文件里生成大量的各种组件、依赖的文件,并且不同项目的组件、依赖重复度较高。如果每个项目的 node_modules 文件都保存下来,那么存储成本压力会非常大。

大部分客户在解决这个问题时使用了函数计算 FC 函数磁盘+OSS 的方式。

  • 项目构建过程中生成的所有文件,都先保存在函数磁盘中。
  • 在函数 PreStop 生命周期方法中(函数实例销毁时调用),将除了 node_modules 文件的所有其他文件打包上传到 OSS。

通过这种方式用户只需要持久化保存项目的主干工程即可,不需要将依赖都保存下来,并且在实现过程中,也不需要特意去考虑删除 node_modules 文件的工作,因为函数实例只要释放了,实例磁盘里的数据也就都删除了,所以用户只需要实现简单的选择文件打包上传 OSS 的逻辑即可。

但这种不存依赖的方案再恢复会话时有一定时延的弊端,这问题在下文对应章节会解释如何优化。

数据完整性问题

数据完整性问题指的是当计算资源实例出现非预期的 Crash 时,是否能最大程度的保存下来当时的各种数据。在这个前提下无疑挂载文件系统的方式是最有效的,因为整个 IO 操作都是通过文件路径实时写入文件系统的,所以在实例 Crash 的一瞬间,可能只有极少数的文件会丢失。

而云盘+OSS 的方式,因为上传 OSS 并不是实时的,所以在实例 Crash 的一瞬间,可能会丢失相对更多的文件。但是经过我们反复的技术调研、测试以及和客户的推演讨论,最终认为在 Sandbox 场景下,还是云盘+OSS 的方式是最适合的

文件系统不适合 Sandbox 场景的核心原因主要有 2 个:

  • 上述存储成本的问题。

    • 如果所有文件都存在文件系统,又想只选择部分持久化,那么势必要实现一个非常复杂的文件删除逻辑,一旦文件删除逻辑设计有缺陷,那么可能会造成更大的问题。
  • 存储安全或者说隔离性的问题。

    • 虽然系统在运行代码时已经禁用了执行 mount 权限,但在使用 WebShell 登录计算资源实例(仅限于神龙)时,给到用户的是 root 权限, 可以成功执行 mount 指令,挂载到文件系统的任意目录。
    • 由于 NFS 协议需要在可信网络环境中(配置 VPC)允许文件访问,所以只要计算资源实例在可信 VPC 下,就可以通过挂载点来访问指定路径的文件,无需任何身份授权。
    • 所以,Sandbox 实例若对外暴露代码片段执行能力,允许 C 端执行自定义代码,会被攻击者构造恶意指令来访问文件系统中的文件,不需要任何身份权限校验。

所以再次印证了为什么 Code Interptreter Sandbox 推荐使用函数磁盘+OSS 的方案。

动态挂载存储问题

这个问题源自 AI Agent Code Interptreter Sandbox 场景的另一个不确定性的特性。那就是挂载存储的路径是动态的,是不确定的。只有请求到了实例里后,才知道要挂载的路径是什么。

因为通常路径都是 用户 ID/会话 ID/[任务 ID],如果是新创建的会话,只有该会话的第一个请求进了实例,才知道完整的路径是什么。所以这就需要计算资源实例可以动态挂载存储介质,而不是先挂载路径后启动实例。并且每个实例挂载的路径都是不同的。

函数计算 FC 的在持久化方面,原本就支持在函数维度设置 NAS 或 OSS 的挂载路径,在这种情况下,该函数的所有实例都会共享该挂载路径。而现在,我们又支持了可以在实例维度动态的挂载 NAS 和 OSS 路径的能力,实现了同一个函数的不同实例,可以挂载同一个文件系统/OSS Bucket 的不同路径。

image

限制路径级别的文件总量 Quota 文件

在 AI Agent Coding 或者 Vibe Coding 场景下,用户可以随便写个类似云盘的项目,或者论坛的项目。所以可以随意上传文件,如果被非法利用,可能会引起被白嫖存储的问题。所以需要对每个项目可上传文件总量大小做限制。

目前文件系统虽然支持路径级别设置 Quota,但是 AI Agent Coding 这个场景下路径数量会非常多,可预见性的会有几万,十几万个甚至更多,所以需要另寻解决方案。

目前的方案有 2 个:

  • 基于函数计算 FC 特性实现的。(短期临时方案)
  • PolarFS 支持给几乎没有上限的路径设置 Quota。(长期成熟方案)

目前函数计算 FC 正在和 PolarFS 做产品间集成,集成后这块会直接换成 PolarFS 方案。我在这里和大家分享一下当前是如何基于函数计算 FC 的特性做的临时实现。

上文中我有提到,函数计算 FC 函数的每个实例都有自己的磁盘,最小是 512MB,也有更大的额度。当超过磁盘大小后会报错。所以目前写好的项目运行在函数计算 FC 实例中,写文件的操作是先写进函数实例的磁盘中,写入成功后,再 CP 到文件系统里。当函数实例磁盘写满报错后,就不会再对文件系统做交互。相当于用函数实例的磁盘做了一层中转,但是依赖函数磁盘 Quota 的强限制,变相解决了路径配额的问题。

会话恢复机制

会话恢复的逻辑本质上是比较简单的,但是这部分涉及到效率问题也涉及到记忆问题,所以结合函数计算 FC 的特性和大家作以分享和探讨。

上文中提到了,会话底下的 Code Interpreter Sandbox 这部分使用的是函数实例磁盘+OSS 的存储方式,所以当会话需要恢复时,需要有 2 部分的数据需要恢复:

  • LLM 输出的一大堆文本,也就是该会话里的上下文。
  • 代码工程文件和依赖组件。

LLM 输出的这一大堆文本(上下文),可以选择使用一些记忆组件,也可以选择关系性数据库做存储。

代码工程文件自然是从 OSS 中下载解压做恢复,但是前文中说了 node_modules 并没有存储,所以在会话恢复过程中,有一部分耗时的地方就是要重新下载安装依赖。这也是我说的效率问题。

这部分如果想要从根本解决效率问题,就得把所有的依赖文件都存下来,但是面临巨大的存储成本压力,多金土豪的客户自然可以用这种方式。但我相信绝多大数客户还是会在效率和成本之间寻找一个平衡的解决方案。

我们目前的做法限制用户可以在 1 小时内快速恢复会话,超过 1 小时后就会慢一些:

  • 函数计算 FC 函数实例的存活时长(Idle Time)可由用户自行设置。目前实例存活时长为 1 小时,所以在这 1 小时内,依赖文件都在函数的临时磁盘里,从而达到高效恢复会话的效果。当在 1 小时内没有任何请求进来,那么实例才会被释放,所以当用户超过 1 个小时后再打开会话,就会重新拉起实例,从 OSS 下载代码文件,重新安装依赖,整体会话恢复时间就会较长。

    • 默认情况下,当函数实例在 5 分钟内没有请求,实例就会被销毁。
  • 因为客户可以自行控制函数实例的 Idle Time,所以可以对客户做付费分类,比如 SVIP 用户对应的函数实例 Idle Time 为 24 小时,VIP 用户对应的函数实例 Idle Time 为 10 小时,普通用户对应的函数实例 Idle Time 为 1 小时。

会话网络管理

会话网络管理本质上就是会话底层计算资源实例的网络管理,最核心的其实就是 IP 分配的问题。

  • 有限的 IP 与 PodCIDR 模型:K8s 在 IP 管理分配方面有集群 CIDR,节点 PodCIDR 分配,Pod IP 分配三个维度,这种设计确保了不同节点上的 Pod IP 地址不会冲突,并且简化了路由。然而,它也引入了一个关键的制约因素:Pod 密度,即每个节点上运行的 Pod 数量。当一个节点上的 Pod 密度很高时,即便整个集群的 CIDR 地址空间还很充裕,该节点自身的 PodCIDR 也可能被迅速耗尽。
  • 企业安全组最大支持关联的 IP 地址数量是 65535,在这个场景中实例数是很有可能超过 65535 的。

函数计算 FC 作为 Serverless 计算产品,自己有足够大的资源池,函数实例不会使用用户的 IP,并且底层容器的调度和 K8s 也是完全不一样的,而且在安全组方面,相同的 uid+role+vsw+vpc+sg 是复用一个 IP 的,和函数数量没关系,和实例数量也没关系,所以无需客户做任何事情,可以完美解决上述的问题。

项目分享/会话分享机制(Sandbox 转传统 Server)

在 Vibe Coding 环境中,当一个完全不懂编程的人,只靠一些想法,通过一些平台就可以完完全全实现出来,我觉得除了自己很兴奋外,应该会立马想把自己实现的产物分享给自己身边的朋友,无论是以什么目的做的分享,我相信这份成就感是无与伦比的,这也正是 Vibe Coding 性感的地方之一。

现在很多 AI Agent 产品主打的就是生成完整的项目,可以直接运行的项目,分享出去后可直接使用的项目,所以都会有类似发布分享的功能。大家可以想象一下,当一个由 LLM 写出来的项目,被发布了以后,其实它和什么 AI Agent,Sandbox 就没有任何关系了,运行这个项目的底层计算资源其实就是一个传统的 Server。

但这个传统 Server 面临着不普通的挑战点:

  • 在这个场景下,由 LLM 生成的项目会非常多,底层计算资源池准备多少合适?
  • 分享出去的项目突然成爆款,QPS 巨大,底层计算资源能否快速扩容,接住这泼天富贵?
  • 那么多项目,大概率 99.5% 的项目没什么人访问,但有可能有 0.5% 的项目称为了爆款,在这种情况下,底层计算资源准备多了浪费,准备少了接不住这种出爆款的现象,该怎么办?
  • 每个项目使用的资源要隔离,爆款项目不影响整个系统(类似热点接口将整个系统拖垮的逻辑)。
  • 分享出去的项目该用什么样的存储机制?

我用大白话将上述挑战点翻译成客户的需求:分享出去的项目对应的资源要相互隔离,互相不影响,项目没请求的时候不要给我拉起资源,有请求时再拉起资源,而且资源可以根据 QPS 量快速横向扩容,而且扩出来的实例可以共享存储,保持项目的状态一致。

从最根本上讲,就是成本的问题。这是标准的 Serverless 形态计算资源解决的问题,所以函数计算 FC 可以完美的解决这个变态的场景。

  • 每一个项目对应函数计算 FC 中的一个函数,函数设置多实例多并发,函数规格 1C1G,函数挂载文件系统(/用户 ID/项目 ID)。
  • 绝大多数项目都是没有请求的,或者请求量非常小的。对应到函数计算 FC,那就是大多数函数压根不会拉起实例,只有少部分函数只需要拉起一个 1C1G 的实例,就可以支撑少量的请求。
  • 爆款项目对应的函数在流量高峰期可以快速拉起多个实例,低峰期又可以释放多余的实例,始终保持实例数和 QPS 在比较贴合的情况。
  • 爆款项目,或者请求量比较大的项目,对应的函数会拉起多个实例,每个实例共享挂载的文件系统路径,所以每个对项目的操作产生的数据变更、状态变更都可以保持一致。

爆款项目这个场景很类似我们以前做的一些 RTA 场景(某客户 RTA 场景高峰期 70w QPS,低峰期 30w QPS,QPS 方差达到 40w),或者像高德这种 QPS 有明显波峰波谷且方差比较大的场景。

不同会话配置不同的资源规格(Sandbox 实例 VPA 机制)

这个需求本质是因为 AI Agent 场景下的 Sandbox 执行什么样的任务是不可控的,比如有的任务就是简单的推理、查询等,对 CPU 和内存的消耗不高。但有些任务是处理文件、处理音视频,这一类的任务就是 CPU 密集型的场景,要求更高的 CPU 和内存规格。

如果是在同一个函数下的话,就需要函数的实例可以纵向扩容,函数计算 FC 的基础架构底层是支持的,但是没有对应的计费逻辑,或者说这样对客户来说计费逻辑会很复杂,所以目前函数计算 FC 从对外透出的产品能力上并不支持 VPA。

目前给推荐客户的方案如下:

image

  • 引入一个小参数 LLM 做意图识别,类似联网搜索里的意图识别,将任务类型做分类。
  • 不同任务类型对应不同的函数,每个函数可以设置不同的资源规格。
  • 使用函数计算 FC 的 Destination 功能做兜底。

发布分享项目的访问管控机制

项目做分享这个功能需要涉及到以下几个核心的点:

  • 自定义域名的管理,如何和 Sandbox 实例做打通和映射。
  • 即使 Sandbox 实例有能力快速横向扩容,但依然需要对访问链路做限流、降级、熔断等管控策略,防止一些非法行为。
  • 如果引入项目 A/B 测试或灰度能力,需要入口做管控策略。
  • 需要支持多种认证鉴权机制。

基于以上这些核心需求,引入了云原生 API 网关做统一的南北向流量入口管控。

  • 云原生 API 网关侧可以做域名、路由的统一管理。上图中看到的分享地址(URL),就是管理在网关侧的,并且背后有对应的路由。
  • 云原生 API 网关和函数计算 FC 做了深度产品集成,在创建路由时可以方便的选到对应的函数。
  • 云原生 API 网关支持丰富的管控策略和自定义插件机制,所以限流、降级、熔断、各种鉴权认证、A/B 测试、灰度测试等都可以快速的通过配置来实现。

通过 Sandbox 与 Serverless 的深度融合,AI Agent 不再是“黑盒”实验,而是可被企业精准掌控的生产力工具。这种架构不仅适配当前 AI Agent 的动态交互特性,更为未来多模态 Agent、跨系统协作等复杂场景提供了可复用的技术底座。

若您的企业正面临 AI Agent 规模化落地的挑战,不妨从 Sandbox 架构入手,结合函数计算 FC 的能力,快速验证并构建安全、高效、可扩展的 AI 应用系统。

相关文章:

企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent

使用 AI 网关和 MSE Nacos 也有比较成熟的落地方案,所以今天通过真实案例,向大家分享再进阶一点的 Sandbox 的落地实践。作者:计缘 前言 我之前写过两篇如何构建 AI 应用/AI Agent 的文章,里面涵盖了多个环节,多个领域的组件,整体的核心思路是想表达AI应用的本质是以 AI …...

android开发局域网内通过NTP服务端自动更新系统时间

1. 问题:如果设备有机会处于外网,一般不会有系统时间自动同步问题,但是存在一些使用场景就是设备一直处于局域网环境,如果设备关机一段时间了,再启动设备后,时间可能是1970或者其实错误时间 2. 解决方法:系统时间的自动更新是通过ntp server服务在外网可用时自动请求和同…...

一招解决Proxmox VE虚拟机磁盘空间耗尽:LVM在线扩容实战 - 若

本文将记录一次完美的线上故障排除:在不重启服务、不停机的情况下,解决Proxmox VE中Ubuntu虚拟机根目录磁盘空间100%被占满的问题。问题场景:空间告急,服务危在旦夕 在管理一台名为 tools1 的Proxmox虚拟机时,系统突然报警。登录后执行 df -h 检查,发现根目录使用率已达1…...

jiaozi

教育观(素质教育的内涵):素质教育以提高国民素质为根本宗旨是 面向全体学生的教育是 促进学生全面发展的教育是 促进学生个性发展的教育 是   以培养学生创新精神和实践能力为重点的教育 教学观: 教学从”教育者为中心” 转向 “学习者为中心” 教学从“…...

基于Linux系统的定制软件安装硬件设备选型指南

用户需求分析与选择标准 核心需求分析Linux作系统支持 :设备必须预安装或支持主流 Linux 发行版。软件定制能力 :提供完整的开发环境和包管理支持。硬件性能 :足够的计算能力来运行自定义应用程序。接口扩展性 :丰富的I/O接口,满足多样化的应用场景。选择评估维度评估维度…...

c++之is_trivially_default_constructible

is_trivially_default_constructible 是 C++ 标准库中的类型特性工具,用于检查类型是否具有平凡的默认构造函数。以下是关键信息:定义与用途该工具属于 <type_traits> 头文件,用于编译时查询类型是否满足以下条件: 类型具有平凡的默认构造函数(无需特殊操作即可构…...

python3协程学习-async,await

参考文档: https://cloud.tencent.com/developer/article/2002528 https://cloud.tencent.com/developer/article/2480588?policyId=1004 什么是协程 https://docs.python.org/3.11/glossary.html#term-coroutine 协程:Coroutines are a more generalized form of subroutin…...

猫树分治

猫树分治,又称二区间合并,一种可以用 \(O(n\log n)\) 时空复杂度预处理,\(O(1)\) 处理区间询问的算法,与 cdq 和整体二分类似。 我们考虑线段树上,我们通过 pushup 操作不断合并两个区间,做到查询 \(O(\log n)\) 个区间回答询问,但是如果没有修改操作,我们可以只询问 \…...

Rust太难了。。。。。。。

rust是我学习过的除汇编之外最难的编程语言,难到什么程度? AI写的都是tm的错误,bug。AI在其他语言上面几乎不可能...

AI导航生成寻路点-FindPathToLocationSynchronously

FindPathToLocationSynchronously() example:FHitResult Hit;if (GetHitResultUnderCursor(ECC_PhysicsBody, false, Hit)){ CacheDestination = Hit.ImpactPoint;}if (UNavigationPath* NavPath = UNavigationSystemV1::FindPathToLocationSynchronously(this, Controll…...

cache写策略

cache写策略 写命中 全写法 当cpu对cache写命中时,必须把数据同时写入cache和主存,一般使用写缓冲 cpu不会一直在写入数据,当cpu去做其他事情的时候,会有一个控制电路,把数据从写缓冲逐一写入到主存 使用写缓冲,cpu写的速度很快,如果写操作不频繁,则效果很好,如果写操…...

个人微信开发

开发微信机器人需要以下几个基本概念:机器人接口开发:框架提供了开放接口,可以通过这些接口对微信进行操作。如接收用户消息、发送消息、操作朋友圈等。 自然语言处理:机器人需要能够理解自然语言,以便能够识别用户输入的意图,并做出相应的回应。自然语言处理包括文本分析…...

C++之std::is_trivially_copyable

在C++11中,平凡类型(Trivial Type)、平凡可复制类型(TrivialCopyable)、标准布局类型(Standard-layout Type) 是描述类在内存中布局特性的术语,它们与类的构造、拷贝、赋值和销毁行为有关,也影响着类的内存布局和对齐方式。 下面用通俗的语言解释这些概念: 平凡类型 …...

PostgreSQL技术大讲堂 - 第104讲:PostgreSQL分区表应用实践

PostgreSQL从入门到精通系列课程,100+节PG技术讲解,让你从小白一步步成长为独当一面的PG专业人员,点击这里查看章节内容,持续更新,欢迎加入。 第104讲:PostgreSQL分区表应用实践--让你速度提高20倍1、什么是基于哈希的分区?2、两级分区介绍3、catalog 查找开销4、pg_has…...

redis实现缓存1-添加商户缓存

首先我们理解计算机硬件层面的缓存 (CPU Cache)。 计算机存储系统是一个金字塔结构,越靠近塔顶(CPU)的部件,速度越快、容量越小、成本越高;越靠近塔底,速度越慢、容量越大、成本越低。 缓存速度最快但容量最小,用于存储CPU立即需要的数据;内存作为中间层,存储正在运行…...

qemu的外部快照实现原理

一 基础概念 1 外部快照 当一个快照被创建时,创建时当前的状态保存在当前使用的磁盘文件中,即成为一个backing file。此时一个新的overlay被创建出来保存往后的数据。 2 backing file和overlay 对基础镜像做外部快照,生成的快照文件被称为overlay,基础镜像成为backing file…...

Springboot 集成 飞书群消息

Springboot 集成 飞书群消息前情概要 公司项目想要加入一个系统错误推送功能,方便线上项目运维,可选择的消息通知渠道很多,比如邮箱、短信、微信、飞书等等,但是邮箱每天有发送数量上限,而且还有其他必须要使用邮箱发送的功能,所以为了不影响必要功能的运行,邮箱不可取,…...

最新爆料:GitHub Copilot全面推出OpenAI GPT-5 和 GPT-5 mini!

最新爆料:GitHub Copilot全面推出OpenAI GPT-5 和 GPT-5 mini!OpenAI最新推出的GPT-5和GPT-5mini已全面接入GitHub Copilot,其中GPT-5mini面向所有用户开放,GPT-5仅限付费用户使用。用户可在主流开发环境和GitHub移动端通过模型选取器访问这些功能。企业版和商业版用户需管…...

netstat 命令查看端口状态详解

netstat 命令查看端口状态详解 转载请注明出处:netstat 可以查看服务器当前端口列表及指定端口的连接状态等;-t : 指明显示TCP端口,t是TCP的首字母。-u : 指明显示UDP端口,u是UDP的首字母-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序,p是program的首字…...

智聘无界:AI 破解全球化招聘合规、成本与人才匹配难题的实践路径

引言:全球化浪潮下的招聘新挑战 在全球经济一体化进程加速的今天,企业边界日益模糊,跨国经营已成为常态。然而,伴随而来的全球化人才招聘难题也愈发凸显。传统招聘模式在面对日益复杂、多元的国际市场时,显得力不从心,主要表现为人才获取效率低下、运营成本高昂以及难以适…...

Nature | 本周最新文献速递

Molecular subtypes of human skeletal muscle in cancer cachexia 中文标题: 破解癌症恶病质肌肉谜团!整合RNA组学揭示两大分子亚型预示预后 关键词: 癌症恶病质、分子亚型、RNA组学、非负矩阵分解、肌肉萎缩 摘要总结: 这篇文章通过高通量测序分析结直肠癌和胰腺癌患者肌…...

Flink 与Flink可视化平台StreamPark教程(CDC功能)

本文分享自天翼云开发者社区《Flink 与Flink可视化平台StreamPark教程(CDC功能)》,作者:l****n 基本概念 flinkCDC功能是面向binlog进行同步、对数据的增删改进行同步的工具,能够实现对数据的动态监听。目前其实现原理主要为监听数据源的binlog对数据的变化有所感知。 在这…...

GAS_Aura-Setting Up Auto Running

1讲了使用Nav导航生成样条线驯寻路点进行移动...

Ubuntu 24.04 LTS 登录用户和密码忘记找回方法

1.重启服务器时按住Shift键位进入GNU GRUB界面,按向下方向键选择 *Advanced options for Ubuntu 回车2.拨动向下方向键,选择恢复模式 recovery mode 3.等待系统执行,拨动向下键进入root shell 4.在 root shell 提示符下,输入以下命令来列出系统中所有的用户:ls /home5.最后…...

错排问题

https://www.bilibili.com/video/BV1ZwmtYwEsK 第一个视频 https://www.bilibili.com/video/BV1Mw4m1y7xT...

源码调试-带你了解下车牌识别的深度学习模型-LPRNet

本期视频介绍了基于PyTorch的车牌识别模型LPRNet的调试运行过程。主要内容包括:1)项目结构分析和环境配置;2)单张图片识别代码实现,涵盖图像预处理、模型预测和结果可视化;3)注意事项说明。该模型支持蓝牌和新能源车牌识别,具有轻量级特性,适合实际应用开发。视频详细…...

仓储物流业务字段(一)

以下是整理的100个仓储物流数据库常用字段名,分类归纳如下: 基础信息类 仓库编码(warehouse_code) 仓库名称(warehouse_name) 仓库地址(warehouse_address) 仓库类型(warehouse_type) 负责人(manager) 容量(capacity) 仓库状态(status) 安全要求(safety_requi…...

ubuntu 24.04部署mysql8.0.41(glibc2.28)

环境Os:ubuntu 24.04 desktop桌面版mysql:8.0.41 glibc2.28查看操作系统信息root@db:/soft# uname -a Linux db 6.14.0-29-generic #29~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 14 16:52:50 UTC 2 x86_64 x86_64 x86_64 GNU/Linuxroot@db:/soft# cat /etc/os-release PRET…...

cmakelist文件中常见语句的含义

最近在进行c++代码的编译,发现cmakelist文件中有很多语句。一开始小白并不理解什么含义,学习后特此记录,以方便以后自己查阅。 情况一:单个模块,无主模块包含多个子模块的情况 文件目录如下:MyProject/ ├── CMakeLists.txt ├── include/ │ └── my_library.h …...

charles破解-在线生成激活码

charles破解下载最新Charles,官网地址:Charles官网下载安装后,使用破解工具自动生成激活码Charles激活码自动生成工具具体用法如下:打开激活工具,输入RegisterName名称,名称可任意输入,点击生成即可自动生成激活码打开Charles,点击help,选择Register Charles,输入生成…...

微信个人号开发

微信个人号二次开发,是完整的第三方服务平台,并基于IPAD协议8.0.57开发出的最新个微API服务框架。 你可以 通过API 实现 个性化微信功能 (例云发单助手、社群小助手、客服系统、机器人等),用来自动管理微信消息。用户仅可一次对接,完善所有功能。可实现分布式部署,批量管…...

内部排序-直接插入排序冒泡排序快速排序对比

内部排序-直接插入排序冒泡排序快速排序对比内部排序-内部排序-直接插入排序冒泡排序快速排序对比 写在前面:参考《数据结构(C语言版)》严蔚敏 吴伟民 编著 清华大学出版社 2008年10月第27次印刷 📋 算法概述 直接插入排序(Straight Insertion Sort)是一种最简单的排…...

STM32读写EEPROM

代码如下#include "i2c.h" #include <string.h>/* M24C64设备地址(A0/A1/A2接地,7位地址为0x50,左移1位后为0xA0) */ #define EEPROM_ADDR (0x50 << 1) #define M24C64_PAGE_SIZE 32 // 页面大小:32字节 #define M24C64_WR…...

OpenStack Nova 创建虚拟机

创建虚拟机的过程是一个经典的分布式、异步、状态驱动的工作流。其核心设计哲学是:API 接收请求 -> 调度决策 -> 资源分配 -> 虚拟化层执行。整个过程涉及多个 Nova 服务以及外部组件(Glance, Neutron, Cinder, Keystone)。 1、基本流程 sequenceDiagramparticipan…...

AI革命2025:新一代人力资源管理系统十大标杆产品评测

导读:在数字化浪潮推动下,AI与移动技术正在重塑人力资源管理系统的行业格局。本文盘点了2025年中国市场十款主流智能人力资源管理系统,涵盖集团型、成长型及中小企业的核心需求。重点介绍红海eHR在AI智能体、移动端全流程和数据驱动决策上的创新优势,并通过多维度评分与场景…...

企业HR系统选型全指南:百人初创到万人集团的数字化方案与实施路径

导读:本篇文章围绕企业不同规模的人力资源管理需求,梳理了从百人初创到万人集团的HR系统选型逻辑。通过分层痛点分析、科学评估体系、信息密集对比表和真实案例,并系统推荐了包括i人事、北森、红海云在内的多款市场热门产品,助力企业高效推进HR数字化转型。本文属于深度内容…...

C++ auto关键字

C++ auto关键字的原理与使用auto关键字: 一、C++98标准auto关键字的作用和C语言的相同,表示自动变量,是关于变量存储位置的类型饰词,通常不写,因为局部变量的默认存储就是auto 1 void foo(void) 2 { 3 int a; //变量存储在栈区 4 auto int b; //…...

API 响应体加密场景下的调试实践:Postman 的局限与 Apipost 的优化

在日常开发和测试过程中,我们经常会遇到如下场景: 后端服务出于安全性或协议规范的考虑,对 API 的响应体进行了加密或编码处理,例如 Base64 编码、AES/RSA 加密等。这样做在生产环境中是合理且必要的,能够避免敏感数据被明文传输。但与此同时,也为开发和测试阶段的调试带…...

ARM主板:低功耗高性能的嵌入式计算核心

在当今数字化飞速发展的时代,计算机硬件领域不断创新变革,其中ARM主板凭借其独特的优势脱颖而出,成为众多应用场景的理想选择。无论是智能家居、工业自动化还是物联网设备等,都能看到它活跃的身影。下面将深入探讨ARM主板的相关特性、优势以及广泛的应用场景。 什么是ARM主…...

2025绩效管理必知

HR 往往是一个企业绩效管理的推动者,但是在推动的背后,实际有一个非常重要的目标,那就是提高个人和团队的绩效,从而提升企业整体的绩效。绩效管理就是要找到 “应该实现什么 “和 “如何实现 “这些问题的答案。它是关于寻找更有效的方法来提高业务绩效。 绩效管理关注什么…...

【刷题笔记】cf808f

CF803F 场上死磕无法战胜,原来是个绿题吗哈哈。 考虑到跟序列的顺序无关,直接在值域上做。我们设 \(f_i\) 表示 \(\gcd = i\) 的方案数。那么有 \[f_i = 2^{g_i} - 1 - \sum_{i | d \land i \ne d} f_d \]\(g_i\) 是原序列中是 \(i\) 倍数的个数。那么调和级数 \(O(V\log V)\…...

Laravel APP_DEBUG=true:存在账户信息泄露风险

Laravel APP_DEBUG=true:存在账户信息泄露风险 在 Laravel 开发过程中,APP_DEBUG=true 是一个高频使用的配置 —— 它能在代码报错时显示详细的堆栈跟踪、变量值和配置信息,极大提升调试效率。但鲜少有人意识到,若将开启调试模式的项目部署到生产环境,会直接沦为账户信息泄…...

将当前目录下的所有文件 / 目录完整复制到/tmp目录,且会保留文件的权限、所有者、时间戳等属性

tar cvf - * | (cd /tmp && tar xvfp -)...

C# 操作 DXF 文件指南

C# 操作 DXF 文件主要借助一些专业的库来解析其结构并处理其中的图形数据。 C# 操作 DXF 文件指南 摘要 通过 C# 操作 AutoCAD 导出的 DXF 文件,你可以实现图纸的读取、编辑、创建和转换。本指南将介绍两个主流的开源库 netDxf 和 DXF.NET (IxMilia.Dxf),并提供核心代码示例、…...

在Proxmox中部署Security Onion的安全配置实战

本文详细记录了在Proxmox虚拟化环境中部署Security Onion网络监控系统的完整过程,重点解决了官方文档未涉及的网桥配置问题,包括创建无IP嗅探接口、Linux网桥设置及虚拟机网络设备配置等关键技术环节。在Proxmox中部署Security Onion的安全配置实战 文档说明 Security Onion项…...

报表到 BI:企业数据从展示到决策的进阶之路

报表与BI分析:从数据展示到决策洞察的进化之路 企业数字化转型的浪潮里,“数据驱动决策” 早成共识,可不少企业仍在 “报表” 与 “BI 分析” 的迷雾里打转:是替代,还是互补?为何满墙报表难寻洞察?为何 BI 工具常被业务部门当作 “数据探索的钥匙”?本文从本质差异、能…...

抢先体验智能测试时代,QA必备AI测试工具

敏捷开发模式下的测试挑战 敏捷开发模式下,业务快速迭代,给测试团队带来了前所未有的压力。每一次功能升级或系统迁移,都意味着从功能测试、兼容性测试、性能测试到安全性的大规模回归验证。测试规模成倍增长,而团队人力却往往难以及时扩充。 再加上多设备、多系统环境下频…...

Flink 与Flink可视化平台StreamPark教程(DataStreamApi基本使用)

本文分享自天翼云开发者社区《Flink 与Flink可视化平台StreamPark教程(DataStreamApi基本使用)》,作者:l****n DataStreamApidataStreamApi是一切的基础,处于调度flink程序处理任务的起点。Flink 有非常灵活的分层 API 设计,其中的核心层就是 DataStream/DataSet API。由…...

内部排序-直接插入排序

内部排序-直接插入排序内部排序-直接插入排序 写在前面:参考《数据结构(C语言版)》严蔚敏 吴伟民 编著 清华大学出版社 2008年10月第27次印刷 📋 算法概述 直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排号序的…...

玩转n8n测试自动化:核心节点详解与测试实战指南

掌握节点,掌握自动化测试的核心 在n8n中,节点(Node)是构建自动化工作流的基础单元。每一个节点都代表一个特定的操作或功能,通过将不同的节点连接起来,我们就能创造出强大的测试自动化流程。本章将深入讲解测试工程师必须掌握的几类核心节点,并通过实际测试场景展示如何…...