自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(164)
  • 资源 (17)
  • 收藏
  • 关注

原创 C++的左值引用、右值引用以及转发和完美转发

特性左值引用右值引用符号&&绑定对象左值右值主要用途别名、避免拷贝移动语义、完美转发生命周期与被引用对象相同通常用于临时对象可修改性可以修改原对象可以"偷取"资源理解左值和右值引用对于编写高效的现代C++代码至关重要,特别是在资源管理和模板元编程中。转发是指将函数的参数原封不动地传递给另一个函数,保持参数的原始类型和属性。完美转发是指在模板函数中将参数完全保持其原始类型(左值/右值、const/volatile等)传递给另一个函数。

2025-12-17 16:31:13 751

原创 PJSIP中的单通问题以及STUN服务器原理

客户端会同时收集多个候选地址(包括本地地址、STUN发现的地址、TURN中继地址),并通过信令交换这些候选地址,然后通过连通性检查找出最优的传输路径。是指在VoIP通话中,一方能听到另一方的声音,但另一方却听不到这一方的声音。STUN本身并不转发任何语音数据,它只是一个工具,让客户端“自知”,从而在信令中提供正确的、可被对端直接连接的地址。当PJSIP客户端通过STUN服务器获取到自己的公网地址和端口后,它就不会再在SDP中填写自己的私有地址(在现代VoIP系统中(包括PJSIP的典型配置),通常会采用。

2025-12-17 16:26:30 480

原创 使用国内镜像安装 Qt

2025年11月26日 我使用清华镜像死活不行,后来换了 http://mirrors.ustc.edu.cn/qtproject 这个可以了。能够正常进入登录界面,只需要根据选项进行,点击下一步即可。通过cmd或PowerShell打开安装程序所在目录,以命令行的运行。其实Qt的安装程序exe,支持命令行的形式传入参数,指定镜像源地址。下面是常用的国内镜像地址,前面的Qt安装程序也可以从这里下载。使用qt在线安装程序下载速度慢,可以指定国内源。

2025-11-26 23:43:15 640

原创 MFC中一个类的成员变量值自动被篡改:多重继承带来的问题

今天发现一个奇葩的bug:一个类中的某个成员变量的值,在初始化的时候已经赋值为true在这里插入代码片了,可是在使用这个类的时候,发现它的值自动变为了false。我在所有涉及到改变量赋值的地方都打上了断点,打算跟踪看看什么地方导致了重新赋值,可是结果却是没有任何断点被触发。我把ready加了监视,单步调试进去,之前一直是true,但只要已进入的方法,值立马变成了false。担心对象被意外销毁后重建,导致 ready 被重置,又在的构造和析构函数中打上断点,可依旧没有被触发。

2025-10-13 18:06:09 332

原创 设计模式的7大设计原则和GOF 23种设计模式整理

设计模式的7大原则是软件设计的“基石”,核心目标是提高代码的和,降低模块间耦合,让系统更灵活、更易迭代。

2025-09-15 10:26:13 1220

原创 一文看懂访问者模式(Visitor Pattern)

访问者模式通过将操作与对象结构分离,提供了一种灵活的方式来扩展对象的功能。它特别适用于需要对复杂对象结构执行多种不同操作的场景。虽然它有一定的局限性(如添加新元素类型困难),但在合适的场景下,访问者模式可以大大增强代码的可维护性和扩展性。

2025-09-12 10:43:05 894

原创 VS + Qt5 中文乱码/项目设置utf-8编码

确保源文件是编码对MSVC编译器很重要。VS2022默认可能使用本地编码(如GB2312)解析源文件,即使文件以UTF-8保存。/utf-8。

2025-09-10 16:25:43 1390

原创 is-a 和 has-a 简介(C++ )

它们直接影响代码的复用性、可维护性和设计合理性。通过合理区分is-a和has-a,可以设计出更清晰、可维护的代码。是两种核心的设计关系,分别对应。本文通过LongCat 生成。是大多数场景下的最佳实践。

2025-09-08 10:24:22 691

原创 UML类图

UML类图来自程杰的《大话设计模式》

2025-09-08 09:46:00 121

原创 C++中的浅拷贝与深拷贝解析

特性浅拷贝 (Shallow Copy)深拷贝 (Deep Copy)复制内容复制指针(地址)复制指针指向的实际数据内存关系源对象和目标对象的指针成员共享同一块内存源对象和目标对象的指针成员拥有各自独立的内存块默认行为编译器默认提供的拷贝构造函数和赋值运算符需要程序员显式自定义实现风险双重释放、悬空指针、数据意外修改无上述风险,但实现更复杂,性能开销稍大(需要分配和复制内存)适用场景对象没有管理动态分配的内存(例如,只包含int, double等简单类型)对象拥有资源。

2025-09-02 14:56:59 838

转载 vs2015中使用utf-8编码格式

在 VS 2015 中,将文件保存为 UTF-8 格式并确保项目设置支持 UTF-8 编码,可以通过以下步骤完成:

2025-08-28 14:30:56 309

原创 【Deepseek】Windows MFC/Win32 常用核心 API 汇总

掌握常用的API函数是Windows MFC/Win32开发的基础。我为你整理了50个核心且常用的API,并尽力确保了信息的准确性。下面是一个汇总表格,方便你快速了解:🧭 学习和使用建议掌握这些API是Windows编程的基础。除了查阅表格,你还可以:⚠️ 重要提醒这些API是构建Windows应用程序的基石,希望这份列表能对你的学习和开发有所帮助。如果你对某个特定类别(如网络编程、注册表操作等)的API有更深入的兴趣,我可以提供更针对性的信息。

2025-08-28 09:42:11 669

原创 设计模式七大原则附C++正反例源码

一个类应该只有一个引起它变化的原因(即一个类只负责一项职责)。

2025-08-26 10:48:17 717

转载 设计模式七大原则

本文介绍了面向对象设计的五大核心原则:1)开闭原则(OCP)强调通过扩展而非修改来增强功能,以迪迦奥特曼类为例展示了抽象类与继承的实现方式;2)单一职责原则(SRP)要求每个类只承担一个功能;3)依赖倒置原则(DIP)提倡面向接口编程,以电脑组装为例说明组件与主机通过抽象接口解耦;4)接口隔离原则(ISP)主张功能接口的单一性;5)里氏替换原则(LSP)指出子类应能完全替代父类。这些原则共同构成了可扩展、低耦合的软件设计基础。

2025-08-22 17:55:38 84

原创 C++ 常见的排序算法详解

排序算法综述 本文系统梳理了常见的排序算法,包括冒泡、选择、插入等比较类排序,以及计数、桶排等非比较类排序。文章从核心思想、实现步骤、复杂度分析等方面详细剖析了每种算法,并提供了C++代码实现。重点分析了各算法的优缺点和适用场景:冒泡排序简单但效率低;选择排序交换次数少但不稳定;插入排序适合小规模数据;希尔排序通过分组提高效率;归并排序采用分治法实现稳定排序。文章强调深入理解排序算法对编程思维和性能优化的重要性,为开发者提供了全面的排序算法参考指南。

2025-08-21 17:48:38 862

原创 23 种设计模式的通俗解释与简单示例(C++不同版本实现)

设计模式是前辈们总结的代码设计经验,目的是让代码更灵活、可复用、易维护。对于新手来说,可以先理解“什么时候用”,再掌握“怎么实现”。下面用通俗易懂的方式讲解23种设计模式,每种都附C++示例(兼顾C++11及以后的现代写法)。通俗解释:一个类只能创建一个对象(比如全局配置、日志器),像国家只有一个总统。核心:私有化构造函数,通过静态方法返回唯一实例。实现1:饿汉式(C++98)(程序启动就创建实例,线程安全,但可能浪费内存)实现2:懒汉式(C++11,线程安全)(用到时才创建,节省内存,C++11静

2025-07-30 14:18:51 939

原创 移动语义和右值引用有什么关系?

C++11引入的右值引用和移动语义是提升程序性能的关键特性。右值引用(&&)通过绑定临时对象标识"可移动资源",而移动语义利用这一机制实现高效资源转移,避免不必要的深拷贝。两者紧密关联:右值引用为移动语义提供语法基础,移动语义则是右值引用的核心应用场景。通过std::move可将左值转为右值引用,触发移动构造或移动赋值操作,实现资源所有权的高效转移。这种机制显著优化了大型对象和资源管理的性能。

2025-07-29 17:12:29 446

原创 如何理解C++11引入的移动语义和它解决的“深拷贝”问题

以的push_back为例:当你把一个vector A插入到另一个vector B中(),默认情况下会发生深拷贝——即复制A中所有元素到B的新内存空间。问题:如果A中的数据量大(比如100万个元素),深拷贝会消耗大量内存和CPU时间,效率很低。更糟的是:如果A之后不再使用,这份拷贝就成了“无用功”,浪费资源。移动语义通过std::move实现了“资源所有权转移”,避免了不必要的深拷贝,尤其适合处理等“包含大块资源”的对象,能显著提升程序性能(减少内存占用和复制开销)。“与其复制,不如转交”

2025-07-29 16:47:05 319

原创 一文了解 Windows 消息机制的完整流程

Windows 消息机制通过。

2025-07-21 17:36:20 1262

原创 在 Qt 中实现动态切换主题(明亮和暗黑)

对于自定义绘制的控件,监听主题变化并更新样式。Q_OBJECTpublic:protected:// 根据主题绘制背景} else {update();// 触发重绘通过上述步骤,可以实现 Qt 应用程序的动态主题切换功能。模块化管理:使用集中处理样式加载和信号通知。资源嵌入:利用 Qt 资源系统管理 QSS 和图片。信号与槽机制:确保所有控件在主题变化时更新。持久化配置:保存用户偏好提升体验。自定义控件支持:通过重绘事件或信号响应更新样式。

2025-05-21 16:52:59 1034

原创 设计模式:单例模式

单例模式

2025-04-10 15:49:39 807

原创 常见的 SIP 错误码

以下是常见的 SIP 错误码整理表格,按Contact。

2025-04-09 16:23:08 1603

原创 财务术语中英文词汇汇总一览表

财务术语中英文词汇汇总一览表

2025-03-25 13:51:42 1541

原创 IFRS/IAS 高频财务术语中英文对照表(含简写)

在这里插入图片描述](https://i-blog.csdnimg.cn/direct/274f3bdbe6994cafbfc5f6182bf15c35.png)

2025-03-25 11:00:51 2351

原创 Qt 中为什么有时候要在 cpp 文件的最后加上 #include “main.moc“

在代码中,添加是为了手动引入由moc生成的元对象代码,确保 Qt 的核心功能(如信号/槽)正常工作。这是单文件 Qt 项目的常见做法,但正式项目中更推荐将声明和实现分离到.h和.cpp文件中。

2025-03-07 10:26:10 1090

原创 lambda 表达式详解

lambda表达式是C++中非常强大和灵活的特性,它可以简化代码,提高代码的可读性和可维护性。通过合理使用捕获列表和参数列表,你可以在需要的地方快速定义匿名函数。// 使用lambda表达式作为比较函数,按降序排序});return 0;在这个例子中,std::sort需要一个比较函数来确定元素的排序顺序,我们使用lambda表达式简洁地定义了这个比较逻辑。

2025-02-06 17:59:37 1303

原创 线程同步时定义 std::mutex 为什么要在前面添加 mutable 关键字

在C++中,关键字用于修饰类的成员变量,表示即使在一个对象中,该成员变量也可以被修改。对于这样的同步原语,使用是必要的,原因如下:通常用于保护类的内部状态,即使在成员函数中,也可能需要加锁来保证线程安全。例如:成员函数的语义:成员函数承诺不会修改对象的状态。的特殊性:本身的状态(如锁的状态)需要被修改,但这并不影响对象的逻辑状态。使用:将声明为,可以在成员函数中修改它,而不会违反的语义。2. 如果不使用 会怎样?如果没有声明为,在成员函数中尝试加锁会导致编译错误:编译器会报错,因为会尝试

2025-02-05 17:22:26 824

原创 实现一个 LRU 风格的缓存类

类似于Windows系统的 win 菜单最近打开功能模块,使用最近最少使用(LRU)的缓存淘汰策略,缓存可以设置最大容量。可以通过维护一个指向每个键在列表中位置的映射,将这一操作的时间复杂度优化到。的操作可能会抛出异常(如内存分配失败),可以考虑添加异常处理机制,让代码在异常情况下能有更好的表现。方法中都有将键移到列表末尾的操作,可以将这一操作提取成一个单独的方法,提高代码的复用性。put:新增或者更新缓存,当容量已满时,删除最早的数据,再插入。参数的检查,避免传入不合法的值(如负数),增强代码的健壮性。

2025-02-05 15:04:06 1402

原创 缓存类为啥使用 unordered_map 而不是 map

【代码】缓存类为啥使用 unordered_map 而不是 map。

2025-02-05 10:37:42 1082

原创 Qt5 Qt6 版本选择

Qt5: 5.9 LTS 长期支持版本 已于2020年5月31日终止维护,不建议使用及其以前的版本。Qt5: 5.12 LTS 长期支持版本 维护至 2021年12月6日。Qt5: 5.15 LTS 长期支持版本 维护至 2023年5月29日。:Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的。Qt5.7.0是最后支持xp系统的非长期支持版本。Qt6: 6.2 LTS 长期支持版本。Qt5 : 5.6 LTS 长期支持版本。各版本的 LTS 版本。

2025-01-15 15:45:26 5769

原创 Qt 程序 DPI 适配方法归纳

因此,需要手动设定所有字体大小,一种方法是在 Qt Designer 中编辑目标控件的 stylesheet 将字体尺寸用 px 重新设定。此应用不会缩放 DPI 更改。它将查询 DPI 一次,并在应用的生存期内使用该值。如果 DPI 发生更改,应用将不会调整为新的 DPI 值。当 DPI 与系统值发生更改时,系统会自动纵向扩展或缩减它。此应用不会缩放 DPI 更改,并且始终假定其比例系数为 100% (96 DPI)。此应用在创建 DPI 时检查 DPI,并在 DPI 发生更改时调整比例系数。

2025-01-15 15:34:13 1334

原创 Qt中容器 QVector、QList、QSet和QMap 性能与用途比较

【代码】Qt中容器 QVector、QList、QSet和QMap 性能与用途比较。

2025-01-14 09:52:52 1132

原创 C++ 容器对比汇总 vector deque list forward_list map set multimap unordered_map

【代码】C++ 容器 vector deque list forward_list map set multimap unordered_map 等访问插入性能内存特点存储结构适用场景区别汇总。

2025-01-13 17:38:56 1241

原创 时间复杂度简介

Ofn)ncn0​n≥n0​fn≤c⋅gn)Ogn))fn3n5nOn)n3n5n35O11)On)nnnOn)Ologn)nlog2​nOlogn)On2)nnn−1n−ii2nn−1​On2)On3)On2)O2n)FnFn−1Fn−2)F00F11Fn)Fn−1)Fn−2)O2n。

2025-01-10 17:44:41 968

原创 网页代码如何防止用户轻易查看源代码

不过要明白,对于有一定技术能力和足够决心的攻击者来说,这些方法都可能被突破,在涉及到高安全性需求的场景下,还是要结合后端安全机制(如在后端进行真正的加密存储、传输等操作)以及更完善的安全体系来保障数据安全。

2024-12-24 15:13:18 1330

原创 异或算法(XOR encryption)对字符串进行加密和解密

【代码】异或算法(XOR encryption)对字符串进行加密和解密。

2024-12-24 14:41:45 476

原创 git 删除鉴权缓存及账号信息

Git的配置文件存储了一些账号相关的信息,如用户名和邮箱。你可以通过编辑配置文件来删除或修改这些信息。配置文件通常位于用户目录下的。条目来清除用户信息。不过要注意,这可能会影响到你以后的提交,因为Git提交时通常需要这些信息来标识提交者。如果你的Git仓库是通过SSH认证的,并且你想清除相关的认证缓存,你可以删除或修改。来管理SSH密钥,你可以在终端中运行以下命令来停止。并显示其进程ID,第二条命令。在配置文件中,你可以删除。中删除所有添加的密钥。

2024-12-20 11:19:15 3754

原创 qq浏览器安装 uBlock Origin 广告拦截工具

然后解压 uBlock-Origin.crx.rar。下载 uBlock-Origin.crx。在qq浏览器的应用中心,打开开发着模式。选择刚解压的文件件目录,保存即可。将后缀.crx后增加.rar。点击“加载已解压的扩展程序”

2024-12-19 14:35:59 2756

原创 Visual Stidio 2015 更新3失败解决方案

这个问题是需要安装 vs2015 的更新包,update3 解决。进行安装,到最后还是和之前一样的问题。1.解压缩 iso 文件。安装到最后总会报错。装载之后,打开里面的。3.用管理员权限执行。

2024-12-16 13:46:10 1571 4

原创 判断 Windows 系统版本号

【代码】判断 Windows 系统版本号。

2024-11-14 17:03:56 460

在 Qt 中实现动态切换主题(明亮和暗黑)

在 Qt 中实现动态切换主题(明亮和暗黑)

2025-05-27

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

在Qt中,可以使用样式表(StyleSheet)来自定义QMenu的外观,包括其子项(如菜单项QAction)的颜色。但是,要注意的是,直接通过样式表为QMenu的每个子项设置不同的颜色可能不是很方便,因为样式表通常用于设置类的整体样式,而不是单个实例。 这个 demo 就是实现设置单个子项不同颜色。 详见博文: https://pafey.blog.csdn.net/article/details/142261768

2024-09-14

源码中文和 Unicode 互转

一个中文和 Unicode 之间互转的小工具,VS2008编译通过。可直接在release下打开exe预览。。。。。。。。。。。。。。。。。。。。

2017-09-18

源代码电脑通过adb控制安卓手机

vs2008编译通过,电脑通过adb控制安卓手机拨打电话,发短信,控制微信自动加好友,安卓版本4.3以上,主要是通过读取手机当前界面的元素布局,保存到xml,然后通过xml解析出各个控件的坐标,通过adb命令模拟点击,滑动,点亮屏幕,上划解锁,启动微信,拨打电话等功能。详见博客:https://blog.csdn.net/qiangzi4646/article/details/79727865

2018-03-28

动态捕获Windows窗口句柄工具

动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开

2023-02-10

pjsip支持mp3编译库 libpjproject-i386-Win32-vc14-Release

使用 MicroSip 源码编译后,在录音配置界面虽然有 mp3 格式选项,但是实际录音后不会生成mp3 文件夹,而选择wav格式却可以正常生成 wav 文件。 经测试发现需要重新编译 pjsip 工程,加入 mp3 编码才可以。 这个是编译后的库文件,vs2015 x86 编译的,亲测可用。

2022-07-28

QT 中使用 Windows API----SendMessage() 进行窗体间消息传递

QT 中使用 Windows API----SendMessage() 进行窗体间消息传递,方便主窗体下的单独兄弟窗口类之间传递消息

2017-07-14

window 采集扬声器音频并播放

通过Core Audio中的API函数来实现采集声卡输出,采集到的音频流保存与内存,并直接播放.支持 window Vista 以上系统.

2017-12-15

QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数

QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数

2017-07-13

[源码]比较成熟dll导出类示例(包含win32和mfc两种dll以及exe调用示例)

[源码]比较成熟dll导出类示例(包含win32和mfc两种dll以及exe调用示例) 参考codeproject大神链接https://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL

2018-03-20

IBindStatusCallback子类

用于函数 STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK); LPBINDSTATUSCALLBACK参数的定义类 博客地址:https://blog.csdn.net/qiangzi4646/article/details/80667753

2018-06-12

MicroSIP 增加 g729 源代码

基于pjsip 的sip客户端 MicroSIP 的源代码,由于MicroSIP 开源的代码中不支持g729 ,特加入支持g729语音编码。vs2008编译通过,MicroSIP-3.12.1-src\Release 文件夹下microsip.exe 可以自己运行测试;

2016-12-23

Log4Cpp使用实例

自己编译好的log4cpp的DLL 和 LIB 封装了一个使用类,从本地读取配置log级别等信息,可输出多个种类的日志文件,输出示例如下 [2017-02-20 16:09:51.910](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数 [2017-02-20 16:09:51.911](NOTICE)Sys : 写入系统日志 [2017-02-20 16:09:51.911](NOTICE)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton1函数 详细见:http://blog.csdn.net/qiangzi4646/article/details/56017080

2017-02-20

【源代码】mfc 托盘闪烁及鼠标左右键响应

实现 mfc 对话框的托盘创建,鼠标单击,双击,右键响应及托盘图片闪烁.

2016-11-25

多线程向线程函数传递多个参数实例

基于MFC对话框类创建的线程,传递给线程函数2个参数,线程函数调用窗口类控件操作等。

2017-03-06

VC socket 服务器编程实例源码

vc6.0 的 socket 编程,实现 socket 通信,分客户端和服务器端。

2014-09-30

【源代码】phonon-mplayer 后端插件,扩展支持mp4、rmvb、acc等视音频格式

qt4.8 自带的 phonon 插件支持的视频音频较少,一般开发都采用mplayer来替代从而扩展支持的格式。这个插件测试可用,里面有编译好的库文件(mplayer.lib 、phonon_mp.dll、phonon_mp.lib)具体参考https://blog.csdn.net/qiangzi4646/article/details/79769631

2018-03-31

md5生成实例

一个生成md5值的小栗子,vs2008 编译运行

2015-10-19

mfc组合框下拉列表项添加删除按钮

类似于qq的登录框历史账号右边的删除按钮,一般用于客户端的登录界面,vs2008编译通过,debug文件夹可查看编译好的exe

2018-03-14

SocketTool

SocketTool调试软件是一款网络TCP/UDP通信调试工具 本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。 它可以帮助网络编程人员、网络维护人员检查所开发的网络应用软硬件的通信状况。 ★ 全面集成 TCP服务器/客户端; UDP服务器/客户端; UDP广播/组播 功能 ★ 支持多Socket并行测试, 采用树状Socket可视化界面,所有Socket句柄一目了然 ★ 在一个程序内可进行多句柄/多类型的Socket的创建/删除/以及数据收发等操作 ★ 支持16进制的发送和16进制接收显示,支持汉字以及文本发送 ★ 用户可以方便的把接收到的数据保存下来 ★ 支持发送、接收字节数统计

2015-10-19

空空如也

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

TA关注的人

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