自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 git 常用命令

Git操作命令

2022-06-23 14:18:22 152 1

原创 docker file的使用

编写 Dockerfile 文件命令解析:https://www.runoob.com/docker/docker-dockerfile.html命令解析:java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容

2022-06-06 18:11:40 257

原创 elastic search 实战笔记

文章目录1.聚合查询1.1 插入数据1.2 查询1.3 结果2.普通id查询2.1 查询2.2 结果1.聚合查询1.1 插入数据PUT /bcl/_doc/1{ "name":"aaa", "sex":"man"}PUT /bcl/_doc/2{ "name":"bbb", "sex":"man"}PUT /bcl/_doc/3{ "name":"ccc", "sex":"women"}PUT /bcl/_doc/4{ "name":"ddd",

2022-04-29 19:46:45 433

原创 完全卸载mac上面的VSCode

1.退出 VSCode 应用2.输入如下指令,删除 VSCode 的设置和配置sudo rm -rf $HOME/Library/Application\ Support/Code3.输入如下指令,删除 VSCode 的插件sudo rm -rf $HOME/.vscode4.从 Application 中移除 VSCode

2022-04-08 11:19:36 6560 2

原创 mac安装brew命令

1.输入命令:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2.镜像源可以选择 2(清华)新电脑安装可能会存在如下问题:安装brew 依赖git 因此如下图中的提示需要先安装git(弹框提示,点安装后等待即可)3.利用 brew 安装需要的软件利用 brew 安装需要的软件搜索:brew search go安装需要的版本号brew in.

2022-04-01 16:53:04 2093

原创 好用的命令

1.curl 常用命令1.1 带cookie插叙curl url --cookie "access_token=9e7d4e0440ac497c8ed01150a01c3bea"持续更新…

2022-03-16 10:37:29 93

原创 Sharding-JDBC分库分表案例

文章目录9 案例9.1 需求描述9.2 数据库设计9.3 环境说明9.4 环境准备9.4.1 mysql主从同步(windows)9.4.2 初始化数据库9.5 实现步骤9.5.1 搭建maven工程9.5.2 分片配置9.5.3 添加商品9.5.4 查询商品9.5.5 统计商品9.5.6 完整代码10 总结9 案例9.1 需求描述电商平台商品列表展示,每个列表项中除了包含商品基本信息、商品描述信息之外,还包括了商品所属的店铺信息,如下:本案例实现功能如下:添加商品商品分页查询商品统计

2022-02-20 12:50:40 917

原创 Sharding-JDBC分库分表(一)

文章目录1 概述1.1分库分表是什么1.2 分库分表的方式1.2.1 垂直分表1.2.2 垂直分库1.2.3 水平分库1.2.4 水平分表1.2.5 小结1.3 分库分表带来的问题1.3.1 事务一致性问题1.3.2 跨节点关联查询1.3.3 跨节点分页、排序函数1.3.4 主键避重1.3.5 公共表1.4 Sharding-JDBC介绍1.4.1 Sharding-JDBC介绍1.4.2 与jdbc性能对比2 Sharding-JDBC快速入门2.1 需求说明2.2 环境搭建2.2.1 环境说明2.2.2

2022-02-19 09:24:15 1624

原创 JProfiler分析dump文件

文章目录1.安装JProfiler(本文使用JProfiler11)2.从服务器上将dump文件拿下来3.使用JProfiler打开4.查看Classes5.查看Reference6.查看7.查看Graph8.查看代码9.扩展1.安装JProfiler(本文使用JProfiler11)链接:https://pan.baidu.com/s/1VBHLIo8hIVGeeLjaBVjcIg提取码:q5wl在JProfiler的堆遍历器(Heap Walker)中,你可以对堆的状况进行快照并且可以通过选择步

2022-02-12 16:23:58 12107

原创 已经有了synchronized为什么需要volatile

文章目录1.volatile和synchronized特点2.volatile和synchronized的区别3.synchronized 问题3.1 有性能损耗3.2 产生阻塞4. volatile的附加功能5. synchronized的有序性保证呢6\. 总结1.volatile和synchronized特点首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制"的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制:的是线程执行结果在内存中对其它线程的可见性。根据Java内存模

2022-02-10 18:26:02 1170

原创 正确理解HashMap

文章目录1.HashMap集合简介2.HashMap集合底层的数据结构2.1数据结构概念2.2 HashMap底层的数据结构存储数据的过程3.HashMap继承关系4.HashMap集合类的成员4.1成员变量4.2构造方法4.3成员方法4.3.1增加方法4.3.2将链表转换为红黑树的treeifyBin方法4.3.3扩容方法_resize4.3.4 删除方法(remove)4.3.5查找元素方法(get)4.3.6遍历HashMap5.如何设计多个非重复的键值对要存储HashMap的初始化5.1HashMa

2022-02-09 16:13:32 135

原创 平衡树(六)

文章目录平衡树1. 2-3查找树1.1 2-3查找树的定义1.2 查找1.3 插入1.3.1 向2-结点中插入新键1.3.2 向一棵只含有一个3-结点的树中插入新键1.3.3 向一个父结点为2-结点的3-结点中插入新键1.3.4 向一个父结点为3-结点的3-结点中插入新键1.3.5 分解根结点1.4 2-3树的性质1.5 2-3树的实现2.红黑树2.1 红黑树的定义2.2 红黑树节点API2.3 平衡化2.3.1 左旋2.3.3 右旋2.4 向单个2-结点中插入新键2.5 向底部的2-结点插入新键2.6 颜

2022-02-08 14:05:42 84

原创 优先级队列(五)

文章目录1 最大优先队列1.1 最大优先队列API设计1.2 最大优先级队列代码实现2 最小优先队列2.1 最小优先级队列API设计2.2 最小优先级队列代码实现3 索引优先队列3.1 索引优先队列实现思路3.2 索引优先队列API设计3.3 最小索引优先队列代码实现3.4 最大索引优先级队列实现普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些

2022-02-07 18:31:46 122

原创 堆和堆排序(四)

文章目录1 堆的定义2 堆的API设计3 堆的实现3.1 insert插入方法的实现3.2 delMax删除最大元素方法的实现3.3 堆的实现代码4 堆排序4.1 堆构造过程4.2 堆排序过程4.3 代码实现1 堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性:它是完全二叉树: 除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。它通常用数组来实现:具体方法就是将二叉树的结点按照

2022-02-07 14:23:59 82

原创 二叉树(三)

文章目录1 树的基本定义2 树的相关术语3 二叉树的基本定义4 二叉树的创建4.1 二叉树的节点类4.2 二叉树查找API设计4.3 二叉查找树实现4.4 二叉查找树其他便捷方法4.4.1 查找二叉树中最小的键4.4.2 查找二叉树中最大的键5 二叉树的基础遍历5.1 前序遍历5.2 中序遍历5.3 后序遍历6 二叉树层序遍历7 二叉树的最大深度问题8 折纸问题之前我们实现的符号表中,不难看出,符号表的增删查操作,随着元素个数N的增多,其耗时也是线性增多的,时间复杂度都是O(n),为了提高运算效率,接下

2022-02-07 10:31:20 85

原创 线性表(二)

文章目录1. 顺序表1.1 顺序表的实现1.2 顺序表的遍历1.3 顺序表的容量可变1.4 顺序表的时间复杂度1.5 java中ArrayList实现2.链表2.1 单向链表2.1.1 单向链表API设计2.1.2 单向链表代码实现2.2 双向链表2.2.1 结点API设计2.2.2 双向链表API设计2.2.3 双向链表代码实现2.2.4 java中LinkedList实现2.3 链表的复杂度分析2.4 链表反转2.5 快慢指针2.5.1 中间值问题2.5.2 单向链表是否有环问题2.6 循环链表2.7

2022-02-06 17:45:57 186

原创 jvm总结

文章目录1.JDK8和JDK7区别2.如何判断一个对象可以被回收3.哪些对象可以作为GC Roots4.JVM 三种类型参数4.1 标配参数4.2 X参数4.3 XX参数5.JVM XX参数5.1 布尔类型5.2 KV键值类型6. JVM Xms/Xmx参数7.JVM 查看参数7.1 查看某个参数7.2 查看**所有**参数7.3 查看**修改**后的参数7.4 查看**常见**参数8. JVM 常用参数8.1 -Xmx/-Xms8.2 -Xss8.3 -Xmn8.4 -XX:MetaspaceSize8.

2022-01-29 10:43:51 611

原创 观察者模式(十七)

文章目录行为模式之-观察者模式20.1 天气预报项目需求,具体要求如下20.2 天气预报设计方案 1-普通方案20.3 观察者模式原理20.4 观察者模式解决天气预报需求20.4.3 观察者模式的好处20.5 观察者模式在 Jdk 应用的源码分析行为模式之-观察者模式20.1 天气预报项目需求,具体要求如下气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型 API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量

2022-01-28 11:23:08 111

原创 迭代器模式(十六)

文章目录行为模式之-迭代器模式19.1 看一个具体的需求19.2 传统的设计方案(类图)19.3 传统的方式的问题分析19.4 迭代器模式基本介绍19.5 迭代器模式的原理类图19.6 迭代器模式应用实例19.7 迭代器模式在 JDK-ArrayList 集合应用的源码分析19.8 迭代器模式的注意事项和细节行为模式之-迭代器模式19.1 看一个具体的需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:19.2 传统的设计

2022-01-28 11:06:32 73

原创 访问者模式(十五)

文章目录18 行为模式之-访问者模式18.1 测评系统的需求18.2 传统方式的问题分析18.3 访问者模式基本介绍18.4 访问者模式的原理类图18.5 访问者模式应用实例18.6 访问者模式的注意事项和细节18 行为模式之-访问者模式18.1 测评系统的需求完成测评系统需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)18.2 传统方式的问题分析如果系统比较小,还是 ok 的,但是考虑系统增加越来越多新的

2022-01-28 10:45:03 94

原创 行为模式之(十四)

文章目录17. 行为模式之-命令模式17.1 智能生活项目需求17.2 命令模式基本介绍17.3 命令模式的原理类图17.4 命令模式解决智能生活项目17.5 命令模式在 Spring 框架 JdbcTemplate 应用的源码分析17.6 命令模式的注意事项和细节17. 行为模式之-命令模式17.1 智能生活项目需求我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作。这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分

2022-01-28 10:23:24 70

原创 模板模式(十三)

文章目录行为模式之-模板方法模式16.1 豆浆制作问题16.2 模板方法模式基本介绍16.3 模板方法模式原理类图16.3.1模板方法模式的原理类图16.4 模板方法模式解决豆浆制作问题16.5 模板方法模式的钩子方法16.6 模板方法模式在 Spring 框架应用的源码分析16.7 模板方法模式的注意事项和细节行为模式之-模板方法模式16.1 豆浆制作问题编写制作豆浆的程序,说明如下:制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎通过添加不同的配料,可以制作出不同

2022-01-28 10:04:30 64

原创 代理模式(十二)

文章目录15. 结构模式之-代理模式15.1 代理模式(Proxy)15.1.1 代理模式的基本介绍15.2 静态代理15.2.1 静态代码模式的基本介绍15.2.2 应用实例15.2.3 静态代理优缺点15.3 动态代理15.3.1 动态代理模式的基本介绍15.3.2 JDK 中生成代理对象的 API15.3.3 动态代理应用实例15.4 Cglib 代理15.4.1 Cglib 代理模式的基本介绍15.4.2 Cglib 代理模式实现步骤15.4.3 Cglib 代理模式应用实例15.5 几种常见的代理

2022-01-27 16:43:20 58

原创 享元模式(十一)

文章目录14. 结构型模式之-享元模式14.1 展示网站项目需求14.2 传统方案解决网站展现项目14.3 传统方案解决网站展现项目-问题分析14.4 享元模式基本介绍14.5 享元模式的原理类图14.6 内部状态和外部状态14.7 享元模式解决网站展现项目14.8 享元模式在 JDK-Interger 的应用源码分析14.9 享元模式的注意事项和细节14. 结构型模式之-享元模式14.1 展示网站项目需求小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产

2022-01-27 16:14:08 72

原创 外观模式(十)

文章目录13.结构型模式之-外观模式13.1 影院管理项目13.2 传统方式解决影院管理13.3 传统方式解决影院管理问题分析13.4 外观模式基本介绍13.5 外观模式原理类图13.6 外观模式解决影院管理13.6.1 传统方式解决影院管理说明![](https://img-blog.csdnimg.cn/img_convert/53140b938cdf528653889311085fe0ca.png =400x)13.6.2 外观模式应用实例13.7 外观模式在 MyBatis 框架应用的源码分析13.

2022-01-27 15:52:49 50

原创 组合模式(九)

文章目录12.结构模式之-组合模式12.1 看一个学校院系展示需求12.2 传统方案解决学校院系展示(类图)12.3 传统方案解决学校院系展示存在的问题分析12.4 组合模式基本介绍12.5 组合模式原理类图12.6 组合模式解决学校院系展示的应用实例12.7 组合模式在 JDK 集合的源码分析12.8 组合模式的注意事项和细节12.结构模式之-组合模式12.1 看一个学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。

2022-01-27 15:21:39 200

原创 装饰者模式(八)

文章目录11. 结构性模式之-装饰器模式11.1 星巴克咖啡订单项目(咖啡馆)11.2 方案 1-解决星巴克咖啡订单项目11.3 方案 1-解决星巴克咖啡订单问题分析11.4 方案 2-解决星巴克咖啡订单(好点)11.5 方案 2-解决星巴克咖啡订单问题分析11.6 装饰者模式定义11.7 装饰者模式原理11.8 装饰者模式解决星巴克咖啡订单11.9 装饰者:2 份巧克力+一份牛奶的 LongBlack11.10 装饰者模式咖啡订单项目应用实例11.11 装饰者模式在 JDK 应用的源码分析11. 结构性

2022-01-27 11:17:03 203

原创 桥接模式(七)

文章目录10 结构性模式之-桥接模式10.1 手机操作问题10.2 传统方案解决手机操作问题10.3 传统方案解决手机操作问题分析10.4 桥接模式(Bridge)-基本介绍10.5 桥接模式(Bridge)-原理类图10.6 桥接模式解决手机操作问题10.7 桥接模式在 JDBC 的源码剖析10.8 桥接模式的注意事项和细节10.9 常见的应用场景10 结构性模式之-桥接模式10.1 手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:10.2 传统方

2022-01-26 17:41:20 57

原创 适配器模式(六)

文章目录9. 结构性模式之-适配器模式9.1 现实生活中的适配器例子9.2 基本介绍9.3 工作原理9.4 类适配器模式9.4.1 类适配器模式介绍9.4.2 类适配器模式应用实例9.4.3 类适配器模式注意事项和细节9.5 对象适配器模式9.5.1 对象适配器模式介绍9.5.2 对象适配器模式应用实例9.5.3 对象适配器模式注意事项和细节9.6 接口适配器模式9.6.1 接口适配器模式介绍9.6.2 接口适配器模式应用实例9.7 适配器模式在 SpringMVC 框架应用的源码剖析9.8 适配器模式的注

2022-01-26 14:10:38 60

原创 建造者模式(五)

文章目录创建型模式之建造者模式8.1 盖房项目需求8.2 传统方式解决盖房需求8.3 传统方式的问题分析8.4 建造者模式基本介绍8.5 建造者模式的四个角色8.6 建造者模式原理类图8.7 建造者模式解决盖房需求应用实例8.8 建造者模式在 JDK 的应用和源码分析8.9 建造者模式的注意事项和细节创建型模式之建造者模式8.1 盖房项目需求需要建房子:这一过程为打桩、砌墙、封顶房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.请编写程序,完成需求.8.2

2022-01-26 13:32:55 62

原创 原型模式(四)

文章目录7. 创建型模式之原型模式7.1 克隆羊问题7.2 传统方式解决克隆羊问题7.3 传统的方式的优缺点7.4 原型模式-基本介绍7.5 原型模式原理结构图-uml 类图7.6 原型模式解决克隆羊问题的应用实例7.7 原型模式在 Spring 框架中源码分析7.8 深入讨论-浅拷贝和深拷贝7.8.1 浅拷贝的介绍7.8.2 深拷贝基本介绍7.9 深拷贝应用实例7.10 原型模式的注意事项和细节7. 创建型模式之原型模式7.1 克隆羊问题现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:

2022-01-26 10:36:15 56

原创 工厂模式(三)

文章目录6.创建者模式之工厂模式6.1 简单工厂模式6.2 工厂方法模式6.3 抽象工厂模式6.4 工厂模式在 JDK-Calendar 应用的源码分析6.5 工厂模式小结6.创建者模式之工厂模式6.1 简单工厂模式6.1.1 看一个具体的需求看一个披萨的项目:要便于披萨种类的扩展,要便于维护披萨的种类很多(比如 GreekPizz、CheesePizz 等)披萨的制作有 prepare,bake, cut, box完成披萨店订购功能。6.1.2 使用传统的方式来完成思路分析(类图)

2022-01-26 09:51:50 73

原创 单例模式(二)

文章目录5.创建者模式之单例模式5.1 单例设计模式介绍5.2 单例设计模式八种方式5.3 饿汉式(静态常量)5.4 饿汉式(静态代码块)5.5 懒汉式(线程不安全)5.6 懒汉式(线程安全,同步方法)5.7 懒汉式 (线程安全,同步代码块)5.8 双重检查5.9 静态内部类5.10 枚举5.11 单例在JDK应用的源码分析5.12 注意事项和细节说明5.创建者模式之单例模式5.1 单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类

2022-01-25 17:15:59 89

原创 设计模式原则工具(一)

文章目录1.设计模式的目的2.设计模式七大原则2.1 单一职责原则2.2 接口隔离原则(Interface Segregation Principle)2.3依赖倒转原则2.4里氏替换原则2.5 开闭原则2.6 迪米特法则2.7 合成复用原则(Composite Reuse Principle)2.8 设计原则核心思想3.UML 类图3.1 UML 基本介绍3.2 UML图3.3 UML 类图3.4 类图—依赖关系(Dependence)3.5 类图—泛化关系(generalization)3.6 类图—实

2022-01-25 13:50:06 148

原创 mysql数据引擎查询MyIsam为什么InnoDb快

1.MyIsam和InnoDb区别 Innodb myisam 存储文件 .frm表定义文件 .idb数据文件 .frm表定义文件 .idb数据文件 .myi索引文件 锁 支持行锁和表锁 支持表锁 事务 事务性索引 不支持事务 count 扫表 专门存储地方 索引结构 B+Tree索引 B+Tree索引 通过上面表格对比, InnoDB在做查询的时候,要

2022-01-13 17:13:58 502

原创 linux命令

1.grep 查找常用命令1.1 Linux 查找日志上下文信息grep -C 10 keyword catalina.out 显示file文件中匹配keyword字串那行以及上下10行grep -B 10 keyword catalina.out 显示keyword及前10行grep -A 10 keyword catalina.out 显示keyword及后10行1.2 查找结果集大重定向到别的文件grep -C 10 keyword catalina.out > aa

2022-01-13 14:42:57 229

原创 分布式事务之TCC

4.1.什么是TCC事务 TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的 操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所 有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/C

2022-01-05 11:23:12 2276 2

原创 CAP理论和SETA实现2PC

1.基础概念1.1 什么是事务举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必 须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。明白上述例子,再来看事务的定义: 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败1.2 本地事务在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器

2021-12-28 15:30:41 744

原创 rabbitmq(三)发布确认+集群+其他高级

8.发布确认8.1. 发布确认 springboot 版本8.1.1. 确认机制方案8.1.2. 代码架构图8.1.3. 配置文件在配置文件当中需要添加spring.rabbitmq.publisher-confirm-type=correlatedNONE:禁用发布确认模式,是默认值CORRELATED:发布消息成功到交换器后会触发回调方法SIMPLE经测试有两种效果,其一效果和 CORRELATED 值一样会触发回调方法,其二在发布消息成功后使用 rabbitTemplate

2021-12-25 17:24:09 1229

原创 rabbitmq(二)交换机+死信队列+延时队列

5. 交换机在上一节中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式称为 ”发布/订阅”.为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。其中我们会启动两个消费者,其中一个消费者接收到消息后把日志存储在磁盘,另外一个消费者接收到消息后把消息打印在屏幕上,事实上第一个程序发出的日志消息将广播给所有消费者5.1.

2021-12-25 17:17:03 1170

空空如也

空空如也

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

TA关注的人

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