自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(58)
  • 资源 (7)
  • 收藏
  • 关注

原创 Centos7 安装zabbix6.0.25, agent2

-sysconfdir=/etc/zabbix #指定配置文件路径。--with-mysql #开启数据库mysql的支持。--enable-server #安装服务端。三、编译安装zabbix-server。四、安装zabbix-agent客户端。启动zabbix-server。二、安装数据库mariadb。一、部署nginx、PHP。1、安装zabbix客户端。再次查看页面,告警消失了。1、安装mariadb。2、web页面添加主机。五、解决中文乱码问题。

2024-01-03 16:44:53 671 1

原创 K8S 容器退出状态码Exit Code 分析

K8S 容器退出状态码解释,常见的Exit Code 排查分析,Exit Code 1、Exit Code 137、Exit Code 139、Exit Code 143 等等

2022-07-14 15:59:26 6724 1

原创 如何用zabbix监控SSL证书的有效期

我们可以用zabbix来监控SSL证书的有效期:监控脚本:cat check_ssl.sh#!/bin/bash#获取ssl证书的过期时间#author:Allen#获取证书的有效时间time=$(echo | openssl s_client -connect $1:443 2>/dev/null | openssl x509 -noout -dates |awk -F'=' 'NR==2{print $2}')#有效时间生成时间戳time1=$(date +%s -d

2021-12-06 17:35:53 1129 1

原创 异地多活架构原理讲解

在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理。异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的?这些疑问,想必是每个程序看到异地多活这个名词时,都想要搞明白的问题。有幸,我曾经深度参与过一个中等互联网公司,建设异地多活系统的设计与实施过程。所以今天,我就来和你聊一聊异地多活背后的的实现原理。认真读完这篇文章,我相信你会对异地多活架构,有更加深刻的理解。这篇文章干货很多,希望你可以耐心读完。01

2021-10-29 09:38:11 354

原创 监控Linux文件变化的各种方法

运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机。除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准确的安全监控可以在主机层面及时发现入侵活动、予以告警以备及时处理。本文虫虫就给大家来说说系统文件变化的监控。概述在*nix体系一切皆文件,系统文件的变化往往反应着系统的变化,比如系统应用的更新、系统的操作活动(可以用安全审计来确定)或系统被黑。根据虫虫多年来维护经验系统被黑最明显之一的特征.

2021-10-12 14:40:50 6647

原创 在IDEA中如何使用eclipse快捷键

1、选择Eclipse风格,选择copy一份,可以自己重命名。2、设置生成快捷键的快捷键(例如:Eclipse中的Alt+/)3、设置main函数快捷键(补充:最上边下拉列表选择Enter)4、设置生成syso输出语句快捷键5、普通循环for6、foreach快捷循环7、同理,js中也需要修改8、向下复制代码补充:复制代码与向下滚动有冲突,需要把向下滚动的快捷键去除掉9、另注:try catch finally 和 if else在id

2021-09-13 20:26:52 4199

原创 K8S入门知识整理-持续更新

目录1.查看节点的日志信息:journalctl -u kubelet -n 10002.查看对应deployment的pod数量,并对其进行设置:kubectl get deployments&kubectl scale deployment nginx-deployment --replicas3.node节点加入k8s集群:kubeadm join --token 1f627e.a37793601a406d7e 10.0.1.22:6443 --discovery-toke...

2021-03-11 17:29:59 1280 1

原创 K8S亲和性调度2

前面一篇文章讲述了:K8S亲和性调度1,现在仔细回头去看看,发现有很多地方没有理解透彻,不够深入,今天我们重新来理解下亲和性调度这一块知识。一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,害怕内部服务对外部的服务产生影响;但是有的时候我

2021-03-11 17:26:46 3039

原创 K8S 的亲和性调度1

一般情况下我们部署的 POD 是通过集群自动调度选择某个节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 POD 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,害怕内部服务对外部的服务产生影响;有的时候呢我们两个服务直接交流比较频繁,又希望能够将这两个服务的 POD 调度到同样的节点上。这就需要用到 Kubernetes 里面的一个概念:亲和性,亲和性主

2021-03-11 17:24:40 929

原创 Docker升级后服务无法启动(17.03.02-->18.09.2-3)

项目3台新增主机因为Docker版本过低,升级到18.09.2-3后,Docker服务启动失败,日志获取错误信息如下:Apr 09 11:26:04 CSH1RTM042V dockerd[69872]:Error starting daemon: invalid mirror:unsupported scheme"xxx" in "xxx:50002"对应配置文件/etc/docker/daemon.json{ "insecure-registries": ["xxxx:50...

2020-12-11 10:11:59 821

原创 软件生命周期-SDLC-的六个阶段简单介绍

1、评估现有的系统-问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。"同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。3、软件设计此阶段主要根据需求分析的结果,对整个软件系统

2020-07-09 23:06:58 5484

原创 JIRA零基础使用教程(三)- 高级搜索(JQL)

JIRA的高级搜索功能超级好用,使用了自带的JQL查询语言,有点类似于SQL的语法,但是做了扩充和简化。什么是高级搜索?高级搜索可以让你使用结构化查询搜索JIRA问题单。搜索结果将显示在问题导航器,你可以将其导出到MS Excel等多种格式。你还可以保存和订阅你的高级搜索。当你执行高级搜索时,你是用的是JIRA搜索语言(JQL)。JQL简单查询(也称为一个“语句”)包括一个字段,包括一个运算符、一个或多个值或功能。例如,下面的简单的查询会搜索在“XRTP2”项目中的所有问题单: .

2020-07-09 22:55:45 11325

原创 JIRA零基础使用教程(二)- 基于JIRA的测试管理插件(Xray)

JIRA是一个流行的产品,除了其自身功能强,可扩展性好以外,JIRA还拥有一个庞大的生态圈。拥有众多的插件开发商、合作伙伴和用户。从产品层面看,JIRA产品具备很强的扩展能力,例如对于问题单类型、流程、表单、字段,报表,通知,权限配置都是可以定制的,而且还内置或者可以定制很多模板(Schemes)方便扩展。另外JIRA产品拥有支持Add-On(插件)的能力,围绕Add-On能力Atlassian公司做了一个App市场,各种外围合作方和供应商可以通过App市场把他们开发的第三方的插件开放给所有JIRA

2020-07-09 22:47:13 7415 1

原创 JIRA零基使用教程(一)- 概念和配置使用介绍

JIRA和Atlassian公司JIRA是Atlassian公司的产品。Atlassian公司于2002在澳大利亚悉尼成立,提供面向企业业务流程的协同办公产品,并于2015年12月在纳斯达克上市。作为一家SaaS公司,不雇佣一个销售人员,仅通过口碑获客,市值达10亿美金级别(64亿美元-2017年3月13日),这也从另外角度反映出这个产品的独特之处。Atlassian主要有5款产品,分别面向不同的市场。JIRA(项目任务管理软件) Confluence(企业知识管理与协同软件) BitBuck

2020-07-09 22:44:04 2178

原创 TCP 三次握手和四次挥手的简要描述

一、TCP报文格式    在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西。 TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…) 报文主要段的意思     序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号    确认序号:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK..

2020-06-28 17:07:36 1638

原创 Linux安装完成后 需要做什么优化呢?

CENTOS6的优化方案:1、快速更改国内yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #<<-备份系统自带yum源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo <<—国内使用阿里云yum源速度比较快wget -O /...

2020-06-21 23:07:25 890

原创 centos7 Firewalld的使用教程

Firewalld 与Iptables 的区别FirewallD即Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器,是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:FirewallD 使用区域和服务而不是链式规则。 FirewallD可以动态修改单条规则,而不需要像...

2020-06-21 22:55:49 544

原创 DevOps、CI、CD 分别指的是什么?

DevOpsDevOps是Development和Operations的组合,是一种方法论,是一组过程、方法与系统的统称,用于促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。以期打破传统开发和运营之间的壁垒和鸿沟。DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。具体来说,就是在软件交付和部署过程中提高沟通与协作的..

2020-06-15 13:46:48 2840 1

转载 MySQL、MongoDB、Redis 数据库之间的区别以及使用场景

NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路。MongoDB:它是一个内存数据库,数据都是放在内存里面的。对数据的操作大部分都在内存中,但MongoDB并不是单纯的内存数据库。MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB..

2020-06-12 21:17:16 860

原创 Linux保护ssh的三把锁

简介如果需要远程访问计算机并启用了 Secure Shell (SSH) 连接,黑客就会尝试突破您的防线并控制您的计算机,您必须接受这个事实。尽管不能保证计算机不会被 “黑客” 占领,但是一些简单的解决方案有助于保护 SSH,可以让攻击困难一些。本文讨论三种技术:把 SSH 的标准端口改为不常用的值并增强 SSH 配置,从而挡住最简单的攻击。 定义有限的用户列表,只允许这些用户登录。 完全隐藏允许 SSH 访问的事实,要求根据特殊的 “敲门” 序列识别有效用户。要想应用这些技术,需要能够访问根

2020-06-12 20:52:42 352

原创 K8S生态--交付prometheus监控及grafana炫酷dashboard到K8S集群

由于docker容器的特殊性,传统的zabbix无法对k8s集群内的docker状态进行监控,所以需要使用prometheus来进行监控:什么是Prometheus?Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Promethe

2020-06-12 20:33:44 1233

原创 K8S实战-配置中心(四)分环境使用apollo配置中心

要进行分环境,需要将现有实验环境进行拆分portal服务,可以各个环境共用,但是apollo-adminservice和apollo-configservice必须要分开。1、zk环境拆分为test和prod环境添加dns解析:# vi /var/named/od.com.zonezk-test.od.com A 10.4.7.11zk-prod.od.com A 10.4.7.122、namespace 分环境,创建test ...

2020-06-12 20:28:02 1222

原创 K8S实战-配置中心(三)配置服务使用apollo配置中心

使用配置中心,需要开发对代码进行调整,将一些配置,通过变量的形式配置到apollo中,服务通过配置中心来获取具体的配置在配置中心修改新增如下配置:项目信息:配置:重新打包镜像,使用apollo版本的代码:修改dp.yaml,将镜像使用我们刚刚打包的这个:应用资源配置清单:# kubectl apply -f http://k8s-yaml.od.com/dubbo-server/dp.yaml创建dubbo服务消费者:ap...

2020-06-12 19:53:11 601

原创 K8S实战-配置中心(二)交付apollo配置中心到K8S

apollo官网:官方地址apollo架构图:apollo需要使用数据库,这里使用mysql,注意版本需要在5.6以上:本次环境mysql部署在10.4.7.11上,使用mariadb:10.1以上版本# vi /etc/yum.repos.d/MariaDB.repo[mariadb]name = MariaDBbaseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64/gpg...

2020-06-12 19:51:04 599

原创 K8S实战-配置中心(一)configmap资源

在我们的环境中测试使用configmap资源,需要先对我们的环境进行一些准备,首先将dubbo服务调整为0个pod ,然后把zookeeper进行拆分:拆分zk环境,模拟测试环境跟生产环境:停止zookeeper:# sh /opt/zookeeper/bin/zkServer.sh stop# rm -rf /data/zookeeper/data/*# rm -rf /data/zookeeper/logs/*# vi /op...

2020-06-12 19:49:14 1013

原创 K8S实战-交付dubbo服务到k8s集群(六)使用blue ocean流水线构建dubbo-consumer服务

我们这里的dubbo-consumer是dubbo-demo-service的消费者:我们之前已经在jenkins配置好了流水线,只需要填写参数就行了。由于dubbo-consumer用的gitee的私有仓库,需要添加公钥,这里大家可以自己找个client服务来做实验。下面是我们通过jenkins构建的镜像,已经上传到我们的harbor私有仓库当中了:这里我们构建了两次,构建了两个镜像,11bb9cd这个用来做模拟生产发版更新实验。...

2020-06-12 19:48:01 428

原创 K8S实战-交付dubbo服务到k8s集群(五)交付dubbo-monitor监控服务到K8S

首先下载dubbo-monitor源码包7-200dubbo-monitor是监控zookeeper状态的一个服务,另外还有dubbo-admin,效果一样,感兴趣的可以自己研究一下。# cd /opt/src# wget https://github.com/Jeromefromcn/dubbo-monitor/archive/master.zip# yum -y install unzip# unzip master.zip# mv dubbo-monitor-mster ..

2020-06-12 19:46:42 439

原创 K8S实战-交付dubbo服务到k8s集群(四)使用blue ocean流水线构建dubbo-demo-service

使用jenkins创建一个新的项目:dubbo-demo,选择流水线构建勾选保存构建历史和指定项目为参数化构建项目:添加构建参数:以下配置项,是王导根据多年生产经验总结出来的甩锅大法:除了base_image和maven是choice parameter,其他都是string parameter添加完成后,效果如图:编写pipeline:仔细查看这个pipeline,里面都是我们上面编写的参数。pipeline { agent...

2020-06-12 19:45:28 623 1

原创 K8S实战-交付dubbo服务到K8S集群(三)安装配置maven和java运行时环境的底包镜像

maven 官方地址:官方地址下载maven,shdd7-200# cd /opt/src# wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz# mkdir /data/nfs-volume/jenkins_home/maven-3.6.1-8u232# tar -zxf apache-maven-3.6.1-bin.tar.gz -C .

2020-06-12 19:43:26 378 1

原创 K8S实战-交付dubbo服务到k8s集群(二)交付jenkins到k8s集群

首先下载jenkins镜像并上传到我们自己的私有仓库:7-200# docker pull jenkins/jenkins:2.190.3# docker tag 22b8b9a84dbe harbor.od.com/public/jenkins:v2.190.3# docker push harbor.od.com/public/jenkins:v2.190.3为了适应我们的环境,我们的jenkins不能直接使用,需要进行配置:# mkdir -p /data/dockerfi

2020-06-12 19:40:27 690 1

原创 K8S实战-交付dubbo服务到k8s集群(一)准备工作

本次交付的服务架构图:因为zookeeper属于有状态服务,不建议将有状态服务,交付到k8s,如mysql,zk等。首先部署zk集群:zk是java服务,需要依赖jdk,jdk请自行下载:集群分布:7-11,7-12,7-21# mkdir /opt/src# mkdir /usr/jav# cd /opt/src# tar -xf jdk-8u221-linux-x64.tar.gz -C /usr/java/# ln -s /usr/java/jd...

2020-06-12 19:38:32 505

原创 K8S进阶(六)K8S平滑升级

当我们遇到K8S有漏洞的时候,或者为了满足需求,有时候可能会需要升级或者降级版本,为了减少对业务的影响,尽量选择在业务低谷的时候来升级:首先准备好文件:我这里选择的是内网文件服务器上下载的,请自行下载所需的k8s源文件:3这里演示更换一个节点:7-21查看版本:将7-21更换成1.15.2# cd /opt/src# wget http://192.168.1.60:8080/day1/kubernetes-server-linux-amd64-v1.15.2..

2020-06-12 19:35:43 983

原创 K8S进阶(五)dashboard--WEB管理

dashboard是k8s的可视化管理平台,是三种管理k8s集群方法之一首先下载镜像上传到我们的私有仓库中:hdss7-200# docker pull k8scn/kubernetes-dashboard-amd64:v1.8.3# docker tag fcac9aa03fd6 harbor.od.com/public/dashboard:v1.8.3# docker push harbor.od.com/public/dashboard:v1.8.3编辑dashboard资源

2020-06-12 19:33:33 1045

原创 K8S进阶(四)服务暴露-ingress控制器之traefik

上一章我们测试了在集群内部解析service名称,下面我们测试在集群外部解析:根本解析不到,因为我们外部用的dns是10.4.7.11,也就是我们的自建bind dns,这个DNS服务器上也没有响应的搜索域。如何能让集群外部访问nginx-dp?这里有两种服务暴露方式:修改工作模式,在kube-proxy中修改,并重启1、使用nodeport方式,但是这种方式不能使用ipvs,只能使用iptables,iptables只能使用rr调度方式。原理相当于端口映射,将容器内的端口映..

2020-06-12 19:29:52 1233

原创 K8S进阶(三)服务发现-coredns

服务发现,说白了就是服务(应用)之间相互定位的过程。服务发现需要解决的问题:  1、服务动态性强--容器在k8s中ip变化或迁移  2、更新发布频繁--版本迭代快  3、支持自动伸缩--大促或流量高峰我们为了解决pod地址变化的问题,我们之前部署了service资源,将pod地址通过service资源暴露的固定地址,来解决以上问题,那么,如何解决service资源名称和service资源暴露出来的集群网络IP做自动的对应呢,从而达到服务的自动发现呢?在k8s中,coredns就是

2020-06-12 19:28:03 1538

原创 K8S进阶(二) 核心网络插件Flannel的安装

网络插件Flannel介绍:https://www.kubernetes.org.cn/3682.html首先,flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置,其中最主要的内容为设置集群的网络地址空间。例如,设定整个集群内所有容器的IP都取自网段“10.1.0.0/16”。接着,flannel在每个主机中运行flanneld作为agent,它会为所在主机从集群的网络地址空间中,获取一个小的网段subnet,本主机内所有容器的IP地址都将从中分配。然后,fla

2020-06-12 19:24:43 3934

原创 windows 下的TortoiseGit和Git配置使用同一SSH密钥

因为Git与TortoiseGit默认使用的私钥格式不一样,所以我们需要给Git和TortoiseGit个配置一份公钥私钥,但是这样会显得很麻烦,那么我们如何让Git与TortoiseGit使用同一SSH密钥呢?假设Git的公钥私钥已经配置好了空白地方右键-->TortoiseGit-->Settings,General-->点击"Re-run First Start Wizard"一直点击"下一步",直到如下窗口,选择"OpenSSH",点击"完成"。..

2020-06-10 17:35:35 327

原创 Windows下修改Git bash的用户主目录

在Windows下安装git后,默认的用户主目录和开始路径一般都是:C:\Users\用户名。这种默认设置会有两个麻烦:(1). 每次打开Git bash进行工作时就会自动进入此目录下,要切换到常用的自定义目录还要重复切换,很不方便。(2). 随后生成的相关配置文件,如:.ssh、.gnupg、.bash_history、.gitconfig等也会在默认的“C:\Users\用户名”路径下,这就是用户主目录。一般是不建议存放在C盘的,因为C盘内容越多越不利于计算机运行。本经验就是解决麻烦(2

2020-06-10 15:08:57 2338 1

原创 Git与SVN比较各自的有优点缺点和差异

一、集中式vs分布式1.Subversion属于集中式的版本控制系统集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。Subversion的特点概括起来主要由以下几条:每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据; 获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据; 提交必须有网络连接(非本地版本库); 提交需要授权,...

2020-06-10 12:15:39 1650

原创 K8S进阶(一) kubectl工具使用详解

管理k8s核心资源的三种基本方法:一、陈述式-主要依赖命令行工具--可以满足90%以上的使用场景,但是缺点也很明显:  命令冗长,复杂,难以记忆  特定场景下,无法实现管理需求  对资源的增、删、查操作比较容易,改比较麻烦,需要patch来使用json串来更改。  1.1 查看名称空间 查询时,为了避免重名,需要指定名称空间。# kubectl get namespace简写:# kubectl get ns  1.2 查询命名空间中的资源,使用-n ...

2020-05-28 23:29:48 3556

matlab中文教程

matlab教程,DOC文档格式,对初学matlab的新手很有帮助

2009-12-10

JAVA 实现 语音聊天 Skype 4.0 Java版源码附开发文档

Skype 4.0的Java版的示例源码,在Eclipse环境下开发,压缩包内的两个文件夹均是Eclipse的Java项目,分别导入这两个工程就可以了。值得注意的是,如何运行AP2APTest请查看包内的Skype4Java开发指南.doc文档。

2009-12-10

Flex UI Design For Cairngorm.pdf

Flex UI Design For Cairngorm 是一本flex UI的详细教程

2008-10-31

Flex中的CSS样式

该教程详细的介绍了在flex开发中的css样式,非常不错的一本书!!

2008-06-11

Flex 入门的教程,不错哦!

该教程最适合flex刚入门的学习,很不错的教程

2008-06-11

空空如也

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

TA关注的人

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