使用lua小技巧

Lua之sleep函数的实现

一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下:

  • 方法1 –在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用哦 function sleep(n) local t0 = os.clock() while os.clock() - t0 <= n do end end
  • 方法2 –调用系统的sleep函数,不消耗CPU,但是Windows系统中没有内置这个命令(如果你又安装Cygwin神马的也行)。推荐在Linux系统中使用该方法 function sleep(n) os.execute("sleep " .. n) end
  • 方法3 –虽然Windows没有内置sleep命令,但是我们可以稍微利用下ping命令的性质 function sleep(n) if n > 0 then os.execute("ping -n " .. tonumber(n + 1) .. " localhost > NUL") end end
  • 方法4 –使用socket库中select函数,可以传递0.1给n,使得休眠的时间精度达到毫秒级别。 ‍require("socket") function sleep(n) socket.select(nil, nil, n) end

用lua访问http

  • 方法一:使用luasocket 需要luasocket。 下载地址: http://files.luaforge.net/releases/luasocket/luasocket local http = require("socket.http") local ltn12 = require("ltn12") function http.get(u) local t = {} local r, c, h = http.request{ url = u, sink = ltn12.sink.table(t)} return r, c, h, table.concat(t) end url = "http://www.baidu.com" r,c,h,body=http.get(url) if c~= 200 then return end print(body)
  • 方法二:借助系统curl function get(url) local handle = io.popen("curl -q -k -s " .. url) local result = handle:read("*a") handle:close() return result end function post(url , fields) local handle = io.popen("curl -q -k -s -m 1 ".. url .. "-d" ..fields .. "`") local result = handle:read("*a") handle:close() return result end

lua之使用json

  • 方法一:用lua的cjson包: 下载地址在这里 http://www.kyne.com.au/~mark/software/lua-cjson.php 安装的话,make&make install就行了。local cjson = require("cjson") local str = '["a", "b", "c"]' local j = cjson.decode(str) for i,v in ipairs(j) do print(v) end str = '{"A":1, "B":2}' j = cjson.decode(str) for k,v in pairs(j) do print(k..":"..v) end j['C']='c' new_str = cjson.encode(j) print(new_str)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学自动化测试

pytest文档14-函数传参和fixture传参数request

为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其...

4782
来自专栏程序员互动联盟

【编程基础】聊聊C语言-兵马未动粮草先行(2)

上一篇我们讲了C语言预处理阶段的宏定义,知道了C语言中宏定义的处理和使用。现将上篇关于宏的问题的答案公布如下: 用宏定义一个字符串常量 #define str ...

3094
来自专栏奔跑的蛙牛技术博客

synchronized 详解

那到底使用synchronized关键字是不是就是一个监视器? 不懂,理解的话可以向我发邮件gaomengjie_1@163.com,我虚心求教

773
来自专栏互联网杂技

前端异步代码解决方案实践(一)

小程序框架提供丰富的原生API,可以方便调起微信提供的能力,如获取用户信息,本地存储,支付功能等。但大多数API为异步调用,需要传递成功或失败回调函数,例如wx...

1903
来自专栏前端杂谈

项目中如何使用babel6详解

2978
来自专栏程序员互动联盟

android apk 防止反编译技术第二篇-运行时修改字节码

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/3...

40511
来自专栏视觉求索无尽也

【置顶】Python开发中常见问题参考资料:问题汇总:

如果我们在outside.py文件中调用hub.py时,就会打印出this message should not be shown out of this fi...

2533
来自专栏后端技术探索

vim 乱码问题解决及原理全面分析

Vim有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding(这些选项设置请...

1821
来自专栏salesforce零基础学习

salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)

本文参考官方的formula介绍PDF:https://resources.docs.salesforce.com/200/latest/en-us/sfdc/...

2245
来自专栏爱撒谎的男孩

struts核心配置文件详解(package)

3386

扫码关注云+社区

领取腾讯云代金券