不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2019-03-31 09:15:07  修改时间:2024-04-30 07:29:49  分类:OpenResty_Lua  编辑

冒号操作会带入一个 self 参数,用来代表 自己。而点号操作,只是 内容 的展开。

作者:Albert.Wen  添加时间:2019-03-31 11:11:00  修改时间:2024-04-30 14:12:14  分类:OpenResty_Lua  编辑

使用选项 --with-Components 激活组件,--without 则是禁止组件。 你可以根据自己实际需要选择 with 或 without。如下命令,OpenResty 将配置安装在 /opt/openresty 目录下(注意使用 root 用户),并激活luajit、http_iconv_module 并禁止 http_redis2_module 组件。

 # ./configure --prefix=/opt/openresty\
             --with-luajit\
             --without-http_redis2_module \
             --with-http_iconv_module
作者:Albert.Wen  添加时间:2019-03-30 23:27:47  修改时间:2024-04-28 22:57:46  分类:OpenResty_Lua  编辑

在 Lua 中,函数 time、date 和 difftime 提供了所有的日期和时间功能。

在 OpenResty 的世界里,不推荐使用这里的标准时间函数,因为这些函数通常会引发不止一个昂贵的系统调用,同时无法为 LuaJIT JIT 编译,对性能造成较大影响。推荐使用 ngx_lua 模块提供的带缓存的时间接口,如 ngx.today, ngx.time, ngx.utctime, ngx.localtime, ngx.now, ngx.http_time,以及 ngx.cookie_time 等。

作者:Albert.Wen  添加时间:2019-04-10 23:33:27  修改时间:2024-05-08 12:18:54  分类:OpenResty_Lua  编辑

unpack()函数

可以使用table.unpack()函数,将数组形式的table拆开。

这个函数有三个参数,第一个参数就是要拆的table,第二个参数是起始元素的下标,默认为1,第三个参数是结束元素的下标,默认为table的长度。

例如:

local tbl = { 2, 4, 6, 8 }
local a, b, c, d = unpack(tbl)
作者:Albert.Wen  添加时间:2019-03-31 00:05:58  修改时间:2024-05-01 05:27:54  分类:OpenResty_Lua  编辑

在 Lua 5.1 语言中,元表 (metatable) 的表现行为类似于 C++ 语言中的操作符重载,例如我们可以重载 "__add" 元方法 (metamethod),来计算两个 Lua 数组的并集;或者重载 "__index" 方法,来定义我们自己的 Hash 函数。Lua 提供了两个十分重要的用来处理元表的方法,如下:

  • setmetatable(table, metatable):此方法用于为一个表设置元表。
  • getmetatable(table):此方法用于获取表的元表对象。
作者:Albert.Wen  添加时间:2019-03-31 00:43:18  修改时间:2024-04-29 18:14:01  分类:OpenResty_Lua  编辑

旧式的模块定义方式是通过 module("filename"[,package.seeall])* 来显式声明一个包,现在官方不推荐再使用这种方式。这种方式将会返回一个由 filename 模块函数组成的 table,并且还会定义一个包含该 table 的全局变量。

作者:Albert.Wen  添加时间:2019-03-31 16:10:47  修改时间:2024-04-30 04:23:06  分类:OpenResty_Lua  编辑

在 OpenResty 的体系中,可以通过共享内存的方式完成不同工作进程的数据共享,可以通过 Lua 模块方式完成单个进程内不同请求的数据共享。如何完成单个请求内不同阶段的数据共享呢?最典型的例子,估计就是在 log 阶段记录一些请求的特殊变量。

作者:Albert.Wen  添加时间:2019-03-30 20:23:33  修改时间:2024-05-07 09:14:21  分类:OpenResty_Lua  编辑

在 Linux、Mac OS X 上搭建环境

到 LuaJIT 官网 http://luajit.org/download.html,查看当前最新开发版本,例如笔者写书时的最新版本:http://luajit.org/download/LuaJIT-2.1.0-beta1.tar.gz

# wget http://luajit.org/download/LuaJIT-2.1.0-beta1.tar.gz
# tar -xvf LuaJIT-2.1.0-beta1.tar.gz
# cd LuaJIT-2.1.0-beta1
# make
# sudo make install
作者:Albert.Wen  添加时间:2019-03-31 00:22:38  修改时间:2024-05-02 06:45:11  分类:OpenResty_Lua  编辑

Lua 的设计有一点很奇怪,在一个 block 中的变量,如果之前没有定义过,那么认为它是一个全局变量,而不是这个 block 的局部变量。这一点和别的语言不同。容易造成不小心覆盖了全局同名变量的错误。