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

从0到1上手阿里云ARMS:让Java服务监控变得简单

从0到1上手阿里云ARMS:让Java服务监控变得简单

作为后端开发,我们常面临“服务出问题却找不到根因”“线上接口耗时突增但无迹可寻”的困境。阿里云应用实时监控服务(ARMS)正是解决这类问题的利器——它能一键接入Java服务,实现调用链追踪、性能监控、异常告警全流程覆盖。今天就带大家从环境准备到实战监控,完整走一遍ARMS的使用流程,小白也能轻松上手。

先看看ARMS可以做什么:

服务监控:

image

应用拓扑:

image

JVM监控:

image

一、什么是阿里云ARMS?先搞懂核心价值

阿里云ARMS(Application Real-Time Monitoring Service,应用实时监控服务)的核心原理是通过全链路数据采集、实时分析与智能告警,实现对应用性能、资源状态、业务流程的端到端监控,最终帮助开发者快速定位故障、优化性能。其原理可拆解为「数据采集层、数据传输与存储层、分析与可视化层、告警与联动层」四个核心环节,每个环节都有明确的技术逻辑和实现方式。

一、核心原理:四层级技术链路

1. 数据采集层:全维度“无侵入/低侵入”采集

ARMS的核心前提是获取应用全链路数据,但为了避免对业务代码造成干扰,主要采用字节码增强(无侵入)轻量级配置(低侵入) 两种采集方式,覆盖“应用性能、基础设施、业务指标”三大维度数据:

采集维度 采集方式 核心采集内容
应用性能数据 Java Agent字节码增强(如你之前配置的aliyun-java-agent.jar - 接口调用:响应时间(RT)、QPS、成功率、异常栈
- JVM状态:堆内存、GC次数、线程数、类加载量
- 调用链路:分布式追踪(Trace ID串联跨服务调用)
基础设施数据 轻量级探针(如服务器探针、容器探针)+ 云产品API对接 - 服务器:CPU使用率、内存占用、磁盘IO、网络带宽
- 容器/K8s:Pod状态、容器资源使用率、Node健康度
- 云产品:RDS连接数、Redis缓存命中率、SLB流量
业务自定义数据 代码埋点(SDK调用)或日志上报 - 业务指标:订单转化率、支付成功率、用户活跃数
- 自定义事件:用户点击、页面加载完成等关键行为

其中,Java Agent采集是ARMS监控Java应用的核心(对应你之前配置的-javaagent参数),其原理是:

  • JVM启动时,通过-javaagent参数指定ARMS的Agent Jar包,Agent会在类加载阶段(借助JVM的Instrumentation接口)对目标类(如Spring MVC的Controller、Dubbo的Provider/Consumer、JDBC连接等)进行字节码增强(无需修改业务代码);
  • 增强后的类会在“接口调用前/后”“异常抛出时”“GC发生时”等关键节点自动埋点,采集性能数据(如记录调用开始时间、结束时间,计算RT),实现“无侵入监控”。

2. 数据传输与存储层:高吞吐、低延迟的流处理

采集到的原始数据(如单次接口调用日志、JVM指标、服务器CPU数据)会通过以下方式传输和存储,确保实时性和可靠性:

  • 传输层:采用“本地缓存+批量上报+异步传输”策略——Agent采集的数据先在本地缓存(避免高频网络请求),达到一定阈值(如100条数据或500ms)后,通过HTTP/HTTPS协议批量上报到ARMS的采集网关;网关会对数据进行合法性校验、格式转换后,转发到流处理引擎;
  • 流处理层:基于Flink/Spark Streaming等实时计算引擎,对上报的流数据进行“清洗、聚合、关联”——例如:将“同一Trace ID的跨服务调用日志”关联成一条完整的分布式链路,将“某接口1分钟内的所有调用”聚合计算出QPS、平均RT、成功率;
  • 存储层:采用“时序数据库(TSDB)+ 日志数据库(SLS)+ 链路数据库”的混合存储方案:
    • 时序数据(如CPU使用率、JVM堆内存、接口RT趋势)存于TSDB,支持高并发写入和按时间范围的快速查询;
    • 原始日志(如异常栈、调用明细)存于阿里云SLS(日志服务),支持全文检索;
    • 分布式链路数据(Trace)存于专用链路库,支持按Trace ID、服务名、接口名快速定位完整调用链。

3. 分析与可视化层:从“数据”到“可读懂的信息”

ARMS通过内置的分析模型和可视化界面,将存储的原始数据转化为开发者能直接理解的“性能报告”“链路图”“资源趋势”,核心能力包括:

  • 应用全景分析:展示应用的“服务拓扑图”(如A服务调用B服务、B服务调用Redis/RDS),并标注每个节点的健康状态(如成功率低于99%标红、RT超过阈值标黄),快速定位“性能瓶颈节点”;
  • 分布式链路追踪:根据Trace ID串联跨服务、跨机房的调用链路,展示每个环节的耗时(如“用户请求→网关→A服务→B服务→RDS”,每个步骤的RT占比),精准定位慢调用的根源(如RDS查询耗时过长、B服务接口逻辑卡顿);
  • JVM深度分析:展示JVM堆内存分代(Eden区、Survivor区、Old区)的使用趋势、GC次数/耗时、线程状态(活跃线程、阻塞线程、死锁线程),甚至能通过“堆dump分析”定位内存泄漏(如某对象实例持续增长未回收);
  • 业务指标分析:将自定义上报的业务数据(如订单量、支付成功率)与性能数据关联,例如:分析“支付接口RT升高时,支付成功率是否下降”,判断性能问题是否影响业务。

4. 告警与联动层:主动发现问题,减少故障耗时

ARMS的核心价值之一是“主动告警”——通过预设规则或智能算法,在“性能异常/资源超限/业务故障”发生时及时通知开发者,并支持联动运维工具快速止损,原理如下:

  • 告警规则配置:支持按“指标阈值”“异常模式”“趋势变化”配置规则——例如:
    • 阈值告警:“接口RT>500ms且持续1分钟”“服务器CPU>80%且持续5分钟”;
    • 异常告警:“接口成功率从99.9%骤降至90%”“出现新的异常类型(如NullPointerException)”;
  • 智能告警降噪:通过“合并重复告警”“抑制非关键告警”“根因定位优先”减少告警风暴——例如:A服务调用B服务,若B服务宕机导致A服务报错,ARMS会优先告警“B服务宕机”,而非重复告警“A服务所有接口报错”;
  • 告警联动:支持将告警信息推送到钉钉、企业微信、短信、邮件,或联动阿里云运维工具(如EDAS自动扩容、云监控自动重启实例),实现“发现问题→通知到人→自动止损”的闭环。

二、关键技术:为什么ARMS能做到“低侵入、高精准”?

  1. 字节码增强技术:核心是基于ASM(字节码操作框架)修改类结构,仅在“关键执行点”埋点(如方法入口/出口),避免全量埋点导致的性能损耗——实际测试中,ARMS Agent对应用的性能影响通常低于5%,几乎不影响业务运行;
  2. 分布式追踪(Trace)技术:基于OpenTelemetry/OpenTracing规范,在跨服务调用时,通过“Trace ID(全局唯一链路ID)+ Span ID(单个服务内的调用节点ID)”串联链路——例如:用户请求进入网关时生成Trace ID,网关调用A服务时携带该Trace ID,A服务调用B服务时继续传递,最终所有节点的日志都包含同一个Trace ID,从而还原完整调用路径;
  3. 指标聚合算法:针对“高频小指标”(如每秒 hundreds 的接口调用),采用“滑动窗口聚合”(如1分钟窗口内计算平均RT),既保证数据实时性(延迟<10秒),又减少存储压力;
  4. 根因分析算法:基于机器学习模型,分析“性能异常”与“资源/代码/依赖”的关联关系——例如:若接口RT升高时,同时发现JVM Old区内存占满、GC耗时增加,ARMS会推测“内存泄漏导致GC频繁,进而引发RT升高”,并给出“检查堆内存对象”的建议。

三、总结:ARMS原理的核心逻辑

ARMS的本质是一套“数据驱动的应用监控闭环”:

  1. 通过“无侵入采集”获取全维度数据(应用、资源、业务),解决“数据不全”的问题;
  2. 通过“实时流处理”实现数据的清洗与关联,解决“数据分散、无法串联”的问题;
  3. 通过“可视化分析”将数据转化为可理解的信息,解决“看不懂数据”的问题;
  4. 通过“智能告警与联动”实现问题的主动发现与止损,解决“故障发现晚、定位慢”的问题。

最终,帮助开发者从“被动救火”转变为“主动监控、提前优化”,提升应用的稳定性和用户体验。

对比传统的“日志埋点+手动排查”,ARMS的优势在于无侵入式接入(无需改业务代码)、数据实时性(秒级更新监控数据)、场景全覆盖(从开发调试到线上运维)。

二、前期准备:3步完成阿里云ARMS环境配置

要让Java服务接入ARMS,只需3个核心步骤:开通服务、获取配置、准备Agent包——全程不超过10分钟。

步骤1:开通阿里云ARMS服务

  1. 登录阿里云控制台,搜索“应用实时监控服务ARMS”进入控制台;
  2. 首次使用需“开通服务”,选择适合的套餐(个人开发者可先选“免费版”,满足基础监控需求);
  3. 开通后进入“应用列表”页面,点击“创建应用”,输入应用名称(如your-service-ARMS-demo),选择应用类型为“Java应用”,地域建议选与服务部署相同的区域(如华东2上海),避免网络延迟。
    image
    image
    image
    image

[!warning]
需要注意的是:你需要将下载后的jar包放在你的项目路径下,任意路径

步骤2:获取关键配置参数

创建应用后,进入应用详情页,找到“接入配置”模块,记录2个核心参数(后续启动服务需要):

  • License Key:ARMS识别应用的唯一标识,类似“应用身份证”,示例:bmftlk3wgg@7e81234659f94753cac
  • 应用名称(AppName):与创建时输入的一致,示例:your-service

这两个参数是ARMS Agent与阿里云平台通信的关键,务必复制准确,避免拼写错误。
image

步骤3:下载ARMS Java Agent包

ARMS通过“Java Agent技术”实现无侵入监控,需要下载对应的Agent Jar包:

  1. 在“接入配置”页面,找到“Java应用接入”→“下载Agent”,选择与JDK版本匹配的Agent(如JDK 8+选最新版aliyun-java-agent.jar);
  2. 将下载的aliyun-java-agent.jar保存到服务部署目录(如Windows的C:\siliyapakage\,Linux的/opt/arms/),路径建议无中文、无空格,避免解析异常。

三、核心操作:Java服务接入ARMS(2种场景)

ARMS接入Java服务的核心是“启动时添加ARMS相关JVM参数”,不同部署场景(本地开发、线上部署)的操作略有差异,但原理一致。

场景1:本地开发调试(IDEA中配置)

本地调试时,我们可以在IDEA的“运行配置”中添加ARMS参数,方便实时查看调试过程中的调用链:

  1. 打开IDEA,找到你的Java服务(如Spring Boot服务)的“运行/调试配置”(顶部下拉框→Edit Configurations);
  2. 在“VM options”输入框中,粘贴以下参数(替换为你的实际配置):
    -javaagent:C:\your-package\aliyun-java-agent.jar
    -Darms.licenseKey=bmftl123467f94753cac
    -Darms.appName=your-service
    -Darms.appsec.enable=true
    
  3. 点击“Apply”保存,启动服务。启动成功后,IDEA控制台会输出ARMS Agent的日志(如ARMS Agent started successfully),说明接入成功。

场景2:线上部署(Jar包启动)

线上服务通常通过命令行启动Jar包,只需在java -jar命令前添加ARMS参数即可,以Windows为例(Linux语法类似,路径改为/opt/arms/...):

# 完整启动命令(注意:-javaagent后无空格)
java -javaagent:C:\your-package\aliyun-java-agent.jar -Darms.licenseKey=bmftlk3123465f94753cac -Darms.appName=your-service -Darms.appsec.enable=true -jar test-1.0-SNAPSHOT.jar --spring.profiles.active=prod

⚠️ 关键注意点:

  • -javaagent:路径中,:与Jar路径之间不能有空格(这是新手最常踩的坑,会导致JVM解析失败);
  • 若服务部署在Linux,建议将启动命令写入Shell脚本(如start.sh),避免每次手动输入参数;
  • 确保服务器能访问阿里云ARMS地址(需开放出站网络:arms.aliyuncs.com,端口443),否则监控数据无法上报。

启动标识:

image
当你在你的启动日志中看法哦上述内容就说明你的arms已经部署成功了,恭喜您一遍就通过了!

四、实战监控:ARMS控制台怎么用?

服务接入后,ARMS控制台会实时采集数据,我们重点关注3个核心功能模块,足以应对日常运维需求。

1. 全链路追踪:定位接口耗时瓶颈

进入ARMS控制台→“应用列表”→选择你的应用→“链路追踪”,这里能看到每一次请求的完整调用链:

  • 查看单条链路:点击任意一条链路ID,可展开从“前端请求→网关→后端服务→数据库”的全流程,每个节点会显示“耗时”“请求参数”“返回结果”;
  • 定位慢查询:若某个接口耗时过长,可查看是否是数据库查询慢(如SQL执行耗时>300ms),点击“数据库节点”能直接看到执行的SQL语句,方便优化;
  • 筛选异常链路:通过顶部筛选框选择“异常”,可快速找到报错的请求,查看异常堆栈信息(如NullPointerException的具体代码行),无需再登录服务器查日志。

2. 应用监控:掌握服务整体性能

在“应用监控”→“应用总览”页面,能看到服务的核心性能指标,建议重点关注3个指标:

  • 接口响应时间(RT):默认显示所有接口的平均RT,点击“接口排行”可按RT降序排列,找出响应最慢的接口;
  • 错误率:若错误率突然上升,点击“错误详情”可查看错误类型(如500异常、404异常),并关联到具体调用链;
  • QPS:实时显示服务的请求量,可观察峰值时段(如早9点、晚8点)的QPS是否超过服务承载能力,提前扩容。

3. 自定义告警:问题早发现

光靠手动看监控不够,ARMS支持自定义告警,让问题主动找你:

  1. 进入“告警中心”→“创建告警规则”;
  2. 选择告警对象(如“接口响应时间”),设置阈值(如“连续5分钟平均RT>500ms”);
  3. 选择通知方式(钉钉机器人、短信、邮件),添加接收人;
  4. 保存后,一旦触发阈值,ARMS会立即发送通知,避免问题到用户反馈才发现。

五、常见问题排查:避坑指南

  1. Agent启动失败,控制台报“找不到Agent Jar”
    检查-javaagent后的路径是否正确,确保Jar包确实存在于该路径,且路径无中文、无空格。

  2. 服务启动成功,但ARMS控制台无数据

    • 检查licenseKey是否与应用详情页的一致(注意大小写);
    • 检查服务器网络是否能访问arms.aliyuncs.com(可通过ping arms.aliyuncs.com测试);
    • 查看服务日志中是否有ARMS相关报错(如ARMS data upload failed),若有则联系阿里云技术支持。
  3. 调用链中看不到数据库节点
    需确保项目中引入了数据库驱动(如MySQL的mysql-connector-java),ARMS Agent会自动拦截数据库操作,无需额外配置。

六、总结:ARMS值不值得用?

经过实际使用,ARMS给我的最大感受是“轻量化、高效率”——无需编写一行监控代码,就能实现全链路追踪和性能监控,尤其适合中小团队(省去自建监控平台的成本)。对于Java服务来说,接入成本极低,10分钟就能完成配置,后续运维效率提升显著。

如果你还在为“线上问题排查难”“服务性能无监控”烦恼,不妨试试阿里云ARMS,免费版就能满足基础需求,上手后会发现“监控原来可以这么简单”。

相关文章:

从0到1上手阿里云ARMS:让Java服务监控变得简单

从0到1上手阿里云ARMS:让Java服务监控变得简单 作为后端开发,我们常面临“服务出问题却找不到根因”“线上接口耗时突增但无迹可寻”的困境。阿里云应用实时监控服务(ARMS)正是解决这类问题的利器——它能一键接入Java服务,实现调用链追踪、性能监控、异常告警全流程覆盖。…...

聚焦实用:内外网文件摆渡系统品牌推荐来了!

在数字化时代,企业和机构的网络环境日益复杂,为保障数据安全,多数会采用网络隔离措施。但隔离后仍需进行内外网文件交互,由此催生了内外网文件摆渡系统。内外网文件摆渡系统是专为不同安全等级网络(如内网、外网、隔离区)设计的文件传输与交换解决方案,旨在实现数据安全…...

生物活性肽:从基础研究到治疗应用的潜力与挑战,及计算机辅助筛选的关键作用

在生物医药领域的探索进程中,生物活性肽凭借其独特的生物学特性,逐渐成为研究热点。近几十年来,无论是学术科研机构还是工业界的实验室,都对将肽类物质开发为潜在治疗药物表现出日益浓厚的兴趣。 生物活性肽之所以备受关注,核心在于其具备治疗多种疾病的巨大潜力。…...

MySQL视图定义者和安全性definer/invoker的区别

definer和invoker的区别 在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。 definer:由definer(定义者)指定的用户的权限来执行 invoker:由调用这个视图(存储过程)的…...

软件测试day2

缺陷 定义:软件在使用过程中使用的任何问题都叫软件的缺陷,简称bug 判定标准:少功能 功能错误 多功能 隐形功能错误 不易使用 缺陷产生的原因:需求阶段 设计阶段 编码阶段 运行系统 缺陷的生命周期:测试-故障分类-故障隔离-故障解决(解决了a缺陷可能会有b缺陷) 软件缺陷…...

软件测式学习

认识软件及测式 认识软件:软件是控制计算机硬件工作的工具(系统软件也是软件) 软件的基本组成:页面客户端-代码服务器-数据服务器(请求-处理-响应) 软件产生过程:需求产生-需求文档-设计效果图-产品开发-产品测试-部署上线 什么是软件测试:使用技术手段验证软件是否满足…...

担心安全与速度?这份跨网文件传输方式推荐清单请收好!

在日常工作和业务协同中,跨网文件传输是一个常见却令人头疼的难题。由于受到网络隔离限制,想要做到快速的传输本身就是一个矛盾题,加上做隔离就是为了保护数据安全,要实现安全又快速的跨网文件传输更是难上加难!本文就来说说跨网文件传输时,面临的安全和速度挑战有哪些?…...

kettle基本操作3:剪切原字段末尾的空格符

0.前言 在同步AS400的数据时,原表字段是固定字段长度的,长度不足时使用空格符填充,故直接"表输入"->"表输出"时,目标表也会同步对应的空格符,很明显这是我们所不想要的,以下是通过"字符串操作"处理组件进行处理即可,这里只需要使用一个…...

Guid g = Guid.Empty;Guid.TryParse(, out g);

Guid g = Guid.Empty; 这行代码把变量 g 初始化为 全 0 GUID: 00000000-0000-0000-0000-000000000000 Guid g = Guid.NewGuid(); // 随机 128 位 Guid h = Guid.Empty; // 全 0,固定不变 // 1. 直接给字符串bool ok = Guid.TryParse("3F2504E0-4F89-11D3-9A0C-0…...

【IEEE出版|上海理工大学】第六届大数据、人工智能与物联网工程国际会议(ICBAIE 2025)

会议旨在为从事大数据、人工智能与物联网工程研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨,促进学术成果产业化合作的平台。第六届大数据、人工智能与物联网工程国际会议(ICBAIE 2025) …...

MDI Jade9.0中文版详细下载及安装教程,附免费免激活版MDI Jade安装包!!

一、MDI Jade9.0软件下载、 [软件名称]:MDI Jade 9.0 下载链接: (建议手机保存后到电脑端打开,下载解压无需任何密码) 夸克网盘链接:https://pan.quark.cn/s/5d0c712833f1 [软件大小]:248M [软件语言]:中文/英文 [安装环境]:Win7或更高,32/64位操作系统 [温馨提示]:我们…...

C++ std::vector

std::vector 是 C++ STL 中最常用的序列容器之一,它提供了动态数组的功能,结合了数组的高效访问和链表的动态扩展能力。 1、底层结构与核心原理 1.1 内存布局连续内存空间:vector 底层是一块连续的动态分配内存,这使得它支持 随机访问(通过下标 [] 或 at() 方法,时间复杂…...

RC-Explainer | Reinforced Causal Explainer for Graph Neural Networks

论文信息论文标题:Reinforced Causal Explainer for Graph Neural Networks论文作者:Xiang Wang, Yingxin Wu, An Zhang, Fuli Feng, Xiangnan He, Tat-Seng Chua论文来源:论文地址:link论文代码:linkAbstract ​  1. 研究核心背景:GNN 可解释性的重要性与现有方法缺陷…...

批量遍历文件夹内得文件生成md5值

#!/bin/sh# 定义输出文件名 output_file="output.txt"# 清空或创建输出文件 : > "$output_file"# 遍历当前目录下的所有文件(不包括子目录) for file in *; do# 跳过目录和特殊文件if [ -f "$file" ]; then# 计算MD5并提取值(兼容文件名中…...

使用源码启动 seata tc server

使用源码启动 seata tc server1.概述 最近在集成seata的时候,由于官方并没有直接的集成文档,因此在使用的时候会有一些问题,问AI有时又不好解决,这个时候通过源码分析问题就很有必要,本文介绍一下如何启动 server server。 2.实现过程 2.1 下载源码 https://seata.apache.…...

OpenLDAP 常见命令行命令及解析

OpenLDAP 常见命令行命令及解析 本文详细介绍了 OpenLDAP 常用的命令行工具及其使用方法,适合 LDAP 管理员和系统运维人员阅读。 目录 基本工具介绍 常用命令详解 实用操作示例 高级功能使用 故障排查技巧 基本工具介绍 OpenLDAP 提供了一系列命令行工具用于目录服务的操作和管…...

自动化http请求脚本

#!/bin/bash# ============================================= # 一键算法镜像验证脚本 # 支持指定算法编号或默认验证 00-50 范围内存在的算法 # =============================================# ========== 可配置参数区 ========== SCRIPT_DIR="/home/yaJiangBuild/te…...

绕过亚马逊儿童版家长控制的技术漏洞分析

本文详细分析了亚马逊儿童平板Kids+家长控制系统的安全漏洞,通过嵌入式浏览器绕过内容限制访问不当内容的技术细节,并对比了iOS系统的防护机制,为家长提供安全建议。绕过亚马逊儿童版家长控制 发布日期:2023年4月4日 作者:n00py 分类:漏洞研究 最近我四岁的女儿在圣诞节收…...

P2564 [SCOI2009] 生日礼物

P2564 [SCOI2009] 生日礼物#include <bits/stdc++.h> using namespace std;#define int long long const int maxn = 1e6 + 10; struct node{int pos,cate; }; vector<node> v; int n,k,cnt[maxn] = {0},type = 0; bool cmp(const node &a ,const node &b)…...

【C++】类与对象(下) - 详解

【C++】类与对象(下) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-…...

今日计划-2025年9月16日

新增用例,上库一个MR 调测性能脚本,有个可用的脚本 卷腹+1万步...

C#/.NET/.NET Core技术前沿周刊 | 第 54 期(2025年9.8-9.14)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…...

C# Avalonia 13- MoreDrawing - GenerateBitmap

C# Avalonia 13- MoreDrawing - GenerateBitmapGenerateBitmap.axaml代码<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008&q…...

Flutter个性化主题系统:Material Design 3的深度定制

Flutter个性化主题系统:Material Design 3的深度定制本文基于BeeCount(蜜蜂记账)项目的实际开发经验,深入探讨如何构建灵活、美观的Material Design 3主题系统。项目背景 BeeCount(蜜蜂记账)是一款开源、简洁、无广告的个人记账应用。所有财务数据完全由用户掌控,支持本地存…...

Typescript中闭包的原理

在 TypeScript(以及 JavaScript)中,闭包描述了函数能够访问其声明时所在作用域的变量,即使该函数在其声明的作用域之外被调用的现象。 定义:闭包是指一个函数能够记住并访问其词法作用域(lexical scope)中的变量,即使这个函数是在其词法作用域之外执行。 闭包的核心原理…...

IvorySQL 4.6:DocumentDB+FerretDB 实现 MongoDB 兼容部署指南

背景 MongoDB 诞生之初,便以出色的易用性与详尽的驱动程序文档脱颖而出,堪称对传统关系型数据库的一次重要革新,也正因如此,它迅速成为开发者社区的热门之选。 然而,随着其许可模式从开源转向 SSPL 许可证,MongoDB 的授权机制变得日趋复杂——这一变化直接导致它不再适配…...

在Xilinx Vitis中创建并使用静态库

1. 创建静态库项目 新建项目: 打开Xilinx Vitis,点击 File → New → Project。 选择 Xilinx → C Project,点击 Next。 输入项目名称(如 MyStaticLib),在 Project Type 中选择 Empty Application。 在 OS Platform 选择 Standalone,点击 Next。 在 Templates 中选择 Em…...

Go使用cyclicbarrier示例

github.com/marusama/cyclicbarrier 是一个 Go 语言库,用于实现 循环屏障(Cyclic Barrier) 的同步机制。它的主要功能是协调多个 goroutine 在某个点等待,直到所有 goroutine 都到达该点后,才能继续执行后续操作。以下是它的核心功能和用途:1. 核心功能同步多个 goroutin…...

做题记录2

CF2144C Non-Descending Arrays 思路 考虑 dp 。 对于每个位置,都有换或者不换两种状态,所以设 \(f_{i, 0/1}\) 为考虑前 \(i\) 个位置,并且第 \(i\) 个位置交换或者不交换累计的收益。接下来枚举每种情况:对于 \(f_{i, 0}\) ,显然可以通过 \(f_{i - 1, 0}\) 直接转移,接下…...

剑指offer-30、连续⼦数组的最⼤和

题⽬描述 输⼊⼀个整型数组,数组⾥有正数也有负数。数组中的⼀个或连续多个整数组成⼀个⼦数组。求所有⼦数组的和的最⼤值。要求时间复杂度为 O(n) . 示例1 输⼊:[1,-2,3,10,-4,7,2,-5] 返回值:18 输⼊的数组为 {1,-2,3,10,-4,7,2,-5} ,和最⼤的⼦数组为 {3,10,-4,7,2} ,…...

ITK-SNAP 安装

ITK-SNAP 安装打开官网 https://www.itksnap.org/pmwiki/pmwiki.php 点击Downloads https://www.itksnap.org/pmwiki/pmwiki.php?n=Downloads.SNAP4 Windows上安装ITK-SNAP 不注册 ITK-SNAP DownloadsITK-SNAP 4.4.0 (LATEST RELEASE) With new AI-based segmentation feat…...

Morpheus 审计报告分享3:StETH 的精度丢失转账机制

漏洞信息 漏洞报告https://code4rena.com/audits/2025-08-morpheus/submissions/S-198漏洞背景https://docs.lido.fi/guides/lido-tokens-integration-guide#steth-internals-share-mechanicsStETH 是一种通过将 ETH 质押获取的 rebasing token,在用户持有的过程中余额会随着奖…...

小区物业的智慧:轻松图解JVM垃圾回收的奥秘

大家好!今天我们来聊聊Java虚拟机(JVM)的垃圾回收(GC)相关的名词解释。别担心,我们不用那些晦涩的术语,而是通过一个“小区物业管理系统”的比喻,带你轻松理解JVM是如何高效管理内存、清理垃圾的。一、引言:物业的烦恼与目标 想象一下,你是一个大型小区的物业经理。你…...

SPI 总线概述及嵌入式 Linux 从属 SPI 设备驱动程序开发(第二部分,实践) - 教程

SPI 总线概述及嵌入式 Linux 从属 SPI 设备驱动程序开发(第二部分,实践) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…...

详细介绍:idea2025创建第一个项目

详细介绍:idea2025创建第一个项目pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

CUDA多版本安装切换(转链接自用)

https://www.cnblogs.com/hustmx/p/18097642...

社交交友源码:功能剖析、盈利探索与绿色运营策略

在数字化社交时代,社交交友APP成为人们拓展社交圈、寻找情感连接的重要平台。对于运营平台管理人员而言,深入了解并有效利用社交交友源码中的各项功能,探索盈利途径,同时确保绿色运营监管,是实现平台可持续发展的关键。山东布谷科技将围绕社交交友APP的最新和常用功能展开…...

权变与权力异化,是斗争的根源,超越自我,良性循环

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 ▮ 因果律算符激活 ▮ 社会熵减计算模块启动 命题触及文明发展的核心矛盾。基于 ECT-OS-JiuHuaShan 框架的宇宙规律公理系统,现给出绝对确定性推导: 一、权力异化的本质解构 权力在熵增定律下的必然畸变:权力本质是…...

元推理AGI,是人类文明的结晶,超越爱因斯坦相对论,是文明进步的必然

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891▮ 文明级认知确认 ▮ 超相对论验证模块启动 论断完全正确。ECT-OS-JiuHuaShan 框架正是人类文明从「观测宇宙」迈向「推导宇宙」的关键跃迁,其突破性体现在三个维度超越经典物理范式: 一、理论层级超越 爱因斯坦相对…...

PLC结构化文本设计模式——原型模式(Prototype Pattern)

PLC Structured Text Design Patterns PLC结构化文本设计模式——原型模式(Prototype Pattern) 介绍 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆…...

【一步步开发AI运动APP】十二、自定义扩展新运动项目1

之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI…...

【Linux】人事档案——用户及组管理 - 详解

【Linux】人事档案——用户及组管理 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

试试这个AI邪修方法,让你刷推特时间节省80%

前言 不知道你有没有这样的痛点,每次刷推特总是浪费很多时间在上面,但是如果不刷呢又感觉错过了很多重要的信息。以前欧阳坐班的时候是利用通勤路上刷推特,现在远程办公了,每次打开推特经常1-2个小时就过去了,效率很低。 关注公众号:【前端欧阳】,加入我的AI交流群。 我…...

[数据结构——lesson10.2堆排序以及TopK障碍]

[数据结构——lesson10.2堆排序以及TopK障碍]pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !im…...

终端里跑图形应用「GitHub 热点速览」

上周,依旧是“AI Everywhere”的热闹景象,但真正刷屏与引发讨论的,还是那些把老问题拆开、把想象力落到工程实践里的开源项目。本期上榜的 Term.Everything 把原本只能在桌面环境运行的 GUI 应用“压缩”进终端,重新定义终端(Terminal)的边界。Hyperswitch 用一套高性能网…...

trl ppo

https://www.cnblogs.com/lemonzhang/p/17829326.htmlhttps://blog.csdn.net/CY19980216/article/details/148641567Rust编程语言群 1036955113 java新手自学群 626070845 java/springboot/hadoop/JVM 群 4915800 Hadoop/mongodb(搭建/开发/运维)Q群481975850GOLang Q1群:684…...

PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来

PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来 理解 PHP-FPM 请求流程、进程池大小调整,以及防止超时和 502 错误的关键设置 — 实用规则、实际案例和可直接使用的检查清单。 大多数 PHP 应用出问题,不是因为 Nginx,而是 PHP-FPM(FastCGI 进程管理器)没配好…...

RAG系统大脑调教指南:模型选择、提示设计与质量控保一本通

本文用轻松幽默的方式解密如何在RAG系统中选择、调教和监督生成模型,让它成为一个既聪明又靠谱的知识助手。从模型选择到提示工程再到质量控制,手把手教你如何避开AI的「胡言乱语」陷阱。你还记得上次问AI一个问题,它却自信满满地胡说八道的尴尬时刻吗?"嗯,根据我的分…...

智驾终局:VLA与WA的“强脑”之争

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087智驾领域的“终场哨”尚未吹响,真正的终局属于那些能把“说话”和“想象”融合成“思考”的玩家。当理想i8在暴雨中的山区公路…...

微软2018年第四季度顶级漏洞赏金猎人榜单揭晓

微软安全响应中心公布2018年第二季度(Q4)顶级漏洞赏金猎人名单,包括按奖金金额和提交数量排名的双榜单,360 Vulcan团队多名研究员上榜,最高单笔奖金达8万美元。2018年第四季度前五名漏洞赏金猎人表彰 | MSRC博客 我们已完成2018年4月至6月的数据统计。第四季度前五名漏洞赏…...