自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 14. Helm2&3的使用

文章目录Helm介绍Helm部署Helm自定义Chart模板Helm的Debug该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除需要注意的是,这套尚硅谷教学视频中使用的是helm2的版本,本人所用的是k8s 1.18版本,与helm2不兼容,后续安装的是helm3的版本,所以blog中会涉及到关于helm2和helm3的一些内容,有区别之处都会作特别说明Helm介绍Helm官方网址:https://helm.sh/zh/docs/int

2022-04-20 21:01:29 631

原创 13. 集群安全

文章目录K8S安全机制说明Authentication 认证HTTPS 证书需要认证的节点两种类型安全性说明证书颁发KubeconfigServiceAccountSecret 与 SA 的关系Authorization 鉴权RBAC 授权模式RBAC 的 API 资源对象说明Role and ClusterRoleRoleBinding and ClusterRoleBindingResourcesto Subjects==实践:创建一个名为devuser的用户,只能管理 dev namespace下的

2022-04-19 16:34:07 471

原创 12. 集群调度

文章目录简介调度过程自定义调度器调度亲和性Node亲和性preferredDuringSchedulingIgnoredDuringExecutionrequiredDuringSchedulingIgnoredDuringExecution合并(软硬策略同时存在)Pod亲和性软硬策略示例Taint&Toleration(污点和容忍)Taint污点Taint的组成设置、查看和去除TaintToleration容忍当不指定 key 值时,表示容忍所有的污点 key当不指定 effect 值时,表示容忍

2022-04-18 15:43:08 949

原创 11. k8s存储-PV&PVC

文章目录PersistentVolume (PV)静态PV动态PVPersistentVolumeClaim (PVC)绑定持久化卷声明的保护持久化卷类型PV 访问模式回收策略状态持久化演示说明 - NFS1. 安装 NFS 服务器2. 部署 PV3. 创建服务并使用pvc该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除PersistentVolume (PV)PersistentVolume (PV) 是由管理员设置的存储,它是集群的一部

2022-04-18 11:24:33 406

原创 10. k8s存储-volume

文章目录Volume介绍类型emptyDirhostPathemptyDir 和 hostPath 在功能上的异同分析该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除Volume介绍​ 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃 时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在 Pod 中同时运行多个容器时,这些容

2022-04-18 11:22:57 145

原创 9. k8s存储-secret

文章目录Secret介绍Service AccountOpaque SecretⅠ、创建说明Ⅱ、使用方式1、将 Secret 挂载到 Volume 中2、将 Secret 导出到环境变量中kubernetes.io/dockerconfigjson该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除Secret介绍Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Sec

2022-04-18 11:21:11 187

原创 8. k8s存储-configMap

文章目录ConfigMap介绍创建configMap使用目录创建使用文件创建使用字面值创建Pod中使用configMap使用configMap代替环境变量用 ConfigMap 设置命令行参数通过数据卷插件使用ConfigMapConfigMap热更新该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除k8s中提供了几种存储类型,configMap,Secret,volume,persistent volumeConfigMap介绍Conf

2022-04-18 11:20:25 1112

原创 7. Ingress

文章目录Ingress原理介绍Ingress-Nginx安装ingress-nginx控制器部署ingressingress http代理访问ingress https代理访问Nginx 进行 BasicAuth配置 ingress nginxnginx实现重写Ingress这篇blog关于ingress讲解的不错:k8s ingress原理及ingress-nginx部署测试图解 Kubernetes Ingress原理介绍之前所提到的svc仅支持4层负载均衡,也就是说只能通过ip+po

2022-04-18 11:19:44 2369

原创 6. K8S中的Service

文章目录Service(SVC)概念SVC类型概述VIP (Virtual IP)和 Service 代理代理模式的分类userspace 代理模式iptables模式ipvs模式SVC类型详解ClusterIPHeadless ServiceNodePortLoadBalancerExternalName该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除Service(SVC)老样子,先说下svc产生的背景:之前所介绍的资源控制器还存在

2022-04-18 11:18:43 2534

原创 YAML文件格式

文章目录基本语法YAML 支持的数据结构对象类型:对象的一组键值对,使用冒号结构表示数组类型:一组连词线开头的行,构成一个数组复合结构:对象和数组可以结合使用,形成复合结构纯量:纯量是最基本的、不可再分的值。以下数据类型都属于纯量字符串该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除基本语法缩进时不允许使用Tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可用’#'标识注释,从这个字符一直到行尾,都会被解释器忽

2022-04-15 18:37:39 620

原创 5-2. DaemenSet&Job、Cron Job

文章目录DaemonSetJob、Cron Job该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除DaemonSet在简书上找到一篇关于DaemenSet的比较好的介绍简书 DaemonSet服务守护进程,它的主要作用是在Kubernetes集群的所有节点中运行我们部署的守护进程,相当于在集群节点上分别部署Pod副本,如果有新节点加入集群,Daemonset会自动的在该节点上运行我们需要部署的Pod副本,相反如果有节点退出集群,Da

2022-04-15 18:36:08 422

原创 5-1. RS&Deployment

文章目录RSDeployment部署/使用扩容更新回滚该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除RSRS模板示例apiVersion: extensions/v1beta1kind: ReplicaSetmetadata: name: frontendspec: replicas: 3 selector: matchLabels: tier: frontend# 这里的template字段下的

2022-04-15 18:35:05 2336

原创 5. 资源控制器概述

文章目录控制器控制器类型ReplicationController(已弃用) 和 ReplicaSetDeploymentDaemonSetJob、Cron JobStateFulSetHorizontal Pod Autoscaling该文档内容主要来源于尚硅谷K8S教学视频课件尚硅谷(学习过程中部分内容参考其他blog进一步理解,参考blog链接在文中已给出)仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除控制器  Kubernetes 中内建了很多 controller(控制器

2022-04-15 18:33:24 300

原创 4. POD生命周期

文章目录Pod生命周期Pod生命周期概述Init C容器探针Start/StopPod Status该文档内容来源于尚硅谷K8S教学视频课件尚硅谷仅用于知识整理,便于后续巩固复习,如有侵权,请联系本人删除Pod生命周期Pod生命周期概述比如运行了一个pod,该pod中有两个容器,这两个容器还在,但是容器中的进程已经死亡/中断,由于某种原因容器并没有退出,造成pod还处于running状态,但实际上服务已经不可用了。这种情况下该如何纠查?因此需要了解一下容器及pod的生命周期  当创建p

2022-04-15 18:30:45 620

原创 3. K8S集群安装及资源介绍

文章目录1. k8s集群安装2. K8S中的资源介绍2.1 资源简介2.2 资源清单资源清单格式资源清单的常用命令通过定义清单文件创建 Pod1. k8s集群安装  一种是通过Play with K8S网站,在线体验k8s集群的使用,无需自行安装虚拟机及相关镜像文件。具体过程可参考:在线免费搭建k8s集群体验  另一种通过在虚拟机上自行安装多个系统并进行配置,其中可能会遇到多个虚拟机之间的网络通信问题等,主要可参考Blog①和②,在虚拟机上搭建k8s集群主要参考Blog③和④ ,本人使用的是CentO

2022-04-15 16:44:55 321

原创 2. Pod概念、网络通讯

文章目录1. K8S为何将Pod作为最小调度单元2. Pod概念介绍2-1.Pod控制器介绍3. 网络通讯3-1. 同一个Pod内的容器之间的通信3-2. Pod之间的通信3-2-1. 同一主机节点的pod之间的通信3-2-2. 不同主机节点的pod之间的通信3-3. Pod与Service之间的通信3-4. Pod与外网之间的通信3-5. 外网访问pod文中有理解不到位的地方,恳请各位同行指正,感激不尽。该系列blog内容主要参考b站尚硅谷k8s的教学视频。参考:K8S最小调度单位Pod详解

2022-04-02 20:59:38 1570

原创 1. K8S简介及结构

文章目录1.K8S简介1-1.Brog系统结构1-2.K8S系统结构1.K8S简介Kubernetes(K8S)是自动部署、扩展、管理“容器化应用程序”的开源系统,旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”,支持一系列容器工具,包括docker。(摘自维基百科)在正式开始k8s的相关介绍之前,我想我们可以先去思考以下这些问题(当然,大佬可直接略过,本人小白一枚)简单的说,Kubernetes是用来管理容器的,那为什么要容器化呢?容器化的优势体现在哪里?为什么容器化后需要使用ku

2022-04-02 20:55:03 1187

原创 4.深度强化学习------PPG(Phasic Policy Gradient)算法资料+原理整理

文章地址:PPG:Phasic Policy Gradient一. PPG资料PPG相关BLOG①PPG相关Demo(PyTorch版)二. PPG原理简述2.1 背景PPG是一种相对于PPO来说,提升sample efficiency的算法。  传统on-policy actor-critic方法,可通过共享网络或单独的网络来分别表示policy和value function:用单独的网络分别表示policy和value function的好处是可以避免训练目标之间的干扰;用共享网络的方

2022-03-15 16:37:10 3628

原创 3.深度强化学习------PPO(Proximal Policy Optimization)算法资料+原理整理

文章地址:PPO: Proximal Policy Optimization Algorithms一. PPO资料PPO原理讲解BLOG①:这篇blog详细讲了PPO算法的产生过程及原理,包含部分理论推导,看完这篇blog基本就理解PPO了。PPO原理讲解BLOG②:可参考,其中包含部分tensorflow实现代码。二. PPO原理简述2.1 背景PPO是基于基本的Policy Gradient进行改进的算法,关于PG的更新过程这里不详细描述了,可以根据上述BLOG①或其他资料或下面的图片推导

2022-03-14 14:39:00 11354

原创 联想Y7000P重装Ubuntu16.04.7系列教程(Nvidia GeForce RTX 2060/driver Version 460.67/CUDA11.2/CUDNN8.1.1)

文章目录联想Y7000P 2020H重装Ubuntu16.04.7系列教程(Nvidia GeForce RTX 2060/driver Version 460.67/CUDA11.2/CUDNN8.1.1/Python3.6.5/Pytorch1.9+cu111)一、重装Ubuntu16.041.彻底删除ubuntu EFI分区及启动项2.安装ubuntu系统2.1 准备好ubuntu16.04.7镜像文件2.2 下载软件制作系统启动盘2.3 安装ubuntu系统二、Ubuntu16.04.7安装基本软件

2021-09-01 20:10:25 2271 2

转载 MyBatis学习--完整教程

文章目录MyBatis1、简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis2、第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码3、CURD1. namespace2. select3. Insert4. update5. Delete6. 万能Map7. 模糊查询4、配置解析1. 核心配置文件2. 环境配置 environments3. 属性 properties4. 类型别名 typeAliases5. 设置 Settings6. 其

2021-08-17 10:38:53 1746

转载 SpringBoot2学习笔记四--YAML配置文件

该文本笔记 来源于**尚硅谷:SpringBoot2文本教程(代码部分大多数为笔者个人实践所写)一方面为了缩短做笔记的时间,另一方面也为了后续巩固复习时方便。直接在尚硅谷官方笔记上进行标注个人认为需要关注的点。如需转载请务必注明笔记文本来源于尚硅谷教学课程。1、配置文件1.1、properties1.2、yaml1.2.1、简介YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet A

2021-08-05 14:59:47 140

转载 SpringBoot2学习笔记三--了解自动配置原理

**该文本笔记来源于尚硅谷:SpringBoot2文本教程(代码部分大多数为笔者个人实践所写)一方面为了缩短做笔记的时间,另一方面也为了后续巩固复习时方便。直接在尚硅谷官方笔记上进行标注个人认为需要关注的点。如需转载请务必注明笔记文本来源于尚硅谷教学课程。《SpringBoot学习笔记三–了解自动配置原理》1、SpringBoot特点1.1、依赖管理父项目做依赖管理依赖管理 <parent> <groupId>org.springframewor

2021-08-05 14:56:13 163

转载 SpringBoot2学习笔记二--SpringBoot2入门

该文本笔记 来源于 ** 尚硅谷:SpringBoot2文本教程(代码部分大多数为笔者个人实践所写)一方面为了缩短做笔记的时间,另一方面也为了后续巩固复习时方便。直接在尚硅谷官方笔记上进行标注个人认为需要关注的点。如需转载请务必注明笔记文本来源于尚硅谷教学课程。1、系统要求Java 8 & 兼容java14 .Maven 3.3+idea 2019.1.21.1、maven设置<mirrors> <mirror> <id&gt

2021-08-05 14:47:05 86

转载 SpringBoot2学习笔记一--Spring与SpringBoot2

该文本笔记 来源于尚硅谷:SpringBoot2文本教程一方面为了缩短做笔记的时间,另一方面也为了后续巩固复习时方便。直接在尚硅谷官方笔记上进行标注个人认为需要关注的点。如需转载请务必注明笔记文本来源于尚硅谷教学课程。一. Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生态https://spring.io/projects/spring-boot覆盖了:web开发数据访问安全控制分布式消息服务移动开发批处理…1.

2021-08-05 14:44:49 1304

原创 Mock脱离数据库+不使用@SpringBootTest

SpringBoot项目中写单测时,通常要启动Spring等环境,为了测试一个简单的代码模块都要加载一大堆环境,导致测试速度慢。单元测试应小而轻,提高测试效率,较少对外部的依赖,比如数据库、Spring容器、网络服务等,而只关心我们自己的代码,通过Mock来解决对外部的依赖。如何优化单元测试方法呢?1.不使用@Autowired,就是这个注解启动了Spring。在启动Spring IOC容器时,容器会自动装载一个AutowiredAnnotationBeanPostProcessor后置处理器,

2021-08-05 10:31:05 1511

原创 SpringBoot整合MyBatis做单测(不需要启动SpringBoot)

1.首先要引入相关的依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter-test</artifactId> <version>1.3.4</version> </depen

2021-08-05 10:18:48 1654

原创 JAVA SpringBooot 借助AOP自定义注解

文章目录1、LogTodos文件2、LOGTODO注解3、 定义Aspect函数参考资料写在前面:借助springboot aop写了一个Logtodo注解,用于输出程序中打了该注解的类及其对应的方法名称,以及所标注的注解的内容。写该注解的目的是为了防止在程序编写过程中由于代码量太多,过程中会打很多todo,导致最后可能被遗忘。(然而,idea中有提供了TODO功能可以查看,不过无所谓了,就当练习一下自定义注解的编写方式了)1、LogTodos文件这部分是为了后续做重复注解使用package

2021-08-05 10:12:38 107

原创 Spring学习笔记二

三. JdbcTemplate1.基本概念Spring框架对Jdbc进行了封装形成了JdbcTemplate,使用它可以很方便的对数据库进行操作。准备工作:首先要引入相关依赖包<!--引入依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>.

2021-08-03 20:06:02 418

原创 Spring学习笔记一

B站视频教学一·Spring框架概述1. 概念Spring是一个轻量级的开源的JavaEE框架。Spring用来解决企业应用开发的复杂性。Spring的两个核心部分:IOC(控制反转),AOP2. 特点方便解耦,简化开发(借助Spring提供的IOC容器,将对象之间的依赖关系交给Spring管理)AOP编程的支持,在不改变源代码的前提下增加新的功能便于程序测试便于集成其他框架降低JAVAEE API的使用难度便于进行事务的操作3. 资源信息spring官网spr.

2021-08-03 19:57:44 209

原创 Maven使用学习

文章目录第一章简介为什么要用Maven进行project management?传统java项目开发过程中存在的问题?maven神器的作用maven的核心概念简要介绍maven3.6.3安装第二章Maven核心概念1. Maven工程约定的目录结构2. mvn compile编译src/main目录下的所有java文件3. pom.xml文件--项目对象模型4. 仓库5. Maven常用命令第三章Idea中设置Maven其他pom.xml文件配置相关scope字段properties字段,maven的属性设

2021-08-03 16:59:37 133

转载 MyBatis学习

转载文章目录1、简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis2、第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码3、CURD1\. namespace2\. select3\. Insert4\. update5\. Delete6\. 万能Map7\. 模糊查询4、配置解析1\. 核心配置文件2\. 环境配置 environments3\. 属性 properties4\. 类型别名 typeAliases5\. 设置 Se.

2021-07-06 17:44:30 101

原创 IntelliJ IDEA常用快捷键操作

关于IntelliJ IDEA的设置可参考尚硅谷JAVA视频的412 413sectionintellij idea快捷键https://www.hangge.com/blog/cache/detail_2659.htmlCtrl+ Shift+ Alt+Ctrl+Alt+T:调出surround with 可以快速进行try-catch等操作Ctrl+D: 复制当前行Ctrl+F12 搜索当前类的方法有哪些...

2021-05-24 09:56:50 160

原创 51. java11新特性

Java 11 新特性JEP – JDK Enhancement Proposal 特性增强提议一、新增了一系列字符串处理方法二、 Optional 加强三、局部变量类型推断升级四、 全新的HTTP 客户端API五、 更简化的编译运行程序六、废弃Nashorn引擎七、 ZGC八、其它新特性Unicode 10Deprecate the Pack200 Tools and API新的Epsilon垃圾收集器完全支持Linux容器(包括Docker)支持G1上的并行

2021-05-24 09:55:48 93

原创 50. java10新特性

Java 10 新特性一、 局部变量类型推断Lambda表达式 方法引用等不适用于局部变量类型推断。方法的返回类型和输入参数类型是根据外部决定内部的,而var实际上是需要进行推断的,也就是说需要根本方法体内的变量推断得出,与方法的结构定义违背。二、集合新增创建不可变集合的方法...

2021-05-24 09:55:37 56

原创 49. java9新特性

Java9 特性Java 9 中有哪些不得不说的新特性?模块化系统;jShell命令;多版本兼容jar包;接口的私有方法;钻石操作符的使用升级;语法改进: try语句;String存储结构变更;便利的集合特性: of();增强的Stream API;全新的HTTP客户端API;Deprecated的相关API;javadoc的HTML 5支持;Javascript引擎升级: Nashorn;Java的动态编译器yi. JDK 和 JRE 目录结构的改变二、 模块化系统: Jigsaw ➡ M

2021-05-23 11:56:50 126

原创 48. java8 新特性--Stream API / Optional类

java8 新特性 --Stream APIJava8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和

2021-05-23 11:56:39 141

原创 47. java8 新特性--Lambda表达式 / 方法引用

java8 新特性特点:速度更快代码更少(增加了新的语法: Lambda 表达式)强大的 Stream API便于并行最大化减少空指针异常: OptionalNashorn引擎,允许在JVM上运行JS应用一、Lambda表达式Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。(Lambda的本质就是函数式接口的实例,

2021-05-23 11:56:31 144

原创 46.动态代理

动态代理想一下明星和经纪人的例子,经纪人作为代理类,明星作为被代理类,代理类和被代理类之间共同实现相同的接口。静态代理举例package com.senior.reflect;/** * @author eden * @Description 静态代理举例 * 特点:代理类和被代理类在编译期间,就确定下来了。 * @create projectTest-com.senior.reflect:2021-05-14-19:23 * @since */int

2021-05-23 11:56:23 112

原创 45. 创建运行时类的对象-获取运行时类的所有属性及方法的完整结构-调用运行时类的指定属性/方法

创建运行时类的对象 //创建运行时类的对象 @Test public void test2() throws Exception { Class<Car> carClass = Car.class; //调用newInstance创建一个运行时类的对象,该方法内部实际上调用了运行时类的空参构造器 //这里如果把Car类的空参构造器屏蔽掉再运行,就会报NoSuchMethodException的错误; //其次

2021-05-23 11:56:12 167

yolov3-tiny.weights.tar.gz

yolov3(pytorch)训练自己的数据集可参看本人blog。要使用的预训练权重:yolov3-tiny.weights

2020-05-09

yolov3-spp.weights.tar.gz

yolov3(pytorch)训练自己的数据集可参看本人blog。要使用的预训练权重:yolov3-spp.weights。如有问题可留言或私聊。

2020-05-09

yolov3.weights.tar.gz

yolov3(pytorch)训练自己的数据集可参看本人blog。要使用的预训练权重:yolov3.weights。如果有遇到问题的可留言或私我。

2020-05-09

darknet53.conv.74.tar.gz

yolov3(pytorch)训练自己的数据集可参看本人blog。要使用的预训练权重:darknet53.conv.74

2020-05-09

yolov3-tiny.conv.15.tar.gz

yolov3(pytorch)训练自己的数据集可参看本人blog。要使用的预训练权重:首先下载训练好的网络参数yolov3-tiny.weights,到weights目录下,但仍然需要fine-tune,so对yolov3-tiny.weights进行改造,下载darknet相关文件,下载好之后进入文件make一下,生成darknet可执行文件,在当前文件目录下运行: ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 即可得到该文件yolov3-tiny.conv.15

2020-05-09

空空如也

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

TA关注的人

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