[深入理解Redis]读取RDB文件

2018-09-03
阅读 4 分钟
6.8k
最近在做一个解析rdb文件的功能,途中遇到了一些问题,也解决了一些问题。具体为什么要做这件事情之后再详谈,本次主要想聊聊遇到的开始处理文件时遇到的第一个难题:理解RDB文件的协议、如何读取二进制文件。

[Redis源码阅读]当你输入get/set命令的时候,Redis做了什么

2018-06-11
阅读 12 分钟
4.4k
上一篇文章介绍了redis-server的启动过程,服务端启动之后,就启动事件循环机制监听新事件的到来,此时不同的客户端就可以通过发送指令的方式请求server并得到处理结果的回复。在开发过程中,用到最多的就是get和set命令,那么,当我们输入get/set命令时,redis做了什么呢?

[Redis源码阅读]当你启动Redis的时候,Redis做了什么

2018-05-26
阅读 2 分钟
2.1k
假设Redis安装在了/usr/local/目录下,那么启动Redis是通过执行/usr/local/bin/redis-server -c xxx.conf的方式执行。redis-server是一个通过编译server.c文件生成的程序,因此想了解redis是怎么启动的,应该从server.c/main函数入手。

[Redis源码阅读]redis持久化

2018-04-04
阅读 5 分钟
2.5k
由于Redis是一种内存型数据库,即服务器在运行时,系统为其分配了一部分内存存储数据,一旦服务器挂了,或者突然宕机了,那么数据库里面的数据将会丢失,为了使服务器即使突然关机也能保存数据,必须通过持久化的方式将数据从内存保存到磁盘中。

【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
但在程序里需要的是完整的数字作为查找数据的参数,所以需要用的是完整的数字,当时以为只是因为数据被转换成科学计数法了,于是想到的解决方案是强制让它不使用科学计数法表示:

MySQL主从复制原理探索

2017-07-13
阅读 3 分钟
8.2k
上一篇文章里面,讲到了遇到mysql主从延迟的坑,对于这次的坑多说两句,以前也看过这样的例子,也知道不能够写完之后马上更新,但是真正开发的时候还是没有注意到这一点,道理大家都懂,但是还是会犯错,只有等到自己亲身体验到该错误之后,才真正的掌握到该道理。

【踩坑记录】记一次MySQL主从复制延迟的坑

2017-07-11
阅读 2 分钟
5k
一个活动信息需要审批,审批之后才能生效。因为之后活动要编辑,编辑后也可能触发审批,审批中展示的是编辑前的活动内容,考虑到字段比较多,也要保存审批活动的内容,因此设计采用了一张临时表,审批中的活动写进审批表(activity_tmp),审批通过之后才把真正的活动内容写进活动表(activity)。表的简要设计如下,这里将...

【源码分析】cJSON库学习

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

[深入学习Redis]RedisAPI的原子性分析

2017-04-05
阅读 2 分钟
6.2k
在学习Redis的常用操作时,经常看到介绍说,Redis的set、get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的?

[计算机网络]httpserver--如何解析HTTP请求报文

2016-11-07
阅读 5 分钟
4.7k
在上一篇文章中,讲述了如何编写一个最简单的server,但该程序只是接受到请求之后马上返回响应,实在不能更简单。在正常的开发中,应该根据不同的请求做出不同的响应。要做到上述的功能,首先要解析客户端发来的请求报文。

[计算机网络]简易http server程序

2016-11-02
阅读 6 分钟
2.2k
HTTP服务器,就是一个运行在主机上的程序。程序启动了之后,会一直在等待其他所有客户端的请求,接收到请求之后,处理请求,然后发送响应给客户端。客户端和服务器之间使用HTTP协议进行通信,所有遵循HTTP协议的程序都可以作为客户端。

[代码大全读书笔记]如何定义一个好的变量名

2016-07-25
阅读 8 分钟
3.4k
在日常编程中最烦恼的就是给变量取名,一段好代码,既要能完美地运行,还要能较容易地维护。这就意味着需要让日后维护代码的人能很快地看懂你的代码,而且,在团队合作中,其他开发者也会经常阅读你那部分代码。如果你的代码中充满了a,b,c,a1,a2,a3...那简直就是一个噩梦。因此,好的变量名非常重要。

[PHP内核探索]PHP中的哈希表

2016-07-05
阅读 7 分钟
2.9k
在PHP内核中,其中一个很重要的数据结构就是HashTable。我们常用的数组,在内核中就是用HashTable来实现。那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据结构,但是算法书籍里面没有具体的实现算法,刚好最近也在阅读PHP的源码,于是参考PHP的HashTable的实现,自己实现了一个简易版的HashTable,总结了...

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

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

红黑树探索笔记

2016-06-27
阅读 9 分钟
6.1k
最近花了些时间重拾数据结构的基础知识,先尝试了红黑树,花了大半个月的时间研究其原理和实现,下面是学习到的知识和一些笔记的分享。望各位多多指教。本次代码的实现请点击:红黑树实现代码

[PHP源码阅读]count函数

2016-06-01
阅读 3 分钟
1.9k
在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现。

[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 分钟
4k
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...

【搜索引擎】搜索引擎索引数据结构和算法

2016-05-09
阅读 11 分钟
4.2k
最近一直在研究sphinx的工作机制,在[搜索引擎]Sphinx的介绍和原理探索简单地介绍了其工作原理之后,还有很多问题没有弄懂,比如底层的数据结构和算法,于是更进一步地从数据结构层面了解其工作原理。在网上搜了很多资料,发现没有很多介绍这方面的文章,后来找到了一本书,《这就是搜索引擎》,拜读了本书的第三章,...

井字游戏 - 做一款回忆童年的游戏

2016-04-27
阅读 4 分钟
4.4k
99% of information we read, we forget anyway. The best way to remember is to "DO".

[PDO绑定参数]使用PHP的PDO扩展进行批量更新操作

2016-04-25
阅读 2 分钟
4.6k
最近有一个批量更新数据库表中某几个字段的需求,在做这个需求的时候,使用了PDO做参数绑定,其中遇到了一个坑。 方案选择 笔者已知的做批量更新有以下几种方案: 1、逐条更新 这种是最简单的方案,但无疑也是效率最低的方案。 2、CASE WHEN 类似如下的语句 {代码...} PDO绑定参数 为了防止SQL注入,使用了PDO扩展绑定参...

[搜索引擎] Sphinx 的介绍和原理探索

2016-04-21
阅读 6 分钟
10.2k
What/Sphinx是什么 定义:Sphinx是一个全文检索引擎。 特性: 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI、SphinxQL或者SphinxSE搜索接口 易于通过分布式搜索进行扩展 高速的索引建立(在当代CPU上,峰值性能可达到10 ~ 15MB/秒) 高性能的搜索 (在1.2G文本,100万条文档上进行搜索,支持高达每秒150~250...

【读书笔记】代码整洁之道

2016-03-24
阅读 3 分钟
3.1k
原文地址:[链接] 第一章 整洁代码 赶上期限的唯一方法:始终尽可能保持代码整洁。 整洁的代码只做好一件事。 整本书的主旨,不要重复代码,只做一件事,表达力,小规模抽象。 要想干得快,要想快点做完,要想轻松写代码,先让代码易读吧。 让每次签入时,代码都比签出时干净。 第二章,有意义的命名 1、名副其实 如果名...