自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (6)
  • 收藏
  • 关注

原创 数据库篇之分页查询

在数据量大的情况下使用建立主键或唯一索引来实现,另外可通过。场景:当需要返回的数据是顺序或者逆序时。两个参数来分页查询数据库中的数据,比如。场景:数据量达到万级或百万级时。在数据量较小的情况下可使用。查询来实现分页查询。

2022-09-27 16:55:30 697

原创 数据库篇之InnoDB存储引擎

InnoDB存储引擎的设计目标主要是面向在线事务处理OLTP的应用,它支持事务,特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读(读操作默认是不加锁)。从MySQL5.5.8开始,MySQL存储引擎默认是InnoDB。InnoDB具有高可用性、高性能以及高可扩展性。InnoDB(1)通过多版本并发控制****MVCC来获得高并发性,并且实现了SQL标准的4种隔离级别,默认是可重复读级别。(2)同时使用一种****的策略来避免幻读的产生。

2022-09-27 16:52:52 3260

原创 Java篇之序列化和IO

数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。(比如将 Java 对象保存在文件中,或者在网络传输 Java 对象),这些场景都需要用到序列化。字节数据要转成我们能识别的正常字符,需要选择正确的编码方式。修饰的变量,在反序列化后变量值将会被置成类型的默认值。方式编码的字符,一个英文字符需要一个字节,一个中文需要三个字节。计算机的传输本质都是字节,而一个字符由多个字节组成,的,为什么使用字节流,而不是字符流?方式编码的字符,占一个字节;

2022-09-27 15:38:42 720

原创 Java篇之类的执行顺序

只使用类时,不会进行初始化在使用静态变量或创建对象时,才会进行初始化。初始化的顺序是。

2022-09-27 15:35:33 175

原创 Java篇之对象

用过的内存全部整合到一边,没有用过的内存放在另一边,中间有一个分界值指针,只需要向着没用过的内存方向将该指针移动对象内存大小位置即可。作为起点,向下搜索,遍历可以到达的节点。节点走过的路径是引用链,如果一个对象没有引用链相连,那么就说明这个对象是不可用的。另外,根据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。它需要保证引用所指向的对象都是活着的,当前线程栈帧中的对象在当前时刻肯定是活着的。,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的。

2022-09-27 15:33:02 341

原创 类加载机制

双亲委派机制是通过类加载器。

2022-09-27 15:21:24 254

原创 HashMap

在调整大小的过程中,有一步是把老数组中的全部元素转移到新数组中。这个过程在并发环境中会发生错误,导致数组链表中的链表形成循环链表。)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。哈希表内部数组的大小很重要,要保持一个平衡的数字,不能让哈希碰撞太频繁,也不能占用空间太大。如果进行2倍扩容,也需要将表中已有的值,重新散列到新表中,重新散列的过程是通过。在哈希表使用的过程中,会不断的调整数组的容量。

2022-09-27 15:10:09 610

原创 两值相等判断

基本类型位数字节默认值对应的包装类型包装类的默认值数字型short1620Shortnullint3240Integernulllong6480LLongnull字符型byte810Bytenullchar162‘u0000’Characternull数字型float3240fFloatnulldouble6480dDoublenull布尔型boolean1—FALSEBooleannull。...

2022-08-18 16:30:40 1335

原创 从编译到运行

因为字节码是面向虚拟机,不面向任何特定的处理器,所以使得Java语言有可移植的特点,不需要重新编译就可以在不同的操作系统上运行,也就是Java语言可以跨平台。类库一起支持了反射(具体怎么支持才实现的,不知道😂),这样,通过类库就可以在运行时获取某个类的信息,比如变量、构造函数、方法。字节码,是Java虚拟机可以理解的代码,简短点理解就是,字节码是代码😅。编译是由编译器完成的,将源码一次性翻译成字节码,编译完成后生成中间的字节码文件,也就是。中包含类的信息,所以如果想要在运行时使用类的类型信息,可以从。...

2022-08-15 12:33:56 1086

原创 (五)编译中出现的向后兼容问题

合并,不建议用来调整记录的顺序。当时想着有这个用法,我又有这个需求,为啥不用。的设置不对,比如没有加版本号之类的。开源项目的配置,粗略一想,不是我能动的,自然也不会是这些原因。向后兼容问题,可能会有很多原因导致向后兼容出现问题,那么在这次编译中导致这个问题的原因是什么呢?,直到回退到没有修改的版本。回退完了,确认修改无误后提交。明明看报错一分钟解决的问题,花了挺长时间。也就是现在的代码是不允许重大修改的。,然后发现提示中给了解决方案,可以。,回退一个版本,把本地的修改隐藏。,知道把所有的都提交完成。....

2022-08-06 15:58:49 331

原创 java接收数据的方式

前端传递数据的方式不同,java 也要使用不同的方式来接收数据。下面是三个例子。前端请求地址格式如下假如请求的具体地址是 。那么,java 接收参数格式如下,需要用 来接收2. 请求中用 params 传递数据前端请求地址格式如下假如请求的具体地址是 ,请求的参数是 和 。那么,java 接收参数格式如下,需要用 来接收单个的参数,一个 接收一个参数。 中客户以设置接收数据的默认值3. 请求中用 data传递数据 : 提交的数据是列表。前端请求地址格式如下假如请求的具体地址是

2022-06-08 21:57:13 4645

原创 (四)Alluxio 卸载挂载目录和删除文件

卸载:把以前加载到 根目录下的路径卸载,然后,底层存储系统的目录和 中的目录没有关系了。删除:把 中的普通文件(master 节点或者 worker 节点)中的文件从 中移出,但是并不会在底层存储系统中删除该文件。如果将挂载目录删除了,也就没有这个挂载节点了。卸载一个在 中已经挂载的目录,并确认该目录已经在Alluxio命名空间中被删除,但是不会删除底层存储系统中的文件。注意:在 节点的 web 界面查到有一个挂载节点,是将本地的 路径挂载到了 的 路径。现在将这个挂载节点卸载。卸载后的

2022-06-07 17:08:13 1075

原创 (三)Alluxio 的挂载和加载

挂载:把底层存储系统和 联系起来,文件的元数据信息在 的 master 节点中。加载:把 中的路径的数据放在 worker 节点中。把本地目录 挂载到 中的 。挂载以后, 目录下的内容就是 目录下的内容。挂载后的结果,可以通过 查看。但是之后在 中添加新的文件,新文件并不会自动加载到 中。把 中的某个文件加载到 空间中。当使用 挂载后,只是相当于把 和底层存储系统连接起来。可以使用 将文件(数据)加载到 的空间中,也就是把文件(数据)移到 worker 节点。2.2

2022-06-07 17:07:22 893 2

原创 (二)Alluxio 挂载和 fs ls

在多次测试和各种奇奇怪怪的操作之后,我发现我设置的根挂载点 中没有任何文件,但是通过 仍能查出来 空间中是有数据的。一顿凌乱之后,整理了一下目前自己理解的东西,期望能找寻蛛丝马迹。在使用本地运行项目时,挂载的是 RAMFS文件系统,该系统是使用 RAM 作为文件存储系统,运行速度较快。因为在本地运行 项目时, 的一个 节点和一个 节点都在本地,所以可能需要区分一下 的本地缓存路径 和存放所有文件元数据的 节点的空间(或者路径)。 和底层存储系统是两个独立的东西,底层存储系统是存储设备,可

2022-06-01 15:43:30 990

原创 Linux 下查询日志

文章目录查询某个时间点grep 命令 - 精准查询查询某个时间段grep 命令 - 精准查询sed 命令 - 模糊查询以查询日志 master.log 为例(因为我实际测试时使用的日志文件是在 logs 文件下的,所以实际查询时用的路径和举例用的路径不一样)查询某个时间点grep 命令 - 精准查询grep 命令 + 正则表达式,进行精准查询# 查询 2022.03.23 16点43分的日志cat master.log | grep '2022-03-23 16:43'# 另一种写法grep

2022-03-24 17:33:44 3819

原创 Linux 下查看内存问题

文章目录free 查看内存使用top 实时查看进程运行情况ps 查看进程占用的cpu和内存pstree 查看进程关系kill 杀死进程free 查看内存使用free — 查看内存使用情况# total共多少,used已使用多少,free空闲多少,buff/cache磁盘缓存多少,available可用多少# -m 输出结果使用 MB(兆字节)显示。默认是 KB(千字节)[root@VM-0-11-ubuntu /home/ubuntu/alluxio]$ free -m

2022-03-24 17:30:17 2958

原创 (一)Linux下 Alluxio 的编译和运行

文章目录概念:是什么?字节码编译与解释共存??代码放哪里?Linux 下编译Linux 下运行运行之前运行验证Alluxio是否运行第一次接触分布式项目,还是在Linux下编程,确实和Windows下编程有一点点不一样。没有一点点防备,就让我了解到不能用在 windows 上运行的代码,以及除了 web 开发之外的开发。熟悉了以前在Windows下的开发,用 IDEA 工具开发,点 build 编译项目(之前一直翻译成构建项目),点 run 运行项目,有时甚至都不点 build 。这个过程好像是肌肉记忆

2022-03-18 09:06:07 839

原创 了解分布式缓存系统 Alluxio

文章目录分布式是什么??缓存是什么??Alluxio 基础概念Alluxio 基础组成从技术上来讲,Alluxio 是一个数据编排技术(数据编排,大概类似于一个平台,这个平台是用来管理数据的,主要是管理,对象是数据),它相当于一个数据层,在应用层和存储层之间加了一层,为上下两层搭建了桥梁,将数据移到离应用更近的地方,从而更容易访问数据。数据驱动型应用是什么样的应用?数据驱动:以数据为基础,将数据组织成信息,然后利用机器学习、算法等手段处理信息,最终形成自动化的决策模型。数据驱动型应用是以数据为基础,对

2022-03-18 08:56:41 861

原创 TCP 协议

文章目录报文段TCP 头部TCP 数据TCP 连接三次握手四次挥手如何实现可靠性的??滑动窗口发送窗口接收窗口自动重传请求 ARQ拥塞控制拥塞控制算法慢启动拥塞避免快重传失序失序的2种情况TCP 数据传输的过程TCP 协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段)。然后TCP把报文段传给IP层,由它来通过网络将

2022-03-17 16:49:49 4746

原创 kmp算法

整篇以主串为 ababcabcacbab ,模式串为 abcac为例。模式串与主串做匹配时,如果是暴力匹配,在主串某趟匹配失败后,模式串要移动第一位,而主串也有苦难需要回退。在KMP算法中,如果在匹配过程中,主串不需要回退,当匹配失败后,会从当前位置开始继续匹配。而模式串会滑动到某一位开始比较,而不是没都回退到第一位开始比较。1. 前缀表:不能不了解KMP算法中,在写代码之前, 先了解一下KMP算法。首先看一下模式串子串的前后缀。前缀:除最后一个字符以外,字符串的所有头部子串。后缀:除第一个字符以

2021-12-19 21:43:59 585 1

原创 【vue】组件通信:用prop交流

文章目录1. 修改子组件的变量1.1 父组件1.2 子组件1.3 查看父组件中变量是否变化2. 修改父组件的变量2.1 父组件2.2 子组件2.3 查看父组件中变量是否变化组件之间实现通信的方式主要有三种,这里记录的是使用props进行通信的方式。这种通信方式适合用于父子组件之间的通信。有时候需要在一个组件内需要引入另一个组件,我这里说的是这种情况,具体的可以看代码(网上有很多父子组件的说法,我也没理解 ╮(╯▽╰)╭ )。父组件向子组件传递数据,是单向的,也就是,父组件传递给子组件的数据(变量),子组

2021-11-12 17:27:21 1076 1

原创 前后端交互:前端传递数据是json格式

文章目录前端发送数据后端接收数据方案一:接收全部数据(String类型的变量)方案二:接收每个数据(Map类型的变量)这篇文章记录的是前后端在交互时,数据以json的格式进行传递。本文章中的例子,前端使用的语言是vue,后端使用的语言是 java。整篇文章使用的数据例子(json格式)如下:{ "name": "testfilename.xlsx", "list": [ { "row": "1", "col": "A"

2021-11-05 08:59:01 17199 5

原创 【vue】将项目部署到nginx

文章目录1. 部署步骤Step1 打包Step2 修改配置文件Step3 查看网站2. nginx配置文件全部内容3. 部署多个网站到nginx服务器上1. 部署步骤Step1 打包在项目终端打包,打包完成后会出现一个 dist 文件夹。npm run build将 dist 文件夹拷贝到 nginx 安装目录下的 html 文件夹中。Step2 修改配置文件对 nginx 进行反向代理,否则无法使用后端的api接口,会报跨域的错误。在 nginx 安装目录下的 conf/nginx.con

2021-10-16 16:05:16 1001

原创 【vue】主动触发点击事件

由vue代码触发点击事件,实现的效果是:点击按钮,触发 <input> 输入框点击事件,从而实现选择文件。示例如下:<template> <input type="file" id="input-upload-file" ref="selectFiles" multiple="multiple"> <el-button class="operation-button-select" @click="handleButtonSelected"&gt

2021-10-16 15:47:19 10564 1

原创 【vue】转换时间格式

一般来说, new Date() 创建的时间,其格式不是我们想要的那种时间格式,所以需要修改为我们需要的时间格式。这里的方法是将 new Date() 出来的时间转换为所需时间格式的字符串。举个例子,let date = new Date(); // Mon Oct 11 2021 08:39:50 GMT+0800 (中国标准时间)let afterDate = this.formateDate(date); // 2021-10-11 08:39:50转换方法时间转字符串的方法如下:/

2021-10-16 15:43:17 3004

原创 【vue】文件下载 - 使用前端下载

文章目录1. 自定义指令1.1 局部自定义指令1.2 全局自定义指令2. 使用方法下载文件这里的情景是:给定一个链接,如 http://localhost:8000/1.jpg , 需要实现的效果是将文件/图片下载下来,保存到本地。但是在使用vue实现文件下载功能的时候,遇到了一个很大的问题,就是,文件只能在浏览器中预览,而不是下载到本地。在这个过程中,尝试了 el-link 、a 标签、window.open 、window.location.href 等方案来进行文件下载,但是都没有实现想要的效果

2021-10-12 16:50:02 2394

原创 【vue】将项目部署到nginx

文章目录Step1 打包Step2 修改配置文件Step3 查看网站nginx配置文件全部内容Step1 打包在项目终端打包,打包完成后会出现一个 dist 文件夹。npm run build将 dist 文件夹拷贝到 nginx 安装目录下的 html 文件夹中。Step2 修改配置文件对 nginx 进行反向代理,否则无法使用后端的api接口,会报跨域的错误。在 nginx 安装目录下的 conf/nginx.conf 配置反向代理。修改配置如下:取消 pid 的注释pid

2021-10-09 08:55:50 626

原创 【vue】生成接口模拟数据

文章目录方案一:自定义模拟数据Step1 创建json文件Step2 在 `vue.config.js` 中配置Step3 在组件中使用 (方式一)Step3 封装api (方式二)Step4 在组件中使用 (方式二)方案二:自动生成模拟数据Step1 引入mock.jsStep2 编写模拟数据Step3 在组件中使用在前端vue中使用虚拟数据模拟后端接口返回的数据,从而使得前端开发独立化。这里使用了两种方案模拟接口返回的数据。第一种方案是自定义模拟数据,请求获得该数据。该方案是先创建要返回的jso

2021-10-03 09:51:54 688

转载 ssh连接问题(不能下载github项目)

文章目录Step1 查看ssh连接信息Step2 运行 ssh-agentStep3 添加私钥Step4 启动 `ssh-agent` 进程(可选)Step5 使用ssh连接githubStep6 测试最近发现我生成的ssh公钥不能下载github上自己的项目,此前我一直以为我的ssh是没问题的,不知道为啥不能用。每次使用ssh协议下载项目时,都会出现一个问题:Load key "C:\\Users\\90618\\.ssh": Is a directorygit@github.com: Permis

2021-09-26 11:10:33 1177

原创 【vue】获取异步加载后的数据

异步请求的数据,对它做一些处理,需要怎么做呢??axios 异步请求数据,得到返回的数据, 赋值给变量 info 。如果要对 info 的数据做一些处理后再赋值给 hobby ,直接在 axios 的回调函数中做处理。我这里把获取数据,放在了 created 中,在加载页面之前获取数据。这个时候,methods 中的方法还没有请求后的 info 数据,如果调用 methods 中的方法处理 info 数据,info 是未定义的。所以,如果需要对异步加载的数据做一些处理,直接在 axios 的回调函数中处

2021-09-09 08:37:21 1169

原创 【vue】两个页面间传参 - props

文章目录Step1 设置可以 `props` 传递数据Step2 跳转前页面中传递数据Step3 跳转后的页面接收数据从 A 页面跳转到 B 页面, 参数/数据通过 props 传递到 B 页面,这种方法,不会将参数/数据显示在 url 中。这里的例子是从 before 页面跳转到 after 页面,传递的数据是 {id: '这是传递的数据'}Step1 设置可以 props 传递数据在路由文件 router/index.js 中,设置 props=true。// 引入相关页面import Be

2021-09-09 08:30:17 1082 1

原创 【vue】 使用 Video.js 播放视频

文章目录安装引入使用环境:vue 2.0+element ui (这里的代码用了elmentui的按钮样式,可以不用elment ui的样式)安装在项目中安装 video.js。npm install video.js引入在 main.js 中引入以下内容:import Video from 'video.js'import 'video.js/dist/video-js.css'Vue.prototype.$video = Video使用实现的效果是:初始时,视

2021-09-03 08:36:50 1555

原创 第三章:Git 把项目推到远程仓库

目录远程仓库1. SSH 连接 (若已经连接,可跳过)2. 把本地已有项目推到远程仓库3. 在 IDEA 中将项目推到远程仓库远程仓库环境:Windows 10系统。码云:https://gitee.com。以码云为例,github类似。一个远程仓库通常只是一个裸仓库(bare repository)——即一个没有当前工作目录的仓库。 简单的说,裸仓库就是你工程目录内的 .git 子目录内容,不包含其他资料。Gitee 提供了基于 SSH 协议的 Git服务,在使用 SSH 协议访问仓库仓库之前,

2021-06-11 14:15:09 654 2

原创 IDEA 自动生成快捷键

打出一些字母后回车,可以自动生成某些代码。自动生成 main() 函数: 打出 main 后回车输出打印: 打出 sout 后回车复制当前行: 光标在当前行,Ctrl + C复制当前行到下一行: Ctrl + D自动生成构造函数/set/get函数:Alt + Insert新建一行,且光标移到新行:Shift + Enter...

2021-05-31 22:12:16 2801 1

原创 Scanner 类中 next() 和 nextLine() 的区别

不能使用的原因不是语法不对,而是使用这两种来接收数字和字符串时,需要额外处理。会发现结果不如预想中的接收到3个数字和1个字符串。如果使用以下方式混合接收:先接收3个数字,后接收字符串。在接收完3个数字之后,接收输入的位置是停留在数字。接收的是一个换行符,并不是输入的字符串。用于判断释放还要输入。接收输入时,就会接收到换行符。接收输入,也不能混合使用。输入以下内容,分别使用。从键盘接收输入需要用到。...

2021-04-27 14:36:25 2486

原创 多线程概念

目录1. 什么是线程呢?2. 什么是进程呢?3. 什么是多线程呢?4. 为什么要使用多线程呢?5. 怎么创建线程?1)继承 Thread 类2)实现 Runnable 接口3)实现 Callable 接口4)run() 和 start() 的区别6. 线程的6个状态有哪些?1. 什么是线程呢?线程是CPU能够进行运算调度的最小单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务,互相之间并不同步。线程是独立调度和分派的基本单位。线程不拥有系统资源,同一

2021-04-13 16:46:39 359

原创 Java 中的集合体系

目录1. 什么是集合?2. 为什么要使用集合?3. 3个接口介绍3.1 `List` 接口包括以下实现3.2 `Set` 接口包括以下实现3.3 `Map` 接口包括以下实现4. 如何选择集合?5. 比较和区别一些接口或类6. Collections 工具类有哪些常用方法?6.1 排序6.2 查找,替换1. 什么是集合?集合类是 Java 数据结构的实现。它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,

2021-04-12 23:56:47 852

原创 TCP/UDP协议

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由 FTP、SMTP、TCP、UDP、IP等协议构成的协议簇。1. 五层协议体系结构是什么?OSI 体系结构采用七层协议:由下至上分别是 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。TCP/IP 协议的体系结构采用四层协议:由下至上分

2021-04-12 18:37:05 372

原创 类加载机制简要介绍

目录1.类加载过程有哪些?2. 什么时候会加载类?3. 类加载器是什么?4. 类加载器有什么用?5. JVM中有哪些类加载器(类加载体系是什么)?6. JVM 类加载机制有哪些?7. 双亲委派7.1 双亲委派是什么?7.2 双亲委派的工作原理是什么?7.3 双亲委派有什么优点?class 文件需要加载到虚拟机中之后才能运行和使用,虚拟机加载class 文件的过程就是类加载过程。1.类加载过程有哪些?系统加载class 文件主要有三步:加载 -> 连接 -> 初始化。连接的过程又分为三步

2021-04-10 22:03:51 317

原创 垃圾回归机制GC

垃圾回收机制GC目录垃圾回收机制GC1.GC是什么?2. GC是干什么的?3. 什么时候需要监控GC4. 什么时候触发GC?5. 如何判断对象是否存活?5.1 引用计数法5.2 可达性分析算法6. 如何回收垃圾?— GC算法6.1 复制算法6.2 标记清除算法6.3 标记清除压缩算法6.4 比较三种算法6.5 堆中使用哪种算法7. 常见的垃圾回收器7.1 Serial 收集器7.2 ParNew 收集器7.3 Parallel Scavenge 收集器7.4 Serial Old 收集器7.5 Paral

2021-04-10 17:52:15 553

两轮自平衡小车的源代码

基于51单片机的两轮自平衡小车的所有源代码(早期学习时的资源)

2017-08-15

角度传感器测量x轴角度

基于51单片机的角度传感器测量x轴角度程序

2017-08-12

基于MSP430的液晶1602显示程序

基于MSP430的液晶1602显示程序。

2017-08-05

基于MSP430的实时时钟

基于MSP430的实时时钟显示。

2017-08-05

基于MSP430的AD转换,液晶1602显示结果

基于MSP430的1602液晶显示ADC转换结果程序,显示输入到ADC的电压转换后的数字量和模拟电压大小。MSP430单片机内部12位ADC,采用内部2.5V基准,单通道单次转换,中断模式,有精度误差,通过电位器可以更改输入电压,最大显示量4095和2.5V. (早期学习资料)

2017-08-05

MSP430直流电机控制

基于MSP430的直流电机控制。电机可以启动/停止,正反转,加减速。加减速使用PWM控制。(早期学习资料)

2017-08-05

空空如也

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

TA关注的人

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