对Lua的理解

news/2025/3/29 11:43:01/

在redis和nginx中都潜入了Lua环境用于快速上手开发。但如何理解Lua以及Lua与宿主环境的交互是需要掌握的。

首先是Lua本身,打开5.1的lua版本开始编译后最后生成一个lua的可执行文件,这其实就是一个包含了Lua虚拟机的终端.。所以其实在不管redis也好nginx也好,也是在其中生产了一个Lua环境(虚拟机),然后将nginx里面/redis里面的一些函数暴漏出去,到达在Lua里面操作宿主环境的效果。

 其实lua.c很简单:核心就是调用创建一个lua虚拟机环境 lua_State,然后卡你是接受输入的字符将其解析后给虚拟机执行。 liblua.a是核心静态库。

     也就是说lua.c提供了一个最佳范例,让其他宿主服务如何将其加载进去。

在宿主中创建完Lua的State后,我们的目的是为了操作宿主里面的东西,所以需要将宿主里面的功能注入到State里面去以便Lua操作。

(别忘记初衷是为了理解redis/nginx如何和lua交互的,要从这里开始找切入口,然后再遇到问题后再展开,一股插进lua的源代码中肯定效率不高。最好的办法是从redis里面入手看redis是如何实现和Lua的交互的,这样才能有对Lua虚拟机的高效率地理解。)看redis是如何调用Lua的Capi的,调用了哪些


http://www.ppmy.cn/news/1048272.html

相关文章

【Redis从头学-6】Redis中的Hash数据类型实战场景之购物车

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

ForkJoinPool 你真的明白和用对了吗

ForkJoinPool 是一个功能强大的 Java 类,用于处理计算密集型任务,使用 ForkJoinPool 分解计算密集型任务,并并行执行它们,能够产生更好的性能。它的工作原理是将任务分解成更小的子任务,使用分而治之的策略进行操作&am…

安防监控/视频集中存储/云存储平台EasyCVR v3.3增加首页告警类型

安防监控/视频集中存储/云存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等…

正演的数值模拟(零基础,学习中)

摘要: 本贴从零开始学习正演的数值模拟方法. 1. 偏微分基础 1.1 导数 引例: 物体从一维坐标的原点开始移动, 在 t t t 时刻, 它在坐标轴的位置由函数 s ( t ) s(t) s(t) 确定, 则速度为位置变化量与时间的比值: v ( t ) d s ( t ) d t lim ⁡ Δ t → 0 s ( t Δ t ) …

APK 加固之后二次签名的问题

JKS 转为 KeyStore keytool -importkeystore -srckeystore targe.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore target.p12 keytool -v -importkeystore -srckeystore targe.p12 -srcstoretype PKCS12 -destkeystore targe.keystore -deststoretype JKS // 加固…

C# OpenCvSharp DNN 二维码增强 超分辨率

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Dnn; using OpenCvSh…

《合成孔径雷达成像算法与实现》Figure3.12

clc clear close all% 参数设置 TBP 724; % 时间带宽积 T 42e-6; % 脉冲持续时间 t_0 1e-6; % 脉冲回波时延 Nfft 2^11; % fft长度% 参数计算 B TBP/…

代码随想录训练营day42| 416. 分割等和子集

TOC 前言 代码随想录算法训练营day42 一、Leetcode 416. 分割等和子集 1.题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出&#…