Lua 提供了一个自动的内存管理。这就是说你不需要关心创建新对象的分配内存操作,也不需要在这些对象不再需要时的主动释放内存Lua 通过运行一个垃圾收集器来自动管理内存,以此一遍又一遍的回收死掉的对象(这是指 Lua 中不再访问的到的对象)占用的内存Lua 中所有对象都被自动管理,包括: table, userdata、 函数、线程、和字符串。 Lua 实现了一个增量标记清除的收集器。它用两
文章目录1.c通过虚拟机和虚拟栈调用luatest-vm.ctest-vm.lua打印效果2.lua通过虚拟机和虚拟栈调用clua-tbl.ctest-tbl.lua3.lua的协程test-co.lua展示效果4.常用的lua api解释(C语言函数)1)lua_State *luaL_newstate (void);2)lua_State* L=luaL_newstate();3)lua_S
转载 2024-02-19 21:34:33
191阅读
这两天剖析了一下socket.lua,整体不是很难,主要是数据缓冲区的实现需要好好分析一下。这里读写数据也是用到了缓冲池的思想,为了更加直观的说明代码,还有方便测试,我去掉lua代码,把核心接口直接用C++实现了一遍:#include <stdio.h> #include <string.h> #include <vector> using std::vecto
转载 2024-02-27 14:59:34
180阅读
1.lua数据类型#define LUA_TNONE (-1) //无类型 #define LUA_TNIL 0 //空类型 #define LUA_TBOOLEAN 1 //bool #define LUA_TLIGHTUSERDATA 2 //指针(需要关注内存释放) #define LUA_TNUMBER
转载 2024-04-27 18:46:42
62阅读
Lua内存分析工具 最近给公司写了一个lua内存分析工具,可以方便的分析出Lua内存泄露问题(虽然还没正式使用,但我是这样想的,哈哈哈),有图形化界面操作,方便手机端上传快照等功能内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lua分析工具本身也会影响到lua内存占用(尽管用的是弱表缓存的),也会有些不准确。 Lua方案:https://github.com/y
摘要:在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特点,关于python之后会写相关的文章,python对于我而言更喜欢用来编写工具,我前边一些相关的算法也是用python来实现的。今天主要讲Lua相关的开发技术。Lua具有如下特点:Lua 拥有虚拟机的概念,
转载 2024-09-18 20:38:15
61阅读
如果要监控某个程序进程里的内存读写数据信息, 知道目标进程里都对哪些内存地址进行读写了哪些数据信息,我们该怎么办呢?那么我们就需要进行内存监控技术,这项技术,一般可以用于以下方面: 1.检测监控自己写的程序在运行时候,对各内存地址的数据读写的行为是否如自己所想效果 2.监控别人的软件程序进程里的内存读写事件,来获取别人的软件程序的一些数据内存地址信息,用来偷取 不管是哪一点,结果是学会这项技术后
本教程将介绍Lua的栈及基本栈操作,同时还有如何在C/C++代码里面读取Lua的Table。 理解LuaLua通过一个“虚拟栈”与C/C++程序进行数据交互,所有的Lua C API都是通过操作这个栈来完成相应的数据通信。 Lua的这个“虚拟栈”解决了C/C++程序与Lua程序通信的两大问题: Lua使用垃圾回收,而C/C++需要手动管理内存Lua使用动态类型,而C/C++使用的是静态
转载 2024-05-08 12:41:56
85阅读
   lua是一种可扩展的语言,因为它的解释器是C的一个应用程序。这就允许了C可以调用lua写的库,lua也可以调用C为它扩展的库;网络游戏中常用的是lua作为C的插件来使用的。本文主要是针对lua为C写插件的用法做一个小的总结。    需要用到的头文件:     lua.h: 定义
一、lua c api 是什么  C API是一组能使C/C++代码与Lua交互的函数。其中包括读写Lua全局变量、调用Lua函数、运行一段Lua代码,以及注册C函数以供Lua代码调用等。二、常用api  在Lua和C语言之间进行数据交换时,由于两种语言之间有着较大的差异,比如Lua是动态类型,C语言是静态类型,Lua是自动内存管理,而C语言则是手动内存管理。为了解决这些问题,Lua的设计者使用了
转载 2024-02-25 07:47:49
69阅读
引子前些日子,入手了本开涛写的《亿级流量网站架构核心技术》,里面提到nginx+lua相结合开发高并发、高负载下的服务,看着手痒就立个task,有时间尝试一翻,随手也把操作步骤记录下来,有兴趣的朋友也可以试试。不采用lua之前,我们从redis获取数据的路径与采用lua之后获取数据的路径对比,明显可以看出效率的提升。 安装OpenResty参考官方给出的yum安装步骤,各种系统均有支
转载 2024-04-07 10:07:23
101阅读
来看一下 ZIO 缓冲。词法分析读一个一个的字符就是从它读的。或者 umdump 时也是从它读字符(一个 char 字节)的。缓冲区隔离了下层数据源的不同,对上层提供一致的读取接口。相关的代码文件是 lzio.h 和 lzio.c 。先看一下数据结构:#ifndef ZBSIZE #define ZBSIZE 256 /* buffer size */ #endif s
转载 2024-03-27 08:48:49
58阅读
ngx.argngx.var.VARIABLECore constantsHTTP method constantsHTTP status constantsNginx log level constantsprintngx.ctxngx.location.capturengx.location.capture_multingx.statusngx.header.HEADERngx.resp.g
转载 2024-05-19 08:47:11
28阅读
前言 Lua作为游戏开发的吃饭语言,写了2、3年的lua,一行源码没看过,只能当个工具人,勉强维持生活。机缘巧合听了公司一个lua table源码解析的分享,感觉还蛮有意思,决定开始看一下lua源码,看懂这个我们开发使用的吃饭语言。【主要是闲了】 1.1 目录 下载到lua-5.2.1的源代码后,会发现源代码文件。全部放在src子目录下。这些文件根据实现功能的不同,可以分为四部分。
背景:采用Lua进行文件读和写操作,最终简单模拟文件的复制操作。第一大类:IO表调用方式1、简单读写模式:io.input([file]) 设置默认的输入文件,file为文件名(此时会以文本读入)或文件句柄(可以理解为把柄,有了把柄就可以找到文件),返回文件句柄。读操作。io.output([file]) 设置默认的输出文件,写操作时候用。io.close([file]) 关闭文件,不带参数关闭默
目录一、Lua栈操作 - 引用类型在栈上处理方式二、Lua栈操作 - 入栈操作三、Lua栈操作 - 栈类型操作四、Lua栈操作 - 从栈上获取数据五、Lua栈操作 - 其它栈操作上一章节讲解了Lua的栈结构,理解了上一篇的栈接口在看本片应该比较好理解。Lua常用的栈操作API主要在lapi.c(lapi.c也提供给外部使用)文件中。一、Lua栈操作 - 引用类型在栈上处理方式Lua针对需要垃圾回收
转载 2024-04-08 22:01:02
89阅读
描述如何使用C++配置lua库,并读写lua文件配置lua进入lua官方网站http://www.lua.org 点击“Download”,下载最新版本的lua库下载后的文件名类似于“lua-5.3.5.tar.gz”,解压它解压后的文件夹应该包含一个“src”的文件夹,里面包含lua官方的api,包括很多.c和.h文件,还有一个makefile将这个src文件夹拷贝到你的工程目录下,并且官网指示
转载 2024-04-04 09:48:36
122阅读
这篇文章主要介绍了Lua文件读写详解,本文讲解了文件读写的简单模型和完整模型,并给出了一个操作示例,需要的朋友可以参考下  lua里的文件读写模型来自C语言,分为完整模型(和C一样)、简单模型。1、简单模型  io.input([file])  设置默认的输入文件,file为文件名(此时会以文本读入)或文件句柄(可以理解为把柄,有了把柄就可以找到文件),返回文件句柄。  io.outpu
转载 2023-10-25 05:37:48
169阅读
1、lua_code_cache on/off;场景:该命令使用的上下文:http, server, location, location if作用:是ngx_lua模块的一条指令,它为*_by_lua_file(比如content_by_lua_file)指令以及lua模块指定开启或关闭lua代码缓存,set_by_lua_file, content_by_lua_file, access_by
转载 2024-07-06 20:44:44
60阅读
Lua实现广告缓存缓存架构 设置两级缓存,分别是Nginx缓存和redis缓存,通过lua脚本进行查询与分支缓存实现编写lua脚本,通过Nginx的配置文件进行配置,这里使用的是OpenResty,是一个可伸缩的web平台,可以理解成封装了Nginx集成了lua脚本Nginx限流控制速率进行限流限流算法漏桶算法(Nginx所采用的) 请求首先进入漏桶,而后以平滑的速率流出,如果漏桶满了则请求被丢弃
转载 2024-07-18 11:33:38
91阅读
  • 1
  • 2
  • 3
  • 4
  • 5