lua
文章平均质量分 80
43452445到
程序员一枚
展开
-
lua程序性能优化(table的初始化)
local t = {}for i=1,10 do t[i] = i end编译后代码1 [1] NEWTABLE 0 0 02 [2] LOADK 1 -1 ; 13 [2] LOADK 2 -2 ; 104 [2] LOADK原创 2013-12-17 18:34:14 · 5284 阅读 · 0 评论 -
lua CRC32校验码生成
普通文件(如压缩文件)的crc32校验码计算方法:生成多项式采用0xEDB88320,所生成的表为:This polynomial ( 0xEDB88320L) DOES generate the same CRC values as ZMODEM and PKZIP原创 2016-06-02 15:02:03 · 6936 阅读 · 0 评论 -
lua的数据对象表示
#define CommonHeader GCObject *next; lu_byte tt; lu_byte markedstruct GCObject { CommonHeader;};typedef union Value { GCObject *gc; /* collectable objects */ void *p; /* light us原创 2016-08-01 10:47:55 · 1110 阅读 · 0 评论 -
lua5.3异常机制
lua本质上利用C函数来操作LUA虚拟机。LUA虚拟机对于C来说只是在堆上的内存对象。 lua有自己的运行对象(协程),每个协程有自己的调用栈。 比如下面的函数: function add(x, y) return x + y end 如果x或y不能进行加法操作,在调用中就会产生异常。产生了异常,虚拟机需要对异常进行处理,最简单粗原创 2016-12-04 16:18:11 · 4477 阅读 · 0 评论 -
常见lua报错类型
类型1,索引nil值1、attempt to index a nil value (global 'a')a.name = "haha"2、attempt to index a nil value (field 'name')a.name.first = "haha"3、attempt to perform arithmetic on a nil value (global原创 2017-09-16 11:19:07 · 25231 阅读 · 0 评论 -
跑胡子胡牌算法
腾讯课堂视频讲解:https://ke.qq.com/course/360581?tuin=104cb0e21、 基于查表的lua版跑胡子判胡算法 将所有能胡的牌型和其对应的胡息放入表中 判断胡牌时,只需要查表得到胡息,如果表中没有此项,则不能胡,如果有,得到表中的胡息,加上跑、提、碰、偎的胡息,如果大于最低胡息,就能判断是否胡牌。 代码:https://gith...原创 2017-10-12 16:15:37 · 20677 阅读 · 2 评论 -
lua结构精要
-- 单行注释--[[ [多行注释]--]] ----------- 1. 变量 & 控制流----------num = 23 -- 数字都是双精度str = 'aspythonstring' -- 像 Python 一样不可变str = "aspythonuse" -- 可以双引号str = [[ 像 Python 的多行注释可用于 表示多行字符串一样...转载 2018-03-08 13:48:23 · 464 阅读 · 0 评论 -
lua代码加密策略
1、使用类似cocos的加密方式,对文件打上加密标记头,然后文件内容呢,加密后存放。需要修改lua加载文件的部分代码。安全性:基于算法保密+密钥保密,对于很多cocos程序来说,密钥是写死在代码里,所以通过反编译代码很容易获取到2、luac编译后使用,luac编译后的代码,采用工具能够恢复一部分,可读性不强,可以作为一般应用的加密方式3、将加密解密的函数,由服务端传入。客户端执行这个函数...原创 2018-10-28 03:20:31 · 4848 阅读 · 0 评论 -
skynet热更新方案
普通程序lua的更更新: lua的热更新一般是比较方便的,比如下面一个模块module.lualocal module = {}function module:func() print("module:func()")end 通常实现更新会这样做: local old_module = require("module") package.load原创 2016-05-16 10:31:32 · 5542 阅读 · 0 评论 -
如何判断lua是不是一个纯数组类的table
这种方式只用遍历table一次,效果不错原创 2016-05-05 14:25:08 · 10895 阅读 · 2 评论 -
lua程序性能优化(尾调用)
function func() local value = math.abs(1) return valueendfunction func1() local value = func() return valueendfunc1()不使用尾调用的函数编译后指令如下:F:\>luac -l a.luamain (7原创 2013-12-17 19:08:17 · 3668 阅读 · 0 评论 -
lua程序性能优化(局部变量使用)
1、局部变量优化代码一for i = 1, 1000000 do local x = math.sin(i) end 编译后代码 1 [1] LOADK 0 -1 ; 1 2 [1] LOADK 1 -2 ; 1000000 3 [1] LOADK原创 2013-12-17 18:14:50 · 1712 阅读 · 0 评论 -
lua程序性能优化(字符串连接与格式化)
代码local str1 = "sdf".."sfdfds".."fdssdfdsfs"local str2 = string.format("%s%s%s","sdf","sfdfds","fdssdfdsfs")编译后1 [1] LOADK 0 -1 ; "sdf"2 [1] LOADK原创 2013-12-17 18:51:03 · 11346 阅读 · 0 评论 -
lua转换string到Table
1、系统中经常需要将string转换为table,为求方便一般会直接用类似下面的方式:原创 2014-04-11 03:16:08 · 23551 阅读 · 1 评论 -
细数lua那些坑
因为公司用的LUA版本是5.0,自己一般原创 2014-04-11 02:35:58 · 5680 阅读 · 0 评论 -
Lua中的元表和元方法
Lua中的元表和元方法Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果有,Lua调用它执行加法。我们称元表中的键为事件(event),称值为元方法(metamethod)。前转载 2015-07-17 10:29:53 · 1903 阅读 · 0 评论 -
lua实现类的继承
local _class={} function class(super) local class_type={} class_type.ctor=false class_type.super=super class_type.new=function(...) local obj={} do -- 递归调用构造函数,实现构造基类的数据 local cre原创 2015-07-17 16:41:13 · 957 阅读 · 0 评论 -
记录lua的table转string一个问题
最近的项目开发中发现原有代码的table2Str函数实现不对,一时偷懒从网上百度了一下。选中了http://blog.csdn.net/xiaodan007/article/details/7096718这个地址的代码用到了项目中。 在项目中的使用,将table转化为string后,数据有丢失,追踪,发现是这个实现有问题。 在形如 { {aaa=1},{bbb=2}} 这原创 2016-04-28 21:55:38 · 1889 阅读 · 0 评论