Lua转让C功能】的更多相关文章

在上一篇文章中(C调用lua函数)中.讲述了怎样用c语言调用lua函数,通常,A语言能调用B语言,反过来也是成立的.正如Java 与c语言之间使用JNI来互调.Lua与C也能够互调. 当lua调用c函数时,使用了和c调用lua中的同一种栈.c函数从栈中得到函数,然后将结果压入栈中.为了区分返回结果和栈中的其它值,每个函数返回结果的个数. 这里有个重要的概念:这个栈不是全局的结构.每一个函数都有自己的私有局部栈.哪怕c函数调用了lua代码.lua代码再次调用该c函数.他们有各自独立的局部栈.第一个…
使用NGINX+LUA实现WAF功能 一.了解WAF 1.1 什么是WAF Web应用防护系统(也称:网站应用级入侵防御系统 .英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用 防火墙 是通过执行一系列针对HTTP/HTTPS的 安全策略 来专门为Web应用提供保护的一款产品. 1.2 WAF的功能 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝. 支持URL白名单,将不需要过滤的URL进行定义. 支持User-Agent的过…
Lua中的函数带有词法定界的第一类值. 第一类值: 在Lua中,函数和其它值(数值,字符串)一样,函数能够被存放在变量中,也存放在表中, 能够作为函数的參数,还能够作为函数的返回值. 词法定界:被嵌套的函数能够訪问他外部函数的变量. lua的函数也能够是匿名的,当我们提到函数名时,实际上是说一个指向函数的变量. 闭包 词法界定加上第一类函数是一个功能强大的概念. function sortbygrade(names, grades)      table.sort(names, function…
dll按功能luaL_openlib出口,然后lua使用package.loadlib导入库函数,基本就是这么个过程,以下上代码来说明一切. #include "stdafx.h" #ifdef __cplusplus extern "C"{ #endif #include "lua.h" #include "lualib.h" #include "lauxlib.h" #ifdef __cplusplus…
原创作品,请注明出处转载CSDN:http://blog.csdn.net/relar/article/details/38084689 开发游戏server往往有"热更新"的需求,就是在不停止服务程序的情况下.对服务程序进行升级. 这里採用lua脚本桥接C++的模式.程序主框架用C++,程序的业务逻辑也是C++(详细的是C++写的DLL),这两者之间用LUA脚本语言进行桥接.当程序执行时,仅仅要改变LUA脚本,即能够选择使用不同的DLL.以实现业务逻辑的升级更新. 上演示代码,代码分…
从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值 Redis2.6内置的Lua Script支持,可以在Redis的Server端一次过运行大量逻辑. • 整个Script默认是在一个事务里的. • Script里涉及的所有Key尽量用变量,从外面传入,使Redis一开始就知道你要改变哪些key. • EVAL每次传输一整段Script比较费带宽,可以先用SCRIPT LOAD载入script,返回哈希值.然后用EVALHASH执…
今天,在发展中使用js和Java互动.通常我们使用更多的是js转让Java方法.可以使用dwr.Ajax.jquery.突然发现Java转让js然后,我真的没见过,今天,互联网提供以下信息,顺便总结: 条件:jdk1.6支持.1.6一旦死. js代码例如以下: function convert (id,str) { if ('505041'==id) { return str; } else { return "A"; } } Java代码例如以下: package com.sc; i…
cocos2dx的utils类中包含截图功能,使用方法如下: cc.utils:captureScreen(function(successed,outputFile)--第一个参数是截图成功或者失败的回调函数 if successed then--如果成功,返回true,否则返回nil local sp = cc.Sprite:create(outputFile) end end,"captureTexture.png")第二个参数是保存文件名 看cocos源代码,截图文件会将保存在…
lua在openresty中获取请求的请求头 local head_table = ngx.req.get_headers() 由于table类型,无法直接使用ngx.say()显示,需要转换为cjson local cjson = require "cjson" local tab_list = cjson.encode(head_table) lua在字符串中的一些操作方法 下面中a为字符串: 正则方法:_,_,d=string.find(trim(a),"<str…
函数链 http://lua-users.org/wiki/FiltersSourcesAndSinks A chain is a function that combines the effect of two (or more) other functions, but whose interface is indistinguishable from the interface of one of its components. Thus, a chained filter can be…
没有其他的,搞搞cocos2dx的lua文字,话lua这件事情在几年前学过一段时间.还曾对自己c++介面,我已经做了一些小东西.只是时间的流逝,模糊记忆. 拿起点功夫和成本.下面是我的一些经验. cocos2dx运用tolua++来制作的lua接口,tolua++文档不多,网上的一些文章也是答非所问,所以自己看代码是最佳学习途径. cocos2dx操作lua的类是CCLuaEngine,当中实现了载入与实行lua脚本.以及操作lua stack. LuaCocos2d.cpp非常主要,文件的开头…
在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Nginx团队也开始意识到这个问题,开发了nginxScript:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行:而目前市面上…
     Lua的长处之一就是可以通过新类型和函数来扩展其功能.动态类型检查最大限度允许多态出现,并自动简化调用内存管理的接口,因为这样不需要关心谁来分配内存谁来释放内存,也不必担心数据溢出.高级函数和匿名函数均可以接受高级参数,使函数更为通用.      Lua使用者分为三大类:使用Lua嵌入到其他应用中的.独立使用Lua的.将Lua和C混合使用的.     .在控制结构的条件中除了 false和 nil为假,其他值都为真.所以Lua认为0和空串都是真.   Lua会自动在 string和 n…
Lua包库为lua提供简易的加载及创建模块的方法,由require.module方法及package表组成 1.module (name [, ···]) 功能:建立一个模块. module的处理流程: module(name, cb1, cb2, ...) a. 如果package.loaded[name]是一个table,那么就把这个table作为一个module b. 如果全局变量name是一个table,就把这个全局变量作为一个module c. 当以前两种情况都不存表name时,将新建…
catalog . Lua语言简介 . 使用 Lua 编写可嵌入式脚本 . VS2010编译Lua . 嵌入和扩展: C/C++中执行Lua脚本 . 将C++函数导出到Lua引擎中: 在Lua脚本中执行C++函数 . 将C函数导出到Lua引擎中: 在Lua脚本中执行C函数 . C++ Function Library For Lua . Lua.Python嵌入式语言引擎的优缺点对比 1. Lua语言简介 0x1: 运行 Lua是类C的,所以,他是大小写字符敏感的,同时,Lua脚本的语句的分号是…
使用Nginx+Lua(OpenResty)开发高性能Web应用 博客分类: 跟我学Nginx+Lua开发 架构 ngx_luaopenresty 在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Ngin…
转载地址:http://www.tuicool.com/articles/IFjIJjU wrk是一款现代化的http压测工具,提供lua脚本的功能可以满足每个请求或部分请求的差异化. wrk中执行http请求的时候,调用lua分为3个阶段,setup,running,done,每个wrk线程中都有独立的脚本环境. wrk的全局属性 wrk = { scheme = "http", host = "localhost", port = nil, method = &…
转载地址:http://www.yiibai.com/lua/lua_standard_libraries.html Lua的标准库提供了一组丰富的功能,与C的API直接实现,建立在Lua编程语言函数.Lua编程语言中这些库提供服务,还提供外部服务,如文件和数据库操作. 建于官方的C的API,这些标准库是作为单独的C模块.这包括: 基本库,其中包括协程分库 模块库 字符串操作 表操作 数学库 文件输入和输出 操作系统工具 调试设备 基本库 我们使用的基本库根据遍及不同主题的教程.下表提供了所有相…
转载自:http://magicpanda.net/2010/10/lua%E6%9E%B6%E6%9E%84%E6%96%87%E6%A1%A3/ Lua架构文档(翻译) 十 102010 前段时间翻译了lua官方关于lua5架构设计的一份文档,现在分享给大家. 注意:所有版权都归lua官方所有,本人仅将其翻译为中文,以方便中文阅读者.翻译中出现任何错误导致的结果,本人不负任何责任. 如果有任何翻译错误,以及意见与建议,请email本人.邮件地址:ice_ok@163.com. 转载请注明原作…
IOS中如何调用LUA,以及LUA如何调用IOS中的功能 下面将讲解一下如何在iOS里调用Lua函数,以及Lua函数如何调用iOS本地函数. 转载请注明出处.原文出处 http://www.cnblogs.com/winewind/archive/2012/09/06/2673094.html 1 lua_State *l; 2 l = lua_open(); lua_open 若要使用Lua,必须先初始化一个lua_State环境,以后的所有Lua相关操作都必须包含这个State. 1 voi…
Lua本身并没有提供switch-case语句,难道说我们就只能靠不断的"if ... elseif ... "这样冗长的方式来实现选择的功能么?当然不是这样的.Lua提供了功能强大的metatable,我们可以选取任意的数据类型作为table的索引类型和元素类型.而实质上在C语言中,switch-case语句是根据不同的情况(参数的值)来选择执行不同的动作,数组则是根据不同的下标返回对应的数据.如果函数可以作为一种数据类型存在,那么很明显switch-case语句只是生成了一个元素类…
摘自(http://jinnianshilongnian.iteye.com/blog/2280928) 在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Nginx团队也开始意识到这个问题,开发了ngin…
1.Lua中有8个基本类型分别为:nil.boolean.number.string.userdata.function.thread和table 2.Lua中的表达式包括数字常量.字符串常量.变量.一元和二元运算符.函数调用.还可以是非传统的函数定义和表构造 *表的构造: 构造器是创建和初始化表的表达式.表是Lua特有的功能强大的东西.最简单的构造函数是{},用来创建一个空表.可以直接初始化数组: days = {"Sunday", "Monday", "…
使用 Lua 编写可嵌入式脚本 Lua 提供了高级抽象,却又没失去与硬件的关联. 虽然编译性编程语言和脚本语言各自具有自己独特的优点,但是如果我们使用这两种类型的语言来编写大型的应用程序会是什么样子呢?Lua 是一种嵌入式脚本语言,它非常小,速度很快,功能却非常强大.在创建其他配置文件或资源格式(以及与之对应的解析器)之前,请尝试一下 Lua. 尽管诸如 Perl.Python.PHP 和 Ruby 之类的解释性编程语言日益被 Web 应用程序广泛地采纳 -- 它们已经长期用来实现自动化系统管理…
http://dualface.github.io/blog/2013/01/27/call-objectivec-from-lua/ 月初的时候,发了一篇关于 Lua 与 Java 互操作的文章,里面提到了我创建的 LuaJavaBridge 工具.现在,最新的 Lua 与 Objective-C 互操作工具也出来了.因为是专门针对 cocos2d-x 的,所以命名为 CCLuaObjcBridge. PS: 以前的 LuaJavaBridge 也会改名为 CCLuaJavaBridge,并且…
这里, 简单的记录一下lua中闭包的知识和C闭包调用 前提知识: 在lua api小记2中已经分析了lua中值的结构, 是一个 TValue{value, tt}组合, 如果有疑问, 可以去看一下 一些重要的数据结构 lua中有两种闭包, c闭包和lua闭包 两种闭包的公共部分: #define ClosureHeader CommonHeader;     lu_byte isC;        lua_byte nupvalues; GCObject* gclist;       struc…
缘由 想对Lua脚本进行安全性处理,可惜一直没有想到很好的解决方案,考虑过用原生Lua将脚本编译成二进制代码,也考虑过用zlib将文件进行加密压缩处理,但是感觉都不是最佳方案,今天忽然想到有个东西叫LuaJit不错,网上搜索了一把,感觉这东西比上面两种方案来的好,就赶紧下载下来尝试使用了一把. 环境 Visual Studio 2012 LuaJit2.0.1 我是直接从cocos2d-x2.2.5版本中复制出来的 使用步骤 1.使用VS的控制台工具,进入到luajit的src目录,执行msvc…
0x01 起因 几天前学弟给我介绍他用nginx搭建的反代,代理了谷歌和维基百科. 由此我想到了一些邪恶的东西:反代既然是所有流量走我的服务器,那我是不是能够在中途做些手脚,达到一些有趣的目的. openresty是一款结合了nginx和lua的全功能web服务器,我感觉其角色和tornado类似,既是一个中间件,也结合了一个后端解释器.所以,我们可以在nginx上用lua开发很多"有趣"的东西. 所以,这篇文章也是由此而来. 0x02 openresty的搭建 openresty是国…
一.什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版. 二.优势 1)lua是一个免费.小巧.简单.强大.高效.轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k. 2)它是用C语言开发的项目,所以可以在大部分的操作系统上运行 3)lua是目前速度最快的脚本语言,既可以提升语言的灵活性还…
1.在Redis中使用Lua 在Redis中执行Lua脚本有两种方法:eval和evalsha. (1)eval eval 脚本内容 key个数 key列表 参数列表 下面例子使用了key列表和参数列表来为Lua脚本提供更多的灵活性: 127.0.0.1:6379> eval 'return "hello " .. KEYS[1] .. ARGV[1]' 1 redis world "hello redisworld" 此时KEYS[1]="redi…