1、简介:Lua 语言最初的设计目标是要能够嵌入到其他应用程序里,所以它天生就是非常 “轻量级”,语法简洁优雅,很容易学习,任何一个有初级变成经验的人都可以在几天只能完全掌握并投入实际开发工作。但 “轻量级” 并不意味着劣化,比起其他脚本语言来说 Lua 的功能也毫不逊色,该有的特性都有,而且表(table)结构非常灵活,能够模拟出其他语言里的数组、集合、字典、类、名字空间等特性,此外还提供闭包
转载 2024-05-29 11:27:15
74阅读
一、概述在编写openresty代码时,有时候要调用自己编写的C++模块。 本文给出了两种常用的方法:1、基于luajit的cffi调用,这主要用于调用阻塞时间比较短的C++模块;2、基于openresty的shell模块调用,这对应于lua的os.execute调用,这可用于调用阻塞时间比较长的C++模块。在C++多进程master-worker工作机制较完整的实现,边端和云端协同工作实现 这篇
转载 2024-04-25 11:42:53
45阅读
一、JNI概述JNI是Java Native Interface的缩写,中文译为“Java本地调用”。 JNI是一种技术,通过它可以做到:Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。Native程序中的函数可以调用Java层的函数,也就是说在C/C++程序中可以调用Java的函数。JNI技术的推出有以下几个方面的意义:Java的虚拟机是用Nat
转载 2023-12-06 18:16:58
160阅读
最近公司的游戏项目中出现了一个奇怪的bug。安卓端当旁观玩家过多,比如达到150人的时候,直接崩溃。 出现这个bug的时候,我也很崩溃。仔细看了一下log,提示`local reference table overflow (max=512)`百度一下,说是Android JNI局部引用表溢出。根据操作步骤,定位到了lua代码中的引起报错的代码块。仔细查看了代码,发现是lua调用android端
转载 2024-03-05 11:12:45
27阅读
Ngx指令lua_code_cache on | off; 作用:打开或关闭 Lua 代码缓存,影响以下指令: set_by_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 及强制加载或者reload Lua 模块等.缓存开启时修改LUA代码需要重启nginx,不开启时则不用。开发阶段一般关闭缓存。
转载 2024-03-05 14:48:00
112阅读
0x05 函数定义与调用形式定义:函数是对语句和表达式的抽象。函数的调用形式:无论是语句或者表达式,都需要将所有参数放到一对圆括号中。即使调用没有参数也必须写出一对空括号。 注:此条规则对一种情况例外—一个函数只有一个参数,并且此参数是一个字面字符串或者table构造式(见下列代码)print "Hello World" --只有一个参数且为字面字符串 f{x = 20, y = 30}
转载 2024-03-11 11:44:44
137阅读
补充:对JAVA传入数据的处理 1. 如果传入的是bytearray的话,作如下处理得到buffer:   点击(此处)折叠或打开1. char *tmpdata = (char*)(*env)->GetByteArrayElements(env, bytearray, NULL); 2. (*env)->ReleaseByteArrayElements(env, bytearray
转载 2024-03-07 17:23:00
20阅读
lua中,  问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end    _test(1, nil, 3))  问题2:更甚于在一个带可变参数的函数里返回值是一个带可变参数的尾调用,这时还能正确得到要的参数?(比如 local function _test2(...) retu
JDBC实践前言一、JNI编程基本流程1.定义native本地方法2.编译生成class文件3.根据class文件生成h文件4.根据h文件编写函数的具体实现5.编译本地方法源文件并生成共享库链接6.编写测试java类二、需要用到的JNI方法1. 数组2.修改或读取对象的属性值三、通过JNI创建本地消息队列1.消息队列的基本原理2.消息队列的基本使用3.native方法定义4.根据h文件编写函数的
转载 2024-03-21 10:53:19
78阅读
Lua中的table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,
转载 2024-05-23 16:27:30
53阅读
一、单个参数的传递   首先我们在Lua中注册一个C类PJYCallbackMgr,其中一个方法为:          1. int testLuaCall(lua_State* L){ 2. ... 3. ...   然后我们在Lu
转载 1月前
402阅读
一、简介  Lua的变长参数和unpack函数在实际的开发中应用的还挺多的,比如在设计print函数的时候,需要支持对多个变量进行打印输出,这时我们就需要用到Lua中的变长参数和unpack函数了。二、Lua变长参数与unpack函数  Lua中支持可变参数,用 ... 表示。比如定义下面的这样一个函数:local function func1(...) end  当然它也支持在变长参数前面添加固
Lua中的函数和C++中的函数的含义是一致的,Lua中的函数格式如下:function MyFunc(param) -- Do something end在调用函数时,也需要将对应的参数放在一对圆括号中,即使调用函数时没有参数,也必须写出一对空括号。对于这个规则只有一种特殊的例外情况:一个函数若只有一个参数,并且此参数是一个字符串或table构造式,那么圆括号便可以省略掉。看以下代码:、
转载 2024-02-26 13:42:25
120阅读
随着对Lua使用的增加,开始关注很多该语言的细节,例如,怎样向Lua函数传递不同种类、不同数量的参数,怎样返回多种参数等等。今天主要介绍Lua函数的基本用法,包括可变参数的使用。1. Lua函数格式Lua函数定义格式如下:optional_function_scope function function_name( argument1, argument2, argument3..., argum
转载 2024-02-08 03:40:42
423阅读
        C与Lua交互                    ——在C和Lua之间相互传递数据,并以此操作SQl
转载 2024-04-30 23:58:41
177阅读
Android_Jni  操作指南NDK(Native  Development  Kit),需要下载几个工具,下面我给大家按步骤的说明 Jni 的使用方 法:一、准备工作Cygwin x86 http://cygwin.com/setup-x86.exeandroid-ndk-x86 http:/
转载 2023-10-23 19:34:40
84阅读
作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法。 可是导入android源码后,基本都有错误,R.java也不会自动生成, 因为是第一次导入工程,工程有错R.java就不会自动生成了,工程有错误,当然模拟器就不能启动,也就看不到效果。
转载 2023-06-26 12:28:07
52阅读
今天给大家整理了一下jvm和android 使用的Dalvik(dvm)的区别 首先看一下android的结构层图从应用层相应调用Application framework层,这俩层都是由java程序编写的,然后通过JNI接口调用c层,最后执行在dvm虚拟机上,所有的核心全部依赖于linux核心层然后我们聊一下java在jvm上是怎么编译运行,实现跨平台的呢?我们会编写一个简单的java类,然后j
转载 2023-08-29 20:29:40
75阅读
目录SQLCipherSQLiteCrypt其它 SQLCipherSQLCipher 是 SQLite 数据库的的开源扩展,使用了 256 位 AES 加密,支持跨平台、零配置、数据100%加密、加密开销低至 5 -15%、占用空间小、性能出色等优点,因此非常适合保护嵌入式应用程序数据库,并且非常适合移动开发。关于 SQLCipher 的使用,官网提供了 SQLiteDatabase 的接入
Lua学习笔记:05-Lua语法基础(3)1. 函数2. 运算符3. 字符串格式化 1. 函数函数定义格式如下:optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) function_body return result_params_comma
  • 1
  • 2
  • 3
  • 4
  • 5