这两天闲来无事,回顾了一下年前B站沸沸扬扬的代码泄露事件,大致翻阅了一些泄露的代码发现了一些有意思的事情,其中就包括 B站视频推荐 加权部分算法 的相关代码。

不过后期 B站官方辟谣说是老版本代码,并且已经进行相应的防御措施,但是后端大体的架构还是不会变化太多,所以就仁者见仁智者见智了,仅供吃瓜参考。

姊妹篇:   B站 (哔哩哔哩) 泄露源码中的有趣片段(彩蛋)

首先回顾一下B站源码泄露事件始末

北京时间 2019年4月22日下午16点左右,一个名叫“openbilibili”的用户在Github上创建了“go-common”代码库,而那显然就是B站网站后台工程源码。B站在技术圈炸锅,其后端源码被恶意“开源”,被上传至 GitHub 供全球用户下载。

通俗一点来解释,这就好像是有人把你家的房子图纸发在了微博上,门在哪锁在哪甚至钥匙在哪都标得一清二楚。虽然单凭这个还不至于让所有人都能进你家门,但其实也足够头疼了。

结果就是截至北京时间17:04,该项目已获得6597个标星。fork数量已经突破6000(这个操作会将被Fork的代码仓库中所有的信息,包括源代码、原仓库中的issus、历史提交等全部复制到你的账号中),issues已经成了弹幕,场面已经失控。

最终B站官方也是就此做出了 “回应”,这一代码库已被GitHub「封杀」,微博上已经看不到此事的踪影,知乎上关于该事件的话题也基本被删。

不过总的来说次此泄露对B站的影响也是不可估量的,也是导致了B站股价直接下跌4%.

有关B站的推荐和加权算法

抱着吃瓜的心理在翻看后台代码时,发现了这么一段代码,注意上面的注释。

//countArcHot 视频=硬币*0.4+收藏*0.3+弹幕*0.4+评论*0.4+播放*0.25+点赞*0.4+分享*0.6 最新视频(一天内发布)提权[总值*1.5]
func countArcHot(t *api.Stat, ptime int64) int64 {if t == nil {return 0}hot := float64(t.Coin)*0.4 +float64(t.Fav)*0.3 +float64(t.Danmaku)*0.4 +float64(t.Reply)*0.4 +float64(t.View)*0.25 +float64(t.Like)*0.4 +float64(t.Share)*0.6if ptime >= time.Now().AddDate(0, 0, -1).Unix() && ptime <= time.Now().Unix() {hot *= 1.5}return int64(math.Floor(hot))
}// countArtHot 专栏=硬币*0.4+收藏*0.3+评论*0.4+阅读*0.25+点赞*0.4+分享*0.6 最新专栏(一天内发布)提权[总值*1.5]
func countArtHot(t *model.Meta) int64 {if t.Stats == nil {return 0}hot := float64(t.Stats.Coin)*0.4 +float64(t.Stats.Favorite)*0.3 +float64(t.Stats.Reply)*0.4 +float64(t.Stats.View)*0.25 +float64(t.Stats.Like)*0.4 +float64(t.Stats.Share)*0.6if int64(t.PublishTime) >= time.Now().AddDate(0, 0, -1).Unix() && int64(t.PublishTime) <= time.Now().Unix() {hot *= 1.5}return int64(math.Floor(hot))
}

接下来就是对这段代码的解读:

首先像大多数的推荐算法一样,小破站的视频推荐也是通过对各项数据进行加权求得视频权重然后在进行再区分,提高视频出现概率;

我们能帮助提高视频在哪些地方的出现概率呢?
① b站『搜索』时出现的默认结果页面
② 对该视频话题感兴趣的其他用户的首页
③ 任何会有推荐视频的地方,比如用户看完一个视频后网站自动推荐一组视频

其中影响权重的主要是以下因素:

视频是: 硬币、收藏、弹幕、评论、播放量、点赞数、分享数、更新时间。

专栏文章是:硬币、收藏、评论、阅读量、点赞数、分享数、更新时间。

总结:

  • 视频多了一个弹幕加成。
  • 在2个内容里,分享都占到了最高权重,有0.6,这个可以理解,大部分平台都是分享权重无限高。
  • 播放量和阅读量真的是弟弟,两边都是最低权重,不过相比评论这些二次互动,权重低可以理解。
  • 评论比收藏的权重要高,这个有点特殊。因为不少平台是收藏权重大于评论的。为什么呢?因为一般来说,很多人看见内容都会评论,但是只有感觉特别好的内容,才会收藏。

收藏权重高,意味着重视内容质量,更重视大家觉得好的干货。

评论权重高,则意味着注重互动,更重视能吸引大家讨论的内容。

目前B站在代码上的思路来看,更重视能引发讨论热议的内容。

那么对于我们来说这段代码有什么实际意义呢?

在如今的流量时代,高曝光就意味着能有更多的人看到,从而转化为 高流量、高粉丝,高收益

如果你是UP主 :

那么想要提高自己视频/文章的曝光度,尽可能增加 分享,评论,弹幕的数量 会是更有效的方法,而去刷播放量则意义不大(这样就很好的解释了为什么有些UP老是骗弹幕 ~)

如果你是用户 :   

点赞、硬币、阅读量 可能更多的影响的是你所看UP的收益,想要为喜欢的UP增加曝光不如多刷几条弹幕和评论

如何搞定自己的首页推荐内容  ——— 对视频点击不感兴趣能极大的减少相关话题的权重。

首页看到不感兴趣的视频,首页视频缩略图下面右边按钮点击,选择不感兴趣,调教一段时间就好了。

如果有什么要补充的,欢迎下方

从B站 (哔哩哔哩) 泄露的源码里发现了B站视频推荐的秘密相关推荐

  1. 【毕业设计】3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文)

    [毕业设计]3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文) 文章目录 [毕业设计]3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文) 任务书 设计说明书 ...

  2. 苹果cmsv10迅雷下载站模板高权重好看的影视源码

    苹果cmsv10迅雷下载站模板高权重好看的影视源码 带后台和迅雷下载的侧栏样式苹果CMSv10模板 可以拿来做下载站的经典侧栏样式模板, 弱化播放列表.4个皮肤风格.自定义幻灯,包含了会员.专题.资讯 ...

  3. 3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文)

    3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文) 文章目录 3-基于单片机的公交车智能播报到站运行位置指示系统(原理图+源码+论文) 资料 任务书 设计说明书 摘要 设计框架架 ...

  4. 站长下载 - 源码下载,网站源码,站长工具 - 中国站长站

    站长下载 - 源码下载,网站源码,站长工具 - 中国站长站 http://down.chinaz.com/

  5. 互站卖8000的APK打包平台源码+搭建教程,可是实现自动打包app

    互站卖8000的APK打包平台源码+搭建教程,可是实现自动打包app 程序可实现安卓app五分钟自动打包更换包名和签名互站卖8000的APK打包平台源码+搭建教程,可是实现自动打包app 也可以上传打 ...

  6. Unity3d C#用UGUI系统实现类似于哔哩哔哩(B站)的弹幕效果功能(含源码)

    前言 弹幕的功能在一些,需要滚动显示文字信息的场景下,还是很有需要.这里就模拟实现一下类似于B站弹幕的效果. 效果 如图的效果: 实现过程 实现的思路是一个管理脚本,加上一个移动文本的脚本,管理脚本随 ...

  7. 哔哩哔哩直播姬和OBS源码对比

    哔哩哔哩直播姬 - biliobs 源码地址 https://github.com/bilibili/biliobs 直播姬基于或引用了以下项目 Qt5 obs-studio openssl ffmp ...

  8. 仿哔哩哔哩应用客户端Android版源码项目

    这是一款高仿哔哩哔哩安卓客户端,跟官方网的差不多吧,界面也几乎是一样的,应用里面也加了一些弹出广告,大家可以参考一下吧,安装测试包在源码文件那里,大家可以多多参考一下. 哔哩哔哩弹幕网是国内知名的弹幕 ...

  9. 仿哔哩哔哩应用客户端Android版源码

    这是一款高仿哔哩哔哩安卓客户端,跟官方网的差不多吧,界面也几乎是一样的,应用里面也加了一些弹出广告,大家可以参考一下吧,安装测试包在源码文件那里,大家可以多多参考一下. 哔哩哔哩弹幕网是国内知名的弹幕 ...

  10. 帝国整站PHP源码,帝国cms 诗词整站源码

    Dreamweaver 怎样套用模板和整站程序 套用模板,点击菜单中的 文件-新建,选择模板页-选择你要创建的模板格式-选择创建,即可创建并制作一个你要的模板. 如图:套用模板时,先新建文件,然后选择 ...

最新文章

  1. 用Django内置form组件实现注册
  2. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03
  3. pytorch 归一化与反归一化
  4. ADAS视觉方案盘点下篇:11家创业公司完全解读
  5. springboot 的 RedisTemplate 的 execute 和 executePipelined 功能的区别redis
  6. c语言判断回文字符串递归,用递归实现判断一个字符串是否为回文串
  7. django开源项目cms_我学到的管理开源CMS项目的知识
  8. 2010-09-11
  9. mysql 多键sequence_MySQL增多Sequence管理功能
  10. php mysql帮助类,基于PHP的MYSQL操作类
  11. 网上搜集的好看的gif进度条
  12. WinRAR去广告方法,了解一下?
  13. 阿里云VOD 视频点播(一)、nuxt视频上传,视频播放
  14. 工业以太网EtherNet/IP协议安全分析整理
  15. 万事开头难!迈出第一步……
  16. 删除数组中的指定元素——C++实现
  17. pythoncookie自动登录_Python爬虫连载6-cookie深入使用实例化实现自动登录
  18. CSDN博客如何改名字
  19. 【渝粤题库】陕西师范大学151209 财务报告分析 作业(高起专、专升本)
  20. 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】

热门文章

  1. Spring 集成mybatis 3.几之后,打印sql语句到控制台
  2. 用单片机c语言输入8位输出,单片机C语言教程(二)
  3. 什么软件可以搜c语言的答案,跪求C语言答案
  4. www.gc.com.cn\/ios\/iphone.html,iOS系统安装gcc
  5. VS2010格式化快捷键
  6. xp计算机u盘重装系统,用U盘给旧电脑重装XP系统,自己摸索的方法:两大步骤、两个关键...
  7. c语言 gt 5u,毕业论文_基于51单片机的C语言程序设计实训100例5喜欢就下吧(全文完整版)...
  8. 将运算放大器(运放)用作比较器
  9. 文华财经期货买卖点指标源码,期货超短线指标公式源码
  10. 【天锐绿盾】之常见问题处理:控制台登录提示采集服务器空间不足,修改数据保存时间