自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nbme的博客

Talk is cheap,show me the code.

  • 博客(100)
  • 资源 (25)
  • 问答 (1)
  • 收藏
  • 关注

原创 Jenkins配置钉钉告警

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,本文章主要针对集成钉钉告警做示例。...

2022-08-18 17:34:57 695

原创 Linux下安装Yearning及相关环境配置

Yearning定位于 SQL 审核查询平台,旨在提升 DBA 的工作效率,支持多种数据库的 SQL 上线和查询

2022-07-06 11:29:25 1089

原创 GoF设计模式(十七) - 责任链模式

前言责任链模式(Chain of Responsibility Pattern)避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。这种类型的设计模式属于行为型模式。模式所涉及的角色抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该.

2022-03-17 14:08:23 215

原创 GoF设计模式(十六) - 迭代器模式

前言迭代器模式(Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。该模式属于行为型模式。模式所涉及的角色抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。 具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等。 抽象迭代器:定义.

2022-03-16 15:08:01 146

原创 GoF设计模式(十五) - 观察者模式

前言观察者模式(Observer Pattern)指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式属于行为型模式。模式所涉及的角色抽象主题(Subject):也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。 具体主题(Concrete Subject):也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察...

2022-02-18 16:09:51 438

原创 GoF设计模式(十四) - 模版方法模式

前言模板模式(Template Pattern),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。模式所涉及的角色1)抽象类/抽象模板(Abstract Class)抽象模板类,负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。① 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。② 基本方法:是整个算法中的一个..

2022-02-16 13:47:57 391

原创 GoF设计模式(十二) - 享元模式

前言享元x模式(Flyweight Pattern)运用共享技术有效地支持大量细粒度的对象,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。模式所涉及的角色Flyweight: 享元接口,通过这个接口传入外部状态并作用于外部状态; ConcreteFlyweight: 具体的享元实现对象,必须是可共享的,需要封装享元对象的内部状态; UnsharedConcreteFlyweight: 非共享的享元实现对象,并不是.

2022-02-11 10:36:33 481

原创 GoF设计模式(十一) - 组合模式

前言组合模式(Composite Pattern),将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。组合模式主要包含三种角色:抽象根节点(Component):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性; 树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构; 叶子节点(Leaf):叶..

2022-02-08 17:11:53 306

原创 GoF设计模式(九) - 外观模式

前言外观模式(Facade),提供一个高层次的接口,隐藏系统的复杂性,使得子系统更易于使用。具体实现子系统类 :public class SubSystemA { public void methodA(){ System.out.println("执行子系统方法A"); }}public class SubSystemB { public void methodB(){ System.out.pri...

2021-12-14 15:10:40 489

原创 GoF设计模式(七) - 装饰者模式

前言装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。装饰者模式分为如下几个部分:(1)Component:主体(装饰的主体是什么)(抽象的的构建对象)(2)ConcreteComponent:抽象构件对象的子类,用来定义具体的构件对象(3)Decorator:装饰者,继承了Component,从外类来扩展Component类的功能(4)ConcreteDecorator:具体装饰类,实现了抽象装饰类,负责构...

2021-10-20 10:11:14 114

原创 Sourcetree For user git on host github.com/gitee.com 完美解决

一. 问题描述使用Sourcetree 从码云或GitHub拉取代码时一直提示输入密码,如下图所示二. 问题解决1. 获取SSH公钥cat .ssh/id_rsa.pub2.添加SSH公钥将SSH公钥添加至码云,GitHub同理3. 执行同步代码(关键) ssh -T [email protected] 如果是github就调用如下,其他同理ssh -T [email protected]出现successfully表示成功!!!4...

2021-09-23 11:08:28 2345 1

原创 Java经典面试题汇总(十三)Dubbo

本篇总结的是Dubbo相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. Dubbo是什么?2. SpringCloud和Dubbo有哪些区别?3. Dubbo默认使用什么注册中心,还有别的选择吗?4. Dubbo有哪几种负载均衡策略,默认是哪种?5. Dubbo支持分布式事务吗?6. Dubbo的管理控制台能做什么?7. 你还了解别的分布式框架吗?1. Dubbo...

2021-07-31 13:31:59 185

原创 Java经典面试题汇总(十二)Spring Cloud

本篇总结的是Spring-Boot框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. 什么是 Spring Cloud?2. Spring Cloud 断路器的作用是什么?3. Spring Cloud 的核心组件有哪些?4. 什么分布式系统?5. 分布式系统的CAP理论?6.Spring Cloud的版本关系?7.SpringCloud 适合做注册中心的有哪些?...

2021-07-24 12:21:07 200

原创 Java经典面试题汇总(十一)Spring Boot

本篇总结的是Spring-Boot框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~1. 什么是 Spring Boot?Spring Boot 是为 Spring 服务的,是用来简化新 Spring 应用的初始搭建以及开发过程的。2. 为什么要用 Spring Boot?配置简单 独立运行 自动装配 无代码生成和 xml 配置 提供应用监控 易上手 提升开发效率3. S...

2021-07-15 17:55:00 273 2

原创 Java经典面试题汇总(十)Spring MVC

本篇总结的是Spring MVC框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. 什么是Spring MVC ?2. Spring MVC有哪些组件?3. 说一下 Spring MVC运行流程?4. Spring MVC的优点:5. @RequestMapping 的作用是什么?6. 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?7. SpringMV...

2021-07-03 14:57:20 270 4

原创 Java经典面试题汇总(九)Mybatis

本篇总结的是Mybatis框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. MyBatis 中 #{}和 ${}的区别是什么?2. MyBatis 有几种分页方式?3. MyBatis 逻辑分页和物理分页的区别是什么?4. MyBatis 是否支持延迟加载?延迟加载的原理是什么?5. 说一下 MyBatis 的一级缓存和二级缓存?6. MyBatis 有哪些执行器(Exe...

2021-06-20 11:43:07 424 8

原创 Java经典面试题汇总(八)Spring

什么是Springspring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。 spring 提供了事务支持,使得事务操作变的更加方便。 spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。...

2021-06-19 20:41:14 372 15

原创 Java经典面试题汇总(七)多线程

本篇总结的是Java多线程相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~1.并行和并发有什么区别?并行:多个处理器或多核处理器同时处理多个任务。 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。 并发 = 两个队列和一台咖啡机。 并行 = 两个队列和两台咖啡机。2. 线程和进程的区别?一个程序下至少有一个进程,一个进程下至少有一个...

2021-06-13 22:39:03 6274 67

原创 Java经典面试题汇总(六)JVM

本篇总结的是JVM相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~1.说一下 JVM 的主要组成部分?及其作用?类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据...

2021-06-13 14:01:01 1310 23

原创 Java经典面试题汇总(五)网络编程

本篇总结的是Java 网络编程相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. HTTP响应码 301 和 302 代表的是什么?有什么区别?2. 简单说一下http协议?3. HTTP与HTTPS的区别?4. HTTP协议下客户端请求报文是什么?5. HTTP协议服务器响应报文有哪些?6. HTTP协议中的请求方法有哪些?7. 常见的HTTP状态码有哪些?8. ...

2021-06-03 20:30:24 2295 26

原创 Java经典面试题汇总(四)Java Web

本篇总结的是Java Web相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. JSP 和 servlet 有什么区别?2. 什么是Tomcat?3. Tomcat容器是如何创建Servlet类实例?用到了什么原理?4. 拦截器和过滤器的区别?5.说一下 JSP 的 4 种作用域?6. JSP 有哪些内置对象?作用分别是什么?7. Servlet的生命周期8. sess...

2021-06-01 10:12:24 625 28

原创 Java经典面试题汇总(三)异常

本篇总结的是Java异常相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~目录1. Java的异常机制2. Java如何自定义异常?3. throw 和 throws 的区别?4. Java 中被检查的异常和不受检查的异常有什么区别?5. final、finally、finalize 有什么区别?6. try-catch-finally 中哪个部分可以省略?7. try-catc...

2021-05-31 12:19:21 273 25

原创 Java经典面试题汇总(二)基础

本篇总结的是Java容器相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~

2021-05-30 12:15:57 392 38

原创 Java经典面试题汇总(一)容器

本篇总结的是Java容器相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~1. Java 容器都有哪些?Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:Collection List ArrayList LinkedList Vector Stack Set HashSet LinkedHashSet TreeSet...

2021-05-28 19:09:27 1660 41

原创 如何快速创建企业级SpringBoot项目,有它帮忙事半功倍!

前言在项目初期需要创建很多项目并且要引入相对应的依赖包,如何使这部分工作能够更高效的完成呢?本文介绍两个脚手架工具帮你告别繁琐的工作!项目利器1. Spring官网的脚手架工具1.1 官网地址https://start.spring.io/1.2点击ADD DEPENDENCIES 可以添加常用依赖包。1.3配置好了可以直接点击GENERATE 下载项目 ,也支持在页面上自定义依赖,点击EXPLORECTRL弹出如下页面 ,修改下载即可。...

2021-05-27 18:03:01 915 2

原创 完美解决: Error:java: 无效的源发行版: 10 (IDEA)

文章目录问题描述问题原因解决办法方法一:方法二:问题描述编译java程序时出现Error:java: 无效的源发行版: 10问题原因本机的JDK版本与项目的JDK设置不同造成的解决办法查看本机JDK版本java -version方法一:进入IDEA 修改Jdk版本配置和本机一致方法二:修改pom 文件下的版本值 改为8即可...

2021-05-27 15:27:46 4015 4

原创 GoF设计模式(十) - 桥接模式

前言桥接(Bridge)是将抽象部分与它的实现部分分离,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。场景以汽车销售为例 ,会有汽车品牌和汽车类型,如何实现分类销售 ? 我们可以用多继承结构的方式来实现。按品牌分类实现结构图:这样实现的话,会存在扩展性问题并且违反了单一职责原则,当我们新添加一个品牌(长安),我们是不是又要在改品牌下增加两种汽车类型呢?假如我们在增加一个汽车类型(混动车),我们就要在各汽车...

2021-05-27 14:23:49 188 13

原创 Visual Paradigm创建Java类图时如何绘制实线箭头?

在使用visual paradigm创建类图时 无法选择实现箭头 →,网上搜了很多资料无果 (包过visual paradigm自带的教程),特此记录。解决方案

2021-05-26 11:28:47 2549 10

原创 GoF设计模式(八) - 代理模式

代理模式属于结构型模式,为其他对象提供一种代理以控制对这个对象的访问。Subject 类,定义了RealSubject 和Proxy 的共用接口,这样就在任何使用RealSubject 的地方都可以使用Proxy。代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色。其中:Subject角色负责定义RealSubject和Proxy角色应该实现的接口;RealSubject角色用来真正完成业务服务功能;Proxy角色负责将自身的Request请求,调用realsub

2021-05-24 17:56:07 114 1

转载 Java 动态代理详解 ( 附示例源码,建议收藏)

动态代理在Java中有着广泛的应用,比如Spring AOP、Hibernate数据查询、测试框架的后端mock、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。本文主要介绍Java中两种常见的动态代理方式:JDK原生动态代理和CGLIB动态代理。由于Java动态代理与java反射机制关系紧密,请读者确保已经了解了Java反射机制,可参考上一篇文章《Java反射机制详解》代理模式本文将介绍的Java动态代理与设计模式中的代理模式有关,什么.

2021-05-24 17:53:46 3535

原创 面试官问: 枚举类能否继承类和实现接口,你可以这样回答

前言毋庸置疑,在Java类的继承实现关系中,只能单继承 (一个类只能有一个直接父类),但是可以多实现!继承是指继承某个类,实现是指实现某个接口!枚举类在我们日常开发中也是被经常用到,通常被用来定义常量,那么枚举类可以被继承吗? 可以实现接口吗? 下面正文开始解答!!!1. 枚举类枚举是一种特殊的数据类型,在Java5之后新增的特性,允许用常量来表示特定的数据片断,所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类,但可...

2021-05-22 15:18:38 6144 2

原创 Js获取iframe中的元素

1.iframe中不存在name和id的方法 var iframe = document.getElementsByTagName('iframe')[0].contentWindow iframe.document.querySelector("#元素")2.iframe中存在name或者idvar iframe = document.getElementById('iframeId')iframe.querySelector("#元素")3.子窗口获取父窗口的元素v...

2021-05-20 16:42:00 8436 2

原创 GoF设计模式(六) - 适配器模式

前言适配器模式(Adapter):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能,适配器模式分为类适配器模式和对象适配器模式。角色Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心。Adaptee(适配者类):适配者即被.

2021-05-11 19:34:32 145 1

原创 GoF设计模式(十三) - 策略模式

前言策略模式属于行为型模式,是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。组成环境类(PayContext): 维护一个对PayStrategy对象的引用。抽象策略类(PayStrategy): 定义所有支持的算法的公共接口或抽象类具体策略类(AliPayStrategy、JdPayStrategy、WechatPayStrategy): 封装了具体的算法或行为,继承于P.

2021-04-30 17:55:44 161 1

原创 GoF设计模式(五) - 原型模式(浅复制与深复制)

前言原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能,通俗来讲就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节,这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。1. 浅复制 创建Student对象实现Cloneable接口重写clone()方法@ToStringpublic class Student implements Cloneable{ //姓名 ...

2021-04-25 15:38:50 115

原创 Spring之ApplicationContextAware的作用

前言在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能。为了让Bean获取它所在的Spring容器,可以让该Bean实现ApplicationContextAware接口,这样可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取Spring配置文件中,所有有引用到的Bean对象。1.ApplicationContextAware..

2021-04-24 19:04:02 1106

原创 GoF设计模式(四) - 建造者模式

前言建造者(Builder)模式’,又叫生成器模式。建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。建造者模式的四个角色1)Product(产品角色):一个具体的产品对象。【提供产品属性以及set、get方法】2)Builder(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类。【定义成品需要的材料.

2021-04-24 14:39:30 103

原创 GoF设计模式(三) - 单例模式的六种写法

前言单例模式属于创建型模式,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1. 懒汉式public class SluggardSingleton { private static SluggardSingleton sluggardSingleton; private SluggardSingleton(){} public static SluggardSingleton..

2021-04-23 11:59:04 108

原创 org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer.

selenium 创建IE 会话异常org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zo

2021-04-08 18:19:04 857

原创 org.apache.commons.validator.routines.InetAddressValidator.isValidInet6Address(Ljava/lang/String;)Z

异常信息RocketMQ 发送消息提示IPv6异常org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.validator.routines.InetAddressValidator.isValidInet6AddressCaused by: java.l..

2021-04-02 16:39:33 1595

chain-of-responsibility-demo 责任链模式demo

chain-of-responsibility-demo 责任链模式demo

2022-03-17

iterator-demo 迭代器设计模式demo

iterator-demo 迭代器设计模式demo

2022-03-16

observer-pattern-demo 观察者模式示例

observer-pattern-demo 观察者模式示例

2022-02-18

template-method-demo 模板方法示例

template-method-demo 模板方法示例

2022-02-16

fly-weight-demo享元模式示例

fly-weight-demo享元模式示例

2022-02-11

组合模式示例(combination-demo)

组合模式使用示例

2022-02-08

facade-demo(外观模式示例)

外观模式

2021-12-14

decorate-demo.zip

装饰者模式

2021-09-24

bridging-demo.zip

桥接模式

2021-05-27

dynamic-proxy-demo.zip

动态代理&静态代理

2021-05-24

proxy-demo.zip

proxy-demo.zip

2021-05-24

adapter-demo.zip

适配器模式

2021-05-11

strategy-demo.zip

策略模式

2021-04-30

prototype-demo.zip

原型模式-深复制与浅复制

2021-04-25

builder-demo.zip

建造者模式

2021-04-24

singleton-demo.zip

单例模式的六种写法

2021-04-24

abstract-factory-demo.zip

抽象工厂模式 (简单工厂+反射改进)

2021-03-20

abstract-factory-demo.zip

抽象工厂示例

2021-03-20

factory-method-demo.zip

工厂方法模式

2021-03-17

simple-factory-demo.zip

简单工厂模式demo

2021-03-17

MicrosoftRemoteDesktop-8.0.7.dmg

Mac操作Windows桌面远程控制工具

2021-03-16

redis-desktop-manager-0.8.3-2550.dmg.zip

Mac版 Redis可视化工具

2021-03-16

simple-captcha-demo.zip

Java图形验证码,支持gif、中英文、算术

2021-03-12

redis-demo.zip

springboot集成redis示例

2021-03-10

captcha-demo.zip

滑动点选验证码前后端示例源码 下载后阅读README.md 操作

2021-03-06

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

TA关注的人

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