分类 小工具 下的文章

本文目的是分享一个开发便捷、运行简便、工作优雅的开发方案。
本文适用于使用IDE写代码、看代码的RD及QA。对于热衷Vim等编辑器的同学,可能不适用。
本地指个人笔记本,服务器指的是开发运行的机器。

本地开发服务器运行.png

1.开发便捷:利用IDE的强大功能就好

2.运行简便:服务器(开发机)上的环境是直接可用的,所以将本地代码快捷地同步到服务器上运行,本地开发并提交版本控制。

    什么方式?SFTP/FTP/SMB等都可以,服务器上只要运行相关服务器,本地配置认证、目录映射,本地代码变动,手动或自动地将代码上传。[如何在Webstorm/Phpstorm中设置连接FTP][2]

3.工作优雅:举例说,本地开发分支A,服务器运行调试,开发完成(提交代码)或开发至一半(git stash暂存工作进度),本地切换分支B,开发下一个功能... 此刻服务器上代码的版本控制,就是不干净的,所以在本地切分支A->B时,同时处理好服务器的代码,清理不干净的代码、同样切换A->B,以git为例

git clean -df
git reset --hard
git pull
git checkout --track origin/B

需求说明

原始需求说明

首页

实时流
白名单用户所发博文 + 关键词
阅读量+互动量排序,权重各占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

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

正确步骤:测量时间花在哪(这是重点和前提),为什么花在那儿,优化那儿。
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

完。