分类 小工具 下的文章

微博春晚流排序算法榜单

需求说明

原始需求说明

首页

实时流
白名单用户所发博文 + 关键词
阅读量+互动量排序,权重各占50%
发博时间降权

精彩段子

段子实时流
白名单用户所发博文 + 关键词
阅读量 + 互动量排序, 权重各占50%
发博时间降权
段子排行榜
白名单用户所发博文 + 关键词
阅读量 + 互动量排序, 权重各占50%
uid 去重,每个uid显示排名最高的博文

视频流

历年节目回顾
白名单用户所发博文+关键词
播放量+互动量排序,权重各占50%

明星实时流

白名单用户所发博文 + 关键词
阅读量 + 互动量排序,权重各占50%
发博时间降权

排序规则的抽象

是否区分视频微博

博文类:排序计数按 阅读量 + 转评赞
视频类:排序计数按 播放量 + 转评赞
视频的播放量从微博信息中获取,不同于 阅读、转评赞是同一个接口

是否时间降权

实时流: 计数按发布时间因子衰减

是否uid去重

段子手排行榜

抽象后的流排序

流分类

春晚实时博文 (阅读+转评赞+时间降权; 春晚主场、精彩段子、明星拜年)
春晚段子排行 (阅读+转评赞+uid去重,精彩段子)
春晚视频排行 (播放量+转评赞,历年回顾、视频排行)

算法抽象

//根据后台设置的计数权重计算 单体微博的原始得分
//如对于视频微博, $weight['read'] = 0 
//对于普通博文, $weight['play'] = 0
$raw_score = $weight['read'] * $read_count + $weight['interacts'] * $interacts_ccount  + $weight['play'] * $play_counts;
//根据时间衰减因子,计算衰减系数,
//$decay_hour_config 衰减到e^(-1) 约为0.3678需要的小时数
//如果需要实时性比较强,$decay_hour_config 可以设置的比较下,如0.01
$decay_weight = exp(-1 * ($count_time_in_seconds - $mid_create_time_in_seconds) /(3600 * $decay_hour_config));
$score = $score * $decay_weight;

流收录&&排序总体流程

使用redis的zset 实时收录feed流
区分视频微博和普通微博(redis_key_feed, redis_key_video, redis_key_spring2018)
每十分钟排序
前台展示使用redis_key_spring2018, 初始微博的score 为0

读《高性能MySQL》摘记

第三章 性能剖析
性能:更好的解释可以是,完成某任务所需的时间度量 秒/任务
优化:减少所需时间
吞吐量:每秒完成查询量 任务数/秒

正确步骤:测量时间花在哪(这是重点和前提),为什么花在那儿,优化那儿。
3.3 剖析MySQL查询
捕获MySQL查询
方法1 配置long_query_time=0 注意 由于全量查询,以免磁盘使用过大,最好部署log ratation工具
方法2 抓取TCP网络包,tcpdump保存到磁盘,用Percona Toolkit中的pt-query-degist分析
附加:MySQL还有“通用日志”,但只记录查询发生时间;MySQL Proxy代理层也可以记录所有查询
3.5.2 使用strace
strace -cfp $(pidof mysqld)
Percona Toolkit中的pt-ioprofile也是使用的strace来生成I/O活动的剖析报告

产品想法-出门提醒器

出门提醒器

考虑这几种场景:
天气重度污染,出门忘记戴口罩
答应给同事带东西,想着想着,第二天忘记了 等等

在门口安装 出门提醒器,你就可以这样:

  1. 想带一本书来公司,通过手机向其发送条出门提醒,明天带《思维导图》,次日出门时,出门提醒器通过红外监测要出门了,说一声“带上您的书了吗?”。
  2. 上午出门,出门提醒器知道外面污染,说一声,“雾霾严重,带口罩哦”

技术实现:
红外线传感
网络模块
机器学习-声音合成
...

啊呀,好像小米 都做出产品了
https://item.mi.com/1171600028.html

科普科学,便捷上网

鉴于很多朋友不大清楚科学上网的原理,这里简单介绍一下。
大陆墙是为了祖国社会稳定,使大众免受外来不良思想的影响而建立的。
墙外有一些网站,我们没办法访问,尽管他们的产品很棒。
kexueshangwang1.png
计算机网络中,有一种架构叫做代理。
你直接访问不了的,可以交给能访问得了的人(软件)帮你访问,再转达给你,问题解决!
上图的Shadowsocks(以下简称ss)便是你的帮手,它可以代理你的网络请求,使你能够Google一下。

下面说一下技术逻辑:

  1. ss提供网络代理服务,同时配置系统网络代理。
  2. 当我们用浏览器打开一个网址A时,浏览器会读取 系统的网络配置 或 浏览器自身的网络配置,从而得知,网址A应该直接访问 还是 通过代理来访问。
  3. 用已确认出的方式访问吧
    kexueshangwang2.png

完。

故事三则

1. 钥匙丢在哪了?

昨日早骑电动摩托去公司,然后在食堂吃早餐。下班时发现钥匙丢了。我仔细回想,可能早上落在食堂的餐桌上了、可能坐在哪个沙发掉了、也可能不小心掉进桌下的垃圾桶,被清洁员工误收走了?物业-失物招领处的同事已下班,只能明天去问有没有人捡到,无奈心情不好,打个车回家。幸好房东留有钥匙一把,我才得进家门;也幸好电动摩托也有备用钥匙。

今日上午便去问失物招领处、食堂员工、清洁人员,都没有。我在想会不会真有歹人捡到车钥匙,去车库骑走?要是那样的话必须调监控,嗯。但我更相信钥匙是被清洁人员误收走了,因为我觉得若同事捡到,一定会交到失物招领的吧。
下班去地下车库,戏剧性的一幕出现了,钥匙它就插在车子上,有两天整!谁再说新浪地下车库不安全我跟谁急!
微信图片_20170809210435.jpg
顿时不敢相信我寄几,居然把钥匙留在车子上,这人啊大概是脑残吧。这两天回想钥匙丢在哪时,潜意识里设置的前提是:骑到车库停车拔下钥匙,我一定是把钥匙丢哪了。全然没想到钥匙可能就插在车子上!这个最本源最基本的疏漏。

由此可见,人们遇到问题时,会自以为是地认为,首先,一些前提是没问题的,但常常问题可能就出在那前提上。
想想《三体》里的几个科学家,耗时大半辈子研究一个领域,却意外发现,他的理论体系里,最基本的概念和公理是不成立的,那简直能让人崩溃。

所以,遇事时莫慌,花几分钟,想想你觉得不可能出现的情况、质疑那些“理所当然”,可能就解决问题了。

2. 不懂别瞎说

这两日在公司食堂,饭菜真是令人难以吃饱。今日下班去外面一家饺子馆,还点了盘“凉拌山野菜”,菜一上来,入眼的是黄瓜丝儿+香菜,我问路过的服务员,“山野菜是什么”,她看到我桌上的菜说,“这就是山野菜”。我忍了。喝口饺子汤,我拿筷子扒开两下,哦,原来里面有“老蕨菜”,我在家的时候吃过,我们家那边的乡土叫法。
shanyecai.jpg
她的回答,我觉得不行;我的问题,我觉得OK。我是没看到老蕨菜,所以质疑,难道他们家的山野菜,就是黄瓜丝儿配香菜?她竟然以题答题,不知怎么地想起了《让子弹飞》里喊的一句台词,“上海就是浦东 浦东就是上海”……

其实怪我,没看明白呢,就开始瞎质疑。想要否定一个事儿,你就得先理清这个事儿。虽然关系不大,但毛主席说过,“没有调查,就没有发言权!”。

3.新好的事物不可挡(电脑技术篇,业外人酌情忽略)

我是一名PHP工程师,PHP意思是Hypertext Preprocessor,Web上的超文本预处理器。Web是啥?超文本预处理器又tm是啥?这俺就不扯了,再扯远喽。啊对,我们还用一种数据库,叫MySQL。

微信图片_20170809210446.jpg

以前啊,我操作数据库,习惯用那个phpmyadmin,使用PHP编写的网站形式的MySQL数据库管理工具。今天死活想在机器上安装,最新版呢嫌机器上的PHP版本低,旧版呢又依赖Mysqli扩展。同事推荐一个软件叫DataGrip,是JetBrains公司的产品,用了还真不错。起码这软件和PHP没毛关系,谁也不耽误谁。

我们都有舒适区,不阶段性地远离就很难进步。远离一下下,尝试新的东西,不耽误事儿,而且肯定有新的视角、新的体验、新的收获。