lua中的坑】的更多相关文章

在工作中使用lua也有一年了,代码也写了不少,踩过不少坑,这里记录一下. table.sort table.sort是lua自带的排序函数,数据量小时,也还是不错的.不过要注意你传入的compare函数.例如: ,,,,,,, } table.sort( tb,function(a,b) return a>=b end ) 上面的代码够简单了,但是你运行起来,却是报错了. Program starting as '"D:\programs\ZeroBraneStudio\bin\lua53…
环境: 系统:win7 64位 cocos2dx:cocos2d-2.1rc0-x-2.1.3 Visual Studio: 2012 由于项目是用lua写的,需要将cocos2dx中的方法导入到lua中, 但是cocos2dx官方并没有导出全部的接口,有些需要开发者自己导出.这里我们需要用CCTableView,这个类并不完善,还有一些bug.但不影响使用.官方没有给出CCTableView导入到lua中的接口,需要手动添加.这里Gink(笔者的外号:))偷懒了,用了shawnclovie写L…
0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string(s) local encoded = torch.LongTensor(#s) , #s do local token = s:sub(i, i) local idx = self.token_to_idx[token] assert(idx ~= nil, 'Got invalid idx') e…
0.踩坑背景 执行Torch-RNN的时候,在LanguageModel.lua中的encode_string函数中,对start_text的各个character进行id映射编码,实现功能类似“北京天安门”-->“5 10 88 32 111”,方便后面的计算. 这个函数会利用一个全局的类似HashMap的table,hashmap中的key是character(char),value是id(int),涉及到一个从hashmap中按照key取值的操作,代码如下: local idx = sel…
redis 2.8之前的版本,为了实现支持巨量数据缓存或者持久化,一般需要通过redis sharding模式来实现redis集群,普遍大家使用的是twitter开源的Twemproxy. twemproxy不会增加redis的性能指标数据,据业界测算,使用twemproxy相比直接使用redis会带来~10%的性能下降.   但是单个redis进程的内存管理能力有限.据测算,单个redis进程内存超过20G之后,效率会急剧下降.目前,我们给出的建议值是单个redis最好配置在8G以内.8G以上…
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历.当然你还…
0.Lua & LuaJIT简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发,Lua在…
# 从架构层面杜绝lua中使用未定义的变量 标签(空格分隔): lua --- lua中有一个很坑的地方:1.就是如果一个变量拼写错误,会自动的认为你定义了一个值为nil的全局变量.2.如果在function中定义一个局部变量,忘记了local,则会默认为是定义成为了一个全局变量. 为了防止这种问题,我今天想到一个解决方案.可以达到以下效果:1.在function中使用一个未定义的变量时则报错.2.在function中定义全局变量则报错,即全局变量中能够在全局空间中定义. 具体做法如下:在代码初…
基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lua基类和C++基类极为相似,但是lua中却没有继承这一说,更没有所谓的派生类.lua只能通过一种行为(元表)来模拟C++继承这一方法. 元表:lua中提供的元表是用于帮助lua数据变量完成某些非预定义功能的个性化行为,当它做某一种操作,然而self表中却没有定义实现这种操作的方法,那么为了实现这一操…
同样还是更新方面的需求,当我们检测到版本是新安装的以后,要进行upd目录清除.如果使用os.execute执行 rm -rf ooxx 是非常快的但由于os.execute一旦报错,那整个lua进程就杯具了.于是,我们最后换成了lfs来进行目录遍历并逐个删除.这样一来,文件数目如果过多,会等很久.于是想到使用异步的方式来处理. 一开始我尝试了lua的协程,我以为他和golang等语言中的一样.可以实现轻量级线程.于是我做了一个简单的测试 h = coroutine.creat( , do pri…