最近在研究luasocket,准备用全部用lua的扩展库来实现一套轻量级框架,用来做一些工具、简单的游戏服务器,以及作为网络库用在cocos2dx中。...完善的网络库必然会遇到粘包、半包的问题,luasocket也不例外,由于网络部分在lua,协议的制定和buff的解析都没有合适的方案,又不想在C++中来封装接口,后面在网上查了一些资料,发现lua也有一个二进制打包的扩展库...然后是编译lpack,有两种方式来编译和初始化lpack 1、将lpack.c加到宿主程序的源码里面,然后在初始化lua的地方调用初始化函数: luaopen_pack(lua_state);...2、将lpack编译成dll(so),然后在lua里面调用: require("lpack") ---- 然后说一下lpack的接口,lpack扩展库提供了两个接口,pack和unpack。...---- lpack的具体用法 1、打包接口pack的使用,全局名字容易混淆lua本身函数unpack,使用string.pack好些,也可以修改源码修改函数名。
基本环境 # redis ➜ ~ redis-server -v Redis server v=3.2.6 # lua ➜ ~ lua -v Lua 5.2.4 Copyright (C) 1994...-2015 Lua.org, PUC-Rio 参考文档: 官方文档 Redis Lua 总结 Redis脚本 Redis执行Lua脚本示例 概要 Redis从2.6版本开始引入了对Lua脚本的支持,通过在服务器中嵌入...Lua环境,Redis客户端可以使用Lua脚本,直接在服务器端执行多个Redis命令。...* --eval,告诉redis-cli读取并运行后面的lua脚本 * path/to/redis.lua,是lua脚本的位置,也可以直接为脚本字符串。...是一个Lua 5.1 script。
# Nginx Lua扩展模块 ngx_lua模块概念 ngx_lua模块环境准备 方式一 方式二 OpenResty卸载 ngx_lua指令图 语法API ngx.say ngx.print ngx.flush...OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。...用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。所以本身 OpenResty 内部就已经集成了 Nginx 和 Lua,所以我们使用起来会更加方便。...而Lua-resty-redis 库是 OpenResty 提供的一个操作 Redis 的接口库,可根据自己的业务情况做一些逻辑处理,适合做复杂的业务逻辑。...Options 是一个参数的 Lua 表结构,里面包含数据库连接的相关信息。
Redis支持使用Lua脚步来进行功能扩展,这个能力给Redis带来了更多的应用场景,你可以编写若干命令组合,作为一个小型的非阻塞事务或者更新逻辑 使用脚本的好处 1更快 Redis应用的使用方式很多都是...,中间不会被其他命令插入,因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务 4复用 客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑 Lua...脚本示例 1hello world 先实现一个简单脚本,仅仅返回一个字符串 代码 文件名 hello.lua 内容 local msg = "Hello, world!"...return msg 执行 redis-cli EVAL "$(cat hello.lua)" 0 执行结果 "Hello, world!"...URL简写功能,对存入的每条URL都返回一个唯一数值,以便以后通过这个数值访问到该URL 思路 使用INCR获得一个ID,以此ID为key,以url为值,存入hash表中 代码 文件名 url.lua
ngx_lua 模块通过将 lua 解释器集成进 Nginx,可以采用 lua 脚本实现业务逻辑。 该模块具有以下特性: 高并发、非阻塞地处理各种请求。...ngx_lua 非常适合用于实现可扩展的、高并发的服务。 2. 协程(Coroutine) ---- 1....这正好与 Lua 内建协程的模型是一致的,所以即使 ngx_lua 需要执行 lua,相对 C 有一定的开销,但依然能保证高并发能力。 3....概念 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。...用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 2.
Lua具有如下特点: Lua 拥有虚拟机的概念,而其全部用标准C实现,不依赖任何库即可编译安装,更令人欣喜的是,整个Lua 的实现代码并不算多,可以直接继承到项目中,并且对项目的编译时间几乎没有什么影响...Lua的扩展也非常的容易,将C++是对象、函数导入到lua中会涉及到一些技巧,如果纯粹使用lua CAPI会稍显繁杂,幸运的是一些第三方库简化了这些操作,而FFLUA绝对是最好用的之一。...嵌入Lua: 嵌入lua脚本,必须要把lua脚本载入lua虚拟机,lua中的概念称之为dofile,FFLUA中封装了dofile的操作,由于lua文件可能集中放在某个目录,FFLUA中也提供了设置lua...扩展LUA: 这也是非常重要的操作,嵌入lua总是和扩展lua相伴相行。lua若要操作C++中的对象或函数,那么必须先把C++对应的接口注册都lua中。...总结: FFLUA是简化C++嵌入绑定lua脚本的类库 FFLUA只有三个头文件,不依赖除lua之外的任何的类库,开发者可以非常容易的使用FFLUA FFLUA 对于常用的STL数据结构进行了支持 FFLUA
函数名 描述 示例 结果 pi 圆周率 math.pi 3.1415926535898 abs 取绝对值 math.abs(-2012) 2012 ceil 向...
注:lvs 和 nginx 的负载均衡区别: LVS:Linux Virtual Server,基于IP的负载均衡和反向代理技术,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等...2、Lua 简介 Lua 是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到...很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。...: Refer [4] nginx与lua的执行顺序和步骤说明 Refer [5] ngx_lua用例说明 5、安装 tengine 以及 Lua 扩展 (1)先安装Nginx需要的一些类库: yum...p=165 [6] 第二章 Nginx+Lua开发入门 http://jinnianshilongnian.iteye.com/blog/2186448 [7] 在Nginx使用Lua扩展功能 http
what: 如果函数是一个Lua函数,则为一个字符串"Lua"; 如果是一个C函数,则为"C"; 如果是一个"chunk"的主体部分,则为"main"。...域; ‘u’: 包含"nup”,"nparams"以及"isvararg"域; ‘f’: 包含"func"域; ‘L’: 包含"activelines"域;]] 尽可能只在调试过程中使用调试库中的函数...首先,库中一些函数的性能并不卓越。其次,它打破了Lua语言中一些基本的规则,比如函数中定义的局部变量无法在其外部被访问。...最后,你一定不希望在你的最终产品中见到它的身影,所以你可以使用,debug = nil来剔除调试库,同时减少最终产品的大小。.../lua-debug.html
前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 “lua: attempt to yield across metamethod...于是就想使用5.2以上的版本试试;windows下没有5.2以上的版本,又不愿意使用VS编译出lua.exe;就在网上搜索下了关于使用命令行生成lua的静态库.动态库.lua.exe和luac.exe资料...:现整理如下: 将下载的lua源码解压,在src目录下 打开VC命令行提示窗口 执行如下代码即可(针对5.1): 生成~~~ 静态库: del *.obj liblua.lib cl -c -nologo...loslib.c ltablib.c lstrlib.c loadlib.c linit.c link -lib -out:liblua.lib -verbose:lib *.obj 生成~~~ 动态库:...link -link -out:lua.exe -verbose:lib *.obj Building Lua on other systems(eg:windows)原文如下: If you
character ‘%’ 如获取当前年月日时分秒:local date=os.date(“%Y-%m-%d %H:%M:%S”); os.time() 获取当前秒 应用举例 目前大部分游戏都采用了Lua...lua 源码, loslib.c Line 283 行 static int os_date (lua_State *L) { size_t slen; const char *s = luaL_optlstring...luaL_error(L, "time result cannot be represented in this installation"); if (strcmp(s, "*t") == 0) { lua_createtable
在嵌入式linux上,想最简单方便的使用网络资源,如ftp,http,和socket,用c实现容易吗? 解析json,用c实现容易吗?解析json不如用dkjson.lua这个库。...这是因为lua编译依赖readline库,readline库依赖ncurses库,但没有指定,就会出现“未定义的符合引用”错误。...lua5.2,这次应该没问题了吧, 改lua5.2里面的makefile,增加上readline和ncurses库的路径, MYCFLAGS= -I../.....最后,成功交叉编译lua5.2到嵌入式linux上。 ..../lua -v Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio ? 注意,需要把 libncurses.so.5库也放进去才行。
普通文件的初始权限为 666(没有x) ,目录的初始权限 为777(rwx)
我的程序有很多不同的lua虚拟机。每个虚拟机与一个关联C++对象,它是多线程,那么如何快速应利用这个好时机lua_State针来定位到对象指针呢?...由于在我们利用lua的过程中。lua_State这个结构指针是要贯穿全部用到lua的地方的,那么我就行对这个结构进行扩展,让它可以保存我的数据,仅仅须要保存一个指针就可以。...) */ }; 那么对这个结构扩展之后例如以下: struct lua_State { CommonHeader; lu_byte status; StkId top; /* first...) */ int __mydata;//这里 }; //同一时候添加两个lua接口,能够将函数接口放到lapi.c中,声明放到lua.h中就可以,或者你是发烧追求极限效率不在乎很多其它的扩展和更新的朋友...LUA_API void lua_setmydata(lua_State *L, int data){ L->__mydata = data; } LUA_API int lua_getmydata
在《在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统》一文中,我提到了使用Lua的ffi库,可以让我们像写C代码一样写lua程序。...看到这,可能会让想使用ffi库的朋友打起了退堂鼓。那我们如何才可以比较简洁的调用这个函数呢?那就是:编写我们自己的Lua库"fl"。 ...1 lualib.h中新增我们库的名字"fl",并声明注册我们库的函数luaopen_fl …… #define LUA_FFILIBNAME "ffi" #define LUA_FLLIBNAME...在lib_init.c中,将我们的库名字和打开库的名字banding …… { LUA_JITLIBNAME, luaopen_jit }, { LUA_FLLIBNAME, luaopen_fl...主要是实现注册我们库的luaopen_fl函数,和函数名和函数地址绑定结构体数组uaL_Reg_fl_lib #include "lua.h" #include "lauxlib.h" #include
前言 为什么要用lua脚本操作redis数据库?...1.减少开销–减少向redis服务器的请求次数 2.原子操作–redis将lua脚本作为一个原子执行 3.可复用–其他客户端可以使用已经执行过的lua脚本 4.增加redis灵活性–lua脚本可以帮助...script 127.0.0.1:6379> lua与redis数据类型转换 lua通过redis.call()或者redis.pcall()函数执行redis命令的返回值被转换成了lua数据结构...bulk false 从redis数据类型到lua数据类型或者从lua数据类型到redis数据类型,都有以上对应规则,但是从 从lua转换到redis有一条额外的对应规则 lua boolean true...访问一个全局变量(无论是否存在)都会引起脚本停止 总结 使用lua操作redis数据库能够带来很多便利,后续将提供实例展示lua脚本是如何操作redis数据库的.
image.png 要进行新建扩展分区的磁盘是 /dev/sda # fdisk /dev/sda # p 打印分区表 ?...image.png 此时磁盘已经有了3个分区,如果要再弄2个分区就不行,这个时候我们进行新建扩展分区 # n 添加一个新的分区 # e 添加一个扩展分区 # p 打印分区表 ?...image.png 此时已经看见扩展分区创建完成,在扩展分区下面新建2个分区 因为现在扩展分区是20G 所以下面的2个分区都给10G # n # +10G # p ? image.png ?
扩展Linux网络栈 来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,将这篇文章穿插入内。...简介 本文的描述了Linux网络栈中的一组补充技术,用于增加多处理器系统的并行性和提高性能。...RSS和其他扩展技术的目的是提升性能。多队列分发技术也可以按照优先级处理流量,但这不是该技术关注的内容。...驱动可以使用内核库cpu_rmap (“CPU affinity reverse map”)来生成映射。对于每个CPU,映射中相应的队列设置为最接近缓存位置的CPU的队列。...参考: Queues, RSS, interrupts and cores Linux Network Scaling: Receiving Packets Linux 网络协议栈收消息过程-Per CPU
本文实例讲述了Thinkphp 框架扩展之类库扩展操作。分享给大家供大家参考,具体如下: 类库扩展 ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。...公共类库 公共类库通常是指ThinkPHP/Library目录下面的类库,例如: Think目录:系统核心类库 Org目录:第三方公共类库 这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中...,例如,我们添加一个Com目录用于企业类库扩展: Com\Sina\App类(位于Com/Sina/App.class.php ) namespace Com\Sina; class App { } Com...Lib', ) 我们在应用目录下面创建了一个Lib目录用于放置公共的Lib扩展,如果我们要把上面两个类库放到Lib\Sina目录下面,只需要调整为: Lib\Sina\App类(位于Lib/Sina/App.class.php...} 在使用的时候,需要按下面方式调用: import('Com.Sina.Util.Couter'); $object = new \Counter(); 应用类库 应用类库通常是在应用或者模块目录下面的类库
Python扩展库安装 Python提供了丰富的标准库(不需要安装) ,还支持大量的第三方扩展库,它们数量众多、功能强大、涉及面广、使用方便,得到各行业领域工程师的青睐。...因此熟练运用Python扩展库,可以提高软件的开发速度。 何谓模块、库、包? 一般来说, 模块是一个Python源程序文件, 库/包是一个包含若干模块并且有一个文件名为__init__.py的文件夹。...对于包含完整功能代码的单个模块,叫 作库也可以,但是一般不把库叫作模块。 Python自带的pip工具是管理扩展库的主要方式,支持Python扩展库的安装、升级和卸载等操作。...首次使用时建议升级pip为最新版本: python-m pip install --upgrade pip 注意: 扩展库之间可能有相互依赖 升级一个扩展库,可能会导致相关扩展库不能使用, 要关注版本之间的要求...有些扩展库可能需要VC环境来进行编译 建议使用国内的镜像源 安装扩展库文件名不一定和库/模块名一致 【opencv-python--->cv2】
领取专属 10元无门槛券
手把手带您无忧上云