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

Flowable7.x学习笔记(十四)查看部署流程Bpmn2.0-xml

前言

        Flowable 在其前端 Modeler 中,采用 BPMN 2.0 标准将流程中的任务、网关、事件等元素以 XML 形式存储,并附带图形互换(Diagram Interchange,DI)数据,以保证在前端与后端都能精准重建可视化流程图。

        生成的 .bpmn.bpmn20.xml 文件会随业务归档(BAR)一起部署到 Flowable 引擎,并被存储在数据库中。当部署完成后,流程引擎会读取并解析这些 XML 文件,构建内部执行模型,用于后续实例创建与任务调度。本文将采用后端API的方式将XML查询出来在前端界面展示。

一、XML展示的作用

① 可视化编辑

        由于 XML 文件包含 DI 信息,可借助 bpmn-js、Flowable Modeler 或其他 BPMN 渲染库,将其加载至前端,实时重现可拖拽的流程图界面,并支持恢复图元位置、节点属性等,方便在线修订。

② 审计与对比

        流程定义以文本 XML 形式存储后,可轻松纳入 Git 等版本控制工具,通过 diffblame 等功能直观查看变更记录,并支持快速回退、历史审计与协同评审。

二、XML展示的必要性

① 协作与共享

        导出后的 XML 文件可在设计、开发与运维团队之间共享,确保各方在同一流程版本上评审与协作,减少沟通成本与误解。

② 自动化测试与部署

        CI/CD 流水线可自动拉取并部署导出的 XML,触发集成测试和端到端验证,保证流程逻辑在不同环境中的一致性与可重复性。

③ 合规与审计

        在金融、医疗等高合规行业,需将流程定义以 XML 形式存档,供审计机构或内控团队查验。导出功能可生成可追溯的流程快照,证明流程设计未经篡改。

④ 平台互操作

        标准化的 BPMN 2.0 XML 文件能与 Camunda、jBPM 等第三方流程引擎互操作,便于跨平台迁移与系统整合,提升整体架构的灵活性。

三、后端完成查询功能

① 明确http请求参数

此处我们只需要部署的流程的定义ID,具体信息都由ID查询出来,保证数据的确定性

package com.ceair.entity.request;import lombok.Data;import java.io.Serial;
import java.io.Serializable;/*** @author wangbaohai* @ClassName QueryImageOrXmlReq* @description: 查询部署流程定义的图片或xml文件请求对象* @date 2025年04月22日* @version: 1.0.0*/
@Data
public class QueryImageOrXmlReq implements Serializable {@Serialprivate static final long serialVersionUID = 1L;/*** 流程定义ID*/private String processDefinitionId;}

② 创建服务接口

/*** 根据查询条件生成并返回查询的XML字符串* 此方法用于将查询条件封装对象转换为XML格式的字符串,以便进行后续的查询操作* 它接受一个包含查询条件的请求对象,可以是图像信息或XML格式的查询条件** @param queryImageOrXmlReq 包含查询条件的请求对象,可以是图像信息或XML格式的查询条件* @return 返回根据查询条件生成的XML字符串*/
String queryXML(QueryImageOrXmlReq queryImageOrXmlReq);

③ 实现服务接口

        此处是实现导出的核心部署,大致的思路是:接收一个包含 流程定义 ID 的请求对象,校验参数无误后,从 Flowable 的 RepositoryService 中读取对应流程定义的 XML 资源,最后将 XML 内容先进行 Base64 编码,再做 URL 安全转码返回给调用方。在整个过程中,通过详尽的日志和多层异常捕获,保证了调用链的可观察性与健壮性。

1)安全与健壮

参数校验 + 多层异常捕获,避免非法调用和运行时崩溃。

2)兼容前端

Base64 + URL 编码后的字符串,可直接在浏览器端 decodeURIComponent(atob(...)) 复原,适配多数 JS 环境。

3)可扩展

若 XML 内容较大,可考虑流式分块返回或引入压缩(如 GZIP)以降低网络带宽;对于高并发场景,可将 XML 缓存到 Redis 等中间件,减少对 Flowable 引擎的频繁访问。

具体代码如下:

/*** 根据流程定义ID查询流程XML信息** @param queryImageOrXmlReq 查询请求对象,包含流程定义ID* @return 返回流程XML的Base64编码字符串* @throws IllegalArgumentException 如果请求对象或流程定义ID为空* @throws BusinessException        如果流程定义不存在或读取资源时发生业务异常*/
@Override
public String queryXML(QueryImageOrXmlReq queryImageOrXmlReq) {// 参数校验:确保请求对象不为空if (queryImageOrXmlReq == null) {log.error("获取流程XML失败,原因:请求对象不能为空");throw new IllegalArgumentException("获取流程XML失败,原因:请求对象不能为空");}String processDefinitionId = queryImageOrXmlReq.getProcessDefinitionId();// 参数校验:确保流程定义ID不为空或空字符串if (processDefinitionId == null || processDefinitionId.trim().isEmpty()) {log.error("获取流程XML失败,原因:流程定义ID不能为空或空字符串");throw new IllegalArgumentException("获取流程XML失败,原因:流程定义ID不能为空或空字符串");}// 根据流程定义ID查询流程定义ActReProcdef actReProcdef = getById(processDefinitionId);if (actReProcdef == null) {log.error("获取流程XML失败,原因:流程定义不存在,流程定义ID:{}", processDefinitionId);throw new BusinessException("获取流程XML失败,原因:流程定义不存在,流程定义ID:" + processDefinitionId);}// 获取流程图资源流try (InputStream xmlStream = repositoryService.getResourceAsStream(actReProcdef.getDeploymentId(),actReProcdef.getResourceName())) {if (xmlStream == null) {log.error("获取流程XML失败,原因:资源流为空,流程定义ID:{}", processDefinitionId);throw new BusinessException("获取流程XML失败,原因:资源流为空,流程定义ID:" + processDefinitionId);}// 将资源流内容读取为字节数组并进行Base64编码ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = xmlStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}// 使用 UrlEncoder 进行编码return URLEncoder.encode(Base64.getEncoder().encodeToString(outputStream.toByteArray()),StandardCharsets.UTF_8);} catch (IOException e) {// 捕获IO异常并记录日志log.error("获取流程XML失败,原因:IO异常,流程定义ID:{}", processDefinitionId, e);throw new BusinessException("获取流程XML失败,原因:IO异常", e);} catch (Exception e) {// 捕获其他未知异常并记录日志log.error("获取流程XML失败,原因:未知异常,流程定义ID:{}", processDefinitionId, e);throw new BusinessException("获取流程XML失败,原因:未知异常", e);}
}

④ 创建功能接口

// 使用Spring Security的注解进行权限控制,只有拥有特定权限的用户才能访问此方法
@PreAuthorize("hasAnyAuthority('/api/v1/actReProcdef/queryXml')")
// 定义参数对象的元数据,用于API文档生成
@Parameter(name = "queryImageOrXmlReq", description = "查询流程定义图片请求对象", required = true)
// 定义操作的元数据,用于API文档生成
@Operation(summary = "查询流程定义XML")
// 声明这是一个POST类型的HTTP请求处理方法
@PostMapping("/queryXml")
public Result<String> queryXML(@RequestBody QueryImageOrXmlReq queryImageOrXmlReq) {try {// 调用服务层方法执行流程定义操作,传入请求对象并获取操作结果String xml = actReProcdefService.queryXML(queryImageOrXmlReq);// 返回操作成功的响应结果return Result.success(xml);} catch (Exception e) {// 捕获异常,记录详细的错误日志,并返回包含失败原因的响应结果log.error("查询流程定义XML失败 具体原因为 : {}", e.getMessage());return Result.error("查询流程定义XML失败,失败原因:" + e.getMessage());}
}

四、前端完成查询功能

① 安装 XML 美化插件

        本文采用Vue3的美化插件-pretty-xml-vue3,各位可以选择其他工具,使用方法各工具根据官方文档即可。

安装命令:yarn add pretty-xml-vue3 -D

安装结果:

② 引入样式

在 main.ts 引入样式【import "pretty-xml-vue3/style.css"】,此步骤不可跳过,否则高亮配色不会生效

③ 声明declare 

此步骤是解决type校验错误提示

// pretty-xml-vue3

declare module 'pretty-xml-vue3';

④ 创建接口

// 查询流程定义的xml
export function queryXml(data: QueryImageOrXmlReq) {return request.post<any>({url: '/pm-process/api/v1/actReProcdef/queryXml',data,})
}

⑤ index.vue 引入xml工具

// 引入 xml 美化工具

import { PrettyXml } from 'pretty-xml-vue3'

⑥ 创建查看xml按钮方法

/*** 异步函数:用于显示流程定义的 XML 信息** @param data ActReProcdefVO 类型的对象,包含流程定义的相关信息*/
async function onShowXml(data: ActReProcdefVO) {try {// 组装查询参数,包括流程定义 IDconst param: QueryImageOrXmlReq = {processDefinitionId: data.id,}// 调用后端接口获取流程定义的 XML 数据const result: any = await queryXml(param)// 判断查询结果是否成功if (result.success && result.code === 200) {// 第一步:URL 解码,得到 Base64const base64Str: string = decodeURIComponent(result.data)// 第二步:Base64 解码为二进制字符串const binaryStr = atob(base64Str)// 第三步:转为 UTF-8 文本const bytes = Uint8Array.from(binaryStr, c => c.charCodeAt(0))// 获取数据xmlData.value = new TextDecoder('utf-8').decode(bytes)// 打开 XML 对话框showXml.value = true}else {// 提示操作失败的错误提示信息ElMessage({message: `查询失败原因:${result.message}`,})}}catch (error) {// 捕获异常并提取错误信息let errorMessage = '未知错误'if (error instanceof Error) {errorMessage = error.message}// 显示操作失败的错误提示信息ElMessage({message: `查询失败: ${errorMessage || '未知错误'}`,type: 'error',})}
}

⑦ 创建查询xml按钮

⑧ 创建xml展示区域

此处需要说明的是,这里使用了xml美化工具,需要指定标签 【PrettyXml】

  <!-- XML 展示弹出框 --><el-dialog v-model="showXml" title="XML 展示" width="30%"><div class="xml-container"><PrettyXml :xml="xmlData" :options="{ shortRecord: true }" /></div></el-dialog>

.xml-container {

  min-height: 300px;

  max-height: 600px;

  width: 100%;

  overflow-x: unset;

  overflow-y: scroll;

}

五、分配权限

① 新增按钮

② 分配权限

给当前admin用户的角色【超级管理员】分配按钮权限

六、结果验证

 七、后记

本篇文章的前后端仓库地址请查询专栏第一篇文章,后续打算把xml和流程图片展示出来

本文的后端分支是 process-7

本文的前端分支是 process-9

相关文章:

Flowable7.x学习笔记(十四)查看部署流程Bpmn2.0-xml

前言 Flowable 在其前端 Modeler 中&#xff0c;采用 BPMN 2.0 标准将流程中的任务、网关、事件等元素以 XML 形式存储&#xff0c;并附带图形互换&#xff08;Diagram Interchange&#xff0c;DI&#xff09;数据&#xff0c;以保证在前端与后端都能精准重建可视化流程图。 生…...

大模型应用中Agent2Agent(A2A)的应用场景,以及A2A与MCP的区别和适用场景

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下大模型应用中Agent2Agent&#xff08;A2A&#xff09;的应用场景&#xff0c;以及A2A与MCP的区别和适用场景。 文章目录 一、引言二、Agent2Agent&#xff08;A2A&#xff09;协议原理2.1 核心架构2.2 基础框架与依…...

Windows server:

企鹅裙&#xff1a;429603659 域搭建 (细节上的问题) 1.将IP地址修改为静态IP&#xff0c;搭建完后设置DNS为本身(在搭建完域服务器后设置DNS) 2.配置之前需将计算机名更改为后面题目中所要求的. 3&#xff0e;一些版本之中比如Windows Server2012之中搭建域之后重启会显示…...

Python 3.14:探索新版本的魅力与革新

在Python编程语言的不断演进中&#xff0c;Python 3.14作为又一重要里程碑&#xff0c;承载着开发者们的期待与热情&#xff0c;悄然走进了我们的视野。尽管在撰写本文时&#xff0c;Python 3.14可能尚未正式成为主流版本&#xff08;注&#xff1a;实际发布情况需根据最新信息…...

LabVIEW基于VI Server的控件引用操作

本 VI 通过展示控件引用&#xff08;Control References&#xff09;的使用&#xff0c;借助 VI Server 实现对前面板对象的编程操作。 ​ 详细说明 隐式属性节点&#xff08;Implicitly Linked Property Node&#xff09;&#xff1a;通过右键单击控件&#xff08;或其控件终…...

【不同名字的yolo的yaml文件名是什么意思】

以下是这些 YOLO 系列配置文件的详细解析&#xff0c;按版本和功能分类说明&#xff1a; 一、YOLOv3 系列 文件名核心特性适用场景yolov3.yaml原始 YOLOv3 结构&#xff0c;3 尺度预测&#xff08;13x13,26x26,52x52&#xff09;通用目标检测yolov3-spp.yaml增加 SPP&#xff…...

《100天精通Python——基础篇 2025 第3天:变量与数据类型全面解析,掌握Python核心语法》

目录 一、Python变量的定义和使用二、Python整数类型&#xff08;int&#xff09;详解三、Python小数/浮点数&#xff08;float&#xff09;类型详解四、Python复数类型(complex)详解---了解五、Python字符串详解(包含长字符串和原始字符串)5.1 处理字符串中的引号5.2 字符串的…...

精益数据分析(24/126):聚焦第一关键指标,驱动创业成功

精益数据分析&#xff08;24/126&#xff09;&#xff1a;聚焦第一关键指标&#xff0c;驱动创业成功 在创业和数据分析的探索之旅中&#xff0c;我们都在不断寻找能够助力成功的关键因素。今天&#xff0c;我依旧带着与大家共同进步的初心&#xff0c;深入解读《精益数据分析…...

【刷题Day26】Linux命令、分段分页和中断(浅)

说下你常用的 Linux 命令&#xff1f; 文件与目录操作&#xff1a; ls&#xff1a;列出当前目录的文件和子目录&#xff0c;常用参数如-l&#xff08;详细信息&#xff09;、-a&#xff08;包括隐藏文件&#xff09;cd&#xff1a;切换目录&#xff0c;用于在文件系统中导航m…...

互联网实验室的质量管控痛点 质检LIMS系统在互联网企业的应用

在互联网行业流量红利消退与用户体验至上的时代背景下&#xff0c;产品迭代速度与质量稳定性成为企业核心竞争力的分水岭。传统测试实验室依赖人工操作、碎片化工具与线下沟通的管理模式&#xff0c;已难以应对敏捷开发、多端适配、数据安全等复合型挑战。 一、互联网实验室的…...

VScode远程连接服务器(免密登录)

一、本机生成密钥对 本地终端输入ssh-keygen&#xff0c;生成公钥&#xff08;id_rsa.pub&#xff09;和私钥&#xff08;id_rsa&#xff09; 二、在远程服务器根目录的.ssh文件夹的authorized_keys中输入id_rsa的内容 三、修改vscode的config文件.ssh/config&#xff0c;加…...

【Go语言】RPC 使用指南(初学者版)

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;允许程序调用另一台计算机上的子程序&#xff0c;就像调用本地程序一样。Go 语言内置了 RPC 支持&#xff0c;下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…...

安卓四大组件之ContentProvider

目录 实现步骤 代码分析 onCreate insert query ContextHolder Cursor 作用与用法 基本步骤&#xff1a; 可能的面试题&#xff1a;为什么使用Cursor&#xff1f; 为什么使用Cursor 使用Cursor的好处 静态内部类实现单例模式 AnndroidManifest.xml配置信息 注释的…...

C#中实现XML解析器

XML&#xff08;可扩展标记语言&#xff09;是一种广泛用于存储和传输数据的格式&#xff0c;因其具有良好的可读性和可扩展性&#xff0c;在许多领域都有应用。 实现思路&#xff1a; 词法分析 词法分析的目的是将输入的 XML 字符串分解为一个个的词法单元&#xff0c;例如…...

神经符号混合与跨模态对齐:Manus AI如何重构多语言手写识别的技术边界

在全球化数字浪潮下,手写识别技术长期面临"巴别塔困境"——人类书写系统的多样性(从中文象形文字到阿拉伯语连写体)与个体书写风格的随机性,构成了人工智能难以逾越的双重壁垒。传统OCR技术在处理多语言手写场景时,准确率往往不足70%,特别是在医疗处方、古代文…...

TestBrain开源程序是一款集使用AI(如deepseek)大模型自动生成测试用例、和测试用例评审、RAG知识库管理的web平台系统

一、软件介绍 文末提供程序和源码下载 TestBrain开源程序是一款集使用AI(如deepseek)大模型自动生成测试用例、和测试用例评审、RAG知识库管理的web平台系统一个基于LLM的智能测试用例生成平台(功能慢慢丰富中&#xff0c;未来可能将测试相关的所有活动集成到一起)&#xff0c…...

软件工程效率优化:一个分层解耦与熵减驱动的系统框架

软件工程效率优化&#xff1a;一个分层解耦与熵减驱动的系统框架** 摘要 (Abstract) 本报告构建了一个全面、深入、分层的软件工程效率优化框架&#xff0c;旨在超越简单的技术罗列&#xff0c;从根本的价值驱动和熵减原理出发&#xff0c;系统性地探讨提升效率的策略与实践。…...

【金仓数据库征文】- 深耕国产数据库优化,筑牢用户体验新高度

目录 引言 一、性能优化&#xff1a;突破数据处理极限&#xff0c;提升运行效率 1.1 智能查询优化器&#xff1a;精准优化数据检索路径 1.2 并行处理技术&#xff1a;充分释放多核计算潜力 1.3 智能缓存机制&#xff1a;加速数据访问速度 二、稳定性提升&#xff1a;筑牢…...

前端面试常见部分问题,及高阶部分问题

面试中也极有可能让你徒手写代码,无聊的面试问题o( ̄︶ ̄)o 一、HTML/CSS 基础与进阶 常见问题 什么是语义化标签?有哪些常用语义化标签? 答案:语义化标签是指具有明确含义的 HTML 标签,如 <header>、<footer>、<article>、<section> 等。它们有…...

使用 AutoGen 与 Elasticsearch

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何使用 AutoGen 为你的 agent 创建一个 Elasticsearch 工具。 Elasticsearch 拥有与行业领先的生成式 AI 工具和提供商的原生集成。查看我们的网络研讨会&#xff0c;了解如何超越 RAG 基础&#xff0c;或使用 Elastic 向量…...

kafka与flume的整合、spark-streaming

kafka与flume的整合 前期配置完毕&#xff0c;开启集群 需求1&#xff1a; 利用flume监控某目录中新生成的文件&#xff0c;将监控到的变更数据发送给kafka&#xff0c;kafka将收到的数据打印到控制台&#xff08;三个node01中运行&#xff09; 1.在kafka中建立topic kafka…...

高级电影感户外街拍人像摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色介绍 高级电影感户外街拍人像摄影后期 Lr 调色&#xff0c;是运用 Adobe Lightroom 软件&#xff0c;对户外街拍的人像照片进行后期处理&#xff0c;以塑造出具有电影质感的独特视觉效果。此调色过程借助 Lr 丰富的工具与功能&#xff0c;从色彩、光影、对比度等多维度着手…...

react 常用钩子 hooks 总结

文章目录 React钩子概念图状态管理钩子 state management副作用钩子 effect hooks引用钩子 Ref hooks上下文钩子其他钩子过渡钩子 处理过渡效果性能优化钩子 performance hooksReact 19 新钩子 React钩子概念图 状态管理钩子 state management useState useReducer useSyncEx…...

2025 年导游证报考条件新政策解读与应对策略

2025 年导游证报考政策有了不少新变化&#xff0c;这些变化会对报考者产生哪些影响&#xff1f;我们又该如何应对&#xff1f;下面就为大家详细解读新政策&#xff0c;并提供实用的应对策略。 最引人注目的变化当属中职旅游类专业学生的报考政策。以往&#xff0c;中专学历报考…...

重置 Git 项目并清除提交历史

在某些情况下&#xff0c;你可能需要完全重置一个 Git 项目&#xff0c;清除所有提交历史&#xff0c;然后将当前代码作为全新的初始提交。本文将详细介绍这个过程的操作步骤和注意事项。 重要警告 ⚠️ 注意&#xff1a;以下操作将永久删除项目的所有提交历史、分支和标签。…...

GitHub Copilot (Gen-AI) 很有用,但不是很好

摘要&#xff1a;以下是我在过去三个月中在实际 、 开发中使用 GitHub Copilot Pro 后的想法。由于技术发展迅速&#xff0c;值得注意的是&#xff0c;这些印象是基于我截至 2025 年 3 月的经验。 1 免费试用促使我订阅 GitHub Copilot Pro 我以前读过有关 AI 代码生成器的文…...

K8S Service 原理、案例

一、理论介绍 1.1、3W 法则 1、是什么&#xff1f; Service 是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当 Service 存在时&#xff0c;它的IP地址和端口不会改变。客户端通过IP地址和端口号与 Service 建立连接&#xff0c;这些连接会被路由到提供该 Service 的…...

Base64编码原理:二进制数据与文本的转换技术

&#x1f504; Base64编码原理&#xff1a;二进制数据与文本的转换技术 开发者的数据编码困境 作为开发者&#xff0c;你是否曾遇到这些与Base64相关的挑战&#xff1a; &#x1f4ca; 需要在JSON中传输二进制数据&#xff0c;但不确定如何正确编码&#x1f5bc;️ 想要在HT…...

系统设计(1)—前端—CDN—Nginx—服务集群

简介&#xff1a; 本指南旨涵盖前端、CDN、Nginx 负载均衡、服务集群、Redis 缓存、消息队列、数据库设计、熔断限流降级以及系统优化等模块的核心要点。我们将介绍各模块常见的设计方案与优化策略&#xff0c;并结合电商秒杀、SaaS CRM 系统、支付系统等高并发场景讨论实践技巧…...

Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

Easysearch 基础运维扫盲指南&#xff1a;从 HTTP 到 HTTPS、认证与安全访问全解析 众所周知&#xff0c;原生 Elasticsearch 默认开启的是 HTTP 明文接口&#xff0c;并且不开启任何身份认证或传输加密。若想启用 TLS/SSL 加密及账号密码验证&#xff0c;通常需要配置繁琐的安…...

在Android中如何使用Protobuf上传协议

在 Android 中使用 Protobuf&#xff08;Protocol Buffers&#xff09;主要分为以下几个步骤&#xff1a; ✅ 1. 添加 Protobuf 插件和依赖 在项目的 build.gradle&#xff08;Project 级&#xff09;文件中添加 Google 的 Maven 仓库&#xff08;通常默认已有&#xff09;&am…...

【数据可视化艺术·应用篇】三维管线分析如何重构城市“生命线“管理?

在智慧城市、能源管理、工业4.0等领域的快速发展中&#xff0c;地下管线、工业管道、电力通信网络等“城市血管”的复杂性呈指数级增长。传统二维管理模式已难以应对跨层级、多维度、动态变化的管线管理需求。三维管线分析技术应运而生&#xff0c;成为破解这一难题的核心工具。…...

2025年的营销趋势-矩阵IP

从 2025 年的营销生态来看&#xff0c;创始人 IP 与智能矩阵的结合确实呈现出颠覆性趋势&#xff0c;这一现象背后隐藏着三个值得深度解析的商业逻辑&#xff1a; 一、创始人 IP 的本质是 "信任货币" 的数字化迁徙 当新能源汽车市场陷入参数混战&#xff0c;雷军将个…...

对接金蝶获取接口授权代码

接口服务信息 using RestSharp; using System.Configuration; using System.Threading.Tasks; public class KingdeeAccessTokenService { private readonly RestClient _client; private readonly KingdeeApiConfig _config; public KingdeeAccessTokenService() …...

探秘 3D 展厅之卓越优势,解锁沉浸式体验新境界

&#xff08;一&#xff09;打破时空枷锁&#xff0c;全球触达​ 3D 展厅的首要优势便是打破了时空限制。在传统展厅中&#xff0c;观众需要亲临现场&#xff0c;且必须在展厅开放的特定时间内参观。而 3D 展厅依托互联网&#xff0c;让观众无论身处世界哪个角落&#xff0c;只…...

prometheus通过Endpoints自定义grafana的dashboard模块

1、prometheus自定义的dashboard模块 文件路径/etc/prometheus/config_out/prometheus-env.yaml - job_name: serviceMonitor/monitoring/pfil/0honor_labels: falsekubernetes_sd_configs:- role: endpointsnamespaces:names:- monitoringrelabel_configs:- source_labels:- …...

java排序算法-计数排序

计数排序的思路 计数排序的基本思路&#xff1a; 确定取值范围&#xff1a; 遍历整个待排序的数组&#xff0c;确定数组中元素的取值范围&#xff0c;找到最小值和最大值。创建计数数组&#xff1a; 创建一个计数数组&#xff0c;其长度为取值范围的大小&#xff0c;用于统计…...

力扣-hot100(滑动窗口最大值)

239. 滑动窗口最大值 困难 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums […...

每日c/c++题 备战蓝桥杯(P1049 [NOIP 2001 普及组] 装箱问题)

洛谷P1049 装箱问题题解&#xff1a;动态规划在背包问题中的经典应用 题目描述 P1049 装箱问题是一道典型的0-1背包问题变种。题目要求在给定箱子容量V和n个物品体积的情况下&#xff0c;选择若干物品装入箱子&#xff0c;使得箱子的剩余空间最小。最终输出这个最小剩余空间的…...

【尚硅谷Redis6】自用学习笔记

Redis介绍 Redis是单线程 多路IO复用技术&#xff08;类似黄牛买票&#xff09; 默认有16个库&#xff0c;用select进行切换 默认端口号为6379 Memcached&#xff1a;多线程 锁&#xff08;数据类型单一&#xff0c;不支持持久化&#xff09; 五大常用数据类型 Redis key …...

产品更新丨谷云科技ETLCloud V3.9.2版本发布

谷云科技 ETLCloud 集成平台迎来了每月一次的功能迭代&#xff0c;本月发布版本号为 3.9.2 版本&#xff0c;为用户带来了新的功能、优化改进以及问题修复&#xff0c;以下是详细介绍&#xff1a; 新增组件 本次更新新增了众多实用组件&#xff0c;涵盖了京东和 Shopify 相关…...

Promise并发控制与HTTP请求优化

Promise并发方法对比 #mermaid-svg-tnmGzOkgNUCrbvfI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tnmGzOkgNUCrbvfI .error-icon{fill:#552222;}#mermaid-svg-tnmGzOkgNUCrbvfI .error-text{fill:#552222;stroke…...

G1垃圾回收器中YoungGC和MixedGC的区别

在 G1 垃圾回收器中&#xff0c;Mixed GC 和 Young GC 的区别主要体现在以下几个方面&#xff1a; 作用范围 Young GC&#xff1a;仅针对年轻代中的Region进行回收&#xff0c;包括 Eden 区和 Survivor 区的 Region。Mixed GC&#xff1a;会回收所有年轻代的 Region 以及部分…...

Web4.0身份革命:去中心化身份系统的全栈实现路径

去中心化身份&#xff08;DID&#xff09;技术栈正在重构数字世界的信任根基&#xff0c;本文从密码学协议、存储网络、验证框架三个维度&#xff0c;解析符合W3C标准的身份系统构建方案。通过Hyperledger Aries架构实践&#xff0c;揭示如何实现跨链身份互通、数据主权控制、零…...

iOS/Flutter混合开发之PlatformView配置与使用

环境&#xff1a;Xcode 16.3、Flutter 3.29.2、Dart 3.7.2。 使用背景&#xff1a;需要在flutter界面中嵌入一个iOS原生控件。 步骤&#xff1a; 1. iOS侧实现&#xff1a; 1.1&#xff1a;PlatformView实现 class FLNativeView: NSObject, FlutterPlatformView {private v…...

Libconfig 修改配置文件里的某个节点

THCommandStatus ( { Status "1"; index 5; }, { Status "2"; index 8; }, { Status "3"; index 7; }, { Status "4"; index 0; } ); 比如这是配置文件的内容&#xff…...

【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来

AI 赋能数据库运维&#xff1a;金仓KES的智能化未来 &#x1f31f;嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 在当今数字经济飞速发展的时代&#xff0…...

【MySQL】3分钟解决MySQL深度分页问题

什么是深度分页问题&#xff1f;该如何解决呢?这篇文章展开讲讲 什么是深度分页&#xff1f; 当查询结果集非常大时&#xff0c;需要获取靠后页码的数据&#xff0c;比如第1000页、10000页。 如&#xff1a; SELECT * FROM table LIMIT 10000, 10; -- 获取第10001-10010条…...

GitHub 趋势日报 (2025年04月24日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1kortix-ai/sunaSuna - Open Source Generalist AI Agent⭐ 1105⭐ 3639TypeScript2cloudcommunity/Free-CertificationsA curated …...

一种双模式机器人辅助股骨干骨折钢板植入方法

股骨干骨折是一种常见的高能损伤&#xff0c;微创内固定是首选治疗方法。然而&#xff0c;钢板植入过程中存在不可见、不准确和不稳定等问题。山东大学研究团队提出了一种双模式机器人辅助钢板植入方法&#xff0c;通过神经网络模型规划钢板植入轨迹&#xff0c;然后利用机械臂…...