自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 资源 (22)
  • 收藏
  • 关注

原创 面试数据库篇(mysql)- 12分库分表

垂直分库:以表为依据,根据业务将不同表拆分到不同库中。垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。特点:1,冷热数据分离2,减少IO过渡争抢,两表互不影响。

2024-02-28 16:08:24 230

原创 面试数据库篇(mysql)- 11主从同步

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。MySQL主从复制的核心就是二进制日志。

2024-02-28 15:54:56 196

原创 面试数据库篇(mysql)- 10事务中的隔离性是如何保证

解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。主要的作用是记录回滚日志,存储老版本数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。事务的隔离性是由锁和mvcc实现的。1.记录中的隐藏字段。

2024-02-28 15:42:01 197

原创 面试数据库篇(mysql)- 09undo log和redo log的区别

该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中, 用于在刷新脏页到磁盘,发生错误时, 进行数据恢复使用。undo log和redo log记录物理日志不一样,它是逻辑日志。重做日志,记录的是事务提交时数据页的物理修改,是用来。undo log可以实现事务的一致性和原子性。

2024-02-28 15:21:24 198

原创 面试数据库篇(mysql)- 08事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。ACID是什么?可以详细说一下吗?

2024-02-28 15:14:28 177

原创 面试数据库篇(mysql)- 07索引创建原则与失效及优化

1). 针对于数据量较大,且查询比较频繁的表建立索引。2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。

2024-02-28 15:01:46 160

原创 面试数据库篇(mysql)- 06覆盖索引

是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。

2024-02-28 14:35:18 156

原创 面试数据库篇(mysql)- 05什么是聚簇索引什么是非聚簇索引

回表查询。

2024-02-28 14:09:03 152

原创 面试数据库篇(mysql)- 04了解过索引吗?(什么是索引)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。B-Tree,B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key。

2024-02-28 13:59:40 140

原创 面试数据库篇(mysql)- 03MYSQL支持的存储引擎有哪些, 有什么区别

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

2024-02-28 11:28:07 142

原创 面试数据库篇(mysql)- 02定位慢查询和分析

表象:页面加载过慢、接口压测响应时间过长(超过1s)调试工具:Arthas运维工具:Prometheus 、Skywalking慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志 如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息 /var/lib/mysql/localhost-slow.log。

2024-02-28 11:18:27 146

原创 面试数据库篇(mysql)- 01开篇

数据库面试方向:

2024-02-28 10:55:42 11

原创 面试redis篇-13Redis为什么那么快

I/O多路复用是指利用单个线程来同时监听多个Socket ,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。目前的I/O多路复用都是采用的epoll模式实现,它会在通知用户进程Socket就绪的同时,把已就绪的Socket写入用户空间,不需要挨个遍历Socket来判断是否就绪,提升了性能。IO多路复用:是利用单个线程来同时监听多个Socket ,并在某个Socket可读、可写时得到通知,从而避免无效的等待,充分利用CPU资源。,增加命令转换速度,在。

2024-02-26 15:32:01 214

原创 面试redis篇-12Redis集群方案-分片集群

主从和哨兵可以解决高可用、高并发读的问题。

2024-02-26 15:16:34 231

原创 面试redis篇-11Redis集群方案-哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

2024-02-26 15:11:41 197

原创 面试redis篇-10Redis集群方案-主从复制

当然,如果在rdb生成执行期间,依然有请求到了主节点,而主节点会以命令的方式记录到缓冲区,缓冲区是一个日志文件,最后把这个日志文件发送给从节点,这样就能保证主节点与从节点完全一致了,后期再同步数据的时候,都是依赖于这个日志文件,这个就是。指的是,当从节点服务重启之后,数据就不一致了,所以这个时候,从节点会请求主节点同步数据,主节点还是判断不是第一次请求,不是第一次就获取从节点的offset值,然后主节点从命令日志中获取offset值之后的数据,发送给从节点进行数据同步。:能说一下,主从同步数据的流程。

2024-02-26 15:03:15 175

原创 面试redis篇-09redis分布式锁

Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写根据业务执行时间预估给锁续期redisson实现的分布式锁-可重入利用hash结构记录线程id和重入次数redisson实现的分布式锁-主从一致性RedLock(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n / 2 + 1),避免在一个redis实例上加锁。

2024-02-26 13:59:24 185

原创 面试redis篇-08数据淘汰策略

当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。

2024-02-26 11:04:14 169

原创 面试redis篇-07数据过期策略

假如redis的key过期之后,会立即删除吗?Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略(数据过期策略)。

2024-02-20 13:53:26 130

原创 面试redis篇-06Redis持久化

在Redis中提供了两种数据持久化的方式:1、RDB 2、AOF。

2024-02-20 10:54:13 215

原创 面试redis篇-05双写一致

当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致:分布式锁,一致性要求高方案二:异步通知保证数据的最终一致性。

2024-02-20 10:31:27 462

原创 面试redis篇-04缓存雪崩

是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。

2024-02-19 17:48:39 274

原创 面试redis篇-03缓存击穿

给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮解决方案一:互斥锁解决方案二:逻辑过期。

2024-02-19 17:41:04 265

原创 面试redis篇-02缓存穿透

例: 一个get请求:api/news/getById/1:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。

2024-02-19 10:39:08 238

原创 面试redis篇-01开篇

使用场景Redis的数据持久化策略有哪些 什么是缓存穿透,怎么解决 什么是布隆过滤器 什么是缓存击穿,怎么解决 什么是缓存雪崩,怎么解决 redis双写问题 Redis分布式锁如何实现 Redis实现分布式锁如何合理的控制锁的有效时长 Redis的数据过期策略有哪些 Redis的数据淘汰策略有哪些其他面试题Redis集群有哪些方案, 知道嘛 什么是 Redis 主从同步 你们使用Redis是单点还是集群 ? 哪种集群 Redis分片集群中数据是怎么存储和读取的 red

2024-02-19 10:22:36 319

原创 Docker网络案例

案例上述成功启动并用docker exec进入各自容器实例内部问题按照IP地址ping是OK的按照服务名ping结果???

2023-04-12 15:33:20 599

原创 Docker网络

ens33lovirbr0在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚机网卡提供 NAT访问外网的功能。 我们之前学习Linux安装,勾选安装系统的时候附带了libvirt服务才会生成的一个东西,如果不需要可以直接将libvirtd服务卸载,yum remove libvirt-libs.x86_

2023-04-12 11:28:46 433

原创 Docker微服务实战

通过dockerfile发布微服务部署到docker容器准备springboot包。

2023-04-12 11:09:40 101

原创 使用kubeadm方式搭建K8S集群

kubeadm是官方社区推出的一个用于快速部署kubernet的工具。

2023-04-11 10:26:05 400

原创 kubernetes node节点加入容器 [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forw

输入 : sysctl -w net.ipv4.ip_forward=1 就可以解决这个问题了。

2023-04-10 17:49:12 202

原创 DockerFile解析

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。构建三步骤。

2023-04-10 10:10:40 330

原创 docker集群模式下安装redis

如果遇到这个错误关闭防火墙。

2023-04-07 10:50:02 254

原创 docker安装redis集群前分区算法介绍

为了在节点数目发生改变时尽可能少的迁移数据将所有的存储节点排列在收尾相接的Hash环上,每个key在计算Hash后会顺时针找到临近的存储节点存放。而当有节点加入或退出时仅影响该节点在Hash环上顺时针相邻的后续节点。优点加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。缺点数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。

2023-03-31 10:41:32 86

原创 rinetd端口转发工具

rinetd一款简单、方便的端口映射工具,帮助开发人员可快速进行内网机器的端口映射/转发/重定向。[root@nginx rined_soft]# tar -zxvf rinetd.tar.gz #解压[root@nginx rined_soft]# make #编译[root@nginx rined_soft]# make install #安装。

2023-03-27 10:10:13 343

原创 docker安装mysql主从复制

进入/mydata/mysql-master/conf目录下新建my.cnf ,vim my.cnf。修改完配置后重启master实例,docker restart mysql-master。

2023-03-24 11:29:54 203

原创 Docker常规安装简介

把webapps.dist目录换成webapps。查看webapps 文件夹查看为空。可能没有映射端口或者没有关闭防火墙。先成功启动tomcat。

2023-03-23 17:20:10 297

原创 Docker容器数据卷

Docker挂载主机目录访问如果出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个--privileged=true参数即可如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即。

2023-03-15 10:52:09 268

原创 本地镜像发布到私有库

1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。

2023-03-14 14:25:11 196

原创 本地镜像发布到阿里云

本地镜像发布到阿里云流程镜像的生成方法docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] DockerFile将本地镜像推送到阿里云本地镜像素材原型 阿里云开发者平台 开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云 创建仓库镜像 选择控制台,进入容器镜像服务 选择个人实例 命名空间 仓库名称 进入管理界面获得脚本 将镜像推送到阿里云 将镜像推送到阿里云re

2023-03-14 10:09:07 56

原创 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:...

大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist”2、修改所有的CentOS文件内容。1、进入yum的repos目录。3、更新yum源为阿里镜像。测试是否可以yum安装。

2023-03-13 16:17:01 296

玩转算法面试 leetcode

1 算法面试到底是什么鬼? 2 面试中的复杂度分析 3 数组中的问题其实最常见 4 查找表相关问题 5 在链表中穿针引线 6 栈、队列、优先队列 7 二叉树和递归 8 递归和回溯法 9 动态规划基础 10 谈心算法 11 课程总结

2023-01-13

数据分析(业务分析,建模分析,大数据分析,数据分析专家)

第1阶段:业务数据分析师 第2阶段:建模分析师 第3阶段:大数据分析师 第4阶段:数据分析专家 第5阶段:拓展课程 第6阶段:人工智能

2023-01-12

大数据高级开发工程师自学资源

第1章 javaSE(点播) 第2章 SQL课程(点播) 第3章 开班典礼 第4章 Hadoop环境安装课程(点播) 第5章 scala语法(点播) 第7章 Hadoop 第8章 数据仓库hive 第9章 Hbase实战 第10章 大数据辅助框架 第11章 数据仓库 第12章 Zookeeper及Hadoop高可用(录播) 第13章 数据仓库项目(点播) 第14章 Scala函数式编程语言 第15章 spark 计算框架 第16章 sparkstreaming开发 第17章 深入浅出Kafka 第18章 spark源码(点播) 第19章 Spark-MLlib(点播) 第20章 spark_graphx课程(点播) 第21章 智慧出行 第22章 Flink 第23章 hadoop源码二次开发(录播) 第24章 JVM(录播) 第25章 Redis课程(点播) 第26章 JUC(点播) 第27章 kafka源码剖析(点播) 第28章 用户画像 第29章 Presto(点播) 第30章 Druid(点播) 第31章 kylin(点播) 第32章 大数据核心进阶之ELK (点播) 。。。

2023-01-12

跨年烟花代码,html+js

跨年烟花代码html+js

2023-01-11

云原生,边缘计算项目实战

1.第1章边缘计算,其实就在你身边 2.第2章边缘计算基本功--云原生 3.第3章边缘计算基础--KubeEdge架构设计及其环境搭建 4.第4章边缘计算进阶--KubeEdge高可用环境搭建 。。。。。

2023-01-11

doris数据分析教程

│ 01-课程学习目标.mp4 │ 02-Doris的简介.mp4 │ 03-Doris的核心特性.mp4 │ 04-Doris的发展历程.mp4 │ 05-OLTP和OLAP的区别.mp4 │ 06-OLAP存储引擎的分类.mp4 │ 07-Doris的应用场景和使用企业.mp4! │ 08-Doris的架构-极简架构.mp4 │ 09-Doris的安装部署-Doris编译-准备.mp4 │ 10-Doris的安装部署-Doris编译-安装.mp4 │ 11-Doris的安装部署-Doris编译-实现.mp4; │ 12-Doris的安装部署-Doris编译-导出.mp4 │ 13-Doris的安装部署-Doris部署-前置介绍.mp4 因字数限制之列一部分目录,一共78节和相关配套资源

2022-04-08

hudi知识架构拓扑图

hudi源码结构图 清晰了解每个模块功能特点

2022-04-08

数据湖架构开发Hudi 2022年

数据湖架构开发Hudi 内容包括: 1. hudi基础入门视频和资源 2. Hudi 应用进阶篇(Spark 集成)视频 3.Hudi 应用进阶篇(Flink 集成)视频 适用于所有从事大数据行业人员,从小白或相关知识提升 从数据湖相关基础知识开始,到运用实战,并且hudi集成spark,flink流行计算组件都有相关案例加深理解

2022-04-08

亿图图示专家.zip

非常实用!随便什么图,都有对应模型,直接调用即可。

2019-07-29

《Redis设计与实现》.(黄健宏).[PDF]@ckook_wrapper.pdf

本书讲解了Redis的内部机制与实现方式、Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍;展示了这些功能的核心数据结构以及关键的算法思想。

2019-07-10

Java 8实战.pdf

Java 8实战全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。全书分四个部分:基础知识、函数式数据处理、高效Java 8 编程和超越Java 8,清晰明了地向读者展现了一幅Java 与时俱进的现代化画卷。 本书的主要内容如下: 如何使用Java 8新增的强大特性 如何编写能有效利用多核 架构的程序 重构、测试和调试 怎样高效地应用函数式编程 Java 8实战目录 第一部分 基础知识 第1章 为什么要关心Java 8  2 第2章 通过行为参数化传递代码  20 第3章 Lambda表达式  34 第二部分 函数式数据处理 第4章  引入流  68 第5章 使用流  82 第6章 用流收集数据  111 第7章 并行数据处理与性能  141 第三部分 高效Java 8编程 第8章 重构、测试和调试  164 第9章 默认方法   185 第10章 用Optional取代null  202 第11章 CompletableFuture:组合式异步编程  220 第12章 新的日期和时间API  246 第四部分 超越Java 8 第13章 函数式的思考  262 第14章 函数式编程的技巧  275 第15章 面向对象和函数式编程的混合:Java 8和Scala的比较   299 第16章 结论以及Java的未来

2019-06-30

精通Spring 4.x 企业应用开发实战@www.java1234.com.pdf

精通Spring 4.x 企业应用开发实战,快速入门,ioc,Sring AOP, 事务,spring 对DAO的支持,spring Cache,等相关技术

2019-06-03

图解Spark核心技术与案例实战.pdf

以Spark 2.0 版本为基础进行编写,全面介绍了Spark 核心及其生态圈组件技术。主要内容包括Spark 生态圈、实战环境搭建、编程模型和内部重要模块的分析,重点介绍了消息通信框架、作业调度、容错执行、监控管理、存储管理以及运行框架,同时还介绍了Spark 生态圈相关组件,包括Spark SQL,Spark Streaming

2019-05-31

sense-master.rar

sense,es插件 只用于google

2019-05-27

zookeeper源码阅读

ZooKeeper源码阅读,庖丁解牛的带你进入zk的世界。ZooKeeper的类初始化 ZooKeeper在初始化的时候, 会调用类初始化方法, 初始化日志环境(使用SLF4J), 并且记录相关环境变量. 环境变量被存放在Environment的类中, 使用System.getProperty获得相应的环境变量, 内部使用Entry这个key-value的结构存放相应的环境变量名和值

2019-05-05

LINUX SHELL 脚本攻略

inux Shell脚本攻略(第3版)为高清带目录版本,大家可以自由选择下载,希望大家可以通过本书学习到自己想要的技术

2019-04-28

shell脚本100例

shell 编程100例,从简单到复杂,到最后企业实战可用的复杂脚本,非常适合初学者参考学习

2019-04-22

Spark内核设计的艺术架构设计与实现(耿嘉安)2017.12

Spark内核设计的艺术架构设计与实现,源码解析,内核架构

2019-04-12

图解Spark核心技术与案例实战.pdf 完整高清扫描版

以Spark 2.0 版本为基础进行编写,全面介绍了Spark 核心及其生态圈组件技术。主要内容包括Spark 生态圈、实战环境搭建、编程模型和内部重要模块的分析,重点介绍了消息通信框架、作业调度、容错执行、监控管理、存储管理以及运行框架,同时还介绍了Spark 生态圈相关组件,包括Spark SQL 的即席查询、Spark Streaming 的实时流处理应用、MLbase/MLlib 的机器学习、GraphX 的图处理、SparkR 的数学计算和Alluxio 的分布式内存文件系统等

2018-02-28

从零开始学Storm完整高清版

《从零开始学Storm》由基础知识、安装与部署、研发与维护、进阶知识、企业应用5个模块构成,并细分为20个章节,其中“基础知识”6章、“安装与部署”4章、“研发与维护”4章、“进阶知识”5章、“企业应用”1章,分别介绍了Storm的安装与配置、stom的基本原理、Topogy组件、Spout组件、Bolt组件、ZooKeeper集群、实战环节等内容,包括理论基础、环境搭建、研发准备、应用案例等。《从零开始学Storm》理论联系实际,通过大量实例分析,让读者在较短的时间内掌握stom的使用,搭建并研发出自己的基于Storm的大数据处理平台。

2018-01-31

数据结构与算法语言描述,裘宗燕

数据结构与算法语言描述,基于Python语言,内容体系丰富

2018-01-31

node开发实战

node实战开发,知识点全面,从环境搭建到实战演练,教你全面运用node.js

2018-01-24

python源码剖析

python源码剖析,帮助你从底层了解python,了解运行机制,方法的实现

2018-01-24

python开发实战完整书籍

python开发之战,包含python 多个知识点,知识点覆盖全面

2018-01-24

ext-2.2.rar

ExtJS 是一个很不错的Ajax 框架,可以用来开发带有华丽外观的富客户端应用,使得我 们的b/s 应用更加具有活力及生命力。ExtJS 是一个用javascript 编写,与后台技术无关的前 端ajax 框架。因此,可以把ExtJS 用在.Net、Java、Php 等各种开发语言开发的应用中。 最近我们在几个应用都使用到了ExtJS,对公司以前开发的一个OA 系统也正在使用ExtJS2.0 进行改造,使得整个系统在用户体验上有了非常大的变化

2018-01-18

jquery-3.2

实用的前段框架,jQuery,jQuery 是一个JavaScript函数库。支持HTML元素选取和操作、CSS操作、JS特效与动画、DOM处理、Ajax等。 导入jQuery就像导入一段外部js代码一样简单,可以使用MS或Google的CDN进行加载。

2018-01-18

空空如也

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

TA关注的人

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