如何管理大字符串
2015-10-12 11:36:17
收藏:0
阅读:125
评论:1
在我对ESP8266的最近测试中,我遇到了一个内存限制。
我有一个简单的http服务器,用于提供周围ESP8266可用AP的json。
function incoming_connection(conn, payload)
conn:send('HTTP/1.1 200 OK\n')
conn:send('Content-Type: application/json\n\n')
conn:send(tableToJson1(currentAPs))
end
当我在家里,在巴黎时,AP列表可能很长,然后我达到了有效载荷最大尺寸。
为了避免这种内存恐慌,我想将我的json分成几个块,然后逐个发送。
我写了这个:
function splitString(str, maxlen)
local t = {}
for i=1, math.ceil(string.len(str)/maxlen) do
t[i] = string.sub(str, (i-1)*maxlen+1, i*maxlen)
end
collectgarbage()
return t
end
然后尝试使用此函数进行测试:
function genstr(len)
local s=""
for i=1,len do
s=s.."x"
end
return s
end
for k,v in pairs(splitString(genstr(2000))) do print(v) end
一些测试结果:
生成字符串的长度+字符串块的长度+结果
1500+100+OK
1500+200+OK
2000+100+显示8行后崩溃
2000+200+显示4行后崩溃
似乎我在1500字节左右达到了内存限制。
您有什么建议来超过此限制吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
问题可能出现在
genstr而不是splitString中。在 Lua 中,字符串是不可变的,在
genstr中,每次s=s.."x"循环中都会生成一个新字符串。for i=1,len do s=s.."x" end相反,你可以使用内置的
string.rep(或者对于更复杂的情况,使用table.concat)生成测试字符串。