自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 神经网络入门1

神经网络入门13.1神经网络剖析3.1.1 层:深度学习的基础组件3.1.2 模型:层构成的网络3.1.3 损失函数与优化器:配置学习过程的关键3.2 Keras简介3.2.1 Keras、TensorFlow、Theano 和 CNTK3.2.2 使用Keras开发:概述本文为《Python深度学习》第三章:神经网络入门的学习笔记。具体内容请参照原书。本文主要介绍神经网络的核心组件,即层、网络、目标函数和优化器;还会简要介绍Keras。在神经网络入门2中将用3个例子深入讲解如何用神经网络解决实际问题。

2021-06-07 17:19:35 336 4

原创 神经网络的数学基础

第二章-神经网络的数学基础2.1初识神经网络2.2 神经网络的数据表示2.2.1 标量(0D张量)2.2.2 向量(1D张量)2.2.3 矩阵(2D张量)2.2.4 3D张量与更高维张量2.2.5 关键属性2.2.6 在Numpy中操作张量2.2.7 数据批量的概念2.2.8 现实世界中的数据张量2.2.9 向量数据2.2.10时间序列数据或序列数据2.2.11 图像数据2.2.12 视频数据2.3 张量运算2.3.1 逐元素运算2.3.2 广播(Brdcast)2.1初识神经网络我们这里要解决的问题

2021-06-05 20:01:39 8776 21

原创 C++类和对象之对象的初始化和清理

对象的初始化和清理构造函数和析构函数构造函数的分类及调用拷贝构造函数调用时机构造函数调用规则深拷贝与浅拷贝初始化列表类对象作为类成员静态成员生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置。构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题​ 一个对象或者变量没有初始状态,对其使用后果是未知的同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问

2021-02-28 20:39:14 322

原创 C++类和对象之封装

封装封装封装的意义struct和class区别成员属性设置为私有C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如:​ 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌…​ 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调…​ 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类封装封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事

2021-02-25 21:00:12 220

原创 C++引用和函数提高

引用和函数提高引用引用的基本使用引用注意事项引用做函数参数引用做函数返回值引用的本质常量引用函数提高函数默认参数函数占位参数函数重载函数重载概述函数重载注意事项引用引用的基本使用作用: 给变量起别名语法: 数据类型 &别名 = 原名示例:#include<iostream>using namespace std;int main() { int a = 10; int &b = a; cout<<"a="<<a&

2021-02-24 15:45:29 107

原创 链表的java实现(单向、双向链表,单向链表的反转)

链表链表单向链表单向链表API设计单向链表代码实现双向链表结点API设计双向链表API设计双向链表代码实现链表的复杂度分析链表反转快慢指针中间值问题有向链表是否有环问题有环链表入口问题循环链表约瑟夫问题链表虽然顺序表的查询很快,时间复杂度为O(1),但是增删的效率是比较低的,因为每一次增删操作都伴随着大量的数据元素移动。这个问题有没有解决方案呢?有,我们可以使用另外一种存储结构实现线性表,链式存储结构。链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元

2021-02-23 19:46:07 300 1

原创 C++内存分区模型

内存分区模型内存分区模型程序运行前代码区全局区:程序运行后栈区堆区new操作符内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程程序运行前在程序编译后,会生成可执行程序,未执行该程序前系统分

2021-02-22 20:55:31 398

原创 C++基础3(函数、指针、结构体)

C++基础函数函数的定义函数的调用值传递函数的常见样式函数的声明函数的分文件编写指针指针的基本概念指针变量的定义和使用指针所占内存空间空指针和野指针const修饰指针指针和数组指针和函数指针、数组、函数结构体结构体基本概念结构体定义和使用结构体数组结构体指针结构体嵌套结构体结构体做函数参数结构体中 const使用场景结构体案例案例1案例2函数函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 函数名 (参数列

2021-02-21 22:56:06 346

原创 C++基础2(运算符、程序结构流程、数组)

C++基础运算符算术运算符赋值运算符比较运算符逻辑运算符程序流程结构选择结构if语句三目运算符switch语句循环结构while循环语句4.2.2 do...while循环语句4.2.3 for循环语句4.2.4 嵌套循环4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 goto语句5 数组5.1 概述5.2 一维数组5.2.1 一维数组定义方式5.2.2 一维数组数组名5.2.3 冒泡排序5.3 二维数组5.3.1 二维数组定义方式5.3.2 二维数组数组名**5.3.

2021-02-15 17:58:47 161

原创 C++基础1(注释、变量、常量、关键字、标识符的命名规则、数据类型)

C++基础注释变量常量关键字标识符命名规则数据类型整型sizeof关键字浮点型字符型转义字符字符串型布尔类型 bool数据的输入注释两种格式单行注释:// 描述信息通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明多行注释: /* 描述信息 */通常放在一段代码的上方,对该段代码做整体说明变量语法:数据类型 变量名 = 初始值;示例:#include<iostream>int main() { //变量的定义 //语法:数据类型 变量名 =

2021-02-14 21:35:34 312

原创 Mysql练习题13道(21-33题)

练习列出薪金高于公司平均薪金的所有员工, 所在部门, 上级领导, 雇员的工资等级列出与"SCOTT" 从事相同工作的所有员工及部门名称列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金. 部门名称列出在每个部门工作的员工数量, 平均工资和平均服务期限列出所有员工的姓名、部门名称和工资。列出所有部门的详细信息和人数列出各种工作的最低工资及从事此工作的雇员姓名列出各个部门的 MANAGER( 领导) 的最低薪金列出所有员工的 年工资, 按 年

2021-02-13 12:23:53 739

原创 Mysql 练习题10道(11-20题)

练习取得最后入职的 5 名员工取得每个薪水等级有多少员工列出所有员工及领导的姓名列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称列出部门名称和这些部门的员工信息, 同时列出那些没有员工的部门列出至少有 5 个员工的所有部门列出薪金比"SMITH" 多的所有员工信息列出所有"CLERK"( 办事员) 的姓名及其部门名称, 部门的人数列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道销售部的部门编号.取得最

2021-02-10 17:30:43 352

原创 Mysql 练习题10道(1-10题)

练习取得每个部门最高薪水的人员名称哪些人的薪水在部门的平均薪水之上取得部门中(所有人的)平均的薪水等级不准用聚合函数max,取得最高薪水取得平均薪水最高的部门的部门编号取得平均薪水最高的部门的部门名称求平均薪水的等级最低的部门的部门名称取得比普通员工(员工代码没有在mgr 字段上出现的) 的最高薪水还要高的领导人姓名取得薪水最高的前五名员工取得薪水最高的第六到第十名员工取得每个部门最高薪水的人员名称第一步:取得每个部门最高薪水(按照部门编号分组,找出每一组最大值)select max(sal) m

2021-02-10 16:34:08 209

原创 顺序表的java实现

顺序表线性表线性表的特征线性表的分类顺序表API设计代码实现顺序表的遍历顺序表容量的可变顺序表的时间复杂度线性表线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。前驱元素:若A元素在B元素的前面,则称A为B的前驱元素后继元素:若B元素在A元素的后面,则称B为A的后继元素线性表的特征数据元素之间具有一种“一对一”的逻辑关系。第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一

2021-02-09 15:34:14 174

原创 排序的稳定性

排序稳定性定义意义常见算法稳定性冒泡排序选择排序插入排序希尔排序归并排序快速排序定义数组arr中有若干元素,其中A元素和B元素相等,并且A元素在B元素前面,如果使用某种排序算法排序后,能够保证A元素依然在B元素的前面,可以说这个该算法是稳定的。意义如果一组数据只需要一次排序,则稳定性一般是没有意义的,如果一组数据需要多次排序,稳定性是有意义的。例如要排序的内容是一组商品对象,第一次排序按照价格由低到高排序,第二次排序按照销量由高到低排序,如果第二次排序使用稳定性算法,就可以使得相同销量的对象依旧保

2021-02-08 15:50:36 435

原创 Mysql数据库设计三范式

三范式什么是设计范式第一范式第二范式第三范式三范式总结一对多多对多一对一主键共享外键唯一(创造伪主键)什么是设计范式设计表的依据。按照这个三范式设计的表不会出现数据冗余。第一范式任何一张表都应该有主键,并且每一个字段原子性不可再分。不符合第一范式的示例:学生编号学生姓名联系方式1001张三[email protected],13599999991002李四[email protected],136999999991001王五[email protected],1348888888

2021-02-08 14:56:43 122

原创 高级排序java实现(希尔、归并、快速)

高级排序希尔排序排序原理API设计代码实现时间复杂度分析归并排序排序原理归并原理API设计代码实现时间复杂度分析快速排序排序原理API设计切分原理代码实现快速排序和归并排序的区别时间复杂度分析基础排序,包括冒泡排序,选择排序还有插入排序的时间复杂度都是O(N^2),而平方阶随着输入规模的增大,时间成本将急剧上升,所以这些基本排序方法不能处理更大规模的问题,我们需要一些高级的排序算法,争取降低算法的时间复杂度最高阶次幂。希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的

2021-02-07 23:28:46 154

原创 Mysql的DBA命令(导入和导出)

导入和导出导入导出导入source sql脚本导出mysqldump 数据库名 表名 > 存储位置 -uroot -p密码其中表名是可选项,不选就是导出整个数据库。

2021-02-07 15:30:16 203

原创 Mysql视图

视图概述基本语法创建视图删除视图视图作用面向视图操作概述视图是一种根据查询(也就是SELECT表达式)定义的数据库对象,用于获取想要看到和使用的局部数据。视图有时也被成为“虚拟表”。视图可以被用来从常规表(称为“基表”)或其他视图中查询数据。相对于从基表中直接获取数据,视图有以下好处:访问数据变得简单可被用来对不同用户显示不同的表的内容基本语法创建视图create view view名 as select ... from ...;删除视图drop view view名视

2021-02-07 15:13:02 106

原创 Mysql索引

索引概述基本语法创建索引对象:删除索引对象:适用场景索引原理索引分类索引的失效索引应用查看sql语句的执行计划创建索引查看索引概述索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。在数据库方面,查询一张表的时候有两种检索方式:第一种方式:全表扫描第二种方式:根据索引检索(效率很高)索引为什么可以提高检索效率呢?其实最根本的原理是缩小了扫描的范围。索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的

2021-02-07 14:29:36 112

原创 Mysql事务(Transaction)

事务概述基本术语事务的四大特性:ACID事务的执行逻辑事务的隔离级别一致性问题四个隔离级别隔离级别与一致性问题的关系设置服务器缺省隔离级别通过修改配置文件设置通过命令动态设置隔离级别隔离级别的作用范围查看隔离级别演示事务自动提交模式准备表演示自动提交模式概述一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000。需要执行两条update语句:一是A账户减10000,二是B账户加10000:update t_act set balance = balance -

2021-02-06 14:21:05 263

原创 Mysql存储引擎

存储引擎完整的建表语句(包括存储引擎的选择)什么是存储引擎查看当前mysql版本支持的存储引擎常见的存储引擎MyISAMInnoDB(缺省引擎)MEMORY选择合适的存储引擎完整的建表语句(包括存储引擎的选择)CREATE TABLE `t_x` ( `id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;建表的时候可以指定存储引擎,也可以指定字符集。mysql默认使用的存储引擎是InnoDB方式,默认采用的字符集是U

2021-02-06 10:35:07 102

转载 吴恩达深度学习第一课第一周:深度学习引言(Introduction to Deep Learning)

深度学习引言Introduction to Deep Learning1.1 欢迎(Welcome)1.2 什么是神经网络?(What is a Neural Network)1.3 神经网络的监督学习(Supervised Learning with Neural Networks)1.4 为什么深度学习会兴起?(Why is Deep Learning taking off?)1.5 关于这门课(About this Course)1.1 欢迎(Welcome)第一个视频主要讲了什么是深度学习,深度

2021-02-05 23:05:17 192

原创 简单排序java实现(冒泡、选择、插入)

简单排序Comparable接口冒泡排序排序原理冒泡排序API设计代码实现时间复杂度分析选择排序排序原理选择排序API设计代码实现时间复杂度分析插入排序排序原理插入排序API设计代码实现时间复杂度分析排序是非常常见的一种需求,通常我们会接收一些数据元素,然后把这些数据元素按照一定的规则进行排序。在java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map,Math等等,都是以API的方式提供,这种方式的好处在于一次编写,多次使用。我们借鉴jdk的方式,也把排序算

2021-02-05 20:05:00 164

原创 Mysql约束

约束基本概念非空约束 not null唯一性约束列级唯一性约束表级唯一性约束主键约束单一主键复合主键使用表级约束方式定义主键主键值自增外键约束基本语法:关于外键约束的相关术语案例引入顺序要求:注意点基本概念什么是约束?在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。常见的约束有哪些呢?非空约束(not null):约束的字段不能为NULL唯一约束(unique):约束的字段不能重复主键约束(primary key):约束的字段既不能为

2021-02-05 15:34:33 1145 4

原创 Mysql 添加、修改和删除数据

添加、修改和删除insert语法格式例1:字段名和值一一对应例2:插入的字段顺序不影响结果:例3:可以只插入部分字段,其余全部为NULL。例4:可以省略字段名但必须符合顺序和个数例5:一次插入多行数据例6:复制表例7:将查询结果插入到表例8:插入日期方法1:插入的日期格式和显示的日期格式一致方法2:采用str_to_date方法3:添加系统日期(now())update语法格式例:将部门10的LOC修改为SHANGHAI,将部门名称修改为HRdelete语法格式例1:普通数据删除例2:删除大量数据例3:删除

2021-02-04 16:28:18 231

原创 算法分析(时间复杂度分析和空间复杂度分析)

算法分析算法的时间复杂度分析函数渐进增长算法时间复杂度大O记法常见的大O阶函数调用的时间复杂度分析最坏情况算法的时间复杂度分析常见内存占用算法空间复杂度    研究算法的目的就是如何花更少的时间,如何占用更少的内存去完成相同的需求。我们要学习有关算法时间耗费和算法空间耗费的描述和分析以定量分析算法的优劣。有关算法时间耗费分析,我们称之为算法的时间复杂度分析,有关算法的空间耗费分析,我们称之为算法的空间复杂度分析。算法的时间复杂度分析我们要计算算法时间耗费情况,首先我们得度量算法的执行时间,那么如何度量

2021-02-03 17:26:39 1403

原创 Mysql 创建表

创建表基本语法格式字段的数据类型char和varchar怎么选择?BLOB和CLOB类型的使用?案例基本语法格式建表语句的语法格式:create table 表名( 字段名1 数据类型(长度), 字段名2 数据类型(长度), 字段名3 数据类型(长度), ....);创建表的时候,表中有字段,每一个字段有:* 字段名* 字段数据类型* 字段长度限制* 字段约束字段的数据类型名称含义int整数型(java中的int)bigint长整型(java中的

2021-02-03 13:55:37 3647

原创 Mysql limit语句

limit简介基础语法执行顺序通用的标准分页sql简介mySql提供了limit ,主要用于提取前几条或者中间某几行数据。limit是mysql特有的,其他数据库中没有,不通用。(Oracle中有一个相同的机制,叫做rownum)基础语法select * from table limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。select * from tablename limit 2,4即取出第3条至第6条,4条记录。案例1:取出

2021-02-03 10:47:45 1071

原创 数据结构与算法概述

数据结构与算法概述什么是数据结构数据结构的分类逻辑结构集合结构线性结构树结构图结构物理结构/存储结构顺序存储结构链式存储结构什么是算法算法有什么用案例1:计算1到100的和。案例2:计算10的阶乘什么是数据结构数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。其实就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据。数据结构的分类逻辑结构逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互关系分类,也是我们

2021-02-02 21:09:34 103

原创 Mysql Union语句

UnionUnion 可以将查询结果相加案例:找出工作岗位是SALESMAN 和 MANAGER的员工方法1:select ename,job from emp where job='Manager' or job = 'SALESMAN';方法2:select ename,job from emp where job in ('manager'.'salesman');方法3:select ename,job from emp where job = 'manager' union sel

2021-02-02 20:31:28 179

原创 Mysql子查询

子查询在where语句中使用子查询案例1:找出高于平均薪资的员工信息。案例2:查询员工信息,查询哪些人是管理者在from语句中使用子查询案例1:找出每个部门平均薪水的等级。案例2:找出每个部门平均的薪水等级。案例三 查询员工信息,查询哪些人是管理者在select语句中使用子查询案例:找出每个员工所在的部门名称select语句当中嵌套select语句,被嵌套的select语句是子查询。子查询可以出现在哪里?select…(select).from…(select).where…(select)

2021-02-02 19:48:38 271

原创 Mysql 连接查询

连接查询笛卡尔积现象怎么避免笛卡尔积现象内连接等值连接SQL92(太老了不用)SQL99非等值连接SQL99自连接SQL99外连接什么是连接查询?在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果。一般一个业务都会对应多张表,比如:学生和班级,起码两张表。大量信息存储到一张表中,数据会存在大量的重复,导致数据的冗余。根据语法出现的年代来划分的话,包括:SQL92(一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理

2021-02-01 18:26:21 80

原创 吴恩达机器学习ex8 python实现

异常检测我们的第一个任务是使用高斯模型来检测数据集中未标记的示例是否应被视为异常。 我们先从简单的二维数据集开始。数据可视化import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sbfrom scipy.io import loadmatdata = loadmat('ex8data1.mat')X = data['X']X.shape(307, 2)fig,a

2021-02-01 15:38:16 251 1

转载 大规模机器学习(Large Scale Machine Learning)

17.1 大型数据集的学习参考视频: 17 - 1 - Learning With Large Datasets (6 min).mkv如果我们有一个低方差的模型,增加数据集的规模可以帮助你获得更好的结果。我们应该怎样应对一个有100万条记录的训练集?以线性回归模型为例,每一次梯度下降迭代,我们都需要计算训练集的误差的平方和,如果我们的学习算法需要有20次迭代,这便已经是非常大的计算代价。首先应该做的事是去检查一个这么大规模的训练集是否真的必要,也许我们只用1000个训练集也能获得较好的效果,我们可

2021-01-31 22:47:16 227

原创 Mysql 分组查询

分组查询group byhaving不使用分组函数使用分组函数select语句总结分组查询主要涉及到两个子句,分别是:group by和having。group by : 按照某个字段或者某些字段进行分组。having : having是对分组之后的数据进行再次过滤。group by取得每个工作岗位的工资合计,要求显示岗位名称和工资合计。select job,sum(sal) from emp group by job;| job | sum(sal) |+-----------

2021-01-31 15:18:37 241

原创 Mysql 分组函数/聚合函数/多行处理函数

分组函数/聚合函数/多行处理函数count分组函数又名聚合函数、多行处理函数。特点是输入多行,最终输出的结果是1行。表达式含义count取得记录数sum求和avg取平均max取最大的数min取最小的数分组函数自动忽略空值,不需要手动的加where条件排除空值。select count(*) from emp where xxx; 符合条件的所有记录总数。select count(comm) from emp; comm这个字段中

2021-01-31 14:22:15 330

原创 Mysql数据排序

排序数据普通字段排序按照单一字段排序按照多个字段排序手动指定排序顺序单个字段手动排序多个字段手动排序普通字段排序按照单一字段排序排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序,如果存在where子句那么order by必须放到where语句的后面。select * from emp order by sal;| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL

2021-01-31 11:47:13 188

转载 推荐系统(Recommender Systems)

推荐系统16.1问题形式化16.2 基于内容的推荐系统16.3 协同过滤16.4 协同过滤算法16.5 向量化:低秩矩阵分解16.6 推行工作上的细节:均值归一化16.1问题形式化参考视频: 16 - 1 - Problem Formulation (8 min).mkv在接下来的视频中,我想讲一下推荐系统。我想讲推荐系统有两个原因:第一、仅仅因为它是机器学习中的一个重要的应用。在过去几年,我偶尔访问硅谷不同的技术公司,我常和工作在这儿致力于机器学习应用的人们聊天,我常问他们,最重要的机器学习的应用

2021-01-29 23:31:40 392

原创 Mysql 条件查询

Mysql条件查询等号、小于号、大于号操作符等号操作符大于号操作符(小于号类比)<>号操作符between...and... 操作符is null 操作符and 操作符or 操作符表达式的优先级in 运算符not 运算符like 操作符语法格式:select 字段1,字段2… from 表名 where 条件;执行顺序:先from,然后where,最后select运算符说明=等于<>或!=不等于<小于<=小于等于

2021-01-29 15:47:26 143

空空如也

空空如也

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

TA关注的人

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