自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (5)
  • 收藏
  • 关注

原创 java对list中map集合中某个字段排序

java list的排序

2022-06-13 10:35:52 2294 3

转载 flutter使用image_picker报错:PlatformException(already_active, Image picker is already active,null)

flutter使用image_picker报错:PlatformException(already_active, Image picker is already active,null)flutter使用image_picker报错:PlatformException(already_active, Image picker is already active,null)由于使用了flutter_boost,需要使用红框中的部分,所以不能继承FlutterActivity,然而这样,在我使用imag

2022-05-10 11:17:12 2194

原创 消息中间件——RocketMQ是什么?

RocketMQ是阿里开发的消息中间件,吸取了RabbitMQ和Kafka的优点:并发高,功能丰富,适用场景广。双十一里可以承受数亿级的高并发,主要是它的功劳。一、RocketMQ内部结构模型和概念上图就是rocketMQ的架构图,需要注意的是:每一个组件都是集群形式,因为它被开发创造的时候,就是为了解决大规模数据的生产环境下的消息发送。所以集群形式部署才是它最适合的用法。RocketMQ由以下这几个组件组成NameServer : 路由消息的提供者,他管理着broker的信息,相当于zook

2021-12-20 18:19:37 1708

原创 消息中间件——RabbitMQ是什么?

目录一、MQ简介二、RabbitMQ 简介三、RabbitMQ 的安装和配置1、安装2、配置四、spring项目中使用RabbitMQ1、生产者producer项目 :2、消费者consumer项目:五、补充一、MQ简介MQ:全称是MessageQueue,消息队列。在两个系统中间传递消息,从而满足一些业务需求,它对我们总体架构的作用有:解耦:提高系统容错性和可维护性异步:提升用户体验和系统吞吐量削峰:提高系统稳定性常用的MQ产品包括Kafka、RabbitMQ和RocketMQ。我们对这

2021-12-11 20:55:37 2075

原创 Redis从使用到源码剖析

最近深入的学习了一下Redis ,在此记录一下。Redis在互联网企业中是非常常用的技术,因为它是基于内存的数据库,可以承受上万的并发请求。 而 普通硬盘的数据库可以承受的读写并发只有几百。一、redis的数据结构和常用命令五种数据结构字符串string哈希hash列表list集合set有序集合zset常用命令推荐一个Redis命令很全的中文参考网站,而且有详细的命令介绍和使用示例。http://redisdoc.com/#下面,我列出一些常用的命令:1.字符串string常

2021-12-06 16:59:16 2128 1

原创 Spring从源码层面剖析——下

前言这次写的内容,是接着上次的博客Spring从源码层面剖析——上因为spring源码有几万行,即使只看核心代码,也要看很久,所以分两次来学习记录。AOP接着上次看Spring的AOP,看它是怎么创建bean对象。根据上次debug看程序的执行流程,我们知道了spring已经把几个后置处理器类 ( xxxPostProcessor)和我们定义的配置类(MainConfig)注册成了bean定义(BeanDefinition)。 我们看到了核心方法 refresh(),然后进一步跟到了一个方法pro

2021-11-27 15:06:54 581

原创 Spring从源码层面剖析——上

一、前言作为一名普通的Java开发者,面对项目组的不同需求, 几乎每天的工作都只是:基于spring框架上做着CURD(增删改查)。 在做CURD 的时候,更是把CV(复制粘贴)大法也练得炉火纯青。因为要更快的完成工作安排 ,所以我们只会注重那个功能是否实现,这个接口是否调通。每天沉浸在spring肤浅的使用上,时间久了却忘了初心。忘了去思考,它为何可以调通,为何可以实现这样那样的功能。久而久之 我们跟spring成了最熟悉的陌生人。今天就从源码层面,深入学习一下spring。Spring 最重

2021-11-21 19:15:03 581

原创 flutter在IOS上的登录实现——QQ登录、微信登录、自动识别手机号一键登录、apple登录

开发背景:我们在使用flutter开发的时候,第一版都基于安卓设备开发的,所以登录功能,也都只适配了安卓设备。第一版完成后,就由我适配在IOS设备上的登录模块,因为安卓的登录模块不是我开发的,所以修改别人的代码,还尽量不影响原先的逻辑着实让我头疼。 呕心沥血完成后,赶紧做个记录。我们APP登录方式很多:QQ登录、微信登录、自动识别手机号一键登录、手机号验证码登录、apple登录除了手机号验证码登录,其他4种方式我都得重新适配。一、QQ登录使用的第三方库:tencent_kitgit地

2021-11-11 21:28:27 7692

原创 前端——从html到flutter的前端之路

最近接触了好多前端平台和技术,想来记录一下。Web: html+css+js+jquery , AngularJS, vue.js。微信小程序、安卓联盟的快应用、字节小程序、flutter技术。作为一个后端开发者,花费了较多精力在这些前端领域的技术上,有一丢丢不务正业的负罪感。感谢 “快应用”快应用:快应用是国内的各大安卓厂商联合研发的一个无需下载安装的应用。想说的话:感谢"快应用"让我有了写技术博客的初始念头。在我开发快应用项目的时候,网上的资料很少,开发社区一点都不活跃,经常遇到一

2021-11-01 18:22:22 4922 4

原创 Java的并发编程涉及到知识点总结

Java的并发编程涉及到知识点总结一、JMM模型二、volatile关键字三、synchronized原理详解四、AQS五、BlockingQueue六、 Semaphore七、CountDownLatch八、CyclicBarrier九、Atomic十、Unsafe十一、HashMap十二、ConcurrentHashMap十三、线程池概念十四、线程池—ThreadPoolExecutor十五、定时线程池—ScheduledThreadPoolExecutor十六、什么是 Fork/Join 框架?十七、

2021-10-16 18:59:28 992

原创 Java中的位运算(移位、 与&、或|、异或^、非~) 口诀记忆

位运算就是,把数转换为 二进制后,针对二进制上 每个位 按照一定规则进行变换,形成新的二进制数。????为了方便记忆,我总结了几个口诀:数转二进制,按位来运算,左移零补位,右移看正负,无符号右移,皆用零补位,运算符牢记,与或异或非& 与与:两方是一,我取1| 或或: 只要有一,我取1^ 异或:两方相异,我取1~ 非非:管你零一,我取非所有的解释和示例都写在了代码里: public class test { public static void main(Stri

2021-09-30 14:53:50 1098

原创 Mysql——内部结构了解

Mysql——内部结构详解一、结构概况二、连接器三、查询缓存四、分析器五、优化器六、执行器七、bin-log归档一、结构概况MySQL大概来讲分为两大层:service层 和 引擎层service层:主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。引擎层: 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、

2021-09-17 19:02:01 209

原创 Mysql——索引底层数据结构与Explain用法

Mysql——索引底层数据结构与Explain用法一、索引底层数据结构1、Mysql不同引擎对应的数据结构2、B+Tree数据结构2.1、 二叉树 (Binary Search Trees)2.2、 红黑树(Red-Black Trees)2.3、 B-Tree2.4、 B+Tree二、Explain用法1、Explain工具介绍2、Explain分析2.1、explain 两种扩展2.1.1 、explain extended2.1.2 、explain partitions2.2、explain中每个列

2021-09-11 16:49:33 201

原创 JVM调优——3、JVM调优命令及工具

JVM调优工具写在前面的话:一、调优时基础命令1.1 Jmap (java内存信息、实例个数以及占用内存大小)(1)命令: jmap -histo 2272 > ./log.txt(2)命令: jmap -heap 2272(3)命令: jmap ‐dump:format=b,file=xxxx.hprof 22721.2 jatack (查线程信息)(1) 命令:jstack 2272(2)通过jstack命令 找出占用cpu最高的线程堆栈信息1.3 Jinfo (查jvm参数信息)

2021-08-15 14:27:24 491

原创 JVM调优——2、垃圾收集器详解

JVM调优——2、垃圾收集器详解一、垃圾收集算法1.1分代收集理论1.2垃圾收集算法:1.2.1标记-复制算法1.2.2 标记-清除算法1.2.3 标记-整理算法二、垃圾收集器2.1Serial收集器2.2 Parallel Scavenge收集器2.3 ParNew收集器2.4 CMS收集器2.5 G1收集器2.6 ZGC收集器(-XX:+UseZGC)一、垃圾收集算法1.1分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,

2021-07-25 13:27:16 170

原创 JVM调优——1、基础结构和机制

JVM调优——1基础结构JVM类加载机制JVM类加载机制我们在开发工具中完成编码 => 编译成 .class 后缀的文件 => 然后通过jvm虚拟机执行.class文件,就可以得到我们想要的结果了。那主要聊聊 jvm第一步是怎么加载到这个.class文件的呢?一句话概括就是通过jvm中不同的类加载器,来最终完成.class的加载。java中的类加载器有:引导类加载器:加载安装JRE的lib目录下的核心类库扩展类加载器:加载安装JRE的lib目录下的的ext扩展目录中的类库

2021-07-25 12:15:32 216

原创 Spring常用注解

我们在用spring框架的时候,常常会用到注解。可是一个项目做久了,就只在那里复制粘贴了。前两天在街上有人问我:处理请求地址映射的注解是哪个。 我当时觉的好简单,我每天都在用,却不会拼写,因为每天都在复制粘贴。来总结一下Spring常用的注解吧:组件:@Controller用于标注控制层组件用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Servi

2021-07-06 17:10:02 88

原创 爬虫篇——新浪新闻的详细采集过程(列表新闻和新闻内容)

腾讯新闻、新浪新闻的详细采集过程一、新浪新闻采集1.按分类采集新浪的列表新闻分析过程:代码编写:代码执行:2.采集新浪新闻内容分析过程代码编写:执行效果:二、腾讯新闻采集一、新浪新闻采集1.按分类采集新浪的列表新闻分析过程:用浏览器打开新浪新闻的网页版,进入一个分类如:娱乐-明星 分类 https://ent.sina.cn/star/index.d.html?vt=4按F12 打开浏览器 的开发者工具,打开Network 查看页面请求的 数据连接(抓包)。 滑动新闻列表,分析找到传输新

2021-07-05 11:04:33 5044

原创 爬虫篇——腾讯新闻的详细采集过程(列表新闻和新闻内容)

腾讯新闻、新浪新闻的详细采集过程一、腾讯新闻采集1.按分类采集腾讯新闻列表分析过程:具体代码:2.采集腾讯新闻内容分析过程具体代码一、腾讯新闻采集1.按分类采集腾讯新闻列表分析过程:采集的网页地址:https://xw.qq.com/?f=c_news2.先进入一个分类(娱乐)来分析数据如何传输的通过在娱乐分类页面里,向下滑动新闻加载更多数据,同时 利用chrome的Network可以发现有一个加载下一页的url接口: https://pacaio.match.qq.com/xw/sit

2021-07-02 18:29:12 4455

原创 一篇认识 Elasticsearch

一篇认识 Elasticsearch一、什么是Elasticsearch1.简介2.使用案例3.跟solr的比较二、深入了解1.核心概念2.Elasticsearch与Mysql数据库的比较3.存入、搜索、容错原理图示:倒排索引原理:单node环境下创建index:两个node环境下创建index:容错恢复机制:数据写入存储流程:存入和搜索机制:一、什么是Elasticsearch1.简介Elasticsearch 是在 Apache Lucene 上构建的开源 RESTful 分布式搜索和分析引擎。

2021-06-25 13:37:48 107

原创 Kafka 实战

Kafka 实战一、kafka集群的安装与搭建1.1 kafka下载1.2 服务器准备1.3 解压安装包1.4 修改配置文件1.5配置环境变量1.6启动集群1.7kafka的命令行的使用创建topic查看所有的topickafka的消息发送kafka消息的消费使用zk来连接集群二、kafka的API使用第一步:创建maven工程,导入jar包第二步:kafka的生产者API第三步:kafka的消费者的API三、kafkaManager管理工具的使用一、kafka集群的安装与搭建1.1 kafka下载下

2021-06-22 18:08:17 516

原创 一篇认识kafka

一篇认识kafka1. Kafka是什么?2.Kafka能帮我解决什么?3.kafka与activeMQ的区别activeMQ主要是基于一种pub和sub的架构,服务端主动推送消息给订阅者(发布订阅模型)。 JMSkafka是基于push和poll的过程,生产者主动把消息发送到kafka集群当中,消费者主动从kafka集群中pull消息(主动拉取的行为)4.kafka与RabbitMQ的区别4.1、在架构模型方面4.2、在吞吐量4.3、在可用性方面4.4、在集群负载均衡方面5、 kafka的架构模型5.1

2021-06-21 11:14:13 162

翻译 Zookeeper 实战

Zookeeper 手摸手实战一、安装部署1.1分布式安装部署1.2客户端命令行操作二、API应用2.1 环境搭建2.2 创建ZooKeeper客户端2.3 创建子节点2.4 获取子节点并监听2.5 判断znode是否存在三、案例实战监听服务器节点动态上下线案例一、安装部署1.1分布式安装部署集群规划:首先要有三台服务器节点,可以是用vmware软件来生成虚拟服务器。命名为: hadoop102、hadoop103和hadoop104,在这三个节点上部署Zookeeper。解压安装解压

2021-06-18 14:33:57 283

翻译 一篇认识 Zookeeper

这里写目录标题一 、Zookeeper概述1.1概述1.2特点1.3 数据结构1.4 应用场景1.4.1 统一命名服务1.4.2 统一配置管理1.4.3 统一集群管理1.4.4 服务器节点动态上下线1.4.5 软负载均衡二、Zookeeper安装2.1 本地模式安装部署2.2 配置参数解读三、Zookeeper内部原理3.1 选举机制3.2 节点类型3.3 stat结构体3.4 监听器原理3.5 写数据流程一 、Zookeeper概述1.1概述Zookeeper是一个开源的分布式的,为分布式应用提供协

2021-06-17 17:02:21 109

原创 反编译微信小程序 亲测成功 补充解决常见问题 (详细最新教程)

网络上相关文章良莠不齐,随时间的流逝或许随着微信的更新,有出现编译不成功的现象。我这里总结一下我最新的编译过程。可成功获得小程序源码。1、环境准备和工具下载反编译需要 nodejs的环境下载链接:https://nodejs.org/en/安装后将nodejs设置为环境变量。打开cmd,测试是否安装成功:在命令行输入node -v 出现版本号说明已经安装成功。下载用于反编译的工具 wxappUnpacker链接:https://pan.baidu.com/s/1O2WF2YKG8yc7n

2021-06-15 16:48:50 7421 17

原创 sql 数据库的优化【经验贴】

所谓数据库的优化,就是要实现: 执行sql语句时要 耗最小的性能、最短的时间1.正确创建索引对于那些查改频繁且数据量较大的表(>50万条数据的表)索引的创建,可以极大的优化sql的执行效率,是我们优化数据库最常用的方法。除了要了解那些常见的索引分类:主键索引、唯一索引、聚集索引、非聚集索引这里我主要想讲一下 联合索引(或者叫多列索引) :应对场景:在实际工作中,对于一个承载着业务核心的表,它除了数据条数多之外,而且会有很多列。 对于这样核心的表,我们又频繁的有查询修改操作。查询的时候 往往

2021-06-10 17:19:33 858

原创 推荐几款好用的Chrome插件,码农的利器。

推荐几款好用的Chrome插件,在插件市场有着优秀的排名,且都是四星+评价, 用户都在10W+。插件用的好,开发效率将会提高数倍。一、JSON-handleJSON-handle 安装后,不需要做任何操作。 当浏览器打开链接时,如果是json格式的接口。可以看到美化格式后的数据。 (虽然 FeHelper(前端助手) 插件 也有这个功能,但是没这个好用)效果:二、FeHelper(前端助手)FeHelper(前端助手) 有强大丰富的功能 看下图,安装好后,需要什么功能在设置里安装就可。

2021-06-04 19:14:51 617

原创 爬虫篇——采集单机游戏(网页游戏),爬取小游戏

接到需求,要求要将几个好玩的网页版本的单机小游戏。采集到我们的服务器中。这里以 水枪射手 这个游戏举例http://m.7k7k.com/player/198961.htm?uc_biz_str=qk_enable_gesture%3afalse|OPT%3ABACK_BTN_STYLE%400%7COPT%3ATOOLBAR_STYLE%4011、首先准备好抓包工具或者直接在用浏览器自带的抓包,推荐用抓包工具可以批量复制抓到的资源链接。如chrome浏览器:fiddler抓包工具:2、抓

2021-06-01 19:33:08 19218 3

原创 JAVA——list子集为map时常用的一些操作方法

在开发中,我们会用到List集合去传递参数,较为常用的方式是List携带子集map。List<Map<String, String>> myList = new ArrayList<Map<String, String>>();我们常常会根据需求对List做一些操作,除了常用的Add()方法,我们也可能用到一些排序、删除的方法。后面是详细的示例,这里先列出关键方法的代码:1.按Map元素中子元素的值来排序ListCollections.sort(m

2021-05-25 15:33:17 426

原创 快应用- 丰富的快应用动画组件库

推荐一组丰富的动画组件库,专为快应用开发的,具有丰富的动画效果组件可以选择,而且使用起来非常方便。组件文档地址:https://vivoquickapp.github.io/qa-animation/动画效果在网页一览无遗,便于找到自己想要的效果。部分动画效果预览: 在页面点击任意动画组件,即可获得对应的代码,复制到自己的项目里就可以直接使用。...

2021-05-24 18:15:27 383

原创 快应用-华为市场快应用审核总是不通过,无法复现华为审核时的bug【经验贴】

最近完成了一个快应用项目,在提交各个市场审核的时候,除了华为市场总是不过,其他市场(vivo/oppo/小米 等)都很快通过了审核。最让人恼火的是,华为反馈的bug内容 我们尝试各种方法都无法复现,无法复现bug就很难定位修改。修改bug全靠猜,就这样我们提交了5次,5次都被拒绝。我通过各种途径,终于联系到了华为快应用技术人员,得知他们有自己的快应用开发工具和应用加载器,调试的话需要使用华为的快应用加载器!这就意味着开发一套快应用:开发工具要用两个,调试器也得两个。一个是快应用联盟的,一个是华为的

2021-04-27 10:46:55 2195 3

原创 auto.JS 是什么?如何使用? 【图文讲解】

一.了解auto.JSauto.js是安卓平台上的JavaScript自动化工具,操作方便简单、容易上手、不需要root权限,功能强大。是由国内的一名开发者(作者: 牙叔)开发的。官方网址:https://hyb1996.github.io/AutoJs-Docs/#/可以做什么?在手机上,可以实现自动点击、滑动、输入文字、打开应用等等。比如我喜欢在支付宝中的蚂蚁森林里收集好友的能量,每天重复一样的操作很费时间精力。于是我就可以编写一个javascript脚本,运行在auto.js软件中。它就可

2021-04-23 15:49:26 56488 19

原创 快应用- 输入验证码精美效果的实现

按设计要求要有四个框来展示要输入的验证码。绞尽脑汁完成。实现效果如下:代码(完整代码,可以直接用):

2021-04-21 18:44:32 224

原创 Java—将webp格式图片转为jpg或png (windows)

目的webp格式是谷歌研发的一种新的图片格式具有空间小效果好的优点,然而像IOS14系统以下并不支持这样的格式,所以需要我们后端来转成jpg或png格式。方法起初我尝试引入 webp-imageio.jar 来完成(很多文章中提到的方法)结果执行后报错:java.lang.IllegalArgumentException: image == null!java.lang.IllegalArgumentException: image == null! at javax.imageio.Imag

2021-04-21 17:58:22 2251

原创 快应用-在快应用中接入友盟统计

友盟接入快应用最新开发文档(快应用SDK 2.0.0版)https://developer.umeng.com/docs/66632/detail/92733刚开始我在 “快应用SDK 1.0.5版” 的开发文档里,找了好久的SDK包的下载入口,一直找不到。后来才发现它有另一个文档SDK2.0才能用 o(╥﹏╥)o。这里我不再赘述接入的具体方法,友盟的开发文档讲的很详细。需要注意的是:1.快应用在友盟里归类到了安卓分类;2.快应用的友盟统计,也可以统计每个渠道的多个维度的数据(设备厂商),不用

2021-04-21 16:55:46 582

原创 快应用-Canvas实现尺子左右滑动的效果

完成效果:在web页面中,如果我们要实现左右滑动的效果,只需要在css中写上:overflow: hidden;overflow-x: scroll;就可以达到效果。但是在快应用中,不支持overflow命令。所以这里用canvas画图来实现,左右滑动的效果核心代码:<div show="{{showRule}}" class="cover" @click="hideRule"></div> <!-- 食物选择尺寸 -->

2021-04-20 17:19:44 1019

原创 快应用-实现添加购物车的动画效果

因为在快应用中,有些方法不支持,所以实现起来比较受限制。我写了一个简易的效果。未用到贝塞尔曲线,想做的效果更完美的话可以花时间尝试一下。实现后的效果:核心实现代码:template :<template> <div> <!--红点的元素--> <div class="fly" show="{{showfly}}" style="{{positonStyle}}"></div> </div></t

2021-04-19 10:47:12 246 2

原创 快应用- 一套丰富完整的第三方组件库apex-ui

推荐一个专为快应用开发的 非常丰富的第三方组件库是由vivo平台开发的apex-ui (https://vivoquickapp.gitee.io/apex-ui-docs)这个组件库,几乎可以满足 在开发中所用到的页面形式及效果。组件的动画交互效果也很不错。其中包括:日历、弹出框、对话框、下拉框、提示框、进度环、提示消息、手风琴、标签栏、分段器、分页器、图标库、按钮、图表库 等等。尤其是图表组件,有多种样式可以选择,而且 可以灵活的自定义图表中的模块。我截了部分图,如下:

2021-04-15 14:53:22 1266 2

原创 js中 list的合并、list元素的移除添加、list元素的去重

list的合并: concat var arr1=['a','b','c','d','e'] var arr2=['1','2','3','4','5'] arr1.concat(arr2); // ["a", "b", "c", "d", "e", "1", "2", "3", "4", "5"]list的添加: push var arr1=['a','b','c','d','e'] arr1.push('k'); console.log(arr1); // ["a", "b", "

2021-04-07 09:28:12 16045 4

原创 快应用-扩展组件-(官方示例代码运行后的 图示效果)四

快应用-扩展组件-(官方示例代码运行后的 图示效果)四官方文档中仅有示例代码,但没有示例效果图,要看组件的效果 需要将示例代码运行在 开发工具中,比较麻烦,这里将运行后的组件示例代码效果 整理成GIF图,可以高效的找到需要的组件。其他组件drawerrefresh2section-listslide-view官方文档中仅有示例代码,但没有示例效果图,要看组件的效果 需要将示例代码运行在 开发工具中,比较麻烦,这里将运行后的组件示例代码效果 整理成GIF图,可以高效的找到需要的组件。其他组件drawer

2021-04-02 18:08:19 159 1

libwebp-0.4.2-windows-x64.zip

webp格式转jpg或png

2021-04-21

nginx日志按时间切割.zip

nginx日志按时间切割脚本 (bat文件)

2021-04-16

auto.js 自动化抖音脚本

auto.js 自动化抖音脚本

2021-04-08

cwRsync_4.0.5服务端和客户端及使用教程.zip

cwRsync_4.0.5 for windows。针对windows的同步文件程序。有: 服务端安装程序和客户端安装程序及使用教程

2020-05-07

jpcap Demo以及dll文件.zip

这里整理了一下:64位的Jpcap.dll和jpcap的使用demo!不需要昂贵的积分。完美解决Jpcap.dll不配套导致的setRoutingOption方法的异常

2020-01-10

空空如也

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

TA关注的人

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