自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 从零搭建低代码平台(十二)项目最终总结说明

Low-code低代码开发平台低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。主要技术栈是Vue3+Typescript,使用了scene-UI组件库中的15个基础组件、3个场景组件。主要实现了:1)组件的可视化以及可编辑化2)改变全局属性:撤销、重做、导入、导出、预览、清空、复制、剪切、粘贴等等3)改

2022-06-03 14:02:46 1938 8

原创 从零搭建低代码平台(十一)总体功能的大体展示

目录预期的结果组件区预览编辑区预览预览区预览​属性区预览总体预览预期的结果组件区预览编辑区预览预览区预览属性区预览总体预览到这里,我们的低代码平台就已经实现的差不多,可能有一些遗漏的地方,但是我们通过测试,暂时还没有发现相应的问题。...

2022-05-23 15:10:49 723

原创 从零搭建低代码平台(十)编辑区中撤销和重做功能的实现

目录大体介绍具体思路代码实现大体介绍撤销:当移动或者引入组件发生错误的时候能够实现回溯的效果。重做:当撤销的操作发生错误的时候能过实现撤销“撤销”的效果在这一篇文章中我们就是打算实现这个功能,我打算用一个容器来存储所有已经进行的操作,我们通过对这个栈的压栈等操作来实现撤销和重做的功能。具体思路这一部分可能比较难以理解,就是我每次进行一次操作,就给这个操作进行一次命名,并将这一次操作压入栈中,并且给这个栈添加一个指针,在没有进行撤销和重做操作的时候,指针一直指向栈低的元

2022-05-23 14:46:30 1109 2

原创 从零搭建低代码平台(九)实现编辑区的初始化功能

大体介绍在进行组件移动的同时,可能会出现组件移动出错或者是更改组件的zIndex层的问题,只靠预览区已经没有办法进行实现了,所以我们引入了编辑区,这样的话,我们就可以实现重做、撤销、导入、导出、清空、删除等一系列的功能。具体思路我起初打算是在编辑区添加一系列的按钮来实现对组件的所有控制操作,添加的功能按钮主要包括撤销:当移动或者引入组件发生错误的时候能够实现回溯的效果。重做:当撤销的操作发生错误的时候能过实现撤销“撤销”的效果导出:最终引入的组件包括它的位置、样式等通过json数据的

2022-05-23 14:28:16 424

原创 从零搭建低代码平台(八)实现预览区组件拖拽渲染生成辅助线的功能

目录大体介绍具体思路修改useBlockDragger.js函数修改主函数对useBlockDragger.js函数的引用预期结果大体介绍在上一篇文章中,我们实现了预览区组件的拖拽渲染的功能,在一篇文章中,我们将实现在组件拖拽的过程中形成辅助线的功能。(让组件更容易上下左右对齐的功能)。具体思路我们想要实现的辅助线,就是在一个组件靠近另一个组件的水平或竖直的顶、中、底的时候可以触发,形成一组水平或者是竖直的辅助线。我们在上一篇博客中所写的useBlockDragger

2022-04-02 13:49:32 1267

原创 从零搭建低代码平台(七)实现预览区组件拖拽渲染功能

大体介绍在上一篇文章中,我们实现了预览区中组件获取焦点的功能。那么这一篇文章我们将着重介绍一下在预览区中利用拖拽将获取焦点的组件进行移动,从而达到渲染的功能。具体思路我们可以写一个js函数,接收focusData(获取焦点组件的属性),传入之后,我们可以写两个鼠标监听事件,在鼠标点击(mousedown)事件发生后触发两个鼠标监听事件,一个是鼠标移动事件(mousemove),另外一个是是鼠标松开事件(drop)。在鼠标移动事件中,我们可以通过获取鼠标移动的坐标,给传来的focusData的部分

2022-04-02 13:22:26 923

原创 从零搭建低代码平台(六)实现预览区组件获取焦点功能

大体介绍在上一篇文章中,我们实现了预览区中的组件的展示功能,接下来我们打算实现组件的获取焦点的功能,为之后预览区组件的拖拽功能做伏笔。

2022-03-30 17:07:22 1039 2

原创 从零搭建低代码平台(五)实现预览区组件的渲染功能

大体介绍在上一篇文章中,我们实现了组件区的拖拽功能。所以,在这篇文章中,我们要实现在组件区将组件拖拽到预览区,鼠标松开之后,组件可以在预览区进行相应的渲染,即可以让组件在预览区可以展现出来。创建一个组件来实现画布中组件的渲染新建一个editor-block.jsx 文件:// 画布中组件的渲染import {computed, defineComponent, inject, onMounted, onUpdated, ref} from "vue";export default d

2022-03-20 13:31:03 2032 3

原创 从零搭建低代码平台(四)实现组件区到预览区的拖拽渲染

大体介绍我们要实现在组件区点击选中一个想要的组件,并拖动到预览区来进行渲染,松开鼠标就可以完成组件的位置的确定和渲染。设置计算属性,实现与data.json中数据的双向绑定在editor.jsx文件中// 设置计算属性,以便于实现数据的双向绑定 const data = computed({ get() { return props.modelValue }, set(n

2022-03-19 14:30:13 1318 1

原创 从零搭建低代码平台(三)组件区的组件展示

目录大致介绍创建组件区和预览区的对应关系将registerConfig的内容传出,让子组件都可以拿到在组件区将拿到的config进行渲染给组件区渲染的内容添加样式运行后的结果:大致介绍要实现在组件区拿到想要的组件,放到预览区进行展示。可以利用一个组件的映射关系,通过key来实现组件区和预览区的对应关系。在通过渲染函数进行渲染即可。创建组件区和预览区的对应关系因为我们项目的组件库还没有搭建完成,所以现在还不能利用,所以,我们现在先引入element-plus作为我们

2022-03-18 13:18:36 1618

原创 从零搭建低代码平台(二)主界面的搭建

在引入editor组件之后,我们就可以在editor.jsx中进行页面的渲染。划分主要的区域eidtor.jsxsetup(props) { return() => { <div class="editor-left">组件区</div> <div class="editor-top">编辑区</div> <div class="editor-right">属性区</

2022-03-18 12:52:34 944 2

原创 从零搭建低代码平台(一)项目初始化

目录为什么要搭建低代码平台?低代码平台的组成和预期结果项目初始化搭建创建data.json文件创建搭建主界面的大体样式创建一个editor.jsx用来渲染主页面在 App.vue 中引入 data.json在 App.vue 中引入 Editor组件editor.jsx接收传过来的参数我们项目实训的题目是 “开发组件库并实现低代码平台的搭建”,我们小组主要有三个人组成,我负责的部分主要是代码平台的搭建模块。为什么要搭建低代码平台?低代码开发平台(LCDP)

2022-03-17 23:45:18 3426

原创 计算机网络复习——第三章——数据链路层

目录3.1 数据链路层的设计问题3.1.1 提供给网络层的服务3.1.2 成帧四种成帧方法数据链路层是基于物理层不可靠的传输向上层提供可靠的传输,它提供的是相邻两个节点之间可靠的数据传输。本章主要涉及网络模型中第二层(即数据链路层)的设计原则。实现通过一条通信信道连接起来的两台机器,实现可靠有效的完整信息块(称为帧)通信的一些算法。解决通信线路中出错的情况、关于有限的数据传输率、发送时间和接受时间存在的非零延迟等问题。3.1 数据链路层的设计问题数据链路层使用物理层提供的服务

2021-12-31 15:32:53 554

原创 2021SC@SDUSC PALISADE开源库(五)公钥加密模块的示例程序(三)depth-bgvrns.cpp

2021SC@SDUSC目录介绍大体步骤设置相关参数参数迭代对源数据进行编码加密两个密文的同态乘法7个密文的同态乘法无任何再线性化的3个密文的同态乘法3个密文的同态相乘,每次相乘后再线性化运行结果介绍这次是介绍有关depth-bgvrns.cpp的示例程序。这次介绍的 BGVrns 程序演示了深度6的同态乘法和深度3乘法的三种不同方法。大体步骤设置相关参数std::cout << "\nThis code demons..

2021-12-23 09:15:09 201

原创 2021SC@SDUSC PALISADE开源库(五)公钥加密模块的示例程序(二)depth-bfvrns.cpp

2021SC@SDUSC目录介绍大体步骤设置相关参数参数迭代执行密钥生成操作对源数据进行编码加密两个密文的同态乘法7个密文的同态乘法无任何再线性化的3个密文的同态乘法3个密文的同态相乘,每次相乘后再线性化运行结果介绍这次是介绍有关 depth-bfvruns.cpp的示例程序。这次介绍的 BFVrns 程序演示了深度6的同态乘法和深度3乘法的三种不同方法。大体步骤设置相关参数 std::cout << "\nThi..

2021-12-23 09:05:40 747 1

原创 2021SC@SDUSC PALISADE开源库(五)公钥加密模块的示例程序(一)advanced-real-numbers.cpp

2021SC@SDUSC目录介绍EXACTRESCALE和APPROXRESCALE两种变体void AutomaticRescaleDemo(RescalingTechnique rsTech)判断是哪一个变体进行操作相关参数的设置输入要参加计算的数据计算 f(x) = x^18 + x^9 + 1运行结果EXACTRESCALEAPPROXRESCALE两种不同的密钥交换算法void HybridKeySwitchingDemo1()相关参数的..

2021-12-13 14:43:44 948

原创 并行计算 SLIC超像素算法(三) OpenMP优化(三)总结与运行结果加速比

目录介绍优化思路总结1. 面向对象与面向过程优化2.化赋值计算操作3.使用缓存替代计算4.优化cache命中率5. 优化多次相同的操作 smid6. 多线程并行7. 对于区域生长算法的并行优化8.信仰优化运行结果及加速比介绍 在这篇博客中,我会总结我们在OpenMP并行优化过程中遇到的问题以及对一些思路的总结,没看过上一篇博客并行计算 SLIC超像素算法(三) OpenMP优化(二)具体优化过程的,建议先看一下才能更好的理解。最后的...

2021-12-13 12:50:02 1754

原创 并行计算 SLIC超像素算法(三) OpenMP优化(二)具体优化过程

目录介绍运行环境算法设计和优化思路1.将RGB颜色空间转化为LAB颜色空间优化思路具体实现2. 计算梯度并寻找聚类中心优化思路具体实现3.对邻域的像素点进行聚类优化思路具体实现4.更新聚类中心连接孤立像素优化思路具体实现介绍在这篇文章中,我将进一步介绍有关OpenMP优化SLIC超像素算法具体步骤,希望大家能看到最后,有所收获。运行环境 操作系统版本 Windows 10、 Ubuntu 20.04...

2021-12-13 12:28:17 3897 18

原创 2021SC@SDUSC PALISADE开源库(二)CKKS讲解系列(六)旋转(rotation)

2021SC@SDUSC目录介绍rotation了解两种基本操作旋转列运行结果旋转行运行结果源代码介绍由于之前我的疏忽,在进行CKKS讲解代码的过程中,忘记介绍rotation(旋转)的部分,所以,现在在这篇博客中。我们将进一步走近有关CKKS旋转的部分,进行进一步的学习。rotation了解 CKKS中的旋转大多就是进行对于矩阵的旋转,通俗一点讲就是,对于矩阵来说,旋转列可能就是将一列元素进行向左或者是向右进行平...

2021-12-05 15:09:14 1328 3

原创 并行计算 SLIC超像素算法(三) OpenMP优化(一)

介绍 这篇博客,我将着手与对于SLIC超像素算法进行并行优化,从而降低运行时间,主要并行算法是利用OpenMP,OpenMP编程也被称为 “傻瓜式” 并行优化编程(对我来说比较友好)。 在介绍OpenMP优化代码之前,可以先看一下SLIC算法的内容,可以查看并行计算 SLIC超像素算法(一) 大致描述和并行计算 SLIC超像素算法(二) 代码分析来进行对算法的回顾和学习。在接下的几篇博客中,我会从 代码逻辑 、 算法本身、 并行优化、 SIM...

2021-11-29 20:09:18 895 8

原创 2021SC@SDUSC PALISADE开源库(三)CKKS代码分析(三)高级代码步骤介绍

2021SC@SDUSC目录介绍大体步骤1. 启用TIC-TOC定时测量2. 定义要用到的函数以及方法3.“EXACTRESCALE”和“APPROXRESCALE”4.HYBRID切换技术5.缩放操作6. 手动重新调节演示介绍在这一篇博客中,我们主要是介绍了利用PALISADE的主要API来进行CKKS的同态加密解密以及实现的的大体步骤以及部分代码,如果想要看完整代码和运行过程及结果的同学,请查看的我的下一篇博客来进行具体的操作。大体步骤...

2021-11-27 14:40:46 1008

原创 2021SC@SDUSC PALISADE开源库(四)对CKKS源码分析(一)实现简单的加减乘

2021SC@SDUSC目录介绍源码分析生成公钥实现密文之间的加法实现密文之间的减法实现密文之间的乘法总结介绍 这篇文章我将从CKKS的源码进行入手,进一步理解CKKS的内部加密解密以及简单的加减乘等操作。毕竟是我第一次大规模的看别人的开源代码,有什么分析不对的地方希望大家指正,一起加油,一起进步!!!源码分析生成公钥 在我之前博客中PALISADE开源库(二)CKKS讲解系列(三)加密和解密大体介绍了加密解密以及简单的加...

2021-11-16 12:08:42 786

原创 Vue + springboot 表单导入Excel中数据到数据库

目录主要思路准备前端代码关键代码:后端代码运行结果主要思路 前端vue接收Excel文件中的数据,通过js对接收的数据进行规划,把接收的数据规整到一个对象数组中,然后我们把这个数组通过接口传给后端,然后通过后端的springboot框架对接收的数据和数据库进行交互,进而实现对数据的增删改查等操作。准备要在前端vue文件中下载XLSX依赖npm install xlsx然后在vue的 main.js 文件中加入你下载的依赖:impo...

2021-11-15 19:24:42 5355 14

原创 并行计算 Clion配置OpenMP

这篇文章主要是利用Clion来配置OpenMP的运行环境,当然其他编译器也是可以的,但是对比其他编译器,小编觉得还是Clion的配置过程更加简单。下面就是配置OpenMP的大致过程:目录下载配置CMakeList.txt文件编写一个测试程序在运行踩的坑下载MinGW64CLion配置CMakeList.txt文件# openMP 配置FIND_PACKAGE(OpenMP REQUIRED)if (OPENMP_FOUND) mess...

2021-11-13 20:03:20 2051 4

原创 速率、带宽与吞吐量的关系

目录速率带宽吞吐量三者的联系速率速率即数据率或称数据传输率或比特率。比特 1/0 位连接在计算机网络上的主机在数字信道上传输数据位数的速率。单位是 b/s, kb/s, Mb/s, Gb/s, Tb/s带宽“带宽”原本指某个信号具有的频率带宽,即最高频率与最低频率之差,单位是赫兹(Hz)。在计算机网络中,带宽用来表示网络通信线路传送数据的能力,通常是指单位时间内从网络中的某一点到另一点所能通过的 “最高数据率” 。单位是 b/s,...

2021-11-11 09:14:19 11951

原创 比特(bit)与字节(Byte)的联系与区别

1 Byte(字节) = 8 bit(bit)在描述数据传输速率时:千 1 kb/s = 10^3b/s兆 1 Mb/s = 10^3kb/s = 10^6 b/s吉 1 Gb/s = 10^3 Mb/s = 10^6 kb/s = 10^9 b/s太 1 Tb/s = 10^3 Gb/s = 10^6 Mb/s = 10^9 kb/s = 10^12 b/s在描述数据存储容量时:千 1 KB = 2^10 B = 1024 B = 1024 * 8 b兆 1...

2021-11-11 08:35:14 1756

原创 2021SC@SDUSC PALISADE开源库(三)CKKS代码分析(二)简单代码运行及结果

目录介绍程序源码及注解运行结果总结介绍在这一篇文章中,我们主要给出了程序有关的源码,如果在看源码的过程中发现有不懂的地方,可以查看我的上一篇博客PALISADE开源库(三)CKKS代码分析(一)简单代码步骤介绍,如果再不懂的话,可以评论或者私信问我,大家一起加油,fighting!!!程序源码及注解#define PROFILE#include "palisade.h"using namespace lbcrypto;int main() { //指定乘..

2021-11-10 10:39:14 1158 1

原创 2021SC@SDUSC PALISADE开源库(三)CKKS代码分析(一)简单代码步骤介绍

2021SC@SDUSC目录介绍大体步骤1. 设置CryptoContext类1)指定乘法深度2)指定缩放因子的位长3)指定密文中使用的明文槽数4)指定基于FHE标准的期望安全级别5)基于指定参数加密上下文2. 密钥生成1)生成加密密钥2)生成重新线性化键3)生成旋转键3.输入后的编码和加密4. 进行加减乘等操作5. 解密和输出介绍 在这一篇博客中,我们主要是介绍了利用PALISADE的主要API来进行CKKS的同态加密...

2021-11-10 00:11:54 1669

原创 计算机网络知识点(四) 介质访问控制子层

目录第四章 介质访问控制子层4.1 有线局域网协议4.1.1 ALOHA系统4.1.2 CSMA4.2 无线局域网协议4.2.1 无线局域网与有线局域网的不同4.2.2 MACA冲突避免多路访问4.2.3 CSMA/CA4.3 交换机(网桥)4.3.1 工作原理4.3.2 目的地-端口哈希表(转发表)的获得4.3.3 中继器/集线器/网桥/交换机/路由器/网关的对比第四章 介质访问控制子层MediumAccessControl,MAC子层,注意这章的.

2021-11-04 09:22:56 2920 3

原创 2021SC@SDUSC PALISADE开源库(二)CKKS讲解系列(五)重新缩放

2021SC@SDUSC目录介绍模数链的高层视图语境香草的解决方案介绍在 CKKS 的上一篇文章中,PALISADE开源库(二)CKKS讲解系列(四)乘法和重新线性化,我们看到了密文乘法在 CKKS 中是如何工作的,为什么我们需要重新线性化输出以保持密文大小不变,以及如何做到这一点。尽管如此,正如我们将看到的,我们需要一个称为重新缩放的最终操作来管理噪音并避免溢出。这将是本系列的最后一篇理论文章,在下一系列文章中,我们将用 c++ 实现一切!为了理解它是如何工作的,我们首

2021-11-03 14:25:06 1046 5

原创 计算机网络知识点(三) 数据链路层

数据链路层是基于物理层不可靠的传输向上层提供可靠的传输,它提供的是相邻两个节点之间可靠的数据传输。本章主要涉及网络模型中第二层(即数据链路层)的设计原则。实现通过一条通信信道连接起来的两台机器,实现可靠有效的完整信息块(称为帧)通信的一些算法。解决通信线路中出错的情况、关于有限的数据传输率、发送时间和接受时间存在的非零延迟等问题。第三章 数据链路层3.1 数据链路层的设计问题数据链路层使用物理层提供的服务在通信信道上发送和接受比特。完成一些功能:(1...

2021-11-02 19:50:45 1986

原创 计算机网络知识点(二) 物理层

目录第二章 物理层2.1数据通信的理论基础2.1.1 概念2.1.2 计算信道的最大数据传输速率2.2 传导性传输介质2.3 公共电话交换网络2.3.1 本地回路2.3.2 多路复用2.3.3 交换技术第二章 物理层2.1数据通信的理论基础2.1.1 概念1. 带宽(bandwidth):在传输中不会明显减弱的频率的宽度,通常引用的带宽是指从0到使得接收能量保留一半的那个频率位置,是传输介质的一种物理属性。,通常取决于介质的构成、厚度、电...

2021-10-31 16:04:46 1018

原创 计算机网络知识点(一) 引言

目录第一章 引言1.1 基本概念1.2 网络分类1.2.1依据传输模式划分网络1.2.2 依据网络尺度划分网络1.3服务、接口与协议1.3.1协议层次结构1.3.2 服务和协议的关系1.3.3 面向连接与无连接的服务1.3.4 可靠和不可靠的服务1.4 参考模型1.4.1 OSI模型1.4.2 TCP/IP模型1.4.3 OSI模型和TCP/IP模型的比较第一章 引言1.1 基本概念1. 计算机网络(computer...

2021-10-30 16:59:09 2718 1

原创 2021SC@SDUSC PALISADE开源库(二)CKKS讲解系列(四)乘法和重新线性化

2021SC@SDUSC目录介绍基本操作回顾同态操作加法操作​乘法操作(明文 x 密文)密文 - 密文乘法重新线性化介绍在上一篇文章PALISADE开源库(二)CKKS讲解系列(三)加密和解密中,我们看到了如何基于RLWE问题创建同态加密方案,实现了加法和密文 - 明文乘法。虽然执行密文 - 明文乘法很容易,但正如我们将看到的,密文 - 密文要复杂得多。事实上,我们需要处理很多事情才能正确地完成它,例如找到正确的操作,以便一旦解密我们就得到两个密文的乘积...

2021-10-27 16:31:27 1196 2

原创 并行计算 SLIC超像素算法(二) 代码分析

1111

2021-10-23 17:21:38 3950 5

原创 并行计算 SLIC超像素算法(一) 大致描述

SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像素(superpixel)。目录基本思想实现SLIC算法1.图像的预处理2.初始化聚类中心3.优化初始聚类中心4.计算像素点与聚类中心的距离5.像素点分类6.重新计算聚类中心7.迭代4~6的过程8.聚类优化基本思想将图像从RGB颜色空间转换到CIE-Lab颜色空间,对应每个像素的(L,a,b)颜色值和(x,y)坐标组成一个5维向量V [L, a, b, .

2021-10-20 17:49:37 4586 2

原创 2021SC@SDUSC PALISADE开源库(二)CKKS讲解系列(三)加密和解密

介绍在上一篇文章PALISADE开源库(二)CKKS讲解系列(二)完整编码和解码中,我们看到了如何实现CKKS的编码器和解码器,这使得我们能够将向量转化为多项式,反之亦然。这一步是必然的,因为我们将看到使用多项式要比直接使用向量更有效地构建同态加密方法。...

2021-10-18 15:57:31 1883 2

原创 并行计算 用MPI进行分布式内存编程(三)I/O处理

下面给出的并行梯形积分法程序中有个严重的不足:只能用于1024个梯形计算[0, 3]区间内的积分。与简单地输入三个新值相比,编译和重新编辑代码这种方法的工作量是相当大的、因此我们要解决用户输入的问题。顺带把用户输出的问题也一并解决。输出大部分的MPI实现都允许所有进程执行printf和fprintf,但是MPI的实现并不提供对这些I/O设备访问的自动调度。也就是说,如果多个进程试图写标准输出stdout,那么这些进程的输出顺序是无法预测的,甚至会发生一个进程的输出被另一个进程打断的情况。梯形积分

2021-10-14 18:48:47 700

原创 并行计算 用MPI进行分布式内存编程(二)梯形积分法

梯形积分法用梯形积分法来估计函数 y = f(x) 的图像中,两条垂直线与x轴之间的区域大小,见下图。基本思想是,将x轴的区间划分为n个等长的子区间。然后估计介于函数图像及每个子区间内的梯形区域的面积。如下图的右图,设子区间的端点为 xi 和 x(i+1),那么子区间的长度为 h = x(i+1) - x(i)。同样,两条垂直线段的长度分别为 f(xi) 和 f(x(i+1)),那么梯形区域的面积就为: 梯形面积 = h/...

2021-10-14 15:06:16 1744

原创 并行计算 用MPI进行分布式内存编程(一)预备知识

Linux编译c文件的基本命令编译程序$ mpicc -g -Wall -o mpi_hello mpi_hello.c启动程序$ mpicc -n <number of processes> ./mpi_hello$ mpicc -n 1 ./mpi_hello$ mpicc -n 4 ./mpi_hello简单的程序(打印来自进程问候语句的MPI程序)#include <stdio.h>#include <string.h>#i

2021-10-13 13:27:43 1505 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除