自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【SpringCloud学习08】微服务保护之Sentinel(2)

线程隔离(仓壁模式)降级熔断在application.yml中配置:feign.sentienl.enable=true给FeignClient编写FallbackFactory并注册为Bean将FallbackFactory配置到FeignClient线程隔离的两种手段是?信号量隔离线程池隔离信号量隔离的特点是?基于计数器模式,简单,开销小线程池隔离的特点是?基于线程池模式,有额外开销,但隔离控制更强默认情况下,发生限流、降级、授权拦截时,都会抛出异常到调用方。

2022-11-08 15:26:14 496 1

原创 【SpringCloud学习07】微服务保护之Sentinel(1)

什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html丰富的应用场景。

2022-11-07 22:20:55 484

原创 【谷粒课堂】腾讯云对象存储和EasyExcel技术

EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

2022-10-08 21:38:59 371

原创 【Vue实战】使用vue-admin-template模板开发后台管理

(1)浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。前后端分离开发中,需要考虑ajax跨域的问题。(2)跨域的本质:浏览器对Ajax请求的一种限制(3)这里我们可以从服务端解决这个问题修改 src/router/index.js 文件,重新定义constantRouterMap**注意:**每个路由的name不能相同。

2022-10-07 16:16:34 7900 3

原创 【Vue进阶】ElementUI、Vue-Router、Vuex

表格组件分页组件三种情况都应该触发查询mounted 组件挂载完成后页号变化时页大小变化时查询传参应该根据后台需求,灵活采用不同方式本例中因为是 get 请求,无法采用请求体,只能用 params 方式传参返回响应的格式也许会很复杂,需要掌握【根据返回的响应结构,获取数据】的能力分页搜索sex 与 age 均用 表示用户没有选择的情况age 取值 会被

2022-09-23 16:17:35 760

原创 【Vue2基础】Vue项目搭建及组件使用

axios 它的底层是用了 XMLHttpRequest(xhr)方式发送请求和接收响应,xhr 相对于之前讲过的 fetch api 来说,功能更强大,但由于是比较老的 api,不支持 Promise,axios 对 xhr 进行了封装,使之支持 Promise,并提供了对请求、响应的统一拦截功能。为了避免前后端服务器联调时, fetch、xhr 请求产生跨域问题,需要配置代理。Vue 的组件文件以 .vue 结尾,每个组件由三部分组成。使用图形向导来创建 vue 项目,如下图,输入项目名。

2022-09-22 19:42:20 1465

原创 【JavaScript】运算符与表达式、控制语句、常用API

npm 是 js 的包管理器,就类似于 java 界的 maven,要确保它使用的是国内镜像。Fetch API 可以用来获取远程数据,它有两种方式接收结果,同步方式与异步方式。如果值1 是 Truthy,返回值1,如果值1 是 Falsy 返回值 2。主要用来遍历数组,也可以是其它可迭代对象,如 Map,Set 等。需求,如果参数 n 没有传递或是 null,给它一个【男】需求,如果参数 n 没有传递,给它一个【男】需求,函数参数是一个对象,可能包含有子属性。作用1:打散数组,把元素传递给多个参数。

2022-09-18 22:10:34 397

原创 【JavaScript】变量与数据类型,this

变量与数据类型

2022-09-18 15:46:49 271

原创 HTML&CSS&HTTP

HTML 是什么:即 HyperText Markup language 超文本标记语言,咱们熟知的网页就是用它编写的,HTML 的作用是定义网页的内容和结构。CSS 是什么:即 Cascading Style Sheets 级联(层叠)样式表,它描述了网页的表现与展示效果。前面介绍的只是单独的 HTML 元素,它们可以充当一份完整的 HTML 页面的组成部分。p 是预先定义好的 html 标签,作用是将内容作为一个单独的段落。不包含内容的元素称之为空元素,如。检查用户名,密码,验证通过。

2022-09-17 22:35:30 315

原创 【设计模式学习02】创建者模式之单例、工厂、原型、建造者模式

需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。......

2022-08-03 12:40:19 182

原创 【设计模式学习01】设计模式概述,UML图,软件设计原则

设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(ChristopherAlexander)在他的著作《建筑模式语言城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了253种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。GoF)著称。...

2022-08-01 12:09:57 174

原创 【SpringCloud学习06】RabbitMQ

基本消息队列的消息发送流程建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息。...

2022-07-30 15:32:17 283

原创 【SpringCloud学习05】Docker

微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。...

2022-07-29 13:03:37 211

原创 【JVM学习04】JMM内存模型

情况2线程2先执行num=2,但没来得及执行ready=true,线程1执行,还是进入else分支,结果为1-情况3线程2执行到ready=true,线程1执行,这回进入if分支,结果为4(因为num已经执行过了)happens-before规定了哪些写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛开以下happens-before规则,JMM并不能保证一个线程对共享变量的写,对于其它线程对该共享变量的读可见。...

2022-07-21 23:42:03 157

原创 【JVM学习03】类加载与字节码技术

类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远超类加载阶段对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达得更通俗一些比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等!类加载时,类的字节码载入方法区。...

2022-07-20 20:41:11 306

原创 【JVM学习02】JVM的垃圾回收

等到并发标记结束,进行重新标记,会STW,暂停其他线程,然后将线程里的对象取出来检查,发现对象是灰色,还需要进行处理。达到下一个安全点后,进行重新标记,因为上一个并发标记时,其他用户线程也在并发执行,所有可能会产生新对象新引用,对垃圾回收线程造成了干扰,需要重新标记。新生代的回收之后,可以在进行新生代回收时,同时并发标记,然后再进行混合垃圾回收,即对新生代、老年代都进行一次较大的垃圾回收。缺陷清除的空间比较零碎,当待分配的新对象过大,即使零碎空间加起来总共是够的,但是由于过于零散,所以无法对其进行分配。..

2022-07-19 00:04:22 252 2

原创 【JVM学习01】JVM的内存管理

1)定义JavaVirtualMachine,Java程序的运行环境(Java二进制字节码的运行环境)。2)好处一次编译,处处执行-自动的内存管理,垃圾回收机制-数组下标越界检查3)比较JVM、JRE、JDK的关系如下图所示ProgramCounterRegister程序计数器(寄存器)JavaVirtualMachineStacks(Java虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。............

2022-07-15 20:29:22 399

原创 【SpringCloud学习04】Gateway服务网关

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway网关是我们服务的守门神,所有微服务的统一入口。网关的核心功能特性:架构图:权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。路由和负载均衡:一切请求都必须先经过gateway

2022-07-13 13:21:03 191

原创 【SpringCloud学习03】Nacos配置中心、Feign远程调用

Nacos除了可以做注册中心,同样可以做配置管理中心来使用。当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。Nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。如何在nacos中管理配置呢?然后在弹出的表单中,填写配置信息:微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。但如果尚未读取application

2022-07-13 13:07:08 1026

原创 NAO机器人程序设计复习,助你拿高分

对于连接机器人两个身体部件的关节来说,在驱动电机实现关节运动时,固定在躯干上的部件是固定的,远离躯干的部 件将围绕关节轴旋转。自由度:机器人能够独立运动的关节数目,称为机器人的运动自由度, 简称自由度(Degree of Freedom),由DOF简写表示。头部有两个关节,可以做偏转(Yaw)和俯仰(Pitch),因此, 头部的自由度为2。除了表列出的24个自由度外,每只手能够张开和闭合,具有1个自由度,因此,NAO全身具有26 个自由度。坐标系绕Y轴旋转坐标系绕Z轴旋转齐次变换:将n维矩阵升级到n+1维

2022-06-12 22:44:19 2263

原创 【计算机视觉学习05】图像检索与识别

图像分类:通过图像内容的不同将图像划分为不同的类别,基于内容的图像分类技术不需要对图像的语义信息进行人工标注,而是通过计算机提取图像中所包含的特征,并对特征进行处理和分析,得出分类结果。常用的图像特征有 图像颜色、纹理、灰度等信息。而图像分类过程中,提取的特征要求不容易受随机因素干扰,特征的有效提取可提高图像分类的精度。特征提取完成后,选择合适的算法创建图像类型与视觉特征之间的关联度,对图像进行类别划分。图像分类领域中,根据图像分类要求,一般可以分为 场景分类和 目标分类两类问题。场景分类也...

2022-06-09 15:36:08 1060

原创 计算机网络复习

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。资源子网:提供共享软件资源和硬件资源通讯子网:提供信息交换的网络节点和通讯路线​ 按拓扑分类:星型结构、树形结构、总线型结构、环状结构、网状结构​ 按范围分类:局域网(LAN)、城域网(MAN)、广域网(WAN)​ 按传输方式分类:有线网络、无线网络​ 1. 按照传输的方向分:​ 2. 按照数据传输对象(方式)分:网络协

2022-06-05 22:02:08 744

原创 【JavaSE】IO流(下)

小结:代码实现:代码演示:将上面乱序的出师表按顺序拷贝到新文件上代码演示代码演示:代码演示之前,我们明确几点:Student对象:打印流代码演示

2022-06-01 14:15:14 150 1

原创 【JavaSE】IO流(上)

小结可以发现,当一个字节一个字节读取文件内容时,因为中文字符占3个字节,因此,这种操作会造成乱码问题总结:代码演示:依然无法解决乱码问题注意,readAllBytes这个api时jdk9才提供的,jdk8没有代码实现:注意,放在try里面的需要为资源对象,资源对象实现了AutoCloseable或者Closeable接口。我们首先思考一下以下问题构造器写数据常用API总结

2022-06-01 11:09:47 204

原创 【JavaSE】File类、方法递归、字符集

文章目录1. File类1.1 创建File类对象1.2 File类创建常用方法1.2.1 判断文件类型,获取文件信息1.2.2 创建,删除文件1.2.3 遍历文件夹2. 方法递归2.1 方法递归形式2.2 递归算法三要素2.3 规律递归:猴子吃桃2.4 非规律递归:文件搜索3. 字符集3.1 常见字符集介绍3.2 字符集的编码、解码操作1. File类1.1 创建File类对象绝对路径和相对路径绝对路径:从盘符开始File file = new File("D:\\aaa\\data.tx

2022-05-31 20:01:24 379

原创 【Nacos安装指南】Windows安装、Linux安装

文章目录Nacos安装指南1.Windows安装1.1.下载安装包1.2.解压1.3.端口配置1.4.启动1.5.访问2.Linux安装2.1.安装JDK2.2.上传安装包2.3.解压2.4.端口配置2.5.启动3.Nacos的依赖Nacos安装指南1.Windows安装开发阶段采用单机安装即可。1.1.下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitH

2022-05-30 08:00:00 415

原创 【SpringCloud学习02】Eureka、Nacos注册中心、Ribbon负载均衡

文章目录1.Eureka注册中心1.1.Eureka的结构和作用1.2.搭建eureka-server1.2.1.创建eureka-server服务1.2.2.引入eureka依赖1.2.3.编写启动类1.2.4.编写配置文件1.2.5.启动服务1.3.服务注册1)引入依赖2)配置文件3)启动多个user-service实例1.4.服务发现1)引入依赖2)配置文件3)服务拉取和负载均衡2.Ribbon负载均衡2.1.负载均衡原理2.2.源码跟踪1)LoadBalancerIntercepor2)LoadBa

2022-05-29 17:49:51 406

原创 【SpringCloud学习01】认识微服务、了解服务拆分、服务的远程调用

文章目录1.认识微服务1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程2.3.实现远程调用案例2.3.1.案例需求:2.3.2.注册RestTemplate2.3.3.实现远程调用2.4.提供者与消费者1.认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?1.1

2022-05-29 17:14:25 382

原创 【Redis学习13】Redis搭建主从集群、哨兵集群、分片集群

文章目录Redis集群1.单机安装Redis2.Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试3.搭建哨兵集群3.1.集群结构3.2.准备实例和配置3.3.启动3.4.测试4.搭建分片集群4.1.集群结构4.2.准备实例和配置4.3.启动4.4.创建集群4.5.测试Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群1.单机安装Redis首先需要安装Redis所需要的依赖

2022-05-28 17:02:40 315 2

原创 【Redis学习12】分布式缓存之哨兵机制,分片集群

文章目录1. Redis哨兵1.1 哨兵原理1.1.1 集群结构和作用1.1.2 监控集群原理1.1.3 集群故障恢复原理1.1.4 哨兵原理小结1.2 搭建哨兵集群1.3 RedisTemplate1.3.1 导入依赖1.3.2 修改配置文件1.3.3 配置读写分离2. Redis分片集群2.1 搭建分片集群2.2 散列插槽2.2.1 插槽原理2.2.2 小结2.3 集群伸缩2.3.1 需求分析2.3.2 创建新的redis实例2.3.3 添加新节点到redis2.4 故障转移2.4.1 自动故障转移2.

2022-05-27 19:27:32 456

原创 【Redis学习11】分布式缓存之数据持久化,主从集群

引言我们来看一下单点的Redis可能存在哪些问题,下面这张图给出了存在的问题及其解决的方案接下来,我们分别去介绍解决这些问题的具体办法1. Redis数据持久化1.1 RDB持久化RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。1.1.1 RDB执行时机RDB持久化在四种

2022-05-27 14:37:13 201

原创 【JavaSE】Stream流

文章目录1. 体验Stream流2. Stream流常见的生成方式3. Stream流中间操作方法4. 终结流操作5. Stream流综合运用6. Stream流的收集操作1. 体验Stream流我们先来完成以下的案例需求,分别使用常规方法和stream流方法常规方法代码实现:public class StreamDemo { public static void main(String[] args) { //创建一个集合,存储多个字符串元素 ArrayL

2022-05-24 20:43:52 125

原创 【JavaSE】Lambda表达式、接口组成更新、方法引用

文章目录1. Lambda表达式1.1 Lambda表达式初体验1.2 Lambda表达式的基本格式1.3 Lambda表达式练习1.4 Lambda表达式的省略规则1.5 Lambda表达式的注意事项1.6 Lambda表达式和匿名内部类的区别2. 接口组成更新2.1 接口组成更新概述2.2 接口中默认方法应用2.3 接口中静态方法应用2.4 接口中私有方法应用3. 方法引用3.1 方法引用初体验3.2 方法引用符3.3 方法引用类对象练习3.4 方法引用对象的实例方法3.5 方法引用类的实例方法3.6

2022-05-23 17:16:34 373

原创 【数据结构与算法02】单向链表与双向链表

1. 单向链表1.1 单向链表介绍单向链表是链表的一种,它由多个结点组成,每个结点都由一个数据域和一个指针域组成,数据域用来存储数据,指针域用来指向其后继结点。链表的头结点的数据域不存储数据,指针域指向第一个真正存储数据的结点。1.2 单向链表的API设计1.3 单向链表的代码实现import java.util.Iterator;public class LinkList<T> implements Iterable<T>{ //记录头结点 pri

2022-05-19 22:36:50 525

原创 【数据结构与算法01】排序算法

文章目录1. 冒泡排序1.1 排序原理1.2 代码实现2. 选择排序2.1 排序原理2.2 代码实现3. 插入排序3.1 排序原理3.2 代码实现4. 归并排序4.1 排序原理4.2 代码实现5. 排序算法稳定性分析1. 冒泡排序1.1 排序原理比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。需要注意的是,每次比较的次数为为排序数组长度减一1.2 代码实现import

2022-05-19 11:21:44 106

原创 【Redis学习10】好友关注---关注与取关,共同关注及关注推送

文章目录1. 关注与取关1.1 需求分析1.2 代码实现1.3 功能完善2. 共同关注2.1 需求分析2.2 代码实现3. 关注推送3.1 关注推送介绍3.2 Feed流的实现方式3.3 代码实现1. 关注与取关1.1 需求分析1.2 代码实现首先我们实现关注和取关功能,再实现是否关注功能。如何实现关注和取关功能呢?我们在页面点击关注按钮,页面会发送ajax请求将要关注或者取关的信息传递到服务端,关注传递的是true,取关传递的是false。同时,页面还将博主的id传递过来。接下来,我们只需要

2022-05-15 23:30:00 1220

原创 【Redis学习09】达人探店之发布探店笔记,点赞功能开发

文章目录1. 发布探店笔记1.1 需求分析1.2 代码实现1.3 添加查看笔记接口2. 点赞功能2.1 需求分析2.2 代码实现2.3 代码完善3. 点赞排行榜3.1 需求分析3.2 代码实现1. 发布探店笔记1.1 需求分析这里涉及两个接口,一个是上传照片的接口,一个是发布博客的接口,接下来我们实现这两个接口。1.2 代码实现上传图片代码@Slf4j@RestController@RequestMapping("upload")public class UploadController

2022-05-15 16:57:06 438

原创 【MySql】进阶学习篇---SQL优化

文章目录1. 插入数据1.1 insert插入1.2 大批量插入数据2. 主键优化3. Order By 优化4. Group By 优化5. Limit优化6. count优化6.1 count概述6.2 count用法7. update优化1. 插入数据1.1 insert插入1.2 大批量插入数据如果一次性需要插入大批量数据(比如: 几百万的记录),使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下:2. 主键优化1). 数据组织方式

2022-05-15 14:48:02 186

原创 【MySql】进阶学习篇---索引(下)

1. 创建,查看,删除索引示例:2. SQL性能分析2.1 SQL执行频率Com_delete: 删除次数Com_insert: 插入次数Com_select: 查询次数Com_update: 更新次数我们可以在当前数据库再执行几次查询操作,然后再次查看执行频次,看看 Com_select 参数会不会变化。通过上述指令,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据库优化提供参考依据。 如果是以增删改为主,我们可以考虑不对其进行索引的优化。 如果是以查

2022-05-15 10:20:51 260

原创 【MySql】进阶学习篇---索引(上)

1. 存储引擎1.1 存储引擎介绍1.2 存储引擎特点上面我们介绍了什么是存储引擎,以及如何在建表时如何指定存储引擎,接下来我们就来介绍下来上面重点提到的三种存储引擎 InnoDB、MyISAM、Memory的特点。1.2.1 InnoDB1.2.2 MyISAM1.2.3 Memory1.3 存储引擎的区别及特点2. 索引(重点)2.1 索引概述2.1.1 介绍2.1.2 有无索引的查询区别无索引情况:进行全表扫描,即从头到尾进行搜索比较有索引情况:这里的二叉

2022-05-14 21:58:46 197

openapi对外提供的jar包

openapi对外提供的jar包

2023-06-05

Java基础复习篇.md

Java面试基础复习

2022-09-07

空空如也

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

TA关注的人

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