自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL12_基础_数据类型

文章目录数据类型1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL2.3 适用场景2.4 如何选择?3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明4. 定点数类型4.1 类型介绍4.2 开发中经验5. 位类型:BIT6. 日期与时间类型6.1 YEAR类型6.2 DATE类型6.3 TIME类型6.4 DATETIME类型6.5 TIMESTAMP类型6.6 开发中经验7. 文本字符串类型7

2022-01-23 23:17:13 251

原创 MySQL11_基础_数据处理之增删改

文章目录数据处理之增删改1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中2. 更新数据3. 删除数据4. MySQL8新特性:计算列5. 综合案例6. 练习6.1 练习16.2 练习26.3 练习3数据处理之增删改1. 插入数据1.1 实际问题解决方式:使用 INSERT 语句向表中插入数据。准备数据库环境CREATE DATABASE mytest;USE mytest;CREATE TABLE IF NOT EXISTS emp1

2022-01-22 12:54:49 1281

原创 MySQL10_基础_创建和管理表

文章目录创建和管理表1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型2. 创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库3. 创建表3.1 创建方式13.2 创建方式24. 修改表4.1 追加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列5. 重命名表6. 删除表7. 清空表7.1 DELETE FROM 回滚演示7.2 TRUNCATE TABLE 回滚演示8. 内容拓展拓展1:阿里巴巴《Java开

2022-01-16 11:30:19 494

原创 MySQL9_基础_子查询

文章目录子查询1. 需求分析与问题解决1.1 实际问题1.2 子查询的基本使用1.3 子查询的分类1.3.1 分类方式11.3.2 分类方式22. 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING 中的子查询2.4 CASE中的子查询2.5 空值问题2.6 非法使用子查询3. 多行子查询3.1 多行比较操作符3.2 代码示例3.2.1 IN3.2.2 ANY / ALL3.3 空值问题4. 相关子查询4.1 相关子查询执行流程4.2 代码示例4.2.1 方式一:相关子查询4.2.2 方式

2022-01-09 13:52:43 219

原创 MySQL8_基础_聚合函数

文章目录聚合函数1. 聚合函数介绍1. AVG和SUM函数2. MIN和MAX函数3. COUNT函数2. GROUP BY2.1 基本使用2.2 使用多个列分组2.3 GROUP BY中使用WITH ROLLUP3. HAVING3.1 基本使用3.2 WHERE和HAVING的对比4. SELECT的执行过程4.1 查询的结构4.2 SELECT执行顺序4.3 SQL 的执行原理5. 练习聚合函数1. 聚合函数介绍什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合

2022-01-01 23:17:16 1649

原创 Spring

文章目录spring概念1.Spring 的发展历程2.spring 的优势1.方便解耦,简化开发2.AOP 编程的支持3.声明式事务的支持4.方便程序的测试5.方便集成各种优秀框架6.降低 JavaEE API 的使用难度7.Java 源码是经典学习范例3.spring 的体系结构4.spring在3层架构位置图解IoC 的概念和作用1.什么是程序的耦合1.反射解耦2.工厂模式解耦2.控制反转-Inversion Of Control使用 spring 的 IOC 解决程序耦合1.准备 spring 的开

2021-12-28 18:18:55 306

原创 MySQL7_基础_单行函数

文章目录单行函数1. 函数的理解1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类2. 数值函数2.1 基本函数2.1.1 基本的操作2.1.2 取随机数2.1.3 四舍五入,截断操作2.2 角度与弧度互换函数2.3 三角函数2.4 指数与对数2.5 进制间的转换3. 字符串函数3.1 ASCII(S)3.2 CHAR_LENGTH(s)3.3 LENGTH(s)3.4 CONCAT(s1,s2,......,sn)3.4 CONCAT_WS(x, s1,s2,......,sn)3.5 I

2021-12-24 23:02:38 533

原创 MySQL6_基础_多表查询

文章目录多表查询1. 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积(或交叉连接)的理解1.3 案例分析与问题解决2. 多表查询分类讲解2.1 分类1:等值连接 vs 非等值连接2.1.1 等值连接2.1.1.1 拓展1:多个连接条件与 AND 操作符2.1.1.2 拓展2:区分重复的列名2.1.1.3 拓展3:表的别名2.1.1.4 拓展4:连接多个表2.1.2 非等值连接2.2 分类2:自连接 vs 非自连接2.2.1 自连接2.2.2 非自连接2.3 分类3:内连接 vs 外连接2.3.1 内

2021-12-19 22:20:48 241

原创 MySQL5_基础_排序与分页

文章目录排序与分页1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序2. 分页2.1 背景2.2 实现规则2.3 分页2.4 拓展3. 练习排序与分页1. 排序数据# 如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。SELECT * FROM employees;1.1 排序规则使用 ORDER BY 子句排序ASC(ascend): 升序DESC(descend):降序ORDER BY 子句在SELECT语句的结尾。1.2 单列排序

2021-12-18 13:29:26 1363

原创 MySQL4_基础_运算符

文章目录运算符1. 算术运算符1.1 加法与减法运算符1.2 乘法与除法运算符1.3 求模(求余)运算符2. 比较运算符2.1 等号运算符2.2 安全等于运算符2.3 不等于运算符2.4 非符号类型的运算符2.4.1 空运算符2.4.2 非空运算符2.4.3 最小值运算符2.4.4 最大值运算符2.4.5 BETWEEN AND运算符2.4.6 IN运算符2.4.7 NOT IN运算符2.4.8 LIKE运算符2.4.8.1 %2.4.8.2 _2.4.8.3 ESCAPE2.4.9 REGEXP运算符3.

2021-12-12 23:04:25 703 1

原创 MySQL3_基础_基本的 SELECT 语句

文章目录基本的 SELECT 语句1. SQL概述1.1 SQL背景知识1.2 SQL语言排行榜1.3 SQL 分类2. SQL语言的规则与规范2.2 SQL大小写规范 (建议遵守)2.3 注 释2.4 命名规则(暂时了解)2.5 数据导入指令3. 基本的SELECT语句3.1 SELECT...3.2 SELECT ... FROM3.3 列的别名3.4 去除重复行3.5 空值参与运算3.6 着重号3.7 查询常数4. 显示表结构5. 过滤数据6. 练习基本的 SELECT 语句1. SQL概述1.

2021-12-05 10:37:37 316

原创 MySQL2_基础_MySQL环境搭建

文章目录MySQL环境搭建1. MySQL的卸载步骤1:停止MySQL服务步骤2:软件的卸载步骤3:残余文件的清理步骤4:清理注册表(选做)步骤5:删除环境变量配置2. MySQL的下载、安装、配置2.1 MySQL的4大版本2.2 软件的下载2.3 MySQL8.0 版本的安装2.4 配置MySQL8.02.5 配置MySQL8.0 环境变量2.6 MySQL5.7 版本的安装、配置2.7 安装失败问题3. MySQL的登录3.1 服务的启动与停止方式1:使用图形界面工具方式2:使用命令行工具3.2 自带

2021-12-04 16:28:54 1447

原创 MySQL1_基础_数据库概述

文章目录数据库概述1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库管理系统排名(DBMS)2.4 常见的数据库介绍3. MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Why choose MySQL?3.5 Oracle vs MySQL4. RDBMS 与 非RDBMS4.1 关系型数据库(RDBMS)4.1.1 实质4.1.2 优势4.2 非关系型数据库(非RDBMS)

2021-12-04 12:22:40 203

原创 Mybatis10_其他操作

文章目录Mybatis11 其他1. Mybatis 批量操作1.1 批量操作演示1.2 非批量操作演示1.3 与 Spring 整合执行批量操作2. 存储过程3. 自定义 TypeHandler 处理枚举3.1 测试全局配置 EnumTypeHandler3.2 测试全局配置 EnumOrdinalTypeHandler3.3 测试参数位置设置自定义 TypeHandlerMybatis11 其他1. Mybatis 批量操作其实前面有写过 Mysql 或者 Oracle的批量操作,但是那不是真正意

2021-08-28 10:05:15 115

原创 MyBatis9_插件

文章目录MyBatis10_插件1. 插件原理2. 插件编写步骤3. 多个插件运行流程4. 插件开发5. PageHelper插件进行分页5.1 PageHelper使用步骤5.1.1 引入分页插件5.1.2 配置拦截器插件5.1.2.1 在 MyBatis 配置 xml 中配置拦截器插件5.1.2.2 在 Spring 配置文件中配置拦截器插件5.1.2.3 分页插件参数介绍5.1.2.4 如何选择配置这些参数5.1.3 如何在代码中使用MyBatis10_插件MyBatis在四大对象的创建过程中,都

2021-08-28 09:57:25 86

原创 MyBatis8_工作原理

/** * 1、获取sqlSessionFactory对象: * 解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSession; * 注意:【MappedStatement】:代表一个增删改查的详细信息 * * 2、获取sqlSession对象 * 返回一个DefaultSQlSession对象,包含Executor和Configuration; * 这一步会创建Executor对象; * * 3、获取.

2021-08-28 09:30:32 114

原创 MyBatis7_逆向工程

文章目录MyBatis 逆向工程1. MyBatisGenerator1.1 使用步骤2. MyBatisGenerator 使用MyBatis 逆向工程MyBatis Generator:简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询,但是表连接、存储过程等这些复杂sql的定义需要我们手工编写。官方文档地址:http://www.mybatis.org/generator/

2021-08-23 22:28:34 117

原创 MyBatis6_SSM

文章目录MyBatis SSMMyBatis7Spring整合1.导包MyBatis SSM1、查看不同MyBatis版本整合Spring时使用的适配包http://www.mybatis.org/spring/2、下载整合适配包https://github.com/mybatis/spring/releases3、官方整合示例 jpetstorehttps://github.com/mybatis/jpetstore-6MyBatis7Spring整合1.导包springjar包!

2021-08-23 21:56:28 117

原创 Mybatis5_缓存机制

文章目录MyBatis 缓存机制1. 一级缓存1.1 一级缓存演示和失效情况1.1.1 一级缓存演示1.1.2 一级缓存失效2. 二级缓存2.1 二级缓存演示2.2 缓存有关设置3. 缓存原理图4. 第三方缓存整合4.1 第三方缓存演示MyBatis 缓存机制MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率。MyBatis系统中默认定义了两级缓存。一级缓存和二级缓存1、默认情况下,只有一级缓存(SqlSession 级别的缓存,也称为本地缓存

2021-08-22 22:37:23 123

原创 Mybatis4_动态SQL

文章目录MyBatis 动态SQL1. if2. choose (when, otherwise)3. trim (where, set)3.1 where3.2 set3.3 trim4. foreach4.1 遍历集合4.2 mysql下批量插入两种方式4.2.1 方式14.2.2 方式24.3 oracle下批量插入两种方式4.3.1 方式14.3.2 方式25. 内置参数 _parameter 和 databaseId6. bind7. sqlMyBatis 动态SQL动态 SQL是MyBat

2021-08-22 15:27:59 121

原创 Mybatis3_映射文件

文章目录Mybatis 映射文件1. insert、update、delete元素1.1 主键生成方式1.1.1 selectKey2. 参数(Parameters)传递2.1 单个参数2.2 多个参数2.2.1 多个参数使用参数名获取值(会报错)2.2.2 使用param1和param2或者0和1获取值2.3 命名参数@Param2.4 POJO2.5 Map2.6 TO2.7 参数传递扩展3. 参数处理3.1 结合源码 Mybatis 怎么处理参数3.2 #{} 和 ${}参数值的获取3.3 #{}更多

2021-08-22 14:40:53 156

原创 Mybatis2_全局配置文件

文章目录Mybatis 全局配置文件1. properties 属性2. settings 设置3. typeAliases 别名处理器4. typeHandlers 类型处理器4.1 日期类型的处理4.2 自定义类型处理器5. plugins 插件6. environments 环境6.1 environment 指定具体环境6.2 transactionManager6.3 dataSource7. databaseIdProvider 环境8. mapper 映射Mybatis 全局配置文件My

2021-08-22 14:40:36 119

原创 Mybatis1_简介

文章目录MyBatis 简介HelloWorld1. HelloWorld 简单版2. HelloWorld 接口式编程MyBatis 简介MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis历史原是

2021-08-22 14:24:06 109

原创 Java2_初_概述

文章目录软件开发介绍计算机编程语言介绍Java语言概述1. Java概述2. Java简史3. Java技术体系平台4. Java在各领域的应用5. Java语言的诞生6. Java主要特性Java语言运行机制及运行过程1. Java语言的特点1.1 Java两种核心机制1.1.1 核心机制—Java虚拟机1.1.2 核心机制—垃圾回收Java语言的环境搭建1. 什么是JDK,JRE2. JDK、JRE、JVM关系3. 下载并安装JDK3.1 为什么配置环境变量 path3.2 JDK 8 的安装与配置3.

2021-06-26 21:35:33 228

原创 Java1_初_计算机基础

文章目录概述计算机硬件介绍1. 中央处理器2. 存储设备3. 内存4. 输入和输出设备5. 通信设备计算机发展史上的鼻祖操作系统万维网学习经验探讨概述计算机包括硬件(hardware)和软件(software)两部分。硬件包括计算机中可以看得见的物理部分。而软件提供看不见的指令。这些指令控制硬件并且使得硬件完成特定的任务。程序设计定义:创建(或开发)软件。软件包含了指令,告诉计算机做什么。应用场景:软件遍布我们周围。除了个人计算机,飞机、汽车、手机甚至烤面包机中,同样运行着软件。程序设计语言软

2021-06-26 18:35:55 230

原创 JavaEE17_Web案例

文章目录项目导入启动项目方式1方式2技术选型1.web层1.为什么使用html而不使用jsp?2.service层3.dao层创建数据库工具类1.JDBCUtils2.JedisUtil3.MailUtils4.Md5Util5.UuidUtil6.druid.properties7.jedis.properties实体类CategoryFavoritePageBeanResultInfoRouteRouteImgSellerUser注册功能注册功能陌生点总结1.页面效果2.前台代码实现1.介绍引入头部和底

2021-06-19 22:49:47 1010

原创 JavaEE16_四域总结

文章目录pageContextrequestsessionapplication(ServletContext)四大作用域范围总结1. 如果在servlet范围内只有三个域有用2. 如果在jsp范围内有四个域有作用pageContext创建:访问JSP时创建pageContext销毁:关闭JSP时销毁域的作用范围:当前jsp页面request创建:访问时创建request销毁:响应结束request销毁域的作用范围:一次请求中session创建:第一次执行request.getSes

2021-06-19 22:01:30 98

原创 JavaEE15_JDBC

文章目录JDBC概述1. 数据的持久化2. Java中的数据存储技术3. JDBC介绍4. JDBC体系结构5. JDBC程序编写步骤获取数据库连接1. 要素一:Driver接口实现类1.1 Driver接口介绍1.2 加载与注册JDBC驱动2. 要素二:URL3. 要素三:用户名和密码4. 数据库连接方式举例4.1 连接方式一4.2 连接方式二4.3 连接方式三4.4 连接方式四4.5 连接方式五(最终版)使用PreparedStatement实现CRUD操作1. 操作和访问数据库2. 使用Stateme

2021-06-19 21:32:02 134

原创 JavaEE15_Ajax和JSON

文章目录Ajax概念1.同步异步图解Ajax实现方式1. 原生的JS实现方式2. JQeury实现方式2.1 $.ajax()2.2 $.get():发送get请求2.3 $.post():发送post请求JSON概念JSON语法1.基本规则2. 获取数据2.1 json对象.键名2.2 json对象["键名"]2.3 数组对象[索引]2.4 遍历3. JSON数据和Java对象的相互转换3.1 JSON解析器3.2 JSON转为Java对象步骤3.2.1 导入jackson的相关jar包3.2.2 创建J

2021-06-19 09:44:53 117

原创 JavaEE14_Listener

文章目录Listener概念Listener快速入门1.1 web.xml配置1.2 注解配置监听器有哪些?监听三大域对象的创建与销毁的监听器1. 监听ServletContext域的创建与销毁的监听器ServletContextListener1.1 Servlet域的生命周期1.2 监听器的编写步骤(重点)1.3 监听的方法1.4 ServletContextListener监听器的主要作用2. 监听Httpsession域的创建于销毁的监听器HttpSessionListener2.1 HttpSes

2021-06-19 09:44:32 112

原创 JavaEE13_Filter

文章目录Filter概念Filter快速入门Filter细节1. web.xml配置2. 过滤器执行流程3. 过滤器生命周期方法4. 过滤器配置详解4.1 拦截路径配置4.2 拦截方式配置(资源被访问的方式)4.2.1 注解配置4.2.2 web.xml配置5. 过滤器链(配置多个过滤器)5.1 执行顺序:如果有两个过滤器:过滤器1和过滤器25.2 过滤器先后顺序问题5.2.1 注解配置:按照类名的字符串比较规则比较,值小的先执行5.2.2 web.xml配置: 谁定义在上边,谁先执行Filter案例1.

2021-06-14 14:19:20 158

原创 JavaEE12_EL和JSTL

文章目录EL概念和作用语法EL使用1. 运算1.1 算数运算符1.2 比较运算符1.3 逻辑运算符1.4 空运算符1.5 三目运算2. 获取值2.1 el表达式只能从域对象中获取值2.2 语法2.2.1 ${域名称.键名}:从指定域中获取指定键的值。2.2.2 ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。3. 隐式对象JSTL概念JSTL下载与导入JSTL核心库的常用标签EL概念和作用EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,E

2021-06-14 13:46:49 1159 1

原创 JavaEE11_MVC与三层架构

文章目录jsp演变历史javaEE的开发模式1. 什么是模式2. javaEE经历的模式2.1 model1模式2.2 model2模式2.3 MVC --- web开发的设计模2.4 javaEE的三层架构MVC与三层架构1. MVC图解2. JavaEE三层架构图解3. MVC与JavaEE三层架构有什么关系?jsp演变历史早期只有servlet,只能使用response输出标签数据,非常麻烦。后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写h

2021-06-14 13:30:36 1382 1

原创 JavaEE10_JSP

JSP概念Java Server Pages: java服务器端页面可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码,用于简化书写。JSP原理JSP本质上就是一个Servlet。JSP在第一次被访问时会被Web容器翻译成servlet,在执行。过程:第一次访问---->login.jsp---->login_jsp.java—>login_jsp.class—>编译运行。JSP原理图解JSP指令jsp的指令是指导jsp翻译和运行的

2021-06-14 13:22:13 1214 1

原创 JavaEE9_Session

seesion1. 概念Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID。2. 快速入门获取HttpSession对象HttpSession session = request.getSession();此方法会获得专属于当前会话的Session对象,

2021-06-14 12:43:55 319

原创 JavaEE8_Cookie

文章目录为什么要会话技术会话技术1. 会话:一次会话中包含多次请求和响应2. 会话功能:会话技术就是记录这次会话中客户端的状态与数据的3. 会话技术分为Cookie和SessionCookie1. 概念:Cookie技术是将用户的数据存储到客户端的技术。2. 快速入门3. cookie实现原理4. cookie的细节4.1 一次可不可以发送多个cookie?4.2 cookie在浏览器中保存多长时间?4.2.1 默认情况下,当浏览器关闭后,Cookie数据被销毁。4.2.2 持久化存储4.2.3 设置co

2021-06-14 12:30:51 213

原创 JavaEE7_文件上传中文乱码问题

文章目录文件上传中文乱码引发的问题文件上传中文乱码引发的问题1.首先写这个博客,是因为在文件上传的时候出现了自己想不通的问题。开始列举问题文件下载使用GET请求方式请求Servlet,当获取中文名称的图片时我了设置request编码但是还是乱码的,反而我不设置request编码中文名称不乱码。然后我写了一个servlet测试了一下。请求servlet代码演示@WebServlet("/download")public class DownloadServlet extends HttpSer

2021-06-14 11:43:54 289

原创 JavaEE6_Response

文章目录HttpServletResponse概述request对象和response对象的原理response设置功能1. 设置响应行2. 设置响应头3. 设置响应response完成重定向和向客户端输出字符串1.response完成重定向2. 服务器输出字符数据到浏览器3. 服务器输出字节数据到浏览器4. 验证码reponse细节点1.response获取的流不需要手动关闭,tomcat会自动关闭2.getOutputStream和getWriter不能同时调用3.重定向和转发后,其实后面还是可以写代码

2021-06-14 11:08:10 198

原创 JavaEE5_Request

文章目录HttpServletRequest概述request对象和response对象的原理request对象继承体系结构reques获取功能1.获取请求行数据2. 获取请求头数据3. 获取请求体数据reques其他功能1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数2. 请求转发:一种在服务器内部的资源跳转方式3. 共享数据4. 获取ServletContext路径写法获取user-agent和referer请求头并演示兼容和盗链案例:用户登录BeanUtils

2021-06-14 10:21:18 180

原创 JavaEE4_Http

文章目录Http概念Http请求Http响应Http概念概念: HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收HTML页面的方法。传输协议:定义了,客户端和服务器端通信时,发送数据的格式特点: 1. 基于TCP/IP的高级协议 2. 默认端口号:80 3. 基于请求/响应模型的:一次请求对应一次响应 4. 无状态的:无状态是指协议对于

2021-06-14 09:29:20 133

空空如也

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

TA关注的人

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