自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记

梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记

  • 博客(232)
  • 资源 (7)
  • 问答 (2)
  • 收藏
  • 关注

原创 组合型回溯模板题

文章有的可能是格式问题,可以从这里看原文https://www.yuque.com/pkqzyh/nfi24z/gqc6wxxbkc67sinh#h1fq0。

2025-04-03 16:45:31 344 1

原创 环形链表相关题目

快指针 fast 每轮走两步,慢指针每轮走一步,因此当快指针遍历完链表时,慢指针就指向链表中间节点。链表长度为奇数: 当 fast 走到链表「尾节点」时,slow 正好走到「中间节点」。链表长度为偶数: 当 fast 走到「null」时(越过「尾节点」后),slow 正好走到「第二个中间节点」。总结以上规律,应在当 fast 遇到或越过尾节点 时跳出循环,并返回 slow 即可。若题目要求返回「第一个中间节点」,则应在 fast 遇到尾节点或其前驱节点 时跳出循环。

2025-04-03 16:36:14 269

原创 反正链表相关题目

如果链表为空,或者链表只有一个结点,那么就可以直接返回头结点,因为此时不需要进行反转。否则的话,我们就通过迭代来进行反转,需要定义几个变量,pre,curr,next,对这几个结点来进行操作。输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1],请你反转链表,并返回反转后的链表。

2025-04-03 16:34:38 222

原创 06-公寓租赁项目-后台管理-公寓管理篇

https://www.yuque.com/pkqzyh/qg2yge/5ba67653b51379d18df61b9c14c3e946房间支付方式管理共有三个接口,分别是查询全部支付方式列表、保存或更新支付方式和根据ID删除支付方式,下面逐一实现。首先在中注入依赖,如下1.1.1 查询全部支付方式列表在中增加如下内容知识点:注意:逻辑删除功能只对Mybatis-Plus自动注入的sql起效,也就是说,对于手动在文件配置的sql不会生效,需要单独考虑。1.1.2 保存或更新支付方式在中增加

2025-04-03 16:22:17 1020 2

原创 05- 尚庭公寓项目搭建

资料中提供了所有的Controller代码,并且Controller中定义好了每个接口(只有定义,没有实现),大家可直接导入接口定义相关的代码,然后只专注于接口逻辑的实现。导入代码模块包名/路径说明controllerweb-admin略voweb-adminView Object,用于封装或定义接口接受及返回的数据结构resultcommon统一定义接口返回的数据结构。

2025-04-03 15:57:15 434

原创 04-公寓租赁项目-开发准备篇

MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑强大的 CRUD 操作:内置通用 Mapper、通用 Service,提供了大量的通用的CRUD方法,因此可以省去大量手写sql的语句的工作。条件构造器:提供了强大的条件构造器,可以构造各种复杂的查询条件,以应对各种复杂查询。内置分页插件。

2025-03-24 15:02:00 593

原创 05-公寓租赁项目-项目搭建篇

资料中提供了所有的Controller代码,并且Controller中定义好了每个接口(只有定义,没有实现),大家可直接导入接口定义相关的代码,然后只专注于接口逻辑的实现。导入代码模块包名/路径说明controllerweb-admin略voweb-adminView Object,用于封装或定义接口接受及返回的数据结构resultcommon统一定义接口返回的数据结构。

2025-03-24 14:59:18 1010

原创 04-公寓租赁项目-开发准备篇

MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑强大的 CRUD 操作:内置通用 Mapper、通用 Service,提供了大量的通用的CRUD方法,因此可以省去大量手写sql的语句的工作。条件构造器:提供了强大的条件构造器,可以构造各种复杂的查询条件,以应对各种复杂查询。内置分页插件。

2025-03-20 16:00:23 636

原创 03-公寓租赁项目-接口定义篇

属性管理页面包含公寓和房间各种可选的属性信息,其中包括房间的可选支付方式房间的可选租期房间的配套公寓的配套等等。其所需接口如下房间支付方式管理****页面如下所需接口如下查询全部支付方式列表保存或更新支付方式根据ID删除支付方式房间租期管理****页面如下所需接口如下查询全部租期列表保存或更新租期根据ID删除租期标签管理****页面如下所需接口如下保存或更新标签查询标签列表根据ID删除标签配套管理****页面如下所需接口如下保存或更新配套查询配套列表根据ID删除配套。

2025-03-20 15:57:25 787

原创 02-公寓租赁项目-数据库设计篇

下图是一个简易的选课系统的实体关系图,其中方框代表实体,方框之间的连线则代表实体间的关系,连线两端的不同符号用于表示一对一、一对多、多对多的关系。相较于概念模型,逻辑模型会包含更多的细节信息,例如实体的属性、用于关联两个实体的字段等等。相较于逻辑模型,物理模型会包含更多的与所选数据库相关的具体信息,例如存储引擎、字段类型、索引等信息。概念模型是一个粗略的初步设计,其只关注实体和关系,不体现最终建表所需的各种细节信息(例如实体的属性)。(最小值是一,最大值是多),其表达的含义就是班级和学生之间的关系为。

2025-03-20 15:36:53 990

原创 01-公寓租赁项目-介绍篇

开发流程和尚庭公寓项目介绍一、开发流程介绍1.1 项目开发流程1.2 关键点总结1.3 接口总结和参考二、尚庭公寓项目概述2.1 项目业务概述2.2 移动端2.3 后台管理系统2.4 核心业务流程2.5 项目技术概述三. 项目原型前后端分离项目的完整开发流程如下第一步由产品经理负责分析市场、用户需求,并将其转化为详细的产品需求。然后创建初步的产品原型,以便更好地理解和传达产品的设计和功能。原型通常指的是产品、系统或概念的初步版本或样品,旨在展示设计概念、功能、外观或其他关键特征。第二步。

2025-03-20 15:25:23 741

原创 MySQL日志

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。作用:保证数据的一致性查询 张三 账户余额张三 账户 -1000李四 账户 +1000如果第二步骤到第三步骤出现了异常情况报错,则出现数据不一致问题。因此需要事务来完成,业务逻辑执行之前开启事务,执行 完毕后提交事务。如果执行过程中报错,则回滚事务,把数据恢复到事务开始之前的状态。

2024-08-27 16:01:15 837 4

原创 MySQL索引

索引(index)是MySQL中高效获取数据的树结构(有序),数据库索引允许快速访问数据库表中的特定信息。没有索引,数据库系统必须对表中的每一行数据进行扫描,以找到匹配的行。这种全表扫描在数据量较小时尚可接受,但随着数据量的增加,性能将急剧下降索引虽然可以提高查询效率,但它们也有成本。首先,索引需要额外的存储空间。其次,当对表中的数据进行增加、删除或修改操作时,索引也需要被更新,这会增加额外的写操作开销。因此,设计高效的索引策略需要在查询性能和维护成本之间找到平衡。

2024-08-27 15:58:49 1058 2

原创 JVM入门

JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。JVM是JRE的一部分,安装了JRE就相当于安装了JVM,可以运行Java程序JVM本质上是一个运行在计算机上面的程序,它的职责是运行Java字节码文件Java虚拟机(JVM)是一个抽象的计算平台,能够在各种操作系统上提供Java程序的运行环境,而不需要程序员考虑底层系统的架构和具体细节。Java源代码的执行流程如下编写Java源代码文件。

2024-08-26 16:59:24 1268 4

原创 SpringBoot+OSS实现文件上传

spring boot+oss实现文件上传

2024-07-06 18:33:24 637

原创 Docker基础入门

我们平时需要关注各种版本的迭代,不同版本环境的兼容问题,可能某个代码在A的系统可以运行,但是在B的系统就无法运行,因为它们的环境配置可能是不一样的,这样就会很麻烦。:::infoDocker发展迅速的原因是因为它给出了一个标准化的解决方案——系统平滑移植,容器虚拟化技术。不同主机的环境配置可能都不一样,如果每次换一台机器,我们都要重新配置环境,那么就会很麻烦。软件可不可以带环境安装呢?安装的时候,把原始环境一模一样的复制过来,开发人员利用Docker可以消除协作编码时"在我的机器上可正常工作"的问题。

2024-06-09 16:14:52 1739 2

原创 苍穹外卖——微信登录,商品浏览

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。发送HTTP请求接收响应数据为什么要在Java程序中发送Http请求?有哪些应用场景呢?当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时。

2024-06-09 13:41:24 1168

原创 苍穹外卖——店铺营业状态设置

进到苍穹外卖后台,显示餐厅的营业状态,营业状态分为和,若当前餐厅处于营业状态,自动接收任何订单,客户可在小程序进行下单操作;若当前餐厅处于打烊状态,不接受任何订单,客户便无法在小程序进行下单操作。点击按钮时,弹出更改营业状态选择营业,设置餐厅为状态选择打烊,设置餐厅为状态。

2024-06-03 20:48:53 1406 2

原创 苍穹外卖——菜品管理

1). 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。2). 在更新数据时, 将updateTime 设置为当前时间, updateUser设置为当前登录用户ID。如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐,那能不能对于这些公共字段在某个地方统一处理,来简化开发呢?答案是可以的,我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。在实

2024-06-03 20:34:39 1416

原创 快速排序算法备考

我们知道快排在进行一次划分后,该元素的左边元素都比它小,右边都比它大。思路:想办法让右边元素大,左边元素小,而且尽量要把数组尽量平分,想到快排的划分思想,为了满足上述条件,右半部分的元素不能比左边元素个数少。主元素的元素数量超过数组长度的一半,如果数组有序,并且存在主元素,那么主元素一定在数组的中间位置。把数组A排成递增有序数列,排序后集合A1为[0,n/2-1],集合A2为[n/2n-1]第k小,说明左边有k-1个元素比它小,利用快排的划分思想,只要返回下标为k即可。右边:n/2~n-1。

2024-05-27 11:31:10 393

原创 PV操作大题强化

每个干饭人进入食堂后,需要做这些事:拿一个盆打荤菜,再拿一个盆打素菜,再拿一个盆打汤,再拿一个盆打饭,然后找一个座位坐下干饭,干完饭把盆还给食堂,然后跑路。上面这种做法,限制了人数上限,且先拿盆,再占座,一定不会发生死锁。事实上,如果座位的数量满足seat ≤ (N-1)/3,那么甚至可以不设置专门的信号量x,完全可以先占座,后拿盆,也一定不会死锁。在哲学家问题中,共有5个哲学家,如果我们限制“最多允许4个哲学家同时进餐",那么至少会有一个哲学家可以同时获得左右两只筷子,并顺利进餐,从而预防了死锁。

2024-05-12 16:31:48 923

原创 苍穹外卖——员工管理,分类管理

苍穹外卖项目

2024-04-09 20:01:45 1269 1

原创 苍穹外卖——项目搭建

本项目(苍穹外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 系统管理后台 和 小程序端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。接下来,通过功能架构图来展示管理端和用户端的具体业务功能模块。1). 管理端功能员工登录/退出 , 员工信息管理 , 分类管理 , 菜品管理 , 套餐管理 ,

2024-04-05 01:46:05 5654

原创 MybatisPlus学习总结

简介 | MyBatis-PlusMyBatis Plus是一个基于MyBatis的增强工具,它简化了MyBatis的使用,提供了一系列的增强功能,使开发更加方便快捷。无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用。

2024-03-28 20:20:29 1184

原创 计算机网络概述

三网融合:计算机网络,有线电视网络,电信网络计算机网络:是一个把的、具有的计算机系统,通过和连接起来,由功能完善的软件实现的系统计算机网络是的,的计算机集合互连:通过通信链路互联互通。

2023-08-24 15:43:40 680 2

原创 SpringCloud Sleuth分布式链路请求跟踪

分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程!pring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkin(负责展现)Spring Cloud Sleuth实现了一种分布式的服务链路跟踪解决方案,通过使用Sleuth可以让我们快速定位某个服务的问题。简单来说,Sleuth相当于调用链监控工具的客户端,集成在各个微服务上,负责产生调用链监控数据。

2023-03-26 22:14:20 2805 10

原创 Spring Cloud:网关Gateway

不同的微服务一般来说会有不同的网络地址,客户端在访问的时候,如果需要记住这些地址的话,其实是很复杂的,而且也很难进行维护客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度在某些场景下存在跨域请求的问题加大身份认证的难度,每个微服务需要独立认证因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服 务网关。1、易于监控2、易于认证3、减少了客户端与各个微服务之间的交互次数API网关是一个服务器,是系统对外的唯一入口。

2023-01-25 22:58:38 2739 8

原创 Spring Cloud:服务熔断Hystrix

Hystrix是由Netflflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失 败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用 了设计模式中的“命令模式”。跳闸机制:当某服务的错误率超过一定的阈值时,Hystrix可以自动或手动跳闸,停止请求该服务 一段时间。资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。

2023-01-14 23:21:49 4239 1

原创 OpenFeign服务接口调用

Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件(例如** Eureka、Ribbon 以及 Hystrix** 等)一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Feign。Feign 对Ribbon进行了集成,利用 Ribbon 维护了一份可用的服务列表信息,并且通过轮询实现了客户端的负载均衡。

2023-01-03 16:51:02 3626 45

原创 Ribbon负载均衡服务调用

Ribbon是 Netflflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中,Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务。

2022-11-24 14:30:34 1547 9

原创 怎样减少报表开发中的存储过程

存储过程有它的优势所在,但存在的弊端也很明显,放到报表应用中,有些还会被成倍放大到不可忍受,但技术总在进步,润乾报表的SPL计算层,就是存储过程很好的替代技术,它类似“库外存储过程”,有着比存储过程更好的过程控制等复杂计算的能力,还没有它身上的坏毛病,润乾报表本身又是报表行业的头部厂商,专注报表20多年,累积用户数不胜数,价格又很亲民,1W一套,3W一年随便用,有了润乾报表,这些存储过程带来的困扰就都迎刃而解了。

2022-11-15 11:07:38 3231 52

原创 Eureka服务注册与发现

注册中心可以说是微服务架构中的"通讯录",它记录了服务和服务之间地址的映射关系。在分布式架构中, 服务会注册到这里(注册中心),当服务需要调用其它服务时,就这里找到服务的地址,进行调用。到底什么是服务治理?SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂、所以需要进行服务治理,管理服务与服务之间依赖关联,以实现服务调用,负载均衡、容错等,实现服务发现与注册。

2022-11-11 15:37:12 4791 59

原创 SpringCloud入门案例

com.zyh.springcloud.controller.PaymentControllercom/zyh/springcloud/service/PaymentService.javacom/zyh/springcloud/service/impl/PaymentServiceImpl.javacom/zyh/springcloud/mapper/PaymentMapper.java (将cloud-provider-payment8001工程下的entities包下的两个实体类复制

2022-11-04 10:15:59 2647 5

原创 Linux学习(9)——Linux组管理和权限管理

rwx作用到文件中rwx作用到目录给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限给abc文件的所有者除去执行的权限,文件的所有组增加写的权限给abc文件的所有用户增加读的权限chgrp newGroup 文件/目录 [修改文件/目录所在组]

2022-10-31 09:53:07 1819 2

原创 Java 结构化数据处理开源库 SPL

现代Java应用架构越来越强调数据存储和处理分离,以获得更好的可维护性、可扩展性以及可移植性,比如火热的微服务就是一种典型。这种架构通常要求业务逻辑要在Java程序中实现,而不是像传统应用架构中放在数据库中。应用中的业务逻辑大都会涉及结构化数据处理。数据库(SQL)中对这类任务有较丰富的支持,可以相对简易地实现业务逻辑。但Java却一直缺乏这类基础支持,导致用Java实现业务逻辑非常繁琐低效。结果,虽然架构上有各种优势,但开发效率却反而大幅下降了。

2022-10-26 12:37:26 4146 61

原创 Spring Cloud基本介绍

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2022-10-24 16:25:19 4210 30

原创 Spring Cloud:微服务基础知识

而且,我们应尽量避免统一的、集中式的服务管理机制,对具体的一个来说,应该要根据业务上下文,选择合适的语言、工具来进行构建。在企业发展的初期,一般公司的网站流量都比较小,只需要一个应用,将所有的功能代码打包成一个服务,部署到服务器上就能支撑公司的业务。随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,对于容量的评估,小服务资源的浪费等问题比较严重。

2022-10-21 20:01:53 8635 72

原创 RabbitMQ:发布确认高级

在application.properties全局配置文件中添加spring.rabbitmq.publish-confirm-type属性,这个属性有以下几种值。交换机收到两条信息,但是消费者只能消费一条消息,因为第二条消息的路由key和交换机的binding key不一样,也没有其他队列可以接收这条消息,所以就被丢弃了。正常运行结果如图所示,如果rabbitmq出现故障的话,那么结果是不会显示出来的,我们可以通过回调接口来监测运行结果。

2022-10-17 13:35:35 2704 18

原创 RabbitMQ:延迟队列

一般队列中的元素总是希望能够早点被取出来进行处理,但是延迟队列中的元素则是希望可以在指定时间内被取出和处理,延迟队列中的元素都是带有时间属性的。延迟队列就是用来存放需要在指定时间被处理的元素的队列延迟队列就是想要消息延迟一段时间后被处理,TTL可以让消息在延迟一段时间后变成死信。变成死信的消息都会被投递到死信队列中,这样的话,只要消费者一直消费死信队列里面的消息就可以了,因为里面的消息都是希望被马上处理的消息。

2022-10-17 13:29:17 2752 5

原创 RabbitMQ:死信队列

队列中不能被消费的消息称为死信队列有时候因为特殊原因,可能导致队列中的某些信息无法被消费,而队列中这些不能被消费的消息在后期没有进行处理,就会变成死信队列,死信队列中的消息称为死信。应用场景:未来保证订单业务的消息数据不丢失,我们需要使用到RabbitMQ的死信队列机制,当消息消费发生异常的时候,我们就把消息投入到死信队列中,比如说用户买东西,下单成功后去支付,但是没有在指定时间支付的时候就会自动失效。死信队列,英文缩写:DLX。

2022-10-12 14:57:11 9276 77

Java+Git+尚硅谷Git课件

尚硅谷Git课件

2024-09-02

JavaSE的学习笔记

JavaSE学习笔记,包含入门案例到面向对象,集合,反射,注解,多线程,JUC等内容。适合新手小白想入门Java的,或者学习完需要一份完整的Java笔记。这份笔记内容全面,而且有很多配图,可以帮助大家理解

2024-08-27

MySQL可视化工具SQLyog安装

MySQL可视化工具SQLyog安装,点击就可安装

2022-06-09

R语言编程基础第五章课后习题操作题

R语言编程基础第五章课后习题操作题b

2022-05-05

servlet+jsp练手小项目

servlet+jsp练手小项目,适合初学者进行项目的练手,可以帮助我们熟悉servlet+jsp的项目流程,掌握转发,重定向,路径等问题,有助于后面框架的学习,而且项目并不复杂,主要是锻炼大家的思路,让我们可以熟悉servlet和jsp

2022-04-06

javaweb笔记+狂神+知识总结

Java+javaweb笔记+狂神+知识总结

2022-04-01

mysql8.0的驱动

MySQL8.0的驱动

2022-03-29

jakarta.servlet.jsp.jstl-api-2.0.0.jar

Tomcat10对应的JSTL标签库的jar包

2022-03-23

taglibs-standard-impl-1.2.5.zip

Tomcat9的JSTL标签库对应的jar

2022-03-23

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

TA关注的人

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