草庐IT

lua-patterns

全部标签

Spring Boot + Lua = 王炸!

曾经有一位魔术师,他擅长将SpringBoot和Redis这两个强大的工具结合成一种令人惊叹的组合。他的魔法武器是Redis的Lua脚本。今天,我们将揭开这个魔术师的秘密,探讨如何在SpringBoot项目中使用Lua脚本,以解锁新的可能性和提高性能。如果你一直在寻找提升你的应用程序的方法,那么这篇博客将为你揭示其中的神奇之处。推荐一个开源免费的SpringBoot实战项目:https://github.com/javastacks/spring-boot-best-practice第一部分:Lua脚本简介当涉及Lua编程时,以下是对前述12个关键概念的详细说明,附带Lua代码示例以帮助你更深

c++ - lua_pop 与 lua_remove

目前我正在用C++构建自己的脚本VM管理器类。我对Lua&LuaC或C++的任何东西都没有问题,但让我困惑的一个部分是何时使用lua_pop以及何时使用lua_remove。据我了解,lua_pop是自上而下移除多个值(在堆栈上),删除不再需要的数据,而lua_remove是用于从任意有效的堆栈索引中删除单个值(基本上是Lua手册对两者的说明:P)。但我注意到网络上散布的某些代码段混合了lua_pop和lua_remove,但是当我尝试使用lua_pop时而不是lua_remove调用只是删除了顶部堆栈元素,我遇到了问题。那么是否有可能获得关于如何以及何时正确使用这两个功能以及这两个功

c++ - 如何到 "pattern match"一个模板?

通常在模板中你想知道整个类型,但在我的例子中我需要知道更多,并且想“分解”类型。举个例子:template>Tget_front(Collectionconst&c){returnc.front();}我怎样才能做到这一点?注意:我需要它来自动推断类型,而不是传递类似,int>的东西 最佳答案 编辑:最后可以找到C++0x方式。编辑2:我很愚蠢,在答案的末尾可以找到比所有这些特征内容更短的C++98/03方法。p>如果你想让你的函数适用于任意标准库容器,你需要拿出一些模板枪。问题是,不同的容器采用不同数量的模板参数。std::vec

c++ - 如何干净利落地结束 Lua 线程?

我的情况是,我正在使用Lua(C)API来执行保存在字符串中的脚本。我希望用户能够终止脚本的执行(如果脚本包含无限循环,这是必不可少的),我该怎么做?lua_State*Lua=lua_open();char*code;//InitialisationcodeluaL_dostring(L,code); 最佳答案 在线上Hook是不够的。此代码是单行,但会永远循环:whiletruedoend您需要设置一个指令计数Hook。如果我没记错的话,应该是lua_sethook(Lua,&LineHookFunc,LUA_MASKCOUNT

c++ - lua_newstate 与 lua_newthread

我正在尝试将lua实现到我现有的多线程应用程序中。我听说lua不是线程安全的我一直在为不同的线程创建不同的lua_State(s)。通过lua头文件我找到了lua_newthread。您将如何将其实现到一个准备就绪的线程应用程序中。您是创建一个lua_State并创建单独的lua_newthread(s)还是会导致其他问题? 最佳答案 注意,Lua线程不是操作系统线程(尽管名称具有误导性),只是Lua本身(而不是主机应用程序)中的设施以异步方式执行代码。所以答案是:在您的应用程序中为每个线程创建一个lua_State,如果您需要在状

c++ - 具有 C++ 性能问题/滞后峰值的 Lua

我正在开发一款游戏,我使用(SFML)C++作为核心,使用Lua作为Actor脚本。但是,我遇到了一些性能问题,我不确定哪里出了问题。我创建了一个测试程序来显示我遇到的问题。基本上,有时当我从C++调用Lua函数时,返回时间比平时长得多。我需要我的游戏以60fps的速度运行,大部分时间都可以,但偶尔一个或多个函数调用会比平时花费更长的时间。我的第一个想法是它是内存管理器,但关闭它似乎并没有消除尖峰。我知道有几款游戏使用Lua,我想这对他们来说不是问题。人们建议使用LuaJIT可以解决这个问题,所以我下载并设置了LuaJIT(使用lua5.1)。我的平均时间有了显着改善,但尖峰仍然一如既

c++ - Lua:C++ 模块不能互相引用, undefined symbol

我创建了两个模块(共享对象)CPU和SaveState作为模拟器的一部分。两者都独立编译成.so单独的文件,并在运行时由Lua脚本使用require()加载;即:SaveState=require("SaveState")CPU=require("CPU")在CPU中,有一个对SaveState进行操作的方法:intCPU::save_state(SaveState*state){state->begin_section(savestate_namespace,savestate_data_size);state->write16(this->reg.af);state->write1

c++ - Lua C API 内存泄漏? (valgrind)

我正在尝试编写一个嵌入了Lua的C程序。而且,我尝试了一个非常简单的程序来启动,它只是创建Lua上下文,然后销毁它:#include#include#include#includeextern"C"{#include#include#include}intmain(intargc,char*argv[]){lua_State*L=lua_open();luaL_openlibs(L);lua_close(L);fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);return(0);}我是这样编译的:(我实际上使用的是Torch7,所以..)g++-c

c++ - 等待条件的非线程替代方法。 (编辑 : Proactor pattern with boost. asio?)

我正在实现一个消息传递算法。当相邻节点在节点上有足够的信息来组成消息时,消息就会在相邻节点之间传递——从相邻节点传递到该节点的信息。如果我让每条消息成为一个线程并使用boost::condition使线程休眠直到所需信息可用,那么实现就很简单了。不幸的是-我在图表中有100k个节点,这意味着300k个线程。当我asked如何制作那么多线程答案是我不应该-而是重新设计。我的问题是:是否有用于等待条件的标准设计模式?也许是某种异步控制模式?编辑:我想我可以用proacator模式做到这一点。我已经编辑了标签以包含boost::asio-看看是否有人对此有建议。所以讨论可以是具体的,这里是到

c++ - 如何以最简单的方式禁用 lua 中的风险函数?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:HowcanIlimitluapossibilities(callingOSfunctions,modules,etc.)HowcanIcreateasecureLuasandbox?luaL_openlibs(m_pState);我使用此函数加载所有库。我想跳过所有危险的库,如IO,但我找不到任何关于如何禁用库的文档。如何禁用某些库?是否有更危险的库可以获得脚本对系统的访问权限?