自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ice

我的世界,你的快乐

  • 博客(162)
  • 资源 (21)
  • 收藏
  • 关注

原创 EEG资料1

由于EEG信号的分析涉及数字信号处理、概率论、统计学等多个学科的知识,这使得很多EEG初学者望而却步。其实,如果静下心来耐心学习,你会发现“山重水复疑无路,柳暗花明又一村”,EEG的学习也并没有那么难。当然,良好的学习素材是开启EEG学习的不可或缺的一部分。这里,笔者从在线视频教程、学习网站和书籍教材三个方面汇总目前的EEG学习素材,希望对正在EEG学习路上的朋友有所帮助。EEG在线视频教程 1.EEGlab官方视频教程这是从youtube搬运到B站上的,全英文讲解,共7部分。B站地址: h

2021-09-13 19:12:53 394

原创 VTK简介

VTK是什么? Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。VTK可以用来干什么? 用它来进行3D计算机图形,图像处理,可视化。VTK包含一个c++类库,众多的翻译接口层,...

2021-07-15 11:09:37 590

原创 Boost简介

boost是什么?Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。 Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。但Boost中也有很多是实验性质的东西,在实际的开发中使用需要谨慎。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。boost的按照功能进行分类 ..

2021-07-14 15:16:59 1611 1

原创 Qt5.14.2 编译器msvc2019 PCL1.11.1 点云可视化工具部署

因为是第一次接触到QT3D模块,而且之前没有过3D相关方面的知识。因此在网上寻找了一些前辈们的使用经验,与指导。留此备忘。1:https://my.oschina.net/u/4298822/blog/3259895

2021-06-19 16:08:21 621 2

原创 C++类使用未定义类型 use undefined class

//a.h file#include <b.h>class B;class A {public: A(); ~A();private: B b;}//b.h fileclass B {public: B(); ~B();}

2021-06-19 11:21:37 1766

原创 boost库编译

一:boost库源码下载:https://www.boost.org/users/news/二:

2021-06-18 20:38:01 1348 1

原创 编译Vtk9.0.3编译(包含Qt组件)

一:下载Vtk:https://vtk.org/download/二:下载cmakebian

2021-06-18 20:09:18 1630 2

原创 C++ 的封装、继承、多态

面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!...

2021-05-31 21:00:45 579

原创 QT5.15.2__wind10 64 源码编译

准备前的工作:下载源码:https://download.qt.io/archive/qt/5.15/5.15.2/single/ 下载编译配套工具 打开源码 找到readme 文件查看相关的工具信息如下,并下载安装Windows: -------- Open a command prompt. Ensure that the following tools can be found in the path: * Supported c.

2021-04-10 15:31:26 2865

原创 QtPro使用小技巧

平台区分win32 {}macx {}unix {}根据平台位数加载win32 { contains(DEFINES, WIN64) { DESTDIR = $${PWD}/../../bin64 } else { DESTDIR = $${PWD}/../../bin32 }}编译器位数区分contains(QT_ARCH, i386) { message("32-bit") DESTDIR = $${PWD}/bin32} el

2021-04-08 09:52:46 1055

原创 c++ 构造函数、析构函数、拷贝构造函数、虚函数、纯虚函数

今天主要讲拷贝构造函数,给构造函数、析构函数、虚函数、纯虚函数留个坑拷贝构造函数注意事项:1:如果类中有全局堆变量,那么就要考虑是否重写拷贝函数,因为默认的拷贝函数只是简单的赋值,会导致多个实例的堆变量共用同一个堆空间。class A{public: A() { name = new char[20]; } A(const A&obj){ name = new char[strlen(getName.name)]; //

2021-03-04 20:57:07 223 1

原创 Qt点云数据初步探索 三维数据资源

最近因为公司的一个项目,需要使用到点云数据的呈现,特别收集了一些点云数据资源的下载链接。模型数据数字米开朗基罗项目 大型几何模型存档(佐治亚理工学院) 斯坦福大学的3d扫描存储库在pcl.org官网一篇点云分割的教程中发现一个[点云库网址](https://sourceforge.net/projects/pointclouds/files/)欧特克的研究——数字210金 欧特克的样品扫描和图像数据研究办公室。 自治系统实验室(乙) 激光和Kinect结构化和非结构化的数据环境。 这一组

2021-02-03 13:59:39 455

原创 QT BUG表

Qt5.12.10 编译器 模块 问题描述 mingw730_32 QTreeWidget 1:不能点击条目,否则会导致内存快速增长,并且App卡死

2020-12-18 16:39:41 293 1

原创 正则表达式

表达式全集字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配

2020-11-20 10:13:53 233

转载 判断应用程序是否存在,并打开已经存在的实例

// Windouw API 依赖头文件#include <windows.h>#include <winbase.h>// Qt 依赖头文件#include <QSystemSemaphore>#include <QSharedMemory>int main(int argc, char *argv[]){ // ...... //.....其他代码 /** 程序是否已经打开检测和激活并置于最前端控制 */...

2020-10-10 09:51:49 754

原创 sqlite数据库处理大量数据(千万)

先挖坑连接:https://www.shuzhiduo.com/A/VGzlVep15b/

2020-09-27 16:18:54 3752 1

原创 Qt (C++)线程

线程的实现方法继承QThread 重写run()方法,调用start()便可以使用 继承QRunnable 重写run()方法,需要使用线程池:QThread,调用QThreadPool::start() moveToThread 直接将实例对象扔到一个线程中,然后通过信号槽调用响应的槽函数(注意信号槽绑定时的第五个参数) QtConcurrent 直接调用方法:QtConcurrent ::run()线程的同步与异步问题所谓同步,就是发出一个功能调用...

2020-09-25 18:38:47 253

原创 sqlite数据库-------清除数据,数据库文件大小不变解决方法

现象:删除表格的全部数据:DELETE FROM [Name]原因:当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。解决方法方法一(推荐):在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。方法二:在数据库文件建成中,将auto_vacuum设置成“1”。但是第二个方法同样有缺...

2020-09-24 14:17:45 3003

原创 const

what(是什么):const是一个修饰符,被其修饰的东西只具有“读”的特别,在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。who(谁用它):编译器when(什么时候用):编译时期why(为什么用):const修饰符的作用主要是利用编译器帮助我们检查自己代码的正确性。我们使用const在源码中标示出“不应该改变”的地方,然后利用编译器,帮助我们检查这些地方是否真的没有被改变过。如果我们不小心去修改了这些地方,编译器就会报错,从而帮助我们纠正错误。使用const和不使

2020-09-14 09:48:09 94

原创 Qt资源索引

论坛网站:https://www.qtcentre.org/

2020-09-03 11:51:29 202

原创 6.11行为型---解释器模式

在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,其效果是非常好的,本文将介绍其工作原理与使用方法。模式的定义与特点解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是

2020-09-01 19:42:24 133

原创 6.10行为型---备忘录模式

每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、Eclipse 等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有在 IE 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与操作系统的备份操作、棋类游

2020-09-01 19:41:00 257

原创 6.9行为型---访问者模式

在现实生活中,有些集合对象中存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价,药房工作人员根据处方单的内容进行抓药。这样的例子还有很多,例如,电影或电视剧中的人物角色,不同的观众对他们的评价也不同;还有顾客在商场购物时放在“购物车”中的商品,顾客主要关心所选商品的性价比,而收银员关心的

2020-09-01 19:39:07 147

原创 6.8行为型---迭代器模式

在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现是否可行呢?答案是同样不可取,因为这种方式会存在两个缺点:暴露了聚合类的内部表示,使其数据不安全; 增加了客户的负担。“迭代器模式”能较好地克服以上缺点,它在客户访问类与聚合类之间插

2020-09-01 19:37:41 162 1

原创 6.7行为型---中介者模式

在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须告诉其他所有的朋友修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所说的“每个人必须记住所有朋友电话”的问题,只要在网上建立一个每个朋友都可以访问的“通信录”就解决了。这样的例子还

2020-09-01 19:36:06 137

原创 6.6行为型模式——————观察者模式

在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象局的天气预报与听众、小偷与警察等。在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系;事件模型中的事件源与事件处理者。所有这些,如果用观察者模式来

2020-09-01 19:34:11 231

原创 6.5行为型模式---状态模式

在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态会发生改变,从而使得其行为也随之发生改变。如人的情绪有高兴的时候和伤心的时候,不同的情绪有不同的行为,当然外界也会影响其情绪变化。对这种有状态的对象编程,传统的解决方案是:将这些所有可能发生的情况全都考虑到,然后使用 if-else 语句来做状态判断,再进行不同情况的处理。但当对象的状态很多时,程序会变得

2020-09-01 19:31:55 236

原创 TCP/IP网络协议

TCP/IP协议下图就是TCP协议的格式。

2020-08-27 09:17:10 206

原创 6.4行为型模式——责任链模式

在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活中的“击鼓传花”游戏等。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相同来决定是否接收;还有异常处理中,处理程序根据

2020-08-19 18:15:12 146

原创 6.3行为型模式——命令模式

在软件开发系统中,常常出现“方法的请求者”与“方法的实现者”之间存在紧密的耦合关系。这不利于软件功能的扩展与维护。例如,想对行为进行“撤销、重做、记录”等处理都很不方便,因此“如何将方法的请求者与方法的实现者解耦?”变得很重要,命令模式能很好地解决这个问题。在现实生活中,这样的例子也很多,例如,电视机遥控器(命令发送者)通过按钮(具体命令)来遥控电视机(命令接收者),还有计算机键盘上的“功能键”等。命令模式的定义与特点命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任

2020-08-19 18:13:24 169

原创 6.2行为型模式——策略模式

在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原代码,不易维护,违背开闭原则。如果采用策略

2020-08-19 18:11:08 315

原创 6.1行为型模式--模板方法模式

在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。这样的例子在生活中还有很多,例如,一个人每天会起床、吃饭、做事

2020-08-19 18:09:43 226

原创 6.0行为型模式

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。行为型模式是 GoF设计模式中最为庞大的一类,它包含以下 11 种模式。模板方法(Template Method)模式:定义一个操作中.

2020-08-19 18:07:33 144

原创 5.7结构型模式————组合模式

在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。组合模式的定义与特点组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致

2020-08-19 09:58:05 203

原创 5.6结构型模式——————享元模式

在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提取出来共享,则能节省大量的系统资源,这就是享元模式的产生背景。享元模式的定义与特点享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需

2020-08-19 09:57:55 145

原创 5.5结构型模式——————外观模式(Facade模式)

在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。软件设计也是这样,当一个系统的功能越来越强,子系统会越来越多,客户对系统的访问也变得越来越复杂。这时如果系统内部发生改变,客户端也要跟着改变,这违背了“开闭原则”,也违背了“迪米特法则”,所以有必要为多个子系统提供一个统一的接口,从而降低系统的耦合度,这就是外观模式的目标。图 1 给出了客户去当地房产局办理房产证过户要遇到的相关部门。图1 办理房产证过户的相关

2020-08-19 09:57:40 143

原创 5.4结构型模式—————装饰模式

装饰模式的定义与特点装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活。 可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。其主要缺点是:装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。装饰模式的结构与实现通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高

2020-08-18 10:53:53 128

原创 5.3结构型模式——————桥接模式(Bridge模式)

在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。桥接模式的定义与特点桥接(Bridge)模式的定义如下:将抽象与实现

2020-08-18 10:53:46 148

原创 5.2结构型模式————适配器模式

在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。模式的定义与特点适配器模式(Adapter)的定义如下:将一个类的接口

2020-08-18 10:53:39 180

原创 5.1结构型模式————代理模式

在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大图像等),其下载要花很多时间。还有因为安全原因需要屏蔽客户端直接访问真实对象,如某单位的内部数据库等。代理模式的定义与特点代理模式的定义:由于某些原因需要给某对象提供一个代

2020-08-18 10:53:30 157

vtk9.0.3_msvc2017.zip

vtk9.0.3 msvc2017编译版本

2021-07-20

boost_1_76_0

boost_1_76_0,编译器msvc:2015、2017、2019,14.0、14.1、14.2

2021-07-15

MSVCR120_MSVCP120_用于libmysql依赖.zip

MSVCR120_MSVCP120_用于libmysql依赖.zip

2021-06-03

Qt_Mysql_dirver.zip

qtMysql驱动库

2021-04-08

Modbus_3.16_64.zip

libmodbus库64位版本

2021-03-23

mysql_8.0.23_64___msvc2017___Qt5.14.2.zip

Qt5.14.2 mysql驱动器,mysql版本为8.0.23

2021-03-17

华为的linux内部培训总结资料

华为的linux内部培训总结资料

2020-10-16

8个数据库设计典型实例 (1).zip

数据库实例。

2020-02-28

quse_588311.exe

pc软件取色

2019-08-05

java_c++_机器学习等多种学习结构图.zip

包含java c++ 大数据 linux 等多种开发方向的知识结构图

2019-06-26

QT5.1类图之间的抽象关系

一张图表:抽象展示了Qt5.1阶段 各个类之间的关系

2019-06-26

串口模拟工具.zip

用来模拟串口,实现虚拟的串口通讯。

2019-05-21

github windows

这是一个github安装包

2019-03-19

sqlite3odbc

平常感觉没什么用,轮到用的时候才发现贼不错!

2019-01-19

qt_音频出现问题解决文件

qt 出现 DirectShowPlayerService::doRender: Unresolved error code 0x80040266 ()

2019-01-18

startuml+pojie+window

统一建模工具。

2019-01-17

最小二乘法拟合

最小二乘法,拟合数据。

2018-11-22

qt sqlite操作实例

qt sqlite操作实例

2018-10-25

连接光谱仪的实例

光谱仪连接实例

2018-10-25

光谱仪连接动态库

光谱仪连接动态库。 光谱仪连接动态库。光谱仪连接动态库。

2018-10-23

qcutomplot

qcustomplot资源。

2018-10-23

空空如也

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

TA关注的人

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