【redis源码阅读】redis对象

2018-03-21
阅读 4 分钟
2.4k
使用位段类型的好处就是避免浪费内存,如果使用unsigned int type定义type字段,需要4个字节,而使用unsigned type:4,只需要4个位段就足够了。

[Redis源码阅读]sds字符串实现

2017-11-13
阅读 6 分钟
3.2k
从开始工作就开始使用Redis,也有一段时间了,但都只是停留在使用阶段,没有往更深的角度探索,每次想读源码都止步在阅读书籍上,因为看完书很快又忘了,这次逼自己先读代码。因为个人觉得写作需要阅读文字来增强灵感,那么写代码的,就阅读更多代码来增强灵感吧。

[PHP源码阅读]number_format函数

2017-09-21
阅读 3 分钟
3.6k
如果只提供第一个参数,number的小数部分会被去掉,并且每个千位分隔符都是英文小写逗号"," ;如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上;如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep

自上而下,逐步揭开PHP解析大整数的面纱

2017-09-14
阅读 7 分钟
5.1k
但在程序里需要的是完整的数字作为查找数据的参数,所以需要用的是完整的数字,当时以为只是因为数据被转换成科学计数法了,于是想到的解决方案是强制让它不使用科学计数法表示:

【源码分析】cJSON库学习

2017-04-28
阅读 3 分钟
3k
cJSON是一个轻量级的json解析库。使用起来非常简单,整个库非常地简洁,核心功能的实现都在cJSON.c文件,非常适合阅读源代码来学习C语言。最近读完这个库的源码,分享自己收获的一些心得。

[PHP源码阅读]array_slice和array_splice函数

2016-07-05
阅读 3 分钟
1.9k
array_slice和array_splice函数是用在取出数组的一段切片,array_splice还有用新的切片替换原删除切片位置的功能。类似javascript中的Array.prototype.splice和Array.prototype.slice方法。

[PHP源码阅读]array_pop和array_shift函数

2016-05-30
阅读 2 分钟
3.5k
上篇文章介绍了PHP添加元素到数组的函数,那么当然有从数组中删除元素。array_pop和array_shift只从数组的头或尾删除一个元素。经过阅读源码,发现这两个函数的实现都是调用了同一个函数--_phpi_pop来实现从数组中删除一个数组元素的功能。因此解读时将这两个函数一并讲了。

[PHP源码阅读]array_push和array_unshift函数

2016-05-27
阅读 2 分钟
4.1k
array_push函数将array参数看做一个栈,将传递进来的变量压倒array的尾部。array的长度随着被压进去的变量个数增加。下面的代码有意义的效果:

[PHP源码阅读]empty和isset函数

2016-05-26
阅读 5 分钟
4.5k
近日被问到PHP中empty和isset函数时怎么判断变量的,刚开始我是一脸懵逼的,因为我自己也只是一知半解,为了弄懂其真正的原理,赶紧翻开源码研究研究。经过分析可发现两个函数调用的都是同一个函数,因此本文将对两个函数一起分析。

[PHP源码阅读]trim、rtrim、ltrim函数

2016-05-25
阅读 2 分钟
2.6k
trim系列函数是用于去除字符串中首尾的空格或其他字符。ltrim函数只去除掉字符串首部的字符,rtrim函数只去除字符串尾部的字符。 我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。 trim {代码...} 参数说明 character_mask默认是" tnr0x0B"等...

[PHP源码阅读]explode和implode函数

2016-05-20
阅读 5 分钟
3.9k
explode和implode函数主要用作字符串和数组间转换的操作,比如获取一段参数后根据某个字符分割字符串,或者将一个数组的结果使用一个字符合并成一个字符串输出。在PHP中经常会用到这两个函数,因此有必要了解一下其原理。

[PHP源码阅读]strpos、strstr和stripos、stristr函数

2016-05-11
阅读 4 分钟
3k
我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。 strpos {代码...} 如果offset指定了,查找会从offset的位置开始。offset不能为负数。 返回needle第一次出现在haystack的位置。如果在haystack中找不到needle,则返回FALSE。 needle,如果nee...