如果你看了LUA的文档,那么就应该很清楚LUA与C交互数据时都是用到LUA中所谓的stack。那么当我调用lua_open函数之后栈是什么样的呢?空的(luaopen_base等会往栈上加进一些东西)。那么至于如何操作栈上的数据,我想官方文档上已经说得很清楚了,不过最初我对于栈的顺序有一些迷糊,所以就说说这个。现在假如我有如下的一段代码: 代码:lua_State* L = lua_op
--[[
- @desc lua数据输出
- @param string 字符串
- return string
--]]
function dump(v)
if not __dump then
function __dump(v, t, p)
local k = p or "";
if type(v)
转载
2024-09-06 19:22:13
268阅读
最近发现服务的逻辑完成时间很短,但是上游接收到的时间比较长,所以就怀疑是底层数据的序列化/反序列化、读写、传输有问题,然后怀疑是TCP的读写缓存是不是设置太小。现在就记录下TCP缓存的各配置项以及缓存大小的计算公式。1.有关发送、接收缓存的配置内核设置的套接字缓存/proc/sys/net/core/rmem_default,net.core.rmem_default,套接字接收缓存默认值 (bi
LUA中关于Package定义学习笔记是本文要介绍的内容,主要是来学习lua中对Package,具体内容俩看本文详解。Package是个很逻辑的概念。也就是说很可能不是语言直接提供的设施。cpp里的namespace可以用来实现package,在LUA中则是依靠table机制来实现。实现的方式大同小异,本文总结了在《lua中文手册》中出现的3种方式。方式一: 直接将所有组成包的数据和方法定义在包中
转载
2024-03-27 20:33:31
143阅读
需要用lua写一个工具,c++调用lua,然后这个lua要require其他lua脚本,在主lua里面设置package.path,但一直都失败,甚至lua都无法编译通过。project_path = cpp_getProjectPath()
local path = project_path.."/?.lua;"
package.path = package.path ..";".. path
转载
2023-06-18 19:46:35
82阅读
3.OpenRestry介绍OpenResty(又称:ngx_openresty) 是一个基于 nginx的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 1
XEN虚拟机的两种运行方式:完全虚拟化和半虚拟化 。 半虚拟化要比完全虚拟化性能更优越1.CPU是否支持完全虚拟化: cat /proc/cpuinfo | grep flags半虚拟化:包含PAE 全虚拟化:VMX(Intel) svm(AMD) 2.查看是否已经安装 xen: rpm -qa | grep xen
转载
2024-04-25 17:50:05
32阅读
package.cpath()require 用于搜索 C 加载程序的路径。 Lua 使用环境变量 LUA_CPATH 或 luaconf.h 中定义的默认路径,以与初始化 Lua 路径 package.path 相同的方式初始化 C 路径 package.cpath。 package.loaded()require 用来控制哪些模块已经加载的表。 当你需要一个模块 modname 并且 pack
转载
2024-03-25 08:21:34
633阅读
我们之前实现了自己版本的require,首先认定为lua模块尝试加载,如果加载不成功则认定为C模块继续进行加载。实际上,在Lua内部,是通过searchers来区分不同的加载方式。Lua一共有4种searchers,用来加载lua模块的和加载C模块的分别是第2个和第3个。第1个searcher叫做preload,它使用package.preload这个内部table,根据加载模块的名称,去找到对应
转载
2024-02-17 20:35:29
79阅读
之前因为工作的需要学习了lua,在使用的过程中发现Lua挺好用的,故决定把这门语言好好学习一下。这段时间一直在学习Lua,也一直在使用Lua,但是因为工作忙的关系,都没有时间把这些学习的心得记录下来。趁着现在国庆放假期间,把上个月的学习心得记录一下,方便自己后续的查找与回顾(谁叫自己的记忆力已经大不如前了,有些知识长时间不用,就会生疏了)。&nb
转载
2024-04-06 23:42:54
166阅读
程序和可执行文件可以在许多目录,而这些路径很可能不在操作系统提供可执行文件的搜索路径中。path(路径)存储在环境变量中,这是由操作系统维护的一个命名的字符串。这些变量包含可用的命令行解释器和其他程序的信息。Unix或Windows中路径变量为PATH(UNIX区分大小写,Windows不区分大小写)。1.在环境变量中添加Python目录:在命令提示框中(cmd) : 输入path=%path%;
转载
2023-10-16 22:17:28
41阅读
为了避免每次重装系统时又要东翻西找,现在此记录一下目前常用的Python包安装过程。1) Python: 2.7.11, 下载地址:www.python.org。由于个人喜欢使用PyQt4(其实是不会PyQt5……),因此选择安装Python2.7。 安装好Python后,记得将D:/Python27和D:/Python/Scripts加入到系统环境变量的Path中。&n
转载
2023-06-09 10:47:04
81阅读
pycharm右键新建时会有目录(文件夹)和python package两个选项,这两个到底有什么不同呢1.原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml导入 dom)的时候,实际上导入了它的__init__.p
转载
2024-08-20 09:07:54
133阅读
1.脚本载入上,loadfile、dofile、require是比较常用的,具体区别网上有些博文已经写的很好了,这里简单概括:(1)loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码。一次编译的返回结果可以多次被运行。(2)dofile读入代码文件并编译执行。每调用dofile一次,都会重新编译执行一次。(3)require比较接近dofile,但require会
转载
2024-04-20 11:26:26
45阅读
第 14 章 Packages 很多语言专门提供了某种机制组织全局变量的命名,比如 Modula 的 modules,Java 和 Perl 的 packages,C++的 namespaces。每一种机制对在 package 中声明的元素的可见性以及其他一些细节的使用都有不同的规则。但是他们都提供了一种避免不同库中命名冲突的
转载
2024-04-05 13:45:54
109阅读
runbase Framwork用pack和unpack来保存用户上次操作的值,用户上次操作的值会存在SysLastValue表中,这个功能确实蛮酷,不过今天差点被这个东西给整死,在我机子运行上的好好的代码,弄到客户那边去死活run不起来,Application和DataBase都是一样的,认真地跟踪了一遍代码才知道,原来是由于我开发的机子是两层的,客户的环境是三层造成的,太大意了......两层
python3.6.1环境配置出现Requirement already up-to-date: pip in c:\python36\lib\site-packages决解方案
前提:windows下同时安装python2和python3,应将python2和python3直接安装在 C盘下面,分别为python27和python36文件夹下。(避免Program Files的空格出
转载
2024-05-20 16:11:34
16阅读
最近在学Lua 一直对模块与包的使用有很多不明白的地方,有的引用使用. 有的引用使用: 到底都是怎么个情况呢?今天下午要搞定!一个包就是模块的集合:A Package is a collection of modules.可以使用require和module函数来分别引用和创建Lua中的模块,调用模块内函数的简单方法:require "mod"
mod.foo()如果模块名太长,可以设置一个loc
转载
2024-06-05 12:03:07
77阅读
Lua如何管理”package” 方式一: 私有方法和变量都需要显式定义为local类型的,这很容易造成错误。一旦不小心漏写,就又将方法定义为全局的了。 ”package”中方法和变量的定义都需要加上”package”名字前缀。 方式二: 优化了”package”中方法的定义方式,使得无论是公有还是
转载
2017-10-28 13:49:00
163阅读
热重载,就是不重新开unity让代码的变化直接看出来,一般在开发时候使用lua中通过require导入的文件,最终都存在package.loaded这个table中。require会判断是否文件已经加载避免重复加载同一文件所以需要先把package.loaded中对应的内容置空,然后再重新导入for key,val in pairs(package.loaded) do
print(ke
转载
2023-07-18 22:09:51
262阅读