信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 4427|回复: 14
打印 上一主题 下一主题

[『C++图文教程』] 一个不能有误差的高精度算法C++绝对是一个能信任的能手

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-6-22 23:07:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:C++ 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件中级教程 

软件教程发布日期:2017-06-22

软件教程关键字:一个不能有误差的高精度算法C++绝对是一个能信任的能手

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
//C++高精度实现计算程序运行时间
#include <iostream>     
#include <windows.h>     
using namespace std;     
   
void Test()//测试程序   
{   
    for(int i=0; i<1000; i++)   
    {      
        for(int j=0; j<100; j++)   
        {   
            printf("%d,%d\n",i,j);   
        }      
    }   
}   
   
int main(void)     
{     
    LARGE_INTEGER BegainTime ;     
    LARGE_INTEGER EndTime ;     
    LARGE_INTEGER Frequency ;     
    QueryPerformanceFrequency(&Frequency);     
    QueryPerformanceCounter(&BegainTime) ;     
   
    //要测试的代码放在这里   
    Test();   
   
    QueryPerformanceCounter(&EndTime);   
   
    //输出运行时间(单位:s)   
    cout << "运行时间(单位:s):" <<(double)( EndTime.QuadPart - BegainTime.QuadPart )/ Frequency.QuadPart <<endl;     
   
    system("pause") ;     
    return 0 ;     
}



附 vc计算高精度时间差


面线框里的代码便可实现计算精度达到微秒级的时间差:
------------------------------------------------------------------------------------
LARGE_INTEGER litmp;
LONGLONG QPart1,Qpart2;
double dfMinus,dfFreq,dfTime;

//获得计时器的时钟频率
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;
QueryPerformanceCounter(&litmp);
Qpart1 = litmp.QuadPart; //开始计时

Block1(); //工作模块 函数等,根据自己需要添加。

QueryPerformanceCounter(&litmp);
Qpart2 = litmp.QuadPart; //终止计时
dfMinus = (double)(QPart2 - QPart1);//计算计数器值
dfTime = dfMinus / dfFreq;//获得对应时间,单位为秒 你可以乘1000000精确到毫秒级(us)
--------------------------------------------------------------------------------------
在一些计算机硬件系统中,包含有高精度运行计数器(high-resolution   performance   
counter),利用它可以获得高精度定时间隔,其精度与CPU的时钟频率有关。   
   
1、首先调用QueryPerformanceFrequency函数取得高精度运行计数器的频率f。单位是每秒多少次(n/s),此数   
一般很大。   
2、在需要定时的代码的两端分别调用QueryPerformanceCounter以取得高精度运行计数器的数值n1,n2。两次数   
值的差值通过f换算成时间间隔,t=(n2-n1)/f。   
   
下面举一个例子来演示这种方法的使用及它的精确度。   
   
在VC   6.0   下用MFC建立一个对话框工程,取名为HightTimer.在对话框面板中控件的布局如下图:   
   
   
其中包含两个静态文本框,两个编辑框和两个按纽。上面和下面位置的编辑框的ID分别为IDC_E_TEST和IDC_E_ACT   
UAL,通过MFC   ClassWizard添加的成员变量也分别对应为DWORD   m_dwTest和DWORD   m_dwAct.   
“退出”按纽的ID为IDOK,“开始测试”按纽ID为IDC_B_TEST,用MFC   
ClassWizard添加此按纽的单击消息处理函数如下:   
   
void   CHightTimerDlg::OnBTest()     
{   
//   TODO:   Add   your   control   notification   handler   code   here   
UpdateData(TRUE);   //取输入的测试时间值到与编辑框相关联的成员变量m_dwTest中   
   
LARGE_INTEGER   frequence;//LARGE_INTEGER是一个联合,其中LOWPART为低32位,HIGHPART为高32位,   
//两者构成一个结构,而QuadPart是其中的64位符号整数,为LongLong类型   
if(!QueryPerformanceFrequency(   &frequence))   //取高精度运行计数器的频率,若硬件不支持则返回FALSE   
MessageBox("Your   computer   hardware   doesn't   support   the   high-resolution   performance   counter",   
"Not   Support",   MB_ICONEXCLAMATION   |   MB_OK);     
   
LARGE_INTEGER   test,   ret;   
test.QuadPart   =   frequence.QuadPart   *   m_dwTest   /   1000000;   
//通过频率换算微秒数到对应的数量(与CPU时钟有关),1秒=1000000微秒   
//test   中存储着m_dwTest毫秒所需的次数   
ret   =   MySleep(   test   );   //调用此函数开始延时,返回实际花销的数量   
   
m_dwAct   =   (DWORD)(1000000   *   ret.QuadPart   /   frequence.QuadPart   );   //换算到微秒数   
   
UpdateData(FALSE);   //显示到对话框面板   
}   
   
其中上面调用的MySleep函数如下:   
   
LARGE_INTEGER   CHightTimerDlg::MySleep(LARGE_INTEGER   Interval)   
///////////////////////////////////////////////////////////////////////////////////////////////////   
//////////   
//   功能:执行实际的延时功能   
//   参数:Interval   参数为需要执行的延时与时间有关的数量   
//   返回值:返回此函数执行后实际所用的时间有关的数量   
///////////////////////////////////////////////////////////////////////////////////////////////////   
////////   
{   
LARGE_INTEGER   privious,   current,   Elapse;   
   
QueryPerformanceCounter(   &privious   );   
current   =   privious;   
   
while(   current.QuadPart   -   privious.QuadPart   <   Interval.QuadPart   )   
QueryPerformanceCounter(   ¤t   );   
   
Elapse.QuadPart   =   current.QuadPart   -   privious.QuadPart;   
   
return   Elapse;   
}   
注:别忘了在头文件中为此函数添加函数声明。   
   
至此,可以编译和执行此工程了,当测试时间超过3微秒时,准确度已经非常高了,此时机器执行本身延时函数代码的时间对需要延时的时间影响很小了。   
   
上面的函数由于演示测试的需要,没有在函数级封装,下面给出的函数基本上可以以全局函数的形式照搬到别的   
程序中。   
   
BOOL   MySleep(DWORD   dwInterval)   
///////////////////////////////////////////////////////////////////////////////////////////////////   
//////////   
//   功能:执行微秒级的延时功能   
//   参数:Interval   参数为需要的延时数(单位:微秒)   
//   返回值:若计算机硬件不支持此功能,返回FALSE,若函数执行成功,返回TRUE   
///////////////////////////////////////////////////////////////////////////////////////////////////   
////////   
{   
BOOL   bNormal   =   TRUE;   
LARGE_INTEGER   frequence,   privious,   current,   interval;   
   
if(!QueryPerformanceFrequency(   &frequence))   
{   
::MessageBox(NULL,   "Your   computer   hardware   doesn't   support   the   high-resolution   performance   
counter",   
"Not   Support",   MB_ICONEXCLAMATION   |   MB_OK);   //或其它的提示信息   
return   FALSE;   
}   
   
interval.QuadPart   =   frequence.QuadPart   *   dwInterval   /   1000000;   
   
bNormal   =   bNormal   &&   QueryPerformanceCounter(   &privious   );   
current   =   privious;   
   
while(   current.QuadPart   -   privious.QuadPart   <   interval.QuadPart   )   
bNormal   =   bNormal   &&   QueryPerformanceCounter(   ¤t   );   
   
return   bNormal;   
}   
   
需要指出的是,由于在此函数中的代码很多,机器在执行这些代码所花费的时间也很长,所以在需要几个微秒的   
延时时,会影响精度。实际上,读者在熟悉这种方法后,只要使用QueryPerformanceFrequency和QueryPerforman   
ceCounter这两个函数就能按实际需要写出自己的延时代码了。   
   
   
   
给你个类吧,我在用呢   
   
//   Elapsed.h:   interface   for   the   CElapsed   class.   
//   
//////////////////////////////////////////////////////////////////////   
   
#if   !defined(AFX_ELAPSED_H__4A992E21_8B47_11D6_B1B2_FFFCE130B010__INCLUDED_)   
#define   AFX_ELAPSED_H__4A992E21_8B47_11D6_B1B2_FFFCE130B010__INCLUDED_   
   
#if   _MSC_VER   >   1000   
#pragma   once   
#endif   //   _MSC_VER   >   1000   
   
class   CElapsed      
{   
private:   
   int Initialized;   
   __int64 Frequency;   
   __int64 BeginTime;   
   
public:   
   BOOL   Avaliable();   
   double   End();   
   BOOL   Begin();   
   CElapsed();   
   virtual   ~CElapsed();     
};   
   
#endif   //   !defined(AFX_ELAPSED_H__4A992E21_8B47_11D6_B1B2_FFFCE130B010__INCLUDED_)   
   
   
   
//   Elapsed.cpp:   implementation   of   the   CElapsed   class.   
//   
//////////////////////////////////////////////////////////////////////   
   
#include   "stdafx.h"   
//#include   "myimage.h"   
#include   "Elapsed.h"   
   
#ifdef   _DEBUG   
#undef   THIS_FILE   
static   char   THIS_FILE[]=__FILE__;   
#define   new   DEBUG_NEW   
#endif   
   
//////////////////////////////////////////////////////////////////////   
//   Construction/Destruction   
//////////////////////////////////////////////////////////////////////   
   
CElapsed::CElapsed()   
{   
   Initialized=QueryPerformanceFrequency((LARGE_INTEGER   *)&Frequency);   
}   
   
CElapsed::~CElapsed()   
{   
   
}   
   
BOOL   CElapsed::Begin()   
{   
   if(!Initialized)   
    return 0;
   return   QueryPerformanceCounter((LARGE_INTEGER   *)&BeginTime);   
}
     
double   CElapsed::End()
{   
   if(!Initialized)   
    return 0;
   __int64   endtime;   
   QueryPerformanceCounter((LARGE_INTEGER   *)&endtime);   
   
   __int64   elapsed=endtime-BeginTime;   
   
   return   (double)elapsed/(double)Frequency;   
}     
BOOL   CElapsed::Avaliable()
{   
   return Initialized;   
}   

 解决一个问题通常有多种方法, 我们总想找到最高效的,所以需要对比不同算法执行所用的时间。可惜的是,C++中提供的方法一般只能精确到毫秒级。

  提供一种更加精确的方法。编写一个函数,可以在C++中这样写:

  __declspec (naked) unsigned __int64 GetCpuCycle( void )

  {

  _asm

  {

  rdtsc

  ret

  }

  }

  RDTSC的返回值存放在EDX EAX中, EDX为高32位,EAX为低32位。这里的 RDTSC 指令( Read Time Stamp Counter ), 获得CPU的高精度时间戳。

  这样以来我们就可以在随处获得当前的CPU自上电以来的时间周期数了:

  unsigned __int64 iCpuCycle = GetCpuCycle();

  根据这个数字我们可以计算出上电以来所经历的时间( 秒s ):

  second = iCpuCycle / CPU主频率( HZ );

  1GHZ = 1,000 MHZ = 1,000,000 KHZ = 1,000,000,000 HZ;

  获取两次作差就可以得到运行的时间了。其实没必要换算成时间,关注差值就行了。

  PS:

  可以放心一个unsigned __int64 不会溢出 - - 可以计算一下你的CPU能保存多少年的时间。。

  根据这一方法有几个好处: 一是精度高,二是函数调用开销最小,三是平台限制小,四是具有和CPU主频相对应的直接关系。。。 但是由于精度高,得到的数字浮动比较大。。


unto谁与争峰C++圆形算法无其它编辑能比的上吧next非常好用的商路通网信息发布软件
回复

使用道具 举报

0

主题

1002

帖子

1010

积分

积分
1010
信息发布软件沙发
发表于 2017-6-22 23:12:14 | 只看该作者
真是好,真的是免费的呀。谢谢,祝你生意兴隆、财源滚滚!

回复 支持 反对

使用道具 举报

0

主题

652

帖子

686

积分

积分
686
推广工具板凳
发表于 2017-6-26 16:03:14 | 只看该作者
棒棒哒!先让他们设计一款宝贝详情,速度快不说,客服态度也好,本来不相信这些网上的东西,没想到还真特么的不错

回复 支持 反对

使用道具 举报

0

主题

978

帖子

980

积分

积分
980
软件定制开发地板
发表于 2017-6-28 04:47:19 | 只看该作者
精湛!没到一分钟就把我这问题解决了!我自己研究了大半天都没弄懂!不错!

回复 支持 反对

使用道具 举报

0

主题

650

帖子

644

积分

积分
644
5#定制软件#
发表于 2017-6-29 21:18:47 | 只看该作者
,客服很有耐心,我说了很多的要求都一一的帮我改了,有需要还会再来找你们设计的

回复 支持 反对

使用道具 举报

0

主题

640

帖子

612

积分

积分
612
6#定制软件#
发表于 2017-7-2 04:29:04 | 只看该作者
,下载好几天才完成.太值了.慢慢研究.

回复 支持 反对

使用道具 举报

0

主题

587

帖子

579

积分

积分
579
7#定制软件#
发表于 2017-7-4 17:07:09 | 只看该作者
及时做出评价,系统默认好评!

回复 支持 反对

使用道具 举报

0

主题

584

帖子

578

积分

积分
578
8#定制软件#
发表于 2017-7-4 18:35:51 | 只看该作者
很好,服务也好,耐心细致,下次还会来的

回复 支持 反对

使用道具 举报

0

主题

2181

帖子

2

积分

积分
2
9#定制软件#
发表于 2017-7-11 21:44:53 | 只看该作者
很好,服务也好,耐心细致,下次还会来的

回复 支持 反对

使用道具 举报

0

主题

1025

帖子

1027

积分

积分
1027
10#定制软件#
发表于 2017-7-13 02:15:32 | 只看该作者
沟通问题已经解决,客服晨曦服务态度比较好。就是线上沟通,有些困难。希望可以尽快完善。合作愉快

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-6 07:33 , Processed in 0.406962 second(s), 55 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表