- 博客(47)
- 收藏
- 关注
原创 分布式锁深度实战:从 Redis 到 Zookeeper 深度解析
分布式锁技术深度解析 本文深入探讨了分布式锁的实现原理与技术选型,重点对比了Redis和Zookeeper两种主流方案: 核心需求:分布式锁必须满足互斥性、无死锁、原子性、可重入和高性能五大条件 Redis方案: 基于SETNX命令实现简单分布式锁 Redisson提供完善的看门狗机制实现自动续期 属于AP系统,高性能但可能出现锁失效 Zookeeper方案: 通过临时顺序节点实现强一致性锁 利用Watcher机制避免羊群效应 属于CP系统,可靠性高但性能较低 选型建议: 高并发场景优先考虑Redis方案
2026-05-10 18:07:56
542
原创 ElasticSearch 集群原理与分片管理深度解析
本文深入解析ElasticSearch集群原理与分片管理机制。主要内容包括:1) ES集群架构,涵盖节点角色(Master/Data/Coordinating/Ingest)和分片类型(Primary/Replica);2) 倒排索引原理与结构,包括分词流程和存储格式;3) 写入流程详解,从客户端请求到主分片处理、副本同步的完整过程;4) 分片分配策略与重分配机制;5) 性能优化方案,包括写入优化(批量操作、副本设置)和查询优化(Filter使用、分页处理);6) 高频面试问题解析。文章通过流程图和示意图直
2026-05-10 18:05:45
413
原创 ElasticSearch 聚合查询与性能优化实战
本文深入解析ElasticSearch聚合查询与性能优化策略。主要内容包括:1)聚合类型划分,涵盖桶聚合(Terms、Range、Date Histogram)、指标聚合(基础统计、去重计数、百分位数)和管道聚合;2)性能优化技巧,如使用filter替代query、控制桶数量、采用近似算法等;3)分片级别聚合原理及深度分页解决方案;4)实战中的多桶聚合和动态桶大小设置;5)面试高频问题解析。文章通过流程图和代码示例,系统性地展示了ES聚合查询的核心机制与最佳实践,为大数据分析场景下的性能优化提供了实用指导。
2026-05-10 17:59:59
495
原创 布隆过滤器原理与 Redis 防穿透实战
布隆过滤器原理与Redis防穿透实战摘要 布隆过滤器是一种高效的概率型数据结构,用于解决缓存穿透问题。其核心原理是通过多个哈希函数将元素映射到位数组中,查询时若所有对应位均为1则可能存在(有误判率),否则一定不存在。Redis通过Bloom模块支持布隆过滤器操作(BF.ADD/BF.EXISTS等)。实际应用中,可结合Guava或RedisBloom客户端实现,在SpringBoot中通过预判存在性避免无效数据库查询。布隆过滤器在空间效率和查询性能上表现优异,但需权衡误判率与存储成本,典型场景下m/n≈10
2026-05-10 17:33:32
421
原创 MySQL 主从复制原理与读写分离实战
MySQL主从复制与读写分离实战摘要 本文深入解析MySQL主从复制原理与实现,主要内容包括: 主从复制架构:通过binlog实现主库到从库的数据同步,支持读写分离、数据备份和高可用 binlog详解:介绍三种格式(STATEMENT/ROW/MIXED)及其特点,分析binlog文件结构和事件类型 复制原理:详细说明Master的Dump线程和Slave的IO/SQL线程协作流程 配置实践:提供主从服务器配置参数和具体SQL操作步骤 复制方式:重点分析异步复制的工作流程 文章通过流程图和代码示例,系统性地
2026-05-10 15:51:35
493
原创 MySQL 分库分表实战:ShardingSphere 深度解析
本文深入解析MySQL分库分表技术,重点介绍ShardingSphere的实现方案。主要内容包括: 分库分表概述:分析单机数据库瓶颈,对比垂直拆分(按业务模块)和水平拆分(按数据行)两种方式,展示典型的分库分表架构。 分片策略详解:讲解分片键选择原则(业务相关性、数据均匀分布),比较Hash分片(均匀但无法范围查询)和Range分片(支持范围但可能热点不均)等算法,并提供Java代码实现示例。 ShardingSphere实战:剖析ShardingSphere-JDBC的SQL解析、路由、重写和执行流程,给
2026-05-09 09:21:34
403
原创 MySQL 锁机制与死锁分析深度解析
本文深入解析MySQL InnoDB的锁机制与死锁问题。主要内容包括:1) InnoDB锁分类全景,涵盖行级锁(Record Lock、Gap Lock、Next-Key Lock)和表级锁,以及锁兼容性矩阵;2) 行级锁的详细工作机制,包括Next-Key Lock的组合结构及其在唯一索引上的特殊性;3) 表级锁类型与意向锁的协调作用;4) 死锁产生原理与排查方法。文章通过流程图清晰展示各类锁的运作机制,并提供了生产环境中的锁优化实战技巧,帮助开发者深入理解MySQL并发控制机制。
2026-05-09 09:18:57
371
原创 MySQL 事务原理:Redo Log 与 Undo Log 深度解析
本文深入解析MySQL事务原理,重点探讨Redo Log与Undo Log的协作机制。首先介绍事务的ACID特性及其实现机制,分析四种隔离级别及其解决的问题。然后详细阐述MVCC机制,包括版本链结构、ReadView判断规则,以及RC和RR隔离级别的差异。最后剖析Undo Log的三大作用(事务回滚、MVCC支持、崩溃恢复)及其记录格式。通过日志系统的协同工作,MySQL实现了高效的事务处理与并发控制能力。
2026-05-09 09:16:55
493
原创 MySQL 性能优化:慢查询与索引优化实战
MySQL性能优化实战摘要 本文系统介绍了MySQL性能优化的核心方法,重点涵盖慢查询分析与索引优化两大领域: 慢查询分析:详细讲解如何开启慢查询日志、配置my.cnf参数,以及使用mysqldumpslow和pt-query-digest工具分析慢查询,同时介绍performance_schema监控方法。 执行计划解读:深入解析EXPLAIN输出字段,特别是type字段的性能等级划分,以及key_len计算方法和Extra字段的常见值含义。 索引优化实战:总结索引失效的六大场景(函数操作、隐式转换、LI
2026-05-09 09:11:20
542
原创 MySQL InnoDB 索引底层:B+树深度解析
MySQL InnoDB索引采用B+树结构优化数据库性能,其设计基于磁盘存储特性。B+树相比B树具有更高查询效率,所有数据存储在叶子节点并通过链表连接,支持高效范围查询。InnoDB以16KB页面为单位管理数据,利用预读机制和局部性原理减少磁盘IO。三层B+树可存储约16GB数据,时间复杂度为O(log n)。索引设计需考虑聚簇索引、二级索引及最左前缀原则,合理优化可显著提升查询性能。
2026-05-09 09:09:22
500
原创 Redis Sentinel 与 Cluster 集群深度解析
Redis高可用方案深度解析:Sentinel与Cluster对比 本文系统分析了Redis两种主流高可用方案。Sentinel哨兵模式通过主从复制+自动故障转移实现高可用,适合中小规模场景,核心包括监控、通知、自动故障转移三大功能,采用Raft算法选举领头Sentinel完成主从切换。Redis Cluster集群模式则通过数据分片(16384个槽)和多主多从架构实现大规模扩展,支持槽迁移和Gossip协议节点通信。两种方案各有侧重:Sentinel侧重高可用保障,Cluster侧重水平扩展,实际选型需根
2026-05-07 09:55:58
226
原创 Redis 持久化:RDB、AOF、混合持久化深度解析
本文深入解析Redis持久化机制,重点对比RDB、AOF和混合持久化三种方案。RDB通过定时快照实现快速恢复但可能丢失数据,AOF记录每个写命令保证数据完整性但恢复较慢,混合持久化(Redis 5.0+)结合两者优势。文章详细剖析了RDB的fork子进程和COW机制原理,解释了AOF的重写过程,并提供了性能对比表格。针对生产环境,建议根据数据安全性和恢复速度需求选择合适的持久化策略,其中混合持久化是推荐的平衡方案。最后还分析了不同方案的触发机制、文件结构和内存管理特点。
2026-05-07 09:54:29
347
原创 Redis 分布式锁与 Redisson 原理深度解析
本文深入解析Redis分布式锁实现原理与Redisson框架。首先介绍了分布式锁的必要性及其核心要求(互斥性、可重入、死锁避免等),对比了数据库、ZooKeeper和Redis三种实现方式。重点剖析了Redis分布式锁的基础实现,包括SETNX+过期时间机制、Lua脚本保证原子性释放锁,以及防止误删锁的"唯一值"解决方案。详细讲解了Redisson的看门狗机制,通过定时任务自动续期解决锁过期问题,并给出了核心源码分析。文章为分布式系统开发提供了Redis分布式锁的实践指导和底层原理说明。
2026-05-07 09:50:36
255
原创 Redis 缓存三大问题与解决方案
Redis缓存三大问题及解决方案 Redis缓存使用中存在三大典型问题:缓存穿透、缓存击穿和缓存雪崩。缓存穿透指查询不存在的数据导致每次请求都打到数据库,可通过布隆过滤器或缓存空值解决;缓存击穿是热点key过期时大量并发请求直接访问数据库,可使用互斥锁或永不过期策略应对;缓存雪崩则是大量key同时过期或Redis宕机,可通过随机过期时间、多级缓存或熔断机制预防。文章详细分析了每种问题的成因,并提供了具体的技术实现方案,如使用Guava或Redisson实现布隆过滤器,以及互斥锁的应用场景和代码示例。这些解决
2026-05-07 09:48:15
502
原创 Redis 五种数据类型底层结构深度解析
Redis 五种数据类型的底层实现基于精妙的数据结构设计:String 类型采用 SDS 动态字符串,支持 O(1) 长度查询和空间预分配;List 使用 quicklist 结合了 ziplist 和链表的优势;Hash 和 Zset 在小数据量时使用 ziplist,大数据量转为 hashtable 或 skiplist;Set 根据元素类型选择 intset 或 hashtable。Redis 通过对象系统(redisObject)统一管理这些数据类型,采用引用计数进行内存管理,并根据数据特征自动进行
2026-05-07 09:46:37
1148
原创 Spring Security 6.x 实战指南
《Spring Security 6.x 实战指南》摘要: 本文深入解析Spring Security 6.x的核心升级,重点对比5.x与6.x的架构差异,包括Lambda DSL配置、组件化安全过滤链等重大变更。6.x版本采用@Bean SecurityFilterChain替代WebSecurityConfigurerAdapter,优化了hasRole()自动前缀处理,并引入authorizeHttpRequests等新特性。文章详细剖析了安全过滤器链执行流程(含17个默认过滤器顺序)、认证授权核心组
2026-05-02 09:26:55
535
原创 Shiro权限框架深度解析
Apache Shiro是一个Java安全框架,核心组件包括Subject(用户主体)、SecurityManager(安全管理器)和Realm(认证授权域)。它提供认证、授权、会话管理和加密功能,架构简单易用,适合中小型项目。相比Spring Security,Shiro学习曲线更平缓,但功能扩展性稍弱。认证流程通过Token验证机制实现,支持多种Realm类型和自定义扩展。整体设计轻量级,可与Spring Boot深度集成,是Java领域经典的安全解决方案。
2026-05-01 13:07:49
543
原创 OAuth2 + JWT 微服务认证方案深度解析
OAuth2 + JWT微服务认证方案解析 本文深入探讨了微服务架构下的认证授权解决方案,重点分析了OAuth2与JWT的结合应用。主要内容包括: 认证挑战:微服务架构面临无状态认证、Token安全、权限控制和跨域问题 OAuth2授权模式:详细介绍了授权码、密码凭证、客户端凭证和简化四种模式的应用场景及流程 JWT技术:解析JWT结构组成,对比JWT与Session的特性差异,提供Java实现示例 Spring集成:展示Resource Server配置、JWT解码器和安全过滤器链的实现方式 校验流程:通
2026-05-01 13:02:32
542
原创 CAS单点登录原理与实践
本文深入解析了CAS单点登录协议的原理与实现。首先介绍了SSO概念和CAS协议核心角色,包括客户端、CAS服务器、服务票据等关键组件。重点剖析了CAS认证流程,通过时序图展示了标准认证步骤和票据验证机制。详细讲解了CAS的三层票据体系(TGC、TGT、ST)及其生命周期管理,包括票据存储策略和过期处理。文章还对比了不同CAS版本特性,并提供了票据存储的代码示例。这些内容为企业实施CAS单点登录提供了全面的技术参考。
2026-05-01 12:59:19
615
原创 微服务认证方案对比与选型
本文对比分析了微服务架构下的四种主流认证方案:Session/Cookie、JWT、OAuth2和CAS。Session方案适合传统单体应用,具有服务端可控、存储安全等优点,但在微服务架构下扩展困难;JWT采用自包含令牌格式,适合微服务和API场景,具有高扩展性;OAuth2适用于第三方登录和SSO场景;CAS则更适合企业级SSO。文章通过原理图、代码示例和对比表格,帮助开发者根据项目类型(单体/微服务)、安全需求和扩展性要求选择最适合的认证方案。
2026-05-01 12:58:02
465
原创 常见Web安全漏洞防护
本文系统介绍了Web应用常见安全漏洞及防护方案。主要内容包括:1)OWASP Top 10安全风险概览,重点分析访问控制失效、加密失败、注入等高风险漏洞;2)构建多层次防护体系,涵盖应用层防护(输入验证、输出编码等)、基础设施安全(HTTPS、WAF等)和运维监控;3)详细解析XSS攻击原理与类型(存储型、反射型、DOM型),提供Spring Security配置方案和HTML转义工具类实现。文章通过图表和代码示例直观展示漏洞原理和防御措施,帮助开发者构建安全可靠的Web应用系统。
2026-05-01 12:52:00
494
原创 SpringMVC请求处理流程源码解析(第3篇):视图渲染与异常处理
本文深入解析SpringMVC视图渲染与异常处理的核心源码流程。重点剖析了ViewResolver体系结构,包括AbstractCachingViewResolver的缓存机制和UrlBasedViewResolver的视图创建过程。通过类图展示了ViewResolver接口及其实现类的关系,详细说明了视图解析的缓存策略、重定向/转发处理逻辑以及视图构建流程。源码分析揭示了SpringMVC如何通过多级视图解析器链实现灵活的视图渲染机制,为理解SpringMVC请求处理的完整生命周期提供了关键视角。
2026-04-30 11:52:43
688
原创 SpringMVC请求处理流程源码解析(第2篇):处理器执行与参数绑定
本文深入解析SpringMVC处理器执行与参数绑定的核心流程,主要包含以下内容:1)HandlerAdapter处理器适配器体系,重点分析RequestMappingHandlerAdapter的核心实现;2)参数解析与数据绑定机制,包括WebDataBinder的初始化过程;3)常用参数解析器的工作原理;4)返回值处理器的执行流程;5)拦截器链的完整执行机制。文章通过类图、源码片段和流程分析,系统性地展示了SpringMVC请求处理的核心组件协作关系,特别是AbstractHandlerMethodAda
2026-04-30 11:47:25
793
原创 SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
本文深入解析SpringMVC请求处理流程的核心机制。SpringMVC基于前端控制器模式,通过DispatcherServlet协调各组件完成请求处理。核心组件包括HandlerMapping(处理器映射)、HandlerAdapter(处理器适配)、HandlerInterceptor(拦截器)和ViewResolver(视图解析)等。请求处理流程从DispatcherServlet的doDispatch方法开始,依次经历处理器查找、适配器选择、拦截器链执行、处理器调用和视图渲染等步骤。文章通过类图和时
2026-04-29 10:10:39
518
原创 SpringMVC拦截器与异常处理原理深度解析
本文深入解析SpringMVC拦截器与异常处理机制。拦截器通过HandlerInterceptor接口实现请求的前置、后置和完成处理,执行流程包括正序preHandle、逆序postHandle和最终afterCompletion三个阶段。异常处理体系包含HandlerExceptionResolver执行链和@ExceptionHandler注解,结合@ControllerAdvice实现全局异常处理。文章详细剖析了拦截器注册配置、异常处理流程时序以及两者的协同工作机制,并通过完整登录认证方案展示实际应用
2026-04-29 09:41:56
510
原创 SpringBoot条件注解与配置加载原理深度解析
本文深入解析SpringBoot条件注解与配置加载原理,重点剖析了@Conditional注解体系及其实现机制。主要内容包括:1) @Conditional家族注解(如@ConditionalOnClass、@ConditionalOnBean等)的工作原理;2) ConditionEvaluator的条件评估流程;3) SpringFactoriesLoader的SPI机制;4) 自动配置加载流程;5) 配置加载体系(PropertySourceLoader和Environment);6) Profile
2026-04-28 07:54:25
624
原创 SpringBoot WebServer启动与监听器原理深度解析
SpringBoot WebServer启动与监听器原理深度解析 本文深入剖析了SpringBoot中WebServer的核心机制,主要内容包括: WebServerFactory接口体系 - 通过抽象工厂模式支持Tomcat/Jetty/Undertow等多种服务器实现,类图展示了核心接口层次结构 WebServer初始化流程 - 时序图详细描述了从自动配置到服务器实例化的完整过程,包括条件装配机制 组件架构对比 - 分析了Tomcat、Jetty和Undertow三种主流嵌入式服务器的核心组件架构差异
2026-04-28 07:31:24
480
原创 Spring事务原理:@EnableTransactionManagement
本文深入解析Spring事务管理机制,围绕@EnableTransactionManagement展开,系统讲解了事务核心概念(ACID特性、状态转换、并发问题)、两种实现模式(声明式与编程式)以及底层架构。重点剖析了PlatformTransactionManager体系结构,包括事务传播行为、隔离级别、回滚机制等核心功能实现原理。通过流程图和代码示例,详细展示了Spring事务的完整生命周期,包括事务创建、连接管理、嵌套事务处理等关键环节。最后总结了常见事务失效场景及解决方案,为开发者提供全面的Spri
2026-04-27 09:15:56
289
原创 Spring事件机制与ApplicationListener
Spring事件机制深度解析摘要 Spring事件机制基于观察者模式实现松耦合的事件驱动架构,通过ApplicationEventPublisher发布事件,ApplicationListener监听处理。核心体系包含: 事件发布订阅接口体系(Publisher/Multicaster/Listener) 容器内置事件(ContextRefreshedEvent等生命周期事件) 事件多播机制(同步/异步分发) 注解驱动开发(@EventListener) 事务绑定事件处理 机制优势包括解耦业务逻辑、提升扩展
2026-04-27 09:10:27
598
原创 Spring Validation校验框架原理
本文深入解析Spring Validation校验框架的核心原理,从接口体系到实际执行机制。主要内容包括: 核心接口体系:Validator执行校验流程,ConstraintValidator实现校验逻辑,ConstraintViolation封装错误信息 约束注解解析:每个校验注解必须包含message、groups等属性,通过@Constraint指定关联的ConstraintValidator 执行机制:框架通过遍历约束、调用isValid方法、收集校验结果完成验证过程 功能特性:支持级联校验、分组校
2026-04-26 08:14:35
251
原创 Seata 分布式事务原理与实战
分布式事务与Seata解决方案 本文深入探讨了分布式事务的核心问题和解决方案。主要内容包括: 本地事务的局限性:无法跨数据库/服务保证一致性,导致"账号扣款成功但订单创建失败"等数据不一致问题。 分布式事务场景分析:通过典型故障案例展示了跨服务调用导致的数据不一致问题及其根因。 理论基础: CAP定理:分布式系统只能同时满足一致性(C)、可用性(A)、分区容错性(P)中的两项 BASE理论:基本可用、软状态、最终一致性,是分布式事务的理论基础 Seata解决方案: 提供@GlobalTr
2026-04-26 08:13:58
408
原创 Spring Cloud 微服务架构全景图
本文概述了从单体架构到微服务架构的演进过程,分析了微服务架构面临的七大核心挑战及对应解决方案。重点介绍了Spring Cloud技术栈全景图,包含服务注册发现、配置中心、API网关等核心组件,以及分布式事务、安全认证等配套生态。文章通过架构图对比展示了微服务在解耦、独立部署、技术栈灵活性等方面的优势,并系统梳理了微服务化过程中需要解决的关键技术问题。
2026-04-25 08:39:11
1089
原创 Spring BeanFactory体系全解
Spring BeanFactory体系摘要 Spring框架的核心IoC容器围绕BeanFactory接口体系构建,主要包括: 核心接口层次: BeanFactory - 基础容器接口,提供getBean()等基本方法 ListableBeanFactory - 支持批量获取BeanDefinition HierarchicalBeanFactory - 支持父子容器层次结构 AutowireCapableBeanFactory - 支持自动装配能力 关键功能: BeanDefinition体系描述Bea
2026-04-25 08:32:30
412
原创 Spring Bean生命周期与循环依赖深度解析
本文深入解析Spring Bean生命周期与循环依赖处理机制。主要内容包括: Bean生命周期完整流程: 从BeanDefinition加载到实例化、属性填充、初始化、销毁的全过程 关键阶段如实例化前/后处理、属性自动装配、初始化回调等 三级缓存机制: 解决循环依赖的核心设计 通过提前暴露未完成初始化的对象引用实现依赖注入 循环依赖处理: 可解决的循环依赖场景(属性注入) 无法解决的场景(构造器注入、原型作用域Bean) 实战建议: 推荐使用Setter注入而非构造器注入 避免在初始化方法中调用循环依赖对象
2026-04-24 07:56:46
583
原创 Spring AOP原理:从代理到拦截链
摘要 本文深入解析Spring AOP的核心原理,从代理机制到拦截链执行的全过程。主要内容包括: AOP核心概念:介绍目标对象、代理对象、拦截链和切面(Aspect)等基本概念,以及五种通知类型(@Before、@After等)的执行时机。 代理机制:对比分析JDK动态代理(基于接口)和CGLIB代理(基于继承)的实现原理及适用场景。 核心组件: ProxyFactory:代理对象创建的核心工厂类 Advisor/Advice体系:定义拦截逻辑的组织结构 Pointcut:精确控制切点匹配规则 拦截链执行:
2026-04-24 07:55:22
550
原创 SpringCloud 客户端重试与弹性机制深度解析
本文深入解析了Spring Cloud中的客户端重试与弹性机制。针对分布式系统中常见的网络抖动、服务短暂不可用等问题,Spring Cloud提供了完整的重试策略和弹性方案。文章详细介绍了Spring Retry模块的核心组件架构,包括RetryTemplate、RetryPolicy和BackOffPolicy等关键类。重点讲解了三种重试策略(SimpleRetryPolicy、MaxAttemptsRetryPolicy、ExceptionClassifierRetryPolicy)和三种后退策略(Fi
2026-04-23 08:11:08
412
原创 SpringCloud 健康检查机制深度解析
SpringCloud健康检查机制深度解析:从架构设计到实现细节 本文系统剖析了SpringCloud微服务架构中的健康检查机制。首先介绍了健康检查在服务注册、负载均衡、监控告警等场景的关键作用,然后详细解析了健康检查的整体架构,包括核心组件关系和REST端点设计。文章重点分析了HealthIndicator接口、Health响应模型和ReactiveHealthIndicator响应式接口的实现原理,深入讲解了CompositeHealthIndicator组合模式和OrderedHealthAggreg
2026-04-23 07:59:32
400
原创 SpringCloud Gateway 动态路由原理深度解析
/ 路由唯一标识// 目标 URI// 路由谓词// 排序// 元数据// Builder 模式"args": {],"args": {],@Component@Override// 验证 Token// 验证通过,继续执行@Override// 高优先级@ComponentConfig> {@Override// 自定义匹配逻辑@ComponentConfig> {@Override。
2026-04-22 08:17:22
376
原创 SpringCloud Context 初始化流程深度解析
SpringCloud Context初始化流程摘要 Spring Cloud应用启动时会创建特殊的Bootstrap Context,它在主应用上下文之前初始化,用于加载远程配置。该上下文通过BootstrapApplicationListener创建,包含PropertySourceLocator等核心组件,负责从配置中心获取属性。初始化流程包含:环境准备事件触发、BootstrapContext创建、PropertySource加载、父子上下文关联等关键步骤。BootstrapContext作为主上下
2026-04-22 08:13:45
349
原创 SpringCloud Common 核心抽象深度解析
SpringCloud Common核心抽象解析 Spring Cloud Commons是Spring Cloud生态的核心抽象层,提供跨实现的统一编程模型。主要内容包括: 核心抽象接口: ServiceInstance:服务实例统一表示 DiscoveryClient:服务发现标准接口 LoadBalancerClient:负载均衡基础能力 SPI机制: 支持新旧两种加载方式(spring.factories/AutoConfiguration.imports) 实现自动配置发现与注册 设计价值: 解耦
2026-04-21 07:40:59
767
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅