自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (6)
  • 收藏
  • 关注

原创 springboot 配置 log4j2

做个笔记留着以后忘记了用依赖springboot为版本为2.1.4.RELEASE特别注意要更改springboot原本的web依赖,不然导致日志没法输出到本地文件 <!--log4j--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

2021-09-08 14:41:18 3421

原创 WebDriverPool浏览器驱动池 减少驱动频繁打开和关闭引起的资源损耗

Jsoup爬虫为节省写个WebDriverPool浏览器驱动池 减少驱动频繁打开和关闭引起的资源损耗简单采用了享元模式享元模式参考链接https://blog.csdn.net/oneby1314/article/details/108680069依赖 <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>s

2021-09-08 14:32:04 5948 2

原创 first

1.throw和throws区别throw:1.作用在方法体,表示抛出具体的异常,由方法体内的语句处理2.具体向外抛出的动作,所抛出的是一个异常实体类。执行throw一定抛出了某种异常。throws:1.作用在方法的声明(方法头)上,表示如果抛出异常,则由方法的调用者来进行异常处理2.声明这个方法可能会有的异常类型,让它的调用者知道并捕获异常的类型3.出现异常是一种可能性,但不一定会发生异常总结:1.throws出现在方法头,throw出现在方法体2.throws表现出现异常的一种可能性

2021-06-22 10:29:42 189

转载 Java复习笔记

第一章 Java概述1.1 Java历史Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。Java之父是詹姆斯.高斯林(James Gosling)。1996年发布JDK1.0版。目前最新的版本是Java12。我们学习的Java8。1.2 Java语言最主要的特点特点一:面向对象两个基本概念:类、对象三大特性:封装、继承、多态特点二:健壮性吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、

2021-06-16 14:49:37 280

转载 MySQL基础

##本单元目标一、为什么要学习数据库二、数据库的相关概念DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍MySQL产品的安装 ★MySQL服务的启动和停止 ★MySQL服务的登录和退出 ★MySQL的常见命令和语法规范五、DQL语言的学习 ★基础查询 ★条件查询 ★ 排序查询 ★ 常见函数 ★分组函数 ★分组查询 ★

2021-06-09 08:44:01 300

转载 day16

第16章 集群高可用学习目标理解集群流程理解分布式概念能实现Eureka集群[集群配置]能实现Redis集群[Redis集群配置、哨兵策略(案例)、Redis击穿问题]1.Redis集群的原理2.Redis集群会用->在java代码中能链接集群服务3.哨兵策略->监控集群的健康状态[作用]4.Redis击穿->如何解决击穿问题5.如何解决Redis雪崩问题->多级缓存RabbitMQ集群1.集群概述1.1什么是集群1.1.1集群概

2021-04-23 22:11:02 74

转载 第15天

第15章 分布式事务学习目标理解什么是事务理解什么是分布式事务理解CAP定理CAP不能3者同时成立能说出相关的分布式事务解决方案1.2PC-JTA分布式事务2.本地消息-业务库中添加对应的消息表和业务耦合实现3.MQ事务消息-RocketMQ4.Seata理解Seata工作流程AT模式-表TCC模式-代码补偿机制能实现Seata案例Seata使用案例作业:实现项目中分布式事务控制-下单->用户微服务(增加积分)->Goods微服

2021-04-20 23:17:03 96

转载 第14天

第14章 秒杀学习目标防止秒杀重复排队重复排队:一个人抢购商品,如果没有支付,不允许重复排队抢购并发超卖问题解决1个商品卖给多个人:1商品多订单秒杀订单支付秒杀支付:支付流程需要调整超时支付订单库存回滚1.RabbitMQ延时队列2.利用延时队列实现支付订单的监听,根据订单支付状况进行订单数据库回滚1 防止秒杀重复排队用户每次抢单的时候,一旦排队,我们设置一个自增值,让该值的初始值为1,每次进入抢单的时候,对它进行递增,如果值>1,则表明已经排队,不

2021-04-20 23:15:21 88

转载 第13天

第13章 秒杀学习目标秒杀业务分析秒杀商品压入Redis缓存Spring定时任务了解-定时将秒杀商品存入到Redis中秒杀商品频道页实现-秒杀商品列表页秒杀商品详情页实现下单实现(普通下单)多线程异步抢单实现-队列削峰1 秒杀业务分析1.1 需求分析所谓“秒杀”,就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。秒杀商品通常有两种限制:库

2021-04-20 23:13:22 122

转载 第12天

第12章 微信支付学习目标能够说出微信支付开发的整体思路生成支付二维码查询支付状态实现支付日志的生成与订单状态的修改、删除订单支付状态回查MQ处理支付回调状态定时处理订单状态1 开发准备1.1 开发文档微信支付接口调用的整体思路:按API要求组装参数,以XML方式发送(POST)给微信支付接口(URL),微信支付接口也是以XML方式给予响应。程序根据返回的结果(其中包括支付URL)生成二维码或判断订单状态。在线微信支付开发文档:https://pa

2021-04-20 23:12:00 107

转载 第11天

第11章 订单学习目标登录页的配置登录成功跳转实现结算页查询实现下单实现变更库存增加积分支付流程介绍微信扫码支付介绍1 登录页面配置前面使用的都是采用Postman实现登录,接着我们实现一次oauth自定义登录。1.1 准备工作(1)静态资源导入将资料/页面/前端登录相关的静态资源导入到changgou-user-oauth中,如下图。(2)引入thymeleaf修改changgou-user-oauth,引入thymeleaf模板引擎<!--thymeleaf

2021-04-20 23:09:22 158

转载 第10天

第10章 购物车学习目标资源服务器授权配置掌握OAuth认证微服务动态加载数据掌握购物车流程掌握购物车渲染流程OAuth2.0认证并获取用户令牌数据微服务与微服务之间的认证1 资源服务器授权配置1.1 资源服务授权配置基本上所有微服务都是资源服务(1)配置公钥 认证服务生成令牌采用非对称加密算法,认证服务采用私钥加密生成令牌,对外向资源服务提供公钥,资源服务使 用公钥 来校验令牌的合法性。 将公钥拷贝到 public.key文件中,将此文件拷贝到每一个需要的资源服务工程的clas

2021-04-20 23:04:43 115

转载 第9天

第9章 Spring Security Oauth2 JWT学习目标用户认证分析认证技术方案了解SpringSecurity Oauth2.0入门oauth2.0认证模式 授权码授权模式 密码授权模式授权流程用户授权认证开发1 用户认证分析上面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务。每个服务都需要认证用户的身份,身份认证成功后,需要识别用户的角色然后授权访问对应的功能。1.

2021-04-20 23:02:48 152

转载 第8天

第8章 微服务网关和Jwt令牌学习目标掌握微服务网关的系统搭建了解什么是微服务网关以及它的作用掌握系统中心微服务的搭建掌握用户密码加密存储bcrypt了解JWT鉴权的介绍掌握JWT的鉴权的使用使用Jwt令牌来存储用户登录信息,在微服务网关中识别登录信息(用户的身份)掌握网关使用JWT进行校验掌握网关限流1 微服务网关1.1 微服务网关的概述不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端

2021-04-20 23:01:40 176

转载 第7天

第7章 Thymeleaf、Rabbitmq实现静态页学习目标Thymeleaf的介绍Thymeleaf的入门Thymeleaf的语法及标签商品详情页静态化工程搭建商品详情页静态化功能实现1.详情页静态化操作2.填充基础数据 Spu、List<Sku>3.规格切换搜索页面渲染1.数据展示2.搜索条件展示3.实现条件搜索控制用户修改商品信息,同步更新创建商品详情页1.Thymeleaf介绍​ thymeleaf是一个XML/XHTM

2021-04-20 22:57:28 94

转载 第6天

第6章 商品搜索学习目标条件筛选多条件搜索[品牌、规格条件搜索]规格过滤价格区间搜索搜索分页搜索排序搜索高亮1. 品牌统计用户搜索的时候,除了使用分类搜索外,还有可能使用品牌搜索,所以我们还需要显示品牌数据和规格数据,品牌数据和规格数据的显示比较容易,都可以考虑使用分类统计的方式进行分组实现。1.1 品牌统计分析看下面的SQL语句,我们在执行搜索的时候,第1条SQL语句是执行搜,第2条语句是根据品牌名字分组查看有多少品牌,大概执行了2个步骤就可以获取数据结果以及品牌统计,我们可

2021-04-20 22:55:22 1259

转载 第5天-索引搜索

第5章 商品搜索学习目标Elasticsearch安装docker安装Elasticsearch系统参数问题跨域操作IK分词器配置Kibana的使用->DSL语句Kibana->DSL语句操作->ElasticsearchES导入商品搜索数据Sku数据导入到ElasticsearchMap数据类型->Object关键词搜索->能够实现搜索流程代码的编写分类统计搜索1. Elasticsearch 安装我们之前已经使

2021-04-19 21:05:38 257

转载 第4天

第4章 lua、Canal实现广告缓存学习目标Lua介绍Lua语法 输出、变量定义、数据类型、流程控制(if..)、循环操作、函数、表(数组)、模块OpenResty介绍(理解配置)封装了Nginx,并且提供了Lua扩展,大大提升了Nginx对并发处理的能,10K-1000KLua->广告缓存操作广告缓存载入与读取Nginx讲解限流操作:漏斗限流原理 1.控制速率 2.并发量控制Canal讲解实现数据同步操作->MySQLCanal实现

2021-04-19 21:03:32 159

转载 第3天

第3章 商品发布学习目标SPU与SKU概念理解SPU:某一款商品的公共属性SKU:某款商品的不同参数对应的商品信息[某个商品]新增商品、修改商品增加:增加SPU和SKU修改:修改SPU和SKU商品审核、上架、下架审核:修改审核状态上架下架:修改上架下架状态删除商品逻辑删除:修改了删除状态物理删除:真实删除了数据找回商品找回商品:一定是属于逻辑删除的商品1 SPU与SKU1.1 SPU与SKU概念SPU = Standard Product

2021-04-19 20:10:51 171

转载 第2天

第2章 分布式文件存储FastDFS学习目标理理解FastDFS工作流程分布式文件管理系统 文件上传 文件下载 文件删除 文件缓存控制搭建文件上传微服务相册管理(实战)规格参数管理(实战)商品分类管理(实战)1 FastDFS1.1 FastDFS简介1.1.1 FastDFS体系结构FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适

2021-04-19 20:04:54 191

转载 第1天

第1章 框架搭建学习目标了解电商了解畅购架构了解畅购工程结构畅购工程搭建商品微服务搭建品牌增删改查1. 走进电商1.1 电商行业分析近年来,世界经济正向数字化转型,大力发展数字经济成为全球共识。党的十九大报告明确提出要建设“数字中国”“网络强国”,我国数字经济发展进入新阶段,市场规模位居全球第二,数字经济与实体经济深度融合,有力促进了供给侧结构性改革。电子商务是数字经济的重要组成部分,是数字经济最活跃、最集中的表现形式之一。2017年,在政府和市场共同推动下,我国电子商务发展更加注重

2021-04-19 20:01:00 136

转载 18-基础加强03

1.管理系统与服务器集成1.1准备工作【应用】需求对之前写过的黑马信息管理系统进行改进,实现可以通过浏览器进行访问的功能准备工作将资料中的黑马管理系统代码拷贝到当前模块下导包的代码可能报错,因为之前的包路径可能和当前代码不一致,将导包的代码修改下业务分析解析URL封装到HttpReques对象DynamicResourceProcess类(执行指定动态资源的service方法)定义servlet类完成查询学生、添加学生、删除学生、修改学生的逻辑项

2021-04-14 19:03:30 87

转载 17-基础加强02

1.xml1.1概述【理解】万维网联盟(W3C)万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。建立者: Tim Berners-Lee (蒂姆·伯纳斯·李)。是Web技术领域最具权威和影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南,如广为业界采用的超文本标记语言HTML(标准通用标记语言下的一个应用)、可扩展标记语言XML(标准通用标记语言下的一个子集)以及

2021-04-14 19:01:24 75

转载 16-基础加强01

1.类加载器1.1类加载器【理解】作用负责将.class文件(存储的物理文件)加载在到内存中1.2类加载的过程【理解】类加载时机创建类的实例(对象)调用类的类方法访问类或者接口的类变量,或者为该类变量赋值使用反射方式来强制创建某个类或接口对应的java.lang.Class对象初始化某个类的子类直接使用java.exe命令来运行某个主类类加载过程加载通过包名 + 类名,获取这个类,准备用流进行传输在这个类加载到内存中加载完毕创建一个class对象

2021-04-14 18:22:08 53

转载 15-网络编程02

1.NIO1.1 NIO通道客户端【应用】客户端实现步骤打开通道指定IP和端口号写出数据释放资源示例代码public class NIOClient { public static void main(String[] args) throws IOException { //1.打开通道 SocketChannel socketChannel = SocketChannel.open(); //2.指定IP和端口号

2021-04-14 18:19:47 63

转载 14-网络编程01

1.网络编程入门1.1 网络编程概述【理解】计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,不同计算机上运行的程序,可以进行数据传输1.2 网络编程三要素【理解】IP地址要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。

2021-04-14 18:17:31 74

转载 12 多线程02

1.线程池1.1 线程状态介绍当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下:public class Thread { public enum State { /* 新建 */ NEW , /* 可运行状态

2021-04-14 18:15:37 69

转载 12-多线程01

1.实现多线程1.1简单了解多线程【理解】是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。1.2并发和并行【理解】并行:在同一时刻,有多个指令在多个CPU上同时执行。并发:在同一时刻,有多个指令在单个CPU上交替执行。1.3进程和线程【理解】进程:是正在运行的程序独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态

2021-04-14 18:14:13 62

转载 11IO流02

1.字符流1.1为什么会出现字符流【理解】字符流的介绍由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流 = 字节流 + 编码表中文的字节存储方式用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文的呢?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数1.2编码表【理解】什么是字符集是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等l计算机要准确的存储和识别各

2021-04-14 18:13:03 56

转载 10IO流01

1.File类1.1File类概述和构造方法【应用】File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的File类的构造方法方法名说明File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File(Strin

2021-04-14 18:11:57 58

转载 09集合03

1.Map集合1.1Map集合概述和特点【理解】Map集合概述interface Map<K,V> K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用public class MapDemo01 { public static void main(String[] args) { //创建集合对象 Map<String,String> map =

2021-04-13 20:38:51 77

转载 08集合02

1.Set集合1.1Set集合概述和特点【应用】不可以存储重复元素没有索引,不能使用普通for循环遍历1.2Set集合的使用【应用】存储字符串并遍历public class MySet1 { public static void main(String[] args) { //创建集合对象 Set<String> set = new TreeSet<>(); //添加元素 set.add("ccc")

2021-04-13 20:38:07 53

转载 07集合01

1.Collection集合1.1数组和集合的区别【理解】相同点都是容器,可以存储多个数据不同点数组的长度是不可变的,集合的长度是可变的数组可以存基本数据类型和引用数据类型集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.

2021-04-13 20:34:29 58

转载 06-常用API02

1.时间日期类1.1 Date类(应用)计算机中时间原点1970年1月1日 00:00:00时间换算单位1秒 = 1000毫秒Date类概述Date 代表了一个特定的时间,精确到毫秒Date类构造方法方法名说明public Date()分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒public Date(long date)分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数示例代码publ

2021-04-13 20:32:54 68

转载 05-常用API01

1.API1.1 API概述【理解】什么是API​ API (Application Programming Interface) :应用程序编程接口java中的API​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。1.2 如何使用API帮助文档【应用】打开帮助文档找到索引选项卡中的输入框在输入框中输入Random

2021-04-13 20:32:06 329

转载 04-接口和内部类

1.接口1.1黑马信息管理系统集合改进 (应用)使用数组容器的弊端容器长度是固定的,不能根据添加功能自动增长没有提供用于赠删改查的方法优化步骤创建新的StudentDao类,OtherStudentDao创建ArrayList集合容器对象OtherStudentDao中的方法声明,需要跟StudentDao保持一致注意:如果不一致,StudentService中的代码就需要进行修改完善方法(添加、删除、修改、查看)替换StudentService中的Da

2021-04-13 20:30:33 68

转载 03-继承

1. 继承1.1 继承的实现(掌握)继承的概念继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法实现继承的格式继承通过extends实现格式:class 子类 extends 父类 { }举例:class Dog extends Animal { }继承带来的好处继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。示例代码public class Fu {

2021-04-13 20:29:37 61

转载 02-分类和static

1.案例驱动模式1.1案例驱动模式概述 (理解)通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题1.2案例驱动模式的好处 (理解)解决重复代码过多的冗余,提高代码的复用性解决业务逻辑聚集紧密导致的可读性差,提高代码的可读性解决代码可维护性差,提高代码的维护性2.分类思想2.1分类思想概述 (理解)分工协作,专人干专事2.2黑马信息管理系统 (理解)Student类 标准学生类,封装键盘录入的学生信息(id , name , a

2021-04-13 20:28:47 73

转载 01Git

1.Git介绍1.1版本控制(理解)无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况1.2开发中存在的问题(理解)程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!几个月来的努力付之东流老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。可是这被改得面目全非的代码已经回不到从前了。小明和老王先后从文件服务器上下载了同一个文件因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被

2021-04-13 20:24:22 74

转载 09 ArrayList集合&学生管理系统

1.ArrayList集合和数组的区别 :​ 共同点:都是存储数据的容器​ 不同点:数组的容量是固定的,集合的容量是可变的1.1 -ArrayList的构造方法和添加方法public ArrayList()创建一个空的集合对象public boolean add(E e)将指定的元素追加到此集合的末尾public void add(int index,E element)在此集合中的指定位置插入指定的元素ArrayList :​ 可调整大小的数组实现​ :

2021-04-13 18:26:23 122

滴答清单pc版 滴答清单安卓 TICKTICK

滴答清单PC版 TickTick_v6.0.2.0.apk TickTick-Pro-v5.0.0_build_5004 TickTick-v4.4.02-build4408

2021-09-08

图书馆管理系统(java与gui界面)附源码,sqlserver数据库,报告

java大作业,附源码,sqlserver数据库,报告一条龙服务,包你满意 管理员模块功能介绍 1.查询图书 2.借阅图书 3.归还图书 4.删除图书 5.添加图书 6.删除用户 7.查询用户 用户模块功能介绍 1.查询图书 2.借阅图书 3.归还图书 4.注册

2020-07-10

c语言超市管理系统源码

c语言简易超市管理系统,控制台输出,可用编译器直接运行 超市管理系统 1.包括管理员和顾客 2.管理员有登入,录入商品信息,显示所有商品信息功能 3.顾客有购物车和结算功能 4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能

2020-07-01

v i s i o 2 0 1 9,不好用你打我

window10 visio2019加教程,简单操作,文件太大没法直接上传,放的是链接

2020-06-23

(Auto.js)淘宝618列车京东618叠蛋糕全自动刷任务.zip

1、打开Auto.js(该软件的相关用法就不细说了,无障碍,悬浮窗权限这些),右下角导入脚本 2、打开淘宝,进入活动页面,点开任务列表界面 3、点击Auto.js悬浮窗,点击脚本列表按钮 4、点击运行按钮 免费领加q群1029065270,也可互助

2020-05-29

护眼神器Iris Pro 中文便携版.zip

护眼神器Iris Pro 中文便携版,可以过滤屏幕有害蓝光,让你夜间阅读更舒适,并有疲劳提醒、健康分析等功能,是保护眼睛、改善睡眠的小助手。是长时间坐在电脑屏幕前面的必备神器!

2020-05-26

空空如也

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

TA关注的人

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