分类目录归档:未分类

PHP7下除0返回NAN错误

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

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

C语言与MySQL交互

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

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

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

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

前言:要理解进程和线程,必须先搞清楚内存管理,建议先阅读本站文章《Linux内存管理笔记

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

什么是进程

在说明这个问题之前,我们先想象一个场景:周末在家开着电脑(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的一种实现
继续阅读

CentOS7系统下Nginx网站支持HTTPS笔记

很早之前就看到了耗子叔的这篇文章《如何免费的让网站启用HTTPS》,今天参考后把站点升级到了HTTPS, 基于以下两个原因,还是决定做一个笔记:

原因一:耗子的文章操作系统是Ubuntu 14.04, 这里是CentOS7;
原因二:按照网页 https://certbot.eff.org上CentOS7的安装教程执行,遇到了一些问题。

支持HTTPS免费解决方案Let’s Encrypt请查看耗子的文章,说的很清楚了,这里只是记录了CentOS7下的安装流程。
继续阅读

PHP-7.2.8源码编译安装

安装步骤
0、准备安装包
PHP官网下载页面选择一个最新的稳定版,进入镜像地址列表页,选择服务器所在地域的镜像下载

cd /home
wget http://am1.php.net/get/php-7.2.8.tar.gz/from/this/mirror -O ./php-7.2.8.tar.gz
# 如果在境内建议使用wget http://cn2.php.net/get/php-7.2.8.tar.gz/from/this/mirror -O ./php-7.2.8.tar.gz
tar -zxvf php-7.2.8.tar.gz

继续阅读

Nginx-1.14.0源码编译安装之博客升级系列笔记二

直接开始安装步骤(共9步)

0、准备软件安装包(包含Nginx源代码、文档、脚本,叫安装包比较合适)
Nginx官网下载页面下载Nginx最新的stable version安装包,建议不要下载开发版(mainline version)和过期版(legacy versions)。

cd /home
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz

OpenSSL官网下载页面下载OpenSSL最新的 stable version源码包

cd /home
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar -zxvf openssl-1.1.0e.tar.gz

继续阅读