自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【QT(六)】—— 常用控件(三)

QLabel 是一个多功能文本框控件,支持文本、图片显示和伙伴关联功能。主要特性包括:支持纯文本、富文本和Markdown三种文本格式;可通过pixmap属性显示图片并自动拉伸;提供对齐方式、自动换行、缩进和边距等文本布局控制;支持通过buddy属性关联其他控件实现快捷键操作。此外还介绍了QLCDNumber数字显示控件的基本属性,包括数值显示、进制格式和显示风格等。这些控件为Qt界面开发提供了丰富的文本和数字展示功能。

2025-12-19 21:18:31 745 3

原创 【QT(五)】—— 常用控件(二)

本文介绍了Qt中按钮控件的常用属性和使用方法。首先说明QPushButton、QRadioButton等按钮类都继承自QAbstractButton,而QAbstractButton又继承自QWidget。文章重点讲解了QPushButton的图标设置(icon和iconSize)、快捷键设置(Shortcut)和连续触发属性(autoRepeat),并提供了示例代码演示如何通过这些属性增强按钮功能。此外还介绍了QRadioButton单选按钮的checkable、checked和autoExclusive

2025-12-19 21:18:15 641

原创 【QT(四)】—— 常用控件(一)

本文介绍了Qt控件的基本属性和API使用方法,主要内容包括: 控件启用状态(enabled):通过setEnabled()控制控件可用性,并演示了按钮交互示例 位置/大小属性(geometry):讲解QRect坐标系和使用方法,实现按钮位置控制功能 窗口边框(windowFrame):分析geometry和frameGeometry的区别及适用场景 窗口标题(windowTitle)和图标(windowIcon):介绍设置窗口外观的基本方法 文章通过具体代码示例展示了Qt控件的常用属性和API操作,帮助开发

2025-12-12 21:33:27 676

原创 【QT(三)】—— 信号和槽

Qt信号与槽机制解析 摘要:Qt框架通过信号与槽机制实现控件间通信。信号由用户交互事件触发(如按钮点击),槽则是响应信号的函数。通过connect()将信号与槽绑定,形成"事件→信号→槽函数"的调用链。开发者可自定义信号(需声明为signals)和槽函数(带slots修饰),使用emit触发信号。槽函数参数必须少于等于信号参数,类型需匹配。UI设计器可自动生成命名规范的槽函数(on_控件名_信号名)。该机制支持disconnect解除绑定,并兼容lambda表达式简化代码。信号与槽实现了

2025-12-12 21:33:08 1129

原创 【QT(二)】—— 初识QT

本文介绍了使用Qt创建简单GUI项目的基本方法,重点讲解了文本框、输入框和按钮三种基础控件的两种创建方式:图形化界面拖拽和代码创建。通过示例代码演示了如何设置控件文本、位置等属性,并解释了Qt的对象树内存管理机制和坐标系系统。文章还说明了控件命名的查看方法,以及通过代码操作图形化界面创建的控件的方式。这些基础知识为后续更复杂的Qt开发奠定了基础,帮助开发者快速上手Qt界面编程。

2025-12-03 10:48:28 967 28

原创 【QT(一)】—— QT Creator的安装与使用

本文介绍了Qt框架的核心特性与安装配置流程。Qt作为跨平台C++开发框架,支持Windows/macOS/Linux等多系统部署,提供GUI组件、网络通信等丰富功能库。安装指南包含官网/镜像源下载路径、账号注册、组件选择(建议全选)及无中文路径配置说明,并详细演示了环境变量设置方法。通过创建空项目案例,展示了Qt Creator的项目模板选择、类信息填写等步骤,解析了自动生成的main.cpp、widget.h等核心文件结构。最后说明运行方式及临时文件生成机制,帮助开发者快速上手Qt开发环境搭建与基础使用。

2025-12-03 10:47:01 1089 14

原创 我爱学算法之—— 多源BFS

摘要:本文介绍了多源BFS算法及其应用。多源BFS从多个起点同时开始遍历,适用于解决最短路径、连通区域等问题。通过三道LeetCode题目(01矩阵、飞地的数量、地图中的最高点)展示了多源BFS的实现方法。算法核心是将所有起点加入队列,按层级扩散,确保高效计算。代码实现展示了如何处理矩阵遍历、边界条件及标记优化,适用于大规模网格问题求解。

2025-11-23 22:25:39 1369 23

原创 我爱学算法之—— BFS之最短路径问题

本文介绍了三道基于广度优先搜索(BFS)的算法题目:迷宫最短出口、最小基因变化和单词接龙。 迷宫最短出口:使用BFS从入口开始遍历迷宫,记录每个位置到入口的步数,最终在边界搜索最短路径。 最小基因变化:将基因序列视为节点,通过单字符变化生成相邻节点,在基因库中用BFS寻找最小变化次数。 单词接龙:与基因变化类似,从起始单词出发,通过单字符变化在字典中寻找最短转换序列。 三题均采用BFS框架,结合哈希表优化访问判断,重点考察状态转换和最短路径搜索。其中迷宫问题关注边界条件,后两题则通过字符串变换实现状态转移。

2025-11-23 22:25:26 1408 23

原创 我爱学算法之—— BFS之FLoodFill算法

这篇技术文章主要介绍了FloodFill算法及其应用。FloodFill是一种从指定起点出发,通过递归或迭代遍历相邻且满足条件的算法,通常使用BFS(广度优先搜索)实现。文章通过四道LeetCode题目详细讲解了FloodFill的应用: 图像渲染:从起点开始,对相邻同色区域进行染色处理。 岛屿数量:统计网格中相邻陆地组成的岛屿数量。 岛屿最大面积:计算网格中最大岛屿的面积。 被围绕的区域:处理字符矩阵中特定区域的问题。 文章提供了清晰的算法思路和完整的C++代码实现,帮助读者理解和掌握FloodFill算

2025-11-21 22:56:08 1091 23

原创 我爱学算法之—— 优先级队列(堆)

这篇文章总结了使用优先级队列(堆)解决的四类算法问题。1)最后一块石头重量:通过大堆每次取出最重的两块石头碰撞;2)数据流第K大元素:用小堆维护前K大元素;3)前K个高频单词:自定义比较器实现按频率和字典序排序;4)数据流中位数:用大小堆分别存储前后半数据。堆结构能高效处理动态数据的排序和查询问题,核心在于选择合适的堆类型和维护堆的平衡关系。

2025-11-21 22:55:58 911 13

原创 我爱学算法之—— 队列

本文介绍了四种基于层次遍历的二叉树算法题解。1.N叉树的层序遍历:使用队列实现,依次处理节点及其子节点。2.二叉树的锯齿形层序遍历:在层序遍历基础上增加方向判断,奇数层反转输出。3.二叉树最大宽度:通过节点编号计算每层宽度,使用pair存储节点和编号。4.树行中找最大值:统计每层最大值放入结果数组。这些题目展示了层序遍历的不同应用场景和变体解法。

2025-11-18 21:38:56 1046 2

原创 我爱学算法之—— 栈

本文介绍了几道使用栈结构解决的字符串相关问题。主要包括: 删除相邻重复项 - 使用栈模拟删除过程,遇到相同字符则弹出栈顶 比较含退格的字符串 - 用栈处理退格操作后比较结果字符串 基本计算器II - 使用数字栈和运算符栈处理不同优先级的算术运算 字符串解码 - 使用数字栈和字符串栈处理嵌套的编码字符串展开 这些题目都利用了栈结构"后进先出"的特点,通过模拟操作过程来解决问题,展示了栈在处理字符串操作中的灵活应用。

2025-11-18 21:38:41 715

原创 我爱学算法之—— 字符串

本文解析了四个字符串处理算法题:1)最长公共前缀通过逐位比较字符串;2)最长回文子串采用中心扩展法;3)二进制求和模拟加法运算;4)字符串相乘通过逐位相乘并处理进位。每个问题都提供了详细思路和C++实现代码,涵盖字符串比较、回文检测、高精度计算等算法技巧。

2025-11-16 22:30:10 1088 26

原创 我爱学算法之—— 哈希

本文解析了几种常见的哈希表应用算法题,包括两数之和、字符重排判断、重复元素检测和字母异位词分组。通过哈希表优化,这些问题的查找时间复杂度均可降至O(n)。具体实现展示了如何利用哈希表存储关键信息(元素值、出现次数或排序后的字符串)来高效解决问题,涵盖从简单查找(两数之和)到复杂分组(字母异位词)的多种应用场景,体现了哈希表在算法优化中的核心作用。

2025-11-16 22:29:58 1498 11

原创 我爱学算法之—— 链表

本文介绍了四道链表相关的LeetCode题目及解法:1.两数相加(通过模拟加法处理进位);2.两两交换链表节点(使用虚拟头节点辅助);3.重排链表(分三步:找中点、反转后半段、合并);4.合并K个升序链表(使用优先队列实现)。每道题都提供了详细思路和C++代码实现,涵盖链表操作的常见技巧如虚拟头节点、快慢指针、头插法等。

2025-11-12 15:29:04 672 16

原创 初识MYSQL —— 用户管理与访问

MySQL用户与权限管理摘要 MySQL提供了完善的用户权限管理机制。用户信息存储在mysql.user表中,包含用户名、主机限制、加密密码和权限字段。通过CREATE USER创建用户,DROP USER删除用户,GRANT和REVOKE管理权限,遵循最小权限原则确保安全。MySQL支持本地和远程访问,也可通过C API接口编程访问,使用mysql_init初始化连接,mysql_real_connect建立连接,mysql_query执行SQL语句,并通过mysql_store_result获取查询结果

2025-11-12 15:25:05 978 23

原创 初识MYSQL —— 事务

事务是数据库操作的重要特性,主要解决CURD操作无法保证的原子性、一致性、隔离性和持久性问题。MySQL中只有InnoDB引擎支持事务操作,支持自动和手动两种提交方式。事务通过begin/start开始,通过commit提交或rollback回滚。MySQL提供四种隔离级别(读未提交、读已提交、可重复读和串行化)来控制并发事务间的相互影响。同时,数据库通过原子性、隔离性和持久性三大特性来保障业务逻辑的一致性。事务机制确保了数据库在复杂操作下仍能保持数据的完整性和可靠性。

2025-11-10 23:22:22 1181 33

原创 初识MYSQL —— 索引

MySQL索引原理与优化摘要 索引本质是数据库的"目录",通过创建索引可大幅提升查询效率(百倍级提速),但会降低写入性能。MySQL采用B+树结构实现索引,其核心设计考虑磁盘I/O优化: 存储结构: 数据以16KB页为单位存储,减少随机IO 通过缓冲池预加载热点数据页 使用双写机制保证写入原子性 索引实现: InnoDB采用聚簇索引(数据与索引共存),叶子节点直接存储记录 MyISAM使用非聚簇索引(索引与数据分离),需二次查找 普通索引存储主键值,通过回表查询获取完整数据 性能优化:

2025-11-10 23:22:12 869 23

原创 初识MYSQL —— 复合查询

这里简单回顾一下基本查询的内容:(whereorder bygroup by等等)这里依旧使用empdeptno和salgrade三张表来做练习J这两个筛选条件要同时满足。根据要求,按照部门号升序、雇员工资降序排序。按照年薪进行降序排序;(根据实际情况来定)在emp表中,comm列是存在NULL的,这里就要进行判断;使用ifnull函数,如果为NULL就返回0。这里order by执行顺序在select之后,可以使用别名。根据需求,我们应该要想到一个问题:工资最高的员工可能有很多人;(不能使用。

2025-11-06 23:00:42 979 32

原创 初识MYSQL —— 内置函数

本文介绍了MySQL中常用的日期、字符串和数学函数。日期函数包括获取当前日期时间(date/time/timestamp/now)、日期计算(date_add/sub/datediff)等。字符串函数涵盖字符集获取(charset)、拼接(concat)、查找替换(instr/replace)、大小写转换(ucase/lcase)、截取(left/substring)、去空格(trim)等操作。数学函数包含绝对值(abs)、取整(ceiling/floor)、随机数(rand)、截断(truncate)等数

2025-11-06 23:00:19 987 19

原创 初识MYSQL —— 基本查询

本文介绍了MySQL表数据的增删改查操作,重点讲解了插入和查询功能。插入数据使用INSERT语句,支持单行、多行插入以及插入冲突时的更新操作。查询数据使用SELECT语句,包括全列查询、指定列查询、表达式查询和结果去重。还详细介绍了WHERE条件筛选,包括比较运算符(=、<=>、IS NULL等)和逻辑运算符(AND、OR、NOT)的使用方法,并提供了英语不及格学生和语文成绩区间查询等实际案例。这些操作是数据库最基本的CRUD功能,为后续复杂查询和数据操作奠定了基础。

2025-11-03 23:00:22 1334 19

原创 深入了解linux网络—— 守护进程

本文介绍了Linux系统中的进程组、会话、控制终端和守护进程等核心概念。主要内容包括: 进程组:包含一个或多个进程的集合,每个进程组有唯一的PGID。组长进程的PID等于PGID。 会话:由一组相关进程组成,用于完成同一任务。每个会话有唯一的SID,会话首进程通常是bash进程。可以通过setsid创建新会话,但调用进程不能是进程组组长。 控制终端:终端设备被会话首进程打开后成为控制终端,负责信号分发和输入输出管理。前台进程组接收终端输入和Ctrl-C等信号,后台进程组则受限。 作业控制:通过Ctrl-Z、

2025-11-03 23:00:00 700 29

原创 我爱学算法之—— 分治-归并

本文介绍了归并排序在解决数组相关问题中的应用。第一部分通过排序数组问题回顾了归并排序的基本实现,详解了递归划分和合并有序数组的过程。第二部分利用归并排序高效统计逆序对总数,通过升序排序时计算跨区间逆序对数量。第三部分扩展了逆序对问题的应用,解决"计算右侧小于当前元素个数"问题,通过维护元素原始下标和降序排序来统计每个位置的具体逆序对数量。这些案例展示了归并排序在分治算法中的典型应用,既能排序数组又能高效统计特定数值关系。

2025-10-24 23:28:12 841 33

原创 深入了解linux网络—— 自定义协议(下)

这篇文章介绍了如何基于TCP协议实现一个网络版计算器服务端。主要内容包括: 使用jsoncpp库实现Request和Response类的序列化与反序列化 通过自定义协议报头(包含有效载荷长度和分隔符)保证报文完整性 在Socket类中实现Recv和Send方法进行数据收发 在Protocol类中实现Encode和Decode方法处理协议报头 使用回调函数机制处理业务逻辑,完成计算请求 实现思路是:接收请求时去除协议报头并反序列化,处理业务后序列化结果并添加协议报头发送回客户端。

2025-10-24 23:07:19 966 42

原创 深入了解linux网络—— 自定义协议(上)

本文介绍了网络通信中序列化与反序列化的概念,以及TCP协议全双工特性。主要内容包括: 序列化与反序列化:将结构化数据与字符串相互转换,这是应用层协议的基础,确保通信双方能正确解析数据。 TCP全双工特性:通过读写缓冲区实现同时收发数据,read/write等接口本质是数据在内核与应用层之间的拷贝。 Socket封装实现:采用模板设计模式,定义基类Socket和派生类TcpSocket,封装socket创建、绑定、监听等操作。 TcpServer实现:通过智能指针管理Socket对象,封装accept操作,获

2025-10-09 22:53:01 1319 41

原创 初识MYSQL —— 表的约束

摘要:本文介绍了MySQL中常见的约束类型,包括空属性、默认值、列描述、zerofill填充、主键、自增长、唯一键和外键。重点讲解了主键的唯一性和非空特性,复合主键的使用,以及外键在维护表间数据一致性中的作用。通过实际案例说明了如何设置各类约束,并分析了约束违反时的错误情况,帮助读者理解数据库约束在保证数据完整性方面的重要性。这些约束机制共同确保了数据的合法性和业务逻辑的正确性。

2025-10-09 22:52:47 1100 39

原创 初识MYSQL —— 数据类型

MySQL数据库支持多种数据类型,主要分为数值类型、文本类型、时间和日期类型、枚举类型等。数值类型包括整数类型(TINYINT、SMALLINT等)、bit类型和浮点数类型(FLOAT、DOUBLE、DECIMAL)。文本类型有定长字符串CHAR和变长字符串VARCHAR。时间和日期类型包括DATE、DATETIME和时间戳TIMESTAMP。枚举类型包括单选ENUM和多选SET,分别用于存储固定选项中的单个或多个值。不同类型在存储空间、精度和应用场景上有所不同,合理选择数据类型对数据库性能至关重要。

2025-10-07 23:02:44 1120 23

原创 深入了解linux网络—— TCP网络通信(下)

本文介绍了基于TCP通信实现的两个功能:翻译功能和远程Shell。翻译功能通过复用Dict类实现,在TcpServer中新增函数回调机制处理客户端请求。远程Shell功能则通过设计InetShell类,使用白名单机制限制可执行命令,并通过popen执行安全命令后返回结果。两个功能都通过多线程TCP服务器实现,展示了TCP通信在实际应用中的灵活运用。

2025-10-05 19:01:12 1093 36

原创 深入了解linux网络—— TCP网络通信(上)

本文介绍了TCP通信的基本流程,重点讲解了服务端的实现步骤。与UDP通信相比,TCP通信需要额外设置监听状态,并通过accept获取连接请求。服务端需要创建套接字、绑定端口号、设置监听状态后,使用accept返回的文件描述符进行读写操作。文章提供了C++封装示例代码,并演示了如何使用telnet命令测试服务端功能。

2025-10-04 21:36:37 1331 21

原创 初识MYSQL —— 库和表的操作

摘要: 本文介绍了MySQL数据库和表的基本操作。主要内容包括: 库操作:创建数据库(设置字符集/校验集)、查看/修改/删除数据库,以及备份与恢复。 表操作:创建表(定义字段及属性)、查看表结构与数据、修改表(新增/删除字段)。 字符集:编码集与校验集的作用及配置方法。 关键命令:如show databases、create table、alter table等,并附示例演示。 适用于MySQL初学者快速掌握基础库表管理操作。

2025-10-04 21:36:14 1215 26

原创 我爱学算法之—— 分治-快排

这篇文章介绍了两种排序算法:颜色分类和快速排序。对于颜色分类问题,使用三指针法将数组划分为0、1、2三个区域,时间复杂度O(n)。对于快速排序,采用挖坑法并优化基准值选择和分区过程,将数组划分为小于、等于和大于基准值的三个区域,避免最坏情况下的O(n^2)复杂度。两种算法都通过指针移动和交换操作实现高效排序,适用于不同场景。

2025-10-02 23:15:55 1342 34

原创 深入了解linux网络—— 基于UDP实现翻译和聊天功能

本文基于UDP网络通信实现了一个简单的翻译服务和聊天室功能。通过创建Dict类加载英汉词典文件,建立单词映射关系,并提供翻译方法。在UdpServer类中引入回调函数机制,处理客户端请求时调用翻译功能并返回结果。文章详细介绍了字典加载、翻译功能实现、回调函数设计等关键环节,展示了如何将UDP通信与业务逻辑相结合,为后续扩展功能(如获取客户端信息)提供了灵活性。

2025-10-02 23:15:39 1824 23

原创 我爱学算法之—— 模拟(下)

这篇文章解析了两道算法题目:外观数列和数青蛙。对于外观数列问题,通过n-1次行程编码(统计连续字符出现次数并拼接)生成第n个外观数列字符串。数青蛙问题则通过哈希表统计字符出现顺序,确保有效蛙鸣并计算最少青蛙数量,若字符串无效则返回-1。两题均通过遍历字符串和状态统计实现,代码展示了具体处理逻辑。文章提供了清晰的算法思路和C++实现代码,帮助读者理解题目解法。

2025-09-28 11:37:30 805 24

原创 我爱学算法之—— 模拟(上)

本文解析了三道LeetCode算法题: 替换问号:将字符串中的'?'替换为小写字母,确保相邻字符不相同。遍历字符串,遇到'?'时选择与前后字符不同的字母替换。 提莫攻击:计算艾希中毒总时间。遍历攻击时间数组,每次攻击中毒时间为min(持续时间,两次攻击间隔),最后一次攻击直接加持续时间。 Z字形变换:将字符串按N字形排列后按行读取。可用二维数组模拟或数学规律求解:首尾行字符下标呈等差数列,中间行由两个交替的等差数列组成。 三题均通过模拟或数学分析解决问题,注意边界条件和特殊情况处理(如单个字符或单行情况)。

2025-09-28 11:36:44 949 32

原创 初识MYSQL —— 数据库基础

本文介绍了数据库的基本概念,重点解析了MySQL数据库的本质和工作原理。数据库是结构化存储数据的仓库,相比文件存储具有更好的查询、管理和安全性。MySQL采用C/S架构,客户端mysql与服务端mysqld通过网络交互。在Linux中,数据库对应目录,数据表对应文件,数据操作由mysqld完成。文章还展示了数据库创建、表创建和数据操作的实际示例,并阐述了数据库服务器、数据库和表之间的层级关系。

2025-09-25 21:18:33 1188 29

原创 深入了解linux网络—— UDP网络通信

本文介绍了如何使用UDP协议进行网络通信的服务器端实现。主要内容包括: 创建套接字:通过socket()函数创建UDP套接字,参数设置为AF_INET(网络通信)和SOCK_DGRAM(面向数据报),返回文件描述符。 绑定IP和端口:使用bind()函数将套接字与指定的IP地址和端口号绑定,其中IP地址需要从字符串转换为网络字节序格式。 实现了一个UdpServer类来封装这些操作,包括初始化套接字、绑定地址等核心功能。 服务器程序通过命令行参数接收IP和端口号,创建UdpServer对象并初始化后进入运行

2025-09-25 21:14:12 1715 29

原创 深入了解linux网络—— 网络编程基础

本文介绍了网络通信中的IP地址、端口号和socket编程基础。IP地址标识主机唯一性,端口号标识主机中的唯一网络进程。端口号范围分为知名端口号(0-1023)和动态分配端口号(1024-65535)。文章详细讲解了网络字节序概念及转换函数,并介绍了socket编程中的关键接口和数据结构,包括socket()、bind()等函数以及sockaddr、sockaddr_in结构体。最后说明了这些结构体之间的关系和使用方法,为网络编程提供了基础知识框架。

2025-09-23 19:57:38 3762 45

原创 初识MYSQL —— mysql的安装

本文介绍了在CentOS 8.2系统下安装MySQL数据库的完整过程。主要内容包括:1)检查并卸载系统中已有的MariaDB服务;2)从MySQL官网获取yum源并安装;3)解决安装过程中可能遇到的问题(如找不到包、秘钥不匹配等);4)配置MySQL服务并设置免密登录;5)查看和修改MySQL的配置文件my.cnf,包括端口号等参数设置。文章提供了详细的命令行操作步骤和截图说明,适合初学者按照指引完成MySQL的安装和基本配置工作。

2025-09-23 19:56:41 1245 24

原创 深入了解linux网络—— 网络基础

计算机网络发展经历了从独立计算机到网络互联的过程,最初计算机相互独立,后来通过交换机和路由器连接形成局域网(LAN)和广域网(WAN)。通信需要约定协议,ISO制定了OSI七层网络模型,但实践中简化为TCP/IP五层协议(物理层、数据链路层、网络层、传输层和应用层)。协议本质是通信双方约定的结构化数据类型,协议栈分层设计降低了系统耦合度,便于维护和扩展。网络传输中,数据通过封装和解包在各层协议间传递,MAC地址用于识别局域网中的设备,IP地址则标识网络中的不同主机。跨网络传输时,路由器和交换机负责数据转发,

2025-09-21 22:24:08 858 40

原创 我爱学算法之—— 位运算(下)

本文介绍了两个位运算相关的算法问题: 只出现一次的数字 II:给定数组中只有一个元素出现一次,其余出现三次。通过统计每个bit位出现次数并模3,可以找出唯一数字。时间复杂度O(n),空间O(1)。 消失的两个数字:在1到N的数组中找缺失的两个数字。利用异或性质,先求出两数的异或值,再根据最低位1将数组分成两组分别异或得出结果。同样满足O(n)时间和O(1)空间要求。 两个问题都巧妙地运用位运算特性,在有限条件下高效解决问题。

2025-09-20 18:39:16 916 24

空空如也

空空如也

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

TA关注的人

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