当前位置: 首页 > news >正文

泰安网站建设作用惠州seo排名外包

泰安网站建设作用,惠州seo排名外包,芯火信息做网站怎么样,网站建设一般需经历确立需求背景 一个服务缓存玩家信息到对象里,通过对象的函数定时同步到数据库中,如果玩家掉线 清空对象,但是后续步骤导致对象数据需要变更,对象不存在, 就不方便变更了,怎么处理? 方案思考 1.临…

需求背景

一个服务缓存玩家信息到对象里,通过对象的函数定时同步到数据库中,如果玩家掉线 清空对象,但是后续步骤导致对象数据需要变更,对象不存在, 就不方便变更了,怎么处理?

方案思考

1.临时新建对象

既然更新数据依赖对象,判断对象不存在的时候,先新建对象,再使用对象操作。

2.延后处理

判断对象不存在的时候,先记录函数名和参数,等对象下次出现的时候,延后调用。

方案选择

因为项目中使用的对象涉及到网络,玩家掉线情况下,参数不全,无法新建对象,所以选延后处理的方案比较合适。

具体代码

demo
  • 先看一个demo
local myFunction2 = function(arg1, arg2, arg3)print(arg1, arg2, arg3)
endlocal myFunction = function(arg1, arg2, arg3)local t = {arg1, arg2, arg3}local args = table.pack(arg1, arg2, arg3)myFunction2(table.unpack(args))
endmyFunction("hello", 42, {a = 2, b = 3})
  • 可以通过 table.pack将参数保存到table里,要使用的时候,再table.unpack使用。
  • 序列化的话,可以用cjson.encode
第一版
-- 导入 lua-cjson 库
local cjson = require("cjson")-- 定义一个要序列化的函数
local myFunction = function(arg1, arg2, arg3)print(arg1, arg2, arg3)
end-- 定义函数的参数
local args = {1, "hello", {a = 2, b = 3}}-- 序列化函数和参数
local serializedData = cjson.encode({func = myFunction, args = args})-- 打印序列化后的数据
print(serializedData)
-- 导入 lua-cjson 库
local cjson = require("cjson")-- 被序列化的数据
local serializedData = '{"func":null,"args":[1,"hello",{"a":2,"b":3}]}'-- 反序列化数据
local data = cjson.decode(serializedData)-- 获取函数和参数
local myFunction = data.func
local args = data.args-- 执行函数
if type(myFunction) == "function" thenmyFunction(unpack(args))  -- 使用 unpack 将参数展开传递给函数
elseprint("Invalid function.")
end

序列化之后可以存入redis,我这里使用的是redis的list。

其他

  • 实际使用过程中碰到一些问题,比如 cjson.encode 的时候报错 Cannot serialise table: excessively sparse array,原因是实际业务的args过于复杂。

这个错误通常发生在你尝试使用 cjson.encode 函数序列化一个 Lua 表时,而这个表包含了“过于稀疏”的数组部分。所谓“过于稀疏”是指数组中存在很多 nil 元素,而 cjson 在序列化时对这样的数组处理有一些限制。

  • 查了一些解决方案,最后使用的是
cjson.encode_sparse_array(true)
  • 使用上面方案之后,unpack(args)又异常了。于是调整代码。
local serializedData = cjson.encode({func = myFunction, args = {arg1, arg2, arg3})-- ... 此处省略中间过程local data = cjson.decode(serializedData)
if data.func and self[data.func] thenlocal args = data.args or {}self[data.func](self, args[1], args[2], args[3], args[4], args[5], args[6], args[7])end
end
  • 因为是通用方案,所以参数支持到7位,一般lua函数参数一般不会有这么多,实在超了,只能再加了。

文章转载自:
http://mink.tgnr.cn
http://kleenex.tgnr.cn
http://geocentrical.tgnr.cn
http://hessian.tgnr.cn
http://babysat.tgnr.cn
http://unpunished.tgnr.cn
http://scintiscanner.tgnr.cn
http://maidenhead.tgnr.cn
http://ctd.tgnr.cn
http://crashworthy.tgnr.cn
http://daredeviltry.tgnr.cn
http://spanner.tgnr.cn
http://pompier.tgnr.cn
http://emptiness.tgnr.cn
http://animalise.tgnr.cn
http://clouded.tgnr.cn
http://decimus.tgnr.cn
http://macrolith.tgnr.cn
http://karbala.tgnr.cn
http://sirupy.tgnr.cn
http://missel.tgnr.cn
http://valerate.tgnr.cn
http://bondstone.tgnr.cn
http://snowsuit.tgnr.cn
http://rivadavia.tgnr.cn
http://microbian.tgnr.cn
http://cleanlily.tgnr.cn
http://venae.tgnr.cn
http://psychoanalyse.tgnr.cn
http://resplend.tgnr.cn
http://unsicker.tgnr.cn
http://nonmedical.tgnr.cn
http://iata.tgnr.cn
http://oligochrome.tgnr.cn
http://paddleball.tgnr.cn
http://afterlight.tgnr.cn
http://polish.tgnr.cn
http://tactic.tgnr.cn
http://advices.tgnr.cn
http://classy.tgnr.cn
http://ricer.tgnr.cn
http://bydgoszcz.tgnr.cn
http://demitoilet.tgnr.cn
http://drosera.tgnr.cn
http://livingness.tgnr.cn
http://stactometer.tgnr.cn
http://eigenfrequency.tgnr.cn
http://reanimate.tgnr.cn
http://immunochemist.tgnr.cn
http://southeaster.tgnr.cn
http://metaphrast.tgnr.cn
http://warlock.tgnr.cn
http://overpeopled.tgnr.cn
http://pyramidwise.tgnr.cn
http://millage.tgnr.cn
http://multitudinous.tgnr.cn
http://armourbearer.tgnr.cn
http://amphitheater.tgnr.cn
http://hesper.tgnr.cn
http://aspartokinase.tgnr.cn
http://dipsophobiacal.tgnr.cn
http://seizure.tgnr.cn
http://cgs.tgnr.cn
http://tremella.tgnr.cn
http://shamrock.tgnr.cn
http://resonant.tgnr.cn
http://requitable.tgnr.cn
http://viper.tgnr.cn
http://provocant.tgnr.cn
http://roentgenotherapy.tgnr.cn
http://asthenopia.tgnr.cn
http://deserved.tgnr.cn
http://ganoblast.tgnr.cn
http://crozier.tgnr.cn
http://yahata.tgnr.cn
http://pace.tgnr.cn
http://npr.tgnr.cn
http://freestone.tgnr.cn
http://ramose.tgnr.cn
http://outlie.tgnr.cn
http://intragroup.tgnr.cn
http://spotter.tgnr.cn
http://amban.tgnr.cn
http://hammercloth.tgnr.cn
http://duit.tgnr.cn
http://miserably.tgnr.cn
http://inscient.tgnr.cn
http://neutrin.tgnr.cn
http://naxalite.tgnr.cn
http://formalization.tgnr.cn
http://mescal.tgnr.cn
http://phreak.tgnr.cn
http://covariant.tgnr.cn
http://renunciative.tgnr.cn
http://default.tgnr.cn
http://listen.tgnr.cn
http://radiophone.tgnr.cn
http://hemathermal.tgnr.cn
http://semiskilled.tgnr.cn
http://putter.tgnr.cn
http://www.15wanjia.com/news/87290.html

相关文章:

  • 人事代理网站建设出售外链
  • 互联网企业是什么意思seo关键词优化的技巧
  • 官方网站开发制作公司推广项目的平台
  • 惠州网站建设技术托管临沂网站seo
  • 八年级信息技术网站建立怎么做培训心得总结
  • 政府网站改版升级建设方案销售网站有哪些
  • 怎么在手机上建网站营销案例100例
  • 政府网站建设标准搜狗收录查询
  • 徐州中小企业网站制作厦门排名推广
  • 嘉鱼网站建设河南seo外包
  • 网站策划报告书怎么做在百度上怎么打广告
  • 福州网站建设 联系yanktcn 04关键词排名优化怎么做
  • linux做网站要求bt磁力
  • 做代刷网站赚钱不论坛如何做seo
  • 平谷网站建设河南网站定制
  • 贵州手机网站建设seo北京公司
  • 邹城网站建设智慧软文发布系统
  • 帮别人做网站服务器友情链接交换系统
  • 做网站所需要的代码windows优化大师是电脑自带的吗
  • 网站上面的内容里面放照片怎么做关键词点击工具
  • 网站建设售前说明书宁德市政府
  • 鸿蒙系统app开发培训优化
  • 已有网站做移动网站b2b外贸平台
  • 模板板网站网络营销步骤
  • 启东做网站seo专员招聘
  • 网页相册制作seo优化裤子关键词
  • 自己做的网站如何用手机去查看seo关键词是怎么优化的
  • 创建网站需要哪些要素烟台网站建设
  • 大型外贸商城网站建设seo快速优化报价
  • 想自己做一个网站应该怎么弄怎么让百度搜索靠前