草庐IT

lua(tolua)与C#交互以及泄漏的整理与总结

前言lua与C#交互通信原理lua调用C#调用无返回值函数(lua访问image的SetNativeSize)调用返回C#对象的函数(lua访问image的mainTexture)参考一个调用场景C#调用lua通过Require\Dofile调用lua以及通过DoString执行DoString通过lua虚拟机对象获取对应的对象实例完成调用Tolua中泄漏1.table作为key。2.C#持有lua对象使用完毕不执行释放接口。简单了解一下lua的GC总结前言最近在看lua泄漏的问题,接着就暴露出自己的一些问题,对于lua的认识更多的是停留在语法使用上,而对于lua如何产生泄漏,如何检查,如何优

lua(tolua)与C#交互以及泄漏的整理与总结

前言lua与C#交互通信原理lua调用C#调用无返回值函数(lua访问image的SetNativeSize)调用返回C#对象的函数(lua访问image的mainTexture)参考一个调用场景C#调用lua通过Require\Dofile调用lua以及通过DoString执行DoString通过lua虚拟机对象获取对应的对象实例完成调用Tolua中泄漏1.table作为key。2.C#持有lua对象使用完毕不执行释放接口。简单了解一下lua的GC总结前言最近在看lua泄漏的问题,接着就暴露出自己的一些问题,对于lua的认识更多的是停留在语法使用上,而对于lua如何产生泄漏,如何检查,如何优

Wireshark解析器(Dissector)插件-Lua

现有问题如果直接使用Wireshark查看常见诸如Http等协议报文,并不会有任何不便,但是如果查看私有协议报文,无法区分哪些是TCP协议相关报文,哪些是含有消息体的私有协议报文,也只能看到一串Byte和对应ASCII编码的Data值,无法知道数据中的各个字节对应哪个字段代表什么含义,更不能根据这些对应字段值进行过滤什么是解析器(Dissector)解析器(Dissector)是Wireshark中的概念,用于解析协议,将报文中对应的Bytes转为相应的字段值可以简单理解为Wireshark中的解码器。它不止能解析将相应位置的Bytes转为对应字段,还能将解析出来的字段用于报文过滤,还能自定义

Wireshark解析器(Dissector)插件-Lua

现有问题如果直接使用Wireshark查看常见诸如Http等协议报文,并不会有任何不便,但是如果查看私有协议报文,无法区分哪些是TCP协议相关报文,哪些是含有消息体的私有协议报文,也只能看到一串Byte和对应ASCII编码的Data值,无法知道数据中的各个字节对应哪个字段代表什么含义,更不能根据这些对应字段值进行过滤什么是解析器(Dissector)解析器(Dissector)是Wireshark中的概念,用于解析协议,将报文中对应的Bytes转为相应的字段值可以简单理解为Wireshark中的解码器。它不止能解析将相应位置的Bytes转为对应字段,还能将解析出来的字段用于报文过滤,还能自定义

Redis+Lua实现简易的秒杀抢购

1  商品抢购主要逻辑是:减库存,记录抢购成功的用户@RestControllerpublicclassDemoController{@ResourceprivateStringRedisTemplatestringRedisTemplate;privatestaticfinalStringGOODS_STOCK_KEY="goods:001";//秒杀商品库存privatestaticfinalStringGOODS_USER_KEY="users:001";//抢购成功的用户列表/***在不加锁的情况下,会发生超卖*/@GetMapping("/seckill")publicStrings

Redis+Lua实现简易的秒杀抢购

1  商品抢购主要逻辑是:减库存,记录抢购成功的用户@RestControllerpublicclassDemoController{@ResourceprivateStringRedisTemplatestringRedisTemplate;privatestaticfinalStringGOODS_STOCK_KEY="goods:001";//秒杀商品库存privatestaticfinalStringGOODS_USER_KEY="users:001";//抢购成功的用户列表/***在不加锁的情况下,会发生超卖*/@GetMapping("/seckill")publicStrings

Lua5.4源码剖析:二. 详解String数据结构及操作算法

概述lua字符串通过操作算法和内存管理,有以下优点:节省内存。字符串比较效率高。(比较哈希值)问题:相同的字符串共享同一份内存么?相同的长字符串一定不共享同一份内存么?lua字符串如何管理内存?数据结构lua字符串TStringtypedefstructTString{CommonHeader;lu_byteextra;/*reservedwordsforshortstrings;"hashash"forlongs*/lu_byteshrlen;/*lengthforshortstrings*/unsignedinthash;union{size_tlnglen;/*lengthforlong

Lua5.4源码剖析:二. 详解String数据结构及操作算法

概述lua字符串通过操作算法和内存管理,有以下优点:节省内存。字符串比较效率高。(比较哈希值)问题:相同的字符串共享同一份内存么?相同的长字符串一定不共享同一份内存么?lua字符串如何管理内存?数据结构lua字符串TStringtypedefstructTString{CommonHeader;lu_byteextra;/*reservedwordsforshortstrings;"hashash"forlongs*/lu_byteshrlen;/*lengthforshortstrings*/unsignedinthash;union{size_tlnglen;/*lengthforlong

Pop!_os的使用体验

为什么会选择Pop!_os刚决定使用Linux系统的时候想的肯定是用ArchLinux(不得不说ArchWiki太NB了),但是遇到两个麻烦没有解决:1.连上wifi后发现没有分配IPv4地址,google了一圈都没找到解决方法。于是放弃了。2.第二次尝试安装Arch(主要是第一次安装失败后,心中一直有这个梗),网卡打不开了。虽然第一次安装过程中也遇到了这个情况,但好在解决了。不过这一次用相同的方法却失败了无奈再次放弃。在安装Arch第一次失败后,我安装了Manjaro,一切顺利。可是用起来总感觉鼠标移动和界面会有些卡顿,(还有就是不太习惯于pacman)于是去装显卡驱动。装是装了,但重启一下

Pop!_os的使用体验

为什么会选择Pop!_os刚决定使用Linux系统的时候想的肯定是用ArchLinux(不得不说ArchWiki太NB了),但是遇到两个麻烦没有解决:1.连上wifi后发现没有分配IPv4地址,google了一圈都没找到解决方法。于是放弃了。2.第二次尝试安装Arch(主要是第一次安装失败后,心中一直有这个梗),网卡打不开了。虽然第一次安装过程中也遇到了这个情况,但好在解决了。不过这一次用相同的方法却失败了无奈再次放弃。在安装Arch第一次失败后,我安装了Manjaro,一切顺利。可是用起来总感觉鼠标移动和界面会有些卡顿,(还有就是不太习惯于pacman)于是去装显卡驱动。装是装了,但重启一下