自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Thinkingcao的专栏

CSDN明星博主、博客专家—专注架构、Java、Spring、SpringBoot、SpringCloud、分布式、微服务、数据库、中间件、源码分析、JVM性能调优、K8S等领域

  • 博客(437)
  • 资源 (14)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Spring Cloud Alibaba 微服务架构教程:专栏汇总篇(持续更新中.............)

一、Spring Cloud Alibaba专题目录Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系Spring Cloud Alibaba教程(一):使用Nacos实现服务注册与发现Spring Cloud Alibaba教程(二):实现Nacos注册中心高可用与原理解析Spring Cloud Alibaba教程(三):使用Nacos实现分布式配置中心Spring Cloud Alibaba教程(四):解读Nacos实现

2020-11-04 14:53:47 1456 8

原创 Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

一、前言在搭建SpringCloud项目环境架构的时候,Springboot版本与SpringCloud版本对应关系很重要,如果版本不对应,常见的会遇见项目启动不起来,怪异的会是项目出现一些诡异的问题。Release train Spring Boot compatibilitySpring Cloud Release TrainSpring Boot VersionHo...

2020-04-21 10:55:00 9153 2

原创 深入理解分布式、微服务中CAP定律和BASE理论

一、背景随着互联网的蔓延,各种传统项目(单体应用)已经不能够满足当前各种复杂的场景需求,都逐渐向分布式服务、微服务做转换,如今分布式、微服务已经普遍存在,大型网站几乎都是分布式、微服务架构的,分布式和微服务架构就显得尤为重要了。分布式和微服务系统的最大难点,就是各个节点的状态如何保持同步,这也是理解分布式、微服务的起点,设计和部署分布式系统时,所有分布式及微服务系统都需遵循CAP定律和BASE理...

2020-04-07 16:45:00 1391 2

原创 Spring Cloud 系列教程 | 文章汇总:专栏汇总篇(持续更新中.............)

SpringCloud从入门到精通系列教程,持续更新中......................

2020-02-21 17:43:38 1109

原创 Spring Boot2.x系列教程 | 文章汇总:专栏汇总篇(持续更新中.............)

Spring Boot使用注解控制Api接口幂等性之前后端分离架构设计:https://blog.csdn.net/Thinkingcao/article/details/103578562

2019-12-30 15:50:33 1835 2

原创 SpringBoot 系列教程(十二):给大家推荐20个SpringBoot开源项目,私活必备

基于 SpringBoot2.x + Shiro 实现了用户管理、个人微信、支付宝支付,内置扫码支付、后台回调、订单查询、限流等一系列功能

2018-12-05 12:22:22 1284

转载 一直说的服务端负载均衡和客户端负载均衡(Ribbon)的区别

一、什么是负载均衡?负载均衡可以想象为将所有请求先聚在一起,然后根据负载均衡算法分发请求达到合理分配请求,将服务器处理请求的效率达到最大化,为微服务集群分担请求,降低系统的压力。负载均衡算法:1、随机,通过随机选择服务进行执行,一般这种方式使用较少;2、轮训,负载均衡默认实现方式,请求来之后排队处理;3、加权轮训,通过对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力;4、地址Hash,通过客户端请求的地址的HASH值取模映射进行服务器调度。5、最小链接数;即使

2021-08-02 14:59:11 16

原创 中间件RabbitMQ-SpringBoot整合RabbitMQ

https://www.jianshu.com/p/382d6f609697

2021-05-23 14:42:49 33

原创 JDK1.8时间接口 LocalDateTime用法

一、JDK 8新增日期和时间的新类Java 8为Date和Time引入了新的API,以解决旧java.util.Date和java.util.Calendar的缺点。Java 8时间类库中的核心类,比如LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Period, Duration以及它们的api。1、获取时间 @Test public void testGetDate() { /** * 1.

2021-05-17 14:36:26 82

原创 中间件RabbitMQ-work queues工作队列模式

一、前言中间件RabbitMQ-work queues工作队列模式

2021-04-29 00:58:16 39

原创 中间件RabbitMQ-Simple简单队列模式

一、前言中间件RabbitMQ-Simple简单队列模式

2021-04-29 00:57:20 27

原创 中间件RabbitMQ-RabbitMQ界面的角色分类

一、RabbitMQ的角色分类1. none:类似个人中心不能访问 management plugin2. management:比个人中心权限高级一点用户可以通过AMQP做的任何事外加:列出自己可以通过AMQP登入的virtual hosts查看自己的virtual hosts中的queues, exchanges 和 bindings查看和关闭自己的channels 和 connections查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual

2021-04-29 00:55:52 35

原创 中间件RabbitMQ-使用Docker安装RabbitMQ

RabbitMQ在Windows上安装非常简单,就跟日常安装应用聊天软件一样,因此这里选择Linux环境安装RabbitMQ,并且借助Docker容器进行安装,在使用Docker安装RabbitMQ之前,我们先简单的了解一下几个概念:什么是Docker、Docker有什么用处、Docker原理是什么,然后再Centos7上安装Docker服务、以及使用Docker安装RabbitMQ。

2021-04-26 23:44:33 67

原创 中间件RabbitMQ-了解RabbitMQ七种工作队列模式

RabbitMQ是实现了高级消息队列协议AMQP的开源消息代理软件(亦称面向消息的中间件),主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全,并且RabbitMQ服务器是使用Erlang语言编写的。支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

2021-04-25 22:49:19 59 2

原创 中间件RabbitMQ-常见消息队列中间件选型

消息队列中间件是分布式系统中一个非常重要的组件,主要解决应用程序的解耦、异步消息、缓冲、流量削峰等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统和高并发、大数据流量场景必不可少的中间件,同时也是支撑高可用的常用手段之一。

2021-04-25 22:45:41 57 1

原创 SpringBoot 系列教程(一百零八):SpringBoot整合Orika实体映射工具

在开发过程中,经常涉及到对象之间的拷贝,我记得以前用得最多的`Spring`框架中自带的一个`API`方法是:```javaBeanUtils.copyProperties(Object source, Object target)````BeanUtils.copyProperties(Object source, Object target)`的含义是将`source`的属性值复制到`target`,属性为null时也会进行复制。

2021-04-23 14:01:37 180

原创 Forest - 轻量级HTTP客户端API框架,该丢弃HttpClient了

一、前言最近在码云上扒了一波,发现了一个非常优秀的开源的轻量级HTTP客户端API框架Forest,这款API框架让Java发送HTTP/HTTPS请求不再难,他比原先了OkHttp和HttpClient更高层,以前在调用一个第三方外部API接口时,你可能需要使用HTTPClient或者OkHttp工具来实现,封装一个HTTPClientUtil工具类,工具类中封装一些Post/Get请求,那么现在你完全不需要这么做了,使用Forest框架只需要在你的接口上面加一个注解即可实现第三方API接口的调用。二

2021-04-20 23:39:50 488 3

原创 SpringBoot 系列教程(一百零七):SpringBoot整合Mybatis Plus3.4.2+Swagger增删改查

在前面一篇文章中:[SpringBoot 系列教程(一百零六):SpringBoot封装企业通用Swagger配置](https://thinkingcao.blog.csdn.net/article/details/115875462) ,写了如何封装企业级Swagger常用配置为Starter启动器,为了验证我们自身封装的`swagger-spring-boot-strater`可用性,本章节专门选用技术栈 `SpringBoot2.3.7.RELEASE+Swagger+Mybatis Plus3

2021-04-19 22:59:44 162 4

原创 SpringBoot 系列教程(一百零六):SpringBoot封装企业通用Swagger配置

哈喽,小伙伴们,晚上好,距离上一次更新文章已经是2021年1月份了,停更了3个月的时间,这么久实在是感到抱歉,尤其对于那些付费的朋友们更是心里过意不去,其实停更这一段时间我一直在准备换工作,复习面试题,现在也成功入职了一家新的互联网公司,前面一段时间稍微忙了一些,就没有精力去更新这些文章了,其实要写的还蛮多,准备后面持续的输出给大家,同时希望自己通过写一些技术文章能给一些朋友们带来一点点的帮助,其次也是对自己技术探索之路的一个总结与提升,相信一直沉淀下去大家都会有所收获的,加油!一、前言做架构一直是我的

2021-04-19 22:42:33 117

转载 Java中五中IO模型详解

一、前言在《Unix网络编程》一书中提到了五种IO模型,5种IO模型分别为: 阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型、异步IO模型。下面就分别来介绍一下这5种IO模型的异同。二、五种IO模型1、阻塞IO模型(BIO)这是最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。阻塞IO模型: 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果

2021-02-24 16:21:56 125

原创 2021-草原不寂寞

2021-草原不寂寞

2021-02-03 14:14:53 96

原创 Java中的基本数据类型和引用数据类型的区别

一、前言众所周知Java是一种强类型语言,在Java语言中,Java的数据类型一共分为两大类,分别为基本数据类型和引用数据类型,其中基本数据类型细分小类可分为整数类型、浮点类型、字符类型、布尔类型这四小类。二、基本数据类型和引用数据类型1. 基本数据类型只有8种,可按照如下分类 :整数类型: long、int、short、byte浮点类型: float、double字符类型: char布尔类型: booleanNo.数据类型大小/位可表示数据范围默认值1by

2021-01-31 00:37:14 224

原创 Spring Cloud系列教程(十九) - 自定义Ribbon负载均衡策略

一、前言在Ribbon组件中,一共提供了7种负载均衡策略规则,默认使用轮训规则RoundRobinRule:最低并发策略BestAvailableRule: 选择最小请求数可用过滤策略(AvailabilityFilteringRule): 过滤掉连接失败的服务节点,并且过滤掉高并发的服务节点,然后从健康的服务节点中,使用轮询策略选出一个节点返回。随机策略 RandomRule : 随机选择一个server轮询策略 RoundRobinRule: 轮询选择server(Ribbon

2021-01-30 22:43:49 200 2

转载 MySQL事务实现原理

https://www.cnblogs.com/wyc1994666/p/11367051.html

2021-01-18 22:07:37 80

原创 feilong-core,一个让Java开发更简便的工具包,极力推荐

还是那句话,既然吃了面向对象编程这碗饭,能不重复造轮子就尽量不造一、背景在JAVA开发过程中,经常看到小伙伴直接从网上copy一长段代码来使用,又或者写的代码很长很长很长…痛点在于:难以阅读难以维护sonar扫描结果债务长codereview 被小伙伴鄙视…feilong-core focus on J2SE,是feilong platform 的核心项目,创建于2008年愿景: Reduce development, Release ideas (减少开发,释放思想), 希望可以

2020-12-30 13:35:09 214

转载 SpringCloud Alibaba 微服务架构(十七)- Seata-AT 如何保证分布式事务一致性

一、前言Seata 是一款开源的分布式事务解决方案,star 高达 18100+,社区活跃度极高,致力于在微服务架构下提供高性能和简单易用的分布式事务服务,本文将剖析 Seata-AT 的实现原理,让用户对 AT 模式有更深入的认识。二、Seata 事务模式是什么?1. Seata 对事务的定义Seata 定义了全局事务的框架。全局事务定义为若干分支事务的整体协调:TM 向 TC 请求发起(Begin)、提交(Commit)、回滚(Rollback)全局事务。TM 把代表全局事务的 XID 绑

2020-12-30 10:30:12 364

原创 Java中读取properties配置文件的八种方式总结

一、前言在做Java项目开发过程中,涉及到一些数据库服务连接配置、缓存服务器连接配置等,通常情况下我们会将这些不太变动的配置信息存储在以 .properties 结尾的配置文件中。当对应的服务器地址或者账号密码信息有所变动时,我们只需要修改一下配置文件中的信息即可。同时为了让Java程序可以读取 .properties配置文件中的值,Java的JDK中提供了java.util.Properties类可以实现读取配置文件。二、Properties类Properties 类位于 java.util.Pro

2020-12-29 14:01:04 865 2

转载 SpringCloud Alibaba 微服务架构(十五)- 一文详解 Nacos 高可用特性

前言服务注册发现是一个经久不衰的话题,Dubbo 早期开源时默认的注册中心 Zookeeper 最早进入人们的视线,并且在很长一段时间里,人们将注册中心和 Zookeeper 划上了等号,可能 Zookeeper 的设计者都没有想到这款产品对微服务领域造成了如此深厚的影响,直到 SpringCloud 开始流行,其自带的 Eureka 进入了人们的视野,人们这才意识到原来注册中心还可以有其他的选择。再到后来,热衷于开源的阿里把目光也聚焦在了注册中心这个领域,Nacos 横空出世。Kirito 在做注册

2020-12-28 12:21:51 334

转载 SpringCloud Alibaba 微服务架构(十六)- Nacos 集群部署模式最佳实践

1 前言Nacos 支持两种部署模式:单机模式和集群模式。在实践中,我们往往习惯用单机模式快速构建一个 Nacos 开发/测试环境,而在生产中,出于高可用的考虑,一定需要使用 Nacos 集群部署模式。我的上一篇文章《一文详解 Nacos 高可用特性》提到了 Nacos 为高可用做了非常多的特性支持,而这些高可用特性大多数都依赖于集群部署模式。这篇模式文章便是给大家介绍一下,在实践中可以被采用的几种集群部署模式,无论你是希望自行搭建 Nacos,还是希望对 MSE 商业版 Nacos 有一个更加深刻的理解

2020-12-28 11:49:47 321 1

原创 Centos7从零开始搭建Java Web开发环境

一、安装JDK1. 执行以下命令,查看yum源中JDK版本。yum list java*2. 执行以下命令,使用yum安装JDK1.8。yum -y install java-1.8.0-openjdk*3. 执行以下命令,查看是否安装成功。java -version如果显示如下图内容,则表示JDK安装成功。二、安装MySQL数据库1. 执行以下命令,下载MySQL官方的Yum Repository。wget http://dev.mysql.com/get/mysql5

2020-12-25 14:56:55 175

原创 Git操作第二篇:把本地项目提交到Gitee、GitHub、GitLab仓库

一、前言有时候我们想把自己一些高质量的代码片段或者小项目demo提交到远程Git仓库,这里的远程Git仓库指Gitee、GitHub、GitLab等这些以Git搭建的远程代码仓库,可以是开源的Git仓库,也可以是公司自己的Git地址,总之理解就行,那么这里就记录一篇如何将本地项目提交上传到远程Git仓库的教程,虽然网上的教程太多,但是都感觉好乱,因为这些不走对于我来说使用频率很高,所以还是自己来总结一篇吧。‘’二、Git命令操作1. 先进入项目文件夹,初始化本地仓库git init通过执行gi

2020-12-15 23:25:46 359

原创 Spring中@ResponseStatus注解的作用

一、@ResponseStatus注解作用@ResponseStatus注解是spring-web包中提供的一个注解,从下图部分源码中可以看出@ResponseStatus注解具有value、code、reason 三个属性。@ResponseStatus注释可指定下表所示属性:属性类型是否必要说明codeHttpStatus否http状态码,如HttpStatus.CREATED,HttpStatus.OKvalueString否同code属性reas

2020-12-08 17:58:35 892

原创 Spring Cloud系列教程(三):Eureka实现高可用集群环境搭建

在`SpringCloud`微服务项目中,`注册中心`是其中的一部分,注册中心充当了服务的注册和发现角色,更为核心的是解决了微服务项目中的一系列服务治理问题,如果一旦服务注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式,`Eureka集群的原理:`**其实就是两台或者多台`Eureka server`服务相互注册,将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的互相同步,达到高可用效果。**

2020-12-01 14:19:44 718

原创 Eureka源码分析【一】 之Client和Server环境搭建

一、背景在之前对Spring Cloud微服务系列组件进行了一个系统的学习,并且在前面的一些微服务组件学习过程中,总结了一些学习心得以及对于在学习这些微服务组件后的一些个人理解;恰好最近公司有个规模较大的项目,需要考虑到上微服务架构,所以我就主动申请了挑战一下这个新技术。二、面对技术选型的挑战大家都知道,在Spring Cloud经历过几个大版本的发布后,变得愈来愈成熟,而其中的大部分组件是由国外著名的Netflix的流媒体播放公司开源贡献的,在后续的更新中,Netflix公司提出了一些组件相继停更。

2020-11-27 17:58:12 182

原创 一文教你如何透彻理解Java异常处理

一、JAVA 异常类型结构分类在Java中Throwable是所有异常类型的基类,并且Throwable异常下一层分为两个分支,分别为Error 和 Exception,Error和 Exception都继承自基类Throwable。其关系结构图如下:二、Error 和 Exeption区别1. ErrorError表示不可恢复的情况,例如Java虚拟机(JVM)内存不足,内存泄漏,堆栈溢出错误,库不兼容,无限递归等,描述了 JAVA程序运行时系统的内部错误,通常比较严重,该异常产生的错误通常

2020-11-25 17:13:22 835

原创 Hutool,一个贼好用的 Java 工具类库,Java开发必备利器

工欲善其事必先利其器! 今天给大家介绍一款超级强力的Java工具类库Hutool 。一、简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方

2020-11-24 14:55:29 1282 2

原创 SpringBoot 系列教程(一百零五):SpringBoot调用Minio API时多级目录如何操作

背景在使用minio做分布式系统文件存储时,有几个术语概念必须要理清楚,因为在minio存储目录是多级目录时,难以区分。参数类型描述bucketNameString存储桶名称objectNameString存储桶里的对象名称一、由来假设现在minio的控制台界面有个bucket(桶),叫做devBucket,然后在devBucket目录中创建一个images文件夹,接下来在images文件夹中上传一个test.jpg图片,因此整个静态资源图片的访问URL应该是

2020-11-20 17:16:11 853

原创 Linux下校对服务器时间同网络时间一致

一、背景默认安装完CentOS系统后,可能存在Linux服务器的时间与我们所处的网络时间不一致,这时候需要对linux服务器时间进行校对,同网络时间一致。二、CentOS系统校对1. 安装CentOS系统NTP校时包yum install ntp2. 校对命令ntpdate cn.pool.ntp.org如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:`1 00 12 * * * /sbin/ntpdate cn.pool.ntp.org`cn.pool.n

2020-11-20 14:15:00 366

原创 SpringBoot 系列教程(一百零四):SpringBoot 整合 MinIo 文件服务

在日常开发中,图片上传、文件上传功能都会涉及到,可能在`SpringBoot`框架占领`Java`开发的主要市场后大家在处理文件上传时大家听得最多的分布式文件服务是`FastDFS`和阿里云的`OSS`,虽然`OSS`挺好用,奈何`OSS`是收费的,太贵.......,而`FastDFS`搭建配置过程又太繁琐,所以今天给大家推荐一款高性能的分布式文件存储系统`MinIo `

2020-11-19 14:23:58 713

翻译 Docke入门教程(一):Docker入门

一、虚拟机与容器化技术虚拟机可以在一个操作系统里面运行另一种操作系统。对于底层系统来说,虚拟机就是一个普通文件。虚拟机占用资源多,冗余步骤多,启动慢。为了解决虚拟机存在的缺点,Linux发展出了虚拟化技术,Linux容器。Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。容器不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。容器没有自己的内核,也没有进行硬件虚拟。因此要比传统虚拟机更加轻便。每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源

2020-11-18 17:25:43 513

Mysql百万级以上查询优化总结

Mysql百万级以上查询优化总结,,对mysql表优化、索引优化

2018-09-29

视觉最好的编程字体Monaco

编程界最佳的编程字体,视觉效果超级好,也是Mac电脑默认的字体,用Monaco来编写程序代码,非常好

2014-01-22

springboot-activiti_model.zip

SpringBoot2.x整合Activiti6.0.0,以及SpringBoot2.x整合Activiti-Model5.22在线流程设计器模块,实现在线设计流程图和在线部署

2020-03-05

SSH整合完整步骤

SSH整合完整步骤

2016-08-29

SQL Server2012安装教程

通过自身安装SQLServer数据库的时候,记录安装步骤,以文档的形式记录下来,供大家下载使用。

2017-09-29

Red Hat Enterprise Linux 7.0 x86_64下安装Oracle 12c R1

2017-02-07

Red Hat Enterprise Linux 7.0 x86_64下安装Oracle 12c R1数据库

Red Hat Enterprise Linux 7.0 x86_64下安装Oracle 12c R1数据库

2016-09-02

springboot-weixin.zip

SpringBoot整合WxJava,接入开发者,实现微信公众号开发

2020-03-05

zookeeper-3.5.5(SpringBoot2.0以上对应Zk3.5及以上).zip

Zookeepe3.5.5版本的安装包以及可视化工具,安装包在本地以及编译好了,解压可以直接使用,查看Zookeeper信息的可视化界面工具也在其中,解压便可使用;

2020-02-24

RocketMQ-4.3.2启动服务包.zip

Windows下安装了RocketMQ之后,使用了批处理文件的方式配置了RocketMQ,方便启动,下载即可使用

2020-01-03

导入excel模板文件下载

导入excel模板,测试excel模板,

2019-11-06

lombok插件以及使用文档

lombok插件以及使用文档,安装eclipse插件lombok,可简化代码,日志。

2018-07-25

SpringCloud微服务组件说明.txt

SpringCloud微服务组件说明,列举了当下微服务框架中SpringCloud所使用的一全套组件

2019-09-30

SpringCloud概览_终稿.docx

Spring Cloud是一系列框架的有序集合: 利用Spring Boot的开发便利性,简化了分布式系统基础设施的开发。 Spring Cloud Eureka 是 Spring Cloud Netflix 的一部分,它基于 Netflix Eureka 做了二次封装,完成微服务架构中的服务治理功能。 Spring Cloud Netflix是对Netflix分布式服务开发框架的封装,包括服务发现和注册、负载均衡、断路器、REST客户端、请求路由等。 Spring Cloud Zookeeper对Zookeeper的封装,使之能配合其它 Spring Cloud项目使用,一般当作注册中心。 Spring Cloud Bus分布式消息队列,是对Kafka MQ的封装,实现可靠消息。 Spring Cloud Config将配置信息中央化保存。 Spring Cloud Security对Spring Security的封装,实现服务安全等。

2019-09-30

Thinkingcao的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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