lua
Silverados
这个作者很懒,什么都没留下…
展开
-
LUA实现数据结构:定长队列
前言之前发过一篇博文是关于双端队列的。这次的定长队列就基于上次的结构进行改造。LUA实现数据结构:双端队列这种数据结构在游戏可见各种记录。例如抽奖记录会不断的更替,后面产生的记录会替代先前的记录。客户端展示的时候可能需要展示10条,但是你这边存应该存20条之类的。代码定长队列实际上是个FIFO的队列,一端进一端出,同时队列的大小固定:在原本的基础上我们增加了length表示队列当前的长度,一个max_length表示队列的最大长度。当入队时判断是否大于max_length,大于的话就把先进原创 2021-04-08 10:36:40 · 475 阅读 · 0 评论 -
LUA实现数据结构:双端队列
前言lua内置的数据结构总的来说就一个:table。然而很多时候我们的业务需要各种各样的结构,这些结构都能基于table来写。双端队列的方法双端队列提供的方法主要有几种:左进左出右进右出在《programmer in lua》中提供了这样的结构:function listNew() return {first = 0, last = -1}endfunction pushFirst(list, value) local first = list.first - 1 l原创 2021-04-02 16:01:06 · 364 阅读 · 0 评论 -
LUA在列表的循环中移除元素
前言在code的时候想到这个案例:local t = {1, 2, 3, 4, 5}for i = 1, #t do if i == 3 then table.remove(t, i) end endfor i = 1, # t do print(t[i])end不知道在LUA程序表现的效果是怎么样的。因为通常是不支持在循环中进行元素的删除操作。这种操作放到其他语言可能会抛异常。例如在JAVA中这种操作是不支持的,在迭代器中才能正确的删除。结论跑了一下,发现能正常跑:1原创 2021-02-02 10:19:16 · 1864 阅读 · 0 评论 -
第一次运行skynet
前言说实话,skynet我从来没有接触过,就连lua也只是看了些基础,C也是五年前上课的时候学过一学期。但是我相信我能完成这些挑战。前一节已经是安装完skynet了。这一节摸索下skynet的启动。在项目README.md中我们可以看到作为安装成功后的测试步骤为:Run these in different consoles:./skynet examples/config # Launch first skynet node (Gate server) and a skynet-master原创 2020-12-08 15:21:01 · 488 阅读 · 0 评论 -
安装skynet以及一些异常的处理
安装skynetstep1 : 克隆git库:git clone https://github.com/cloudwu/skynet.git这一步可选。切换版本,项目使用的版本是:fd1b230,也就是:V1.0.0 rc5git checkout `fd1b230`step2 : 进入目录skynet-1.0.0,执行命令:make linux原本的目录为:安装完成后:比较发现多了cservice和luaclib和skynet这三个。可能遇到的异常:/bin/sh: .原创 2020-12-08 15:05:50 · 1433 阅读 · 0 评论 -
记录一个LUA时间相关的坑
前言最近在做游戏里的活动配置需求,上线后有一天运营和我说配置的时间没有失效,而在QA时明明测试过功能是正常开启的。为此我查询了一番log,发现其中的奥秘,并直呼:坑。事故现场其实就是一个LUA里的时间转 Unix时间戳的问题,先看以下这段代码:date = os.time({year=2020,month=8,day=31,hour=0,min=0,sec=0})print(date)-- 1598803200然鹅,如果不了解LUA的源码可能就会踩到以下的这个坑:local date =原创 2020-09-08 22:38:32 · 851 阅读 · 0 评论 -
lua实现堆排序
堆排序:local function swap(t, i, j) local temp = t[i] t[i] = t[j] t[j] = tempendlocal function heapInsert(t, i) -- i 下标的 父下标为 i / 2 while i > 1 and t[i] > t[i // 2] do swap(t, i, i // 2) i = i // 2 endend原创 2020-06-12 16:33:31 · 683 阅读 · 0 评论 -
lua string.split 类似JAVA中的string方法
function string.split(s, delimiter, limit) limit = limit or math.maxinteger local res = {} local pos = 0; for vstart, vend in function() return string.find(s, delimiter, pos, true) end do if #res >= limit then return res end原创 2020-06-11 10:37:00 · 309 阅读 · 0 评论 -
lua string.trim 类似JAVA中的string方法
lua中没有string.trim函数,实现上用模式匹配进行替换。这里gsub返回的是两个值,用括号可以只返回一个数据。function string.trim(s) return (s:gsub("^%s+", ""):gsub("%s+$", ""))endprint( string.trim(" abcdef gabegs "))...原创 2020-06-10 16:18:37 · 1058 阅读 · 1 评论 -
lua string.indexOf
在lua中没有string.indexOf方法,取而代之的是一个string.find方法,string.find是一个很强大的函数,但是在这里我只展示一个可以直接用的。需要注意的是lua中字符下标是从1开始。function string.indexOf(s, pattern, init) init = init or 0 local index = string.find(s, pattern, init, true) return index or -1;endprin原创 2020-06-08 18:09:56 · 2690 阅读 · 0 评论 -
linux手动安装ldoc
下载包:https://github.com/stevedonovan/LDoc/releases安装:tar -xzvf LDoc-1.4.6cd LDoc-1.4.6sudo make install# 测试Penlight和LDoc是否成功lua ldoc.lua tests/example/tests/modtest.lua注意安装LDoc需要先安装Penlight:...原创 2020-05-06 13:46:49 · 261 阅读 · 0 评论 -
linux手动安装Penlight
Penlight下载安装包:https://github.com/Tieske/Penlight/releases安装步骤:tar -xzvf Penlight-1.7.0cd Penlight-1.7.0cd luasudo cp -R p1/ /usr/local/share/lua/5.3/# 测试luafilesystem是否安装成功lua run.lua example...原创 2020-05-06 13:42:27 · 397 阅读 · 0 评论 -
linux手动安装luafilesystem
首先是下载安装包:https://github.com/keplerproject/luafilesystem/releases/总体来说就是这几步:tar -zxf luafilesystem-1_8_0cd luafilesystem-1_8_0makesudo cp src/* /usr/local/share/lua/5.3/sudo cp src/* /usr/local/...原创 2020-05-06 13:40:22 · 527 阅读 · 0 评论 -
Lua string(字符串)库方法以及必要的例子
Lua字符串处理API+例子前言string库提供了字符串处理的通用函数。 例如字符串查找、子串、模式匹配等。 当在Lua中对字符串做索引时,第一个字符从 1 开始计算(而不是 C 里的 0 )。 索引可以是负数,它指从字符串末尾反向解析。 即,最后一个字符在 -1 位置处,等等。字符串库中的所有函数都在表 string 中。 它还将其设置为字符串元表的 __index 域。 因此,你可以以...原创 2020-04-25 18:03:37 · 1565 阅读 · 2 评论 -
readline/readline.h: No such file or directory解决方案,包含Ubuntu和centos
按照官网安装Lua:curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gztar zxf lua-5.3.5.tar.gzcd lua-5.3.5make linux test最后一步报错:lua.c:82:31: fatal error: readline/readline.h: No such file or directory #...原创 2020-03-04 10:46:58 · 10711 阅读 · 0 评论 -
ZeroBraneStudio LUA IDE介绍
https://studio.zerobrane.com/ZeroBrane Studio是一款**轻量级的Lua IDE,**具有代码完成,语法突出显示,实时编码,代码分析器以及对Lua 5.1,Lua 5.2,Lua 5.3, LuaJIT和其他Lua引擎的调试支持。它**具有丰富的功能,可为经验丰富的开发人员提供扩展,而对于初学者则简单易用**(对没有编程经验的初中和高中学生进行了测试)...翻译 2020-03-04 10:11:09 · 906 阅读 · 0 评论