利用芝麻HTTP代理IP池收集新鲜、准确和实时的产品数据,并将其转化为有价值的业务见解。
使用200多个城市的3000多万个代理池,大规模监控网络,快速检索公共数据,打击有害活动。
利用芝麻HTTP抓取电商公开数据。电商情报尽在掌握,快速响应抢占市场先机
芝麻HTTP提供数据或Web抓取资源,用于收集可公开访问的数据。
精准识别盗版侵权行为,快速处理危机,确保品牌安全。
精准预测旅游行业趋势,为企业制定前瞻性策略提供关键支持。
面向所有业务场景,提供3000万纯净代理IP资源服务,满足个人/企业用户多样化的业务场景需求
IP
许可证
网络安全
等级保护
ISO
9001
ISO
20000
ISO
27001
IP
许可证
网络安全
等级保护
ISO
9001
ISO
20000
ISO
27001
IP
许可证
网络安全
等级保护
ISO
9001
ISO
20000
ISO
27001
*代理模式: 为其他对象提供一种代理以控制对这个对象的访问*/
/*普通代理: 调用者只能访问代理角色,而不能访问真实角色。 调用者只知道代理而
不用知道真实角色,**了真实角色的变更对高层模块的影响。*
#include
#include
#include
/*抽象游戏者 代理*/
typedef struct _IGamePlayer IGamePlayer;
struct _IGamePlayer
{
void (*login)(char *pName, char *pPassword, void *);
void (*killBoss)(void *);
void (*upgrade)(void *);
void (*DeleteIGamePlayer)(void *);
};
/*游戏者 具体*/
typedef struct _GamePlayer GamePlayer;
struct _GamePlayer
{
IGamePlayer gmplayer; /*继承抽象游戏者*/
char acName[10]; /*游戏者姓名*/
void (*DeleteGamePlayer)(GamePlayer *pGamePlayer);
};
void login(char *pName, char *pPassword, void *pGamePlayer)
{
printf("user :%s is login in !\n", pName);
}
void killBoss(void *pGamePlayer)
{
printf("%s is killing the boss! \n", ((GamePlayer *)pGamePlayer)->acName);
}
void upgrade(void *pGamePlayer)
{
printf("%s is upgrading !\n", ((GamePlayer *)pGamePlayer)->acName);
}
void DeleteGamePlayer(GamePlayer *pGamePlayer)
{
if(pGamePlayer)
{
free(pGamePlayer);
pGamePlayer = NULL;
}
}
GamePlayer *CreateGamePlayer(IGamePlayer *pIGamePlayer, char *pName)
{
GamePlayer *pGamePlayer = NULL;
if(!pIGamePlayer)
{
return NULL;
}
else
{
pGamePlayer = (GamePlayer *)malloc(sizeof(GamePlayer));
if(!pGamePlayer)
{
return NULL;
}
memset(pGamePlayer, 0, sizeof(GamePlayer));
strcpy(pGamePlayer->acName, pName);
pGamePlayer->DeleteGamePlayer = DeleteGamePlayer;
pGamePlayer->gmplayer.login = login;
pGamePlayer->gmplayer.killBoss = killBoss;
pGamePlayer->gmplayer.upgrade = upgrade;
pGamePlayer->gmplayer.DeleteIGamePlayer = pGamePlayer->DeleteGamePlayer;
return pGamePlayer;
}
}
/*普通代理的代理者*/
typedef struct _GamePlayerProxy GamePlayerProxy;
struct _GamePlayerProxy
{
IGamePlayer gmplayer; /*继承抽象游戏者*/
GamePlayer *pGamePlayer; /*被代理者*/
void (*DeleteGamePlayerProxy)(GamePlayerProxy *pGamePlayerProxy);
};
void ProxykillBoss(void * pGamePlayerProxy)
{
((GamePlayerProxy *)pGamePlayerProxy)->pGamePlayer->gmplayer.killBoss(((GamePlayerProxy *)pGamePlayerProxy)->pGamePlayer); /*代理执行被代理者的方法*/
}
void Proxylogin(char *pName, char *pPassword, void *pGamePlayerProxy)
{
((GamePlayerProxy *)pGamePlayerProxy)->pGamePlayer->gmplayer.login(pName, pPassword, pGamePlayerProxy);
}
void Proxyupgrade(void *pGamePlayerProxy)
{
((GamePlayerProxy *)pGamePlayerProxy)->pGamePlayer->gmplayer.upgrade(((GamePlayerProxy *)pGamePlayerProxy)->pGamePlayer);
}
void DeleteGamePlayerProxy(GamePlayerProxy *pGamePlayerProxy)
{
if(pGamePlayerProxy->pGamePlayer)
{
pGamePlayerProxy->pGamePlayer->DeleteGamePlayer(pGamePlayerProxy->pGamePlayer);
}
if(pGamePlayerProxy)
{
free(pGamePlayerProxy);
pGamePlayerProxy = NULL;
}
return;
}
GamePlayerProxy *CreateProxy(char *pName)
{
GamePlayerProxy *pGamePlayerProxy = NULL;
pGamePlayerProxy = (GamePlayerProxy *)malloc(sizeof(GamePlayerProxy));
if(!pGamePlayerProxy)
{
return NULL;
}
memset(pGamePlayerProxy, 0, sizeof(GamePlayerProxy));
pGamePlayerProxy->pGamePlayer = CreateGamePlayer(
(IGamePlayer *)pGamePlayerProxy, pName); /*创建被代理者*/
pGamePlayerProxy->DeleteGamePlayerProxy = DeleteGamePlayerProxy;
pGamePlayerProxy->gmplayer.login = Proxylogin;
pGamePlayerProxy->gmplayer.killBoss = ProxykillBoss;
pGamePlayerProxy->gmplayer.upgrade = Proxyupgrade;
pGamePlayerProxy->gmplayer.DeleteIGamePlayer = pGamePlayerProxy->DeleteGamePlayerProxy;
return pGamePlayerProxy;
}
/*场景*/
void main()
{
/*定义一个代理者*/
IGamePlayer *pPlayProxy = (IGamePlayer *)CreateProxy("zhangsan"); //转换为抽象类, 即场景只依赖于抽象类
/*开始打游戏,记下时间戳*/
printf("game start time is : 2014-1-21 9:00\n");
/*代理登录*/
pPlayProxy->login("zhangsan", "password", pPlayProxy);
/*代理打怪*/
pPlayProxy->killBoss(pPlayProxy);
/*代理升级*/
pPlayProxy->upgrade(pPlayProxy);
/*游戏结束*/
printf("game end time is :2014-1-21 10:00");
/*释放资源*/
pPlayProxy->DeleteIGamePlayer(pPlayProxy);
}