Lua【通俗易懂】

news2024/9/22 3:40:48

目录

1.什么是lua❤️❤️❤️

2.特点 ❤️❤️❤️

3.安装 ❤️❤️❤️

4.Lua使用❤️❤️❤️

5.Lua的注释 ❤️❤️❤️

6.数据类型 ❤️❤️❤️

7.控制结构 


1.什么是lua❤️❤️❤️

Lua是一种轻量、小巧的脚本语言,用标准C语言编写并以源代码形式开发。设计的目的是为了嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能。

2.特点 ❤️❤️❤️

  • 简洁、易学、易用

  • 跨平台特性

  • 高效性

  • 可扩展性

  • 泛型编程能力强

  • 支持面向对象编程

  • 可嵌入性

3.安装 ❤️❤️❤️

下载地址:https://www.lua.org/download.html

上传到Linux ,并解压缩即可

 

4.Lua使用❤️❤️❤️

1.交互式 

交互式是指可以在命令行输入程序,然后回车就可以看到运行的效果。

  • 直接使用 lua 或者 lua -i 直接使用lua 

2.脚本式 

脚本式是将代码保存到一个以lua为扩展名的文件中并执行的方式。

 2.1方式一

  • 1.创建文件,并以.lua结尾
  • 2.在文件中输入内容
  • 3.使用 lua  文件名.lua 执行

2.2方式二 

  • 在文件中添加 用脚本执行的命令

  •  给文件添加执行权限
chmod +x 文件名
  • 执行文件

5.Lua的注释 ❤️❤️❤️

关于Lua的注释要分两种:

  • 单行注释
  • 多行注释

1.单行注释

- - 注释内容

2.多行注释

- -【【

    注释的内容

- -】】

注:若要取消多行注释 只需在前面加  - -

6.数据类型 ❤️❤️❤️

nil(空,无效值)

boolean(布尔,true/false) 只会将false和nil视为假,其他的都视为真

number(数值)

string(字符串)

function(函数)

table (表) eg  a={1,2,3} a[1]=1;下标从1开始

thread(线程)

userdata(用户数据)

7.控制结构 ❤️❤️❤️

1.if条件

if then elseif else

if语句先测试其条件,并根据条件是否满足执行相应的then部分或else部分。else部分是可选的。

2.while循环 

while 条件 do

        循环体

end

3.repeat循环 

repeat

    循环体

until 条件

4.for循环 

4.1数值for循环

for param=exp1,exp2,exp3 do

   循环体

end

注: exp1:开始的值

        exp2:结束的值

        exp3:步长

4.2泛型for循环 

for i,v in ipairs(×) do

  循环体

end

注: i:数组的索引值

        v:对应索引的数组元素值

 ipairs:迭代函数 ,x是要遍历的数组

     

  • ipairs 

  • pairs 

 

8.ngx_lua模块 ❤️❤️❤️

 ngx-lua模块通过将lua解释器集成进Nginx,可以采用lua脚本实现业务逻辑,由于lua的紧凑、快速以及内建协程,所以在保证高并发服务能力的同时极大地降低了业务逻辑实现成本。

8.1.OpenRestry

1.什么是openRestry

OpenResty是一个基于Nginx与Lua的高性能Web 平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。本身OpenResty内部就已经集成了Nginx和Lua,所以我们使用起来会更加方便

2.下载

下载地址:https://openresty.org/cn/download.html

  • 解压缩安装目录,并进入目录,将其安装到指定目录下
  • ./configure --prefix=/usr/local/openresty
  • 如果安装失败查看是否安装openssl,如若没有执行安装
yum -y install openssl openssl-devel
  • 进入安装好的目录,可以看到有nginx

  • 进入nginx.conf并进行配置 ,并编写语句
 location /lua {
            default_type 'text/html';
            content_by_lua 'ngx.say("<h1>hello xz</h1>")';        
}
  • 浏览器查看,说明安装成功 

8.2ngx_lua的使用 

  • set_by_lua的使用
 location /getByGender {
            default_type 'text/html';
            set_by_lua  $param "
              --获取请求url上的参数对应的值name gender
              local uri_args = ngx.req.get_uri_args()
              local name = uri_args['name']
              local gender = uri_args['gender']
              --条件判断if gender 1 先生 0 女士
              if gender == '1' then
                        return name..'先生'
              elseif gender == '0' then
                        return name..'女士'
              else
                        return name
              end
            ";
            charset utf-8;
            return 200 $param;
        }

8.3操作Redis 

  • lua-resty-redis

提供了访问Redis的详细API,包括创建对接、连接、操作、数据处理等。这些API基本上与Redis的操作--对应。

  • (1) redis = require "resty.redis" : 引入相关内容
  • (2) new 语法: redis,err = redis:new(),创建一个Redis对象。
  • (3) connect 语法:ok,err=redis:connect(host,port[,options_table]),设置连接Redis的连接信息。ok:连接成功返回 1,连接失败返回nil  err:返回对应的错误信息
  • (4) set_timeout 语法:redis:set_timeout(time),设置请求操作Redis的超时时间。
  • (5) close 语法: ok,err = redis:close(),关闭当前连接,成功返回1,失败返回nil和错误信息
  • (6) redis命令对应的方法在1ua-resty-redis中,所有的Redis命令都有自己的方法,方法名字和命令名字相同,只是全部为小写。
    location /redis {
            default_type "text/html";

            content_by_lua_block {
                -- 引入redis对应接口对象
                local redis = require "resty.redis"
                -- 创建一个redis对象
                local red = redis:new()
                -- 设置超时时间
                red:set_timeout(1000)
                -- 获取链接
                local ok,err = red:connect("192.168.20.130",6379)
                if not ok then
                        ngx.say("failed to connection redis",err)
                        return
                end
                -- 获取密码
                ok,err = red:auth("123456")
                if not ok then
                        ngx.say("failed to password",err)
                        return
                end
                -- 往redis中存数据
                ok,err = red:set("user","tom")
                if not ok then
                        ngx.say("failed to set user",err)
                        return
                end
                -- 从redis中取数据
                local res,err = red:get("user")
                ngx.say(res)
                -- 关闭redis连接
                red:close()
            }

        }

 

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

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

相关文章

Python基础08-文件操作详解

零、文章目录 Python基础08-文件操作详解 1、文件操作概述 &#xff08;1&#xff09;文件是什么 内存中存放的数据在计算机关机后就会消失。要长久保存数据&#xff0c;就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索&#xff0c;引入了**“文件”**的概念。 …

论文阅读——Semantic-SAM

Semantic-SAM可以做什么&#xff1a; 整合了七个数据集&#xff1a; 一般的分割数据集&#xff0c;目标级别分割数据集&#xff1a;MSCOCO, Objects365, ADE20k 部分分割数据集&#xff1a;PASCAL Part, PACO, PartImagenet, and SA-1B The datasets are SA-1B, COCO panopt…

云原生之深入解析亿级流量架构之服务限流思路与方法

一、限流思路 ① 熔断 系统在设计之初就把熔断措施考虑进去&#xff0c;当系统出现问题时&#xff0c;如果短时间内无法修复&#xff0c;系统要自动做出判断&#xff0c;开启熔断开关&#xff0c;拒绝流量访问&#xff0c;避免大流量对后端的过载请求。系统也应该能够动态监测…

工业性能CCD图像处理+

目录 硬件部分 ​编辑 软件部分 CCD新相机的调试处理&#xff08;更换相机处理&#xff0c;都要点执行检测来查看图像变化&#xff09; 问题:新相机拍摄出现黑屏&#xff0c;图像拍摄不清晰&#xff0c;&#xff08;可以点击图像&#xff0c;向下转动鼠标的滚轮&#xff08…

uniGUI学习之UniHTMLMemo1富文本编辑器

1]系统自带的富文本编辑器 2]jQueryBootstarp富文本编辑器插件summernote.js 1]系统自带的富文本编辑器 1、末尾增加<p> 2、增加字体 3、解决滚屏问题 4、输入长度限制问题 5、显示 并 编辑 HTML源代码(主要是图片处理) 1、末尾增加<p> UniHTMLMemo1.Lines…

Ubuntu 常用命令之 ls 命令用法介绍

Ubuntu ls 命令用法介绍 ls是Linux系统下的一个基本命令&#xff0c;用于列出目录中的文件和子目录。它有许多选项可以用来改变列出的内容和格式。 以下是一些基本的ls命令选项 -l&#xff1a;以长格式列出文件&#xff0c;包括文件类型、权限、链接数、所有者、组、大小、最…

【程序】STM32 读取光栅_编码器_光栅传感器_7针OLED

文章目录 源代码工程编码器基础程序参考资料 源代码工程 源代码工程打开获取&#xff1a; http://dt2.8tupian.net/2/28880a55b6666.pg3这里做了四倍细分&#xff0c;在屏幕上显示 速度、路程、方向。 接线方法&#xff1a; 单片机--------------串口模块 单片机的5V-------…

渗透实验基础教程(完整版):

#江南的江 #每日鸡汤&#xff1a;影响我们人生的绝不仅仅是环境&#xff0c;其实是心态在控制个人的行动和思想。同时&#xff0c;心态也决定了一个人的视野事业和成就&#xff0c;甚至一生。 #初心和目标&#xff1a;成为网络安全达人。。。 渗透实验基础教程&#xff08;完整…

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机)

STM32-HAL库11-SPI通讯&#xff08;F103C6T6做主机&#xff0c;F103C8T6做从机&#xff09; 一、所用材料 STM32F103C6T6最小系统板-主机 STM32F103C8T6最小系统板-从机 串口调试助手X-COM 二、所学内容 主要为实现SPI的轮询发送功能&#xff0c;在DSP280049C初学&#xff…

行政前台快递管理教程

行政前台快递管理&#xff0c;成了企业前台工作人员不可逃避的话题。看似简单的几个字&#xff0c;却难倒了不少人。身边有从事行政前台工作的朋友&#xff0c;应该或多或少都会听其抱怨过...... 为什么公司寄件管理这么难&#xff1f; 为什么员工不能按规定寄件&#xff1f;…

【算法刷题】每日打卡——动态规划(1)

背包问题 例题一 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数…

nlp与cv的发展

Transformer的出现,促进了更高容量模型的建立,为大模型的出现奠定基础. &#x1f9d0;大模型通常具有十亿个以上参数(仅供参考) &#x1f62e;左边的蓝色是CV领域、右下绿色是NLP、右上蓝色是多模态&#x1f603;基础模型(Foundational Models)首次由Bommasani等人在《Stanford…

Quartus 18.1软件及支持包安装教程

安装前最好关闭电脑的杀毒软件和防火墙 安装包可以到Quartus官网下载需要的版本&#xff0c;注意选择操作系统 Quartus官网&#xff1a;FPGA 设计软件 - 英特尔 Quartus Prime (intel.cn) 下载解压后以管理员的身份运行 QuartusSetup-18.1.0.625.exe文件&#xff0c;版本不同…

openGauss学习笔记-162 openGauss 数据库运维-备份与恢复-导入数据-通过INSERT语句直接写入数据

文章目录 openGauss学习笔记-162 openGauss 数据库运维-备份与恢复-导入数据-通过INSERT语句直接写入数据162.1 使用openGauss数据库提供的客户端工具向openGauss数据库写入数据162.2 通过JDBC/ODBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据162.2.1 函数原型162.…

【JavaWeb学习笔记】10 - 手写Tomcat底层,Maven的初步使用

一、Maven 1.Maven示意图 类似Java访问数据库 2.创建Maven案例演示 配置阿里镜像 找到setting目录 但一开始配置不存在该文件 需要去Maven主目录下的conf拿到settings拷贝到上述目录 拷贝到admin/.m2后打开该settings 在<mirrors>内输入镜像地址 <mirror> …

根文件系统(一):基础

本文主要探讨210根文件系统相关知识。 根文件系统 存储设备(flash等)是分块(扇区),访问存储设备是按块号 (扇区号)来访问,文件系统(软件)对存储设备扇区进行管理,将对扇区的访问变成对目录和文件名的访问 根文件系统init进程的应用程序和其他应用程序,提供根目…

【docker】部署minio对象存储并用rclone同步

docker部署minio对象存储并用rclone同步 本文首发于 ❄️慕雪的寒舍 1.什么是minio&#xff1f; minio是一个开源的对象存储服务器&#xff0c;兼容S3协议。 官网&#xff1a;https://min.io/ 官方在开源的基础上也提供云端S3服务&#xff0c;分为个人和企业&#xff0c;有不…

Linux的权限(二)

目录 前言 文件类型和访问权限&#xff08;事物属性&#xff09; 补充知识 文件类型 文件操作权限 修改文件权限 chmod指令 文件权限值的表示方法 字符表示方法 8进制数值表示方法 权限有无带来的影响 修改文件角色 chown与chgrp指令 目录的rwx权限 补充知识 …

TensorFlow神经网络中间层的可视化

TensorFlow神经网络中间层的可视化 TensorFlow神经网络中间层的可视化1. 训练网络并保存为.h5文件2. 通过.h5文件导入网络3. 可视化网络中间层结果&#xff08;1&#xff09;索引取层可视化&#xff08;2&#xff09;通过名字取层可视化 TensorFlow神经网络中间层的可视化 1. …

nodejs+vue+微信小程序+python+PHP技术下的音乐推送系统-计算机毕业设计推荐

3.2.1前台用户功能 前台注册用户的功能如下&#xff1a; 注册登录&#xff1a;用户填写个人信息&#xff0c;并验证手机号码进行账户注册&#xff0c;注册成功后方可登录系统。 歌手介绍&#xff1a;用户可以在线进行歌手介绍信息查看等。 音乐库&#xff1a;用户可以在音乐库查…