自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(337)
  • 资源 (25)
  • 收藏
  • 关注

原创 Kubernetes 的蓝绿部署和滚动部署

滚动更新是一种逐步替换现有应用程序版本的方法。在滚动更新过程中,Kubernetes 会根据指定的更新策略,逐步替换应用程序的旧版本 Pods(容器)为新版本。每次更新一定数量的 Pods,直到全部 Pods 被更新为新版本。蓝绿升级是一种完全替换现有应用程序版本的方法。在蓝绿升级过程中,维护两个独立的环境——蓝色环境和绿色环境。蓝色环境代表当前运行的生产版本,绿色环境代表新版本的应用程序。当新版本经过验证后,切换流量到绿色环境。

2025-02-19 09:12:52 1072

原创 八股取士--docker&k8s

COPYADDCOPYADDalpineRUNRUNFROM:指定基础镜像。RUN:在镜像中执行命令。COPY:将文件从主机复制到镜像中。CMD:指定容器启动时执行的命令。:合并指令减少层数(如RUN)、使用、多阶段构建、选择轻量基础镜像(Alpine)、清理缓存。172.17.0.14.-v--tmpfsoverlay.envextendsbind mountNamespace 是 Kubernetes 中用于将集群资源划分为多个虚拟集群的机制。它提供了资源隔离和访问控制,适用于多租户环境。

2025-02-16 00:43:27 1302

原创 python实现--平衡二叉树和红黑树

平衡二叉树和红黑树

2025-02-07 13:00:26 455

原创 linux查询进程的启动时间

中的第 22 个字段提供了进程的启动时间(以 jiffies 为单位)。使用获取系统时钟频率,确定每秒的 jiffies 数量。使用来获取系统的启动时间,从而计算进程的启动时间。使用date命令将计算出的秒数转换为标准的日期时间格式。这种方法能够有效地查询进程的启动时间并将其转换为可读的格式。

2024-12-02 21:10:04 1429

原创 linux的挂卸载

使用fdisk或parted创建分区。使用mkfs格式化新分区。创建挂载点并使用mount命令挂载分区。修改/etc/fstab以便开机自动挂载。按照这些步骤,你就可以创建并挂载新的文件系统了。在 Linux 系统中,df命令用于显示文件系统的磁盘空间使用情况,通常用于检查挂载的文件系统、可用空间、已用空间等。df -h和df -ah都是df命令的变种,它们的区别在于输出的内容和单位的不同。df -h:显示常规磁盘分区的使用情况,并以人类可读的格式(KB、MB、GB)显示大小。

2024-12-02 20:29:19 1271

原创 go和python的遍历对比

循环控制基于显式的索引变量,可以在循环体内修改循环变量(如i++),并直接影响下一次迭代的行为。Go 的range和for循环在性能上更为高效,适合对性能要求较高的场景。你可以通过修改i来跳过元素,重新计算或者逆序循环。for循环基于迭代器,控制的是从可迭代对象中取出的元素,而不是显式的索引。不能在循环体内直接修改循环变量(如i),因此无法通过修改i来跳过元素。Python 需要通过while循环或者等辅助函数来实现更复杂的控制。

2024-12-02 20:20:59 864

原创 Kotlin的data class

在 Kotlin 中,data class是一种专门用来存储数据的类。与普通类相比,data class提供了简化数据存储的语法,并且自动生成了一些常用的方法,例如toString()equals()hashCode()和copy()。

2024-11-18 10:31:39 1443

原创 Kotlin的内置函数

函数返回值接收者主要用途嵌套场景letLambda 结果it对非空对象操作并返回结果处理结果或链式调用apply对象本身this初始化对象或配置属性初始化链式调用runLambda 结果this对对象执行操作并返回结果逻辑处理后返回also对象本身it执行副作用操作(如日志)调试、日志记录withLambda 结果this多次调用同一对象简化代码结构map转换后的集合集合(List/Set等)对每个元素应用转换函数,返回新集合。

2024-10-29 22:42:57 1107

原创 kotlin的this和it用法

println(tripled) // 输出: [3, 6, 9, 12, 15]解释: 这里用 number 代替了 it,提升了代码的可读性。this 主要用于引用当前对象或接收者对象,在类、apply 等上下文中频繁使用。it 主要用于 Lambda 表达式的单个参数,是一种简洁的写法。在实际开发中,如果需要频繁访问当前对象的成员,this 会更加合适;而在处理简单的 Lambda 表达式时,it 能让代码更加简洁。

2024-10-29 22:17:00 1472

原创 leetcode--从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。

2024-07-09 23:43:07 773

原创 leetcode--从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

2024-07-09 23:38:19 670

原创 leetcode--恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 的左孩子,因为 3 > 1。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,null,null,2]输出:[2,1,4,null,null,3]解释:2 不能在 3 的右子树中,因为 2 < 3。

2024-07-09 23:27:44 610

原创 leetcode--验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4。提示:树中节点数目范围在[1, 104] 内。

2024-07-09 23:19:55 976

原创 leetcode--从先序遍历还原二叉树

我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。示例 1:输入:“1-2–3–4-5–6–7”输出:[1,2,5,3,4,6,7]示例 2:输入:“1-2–3—4-5–6—7”

2024-07-09 23:01:20 399

原创 leetcode--二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3提示:树中的节点数为 n。

2024-07-09 13:30:51 746

原创 leetcode--二叉树中的最大路径和

我们定义一个递归函数 max_gain(node) 来计算节点的最大贡献值。这个函数计算从当前节点出发,延伸到左右子树所能获得的最大路径和。计算当前节点的最大贡献值如果当前节点为空,返回0。计算左子树的最大贡献值,记为 left_gain。如果 left_gain 是负值,设置为0,因为负值不会增加路径和。计算右子树的最大贡献值,记为 right_gain。如果 right_gain 是负值,设置为0,因为负值不会增加路径和。

2024-07-09 13:22:20 1441 1

原创 leetcode--层数最深叶子节点的和

给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和。示例 1:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15示例 2:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:19提示:树中节点数目在范围 [1, 104] 之间。

2024-07-09 13:08:45 498

原创 leetcode--二叉搜索子树的最大键值和

给你一棵以 root 为根的 二叉树 ,请你返回 任意 二叉搜索子树的最大键值和。二叉搜索树的定义如下:任意节点的左子树中的键值都 小于 此节点的键值。任意节点的右子树中的键值都 大于 此节点的键值。任意节点的左子树和右子树都是二叉搜索树。示例 1:输入:root = [1,4,3,2,4,2,5,null,null,null,null,null,null,4,6]输出:20解释:键值为 3 的子树是和最大的二叉搜索树。

2024-07-05 13:06:34 828

原创 leetcode--二叉树中的最长交错路径

给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下:选择二叉树中 任意 节点和一个方向(左或者右)。如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。改变前进方向:左变右或者右变左。重复第二步和第三步,直到你在树中无法继续移动。交错路径的长度定义为:访问过的节点数目 - 1(单个节点的路径长度为 0 )。请你返回给定树中最长 交错路径 的长度。

2024-07-04 10:50:07 1349

原创 redis哨兵模式(Redis Sentinel)

这种机制能够实时监测Redis实例的状态,并在主节点故障时自动将一个从节点提升为新的主节点,以保证服务的连续性和稳定性,这就是哨兵模式。部署多个Redis哨兵节点,一般至少需要3个哨兵节点来确保系统的可靠性和故障转移的可行性。在每个哨兵节点上编辑配置文件 sentinel.conf,配置包括监控的Redis实例信息、监控频率、故障检测的超时时间、故障转移的策略等。可以通过查看哨兵节点的日志文件、使用 redis-cli 连接到哨兵节点获取信息,以及模拟主节点故障来验证哨兵模式的工作是否正常。

2024-06-26 23:17:32 722

原创 mysql的information_schema浅析

information_schema 是 MySQL 中的一个虚拟数据库,它包含了关于 MySQL 服务器的所有元数据。

2024-06-24 23:09:23 1061

原创 mysql的主从同步

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

2024-06-13 13:06:15 1785

原创 python实现跳跃表

跳跃表(Skip List)是一种基于链表的数据结构,它通过多级索引实现了高效的查找、插入和删除操作。跳跃表是一种非常有效的数据结构,在需要高效查找、插入和删除操作的应用中广泛使用。通过合理的实现和配置,跳跃表可以提供接近于平衡二叉树的性能,同时具备更简单的实现和维护。查找复杂度:跳跃表的查找操作在期望时间内是 O(logn),因为它通过多层索引有效地减少了需要遍历的节点数。插入复杂度:插入操作的期望时间复杂度也是 O(logn),因为随机层次决定了节点插入的位置。

2024-06-13 13:02:40 490

原创 go处理json

在 Go 中,你可以使用内置的 encoding/json 包来处理 JSON 格式数据。该包提供了函数和类型,使你能够将 JSON 数据解析为 Go 对象(反序列化)或将 Go 对象转换为 JSON 数据(序列化)。

2024-04-18 11:54:23 732

原创 八股取士--redis

Redis全称为:Remote Dictionary Server(远程数据服务),Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。特点1:丰富的数据类型我们知道很多数据库只能处理一种数据结构:传统SQL数据库处理二维关系数据;MemCached数据库,键和值都是字符串;文档数据库(MongoDB)是由Json/Bson组成的文档。

2024-03-25 13:42:35 1438

原创 redis-大key优化

Redis 中的“大 key”问题指的是单个键(key)所存储的值(value)过大,导致影响 Redis 的性能和稳定性。通常情况下,Redis 的设计初衷是将数据存储在内存中,因此单个键的大小应该受到限制,以保证内存的高效利用和系统的稳定运行。

2024-03-20 12:56:57 960

原创 mysql索引失效

在MySQL中,索引失效指的是查询语句无法有效地使用索引,而必须进行全表扫描。索引失效可能会导致查询性能下降,特别是在处理大量数据时。

2024-03-20 12:46:45 1807

原创 python实现--拓扑排序

拓扑排序是对有向无环图(DAG)进行排序的一种算法,它可以将图中的顶点排成一个线性序列,使得图中的任意一条有向边都从序列中的较早顶点指向较晚顶点。将1号顶点的邻接顶点2号和3号的入度分别减1,得到入度为0的2号和3号顶点,加入队列:[2, 3]将2号顶点的邻接顶点4号的入度减1,得到入度为0的4号顶点,加入队列:[3, 4]将3号顶点的邻接顶点5号的入度减1,得到入度为1的5号顶点,加入队列:[4, 5]将4号顶点的邻接顶点6号的入度减1,得到入度为0的6号顶点,加入队列:[5, 6]

2024-03-20 12:19:25 693

原创 python实现--哈夫曼编码

哈夫曼树(Huffman Tree)和哈夫曼编码(Huffman Coding)是一种用于数据压缩的技术,由David A. Huffman于1952年提出。哈夫曼树是一种特殊的二叉树,用于构建哈夫曼编码。哈夫曼编码是一种变长编码,用于将字符映射到不同长度的比特串,以实现数据的高效压缩。

2024-03-20 12:07:55 1337

原创 python实现--二叉搜索树

二叉搜索树(Binary Search Tree,BST)是一种特殊类型的二叉树,它具有以下性质:每个节点最多有两个子节点,分别称为左子节点和右子节点。对于任意节点,其左子树中的所有节点的值都小于该节点的值。对于任意节点,其右子树中的所有节点的值都大于该节点的值。对于任意节点,其左子树和右子树也分别是二叉搜索树。

2024-03-17 15:43:58 1730

原创 python实现协程

协程(Coroutine)是一种轻量级的并发编程技术,它允许程序在某个点上暂停执行,并在稍后恢复执行,而不是像线程那样在不同的执行上下文中切换。在Python中,可以使用 threading 模块创建和管理线程,由于全局解释器锁(GIL)的存在,Python中的线程并不能充分利用多核CPU,适合用于IO密集型任务。在Python中,可以使用 asyncio 模块来实现协程,它提供了事件循环(event loop)来调度协程的执行,适合用于IO密集型任务和高并发的网络应用。不会受到 GIL 的影响。

2024-03-14 12:30:33 469

原创 python实现B/B+树

B树和B+树都是一种多路搜索树,用于对大量数据进行排序和查找。它们在数据库系统中被广泛应用,特别是用于构建索引结构。

2024-03-10 13:53:05 1971

原创 python实现--分块查找

分块查找将数据集合分成若干个块,每个块内的数据可以是有序的,而块与块之间的顺序可以是任意的。在进行查找时,首先根据块的索引查找到可能包含目标元素的块,然后在该块内进行顺序查找。查找范围缩小:通过索引表可以快速确定目标元素所在的块,从而将查找范围缩小到一个块内,然后在该块内进行顺序查找,从而减少了查找的时间复杂度。构建索引表:将线性表分成若干个块,并为每个块建立索引表,索引表中的元素记录每个块的起始位置和结束位置。块内顺序查找:根据目标元素的值,确定它所在的块,并在该块内进行顺序查找。

2024-03-10 13:46:33 638

原创 python实现--折半查找

以上代码实现了折半查找算法。通过不断缩小查找范围,折半查找算法可以在时间复杂度为 O(log n) 的情况下找到目标元素,其中 n 为数组的长度。它的基本思想是通过每次将查找范围缩小为原来的一半来逼近目标元素,直到找到目标元素或者确定目标元素不存在。如果目标值小于中间位置的元素,则更新右边界 right = mid - 1,缩小查找范围为左半部分。如果目标值大于中间位置的元素,则更新左边界 left = mid + 1,缩小查找范围为右半部分。如果目标值等于中间位置的元素,则返回中间位置作为查找结果。

2024-03-10 13:44:42 1264

原创 python实现--顺序查找

顺序查找(Sequential Search),也称线性查找,是一种简单直观的查找算法。它的基本思想是逐个遍历数据集合中的元素,直到找到目标元素或者遍历完整个数据集合。顺序查找适用于无序数据集合,时间复杂度为O(n),其中n为数据集合中的元素个数。

2024-03-10 13:42:23 998

原创 python实现生成树

若(u,v)是一条具有最小叔值的边,其中u∈U, v∈V- U,则必存在一棵包含边(u,V)的最小生成树,基于该性质的最小生成树算法主要有Prim算法和Kruskal算法,它们都基于贪心算法的策略。最后,打印出构建出的最小生成树的边集合。Kruskal算法:Kruskal算法是一种基于并查集的贪心算法,它首先将所有边按权重从小到大排序,然后依次考虑每条边,如果当前边连接的两个顶点不在同一个连通分量中,则将这条边加入最小生成树中,并将这两个顶点合并到同一个连通分量中,直到最小生成树的边数达到n-1为止。

2024-03-10 13:30:19 1148

原创 python实现回溯算法

回溯算法是一种经典的解决组合优化问题、搜索问题以及求解决策问题的算法。它通过不断地尝试各种可能的候选解,并在尝试过程中搜索问题的解空间,直到找到问题的解或者确定问题无解为止。回溯算法常用于解决诸如排列、组合、子集、棋盘类等问题。if 满足结束条件: # 如果已经满足结束条件result.append(path[:]) # 将当前路径添加到结果中returnfor 选择 in 候选集: # 遍历所有候选选择if 当前选择合法: # 如果当前选择是合法的做出选择 # 将当前选择添加到路径中。

2024-03-10 13:23:39 2856 1

原创 广度优先搜索和深度优先搜索

假设从a结点开始访问,a先入队。例题:在一个n*m的矩阵上,分布着如下数字,0代表通路,1代表墙,无法通行,2代表起点,3代表终点,4代表陷阱,6代表炸弹,现在要求从起点到终点的最短路径,0可以通行,1无法通行,陷阱则需要花费3个单位时间,6可以把上下左右的四个坐标炸为通路,请给出从起点到终点的最短距离。在广度遍历的过程中,我们可以得到一棵遍历树,称为广度优先生成树,需要注意的是,一给定图的邻接矩阵存储表示是唯一的,故其广度优先生成树也是唯一的,但由于邻接表存储表示不唯一,故其广度优先生成树也是不唯一的。

2024-03-09 14:07:59 5796

原创 python实现桶排序

桶排序(Bucket Sort)是一种排序算法,它将待排序的元素分到有限数量的桶(buckets)中,然后分别对每个桶中的元素进行排序,最后按照顺序将所有的桶中的元素依次取出,即可得到有序序列。桶排序的核心思想是根据待排序元素的大小将它们分配到不同的桶中,然后对每个桶中的元素进行排序,最后将所有桶中的元素合并起来得到有序序列。如果待排序数据均匀分布在各个桶中,则桶排序的时间复杂度为 O(n+k),其中 n 表示待排序元素的数量,k 表示桶的数量。遍历待排序数组,将每个元素根据其值的大小分配到对应的桶中。

2024-03-09 13:27:14 856

原创 nginx使用详解--流控

Nginx可以通过实现流量控制(流控)来限制对服务器的访问并保护其免受过载的影响,限流有以下几种:正常限制访问频率(正常流量)突发限制访问频率(突发流量)限制并发连接数黑白名单配置。

2024-03-01 10:11:59 1476

Scrapy爬取多级网页内容源代码加实现.txt

多级网页结构爬取99健康网的信息,用了多种网页反爬取,获取疾病信息。

2019-07-18

Scrapy爬取豆瓣图书Top250代码实现.txt

爬取豆瓣网图书TOP250的信息,只有一级网页结构,可以帮助初学时入门。

2019-07-18

OpenCV处理图像分类.txt

使用Opencv进行特征提取,并且对图像中的物体进行标注,具有很高的识别率。

2019-07-18

LSTM处理三分类问题.txt

用LSTM进行三个文本的分类,进行情感分析和文本分类,入门的NLP案例。

2019-07-18

CNN-SVM.txt

用CNN提取图像特征,并用SVM进行图像分类,适合小数量级的图像分类,而且是入门机器学习不错的案例。

2019-07-18

AI处理X光胸片.txt

可以提取X光片的特征,并进行分析处理,为患者更好的认知自己的病情提供了可视化。

2019-07-18

AI处理X光片.txt

用AI进行X光片的特征提取,进行可视化展示,更好的帮助医生,并为患者提供对病情更好的认知。

2019-07-18

AI处理X光骨骼图像.txt

代码工具,AI处理X光片图像,可以用于医疗研究,帮助医生患者更好的发现X光片的特征。

2019-07-18

国际疾病诊断编码ICD11+ICD10

包含ICD10和ICD11编码,国际疾病诊断编码ICD11,可以帮助更好的找到索引,建立数据库。

2019-06-20

种子填充.txt

包含python Opengl种子填充算法的单色填充和双色填充,简单易懂

2019-06-12

微信自动给女朋友发消息.txt

程序员有时候很忙,忘记给女朋友发消息,用这个程序可以帮助你24小时关心女朋友,还可以加入你自定义的语句

2019-06-12

身份证前6位对应城市.txt

该文件包含身份证前六位对应的城市代码,可以帮助需要的开发者输入身份证自动得到城市信息。

2019-06-12

几何变换.txt

含有python Opengl的几何变换,包含平移旋转缩放以及多种变换的复合形式

2019-06-12

python OPENGL画线.txt

含有Python OPengl的多种画线算法,包含DDA 中点算法 圆的逼近算法 中点画圆法

2019-06-12

dlib-19.7.0.txt

安装人脸识别库face_recognition需要的dlib19.7.0库,注意需要在py36环境下支持。

2019-05-22

Python排序算法

包含多种Python的排序算法,可以帮助使用者更好的理解各种排序算法的Python实现!

2019-03-28

Python实现画小猪佩奇

用Python实现的画小猪佩奇,可以动态画出佩奇,可以自行调整相关参数,画出你自己的佩奇!

2019-03-28

100道简单的python练习题

包含100道简单的python练习题,可以给刚入门Python的同学提供联系的用途,附答案,可以自己对照检查!

2019-03-28

Kali使用全部资料

包含Kali的全套学习资料,可以帮助做渗透分析,网络安全的人提供从入门到精通的全部资源!

2019-03-28

黑客攻防从入门到精通

该书籍包含相应工具,适合初学者一步步学习网络安全相关原理,包含网络攻防的知识和工具,让使用者了解攻击原理,懂得防御措施。

2019-03-25

Tensoeflow资料

含有Tensorflow实战,Tensor flow技术讲解,Tensorflow官方文档,可以让机器学习的爱好者从浅入深的学习Tensor flow!

2019-03-23

Scrapy爬虫

Python的Scrapy爬虫,可以在百度图片里面根据关键字爬取图片,可以直接在DOS模式下或者在Python的IDE平台上面运行,爬取图片会自动安装到爬虫所在的文件夹下!

2019-03-23

PhotoShop CS6安装包

PhotoShop CS6安装包,支持32位和64位,安装之后将对应版本的破解补丁复制,替换掉安装目录下的相应文件,即可使用!注意在断网条件下安装。

2019-03-23

机器学习:猫和狗的图片训练图片25000和测试集12500

百度网盘链接:内有用于机器学习,测试猫狗的原始图片,包含训练数据25000,测试数据125000,可以为机器学习练习提供必要的数据集!

2019-03-23

superscan4.0 正版

superscan4.0是一个强大的端口扫描工具,它支持对局域网主机开放端口进行扫描,是黑客进行入侵攻击的第一步,有效,高速的扫描,可以帮助黑客快速入手攻击!

2019-01-08

空空如也

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

TA关注的人

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