自定义博客皮肤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)
  • 资源 (1)
  • 问答 (25)
  • 收藏
  • 关注

原创 工作中的软件、插件等技术大全(建议收藏,持续更新)

工作中的软件、插件等技术大全(建议收藏,持续更新)

2023-12-19 15:46:16 1183

原创 Redis与MySQL双写一致性如何保证?

四月份的时候,有位好朋友去美团面试。他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。

2023-12-13 08:24:29 456 1

原创 SpringBoot 项目 Jar 包加密,防止反编译

此方案比对上面的方案来说,就简单了许多。在单模块中此方案还算简单,但是现在项目一般都是多模块,一个模块依赖多个公共模块。那么使用此方案就比较麻烦,配置复杂,文档难懂,各模块之间的调用在是否混淆时极其容易出错。只需要在启动类的pom.xml文件中加如下插件即可,需要注意的是,改插件时要放到spring-boot-maven-plugin插件后面,否则不起作用。将此生成好的机器码,放到maven插件中的code里面即可。这样,打包好的项目只能在生成机器码的机器运行,其他机器则启动不了项目。

2023-12-10 23:55:12 478

原创 史上最好用的SSH工具,好用到超出你的想象

给大家推荐一个功能强大,跨平台切风格很现代化的SSH管理工具——Xterminal。

2023-12-31 00:47:55 660

原创 Spring + SpringBoot史上最全的注解说明

有了元注解,那么我就可以使用它来自定义我们需要的注解。结合自定义注解和AOP或者过滤器,是一种十分强大的武器。比如可以使用注解来实现权限的细粒度的控制——在类或者方法上使用权限注解,然后在AOP或者过滤器中进行拦截处理。

2023-12-22 10:29:19 916

转载 Spring Cloud 网关 Spring Cloud Gateway (超级详细版本)

项目增加了API 定义分组),用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。比如我们可以定义一个 API 叫my_api,请求 path 模式为/foo/**和/baz/**的都归到my_api这个 API 分组下面。限流的时候可以针对这个自定义的 API 分组维度进行限流。apiName:分组名。:匹配规则()数组。具体的示例,可以看看配置文件,内容如下:},"items": [},在 Gateway 的filter。

2023-12-22 08:10:50 7272

原创 Rocky Linux 9.3 安装 MinIO 最新版本 (超级详细版本)

根据自己的操作系统找到对应的版本我这里安装的是linux-amd64运行以下 curl 命令将 MinIO 的二进制文件下载到“现在通过下面的 chmod 命令使 MinIO 二进制文件可执行为确保您可以执行 MinIO 二进制文件,您应该将 '' 目录添加到**$PATH**环境变量中。(默认PATH是有的,执行命令查看 echo $PATH)查看版本。

2023-12-21 13:29:58 1263

原创 Rocky Linux 9.3 安装 Jenkins 2.426.2 (超级详细版本)

首次访问新的 Jenkins 实例时,系统会要求您使用 自动生成的密码。也可以执行命令查看密码。

2023-12-21 11:31:10 1299

原创 Rocky Linux 9.3 安装 SonarQube 10.3 (超级详细版本)

安装JDK17安装unzip和wget创建新用户和密码(因为SonarQube要使用非root用户启动)下载资源包(此时使用非root用户操作,用sonarqube用户操作)解压文件赋予sonarqube用户权限。

2023-12-21 11:18:16 941

原创 PO、VO、DO、DAO、BO、DTO、POJO有什么区别,看完你就彻底知道了,详细完整解释

实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接.其中有一些属性及其getter、setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码.

2023-12-20 13:33:00 2212

原创 JAVA编程题-租用游艇

假设某条河有N个游艇出租站1、2、3...N,游客可以在出租站租用游艇,并在下游任何一个出租站归还游艇,出租站i和出租站j之间的租金为R(i,j)其中1

2023-12-20 06:37:51 409

原创 解决你的 Nginx 代理跨域问题详细完整版

如果不加上content-type,则会报如下错误。意思就是预请求响应头Access-Control-Allow-Headers中缺少头信息authorization(各种情况会不一样,在发生跨域后,在自定义添加的头信息是不允许的,需要添加到请求响应头Access-Control-Allow-Headers中,以便浏览器知道此头信息的携带是服务器承认合法的,我这里携带的是authorization,其他的可能是token之类的,缺什么加什么),知道了问题所在,然后修改配置文件,添加对应缺少的部分,再试试。

2023-12-19 15:36:49 4218 4

原创 JAVA编程题-交通工具信息查询系统

输出的结果样式,可跟自己的需求而改变代码复用:避免重复的代码片段。例如,的确定逻辑在创建不同的交通工具时被重复了。这可以提取到一个单独的方法中。可读性:一些魔法数字和字符串(如 "X公司", "Y公司", 300, 500 等)最好定义为常量,以提高代码的可读性和可维护性。条件判断:尽量简化嵌套的条件判断,以减少代码的复杂性。异常处理:对于可能出错的地方(如计算距离、获取城市坐标等),应该加入适当的异常处理。注释:虽然代码已经有注释,但可以进一步精炼和明确,以便更好地描述每个部分的功能和意图。

2023-12-19 08:07:46 1010

原创 编写JAVA优雅代码,强烈建议你学会SOLID

单一职责原则,英文是:Single responsibility principle,简称:SRP。这个名字非常容易让我们望文生义,理解成一个类只干一件事。既然 SOLID 原则是由 Robert C. Martin 提出和完善的,那么可以先看看作者对单一职责原则的描述:单一职责原则 (SRP) 指出,任何一个软件模块都应该有一个且只有一个修改的理由。

2023-12-18 10:35:56 161

原创 改善JAVA代码质量,这些足够你学习

现在的开发大部分是团队合作,因此,代码命名应该在团队内部保持一致,比如:和数据库交互的 Reporitory层,一般都是 CRUD方法的封装,如果团队使用 selectXXX 代表查询,我们就不要使用getXXX 或者 queryXXX,这样检索查询的方法时,可以根据select定位,同理,对于添加数据是使用 addXXX 还是 saveXXX 或者 insertXXX,也需要保持一种方式。近些年,算法在技术面试中的比重越来越大,特别是在一些知名的互联网公司面试,如果代码中能够合理地使用算法,将事半功倍。

2023-12-18 07:57:08 234 2

原创 11种方式实现订单自动取消

由于Redis具有过期监听的功能,于是就有人拿它来实现订单超时自动关闭的功能,但是这个方案并不完美。今天来聊聊11种实现订单超时自动关闭的方案,总有一种适合你!这些方案并没有绝对的好坏之分,只是适用场景的不大相同。DelayQueue是JDK提供的api,是一个延迟队列DelayQueue泛型参数得实现Delayed接口,Delayed继承了Comparable接口。getDelay方法返回这个任务还剩多久时间可以执行,小于0的时候说明可以这个延迟任务到了执行的时间了。compareTo。

2023-12-18 07:32:50 443

原创 Springboot集成支付宝支付---完整详细步骤

两种方式进行配置。这里我采取的是默认方式: 开发者如需使用系统默认密钥/证书,可在开发信息中选择系统默认密钥。注意:使用API在线调试工具调试OpenAPI必须使用系统默认密钥。

2023-12-15 10:48:29 350 1

原创 让你彻底搞懂Redis到底快在哪里

Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Redis执行命令的速度非常快,根据官方给的性能可以达到10w+qps。

2023-12-15 10:14:55 30

原创 xxl-job将要过时,新一代更强大的分布式任务调度框架PowerJob

PowerJob由调度服务器(powerjob-server)和执行器(powerjob-worker)两部分组成,powerjob-server负责提供Web服务和完成任务的调度,powerjob-worker则负责执行用户所编写的任务代码,同时提供分布式计算能力。编写自己的处理器:随便找个地方新建类,继承你想要使用的处理器(各个处理器的介绍可见官方文档,文档非常详细),这里为了简单演示,选择使用单机处理器BasicProcessor,以下是代码示例。需要修改的地方为数据库配置。

2023-12-14 18:32:12 156

原创 史上最全的设计模式总结

所谓抽象工厂模式就是她提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。他允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际产出的具体产品是什么。这样一来,客户就可以从具体的产品中被解耦。它的优点是隔离了具体类的生成,使得客户端不需要知道什么被创建了,而缺点就在于新增新的行为会比较麻烦,因为当添加一个新的产品对象时,需要更加需要更改接口及其下所有子类。其UML结构图如下:参与者:AbstractFactory:抽象工厂。

2023-12-14 11:57:52 46

原创 数据库是否部署在 Docker 容器里,在这里你能找到答案

在一次Docker应用的十大难点专场上,某国有银行的一位架构师也曾提出过:“数据库的性能瓶颈一般出现在IO上面,如果按 Docker 的思路,那么多个docker最终IO请求又会出现在存储上面。因为数据不匹配,新实例不会与现有的实例兼容,如果要限制实例使用单机服务,应该让 DB 使用非容器化环境,我们仅仅需要为计算服务层保留弹性扩展的能力。资源隔离方面,Docker 确实不如虚拟机KVM,Docker是利用Cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。

2023-12-14 08:56:18 104 1

原创 读这篇文章让你彻底了解Redis

在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。我查看了日志,赶紧解释到:“大哥,实在不好意思,刚刚有一个热点数据到了过期时间,被我删掉了,不巧的是随后就有对这个数据的大量查询请求来了,我这里已经删了,所以请求都发到你那里来了”而且就算退一步讲,我能够把过期的数据都删除掉,那万一过期时间设置的很长,还没等到我去清理,内存就吃满了,一样要吃枣药丸,所以我还得想个办法。

2023-12-14 07:42:55 41

原创 SpringBoot 项目默认能同时处理请求数量及原理解析

比如我再给你举一个例子,还是我们的 Demo,只是使用一下 @Async 注解,其他什么都不变:再次启动项目,发起访问,日志输出变成了这样:同时能处理的请求,直接从 Tomcat 的默认 200 个变成了 8 个?因为 @Async 注解对应的线程池,默认的核心线程数是 8。

2023-12-14 07:31:25 267

原创 MySQL中EXPLAIN执行计划的分析

显示MySQL索引所使用的字节数,在联合索引中如果有3列,假如3列字段总长度为100个字节,Key_len显示的可能会小于100字节,比如30字节,这就说明在查询过程中没有使用到联合索引的所有列,只是利用到了前面的一列或2列。输出去数据行所在表的名称,如果表取了别名,则显示的是别名 : 由ID为M,N查询union产生的结果集 / :由ID为N的查询产生的结果。SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作。

2023-12-14 06:48:19 110

原创 值得收藏:一份完整的Mysql高性能优化规范建议

原因:索引NULL列需要额外的空间来保存,所以要占用更多的空间进行比较和计算时要对NULL值做特别的处理。

2023-12-14 06:43:50 31

原创 分库分表,可能真的要退出历史舞台了!

框架层,驱动层,代理层,在过去很长一段时间里,有无数的互联网公司前赴后继的试水,从 TDDL、Cobar,到 MyCat、ShardingSphere,各种层面的中间件也是层出不穷。很长时间以来,国内互联网的做法普遍是采用加入一个中间件的方式来解决,但随着分布式数据库的技术越来越成熟,这些魔法逐渐下沉到它本应该解决的层面--数据库实现层。当你的业务有了常年累积的复杂数据,你可能会采用复杂的分库分表组件,但如果你的业务比较新,可预见的未来会有大量数据,那一个分布式数据库可能是最合适的。

2023-12-13 08:06:39 39

原创 浅谈微服务架构的演进

不过形势紧急,随着每一分每一秒流逝的都是白花花的银子,因此小明也没时间排查问题,当机立断在云上新建了几台虚拟机,然后一台一台地部署新的促销服务节点。另外,也可以考虑分区限流。例如商品服务和订单服务都需要访问促销服务,商品服务由于代码问题发起了大量请求,促销服务则只限制来自商品服务的请求,来自订单服务的请求则正常响应。事后,小明简单写了个日志分析工具(量太大了,文本编辑器几乎打不开,打开了肉眼也看不过来),统计了促销服务的访问日志,发现在故障期间,商品服务由于代码问题,在某些场景下会对促销服务发起大量请求。

2023-12-13 07:02:56 27

原创 LocalDateTime自定义序列化/反序列化解决与前端传输“yyyy-MM-dd HH:mm:ss”格式的数据(记录代码)

会将LocalDateTime序列化为"yyyy-MM-dd HH:mm:ss"会将毫秒级时间戳或"yyyy-MM-dd HH:mm:ss"反序列化为LocalDateTime

2023-12-12 16:29:15 624

原创 还在用 if(obj!=null) 做非空判断?带你快速上手 Optional 实战性理解!

相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止 NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性 Optional来尽量简化代码同时高效处理NPE(Null Pointer Exception 空指针异常)

2023-12-12 14:55:21 39

原创 用 SpringBoot+Redis 解决海量重复提交问题

本篇博客介绍了使用springboot和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响数据一次是非常重要的,它可以防止产生脏数据或者乱数据,也可以减少并发量,实乃十分有益的一件事。token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token。

2023-12-12 00:25:23 480

原创 Git 如何撤回已 Push 的代码

或者像我一样,写了一些感觉以后很有用的优化方案push到线上,又接到了一个新的需求。但是呢,项目比较重要,没有经过测试的方案不能轻易上线,为了承接需求只能先把push上去的优化方案先下掉。有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发。如果你的错误代码不是很多,那么你其实可以通过与你想要恢复到的commit进行对比,然后手动删除错误代码,然后删除不同的代码。需要注意的是对于一些被保护的分支,这个操作是不能进行的。,对于有强迫症的我来说,有点接受不能。

2023-12-12 00:18:29 57

原创 Java 21 新特性的实践,确实很丝滑!

一旦虚拟线程遇到阻塞操作,虚拟线程就会从载体线程中移除(“卸载”),并且载体线程可以执行另一个虚拟线程(新的或之前被阻塞的虚拟线程)。顺序集合为我们提供了defined encounter order(是一种所见即所得的顺序,含义是从队列中取出元素的顺序既是你存放该元素时候的顺序),用于访问第一个和最后一个元素并以相反的顺序迭代。它还提供了一种反转元素的方法。StringBuffer 是线程安全的,而 StringBuilder 是在 Java 5 中添加的,性能更高,但不是线程安全的替代方案。

2023-12-11 10:39:30 453

原创 我的创作纪念日

但是,我相信这些冲突和矛盾只是暂时的,只要我能够保持对创作的热情和动力,就一定能够在工作和学习之余找到适合自己的创作时间段。总之,无论是职业规划还是创作规划,我们都需要保持对未来的憧憬和期待,同时也需要不断努力和拼搏,去实现自己的理想和目标。为了保持创作的持续性,我会找到适合自己的创作时间段,例如晚上或周末,这样可以保证我能够有足够的时间和精力来投入到创作中。同时,我也憧憬着能够有一个平衡的工作和生活,能够有足够的时间和精力去追求自己的兴趣爱好和与家人朋友相处。作为一名创作者,我也有我的机缘。

2023-12-10 23:36:21 31

原创 CentOS8 安装 RabbitMQ【纯安装手册】

由于 rabbitmq 是基于 erlang 语言开发的,所以必须先安装 erlang。最后重启RabbitMQ,通过浏览器访问访问 http://IP:15672。注意:需要服务器防火墙关闭 或 放行15672端口。github访问可以下载这个软件加速器。以上安装完成,开始配置用户权限。以上erlang安装完成。

2023-12-08 14:51:56 535

原创 JAVA文件读取与写文件(实现一个从1.txt修改内倒到2.txt的功能)

【代码】JAVA文件读取与写文件(实现一个从1.txt修改内倒到2.txt的功能)

2023-12-06 14:06:15 74

原创 分页查询 -(记录代码)

想要详细版的代码联系我。

2023-12-01 18:19:39 60

转载 Antimalware Service Executable占用内存过高怎么办? Win11cpu占用率高彻底解决办法

Antimalware Service Executable占用内存过高怎么办? Win11cpu占用率高彻底解决办法_windows11_Windows系列_操作系统_脚本之家 (jb51.net)

2023-11-30 11:07:55 3132

原创 线上系统GC问题如何快速定位与分析?

总结来说,快速定位与分析线上系统的GC问题涉及到日志采集、监控工具的使用、GC日志分析、JVM参数检查以及代码层面的分析。这一系列步骤可以帮助您更准确地定位问题所在,并采取相应的优化措施来解决GC问题。

2023-11-20 15:21:28 300

原创 高并发系统为何建议选择G1垃圾收集器?

G1垃圾收集器通过并行与并发的垃圾回收策略、可预测的停顿时间以及对大堆内存的有效管理,满足了高并发系统的需求。然而,选择G1并不意味着它是所有场景下的最佳选择,根据应用的具体特性和需求,选择适合的垃圾收集器是至关重要的。G1通过优先回收垃圾最多的区域,尽量在设定的停顿时间内完成垃圾回收。随着应用的复杂性增加,许多应用需要更大的堆内存空间。G1垃圾收集器是为处理大堆内存设计的,它可以有效地管理大容量的堆内存,避免长时间的GC停顿。这意味着开发者可以根据应用的性能要求,设定垃圾收集的最大停顿时间。

2023-11-20 15:15:18 256

原创 CMS垃圾收集器的并发更新失败是怎么回事?如何优化?

通常是由于在垃圾收集的过程中,有用户线程仍在运行并尝试更新对象的引用关系,导致垃圾收集器无法正确地完成垃圾回收任务。这种情况下,CMS垃圾收集器会触发一次“并发模式失败”(Concurrent Mode Failure),进而触发一次Full GC来解决问题。最后,需要强调的是,垃圾回收调优是一个持续的过程,需要定期审查和调整。根据应用的实际情况和业务需求,结合监控和分析工具提供的数据,进行有针对性的调优,是实现高效垃圾回收的关键。

2023-11-20 15:09:55 283

JAVA-基于SpringBoot+Vue实现的小区物业管理系统-最优惠的源码

基于SpringBoot+Vue实现的小区物业管理系统,介绍地址:https://download.csdn.net/download/qq_34417433/88628963

2023-12-14

基于SpringBoot+Vue实现的小区物业管理系统介绍

介绍文档,源码下载:https://download.csdn.net/download/qq_34417433/88628962

2023-12-14

windows11轻松设置v1.06

关闭系统中不必要的功能,提高系统性能,提高磁盘空间,提高内存使用率

2023-11-30

彻底关闭windows的Defender【DefenderControl】

彻底关闭windows的Defender

2023-11-30

2023版阿里巴巴java开发手册黄山版

最初的版本,没有名称,只有版本号,从1.0.0开始,发表于浙江大学,后来感觉并不利于传播,改成以五岳来命名。因为华山论剑最有武侠渊源,所以第一个版本叫做《华山版》,封面左侧的码出真功有点向周星驰电影功夫最后的场景《如来神掌》致敬的味道;华山之后,去五岳至尊泰山朝圣,感受东海日出的壮观,用杜甫的名诗:荡胸生曾云,决眦入归鸟。会当凌绝顶,一览众山小。作为封面;泰山之后,去往嵩山少林寺,因为那里有一个金庸先生笔下武功最高的人物——扫地僧,所以封面用了扫地僧的原型。印象最深的是封面,太阳下的扫地僧在台阶上的影子,来来回回还改了好几次,为了逼真,我觉得影子需要有点折子的感觉,表达这是台阶上的影子;嵩山之后,不出意外是恒山版,为此还去了悬空寺,结果无意中发现恒山和衡山的发音居然完全相同,这个在表达上是大忌,增加无谓的共同成本;为此还公开征集下一个版本名称,收到:天山版,屏峰版,玉山版,黄山版...,最后选择了黄山版,是那句诗:五岳归来不看山,黄山归来不看岳,那就遗忘掉以前的版本。

2023-11-29

纯CSS3滑动菜单.zip

纯CSS案例,附有详细文档,本案例支持详细疑问解答。

2020-02-08

MyEclipse软件出问题了,不简单的问题

2018-11-15

MyEclipse软件出问题了

2018-11-15

cocos creator发布微信代码过大

2018-10-04

cocos creator 软件使用场景问题

2018-09-07

Maven和Gradle的使用问题

2018-09-04

企业级移动项目开发的问题

2018-09-03

阿里服务器配置nginx 访问tomcat

2018-08-17

cocos2d-js drawNode 绘制图形

2018-08-15

cocos2d-js lite官方启动报错

2018-08-13

java poi excel 生成图片

2018-08-01

eCharts导出excel问题

2018-07-30

微信小程序使用threee.js

2018-07-10

未能配置Workstation Server

2018-05-14

在javaWEB项目中使用Log4j2详细方法(不是maven项目)

2018-04-23

在微信公众号下启动qq临时会话

2018-04-16

linux服务器中发送email邮件

2018-04-11

关于#java#的问题:想要咨询Flowable流程引擎框架的问题

2024-07-16

BPM流程代码逻辑问题

2024-07-15

IDEA软件设置问题

2024-01-04

docker启动mysql占用内存超高

2023-11-21

SpringBoot用K8s启动报错

2023-09-28

Nacos注解中的占位符使用问题

2023-09-22

Nacos注解配置占位符

2023-09-22

Druid新版本1.1.21的项目中在线监听页面地址是多少?

2020-04-24

SpringBoot使用druid连接池,隔一段时间后,再次访问页面,数据加载时间特别长,有时候会连接超时

2020-03-11

阿里云服务器上安装oracle,SpringBoot项目时间长总是IO 错误: Socket read timed out

2020-03-10

SpringBoot打包jar包或者war被其他web项目使用

2019-08-26

IDEA软件格式化代码HTML ctrl + shift + F总出问题

2019-08-10

CentOS7安装MySQL8.0要负责任解决的回答

2019-06-26

企业中现在用的hadoop版本是多少?hadoop2.x还是3.x

2019-05-02

SpringBoot和MyBatis集合问题

2019-04-13

大数据hadoop3.x.x在win10环境下编译后的jar包

2019-03-29

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

TA关注的人

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