我的页 可配置(创作中心部分)
【需求背景】
支持灵活在我的-创作中心配置白名单入口与红点
【需求详情】
在原有入口上,支持第1、2、3、4位按照人群包配置入口icon、标题、链接
此配置优先级最高,支持红点展示,每个入口的红点带有权重配置,权重越高优先显示该红点。全局一次最多显示一个红点,点击后消失,按权重再显示其他红点
基本配置如下:
1 2 3 4 5 6 7 8 9
| [ConfigurableIconMap] [ConfigurableIconMap.FirstIcon] [ConfigurableIconMap.SecondIcon] [ConfigurableIconMap.ThirdIcon] [ConfigurableIconMap.FourthIcon]
|
支持把将某个位置, 替换为不同的“名称”,“图标”,“跳转链接”,并支持“是否展示红点及其优先级”,以及“面向人群”,“结束时间”
如想将 符合某条件的人群(如半年内有投稿而上个月未投稿),将第二位 换为 “限时红包”, 配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [ConfigurableIconMap] [ConfigurableIconMap.FirstIcon] [ConfigurableIconMap.SecondIcon] [[ConfigurableIconMap.SecondIcon.IconItems]] IdIos = 298 IdAndroid = 413 Title = "限时红包" UriIos = "https://www.bilibili.com/blackboard/activity-Z35_AiL2Z.html?channel=index" UriAndroid = "https://www.bilibili.com/blackboard/activity-Z35_AiL2Z.html?channel=index" Icon = "http://i0.hdslb.com/bfs/feed-admin/07ed0bd2b4a75c207b3faf51cdb9b2fa2b99ba2b.png" GroupId = 12 AttrLocation = 4 RedPointPriority = 2 EndTime = 1616256000 [ConfigurableIconMap.ThirdIcon] [ConfigurableIconMap.FourthIcon]
|
其中,
下面将进一步解释这几个字段:
如果此时还想依据 是否为游戏区资深观众,将第三位替换为 “游戏试玩”; 年龄是否低于18岁,将第二位替换为“开学有讲”(优先级大于“限时红包“),则配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| [ConfigurableIconMap] [ConfigurableIconMap.FirstIcon] [ConfigurableIconMap.SecondIcon] [[ConfigurableIconMap.SecondIcon.IconItems]] IdIos = 2981 IdAndroid = 4132 Title = "开学有讲" UriIos = "https://www.bilibili.com/blackboard/activity-Z3125_AiL2Z.html?channel=index" UriAndroid = "https://www.bilibili.com/blackboard/activity-Z121235_AiL2Z.html?channel=index" Icon = "http://i0.hdslb.com/bfs/feed-admin/1122.png" GroupId = 15 AttrLocation = 5 RedPointPriority = 3 EndTime = 1616257000 [[ConfigurableIconMap.SecondIcon.IconItems]] IdIos = 298 IdAndroid = 413 Title = "限时红包" UriIos = "https://www.bilibili.com/blackboard/activity-Z35_AiL2Z.html?channel=index" UriAndroid = "https://www.bilibili.com/blackboard/activity-Z35_AiL2Z.html?channel=index" Icon = "http://i0.hdslb.com/bfs/feed-admin/07ed0bd2b4a75c207b3faf51cdb9b2fa2b99ba2b.png" GroupId = 12 AttrLocation = 4 RedPointPriority = 2 EndTime = 1616256000 [ConfigurableIconMap.ThirdIcon] [[ConfigurableIconMap.ThirdIcon.IconItems]] IdIos = 2918 IdAndroid = 4113 Title = "游戏试玩" UriIos = "https://www.bilibili.com/blackboard/121235_AiL2Z.html?channel=index" UriAndroid = "https://www.bilibili.com/blackboard/sadasd-Z35_AiL2Z.html?channel=index" Icon = "http://i0.hdslb.com/bfs/feed-admin/56789.png" GroupId = 16 AttrLocation = 6 RedPointPriority = 8 EndTime = 1626256000 [ConfigurableIconMap.FourthIcon]
|
GroupId和EndTime 控制相同位置的展示规则:
如对于第二个位置,此时 开学有讲 和 限时红包 都未过期,如果某mid均在这两个人群包内,则会展示第一个 即 开学有讲; 如果只在 限时红包 的人群包内,才会展示限时红包
RedPointPriority和AttrLocation, 控制红点的优先级及点击后消失:
如要求 游戏试玩 的红点优先级最高,则需要保证游戏试玩在配置中所有的AttrLocation字段中值最大;
AttrLocation字段为相关业务的前端,向创作中心服务端申请business_type
每个business_type对应一个数值,该值即AttrLocation。其具体含义是tidb的xxx库中,xxx表中attribute字段做位运算的位置(由于位运算从0开始,实际的index为该值-1)。
当用户点进该图标时,前端同学会调用前述通用消除红点接口,将该mid的该属性位置为1;
程序会依据RedPointPriority从高到低,将第一个其attribute相应位置不是1的图标的红点字段设置为1;
(现在 默认的第四位,”有奖活动“的红点优先级最低)。
在此例中,如果用户还未点击任何红点,则依据 RedPointPriority 的大小,第三位将展示红点。用户点击 游戏试玩 后, 前端根据UriIos/UriAndroid带有?channel=index,会请求通用-不再展示红点接口,从而将user_attribute表中该mid的attribute相应的属性位设置为1.
再次请求时,程序会将下一个符合条件的(RedPointPriority最大,且未点击过)位置的红点设置为展示。
几点注意事项:
- 四个位置的Id不能有重复。对某个位置,IdIos和IdAndroid可以相同,也可以不同
- UriIos/UriAndroid 中需要带上?channel=index,否则前端不会请求消除红点的接口
- EndTime 必须是时间戳格式,不能是”Y-m-d H:i:s“
QPS:
HBase迁移TiDB
过程中遇到的一些坑:
row_number引发的顺序问题,相同排名会随机取
如取点赞数最高的三个稿件,如果有a,b,c,d,e,f,g 7个稿件点赞数相同,可能会出现其中任意三个,由Hive写到Hbase和TiDB的可能不同
int32溢出导致的数据不一致
从Hbase/TiDB里取出的数据,用一个struct来承接. 里面所有整数类型均用int32. 但部分头部up主,某些字段的值(如播放量)可能超过了int32类型的上限2147483647,从而TiDB查询时会报错
sql: Scan error on column index 0, name "play": converting driver.Value type int64 ("3492188783") to a int32: value out of range)
这8个大up主,都有这个问题..
1 2 3 4 5 6 7 8
| 10330740 15773384 258457966 4856007 732364 928123 98627270 7584632
|
阮一峰老师所言极是.. 最常见的电话号码
-1和4294967295
某个为-1的值,因为类型定义,最终变成4294967295
发布按钮可配置
创作中心首页改版
打卡活动
UP主推荐官
原文链接: https://dashen.tech/2021/04/26/B站工作期间部分项目汇总/
版权声明: 转载请注明出处.