这块主要记录Lua语句的写法Lua中除了基本的赋值、控制结构、过程调用语句外,还有一些特殊用法如多重赋值(multiple assignment)和局部变量声明赋值语句多重赋值语句用法:> a,b=10,20 > print(a) 10 > print(b) 20 >在多重赋值语句中,Lua会先将等号右边所有元素都求值完然后依次对左边赋值,并且右边多出来的将会被丢弃。若右边
转载 4月前
29阅读
MapStruct是什么项目经常有这样的场景,我要把对象a的name转换到对象b的name去,我们经常是使用BeanUtils.copyProperties();方法去实现的,但是这样做很大的弊端,使用反射的方式的效率慢对性能的消耗比较大, 有安全问题等等,更有的同事使用get,set方法,字段一多,这就太麻烦了。 那怎么办呢?优雅转换大师MapStruct出场MapStruct就是一个属性映射工
http://blog.sina.com.cn/s/blog_49bdd36d0100fdc1.html lua 除了简单类型分配内存外,table只是传递引用,所以不能用简单的"="来copy两个表,并试图修改一个表中的值。 用以下方法实现table copy:1.function th_table_dup(ori_tab)    if (ty
lua
转载 精选 2013-03-11 15:24:34
1229阅读
function CopyTable(tab) function _copy(obj) if type(obj) ~= "table" then return obj end local new_table = {} for k, v in pairs(obj) do new_table[_copy
sa
原创 2022-06-04 16:29:00
318阅读
由于目前正在负责的项目是一个二次开发项目,而且留给我们的代码质量实在让人无力吐槽,所以遇到了不少大大小小的坑,好在慢慢都淌过去了。最近就遇到了一个内存泄漏的问题,泄漏发生在lua里,项目代码里以前的开发团队留下了检测泄漏的代码,但也仅限于此。由于代码量庞大,所以想从逻辑上梳理清楚哪里的引用没干掉导致了内存泄漏几乎就是大海捞针。好在解决的过程比较顺利,这篇文章就来谈一谈Lua中如何解决内存泄漏的问题
memcpyc和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dst所指的内存地址的起始位置中。函数原型void *memcpy(void *dst, const void *src, size_t n);功能从源src所指的内存地址的起始位置开始拷贝n个字节到目标dst所指的内存地址的起始位置中所需头文件C语言:#include<
原创 2015-11-20 15:23:55
613阅读
      注意在类中有指针变量成员时,初始化的时候,一定要显示的给他分配动态内存;       指针变量成员一定要初始化,一定要显示的有构造函数(即动态分配内存),以及不是基本数据类型时,一定要有重载赋值函数       关于重载赋值函数和拷贝构造函数:   &nbs
# Redis Lua拷贝ZSet实现指南 ## 引言 在Redis中,ZSet是一种有序集合,它将每个元素与一个浮点数值(分数)关联起来。有时候,我们需要将一个ZSet拷贝到另一个ZSet中,以便在不影响原始数据的情况下进行操作和修改。本文将介绍如何使用Redis的Lua脚本来实现ZSet的拷贝操作。 ## 整体流程 要实现Redis Lua拷贝ZSet,我们可以按照以下步骤进行操作: 1
原创 9月前
72阅读
背景在多进程编程中,我们都知道fork()会产生一个子进程,而且子进程就是父进程的一个副本。按照传统fork的方式,子进程获得父进程数据空间、堆和栈的副本。这种实现方式实在过于简单,粗暴,效率低下。为什么这么说呢?因为在fork之后,往往紧接着就会跟随exec。exec之前拷贝完全是无意义的,而且会极大的限制创建进程的速度。所以Linux引入了写时拷贝技术(copy-on-write),简称COW
拷贝lua中,使用“=”进行浅拷贝,根据拷贝对象的不同,又分为两种情况:1.拷贝对象为string、number、boolean等基础类型时,拷贝的过程是进行复制粘贴。创建一个新的对象,拷贝出来的新对象和原来的对象互不影响,互不干涉,所以修改拷贝出来的对象的值不会影响到原来的对象的值!local value_A=10local value_B=value_Aprint("A的值:"..value_A)print("B的值:"..value_B)value_B=5print("A的
原创 2022-11-29 20:08:00
307阅读
假定你要拼接很多个小的字符串为一个大的字符串,比如,从一个文件中逐行读入字符串。你可能写出下面这样的代码: 尽管这段代码看上去很正常,但在Lua中他的效率极低,在处理大文件的时候,你会明显看到很慢,例如,需要花大概1分钟读取350KB的文件。(这就是为什么Lua专门提供了io.read(*all)选项,读取同样的文件只需要0.02s)为什么这样呢?Lua使用真正的垃圾收集算法,但他发现程序使用太多
作者:敏捷小菜 本文从Lua语法的角度来介绍Lua内存出现泄露的问题; 1、在多次刷新的情况下不停的 新建table; 如 Update()是一个不停被回调的函数,那么在Update里, function Update() local t = {};--创建表,内存泄露,游戏常见到 end
上周UWA发表了一片博文Lua性能优化—Lua内存优化作者分享了在unity中lua使用的不少干货,文中提到两个lua的小插件,一个是内存检查工具Snapshot,一个是性能分析工具LuaProfiler。 正好上周笔者也涉猎到了这方面的实践上,作为记录我将操作步骤分享下。 1.首先Snapshot是云风大大曾经的一篇博文提到的工具一个 Lua 内存泄露检查工具 2.其次Profiler也是
Lua会造成内存泄露的表征分析: #因素一:(实例型)实体资源的创建持有者和调用者,相互之间如果太过信任,那么对调用者就会形成过高的要求,创建者可以让任意的调用者进行任意的create,调用者消费后以为创建者会管理(销毁),但其实并非如此,比如有这样一个实体管理器xxxManager,它有接口createXXX/removeXXX, 那么,创建和销毁的权利都丢给了调用者,如果调用者光creat
这两天剖析了一下socket.lua,整体不是很难,主要是数据缓冲区的实现需要好好分析一下。这里读写数据也是用到了缓冲池的思想,为了更加直观的说明代码,还有方便测试,我去掉lua代码,把核心接口直接用C++实现了一遍:#include <stdio.h> #include <string.h> #include <vector> using std::vecto
我们经常在使用java的时候会发现java的使用范围还是非常广阔的,经常涉及到很多的日常的工作当中。关于它的文件拷贝方式其实也是有很多种的,一起来看看吧。首先说一下,Java有几种文件拷贝方式?哪一种最高效?一、利用java.io类库,直接为源文件构建一个FileInputStream读取,然后再为目标文件构建一个FileOutputStream,完成写入工作二、利用java.nio类库提供的tr
 1. 切换目录命令的使用命令说明cd 目录切换到指定目录cd ~切换到当前用户的主目录cd ..切换到上一级目录cd .切换到当前目录cd -切换到上一次目录注意:cd命令切换目录时,这个目录必须存在。cd 后面不写目录等价于cd ~ 1. 创建、删除文件及目录命令的使用命令说明touch 文件名创建指定文件mkdir 目录名创建目录(文件夹)rm 文件名或者目录名删除指定文
XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件;使用时源盘符、源目标路径名、源文件名至少指定一个;选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;选用/V参数时,对拷贝的扇区都进行较验,但速度会降低。中文名复制文件和目录树外文名xc
文章目录一、为什么要有 DMA 技术?二、传统的文件传输有多糟糕?三、如何优化文件传输的性能?四、 如何实现零拷贝?mmap + writesendfile使用零拷贝技术的项目五、PageCache 有什么作用?六、大文件传输用什么方式实现? 一、为什么要有 DMA 技术?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回;磁盘控制器收到指令后,于是就开始
缓存池基本写法--------------------------------- -- Lua Class对象池 -- 自己管理好池的清空时机 --------------------------------- ObjectPool = Class( "ObjectPool" ); -- 构造函数,传需实例化的对象 function ObjectPool:Ctor( class ) se
  • 1
  • 2
  • 3
  • 4
  • 5