互联网发展了好几十年,其实真正沉淀下来的变现方式非常有限,广告无疑是所有流量变现的首选。整个广告的模式其实比较复杂,成熟的广告系统里面会大量应用算法,今天大家粗浅的分享下广告行业中的一些业务特点
首先,从广告这个业务的人群角度,分为广告平台、广告消费者以及广告主。
广告消费者:互联网上的每个人都是广告消费者,打开优酷视频,会先看到一段广告。在百度搜索一些内容,也会看到很多广告
广告平台:指的是有广告位的一些平台,比如优酷、百度、微信朋友圈等等
广告主:广告主是有投放广告需求的人,比如大家平时经常能看到VIVO手机、肯德基的广告,这些都是广告主
所以总体上,在广告行业的商业模式是比较透明的。
广告主需要投广告,那广告主是出钱方,通常每个品牌每年都有一定的广告预算,广告主的诉求是通过最少的资金成本换取最高的ROI(利益回报)
广告平台的商业模式也很清晰,一方面广告平台需要有更多的广告消费者,也就是更多地流量,流量对于广告平台就是钱。另一方面,广告平台要用最少的流量换取最多的广告费
广告消费者作为劳苦大众,基本上是食物链的底端
广告主、广告平台、广告消费者三方利益关系看似很清晰,其实存在很多矛盾。这里举一个例子,假设我是麦当劳的营销总监,我想花1个亿推广新出的汉堡,是不是需要我去分别联系百度、腾讯、阿里、今日头条.....这么多广告平台,才能在这些平台铺开广告。这个成本其实很高,于是就诞生了广告领域一系列的“名词”:DSP、DMP、SSP、RTB、ADX等,他们解决的其实是广告和广告消费者中间的链路问题,大体关系如下图所示:
这么多新鲜词,看上去有点懵,先来给大家理一理:
DSP(Demand side platform)需求方平台,DSP解决的问题是广告主与多个广告平台的矛盾。比如一个广告主想投放广告,那他只要把自己的广告给到DSP,并且给DSP一笔钱和需要投放次数的要求。那么DSP会去帮助广告主购买各种广告平台的位置并投放广告
DMP(Data management platform)数据管理平台,DMP解决的是广告和广告受众不匹配的矛盾。比如今天要投放一个冈本的广告,把这个广告投放给一个60岁的老奶奶就不合适,如果投放给一个20岁小姑娘效果就会好很多。DMP的作用就是通过用户和广告画像确定广告的投放对象
ADX(AD exchange)广告交易平台,ADX其实是解决广告平台和DSP之间连接的矛盾。广告位和DSP是一对多的关系。比如“小范”打开了优酷视频,那么优酷就有一个视频开始广告可以展示,这时候这个广告位会有很多DSP来抢,抢的方式也很简单,通常就是谁出钱多,那么广告位就归谁。这种竞价机制发生在ADX系统里,实时竞价的规则就叫做RTB(Real time bidding)
SSP(Sell side platform)供应商平台,SSP是广告平台的服务后台,作用是为DSP提供情报,比如SSP会根据用户在平台的注册信息告诉DSP们:今天这里来了个爱花钱的年轻女性,那么DSP们就会找自己有哪些合适的广告来竞争这个女性的广告展示机会
所以一个用户从登录到看到广告,大致需要100ms,在这100ms之间其实会经历非常多的流程。这里通过一个简单的例子给大家把DSP、DMP、ADX、SSP的作用串起来。
第一步:
假设杜蕾斯花100万投广告,要求是被点击100万次。那么杜蕾斯先找到DSP,把广告、钱、要求给到DSP。
第二步:
DSP会请求DMP,获取什么样的人容易点击杜蕾斯的广告。假设DMP的反馈是”年轻、爱美、白领“容易点击杜蕾斯广告。
第三步:
DSP会去竞价ADX找符合“年轻、爱美、白领”特性的广告位
第四步:
这时候有一个广告位——“小范”的优酷视频广告,通过SSP提供的信息很符合DSP中的杜蕾斯广告投放人群,并且这个广告位被放到了ADX中竞价
第五步:
DSP中的杜蕾斯广告通过不断抬高定价,从多个DSP竞争者中争取到了“小范优酷视频”的广告位。
第六步:
小范打开优酷视频,看到了杜蕾斯的广告~
整个流程中间其实有很多细节需要机器学习算法,以后有机会再给大家分享,希望今天的分享会对大家有所帮助,谢谢。
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。...
错误: java.lang.IllegalStateException: Already attached本文地址: http://blog.csdn.net/caroline_wendy可能原因: @Override protected void onContinueCreate(Bundle savedInstanceState) { super.onCreate
Net Framework,Net Core 和 Net Standard 区别原文链接:Net Framework,Net Core 和 Net Standard 区别 - 乐途 - 博客园 (cnblogs.com)
在编码过程中因为各种各样的情况,有时我们必须在创建类的时候将属性改为首字母大写!(尽管这并不符合java的命名规范)但是在使用json将该对象后传递到前台后,json会自动将属性的首字母大写转为小写。解决方法:在类的属性名上方增加@JsonProperty,在set()丶get()方法上方增加@JsonIgnore...
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对左右两个分区重复以...
理解OAuth 2.0http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.htmlOAuth 2.0基本概念和运作流程https://segmentfault.com/a/1190000013467122架构图验证流程spring security oauth2源码架构图绿色的代表实体类,蓝色的代表接口方法...
前言----------------------------------最近工作中遇到一个linux编译问题,其实是小问题,但经验不足,弄了2天,特做记录。背景---------------------------------这次是做一个新的项目,项目软件编译架构如下图:|-----libm1.a |-----libn1.amain
使用vue+element实现多语言切换,基础详细介绍
问题描述: 利用halcon做显示的时候无法相应MFC的鼠标事件。 原因:利用halcon做图像显示的时候,halcon创建了一个子窗口来继承MFC的父窗口,但是鼠标的消息在halcon内部被响应了,导致无法响应MFC的鼠标消息。 解决方法:(1)对于右键响应可使用OnContextMenu(CWnd* pWnd, CPoint point)来进行右键的自定义处理。 (2) 使用PreTransl...
1 /*eslint-disable*/2 require('script-loader!file-saver');3 require('./Blob.js'); //blob.js也是网上找的,下面会贴上代码4 require('script-loader!xlsx/dist/xlsx.core.min');//注意 直接import xlsx-style会报错,因为npm install xl...
顺序读可以看到 在对4KB数据包进行连续读的情况下:SSD其速度可以达到404M/S,IOPS达到103K/SSAS其速度可以达到190M/S,IOPS达到41K/SSATA其速度可以达到124M/S,IOPS达到31K/S顺序读,SAS总体表现是SATA硬盘的1.5倍,SSD总体表现是SATA硬盘的4倍。顺序写同样的4KB数据包顺序写的情况下,SSD其速度可以达到592M/S,IOPS达到152...
就像人一样,时钟就相当于心跳,只要还活着就得消耗能量,你要想跑得快,心脏就得跳得快,跳得越快能量消耗越高,即使你去睡觉,心跳只要不停止,你还得消耗能量,如果心跳没了,整个人就没了,MCU也就宕机了。我们在使用STM32103的固件库时,时钟配置在system_stm32f10x.c中,但是只是对外部晶振做了初始化,而对于内部时钟并没有添加代码,如果你的MCU没有外部晶振,当系统运行时是先启动内部时钟,然后会检测外部晶振,如果没有检测到晶振,系统便以内部的8M继续运行,这是不合理的。不过性能还是很好的。