自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (10)
  • 收藏
  • 关注

转载 三万字长文 | 以架构视角解读银行数字化转型的两份重磅指导文件

2021年12月和2022年1月,两份关于银行数字化转型的重量级指导文件——中国人民银行的《金融科技发展规划(2022—2025年)》(以下简称“发展规划”)和银保监会的《关于银行业保险业数字化转型的指导意见》(以下简称“指导意见”)先后印发,这对在积极筹备数字化转型工作的各类银行而言,正是2022年开年布局的最好指导。两份文件都对银行的数字化转型提出了具体要求,二者各有侧重、相辅相成、有机融合。这两份文件不是孤立的,是国家数字化转型文件体系的一部分,因此,对这两份文件的解读,需要综合背景信息,清楚文件立足

2022-12-03 15:32:17 1276 1

原创 分布式数据库在金融核心场景落地实践分享

分布式数据库在金融核心场景落地实践分享,取自infoq的公开课视频。

2022-08-13 15:52:27 259

转载 配置中心,让微服务更『智能』

目录1. 背景介绍2. 为什么需要配置中心?2.1 配置即『控制』2.2 配置需要治理2.3 微服务的复杂性3. 配置中心的一般模样3.1 治理能力3.2 可用性3.2.1 Apollo at a glance3.2.2 服务端高可用3.2.3 客户端高可用3.2.4 可用性场景举例3.3 实时性3.3.1 发送ReleaseMessage的实现方式4. 如何让微服务更『智能』?4.1 开关4.1.1 发布开关4.1.2 实验...

2021-10-31 22:51:29 384

原创 说一说Reactive、WebFlux、Mono和Flux到底是什么

背景最近项目中使用到了Spring Cloud Gateway,而gateway里面大量使用了Reactor、Mono、Flux,这个确实很有意思,因此准备写一篇文章详细介绍一下。

2021-10-30 17:28:37 11501 1

原创 Spring Cloud原理分析系列#Gateway#GlobalFilter vs GatewayFilter vs WebFilter

背景 最近在项目中看之前代码,发现一个网关filter模块大量使用各种Filter,但是深入分析感觉这些filter做的事情大多都是过滤、拦截、校验、转发、日志、改写等工作,所以想整理一篇文章分析分析这几个Filter背后的what、why、how。 先看一下官网介绍Gateway的调用顺序,可以看到不管是GlobalFilter还是GatewayFilter都是在filter执行过程中执行的。什么是GlobalFilterGlobalFilter 接口...

2021-10-29 18:06:55 6953 1

原创 SpringBoot中异步线程池AsynConfigurer配置

什么是AsynConfigurerAsynConfigurer的与@Async注解密不可分,在这里我们先说一下什么是@Async。@Async注解的就是通过AsyncAnnotationBeanPostProcessor这个后置处理器生成一个代理对象来实现异步的。为什么需要AsynConfigurer Spring可以通过@EnableAsync和@Async两个注解实现异步操作。启动类加上:@EnableAsync注解,同时并且在service上加上@Async...

2021-10-26 16:14:23 1758

原创 重识dubbo系列#dubbo元数据中心

目录为什么需要dubbo元数据中心元数据中心的优势降低地址推送的时延服务测试参考资料 在看元数据中心之前,首先看一下官网对几个核心组件的定义。作为一个微服务框架,Dubbo sdk 跟随着微服务组件被部署在分布式集群各个位置,为了在分布式环境下实现各个微服务组件间的协作, Dubbo 定义了一些中心化组件,这包括:注册中心。协调 Consumer 与 Provider 之间的地址注册与发现 配置中心。 存储 Dubbo 启动阶段的全局配置,...

2021-10-21 17:59:09 986

原创 不一样的kafka系列#Topic和Partition

主题的管理包括创建主题、查看主题信息、修改主题和删除主题等操作。可以通过Kafka提供的kafka-topics.sh 脚本来执行这些操作,这个脚本位于$KAFKA_HOME/bin/ 目录下,其核心代码仅有一行,具体如下:exec $(dirname $0)/kafka-run - class.sh kafka.admin.Top ic Command "$@"Topic相关auto .create.topics .enable 设置为true会自动创建主题,和...

2021-09-29 00:31:44 298

原创 不一样的kafka系列#provider生产者详解

KafkaProducer异常分类KafkaProducer中一般会发生两种类型的异常:可重试的异常和不可重试的异常。常见的可 重试异常有:NetworkException、LeaderNotAvailableException, UnknownTopicOrPartionException、 NotEnoughReplicasException、NotCoordinatorException 等。比如NetworkException表示网络异 常, 这个有可能是由于网络瞬时故...

2021-09-28 22:35:50 229

原创 不一样的kafka系列#server服务端详解

服务端参数zookeeper.connect 该参数指明broker 要连接的ZooKeeper 集群的服务地址(包含端口号),没有默认值,且 此参数为必填工页。可以配置为localhost:2181 ,如果ZooKeeper 集群中有多个节点,则可以用逗 号将每个节点隔开,类似于localhost1 :2181,lo calhost2 :2181,l oca lhost3: 218 1 这种格式。最佳的实践方式是再加一个chroot 路径,这样既可以明确指明该chroot 路径下的节 点是为Kafka

2021-09-27 23:55:05 219

原创 不一样的Kafka系列#kafka初识

每一条消息被发送到broker 之前,会根据分区规则选择存储到哪个具体的分区。如果分区 规则设定得合理,所有的消息都可以均匀地分配到不同的分区中。如果一个主题只对应一个文 件,那么这个文件所在的机器I/O 将会成为这个主题的性能瓶颈,而分区解决了这个问题。在 创建主题的时候可以通过指定的参数来设置分区的个数,当然也可以在主题创建完成之后去修 改分区的数量,通过增加分区的数量可以实现水平扩展。 Kafka 为分区引入了多副本( Replica ) 机制, 通过增加副本数...

2021-09-27 23:43:21 98

原创 深入理解Spring Cloud系列#Feign详解

什么是FeignFeign远程调用的思想是通过一系列的封装和处理,以JAVA注解@FeignClient的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,返回给调用者。主程序入口添加了@EnableFeignClients注解开启对FeignClient扫描加载处理。根据Feign Client的开发规范,定义接口并加@FeignClientd注解。当程序启动时,会进行包扫描,扫...

2021-09-23 12:34:50 662

原创 (建议收藏)从开源框架理解设计模式系列#汇总篇

之前本来是想探究一个设计模式,后面想着为什么不写一个系列呢,因此就有了这个系列。从开源框架理解设计模式系列已经完成,从what、why、how、开源框架源码、使用场景、优缺点六个维度重新整理介绍了一遍设计模式,这里这里有自己原创,也参考了很多书籍和文章,以后继续努力,不断持续创作出更多的有价值有深度的文章系列。创建型模式创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使...

2021-09-12 14:26:26 441

原创 从开源框架理解设计模式系列#Template模板方法

what什么是模板方法 Gof定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。why为什么需要模板方法一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。通过使用抽象操作定义的一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许子类改变这些步骤的具体行为以满足它们各自的需求。how如何实现模板方法...

2021-09-12 13:40:58 230

原创 从开源框架理解设计模式系列#Strategy策略模式

目录what什么是策略模式why为什么需要策略模式how如何实现策略模式开源框架经典案例Dubbo中策略模式的使用Dubbo中负载均衡LoadBalance策略分析Dubbo中集群Cluster容错策略Dubbo中使用的LoadingStrategy的使用ShardingSphere中分片算法和分片策略的使用ShardingAlgorithm分片算法ShardingStrategy分片策略JDK中ThreadPoolExecutor策略模式使用场景...

2021-09-11 14:01:57 462

原创 从开源框架理解设计模式系列#State状态模式

目录what什么是状态模式why为什么需要状态模式how如何实现状态模式开源框架经典案例简化版的TCPConnectionShardingSphere中的StateContext使用场景优缺点对比优点缺点参考资料what什么是状态模式Gof定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状...

2021-09-10 23:35:03 297

原创 从开源框架理解设计模式系列#Observer观察者模式

what什么是观察者模式 Gof定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 HeadFirst定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。观察者模式定义了一系列对象之间的一对多关系。当一个对象改变状态,其他依赖者都会收到通知。依赖(Dependents), 发布- 订阅( Publish - Subscribe)why为什么需要观察...

2021-09-10 00:01:10 177

原创 从开源框架理解设计模式系列#Memento备忘录模式

目录what什么是备忘录模式why为什么需要备忘录模式how如何实现备忘录模式开源框架经典案例Mysql的Redo日志JDK中Corba的备忘录模式使用场景优缺点对比优点缺点参考资料what什么是备忘录模式 Gof定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。别名Token。why为什么需要备忘录模式 使用备忘录有两个目标。存储系统关键...

2021-09-08 23:24:54 245

原创 从开源框架理解设计模式系列#Mediator中介者模式

目录what什么是中介者模式why为什么需要中介者模式how如何实现中介者模式开源框架经典案例Java类CorbaMessageMediator类JDK中对中介者的使用使用场景优缺点对比优点缺点参考资料what什么是中介者模式 Gof定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 HeadFirst定义:使用中介者模式来集中相关对象...

2021-09-08 22:40:06 237

原创 从开源框架理解设计模式系列#Iterator迭代器模式

what什么是迭代器模式 Gof定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。why为什么需要迭代器模式一个聚合对象, 如列表(list), 应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构。此外,针对不同的需要,可能要以不同的方式遍历这个列表。但是即使可以预见到所需的那些遍历操作,你可能也不希望列表的接口中充斥着各种不同遍历的操作。有时还可能需要在同一个表列上同时进行多个遍历。迭代器模式...

2021-09-08 00:10:29 321 1

原创 从开源框架理解设计模式系列#Interpreter解释器模式

what什么是解释器模式Gof定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 HeadFirst定义:当你需要实现一个简单的语言时,就使用解释器模式定义语法的类,并用一个解释器解释句子。每个语法规则都用一个类代表。 几乎所有涉及到SQL相关的,涉及到DSL相关的,都少不了Expression模式,只是规则的差异,语法的涵义不同,比如Elasticsearch对DSL的解析,Shardin...

2021-09-06 23:47:22 391 1

原创 从开源框架理解设计模式系列#Command命令模式

what什么是命令模式 Gof定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 HeadFirst定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。...

2021-09-06 21:24:47 426

原创 从开源框架理解设计模式系列#Chain Of Responsibility责任链模式

目录what什么是责任链模式why为什么需要责任链模式how如何实现责任链模式 开源框架经典案例SpringMVC中的的HandlerExecutionChainTomcat处理Serlvet的ApplicationFilterChain链Dubbo中的Filter链使用场景优缺点对比优点缺点参考资料what什么是责任链模式 Gof定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一...

2021-09-05 22:08:59 332 1

原创 从开源框架理解设计模式系列#Proxy代理模式

what什么是代理模式 Gof定义:为其他对象提供一种代理以控制对这个对象的访问。别名Surrogate。 HeadFirst定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问。 使用代理模式创建代变对象,让代表对象控制某对象的访问被代理的对象可以是远程的对象、创建开销大的对象或许安全控制的对象。why为什么需要代理模式 本文重点讨论一下为什么需要代理模式,我相信每一个用过RPC框架的同学,每一个用过AOP...

2021-09-05 17:40:45 252

原创 从开源框架理解设计模式系列#FlyWeight享元模式

what什么是享元模式Gof定义:运用共享技术有效地支持大量细粒度的对象。 HeadFirst定义:如何想让某个类的一个实例能用来提供许多“虚拟实例”,就使用享元模式。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。 FlyWeight通常和Composite模式一起使用,用共享叶节点的DAG图来实现逻辑上...

2021-09-05 16:30:17 143

原创 从开源框架理解设计模式系列#Decorator装饰模式

Gof定义:动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。别名Wrapper。 HeadFirst定义:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方法。 这里很重要的一点是是比继承更有弹性,根据翻译的不同,装饰模式也有人称之为“油漆工模式”。why为什么需要装饰模式首先介绍一下常见的给一个类或者对象增加行爲的方式:继承,使用继承机制是给现有类...

2021-09-05 13:38:31 213

原创 从开源框架理解设计模式系列#Facade外观模式

what什么是外观模式Gof定义:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。HeadFirst定义:提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个接口, 让子系统更容易使用。 外观模式又称为门面模式,典型的对象结构性模式。 尊贵的符号外表下,隐藏着卑劣的梦想——Mason Cooley。why为什么需要外观模式 将一个系统划分为...

2021-09-05 11:35:27 190

原创 从开源框架理解设计模式系列#Composite组合模式

目录what什么是组合模式why为什么需要组合模式how如何实现组合模式透明方式安全方式开源框架经典案例饿了么Element-ui组件库使用场景优缺点对比优点缺点参考资料what什么是组合模式Gof定义:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下...

2021-09-05 09:55:15 218

转载 Mysql优先队列排序算法

本文适用于 MySQL 5.6 及以上版本0.先抛问题假设字段category无索引且有重复值,order by category和limit组合使用的结果会和预期不符。问题复现:表结构(就是两个字段)CREATE TABLE `ratings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_I.

2021-09-05 01:34:32 792

原创 从开源框架理解设计模式系列#Bridge桥接模式

what什么是桥接模式GOF定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。HeadFirst定义:不止改变你的实现,也改变你的抽象。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。这里先拋个问题,为什么桥接模式看类图怎么和策略模式有点像,下面具体分析?why为什么需要桥接模式当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。 在一...

2021-09-05 01:30:50 617

原创 数据库研究资料,不定期更新中

我不生产知识,只是知识的搬运工。写作本小册的时间主要用在了两个方面:搞清楚事情的本质是什么。 这个过程就是研究源码、书籍和资料。 如何把我已经知道的知识表达出来。 这个过程就是我不停的在地上走过来走过去,梳理知识结构,斟酌用词用句,不停的将已经写好的文章推倒重来,只是想给大家一个不错的用户体验。这两个方面用的时间基本上是一半一半吧,在搞清楚事情的本质是什么阶段,除了直接阅读MySQL的源码之外,查看参考资料也是一种比较偷懒的学习方式。本书只是MySQL进阶的一个入门,想了解更多关于MySQL的知

2021-09-05 00:55:19 93

原创 从开源框架理解设计模式系列#Adapter适配器模式

what什么是适配器模式GOF定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(Gof里面说这个别名是Wrapper模式,这里和装饰器模式容易混淆,因为装饰器也可以说是Wrapper)HeadFirst定义:将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。why为什么需要适配器模式 这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼...

2021-09-05 00:05:21 749 2

原创 从开源框架理解设计模式系列#Builder建造者模式模式

目录what什么是建造者模式why为什么需要建造者模式how怎么实现建造者模式开源框架经典案例LoomBook@Builder注解Elasticsearch中的QueryBuilder常用场景优缺点对比优点缺点参考资料what什么是建造者模式GOF定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。HeadFirst定义:使用生成器模式封装一个产品的构造过程,并允许按步骤构造。why为什么需要建造者模式...

2021-09-04 18:33:47 406

原创 从开源框架理解设计模式系列#Abstract Factory抽象工厂模式

what什么是抽象工厂模式GOF定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。why为什么需要抽象工厂模式抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。在多个业务品种、业务分类时,通过抽象工厂模式产生需...

2021-09-04 17:42:33 274

原创 从开源框架理解设计模式系列#Protoype原型模式

what什么是单例模式单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例模式有 3 个特点:单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点。why为什么需要单例模式在计算机系统中,还有 Windows 的回收站、操作系统中的文件...

2021-09-04 16:28:13 253

原创 从开源框架理解设计模式系列#Factory工厂模式

what什么是单例模式单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例模式有 3 个特点:单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点。why为什么需要单例模式在计算机系统中,还有 Windows 的回收站、操作系统中的文件...

2021-09-03 21:18:18 337

原创 从开源框架理解设计模式系列#Singleton单例模式

what什么是单例模式单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。单例模式有 3 个特点:单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点。why为什么需要单例模式在计算机系统中,还有 Windows 的回收站、操作系统中的文件...

2021-09-03 20:42:26 214

原创 ShardingSphere设计总览

本来想写一篇ShardingJdbc相关的文章,现在互联网时代,创业真难,想写的一搜都有人写了,但是还是得写啊。这里先收集了一些别人的优秀文章,站在巨人的肩膀上。从源码看ShardingSphere设计-总览篇 - 简书 (jianshu.com)蚊子squirrel - 简书 (jianshu.com)...

2021-09-03 09:56:14 86

原创 从开源框架理解设计模式系列#Visitor访问者模式

设计模式有这么一种设计模式,访问者模式,平时见的少,用的少,感觉是比较没有存在感的一个设计模式,上一篇设计模式文中,设计模式why、what、how这个设计模式也都比较少见,且重要程度一般。但是如果读源码较多的同学,会发现到处都有visitor,visitor无处不在,比如Elasticsearch,ShardingJdbc,MybatisPlus,asm,只要一搜,到处都是,接下来我们就详细聊聊这个visitor。what先回答这个问题,什么是访问者模式,这里参考网上的一张图片及其定义,很多例

2021-09-03 09:52:11 455

转载 Linux下netstat命令详解

一、介绍Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。二、输出信息描述执行netstat后输出如下:[root@sy-suz-srv51 ~]# netstatActive Internet connections (w/o servers)Proto Recv-Q Send-Q Loc.

2021-09-02 22:20:49 213

MySQL_5.5中文参考手册

MySQL_5.5中文参考手册

2017-10-12

sbt-1.0.2.msi

sbt最新的windows安装程序,官网下载太慢了 sbt最新的windows安装程序,官网下载太慢了 sbt最新的windows安装程序,官网下载太慢了

2017-10-12

MySQL性能调优与架构设计

网易内部的mysql文档,包括在使用、设计数据库常见的问题,以及如何提高效率,改善优化数据库。

2015-08-16

重构_改善既有代码的设计

这本书讲的是如果使用设计模式、重构我们的代码,例子十分好。

2015-08-16

深入浅出设计模式

设计模式的相关数据。十分经典的一本书。

2015-08-16

<设计模式之禅>的完整版本

设计模式的经典作品,通俗易懂、找了好久才找到的。

2015-07-08

方老师:30天轻松掌握JavaWeb视频

方立勋老师的javaweb前25天的,后面的找不到,所有的都在这

2015-07-08

git客户端和使用手册,msysgit,tortoisegit

git客户端,msysgit,tortoisegit以及git的详细使用手册介绍。

2014-11-19

小型图书馆管理系统c++源代码

小型图书馆系统的C++代码,其中有图书馆的基本操作,检索,插入,删除等。

2011-03-19

空空如也

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

TA关注的人

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