riak_sysmon使用和源码分析

riak_sysmon 是利用 BIF 函数 system_monitor 来监控 Erlang vm 产生的消息状态的项目。下面结合使用来分析一下其源码。 Read the rest of this entry »

ERLANG OTP源码分析 – code_server

继续上一次的 sys 模块升级的话题,我们再讨论一下升级基本原理,了解一下 code 和 code_server 模块。

Read the rest of this entry »

ERLANG OTP源码分析 – sys

sys 模块主要有两大用途:统计跟踪目标 gen 进程、代码热升级,尤其后者非常重要,下面从 erlang 源码层面来讲述这两大工作原理。

Read the rest of this entry »

MySQL协议分析

MySQL协议分析,主要参考MySQL Forge上的wiki和源码.协议的全图见这里, 给同事分享的ppt见这里,下载见这里

Read the rest of this entry »

ERLANG OTP源码分析 – supervisor

supervisor实际上是基于gen_server的系统进程,监控子进程的退出状态并设置一定的重启机制。 Read the rest of this entry »

ERLANG OTP源码分析 – gen_fsm

gen_fsm和gen_server非常的类似, 在gen进程递归调用loop函数的过程中,除有StateData还额外有一个StateName的atom, 它决定了下次执行的函数. 另外一个不同之处是, gen_server程序是由调用进程向gen进程发送消息, 一种cs模式的调用关系,而gen_fsm程序中这个发送消息的通常都是gen进程本身.  Read the rest of this entry »

ERLANG OTP源码分析 – gen_server

阅读OTP源码可以帮助你写出更好、更健壮的erlang程序.下面一系列文章就gen_server、gen_fsm、supervisor的源码进行分析, 从erlang级别解释其工作原理, 所有的完整流程图在这里, 第一次写erlang方面博文有错误请帮忙指出. Read the rest of this entry »

lua metatable使用和源码分析(三)

基本类型如何使用元表

在lua里只能为表设置元表,而在c程序里面可以为基本类型进行元表操作,但上篇博文提到了普通类型的很多操作是不会走到元表,下面的例子针对数字类型,添加多种事件,只有部分事件会生效.下面的例子在c代码里对数字类型添加元表对__add,__len都设置事件.

Read the rest of this entry »

lua metatable使用和源码分析(二)

表是如何调度到元表的呢,上篇博文的例子我们看到当键值未能被查找到之后会调用__index事件对应的函数.现在举一个”__add”事件来遍历重要环节的源码.当然从luaV_execute开始.
Read the rest of this entry »

lua metatable使用和源码分析(一)

lua metatable(以下简称元表)类似c++的operator overloads,可以对复合结构进行操作,在lua里最常见的就是对表的操作.举例来说,当两个表作加法操作的时候,Lua会检查表的元表中是否有”__add”事件是否对应一个函数(metamethod)。如果存在Lua会调用这个函数来执行一次表的加法操作. Read the rest of this entry »