Lua语言中函数的二进制码保存与查看

在Lua编程语言中,函数(function)和表(table)、线程(thread)等一样,都是变量[1]。而函数,本质上就是一个程序,所以是可以以二进制码的形式表达的。本文介绍如何在Lua中把函数以二进制码进行保存,如何查看保存的二进制码,如何将保存的二进制码重新转换成函数,以及该功能的用处。

一、保存

在Lua中,要把函数保存为二进制码,应当使用string.dump(function)函数。详见博文[2]​​​​​​​的说明。这里以一个简单的函数为例:

function F1()print("This is function F1")
end
func_content = string.dump(F1)
print("type of func_content is", type(func_content))
--string

在上述代码中,func_content的类型是字符串(string)。

二、查看

接下来,要在Lua中把func_content,即函数的二进制内容显示出来。先尝试用普通的字符串显示函数print

print(func_content)
--LuaT 

也就是说,打印出来的内容就是LuaT,似乎没有意义,原因出在哪里呢?

Stack OverFlow上的[3]指出,LuaT就是指string.dump产生的字节码(在Lua 5.4是LuaT,在Lua 5.2是LuaR)。这样的字节码无法用常规的print方式显示,但[4]中给出了一种显示字节码的方式。这里使用该方式。

buff = ""
for v=1,string.len(func_content) dobuff = buff .. '\\' .. string.byte(func_content, v)end
print(buff)

在以上代码中,string.byte(func_content, v)返回func_content的第v个字节的十进制整数。string.byte的具体使用方式说明,请参考[5]。

打印出来的内容是

\27\76\117\97\84\0\25\147\13\10\26\10\4\8\8\120\86\0\0\0\0\0\0\0\0\0\0\0\40\119\64\1\24\238\45\45\72\101\114\101\32\108\101\116\39\115\32\108\101\97\114\110\32\97\98\111\117\116\32\102\117\110\99\116\105\111\110\10\112\114\105\110\116\40\34\108\101\97\114\110\32\102\117\110\99\116\105\111\110\115\32\105\110\32\76\117\97\34\41\10\10\102\117\110\99\116\105\111\110\32\70\49\40\41\10\32\32\32\32\112\114\105\110\116\40\34\84\104\105\115\32\105\115\32\102\117\110\99\116\105\111\110\32\70\49\34\41\10\101\110\100\10\10\70\50\32\61\32\102\117\110\99\116\105\111\110\40\41\10\32\32\32\32\112\114\105\110\116\40\34\84\104\105\115\32\105\115\32\102\117\110\99\116\105\111\110\32\70\50\34\41\10\101\110\100\10\10\70\49\68\32\61\32\70\49\10\10\70\49\40\41\10\70\50\40\41\10\112\114\105\110\116\40\34\110\111\119\32\70\49\68\34\41\10\70\49\68\40\41\10\10\45\45\70\49\68\32\98\101\104\97\118\101\115\32\115\97\109\101\32\97\115\32\70\49\44\32\115\111\32\102\117\110\99\116\105\111\110\32\105\115\32\97\108\115\111\32\97\32\118\97\114\105\97\98\108\101\44\32\108\105\107\101\32\97\32\99\108\111\115\117\114\101\32\105\110\32\83\119\105\102\116\10\10\45\45\32\78\111\119\32\116\97\107\101\32\97\32\108\111\111\107\32\97\116\32\116\104\101\32\105\110\112\117\116\32\97\110\100\32\111\117\116\112\117\116\32\111\102\32\97\32\102\117\110\99\116\105\111\110\10\10\102\117\110\99\116\105\111\110\32\103\101\116\69\97\99\104\86\97\114\105\97\98\108\101\80\108\117\115\49\40\118\49\44\32\118\50\44\32\118\51\44\32\118\52\41\32\45\45\97\32\102\117\110\99\116\105\111\110\32\99\97\110\32\104\97\118\101\32\109\117\108\116\105\112\108\101\32\105\110\112\117\116\115\32\97\110\100\32\97\108\115\111\32\109\117\108\116\105\112\108\101\32\111\117\116\112\117\116\115\10\32\32\32\32\105\102\32\116\121\112\101\40\118\49\41\32\61\61\32\34\110\117\109\98\101\114\34\32\116\104\101\110\10\32\32\32\32\32\32\32\32\111\117\116\95\118\49\32\61\32\118\49\32\43\32\49\10\32\32\32\32\101\110\100\10\32\32\32\32\105\102\32\116\121\112\101\40\118\50\41\32\61\61\32\34\110\117\109\98\101\114\34\32\116\104\101\110\10\32\32\32\32\32\32\32\32\111\117\116\95\118\50\32\61\32\118\50\32\43\32\49\10\32\32\32\32\101\110\100\10\32\32\32\32\105\102\32\116\121\112\101\40\118\51\41\32\61\61\32\34\110\117\109\98\101\114\34\32\116\104\101\110\10\32\32\32\32\32\32\32\32\111\117\116\95\118\51\32\61\32\118\51\32\43\32\49\10\32\32\32\32\101\110\100\10\32\32\32\32\105\102\32\116\121\112\101\40\118\52\41\32\61\61\32\34\110\117\109\98\101\114\34\32\116\104\101\110\10\32\32\32\32\32\32\32\32\111\117\116\95\118\52\32\61\32\118\52\32\43\32\49\10\32\32\32\32\101\110\100\10\32\32\32\32\114\101\116\117\114\110\32\111\117\116\95\118\49\44\32\111\117\116\95\118\50\44\32\111\117\116\95\118\51\44\32\111\117\116\95\118\52\32\45\45\116\104\101\115\101\32\100\111\32\110\111\116\32\104\97\118\101\32\116\111\32\98\101\32\97\108\108\32\101\120\105\115\116\105\110\103\46\32\73\102\32\110\111\116\32\101\120\105\115\116\44\32\116\104\101\110\32\97\117\116\111\109\97\116\105\99\97\108\108\121\32\97\115\115\105\103\110\101\100\32\119\105\116\104\32\110\105\108\10\101\110\100\10\10\97\44\32\98\44\32\99\44\32\100\32\61\32\103\101\116\69\97\99\104\86\97\114\105\97\98\108\101\80\108\117\115\49\40\51\44\49\51\44\50\51\44\34\110\110\34\41\32\45\45\116\104\101\32\108\97\115\116\32\111\110\101\32\119\111\110\39\116\32\111\117\116\112\117\116\10\112\114\105\110\116\40\115\116\114\105\110\103\46\102\111\114\109\97\116\40\34\118\97\108\117\101\115\32\111\102\32\97\44\32\98\44\32\99\44\32\100\32\97\114\101\32\37\115\44\32\37\115\44\32\37\115\44\32\37\115\34\44\32\97\44\32\98\44\32\99\44\32\100\41\41\10\114\70\49\32\61\32\70\49\40\41\10\112\114\105\110\116\40\34\84\104\101\32\114\101\116\117\114\110\32\111\102\32\70\49\32\105\115\32\34\44\32\114\70\49\41\10\10\45\45\105\102\32\110\117\109\98\101\114\32\111\102\32\118\97\114\105\97\98\108\101\115\32\116\111\32\116\97\107\101\32\102\117\110\99\116\105\111\110\32\114\101\116\117\114\110\32\105\115\32\115\109\97\108\108\101\114\32\116\104\97\110\32\97\99\116\117\97\108\32\114\101\116\117\114\110\115\44\32\116\104\101\110\32\116\104\101\32\114\101\115\116\32\119\105\108\108\32\98\101\32\100\114\111\112\112\101\100\10\97\113\44\32\98\113\32\61\32\103\101\116\69\97\99\104\86\97\114\105\97\98\108\101\80\108\117\115\49\40\52\44\54\44\49\44\51\41\10\112\114\105\110\116\40\115\116\114\105\110\103\46\102\111\114\109\97\116\40\34\118\97\108\117\101\32\111\102\32\97\113\44\32\98\113\32\97\114\101\32\37\115\44\32\37\115\34\44\32\97\113\44\32\98\113\41\41\32\45\45\111\110\108\121\32\116\104\101\32\102\105\114\115\116\32\116\119\111\32\97\114\101\32\114\101\116\117\114\110\101\100\44\32\98\117\116\32\116\104\101\32\114\101\115\116\32\97\114\101\32\100\114\111\112\112\101\100\10\10\45\45\67\97\110\32\73\32\103\101\116\32\116\104\101\32\108\97\115\116\32\116\119\111\44\32\100\114\111\112\32\116\104\101\32\102\105\114\115\116\32\116\119\111\63\10\95\44\32\95\44\32\99\113\44\32\100\113\32\61\32\103\101\116\69\97\99\104\86\97\114\105\97\98\108\101\80\108\117\115\49\40\52\44\54\44\49\44\51\41\10\112\114\105\110\116\40\115\116\114\105\110\103\46\102\111\114\109\97\116\40\34\118\97\108\117\101\32\111\102\32\99\113\44\32\100\113\32\97\114\101\32\37\115\44\32\37\115\34\44\32\99\113\44\32\100\113\41\41\10\10\112\114\105\110\116\40\34\66\117\116\32\112\114\105\110\116\32\98\121\32\100\101\102\97\117\108\116\32\112\114\105\110\116\115\32\97\108\108\32\114\101\116\117\114\110\32\118\97\108\117\101\115\32\111\102\32\97\32\102\117\110\99\116\105\111\110\34\41\10\112\114\105\110\116\40\115\116\114\105\110\103\46\102\105\110\100\40\39\101\103\103\119\101\116\39\44\32\39\119\101\39\41\41\32\45\45\115\116\114\105\110\103\46\102\105\110\100\32\114\101\116\117\114\110\115\32\50\32\118\97\108\117\101\115\10\112\114\105\110\116\40\34\73\32\99\97\110\32\102\111\114\99\101\32\105\116\32\116\111\32\112\114\105\110\116\32\111\110\108\121\32\111\110\101\32\118\97\108\117\101\34\41\10\112\114\105\110\116\40\40\115\116\114\105\110\103\46\102\105\110\100\40\39\101\103\103\119\101\116\39\44\32\39\119\101\39\41\41\41\10\10\45\45\115\97\109\101\32\97\115\32\83\119\105\102\116\44\32\76\117\97\32\102\117\110\99\116\105\111\110\32\99\97\110\32\97\108\115\111\32\114\101\116\117\114\110\32\97\32\102\117\110\99\116\105\111\110\10\112\114\105\110\116\40\34\97\32\102\117\110\99\116\105\111\110\32\116\104\97\116\32\111\117\116\112\117\116\115\32\97\32\102\117\110\99\116\105\111\110\34\41\10\99\97\108\99\117\108\97\116\111\114\32\61\32\102\117\110\99\116\105\111\110\40\111\112\101\114\97\116\111\114\41\10\32\32\32\32\105\102\32\111\112\101\114\97\116\111\114\32\61\61\32\39\43\39\32\116\104\101\110\10\32\32\32\32\32\32\32\32\114\101\116\117\114\110\32\102\117\110\99\116\105\111\110\40\97\44\98\41\10\32\32\32\32\32\32\32\32\32\32\32\32\114\101\116\117\114\110\32\97\43\98\10\32\32\32\32\32\32\32\32\32\32\32\32\101\110\100\10\32\32\32\32\101\108\115\101\105\102\32\111\112\101\114\97\116\111\114\32\61\61\32\39\45\39\32\116\104\101\110\10\32\32\32\32\32\32\32\32\114\101\116\117\114\110\32\102\117\110\99\116\105\111\110\40\97\44\98\41\10\32\32\32\32\32\32\32\32\32\32\32\32\114\101\116\117\114\110\32\97\45\98\10\32\32\32\32\32\32\32\32\32\32\32\32\101\110\100\10\32\32\32\32\101\108\115\101\10\32\32\32\32\32\32\32\32\114\101\116\117\114\110\32\102\117\110\99\116\105\111\110\40\41\10\32\32\32\32\32\32\32\32\32\32\32\32\101\110\100\10\32\32\32\32\101\110\100\10\101\110\100\10\10\103\101\116\67\97\108\99\32\61\32\99\97\108\99\117\108\97\116\111\114\40\39\116\39\41\10\112\114\105\110\116\40\34\103\101\116\67\97\108\99\40\50\44\51\41\61\34\44\32\103\101\116\67\97\108\99\40\50\44\51\41\41\10\10\45\45\108\111\99\97\108\32\97\110\100\32\103\108\111\98\97\108\32\118\97\114\105\97\98\108\101\10\112\114\105\110\116\40\34\108\111\99\97\108\32\118\97\114\105\97\98\108\101\32\97\110\100\32\103\108\111\98\97\108\32\118\97\114\105\97\98\108\101\34\41\10\102\117\110\99\116\105\111\110\32\108\111\99\40\41\10\32\32\32\32\103\98\118\32\61\32\49\48\10\101\110\100\10\108\111\99\40\41\10\112\114\105\110\116\40\34\103\98\118\44\32\119\104\105\99\104\32\105\115\32\97\32\103\108\111\98\97\108\32\118\97\114\105\97\98\108\101\44\32\105\115\32\110\111\119\32\34\44\32\103\98\118\41\10\102\117\110\99\116\105\111\110\32\108\111\99\50\40\41\10\32\32\32\32\108\111\99\97\108\32\108\99\118\32\61\32\49\48\10\101\110\100\10\108\111\99\50\40\41\10\112\114\105\110\116\40\34\108\99\118\44\32\119\104\105\99\104\32\105\115\32\97\32\108\111\99\97\108\32\118\97\114\105\97\98\108\101\44\32\105\115\32\110\111\119\34\44\32\108\99\118\41\10\10\112\114\105\110\116\40\34\101\120\105\115\116\105\110\103\32\118\97\114\105\97\98\108\101\115\58\34\41\10\102\111\114\32\105\44\118\32\105\110\32\112\97\105\114\115\40\95\71\41\32\100\111\32\45\45\95\71\32\105\115\32\97\32\118\97\114\105\97\98\108\101\32\115\116\111\114\105\110\103\32\97\108\108\32\108\111\97\100\101\100\32\116\104\105\110\103\115\10\32\32\32\32\112\114\105\110\116\40\105\44\118\41\10\101\110\100\10\112\114\105\110\116\40\34\108\111\97\100\101\100\32\112\97\99\107\97\103\101\115\58\34\41\10\102\111\114\32\105\44\118\32\105\110\32\112\97\105\114\115\40\112\97\99\107\97\103\101\46\108\111\97\100\101\100\41\32\100\111\10\32\32\32\32\112\114\105\110\116\40\105\44\118\41\10\101\110\100\10\10\45\45\102\117\110\99\116\105\111\110\32\99\97\110\32\97\108\115\111\32\98\101\32\115\97\118\101\100\32\97\115\32\115\116\114\105\110\103\10\112\114\105\110\116\40\34\100\117\109\112\32\102\117\110\99\116\105\111\110\34\41\10\102\117\110\99\95\99\111\110\116\101\110\116\32\61\32\115\116\114\105\110\103\46\100\117\109\112\40\70\49\41\10\112\114\105\110\116\40\34\116\121\112\101\32\111\102\32\102\117\110\99\95\99\111\110\116\101\110\116\32\105\115\34\44\32\116\121\112\101\40\102\117\110\99\95\99\111\110\116\101\110\116\41\41\10\112\114\105\110\116\40\115\116\114\105\110\103\46\98\121\116\101\40\102\117\110\99\95\99\111\110\116\101\110\116\41\41\32\45\45\32\105\116\32\106\117\115\116\32\115\104\111\119\115\32\76\117\97\84\46\32\78\111\32\119\111\114\114\105\101\115\46\32\105\116\32\105\115\32\98\121\116\101\115\44\32\97\110\100\32\115\104\111\119\110\32\97\115\32\76\117\97\84\10\45\45\104\116\116\112\115\58\47\47\115\116\97\99\107\111\118\101\114\102\108\111\119\46\99\111\109\47\113\117\101\115\116\105\111\110\115\47\54\48\57\52\55\55\49\47\100\101\99\114\121\112\116\45\108\117\97\45\98\121\116\101\45\99\111\100\101\10\45\45\105\102\32\121\111\117\32\119\97\110\116\32\116\111\32\114\101\97\100\32\116\104\101\32\119\104\111\108\101\32\98\121\116\101\115\10\112\114\105\110\116\40\34\114\101\97\100\32\98\121\116\101\115\34\41\10\98\117\102\102\32\61\32\34\34\10\102\111\114\32\118\61\49\44\115\116\114\105\110\103\46\108\101\110\40\102\117\110\99\95\99\111\110\116\101\110\116\41\32\100\111\10\32\32\32\32\98\117\102\102\32\61\32\98\117\102\102\32\46\46\32\39\92\92\39\32\46\46\32\115\116\114\105\110\103\46\98\121\116\101\40\102\117\110\99\95\99\111\110\116\101\110\116\44\32\118\41\10\32\32\32\32\101\110\100\10\112\114\105\110\116\40\98\117\102\102\41\10\70\49\67\111\112\105\101\100\32\61\32\108\111\97\100\40\102\117\110\99\95\99\111\110\116\101\110\116\41\10\70\49\67\111\112\105\101\100\40\41\32\45\45\119\111\114\107\115\10\10\10\10\10\10\10\32\32\32\32\10\132\134\0\0\2\132\11\0\0\0\131\128\0\0\68\0\2\1\71\0\1\0\130\4\134\112\114\105\110\116\4\148\84\104\105\115\32\105\115\32\102\117\110\99\116\105\111\110\32\70\49\129\0\0\0\128\132\1\0\0\1\128\128\129\133\95\69\78\86

转换为二进制,就是该函数的二进制码。

三、读取

Lua中有一个函数叫load。该函数可以读取函数的字节码,并转化为Lua函数。

使用方式见博文[6]。

F1Copied = load(func_content)
F1Copied()
--This is function F1

F1Copied()完美还原了原函数F1()

四、作用

这个功能在多人协作时有用。例如,甲在编写项目时,需要调用乙写的函数,且乙的函数随着游戏场景的变化而变化,但甲乙双方都不愿意对方查看自己的具体代码。此时,乙可以把函数的二进制码通过Lua的文件操作,保存在文件中,而甲的程序需要乙的函数时,只需load该文件即可。无论乙的场景如何变化,只要保存二进制码的文件名不变,就不会影响甲读取函数。

读取和书写文件的操作见[7]。

file=io.open("function.txt","w")
file:write(func_content)
io.close()

五、小结

在Lua中,函数可以被保存为二进制格式,可以显示二进制,但如果直接用print只会出现LuaT,应当用string.byte函数把字节码提取出来。最后,用load函数把字节码重新转化为函数即可使用。这个功能在多人协作编写游戏时可用。

参考资料

[1]Lua学习(4)Lua变量定义以及数据类型-CSDN博客

[2]lua——string库函数的用法例子(包括string.dump的用法例子)-CSDN博客

[3]encryption - decrypt new lua script called LuaT - Stack Overflow

[4]bytecode - Decrypt Lua byte code? - Stack Overflow

[5]Lua_第19章 String 库(上)_string.find函数第三个参数是可选的:标示目标串中搜索的起始位置。当我们想查找目-CSDN博客

[6]lua string.dump-CSDN博客

[7]Lua开发--文件读写操作_lua 读写文件-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/441099.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣16~20题

题16&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 双指针法&#xff0c;和15题差不多&#xff0c;就是要排除了&#xff0c;如果total<target则排除了更小的&#xff08;left右移&#xff09;&#xff0c;如果total>target则排除了更大的&#xff08;rig…

pycharm 远程ssh时,mujuco提示mujoco.FatalError: gladLoadGL error

在ubuntu系统运行时完全没问题&#xff0c;但是使用pycharm远程ssh登录时就会提示这个。 解决方法&#xff1a; 1. 可以修改环境变量 2. export LD_PRELOAD/usr/lib/x86_64-linux-gnu/libstdc.so.6 参考【Mujuco】WSL2安装Mujoco用于python,遇到FatalError,以及图形驱动架构…

【Git原理与使用】远程操作标签管理

远程操作&&标签管理 1.理解分布式版本控制系统2.新建远程仓库3.克隆远程仓库4.向远程仓库推送5.拉取远程仓库6.配置 Git7.配置命令别名8.标签管理8.1创建标签8.2操作标签 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496;…

RTOS系统移植

一、完成系统移植 系统移植上官网寻找合适的系统包&#xff0c;下载后将文件移植入工程文件 二、创建任务句柄、内核对象句柄&#xff08;信号量&#xff0c;消息队列&#xff0c;事件标志组&#xff0c;软件定时器&#xff09;、声明全局变量、声明函数 三、创建主函数&#…

Vue2电商项目(七)、订单与支付

文章目录 一、交易业务Trade1. 获取用户地址2. 获取订单信息 二、提交订单三、支付1. 获取支付信息2. 支付页面--ElementUI(1) 引入Element UI(2) 弹框支付的业务逻辑(这个逻辑其实没那么全)(3) 支付逻辑知识点小总结 四、个人中心1. 搭建二级路由2. 展示动态数据(1). 接口(2).…

【计算机网络 - 基础问题】每日 3 题(二十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

【Docker】03-自制镜像

1. 自制镜像 2. Dockerfile # 基础镜像 FROM openjdk:11.0-jre-buster # 设定时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝jar包 COPY docker-demo.jar /app.jar # 入口 ENTRYPOINT ["ja…

Redis:通用命令 数据类型

Redis&#xff1a;通用命令 & 数据类型 通用命令SETGETKEYSEXISTSDELEXPIRETTLTYPEFLUSHALL 数据类型 Redis的客户端提供了很多命令用于操控Redis&#xff0c;在Redis中&#xff0c;key的类型都是字符串&#xff0c;而value有多种类型&#xff0c;每种类型都有自己的操作命…

Redis篇(最佳实践)(持续更新迭代)

介绍一&#xff1a;键值设计 一、优雅的key结构 Redis 的 Key 虽然可以自定义&#xff0c;但最好遵循下面的几个最佳实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:[id]长度不超过 44 字节不包含特殊字符 例如&#xff1a; 我们的登录业务&#xff0…

Leetcode—76. 最小覆盖子串【困难】

2024每日刷题&#xff08;167&#xff09; Leetcode—76. 最小覆盖子串 C实现代码 class Solution { public:string minWindow(string s, string t) {int bestL -1;int l 0, r 0;vector<int> cnt(128);for(const char c: t) {cnt[c];}int require t.length();int m…

【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)

文章目录 【实战教程】SpringBoot全面指南&#xff1a;快速上手到项目实战(SpringBoot)1. SpringBoot介绍1.1 SpringBoot简介1.2系统要求1.3 SpringBoot和SpringMVC区别1.4 SpringBoot和SpringCloud区别 2.快速入门3. Web开发3.1 静态资源访问3.2 渲染Web页面3.3 YML与Properti…

[SpringBoot] 苍穹外卖--面试题总结--上

前言 1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客 2--苍穹外卖-SpringBoot项目中员工管理 详解&#xff08;一&#xff09;-CSDN博客 3--苍穹外卖-SpringBoot项目中员工管理 详解&#xff08;二&#xff09;-CSDN博客 4--苍穹外码-SpringBoot项目中分类管理 详…

pytest(六)——allure-pytest的基础使用

前言 一、allure-pytest的基础使用 二、需要掌握的allure特性 2.1 Allure报告结构 2.2 Environment 2.3 Categories 2.4 Flaky test 三、allure的特性&#xff0c;allure.step()、allure.attach的详细使用 3.1 allure.step 3.2 allure.attach&#xff08;挺有用的&a…

Redis入门第四步:Redis发布与订阅

欢迎继续跟随《Redis新手指南&#xff1a;从入门到精通》专栏的步伐&#xff01;在本文中&#xff0c;我们将深入探讨Redis的发布与订阅&#xff08;Pub/Sub&#xff09;模式。这是一种强大的消息传递机制&#xff0c;适用于各种实时通信场景&#xff0c;如聊天应用、实时通知和…

3、Redis Stack扩展功能

文章目录 一、了解Redis产品二、申请RedisCloud实例三、Redis Stack体验1、RedisStack有哪些扩展&#xff1f;2、Redis JSON1、Redis JSON是什么2、Redis JSON有什么用3、Redis JSON的优势 3、Search And Query1、传统Scan搜索2、Search And Query搜索 4、Bloom Filter1、布隆过…

LabVIEW提高开发效率技巧----阻塞时钟

在LabVIEW开发中&#xff0c;阻塞时钟&#xff08;Blocking Timed Loops&#xff09;是一种常见且强大的技术&#xff0c;尤其适用于时间关键的应用。在这些应用中&#xff0c;精确控制循环的执行频率是关键任务。阻塞时钟通过等待循环的执行完成后再进入下一次迭代&#xff0c…

如何设置LTE端到端系统

LTE Setup Guide Baseline Hardware Requirements 基础硬件要求 需要2个RF前端和2个装有基于Linux的操作系统的PC。系统架构如下&#xff1a; srsUE&#xff1a;需要1个RF前端和1个PC。srsENB&#xff1a;需要1个RF前端和1个PC。srsEPC&#xff1a;需要1个PC。 系统硬件要…

python实现RC4加解密算法

RC4算法 一、算法介绍1.1 背景1.2 密钥调度算法(KSA)1.3 伪随机生成算法(PRGA) 二、代码实现三、演示效果 一、算法介绍 1.1 背景 RC4算法是由Ron Rivest在1987年为RSA数据安全公司设计的一种流密码算法&#xff0c;其安全性主要依赖于其密钥流的随机性和不可预测性。该算法因…

碰撞检测 | 图解视线生成Bresenham算法(附ROS C++/Python/Matlab实现)

目录 0 专栏介绍1 Bresenham算法介绍2 图解Bresenham算法3 算法流程4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划算法轨迹优化实战&#xff0c;包括&#xff…

架构设计之解析CQRS架构模式!

文章首发到公众号&#xff1a;月伴飞鱼 文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://hardyfish.top/ 文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://hardyfish.top/ 文章内容收录到个人网站&#xff0c;方便阅读&#xff1a;http://har…