Lua杂谈
utmhikari
talk is cheap code is rich
展开
-
【Lua杂谈】服务端架构skynet简易入门项目——create-skynet
前言在skynet通信原理与源码分析一文中,我们已经详尽地弄清楚了skynet地通信架构,为我们上手skynet提供了极大的帮助。因此本篇文章接续上文,正式上手使用skynet。skynet入门项目:create-skynet要做一个基于skynet的项目,首先需要一个好的模板。skynet的最佳实践并非将服务卸载skynet模块中,而是将skynet当作一个单独的库/SDK看待,自己独立在...原创 2019-10-26 01:25:24 · 511 阅读 · 0 评论 -
【Lua杂谈】基于lua的服务端架构——skynet通信原理与源码分析
前言提起中国的lua产品,就不得不想到skynet,一款针对游戏,但又不仅限于游戏的服务端架构。skynet充分利用了lua的特性,并且在此基础上易扩展HTTP、HTTPS、WebSocket等模块,因此由skynet入手理解lua原理以及服务端架构是一个非常不错的选择。通过skynet,我们可以构建许多小巧而高性能、高可用的应用。废话不多说,让我们一起来探索skynet架构吧~skynet...原创 2019-10-20 03:33:56 · 929 阅读 · 0 评论 -
【Lua杂谈】解锁lua代码覆盖率测试:luacov源码分析
简介说到lua的覆盖率测试,我们一般都会想到用luacov做覆盖率测试原生的luacov提供了一套简洁的覆盖率测试实现以及报告输出形式,但是在实际许多的场景中,原生luacov的使用并不方便本文旨在通过分析luacov的实现,帮助希望了解lua覆盖率测试或是使用、二次开发luacov的同学尽快上手获取覆盖率数据luacov获取代码覆盖率信息,得益于lua自带的debug库。我们从luac...原创 2019-03-10 23:23:06 · 1497 阅读 · 1 评论 -
【Lua杂谈】Lua性能测试:函数执行时间统计
前言在白盒性能测试(profiling)中,函数时间统计是一项重要的指标。对于整个以lua为基础的系统架构而言,函数时间统计数据是性能优化的直接参照。因此,本次Lua杂谈,将会分享一种函数执行时间统计的实现~函数执行时间获取单个函数执行时间的获取相对较为简单,例子如下:local function test() local start = os.clock() ... local ...原创 2019-03-25 21:15:04 · 6585 阅读 · 1 评论 -
【Lua杂谈】debug.getinfo源码分析——使用C API重写lfunctimer
前言昨天更新了一下lfunctimer,主要把hook更改为c api的形式,并且初步加了util和config的扩展想要试用的同学的话可以点击上面clone下来,或者安装luarocks后执行下面命令安装~luarocks install --server=http://luarocks.org/manifests/utmhikari lfunctimer言归正传,利用lua原生的c a...原创 2019-04-07 15:47:30 · 1231 阅读 · 0 评论 -
【Lua杂谈】探索C API,开坑lnodelist
前言最近一直在探索Lua的C API编程部分,上次实现了一个函数执行时间统计库:lfunctimer,这次就果断写了一个lnodelist来玩玩。在这期间,遇到了许多纠结的问题,因此果断做下分享~测试用例现在贼少= =想要试用的同学可以走lnodelist的Github传送门,或者luarocks install lnodelist,就可以开始干起~在Lua里,table充当着array以及...原创 2019-04-20 20:47:23 · 166 阅读 · 0 评论 -
【Lua杂谈】犹豫就会败北——元表metatable解析
前言在lua的学习过程当中,元表metatable的概念及用法是常见的障碍之一元表,在其它lua杂谈等都提到过,是一种描述lua数据的属性以及行为的表。虽然官方给了set、account等例子详细讲解了metatable,但总还是缺乏些提炼。为了干翻这个痛点,这次,果断强上metatable的精髓。毕竟,犹豫就会败北~元表有什么?我们首先就会有疑问:通过哪些属性指标,可以描述lua的数据呢...原创 2019-06-12 23:10:22 · 238 阅读 · 0 评论 -
【Lua杂谈】一文上手coroutine协程
前言提到lua,就不得不提协程coroutine。coroutine是lua的一种内在机制,为lua提供了原生的异步支持。从用户层面来看,用户不需关心coroutine的内在实现,而只需要用coroutine调度function即可,因此非常方便。对于一个function而言,coroutine可以将function的代码分片,使得一个function可以分阶段运行。在实现上,function...原创 2019-08-25 16:52:39 · 411 阅读 · 0 评论 -
【Lua杂谈】lua专用rpc协议sproto——基础介绍&用于协议测试的二次开发
前言rpc(远程过程调用),是不同主机间的交互的机制之一。好比说,我们想要获取服务器的某个资源,我们就可以发送一条讯息给服务器,然后服务器解析信息,再返回推送资源的信息,这样,便实现了我们客户端跟服务器的相互的“远程调用”。为了让不同主机之间能够相互理解发送的讯息,我们需要约定统一的信息格式标准,使得不同的主机可以发送基于这个信息格式的讯息,也可以解析这个格式。这种标准,我们称之为协议(pro...原创 2019-09-12 17:03:34 · 3504 阅读 · 0 评论