原生hexo并不支持数学公式,需要安装插件 mathJax。mathJax 是一款运行于浏览器中的开源数学符号渲染引擎,使用 mathJax 可以方便的在浏览器中嵌入数学公式。mathJax 使用网络字体产生高质量的排版,因此可适应各种分辨率,它的显示是基于文本的而非图片,因此显示效果更好。这些公式可以被搜索引擎使用,因此公式里的符号一样可以被搜索引擎检索到。
HyperLogLog算法
基数计数概念
基数计数(cardinality counting):通常用来统计一个集合中不重复的元素个数,例如统计某个网站的UV,或者用户搜索网站的关键词数量。数据分析、网络监控及数据库优化等领域都会涉及到基数计数的需求。 要实现基数计数,最简单的做法是记录集合中所有不重复的元素集合$S_u$,当新来一个元素$x_i$,若$S_u$中不包含元素 $x_i$ ,则将 $x_i$ 加入$S_u$,否则不加入,计数值就是$S_u$的元素数量。这种做法存在两个问题:
- 当统计的数据量变大时,相应的存储内存也会线性增长
- 当集合$S_u$变大,判断其是否包含新加入元素 $x_i$ 的成本变大
大数据量背景下,要实现基数计数,首先需要确定存储统计数据的方案,以及如何根据存储的数据计算基数值;另外还有一些场景下需要融合多个独立统计的基数值,例如对一个网站分别统计了三天的UV,现在需要知道这三天的UV总量是多少,怎么融合多个统计值。
LZ77压缩算法
LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。
nginx之proxy
最近项目中使用到nginx的反向代理,之前也一直听过nginx的反向代理,但一直没有去详细了解,机会来啦就要抓住,本篇文章将从何为代理到nginx反向代理到最后主要配置指令的详细说明为顺序展开讲解~
fpm源码之配置解析
是不是经常在网上看到php-fpm.conf的各种配置项?什么pm.max_children、pm.min_spare_servers、pm.status_path、listen等等。他们到底代表什么意思存放在那个文件里呢?接下来我们就来一探究竟。
fpm源码解析准备【原创】
之前看过网上零散的关于php-fpm分析的文章,要么不全,要么就是讲解php-fpm的配置文件的,还有就是讲解nginx与php-fpm之间通信配置的。关于php-fpm中的进程管理、信号管理、事件处理、时钟管理、请求处理等几乎为零。故本着学习的宗旨对fpm源码进行解读。本系列采用php-7.2.0版本中的php-fpm进行分系列讲解。本系列共分为5节,具体如下:
malloc函数详解【转载】
很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一块连续的内存,知道和free函数是一起用的。但是但是:一部分人还是将:malloc当作系统所提供的或者是C的关键字,事实上:malloc只是C标准库中提供的一个普通函数,而且很多很多人都对malloc的具体实现机制不是很了解。
PHP源码之宏【转载】
作为 PHPer,我们几乎每天都在写函数,我们一定会好奇,那些 PHP 内置的函数,是长什么样子的。如果写过 PHP 扩展的话,一定知道这个宏:PHP_FUNCTION
。在定义一个函数的时候,这样来使用这个宏。例如 array_change_key_case
,它的定义是这样的:PHP_FUNCTION(array_change_key_case)
。没错,就是这么简单。但是,在这个简单的背后,却没有这么简单。