自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python 零基础入门——字典与集合

本文介绍了Python中字典(dict)和集合(set)两种核心数据类型。字典通过键值对存储数据,具有快速查找、键不可重复等特点,详细讲解了创建、增删改查及遍历操作。集合用于存储唯一值,支持去重和数学运算(交并差),阐述了创建、添加删除元素等基本操作。文章对比了两者的异同:字典存储键值对而集合只存值,字典有序(3.7+)而集合无序,但都具有极快的查找速度。最后指出可哈希对象(如数字、字符串)才能作为字典键或集合元素。全文采用通俗语言,适合Python初学者快速掌握这两种重要数据结构。

2026-04-18 19:37:48 6303 1

原创 Python 零基础入门——列表与元组

摘要: Python中的列表(list)和元组(tuple)是两种常用容器,用于存储有序数据。列表可变,支持增删改操作,通过[]创建;元组不可变,通过()创建,适合存储固定数据。两者均支持索引访问、切片、遍历等操作,且可互相转换。列表适用于频繁修改的场景,而元组因不可变性更安全高效,常用于函数返回多值(实际返回元组)。核心区别在于可变性与性能,开发者可根据需求选择合适容器。

2026-04-18 19:37:41 6850

原创 Python 零基础入门——基础语法(三)

本文介绍了Python中函数的基本概念和使用方法。函数是可重复调用的代码块,通过参数接收输入,经过处理后返回结果。文章详细讲解了函数的定义语法、参数传递、返回值、变量作用域等核心概念,并演示了链式调用、嵌套调用和递归等高级用法。函数能提高代码复用性、可读性和可维护性,是Python编程的重要工具。通过学习本文,读者可以掌握如何定义和调用函数,理解参数传递机制,并学会使用函数解决实际问题。

2026-04-13 23:04:27 7832

原创 Python 零基础入门——基础语法(二)

本文介绍了Python中的流程控制语法,主要包括条件语句和循环语句。在条件语句部分,详细讲解了if/elif/else的分支结构、缩进规则和空语句pass的用法,并通过闰年判断等实例进行演示。循环语句部分则涵盖了while循环和for循环的基本用法,以及continue和break关键字的作用机制。最后通过一个"人生重开模拟器"的综合案例,展示了如何运用流程控制实现复杂的逻辑判断和循环处理。文章强调Python使用缩进而非大括号来划分代码块,并提醒注意避免混用Tab和空格缩进。

2026-04-13 23:04:11 7651

原创 我爱学算法之——动态规划(四)

本文解析了三道股票买卖问题的动态规划解法。第一题考虑冷冻期,使用三种状态表示持有、冷冻和可交易状态;第二题加入手续费,使用两种状态表示持有和不持有股票;第三题限制最多两次交易,通过六种状态跟踪不同交易次数下的最大收益。每道题都详细阐述了状态转移方程、初始化和返回值选择,并提供了相应的C++代码实现。这些解法通过状态机模型有效处理了不同约束条件下的股票买卖问题。

2026-04-05 22:44:07 5609

原创 Python 零基础入门——基础语法(一)

本文系统介绍了Python编程的基础知识,主要包括以下内容: 基本概念:解释了常量、表达式和变量的定义与使用规则,包括Python的动态类型特性。 数据类型:详细说明整数、浮点数、字符串、布尔值等基础数据类型及其操作。 运算符:全面介绍算术运算符、比较运算符、逻辑运算符,以及身份运算符、成员运算符和位运算符等特殊运算符。 输入输出:讲解print输出函数和input输入函数的使用方法,包括类型转换和格式化输出技巧。 注释规范:说明单行注释和多行注释的写法,强调代码注释的重要性。 文章通过大量代码示例演示各个

2026-04-02 19:35:14 3598

原创 redis学习笔记(十)—— 事务与主从结构

Redis事务与主从复制机制解析 Redis事务通过MULTI、EXEC等命令实现批量命令执行,保证顺序性但不支持回滚,与MySQL事务有本质区别。主从复制通过slaveof命令建立,支持一主多从、树形等拓扑结构,包含全量和部分同步两种数据复制方式。主从复制过程分为保存主节点信息、建立连接、权限验证、数据同步和命令持续复制五个阶段,使用PSYNC命令实现高效同步。Redis的这些特性在保证高性能的同时,提供了基本的数据复制和事务功能。

2026-04-02 19:35:03 3661

原创 我爱学算法之——动态规划(三)

本文介绍了三道动态规划问题的解法:1. 下降路径最小和,使用动态规划从矩阵第一行出发,每次只能选择相邻列的下一行元素,初始化边界并取最后一行的最小值;2. 最小路径和,从左上角出发只能向右或向下移动,初始化第一行和第一列后计算最小路径和;3. 地下城游戏,逆向动态规划计算每个位置到终点的最低初始健康值,确保骑士能到达终点。三题均通过状态转移方程和边界初始化实现最优解。

2026-03-31 15:35:01 3945

原创 我爱学算法之——动态规划(二)

本文介绍了三种基于动态规划的网格路径问题解法。1. 不同路径问题:计算m×n网格中从左上角到右下角的路径数,状态转移方程为dp[i][j]=dp[i-1][j]+dp[i][j-1]。2. 带障碍物的不同路径问题:在基础问题上增加障碍物判断,障碍物位置路径数为0。3. 珠宝最高价值问题:在网格中寻找从左上到右下获取珠宝的最大价值,状态转移方程为dp[i][j]=max(dp[i-1][j],dp[i][j-1])+frame[i][j]。三种问题都通过动态规划表实现,初始化边界条件后填充表格得出结果。

2026-03-31 15:34:46 4083

原创 Python基础——搭建 Python 环境

本文介绍了Python开发环境的搭建方法。首先需要安装Python运行环境,提供代码执行能力;其次安装PyCharm开发工具,提供编程支持。详细说明了从官网下载安装包、配置环境变量的步骤,并展示了命令行验证安装的方法。接着指导如何安装配置PyCharm,创建新项目并编写第一个Python程序"print('hello python')"。整个过程条理清晰,配有截图说明,帮助初学者快速完成Python开发环境的搭建和基础使用。

2026-03-29 22:24:05 3874

原创 我爱学算法之——动态规划(一)

本文介绍了动态规划算法的基本思想和应用,通过四个LeetCode题目详细解析了动态规划的解题步骤。首先讲解了泰波那契数的递推关系,然后分析三步问题的状态转移方程,接着讨论最小花费爬楼梯的最优解策略,最后解码方法中需要考虑的多种情况。每个问题都给出了状态表示、状态转移方程和代码实现,展现了动态规划"空间换时间"的核心思想。文章适合算法初学者理解动态规划的基本应用场景和解题思路。

2026-03-28 23:15:49 2435

原创 redis学习笔记(九)—— Redis 持久化

Redis提供RDB和AOF两种持久化机制保障数据安全。RDB通过定期生成内存快照文件实现高效备份,适合全量恢复但实时性较差;AOF记录所有写命令确保数据高可靠性,支持多种同步策略平衡性能与安全性。两种机制各有优劣:RDB文件小恢复快但可能丢失数据,AOF实时性高但文件体积较大。实际应用中可根据业务需求选择或组合使用,同时支持动态配置持久化参数,灵活应对不同场景需求。

2026-03-28 23:15:37 3279 1

原创 我爱学算法之——记忆化搜索

摘要 本文介绍了记忆化搜索技术及其在算法问题中的应用。记忆化搜索通过记录DFS遍历结果避免重复计算,提升效率。文章通过四个经典问题展示其实现: 斐波那契数:递归计算时缓存中间结果,避免重复调用; 不同路径:记录网格中每个位置到终点的路径数,减少重复遍历; 最长递增子序列:存储以每个位置为起点的最长序列长度; 猜数字大小II:动态规划结合记忆化,计算区间最优策略的最小成本。 代码均采用DFS+缓存机制实现,显著优化了递归性能。记忆化搜索本质是“空间换时间”,适用于存在重叠子问题的场景。

2026-03-23 20:55:40 3129

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

当 附近相邻单元格的高度,小于等于当前单元格高度时,当前单元格雨水可以流向附近单元格;要我们找出 既可以流向太平洋(左、上部分)、又可以流向大西洋(右、下部分)的单元格。简单来说这道题就是 要找出 即与左、上部分相连,又与右、下部分相连的所有单元格。扫雷游戏,作为一个经典的小游戏,具体规则这里就就不详细叙述了;要直接去遍历,判断每一个单元格是否可以流向左上、右下部分;)的单元格,最后找出及可以流向左上部分、又可以流向右下部分的单元格即可。这道题虽然只给了数字 m、n以及 cnt,但构想出一个二维数组,从。

2026-03-23 20:55:31 2922

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

本文介绍了Flood Fill算法及其在图像处理中的应用。Flood Fill是一种从种子点开始向四周扩散填充的算法,主要用于图像渲染、岛屿计数等场景。文章通过四个LeetCode题目详细解析了算法实现:1) 图像渲染使用DFS染色相邻像素;2) 岛屿数量统计通过DFS遍历未访问陆地;3) 岛屿最大面积在DFS过程中计算连通区域大小;4) 被围绕区域先标记边缘O再处理内部区域。代码实现均采用DFS遍历,通过方向数组处理相邻像素,展示了Flood Fill算法的典型应用模式。

2026-03-19 22:40:04 4128 22

原创 redis学习笔记(八)—— C++ 操作 Redis

本文介绍基于 hiredis 的 C++ Redis 客户端库 redis-plus-plus,讲解在 Linux 下安装依赖、编译安装的完整流程。并通过示例代码,详细演示 Redis 通用命令、string、hash、list、set、zset 等核心数据结构的常用 API 使用,包括键值操作、过期设置、批量读写、集合运算、有序集合排序等。文章给出可直接运行的测试代码与编译链接命令,帮助 C++ 开发者快速上手 redis-plus-plus,实现项目中对 Redis 的高效访问。

2026-03-19 22:32:30 3909 24

原创 redis学习笔记(七)—— 渐进式遍历与数据库操作

本文介绍了Redis中的渐进式遍历和数据库管理功能。渐进式遍历通过scan命令分批获取键值,避免keys命令导致的阻塞问题,每次调用返回下次遍历的游标位置。数据库管理部分讲解了如何切换数据库(select)、查询键数量(dbsize)以及清空数据库(flushdb/flushall),默认有16个编号数据库,操作需谨慎。这些功能为Redis的大规模数据操作和数据库管理提供了有效解决方案。

2026-03-12 23:04:30 3101 1

原创 redis学习笔记(六)—— zset 数据类型

Redis有序集合(zset)通过关联分数(score)实现成员排序,支持添加(zadd)、查询(zrange等)、删除(zrem等)和修改(zincrby)操作,并提供交并集计算(zinter/zunionstore)。其内部采用两种编码:ziplist(小数据量)和skiplist(大数据量),在内存效率与性能间取得平衡。zset适用于需要排序和范围查询的场景,是Redis重要的数据结构之一。

2026-03-12 23:04:12 3205

原创 redis学习笔记(五)—— set 数据类型

Redis集合(Set)是一种无序且元素唯一的字符串集合,支持基本操作如添加(sadd)、查询(smembers)、删除(srem)等,以及集合运算如交集(sinter)、并集(sunion)和差集(sdiff)。集合内部采用两种编码方式:intset用于小规模整数集合,节省内存;hashtable则适用于大规模或混合类型集合,提供O(1)时间复杂度操作。Redis还提供了将集合运算结果存储到新集合的命令(sinterstore等)。这种灵活的数据结构适用于去重、标签系统等场景,其自动编码转换机制也优化了不

2026-02-17 19:17:55 3103

原创 redis学习笔记(四)—— list数据类型

Redis列表(List)是一种双端队列结构,支持两端插入删除、范围查询和索引访问。主要特点包括有序性和允许重复元素。常用命令分为添加(LPUSH/RPUSH)、查找(LRANGE/LINDEX)、删除(LPOP/LREM)和修改(LSET)等操作,还支持阻塞版本(BLPOP/BRPOP)。内部采用双重编码策略,小数据用ziplist,大数据用linkedlist,Redis 3.2后默认使用混合结构quicklist,兼顾内存效率和操作性能。列表类型适用于需要快速插入删除的场景。

2026-02-12 19:16:09 2807

原创 redis学习笔记(三)—— hash数据类型

Redis哈希类型使用key-value结构存储数据,其中value可以是哈希类型。常用命令包括HSET(设置字段值)、HGET(获取字段值)、HEXISTS(判断字段是否存在)、HDEL(删除字段)等。哈希类型内部采用ziplist(压缩列表)或hashtable两种编码方式:当字段数量较少且值较小时使用ziplist节省内存,否则自动切换为hashtable以保证性能。这些特性使Redis哈希类型既节省内存又保持高效读写能力。

2026-02-12 19:15:56 2731

原创 redis学习笔记(二)—— string数据类型

Redis字符串类型是最基础的数据结构,支持存储字符串、数字和二进制数据。常用命令包括set/get设置键值对,mset/mget批量操作,以及incr/decr等计数命令。字符串内部采用raw、int、embstr三种编码方式,根据数据特点自动转换优化性能。典型应用场景包括:缓存高频数据、存储二进制小文件、实现计数器功能(如浏览量统计)、分布式会话管理等。Redis字符串操作简单高效,支持原子性计数,适用于各类高并发场景。

2026-02-03 18:56:34 2816 2

原创 我爱学算法之—— 递归回溯综合(三)

本文介绍了三道与回溯算法相关的题目解法: 有效的数独:通过记录行、列和3x3方格内的数字出现情况,验证数独是否有效。 解数独:采用递归+回溯的方法填充空格,剪枝优化确保数字不重复。 不同路径III:DFS遍历所有可能路径,统计经过所有空格到达终点的路径数。 核心思想均是通过递归探索所有可能性,结合剪枝和回溯优化效率。代码实现中利用数组标记已访问状态,确保不重复且高效求解。

2026-02-03 18:56:13 2503

原创 redis学习笔记(一)—— redis基础教程

在互联网架构的核心组件中,Redis绝对是。

2026-01-31 19:29:55 3246 1

原创 我爱学算法之—— 递归回溯综合(二)

本文解析了四道回溯算法相关的LeetCode题目: 字母大小写全排列:通过递归回溯生成字符串所有可能的大小写组合,处理数字字符时跳过。 优美的排列:递归构造1-n的排列,每个位置需满足特定整除条件,使用visited数组避免重复选择。 N皇后问题:经典回溯问题,优化方案使用三个数组分别记录列和两条对角线上的皇后位置,提升判断效率。 单词搜索:在二维网格中搜索单词,通过DFS遍历四个方向,使用标记数组避免重复访问同一单元格。 这些题目展示了回溯算法在组合、排列和搜索问题中的应用,重点在于递归、剪枝和回溯的实现

2026-01-31 19:29:41 2668

原创 我爱学算法之—— 递归回溯综合(一)

摘要 本文解析了LeetCode中五道递归回溯算法题目: 电话号码字母组合:给定数字字符串,生成所有可能的字母组合,使用DFS递归遍历每个数字对应的字符。 括号生成:生成n对有效括号组合,通过剪枝确保左右括号数量平衡,避免无效组合。 组合:从1到n中选出k个数的所有组合,通过限定起始位置避免重复。 目标和:给数组元素添加正负号使和为target,递归枚举所有符号组合并统计满足条件的数目。 组合总和:从数组中选取可重复元素使和为target,递归遍历所有可能的元素组合。 这些题目均采用递归回溯框架,通过DFS

2026-01-28 18:02:23 2696 1

原创 我爱学算法之—— 回溯

本文介绍了三道与子集和排列相关的LeetCode题目解法: 子集问题:通过递归判断每个元素是否存在来生成所有子集,时间复杂度O(2^n)。 子集异或总和:在子集生成基础上,计算每个子集的异或值并求和。 全排列问题:使用回溯法生成排列,通过标记数组避免重复选择元素。对于包含重复元素的情况,先排序并通过条件判断剪枝来避免重复排列。 所有解法都采用了回溯思想,通过递归和状态恢复(回溯)来遍历所有可能性,并对重复情况进行剪枝优化。文章提供了清晰的算法思路和对应的C++代码实现。

2026-01-28 17:58:41 2489

原创 我爱学算法之—— 深搜

本文介绍了五道二叉树相关算法题的解析与实现: 求根节点到叶节点数字之和:通过深度优先搜索遍历所有路径,将路径转换为数字并求和。 二叉树剪枝:递归判断子树是否包含1,删除不含1的子树。 验证二叉搜索树:利用中序遍历的有序性,检查节点值是否严格递增。 二叉搜索树中第K小的元素:中序遍历时计数,找到第K个节点即返回结果。 二叉树的所有路径:记录从根到叶子的所有路径,使用字符串拼接存储。 这些题目展示了深度优先搜索、剪枝优化、中序遍历特性等常见二叉树处理技巧。

2026-01-23 22:42:33 2686 1

原创 我爱学算法之—— 递归

本文介绍了五个经典算法问题的递归解法:1.汉诺塔问题通过递归分解为移动N-1个盘子和1个盘子的子问题;2.合并有序链表递归比较节点值大小逐步合并;3.反转链表递归处理后续节点后修改指针指向;4.两两交换链表节点递归处理后续节点再交换当前节点对;5.快速幂运算通过分治思想将复杂度从O(n)降至O(logn)。这些案例展示了递归思想在分解复杂问题时的强大能力,通过将问题分解为更小的相似子问题,最终实现简洁高效的解决方案。

2026-01-23 22:42:17 2523

原创 【QT(十)】—— 系统

Qt事件机制是程序响应交互的核心,继承自QEvent基类,涵盖鼠标、键盘、定时器等各类事件。通过重写事件处理函数(如enterEvent、mousePressEvent等)可实现对特定事件的响应,支持获取事件详细信息(如按键类型、鼠标位置)。事件处理方式灵活,可拦截、处理或传递事件,是Qt实现用户交互和状态响应的关键机制。

2026-01-21 20:47:18 2790 1

原创 【QT(九)】—— 窗口

本文介绍了Qt中主窗口QMainWindow的基本结构和使用方法。主要内容包括: 菜单栏(QMenuBar) 通过代码或UI界面创建菜单栏 添加菜单(QMenu)和菜单项(QAction) 设置分隔线和子菜单 处理菜单项点击事件 工具栏(QToolBar) 创建工具栏并添加到主窗口 添加带有图标的操作项(QAction) 设置工具栏停靠位置和允许区域 控制工具栏的浮动和移动特性 文章通过代码示例详细演示了如何构建Qt主窗口的界面元素,并实现基本交互功能。这些组件是构建Qt应用程序界面的基础组成部分。

2026-01-21 20:47:02 2651

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

Qt提供了多种多元素控件用于展示结构化数据:QListWidget适用于简单列表,支持增删改操作;QTableWidget用于二维表格数据,可操作单元格;QTreeWidget处理层级数据,支持节点展开折叠。其中Widget版本内置数据模型便于快速开发,而View版本更灵活但需手动绑定模型。文章详细介绍了QListWidget的属性、方法和信号,包括如何通过图形界面和代码添加元素,并演示了实现增删功能的示例代码。这些控件为不同类型的数据展示提供了便捷高效的解决方案。

2026-01-17 21:26:49 2213 2

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

Qt文本输入控件摘要 Qt提供了两种主要的文本输入控件:单行输入框QLineEdit和多行输入框QTextEdit。 QLineEdit特性: 单行文本输入,支持多种属性设置 提供输入格式约束(inputMask)、最大长度限制 支持密码回显模式(echoMode) 可添加清除按钮和提示文本 内置验证器(Validator)功能 提供多种信号如文本变化、回车键按下等 QTextEdit特性: 多行富文本编辑器,支持HTML和Markdown 自动提供滚动条 支持文本格式化和表格等复杂内容 可设置只读模式、T

2026-01-17 21:26:31 2158

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

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

2025-12-19 21:18:31 2271 7

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

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

2025-12-19 21:18:15 1130

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

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

2025-12-12 21:33:27 1181

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

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

2025-12-12 21:33:08 1339

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

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

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

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

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

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

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

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

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

空空如也

空空如也

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

TA关注的人

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