自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java知音

专注于Java技术文章推送,欢迎关注

  • 博客(2378)
  • 资源 (14)
  • 问答 (3)
  • 收藏
  • 关注

转载 SpringBoot 最新版3.x 集成 OAuth 2.0 实现认证授权服务、第三方应用客户端以及资源服务...

前言Spring Boot 3已经发布一段时间,网上关于Spring Boot 3的资料不是很多,本着对新技术的热情,学习和研究了大量Spring Boot 3新功能和新特性,感兴趣的同学可以参考Spring官方资料全面详细的新功能/新改进介绍Spring版本升级到6.xJDK版本至少17+新特性有很多,本文主要针对OAuth 2.0的集成,如果快速开发自己的认证授权服务、OAuth客户端以及资源...

2023-06-11 16:35:17 2821 1

转载 一个 SpringBoot 配置顺序问题,让我直接回滚了代码。。。

问题回顾前天,日常上线了个小迭代。内容是:将接口A切换成了接口B,需求很小,QA也没想着测,就让我自测后走免测上线了。开发完成后,赶紧部署到测试环境验证了下,没啥问题,perfect!可以上线了。我兴奋地在线上一通构建,程序很快上线了。没一会,发现系统疯狂报错。瞅着错误栈里调用的接口url我一看,惊讶地大喊:“怎么线上请求到测试环境了!”。赶紧回滚代码。所幸,系统在代码回退后报错停止了。但是光回退...

2023-06-10 16:45:55 116

转载 当 Redis 碰上 @Transactional,有大坑,要注意!

最近项目的生产环境遇到一个奇怪的问题:现象:每天早上客服人员在后台创建客服事件时,都会创建失败。当我们重启这个微服务后,后台就可以正常创建了客服事件了。到第二天早上又会创建失败,又得重启这个微服务才行。初步排查:创建一个客服事件时,会用到 Redis 的递增操作来生成一个唯一的分布式 ID 作为事件 id。代码如下所示:returnredisTemplate.opsForValue().incr...

2023-06-09 10:05:05 259

转载 Jenkins 也宣布弃用 Java 8,你还在坚守吗?

开源 Devops 工具Jenkins宣布:从从 Jenkins 2.357 和LTS 版本开始,Jenkins 最低需要 Java 11。Jenkins 最初称为 Hudson ,是一款老牌持续集成工具,至今已创立十多年。自 2005 年成立以来,Jenkins 项目经历了多次 Java 迁移。目前从 Java 8 到 Java 11 的迁移与 Jenkins 项目中的迁移历史是一致...

2023-06-09 10:05:05 168

转载 三分钟了解 SpringBoot 的启动流程

0.前言背景:最近有位开发同学说面试被问到Spring Boot 的启动流程,以及被问到Spring Boot 的嵌入式Web容器是什么时候加载的。如何加载的。是怎么无缝切换的。这些问题,其实回答起来也是比较复杂的。我们今天就从 SpringApplication.run(EasyPaasAdminApplication.class, args);入口,逐渐向下看下执行流程。来试着回答一下前面这两...

2023-06-08 10:05:46 799

转载 最强 Linux 命令总结(特别推荐版)

虽然平时大部分工作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行环境中. 自己记忆力不好, 很多有用的Linux命令不能很好的记忆, 现在逐渐总结一下, 以便后续查看.基本操作Linux关机,重启#关机shutdown-hnow#重启shutdown-rnow查看系统,CPU信息#查看系统内核信息una...

2023-06-07 10:05:55 38

转载 Java:你还在用 lsit.contain 做去重? 你是故意的还是不小心的?

前言最近又是一轮代码review , 发现了一些实现去重的代码,在使用 lsit.contain ......如:我沉思,是不是其实很多初学者也存在这种去重使用问题?所以我选择把这个事情整出来,分享一下。正文首先是造出一个 List<String> 模拟数据,一共2W条,里面有一半数据1W条是重复的:publicstaticList<String>getTestLis...

2023-06-07 10:05:55 125

转载 十分钟开发一款应用,这15个国产低代码开发平台太秀了!

“低代码开发”最早可追溯到20世纪90年代至21世纪初的编程语言和工具(百度百科)。阿里云智能总裁张建锋在钉钉6.0发布会上也表示,“低代码开发”,将成为新一代的软件开发方式。一、什么是“低代码开发平台”“低代码开发平台”,英文全称“Low-Code Development Platform”,简称LCDP,是通过少量代码或零代码就可以快速生成新应用的开发平台。其实就是让不懂写代码的用户,或者技术...

2023-06-04 11:30:24 1367

转载 SpringBoot 监控神器——Actuator 保姆级教程

SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等配置Actuatorpom.xml<!--webstart--><dependency><groupId>org.springframework.boot</groupId>&l...

2023-06-03 16:35:36 6902 2

转载 Excel百万级数据导入导出,EasyExcel 才是 yyds

在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。很多问题只要这一次解决了,总给复盘记录,后期遇到同样的问题就好解决了。好啦,废话不多说开始正文!1.传统POI的的版本优缺点比较其实想到数据的导入导出,理所当然的会想到apache的poi技术,以及Exc...

2023-06-03 16:35:36 1725

转载 五个步骤,助你优雅的写好 Controller 层代码!

Controller 层逻辑MVC架构下,我们的web工程结构会分为三层,自下而上是dao层,service层和controller层。controller层为控制层,主要处理外部请求,调用service层。一般情况下,controller层不应该包含业务逻辑,controller的功能应该有以下五点:⑴、接收请求并解析参数⑵、业务逻辑执行成功做出响应⑶、异常处理⑷、转换业务对象⑸、调用 Serv...

2023-06-02 10:06:02 742

转载 SpringBoot项目怎么设计业务操作日志功能?

前言很久以前都想写这篇文章,一直没有空,但直到现在我对当时的情景还有印象,之所以有印象是因为需求很简单,业务操作日志的记录与查询的功能,但是具体实现真的很烂,具体的烂法会在反面示例里细说,领导以及客户层面很认可,一系列迷之操作,让我印象深刻。需求描述与分析客户侧提出需求很简单:要对几个关键的业务功能进行操作日志记录,即什么人在什么时间操作了哪个功能,操作前的数据报文是什么、操作后的数据报文是什么,...

2023-06-02 10:06:02 434

转载 用好 DDD 必须先过 Spring Data 这关!

1. 面向对象设计是 DDD 的核心DDD 着重于将业务领域中的概念和对象映射到对象中,使对象模型能够更好地反映业务的真实情况,从而使设计更具可理解性和可维护性。DDD 是一种领域驱动的设计方法,旨在通过建立对领域模型的清晰理解来解决业务问题。和事务脚本不同,DDD 使用面向对象设计来应对复杂的业务场景。简单来说,DDD 是由领域对象承载业务逻辑,所有的业务操作均在模型对象上完成,同一对象上不同的...

2023-06-01 10:05:47 291

转载 MySQL高级进阶:索引优化

一. 索引介绍1.1 什么是Mysql索引MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。MySQL在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据,这样我们就可以通过数据结构上实现的高级查找算法来快速找到我们想要的数据。而这种数据结构就是索引。简单理解为“排好序的可以快速查找数据的数据结构”。1.2 索引数据结构下...

2023-06-01 10:05:47 144

转载 使用Jsoup对Web网页知识进行爬取并转换成Excel(Java版)

背景随着后疫情时代的到来,在过去的2022年,全国的经济情况,想必是很多学者和研究对象都非常关心的事。而这些数据在国家统计局网站上都有相应的记录。通过分析这些数据,可以从某一个角度来验证和观察当下的经济情况。全国共计有1279个县级单位已经披露了2022年GDP和一般公共预算收入数据情况,企业预警通根据这些数据整理出中国百强县gdp排行榜和百强县一般公共预算收入排行榜。其中昆山市以5006.66亿...

2023-05-31 10:05:07 400

转载 别再乱用了,BeanUtils.copyProperties 使用中的这些坑你一定要知道!

前言我们日常开发中,经常涉及到DO、DTO、VO对象属性拷贝赋值,很容易想到org.springframework.beans.BeanUtils的copyProperties。它会自动通过反射机制获取源对象和目标对象的属性,并将对应的属性值进行复制。可以减少手动编写属性复制代码的工作量,提高代码的可读性和维护性。但是你知道嘛?使用BeanUtils的copyProperties,会有好几个坑...

2023-05-31 10:05:07 2452

转载 Java8特性之Optional:如何干掉空指针?

Optional的作用是什么?他都有哪些方法?阿里规范点名说尽量用Optional来避免空指针,那么什么场景用Optional?本篇文章围绕这三点来进行讲解。目录一、Optional类的来源二、Optional类是什么?三、Optional类用法四、代码示例1、创建Optional类2、判断Optional容器中是否包含对象3、获取Optional容器的对象4、过滤5、映射五、什么场景用Optio...

2023-05-30 10:05:21 113

转载 Nginx 轻松搞定跨域问题

当你遇到跨域问题,不要立刻就选择复制去尝试。请详细看完这篇文章再处理 。我相信它能帮到你。分析前准备:前端网站地址:http://localhost:8080服务端网址:http://localhost:59200首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的当网站8080去访问服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种情况都列举出来并通...

2023-05-30 10:05:21 24231 7

转载 为什么不用 Go 开发操作系统?

本文整理自 GoLand 官方博客的一篇文章:《OS in Go? Why Not?》,探讨了为什么像 C 这样的编程语言在 OS 开发中占据优势,以及是否可以使用 Go 编写 OS。此外还提到了用 Go 开发操作系统的可行性、局限性,以及目前的部分成果。操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly ...

2023-05-29 10:06:00 54

转载 你见过哪些目瞪口呆的 Java 代码技巧?

作者:java小瓜哥来源:juejin.cn/post/6844903954308939784导语自从毕业后,今年已经是我工作的第 8 个年头了,我甚至都快忘记了到底是那年毕业的。从出来本人一直在做 Java 相关的工作,现在终于有时间坐下来,写一篇关于 Java 写法的一篇文章,来探讨一下如果你真的是一个 Java 程序员,那你真的会写 Java 吗?笔者是一个务实的程序员,故本文绝非扯淡文章,...

2023-05-29 10:06:00 361

转载 分库分表的 21 条法则,hold 住!

还是不着急实战,咱们先介绍下在分库分表架构实施过程中,会接触到的一些通用概念,了解这些概念能够帮助理解市面上其他的分库分表工具,尽管它们的实现方法可能存在差异,但整体思路基本一致。因此,在开始实际操作之前,我们有必要先掌握这些通用概念,以便更好地理解和应用分库分表技术。我们结合具体业务场景,以t_order表为例进行架构优化。由于数据量已经达到亿级别,查询性能严重下降,因此我们采用了分库分表技术来...

2023-05-28 16:35:16 63

转载 开源一个网页版的 Xshell,支持 FTP 和 SFTP 两种方式!

介绍该平台类似于网页版的Xshell,基于cookie和json的方式存储登录信息无数据库更方便兼容每个用户的使用,支持SFTP和FTP两种登录方式,打破原有黑端显示命令行和文件名的方式,以div的方式展示文件图,支持命令输入,报错输出。目前代码已开源,代码规范支持开闭原则,你可以添加新的连接方式如 SSH LOCAL 等 目前代码中有ssh代码连接示例,你可以在它原有的基础上做改善1.首页2.点...

2023-05-28 16:35:16 586

转载 2023最新互联网公司工作时长排行榜出炉,第一名居然是它.....

今天给大家分享一个对于选择公司来说另一个非常重要的参考指标:“互联网时长”。正文图片我们在选择一个公司的时候,除了需要关注总收入package以外,还需要考虑这家公司的加班时长是否人性化。大概一年前的这个时候,职级对标就在提交薪酬表单中增加了提交工作时长功能。因为在讨论薪酬的时候,工作时长是一个决定性的指标。我们的工作时长是周工作小时数。法定工作时间是40小时(965)。大小周通常折算为周工作6...

2023-05-27 16:35:43 67

转载 聊聊分页列表缓存

开源中国的红薯哥写了很多关于缓存的文章,其中多级缓存思路,分页列表缓存这些知识点给了我很大的启发性。写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。1 直接缓存分页列表结果这是最简单易懂的方案,我们按照不同的分页条件查询出结果后,直接缓存分页结果 。伪代码如下:publicList<Product>getPageList(Stringparam,intpage...

2023-05-27 16:35:43 82

转载 一个非常牛逼的开源中后台模版项目

简介Soybean Admin 是一个基于 Vue3、Vite3、TypeScript、NaiveUI、Pinia 和 UnoCSS 的清新优雅的中后台模版,它使用了最新流行的前端技术栈,内置丰富的主题配置,有着极高的代码规范,基于文件的路由系统以及基于 Mock 的动态权限路由,开箱即用的中后台前端解决方案,也可用于学习参考。特性最新流行技术栈: 使用 Vue3/Vite 等前端前沿技术开发, ...

2023-05-26 10:05:30 53

转载 SpringCloud Alibaba 之 Nacos 集群部署+高可用保证

官方推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面。http://nacos.com:port/openAPI 域名 + SLB模式(内网SLB,不可暴露到公网,以免带来安全风险),可读性好,而且换ip方便,推荐模式:Nacos 集群架构的设计要点:微服务并不是直接通过 IP 地址访问后端服务,而是采用域名访问。通过 DNS(域名解析服务)转换为具体的 IP 地址,通过域名方式屏蔽...

2023-05-25 10:05:54 312

转载 基于 SpringBoot 实现多租户架构:支持应用多租户部署和管理

一、概述1 什么是多租户架构?多租户架构是指在一个应用中支持多个租户(Tenant)同时访问,每个租户拥有独立的资源和数据,并且彼此之间完全隔离。通俗来说,多租户就是把一个应用按照客户的需求“分割”成多个独立的实例,每个实例互不干扰。2 多租户架构的优势更好地满足不同租户的个性化需求。可以降低运维成本,减少硬件、网络等基础设施的投入。节约开发成本,通过复用代码,快速上线新的租户实例。增强了系统的可...

2023-05-24 10:05:06 408

转载 SpringBoot + Docker 实现一次构建到处运行

一、容器化部署的好处Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。最重要的是一致的运行环境。Docker 的镜像提供了除内核外完整的运...

2023-05-23 10:20:25 76

转载 12 张图 | 硬刚了一波,三层缓存架构

一、前言上一讲我们讲到了 Eureka 注册中心的 Server 端有三级缓存来保存注册信息,可以利用缓存的快速读取来提高系统性能。我们再来细看下:一级缓存:只读缓存 readOnlyCacheMap,数据结构 ConcurrentHashMap。相当于数据库。二级缓存:读写缓存 readOnlyCacheMap,Guava Cache。相当于 Redis 主从架构中主节点,既可以进行读也可以进行...

2023-05-22 10:05:46 481

转载 绝了,60K*16薪!看看人家的技术水平

现在很多公司的招聘信息,都会有这这么一条要求:有分布式、高并发、高可用系统设计\开发和性能调优经验者优先。说到性能调优,大部分程序员都是知道这玩意但日常也做不上,也看过相关知识,但就是没有怎么实践过,或者转头就忘了...但是在面试中,面试官经常会问有没有做过性能调优相关的工作?倒不是为了让你回答有没有做过,而是通过应聘者对缓存相关知识的理解深入程度,来判断其开发经验和学习能力。所以需要积累一定的高...

2023-05-22 10:05:46 92

转载 SpringBoot 四大核心组件,还有人不知道?

前言先透露一下,四大组件分别是:starter, autoconfigure,CLI 以及actuator。下面我们就来详细介绍一些他们有什么用。一、Spring Boot Starter1.1 Starter的应用示例<dependency><groupId>org.springframework.boot</groupId><art...

2023-05-21 16:35:17 61

转载 公司新来了一个同事,把权限系统设计的炉火纯青!

思维导图如下RBAC权限分析RBAC 全称为基于角色的权限控制,本段将会从什么是RBAC,模型分类,什么是权限,用户组的使用,实例分析等几个方面阐述RBAC思维导图绘制思维导图如下什么是RBACRBAC 全称为用户角色权限控制,通过角色关联用户,角色关联权限,这种方式,间阶的赋予用户的权限,如下图所示对于通常的系统而言,存在多个用户具有相同的权限,在分配的时候,要为指定的用户分配相关的权限,修改的...

2023-05-20 16:30:46 70

转载 SpringBoot + 规则引擎 URule,真的很强!

没有规则,不成方圆;一、背景前段时间,在做项目重构的时候,遇到很多地方需要做很多的条件判断。当然可以用很多的if-else判断去解决,但是当时也不清楚怎么回事,就想玩点别的。于是乎,就去调研了规则引擎。当然,市面上有很多成熟的规则引擎,功能很多,性能很好。但是,就是想玩点不一样的(大家做技术选型别这样,这个是反面教材)。最终一款URule的规则引擎吸引了我,主要还是采用浏览器可直接配置,不需要过多...

2023-05-20 16:30:46 276

转载 不愧是腾讯,问的贼细

最近有位小伙伴被腾讯的面试题问懵了,大家来看看是怎么考察的,主要是后端的。Java集合主要是hashmap实现原理。多线程问AQS源码、并发工具类源码、锁的实现原理、阻塞队列源码、线程池实现原理。Jvm问内存结构和垃圾回收机制加Jvm优化参数配置。Springi问ioc和aop原理,bean的生命周期。Redis问数据类型、线程模型、持久化机制、主从复制原理、高可用原理、redis cluster...

2023-05-19 14:06:53 169

转载 为什么 Nginx 比 Apache 更牛叉?

一、Apache三种工作模式1、prefork的工作原理2、worker的工作原理3、event 基于事件机制的特性二、如何提高Web服务器的并发连接处理能力三、Nginx优异之处四、Nginx 工作原理五、Nginx 的诞生主要解决C10K问题1、select模型:(apache使用,由于受模块等限制,用的不多);2、poll:poll是unix沿用select自己重新实现了一遍,唯一解决的问题...

2023-05-19 14:06:53 299 1

转载 6000 字 | 16 图 | 深入理解 Spring Cloud Gateway 的原理

本篇给大家带来的是微服务框架中非常重要的一个组件:API 网关前言在 PassJava 项目中,我用到了 Spring Cloud Gateway 作为 API 网关,客户端的所有的请求都是先经过网关,然后再转发到会员微服务、题目微服务等。比如 API 网关和会员微服务对应的访问地址如下:API 网关地址:http://localhost:8060会员微服务地址:http://localhost:...

2023-05-18 10:05:33 99

转载 k8s 企业级管理神器:Rancher 你值得拥有!

一、Rancher 简介Rancher 是为使用容器的公司打造的容器管理平台,通过 Rancher,企业不再需要使用一系列开源软件从零开始构建一个容器服务平台。同时 Rancher 还提供了一个全栈容器部署和管理平台,用于管理 Docker 和 Kubernetes。1.Rancher API Server 的功能Rancher API Server 是基于嵌入式 Kubernetes API S...

2023-05-18 10:05:33 677

转载 从简历、技巧到面试题精讲,带你搞定Java面试

最近收到小伙伴的反馈:事实也确实是这样,如今不像从前,会个CRUD就可以随随便便找个10几k的工作,现在面试中级的话都从底层问到框架,从jvm,juc底层问到消息队列高并发了,还问SQL的调优。至于高级都是对于消息队列、缓存、分布式等各种主流技术还需要知道原理!其实这些技术在真正的实际开发环境中真的用得到吗?不一定的,但是没办法,环境就是如此,能做的也就只有不断提升自己,去适应市场环境,提高自身技...

2023-05-17 10:06:01 77

转载 Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用

1:引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.5.RELEASE</version>&...

2023-05-17 10:06:01 236

转载 分类树菜单,我从2s优化到0.1s

分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中。但就是这样一个简单的分类树查询功能,我们却优化了5次。到底是怎么回事呢?背景我们的网站使用了SpringBoot推荐的模板引擎:Thymeleaf,进行动态渲染。它是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它提供了一个用于整合SpringMVC的可选模块,在应用开发中,我们可以使用Thy...

2023-05-16 10:05:52 99

icepdf包文件

Java实现PDF转换为图片,图片的裁剪,图片的拼接,图片再转回PDF功能实现所需要的jar,包括五个:icepdf的四个和itext的一个。

2017-09-20

操作PDF的jar包

使用iText操作PDF,你可能需要的几个包!

2017-08-09

springMVC三种数据转换的Demo

springMVC三种数据转换方法的Demo

2017-07-19

CRM客户关系管理系统

jsp+servlet+Oracle写的客户关系管理系统,练习项目,有的地方可能有缺陷。对实际开发作用不大,对于练手,课程设计之类的绰绰有余。不缺积分,设置4分主要防止伸手党,没积分的私信发百度云链接

2017-06-26

json开发包

spring等Javaweb开发中,使用json传值必备包

2017-05-25

H5实现多图片预览上传,可点击可拖拽

H5实现多图片预览上传,可点击可拖拽,样式漂亮,接口简单

2017-04-20

simditor富文本编辑器控件

simditor富文本编辑器控件,轻巧强悍,可嵌入网站中直接使用

2017-04-13

ServletContextListener完成在线人数统计和显示人员列表

ServletContextListener完成在线人数统计和显示人员列表

2017-04-12

smartupload.jar

smartupload.jar 文件上传必备包

2017-04-08

jQuery最全版本类库资源(含各个版本)

jquery类库资源,包含目前各个版本,一次下载,需要哪个就可以用哪个,不必四处找。

2016-12-15

Java连接MySQL的驱动包mysql-connector-java-5.1.34-bin.jar

Java连接MySQL的驱动包mysql-connector-java-5.1.34-bin.jar,在Javaweb项目中一般放置在WebRoot/WEB-INF/lib/目录下,Java连接MySQL必不可少。

2016-12-11

博客管理系统

使用jsp+servlet+MySQL开发的具有基本功能的博客开发系统,适合新手学习,继续完善的一个项目,深入了解jsp+servlet有利于学习各种开发框架。 实现了发布博文,对博文,博文分类,博文评论,注册用户进行管理等等功能。

2016-12-11

仿QQ可点击滑动的tab界面

模仿QQ可点击滑动的tab界面,简单,适合新手下载学习

2016-10-26

仿微信QQTab界面,可点击可滑动

开发工具为eclipse,代码已经经过测试,可以运行,直接可以导入测试学习,简单,适合新手学习!

2016-10-26

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

TA关注的人

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