广告成本控制实践
出价机制与成本控制策略背景广告解决的是 媒体、广告主、平台之间的多方优化问题:
媒体在保证用户体验的前提下,实现商业化收入;
广告主的诉求是通过出价尽可能的优化营销目标;
广告平台则在满足以上两方需求的基础上实现广告生态的长期繁荣。
广告智能决策技术在这之中起到了关键性作用,基于以上需求,它需要解决这些问题:
为广告主设计并实现自动出价策略,提高广告投放效果;
为媒体设计拍卖机制来保证广告生态系统的长期繁荣。
简化工程架构12345678910111213141516171819202122232425262728293031323334353637用户请求 (e.g., 百度App信息流刷新) ↓ AFD (所有业务 app 服务端流量接入) ↓ NAR (分别请求所需内容下游) ↓ AS (预处理、adx 等) ↓ AS -> 请求触发 ↓ AS -> Proxy (请求召回) ↓ Proxy (下发召回请求) ...
广告检索系统
从 24 年开始接触广告系统,已经两年了。这里我将主要根据我个人工作的经验,结合业内优秀的系统案例,描述一下广告系统架构和广告相关知识点。
商业化广告业务商业化广告业务是一个广告主、平台、媒体三方平衡的商业化活动:
广告主是付钱投广告,希望拿到更多收益,提高 ROI;
媒体拥有流量入口,希望在保证用户体验的前提下,卖出广告位,实现商业化收入;
平台则是在需要平衡上述两者的需求,既要满足两者需求,也要保证平台生态的可持续。
商业化广告类型广告形式按广告形式来分主要是两大类:
搜索广告:用户搜索关键词时,出现在搜索结果页的广告;比如百度、Google 搜索后展示的广告;
展示广告(主要是原生广告):以多种媒体形式展现的广告,可能是视频、图片。原生广告就是与页面设计融为一体的广告,就像也页面里本来就该有的一样,不打断用户体验,信息流(Feed)广告就是典型的原生广告。
广告目标按照广告目标来分可以分成:
品牌广告:为品牌服务,提高曝光、注重触达、强化认知;多为 CPM、CPT 计价广告;
效果广告:注重效果,多为转化目标优化;通常是 CPC、CPA 计价广告。现在的在线商业化 ...
练级规划
再回首
小时候非常奢求能有一台电脑,主要是为了玩,大概是五年级,步入 3G 时代,我还在用爸妈的手机玩文字版 QQ 农场,那时在别人家看到他们打电脑游戏非常吸引我,因此想法设法去找有电脑的地方玩,初中后半段就开始去网吧玩。后来初中毕业,估摸着中考这么简单的问题难不倒我,然后以此为筹码和爸妈要求家里买了电脑,接入宽带,这可太开心了,这便是梦开始的地方。 虽然买来的电脑大部分情况下还是玩游戏,不过玩游戏这个需求也可以衍生出很多子需求,没钱啊,但是想玩游戏,想要比别人厉害,想要下载一些付费文档,怎么办?找盗版?开外挂?嗯是的。怎么找?别想了那时候没别的,只有 Baidu(虽然现在体验很烂但在十多年前还是要夸一夸的),各种论坛、贴吧,那可都是大神,一个破解论坛够我在其他人面前装逼了(这样我也成小孩假大神了,嘿嘿🤭),什么 office 不能用,小说下不下来?交给我!电脑坏了?我给你重装一下系统!这下我在中年老男人心里也成大神了!这是其一,另外靠着玩游戏,我在电脑前待了足够长的时间,怎么也对计算机略知一二吧,起码知道了 C 语言吧,知道了怎么装系统吧,这些额外收益让我受益匪浅。
如何学 ...
碎片
碎片🧩 && idea
C++的值类型
值类别
左值:通常来讲是可以放在赋值运算符左边的表达式,左值具有持久性,拥有确定的内存地址,可以使用取地址符获取;
右值:通常来说是放在赋值运算符右边的右操作数,它是一个临时值,无法取地址操作。
右值引用C++11 中引入了右值引用语义(&&),允许开发者对右值进行引用,从来实现移动语义和完美转发。
移动语义std::move 是 C++11 引入的标准库函数,将一个左值强制转换为右值,从而实现移动语义。通过std::move可以不进行复制实现将一个对象转移到另一个对象,提高了性能。但是std::move不移动任何东西,只是将传入的左值参数强制转化为右值引用
123456namespace std { template<typename T> constexpr remove_reference_t<T>&& move(T&& arg) noexcept { return static_cast<remove_reference_t<T>&& ...
Redis持久化
Redis 的持久化机制是说将 Redis 内存中的数据持久化到磁盘上,以防数据丢失。Redis 中的持久化机制一般有两种:
RDB(Redis DataBase):将 Redis 的内存中的数据快照周期性地写入磁盘,生成一个快照文件(.rdb),
AOF(Append Only File):AOF 持久化是将 Redis 的写操作以追加的形式写入日志文件。在 AOF 持久化模式下,所有的写命令都被追加到 AOF 日志文件中,以此来记录所有修改数据的操作,然后通过日志命令重放来还原数据。
C++中如何引用第三方库
C++中如何引用第三方库?动态链接库和静态链接库在 C++中通常有两种链接 library:动态链接库(Dynamic Link Library,DLL)和静态链接库(Static Link Library,LIB)
动态链接库:在程序运行时通过链接器加载动态链接库,根据程序运行需要动态的链接需要的库中的数据。在 Linux 中,动态链接库通常以 .so 为扩展名(Shared Object),通常命名方式是lib.so.。
静态链接库:在编译链接阶段,静态链接库中的代码会被复制到 bin 中,因此编译的 bin 中是包含了静态链接库的代码的。在 Linux 中静态链接库通常以 .a 为扩展名(archive),通常命名位 lib.a。
引用库在使用第三方库时通常需要两个步骤:
在调用的文件中声明包含头文件,即:#include ""
在编译时链接库文件:
1g++ main.cpp -I/path/library/include -L/path/library -lexample_lib
-I 指定引用的头文件的路径-L 指定第三方库文件所在路径-l 指定 ...
C++函数返回值为引用类型
C++中函数返回值为引用类型有什么作用?函数返回值是引用类型主要三个场景:
函数返回值是一个很大的数据结构,避免拷贝开销;
实现函数的链式赋值操作,此时函数需要作为一个左值,经典的例子有:
std::cout << "hello, world" << std::endl;实际上执行的代码逻辑是: std::cout.operator<<("hello, world").operator<<(std::endl);
operator[]:当随机访问运算符需要实现赋值功能是,函数也需要是一个左值,因此函数需要返回引用类型;
1234567891011vector<int>& addElement(vector<int>& vec, int value) { vec.push_back(value); return vec;}int main() { vector<int> numbers; ...
C++中的整数类型
题目int,long,long long在 32 位 ,64 位和 64 位下跑 32 位虚拟机的大小
一般来说在 32 位系统上:int 通常为 4 字节(32位),long 通常为 4 字节(32 位),long long 通常为 8 字节(64 位)
在 64 位系统上:int 通常位 4 字节(32 位),long 通常为 8 字节(64 位),long long通常为8 字节(64 位)
并且大小只和系统位数有关,所以在虚拟机下也就只和虚拟机的操作系统有关所以在64 位下跑 32 位虚拟机和 32 位系统是一致的。
解释通常查询 C++20 ISO 14882 可以看到在 6.8.2 有关于基本类型的描述:
有五种标准signed integer type:
signed char
short int
int
long int
Long long int
并且按这个list 的顺序每种类型都至少要有和前面的类型一样多的空间。
另外还有一些 impl 定义的扩展 signed integer type,与标准 signed integer type 统称为 signed ...
广告系统的一些基本概念
Refhttps://www.zhihu.com/tardis/zm/art/67578681?source_id=1003




