自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (6)
  • 收藏
  • 关注

原创 算法题——最大子序和And有效的括号

本文介绍两个算法题:数组和字符串方面。

2022-08-22 18:39:05 250 1

原创 二叉树遍历实现

;。关于二叉树的遍历方式主要有两种思路:递归和非递归,对于算法题的思路,初学者一般能不用递归就不用递归,但二叉树遍历方式递归方式思路较为简单,代码长度和复杂性远小于非递归,故在此介绍二叉树遍历的递归方式。

2022-08-22 17:31:30 467

原创 三大基础排序算法

本文介绍三种最简单的排序算法:1.冒泡排序;2.选择排序;3.插入排序

2022-08-19 10:39:32 1511

原创 数据结构——常见链表算法题

本文介绍常见的有关链表的算法题,值得一提的是,该代码无需在力扣上,可在本地运行成功。1.反转链表2.移除链表中的重复节点3.查找链表中的中间节点4.找到链表中的倒数第k个节点5.合并两个升序链表,并同样按照升序排列6.判断是否为环形链表7.查找两链表的交点,相交链表8.判断是否为回文链表(空链表和单节点链表也算)......

2022-08-18 17:36:22 771

原创 vscode配置运行C/C++

vscodey运行C++

2022-08-16 10:13:06 364

原创 嵌入式LINUX驱动学习心得--基于正点原子IMX6ULL

笔者基于正点原子IMX6ULL来学习嵌入式LINUX驱动开发,嵌入式LINUX开发大致可分为两个大方向:1.应用开发;2.驱动开发。其中应用开发主要是使用已经编写好的驱动来完成具体的项目应用,对芯片底层相关知识要求较低,程序运行于用户态;驱动开发顾名思义,主要是为应用开发提供各个功能模块的接口,开发者需要对芯片的硬件性能和LINUX内核有一定了解。由于笔者目前只学习了驱动开发故只介绍驱动开发相关知识。...

2022-06-04 19:07:51 2487 1

原创 基于KNN算法的手写体数字识别

基于KNN算法的手写体数字识别KNN分类算法是一种经典的分类算法,属于懒惰学习算法的一种。1.算法原理工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是kNN算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的

2021-12-09 10:03:59 3011 2

原创 LINUX嵌入式学习小结(2)——梦开始的地方:LED的点亮

LINUX嵌入式学习小结(2)——梦开始的地方:LED的点亮前言在上一章内容,我们介绍了Linux嵌入式字符设备驱动框架,这一节将使用上一节的内容来控制IMX6ULL的GPIO端口实现点亮LED操作。一.相关理论知识1.IMX6ULL芯片相关知识这次我们要用到的是IMX6ULL上的GPIO1_1端口的GPIO功能。要控制IMX6ULL的GPIO1_1端口,需要配置相关的五个寄存器。CCM_CCGR1(CCM Clock Gating Register 1 ):外设时钟使能寄存器,用于使能所需要使

2021-10-28 16:00:44 310

原创 Linux嵌入式学习小结(1)——初识字符设备驱动开发

Linux嵌入式学习小结(1)——初始字符设备驱动开发前言笔者前段时间自学了有关LinuxARM开发,但由于有关知识过于繁多,所以在此写下相关小结以作梳理。1.所使用学习资源1.开发板:正点原子阿尔法开发板:IMX6ULL2.编程环境:ubuntu16.43.ARM版所用Linux系统内核:linux-imx-rel_imx_4.1.15_2.1.0_ga注:相关资料大家可自行前往正点原子官网下载2.相关理论知识1.关于LInux驱动开发所谓Linux驱动开发,个人理解其实就是编写相关代

2021-10-22 13:55:22 376

原创 Ubuntu16.4关于apt功能update忽略所有文件问题的解决方案

Ubuntu16.4关于apt功能update忽略所有文件问题的解决方案1.问题出现前几天使用ubuntu进行arm的学习,发现其apt功能无法使用,输入sudo apt-get update指令总是显示忽略所有文件,如下图所示:2.尝试解决解决方案首先在CSDN上搜索相关帖子也问过相关工程师,其中大多数的反馈是这样的,即大致流程是使用ubuntu的图形化界面中的设置-》软件与更新-》让其自动查找最佳服务器进行换源操作。CSDN上推荐解决方案但这个方法我尝试后发现还是不是,它一直卡死在更新缓存

2021-10-11 11:19:37 6544

原创 Python学习笔记

Python学习笔记Python学习笔记(手写扫描版)

2021-04-16 16:43:56 94

原创 零基础入门学习LINUX

笔者在学习LINUX时,记下了此学习笔记,适合小白学习

2021-04-15 16:50:40 108

原创 Python学习笔记——元组与字符串

Python学习笔记——元组与字符串一.元组1.元组的创建1.tuple1=(1,2,3,4,5,6,7)用()来包括元素,列表[]tuple1=[5:]-->(6,7)2.创建空元组tuple1=()注:元组不能被修改,元组的特征是,(逗号)而不是()eg:创建元组的其它格式:temp=(1,)、temp=2,3,4eg:>>>8*(8,)>(8,8,8,8,8,8,8,8,8)2.更新与删除元组1.更新元组eg:temp=('小甲鱼',

2021-04-15 15:31:10 554

原创 Python学习笔记——列表

Python学习笔记——列表一.列表的数据类型列表中包含的数据类型可以是:1.整型2.浮点型3.字符串4.对象二.创建列表1.创建普通列表eg:member=['小甲鱼','小布丁','怡静']2.创建混合列表eg:mix=[1,'小甲鱼',3.14,[1,2,3]]3.创建空列表eg:empty=[]三.向列表添加元素1.一次添加一个:append()方法eg:member.append('僚机武士')2.一次添加多个:extend()方法#使用一个列表扩展另一个

2021-04-12 17:52:31 87

原创 Python学习笔记——流程控制语句

Python学习笔记——流程控制语句本章讲解Python流程控制语句:if、for、while的常用语法。一.if语句1.基本语法######################################注意语句缩进########################################if 条件一: 语句1 elif 条件二: 语句2elif 条件三: 语句3else: 语句4###############################条件表达式(三元操作符)

2021-04-12 10:39:20 156

原创 Python学习笔记——数据类型与常用操作符

Python学习笔记——数据类型与常用操作符作者近期学习了Python,现写下总结。使用的Python版本为3.6,编译器为IDLE:常用快捷键:Alt+n:返回上一条命令。一.数据类型1.1 变量1.变量要先赋值2.命名规则:变量名不能以数字开头3.字符串两边用单引号和双引号都可以,但必须成对出现,打印’、\等特殊字符串,需要转义字符:eg:" \ ’ “,” \ \ "#原始字符串:忽略转义字符的作用,遇到反斜杠自动再加上一个反斜杠,以取消其转义作用eg:str=r'c:\now

2021-03-31 23:05:23 241

原创 Opencv(11)——分水岭算法实例

Opencv(11)——分水岭算法实例什么是图像分割距离变换与分水岭介绍相关API代码演示程序实例:#include <opencv2/opencv.hpp>#include <iostream>#include <math.h>using namespace std;using namespace cv;int main(int argc, char** argv) { char input_win[] =

2021-01-18 17:36:26 415 1

原创 Opencv学习笔记(10)——轮廓分析

Opencv学习笔记(10)——轮廓本篇文章将为进行Opencv图像处理中有关轮廓的相关知识,具体有:1.轮廓查找(find contour in your image)2.多边形逼近——凸包(Convex Hull)3.轮廓几何及特性概括——轮廓周围绘制矩形框和圆形4.图像矩(Image Moments)5.点多边形测试一.轮廓查找1.相关理论知识如上图所示,轮廓查找就是找寻图像中所存在的图像中的轮廓。轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影

2021-01-18 17:21:24 1037

原创 Opencv学习笔记(9)——模板匹配

Opencv学习笔记(9)——模板匹配一.相关原理介绍模板匹配介绍模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)。另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。匹配算法介绍OpenCV中提供了六种常见的匹配算法如下:计算平方不同计算相关性计算相关系数计算归一化平方不同计算归一化相关性计算归一化相关系数

2021-01-14 10:58:26 327

原创 Opencv学习笔记(8)——直方图统计

Opencv学习笔记(8)——直方图统计本章我将为大家介绍直方图的相关知识,相关内容分别有:直方图均衡化、直方图计算、直方图比较,直方图反向投射。一.直方图均衡化1.相关理论1.什么是直方图(Histogram)?图像直方图,是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。2.直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。如何实现,通过上一课中的remap我们

2021-01-04 11:01:51 598

原创 Opencv学习笔记(7)——像素重映射

Opencv学习笔记(7)——像素重映射本章我将为大家介绍Opencv中的像素重映射操作。一.原理介绍1.什么是像素重映射简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。二.API介绍cv::remapRemap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// x 映射表 CV_32FC1/CV_32FC2InputArray map2,// y 映射

2021-01-02 21:45:46 345 1

原创 Opencv学习笔记(6)——霍夫变换

Opencv学习笔记(6)——霍夫变换本文将为大家介绍Opencv中常用的特征识别算法:霍夫变换——直线、霍夫变换——圆。一.霍夫变换—直线1.相关理论Hough Line Transform用来做直线检测。前提条件 – 边缘检测已经完成。平面空间到极坐标空间转换。对于任意一条直线上的所有点来说变换到极坐标中,从[0~360]空间,可以得到r的大小属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现-根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而

2020-12-26 11:38:03 192

原创 Opencv学习笔记(5)——自定义线性滤波,常见卷积算子,Canny边缘检测

Opencv学习笔记(5)——自定义线性滤波,常见卷积算子,Canny边缘检测这一章我将为大家介绍Opencv中的自定义线性滤波、图像边缘处理、Sober算子和Laplance算子以及Canny边缘检测的相关应用。一.自定义线性滤波1.相关原理1.卷积概念卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)2.卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚

2020-12-25 16:10:42 826

原创 Opencv学习笔记(4)——基本阈值操作

Opencv学习笔记(4)——基本阈值操作一.原理介绍1.图像阈值阈值是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型。(Binary segmentation)2.基本阈值类型1.阈值二值化(threshold binary)左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值 。2.阈值反二值化(threshold binary Inverted)左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值 。3.截

2020-12-23 11:35:35 212

原创 Opencv学习笔记(3)——图像金字塔——上采样与降采样

Opencv学习笔记(3)——图像金字塔——上采样与降采样一.相干原理介绍1.图像金字塔我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。高斯金子塔 – 用来对图像进行降采样拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片2.高斯不同(Diff

2020-12-22 11:21:02 305

原创 Opencv学习笔记(2)——模糊处理与形态学基本操作

Opencv学习笔记(2)——模糊处理与形态学基本操作在本节我将为大家介绍Opencv的模糊处理与形态学基本操作一.模糊图像1.模糊原理1.Smooth/Blur 是图像处理中最简单和常用的操作之一。2.使用该操作的原因之一就为了给图像预处理时候减低噪声。3.使用Smooth/Blur操作其背后是数学的卷积计算。注:h(k,l)称为卷积核或卷积算子。图像演示:假设有6x6的图像像素点矩阵。卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值

2020-12-20 18:44:42 556

原创 Opencv图像处理学习笔记(1)——基本API操作

Opencv图像处理学习笔记(1)——基本API操作好久没写学习笔记了,今天我又开了一个新坑,因为作者最近正在学习opencv。所以后面我会不断更新关于Opencv的学习笔记,以供作者今后自查温习所用。在上一篇博客里,我已经介绍了如何安装Opencv并成功在vs2017上搭建程序运行环境,如有疑惑,可自行查阅作者上一篇博客。下面我将开始介绍关于Opencv的基本API操作和关于图像处理的一些原理。一.图像的加载、修改、保存操作1.加载操作(cv::imread)函数API: Mat imread

2020-12-11 12:46:57 1059 1

原创 VS2017搭建opencv开发环境

VS2017搭建opencv开发环境前言:主要介绍如何在VS2017上搭建opencv环境1.官网下载opencv开源库官网地址:https://opencv.org/根据自己的操作系统选择下在什么版本(这里下载windows版本)和不同版本的开源库,博主演示使用3.3.1版本的库下载好opencv库后双击安装到想要安装的地方2.配置环境变量在我的电脑中编辑Path环境变量,首先先复制opencv的bin文件路径:H:\software\opencv3.3.1\opencv\build

2020-12-03 21:48:48 296

原创 Matlab学习笔记(4)——微积分及概率论相关函数讲解

Matlab学习笔记(4)——微积分及概率论相关函数讲解练习一—绘制如下图形参考实现:a=[20 -7 5 10];b=[0 4 12 -3];c=conv(a,b);d=polyder(c);x=-2:0.01:1;y=polyval(c,x);f=polyval(d,x);plot(x,f,'r',x,y,'--','LineWidth',2);xlabel('x');ylabel('f(x)');set(gca,'FontSize',14);...

2020-10-24 21:24:46 1626

原创 Matlab学习笔记(3)—GUI程序设计与图像处理基本操作

Matlab学习笔记(3)—GUI程序设计与图像处理基本操作一.GUI程序设计如果想要开始使用Matlab进行GUI编程,首先需要进入Matlab的GUI界面对GUI有一个基本的认识。1.guide:创建或编辑UI文件guide;% 会打开 GUIDE,这是一个 UI 设计环境。从“Quick Start”对话框中,您可以选择打开以前创建的 UI 或使用其中一个模板创建新 UIguide(filename);%在GUIDE中打开指定的 MATLAB® 图窗文件进行编辑。如果图窗文件不在 MAT

2020-10-22 22:27:12 4373

原创 Matlab学习笔记2——基础绘图

Matlab学习笔记2——基础绘图在进行练习之前,首先提一下一些基本概念,Matlab的图表是由很多个构件所组成的,而这些绘图构件都三个句柄分别来进行控制:分别是控制目标绘制曲线的h=plot(x,y)中h句柄(此句柄名称有程序员自由定义)、控制图像坐标系属性的gca(名称固定),控制绘图图像属性的gcf(名称固定)。练习一——绘制如下图像。参考代码:clc;clear all;t=1:0.01:2;%创建一个从1逐步递增到2,增量为0.01的数组用于绘图f=t.^2;%注意此处为.^2

2020-10-20 23:22:03 1664

原创 Matlab学习笔记(1)--Matlab基础矩阵运算学习

最近接触并学习了Matlab,充分感受到了Matlab的强大,正所谓好记忆不如烂笔头,所以在此写一下学习笔记,以便后续温习。因为Matlab是一个十分重实践的软件,所以学习笔记我打算不按照常规写法来进行,而是通过作者在学习中做的练习题来进行讲解和教学。练习题一——温度单位转换题目要求:编写一个函数文件,1.要求实现当输入一个华氏温度值,可以将其转换为摄氏温度并将转换的值在屏幕上显示出来。2.输入一个数值后按下回车显示输出转换的温度并且可以再次输入温度来进行温度转换,当不输入数值后按下回车后推出循环,结

2020-10-18 21:10:32 724

原创 Github新手快速上手教程

Github新手快速上手教程Github是一个免费、开源的版本控制软件,在协同合作方面可以为程序员提供极大地帮助,也可以说是程序员必须掌握的一个技能。抱着对Github的好奇,我最近也开始接触了Github这一个软件,下面我将分享我的关于Github的学习经历,错误之处恳请在评论处指出。1.准备工作使用Github首先我们应该下载Github这一个软件,推荐大家去官网下载,此软件为免费软件。在安装过程中有一个选项推荐修改:推荐改成下图所示,其它选择默认就好。安装好软件后鼠标右键就会出现Github

2020-10-17 01:00:43 1613 1

原创 物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应

2020-09-16 10:59:18 3073

原创 物联网开发学习笔记——MQTT协议学习

物联网开发学习笔记——MQTT协议学习最近开始接触物联网这一块,写下此篇作为备忘录。MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机

2020-09-16 10:55:42 1068

原创 4G模块应用——发送一封Email

4G模块应用——发送一封Email基于有人公司的4G模块使用串口调试助手控制4G模块从而发送一封Email具体实施1.AT指令对4G模块进行配置具体用到的指令集如下注意:1.第一步进入指令配置模式时,是先输入“+++"(无回车换行),然后4G模块发送一个’a’字符我,我同要立即发送‘a’,收到4G模块发来的“OK”代表成功进入配置模式。2.设置SOCKETA的远程IP和端口:这里我们使用网易163邮箱:调用端口号固定为25。具体设置为:AT+SOCKA=TCP,smtp.163.com,25

2020-09-07 21:13:18 4353

原创 DEBUG——正点原子的一个关于串口中小缺陷的问题

DEBUG——正点原子的串口程序中关于printf小缺陷的问题这篇文章是针对我大概半个多月前遇到的一个关于串口的bug,之前一直不太明白这个bug问题出现在哪,还以为是关于printf()自身的原因。今天因为我编程序过程中必须要用到printf()函数输出数据,所以就仔细地琢磨了一下,终于找到了BUG出现的原因。一.问题出现首先我们先看正点原子的一段例程 if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;/

2020-09-07 20:24:12 1479 1

原创 STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化

STM32CubeMX快速生成STM32F407ZG芯片寄存器初始化STM32CubeMX对于一些使用STM32比较多的开发者比较熟悉,但对于刚接触STM32系列单片机的开发者就可能显得陌生一些。STM32CubeMX是一款由ST公司推出的帮助STM32开发者快速搭建STM32工程文件的图形编程软件。STM32CubeMX的好处在于,开发者不用像以前一样自己编程来对单片机的寄存器进行操作,该过程不仅繁琐并且提高了用户代码的出错性,而使用STM32CubeMX该软件只需在软件里面对直观的芯片图形和配置选项

2020-09-01 01:07:14 2237

原创 STM32串口学习小结

STM32串口学习小结串口是一个单片机常用的外设模块,对于单片机的外部通讯,程序调试都有着十分重要的作用。所以作为嵌入式学习中一个必须掌握的外设模块,这里向大家分享的我学习小结。1.通讯理论知识简要介绍...

2020-08-19 08:46:20 1016

原创 STM32F103串口BUG——一个神奇的BUG

STM32F103串口BUG——一个神奇的BUG昨晚自己写了一个串口程序,主要内容有:串口的初始化以及中断函数(返回接受到的值),已及在主函数使用printf函数。这是写好程序后进行调试,发现一开始串口上可以显示我在主函数中编译的printf函数,串口初始化无误。但是一旦我在串口调试工具中向单片机串口写入一个数,发现串口调试助手并没有显示写入的数并且printf函数中的内容也不再打印,看起来好像程序卡在中断中出不来。我上网查了很多发现有人提到是由于ORE置位产生中断标志的原因,但我按照格式将其标志位清零,

2020-08-14 15:01:42 920

.vscode.zip

,博客配套资源mima:12243672

2022-08-16

Qt串口显示温度上位机

Qt串口显示温度上位机

2022-08-14

sources_origin.list

ubuntu系统中最初始的源信息,用于ubuntu换源失败的情况

2021-10-11

pythonLearning.pdf

手写扫描版

2021-04-16

LINUX学习笔记.pdf

适合零基础LINUX学习者

2021-04-15

MQTTYQX.zip

MQTT协议是物联网开发中常用的通讯协议,MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

2020-09-16

DEMOljws.zip

使用hal函数进行f4工程的搭建后,对于开发者在标准库函数开发中的delay,usart,sys三个函数进行移植,成功放于F407ZG的HAL工程文件中使用。

2020-09-01

32cubemxv6yq1235.zip

32CubeMX对于一些使用STM32比较多的开发者比较熟悉,但对于刚接触32单片机的开发者就可能显得陌生一些。32CubeMX是一款帮助32开发者快速搭建32工程文件的图形编程软件。

2020-09-01

空空如也

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

TA关注的人

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