Luajit IO

Lua 的 IO 框架
授权协议 BSD
开发语言 Lua
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 陈夜洛
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Luajit IO 是一个纯 Lua 的 IO 框架,提供 C 的高效率,简单但强大的设计,得益于 luajit 这个 JIT 引擎。可用来开发 TCP/UDP 服务器程序。

下面是连接 redis 的示例代码:

local ffi = require"ffi"
local null = ffi.new("void*")
local redis = require "resty.redis"

local function test_redis(req, rsp)
	local red = redis:new()

	-- red:set_timeout(1000) -- 1 sec

	-- or connect to a unix domain socket file listened
	-- by a redis server:
	--     local ok, err = red:connect("unix:/path/to/redis.sock")

	local ok, err = red:connect("127.0.0.1", 6379)
	if not ok then
		rsp:say("failed to connect: ", err)
		return
	end

	ok, err = red:set("dog", "an animal")
	if not ok then
		rsp:say("failed to set dog: ", err)
		return
	end

	rsp:say("set result: ", ok)

	local res, err = red:get("dog")
	if not res then
		rsp:say("failed to get dog: ", err)
		return
	end

	if res == null then
		rsp:say("dog not found.")
		return
	end

	rsp:say("dog: ", res)

	red:init_pipeline()
	red:set("cat", "Marry")
	red:set("horse", "Bob")
	red:get("cat")
	red:get("horse")
	local results, err = red:commit_pipeline()
	if not results then
		rsp:say("failed to commit the pipelined requests: ", err)
		return
	end

	for i, res in ipairs(results) do
		if type(res) == "table" then
			if not res[1] then
				rsp:say("failed to run command ", i, ": ", res[2])
			else
				-- process the table value
			end
		else
			-- process the scalar value
		end
	end

	-- put it into the connection pool of size 100,
	-- with 10 seconds max idle time
	local ok, err = red:set_keepalive(10000, 100)
	if not ok then
		rsp:say("failed to set keepalive: ", err)
		return
	end

	-- or just close the connection right away:
	-- local ok, err = red:close()
	-- if not ok then
	--     rsp:say("failed to close: ", err)
	--     return
	-- end
end

return test_redis
  • 源码代码结构 1、luaJit使用到的一些内嵌库,如基础库、math库、IO库等。 lib_aux.c lib_base.c lib_bit.c lib_buffer.c lib_debug.c lib_ffi.c lib_init.c lib_io.c lib_jit.c lib_math.c lib_os.c lib_package.c lib_string.c lib_table.c 2、

  • 2、找到VC编译命令行,以VS2019为例,分别位于 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 019\Visual Studio Tools\VC\x64 Native Tools Command Prompt for VS 2019 C:\ProgramData\Microsoft\Windows\St

  • 一、什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。 二、优势 1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。 2)它是用C语言开发的

  • 原博地址 http://www.cnblogs.com/zwywilliam/p/5992737.html luajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易。实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽。 为此luaj

  • lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。 二、优势 1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。 2)它是用C语言开发的项目,所以可以在大部分的操作系统

  • 首先感谢原作者在国内互联网分享这篇教程,因为在国内这方面资料基本没有。 这篇教程的很强大,先不说网游。 说一些单机游戏 类似于 EM引擎 DM引擎 开发的游戏 都可以通过这种方法来调试。 源代码可以去原贴查看 原贴 http://www.cehigh.com/forum.php?mod=viewthread&tid=724 前言 本次修改的游戏是一个使用了LuaJIT制作的梦幻西游类单机游戏,名字

  • 一、概述 演示代码工程位置:https://gitee.com/liudegui/lua_call_cpp 在编写openresty代码时,有时候要调用自己编写的C++模块。 本文给出了两种常用的方法: 1、基于luajit的cffi调用,这主要用于调用阻塞时间比较短的C++模块; 2、基于openresty的shell模块调用,这对应于lua的os.execute调用,这可用于调用阻塞时间比较长

  • 2022年6月10日14:37:02 luajit开发文档中文版(一)下载和安装 luajit开发文档中文版(二)LuaJIT扩展 luajit开发文档中文版(三)FAQ 常见问题 luajit开发文档wiki中文版(一) 总目录 luajit开发文档wiki中文版(二) LuaJIT 扩展 luajit开发文档wiki中文版(三)性能调优和测试 luajit开发文档wiki中文版(四) LuaJ

  • 2022年6月9日09:22:53 官方地址:http://luajit.org/ 官方wiki地址:http://wiki.luajit.org/Home 推荐书籍: OpenResty 最佳实践:https://moonbingbing.gitbooks.io/openresty-best-practices/content/ lua基础文档:https://www.runoob.com/lu

  • lua 官网安装https://www.lua.org/start.html#installing tar zxf lua-5.3.3.tar.gz cd lua-5.3.3 //linux下编译 make linux test // mac os

  • 本文转载地址:(http://www.cnblogs.com/zwywilliam/p/5992737.html) luajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易。实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽。 为此

  • uajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易。实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算完,可是代码复杂度一上去了,动辄几十上百毫秒的情况就会出现,性能表现非常飘忽。 为此luajit的mailling list也是有不少人咨询,作者mike pall的一篇比较完整的回答被放在了官方wik

  • 编译minilua (src/host/minilua.c) 使用minnilua 生成buildvm_arch.h 在工程里加入后期生成事件 $(SolutionDir)Debug\MiniLua\MiniLua.exe $(SolutionDir)LuaJIT-2.0.3/dynasm/dynasm.lua -LN -D WIN -D JIT -D FFI -o $(SolutionDir)L

 相关资料
  • io 包为 I/O 原语提供了基本的接口。它主要包装了这些原语的已有实现。 由于这些接口和原语以不同的实现包装了低级操作,因此除非另行通知,否则客户端不应假定它们对于并行执行是安全的。 在 io 包中最重要的是两个接口:Reader 和 Writer 接口。本章所提到的各种 IO 包,都跟这两个接口有关,也就是说,只要实现了这两个接口,它就有了 IO 的功能。 Reader 接口 Reader 接

  • 前几天,我偶然发现了纯项目——YUI团队发布的一组CSS模块。我想在我的网站上标准化表单,我喜欢他们表单模块的外观。特别是他们称之为对齐形式的形式。我将CSS添加到我的站点,并将所需的样式添加到我的表单中,除了我的单选按钮组之外,一切都很好。在对齐表单中,每个输入在其标签的左侧有一个标签,输入在其标签的右侧。但是每个单选按钮都有各自的标签,标签的样式设置在按钮的右侧。我要寻找的是一种为按钮组添加整

  • IO

    loadtxt()和savetxt()函数处理正常的文本文件 numpy.save()文件将输入数组存储在具有npy扩展名的磁盘文件中。 为了从outfile.npy重建数组,请使用load()函数。 save()和函数接受一个附加的布尔参数allow_pickles。 Python 中的pickle用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。 savetxt() 以简单

  • IO

    本章交要讲解基本的 I/O 。它首先集中在 “I/O流”(I/O Streams),一个强大的概念用于简化 I/O 操作。本文还讲解了序列化,它可以让程序将整个对象转出为流,然后再从流读回来。随后介绍文件 I/O 和文件系统的操作,其中包括了随机访问文件。 大多数涵盖 I/O流 的类都在java.io包。大多数涵盖文件 I/O 的类都在java.nio.file包。

  • IO

    如果你使用的是标准化的JS库,则暴露为io这一命名空间;如果你是用Node 编译,则使用require('socket.io-client')。 引入http://socket.io的JS库 <script src="/socket.io/socket.io.js"></script> <script> const socket = io('http://localhost'); </scri

  • io

    IO模块管理本地文件系统,用于对文件系统的目录浏览、文件的读取、文件的写入等操作。通过plus.io可获取文件系统管理对象。 为了安全管理应用的资源目录,规范对文件系统的操作,5+ API在系统应用目录的基础设计了应用沙盒目录, 分为私有目录和公共目录两种类型,私有目录仅应用自身可以访问,公共目录在多应用环境时(如小程序SDK)所有应用都可访问。 应用私有资源目录,对应常量plus.io.PRIV

  • io

    import "io" io包提供了对I/O原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的。 Variables type Reader type Writer typ

  • 一、概览 二、磁盘操作 三、字节操作 实现文件复制 装饰者模式 四、字符操作 编码与解码 String 的编码方式 Reader 与 Writer 实现逐行输出文本文件的内容 五、对象操作 序列化 Serializable transient 六、网络操作 InetAddress URL Sockets Datagram 七、NIO 流与块 通道与缓冲区 缓冲区状态变量 文件 NIO 实例 选择器