自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (12)
  • 收藏
  • 关注

原创 vc调用外部exe附加窗口方式

HWND hWnd = ::FindWindow(NULL, _T("exe"));if (hWnd != NULL){m_wndExe.Attach(hWnd);m_wndExe.ShowWindow(FALSE);m_wndExe.SetParent(this);m_wndExe.MoveWindow(111,82,802,602);m_wndExe.ShowWin

2014-08-12 10:46:54 705 1

转载 Flash安全设置工具

rem FlashFlashPlayerTrust.cmdc:cd %windir%/system32/Macromed/Flashmd FlashPlayerTrustcd FlashPlayerTrustecho c: >myTrustFiles.cfgecho d: >>myTrustFiles.cfgech

2014-07-03 09:57:37 488

原创 .NET4无法安装问题解决方案

1 提到了解决办法:在运行 cmd 命令,再输入 fsutil resource setautoreset true c:\   如果windows7安装在其他盘则改为相应的盘符。(装在D盘的写D:\)于是我ok了~~2 然后关闭 Internet 时间自动同步3 就可以安装.NET4和Windows' UPdate了

2014-07-03 08:56:43 1550

原创 MS SQL 数据插入access

insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=D:\xxdb\Content_WL21.aoo','select * from ResContent') select * from ResContent

2014-02-11 17:10:08 450

原创 win7或win8语言包安装

win7或者win8 64位里面有删除语言包的lpremove任务需要禁止命令system("schtasks /change /disable /tn \\Microsoft\\Windows\\MUI\\LPRemove");禁止任务// 检查操作系统的版本号 OSVERSIONINFO _osv; ZeroMemory(&_osv, sizeof(OSVERSIONINFO

2013-09-26 13:26:20 839

转载 开发cocos2d-x 游戏 实战篇(8)--终结篇

哈哈虽然这个游戏完结了但是不代表我的博客更新就此,结束。我以后还会不断更新以项目的方式给大家讲解cocos2d-x 的用法。对于这个游戏我来总结一下。这些天群里问我的朋友不少,我发现一个问题。或者说 咱们的思路可能不一样。很多人问我是怎么想的哪些功能是怎么实现的。其实BOY也是人也不是神。很多东西我一开始也没想到,不过大的框架的地方一定要想到。例如拿武器系统来说 我刚开始想的时候 想这个武器系统能

2013-09-18 15:59:59 779

转载 开发cocos2d-x 游戏 实战篇(7)之关卡系统的基本设计

下面我简单的说了一下我的设计关卡系统的一个简单的思路。我感觉做这类的塔防游戏其实就是每一个关卡就是一个生存模式,当你过了以后就可以进入到下一关,当你没过的时候会让你一直停留在次关 一直打到你过为止。既然是这样的一个思路那么没提升一个关卡怪物的属性值和怪物的数量值总是需要提升,来增加游戏的难度。让玩家更好的玩下去。我的总体思路就是这样。 我画个简单的流程图 大家看到这个图是不是发现其

2013-09-18 15:53:08 1011

转载 开发cocos2d-x 游戏 实战篇(6)之 绚丽的魔法特效

呵呵看起来还是很绚丽的吧 要问这个代码是怎么实现 明白人一看大概都能了解     首先我修改了我武器系统里面的部分代码   就是为了加入上面那些绚丽的特效void WeaponSprite::initIdleMagicSpool(cocos2d::CCLayer* pLayer){        int cout=3;// 假设 魔法矩阵的   

2013-09-18 15:51:34 1084

转载 开发cocos2d-x 游戏 实战篇(5)之魔法阵和自定义弹框

这一章包含的内容有 添加魔法阵的CD 动画 其实就是游戏中的技能的CD 在一个重要的一点就是自定义弹出框。还有一点就是给主城添加气血和魔法。在这里给大家说下我添加的这些东西 有些具体的功能还没实现 例如魔法阵 这一块我感觉是比较重要的一块,我准备放到下一章来专门讲解 魔法阵的实现,在游戏中如何使用魔法消灭怪物,呵呵是不是很期待啊。还有一个就是在弹出框中我 我重新开始游戏这一点我还没实现,别看这么一

2013-09-18 15:49:58 917

转载 开发cocos2d-x 游戏 实战篇(4)之 怪物系统

其中关于怪物类 我这里要仔细讲解一下  在一个游戏中我们的怪物 常常是这样的  有攻击动画  有走路动画  有死亡动画 目前我没考虑收到攻击的动画 考虑太多只会增加开始游戏的难度 我们先把最基本的 实现 慢慢来扩展     我的怪物的图片是从66rpg 上下载的  然后用TexturePacker  把众多的动画 所需要的 图片处理成一张图片  减少加载图片的次数 通过这个工具以后会生成一

2013-09-18 15:45:30 941

转载 开发cocos2d-x 游戏 实战篇(3)之武器系统(散花弹)

这一章 写的东西比较多 不过分模块理解就好 主要模块有 武器 弹药 武器+弹药组合成 武器系统 ,当武器里面没有子弹的时候自动上膛 给加子弹,子弹会随着武器的跟着旋转。不过这里实现的并不是很完美。(兄弟们可以看看这一点如何优化)我是这么实现的当武器旋转完之后通过回调函数来设置武器系统的中在枪膛中的子弹的方向。虽然实现了但是看起来有卡顿的感觉。因为没有实现真正的子弹随着武器的旋转      

2013-09-18 15:38:34 1058

转载 学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写

在这里我要说明一下 今天用到的主要知识点 按钮的使用, 界面的跳转 包裹 界面跳转的之间的 特效 还有音乐的播放 ,如何使用cocos2d-x 来保存一些值。对于这些知识点 如果大家不清楚的地方请看下无脑码农的视频或者是龙灵修的视频 这些知识点他们都有讲解。当然也可以在我博客中留言 不懂的地方我也会给你们解答一下。好了废话不多说了下面可是上菜了在这里我要注明一点 我每次使用图片的时候都是从

2013-09-18 15:31:58 765

转载 开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写

在游戏开发中有些资源需要预先加载在内存中这样方便我们在以后的使用。从而加快游戏的速度。特别 是预先从网络上下载资源的更需要一个友好的界面来告诉用户程序正在加载中。这个时候就需要我们做一个loading 界面废话不多说下面开始讲解思路1 当加载图片的时候使用 CCTextureCache::sharedTextureCache()->addImageAsync("gmbg/longd

2013-09-18 15:26:32 642

转载 学习开发cocos2d-x 游戏 (前提篇 一)

这里在该打架说一下 2.1.4 是如何建立项目 方便大家下载我的源码后能快速运行起来      这我说一下我用的python 脚本建立的项目这个是官方推荐的 对于电脑不支持python 的需要安装python 环境  我用的是win32 我在360 软件管理专家里面 搜索了一下就安装了很小的一个东西,安装好之后需要配置环境变量。例如我是是安装在D:\Python27 我就在我的pa

2013-09-18 15:14:36 546

转载 eclipse 移植cocos2d-x工程 报错: Program "bash" is not found in PATH

右击工程-->properties-->C/C++ Build  确认右边视图选项Build command:ndk-build右击工程-->properties-->C/C++ Build -->ToolChain Edit   确认右边视图的选项:Current toolchain:No Toolchain                                    

2013-09-12 16:21:04 1534

原创 do...while(0)另类使用方法

在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。  1. do...while(0)消除goto语句。 通常,如果在一个函数中开始要分配一些资源,然后在中

2013-09-06 10:34:05 393

转载 《模板方法模式》

这个模式就是利用了面向对象的多态,抽象哪些公用的方法,就不用实现了,其他的按照业务逻辑来独自实现。等到调用就ok了 今天只能上代码了[cpp] view plaincopy// TemplateMethod.cpp : 定义控制台应用程序的入口点。  //  //****************************

2013-08-30 15:58:21 345

转载 《策略模式》

什么是策略模式,用我个人的定义就是利用了面向对象的多态等特性,通过一个类来管理实体类的一种编程技巧。这种模式在项目中是经常用到的。 通过建模大家可以清晰的看到这些类层次关系。下面就用代码来实现一下。我使用的是VS2005的,大家可以根据需要修改部分代码。 [cpp] view plaincopy#inc

2013-08-30 15:51:25 393

转载 《观察者模式》

观察者模式应该说比较简单,就是将不同观察者注册到被观察者内部,被观察者做了什么动作,都会通知到观察者。。。 代码中,被观察者也可以形成接口,有不同的子类,被观察,更灵活一些。。。 下面代码 [cpp] view plaincopy// Observer.cpp : 定义控制台应用程序的入口点。  //***

2013-08-30 15:48:43 386

转载 《命令模式》

一、建立命令队列;二、可以将命令记入日志;三、接收请求的一方可以拒绝;四、添加一个新命令类不影响其它类;命令模式把请求一个操作的对象与知道怎么操行一个操作的对象分开命令模式感觉就是一个领导接受客户端的命令,让底下的人去做,但是比较特殊。继承命令 上图  上代码 [cpp] view plaincopy

2013-08-30 15:32:50 412

转载 《职责链模式》

责任链模式,用我的理解就是动作的处理链表。根据请求的不同类型,在链表查找相应类型的处理者。处理者是一个链表。用下面的一个图来解释 基本的UML图为[cpp] view plaincopy// ChainofResponsibility.cpp : 定义控制台应用程序的入口点。  //********

2013-08-30 15:26:31 443

转载 《代理模式》

代理模式,就是相同的两个类,一个类做另一个类的代理人。出头露面的是第一个人,实际做事情的是第二人。 但是第一个人怎么知道第二个人能做那些事情。就继承了同一个父类。  CMon类代理他所有女儿的事情。 而不用他们女儿亲自出马,但是呢实际做事情的还是他们女儿。下面上代码 [cpp] view plaincopy

2013-08-30 15:22:40 378

转载 《外观模式》

看了外观模式的一些资料。觉得外观模式就是为了解决实体类过多,而这些实体类就是为了做一件事情,组合起来。 因此外观模式出现了,他就是解决很多类的协调关系。用另个一类聚合这些类之间的事情。因此,当我们调用一个类的时候,所有的事情完成了 这个看起来就像一个外观一样。 图呢,和策略模式差不多,但是本质思想的功能是不一样的。我在这里是用去征政府部门办事

2013-08-30 15:17:42 469

转载 《装饰模式》

自我理解就是把对象重新装饰了一遍。通过继承同一个基类。而不用添加额外的类了。。。。上图吧通过修饰类达到我们想要的效果。修饰类通常初始化了基类。[cpp] view plaincopy// Decorator.cpp : 定义控制台应用程序的入口点。  //**************************

2013-08-30 15:07:42 384

转载 《桥接模式》

桥接模式就是 独立和实现相分离。不同的厂家生产不同的产品。。。。产品和厂家有这组合的关系。上代码[cpp] view plaincopy// Bridge.cpp : 定义控制台应用程序的入口点。  //  /  //*************************************

2013-08-30 14:58:04 424

转载 《适配器模式》

所谓适配器模式,就是为了解决或者叫融合系统之间的差异,通过提供一个类,来融合这种差异。这让我想起来读《UNIX 编程艺术》里一个名词  就是胶合层。 胶合层也算是一种适配上层鱼下层之间的差异和出现的一种处理方式。   这个是解决系统差异的一个具体表现, 下面上图吧  代码片段 [cpp] view

2013-08-30 14:51:50 389

转载 《建造者模式》

今天学习了建造者模式,目前较为复杂的一个模式之一。但是思考起来就觉得她很像抽象工厂的生产者模式。 但是比生产者多了一个导演着的身份,这个指挥着建造者去生产谁。。。 所以,这个模式还是挺有意思的。直接上UML图。 我们生产两种商品,两种商品是有厂家决定,商品只决定具有哪些。因此,这时候是有生产者说了算。 但是还有一个更高级的指挥

2013-08-30 14:47:59 365

原创 面向对象设计原则

常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖,相互补充。

2013-08-30 14:34:15 360

原创 设计模式的分类

根据其目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:创建型模式主要用于创建对象。结构型模式主要用于处理类或对象的组合。行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种:类模式处理类和子类之间的

2013-08-30 14:29:15 424

转载 《抽象工厂模式》

抽象工厂模式,就是把工厂类也给他多态了。 根据需求不同的工厂生产不同品种的实体。比如在游戏中。 纯在vip用户对应的vip的宠物对应的vip的怪物,或者vip任务。因此,vip工厂就生产vip这些东西了。但是普通的也要生产。因此 就抽象出来两个类了。 下面我是根据游戏中,不同的角色来定义的一些实体类。直接上图,大家就看明白了  也就是

2013-08-30 14:17:55 401

转载 《工厂模式》

所谓工厂模式,其实就是用来产生实例的地方。生产某一类型的产品。因此也是利用了类管理和类多态的一个特性吧。 下面直接上图 在Factory 中产生human的实例, 然后通过实例来调用方法。[cpp] view plaincopy// Factory.cpp : 定义控制台应用程序的入口点。

2013-08-30 14:13:10 357

原创 auto关键字

auto关键字表达式声明的变量类型将根据初始化表达式自动推导出来,而无须由程序员明确指定。auto关键字的使用需注意两点:1.将变量类型替换为auto;2.必须在定义处对变量进行初始化。下面语句合法:auto k = 0;auto d = 2*3.14;下面是非法的:auto int k = 0;auto d;可以大大简化复制变量类型,如下:map>::iterator

2013-08-29 10:38:41 553

原创 VC2010开发学习(Lambda表达式)

许多编程语言都支持匿名函数的概念,所谓匿名函数指的是只有函数体而没有函数名的函数,匿名函数广泛运用于那些只被使用一次且函数体较小的情况。Lambda表达式是一种与匿名函数密切关联的编程技术,实际上一个Lambda表达式隐式定义了一个函数类并构造了一个该函数类的函数对象。可以将Lambda表达式看作一个可以维持状态并且可以访问所在封闭作用域的变量的匿名函数。在作用上,Lambda表达式类似于函数指针

2013-08-29 10:28:44 550

转载 ACE线程安全与同步(Thread Safety and Synchronization)

保护原语为了确保一致性,多线程程序必须在共享数据周围使用保护原语。Protection Primitives in ACEPrimitiveDescriptionACE_MutexWrapper class around the mutual-exclusion mechanism and used to provide

2013-08-26 10:18:58 753

转载 ACE线程管理机制-面向对象的线程类ACE_Task

我们在前一章中使用ACE_Thread包装时,你一定已经注意到了一些不够"优雅"的地方。那一章中的大多数程序都被分解为函数、而不是对象。这是因为ACE_Thread包装需要一个全局函数名、或是静态方法作为参数。随后该函数(静态方法)就被用作所派生的线程的"启动点"。这自然就使得程序员要为每个线程写一个函数。如我们已经看到的,这可能会导致非面向对象的程序分解。ACE_Task对常用线程处理进

2013-08-26 10:14:18 395

转载 ACE线程管理机制-线程的创建与管理

有过在不同的操作系统下用c++进行过多线程编程的朋友对那些线程处理的API可能深有体会,这些API提供了相同或是相似的功能,但是它们的API的差别却极为悬殊,十分令人头痛。ACE_Thread提供了对不同OS的线程调用的简单包装,通过一个通用的接口进行处理线程创建、挂起、取消和删除等问题。一. 线程入口函数所有线程必须从一个指定的函数开始执行,该函数称为线程函数,它必须具有

2013-08-26 10:11:34 374

转载 ACE中UDP通信

udp是一种无连接的协议,提供无连接不可靠的服务。在ace中,通过ACE_SOCK_Dgram类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信

2013-08-22 17:01:49 498

转载 ACE中TCP通信

概述:传输控制协议TCP(Transmission Control Protocol):TCP提供可靠的、面向连接的运输服务,用于高可靠性数据的传输。TCP协议的可靠性是指保证每个tcp报文能按照发送顺序到达客户端。Tcp通信过程一般为如下步骤:服务器绑定端口,等待客户端连接。客户端通过服务器的ip和服务器绑定的端口连接服务器。服务器和客户端通过网络建立

2013-08-22 16:49:07 432

转载 ACE主动对象模式(2)

我们简单的介绍了一下ACE主动对象实现方式,同时提出了两个问题:方法调用线程如何知道该方法已经执行完成? 如何或得方法的返回值?要解决这两个问题,首先得介绍一下ACE_Future对象,ACE_Future是表示一个会在将来被赋值的"期货"对象,可以通过ready()函数查询它是否已经被赋值。该对象创建的时候是未赋值的,后期可以通过set()函数来进行赋值,所赋的值可以通过get(

2013-08-22 16:09:09 341

转载 ACE主动对象模式(1)

主动对象模式用于降低方法执行和方法调用之间的耦合。该模式描述了另外一种更为透明的任务间通信方法。传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的,当方法被调用时,调用线程将阻塞,直至调用结束。而主动对象却不一样。这些对象具有自己的命令执行线程,主动对象的方法将在自己的执行线程中执行,不会阻塞调用方法。例如,设想对象"A"已在你的程序的main()函

2013-08-22 16:04:49 402

实战Nginx:取代 Apache的高性能Web服务器

目录介绍: 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 Nginx服务器的安装与配置 2.1 安装Nginx服务器所需要的系统资源 2.2 Nginx的下载 2.3 Nginx的安装 2.4 Nginx的启动、停止、平滑重启 2.5 Nginx的平滑重启 2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 .3.5 Nginx的自动列目录配置 3.6 Nginx的浏览器本地缓存设置 第4章 Nginx与PHP(FastCGI)的安装、配置与优化 4.1 获取相关开源程序 4.2 安装PHP 5.2.10(FastCGI模式) 4.3 安装Nginx 0.8.15 4.4 配置开机自动启动Nginx + PHP 4.5 优化Linux内核参数 4.6 在不停止Nginx服务的情况下平滑变更Nginx配置 4.7 编写每天定时切割Nginx日志的脚本 第5章 Nginx与JSP、ASP.NET、Perl的安装与配置 5.1 Nginx与JSP(Tomcat)在Linux上的安装、配置 5.2 Nginx与ASP.NET(Mono+FastCGI)在Linux上的安装、配置 5.3 Nginx与Perl(FastCGI)在Linux上的安装、配置 第6章 Nginx HTTP负载均衡和反向代理的配置与优化 6.1 什么是负载均衡和反向代理 6.2 常见的Web负载均衡方法 6.3 Nginx负载均衡与反向代理的配置实例 6.4 Nginx负载均衡的HTTP Upstream 模块 6.5 Nginx负载均衡服务器的双机高可用 第7章 Nginx的Rewrite规则编写实例 7.1 什么是Nginx的Rewrite规则 7.2 Nginx Rewrite规则相关指令 7.3 PCRE正则表达式语法 7.4 Nginx的Rewrite规则编写实例 7.5 Nginx与Apache的Rewrite规则实例对比 第8章 Nginx模块开发 8.1 Nginx模块概述 8.2 Nginx模块编写实践 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存? 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx的非典型应用实例 11.1 用HTTPS(SSL)构建一个安全的Nginx Web服务器 11.2 采用Nginx搭建FLV视频服务器 11.3 Nginx+PHP+MySQL在小内存VPS服务器上的优化 11.4 采用Nginx搭建正向代理服务器 第4部分 模块篇 第12章 Nginx的核心模块 12.1 主模块指令 12.2 主模块变量 12.3 事件模块指令 第13章 Nginx的标准HTTP模块 13.1 HTTP的核心模块 13.2 HTTP Upstream模块 13.3 Http Access 模块 13.4 HTTP Auth Basic 模块 13.5 Http Autoindex 模块 13.6 Http Browser 模块 13.7 Http Charset 模块 13.8 Http Empty Gif模块 13.9 Http Fcgi 模块 13.10 geo 模块 13.11 Gzip 模块 13.12 Http Headers模块 13.13 Http Index模块 13.14 HTTP Referer模块 13.15 Http Limit Zone模块 13.16 Http Limit Req模块 13.17 Http Log模块 13.18 Http Map模块 13.19 Http Memcached模块 13.20 Http Proxy模块 第14章 Nginx的其他HTTP模块 14.1 Http Addition模块 14.2 Embedded Perl模块 14.3 Flv Stream模块 14.3 flv 指令 14.4 Http Gzip Static模块 14.5 Http Random Index模块 14.6 Http Geo IP模块 14.7 Http RealIp模块 14.8 Http SSL模块 14.9 Http Stub Status模块 14.10 Http Sub模块 14.11 Http Dav模块 14.12 Google Perftools模块 14.13 Http XSLT模块 14.14 Http Secure Link模块 14.15 Http Image Filter模块 第15章 Nginx的邮件模块 15.1 Nginx邮件核心模块 15.2 Nginx邮件认证模块 15.3 Nginx邮件代理模块 15.4 Nginx邮件SSL模块 15.5 Nginx邮件模块配置实例

2013-08-28

MPlayer播放器

MPlayer播放器 里面包含框架源码和播放器

2013-08-21

列表带打印功能

非常漂亮的列表,并且可以把列表里面的内容打印出来,设计报表打印也很有参考价值。

2011-11-09

深入浅出Android--Google手持设备应用程序设计

深入浅出Android--Google手持设备应用程序设计

2011-09-16

C语言深度解剖

C语言深度解剖对学习C/C++是很有帮助的。

2011-09-15

COM 组件设计与应用-学习Com开发必备

COM 组件设计与应用对学习COM开发很有帮助。

2011-09-15

C/C++ 语言参考-很好的参考文档

非常实用的C/C++ 语言参考,可以很方便让你找到C/C++语法方面知识。

2011-09-15

大话企业级Android开发-Android开发必备

大话企业级Android开发,对Android开发很有帮助。

2011-09-14

vc非常漂亮列表类

非常实用的列表类,可以对表头和列表单元进行颜色添加,。

2011-09-13

VC开发树列表

非常漂亮的树列表,表头经过重绘可以设置你需要的颜色,让那些系统默认的颜色说再见吧。列表单元也可以根据需要选择你所要的颜色。

2011-09-13

使用ADO封装类的数据库程序开发实例

连接数据库和对数据库的操作分别用了两个类封装起来,在操作过程中比较方便的使用ADO操作。

2008-10-07

空空如也

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

TA关注的人

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