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

Vue3 界面设计插件 microi-pageengine 入门教程一

系列文章目录

一、Vue3空项目快速集成 microi-pageengine 插件


文章目录

  • 系列文章目录
  • 一、前言
  • 二、排版布局
    • 2.1 功能导航区
    • 2.2 组件容器区
    • 2.3 属性面板区
  • 三、数据来源配置
    • 3.1 json数据源
    • 3.2 html数据源
  • 四、事件穿透
  • 五、数据保存持久化
  • 六、总结


一、前言

上一篇文章介绍了 vue3 空项目如何快速集成 microi-pageengine 插件,这一章节主要介绍 microi-pageengine设计思路原理 ,以及后续的升级计划。至于具体的 内置组件 介绍要到后面章节来一一详细介绍。

二、排版布局

主要介绍设计界面整体的排版布局,当然这些布局后续可能会有变动,但暂时是这个样子的。

2.1 功能导航区

在这里插入图片描述
功能按钮:

  • 查看json : 当前页面渲染内容会保存在一个大的 json 里,可以将设计好的json 持久化保存起来,比如保存到一个 json 文件或者存到数据库。反之,可以使用该 json 渲染页面。
  • 清空容器:当设计面板区域容器组件过多且想重新设计,则可以使用该功能重置清空面板。
  • 内置模板:内置模板主要给用户以参考,放一些常用排版格式和组件用法。
  • 预览:在设计过程中可以通过预览来查看实际效果。
  • 保存 : 该功能用于做持久化的,可以通过 【保存】将页面 json 通过事件透传给指定的方法,可以将自己的保存逻辑写在该方法体内。
  • 主题 : 内置了明亮暗黑 两种主题。
  • 初始化:初始化主要用于清除缓存、引导提示等。

2.2 组件容器区

在这里插入图片描述
组件容器区主要存放容器和组件库,界面设计主要包括三大元素:

  • 页面:页面在这里指整体设计面板区域,包含页面信息、页面默认通用配置和开关等。
  • 容器:容器类似于包装器,主要用来排版布局。
  • 组件:组件就是最小单元了,组件依附在容器里,一个容器可以包含多个组件。

2.3 属性面板区

在这里插入图片描述
属性面板区主要用来参数配置,通过参数调节实现界面样式和效果的变换。

  • 页面参数:页面参数全局唯一且固定。
  • 容器参数:容器参数针对每个容器配置,参数也是固定不变的。
  • 组件参数:组件参数分为通用配置和特色配置,通用配置适用于每个组件,一般记录组件的信息和样式控制,特色配置可能就不尽相同了,毕竟每个组件都有不同的特性。

三、数据来源配置

数据来源配置分为两种,一种是JSON数据源,数据源一般为对象和数组。另一种是HTML代码,这种数据格式主要用于超文本组件。

3.1 json数据源

我们就拿工作台组件举个例子:

在这里插入图片描述
在这里插入图片描述
当我们修改 json 数据后,关闭窗口会实时同步渲染修改后的展示效果。如果我们需要动态数据,则可以在数据来源内容框输入 webapi 的远程接口地址,返回内容格式如上图即可。

注意:请注意接口地址和界面引擎 跨域 的问题,还一个就是 https 的问题。

接口内置了 token 参数,在我们集成页面把 token 参数设置后,后面无需关心token 问题,请求接口会自动带上 token

3.2 html数据源

这种 html 数据源格式仅限于【超文本】组件:

在这里插入图片描述
在这里插入图片描述
如果我们需要非常复杂的界面,没有组件能满足,那么我们可以直接写HTML代码来实现自己想要的效果。

四、事件穿透

当我们想在组件内想实现点击某个区域来进行事件回调,也是可以实现的,目前已整理事件类型如下:

onMounted(() => {//如果需要token,设置token,该token一经接收即刻存入pinia状态机,每次调用接口通过拦截器自动处理token头,无需每次手动写,持久化用的localStorage ,可以F12查看pageEngineStore.setToken('')//下面这一大串监听,其实也可以写到一个事件里,通过key value 键值对来区分,暂时先这么着吧//监听保存页面JSON事件EventBus.on('saveFormJson', (saveFormJson) => {console.log('监听saveFormJson', saveFormJson)})//监听日历选择日期事件EventBus.on('calendarSelDate', (data) => {console.log('监听calendarSelDate', data)})//卡片更多跳转EventBus.on('cartMoreLink', (linkurl, linktype) => {console.log('监听cartMoreLink', linkurl, linktype)if (linktype == 'router') {router.push(linkurl)}})//链接组件跳转EventBus.on('linkWidget', (linkurl, linktype) => {console.log('监听linkWidget', linkurl, linktype)if (linktype == 'router') {router.push(linkurl)}})//鱼骨图跳转EventBus.on('fishWidget', (linkurl) => {console.log('监听fishWidget', linkurl)router.push(linkurl)})//步骤跳转EventBus.on('stepsWidget', (id, linkurl) => {console.log('监听stepsWidget', id, linkurl)router.push(linkurl)})//地图marker点击事件EventBus.on('mapMarkerClick', (item) => {console.log('监听mapMarkerClick', item)})
})//销毁
onBeforeUnmount(() => {EventBus.off('saveFormJson')EventBus.off('calendarSelDate')EventBus.off('cartMoreLink')EventBus.off('linkWidget')EventBus.off('fishWidget')EventBus.off('stepsWidget')EventBus.off('mapMarkerClick')
})

我们只需在集成页面做好事件监听即可。

五、数据保存持久化

当我们想把设计的页面 json 持久化保存,以便后续用渲染引擎渲染出来,可以在头部【保存按钮】监听事件内写自己的业务逻辑。

 //监听保存页面JSON事件EventBus.on('saveFormJson', (saveFormJson) => {console.log('监听saveFormJson', saveFormJson)})

json内容格式如下:

//传入数据,这个数据不知道什么格式,可以在设计器拖拽几个组件查看下页面JSON ,和渲染JSON一毛一样的
const remoteObj = ref({Id: '', //自定义页面IDTitle: '', //自定义页面标题Number: '', //自定义页面编号Desc: '', //自定义页面描述JsonObj: {} | '', //对象或者字符串
})

在这里插入图片描述

六、总结

通过这张介绍,我们大致就了解了界面设计引擎的基本构成和原理,后续会详细介绍每个内置组件的功能和用法,还有自定义组件如何集成。

对了,把集成页面的代码再贴出来一遍让大家再看下。

<template><!-- 页面设计器 --><formDesigner :remoteObj="remoteObj" /><!-- 页面渲染器 --><!-- <formRenderer :remoteObj="remoteObj" /> -->
</template><script setup>
//引入组件
import { formDesigner, EventBus, usePageEngineStore } from 'microi-pageengine'
//引入样式
import 'microi-pageengine/style.css'//本地组件
import { useRouter } from 'vue-router'
import { createPinia } from 'pinia'
import { onMounted, onBeforeUnmount, ref } from 'vue'//用自己的路由处理组件内部跳转,通过EventBus监听处理内部事件,主打一个自由自在,随心所欲.
const router = useRouter()//状态机传参,npm包没包把pinia打包进去,正所谓巧妇难为无米之炊,给她传一个完事
const pinia = createPinia()
const pageEngineStore = usePageEngineStore(pinia)//传入数据,这个数据不知道什么格式,可以在设计器拖拽几个组件查看下页面JSON ,和渲染JSON一毛一样的
const remoteObj = ref({Id: '', //自定义页面IDTitle: '', //自定义页面标题Number: '', //自定义页面编号Desc: '', //自定义页面描述JsonObj: {} | '', //对象或者字符串
})//模拟加载远程数据
const loadFormData = () => {}onMounted(() => {//如果需要token,设置token,该token一经接收即刻存入pinia状态机,每次调用接口通过拦截器自动处理token头,无需每次手动写,持久化用的localStorage ,可以F12查看pageEngineStore.setToken('')//下面这一大串监听,其实也可以写到一个事件里,通过key value 键值对来区分,暂时先这么着吧//监听保存页面JSON事件EventBus.on('saveFormJson', (saveFormJson) => {console.log('监听saveFormJson', saveFormJson)})//监听日历选择日期事件EventBus.on('calendarSelDate', (data) => {console.log('监听calendarSelDate', data)})//卡片更多跳转EventBus.on('cartMoreLink', (linkurl, linktype) => {console.log('监听cartMoreLink', linkurl, linktype)if (linktype == 'router') {router.push(linkurl)}})//链接组件跳转EventBus.on('linkWidget', (linkurl, linktype) => {console.log('监听linkWidget', linkurl, linktype)if (linktype == 'router') {router.push(linkurl)}})//鱼骨图跳转EventBus.on('fishWidget', (linkurl) => {console.log('监听fishWidget', linkurl)router.push(linkurl)})//步骤跳转EventBus.on('stepsWidget', (id, linkurl) => {console.log('监听stepsWidget', id, linkurl)router.push(linkurl)})//地图marker点击事件EventBus.on('mapMarkerClick', (item) => {console.log('监听mapMarkerClick', item)})
})//销毁
onBeforeUnmount(() => {EventBus.off('saveFormJson')EventBus.off('calendarSelDate')EventBus.off('cartMoreLink')EventBus.off('linkWidget')EventBus.off('fishWidget')EventBus.off('stepsWidget')EventBus.off('mapMarkerClick')
})
</script><style>
.dark {background: #252525;color: white;
}
.light {background-color: white;color: black;
}
</style>

相关文章:

Vue3 界面设计插件 microi-pageengine 入门教程一

系列文章目录 一、Vue3空项目快速集成 microi-pageengine 插件 文章目录 系列文章目录一、前言二、排版布局2.1 功能导航区2.2 组件容器区2.3 属性面板区 三、数据来源配置3.1 json数据源3.2 html数据源 四、事件穿透五、数据保存持久化六、总结 一、前言 上一篇文章介绍了 v…...

如何选择合适的SSL服务器证书

在数字化时代&#xff0c;网络安全已成为企业不可忽视的重要环节。SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;服务器证书作为保障网站数据传输安全的关键工具&#xff0c;其选择和使用至关重要。 一、SSL证书类型&#xff1a;基础与进阶 SSL证书…...

STC89C52单片机学习——第26节: [11-2]蜂鸣器播放音乐

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.03.19 51单片机学习——第26节: [11-2]蜂鸣器播放音乐 前言开发板说明引用解答和科普一…...

ABC396题解

A 算法标签: 模拟 问题陈述 给你一个长度为 N N N 的整数序列&#xff1a; A ( A 1 , A 2 , … , A N ) A (A_1, A_2, \ldots, A_N) A(A1​,A2​,…,AN​)。 请判断在 A A A 中是否有相同元素连续出现三次或三次以上的位置。 更正式地说&#xff0c;请判断是否存在一个整…...

如何用Python和Selenium实现表单的自动填充与提交?

在今天的数字化时代&#xff0c;自动化工具可以极大地提高工作效率。很多人可能会觉得填表单是个繁琐的任务&#xff0c;不过你知道吗&#xff1f;用Python和Selenium可以轻松解决这一问题&#xff01;本文将带你走进如何利用这两个强大的工具&#xff0c;实现表单的自动填充和…...

使用`plot_heatmap`绘制热力图时

在Python中&#xff0c;使用plot_heatmap绘制热力图时&#xff0c;颜色图例&#xff08;colorbar&#xff09;的定制化设置是关键步骤。以下是实现方法及优化建议&#xff1a; 一、基础图例绘制 自动生成颜色条 使用seaborn.heatmap()时&#xff0c;默认会生成颜色条&#xff0…...

极简桌面待办清单软件,❌不会增加工作量

工作邮件、会议安排、生活琐事……事情多到根本记不住&#xff0c;又怕错过重要事项&#xff0c;焦虑感油然而生。相信这是很多职场朋友遇到的问题&#xff0c;也急需一款好用的极简桌面待办清单软件来辅助我们。 今天我要给大家推荐一款拯救我们于水火的神器——好用便签&…...

QT学习笔记4

一、音视频播放&#xff08;Qt Multimedia&#xff09; 1. 多媒体框架架构 核心类关系 &#xff1a; mermaid #mermaid-svg-mwHLYcpaJDU14uFM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mwHLYcpaJDU14uFM .e…...

软考 中级软件设计师 考点知识点笔记总结 day06

文章目录 6、树和二叉树6.1、树的基本概念6.2、二叉树的基本概念6.3、二叉树的遍历6.4、查找二叉树&#xff08;二叉排序树&#xff09;BST6.5、构造霍夫曼树6.6、线索二叉树6.7、 平衡二叉树 7、 图7.1 、 存储结构 - 邻接矩阵7.2 、 存储结构 - 邻接表7.3、图的遍历7.4、拓扑…...

爬虫基础之爬取猫眼Top100 可视化

网站: TOP100榜 - 猫眼电影 - 一网打尽好电影 本次案例所需用到的模块 requests (发送HTTP请求) pandas(数据处理和分析 保存数据) parsel(解析HTML数据) pyecharts(数据可视化图表) pymysql(连接和操作MySQL数据库) lxml(数据解析模块) 确定爬取的内容: 电影名称 电影主演…...

微信小程序面试内容整理-如何使用wx.request()进行网络请求

wx.request() 是微信小程序中用于发送网络请求的 API,类似于浏览器中的 fetch 或 XMLHttpRequest。通过 wx.request(),开发者可以向服务器发送 HTTP 请求,获取数据或者提交数据。 基本用法 wx.request() 通过提供一个配置对象来进行配置,配置对象中包括请求的 URL、请求方法…...

力扣100二刷——图论、回溯

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…...

该错误是由于`KuhnMunkres`类未定义`history`属性导致的

该错误是由于KuhnMunkres类未定义history属性导致的。以下是具体分析及解决方案&#xff1a; 错误原因分析 属性缺失 代码中试图访问km.history&#xff0c;但KuhnMunkres类未在初始化或算法执行过程中定义该属性&#xff0c;因此触发AttributeError。动画实现逻辑不完整 用户…...

DAPO:一个开源的大规模大型语言模型LLM强化学习系统

推断扩展赋予了大型语言模型前所未有的推理能力,强化学习作为激发复杂推理的核心技术,清华大学联合字节提出了解耦片段与动态采样策略优化(DAPO)算法,并全面开源了一个最先进的大规模强化学习系统,该系统使用Qwen2.5-32B基础模型在AIME 2024上取得了50分的高分。还开源了…...

数据结构中的引用管理对象体系

数据结构中的引用管理对象体系 &#xff08;注&#xff1a;似复刻变量即实例对象&#xff09; 引用管理对象的&#xff0c;有引用就能管理到它所指向的对象&#xff0c;我们拿引用最终的目的就是管理那些我们需要管理的最终直接对象&#xff0c;引用也是对象&#xff0c;同时…...

【自学笔记】智能合约基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 智能合约基础知识点总览目录1. 智能合约简介2. 以太坊与Solidity示例代码&#xff1a;Hello World智能合约 3. Solidity基础语法示例代码&#xff1a;简单的计数器合…...

Linux的Shell编程

一、什么是Shell 1、为什么要学习Shell Linux运维工程师在进行服务器集群管理时&#xff0c;需要编写Shell程序来进行服务器管理。 对于JavaEE和Python程序员来说&#xff0c;工作的需要。Boss会要求你编写一些Shell脚本进行程序或者是服务器的维护&#xff0c;比如编写一个…...

【八股文】volatile关键字的底层原理是什么

volatile只能保证可见性和有序性 volatile如何保证可见性 当对volatile变量进行写操作的时候&#xff0c;JVM会向处理器发送一条lock前缀的命令&#xff0c;将这个缓存中的变量会写到系统内存中。 所以&#xff0c;如果一个变量被volatile所修饰&#xff0c;每次数据变化之后…...

一种基于大规模语言模型LLM的数据分析洞察生成方法

从复杂数据库中提取洞察对数据驱动决策至关重要,但传统手动生成洞察的方式耗时耗力,现有自动化数据分析方法生成的洞察不如人工生成的有洞察力,且存在适用场景受限等问题。下文将介绍一种新的方法,通过生成高层次问题和子问题,并使用SQL查询和LLM总结生成多表数据库中的见…...

三大供应链管理模式——解决方案与实操案例详解

库存压到喘不过气&#xff0c;紧急订单却总赶不上交付&#xff1f;这是许多企业的真实困境——推式供应链盲目备货导致积压&#xff0c;拉式供应链又因响应慢而丢单。供应链管理&#xff0c;本质上是在“计划”与“变化”之间把握平衡。上篇文章&#xff0c;我们系统梳理了供应…...

【C++】STL库面试常问点

STL库 什么是STL库 C标准模板库&#xff08;Standard Template Libiary&#xff09;基于泛型编程&#xff08;模板&#xff09;&#xff0c;实现常见的数据结构和算法&#xff0c;提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成&#xff1a; ● 容器&#xf…...

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。&#xff08;基学习器是分类模型&#xff09; 2、回归问题集成。&#xff08;基学习器是回归模型&#xff09; 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…...

【SpringBatch】03步骤对象 (Step)控制与执行流程设计

目录标题 六、步骤对象 Step6.1 步骤介绍6.2 简单Tasklet6.3 chunk居于块Tasklet**ChunkTasklet 泛型** 6.4 步骤监听器6.5 多步骤执行6.6 步骤控制6.6.1 条件分支控制-使用默认返回状态6.6.2 条件分支控制-使用自定义状态值 6.7 步骤状态6.8 流式步骤 六、步骤对象 Step 前面…...

走进Java:String字符串的基本使用

❀❀❀ 大佬求个关注吧~祝您开心每一天 ❀❀❀ 目录 一、什么是String 二、如何定义一个String 1. 用双引号定义 2. 通过构造函数定义 三、String中的一些常用方法 1 字符串比较 1.1 字符串使用 1.2 字符串使用equals() 1.3 使用 equalsIgnoreCase() 1.4 cpmpareTo…...

AI如何变革亚马逊广告投放?DeepBI的智能优化解析

在亚马逊平台上&#xff0c;广告投放的方式正经历着从人工精细化运营到AI自动化优化的深刻变革。传统的广告投放依赖人工操作&#xff0c;涉及海量数据分析、手动调价、竞价策略优化等环节&#xff0c;既耗时又易受人为因素影响。而AI驱动的智能投放系统&#xff0c;如DeepBI&a…...

小程序电子画册制作,用户体验为王!

家人们&#xff0c;现在小程序电子画册超火&#xff0c;不管是展示产品还是分享故事都超实用。但在小程序电子画册制作过程中&#xff0c;用户体验真的得好好考量&#xff01;今天就和大家唠唠这其中的门道。 1、加载速度&#xff1a;快才是王道 打开小程序的瞬间&#xff0c…...

【商城实战(49)】解锁小程序端适配与优化,让商城飞起来

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析

【完整版】3月19日&#xff0c;黄仁勋Nvidia GTC 2025 主题演讲&#xff5c;英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面&#xff0c;广泛收集了…...

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用

《TCP/IP网络编程》学习笔记 | Chapter 19&#xff1a;Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19&#xff1a;Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…...

线性规划的基本解、基本可行解和可行解

在线性规划中&#xff0c;基本解、基本可行解和可行解是非常重要的概念&#xff0c;特别是在使用单纯形法求解时。下面详细解释这些概念&#xff0c;并说明如何计算它们。 1. 线性规划问题的标准形式 线性规划的标准形式为&#xff1a; 其中&#xff1a; A 是 mn 的矩阵&…...

【AVRCP】服务发现互操作性:CT 与 TG 的 SDP 协议契约解析

目录 一、服务发现的核心目标&#xff1a;能力画像对齐 二、控制器&#xff08;CT&#xff09;服务记录&#xff1a;控制能力的声明 2.1 必选字段&#xff1a;角色与协议的刚性契约 2.1.1 服务类标识&#xff08;Service Class ID List&#xff09; 2.1.2 协议描述列表&am…...

[从零开始学习JAVA] Stream流

前言&#xff1a; 本文我们将学习Stream流&#xff0c;他就像流水线一样&#xff0c;可以对我们要处理的对象进行逐步处理&#xff0c;最终达到我们想要的效果&#xff0c;是JAVA中的一大好帮手&#xff0c;值得我们了解和掌握。&#xff08;通常和lambda 匿名内部类 方法引用相…...

K8S学习之基础三十八:Kube-static-metrics监控

Kube-static-metrics监控 ​ kube-static-metrics组件可以通过监听apiserver生成有关资源对象的状态指标&#xff0c;比如Node、Pod&#xff0c;需要注意的是kube-state-metrics只是简单的提供一个metrics数据&#xff0c;并不会存储这些指标数据&#xff0c;所以可以使用Prom…...

JAVA-多线程join()等待一个线程

引言&#xff1a;更多线程的认识可以看一篇博客&#xff1a; JAVA-Thread类实现多线程-CSDN博客 一、join()的作用 我们知道线程是随机调度执行的&#xff0c;但是有时候我们需要另一个任务完成了&#xff0c;我们才能继续&#xff0c;这个时候我们就可以使用join去等待线程结束…...

HashMap 常用方法

HashMap 常用方法 方法作用示例put(K key, V value)添加键值对map.put("apple", 10);get(Object key)获取指定键的值map.get("apple"); → 10remove(Object key)删除指定键的键值对map.remove("orange");containsKey(Object key)检查是否包含指…...

LogicFlow介绍

LogicFlow介绍 LogicFlow是一款流程图编辑框架&#xff0c;提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端自定义开发各种逻辑编排场景&#xff0c;如流程图、ER图、BPMN流程等。在工作审批流配置、机器人逻辑编排、无代码平…...

Docker搭建MySQL主从服务器

一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径&#xff1a;/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径&#xff1a; /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …...

计算机二级web易错点(4)-选择题

选项 A&#xff1a;<input type"radio"> 用于创建单选按钮&#xff0c;同一组单选按钮中只能选择一个选项&#xff0c;所以该选项不符合要求。选项 B&#xff1a;HTML 中没有 type"check" 这种类型&#xff0c;是错误的写法&#xff0c;不能产生复选…...

3.19学习总结

学习了Java中的面向对象的知识点 完成一道算法题&#xff0c;找树左下角的值&#xff0c;错误的以为左下角只能是最底层的左节点&#xff0c;但指的是最底层最左边的节点...

Swagger-告别手写文档

文章目录 1. 引言2. Swagger是什么&#xff1f;3. SpringBoot2.7.3集成Swagger4. 常见注解 1. 引言 在RESTful API开发中&#xff0c;维护准确、易读的接口文档是团队协作的核心挑战&#xff0c;通常接口文档分为离线的和实时的。离线的接口文档工具有 YAPI等&#xff0c;其中…...

LeetCode-回文数

原题链接&#xff1a;9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 首先我会想到的是&#xff0c;将这个数字转成字符串&#xff0c;然后通过前后指针判断是否相等&#xff0c;最终返回结果是否为回文数&#xff0c;时间复杂度&#xff1a;O(n)&#xff0c;空间复杂度&am…...

数据结构之链表(双链表)

目录 一、双向带头循环链表 概念 二、哨兵位的头节点 优点&#xff1a; 头节点的初始化 三、带头双向链表的实现 1.双链表的销毁 2.双链表的打印 3.双链表的尾插和头插 尾插&#xff1a; 头插&#xff1a; 4.双链表的尾删和头删 尾删&#xff1a; 头删&#xff1a; …...

硬件基础(5):(2)二极管分类

文章目录 &#x1f4cc; 二极管的分类与详细介绍1. **整流二极管&#xff08;Rectifier Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;补充说明&#xff1a; 2. **快恢复二极管&#xff08;Fast Recovery Diode&#xff09;**特点&#xff1a;选型依据&#xff1a;…...

MQTT 和 Modbus 的优缺点对比

MQTT和Modbus协议是物联网&#xff08;IoT&#xff09;躲不开的两种协议&#xff0c;市面上覆盖了百分之98的产品。 MQTT由IBM在1999年发布。2014年&#xff0c;MQTT成为OASIS&#xff08;结构化信息标准促进组织&#xff09;的标准&#xff0c;后来被ISO/IEC 20922正式采纳&a…...

Android14 系统左右声音通道设置代码

Android14 系统左右声音通道设置代码 文章目录 Android14 系统左右声音通道设置代码一、前言二、系统级设置左右声音通道分析1、各方案设置左右声音通道的主要代码&#xff08;1&#xff09;3588 Android13 方案的实现&#xff08;2&#xff09;9679 Android14 方案的实现&…...

【Golang】go如何通过atomic原子操作来确保数据一致性

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

2025年汽车加气站操作工考试精选题库

汽车加气站操作工题库中题目及答案&#xff1a; 单项选择题 1、按压力容器的设计压力分为&#xff08; &#xff09;个压力等级。 A. 3 B. 4 C. 5 答案&#xff1a;B 2、缓冲罐的安装位置在天然气压缩机&#xff08; &#xff09;。 A. 前 B. 后 C. 中间 答案&#…...

LLVM学习--外部项目

不包含于核心LLVM和Clang存储库的项目需要单独下载。在本章中&#xff0c;我们将介绍各种其他官方LLVM项目&#xff0c;并介绍如何构建和安装它们。仅仅对核心LLVM工具感兴趣的读者可以跳过本章&#xff0c;或者在需要的时候翻阅。 在本章中&#xff0c;我们将介绍以下项目安装…...

AUTOSAR_DoIP_Detailed

AUTOSAR DoIP模块详解 基于AUTOSAR标准的诊断通信协议实现 目录 架构概述通信流程消息格式配置结构详细序列总结1. 架构概述 1.1 模块架构 DoIP模块是AUTOSAR基础软件中负责诊断通信的核心组件。它通过TCP/IP网络实现诊断工具与ECU之间的通信。主要功能包括: 基础功能 基于UD…...

C语言:(大数相加版)数字阶梯求和

题目&#xff1a; 给定a和n&#xff0c;计算aaaaaaa...a(n个a)的和。 输入 测试数据有多组&#xff0c;输入a&#xff0c;n&#xff08;1<a<9,1<n<100&#xff09;。 输出 对于每组输入,请输出结果。 分析&#xff1a; 1. 方式和规定&#xff1a;大数相加必然越界…...