erlang虚拟机代码执行原理

原文 2015-06-03 20:02:28 发表于 CSDN,这里对以前写的文章做下收录。

erlang是开源的,很多人都研究过源代码。但是,从erlang代码到c代码,这是个不小的跨度,而且代码也比较复杂。所以这里,我利用一些时间,整理下erlang代码的执行过程,从erlang代码编译过程,到代码执行过程做讲解,然后重点讲下虚拟机执行代码的原理。

erlang代码编译过程

erlang对开发者是友好的,从erlang程序文件编译成能被erlang虚拟机识别的beam文件,在这个编译过程还对开发者暴露中间代码。借助这个中间代码,我们就可以逐步探究erlang代码的执行过程。

继续阅读erlang虚拟机代码执行原理

erlang send剖析及参数意义

原文 2015-01-24 01:07:54 发表于 CSDN,这里对以前写的文章做下收录。

erlang send是一个很基础的消息发送函数,用于进程把一个消息发给另外一个进程。这个函数可以同时用于本地节点进程通信,或者和远程节点进程之间的通信。

最近有同事遇到erlang:send导致消息堆积问题,这个引起了我的强烈关注。我也看了这块的代码,这里简单做个分享。

继续阅读erlang send剖析及参数意义

lua 异步HTTPS并发请求库

原文 2017-03-21 19:19:54 发表于 CSDN,这里对以前写的文章做下收录。

项目使用skynet框架,这个框架主要用lua写逻辑,但缺乏对HTTPS支持,所以我利用一点时间写了lua模块,支持异步HTTPS请求,文章这里讲述HTTPS相关知识,如何接入openssl请求HTTPS数据,同时也分享了lua模块给大家参考。(注:新版本已支持)

继续阅读lua 异步HTTPS并发请求库

lua匹配UTF-8中文汉字

lua5.3虽然支持utf-8,但是自带的string库不支持汉字的处理,而且lua的正则实现也比较鸡肋,很难匹配中文。所以文章讨论UTF-8字符集,中文汉字的表示方法,然后说明lua如何匹配UTF-8中文汉字。

初识UTF-8

UTF-8是Unicode的一种实现,是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。

继续阅读lua匹配UTF-8中文汉字

skynet 热更新 lua 代码

原文 2016-12-30 16:18:15 发表于 CSDN,这里对以前写的文章做下收录。

skynet开发太多数情况下只是写lua代码,很少用写c,这一定程度上提高了项目的开发效率。lua虽然没有C高效,但开发复杂业务却是非常便捷,而且lua支持热更。skynet有两种方法热更新lua代码,clearcache和inject,文章分别对这两种方法做说明。

继续阅读skynet 热更新 lua 代码

lua 代码静态分析

原文 2016-09-19 21:50:48 发表于 CSDN,这里对以前写的文章做下收录。

随着 lua 可移植性、热更特性被挖掘,越来越多项目使用 lua 做开发,但 lua 代码通常需要等代码跑起来且执行到才知道是否有错误,这对开发来说,不是很友好,文章讲解下 lua代码如何静态分析

lua项目代码静态分析的方法有两个:
1、使用lua编译器(luac)进行分析
2、使用luacheck插件进行分析
继续阅读lua 代码静态分析