- 博客(73)
- 收藏
- 关注
原创 PyTorch张量操作进阶指南从基础索引到高级广播技巧
假设有一个形状为`[3, 4]`的矩阵`A`和一个形状为`[4]`的行向量`v`。根据广播规则,PyTorch会自动将`v`的形状从`[4]`扩展为`[1, 4]`,然后再进一步扩展为`[3, 4]`,以便与`A`的形状匹配,从而进行逐元素相加。例如,我们可以对一个三维张量使用`tensor[:, mask, 0:5]`,其中`:`表示选择第一个维度的所有元素,`mask`是一个布尔张量用于筛选第二个维度,`0:5`则是对第三个维度进行切片。它们将一个源张量的值按照索引张量指示的位置,分散到目标张量中。
2025-10-14 17:22:22
348
原创 PyTorch张量运算进阶高效利用广播机制与原地操作提升模型性能
在实际模型开发中,自定义层是展示广播和原地操作优势的绝佳场所。考虑实现一个简单的批量归一化(BatchNorm)层。在更新运行均值和方差时,我们需要计算批量的均值和方差,并用动量法更新全局统计量。计算批量均值batch_mean(形状为[C])时,需要对特征张量x(形状为)在N、H、W维度上求平均。。如果该层被频繁调用,且内存敏感,可以进一步考虑将减均值和除标准差合并为一步,并探索在验证模式下使用原地操作来更新x(因为验证时不需要保留计算图)。
2025-10-14 17:19:39
304
原创 使用PyTorch构建自定义数据集类的完整指南从基础实现到高级技巧
在深度学习中,数据是模型的基石。虽然PyTorch内置了许多标准数据集,但在实际应用中,我们经常需要处理自定义的数据。本文将全面介绍如何使用PyTorch的和DataLoader来构建自定义数据集类,涵盖从基础实现到内存映射、分布式训练等高级技巧。创建一个自定义数据集类需要继承__init____len__和。下面是一个处理图像分类任务的简单示例,假设我们的数据存储在一个目录中,每个子目录代表一个类别。首先,在__init__方法中,我们初始化文件路径和可能的转换操作;__len__方法返回数据集的大小。
2025-10-14 17:17:46
228
原创 PyTorch深度学习实战从入门到精通
一个典型的神经网络模型可以通过继承`nn.Module`类来定义,在`__init__`方法中初始化各种网络层(如线性层`nn.Linear`、卷积层`nn.Conv2d`、激活函数`nn.ReLU`等),并在`forward`方法中定义数据的前向传播路径。定义好模型结构后,我们需要选择损失函数(如用于分类的交叉熵损失`nn.CrossEntropyLoss`)和优化器(如随机梯度下降`torch.optim.SGD`或Adam`torch.optim.Adam`),它们共同指导模型如何从数据中学习。
2025-10-14 17:15:46
330
原创 使用PyTorch构建深度学习模型从入门到实战的全面指南
深度学习作为人工智能领域的关键分支,正在深刻改变我们处理复杂数据的方式。而在众多深度学习框架中,PyTorch以其直观的接口、动态计算图和强大的社区支持,成为了研究和工业界的首选工具之一。它由Facebook的AI研究团队开发,结合了灵活性与高性能,使得构建和训练复杂的神经网络变得更加容易。本指南将带领你从零开始,逐步掌握使用PyTorch构建模型的核心技能。
2025-10-14 17:13:50
422
原创 针对PyTorch中张量视图与内存连续性对模型性能影响的深度解析
当张量是连续时,现代CPU的缓存预取机制能够最高效地工作,因为内存访问模式是可预测的,从而减少了缓存未命中的情况。相反,我们创建的是一个“视图”,即一个与原张量共享同一块底层数据内存的新张量对象,但可能以不同的形状(shape)、步幅(stride)或偏移量(offset)来解读这些数据。主动将非连续张量变为连续张量,将一次性的拷贝开销分摊出去,避免在核心计算中反复触发隐式拷贝。一个常见的优化策略是,在模型训练循环开始前,或者在一系列可能会破坏连续性的视图操作之后,主动检查并确保关键张量的连续性。
2025-10-14 17:11:25
245
原创 PyTorch张量操作进阶指南高效数据处理与内存优化技巧
当内置操作无法满足需求时,可通过自定义CUDA内核或使用TorchScript编写高效操作。避免在Python循环中频繁进行小张量操作,而应使用向量化方法。对于动态形状的张量,预分配缓冲区并复用可减少内存分配开销。此外,使用中的自定义反向传播功能,可精细控制哪些张量需要保留用于梯度计算。
2025-10-14 17:09:44
236
原创 PyTorch张量操作进阶指南从基础重塑到高级广播机制详解
当内置操作无法满足需求时,PyTorch允许用户自定义张量运算。可以通过编写普通的Python函数并结合PyTorch操作符来实现,对于更高性能的要求,则可以借助C++/CUDA扩展。理解如何利用函数表达复杂的张量缩并运算,或者如何使用装饰器对函数进行即时编译(JIT)以提升速度,是迈向PyTorch高级用户的标志。
2025-10-14 17:08:33
346
原创 使用PyTorch构建高效图像分类模型的实战指南
除了选择更优的模型架构,还可以通过一系列技巧提升性能:集成学习(融合多个模型的预测结果)、使用测试时增强(TTA)对测试图像进行多种变换并平均预测结果,以及对训练数据进行更复杂的数据增强(如MixUp、CutMix)。对于生产环境部署,可以考虑使用TorchScript将模型转换为不依赖Python运行时的序列化格式,或者使用ONNX格式以实现跨框架的模型互操作。实践中,我们通常不会从零开始构建所有层,而是利用迁移学习,加载在大型数据集(如ImageNet)上预训练好的模型作为起点。在PyTorch中,
2025-10-14 17:06:15
398
原创 基于PyTorch的深度学习模型在自然语言处理中的应用与优化
在基础应用中,研究者可以利用PyTorch轻松实现词嵌入模型,如Word2Vec或GloVe,将离散的词语转化为连续的向量表示,这是绝大多数NLP任务的基石。此外,对于更复杂的序列模型,PyTorch提供了。模块,模型的部分计算可以保持在16位浮点数精度下进行,从而显著减少内存占用并加快训练速度,同时对模型精度的影响微乎其微,这对于训练参数庞大的语言模型至关重要。在NLP中,热身调度策略尤为常见,即训练初期使用较低的学习率逐步升温,再按照预定计划下降,这有助于训练过程的稳定性和模型收敛到更优解。
2025-10-14 17:04:47
266
原创 PyTorch张量操作入门从基础重塑到高级索引的全方位指南
掌握从基础创建到高级索引的PyTorch张量操作,是深入学习深度学习模型实现的基石。从理解张量的基本概念和属性开始,逐步熟悉其算术运算、形状变换、数据选取和归约统计等方法,能够为构建复杂的神经网络和处理多维数据打下坚实的基础。更重要的是,要将这些操作与PyTorch的动态计算图和自动微分机制结合起来,从而高效地进行模型的研究与开发。
2025-10-14 17:02:43
403
原创 PyTorch实战使用自定义Dataset类构建高效数据加载流水线
在PyTorch深度学习项目中,高效的数据加载是模型训练成功的关键基石。torch.utils.data.Dataset类作为数据管理的抽象接口,其自定义实现能够将原始数据(如图像文件、文本数据、音频信号等)封装成PyTorch张量可识别的格式。与直接使用Python原生数据结构相比,自定义Dataset类的优势在于其提供了标准化的数据访问方式,能够与DataLoader无缝协作,实现数据的批量加载、多进程并行读取以及数据打乱,从而极大地提升了数据吞吐效率,避免了训练过程中的I/O瓶颈。
2025-10-14 17:00:35
383
原创 使用PyTorch实现文本分类任务的中文指南
一种高效的策略是加载预训练的词向量,如Word2Vec或GloVe,这能为模型提供丰富的先验语义知识,尤其当您的训练数据有限时。预处理流程通常包括:使用TorchText的`Field`或更新的`LabelField`和`get_tokenizer`来定义文本和标签的处理方式,例如指定分词器、是否转换为小写、词汇表的最大容量等。对于更复杂的任务,可以使用预训练的语言模型(如Hugging Face的Transformers库中的BERT)进行微调,这通常能取得state-of-the-art的结果。
2025-10-14 16:58:05
374
原创 PyTorch模型部署实战从训练到推理的完整流程解析
ONNX模型可以被众多推理引擎(如TensorRT, OpenVINO)支持,这极大地扩展了模型的部署范围,是实现跨平台部署的关键一步。模型部署的性能和效率在很大程度上取决于所选择的推理引擎和运行环境。对于不同的硬件平台(如CPU、GPU、边缘设备)和应用场景(如高吞吐量服务器、低延迟移动端),需要选用合适的工具。在PyTorch模型部署的完整流程中,模型的训练与验证是第一步,也是决定最终模型性能的核心环节。对于需要持续更新的模型,还应设计蓝绿部署或金丝雀发布等策略,以实现在不影响服务的前提下平滑过渡。
2025-10-14 16:55:27
269
原创 PyTorch张量操作进阶指南从基础重塑到高级广播机制详解
torch.zeros()和torch.ones()函数可以快速创建指定形状的全零或全一张量,而torch.randn()则生成符合标准正态分布的随机张量。view()和reshape()都能改变张量的形状,但view()要求张量在内存中连续存储。PyTorch的张量是现代深度学习框架中的核心数据结构,它不仅是存储多维数据的容器,更是构建神经网络的计算基础单元。理解张量的维度概念至关重要,0维张量是标量,1维张量是向量,2维张量是矩阵,更高维度的张量则用于表示批量数据或复杂结构。
2025-10-14 16:54:12
369
原创 Django5.0新特性解析全面拥抱异步视图与更强ORM
在视图内部,可以调用Django提供的异步数据库查询API,例如使用`async for`来迭代一个异步查询集(QuerySet),或者使用`await`来执行异步的数据库操作。尽管在迁移现有项目时需要谨慎处理同步和异步代码的兼容性,但这一转变无疑为Django框架的未来发展奠定了坚实的基础,使其在快速演进Web开发领域中继续保持强大的竞争力。这些改进不仅提升了应用程序的性能和响应能力,还为开发者提供了更强大、更直观的数据操作工具,使其能够更好地应对高并发场景和复杂的数据库交互需求。
2025-10-13 18:20:29
411
原创 《Django从入门到实践使用Django5.0构建现代化Web应用的全流程指南》
模型是Django中与数据库交互的核心,每个模型类对应数据库中的一张表。在应用的models.py文件中,通过继承类来定义模型。类的每个属性代表数据库表中的一个字段,Django提供了丰富的字段类型,如CharFieldForeignKey等。定义模型后,需要生成并应用迁移文件来创建对应的数据库表。首先运行命令,Django会根据模型的变更生成迁移脚本。然后运行命令,将迁移脚本应用到数据库中,从而创建或修改表结构。
2025-10-13 18:19:16
319
原创 Django项目从零到一十分钟快速搭建个人博客系统
在blog应用的models.py文件中,定义一个简单的文章模型。模型通常包括标题、内容、创建时间和更新时间等字段。例如,可以创建一个名为Post的模型,其中title字段为CharField,content字段为TextField,created_at和updated_at字段为DateTimeField。使用auto_now_add参数设置created_at在对象创建时自动添加当前时间,updated_at使用auto_now参数在每次保存时更新。
2025-10-13 18:18:18
236
原创 Django项目架构深度解析从settings.py到WSGI的完整部署指南
从settings.py的细微配置到WSGI服务器的部署架构,Django提供了一个完整、灵活的Web开发框架。深入理解这一技术栈的每个环节,能够帮助开发者构建更加稳健、高效的应用,并根据具体需求进行有针对性的优化和扩展。掌握这些知识是成为专业Django开发者的关键一步。
2025-10-13 18:17:45
289
原创 Django模型设计进阶从零打造高效数据层架构
默认的`objects`管理器提供了基础查询功能。通过自定义管理器,我们可以封装常用的查询逻辑。例如,为`Post`模型创建一个`PublishedManager`,提供`Post.published.all()`这样的接口来获取所有已发布的文章。这遵循了“不要重复你自己”(DRY)原则,并使业务逻辑更集中。构建一个高效的Django数据层架构是一个持续迭代和优化的过程。它始于对业务领域的深刻理解,并贯穿于模型设计、关系定义、查询优化和高级模式应用的每一个环节。
2025-10-13 18:16:54
401
原创 Django从入门到精通构建现代化Web应用的全流程指南
在Django中,模型是Python类,每个类对应数据库中的一张表,类的属性对应表的字段。在应用的`models.py`文件中定义模型。例如,可以定义一个`Article`模型,包含`title`(标题)和`content`(内容)等字段。定义完模型后,需要创建迁移文件来记录模型的变化,命令为`python manage.py makemigrations`。然后,将迁移文件应用到数据库,即执行`python manage.py migrate`命令。
2025-10-13 18:15:35
292
原创 Django4.0实战从零搭建一个高性能的个人博客系统
在当今互联网时代,拥有一个个人博客系统是展示技术能力和分享知识的重要途径。本文将详细阐述如何使用Django 4.0这一强大的Python Web框架,从零开始构建一个高性能的个人博客系统。Django 4.0带来了诸多新特性,如新的缓存框架、更简洁的表单渲染以及针对异步视图的增强支持,这些都为构建高性能应用奠定了坚实基础。我们的目标是创建一个不仅功能完备,而且在响应速度、可扩展性和安全性方面都表现优异的博客系统。
2025-10-13 18:14:29
358
原创 C语言入门从基础语法到实战应用
通过从“Hello, World!”到这个小项目的实践,你已经走过了C语言入门的重要一步。C语言的学习是一个持续的过程,接下来你可以继续探索内存管理、文件I/O、数据结构(如链表、树)、多文件编程等更深入的主题。不断练习和尝试解决实际问题,是掌握这门语言的最佳途径。祝你编程之旅愉快!
2025-10-13 12:18:08
350
原创 .NET6与云原生现代微服务架构的变革与实践
此外,对于Kubernetes这类主流的编排平台,.NET 6提供了更好的支持,例如改进的健康检查集成,使得服务在集群中的生命周期管理更加可靠和自动化。在数据管理方面,Entity Framework Core的持续改进支持了更高效的数据访问模式,并且能够很好地适应每个微服务拥有独立数据库的架构原则,通过灵活的迁移和种子数据管理来维护数据的一致性。对于服务间的通信,除了标准的RESTful API,.NET 6对gRPC提供了顶级的支持,其高性能的二进制协议非常适合微服务之间的内部调用。
2025-10-12 00:03:21
371
原创 .NET技术赋能未来探索跨平台开发的新境界
总而言之,.NET 技术栈已经成功转型为一个开放、现代且充满活力的跨平台开发引擎。它通过统一的平台、卓越的性能、对云原生和前沿技术的深度集成,为开发者探索未来应用形态提供了坚实的技术支撑。无论是移动应用、桌面软件、云端服务还是智能边缘计算,.NET 都将继续赋能开发者,突破平台藩篱,创造无缝连接的数字新体验。
2025-10-12 00:01:58
417
原创 .NET平台下异步编程的实战技巧与性能优化解析
对于I/O密集型操作(如文件读写、网络请求),异步的优势在于它不占用线程池线程,在等待硬件响应期间,线程会被释放以处理其他请求,从而实现高并发。理解状态机是实现异步操作的关键,当编译器遇到async方法时,它会将该方法转换为一个状态机结构,该结构负责在异步操作挂起时保存执行上下文,并在操作完成后恢复执行。此时,需要使用信号量(如SemaphoreSlim)或更高级的库(如System.Threading.Channels)来进行并发控制和工作队列管理,实现平滑的限流,保证系统的稳定性。
2025-10-12 00:01:05
257
原创 .NET技术赋能未来探索开源生态与跨平台开发新趋势
NET技术的开源化和跨平台化不仅是技术发展的必然趋势,更是对未来软件开发模式的深刻洞察。随着技术的不断成熟和生态系统的持续完善,.NET将在企业级应用、云原生开发和智能化解决方案等领域发挥更加重要的作用。开发者社区的热情参与和持续创新将为.NET技术栈注入新的活力,推动整个行业向前发展。
2025-10-11 23:59:48
590
原创 .NET技术赋能未来探索跨平台开发与云原生的新纪元
这种真正的跨平台能力,意味着企业可以更灵活地选择基础设施,无论是部署在成本更优的Linux服务器上,还是在macOS上进行跨平台客户端应用开发(如通过MAUI),.NET都提供了无缝的体验,极大地拓展了技术的适用场景。微软大力推广的Visual Studio Code,配合强大的C#扩展,成为了跨平台.NET开发的利器。然而,随着.NET Core的诞生和后续.NET 5及更高版本(统称为现代.NET)的战略统一,微软彻底打破了这一桎梏,引领.NET技术栈进入了一个以跨平台开发和云原生应用为核心的新纪元。
2025-10-11 23:58:23
694
原创 .NET赋能未来探索跨平台开发与云原生技术新纪元
这不仅极大地拓展了.NET开发者的职业边界,也为企业构建异构系统提供了统一的技术栈选择。此外,工具链的持续改进,如Visual Studio和Visual Studio Code的增强调试、热重载等功能,将进一步提升跨平台开发的效率和开发者体验,巩固.NET作为构建未来云原生和智能应用的首选平台之一的地位。.NET 8中引入的Native AOT尤其值得关注,它能够将应用直接编译为本地代码,实现极致的启动速度和最小的内存占用,非常适用于资源受限的边缘计算场景和对冷启动延迟敏感的Serverless函数。
2025-10-11 23:56:45
254
原创 .NET技术在数字化转型浪潮中的核心价值与未来展望
综上所述,.NET技术凭借其跨平台能力、强大的生态系统、卓越的性能以及对现代架构的深度支持,在数字化转型浪潮中不仅保持了强大的生命力,更展现出蓬勃的活力。面对未来的技术挑战与机遇,持续创新的.NET平台将继续作为企业构建稳健、高效、智能数字化解决方案的核心基石,其价值将在云计算、人工智能、物联网等前沿领域的深入应用中得到进一步释放。
2025-10-11 23:55:35
282
原创 .NET技术赋能未来探索智能应用开发的新范式
同时,随着开源生态的繁荣,一个围绕.NET AI开发的丰富工具链和最佳实践社区正在形成,这将进一步降低智能应用开发的门槛,赋能更多开发者探索人工智能的无限可能。特别是Azure Functions等Serverless平台与.NET的紧密结合,让开发者能够构建事件驱动的智能微服务,只需为实际消耗的计算资源付费,这极大地降低了运行AI工作负载的成本。在人工智能浪潮席卷全球的今天,.NET生态系统正以前所未有的速度演进,通过深度集成AI能力和拥抱云原生架构,为开发者构建下一代智能应用开启了全新范式。
2025-10-11 23:54:31
340
原创 ASP.NETCore中依赖注入的实践与陷阱如何避免服务生命周期管理中的常见错误
ASP.NET Core内置的依赖注入容器提供了三种主要的服务生命周期:瞬态(Transient)、作用域(Scoped)和单例(Singleton)。正确理解并应用这些生命周期是构建健壮、可扩展应用程序的关键。瞬态服务在每次请求时都会创建一个新实例;作用域服务在同一个请求(即同一个作用域)内是同一个实例;单例服务在整个应用程序生命周期内只有一个实例。错误地选择生命周期会导致一系列问题,如内存泄漏、数据竞争或状态不一致。
2025-10-11 23:53:27
254
原创 .NET全栈开发者的微服务架构探索从单体应用迈向云原生
对于.NET全栈开发者而言,从单体应用迈向云原生微服务架构是一段充满挑战但回报丰厚的旅程。这要求我们不仅掌握.NET Core、Docker、Kubernetes等具体技术,更要理解分布式系统设计的核心原则和云原生的思维方式。通过渐进式改革、持续学习和对自动化、可观测性的高度重视,.NET开发者能够构建出真正适应现代云环境要求的高效、健壮且可扩展的应用程序。
2025-10-11 23:52:05
389
原创 .NETCore依赖注入最佳实践如何优雅管理应用生命周期
对于创建逻辑复杂或需要条件初始化的服务,可以注册自定义工厂委托(Func<>)或使用`services.AddTransient(sp => new MyService(...))`方式。结合Lazy可以实现延迟加载,将资源消耗分摊到实际使用时,优化应用启动性能。优雅地管理依赖注入生命周期是构建健壮.NET Core应用的基石。通过深入理解三种生命周期的特性,结合接口抽象、批量注册和选项模式等最佳实践,开发者可以设计出高效且易于维护的架构。
2025-10-11 23:51:06
308
原创 .NET开发中的并发编程深度解析锁机制与最佳实践
NET中的锁机制是并发编程的强大工具,但也是一把双刃剑。正确使用时,可以保证数据的一致性和系统的稳定性;使用不当,则会导致性能下降、死锁等严重问题。开发者必须深入理解每种锁的特性、开销和适用场景,并结合具体的业务逻辑和性能要求做出选择。遵循最小化临界区、避免死锁、优先考虑高性能无锁替代方案等最佳实践,是构建高效、健壮并发应用的基础。随着.NET平台的持续演进,新的并发原语和模式也在不断出现,持续学习和实践是掌握这门艺术的关键。
2025-10-11 23:49:39
395
原创 .NET核心技术详解从CLR到跨平台开发的实践与探索
为拥抱开源和跨平台趋势,微软推出了.NET Core——一个全新的、模块化的、可在Windows、Linux和macOS上运行的跨平台开源框架。随着.NET 5的发布,微软将.NET Framework和.NET Core进行了统一,形成了当今的.NET平台,实现了“一个统一的.NET平台”的愿景,支持构建从云端、Web到移动设备和物联网设备的各类应用。未来,随着人工智能和边缘计算的兴起,.NET凭借其强大的生态系统和持续的创新,将在更广阔的跨平台应用场景中发挥关键作用。
2025-10-11 23:48:13
373
原创 .NET开发中的微服务架构设计从理论到实践的探索之路
NET开发中的微服务架构之旅,是一场从宏大的理论构想迈向精细的工程实践的探索。它不仅要求开发者掌握新的架构思想和技术工具,更需要转变开发、测试和运维的思维方式。虽然前路伴随着分布式系统的复杂性,但通过遵循正确的设计原则、善用.NET生态系统提供的强大支持,并持续关注可观测性与自动化,我们能够构建出高可用、高可扩展且易于维护的现代化应用系统。这条从理论到实践的探索之路,正是.NET开发者拥抱云原生时代、驱动技术创新的重要途径。
2025-10-11 23:47:12
367
原创 .NET生态中的依赖注入从基础实践到高级架构设计
从基础的服务注册与解析,到与面向接口编程的结合,再到支撑分层、模块化等高级架构设计,依赖注入贯穿始终。随着.NET平台的持续发展,依赖注入作为其核心的一部分,将继续为开发者提供强大的支持。服务注册后,可以通过构造函数注入、方法注入或属性注入(不推荐)的方式在应用程序的其他部分获取服务实例。构造函数注入是.NET中最常用和推荐的方式,它通过类的构造函数参数明确声明其依赖关系,容器会自动解析并注入所需的实例。在大型企业级应用中,依赖注入的使用常常与更高级的架构模式相结合,以实现更好的模块化和可扩展性。
2025-10-11 23:45:48
632
原创 MySQL数据库性能优化的十大实用技巧与策略
索引是提高查询性能最有效的手段之一,但不当的索引会降低写操作的性能并占用额外空间。遵循规范化原则以减少数据冗余,但在需要极致读性能的场景下,可适度反规范化(如增加冗余字段)以避免复杂的JOIN操作;在当今数据驱动的世界中,数据库的性能直接影响着应用程序的响应速度、用户体验和业务成本。通过持续实践和迭代这些技巧,您可以显著提升数据库的性能和稳定性,为业务发展提供坚实的基础。连接池维护一定数量的活跃连接,应用程序从池中获取和归还连接,大大减少了连接建立的时间,提高了系统的响应速度和处理能力。
2025-10-10 03:46:31
323
原创 MySQL性能优化的10个关键技巧,让数据库查询速度提升10倍
当遇到完全相同的查询时,数据库会直接从缓存中返回结果,避免了重复的解析、优化和执行过程。同时,需要定期分析和优化索引,删除冗余和未使用的索引,因为过多的索引会影响写操作的性能。避免使用SELECT ,而是只查询需要的列,减少网络传输和数据读取的开销。对于包含大量TEXT或BLOB列的表,如果这些大字段不常被查询,可以考虑将它们拆分到单独的表中,通过主键关联,这样可以提高主表的查询速度。对于一些复杂的、需要关联多张表的查询,可以考虑适度的反范式设计,例如增加一些冗余字段以避免频繁的JOIN操作。
2025-10-10 03:45:39
311
空空如也
你好,你的这个帖子,里面的内容有安装教程吗?
2023-04-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅