自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 每天一道面试题之架构篇|多租户SaaS后台系统架构设计

设计支持上千家企业的SaaS系统需重点考虑数据隔离和系统扩展性。可采用租户隔离模式:独立数据库确保数据安全但成本高,共享数据库通过schema或字段区分更经济。扩展性方面,通过微服务架构解耦功能,采用水平分库分表策略,配合缓存和异步处理提升性能。同时建立完善的监控预警机制,实现资源的弹性伸缩,确保系统稳定运行。

2025-12-15 14:49:25 197

原创 每天一道面试题之架构篇|如何设计一个百万级短链系统架构

短链系统架构设计解析:高并发短链服务需解决百万级请求处理、全局唯一性、低延迟跳转等核心挑战。推荐采用Redis自增ID+Base62编码生成短码,结合MySQL分库分表存储。系统采用多级缓存(本地缓存+Redis)加速访问,通过302重定向实现毫秒级跳转,并集成限流、防刷等安全机制。扩展功能支持自定义短链和异步点击统计,使用分布式锁防止冲突,消息队列异步处理日志。整体架构兼顾高性能、高可用与可扩展性,满足互联网级短链服务需求。

2025-12-13 09:23:46 214

原创 每天一道面试题之架构篇|如何设计防刷、防作弊的在线答题系统?

在线答题系统的防刷防作弊设计是典型的业务安全架构问题,需要从多个维度构建防御体系。:"请设计一个在线答题系统,要求能够有效防止刷题和作弊行为,你会如何设计?:检测鼠标移动轨迹、点击间隔、答题速度的一致性。:在IP、用户、设备等多个维度设置频率限制。:分析IP地址、代理检测、网络延迟模式。:使用历史数据训练识别模型,实时评分":每个用户获得不同的题目顺序和选项顺序。Q1:如何区分正常用户和刷题机器人?:建立IP和设备信誉库,识别恶意来源。:检测异常访问模式和题目查看行为":检测协同作弊模式,识别攻击网络。

2025-12-12 09:32:08 202

原创 每天一道面试题之架构篇|分库分表会带来哪些问题?深度解析与解决方案

分库分表在提升性能的同时面临诸多挑战,主要包括:分布式事务一致性(需采用最终一致性、TCC模式等方案)、跨分片查询性能问题(可通过搜索引擎或预计算优化)、全局ID生成(推荐Snowflake算法)、数据迁移复杂度(采用双写迁移策略)、关联查询困境(数据冗余或预计算宽表)以及运维监控复杂度提升。解决方案需根据业务场景权衡,如最终一致性适合大多数互联网业务,而TCC模式更适合金融系统。合理选择分库分表中间件(如ShardingSphere、MyCAT)可降低实现难度。

2025-12-11 09:34:37 815

原创 每天一道面试题之架构篇|为什么要分库分表?什么时候需要考虑分库分表?

分库分表是解决数据库瓶颈的关键技术,主要应对单库单表面临的性能、存储、可用性和成本四大瓶颈。当数据量超过5000万行或500GB、QPS超1万、TPS超5千、连接数超1000时需考虑分库分表。典型场景包括电商订单、社交Feed流、物联网数据等海量高并发系统。分库分表能显著提升查询性能(从>100ms降至<10ms)、支持水平扩展、提高可用性,并通过量化指标模型(数据量、性能、业务增长)判断具体实施时机。方案选择需权衡分库与分表的优缺点,根据业务特点决定最适合的拆分策略。

2025-12-10 09:33:07 372

原创 每天一道面试题之架构篇|设计千万级高并发点赞/收藏系统架构

设计高并发点赞/收藏系统需解决三大核心问题:首先采用Redis集群缓存热点数据,通过分片技术应对千万级QPS;其次引入消息队列异步处理持久化,实现削峰填谷;最后结合分布式锁和CAS机制确保数据强一致性。系统架构需分层设计,前端限流、中间层缓存、后端异步落库,同时做好监控和熔断机制保障高可用性。

2025-12-09 09:48:07 164

原创 每天一道面试题之架构篇|深入理解数据库隔离性—并发控制的基石

数据库隔离性是ACID原则的关键,确保并发事务的数据一致性。SQL标准定义了四种隔离级别:读未提交(允许脏读)、读已提交(避免脏读)、可重复读(避免不可重复读)和序列化(避免幻读)。不同级别通过MVCC或锁机制实现:读未提交无保护;读已提交使用行锁;可重复读采用MVCC或多版本快照;序列化通过范围锁完全隔离。MVCC通过版本号实现非阻塞读,写操作创建新版本。锁机制则直接控制并发访问。实际应用中需权衡一致性与性能,选择合适隔离级别。

2025-12-08 10:03:57 229

原创 每天一道面试题之架构篇|通知型事务的致命缺陷与解决方案

摘要: 通知型事务在分布式系统中面临网络不确定性导致的数据一致性问题,典型场景包括消息发送成功但事务回滚、消息失败但事务提交等。解决方案包括: 本地消息表模式:通过数据库事务原子性保存业务数据和消息记录,异步任务定时发送并更新状态,确保最终一致性。 事务消息模式(如RocketMQ):采用两阶段提交,先发送半消息,回调执行本地事务后提交或回滚,避免中间状态不一致。两种方案均通过可靠机制解决通知型事务的固有缺陷。

2025-12-06 09:34:14 410

原创 每天一道面试题之架构篇|异步确保型事务——消息队列驱动的分布式事务解决方案

摘要:异步确保型事务通过消息队列实现分布式事务的最终一致性,将同步操作转为异步执行以提升性能。核心原理包括:1)本地消息表方案,确保业务操作与消息存储的原子性;2)消费者幂等处理,防止重复消费;3)定时补偿机制,处理失败消息。该模式通过解耦事务步骤,减少资源锁定时间,同时保证数据一致性,适用于高并发分布式系统。

2025-12-05 10:22:37 368

原创 每天一道面试题之架构篇|分布式事务深度解析——柔性事务 vs 刚性事务

摘要:本文深入探讨分布式事务中柔性事务与刚性事务的区别及应用场景。刚性事务基于ACID原则,采用同步阻塞式操作(如XA协议),保证强一致性但性能较低;柔性事务基于BASE理论,通过异步非阻塞操作(如TCC、Saga)实现最终一致性。文中提供了XA协议和TCC模式的代码实现示例,分析了XA协议的性能瓶颈,并展示了Saga模式的长事务处理方案。在电商系统中,应根据业务场景选择合适的事务方案:刚性事务适用于资金交易等强一致性需求,柔性事务更适合高并发场景如订单处理。

2025-12-04 09:25:27 296

原创 每天一道面试题之架构篇|数据一致性与高性能的终极矛盾与架构权衡

摘要: 分布式系统中数据一致性与高性能难以兼得,核心矛盾源于CAP定理和物理限制(如网络延迟)。强一致性需全局锁或共识算法(如Paxos/Raft),导致较高延迟(10-100ms);而最终一致性通过异步处理实现高性能(0.1-1ms),但存在数据延迟。实际架构常采用读写分离、多级缓存等折中方案,如电商库存系统需在"绝不超卖"(强一致)与高并发(最终一致)间权衡。该问题本质是计算机科学中的基础权衡,需根据业务场景选择最优策略。

2025-12-03 10:41:59 389

原创 每天一道面试题之架构篇|深度解析 TCC 分布式事务及其实战应用

TCC分布式事务模型通过Try-Confirm-Cancel三阶段实现最终一致性,适用于高并发电商场景。Try阶段进行资源预留(如预扣库存、预冻结金额),Confirm阶段确认执行业务逻辑,Cancel阶段释放预留资源。相比传统2PC,TCC锁定时间短、性能更高,但业务侵入性强。在电商订单场景中,TCC可确保订单创建、库存扣减和支付等操作的原子性,通过预创建订单、预留库存和预扣金额等机制实现分布式事务控制,最终达到各服务数据一致。

2025-12-02 09:18:50 275

原创 每天一道面试题之架构篇|线上频繁Full GC排查实战指南

摘要:本文系统讲解了Java线上服务Full GC问题的排查与解决方法。首先分析Full GC的触发条件(老年代/元空间不足等)和性能指标(频率、耗时、吞吐量),接着介绍jstat、jmap等核心监控工具的使用方法。重点提出四级排查流程:从快速状态确认、内存快照分析,到线程诊断和根因定位,最后给出内存参数优化、代码优化等解决方案。通过真实案例演示如何分析堆转储文件,识别内存泄漏对象,并提供了G1垃圾回收器的参数调优建议。

2025-12-01 09:57:41 348

原创 每天一道面试题之架构篇|分布式Session架构设计与实战指南

摘要: 分布式Session管理是微服务架构的核心挑战,涉及数据一致性、扩展性、高可用性和安全性等问题。主流解决方案包括Session复制(如Tomcat集群广播同步)和集中存储(如Redis集群)。Redis方案通过Spring Session实现,将会话数据集中存储,支持高可用和扩展性,并可通过自定义服务管理会话创建、获取和安全属性。两种方案各有优劣,需根据业务场景权衡一致性与性能需求。

2025-11-29 09:16:20 328

原创 每天一道面试题之架构篇|ZooKeeper 分布式锁深度解析与实战指南

“请详细说明ZooKeeper分布式锁的实现原理,对比Redis分布式锁的优缺点,并分析在实际项目中如何选择合适的技术方案。ZooKeeper作为分布式协调服务,其强一致性和丰富的节点类型使其成为实现分布式锁的理想选择。掌握ZooKeeper分布式锁的原理和实现细节,是分布式系统开发者的必备技能。

2025-11-28 09:31:19 246

原创 每天一道面试题之架构篇:Redis 分布式锁深度解析与实战指南

Redis分布式锁实现原理主要有两种方式:基于SETNX的简单方案和RedLock算法。SETNX方案通过设置键值对实现互斥,简单高效但存在单点故障风险;RedLock算法采用多节点投票机制,提高了可靠性但实现复杂。SETNX适用于单机或可靠性要求不高的场景,RedLock适合对一致性要求严格的分布式系统。两种方案各有优劣,需根据实际业务需求选择。

2025-11-26 13:59:15 263

原创 每天一道面试题之架构篇:负载均衡算法深度解析与实战应用

本文详细探讨了负载均衡算法的原理与实现,包括轮询、加权轮询、最少连接数和IP哈希等核心算法,并提供了Java代码实现示例。文章分析了负载均衡面临的四大挑战:算法选择、状态感知、会话保持和扩展性。同时给出了生产环境中的实战方案,涵盖Nginx配置和Spring Cloud集成,帮助开发者在不同场景下选择合适的负载均衡策略。这些内容为构建高性能分布式系统提供了关键技术指导。

2025-11-25 12:33:22 490

原创 困扰我一整天的MyBatis“Invalid bound statement“问题,原来是因为这个不起眼的注解冲突!

配置统一原则:相关的配置应该集中管理,避免分散在多处关注启动类:检查问题时要特别注意启动类中的注解配置理解框架机制:了解Spring Boot版本差异带来的行为变化代码审查要点:在代码审查时,要特别注意重复的注解配置。

2025-11-24 14:14:51 319

原创 每天一道面试题之架构篇|分布式微服务架构深度剖析与实战指南

微服务架构面临服务治理、分布式事务、链路追踪等八大核心挑战。文章详细分析了这些难点,并给出技术解决方案:通过服务注册发现实现动态管理,采用同步(REST/Feign)和异步(RabbitMQ)通信模式,结合熔断降级(CircuitBreaker)保障系统稳定性。代码示例展示了服务注册、发现及通信的具体实现,为构建可靠分布式系统提供实践参考。

2025-11-24 09:59:01 723

原创 每天一道面试题之架构篇|高并发系统架构设计实战手册

高并发系统架构是互联网公司的核心能力,今天我们来深入解析如何设计一个能够应对千万级流量的高可用系统架构。:"如果让你设计一个百万QPS的系统,你会从哪些方面考虑架构设计?提到具体的技术指标(如Redis单机10万QPS):进行简单的容量规划(QPS、数据量等)单机性能极限:CPU、内存、I/O瓶颈。一、核心难点:高并发系统的挑战分析。一、核心难点:高并发系统的挑战分析。如何设计一个不会超卖的秒杀系统?如何设计系统的弹性扩缩容机制?数据库分库分表的具体实施方案?依赖服务不稳定引发连锁反应。

2025-11-23 17:47:53 407

原创 每天一道面试题之架构篇:分布式事务架构深度解析与实战

分布式事务解决方案解析 本文深入剖析了分布式事务的核心挑战和实现方案。首先分析了分布式事务的四大难点:网络不可靠性、数据一致性、性能权衡和业务复杂度。然后对比了单体架构与分布式架构的事务处理差异,并列举了电商下单和银行转账等典型应用场景。 重点解析了两种主流解决方案:两阶段提交协议(2PC)和基于消息中间件的最终一致性方案。2PC通过准备和提交两个阶段保证强一致性,但存在同步阻塞和单点故障问题。消息中间件方案利用可靠消息服务和幂等消费实现最终一致性,更适合高并发场景。

2025-11-21 09:10:02 700

原创 每天一道面试题之架构篇|海量数据排序架构设计精讲

原始大文件→ 分割策略:[固定大小分块] vs [动态范围分块] vs [替换选择生成块]→ 内部排序:[快速排序] | [归并排序] | [堆排序] | [位图排序(特殊场景)]→ 外部归并:[二路归并] → [多路归并] → [多阶段归并] → [并行归并]→ 结果输出:[单文件输出] | [分区输出] | [索引构建]

2025-11-20 13:26:33 295

原创 每天一道面试题|微博千万级推送架构设计揭秘

内容发布→ 用户分组:[在线用户] vs [离线用户] vs [僵尸用户]→ 推送策略:推模式(实时) + 拉模式(延迟) + 混合模式(智能)→ 数据存储:热数据(内存) + 冷数据(磁盘) + 分层存储(成本优化)→ 性能优化:缓存策略 + 异步处理 + 批量操作。

2025-11-19 13:26:53 333

原创 每天一道面试题:分布式限流架构设计与实战

分布式限流架构的核心设计思想:请求接入➡️ 本地限流: (快速判断) | (本地令牌桶)➡️ 分布式限流: [Redis+Lua原子操作] → [全局计数]➡️ 分层防护: (垂直分片) | (弹性扩缩容) | (动态调优)➡️ 异常处理: [熔断降级] → [优雅降级] → [过载保护]

2025-11-18 20:00:00 284

原创 每天一道面试题:如何设计一个高并发红包系统架构?

用户请求➡️ 接入层: (垂直切分) | (一致性哈希路由)➡️ 处理层: [CAS缓存控制] → [请求队列化] → [串行处理]➡️ 数据层: (热数据缓存) | (冷热分离) | (时间分表)➡️ 资金层: [数据库事务] → [资金操作] → [流水记录]本文由微信公众号"程序员小胖"整理发布,转载请注明出处。明日面试题预告:分布式限流架构。

2025-11-18 09:51:47 364

原创 每天一道面试题:如何设计一个秒杀系统架构?

这个问题在架构师面试中出现的频率极高,堪称"面试必修课"。今天我们就来系统性地拆解它,不仅讲清架构思想,还会附上关键代码示例,让你在面试中能够对答如流。秒杀业务场景的核心特点就是 “瞬时高并发” 和 “资源竞争” ,这带来了三大技术难点:1.并发极高:瞬间涌入的海量请求,足以冲垮任何没有防护的应用服务器和数据库。想象一下,10万台服务器同时来抢购100件商品,绝大部分请求注定是失败的,但系统必须能正确处理这些“失败”。2.库存超卖:这是一个经典的“读-写-写”并发问题。在库存仅为1的情况下,多个请求同时查询

2025-11-17 15:25:15 469

原创 一文搞懂JDK8到JDK17:一场历时七年的Java超进化!

同时,ZGC和Shenandoah两款新一代GC已趋于成熟,它们的目标是将GC停顿时间控制在10毫秒以内,几乎感知不到,这对大型高并发应用是革命性的。从JDK 8到JDK 17,不是一次简单的版本更新,而是一次面向未来的。这些都是实实在在的收益。今天,就让我们抛开晦涩的术语,用大白话盘一盘,从JDK 8到JDK 17,这七年Java到底发生了什么?从"承上启下"的经典版本,到"云原生时代"的基石,你的Java知识库该更新啦!更小的镜像:通过jlink工具,可以只打包用到的模块,打造超小的运行时镜像。

2025-11-05 18:18:28 630

原创 Java 线程的奇妙之旅:带你领略从创建到销毁的全过程

Java线程的生命周期是理解多线程编程的基础。从新建到终止,线程会经历多个状态,每个状态都有其特定的含义和触发条件。掌握这些状态及其转换关系,不仅有助于我们编写高效、稳定的多线程程序,还能在遇到问题时快速定位和解决。

2025-03-06 17:38:03 909

原创 高效编程的秘密武器:十种数据结构,你真的了解吗?(下)

在过去的文章中,我们深入探索了编程世界中不可或缺的数据结构:数组、链表、HashMap、哈希表、图、堆、栈、队列、树和集合。每一种结构都以其独特的方式,为我们的代码提供了组织和操作数据的强大力量。从数组的简洁高效,到图的复杂关系映射,再到堆的优先级管理,这些数据结构构成了我们解决编程问题的坚实基石。

2025-01-13 17:03:14 89

原创 高效编程的秘密武器:十种数据结构,你真的了解吗?(上)

在这篇文章中,我们一同探索了十种对程序员来说至关重要的数据结构的前五种。从基础的数组和链表,到复杂的散列表和图,每一种数据结构都是高效编程的秘密武器。它们不仅帮助我们解决了实际问题,还提升了代码的效率和可读性。掌握这些数据结构不仅仅是了解它们的定义和用法,更重要的是理解它们背后的设计哲学和适用场景。让我们一起在编程的道路上,越走越远!

2024-12-30 17:42:18 112

原创 重塑电商科技版图:从传统架构迈向DDD的华丽蜕变之路

总之,将电商传统架构设计升级为ddd架构设计是一个复杂的过程,需要对业务领域进行深入的分析,设计出合适的领域模型和应用层,并使用基础设施层和外部资源层提供支持。领域驱动设计(Domain-Driven Design,简称DDD)作为一种以业务为中心的设计方法论,为电商系统的架构升级提供了有效的解决方案。DDD的核心在于将业务领域作为设计的中心,通过领域专家与开发人员的密切合作,建立一个反映业务本质的领域模型。降低耦合度:利用限界上下文划分领域,明确各个子域的职责,减少不必要的交互,提升系统的灵活性。

2024-06-02 11:03:53 705

原创 深入理解Java中的方法重载:让代码更灵活的秘籍

方法重载,简单来说,就是在同一个类中可以有多个同名的方法,但这些方法的参数列表必须不同(参数类型、参数个数或者参数顺序不同)。Java虚拟机(JVM)通过查看调用时提供的实际参数来决定具体调用哪个方法,这一过程称为重载解析。Java的重载特性是面向对象编程中的一个强大工具,它提高了代码的复用性和可读性。理解重载的原理和正确应用重载,可以帮助我们编写更加优雅和高效的代码。希望本文能够帮助你更好地掌握Java中的重载概念。

2024-05-31 10:27:32 603

原创 深入解析Faiss:高性能相似性搜索库的基本使用

Faiss是一个高效、易用的相似性搜索库,支持多种索引类型和距离度量,适用于机器学习和大数据领域的多种应用场景。通过本文的介绍,希望读者能够了解Faiss的基本使用方法,并能够在实际项目中应用Faiss进行高效相似性搜索。参考文献:官方文档:https://faiss.ai/仓库:https://github.com/facebookresearch/faiss。

2024-05-15 17:57:58 1001

原创 速度与激情:Redis如何以核心数据结构驱动极致性能

Redis之所以能够提供高性能的数据存储和访问,主要得益于其内存存储、单线程模型、高效的数据结构设计以及持久化机制等。了解Redis的核心数据结构和高性能原理,对于我们更好地使用Redis、优化应用性能具有重要意义。

2024-05-15 17:45:15 594

原创 Apache Kylin使用心得:从数据仓库到多维数据分析

Apache Kylin是一个功能强大的分析工具,特别适合于大规模数据集的多维分析。通过预计算和立方体技术,Kylin能够提供亚秒级的查询响应,大大提升了数据分析的效率。对于小白用户来说,Kylin的易用性和SQL接口使得他们能够轻松地进行数据分析;对于专业人士来说,Kylin的高性能和可扩展性使得他们能够处理更复杂、更大数据量的分析任务。

2024-05-14 17:40:36 541

原创 Zab之光:照亮分布式系统数据一致性迷宫的智慧火把

ZAB协议是Zookeeper中实现数据一致性的核心算法。通过选举、原子广播和崩溃恢复等流程,ZAB协议保证了分布式系统中的数据一致性。ZAB协议在分布式锁、服务发现、配置管理等场景中有广泛的应用,为分布式系统提供了一种可靠的数据一致性保障机制。

2024-05-14 17:30:01 2003

原创 一致性的艺术:深度剖析Paxos在分布式事务模型中的精妙设计

Multi-Paxos和Paxos算法是分布式系统中实现数据一致性的关键技术。它通过在多个节点之间就一系列值达成共识,为构建高可用和高一致性的分布式系统提供了理论基础。虽然Multi-Paxos和Paxos算法的实现相对复杂,但它为许多现代分布式系统提供了强大的一致性保证。

2024-05-13 16:24:05 990

原创 命运交织的节点:分布式事务最终一致性的心跳共鸣纪实

最终一致性作为分布式系统中一种重要的事务处理哲学,它在实践中展现出了强大的生命力。然而,没有银弹存在,每种模型都有其适用场景与局限。作为技术探索者,我们应当持续思考如何更精细地控制一致性级别,结合业务特性量体裁衣,设计出既能满足业务需求又能保持系统弹性的解决方案。那么,您在实际项目中遇到过哪些分布式事务的挑战?对于最终一致性模型又有何独到见解或疑问呢?欢迎留言讨论,共同推进技术的边界。

2024-05-09 18:09:59 419

原创 解锁AI的神秘力量:LangChain4j带你步入智能化实践之门

在探索LangChain4j的旅程中,我们不仅揭开了AI实践的神秘面纱,还发现了如何将这些强大的技术应用到实际业务中。随着智能化时代的大门缓缓开启,让我们携手LangChain4j,共同迈向一个更智能、更高效的未来。

2024-05-08 16:03:21 2024

原创 强一致性的皇冠:分布式事务模型的至高法则揭秘

总结而言,分布式事务模型在构建强一致性分布式系统中扮演着不可或缺的角色,是确保数据一致性和事务完整性的基石。面对分布式环境的固有挑战,诸如两阶段提交(2PC)、三阶段提交(3PC),为开发者提供了实现强一致性的多样化手段。这些模型通过精心设计的协议,在数据一致性、系统可用性与性能之间寻找微妙的平衡点。

2024-05-07 17:54:56 480

MySQL面试精粹:90%场景题深度剖析

【打造技术王者】,决胜MySQL面试战场!诚意推荐《MySQL面试精粹:90%场景题深度剖析》,一本专为数据库从业者量身定制的实战宝典。这本书籍涵盖了超过90%的MySQL面试高频场景题,以其深度剖析和详尽解答,引领你穿越复杂的技术丛林,直抵MySQL知识的核心腹地。 书中内容丰富多元,从基础概念、SQL查询优化、事务与锁机制、索引策略,直至Replication、InnoDB存储引擎的深入探讨,每一个知识点都经过作者精心打磨,确保你在短时间内掌握面试官关注的热点和难点。 无论你是正在备战面试的初级工程师,还是希冀突破瓶颈、迈向更高职位的资深DBA,都可以在这本《MySQL面试精粹》中找到所需的知识养分和实战指导。通过研读本书,你将不仅能从容应对各类MySQL面试场景,更能扎实提升自身的数据库管理水平和技术底蕴。 选择《MySQL面试精粹:90%场景题深度剖析》,就等于选择了成功的加速器和职业生涯的坚固磐石。让我们携手打开这本书,一同开启这场精彩的MySQL知识探索之旅,铸就你的技术辉煌,赢得属于你的理想职位! 【特别提醒】时不我待,赶快加入我们的行列!!!

2024-04-09

空空如也

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

TA关注的人

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