- 博客(1762)
- 收藏
- 关注
原创 Python 高性能网关实战:从零打造百万级 QPS 的流量入口
本文分享了使用Python构建高性能API网关的实战经验,通过精心设计实现了单机100万QPS的性能目标。文章详细介绍了架构设计和技术选型,包括使用uvloop异步引擎、httptools实现零拷贝HTTP解析、Radix Tree路由匹配等核心组件。关键优化点包括:预分配缓冲区减少内存分配、零拷贝数据处理、多进程+SO_REUSEPORT充分利用多核。作者通过实际代码展示了高性能HTTP服务器的实现,包括请求解析、异步处理和响应发送等核心流程。
2026-01-25 08:27:31
137
原创 Python 错误处理革命:手写零成本异常的错误码系统
Python错误处理革命:零成本异常的错误码系统 本文介绍了一种Python高性能错误处理方案,通过借鉴Rust的Result类型,构建了一个零成本异常的错误码系统。传统Python异常处理在高并发场景下存在性能瓶颈,包括栈展开开销、上下文切换和内存分配等问题。
2026-01-25 08:23:30
274
原创 从零构建高性能 KV 存储:手撕比 Redis 更快的本地缓存引擎
本文介绍了一种基于mmap内存映射和哈希索引的高性能本地KV存储实现方案。该方案通过mmap实现零拷贝数据访问,利用哈希索引保证O(1)时间复杂度查找,在纯本地场景下性能可达Redis的3-5倍。文章详细阐述了技术选型理由、核心架构设计以及关键功能实现,包括紧凑的二进制存储格式、哈希索引构建、高效追加写入和极速读取等核心模块。整个实现仅需300行Python代码,展示了如何结合操作系统底层特性和高效数据结构来构建高性能存储引擎,特别适合单机高频读写场景。
2026-01-25 08:19:25
138
原创 从零打造超快本地 KV 存储:mmap + 哈希索引完胜 Redis 的极致优化之旅
摘要 本文介绍了一种基于mmap和哈希索引的高性能本地KV存储实现,其性能显著优于Redis。通过零拷贝内存映射、本地内存访问和高效哈希索引,该方案实现了26倍的单次操作速度提升和18倍的批量操作速度提升。文章详细阐述了架构设计,包括mmap存储层和哈希索引层的实现原理,并提供了核心代码示例,展示了如何利用mmap文件映射和结构化数据存储来构建超快速本地存储引擎。
2026-01-23 07:13:41
378
原创 Python 内存管理进化论:从 pymalloc 到 tcmalloc/jemalloc 的性能飞跃
本文探讨了Python内存管理从pymalloc到tcmalloc/jemalloc的性能优化历程。作者通过实际案例展示,在处理1000万条记录的ETL任务中,jemalloc相比默认pymalloc能减少50%内存使用并提升30%性能。文章深入分析了三种分配器的核心机制:pymalloc针对小对象优化但存在碎片问题;tcmalloc通过线程本地缓存提升多线程性能;jemalloc则在内存碎片管理和扩展性上表现均衡。
2026-01-23 06:39:40
451
原创 Python 模块延迟加载的艺术:从原理到实战的深度探索
Python模块延迟加载优化方案 本文深入探讨了Python模块延迟加载的三种实现方案,旨在解决传统导入方式导致的性能瓶颈问题。通过分析模块导入机制,文章提出: 模块级延迟加载:利用__getattr__特性实现按需加载,首次访问时才导入依赖项 函数级延迟装饰器:通过装饰器模式实现更细粒度的控制,仅在函数调用时加载所需模块 智能加载系统:构建生产级解决方案,包含缓存、超时处理和性能监控功能 这些技术特别适用于CLI工具、Lambda函数等对启动时间敏感的场景,能显著提升应用性能。
2026-01-23 06:36:11
382
原创 《别再怪 Python 慢了:真正“性能杀手”可能是 import ——以及 importlib 的高阶优化指南》
文章提供了实用的优化方案:首先推荐使用-X importtime测量导入耗时,然后重点介绍了懒加载技术,包括将import放入函数内部和使用importlib进行动态导入。特别展示了importlib的3个核心技巧:动态模块导入、字符串路径调用函数以及轻量级模块探测,这些方法能显著减少启动时的依赖加载,提升程序响应速度。
2026-01-22 07:20:57
481
原创 Python 遇见 GPU:从零手写 CUDA Kernel 完全指南
本文介绍了如何在Python中使用GPU加速计算,通过CuPy和PyCUDA实现CUDA编程。首先对比了CPU与GPU的并行计算差异,展示了GPU的显著性能优势。然后详细讲解了CuPy的安装与基本用法,包括数据传输优化策略。重点演示了如何编写自定义CUDA Kernel,从向量加法到矩阵乘法优化,解释了线程网格的组织方式。通过实际代码示例,帮助Python开发者突破性能瓶颈,掌握GPU并行计算的核心概念和实用技巧。
2026-01-22 07:04:52
360
原创 Python 高性能计算的枷锁与突破:深入理解 GIL 与 Numba 加速之道
本文探讨了Python高性能计算的瓶颈与突破之道。首先揭示了全局解释器锁(GIL)的存在原因及其影响范围,指出纯Python代码在多线程CPU密集型任务中的性能局限。随后介绍了四种突破GIL的方法:多进程、C扩展(NumPy)、Cython和Numba,重点分析了Numba通过JIT编译将Python代码转换为高效机器码的工作原理。文章通过蒙特卡洛模拟π值的对比实验,展示了Numba仅需添加装饰器即可实现48倍加速的惊人效果,并详细解析了Numba绕过GIL的三大机制:即时编译为机器码、自动释放GIL和优化
2026-01-22 06:55:19
453
原创 Python 异步任务编排实战:从零打造轻量级 Workflow 框架
我们从零构建了一个功能完备的异步任务编排框架,覆盖了:✅ 核心能力:任务注册、依赖解析、并发调度✅ 高级特性:超时控制、失败重试、状态追踪✅ 实战应用:电商数据流水线完整案例
2026-01-22 06:52:28
458
原创 Python 多进程陷阱:深度剖析 starmap_async 的回调地狱与优雅解决方案
摘要:本文深入剖析Python多进程编程中starmap_async方法的潜在陷阱,包括回调地狱、资源泄漏和异常处理困难三大核心问题。作者通过实际生产事故案例,展示了异步回调模式如何导致代码可读性崩溃和调试困难,并提供了同步方法结合结构化异常处理的优雅解决方案。文章包含详实的代码示例,对比了危险的反模式与最佳实践,特别强调了对任务状态跟踪、资源管理和错误恢复的关键处理技巧。
2026-01-21 06:55:12
506
原创 Python 分布式事务装饰器实战:从零实现两阶段提交协议
本文介绍了如何使用Python实现基于两阶段提交(2PC)协议的分布式事务装饰器。首先分析了分布式事务在微服务架构中的重要性,然后详细讲解了两阶段提交协议的理论基础。核心实现包括三个部分:定义事务参与者接口、实现事务协调器逻辑,以及封装为易用的装饰器。该方案通过协调器统一管理多个数据源的事务操作,确保跨服务的数据一致性。文章提供了完整的代码实现,包括事务状态管理、准备/提交/回滚流程控制等关键功能,为Python开发者处理分布式事务提供了实用参考。
2026-01-21 06:50:06
820
原创 Python 装饰器实战:从零打造“只执行一次“的懒加载机制
摘要 本文通过实战案例详细介绍了Python装饰器在实现"只执行一次"懒加载机制中的应用。文章从基础装饰器原理讲起,逐步实现三个版本的装饰器:1) 基础版本实现简单缓存;2) 进阶版本支持参数缓存并保留元信息;3) 专业版本实现线程安全的全局单例模式。文中包含大量代码示例,展示了装饰器如何解决资源初始化、函数缓存等实际问题,特别适合需要优化性能或处理资源加载的Python开发者。通过手写装饰器的过程,读者可以深入理解Python函数式编程思想。
2026-01-20 07:14:24
456
原创 PyPy 的速度传奇:揭秘 JIT 编译如何让 Python 快 10 倍
PyPy通过JIT编译技术显著提升Python性能,在计算密集型任务中可达到CPython的10倍速度。其核心原理是通过运行时检测热点代码,将其编译为优化后的机器码执行。PyPy采用Tracing JIT技术,包含类型特化、循环展开等关键优化手段。实践表明,PyPy特别适合数值计算、数据处理等场景,安装简便且与CPython高度兼容。开发者可通过性能测试工具验证优化效果,注意PyPy在内存占用和启动时间上的权衡。
2026-01-20 06:55:14
934
原创 Python 3.13 的 GIL 革命:No-GIL 模式深度解析与实战指南
Python 3.13引入革命性的No-GIL模式,终结了长期困扰开发者的全局解释器锁问题。本文深入解析GIL机制及其性能影响,展示3.13版本如何通过延迟引用计数、不朽对象等技术实现多线程并行计算。实战测试表明,No-GIL模式在8核CPU上可实现近6倍加速,同时提供启用指南和最佳实践案例,包括并行数据处理等应用场景。这一突破使Python在CPU密集型任务中终于获得真正的多线程能力。
2026-01-20 06:43:40
497
原创 《从字节到速度:手撕一个零拷贝二进制协议(struct + buffer protocol 深度实战)》
本文深入探讨如何在Python中高效处理二进制数据,通过零拷贝技术实现高性能协议解析。传统方法如json、pickle存在内存拷贝瓶颈,而Python内置的struct、buffer protocol和memoryview可实现零拷贝操作。文章从二进制类型家族入手,重点解析memoryview的零拷贝特性,并逐步设计一个包含magic、version、length和payload字段的二进制协议。
2026-01-19 07:16:34
805
原创 《深入 Python 序列化世界:msgpack vs pickle 的本质区别与安全真相》
本文深入对比了Python中两种序列化工具msgpack和pickle的核心差异。pickle作为Python专属序列化协议,能序列化任意Python对象但存在严重安全隐患,反序列化时会执行任意代码,仅适用于可信环境。而msgpack是跨语言的高性能二进制序列化格式,只处理数据不执行代码,安全性更高,适合网络通信、缓存等场景。文章通过实例展示了pickle的安全风险,并提供了msgpack的安全使用方案。建议在Web服务、微服务等场景优先选择msgpack或JSON等更安全的替代方案,避免pickle的安全
2026-01-19 07:00:19
674
原创 《挑战 json.dumps:手写一个比它快 5 倍的 JSON 序列化器》
本文探讨如何手写一个比Python标准库json.dumps快5倍的JSON序列化器。首先分析了标准库的性能瓶颈,介绍了ujson和orjson的优化原理。随后通过纯Python实现了一个简化版序列化器,采用减少函数调用、优化字符串拼接等策略,性能提升显著。文章还讨论了Cython/Rust进阶优化方案,并提供了日志系统、Web API等实战场景的应用建议。最后总结了不同场景下的技术选型方案,展望了JSON序列化的未来发展趋势。该实现为开发者提供了性能优化的新思路,帮助在高并发、大数据量场景下提升系统效率。
2026-01-18 07:57:36
563
原创 深入 Python 对象模型:PyObject 与 PyVarObject 全解析
本文深入解析了Python对象模型的核心结构PyObject与PyVarObject。PyObject作为所有Python对象的基类,包含引用计数(ob_refcnt)和类型指针(ob_type);PyVarObject则在此基础上增加了长度信息(ob_size),用于处理可变长对象。文章通过C语言结构体定义和可视化图示展示了底层实现,并结合实际应用场景(如len()函数、C扩展开发)说明对象模型的工作原理。此外,还探讨了对象模型在性能优化(如__slots__)、调试技巧和垃圾回收机制中的关键作用,帮助开
2026-01-18 07:52:25
606
原创 重构有序字典:手写一个线程安全且更快的 OrderedDict
本文介绍了如何从零构建一个线程安全且高性能的有序字典 ThreadSafeOrderedDict,以解决标准库 collections.OrderedDict 在多线程和性能敏感场景下的不足。通过哈希表+双向链表的组合实现O(1)操作,并内置锁机制确保线程安全。文章详细展示了核心实现代码,包括节点定义、插入/查找/删除操作,以及如何基于该结构实现LRU缓存。性能测试表明该实现优于标准库,最后还讨论了扩展方向(如TTL、LFU)和Python并发生态的发展趋势。
2026-01-16 09:19:18
992
原创 字典的秘密:为什么字符串是最好的 key?自定义对象做 key 时你踩过坑吗?
本文探讨了Python字典中key的设计原则,揭示了字符串作为理想key的原因(不可变性、可读性和兼容性),并分析了自定义对象作为key的潜在问题。文章详细讲解了字典key必须满足可哈希和可比较的条件,列举了合法与非法的key类型,并通过实例展示了如何正确实现自定义对象的__eq__和__hash__方法。最后给出了不同场景下的最佳实践建议,包括优先使用字符串/元组、避免可变对象以及利用标准库工具等。文中还提及了Python 3.12+中的字典优化,帮助开发者构建更健壮的程序。
2026-01-16 09:16:32
684
原创 深挖 Python 字典的底层秘密:哈希表的扩容机制与“4 倍扩容”之谜
本文深入解析Python字典的底层实现机制,重点探讨其哈希表扩容策略。文章首先介绍了Python3.6+字典采用的双数组紧凑结构设计,然后详细剖析了扩容触发时机(基于2/3负载因子阈值)和实际扩容机制(以2的幂次增长而非简单4倍扩容)。通过源码分析和性能测试,揭示了rehashing过程对性能的影响,并提供了预分配等优化建议。最后对比了不同语言的哈希表实现,展望了Python字典的未来发展方向,为开发者理解和使用字典提供了深入见解。
2026-01-15 14:35:48
799
原创 深入理解 Python 字典的有序性:从 3.6 的“意外之喜”到 3.7 的官方承诺
Python 字典(dict)从3.6版本开始实现层面保留插入顺序,3.7版本正式成为语言规范。本文解析这一演变的底层原理:3.6引入紧凑字典优化内存性能,无意中实现有序性;3.7将其标准化。比较了OrderedDict的使用场景,列举了JSON序列化、表单构建等实际应用案例,并给出版本兼容性建议。文章还探讨了字典结构在不同Python版本的底层变化,与其他语言的有序性实现对比,为开发者提供清晰的技术演进脉络和使用指导。
2026-01-15 14:33:46
1018
原创 《从零构建高性能本地缓存系统:Python 实现支持百万级 QPS 的并发安全缓存》
本文介绍了如何从零构建一个高性能本地缓存系统,采用Python实现支持百万级QPS的并发安全缓存。文章首先分析了自建缓存系统的必要性,然后详细拆解了功能目标,包括TTL过期、并发安全、自动淘汰等核心特性。在实现层面,作者设计了基于字典的数据结构,采用线程锁保证并发安全,并实现了被动+主动的过期清理机制。通过性能测试验证了系统在普通硬件上可达10万级QPS。文章还提出了分段锁、LRU淘汰等进阶优化方案,并展示了Web接口缓存的实际应用案例。最后探讨了与Redis、FastAPI等生态系统的融合可能,为开发者提
2026-01-13 07:40:32
649
原创 《用 Python 实现布隆过滤器:为什么我们需要多个哈希函数?》
本文介绍了布隆过滤器的原理及其Python实现。布隆过滤器通过位数组和多个哈希函数,以低内存代价提供"可能存在/一定不存在"的判断能力。文章详细讲解了为何需要多个哈希函数(降低误判率),并给出了误判率公式和最优哈希函数数量计算方法。通过爬虫URL去重的实战案例,展示了布隆过滤器的应用场景。最后提出了哈希函数选择、位数组持久化等优化建议,并探讨了布隆过滤器在AI、大数据等领域的应用前景。文末还设置了开放性问题,鼓励读者分享实践经验。
2026-01-13 07:34:16
523
原创 《手撕高并发限流器:令牌桶 + 漏桶算法实战解析》
本文深入解析了高并发系统中的限流技术,对比了漏桶和令牌桶两种核心算法。通过Python代码实战演示了两种限流器的实现方法,并展示了在Flask接口中的应用场景。文章还提供了精度控制、分布式限流等优化建议,探讨了AI结合、服务网格集成等未来发展方向。从原理到实践,全面指导开发者构建高性能限流组件,保障系统稳定性。适合需要处理高并发场景的Python开发者阅读学习。
2026-01-12 06:15:27
787
原创 《别让 finally 背锅:深入理解 Python 中 return 的陷阱与最佳实践》
本文深入探讨了Python中try...finally结构中return语句的陷阱。当finally块包含return时,它会覆盖try或except块中的返回值,可能导致逻辑错误和异常丢失。文章通过实例解析了这种行为的底层机制,并提供了最佳实践建议:避免在finally中使用return,仅用于资源清理;推荐使用with语句作为更安全的替代方案。此外还介绍了上下文管理器的实现方法。最后强调了这个陷阱的危害性,并邀请读者分享类似经验,共同提升Python编程能力。
2026-01-12 06:07:36
1371
原创 《深入解析 Python 垃圾回收机制:它真的会频繁触发磁盘 IO 吗?》
本文深入解析了Python垃圾回收机制与磁盘IO的关系。关键点包括:1) Python采用引用计数和分代GC管理内存,GC本身不直接操作磁盘;2) 观察到的磁盘IO通常源于对象析构中的文件操作或第三方库行为;3) 可通过gc模块、系统工具监控GC活动,避免在__del__中写入文件;4) 建议使用上下文管理器显式管理资源,调整GC阈值或手动触发回收。文章还提供了大规模数据处理场景的优化案例,并探讨了PyPy、Rust混合编程等前沿方案。最终结论是GC不会直接导致磁盘IO,但需注意间接影响。
2026-01-11 07:29:54
663
原创 《深入理解 Redis 分布式锁:为何必须使用 SET NX EX + Lua 脚本?》
本文深入探讨Redis分布式锁的实现原理与最佳实践。文章首先分析分布式系统中传统锁机制的局限性,指出Redis分布式锁的优势。随后详细讲解从基本SETNX命令到改进版SET NX EX原子操作的演进过程,强调设置唯一值和过期时间的重要性。重点剖析释放锁时必须使用Lua脚本的原因,以解决竞态条件和误删问题。对Redlock算法进行客观评价,指出其潜在缺陷。最后提供最佳实践建议,包括合理设置过期时间、自动续期机制等,并封装为Python上下文管理器。
2026-01-11 07:15:20
756
原创 精通异步上下文管理器:手写一个支持超时与取消的 async with 工具
本文深入讲解如何手写支持超时与取消的异步上下文管理器,提升Python异步编程的可控性。从async with原理入手,逐步构建TimeoutContext类,实现超时自动取消、资源清理和静默模式等功能。通过对比asyncio.wait_for,展示自定义上下文的优势,并提供并发任务控制等实战案例。文章强调最佳实践,如避免内存泄漏、保持异常透明性,并展望与Python 3.11的TaskGroup结合的可能性。适合希望精细控制异步任务生命周期的开发者学习。
2026-01-10 06:56:03
926
原创 解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
本文对比了Python异步编程中的两种范式:标准库asyncio和结构化并发库Trio。asyncio灵活但复杂,存在任务管理、异常处理和取消机制等方面的挑战;Trio通过"结构化并发"理念和Nursery机制,使任务生命周期更清晰,异常传播更一致,取消操作更安全。文章通过并发爬虫案例展示了两种实现的差异,并指出Trio更适合构建高可靠性系统。随着PEP 654的引入,Python正逐步吸收结构化并发的优势,未来异步编程将更注重可维护性和健壮性。建议开发者根据项目需求选择合适的异步方案。
2026-01-10 06:51:06
862
原创 解密 async for:为何它优于 for await?从语法糖到性能本质的深度解析
Python选择async for而非for await的设计背后蕴含语言哲学与性能考量。本文通过语法对比、运行机制解析和性能测试揭示:1)async for是编译器优化的语法糖,自动处理StopAsyncIteration异常;2)相比手动aiter/anext方案,其字节码更高效且协程调度更优;3)在分页API抓取等异步迭代场景中,代码可读性提升30%且性能更稳定。随着异步生态发展,async for将成为流式数据处理的核心范式,FastAPI等框架已广泛采用该特性。
2026-01-09 12:55:08
686
原创 深入异步迭代器:从 aiter/anext 到手写 Async Iterator 的实战指南
本文深入解析Python异步迭代器(__aiter__/__anext__)的工作原理与应用场景。从基础语法入手,通过手写异步日志流模拟器和API分页抓取器等实战案例,演示如何构建高性能异步数据处理器。对比同步生成器与异步迭代器的性能差异,介绍异步生成器(async def + yield)的简化写法,并给出最佳实践建议。文章指出,随着实时数据处理需求增长,异步迭代器将成为Python异步生态的重要组件,适用于网络I/O、流式数据等场景。最后提供进阶学习资源和互动讨论话题。
2026-01-09 12:40:41
919
原创 解构 Python Protocol 与 Java 接口:类型系统背后的哲学与实战落地
Python的Protocol与Java接口在类型系统上存在本质差异:Java接口采用名称子类型,强制显式实现和编译时检查;而Python的Protocol基于结构子类型,通过鸭子类型实现隐式匹配,依赖静态类型检查工具。Protocol更灵活,支持多继承和泛型,但不强制运行时检查。两者分别体现了静态与动态语言的哲学差异,适用于不同场景。最佳实践包括为关键接口定义Protocol、结合泛型与组合,并配合类型检查工具使用。
2026-01-09 12:38:29
1020
原创 《从零手写一个“支持泛型”的自定义容器:Generic + Protocol 的工程化实战(兼顾初学者与进阶开发者)》
从零手写一个“支持泛型”的自定义容器:Generic + Protocol 的工程化实战(兼顾初学者与进阶开发者)
2026-01-08 06:20:22
587
原创 《类型提示在运行时真的“没用”吗?——从 Type Hint 到 `__class_getitem__`:写给“既想写得稳,也想跑得快”的 Python 开发者》
文章摘要 本文深入探讨Python类型提示(Type Hint)在运行时的实际价值,打破了"类型提示仅用于静态检查"的误解。文章首先分析类型提示的生态系统价值,包括IDE支持、文档生成和驱动现代库(Pydantic等)的核心功能。然后详细解析__class_getitem__机制如何实现泛型语法(如list[int]),并演示如何利用类型注解进行运行时验证。通过构建简化版Pydantic模型,展示类型驱动开发的实际应用。
2026-01-08 06:14:40
818
原创 《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
本文对比了 Pydantic v1 与 v2 的核心差异,重点分析了 v2 的性能优化实现。v2 通过重构内部架构,采用 Rust 编写的 pydantic-core 进行校验,将字段校验完全交给预编译的 Rust 代码路径,实现了"零成本"校验。相比 v1,v2 在单字段校验上提速 3 倍,并提供了更细粒度的校验器(@field_validator和@model_validator)及灵活的插件系统。
2026-01-08 06:07:08
795
原创 《深入剖析 dataclass:性能优势何在?@dataclass(frozen=True) 的 hash 实现原理》
本文深入分析了Python中@dataclass的性能优势及其实现原理。通过自动生成__init__等魔法方法、支持__slots__优化内存访问,dataclass比普通类快20-30%。重点探讨了frozen=True的实现机制:生成只读属性并基于字段值tuple自动实现高效哈希。通过缓存系统案例展示了dataclass在实践中的性能优势,并总结了常见误区与最佳实践,如合理使用field()参数处理默认值和不可哈希字段。
2026-01-08 05:59:19
873
原创 `__slots__` 真能省内存吗?何时会适得其反——实战指南与深度剖析
__slots__ 通过固定属性布局替代动态字典,可显著降低内存占用(节省约28%)并提升访问速度,尤其适合大批量同质对象场景。但在需要动态属性、多继承或装饰器时可能适得其反,需谨慎评估。实战案例显示,500万用户对象优化后内存减少80MB,创建速度提升30%,有效缓解OOM问题。
2026-01-07 06:53:28
720
原创 手写超速 CSV 解析器:利用 multiprocessing 与 mmap 实现 10 倍 Pandas 加速
摘要 本文提出了一种高效CSV解析方案,通过多进程和内存映射技术显著提升大文件处理速度。核心设计包括:1) 使用mmap实现文件分块读取,避免I/O瓶颈;2) 多进程并行处理各数据块;3) 边界对齐确保行完整性;4) 向量化解析优化性能。实验显示,该方法在5GB文件处理中比Pandas快11倍,内存占用仅为原文件1.2倍。文中提供了完整实现代码,包含文件分块、进程调度和类型推断等关键模块,并演示了在日志清洗等场景的应用价值。该方案特别适合GB级数据处理,可作为生产环境的高效替代方案。
2026-01-07 06:44:02
1207
Apache Tomcat 安装与配置详解.zip
2025-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅