LuatOS-SOC接口文档(air780E)-- fskv - kv数据库,掉电不丢数据
示例
-- 本库的目标是替代fdb库 -- 1. 兼容fdb的函数 -- 2. 使用fdb的flash空间,启用时也会替代fdb库 -- 3. 功能上与EEPROM是类似的 fskv.init() fskv.set("wendal", 1234) log.info("fskv", "wendal", fskv.get("wendal"))--[[ fskv与fdb的实现机制导致的差异fskv fdb 1. value长度 4096 255 2. key长度 63 64 3. 空间利用率(对比) 较低 较高 4. 读取速度 恒定 脏数据影响速度,非恒定 5. 写入数据 恒定 脏数据影响速度,非恒定 6. 均衡擦除 自动 自动 ]]
fskv.init()
初始化kv数据库
参数
无
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
if fskv.init() thenlog.info("fdb", "kv数据库初始化成功") end-- 关于清空fdb库 -- 下载工具是没有提供直接清除fdb数据的途径的, 但有办法解决 -- 写一个main.lua, 执行 fskv.kvdb_init 后 执行 fskv.clear() 即可全清fdb数据.
fskv.set(key, value)
设置一对kv数据
参数
传入值类型 | 解释 |
---|---|
string | key的名称,必填,不能空字符串 |
string | 用户数据,必填,不能nil, 支持字符串/数值/table/布尔值, 数据长度最大4095字节 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false |
例子
-- 设置数据, 字符串,数值,table,布尔值,均可 -- 但不可以是nil, function, userdata, task log.info("fdb", fskv.set("wendal", "goodgoodstudy")) log.info("fdb", fskv.set("upgrade", true)) log.info("fdb", fskv.set("timer", 1)) log.info("fdb", fskv.set("bigd", {name="wendal",age=123}))
fskv.sett(key, skey, value)
设置table内的键值对数据
参数
传入值类型 | 解释 |
---|---|
string | key的名称,必填,不能空字符串 |
string | table的key名称, 必填, 不能是空字符串 |
string | 用户数据,必填,不能nil, 支持字符串/数值/table/布尔值, 数据长度最大4095字节 |
返回值
返回值类型 | 解释 |
---|---|
boolean | 成功返回true,否则返回false/nil |
例子
-- 本API在2023.7.26新增,注意与set函数区别 -- 设置数据, 字符串,数值,table,布尔值,均可 -- 但不可以是nil, function, userdata, task log.info("fdb", fskv.sett("mytable", "wendal", "goodgoodstudy")) log.info("fdb", fskv.sett("mytable", "upgrade", true)) log.info("fdb", fskv.sett("mytable", "timer", 1)) log.info("fdb", fskv.sett("mytable", "bigd", {name="wendal",age=123}))-- 下列语句将打印出4个元素的table log.info("fdb", fskv.get("mytable"), json.encode(fskv.get("mytable"))) -- 注意: 如果key不存在, 或者原本的值不是table类型,将会完全覆盖 -- 例如下列写法,最终获取到的是table,而非第一行的字符串 log.info("fdb", fskv.set("mykv", "123") log.info("fdb", fskv.sett("mykv", "age", "123")) -- 保存的将是 {age:"123"} --
fskv.get(key, skey)
根据key获取对应的数据
参数
传入值类型 | 解释 |
---|---|
string | key的名称,必填,不能空字符串 |
string | 可选的次级key,仅当原始值为table时有效,相当于 fskv.get(key)[skey] |
返回值
返回值类型 | 解释 |
---|---|
any | 存在则返回数据,否则返回nil |
例子
if fskv.init() thenlog.info("fdb", fskv.get("wendal")) end-- 若需要"默认值", 对应非bool布尔值, 可以这样写 local v = fskv.get("wendal") or "123"
fskv.del(key)
根据key删除数据
参数
传入值类型 | 解释 |
---|---|
string | key的名称,必填,不能空字符串 |
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
log.info("fdb", fskv.del("wendal"))
fskv.clear()
清空整个kv数据库
参数
无
返回值
返回值类型 | 解释 |
---|---|
bool | 成功返回true,否则返回false |
例子
-- 清空 fskv.clear()
fskv.iter()
kv数据库迭代器
参数
无
返回值
返回值类型 | 解释 |
---|---|
userdata | 成功返回迭代器指针,否则返回nil |
例子
-- 清空 local iter = fskv.iter() if iter thenwhile 1 dolocal k = fskv.next(iter)if not k thenbreakendlog.info("fdb", k, "value", fskv.kv_get(k))end end
fskv.iter(iter)
kv迭代器获取下一个key
参数
传入值类型 | 解释 |
---|---|
userdata | fskv.iter()返回的指针 |
返回值
返回值类型 | 解释 |
---|---|
string | 成功返回字符串key值, 否则返回nil |
例子
-- 清空 local iter = fskv.iter() if iter thenwhile 1 dolocal k = fskv.next(iter)if not k thenbreakendlog.info("fskv", k, "value", fskv.get(k))end end
fskv.status()
获取kv数据库状态
参数
无
返回值
返回值类型 | 解释 |
---|---|
int | 已使用的空间,单位字节 |
int | 总可用空间, 单位字节 |
int | 总kv键值对数量, 单位个 |
例子
local used, total,kv_count = fskv.status() log.info("fdb", "kv", used,total,kv_count)
相关文章:
LuatOS-SOC接口文档(air780E)-- fskv - kv数据库,掉电不丢数据
示例 -- 本库的目标是替代fdb库 -- 1. 兼容fdb的函数 -- 2. 使用fdb的flash空间,启用时也会替代fdb库 -- 3. 功能上与EEPROM是类似的 fskv.init() fskv.set("wendal", 1234) log.info("fskv", "wendal", fskv.get("wendal"))--[[ fs…...
一篇文章教你Pytest快速入门和基础讲解,一定要看!
前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架出去面试也好,跟别…...
SpringBoot项目:Cannot find declaration to go to
SpringBoot项目get,set方法总报Cannot find declaration to go to 搜了很多答案,没解决 后来仔细一想,原来是我的idea软件重装了,lombok插件没重新安装导致。 安装步骤: 1、下载地址:https://plugins.jetbrains.com…...
【高并发】多线程和高并发提纲
文章目录 三大源头两个主要问题三大解决方案 最近正在面试,对多线程和高并发相关问题整理了一个简单的提纲。 个人感觉这三大部分由底向上,足够引出对并发编程中大部分问题的讨论~ 三大源头 线程切换带来的原子性问题。 原子操作:利用CPU提…...
vue.js处理数组对象中某个字段是否变为两个字段
一、场景: 产品要求做一个时间步骤条,使用目前后端已返回的数据进行操作实现。时间步骤条要求日期和时间分开显示且相同日期只显示第一个日期。 图左边为实现效果,右边为后台返回的接口。接口中current字段表示当前到达第几步,从…...
从零开始的C++(补充三的内容)
auto:在编译阶段根据数据的类型确认auto所代表的类型,并将auto换成对应的类型。 特点: 1、auto所能代表的类型必须是在编译阶段就能确认的。 2、auto修饰的变量必须初始化,否则编译器无法判断auto的实际类型。 3、auto会根据第一个数据来…...
微信小程序通过createSelectorQuery获取元素 高度,宽度与界面距离
小程序官方有提供给我们一个 const query wx.createSelectorQuery() 函数 我们可以先编写这样一段代码 wxml <view><button bindtap"getDom">点击查看</button><view class "textIn" style "height: 100px;width: 30px;&quo…...
MySQL-事务
MySQL-事务 1.什么是事务 举例:想象炒菜的过程。 洗菜切菜炒菜装盘 我相信缺少任何任何一个步骤,都不完美!!!可以将炒菜的过程理解为一个事务,是一组操作的集合,而MySQL中的事务也是如此。但…...
自动定时删除磁盘文件的脚本(从文件日期最早的开始删)
#!/bin/bash# 指定的挂载点 MOUNTPOINT"/media/vm/MyDisk512GB"# 设置磁盘大小的限制 (例如:800G) LIMIT$((800 * 1024 * 1024)) # 单位是KB# 获取挂载点的已使用空间 USED_SPACE$(df -kP "$MOUNTPOINT" | tail -1 | awk {print $3})echo &quo…...
拆解CPU的基本结构和运行原理
CPU的基本结构 CPU是一个计算系统的核心 南北桥芯片将CPU与外设连接起来 CPU执行流程 CPU的电路基础 组合电路基本原理 时序电路基本原理 多核成为主流 汇编语言和寄存器 中断的基本原理 中断的产生 中断服务程序 CPU 做为计算机的总司令官,它管理着计算…...
Docker安装——Ubuntu (Jammy 22.04)
一、为什么要用 Ubuntu?(centos和ubuntu有什么区别) 使用lsb_release命令:lsb_release -a ,即可查看ubantu的版本,但是为什么要使用ubantu 呢? 区别:1、centos基于EHEL开发,而ubunt…...
Fast DDS之Transport
目录 transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。...
爱普生L125X_L325X系列打印机Wi-Fi配置方法(Smart Panel)
准备工作: 手机需要下载“Epson Smart Panel”APP; 配置无线(Wi-Fi)方法 说明:SSID名称(Wi-Fi名)不能包含中文字符,路由器需要选择2.4GHz频段; 1. 打开“Epson Smart Panel”软件࿰…...
【回顾一下Docker的基本用法】
文章目录 回顾一下Docker的基本用法1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.…...
【Python】Python基础知识
【Python】Python基础知识 关键字 查看Python关键字: >python >>>import keyword >>>keyword.kwlist 注释 注释有两方面作用: (1)提高程序的可读性(最重要的作用);…...
【计算机视觉 05】YOLO论文讲解:V1-V7
https://ai.deepshare.net/live_pc/l_63243a65e4b050af23b79338 Part1.目标检测与YOLO系列 1. 目标检测任务及发展脉络 2. YOLO的发展史 Anchors Base原理: Part2.YOLOV1-V3 3. YOLO V1的网络结构 4. YOLO V3的网络结构与实验结果 Part3.YOLO的进化 5. YOLO V4的网络…...
git全局与单仓库的密码管理
概要 在使用git时,有默认的全局配置,每个仓库也有自己的配置,在使用时常常傻傻分不清楚,现在进行一个简单的整理记录。 一般情况下全局配置中的git账号和邮箱通常设置成自己的,其他仓库再根据项目需要进行单独配置&a…...
IDEA的使用(一) (IntelliJ IDEA 2022.1.3版本)
目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全(Postfix Completion)、实时模板(Live Templates)菜单里面什么介绍都有,可以自学&a…...
javaee SpringMVC文件上传 项目结构
引入依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…...
JavaScript DOM 函数大全详解(使用最新的 JS 语法)
JavaScript DOM 函数大全详解(使用最新的 JS 语法) JavaScript 的 Document Object Model(DOM)是用于操作网页内容的编程接口。在最新的 JavaScript 语法下,我们有很多方便和高效的方法来处理 DOM。下面是一些常用 DO…...
Stm32_标准库_8_ADC_光敏传感器_测量具体光照强度
ADC简介 测量方式 采用二分法比较数据 IO通道 ADC基本结构及配置路线 获取数字变量需要用到用到光敏电阻的AO口,AO端口接在PA0引脚即可 测得的模拟数据与实际光照强度之间的关系为 光照强度 100 - 模拟量 / 40;代码: 完整朴素代码: #in…...
基于SSM的固定资产管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
Leetcode---364场周赛
题目列表 2864. 最大二进制奇数 2865. 美丽塔 I 2866. 美丽塔 II 2867. 统计树中的合法路径数目 一、最大二进制奇数 这题只要你对二进制有了解(学编程的不会不了解二进制吧),应该问题不大,这题要求最大奇数,1.奇数:只要保证…...
使用 Powershell 检索不理解的命令
使用 Powershell 检索不理解的命令 尝试使用 Powershell 完成 Powershell 的命令行 使用 Powershell 时,有时您会忘记某个 cmdlet 或想要了解哪些 cmdlet 可用。在这种情况下,最好在互联网上查找,但您也可以使用 Powershell 函数来完成。 以…...
基于 FPGA 的机器博弈五子棋游戏
基于 FPGA 的机器博弈五子棋游戏 一,设计目的 五子棋是一种深受大众喜爱的游戏,其规则简单,变化多端,非常富有趣味性 和消遣性。棋类游戏在具备娱乐性、益智性的同时也因为其载体大多是手机, 电脑等移动互联网设备导致现代社会低头族等现象更加严重,危害青少年的身 体健康…...
uCOSIII实时操作系统 三 移植
目录 uCOSIII简介: 准备工作: 准备基础工程: UCOSIII工程源码: UCOSIII移植: 向基础工程中添加相应的文件夹 向工程中添加分组 常见问题: 下载验证: uCOSIII简介: UCOS-I…...
机器学习之SGD, Batch, and Mini Batch的简单介绍
文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降)Batch (批量)mini Batch (迷你批量) 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案,即∆wij。 SGD(Stochastic Gradi…...
Windows电脑上的多开器与分布式存储系统的关系
Windows电脑上的多开器和分布式存储系统是两个不同的概念,二者之间没有直接的关系。 多开器是一种软件,它可以在Windows电脑上让用户同时运行多个同一应用程序的实例。多开器通常用于游戏玩家和应用程序测试人员等需要同时运行多个实例的用户。 分布式…...
积分球可以用于什么光谱光学检测
积分球是光测量的主要工具之一。积分球可以同时捕获一个光源发出的所有辐射。 1.光源测量 积分球可以用于测量光源的光通量、色温、光效等参数。通过将光源放置在积分球的入口处,球内的光线经过多次反射后形成均匀的照度分布,然后使用光度计或光谱仪对光…...
【力扣面试题】URL化
👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析1、使用String内部方法2、使用StringBuilder 一、题目描述 题目链接:URL化 编写一种…...
官方网站、门户网站是什么意思?/怎么寻找网站关键词并优化
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我要做个rolldice的小游戏,然后这是我的完整的code,我想直接把bank method 里面的那几个variable用在下面的checkwin method里面,但是总是显示找不到variable,应该是超过scope了。我想…...
书法网站模板下载/营销模式有哪些 新型
小弟在武汉上班,每天都挤公交上班,没办法啊,工薪阶层的无奈.坐的多了,见得也多了.比如说今天吧,我坐的那路车每天上下班特别挤,而且起点还是火车站.挤习惯了,看见再挤的车我也无所畏惧了,直接上.可怜的我啊,脸一直贴着后门玻璃。也不知到了哪一站上来一个中年妇女,长…...
icp备案查询站长工具/seo的作用
网络与通信 N e t w o r k&C o mmu n i c a t i o n计算机网络技术的发展模式研究文/李祥龙研究、探索、试验以及考证,也伴随着新兴技2计算机网络技术快速发展模式分析计算机技术的发展模式对一个国家、地区和社会的成长有着十分重要的影响,其制度、…...
深圳专业制作网站的公司哪家好/网站运营课程
原文:Best Practices for Speeding Up Your Web Site 26 开发灵巧的事件处理程序 Develop Smart Event Handlers tag:javascript 如果有太多的事件处理逻辑部署在DOM树的不同元素上,它们的频繁执行会拖慢页面的响应速度。而使用事件委托是一…...
地方门户网站建设/一键免费创建论坛网站
第一次正式学习Java的Lambda编程,感觉并不陌生,在Spotfire,PL/SQL, C语言、Excel等很多地方都用过函数式编程。 Summary Section 17.1 Introduction • Prior to Java SE 8, Java supported three programming paradigms—procedural programming, objec…...
服装行业网站模板/性能优化工具
实训一 码云地址:https://gitee.com/SoridoD/java_shixun1 洪雨码云地址 选取题目:黄金点 需求:阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的…...