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

Cubic:无侵入Java应用监控与Arthas动态诊断平台实战

1. 项目概述Cubic一个无侵入的应用级问题定位利器在Java应用开发和运维的日常里最让人头疼的莫过于线上问题定位。日志没打全、监控指标不直观、想动态查看线程状态又不敢轻易重启服务……这些问题相信每个开发者都遇到过。传统的解决方案要么侵入性强需要在代码里埋点要么功能分散需要在日志系统、APM工具、命令行工具之间来回切换效率低下。今天要聊的Cubic就是为解决这些痛点而生的一站式问题定位平台。它的核心思路非常清晰通过一个轻量级的Java Agent无侵入地接入你的应用然后在一个统一的Web界面上为你提供从基础监控到深度诊断的全套能力。简单来说你可以把Cubic理解为一个“增强版的、带Web UI的Arthas集群管理平台”。它不仅仅集成了Arthas强大的动态诊断命令还在此基础上提供了应用实例管理、JVM监控、线程池监控、历史线程栈追踪等更体系化的功能。无论你的应用是部署在传统的物理机、云服务器ECS还是Docker容器中Cubic的Agent都能无缝接入。对于开发者和运维人员而言这意味着无需修改任何一行业务代码就能获得强大的线上诊断能力真正实现了“开箱即用问题立现”。2. 核心架构与设计思路拆解要理解Cubic为什么好用得先弄明白它是怎么工作的。整个系统采用了经典的分层架构清晰地将数据采集、传输、处理和展示分离开这保证了系统的稳定性和可扩展性。2.1 整体架构Agent Proxy UI 的三层模型Cubic的架构可以清晰地划分为三个部分它们各司其职通过高效的网络通信协同工作。Cubic-Agent数据采集端这是整个系统的“触角”。它是一个标准的Java Agent通过在目标JVM启动时添加-javaagent参数来植入。它的工作是无侵入地收集所在JVM的各种运行时数据包括但不限于基础信息服务器CPU、内存、磁盘JVM版本、启动参数、系统属性。性能指标GC次数与时间、堆内存各分区使用情况、线程状态统计。动态数据实时线程堆栈、线程池的运行状态核心线程数、活跃线程数、队列大小等。诊断通道集成Arthas为动态命令下发提供执行环境。Agent的设计精髓在于“静默”和“轻量”。它通过JVMTIJVM Tool Interface接口与JVM交互对应用性能的影响极小通常被称为“旁路监控”。Cubic-Proxy代理与数据处理层这是系统的“中枢神经”。它作为一个独立的后端服务Spring Boot应用部署。主要承担两个核心职责数据汇聚与转发接收来自所有Agent上报的监控数据进行初步处理和聚合然后提供给UI层。同时它也负责将UI层下发的Arthas命令转发给指定的Agent。通信桥梁内部又细分为两个模块cubic-proxy通过gRPC这种高性能的RPC框架与Agent进行长连接通信保证数据传输的效率和可靠性。cubic-proxy-websocket通过WebSocket协议与前端UI保持双向通信实现监控数据的实时推送和命令的实时交互比如在网页上看到实时的线程栈刷新。Cubic-UI数据展示与交互层这是系统的“驾驶舱”。一个基于Vue.js构建的单页面应用SPA为用户提供直观的可视化界面。所有采集到的数据在这里以图表、列表、拓扑图等形式展现用户也可以通过这个界面直接向任意一个应用实例下发Arthas命令就像在本地使用命令行一样方便。为什么选择这样的架构这种分离式架构有几个明显优势首先Agent足够轻量只负责采集逻辑简单稳定其次Proxy层可以水平扩展以应对海量实例的监控数据最后UI与后端分离便于独立升级和定制化开发。这种设计非常符合现代云原生应用的监控理念。2.2 关键技术选型背后的考量Cubic在技术栈上的选择也体现了其追求高效、稳定和易用的目标。通信层gRPC NettyAgent与Proxy之间采用gRPC。gRPC基于HTTP/2和ProtoBuf天生具备多路复用、头部压缩等特性非常适合用于大量、频繁的监控数据上报场景能显著降低网络开销和延迟。而Netty作为高性能的网络通信框架为WebSocket服务和gRPC的底层传输提供了强力支撑保障了高并发下的连接稳定。前端Vue.js Xterm.jsVue.js的响应式和组件化开发能快速构建复杂且交互丰富的管理界面。Xterm.js则是一个功能强大的终端前端库它让在浏览器中实现一个媲美本地终端的Arthas命令操作界面成为可能这是Cubic体验上的一个亮点。认证Spring Security JWT对于企业级工具安全是底线。Cubic采用成熟的Spring Security框架结合无状态的JWTJSON Web Token进行接口认证。这样既保证了安全性又避免了服务端存储Session带来的扩展性问题。这种技术组合使得Cubic在保持功能强大的同时也拥有了良好的性能和可维护性。3. 核心功能深度解析与实操价值Cubic的功能列表看起来不少但我们可以将其归纳为四大核心能力实例监控、动态诊断、线程分析和依赖洞察。每一块都切中了线上运维的痛点。3.1 实例中心与全方位基础监控这是Cubic的“总览大屏”。一旦Agent接入成功对应的应用实例就会出现在这个列表里。这里展示的不仅仅是“有一个服务在线”而是包含了丰富的状态信息实例心跳直观显示Agent与Proxy的连接是否健康这是所有监控功能的基石。基础信息点击具体实例你可以立刻看到该JVM进程的详细信息如PID、主类、所在主机IP以及通过java -version和jinfo才能获取的全部JVM启动参数与系统属性。在排查“为什么测试环境和生产环境行为不一致”这类问题时这里的信息对比能帮你快速定位是否是参数差异导致。服务器/JVM监控以图表形式展示CPU使用率、系统负载、内存使用、磁盘IO等主机指标以及JVM堆内存Eden, Survivor, Old Gen变化、GC次数与耗时。这些指标虽然常见但Cubic将其从各个分散的命令如top,jstat -gc中整合到了一个界面实现了监控的统一化。3.2 动态Arthas命令集线上调试的“瑞士军刀”这是Cubic最具威力的功能它完整集成了Arthas的能力并赋予了Web化的操作界面。你无需再SSH登录服务器也无需在复杂的终端里敲命令。如何使用在实例列表中找到目标应用进入其Arthas终端界面。此时你可以输入任何Arthas支持的命令例如dashboard实时仪表盘综合查看线程、内存、GC信息。thread -n 3查看当前最忙的3个线程的堆栈。watch com.example.service.UserService getUserId {params, returnObj, throwExp}动态观测某个方法的入参、出参和异常。jad com.example.controller.HelloController反编译指定类的源码。实操心得与注意事项注意能力越大责任越大。动态诊断命令虽然强大但某些命令如频繁执行的watch、trace会对应用性能产生一定开销ognl命令甚至可以直接执行代码。因此强烈建议仅在预发或问题排查期间使用并避免在生产环境核心链路上长时间执行高开销命令。Cubic的Web化降低了使用门槛但也更需要使用者清楚每个命令的潜在影响。3.3 线程栈与线程池监控破解“卡顿”与“阻塞”难题线程问题是线上高并发服务的常见病Cubic对此提供了两种维度的分析工具。实时线程栈此功能可以瞬间抓取目标JVM内所有线程的当前堆栈信息。界面通常会以火焰图或树状列表的形式展示让你一眼就能看出哪些线程正在执行什么方法哪些线程处于BLOCKED或WAITING状态。这对于排查死锁、线程池耗尽、或某个慢方法拖累整个线程池的场景极其有效。历史线程栈分钟级这是Cubic的一个特色功能。Agent会以固定的时间间隔如每分钟自动抓取一次线程快照并上报。当线上发生问题后例如CPU突然飙高你可以回到历史时间点查看当时的线程状态进行“事后复盘”。这解决了传统排查中“问题发生时没抓到现场”的困境。线程池监控很多性能问题源于线程池配置不当。Cubic能够监控应用内常见的线程池如Tomcat的ThreadPoolExecutor、Dubbo的业务线程池等展示其核心参数核心线程数、最大线程数和实时状态活跃线程数、队列大小、历史最大线程数等。通过这个功能你可以验证线程池配置是否生效或者在流量洪峰时观察队列堆积情况为容量规划和参数调优提供直接依据。3.4 依赖包检测防范“依赖地狱”Java应用的依赖冲突是个隐形杀手。Cubic可以扫描并列出应用加载的所有JAR包及其版本。当出现ClassNotFoundException、NoSuchMethodError等诡异错误时可以首先来这里检查是否有多个不同版本的相同依赖。虽然它不能自动解决冲突但提供了清晰的“依赖清单”是排查这类问题的第一步。4. 从零开始部署与接入全流程实操了解了Cubic的能力接下来我们看看如何把它用起来。整个过程可以分为服务端部署和客户端接入两部分。4.1 服务端Cubic-Proxy UI部署Cubic的服务端部署非常简洁它被打包成了一个可独立运行的Spring Boot Jar包。步骤一环境准备数据库准备一个MySQL 5.5数据库实例。Java确保服务器上安装了JDK 1.8或以上版本。获取发行版从Gitee或GitHub的Release页面下载最新版本的agent-proxy-dist.zip包。步骤二初始化数据库解压下载的ZIP包在resources/db目录下找到init.sql文件。在你的MySQL数据库中执行这个SQL脚本创建Cubic所需的表结构。步骤三修改配置并启动进入解压后的目录编辑application.yml文件主要配置数据库连接信息spring: datasource: url: jdbc:mysql://你的数据库IP:端口/cubic_db?useUnicodetruecharacterEncodingutf8 username: 你的用户名 password: 你的密码 driver-class-name: com.mysql.cj.jdbc.Driver启动服务。在Linux下直接运行启动脚本./start.sh。在Windows下可以使用java -jar cubic-proxy.jar命令启动。启动成功后访问http://服务器IP:6080默认端口6080即可看到登录界面。默认账号密码通常是admin/admin首次登录后请务必修改。4.2 客户端Java应用接入Agent接入Agent是无侵入的只需要在目标Java应用的启动命令中增加一个参数。步骤一获取Agent包同样从发布页下载agent-dist.zip解压后你会得到cubic-agent.jar和相关的配置文件、依赖包。步骤二配置启动参数假设你的应用原启动命令是java -jar my-awesome-app.jar接入Cubic Agent后命令变为java -javaagent:/绝对路径/cubic-agent.jar -Dcubic.app.name你的应用名 -Dcubic.proxy.addr代理服务器IP:端口 -jar my-awesome-app.jar关键参数解释-javaagent: 指定Agent Jar包的路径。-Dcubic.app.name:必填。为这个应用实例定义一个名称用于在Cubic UI上标识。-Dcubic.proxy.addr:必填。指向你部署的Cubic-Proxy服务器的地址和端口默认是127.0.0.1:8888需根据实际修改。步骤三启动应用并验证以新的命令启动应用。如果一切正常应用日志中会出现Cubic Agent连接成功的提示。稍等片刻约30秒心跳周期刷新Cubic UI的实例中心页面你应该能看到刚刚命名的应用实例上线了。实操心得关于JAVA_HOME的坑这是接入过程中最常见的问题。Cubic Agent需要依赖$JAVA_HOME/lib/tools.jar来执行一些JVM attach操作。如果启动时报错java.lang.NoClassDefFoundError: com/sun/tools/attach/VirtualMachine请按以下步骤排查在运行应用的机器上执行echo $JAVA_HOME确认环境变量指向的是JDK目录而不是JRE目录。JRE不包含tools.jar。如果环境变量正确但问题依旧可以尝试在应用启动参数中显式添加classpath-Xbootclasspath/a:$JAVA_HOME/lib/tools.jar。对于Docker容器需要确保容器镜像内安装的是JDK并且JAVA_HOME环境变量在容器内已正确设置。5. 常见问题排查与进阶技巧实录即使按照文档操作在实际部署和使用中也可能遇到一些问题。这里记录一些典型场景和解决思路。5.1 实例列表看不到应用这是最让人着急的情况。请按照以下链条排查检查Agent参数确认启动命令中的-Dcubic.proxy.addr地址和端口是否正确无误网络是否可达可以尝试在应用服务器上telnet proxy_ip proxy_port。检查Proxy日志查看Cubic-Proxy服务的日志文件看是否有来自目标IP的连接请求或错误信息。日志通常位于logs目录下。检查应用日志查看目标应用自身的启动日志搜索“cubic”关键词看Agent是否加载成功以及连接Proxy时的具体报错。检查防火墙确保应用服务器和Proxy服务器之间的网络端口默认8888是开放的。5.2 Arthas命令执行无反应或超时在Web终端里输入命令后卡住可能有以下原因网络延迟或抖动WebSocket连接不稳定。检查网络状况或尝试刷新页面重连。目标JVM进程繁忙如果目标应用CPU使用率极高可能无法及时响应Arthas的命令请求。可以尝试先执行一些轻量级命令如help测试。命令本身执行慢像trace一个非常深层或调用量巨大的方法命令本身就需要较长时间执行和返回结果。请耐心等待。权限问题某些Arthas命令如dump需要写入临时文件确保目标JVM进程有对应目录的写权限。5.3 监控数据刷新延迟或不准确监控数据尤其是实时线程栈依赖于Agent定时采集和上报。理解心跳与采集周期Agent默认以一定频率如30秒发送心跳并上报基础监控数据。线程栈抓取可能间隔更长如1分钟。这不是实时流会有短暂延迟。核对服务器时间确保Proxy服务器和所有应用服务器的时间时区同步。如果时间不一致会导致历史数据的时间轴错乱。关注Agent性能影响虽然Agent设计为轻量级但在极端情况下如每秒抓取一次完整线程栈可能会对高负载应用产生额外压力。请根据实际情况调整采集频率如果支持配置。5.4 进阶使用技巧为不同环境隔离在生产环境部署时可以通过-Dcubic.app.name参数加入环境标识如-Dcubic.app.nameprod-payment-service。这样在UI上可以清晰地区分不同环境的实例。关注线程池监控对于使用线程池的异步任务或RPC框架将线程池实例注册到可管理状态例如使用Spring的ThreadPoolTaskExecutor并暴露为BeanCubic有更大机会自动发现和监控它。这是优化系统并发能力的宝贵数据来源。结合日志排查当通过Arthas的trace或watch命令定位到慢方法或异常参数后不要忘了去查询该时间点的应用日志往往能获得更完整的上下文信息形成“监控指标 - 线程栈 - 动态参数 - 业务日志”的完整排查闭环。Cubic作为一个开源项目将强大的JVM诊断能力进行了产品化封装极大地提升了开发人员排查线上问题的效率。它的无侵入特性使得接入成本几乎为零而其集成的功能又覆盖了从宏观监控到微观调试的多个层面。当然目前项目在前端体验和一些高级功能上仍有完善空间但这并不妨碍它成为一个在关键时刻能派上大用场的利器。对于中小团队或个人开发者而言部署一套Cubic相当于为你的Java应用配备了一位随时待命的“线上诊断专家”。

相关文章:

Cubic:无侵入Java应用监控与Arthas动态诊断平台实战

1. 项目概述:Cubic,一个无侵入的应用级问题定位利器在Java应用开发和运维的日常里,最让人头疼的莫过于线上问题定位。日志没打全、监控指标不直观、想动态查看线程状态又不敢轻易重启服务……这些问题相信每个开发者都遇到过。传统的解决方案…...

使用 Rsync 实现服务器数据同步

在当今数据驱动的时代,服务器数据同步是保障业务连续性和数据安全的关键任务。Rsync作为一款高效、灵活的文件同步工具,凭借其增量传输和低资源消耗的特性,成为运维人员的首选方案。无论是跨服务器备份、负载均衡还是灾备恢复,Rsy…...

微信聊天记录完整导出终极指南:3步实现永久保存与智能管理

微信聊天记录完整导出终极指南:3步实现永久保存与智能管理 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter WeChatExporter是一款专为iOS用户设计的开源工具&a…...

从CVE-2023-XXXX到2026零容忍机制:17个真实工业级漏洞如何被新规范提前封堵(含NASA/JPL内部审计案例节选)

更多请点击: https://intelliparadigm.com 第一章:2026零容忍机制的演进逻辑与工业级合规全景 2026零容忍机制并非突发性政策产物,而是对近十年全球关键基础设施安全事件、AI模型滥用案例及跨国数据治理冲突的系统性响应。其核心逻辑从“事后…...

阿里面试官问:MCP 到底值不值得做

16 道 Agent 工程高频判断题,从 workflow 到上线 上一课解决了安全约束该落在哪一层。这课进入工具接入的标准化问题:MCP 到底解决什么问题?什么时候自己写 MCP Server 值得,什么时候直接 function calling 更划算。 一、面试现…...

三步掌握微信聊天记录永久保存:告别数据丢失的终极指南

三步掌握微信聊天记录永久保存:告别数据丢失的终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…...

企业级VSCode AI配置规范(ISO/IEC 27001合规版):审计日志、模型水印、离线缓存策略全披露

更多请点击: https://intelliparadigm.com 第一章:企业级VSCode AI配置规范概览 在大型研发团队中,统一、可审计、安全可控的 VS Code AI 开发环境已成为 DevOps 流程标准化的关键环节。企业级配置不仅关注功能启用,更强调策略驱…...

基于Qwen3-0.6B-FP8的数据库智能助手:自然语言转SQL实战

基于Qwen3-0.6B-FP8的数据库智能助手:自然语言转SQL实战 你有没有遇到过这样的情况?业务同事跑过来问:“帮我查一下上个月哪个产品卖得最好?” 你心里咯噔一下,又要打开数据库工具,回忆表结构,…...

IndexTTS2 V23镜像效果展示:多情感语音生成案例,听感真实自然

IndexTTS2 V23镜像效果展示:多情感语音生成案例,听感真实自然 1. 引言:语音合成的情感革命 想象一下,当你听到一段AI生成的语音时,能感受到说话者的喜怒哀乐——这不是科幻电影,而是IndexTTS2 V23版本带来…...

3分钟掌握Illustrator智能填充:告别手动排列,拥抱自动化设计

3分钟掌握Illustrator智能填充:告别手动排列,拥抱自动化设计 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾在Adobe Illustrator中花费数小时手动排…...

DDrawCompat终极指南:让Windows 11上的经典老游戏重获新生

DDrawCompat终极指南:让Windows 11上的经典老游戏重获新生 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DD…...

FLUX.1-Krea-Extracted-LoRA惊艳效果展示:真实感商业摄影作品集

FLUX.1-Krea-Extracted-LoRA惊艳效果展示:真实感商业摄影作品集 1. 专业级真实感图像生成 FLUX.1-Krea-Extracted-LoRA 是一款专为商业摄影需求设计的AI图像生成模型,它通过独特的LoRA风格权重注入技术,显著提升了生成图像的写实程度。这个…...

如何快速掌握图表数据提取:科研工作者的完整指南

如何快速掌握图表数据提取:科研工作者的完整指南 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 还在为从论文图表中手动提…...

拒绝碎片化学习!深度拆解网安底层原理,附完整进阶路线,零基础自学必备宝典

拒绝碎片化学习!深度拆解网安底层原理,附完整进阶路线,零基础自学必备宝典 随着数字化转型的全面推进,网络安全已从“可选配”变为“必需品”,小到个人账号安全,大到国家关键信息基础设施防护,…...

转行网络安全后幡然醒悟:选对赛道,远比盲目努力更重要

转行网络安全后幡然醒悟:选对赛道,远比盲目努力更重要 你是不是也这样?每天重复同样的工作,拿着不变的低收入,看不到上升空间;想转行,又怕找不到合适的工作,继续干吧,又…...

机器学习中随机性的核心作用与实现方法

1. 随机性在机器学习中的核心价值我第一次意识到随机性的重要性是在调试神经网络时。当模型在相同数据集上反复训练却得到截然不同的结果时,这种看似"不稳定"的现象反而揭示了机器学习的一个本质特征——好的随机性设计不是bug,而是feature。在…...

YOLO11涨点优化:卷积优化 | 引入AKConv (Alternating Kernel Convolution),针对不规则形状目标实现降维打击

导语 在计算机视觉领域,每一年技术迭代都像一次“军备竞赛”——从YOLOv8到YOLO11,再到YOLO26,模型们在精度、速度和参数量之间反复博弈。然而,一个困扰检测任务的难题始终横亘在前:不规则形状目标如何被精准感知? 无论是自动驾驶场景中姿态多变的行人、农业场景中形态各…...

nli-MiniLM2-L6-H768代码实例:调用API实现自动化批量分类任务

nli-MiniLM2-L6-H768代码实例:调用API实现自动化批量分类任务 1. 工具介绍 nli-MiniLM2-L6-H768是一款基于cross-encoder/nli-MiniLM2-L6-H768轻量级NLI模型开发的本地零样本文本分类工具。它最大的特点是无需任何微调训练,只需输入文本和自定义标签&a…...

Wan2.2-I2V-A14B镜像优化特性:GPU算力专属调度策略技术白皮书

Wan2.2-I2V-A14B镜像优化特性:GPU算力专属调度策略技术白皮书 1. 镜像概述与核心价值 Wan2.2-I2V-A14B私有部署镜像是一款专为文生视频任务优化的高性能解决方案,针对RTX 4090D 24GB显存显卡进行了深度适配。本镜像开箱即用,内置完整运行环…...

Fish Speech-1.5镜像部署标准化:Docker Compose一键启停最佳实践

Fish Speech-1.5镜像部署标准化:Docker Compose一键启停最佳实践 重要提示:本文介绍的部署方案基于个人学习研究用途,严禁用于商业用途或违反法律法规的活动。 1. 项目概述与核心价值 Fish Speech V1.5 是一个功能强大的文本转语音模型&…...

如何在Windows上为苹果触控板实现原生级精准触控体验?

如何在Windows上为苹果触控板实现原生级精准触控体验? 【免费下载链接】mac-precision-touchpad Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad 项目地址: https://gitcode.com/gh_mirrors/ma/mac-precision-touchpad …...

惊艳写实动漫角色展示:Real-Anime-Z 高精度人物肖像生成作品集

惊艳写实动漫角色展示:Real-Anime-Z 高精度人物肖像生成作品集 1. 开篇:当AI遇见二次元艺术 最近在AI绘画圈子里,Real-Anime-Z模型的热度居高不下。这个专门针对动漫角色优化的生成模型,在写实风格表现上达到了令人惊叹的水准。…...

千问 LeetCode 1866.恰有 K 根木棍可以看到的排列数目 C实现

这是一道经典的组合数学问题,考察的是第一类斯特林数。题目要求计算将 n 根长度互不相同的木棍排列,使得从左侧恰好能看到 k 根木棍的方案数。🧠 核心思路我们使用动态规划来解决。定义 dp[i][j] 为使用长度为 1 到 i 的 i 根木棍&#xff0c…...

千问 LeetCode 1866.恰有 K 根木棍可以看到的排列数目 public int rearrangeSticks(int n, int k)

这道题是经典的组合数学问题,考察的是第一类斯特林数。题目要求计算将 n 根木棍排列,使得从左侧恰好能看到 k 根木棍的方案数。这是一个非常经典的动态规划问题,其递推关系正是第一类斯特林数的定义。🧠 核心思路解析1. 什么是“能…...

千问 LeetCode 1862题的Python代码怎么写?

这是 LeetCode 1862 题“向下取整数对和”的 Python 代码实现。这道题如果直接双重循环暴力求解会超时,因此我们采用“前缀和 倍数枚举”的策略,将时间复杂度优化到 O(M log M),其中 M 是数组中的最大值。🐍 Python 代码实现clas…...

Qianfan-OCR效果展示:手写体+印刷体混合文档的端到端结构化输出

Qianfan-OCR效果展示:手写体印刷体混合文档的端到端结构化输出 1. 工具概览 Qianfan-OCR是基于百度千帆InternVL架构开发的单卡GPU专属文档解析工具。它解决了传统OCR在处理复杂文档时的三大痛点: 混合内容识别难:传统工具无法同时处理印刷…...

如何永久保存微信聊天记录:开源工具WeChatMsg完整指南

如何永久保存微信聊天记录:开源工具WeChatMsg完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

志特新材2025年归母净利润同比增长122%,2026年首季再迎“开门红”

4月24日晚间,志特新材(300986.SZ)同步披露《2025年年度报告》及《2026年第一季度报告》。公告显示,公司在2025年实现营收与盈利能力的显著提升,进入2026年一季度,经营现金流的稳健表现与归母净利润的实质增…...

如何用罗技鼠标宏实现PUBG零后坐力射击?终极配置指南

如何用罗技鼠标宏实现PUBG零后坐力射击?终极配置指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的…...

煌上煌2025年净利润大增102.32% 2026年一季度开局稳健

4月24日晚间,江西煌上煌集团食品股份有限公司(002695.SZ)同步披露《2025年年度报告》及《2026年第一季度报告》。公告显示,2025年公司实现营业收入16.84亿元,归属于上市公司股东的净利润8,159.67万元,同比实…...