“Lua基础”的版本间的差异
跳到导航
跳到搜索
docker>Evan |
|||
(未显示同一用户的18个中间版本) | |||
第1行: | 第1行: | ||
+ | |||
+ | =book = | ||
+ | |||
+ | 有电子书 | ||
+ | |||
+ | [https://zhuanlan.zhihu.com/p/158817577 【Lua篇】《Lua程序设计》全书内容总结] | ||
+ | |||
+ | [https://item.jd.com/13807126.html?bbtf=1 Lua解释器构建:从虚拟机到编译器 ] | ||
+ | |||
+ | =install= | ||
<pre> | <pre> | ||
第4行: | 第14行: | ||
sudo apt install lua5.1 | sudo apt install lua5.1 | ||
</pre> | </pre> | ||
+ | |||
+ | on freebsd12 | ||
+ | |||
+ | =运行= | ||
+ | <pre>evan@bsd-latop:~ % lua52 | ||
+ | Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio | ||
+ | > print("hello,world") | ||
+ | hello,world | ||
+ | |||
+ | |||
+ | 把脚本存成一个文件 | ||
+ | |||
+ | evan@bsd-latop:~/test % cat hello.lua | ||
+ | #!/usr/local/bin/lua52 | ||
+ | print("Hello, World") | ||
+ | evan@bsd-latop:~/test % chmod +x hello.lua | ||
+ | evan@bsd-latop:~/test % ./hello.lua | ||
+ | Hello, World | ||
+ | </pre> | ||
+ | =控制语句= | ||
+ | <pre> | ||
+ | ./h.lua | ||
+ | sum = 5050 | ||
+ | |||
+ | evan@bsd-latop:~/test % cat h.lua | ||
+ | #!/usr/local/bin/lua52 | ||
+ | sum = 0 | ||
+ | num = 1 | ||
+ | while num <= 100 do | ||
+ | sum = sum + num | ||
+ | num = num + 1 | ||
+ | end | ||
+ | print("sum =",sum) | ||
+ | |||
+ | |||
+ | if-else分支 </pre> | ||
+ | |||
+ | =函数= | ||
+ | |||
+ | |||
+ | 函数前面加上local就是局部函数 | ||
+ | =Table= | ||
+ | |||
+ | |||
+ | Lua的下标不是从0开始的,是从1开始的 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =优点= | ||
+ | <pre> | ||
+ | 除了游戏外,也适用于app api。 | ||
+ | ngx+lua+redis 架构模式在高并发的情况下完胜 ngx+php-fpm+php。 | ||
+ | 再加上有ngx lua模块,ngx天然为Lua提供了web容器的接口,可以做更多容器的事情,例如: | ||
+ | 防刷,身份验证等等 </pre> | ||
+ | =进阶 lua源码学习= | ||
+ | |||
+ | [https://zhuanlan.zhihu.com/p/61888678 Lua设计与实现--虚拟机篇] | ||
+ | 阅读源代码的次序 | ||
+ | |||
+ | 首先、阅读外围的库是如何实现功能扩展的,然后、阅读 Lua 的具体实现。之后、可以开始了解 Lua VM 的实现。接下来就是分别理解函数调用、返回,string,metatable,table实现debug模块是一个额外的设施、最后是parse 等等编译相关的部分。垃圾收集将是最难的部分,可能会花掉最多的时间去理解细节 | ||
+ | |||
+ | https://github.com/lichuang/Lua-5.1.4-codedump/tree/master | ||
+ | |||
+ | [https://zhuanlan.zhihu.com/p/295069323 【Lua源码赏析】第一章 阅读源码准备] | ||
+ | |||
+ | |||
+ | |||
+ | [https://www.cnblogs.com/nazhizq/p/6516561.html lua源码学习篇二:语法分析] | ||
+ | |||
+ | |||
+ | [https://blog.csdn.net/initphp/article/details/82703846 Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)] | ||
+ | |||
+ | [https://blog.csdn.net/maijian/article/details/24355727 详解关于Lua源码分析学习教程] | ||
+ | |||
+ | [https://manistein.github.io/blog/post/program/build-a-lua-interpreter/%E6%9E%84%E5%BB%BAlua%E8%A7%A3%E9%87%8A%E5%99%A8part1/ 构建Lua解释器Part1:虚拟机的基础--Lua基本数据结构、栈和基于栈的C函数调用的设计与实现] | ||
+ | |||
+ | [https://www.zhihu.com/question/20617406 如何学习 Lua VM 的源码] | ||
+ | |||
+ | [https://blog.csdn.net/ayang1986/article/details/8544910 lua源码学习笔记<nowiki>]</nowiki>词法语法分析] | ||
+ | [https://blog.csdn.net/feixiaoxing/article/details/79329913 随想录(lua源码学习)] | ||
+ | |||
+ | [https://blog.csdn.net/tgyd2014/article/details/52083152 lua源码的研究入门之makefile] | ||
+ | [https://www.cnblogs.com/woshizhizhong-tech/p/8397396.html 自己编译lua源码] | ||
+ | |||
+ | [https://www.cnblogs.com/nazhizq/p/6516469.html lua源码学习篇一:环境部署 ] | ||
+ | |||
+ | https://www.codedump.info/ | ||
+ | |||
+ | =see also= | ||
+ | |||
+ | [https://coolshell.cn/articles/10739.html LUA简明教程] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
[[category:ops]] [[category:lua]] | [[category:ops]] [[category:lua]] |
2023年6月12日 (一) 08:35的最新版本
book
有电子书
install
#os kali 2017 sudo apt install lua5.1
on freebsd12
运行
evan@bsd-latop:~ % lua52 Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > print("hello,world") hello,world 把脚本存成一个文件 evan@bsd-latop:~/test % cat hello.lua #!/usr/local/bin/lua52 print("Hello, World") evan@bsd-latop:~/test % chmod +x hello.lua evan@bsd-latop:~/test % ./hello.lua Hello, World
控制语句
./h.lua sum = 5050 evan@bsd-latop:~/test % cat h.lua #!/usr/local/bin/lua52 sum = 0 num = 1 while num <= 100 do sum = sum + num num = num + 1 end print("sum =",sum) if-else分支
函数
函数前面加上local就是局部函数
Table
Lua的下标不是从0开始的,是从1开始的
优点
除了游戏外,也适用于app api。 ngx+lua+redis 架构模式在高并发的情况下完胜 ngx+php-fpm+php。 再加上有ngx lua模块,ngx天然为Lua提供了web容器的接口,可以做更多容器的事情,例如: 防刷,身份验证等等
进阶 lua源码学习
阅读源代码的次序
首先、阅读外围的库是如何实现功能扩展的,然后、阅读 Lua 的具体实现。之后、可以开始了解 Lua VM 的实现。接下来就是分别理解函数调用、返回,string,metatable,table实现debug模块是一个额外的设施、最后是parse 等等编译相关的部分。垃圾收集将是最难的部分,可能会花掉最多的时间去理解细节
https://github.com/lichuang/Lua-5.1.4-codedump/tree/master
Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)
构建Lua解释器Part1:虚拟机的基础--Lua基本数据结构、栈和基于栈的C函数调用的设计与实现