首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Lua:tableobject

读取 100 行的时候(仅仅 2KB),Lua 已经移动 了 5MB 的内存, Lua的字符串和Java的字符串差不多,都是不可变的,不可变的意思是什么呢?..."s"); --消耗时间:0.726s --concat消耗时间:0.001s 元表元方法 算数运算符元方法 __add重载+,相当于两个继承于同一个父类的子类,可以通过 s1+s2,调用父类的__.../lib/pack1_1.lua", goo = "/usr/local/lua/lib/pack1_1.lua", foo1 = "/usr/local/lua/lib/pack1_2.lua...记住,当一个表的 metatable 存在一个__index 函数时,如果 Lua 调用一个原始表中不存在的函数,Lua 将调用这个__index 指定的函数。...所以,这种类和父类之间 的关系传统的类实例的关系是有区别的。特别是,一个类不能同时是其实例的 metatable 又是自己的 metatable。

23230

Lua菜鸟①】初识Lua

简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。...可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。...独立应用脚本 Web 应用脚本 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench 安全系统,如入侵检测系统 以下使用window环境,适合我这样的菜鸟: 第一个Lua程序,...环境配置 大家可以在Lua的官网下载window系统所需要的编译器,然后配置环境即可 将lua命令加入到path中即可,这样就可以利用VS Code直接运行 ? 然后就是给世界打招呼了 ?...菜鸟终于可以写Lua了,明天继续!

2.9K90

Redis中的事务Lua脚本

本文涉及:Redis中普通事务的实现方式、lua脚本的基础使用以及Java的结合使用 普通事务 Redis本身提供了multi关键字用来开启事务,exec用来关闭事务。...脚本 ·Lua脚本在Redis中是原子执行的,执行过程中间不会插入其他命令 ·Lua脚本可以帮助开发和运维人员创造出自己定制的命令,并可以将这些命令常驻在Redis内存中,实现复用的效果 ·Lua脚本可以将多条命令一次性打包...,有效地减少网络开销 Lua脚本怎么写 创建lua脚本 就像创建其他的文件一样,新建一个以.lua为后缀的文件,比如说test.lua –-注释 打印语句 print("Hello World!"...RedisLua脚本 1....在脚本中redis进行交互: local value = redis.call('GET',key); redis.call('SET',key,value+2); redis.call('DECR'

2.2K50

Lua模块的加载内存释放

因为好奇,所以要来了最大的一个配置文件(4.5M,去除空格换行后的大小),进行测试。最终发现,内存其实是可以被释放的,不过需要注意以下的规则。...同时,为了证明luac luajit 表现一致,我同时也使用了 luajit 进行了测试。...当加载一个 lua 模块,返回一个 table 时,package.loaded[modulename] 值为 table。...我拿到的 lua 文件是这样定义的,原本是一个json,将其转为lua的,将所有数据赋值给一个变量(require 之后多了一个全局变量),这样 package.loaded[modulename] 为...一个约4.5M的 lua 文件,被 require 进内存后,lua 所占用的内存大小变为 20M。为什么会这么大,有待进一步从源码中寻找答案。

2.8K30

Lua语言_lua基本语法

1、Lua简介 1.1 Lua是什么 1.2 特性 1.3 应用场景 2、Lua的安装 3、入门程序 4、Lua的基础语法 4.1 注释 4.2 定义变量 4.3 Lua中的数据类型 4.4 流程控制...4.5 循环 4.6 函数 4.7 表 4.8 模块 1、Lua简介 1.1 Lua是什么 Lua [1] 是一个小巧的脚本语言。...Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用: lua -i 如下图: (2)脚本式编程 我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程...语法: if(布尔表达式) then --[ 在布尔表达式为 true 时执行的语句 --] end 实例: (2)if…else语句 Lua if 语句可以 else 语句搭配使用, 在 if...(java语法中do…while类似) 语法: repeat statements until( condition ) 案例: 4.6 函数 Lua中也可以定义函数,类似于java中的方法。

3.1K20

lua

游戏里面用lua来热更新的 redis的默认方法也是lua(我觉得是因为和nosql很搭) 变量 全局变量直接使用的时候为nil 数组下标从0开始(不推荐)a = {[0]="123","32",..."23"}; 支持多返回值,多个同时赋值,只需要一个时候使用哑元_ 尽量避免一个下划线开头+大写字母 ---[[可以注销掉块注释 type函数永远返回一个字符串 lua将false和nil视为假,将0和空字符串视为真...LUA对于小于1014的数字用双精度没有四舍五入的浮点误差,合法的数字写法:4,0.4,4.58e-3,0.3e12,5e+20 Lua的字符串是只读的,\表达数值转义,[[ ]],[===...(Lua4.0 以前在度数下工作。)你可以使用 deg 和 rad 函数在度和弧度之间转换。...->OnInitOK()->CtrlManager.Init() Define.Lua:"xxx=xxxCtrl" GameManager.Lua:ctrl:Awake() LayerPanel

2.2K20

Lua连续教程之Lua反射

如果foo是一个普通的Lua函数,则为“Lua”;如果是一个C函数,则为“C”;如果是一个Lua语言代码段的主要部分,则为“main”。...我们还可以通过函数debug.setlocal改变局部变量的值,该函数的前两个参数getlocal相同,分别是栈层次和变量索引,而第三个参数是该局部变量的新值。...函数setlocal一样,该函数返回变量名,如果索引超出范围则返回nil。...如果有多个局部变量的名称给定的名称相同,则获取具有最大索引的那个局部变量。因此,函数必须执行完整个循环。如果找不到指定名称的局部变量,那么就查找非局部变量。...语言通过库函数完成所有外部世界的通信,因此一旦移除了这些函数也就排除了一个脚本能够影响外部环境的可能。

2.5K10

Redis 事务 Redis Lua 脚本的编写

不满足原子性 关系型数据库的事务不同,redis 事务是不满足原子性的,一个事务执行过程中,其他事务或 client 是可以对相应的 key 进行修改的。...事务中的每条命令都会与 redis 服务器进行网络交互 edis事务开启之后,每执行一个操作返回的都是queued,这里就涉及到客户端服务器端的多次交互。...redis 2.6版本之后也内嵌了一个 Lua 解释器,可以用于一些简单的事务逻辑运算。 7. Redis 内嵌 Lua 的优势 7.1....表示传入参数数量,key表示脚本要访问的key,arg为传入参数 EVALSHA sha1 通过SHA1序列调用lua_scripts字典预存的脚本 SCRIPT LOAD script EVAL相同...SCRIPT LOAD EVALSHA 命令 对于不立即执行的 Lua 脚本,或需要重用的 Lua 脚本,可以通过 SCRIPT LOAD 提前载入 Lua 脚本,这个命令会立即返回对应的 SHA1

80910

Lua:深拷贝浅拷贝,强引用弱引用

https://blog.mutoo.im/2015/10/deepclone-in-lua/ 在 lua 中有 8 种基本类型,分别是:nil、boolean、number、string、userdata...非赋值拷贝 另外三种 lua 基本类型 userdata、thread、table 都是非简单值类型。...其中 table 可以说是 lua 数据结构的根基,要实现其它的数据结构都要依赖它,在 lua 程序中模拟面向对象类也离不开它,然而它不能简单通过赋值进行拷贝,而是需要创建一个新的 table 并将原...4.表里有表,就是执行_copy(v)时,进行递归,直到返回一个塞好的新newTab1 lua中强引用 a = {c = 1} b = a a = nil print(b.c) 输出1 ab指向同一个内存...因为lua是具备自动内存管理的,我们只管创建,删除操作是lua自动进行的,因此这里的a = nil并不是删除表,而是指将a对这张表的引用去掉,当没有地方引用这张表时,这张表就会被lua自动清掉。

23340

Lua连续教程之Lua垃圾收集

(adsbygoogle = window.adsbygoogle || []).push({}); 更重要的是,将程序员从内存管理相关的大多数Bug中解放出来。例如无效指针和内存泄露等问题。...因此,一种颜色一种新颜色相比已经存在了多长时间,这种颜色对应的表也存在了对应长度的时间,也可以被新颜色复用。 对象属性 弱引用表的另外一种重要应用是将属性对象关联起来。...请注意,表mem中一个对象关联的值回指了它自己的键。虽然表中的键是弱引用的,但是表中的值却不是弱引用的。从一个弱引用表的标准理解看,记忆表中没有任何东西会被移除。...析构器是一个对象关联的函数,当该对象即将被回收时该函数会被调用。...然后,抹去这个表的唯一联系,再强制进行一次完整的垃圾回收。在垃圾回收期间,Lua语言发现表已经不再是可访问的了,因此调用表的析构器,也就是元方法gc。

1.5K10
领券