自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于idea开发通过gitee实现团队协作的使用文档

团队老大要做的事情idea登录Git和gitee打开settings—>找到version control—>找到Git—>点击右上角Test(显示Git version is+版本号表示测试通过,可以正常使用)—>找到gitee—>登录自己的gitee账号上传项目框架到gitee1、当项目框架编写完成,菜单栏里找到“VCS”选项—>倒数第三个“import into version control”—>share project on gitee(在

2020-12-06 02:22:24 1872

原创 第三阶段实战(九)——项目功能拓展与总结

1 首页菜单动态化实现1.1 背景用户希望在登陆以后基于权限的不同,在首页左侧呈现不同的菜单,如何实现呢?1.2 初步分析基于登陆用户id,查询用户对应的菜单信息然后进行呈现1.3 原理应用分析方案实现上可以基于同步或异步查询然后进行菜单数据呈现。1.4 最终解决方案用户登陆以后,基于用户登陆id查询用户对应的一级菜单,二级菜单然后存储到指定 作用域,当进入系统首页后基于thymeleaf呈现用户菜单。1.4.1 Pojo类的定义基于用户需求将查询到的一级菜单以及一级菜

2021-01-09 00:22:45 319

原创 第三阶段实战(八)——Shiro安全框架

1 Shiro安全框架简介1.1 Shiro概述Shiro是apache旗下一个开源安全框架(http://shiro.apache.org/),它将软件系 统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功 能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功 能的开发,降低系统成本。用户在进行资源访问时,要求系统要对用户进行权限控制,其具体流程如图:1.2 Shiro概要架构在概念层面,Shiro 架构包含三个主要的理念,如图:

2021-01-09 00:22:28 309

原创 第三阶段实战(七)——AOP切面编程

1 Spring AOP简介1.1 AOP 概述1.1.1 AOP 是什么?AOP(Aspect Orient Programming)是一种设计思想,是软件设计领域中的面向切 面编程,它是面向对象编程(OOP)的一种补充和完善。它以通过预编译方式和运行期动态 代理方式,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。如图 :AOP与OOP字面意思相近,但其实两者完全是面向不同领域的设计思想。实际项目 中我们通常将面向对象理解为一个静态过程(例如一个系统有多少个模块,一个模块有

2021-01-09 00:22:00 291

原创 第三阶段实战(六)—— 用户管理功能设计与实现

1 用户管理设计说明1.1 业务设计说明本模块主要是实现对用户信息的管理,包括用户查询,保存,更新,禁用启用等操作,其 业务分析如下图所示:图基于对表的设计,其数据逻辑关系的展示,如图用户表设计的脚本如下:DROP TABLE IF EXISTS `sys_users`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CR

2021-01-09 00:21:42 4933

原创 第三阶段实战(五)——部门管理功能设计与实现

部门管理pojopackage com.cy.pj.sys.pojo;import lombok.Data;import java.io.Serializable;import java.util.Date;/** * 部门PO对象 */@Datapublic class SysDept implements Serializable{ private static final long serialVersionUID = 8876920804134951849L; privat

2021-01-09 00:21:26 681

原创 第三阶段实战(四)——角色管理功能设计与实现

1 角色管理设计说明1.1 业务设计说明本模块主要实现的是企业内部角色(岗位)的管理,可以在添加角色时,为角色分配资源访问权限,最后将角色再分配给用户,如图:基于对表的设计,其数据逻辑关系的展示,如图角色表设计脚本如下:DROP TABLE IF EXISTS `sys_roles`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf

2021-01-09 00:20:56 2274

原创 第三阶段实战(三)——菜单管理功能设计与实现

1 菜单管理设计说明1.1 业务设计说明菜单管理又称为资源管理,是系统资源对外的表现形式。本模块主要是实现对菜单进行添加、修改、查询、删除等操作。其表设计语句如下:DROP TABLE IF EXISTS `sys_menus`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `sys_menus` (

2021-01-09 00:20:34 4718

原创 第三阶段实战(二)——日志管理功能设计与实现

1 日志管理设计说明1.1 业务设计说明本模块主要是实现对用户行为日志(例如谁在什么时间点执行了什么操作,访问了哪些方 法,传递的什么参数,执行时长等)进行记录、查询、删除等操作。其表设计语句如下:CREATE​ ​TABLE​ `sys_logs` ( `id` bigint(20) ​NOT​ ​NULL​ AUTO_INCREMENT, `username` ​varchar​(50) ​DEFAULT​ ​ ​NULL​ COMMENT ​'登陆用户名'​, `op

2021-01-09 00:20:14 2130

原创 Java配置导航目录

一、JDK安装:自行搜索JAVA_HOME和Path环境变量设置。二、Tomcat下载、安装三、MySQL数据库安装与使用四、Maven下载、安装、使用五、IDEA下载、安装、基本配置六、gitee操作详解

2021-01-09 00:18:35 121

原创 IDEA安装及基本配置

IDEA简介概述IDEA全称是IntelliJ,是JetBrains公司推出一个集成开发工具,是Java开发工具中的翘楚,基于这个开发工具可以快速开发我们的Java相关项目。相对于其它开发工具,IDEA提供了更加强大的提示功能,全面的快捷键操作,模板代码以及快速的资源整合。下载与安装准备工作• 硬件(Hardware)要求1)内存8G或以上2)硬盘磁盘空闲空间大于5GB,最好有一块固态硬盘。• 软件(Software)要求1)Microsoft Windows 8 or later

2021-01-09 00:18:20 1989 1

原创 第三阶段实战(一)——动吧旅游生态系统概述

1 项目简介1.1 概述动吧旅游生态系统,应市场高端用户需求,公司决定开发这样的一套旅游系统,此系统 包含旅游电商系统(推荐子系统,广告子系统,评价子系统,商品子系统,订单子系统 ,…),旅游分销系统(分销商的管理),旅游业务系统(产品研发,计调服务,系统权 限管理子系统,…),,。。。1.2 原型分析基于用户需求,进行原型设计(基于html+css+js进行静态页面实现)。例如系统登录页 面:系统登录成功页面(例如starter.html)菜单展示页面说明:原型设计好以后,会与客

2021-01-09 00:17:59 210

原创 第三阶段(九)——SpringBoot工程中ajax技术分析及应用

Ajax 技术简介背景分析?在互联网高速发展的今天,传统的WEB应用,对于高并发、高性能、高可靠性的要求已迫在眉睫。单线程方式的客户端与服务端交互方式已经不能满足现阶段的需求.我们需要以异步、按需加载的方式从服务端获取数据并及时刷新,来提高用户体验,于是Ajax技术诞生。Ajax 是什么?Ajax (Asynchronous JavaScript and XML) 是一种Web应用客户端技术,可以借助客户端脚本(javascript)与服务端应用进行异步通讯(可以有多个线程同时与服务器交互),

2021-01-09 00:17:40 104

原创 第三阶段(八)——SpringBoot工程中的异常处理方式和响应标准的设计及实现

SpringBoot 工程中的异常处理方式背景分析在项目的开发中,不管是对底层的数据逻辑操作过程,还是业务逻辑的处理过程,还是控制逻辑的处理过程,都不可避免会遇到各种可预知的、不可预知的异常。处理好异常对系统有很好的保护作用,同时会大大提高用户的体验。异常处理分析概述Java项目中处理异常方式无非两种,要么执行trycatch操作,要么执行throw操作(抛给其它对象处理),无论采用哪种方式,其目的是让我们的系统对异常要有反馈。但现在的问题是我们如何让这种反馈代码的编写即简单又直观、友好。

2021-01-09 00:17:27 92

原创 第三阶段(七)——SpringBoot工程中lombok、热部署、健康监控的应用

springboot 工程下lombok的应用背景分析在实际的java项目中我们创建的所有pojo类几乎都要为属性添加set/get/toString等相关方法,所有的日志记录相关类可能都要创建日志等对象,这些样板代码既没有技术含量,又影响着代码的美观,同时重复的编码过程会在无形中加大我们的工作量。 此时Lombok应运而生。lombok简介概述Lombok是一个第三的Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来告诉编译过程中的编译工具,在源代码编译成字

2021-01-09 00:17:10 77

原创 第三阶段(六)——SpringBoot+MyBatis+Spring 技术整合实现商品品牌模块的CRUD操作

业务描述需求描述任何一个电商系统中都有一个商品子系统,而与商品相关联都会有一个品牌信息管理,在当前业务系统设计中我们就是要对商品品牌信息的管理进行设计和实现.业务架构分析在品牌(Brand)信息管理中就是要实现对商品品牌信息的添加,修改,查询,删除等业务,如图所示:业务基本原型设计基于品牌业务描述,对品牌模块的业务原型进行分析和设计,如图所示:品牌列表页面品牌编辑页面项目技术架构分析及设计在品牌管理模块实现过程,我们采用典型的C/S架构进行实现.客户端我们基于浏览

2021-01-09 00:17:01 199

原创 前端基础——HTML、CSS总结

1、html概述(1)什么是html: 是超文本标记语言,是用于开发网页的最基础的语言(2)html的结构: 文档声明: <!doctype html> 根标签: <html></html> 头部分: <head></head> 体部分: <body></body> 预防网页乱码: <meta charset="utf-8"/> (3)html的语法 标签: 分为开始标签(<head&

2021-01-09 00:16:50 154

原创 前端基础——JS、jQuery总结

一、JS概述1、什么是JS全称JavaScript,简称JS是由网景公司提供的一门嵌入在浏览器中执行的脚本语言。主要作用是 实现网页中的动画效果,或者实现表单校验等功能2、JS的特点(1)JS是一门直译式的语言(JS不需要编译,直接执行的就是源代码)(2)JS是一门基于对象的语言(3)JS是一门弱类型的语言(JS中的变量不区分类型,可以指向任意的数据)3、JS的优势(1)良好的交互性(JS的出现就会为了嵌入在浏览器中运行,可以用户进行交互,提高用户体验)(2)一定的安全性(JS只能在浏

2021-01-09 00:16:35 417

原创 前端基础——jQuery

jQuery简介什么是jQuery(了解)jQuery: JavaScript Query JS查询jQuery是一门轻量的、免费开源的JS函数库(就是JS的简单框架)jQuery可以极大的简化JS代码jQuery的核心思想:“写的更少,但做的更多”轻量的:是指一个技术或框架对代码或程序的侵入程度是比较低的。或者说代码对该技术依赖程度越低,这个技术越轻。对该技术的依赖程度越高,这个技术越重。jQuery本质就是一个包含了很多函数的JS文件,如果要在某一个HTML中使用这个JS文件中

2021-01-09 00:16:22 150

原创 前端基础——JavaScript

JavaScript简介什么是JavaScript(了解)全称叫做JavaScript,简称叫做JS由NetScape(网景)公司提供,是一门专门嵌入在浏览器中执行的脚本语言LiveScript JavaScriptJS运行在浏览器中,负责实现网页中的动画效果或者是实现表单校验等功能JS特点和优势(了解)1、特点:**(1)JS是一门直译式的语言(边解释边执行,没有编译的过程)java–> 编写时 xx.java —>编译成 xx.class --> 运行cla

2021-01-09 00:16:11 424

原创 第三阶段(五)——SpringBoot工程下Spring MVC技术的应用

Spring MVC 简介背景分析在大型软件系统设计时,业务一般会相对复杂,假如所有业务实现的代码都纠缠在一起,会出现逻辑不清晰、可读性差,维护困难,改动一处就牵一发而动全身等问题。为了更好解决这个问题就有了我们现在常说的分层架构设计。MVC 是什么MVC是一种软件架构设计思想,基于MVC架构将我们的应用软件进行分层设计和实现,例如可以分为视图层(View),控制层(Controller),模型层(Model),通过这样的分层设计让我们程序具备更好的灵活性和可可扩展性.因为这样可以将一个复杂应

2021-01-09 00:14:42 328

原创 第三阶段(四)——SpringBoot工程中的MyBatis框架的整合实现及原理分析

整合MyBatis的初步分析概述Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis框架的简单应用架构如图所示:在当今的互联网应用中项目,mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。准备工作第一步:创建项目module,例如:第二步:添加依赖mysql 驱动依赖<depend

2021-01-09 00:14:31 122

原创 第三阶段(三)——SpringBoot工程下如何实现对HikariCP连接池的整合?

池化思想分析池化思想是我们项目开发过程中的一种非常重要的思想,如整数池,字符串池,对象池、连接池、线程池等都是池化思想的一种应用,都是通过复用对象,以减少因创建和释放对象所带来的资源消耗,进而来提升系统性能。例如Integer对象的内部池应用,代码如下:package com.cy.java.pool;public class TestInteger01 { public static void main(String[] args) { Integer n1=100;//

2021-01-09 00:14:14 94

原创 第三阶段(二)——基于IDEA创建SpringBoot项目并进行入门分析

1 Spring Boot 简介1.1 背景分析JAVAEE 应用体系中繁重的配置、低下的开发效率、高难度的三方集成,复杂的部署流程等等一直被开发人员所诟病。即使是使用 Spring 这样的轻量级的资源整合框架,在实现其相对比较多的资源整合时,依旧需要大量的手动依赖管理,复杂的 XML 配置(还经常没有提示)。还有就是现在的软件生态应用也已经形成一定的规模,系统架构正在从单体架构,分布式架构,跨越到微服务架构。随着整个架构体系的变化,企业对技术的要求也在变化,现在的企业更注重技术的开箱即用,更注重技术

2021-01-09 00:13:54 191

原创 第三阶段(一)——IDE工具之IDEA中Module的创建、删除、导入及Git基本操作

创建项目Module并运行创建并运行java module在IDEA打开的项目中创建Java Module,如图所示:在创建Java Module的界面,选择Next,输入module名,如图所示:Java Module创建好以后的结构,如图所示:在项目模块01-javase中创建包,例如:在指定包中创建类,如图所示:运行Java类,如图所示:创建并运行Maven Module在项目中,创建maven module,如图所示:接下来,输入module基本信息,如图所示

2021-01-09 00:13:38 295

原创 第二阶段(九)——SpringMVC框架总结

一、SpringMVC设计模式1、模式一(Model One):JSP(只使用JSP进行开发)Servlet:本质是一段Java程序,适合处理业务逻辑,但是Servlet不适合输出一个html网页(因为在Servlet中输出网页,得通过response获取流,通过out.write一行一行将html标签等内容输出到浏览器中)Html:是用于开发网页的语言,适合作为网页输出,但是html是一个静态Web资源,无法展示动态的数据JSP:也是开发网页的语言,也可以输出一个网页(html),并且JSP中可

2021-01-09 00:13:13 251

原创 第二阶段(九)——SpringMVC框架

MVC设计模式什么是设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式就是一种模子,经过多年实践锤炼形成一套行之有效的完成某个特定任务的步骤和方式。例如:西凤酒的酿造过程,酿造工序,前后不能变,温差不能变,这样做就是好喝,稍微改动就变味道了。再如,北京烤鸭,就是那样

2021-01-09 00:13:01 178

原创 第二阶段(八)——Spring框架

Spring简介什么是Spring?Spring框架(简称Spring)是一个用于简化Java企业级应用开发的开源应用程序框架,以IoC(Inverse Of Control:控制反转/反转控制)和AOP(Aspact Oriented Programming:面向切面编程)为核心,提供了表现层SpringMVC和持久层SpringJDBC以及业务层事务管理等众多模块的企业级应用技术,还能整合开源世界中众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。SSH(struts

2021-01-09 00:12:50 407

原创 第二阶段(七)——Mybatis框架

MyBatis简介(了解)什么是MyBatisMyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdb.

2021-01-09 00:12:32 512

原创 第二阶段(六)——MySQL数据库事务

事务及四大特性什么是事务数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。简单的说:事务就是将一堆的SQL语句(通常是增删改操作)绑定在一起执行,要么都执行成功,要么都执行失败,即都执行成功才算成功,否则就会恢复到这堆SQL执行之前的状态。下面以银行转账为例,张三转100块到李四的账户,这至少需要两条SQL语句:给张三的账户减去100元;update 账户表 set money=money-100 wher

2021-01-09 00:12:14 87

原创 第二阶段(五)——Maven总结

一、Maven的概述1、什么是Maven?Maven是apache下的一个纯Java开发的开源项目Maven是一个项目管理工具,可以简化项目配置,统一项目结构,使得开发者的工作变得更简单!使用Maven的主要原因,是Maven可以帮我们下载和管理项目中所需要的依赖(jar包)二、Maven的下载/安装/配置1、下载、安装Maven官方下载地址:http://maven.apache.org/download.cgimaven是一个绿色软件,解压之后就可以使用。安装时推荐,安装的路径中不要包

2021-01-09 00:12:02 89

原创 第二阶段(五)——Maven

Maven介绍Maven是什么?Maven: 翻译为"专家"、“内行”,是Apache下的一个纯Java开发的一个开源项目。Maven是一个项目管理工具,使用Maven可以来管理企业级的Java项目开发及依赖的管理。使用Maven开发,可以简化项目配置,统一项目结构。总之,Maven可以让开发者的工作变得更简单。什么是依赖管理?要明白依赖管理,首先要知道什么是依赖?一个Java项目中往往会依赖一些第三方的jar包。比如JDBC程序中要依赖数据库驱动包,或者在使用c3p0连接池时,要依赖c3p

2021-01-09 00:11:50 138

原创 第二阶段(四)——JDBC总结

一、JDBC概述1、什么JDBC?为什么要学习JDBC?JDBC: JDBC数据库连接其实就是用来java语言或者java程序连接并访问数据库的一门技术虽然我们之前通过cmd或者Navicat等工具也可以连接访问数据库,但是在企业开发中,我们更多的是通过程序,通过Java程序连接访问数据库,就需要JDBC这门技术!2、JDBC的快速入门:查询jt_db.account表中的所有数据2.1.准备数据: 执行课前资料中的 “sql脚本文件.txt” 文件中的所有SQL语句jt_db库(accoun

2021-01-09 00:11:36 78

原创 第二阶段(四)——JDBC

学习目标:了解什么是JDBC?为什么要学习这门技术?掌握通过JDBC连接并访问数据库掌握PreparedStatement传输器的使用(SQL注入攻击)掌握什么是连接池?为什么要使用连接池?掌握C3P0连接池的用法数据库事务(放在后面讲,框架之前)JDBC概述什么是JDBC?为什么要学习JDBC?JDBC(Java DataBase Connectivity) Java数据库连接其实就是利用Java语言/程序连接并访问数据库的一门技术之前我们可以通过CMD或者navicat等.

2021-01-09 00:11:24 207

原创 第二阶段(三)——MySQL练习题(答案参考MySQL)

1.数据库及表操作1.1.创建、删除、查看数据库– 01.查看mysql服务器中所有数据库– 02.进入某一数据库(进入数据库后,才能操作库中的表和表记录)– 语法:USE 库名;– 查看已进入的库– 03.查看当前数据库中的所有表– 先进入某一个库,再查看当前库中的所有表– 04.删除mydb1库– 语法:DROP DATABASE 库名;– 思考:当删除的库不存在时,如何避免错误产生?– 05.重新创建mydb1库,指定编码为utf8– 语法:CREATE DATABASE 库.

2021-01-09 00:11:03 753

原创 第二阶段(三)——MySQL

数据库概述什么是数据库?所谓的数据库就是指存储和管理数据的仓库扩展内容1:数据库有哪些分类?(了解)早期: 层次式数据库、网络型数据库现在:关系型数据库、非关系型数据库什么是关系型数据库?底层以二维表的形式保存数据的库就是关系型数据库stu-学生表学生编号姓名年龄1001刘沛霞351002陈子枢18扩展内容2:常见的关系型数据库有哪些?(了解)Sql Server: 微软提供,收费,适用于一些中型或大型的项目中,在java中的使用占比

2021-01-09 00:10:48 589

原创 第二阶段(二)——Servlet总结

一、Servlet概述1、什么是ServletServlet是由SUN公司提供的一门动态Web资源开发技术Servlet本质是一段Java程序,但和Java程序不同的是,Servlet程序无法独立运行,需要放在服务器中,由服务器调用才可以执行!运行在服务器端的Servlet程序的作用是:对服务器接收过来的请求进行处理二、开发Servlet程序1、开发Servlet程序的步骤(1)写一个类,并且实现一个Servlet接口,并实现中的方法Servlet|-- GenericServlet|

2021-01-09 00:10:31 69

原创 第二阶段(二)——Servlet

Servlet概述什么是Servlet?Servlet是由SUN公司提供的一门动态Web资源开发技术静态Web资源:不同的人,在不同的条件下访问后看到的是相同的效果,这样的资源叫做静态Web资源(html、css、js等)动态Web资源:在不同的访问条件下看到的是不同的效果,这样的资源叫做动态Web资源(Servlet、jsp、.NET、PHP等)Servlet本质上是一段Java程序,和之前的Java程序不同的是,Servlet程序无法独立运行,需要将Servlet程序放在服务器中(比如to

2021-01-09 00:10:20 299

原创 第二阶段(一)——Tomcat、Http总结

一、服务器的概念1、什么是服务器服务器分为:服务器硬件和服务器软件服务器硬件:运行在互联网上的具有独立IP的计算机,通常配置较高。服务器软件:就是一个计算机程序(软件),按照功能类型划分,服务器软件有很多种:Web服务器、FTP服务器、邮件服务器、数据库服务器等2、什么是web服务器web服务器: 是指运行在互联网上的计算机程序,专门用于接收客户端的请求,根据请求进行处理,最终将处理的结果响应给客户端浏览器.tomcat就是一个Web服务器二、tomcat服务器的下载、安装、启动和配置1

2021-01-09 00:10:07 101

原创 第二阶段(一)——Tomcat、Http

服务器概述什么是服务器?服务器:分为服务器硬件 和 服务器软件。在硬件服务器(计算机)上安装了服务器软件,才可以对外提供服务。比如:让其他的计算机来访问当前服务器,为其他的计算机提供服务。(1) 服务器硬件:是指在互联网上具有独立IP地址的计算机,比如我们自己用的计算机也可以作为服务器使用。(2) 服务器软件:就是一个计算机程序,比如MySQL服务器软件,tomcat服务器软件。服务器软件分为很多类型,比如:ftp服务器,数据库服务器,web服务器软件,邮件服务器等。什么是Web服务器?

2021-01-09 00:09:57 215

空空如也

空空如也

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

TA关注的人

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