产品介绍

(1) I/O 模型的选择,

epoll就一定好吗?  那是肯定的。

epoll最有用的就是ET模式,适合于那种有大量连接,但是有数据的连接比较少的情况,
如果你有10000个连接,但是很不幸,这10000个连接全部都有数据,你还是得遍历一把进行处理,( 这里对ET模式下怎么处理数据就不讨论了)。

这个和select, poll有什么区别。

epoll还有比select, poll先进得地方, 就在于将fd得列表维护在内核中, 而select, poll是调用一次,传递一次, 这点epoll领先是没得说得。

最主要还是epoll系统调用的实现方式采用事件方式,比poll, select的轮询方式强的多

(2) 使用非堵塞

做为网络服务器, 堵塞I/O一般情况下不予考虑

(3) 减少I/O操作和无谓的系统调用

比如利用writev一次性写入多个数据, 减少write调用的次数.

或者使用零拷贝的sendfile,tee等

(4) tcp是双工的

这点不要忽略掉, 数据转发程序就在于数据的转发速度, 这里我采用读和写分开线程的处理方式

(5) 进程还是线程

这个无关紧要,一个粒度和数据访问, 稳定性的问题。减少之间的相互影响,尽量没有关联, 比如减少对相关互斥数据的访问等等。

(6) 尽量在设计上做到不需要锁
比如使用环形缓存, 环形消息队列等


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pmunix/archive/2008/07/18/2672975.aspx

 

 

1. 产品介绍

Shareinstall是APP推广的黑科技,具有智能传参、个性安装、多维数据统计等产品功能,可适用于多种应用场景,例如:免填邀请码绑定邀请关系、免打包跨平台渠道推广、APP一键拉起、地推数据高效统计、渠道来源精准统计、移动广告效果追踪、用户社交分享统计等。同时shareinstall拥有大规模服务器集群、大规模商业数据基础、通过了大批量合作商数据实测,将为您提供以一个精准、有效、安全的服务环境。

1.1 特色服务

(1)智能传递参数

用户安装、下载、打开、拉起应用等行为均可通过点击H5页面产生的链接进行自定义参数的智能传递,通过shareinstall后台大数据算法的精准识别匹配来源邀请行为,绑定邀请、好友关系。亦可根据参数直达应用指定场景,如聊天室、游戏室、商品详情页面等。

(2)快速分享安装

用户通过点击H5页面分享的链接即可实现快速安装功能。省略了中间步骤,减少了因步骤繁多而引起的用户流失,并可通过scheme结合universal link技术实现一键唤醒app功能,安装后可直达指定页面。兼容国内外主流社交平台,智能快速的同时更提升了用户体验。

(3)多维数据统计

多元化的数据统计功能包含新增、活跃、启动等多重指标,直达用户行为分析。支持添加多重渠道,能够精准的核算销售地推业绩、掌握用户传播价值、辨识最佳的推广渠道、监测和衡量广告投放效果,为精细化运营决策提供数据支持。

1.2应用场景

(1)免邀请码绑定邀请关系

传统的手动填码增加了用户的操作步骤并且无法避免填写错误的问题,一旦用户因繁琐的操作体验放弃填写邀请码将导致大幅度的用户流失,使拉新转化率都处于一个较低的水平。 而shareinstall在APP安装前通过分享链接自动获取和传递参数,安装后则通过shareinstall后台大数据的算法精准识别,匹配来源邀请行为,绑定邀请、好友关系。在整个过程中无需用户手动操作,大大提升了用户体验的幸福感。同时通过精准高效的关系匹配自动建立用户关系的操作行为使活动效率大大提升,技术人员也无需在进行新系统的开发,在成本上也较为低廉。

(2)免打包跨平台渠道推广

传统的做法是对不同渠道进行分包发布,每个渠道都需要开发人员手动打一个具有唯一标识的渠道安装包,当渠道较多时会导致工作强度增加、工作效率降低、错误率增加等弊端情况。 而shareinstall用渠道链接代替渠道安装包,在提高效率的同时更加智能精准。同时shareinstall支持APP推广渠道链接动态生成,是游戏发行、联运CPS利器。

(3)APP应用一键拉起

APP一键拉起功能适用于多种应用场景,例如:一键加入游戏房间、快速链接商品页面、直接加入好友聊天、一键领取优惠券等等。以分享“某音”视频为例,当好友刷“某音时”看到了有价值的视频想与你分享并发送你一个链接,你可以直接通过点击链接进行指定视频界面,无需退出查找房间ID再次进入。简言之基本原理如下: A点击邀请按钮产生分享链接给B,shareinstall在大环境下追踪来源(例如:来自A的邀请),B通过链接打开APP直达所需场景。

(4)地推数据高效统计

用户可通过shareinstall管理台自定义渠道链接,实现地推人员人手一码,高效缓解用户拒绝填写邀请码的情况,同时有效的避免了数据造假、地推人员抱怨等情况。从开发角度来说,使用shareinstall可以有效的避免渠道分包统计,减轻技术人员工作量,为企业节约成本。

(5)移动广告效果追踪

在当下互联网时代广告投放是较为高效的推广方式,然而广告投放的渠道日益增多,用户无法辨别有效渠道,这也导致高成本低效率的现象出现。Shareinstall通过网页集成JS SDK,将生成的链接进行动态拼接并将拼接后的链接与CPS渠道参数进行对应,然后通过客户端集成shareinstall ios和Android sdk获取网页携带渠道参数并传递给APP服务端,服务器获取渠道参数后进行统计。这种方式能够精确追踪安装渠道来源、一键排重直击异常渠道并且支持独立报表加密分享。

(6)用户社交分享统计

社交分享是内容分发的有效途径,在用户社交分享的过程中可以体验产品的增值服务,有效的实现拉新促活,更加精准的获取到目标用户。Shareinstall主要通过网页集成shareinstall js sdk,通过集成的js sdk 写入识别用户身份的唯一ID,然后通过网页集成shareinstall js sdk,通过集成的js sdk 写入识别用户身份的唯一ID,APP服务端接收来自客户端的用户ID,进而实现用户间关系的绑定,同时还可通过shareinstall后台对统计数据进行查看。

(7)渠道来源精准统计

渠道来源统计是大部分用户的痛点,主要体现在:渠道拓展受限、海量渠道统计复杂、打包分包流程繁琐等方面。而shareinstall将为您提供一个安全稳定的环境,让您能够自定义渠道信息并进行批量管理,免打包、分包,有效的区分渠道来源,更能为您提供详细的渠道报表、有效的监控渠道数据,辨识最佳的推广渠道。

 

Sendfile函数说明
 
#include
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
 
sendfile()是作用于数据拷贝在两个文件描述符之间的操作函数.这个拷贝操作是内核中操作的,所以称为"零拷贝".sendfile函数比起read和write函数高效得多,因为read和write是要把数据拷贝到用户应用层操作.
 
参数说明:
out_fd 是已经打开了,用于写操作(write)的文件描述符;
in_fd 是已经打开了,用于读操作(read)的文件描述符;
offset 偏移量;表示sendfile函数从in_fd中的哪一偏移量开始读取数据.如果是零表示从文件的开始读,否则从相应的便宜量读取.如果是循环读取的时候,下一次offset值应为sendfile函数返回值加上本次的offset的值.
count是在两个描述符之间拷贝的字节数(bytes)
 
返回值:
如果成功的拷贝,返回写操作到out_fd的字节数,错误返回-1,并相应的设置error信息.
 
EAGAIN 无阻塞I/O设置O_NONBLOCK时,写操作(write)阻塞了.
EBADF 输出或者输入的文件描述符没有打开.
EFAULT 错误的地址.
EINVAL 描述符不可用或者锁定了,或者用mmap()函数操作的in_fd不可用.
EIO 当读取(read)in_fd时发生未知错误.
ENOMEM 读(read)in_fd时内存不足.


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Crazyguang/archive/2008/05/09/2423708.aspx

你可能感兴趣的:(C++,LINUX,网络,struct,prototype,function,服务器,tcp)