Lua入门教程:数值
Lua 5.2 以及之前的版本,所有数值类型都是以双精度浮点数表示,并且所有浮点型数值最大都是 2^54,但是 Lua 5.3 版本引入了整形,最大可用 64 位表示。
数值表示方式Lua 数值默认是十进制表示,除了整形之外,其他小数或者指数都会当做浮点型数值。我们可以使用函数 type 来获数值类型,他们都是使用 number 表示数值:
1234567> 1 > 1.0 --> 1.0> 1.2e5 --> 120000.0> 0.2e4 --> 2000.0> 0xff --> 255> type(1) --> number> type(1.0) --> number
在 Lua 5.3 中为了区分整形和浮点型数值,引入了 math.type 函数,如果是整形该函数返回 integer,浮点型则返回 float:
12> math.type(1) --> integer> math.type(1.0) --> ...
Lua 语言初识
Lua 是一个小巧的脚本语言 Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。[2] Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。[2] 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
lua 官方网站:http://www.lua.org/ 点击download 即可下载
2.安装与配置Lua 解压 lua; cd 到 lua的解压目录, 输入make 命令 1make macosx
进行编译 编译后我们可以看到 src 目录里已经生成了 lua.exe 和 luac.exe 两个执行程序 lua.exe 用于运行脚本 luac.exe 用于编译脚本
如果需要安装lua 命令到终端则可以 cd 到lua 解压目录 1sudo make install
3、编写第一个lua 程序 创建lua 文件 ...
Lua 元表和元方法
table 作为 Lua 中唯一的数据结构,我们可以利用 table 实现面向对象编程中的类、继承、多重继承等等。在这就介绍一下和 table 密切相关的 Lua 元表和元方法。
Lua 中的每个值都有一个元表。table 和 userdata 可以有各自独立的元表,而其他类型的值则共享其类型所属的单一元表。任何 table 都可以作为任何值的元表,而一组相关的 table 也可以共享一个通用的元表。一个 table 甚至可以作为它自己的元表。
通过 getmetatable 方法可以获取一个值的元表,而 setmetatable 方法则可以设置一个值的元表。
123456789t = {}print(getmetatable(t)) t1 = {}setmetatable(t, t1)assert(getmetatable(t) == t1)t2 = {}setmetatable(t2, t2)assert(getmetatable(t2) == t2)
在 Lua 代码中,只能设置 table 的元表。若要设置其他类型的值的元表,则必须通过 C 代码来完成。从下面的代码也可以看出 ...
Nginx Lua Redis防CC攻击
web安全
原理Nginx Lua Redis防止CC攻击实现原理:
同一个外网IP、同一个网址(ngx.var.request_uri)、同一个客户端(http_user_agent)在某一段时间(CCseconds)内访问某个网址(ngx.var.request_uri)超过指定次数(CCcount),则禁止这个外网IP+同一个客户端(md5(IP+ngx.var.http_user_agent)访问这个网址(ngx.var.request_uri)一段时间(blackseconds)。
该脚本使用lua编写(依赖nginx+lua),将信息写到redis(依赖redis.lua)。
Nginx lua模块安装重新编译nginx,安装lua模块,或者直接使用《OneinStack》安装OpenResty自带改模块
1234567891011121314151617181920pushd /root/oneinstack/srcwget -c http://nginx.org/download/nginx-1.12.1.tar.gzwget -c http://mirrors.l ...
Lua语言学习
Lua
网上教程Lua简明教程
极客学院Openresty教程
Windows安装
使用 tasklist /fi "imagename eq nginx.exe" 命令查看 nginx 进程,其中一个是 master 进程,另一个是 worker 进程
cmd进入nginx的安装目录,输入start nginx.exe来启动nginx
cmd进入nginx的安装目录,输入nginx -s reload来重启nginx
LuaJIT部分语法环境搭建1234567wget http://luajit.org/download/LuaJIT-2.1.0-beta1.tar.gztar -xvf LuaJIT-2.1.0-beta1.tar.gzcd LuaJIT-2.1.0-beta1makesudo make installluajit -v
基础数据类型nil
无效值
boolean
false和nil为假,其余包括0全部为真。
number
实数类型,可以用math.floor向下取整和math.cell向上取整。
string
'abc'," ...
1.1 lua 简介
简介Lua(发音: /ˈluːə/)程序设计语言是一个简洁、轻量、可扩展的脚本语言,Lua在葡萄牙语中的意思是月亮。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。
Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C 语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网路通讯、图形界面等都没有默认提供。但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。
目标
Lua的目标是成为一个很容易嵌入其它语言中使用的语言。大多数程序员也认为它的确做到了这一点。
很多应用程序使用Lua作为自己的嵌入式脚 ...
Lua编程
1. 将字符串分割成一个一个单元,存在表中
代码如下:
local s = "sofgs啊等级高5584撒旦法规"
local tb = {}
for utfChar in string.gmatch(s, "[%z1-127194-244][128-191]*") do
table.insert(tb, utfChar)
end
– 如果要提取出字符串中的数字
local s1 = ""
local s2 = ""
for k,v in pairs(tb) do
local n = tonumber(v)
if n then
s1 = s1…v
else
s2 = s2…v
end
end
2. 删除table中重复的值
代码如下:
function unique(t, bArray)
local check = {}
local n = { ...
Lua协程
Lua的协程
Lua的协程
定义
两个子过程通过相互协作完成某个任务,用它可以实现协作式多任务,
协程(coroutine)技术本质上是一种程序控制机制
分类
对称协程(asymmetric)
当前协程将控制权让给另外一个协程,协程之间的优先级是平等的
非对称协程(symmetric)
当前协程将控制权让给当前调用者
lua采用此类协程
范例
local co = coroutine.create(
function( first_param )
local result = "ok"
print( "first_param = ", first_param )
local second_param = coroutine. ...
NGX_LUA
NGX_LUA | 0neday's Notes
<meta name="keywords" content="Nginx,"/>
<meta name=“description” content="
Nginx 是一个高性能,支持高并发的,轻量级的 Web Sever。 Nginx 采用模块化的架构, 可以通过开发 Nginx 的扩展模块 , 将 Nginx 打造成一个全能的 Web Sever, 即将一些功能在前端 Nginx 反向代理层解决,比如登录校验、js 合并等。
Nginx 进程模型"/>
<meta property=“og:description” content="
Nginx 是一个高性能,支持高并发的,轻量级的 Web Sever。 Nginx 采用模块化的架构, 可以通过开发 Nginx 的扩展模块 , 将 Nginx 打造成一个全能的 Web Sever, 即将一些功能在前端 Ng ...
Lua参考手册上半部分
Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。 它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)作为一个扩展式语言,Lua 没有 “main” 程序的概念:它只能 嵌入 一个宿主程序中工作,这个宿主程序被称作 embedding program 或简称为 host 。 宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua 代码调用。 这些扩展的 C 函数,可以大大的扩展了 Lua 可以处理事务的领域,这样就可以订制出各种语言, 而它们共享一个统一的句法格式的框架。 Lua 的官方发布版就包含了一个叫做 lua 的简单的宿主程序,它用 Lua 库提供了一个保证独立的 Lua 解释器。Lua 是一个自由软件,它的使用许可决定了对它的使用过程一般没有任何保证。 这份手册中描述的东西的实现,可 ...