- 博客(214)
- 收藏
- 关注
转载 Python 游戏开发实战:从入门到精通
Python 是一种功能强大的编程语言,也可以用于开发各种有趣的游戏。在这篇文章中,我们将介绍一些使用 Python 编写游戏代码的基础知识和示例,帮助你踏上游戏开发的征程。Pygame 库的介绍与安装Pygame 是一个专门用于游戏开发的 Python 库,它提供了丰富的功能和工具,使得开发游戏变得更加简单和有趣。首先,我们需要安装 Pygame 库。
2024-10-08 16:13:05
496
转载 Python 格式化输出的高级技巧与应用
print(“|{:*^10}|”.format(name)) # 居中对齐,并用 * 填充。print(“|{:^10}|”.format(name)) # 居中对齐,宽度为 10。print(“|{:10}|”.format(name)) # 右对齐,宽度为 10。format() 方法提供了一种更灵活的格式化方式,可以通过索引来指定参数的位置。可以使用特定的格式代码来格式化日期和时间。
2024-10-08 13:23:24
112
转载 Python 高级编程:深入解析 CSV 文件读取
pandas 是一个强大的数据处理库,read_csv 函数可以方便地读取 CSV 文件并将其转换为 DataFrame 对象,便于进行后续的数据处理和分析。在 Python 中,读取 CSV(逗号分隔值)文件是数据处理中的常见任务。csv.reader 可以逐行读取 CSV 文件的内容,并将每一行作为一个列表返回。通过 parse_dates 参数可以将 CSV 文件中的日期列自动解析为日期类型。使用 pandas 可以方便地选择读取 CSV 文件中的特定列。使用 csv 模块读取 CSV 文件。
2024-10-08 11:53:07
290
转载 Python 正则表达式高级应用指南
正则表达式是一种强大的文本模式匹配工具,在 Python 中,我们可以使用 re 模块来进行正则表达式的操作。本文代码转自:https://www.wodianping.com/app/2024-10/48515.html。在上述代码中,我们定义了两个正则表达式模式:一个用于匹配电子邮件地址,另一个用于匹配电话号码。正则表达式的应用非常广泛,可以根据具体的需求灵活运用这些高级技巧来处理各种文本模式匹配问题。演示了贪婪模式和非贪婪模式的区别。这里使用了分组来提取匹配的部分。
2024-10-08 11:46:32
142
转载 Python 高级绘图:从基础到进阶的可视化实践
这些只是 Python 绘图的一些基本示例,通过 matplotlib 库还可以实现更多复杂和高级的绘图功能,例如自定义颜色、标记、线条样式,以及添加图例、注释等。labels = [‘苹果’, ‘香蕉’, ‘橙子’, ‘其他’]plt.xlabel(‘X 轴’)plt.ylabel(‘Y 轴’)plt.xlabel(‘X 轴’)plt.ylabel(‘Y 轴’)plt.xlabel(‘X 轴’)plt.ylabel(‘Y 轴’)plt.xlabel(‘X 轴’)plt.ylabel(‘Y 轴’)
2024-10-07 17:58:01
150
转载 Python 循环语句的高级应用与技巧
在 Python 中,循环语句是实现重复操作的重要工具。以下将深入探讨一些高级的应用和技巧:for 循环的高级用法。
2024-10-07 17:50:15
69
转载 Python 脚本高级编程:从基础到实践
Python 脚本是一种强大的工具,可用于各种任务,从自动化日常工作到处理复杂的数据操作。以下是一些关于 Python 脚本的高级概念和代码示例。本文转自:https://www.wodianping.com/app/2024-10/46617.html。
2024-10-07 17:43:19
152
转载 Python 循环语句的高级应用与深度探索
本文转自:https://www.wodianping.com/app/2024-10/45962.html。在 Python 中,循环语句是实现重复操作的重要工具。本文将深入探讨 Python 循环语句的高级应用。while 循环的高级技巧。for 循环的高级用法。循环的优化与性能提升。
2024-10-06 21:34:19
64
转载 Python 高级绘图:探索数据可视化
在 Python 中,我们可以使用多种库来进行绘图,实现数据可视化。本文转自:https://www.wodianping.com/app/2024-10/45961.html。seaborn 是基于 matplotlib 的一个高级绘图库,提供了更具吸引力的默认样式。绘制动态图形通过结合 matplotlib 和 numpy ,可以实现动态图形的绘制。使用 matplotlib 的 mplot3d 子库可以绘制 3D 图形。matplotlib 是一个广泛使用的绘图库,提供了丰富的绘图功能。
2024-10-06 20:28:30
229
转载 Python 高级编程:高效读取 txt 文件的技巧与实践
在 Python 中,读取 txt 文件是一项常见的操作。如果文件的编码不是默认的编码(通常是 UTF-8),可以通过指定编码来正确读取文件内容。with 语句可以确保在代码块执行完毕后,文件会被正确地关闭,避免了资源泄漏的问题。file.seek(10) # 从文件的第 10 个字节开始读取。通过设置适当的缓冲区大小,可以提高文件读取的性能。通过遍历文件的每一行,可以更灵活地处理文件内容。这种方法可以根据需要读取文件的特定部分。读取特定字节范围的内容。使用缓冲读取提高性能。
2024-10-06 19:26:16
96
转载 Python 高级技巧:深入解析读取 Excel 文件的多种方法
一、引言在数据分析和处理中,经常需要从 Excel 文件中读取数据。Python 提供了多种库来实现这个功能,本文将深入探讨使用 pandas、openpyxl 和 xlrd 库读取 Excel 文件的高级技巧和代码实现。二、使用 pandas 库读取 Excel 文件pandas 是 Python 中强大的数据处理库,提供了方便的函数来读取 Excel 文件。
2024-10-05 19:57:34
368
转载 深入 Python 数据分析:高级技术与实战应用
本文介绍了 Python 数据分析的高级技术,包括数据读取与预处理、数据探索与可视化、高级数据分析技术和实战案例。通过学习这些内容,读者可以提升自己的数据分析能力,更好地应对实际工作中的数据分析任务。本文将带领读者深入探索 Python 数据分析的高级技术,通过实际案例和代码示例,帮助读者提升数据分析能力和解决实际问题的能力。通过一个实际的数据分析项目,综合运用上述技术,解决实际问题。例如,对销售数据进行分析,预测未来销售趋势,找出影响销售的关键因素等。数据清洗与预处理,包括处理缺失值、异常值和重复值。
2024-10-04 21:29:11
235
转载 深入探索 Python 爬虫:高级技术与实战应用
在这篇文章中,我们将深入探讨 Python 爬虫的高级技术,包括并发处理、反爬虫策略应对、数据存储与处理等方面。通过实际的代码示例和详细的解释,读者将能够掌握更高级的爬虫技巧,提升爬虫的效率和稳定性。通过本文的学习,我们掌握了 Python 爬虫的高级技术,包括并发处理、反爬虫策略应对、数据存储与处理等方面。在实战应用中,我们通过爬取电商网站商品信息和新闻网站文章内容,进一步巩固了所学的知识。请注意,在实际应用中,爬虫行为需要遵守法律法规和网站的使用规则,避免对网站造成不必要的负担和法律风险。
2024-10-04 21:06:59
607
转载 Python 高级编程:深入探索高级代码实践
上下文管理器用于管理资源的获取和释放,确保在代码块执行完毕后正确地释放资源。Python 中的 with 语句就是用于使用上下文管理器的。在现代编程中,处理并发和并行任务是非常重要的。在 Python 编程的世界中,掌握高级概念和技术是提升编程能力的关键。本文将带领您深入探索 Python 的高级特性,通过实际的代码示例展示其强大之处。生成器是一种特殊的迭代器,可以在需要的时候生成值,而不是一次性生成所有值。装饰器是 Python 中非常强大的特性,它可以在不修改函数源代码的情况下,为函数添加额外的功能。
2024-10-04 19:09:19
134
转载 bwlabel函数的C语言实现及用法解析
在这个函数中,我们首先创建一个和图像等大的数组labels来存储每个像素的标签。对于每个像素,如果它是前景像素(像素值为255),我们就根据其相邻的像素的标签来确定它的标签。bwlabel函数的实现原理是通过扫描二值图像,并为每个连通区域分配一个唯一的标签。其中,连通区域是指由相邻的像素组成的一片区域,相邻的像素可以是相邻的8个像素或4个像素。它可以通过遍历二值图像的像素,并为每个连通区域分配一个唯一的标签。在这个示例中,我们定义了一个10x10的二值图像,并调用bwlabel函数来标记连通区域。
2023-08-14 10:53:02
656
转载 Chameleon算法的C语言实现及代码解析
在Chameleon算法中,自适应调整是非常重要的,它能够根据搜索过程中的反馈信息来调整算法的参数和策略,以进一步提高搜索效率。通过根据问题的特点,选择合适的自适应调整策略,算法能够更好地适应不同的问题并取得更好的效果。在这个过程中,我们需要定义合适的目标函数以评估每个解的优劣,并根据当前解的质量来调整搜索的方向和策略。在计算机科学领域中,算法的设计和实现是非常重要的。同时,也希望读者能够通过实践和进一步的学习,将Chameleon算法应用到更多的实际问题中,为解决优化问题做出更多的贡献。
2023-08-14 10:49:46
506
转载 CRC编码计算方法及C语言实现
通过本文的介绍,我们了解了CRC编码的计算方法,并使用C语言实现了CRC编码的计算过程。掌握了CRC编码的计算方法及其实现,我们可以在数据通信和存储中应用CRC编码,提高数据传输的可靠性和稳定性。进行除法运算:通过模2除法运算,将数据D(x)与生成多项式G(x)进行除法运算,得到的余数保存在R(x)中。对数据进行处理:将数据D(x)的系数个数扩展至G(x)的系数个数加上R(x)的最高次幂的次数。结果处理:将R(x)的系数作为校验码附加到数据D(x)的后面,得到CRC编码后的数据。// 计算CRC编码。
2023-08-14 10:44:59
911
转载 C语言教程:逐行读取数字的方法
在上述代码中,strtol函数的第一个参数是待转换的字符串,第二个参数是指向字符串结束的指针,在函数调用后指向转换后的字符串的下一个字符。上述代码中,我们打开名为data.txt的文本文件,并使用fgets函数逐行读取文件内容,存储到line字符数组中。然后,我们使用sscanf函数将line中的数字提取出来,存储到num变量中。上述代码中,我们首先使用regcomp函数编译正则表达式,然后在循环中使用regexec函数进行匹配。在C语言的编程开发中,经常需要处理字符串或文本文件,并从中提取出数字。
2023-08-14 10:37:43
1083
转载 C语言快速排序降序实现
希望通过这篇文章,读者们可以更好地理解快速排序算法的原理和实现方式,并能够在自己的编程实践中灵活运用。小于基准元素的元素放置在左子数组中,大于基准元素的元素放置在右子数组中。然而,通过合理选择基准元素,我们可以尽可能地避免最坏情况的发生,从而提高算法的性能。然后,我们使用函数partition来确定基准元素的正确位置,并根据该位置将数组划分为两个子数组。在这篇文章中,我们将探讨如何使用C语言来实现快速排序算法,并实现一个降序排序的例子。在主函数中,我们定义了一个待排序的数组arr,并计算数组的长度n。
2023-08-14 10:34:03
2397
转载 C语言求凸包的算法及实现
对于一个给定的点集,我们可以选择一点作为起始点,并按照一定的顺序将其他点与其连接起来。如果一个点的连接线都在凸包的边界之内,那么这个点就在凸包上。总结起来,C语言求凸包的算法及实现基于点的连接和位置的判断。通过选择起始点、按极角排序、连接点以及判断点在凸包边界内的操作,我们可以得到点集的凸包。算法的关键在于判断一个点是否在凸包的边界之内,通过距离的计算和比较,可以有效地实现这一判断。// 如果距离小于0,说明点在凸包的边界之外。// 如果距离等于0,说明点在凸包的边界上。// 计算与凸包的边界的距离。
2023-08-14 10:29:48
423
转载 利用C语言递归函数解决求5的方法是什么
求解数字5的方法,即在给定的数字集合中,通过加法、减法、乘法、除法和括号的组合,得到数字5的表达式。以上是一个递归函数的实现,它的输入参数包括数字集合nums、集合中数字的个数n、目标数字target、当前表达式expr、当前数字和sum、上一个数字last、当前数字的索引index。接着,我们利用加法、减法、乘法和除法运算符,将当前数字加入到表达式中,并通过递归调用下一层函数,更新表达式的和、上一个数字和当前数字的索引。最后,我们还需要处理不使用当前数字的情况,通过递归调用函数,更新当前数字的索引。
2023-08-14 10:25:30
523
转载 C语言中如何获取数组的中位数
在C语言编程中,获取数组的中位数是一项常见而重要的任务。中位数是一个数组中的一个特殊值,它将该数组分为两个等长的部分。因此,在编程开发中,了解如何获取数组的中位数是非常有帮助的。然后,根据数组长度的奇偶性,确定中位数的位置,并从排序后的数组中获取中位数的值。对数组进行排序:首先,我们需要对给定的数组进行排序,以便能够准确地找到中位数。确定中位数的位置:然后,我们需要确定中位数的位置。当数组长度为偶数时,中位数的位置为 (数组长度 / 2) 和 (数组长度 / 2 + 1)。// 获取中位数的值。
2023-08-14 10:20:43
3719
转载 用C语言编写交换数组数值的代码教程
为了实现这个功能,我们可以使用一个辅助变量来暂存一个元素的值,然后将另一个元素的值赋给这个变量,最后再将辅助变量的值赋给第二个元素。我们首先使用一个辅助变量来实现交换,然后使用泛型编程的方法使交换函数适用于不同类型的数组。对于不同类型的数组,我们可以通过使用泛型编程的方法来实现通用的交换函数。printf(\n\ printf(\交换前的双精度浮点型数组:\ for (int i = 0;来存储第一个元素的值,然后将第二个元素的值赋给第一个元素,最后将辅助变量的值赋给第二个元素。
2023-08-14 10:13:09
1051
转载 C语言中如何实现数据帧封装与解析
通过定义数据帧的结构体,并编写相应的封装和解析函数,我们可以实现数据帧在C语言中的处理。数据帧的封装和解析是网络通信中必不可少的环节,在实际应用中需要根据具体的需求进行适当的扩展和优化。数据帧的封装与解析是为了将数据按照一定的格式打包和解析,以确保数据的可靠传输和正确解析。在这个函数中,我们将数据帧中的目的地址、源地址、数据长度和数据内容解析出来,并计算出接收到的帧检验序列和计算得到的帧检验序列进行比较,以确保数据的完整性和正确性。数据帧的解析过程是将接收到的数据帧按照一定的格式解析成上层应用数据。
2023-08-13 18:36:34
1212
转载 如何在C语言中实现队列和堆栈的动态扩容
以上代码中,我们定义了一个Queue结构体,包含一个指向int类型的数组data,一个表示队列头部的front,一个表示队列尾部的rear,以及一个容量capacity。在enqueue函数中,我们首先判断队列是否已满,若满,则将容量扩大一倍,并使用realloc函数重新分配内存空间。在dequeue函数中,我们首先判断队列是否为空,若为空,则可以抛出异常或返回特定值。以上代码中,我们定义了一个Stack结构体,包含一个指向int类型的数组data,一个表示栈顶的top,以及一个容量capacity。
2023-08-13 18:34:30
185
转载 虚位密码验证 保护C语言程序的数据安全性。
通过合理的设计和实现,我们可以防止未经授权的访问和数据泄露,从而提高程序的整体安全性。同时,我们也需要注意定期更改密码,并避免使用过于简单的密码,以进一步增加密码的安全性。在密码验证时,我们可以对用户输入的密码应用相同的加密算法,并将结果与存储的摘要进行比对。// 假设密码存储的摘要为 \f857493d\ const char* stored_hash = \f857493d\ // 密码长度必须大于等于7。最后,通过比较输入的密码与存储的摘要是否一致,来验证密码的正确性。
2023-08-13 18:21:04
216
转载 C语言中如何进行动态内存分配和释放
总结起来,动态内存分配和释放是C语言中重要的技术之一,通过malloc()和free()函数可以在程序运行时申请和释放内存空间。在使用过程中,需要注意合理的内存管理,及时释放不再使用的内存,并指针置空,以避免出现内存泄漏和野指针问题。但是需要注意的是,如果不正确地使用malloc()和free()函数,就会导致内存泄漏或者野指针的问题,因此在使用这两个函数时,要谨慎并遵循相应的规则。动态内存分配和释放是C语言中非常重要的概念,它允许在程序运行时动态地申请和释放内存空间,提高程序的灵活性和效率。
2023-08-13 18:16:39
735
转载 如何在C语言中进行图形界面编程
总结一下,通过使用GTK等库,我们可以在C语言中进行图形界面编程。首先,让我们来了解一下几个常用的图形库,它们可以帮助我们在C语言中创建图形界面。通过上述介绍,我们可以看到,在C语言中进行图形界面编程并不是一件复杂的事情。虽然C语言没有像Java或C++那样的丰富的图形库,但我们仍然可以使用GTK等库来实现简单的图形界面。上述代码将创建一个简单的窗口,但我们还可以添加更多的组件,例如按钮、标签等。安装完毕后,我们需要在代码中引入GTK的头文件,使用gcc编译器来编译我们的程序。函数来进入GTK的主循环。
2023-08-13 18:14:14
1365
转载 如何在C语言中进行日期和时间处理
本文介绍了获取当前日期和时间、格式化日期和时间、计算两个日期之间的天数以及判断某个日期是星期几的方法。掌握这些技巧和函数,可以更方便地进行日期和时间处理,提高程序的功能和灵活性。无论是计算两个日期之间的天数,还是计算某个日期是星期几,C语言提供了丰富的库函数和功能来满足这些需求。除了上面介绍的函数外,C语言还提供了许多其他的日期和时间处理函数,比如计算闰年的函数isleap,计算月份天数的函数,以及将字符串转换为时间的函数等。要获取当前的日期和时间,可以使用time.h头文件中的time函数。
2023-08-13 18:12:12
635
转载 C语言中的排序算法及其实现方法
通过以上几种排序算法的介绍,我们对C语言中的排序算法及其实现方法有了初步的了解。希望本文的介绍能够帮助你更好地掌握C语言中的排序算法及其实现方法,从而提高你的编程能力和代码的质量与性能。通过对算法的深入研究和实践,我们可以不断提高自己的算法设计和编程能力,为开发出高效、稳定的程序奠定坚实基础。本文将围绕C语言中的排序算法展开讨论,介绍几种常见的排序算法及其实现方法。选择排序算法是一种简单直观的排序算法,它的基本思想是每次从待排序的元素中选择最小的元素放在已排序部分的末尾。C语言中的排序算法及其实现方法。
2023-08-13 18:07:16
132
转载 利用C语言实现简单的计算器程序
然后,通过菜单让用户选择需要执行的运算。根据用户的选择,在程序中使用条件语句进行相应的运算,并将结果输出给用户。通过定义变量、获取用户输入、使用条件语句和循环语句,我们可以实现一个功能完善且易于使用的计算器。而使用C语言编写一个简单的计算器程序,则是一个很有挑战性和有趣的任务。因此,我们的程序需要能够接受用户输入的两个数,并根据用户选择执行相应的运算。分支中,我们可以使用简单的算术运算符来执行相应的运算,并输出结果给用户。printf(\请选择需要执行的运算:\n\printf(\1. 加法\。
2023-08-13 18:03:56
5077
转载 使用C语言编写文件读写工具
使用fopen函数打开文件,使用fread函数读取文件,使用fwrite函数写入文件,最后使用fclose函数关闭文件。另外,为了确保数据成功写入文件,我们需要在写入完文件后使用fflush函数刷新文件缓冲区,并使用fclose函数关闭文件。在上面的示例中,我们使用fopen函数打开了一个名为\example.txt\的文件,并以只读的方式打开。这里需要注意的是,如果文件打开成功,则返回一个非空的文件指针;例如,我们可以使用fopen函数打开一个文件,并返回一个指向该文件的文件指针。否则,返回非0的值。
2023-08-13 17:59:33
173
转载 C语言编程教程:如何提取手机尾数
此外,我们还介绍了如何扩展功能,包括尾数计算和根据尾数执行特定操作。手机尾数是手机号码中的最后几位数字,提取这些数字可以为我们的程序带来更多可能性。在本文中,我们将介绍一种简洁而有效的方法,帮助你轻松提取手机尾数。在上述代码中,我们使用了条件语句来判断尾数的奇偶性,并根据结果执行不同的代码块。例如,我们可以计算尾数的平方或者两个尾数的和。现在,你已经掌握了提取手机尾数的方法,尝试将其应用于你的项目中吧!在上述代码中,我们计算了尾数的平方和两个尾数的和,并将结果打印出来。变量中,我们成功提取了手机尾数。
2023-08-13 17:56:45
652
转载 Java HTTPS如何加载证书
在这段代码中,我们首先创建了一个SSLContext对象,并通过其init方法将之前创建的TrustManagerFactory对象传入。而HTTPS的安全性是建立在数字证书的基础上的,因此在Java中加载证书是一个非常重要的步骤。通过以上的步骤,我们就可以在Java中加载证书,并通过HTTPS与服务器进行安全通信了。当然,在实际的开发过程中,还需要考虑证书的更新、证书过期等问题,但这已经超出了本文的范围。KeyStore是一个用来管理密钥和证书的容器,而在HTTPS通信中,我们需要使用到的是信任证书。
2023-08-08 09:01:56
1634
转载 Java HTTP请求 如何获取并解析返回的HTML内容
总结来说,本文介绍了如何使用Java进行HTTP请求,以及如何获取并解析返回的HTML内容。掌握这些基本的HTTP请求和HTML内容处理的技巧,对于开发Java网络应用程序是非常有帮助的。首先,我们需要导入相关的Java类库:java.net包中的HttpURLConnection类和java.io包中的InputStreamReader、BufferedReader类。接下来,我们需要设置请求的方法为GET。通过上述代码,我们可以获取并解析返回的HTML内容,从而实现对网页内容的进一步处理和分析。
2023-08-08 08:59:15
2622
转载 Java HTTP请求封装的方法及实现
通过对Java HTTP请求的封装,我们可以将底层的细节隐藏起来,提供了更加简洁、易用的接口供调用者使用。同时,我们还可以在封装方法中添加其他的功能,比如异常处理、请求重试等,以增强封装方法的健壮性和可靠性。在封装HTTP请求方法时,我们需要考虑请求的类型(GET、POST等)、请求的参数、请求的头部信息等。当我们完成HTTP请求方法的封装后,可以在业务逻辑中直接调用该方法,而不用关心具体的实现细节。在上述示例中,我们只需要传入请求的URL即可调用封装的HTTP请求方法,并获取到服务器的响应结果。
2023-08-08 08:56:51
707
转载 Java WebService如何生成PDF文件
我们选择了iText作为PDF生成工具,并给出了使用iText生成PDF文件的简单示例代码。最后,我们将iText集成到了一个Web Service中,并给出了部署和调用Web Service的简要说明。在该方法中,我们的PDF生成逻辑与前面的示例相同。通常,你需要将生成的WAR文件部署到应用服务器上,并通过SOAP协议来调用Web Service的操作。在实际的Web应用中,我们通常会将PDF生成的逻辑封装成一个Web Service,以便其他应用程序可以通过调用该服务来生成PDF文件。
2023-08-08 08:52:05
272
转载 JavaWebSocket心跳机制详解
在JavaWebSocket中,实现心跳机制的关键是使用定时任务来定期发送心跳消息。在发送心跳消息之前,我们需要先创建一个WebSocket连接,并发送一个握手请求来建立连接。在使用WebSocket时,心跳机制是非常关键的,它能够保持连接的稳定性并及时发现连接的异常。这个心跳机制能够保持连接的稳定性,及时发现连接的异常情况,并做出相应的处理。定时任务使用了Timer类来实现,其中的run()方法会在每个心跳间隔到达时被调用,我们在这个方法中发送心跳消息。// 连接关闭,停止心跳定时任务。
2023-08-08 08:49:16
2860
转载 JavaWeb短信验证的实现方法
我们使用阿里云短信服务提供商提供的SDK来发送短信,并通过生成随机验证码的方式实现短信验证。通过这种方法,我们可以方便地在JavaWeb应用程序中实现用户身份验证,提高应用程序的安全性。接下来,我们需要在我们的JavaWeb应用程序中添加短信验证功能。我们可以在用户提交表单时生成一个随机的验证码,并将验证码通过短信发送给用户的手机号码。在JavaWeb开发中,我们可以通过一些简单而有效的方法实现短信验证功能。方法,我们可以将短信发送给指定的手机号码。在上面的代码中,我们使用了阿里云短信服务提供的SDK。
2023-08-08 08:45:39
447
ApowerCompress压缩软件v1.0.0.5 压缩宝优化版
2023-02-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人