一、Lua基础

文章目录

  • 一、Lua是什么
  • 二、Lua特性
    • (一)轻量级
    • (二)可扩展
    • (三)其它特性
  • 三、Lua安装
  • 四、Lua应用

看到评论说,C++让我见识了语言的严谨与缜密,lua让我见识到了语言的精巧与创新,希望我也可以学习到。
2023.11.26

一、Lua是什么

Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。
Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。 [2] Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的Lua解释器不过200k,在所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择!

在这里插入图片描述

二、Lua特性

lua特性:
轻量级,可扩展,支持面向过程(procedure-oriented)编程和函数式编程(functional programming);

(一)轻量级

Lua语言的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快,从而适合嵌入在别的程序里。5.0.2版的Lua的内核小于120KB,而Python的内核大约860KB,Perl的内核大约1.1MB。

(二)可扩展

Lua并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。

(三)其它特性

Lua还具有其它一些特性:同时支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;
闭包(closure);函数也可以看做一个值;提供多线程(协同进程 ,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

三、Lua安装

Github 下载地址:https://github.com/rjpcomputing
直接在官网也可以, tar -zxvf lua-5.4.6.tar.gz -C lua
安装后在linux环境下,make linux

四、Lua应用

  • 游戏开发-用来做热更
  • 独立软件 Photoshop
  • WEB 开发
  • WEB 服务器中间件 nginx 支持扩展,1ua 写个扩展
  • 数据库操作脚本
  • 缓存操作脚本 redis
  • 秒杀,用lua 把一个非原子操作变成一个原子操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:通过VMWare,定制化Linux系统

一、原理图 二、新增磁盘(对应上图sdb盘) 三、挂载磁盘 主要是四步:查看磁盘,分区磁盘,格式化磁盘,挂载磁盘 1、查看磁盘 2、分区磁盘 3、格式化磁盘 4、挂载磁盘 创建两个备用目录,用于磁盘…

【Kotlin】引入与基础语法

文章目录 Kotlin的特性Kotlin优势Kotlin的安卓项目变量变量保存了指向对象的引用优先使用val来避免副作用 后端变量Backing Fields延迟初始化 Kotlin的特性 它更加易表现:这是它最重要的优点之一。你可以编写少得多的代码。Kotlin是一种兼容Java的语言Kotlin比Java…

1、windows10系统下Qt5.12.0与卸载

一、安装包下载 1、Qt社区下载 https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe 2、百度网盘下载 链接:百度网盘 请输入提取码 3、Qt官网下载: Try Qt | 开发应用程序和嵌入式系统 | Qt 二、安装提示 下…

nodejs+vue+elementui网上家电家用电器数码商城购物网站 多商家

基于vue.js的恒捷网上家电商城系统根据实际情况分为前后台两部分,前台部分主要是让用户购物使用的,包括用户的注册登录,查看公告,查看和搜索商品信息,根据分类定位不同类型的商品,将喜欢的商品加入购物车&a…

【html+css】表单元素

目录 表单元素 展示图 简约写法&#xff1a; 完美写法 表单元素 输入框 单选框 复选框 下拉框 按钮 展示图 简约写法&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><t…

华大基因在合规管理、高质量发展方面将迈上新的台阶

今年6月&#xff0c;华大基因顺利通过了国际领先标准、测试及认证机构BSI的严格审核&#xff0c;获得GB/T 35770-2022 / ISO 37301:2021合规管理体系认证证书&#xff0c;成为行业内率先获此国际认证的企业。 ISO 37301合规管理体系认证是国际通用的合规管理体系认证标准&…

Mysql之局域网内不同ip互登陆mysql

1 navicat修改mysql表中user> host改为% 2 重新加载mysql服务 3登陆mysql -h 192.168.x.xxx&#xff08;计算机ip&#xff09; -P 3306 -uroot -p123456&#xff08;密码&#xff09;

LaTeX参考文献bib格式常用参数详解

文章目录 引言1.期刊论文格式2.会议论文格式3.网址格式4.报告格式5.书籍 引言 当谈及LaTeX参考文献格式与参数时&#xff0c;深入了解bib文件的内容是至关重要的。bib文件是指定文献引用和格式的关键&#xff0c;其中的参数设置影响着文献列表的呈现方式。通过详细解析LaTeX中…

Spring Boot 3.2虚拟线程和CRAC详解

Spring Framework 6.1.0和Spring Boot 3.2.0已经相继发布&#xff0c;亮点是&#xff1a;从高性能应用程序的角度出发&#xff0c;推出了对两项非常重要的创新的支持&#xff1a;虚拟线程&#xff08;Virtual Threads&#xff09;和 CRAC 项目。 虚拟线程 Spring 支持虚拟线程…

每日一练2023.11.26——打印沙漏【PTA】

题目链接&#xff1a;L1-002 打印沙漏 题目要求&#xff1a; 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&am…

小程序如何进行版本回退

当商家决定回退小程序版本时&#xff0c;可能是因为新版本出现了一些问题或者不符合预期&#xff0c;需要恢复到之前的稳定版本。下面具体介绍怎么回退小程序的版本。 在小程序管理员后台->版本设置处&#xff0c;点击版本回退。确认后&#xff0c;小程序会回退到上一次的版…

邮箱发送短信的多种方式

第一种&#xff1a;邮箱验证方法&#xff1a; 导入依赖&#xff1a; <!-- mail依赖&#xff08;发送短信的依赖&#xff09; --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> &l…

面对Spring 不支持java8的改变方法

接下来&#xff0c;就只有17与21了&#xff0c;JDK开发人员每隔半年&#xff0c;发布一个新的版本&#xff0c;但是新版本也只是维护一段时间&#xff08;一年/半年&#xff09;业务越小&#xff0c;升级越简单 1.如何创建Spring Boot项目,阿里云上去下载代码&#xff0c;然后使…

Vue简单的表单操作

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

【点云surface】 凹包重构

1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析&#xff1a; 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…

编程题 :简单的洗牌算法的实现

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 目录 &#x1f324;️简单的洗牌算法…

【C++ Primer Plus学习记录】延时循环

有时候&#xff0c;让程序等待一段时间很有用。例如&#xff0c;可能遇到这样的程序&#xff0c;在屏幕上显示一条消息&#xff0c;而没来及阅读之前&#xff0c;又出现了其他内容。这样读者担心自己错过了重要的、无法恢复的消息。如果程序在显示其他内容之前等待5秒钟&#x…

Mybatis反射工厂类DefaultReflectorFactory

DefaultReflectorFactory是反射工厂接口ReflectorFactory的默认实现&#xff0c;其主要是实现了对反射对象Reflector的创建和缓存。 有三个方法&#xff1a; // 判断是否开启缓存boolean isClassCacheEnabled();// 设置是否缓存void setClassCacheEnabled(boolean classCacheEn…

java基础进阶-线程池

1、线程池 线程池就是一个可以复用线程的技术。 2、应用场景 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c;而创建新线程的开销是很大的&#xff0c;并且请求过多时&#xff0c;肯定会产生大…

单片机学习1——点亮一个LED灯

Keil软件编写程序&#xff1a; 特殊功能寄存器声明&#xff1a; #include<reg52.h>sbit LED P1^0;void main() {LED 0;while(1); } 代码说明&#xff1a; sbit 语句是特殊功能位声明。 生成HEX文件&#xff0c;这个文件是下载到单片机里的文件。Options for Target…