分类目录归档:未分类

记一次对MC取数据时间不敏感Debug过程

故障描述:客户端线上页面偶现白页

Debug 过程流
0、第一反应是部分服务器挂了,很快排除。
1、CURL请求页面数据API,一直有数据。跟端上沟通,端上会有超时出现白页的情况。查接口果然超时。
2、如何处理?第一反应是如何做性能优化,而不是为什么会超时。当然,性能优化前提也是要分析超时原因,即性能瓶颈。【事后来看第一时间问为什么会超时的思维更高效】
继续阅读

phpredis zRangeByScore取全量数据用法

我们首先看下redis-cli下ZRANGEBYSCORE的用法[这里redis命令都用大写]:

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集key中score在min和max直接的成员(默认闭区间[min, max],可用符号(min, (max来指定为开区间),按score递增排序。可选参数WITHSCORES决定是否要返回score。可选参数LIMIT指定返回偏移量后的数量,不指定则返回全量。
继续阅读

PHP或运算的一个浅显Bug

前几天赶项目,遍历一组数据,类型是8或9的单独处理,当时是这样写的:

// 片段一
$type = '8';
if ($type != 8 || $type != 9) {
        echo 'do job_b' , PHP_EOL;
} else {
        echo 'do job_a' , PHP_EOL;
}

以上,期望输出”do job_a”, 但是输出的却是”do job_b”, 当时觉得很费解,无赖时间比较紧就换了一个写法:
继续阅读

PHP7下除0返回NAN错误

线上的一个项目,过去一周数据展示异常。排查的过程中发现PHP7和PHP5的一个有趣的差异,特记录下来。

为了尽量把问题描述清楚,单独抽象了一个极简模型:电视节目排行榜,每个电视节目有4项数据(阅读数、互动数、搜索数、播放数),假如数据已经生成好,要求根据这4项数据制作一个Top100榜单,显示节目排名和分值(0-100之间)
继续阅读

C语言与MySQL交互

一直有一个遗憾,没有用C语言操作过数据库。

最近趁着对C语言的一点兴趣,重新熟悉起来,不是从基础语法开始,而是直接用操作数据库开始。

MySQL提供了很多编程语言与自身通信的API,其中就有C语言的API,利用这些API就能及其便利的操作MySQL。C API的数据类型及函数可以参考:这里
继续阅读

进程和线程一(什么是进程和线程)

首先,我们要问,什么是进程?(这里我们讨论的概念都是基于面向线程设计的操作系统)

什么是进程

在说明这个问题之前,我们先想象一个场景:周末在家开着电脑(MacBook),用浏览器(Chrome)访问网易云音乐,选了一首歌播放着。我们把唱歌这个任务交给了浏览器,浏览器正在做着这个任务。
继续阅读

一致哈希PHP实现及应用(一致哈希学习笔记二)

一致哈希算法介绍参考文章《一致哈希算法理解(一致哈希学习笔记一)》

回顾一致哈希算法步骤:
0、将每一个服务器节点按照ip或者server_name, 通过hash函数(eg: crc32)得到对应的一组hash整数值,这里称做hash_servers,并对得到的整数值按由小到大进行排序。
1、将key也通过上面同一个hash函数计算得到对应hash整数值, 这里称为hash_key。

2、遍历hash_servers,用hash_key与hash_servers中的数逐个比较,当hash_key最后小于hash_servers中的那个数存在时,这个数对应的节点就是这个key所存储的节点,否则存在第一个节点。

一致哈希算法PHP的一种实现
继续阅读

投票类应用防刷总结


(图片来之维基百科:日本投票箱

这里说的投票是网络投票,有句话说网络投票比的就是刷票,可见防刷票一直都是一个难题。虽然不能完全防止,但是我们是可以增加一些逻辑限制。

接触到一些投票性质的场景,比如投票活动、抽奖活动、加油、应援、明星打榜
继续阅读