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

Android 实现一个隐私弹窗

效果图如下:

1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数

2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来

res/layout/dialog_privacy_policy.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/dialogRoot"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/bg_dialog_rounded"android:orientation="vertical"android:padding="24dp"><TextViewandroid:id="@+id/tvTitle"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="用户协议和隐私政策"android:textColor="#222222"android:textSize="18sp"android:textStyle="bold"android:gravity="center"android:layout_marginBottom="16dp"/><TextViewandroid:id="@+id/tvContent"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#444444"android:textSize="15sp"android:lineSpacingExtra="4dp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="24dp"android:gravity="center"><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/btnExit"android:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:text="退出应用"android:textColor="#5E5C3F"android:background="@drawable/bg_button_outline"android:textSize="16sp" /><Viewandroid:layout_width="16dp"android:layout_height="0dp" /><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/btnAgree"android:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1.5"android:text="已阅读并同意"android:textColor="#FFFFFF"android:background="@drawable/bg_button_primary"android:textSize="16sp" /></LinearLayout>
</LinearLayout>

res/drawable/bg_dialog_rounded.xml 文件

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#FFFFFF"/><corners android:radius="14dp"/>
</shape>

res/drawable/bg_button_outline.xml文件

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#FFFFFF" /><stroke android:width="0.5dp" android:color="#5E5C3F" /><corners android:radius="8dp" />
</shape>

res/drawable/bg_button_primary.xml文件

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#5E5C3F" /><corners android:radius="8dp" />
</shape>

PrivacyPolicyDialog.kt 文件
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.text.SpannableString
import android.text.Spanned
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.view.LayoutInflater
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AlertDialogclass PrivacyPolicyDialog(private val context: Context,private val onAgree: () -> Unit,private val onExit: () -> Unit,private val onClickUserAgreement: () -> Unit,private val onClickPrivacyPolicy: () -> Unit
) {fun show() {val view = LayoutInflater.from(context).inflate(R.layout.dialog_privacy_policy, null)val tvContent = view.findViewById<TextView>(R.id.tvContent)val tvTitle = view.findViewById<TextView>(R.id.tvTitle)val btnAgree = view.findViewById<Button>(R.id.btnAgree)val btnExit = view.findViewById<Button>(R.id.btnExit)val content = "在您使用本应用之前,请您务必审慎阅读、充分理解“用户协议”和“隐私政策”各条款内容。详细资料请阅读:《用户协议》和《隐私政策》。"val spannable = SpannableString(content)val userStart = content.indexOf("《用户协议》")val userEnd = userStart + "《用户协议》".lengthval privacyStart = content.indexOf("《隐私政策》")val privacyEnd = privacyStart + "《隐私政策》".lengthspannable.setSpan(object : ClickableSpan() {override fun onClick(widget: View) {onClickUserAgreement()}}, userStart, userEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)spannable.setSpan(object : ClickableSpan() {override fun onClick(widget: View) {onClickPrivacyPolicy()}}, privacyStart, privacyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)tvContent.text = spannabletvContent.movementMethod = LinkMovementMethod.getInstance()tvContent.highlightColor = Color.TRANSPARENTval dialog = AlertDialog.Builder(context).setView(view).setCancelable(false).create()dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))btnAgree.setOnClickListener {onAgree()dialog.dismiss()}btnExit.setOnClickListener {onExit()dialog.dismiss()}dialog.show()}
}

MainActivity.kt
 

package com.example.poemappimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ViewGroup
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AlertDialogclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)PrivacyPolicyDialog(context = this,onAgree = {Toast.makeText(this, "用户已同意", Toast.LENGTH_SHORT).show()// TODO: 记录已同意状态},onExit = {finish()},onClickUserAgreement = {// TODO: 跳转用户协议页面},onClickPrivacyPolicy = {// TODO: 跳转隐私政策页面}).show()}}

相关文章:

Android 实现一个隐私弹窗

效果图如下&#xff1a; 1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数 2. 《用户协议》、《隐私政策》设置成可点击的&#xff0c;且颜色要区分出来 res/layout/dialog_privacy_policy.xml 文件 <?xml version"1.0" encoding"utf-8"?&…...

第三方软件测试报告如何凭借独立公正与专业权威发挥关键作用?

在软件项目里&#xff0c;第三方软件测试报告起着极为关键的作用。第三方有着中立客观的立场。第三方具备专业能力。凭借这些&#xff0c;第三方能为软件质量评估提供可靠依据。下面要从不同方面介绍第三方软件测试报告。 独立公正性 第三方测试机构与软件开发方、使用方不存…...

QT控件 参考Qt的PIMPL设计模式实现使用QWidget控件绘制3D饼状图表和3D柱状图表,使用QChartView绘制圆柱体图表

整体绘制效果就是:Qt 实现3维饼状图 中的内容, 只不过我借鉴了Qt的PIMPL模式重新封装了整个实现过程 实现效果展示 目录导读 实现效果展示前言绘制3D饼状图表PIMPL模式设计类具体实现计算圆弧中心判断点是否在某个扇区中在私有类中绘制绘制3D柱状图表PIMPL模式设计类具体实现绘…...

Android Q允许低内存启用系统弹窗

如果SYSTEM_ALERT_WINDOW权限可用&#xff0c;则返回true。 *从Q开始&#xff0c;在低ram手机上禁用SYSTEM_ALERT_WINDOW。 vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/Utils.java public static boolean isSystemAlertWindowEnabled(Co…...

Leetcode 3532. Path Existence Queries in a Graph I

Leetcode 3532. Path Existence Queries in a Graph I 1. 解题思路2. 代码实现 题目链接&#xff1a;3532. Path Existence Queries in a Graph I 1. 解题思路 这一题算是一个比较典型的DSU的题目&#xff0c;我们就是不断地根据前后节点的距离将其进行聚类&#xff0c;然后…...

AI Agent Protocols:现状、挑战与未来展望

一、引言 在当今人工智能飞速发展的时代&#xff0c;大语言模型&#xff08;LLMs&#xff09;的进步使得LLM智能体在各个行业得到了广泛的应用&#xff0c;如客户服务、内容生成、数据分析和医疗保健等领域。 然而&#xff0c;随着越来越多的LLM智能体被部署&#xff0c;一个…...

自动化立库/AGV物流仿真详细步骤

以下是一种可以在预算和周期内实现自动化立库及AGV 方案仿真分析的方法&#xff1a; 一、工具选择 软件工具FlexSim&#xff1a;这是一款流行的离散事件仿真软件。它具有直观的图形用户界面&#xff0c;通过简单的拖拽操作就可以构建自动化立库和 AGV 的模型。其内置的丰富的…...

【题解-Acwing】872. 最大公约数

题目:872. 最大公约数 题目描述 给定 n 对正整数 ai,bi,请你求出每对数的最大公约数。 输入 第一行包含整数 n。 接下来 n 行,每行包含一个整数对 ai,bi。 输出 输出共 n 行,每行输出一个整数对的最大公约数。 数据范围 1 ≤ n ≤ 105, 1 ≤ai, bi ≤ 2109 时空限…...

62.微服务保姆教程 (五) Seata--微服务分布式事务组件

Seata–微服务分布式事务组件 一、什么是分布式事务 1.什么是事务 事务指的是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。 2.本地事务 本地事务是指基于关系型数据库的事务,也称为传统事务。大多数场景…...

【算法练习】归并排序和归并分治

文章目录 1.归并排序1.1 递归版本1.2 非递归版本 2.归并分治2.1 计算数组的小和2.2 计算翻转对 1.归并排序 归并排序的核心步骤是&#xff1a; 拆分&#xff1a;将无序数组不断对半拆分成小块&#xff0c;直到每个小块只剩一个元素&#xff08;自然有序&#xff09;。 合并&a…...

从SOA到微服务:架构演进之路与实践示例

一、架构演进背景 在软件开发领域&#xff0c;架构风格随着业务需求和技术发展不断演进。从早期的单体架构&#xff0c;到面向服务架构(SOA)&#xff0c;再到如今的微服务架构&#xff0c;每一次变革都是为了解决当时面临的核心问题。 二、SOA架构解析 2.1 SOA核心概念 SOA&…...

vue+cesium线流动纹理

index.vue页面 <!--线流动纹理实现--> <template><div id"mapContainerFirst"></div> </template> <script lang"ts" setup> import { init as initPolylineTrailLinkMaterialProperty } from ./PolylineTrailLinkM…...

深度学习·经典模型·SwinTransformer

SwinTransformer 主要创新点&#xff1a;移动窗口&#xff0c;基于窗口的注意力计算 Patch Embedding 下采样打包为Pacth&#xff1a;可以直接使用Conv2d 也可以先打包后使用embedding映射。 Patch Merging 类似池化的操作,压缩图片大小&#xff0c;同时通道数增多&#xff…...

在开发板上如何处理curl: (60) SSL certificate problem

目录 引言 问题解析 解决方法 跳过证书验证 采用证书认证 结语 引言 最近一直推荐学生们在课程实验中使用curl及其libcurl。curl 是一个强大的命令行工具&#xff0c;用于在命令行中进行数据传输。它支持多种协议&#xff0c;如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等。…...

Ansible 铸就 Linux 安全之盾(Ansible Builds Linux Security Shield)

Ansible 铸就 Linux 安全之盾&#xff1a;自动化基线检查与防护 在当今网络安全形势日益严峻的背景下&#xff0c;Linux 系统作为服务器和关键基础设施的核心&#xff0c;其安全防护显得尤为重要。Ansible 作为一款强大的自动化运维工具&#xff0c;能够帮助我们高效、可靠地实…...

字符串(格式化字符串字面值)进行输出

在 Python 中&#xff0c;print(fnew_obs:{new_obs}) 这种形式是使用 f 字符串&#xff08;格式化字符串字面值&#xff09; 进行输出&#xff0c;它可以打印 任何可转换为字符串的数据类型&#xff0c;并且支持在字符串中嵌入表达式。以下是详细说明&#xff1a; 1. 基本功能…...

微服务架构详解:从概念到实践

目录 前言1. 微服务架构概述1.1 什么是微服务&#xff1f;1.2 微服务的核心思想 2. 微服务的优势2.1 可扩展性2.2 高灵活性2.3 容错性和可靠性2.4 高效开发与部署 3. 微服务的挑战3.1 系统复杂性增加3.2 分布式事务和数据一致性3.3 部署和运维的复杂性 4. 微服务的实施与实践4.…...

激光驱鸟:以科技重构生态防护边界

技术原理 激光驱鸟装置的核心机制基于鸟类视觉系统特性。其发射的绿色激光束&#xff08;波长通常为532纳米&#xff09;处于鸟类视网膜敏感光谱范围内&#xff0c;当激光束在特定角度扫描时&#xff0c;会形成动态光斑干扰。鸟类视网膜中视锥细胞对绿色光的高敏感度使其产生应…...

【Python魔法方法(特殊方法)】

在 Python 中&#xff0c;许多运算符都可以进行重载&#xff0c;以下是一些常见运算符及其对应的魔法方法&#xff08;特殊方法&#xff09;&#xff1a; 算术运算符 加法 &#xff1a;__add__ 用于定义对象相加的行为。例如&#xff0c;当你对两个自定义类的实例使用 运算符…...

centos上安装python的3.13版本

在 CentOS 上安装 Python 3.13&#xff08;或其它自定义版本&#xff09;最推荐的方法是通过源码编译安装&#xff0c;不会影响系统自带的 Python2/Python3 环境&#xff0c;也更灵活可控。 以下步骤适用于&#xff1a; ✅ CentOS 7 / 8 / 9 ✅ 安装 Python 3.13&#xff08;…...

实习技能记录【4】-----消息分发中的观察者模型

观察者 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于定义对象之间的一对多依赖关系&#xff0c;让多个观察者对象能够同时监听某个主题对象的状态变化&#xff0c;并在主题对象状态改变时自动通知所有观察者对象。 参考b站博…...

Linux 下编译BusyBox

一、linux下编译 1.拉取busybox源码 git clone https://github.com/mirror/busybox.git 内容如下 2.配置make&#xff0c;建议在linux下单独开一个终端执行 进入busybox源码目录&#xff0c;使用如下命令 make menuconfig 3.报错 解决办法&#xff1a; 安装ncurses sud…...

Linux《进程概念(中)》

在之前的Linux《进程概念&#xff08;上&#xff09;》当中我们已经了解了进程的基本概念以及如何去创建对应的子进程&#xff0c;那么接下来在本篇当中我们就继续来进程的学习&#xff0c;在本篇当中我们要学习到进程的状态、进程的优先级、进程切换、Linux真实的调度算法——…...

Linux Vim 使用 显示行号、替换、查找、多文件打开等骚操作

目录 简述 vim的三种模式 概述 转换方式 文本编辑 命令模式 插入&#xff08;编辑&#xff09;模式 底行模式 搜索关键字 显示行号 替换 多文件打开 简述 vi编辑器是Linux系统下标准的编辑器。 那么简单的理解&#xff0c;就像是Windows下的记事本。 补充&a…...

AimRT 从零到一:官方示例精讲 —— 三、Executor示例.md

Executor示例 官方仓库&#xff1a;executor 配置文件&#xff08;configuration_executor.yaml​&#xff09; 依据官方示例项目结构自行编写YAML配置文件&#xff1a; # 基础信息 base_info:project_name: Logger # 项目名称build_mode_tags: ["EXAMPLE", &quo…...

只把夜莺监控当作告警来使用:一种轻量化的运维实践

只把夜莺监控当作告警来使用&#xff1a;一种轻量化的运维实践 在现代的 IT 运维体系中&#xff0c;监控和告警是两个经常被一同提及的概念。然而&#xff0c;在实际工作中&#xff0c;很多团队对监控系统的需求并不一定全面覆盖指标采集、可视化展示、告警触发等功能&#xf…...

按键精灵安卓ios辅助工具脚本:实用的文件插件(lua开源)

亮点&#xff1a;此lua插件可再android和ios上通用 1、获取文件的属性 2、改变当前的工作路径为dirpath 3、获取当前的工作路径 4、创建文件夹&#xff0c;支持多级创建 5、删除文件夹 6、递归遍历文件夹 7、设置文件的访问时间和修改时间 函数原型&#xff1a;lfs.Attribute(…...

水库现代化建设指南-水库运管矩阵管理系统建设方案

政策背景 2023年8月24日&#xff0c;水利部发布的水利部关于加快构建现代化水库运行管理矩阵的指导意见中指出&#xff0c;在全面推进水库工程标准化管理的基础上&#xff0c;强化数字赋能&#xff0c;加快构建以推进全覆盖、全要素、全天候、全周期“四全”管理&#xff0c;完…...

若依后台管理系统-v3.8.8-登录模块--个人笔记

各位编程爱好者们&#xff0c;你们好&#xff01;今天让我们来聊聊若依系统在登录模块的一些业务逻辑&#xff0c;以及本人的一些简介和心得&#xff0c;那么废话不多说&#xff0c;让我们现在开始吧。 以下展示的这段代码&#xff0c;正是若依在业务层对应的登录代码&#xf…...

Flip PDF Plus Corp7.7.22电子书制作软件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企业级的翻页电子书制作软件&#xff0c;拥有丰富的模板&#xff0c;主题和动画场景&#xff0c;每本书最大页数1000页&#xff0c;每本书的最大大小1GB&#xff0c;即可以帮助企业用户制作好丰富的电子书籍。 …...

公路安全知识竞赛主持稿串词

合 &#xff1a;尊敬的各位领导、各位来宾 、各位选手 &#xff1a; 大家上午 好! 男 &#xff1a;安全就是生命&#xff0c;安全就是效益&#xff0c;安全是一切工作的重中之重&#xff01;安全生产只有满分&#xff0c;没有及格。只有安全生产这个环节不出差错&#xff0c;我…...

vscode 配置qt

工具&#xff1a;vscode、qttools、qtconfigure Search Mode改成基于cmake的。 # 在项目中指定Qt的路径 set(Qt5_DIR "/home/jp/qt-everywhere-src-5.12.9/arm-qt/lib/cmake/Qt5") # 用于指定 Qt5 的安装路径 find_package(Qt5 REQUIRED COMPONENTS Widgets)这样就…...

Node.js 事件循环和线程池任务完整指南​

在 Node.js 的运行体系中&#xff0c;事件循环和线程池是保障其高效异步处理能力的核心组件。事件循环负责调度各类异步任务的执行顺序&#xff0c;而线程池则承担着处理 CPU 密集型及部分特定 I/O 任务的工作。接下来&#xff0c;我们将结合图示&#xff0c;详细剖析两者的工作…...

Java之BigDecimal

BigDecimal 是 Java 中用于高精度计算的类&#xff0c;特别适合需要精确十进制运算的场景&#xff0c;如金融计算、货币运算、概率计算等。 为什么需要 BigDecimal类 解决浮点数精度问题&#xff1a;float 和 double 使用二进制浮点运算&#xff0c;无法精确表示某些十进制小数…...

Qt5与现代OpenGL学习(四)X轴方向旋转60度

把上面两张图像放到D盘1文件夹内&#xff1a; shader.h #ifndef SHADER_H #define SHADER_H#include <QDebug> #include <QOpenGLShader> #include <QOpenGLShaderProgram> #include <QString>class Shader { public:Shader(const QString& verte…...

基于LVS+Keepalived+NFS的高可用负载均衡集群部署

目录 项目功能 2 项目的部署 2.1 部署环境介绍 2.2 项目的拓扑结构 2.3 项目环境调试 2.4 项目的部署 2.4.1 安装软件; 2.4.2 NFS服务器配置 2.4.3 Web节点配置 2.5 项目功能的验证 2.6 项目对应服务使用的日志 项目功能 负载均衡功能 实现原理:基于LVS(D…...

人工智能数学基础(四):线性代数

线性代数是人工智能领域的核心数学工具之一&#xff0c;广泛应用于数据表示、模型训练和算法优化等多个环节。本文将系统梳理线性代数的关键知识点&#xff0c;并结合 Python 实例&#xff0c;助力读者轻松掌握这一重要学科。资源绑定附上完整资源供读者参考学习&#xff01; …...

基于C++的IOT网关和平台1:github项目ctGateway

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

LeetCode 2962.统计最大元素出现至少 K 次的子数组:滑动窗口

【LetMeFly】2962.统计最大元素出现至少 K 次的子数组&#xff1a;滑动窗口 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-subarrays-where-max-element-appears-at-least-k-times/ 给你一个整数数组 nums 和一个 正整数 k 。 请你统计有多少满足 「 nums 中…...

Nginx反向代理的负载均衡配置

Nginx 负载均衡详解 在互联网应用中&#xff0c;随着网站访问量的不断攀升&#xff0c;服务器的服务模式也需要进行相应升级。诸如分离数据库服务器、将图片作为单独服务等操作&#xff0c;这些都属于简单的数据负载均衡&#xff0c;其目的是将压力分散到不同机器上。而来自 We…...

案例速成GO+Socket,个人笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 文章目录 简单知识了解实现一个TCP 服务器与客户端&#xff08;聊天室&#x…...

篮球足球体育球员综合资讯网站模板

采用帝国CMS7.5新版核心。栏目和内容模板超多变换。后台操作简单&#xff0c;安全可靠&#xff0c;性能稳定。整站浏览效果高端大气&#xff0c;可以帮助你快速建立一个适合自己的软件下载类型的站点&#xff01; 演示地址&#xff1a;https://www.tmuban.com/store/620.html …...

HTTP(超文本传输协议)全面总结

HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是万维网&#xff08;World Wide Web&#xff09;应用中的基础协议&#xff0c;用于客户端与服务器之间的数据传输。随着互联网技术的发展&#xff0c;HTTP协议也经历了多个版本的更新&…...

OpenCV 图形API(72)图像与通道拼接函数-----根据指定的方式翻转图像(GMat)函数 flip()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 翻转一个2D矩阵&#xff0c;围绕垂直轴、水平轴或同时围绕两个轴。 该函数以三种不同的方式之一翻转矩阵&#xff08;行和列的索引是从0开始的&a…...

【报错问题】 macOS 的安全策略(Gatekeeper)阻止了未签名的原生模块(bcrypt_lib.node)加载

这个错误是由于 macOS 的安全策略&#xff08;Gatekeeper&#xff09;阻止了未签名的原生模块&#xff08;bcrypt_lib.node&#xff09;加载 导致的。以下是具体解决方案&#xff1a; 1. 临时允许加载未签名模块&#xff08;推荐先尝试&#xff09; 在终端运行以下命令&#x…...

keep-alive具体使用方法

什么是 Keep-Alive <keep-alive> 是 Vue.js 提供的一个内置组件&#xff0c;用于缓存动态组件实例&#xff0c;从而避免重复渲染已加载过的组件。它的主要功能是在切换组件时保留状态和 DOM 结构&#xff0c;提升性能。 工作原理 <keep-alive> 的核心在于维护一个…...

【C++11】包装器:function与bind

前言&#xff1a; 上文我们学了C11中一个新的表达式&#xff1a;Lambda表达式。Lambda表达式可以在函数内部定义&#xff0c;其本质是仿函数【C11】Lambda表达式-CSDN博客 本文我们来学习C11的下一个新语法&#xff1a;包装器 function function的定义为&#xff1a; templat…...

Educational Codeforces Round 178 div2(题解ABCDE)

A. Three Decks #1.由于最后三个数会相等&#xff0c;提前算出来和&#xff0c;%3判断&#xff0c;再判前两个数是否大于 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #…...

mermaid 序列图 解析

sequenceDiagramparticipant UI as 用户界面participant Executor as 任务执行器participant StateMgr as 状态管理器participant Repo as 数据仓库UI->>Executor: 执行任务3350c74e...Executor->>StateMgr: 更新状态为"measuring"StateMgr->>Repo…...

DTO,VO,PO,Entity

1. DTO (Data Transfer Object) 定义 DTO 是数据传输对象&#xff0c;用于在不同系统或层之间传输数据。 目的 简化数据传输&#xff0c;降低耦合&#xff0c;通常只包含需要传输的字段&#xff0c;避免暴露内部实现细节。 使用场景 Controller 和 Service 或 远程调用 之…...