![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lua
文章平均质量分 76
chqj_163
这个作者很懒,什么都没留下…
展开
-
【Lua 5.3源码】table实现分析
https://blog.csdn.net/y1196645376/article/details/94348873转载 2021-06-19 15:08:09 · 1886 阅读 · 0 评论 -
skynet
https://github.com/cloudwu/skynet/wikiWelcome to the skynet wiki!欢迎使用 skynet ,这是一个轻量级的为在线游戏服务器打造的框架。但从社区 Community 的反馈结果看,它也不仅仅使用在游戏服务器领域。Uses 收集了很少一部分使用 skynet 的项目,但实际项目要多得多。欢迎你把你的项目也加到这个列表中。Skynet is a lightweight framework designed for online g转载 2021-01-19 15:52:55 · 210 阅读 · 0 评论 -
Sproto
https://github.com/cloudwu/skynet/wiki/Sproto在和客户端通讯时,需要制订一套通讯协议。 skynet 并没有规定任何通讯协议,所以你可以自由选择。sproto 是一套由 skynet 自身提供的协议,并没有特别推荐使用,只是一个选项。sproto 有一个独立项目存在 。同时也复制了一份在 skynet 的源码库中。它类似 google protobuffers ,但设计的更简单,也更利于 lua 使用。同时还提供了一套简单的 rpc 方案。关于转载 2021-01-19 15:51:24 · 416 阅读 · 0 评论 -
vscode插件Luahelper
LuaHelper is an vscode extension provide something features auxiliary for coding in lua language.features like Snippet,Intelligence,GotoDefinition,CodeComplete etc.support lua version 5.1 and 5.3.Features 符号定义跳转(goto definition) 代码补全(code转载 2020-07-03 20:29:16 · 1090 阅读 · 0 评论 -
lua关于require和package.loaded常被忽略的故事
用require函数只能加载一次,因为它的特性是:1、require函数会搜索目录加载文件2、require会判断是否文件已经加载避免重复加载同一文件。而这个特性二,虽然我们可能知道这两个特性,但是潜意识里面常常把这个特性二给忽视掉了.直到哪天我们需要反复加载同一个lua文件,但是没有实现自己想要效果的时候,才会发现这个特性二的存在感特别强!也许有的小伙伴,会有疑问,为什么要反...转载 2020-03-05 18:42:17 · 225 阅读 · 1 评论 -
Lua中的require与package.loaded
require (modname)加载一个模块。 这个函数首先查找 package.loaded 表, 检测 modname 是否被加载过。 如果被加载过,require 返回 package.loaded[modname] 中保存的值。 否则,它试着为模块寻找 加载器 。require 遵循 package.searchers 序列的指引来查找加载器。 如果改变这个序列,我们可以改变 r...转载 2020-03-05 18:40:19 · 294 阅读 · 0 评论 -
Lua性能优化
LuaJIT本身对Lua作了很多方面的优化工作,对很多Lua自带的库函数进行了优化。优化详情:http://wiki.luajit.org/NYIwiki:http://wiki.luajit.org/Home关于Lua优化的一些细节:1.经常使用的库函数,使用local方式来调用,注意仅一次调用是不起作用的。--this is the lowest method...转载 2019-11-29 14:58:42 · 305 阅读 · 0 评论 -
Lua面向对象编程
在lua原生语法特性中是不具备面向对象设计的特性。因此,要想在lua上像其他高级语言一样使用面向对象的设计方法有以下两种选择:一种是使用原生的元表(metatable)来模拟面向对象设计,另外一种则是使用第三方框架LuaScriptoCore来实现。下面将逐一讲解这两种方式的实现过程(以下内容将基于Lua 5.3版本进行阐述)。1. 元表方式1.1 关于元表(metatable)在lu...转载 2019-11-29 14:44:31 · 264 阅读 · 0 评论 -
Lua base setmetatable()
前言记得原来我们总结过一个查询元表的函数getmetatable(), 但是有查询必然会有设置,今天我们就一起来学习一下有关元表的设置的操作,以及设置元表时需要注意的相关问题,根据我的理解,Lua中模拟类以及类的继承关系也是通过元表的方式实现的,今后我们会继续深入学习。内容setmetatablesetmetatable(table, metatable) 解释:Lua中的这个函...转载 2019-11-28 20:19:42 · 866 阅读 · 0 评论 -
Lua base getmetatable()
前言今天来总结一个查询元表的函数,这个函数可以查询对象是否有元表,如果有还可以将元表返回,有了这个函数我们就可以查询某个对象的值到底是它本身很久拥有的,还是在原表中存在的,接下来我们就一起来看看这个函数的用法吧。内容getmetatablegetmetatable(object) 解释:如果对象没有一个元表,则函数返回nil,否则函数会查询原表中是否有"__metatable"字...转载 2019-11-28 20:18:15 · 1573 阅读 · 0 评论 -
Lua base rawset()
前言咱们今天还是接着两个月前的思路往下写,既然上一篇文章讲到了rawget函数,那么想必你也猜到了。这一篇函数必然是rawset函数,这个函数的作用和rawget函数非常相似,就是为了绕开元表的作用,只不过这个函数是用来给表赋值的,接下来我们一起看一下这个函数的使用方法。内容rawset()原型:rawset(table, index, value) 解释:在不调用元表的情况下,...转载 2019-11-28 20:13:43 · 214 阅读 · 0 评论 -
Lua base rawget()
前言我们今天来看一个取table内容函数,可能有人会说这个有什么难的,不就直接引用就行嘛。实际上不是的,因为有元表的存在。我们要是想避开元表取到真正的值就要使用今天的函数,接下来我们一起看一下函数的使用方法。内容rawget()原型:rawget(table, index) 解释:根据参数table和index获得真正的值table[index],也就是说根本不会调用到元表,其中...转载 2019-11-28 20:12:06 · 248 阅读 · 0 评论 -
Lua base next()
前言以前我们要遍历一个table的是否往往会是用for循环,如果不是数字索引的表只能使用pairs了,今天这个函数提供了一个方法,就是不断的查询下一个元素的索引和对应的值,来达到遍历table的目的,接下来我们一起来看一下实现的方法。内容next() next(table [, index]) 解释:使程序可以遍历表table的所有字段。他的第一个参数是一个表,第二个参...转载 2019-11-28 20:09:50 · 113 阅读 · 0 评论 -
Lua错误处理
Lua错误处理任何编程语言中都需要处理错误,错误的类型可分为语法错误和运行错误。语法错误通常是由于对程序的组件使用不当引起的 运行错误是程序可以正常执行但会输出报错信息Lua 可使用assert和error函数来处理错误错误 error只要发生了错误,Lua就应该结束当前程序块并返回应用程序。 Lua所遇到的任何未预期条件都回引发一个错误 显式地引发一个错误,可调用er...转载 2019-09-26 16:23:17 · 1737 阅读 · 1 评论 -
Lua 中使用面向对象 __gc
转载https://www.cnblogs.com/yaukey/p/4568202.html 上一篇文章给了一个面向对象的方案,美中不足的是没有析构函数 Destructor,那么这一次就给它加上。 既然是析构,那么就是在对象被销毁之前做该做的事情,lua 5.1 的 userdata 可以给其 metatable 增加一个 __gc 域,指定一个函数,将会在被回收时调用,这个 __...转载 2019-02-13 17:13:04 · 1357 阅读 · 0 评论 -
Lua 元表(Metatable)
转载http://www.runoob.com/lua/lua-metatables.html在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。当...转载 2019-02-12 17:41:54 · 128 阅读 · 0 评论 -
Lua math(三) tool
前言#今天这个系列的函数我将其命名为工具,之所以这么命名是因为这个系列函数没有复杂的公式,仅仅是取数字的一部分,或者是把数字变个形式等等,但有这些函数是很重要的,其中有很多函数是我们经常用到的,比如求绝对值、向下取整、求余运算等等。内容#math.huge##原型:math.huge 解释:返回HUGE_VAL的值,是一个大于任何数字的值。math.abs()##原型:ma...转载 2019-03-29 20:39:38 · 369 阅读 · 0 评论 -
Lua 取整取余
expNums = 10对 3 取整 取余local line = math.modf( expNums / 3 ) -- 取整数local mod = math.fmod( expNums, 3 ) -- 取余数Lua math作者:曾令伟链接:https://www.jianshu.com/p/9a41e9225c7a来源:简...转载 2019-03-29 20:34:43 · 6481 阅读 · 0 评论 -
Unity下XLua方案的各值类型GC优化深度剖析
转载http://gad.qq.com/article/detail/25645前言Unity下的C#GC Alloc(下面简称gc)是个大问题,而嵌入一个动态类型的Lua后,它们之间的交互很容易就产生gc,各种Lua方案也把这作为性能优化的重点。这些优化说穿了其实不复杂。元凶在这里先看看这两个函数 1 2 3 4 5 6 ...转载 2019-03-16 17:02:12 · 407 阅读 · 0 评论 -
LuaJIT-2.1.0-beta3版本编译64位,突破2gb内存限制
https://www.cnblogs.com/anylaking/p/8776462.html# Enable GC64 mode for x64.#XCFLAGS+= -DLUAJIT_ENABLE_GC64打开这个重新编译转载 2018-10-19 16:28:40 · 2780 阅读 · 0 评论 -
windows下使用luaJit编译Lua二进制文件
相信大家找到这篇文章之前,已经看过很多类似的文档了。 为什么要使用LuaJIT 编译二进制文件,以及LuaJIT 和命令行luac 编译的区别是什么,有什么利弊,这里不累赘了(我已经下班了大哭),大家自己搜一下。 1.首先大家去官网下载 LuaJIT 代码 http://luajit.org/...转载 2018-10-19 17:45:17 · 2104 阅读 · 0 评论 -
LuaJIT2.1.0 beta3在Windows和OSX下编译
上个月LuaJIT终于迎来了2.1.0 beta3版本的更新,2.1.0-beta3 除了各种修复之外,主要的新功能是在 GC64 模式下支持 x64 的 JIT 编译器,ARM64 和 MIPS64。LuaJIT2.1.0 beta2版本中解决了iOS的arm64不用再iPhone中编译的问题,这次升级到beta3也就紧跟着升级了。接下来说一下LuaJIT2.1.0 beta3在Win...转载 2018-10-19 19:31:21 · 1602 阅读 · 0 评论 -
luajit.exe加密
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行。下面是使用原生的lua解释器编译字节码:1、新建一个名为1.lua的文件,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件2、开始--运行--cmd3、luac -o out.lua 1.lua注: luac...转载 2019-02-12 19:18:16 · 1363 阅读 · 0 评论 -
lua二进制操作函数
转载https://www.cnblogs.com/jadeboy/p/4038332.html 由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个“bit”表中,使用时只要requre “bit”即可。bit.ashr - 带符号的按位右移 此函数需要两个整数作为参数。第一...转载 2019-02-12 19:24:30 · 637 阅读 · 0 评论 -
Lua 计算 UTF8 字符串的长度,每一个中文算一个字符
-- 计算 UTF8 字符串的长度,每一个中文算一个字符-- @function [parent=#string] utf8len-- @param string input 输入字符串-- @return integer#integer 长度 //计算 UTF8 字符串的长度,每一个中文算一个字符 ~~~ lua local input = "你好World"prin...转载 2019-02-12 19:28:47 · 402 阅读 · 0 评论 -
lua中使用json:table转json与json转table
直接上代码:json.lua------------------------------------------------------------------------------- JSON4Lua: JSON encoding / decoding support for the Lua language.-- json Module.-- Author: Craig Mas...转载 2019-02-12 19:34:59 · 1977 阅读 · 0 评论 -
Lua保留规定小数位数
使用string格式化方式 如果需要的结果是字符串,则可以使用string.format()函数 保留2位小数:string.format(“%.2f”, x)使用数字计算方式 使用%运算符,得到的结果是数字 x%1 表示x的小数部分,x-x%1 表示x的整数部分。 类似的,x-x%0.01 将x精确到小数点后2位。----------------...转载 2019-02-12 19:37:59 · 4962 阅读 · 0 评论 -
Lua_table中常用的四种遍历方式
--第一种遍历方式:--[[for key, value in ipairs(table) do end注:这种方式的遍历只会从key为1的地方开始,一直以key递增1的顺序来遍历,若找到一个递增不是1的key就结束遍历,无论后面是否仍然是顺序的key。请看下面例子:]]--Sample_1:local tab1 = { [1] = 1, [2] = 2, [3] = 3...转载 2019-02-12 19:52:10 · 333 阅读 · 0 评论 -
解析一下lua的for循环遍历的不同
分析一下lua的for循环遍历的不同--[[这里是第一种情况in ipairs 是遍历有序的in pairs 是遍历无序的--]]local tab ={1,2,3,x=33,4,w = 5} for k,v in ipairs(tab) do print(k .. " = " .. v)end for k,v in pairs(tab) do print(k .....转载 2019-02-12 19:59:28 · 1012 阅读 · 0 评论 -
Lua module机制分析
转载http://www.cnblogs.com/orez88/articles/2139160.htmlLua中的模块(module)机制有点类似于C语言的动态库,可以将一些公共的代码放在模块中,以API的形式提供给Lua应用脚本使用。使用模块或许还可以做成像Android的Application Frameworks,建立一种新的应用程序编程模型,只是猜想。模块最简单的使用方式: ...转载 2019-02-13 16:43:04 · 259 阅读 · 0 评论 -
Lua table.remove()
删除.png前言#看到这个清晰的大叉号图片时我们不禁会想起关闭、删除等含义,今天我们总结的函数恰恰和删除有关们,这个函数也是表table中的一个,负责表中数据元素的删除,我们具体来看一下这个函数的用法。内容#table.remove()##原型:table.remove (tab_table [, pos]) 解释:在表tab_table的pop位置删除元素,并且的必要时...转载 2019-02-13 16:54:45 · 8830 阅读 · 0 评论 -
Lua的CPU开销性能优化
转载https://mp.weixin.qq.com/s/ITBbDMkIa6LhGEwYnlSfnQ?大家好,我是舒航,现任职于心动网络,主要负责《仙境传说RO:守护永恒的爱》(以下简称“RO”)的优化工作。今天主要想和大家分享一下,我这段时间在优化Lua的CPU性能方面的一些经验。 上一篇文章主要讲的是写一个LuaProfiler的思路,即如何快速定位到内存和CPU问题。而这一篇则...转载 2019-02-13 17:46:46 · 598 阅读 · 0 评论 -
用好Lua+Unity,让性能飞起来——Lua与C#交互篇
转载https://www.cnblogs.com/zwywilliam/p/5999924.html前言在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以...转载 2019-02-13 18:02:24 · 631 阅读 · 0 评论 -
luajit官方性能优化指南和注解
转载https://www.cnblogs.com/zwywilliam/p/5992737.htmlluajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易。实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽。为此luaj...转载 2019-02-13 20:15:36 · 172 阅读 · 0 评论 -
用好lua+unity,让性能飞起来——luajit集成篇/平台相关篇
转载https://www.cnblogs.com/zwywilliam/p/5999980.htmlluajit集成篇大家都知道luajit比原生lua快,快在jit这三个字上。但实际情况是,luajit的行为十分复杂。尤其jit并不是一个简单的把代码翻译成机器码的机制,背后有很多会影响性能的因素存在。1.luajit分为jit模式和interpreter模式,先要弄清楚...转载 2019-02-13 20:21:16 · 423 阅读 · 0 评论 -
【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录
网上关于 LuaJIT 的讨论,已经显得有些陈旧。如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章。此文章针对尝试在 iOS 或 Android 上使用 LuaJIT 的小伙伴。限于篇幅,此处假定,你可以成功在 iOS/Android App 中集成了 LuaJIT,并且已经可以执行源码形式的 Lua 文件。我忍不住在开...转载 2018-10-19 16:27:40 · 1241 阅读 · 0 评论