【nginx】十六、nginx高阶之lua详情

作者 : 开心源码 本文共2251个字,预计阅读时间需要6分钟 发布时间: 2022-05-11 共69人阅读

之前详情了openresty,在深入详情openresty之前,我们先要理解一下lua脚本,理解lua后,再继续深入详情openresty的定制开发,由于开发使用的语言就是lua脚本,所以我们先详情一下lua。

lua详情

1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的月亮。事实证实她没有糟蹋这个柔美的单词,Lua 语言正如它名字所预示的那样成长为一门简洁、优雅且富有乐趣的语言。

Lua作为目前最为流行的、免费轻量级嵌入式脚本语言,在很多工业级的应使用程序中被广泛应使用,如Adobe's Photoshop,甚至是在少量著名的游戏程序中也被大量用,如星际。不仅如此,因为Lua具有很多特殊的优点,如语法简单(基于过程)、高效稳固(基于字节码)、能解决复杂的数据结构、动态类型、以及自动内存管理(基于垃圾收集)等,因而在很多嵌入式设施和智可以移动设施中,为了提高程序的灵活性、扩展性和高可配置性,一般都会选择Lua作为它们的脚本引擎,以应对各种因设施不同而带来的差异。

Lua 和 LuaJIT 的区别

Lua 非常高效,它运行得比许多其它脚本(如 Perl、Python、Ruby)都快,这点在第三方的独立测评中得到了证明。虽然如此,依然会有人不满足,他们总觉得“嗯,还不够快!”。LuaJIT 就是一个为了再榨出少量速度的尝试,它利使用即时编译(Just-in Time)技术把 Lua 代码编译成本地机器码后交由 CPU 直接执行。LuaJIT 2 的测评报告表明,在数值运算、循环与函数调使用、协程切换、字符串操作等许多方面它的加速效果都很明显。凭借着 FFI 特性,LuaJIT 2 在那些需要频繁地调使用外部 C/C++ 代码的场景,也要比标准 Lua 解释器快很多。目前 LuaJIT 2 已经支持包括 i386、x86_64、ARM、PowerPC 以及 MIPS 等多种不同的体系结构。

LuaJIT 是采使用 C 和汇编语言编写的 Lua 解释器与即时编译器。LuaJIT 被设计成全兼容标准的 Lua 5.1 语言,同时可选地支持 Lua 5.2 和 Lua 5.3 中的少量不破坏向后兼容性的有使用特性。因而,标准 Lua 语言的代码能不加修改地运行在 LuaJIT 之上。LuaJIT 和标准 Lua 解释器的一大区别是,LuaJIT 的执行速度,即便是其汇编编写的 Lua 解释器,也要比标准 Lua 5.1 解释器快很多,能说是一个高效的 Lua 实现。另一个区别是,LuaJIT 支持比标准 Lua 5.1 语言更多的基本原语和特性,因而功可以上也要更增强大。

Lua应使用场景

1. 在很多时候,我们能将Lua直接嵌入到我们的应使用程序中,如游戏、监控服务器等。这样的应使用方式对于程序的最终使用户而言是完全透明的,但是对于程序本身,其扩展性将会得到极大的加强。

2. 将Lua视为一种独立的脚本语言,通过它来帮助我们完成少量软件产品的辅助性工具的开发。比方在我们之前的数据分析产品中,我们通过编写Lua脚本,将每个使用户不同格式的数据重新格式化为我们的软件平台可以够读取的格式,之后再将格式化的后的数据加载到数据库中,或者者是写入我们的分析引擎能识别的数据分析文件中。这其中Lua仅仅使用于文件格式的规格化过程,至于此后的操作,都是通过Lua调使用我们的C语言导出函数来完成的。

3. 将Lua应使用于应使用程序的动态配置部分。比方移动智可以设施或者嵌入式设施,它们的显示分辨率在很多情况下都是非标准的,假如我们为每一款设施都维护一套相关的配置信息,这无疑会加大我们程序的维护开销,假如我们将这段动态配置逻辑交由Lua脚本完成,那么这对于程序配置的灵活性而言,将会得到很大的提高。甚至能是这样,运行在移动终端设施上的应使用程序,在启动主窗体之前先和服务器建立连接,在服务器确认设施的各种参数后,再将和该设施显示相关的Lua脚本发送给设施用户端,这样用户端在得到Lua脚本之后,即可以立刻执行它以得到最新的动态配置信息。

Lua主要优势

1. 高效性:

作为一种脚本语言,Lua的高效是众所周知的,因而在实际应使用中,很多大型程序都会考虑将代码中易变的部分使用Lua来编写。这不但没有显著降低系统的运行效率,反而使程序的稳固性和可扩展性得到了明显的提升。

2. 可移植性:

在官方网站中提供了基于多种平台的发布包,如Linux/Unix、Windows、Symbian和Pocket PC等。

3. 可嵌入性:

在语言设计之初,Lua就被精确的定位为嵌入式脚本语言,因而Lua的设计者们为Lua提供了与其余编程语言之间的良好交互体验,这特别表现在和C/C++之间的交互上。对于其余语言,如Java和C#,也能将Lua作为其嵌入式脚本引擎,并在代码中进行直接的交互。

4. 简单强大:

虽然是过程化脚本语言,但因为Lua的设计者们为Lua提供了meta-mechanisms机制,这不仅使Lua具有了少量基本的面向对象特征,如对象和继承,而且依然保持了过程化语言所具备的语法简单的特征。

5. 小巧轻便:

在最新版本(5.2.0)的Lua中,仅仅包含了大约20000行的C语言代码,编译后的库文件大小约为240K左右,因而这对于很多资源有限的平台有着极强的吸引力。

6. 免费开源:

MIT Licence能让Lua被免费的使用于各种商业程序中。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【nginx】十六、nginx高阶之lua详情

发表回复