小米自研vela系统kvdb数据库的使用(一)
KVDB数据库介绍
- KVDB 数据库详细介绍
- KVDB 的基本原理
- KVDB 的应用场景
- 1. 缓存系统
- 2. 配置管理
- 3. 会话存储与用户状态管理
- 4. 实时数据处理
- 5. 日志记录与事件存储
- 6. 分布式存储
- KVDB 的作用
- KVDB 数据库的典型实现
- 1. LevelDB
- 2. RocksDB
- 3. LMDB (Lightning Memory-Mapped Database)
- 4.UnQLite(重点讲述,也是小米自研系统使用的数据库类型)
- KVDB 调用方式
- 1. 安装 UnQLite
- 2. UnQLite 使用示例
- 3. 常用功能说明
- 4. 嵌入式应用中的 UnQLite
- 嵌入式场景kvdb数据库的使用(二)
KVDB 数据库详细介绍
KVDB(Key-Value Database,键值数据库)是一种使用键(Key)和对应的值(Value)来存储数据的数据库。它是 NoSQL 数据库的一种简单而高效的类型,以键值对的形式来存储数据,适合用于高速读写和处理简单查询的场景。KVDB 通常非常轻量,性能高,扩展性强,尤其在分布式系统中具有重要的应用。
KVDB 最常见的实现有 LevelDB、RocksDB、LMDB 、UnQLite等。
小米自研的操作系统vela就是使用的kvdb数据库,具体使用的是UnQLite这种嵌入式轻量数据库,见vela服务与框架中的通用框架KVDB
KVDB 的基本原理
- 键(Key):每个数据项都有一个唯一的键(通常是一个字符串或整数),用来标识该项数据。
- 值(Value):与每个键相关联的数据项,可以是任何类型的数据,如字符串、数字、JSON 数据、二进制数据等。
KVDB 数据库的设计原则是极简和高效,它为键值对的插入、删除和查找操作提供了高性能支持。常见的 KVDB 实现如 LevelDB,通常支持对数据进行持久化存储,但它也能高效地进行内存中的数据操作,提供快速的读写速度。
KVDB 的应用场景
KVDB 数据库通常用于以下场景:
1. 缓存系统
KVDB 由于其高性能的读取和写入操作,广泛用于缓存系统中。它能够提供快速的数据访问,减少数据库的负载,并加快应用的响应速度。例如,Redis 就是一种广泛使用的键值存储系统。
- 场景实例:在 web 应用中,可以将用户的会话信息、频繁访问的数据缓存到 KVDB 数据库中,从而提升系统性能。
2. 配置管理
KVDB 被广泛用于存储和管理应用的配置。由于 KVDB 的简单和高效,很多系统会将配置信息(如 API 密钥、数据库连接信息、应用设置等)存储为键值对。
- 场景实例:微服务架构中的配置中心,利用 KVDB 存储和管理服务的配置信息,便于快速加载和修改配置。
3. 会话存储与用户状态管理
KVDB 也非常适用于存储临时的用户数据,如会话信息和临时状态。常常被用在需要快速读取和写入的应用中,比如 Web 应用中的用户会话管理。
- 场景实例:在用户登录的情况下,使用 KVDB 存储用户的会话信息,并根据会话的键值进行验证和获取用户数据。
4. 实时数据处理
KVDB 可以存储实时生成的海量数据,并进行快速检索。在处理高频率、低延迟的实时数据时,KVDB 系统可以提供极好的性能。
- 场景实例:在物联网 (IoT) 环境中,用 KVDB 存储传感器采集到的实时数据,进行快速查询和处理。
5. 日志记录与事件存储
KVDB 的高性能特性使其适合用于存储应用的日志信息,尤其是那些需要快速写入和检索的日志数据。
- 场景实例:将事件日志数据按时间戳存储为键值对,方便后续的检索和分析。
6. 分布式存储
很多现代 KVDB 数据库(如 RocksDB)被设计为分布式系统的一部分,支持大规模的数据存储和快速访问。在云原生架构和分布式系统中,KVDB 被用于存储分布式数据和状态信息。
- 场景实例:在 Kubernetes 或其他分布式环境中,使用 KVDB 存储节点的状态信息和元数据。
KVDB 的作用
- 高性能:KVDB 的设计通常针对高效的读写操作,支持快速插入、删除和查询数据,适合需要低延迟的应用。
- 简单易用:KVDB 使用键值对的存储方式,数据模型简单易懂,易于使用和维护。
- 灵活性高:KVDB 的值可以是任意格式的数据,不限于字符串和数字,因此它具有很高的灵活性,适用于多种数据存储需求。
- 扩展性:许多 KVDB 实现支持水平扩展,能够适应大规模的数据存储需求。对于分布式 KVDB,多个节点可以协同工作,形成一个高效的集群。
- 数据持久化:大多数 KVDB 提供数据持久化功能,即使系统重启后数据依然能够保持不丢失,确保了数据的持久性。
KVDB 数据库的典型实现
1. LevelDB
LevelDB 是 Google 开发的一个高性能、嵌入式的键值数据库。它在许多应用中得到广泛使用,特别是在需要嵌入式存储的情况下。LevelDB 具有非常高的写入性能和低延迟的查询性能。
特点:
- 基于 Log-Structured Merge Tree(LSM Tree)结构,适合写密集型应用。
- 高性能的存储和读取能力,特别适合嵌入式设备或单一应用。
- 数据存储为 SSTable 文件格式,支持持久化存储。
2. RocksDB
RocksDB 是 Facebook 开发的一个高性能、嵌入式键值数据库,基于 LevelDB 构建,进行了优化。RocksDB 在支持大规模数据和高并发写入方面表现尤为突出。
特点:
- 优化的写入性能和查询速度,支持大规模数据存储。
- 支持高并发的读写操作,适合大数据量和高频访问场景。
- 支持数据压缩和索引,能够有效管理存储空间。
- 提供灵活的事务机制。
3. LMDB (Lightning Memory-Mapped Database)
LMDB 是一个内存映射的键值数据库,它提供极高的性能,特别适用于存储读取密集型数据。它在嵌入式设备和低资源系统中表现出色。
特点:
- 高效的内存映射文件存储机制。
- 支持高并发读取和事务性写入。
- 数据一致性高,支持 ACID 事务。
- 适合在资源有限的环境中使用。
4.UnQLite(重点讲述,也是小米自研系统使用的数据库类型)
UnQLite 是一个轻量级的嵌入式 NoSQL 数据库,它结合了 键值存储 和 文档存储 的特点,支持嵌入式应用,具有高效、易用、内存占用低等特点,适用于资源受限的嵌入式设备。它支持对 JSON 数据进行存储和操作,并且不依赖外部服务器。
KVDB 调用方式
下面以 UnQLite 为例,简要介绍如何在代码中使用 KVDB 数据库。
1. 安装 UnQLite
安装方法(Linux 示例)
从官网或 GitHub 获取源码:
官网下载地址:http://unqlite.org/
GitHub 地址:https://github.com/symisc/unqlite
编译安装(如果你使用的是 Linux 系统):
git clone https://github.com/symisc/unqlite.git
cd unqlite
make
sudo make install
这样就可以在系统中安装好 UnQLite。
Windows 或其他平台
对于 Windows 和其他平台,你可以参考 UnQLite 官方文档,下载预编译的二进制文件,或者从源码进行编译。
2. UnQLite 使用示例
创建数据库
首先我们需要一个 C 程序来演示如何使用 UnQLite 创建数据库、插入数据、读取数据,并关闭数据库。
头文件和库链接
确保在编译时链接 unqlite 库文件。你需要包含 unqlite.h 头文件并链接 libunqlite.so(Linux)或 libunqlite.a(Windows)。
代码示例
以下是一个简单的示例,展示了如何使用 UnQLite 创建数据库、插入键值对、查询数据并关闭数据库。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "unqlite.h"// 数据库文件名
#define DB_PATH "test.db"int main() {// 定义数据库指针unqlite *db;// 打开数据库,如果数据库不存在则创建int rc = unqlite_open(&db, DB_PATH, UNQLITE_OPEN_CREATE);if (rc != UNQLITE_OK) {printf("Failed to open database: %d\n", rc);return -1;}// 插入键值对数据const char *key = "name";const char *value = "John Doe";rc = unqlite_kv_store(db, key, strlen(key), value, strlen(value));if (rc != UNQLITE_OK) {printf("Failed to insert data: %d\n", rc);unqlite_close(db);return -1;}// 读取存储的数据char retrieved_value[100];int retrieved_len = sizeof(retrieved_value);rc = unqlite_kv_fetch(db, key, strlen(key), retrieved_value, &retrieved_len);if (rc != UNQLITE_OK) {printf("Failed to fetch data: %d\n", rc);unqlite_close(db);return -1;}// 输出读取到的数据printf("Retrieved value: %.*s\n", retrieved_len, retrieved_value);// 关闭数据库unqlite_close(db);return 0;
}
代码解析
unqlite_open():打开数据库。如果数据库文件不存在,且指定了 UNQLITE_OPEN_CREATE 参数,它会创建一个新的数据库文件。
unqlite_kv_store():向数据库插入一对键值数据。在这里,key 是 “name”,value 是 “John Doe”。
unqlite_kv_fetch():从数据库中获取指定键(key)对应的值。读取后,retrieved_value 存储了获取的数据。
unqlite_close():关闭数据库,释放相关资源
编译和运行
假设你已经正确安装了 UnQLite 库,使用以下命令编译和运行该程序:
gcc -o unqlite_example unqlite_example.c -lunqlite
./unqlite_example
输出
Retrieved value: John Doe
3. 常用功能说明
- 创建数据库
使用 unqlite_open() 打开数据库,如果数据库文件不存在,则会自动创建一个新的数据库
int unqlite_open(unqlite **ppDb, const char *zDbName, int flags);
- 插入数据(键值存储)
通过 unqlite_kv_store() 插入数据。
int unqlite_kv_store(unqlite *pDb, const void *pKey, int nKeyLen, const void *pData, int nDataLen);
pKey:键的指针。
nKeyLen:键的长度。
pData:值的指针。
nDataLen:值的长度。
- 读取数据
通过 unqlite_kv_fetch() 读取数据。
int unqlite_kv_fetch(unqlite *pDb, const void *pKey, int nKeyLen, void *pData, int *pDataLen);
pKey:键的指针。
nKeyLen:键的长度。
pData:存储读取数据的缓冲区。
pDataLen:输出参数,存储实际读取的值的长度。
- 删除数据
通过 unqlite_kv_delete() 删除数据。
int unqlite_kv_delete(unqlite *pDb, const void *pKey, int nKeyLen);
- 关闭数据库
使用 unqlite_close() 关闭数据库连接并释放资源。
void unqlite_close(unqlite *pDb);
4. 嵌入式应用中的 UnQLite
UnQLite 适用于以下场景:
嵌入式设备:由于它非常轻量,因此特别适合嵌入式应用,如 IoT 设备、智能家居等。
内存受限的设备:UnQLite 可以在内存限制较大的设备上运行,并且能够将数据存储在磁盘上,减少内存占用。
键值对存储:适合存储如设备配置、日志数据等简单的键值对数据。
文档存储:也可以用于存储 JSON 格式的数据,适用于需要存储和查询半结构化数据的应用。
嵌入式场景kvdb数据库的使用(二)
相关文章:
小米自研vela系统kvdb数据库的使用(一)
KVDB数据库介绍 KVDB 数据库详细介绍KVDB 的基本原理 KVDB 的应用场景1. 缓存系统2. 配置管理3. 会话存储与用户状态管理4. 实时数据处理5. 日志记录与事件存储6. 分布式存储 KVDB 的作用KVDB 数据库的典型实现1. LevelDB2. RocksDB3. LMDB (Lightning Memory-Mapped Database)…...
Python 中的 `iter` 函数
因为在jax的代码接触了这个函数,不是很熟悉,每次看见名字只知道是迭代但是不知道是怎么迭代,因此写下以下笔记提醒自己。 def iter(source, sentinelNone): # known special case of iter"""iter(iterable) -> iteratorit…...
【AIGC】电话录音转文字实践:基于Google Cloud Speech-to-Text-v1的技术方案Python
引言 在当今数字化时代,将语音内容转换为文字已经成为一个非常重要的技术需求。无论是客服通话记录、会议纪要,还是电话采访内容,高效准确的语音转文字服务都能大大提升工作效率。本文将详细介绍如何利用Google Cloud Speech-to-Text服务实现…...
《AI赋能自由职业:开启竞争力提升新征程》
在当今数字化时代,AI技术为自由职业者带来了前所未有的机遇,使其能够在激烈的市场竞争中脱颖而出。以下是自由职业者借助AI提升自身竞争力的几种方法。 利用AI优化工作流程,提高效率 自动化任务处理:自由职业者可以借助自动化工具…...
学习vue3的笔记
一、vue和react的对比 1、基础介绍 vue:https://cn.vuejs.org/ vue3是2020年创建的 react:https://react.dev/ react是一个2013年开源的JavaScript库,严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…...
为什么要用ZGC
一、为什么要用 ZGC 问题 我们有个“智慧园区”的项目,我们的下游系统“交叉带”[硬件系统]要求我们服务 60ms内返回结果,并且可用性要达到 99.99%。当时使用的是 G1垃圾回收器,单次 Young GC 40ms,一分钟10次,接口平均响应时间…...
rm误删掉的文件夹/文件如何恢复
Linux环境rm不小心误删掉文件/文件夹如何安全恢复,推荐tool:ext4magic(ext4 or ext3),大家如果遇到误删的,希望可以帮到你。 误删了,最好要保留现场,如果能umout当前分区最好,不要在当前磁盘分…...
uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器
前言 uniapp,碰到新需求,反转摄像头,需要在打卡的时候对上传图片加上水印,拍照前就显示当前时间日期地点,拍摄后在呈现刚才拍摄的图加上水印,最好还需要将图片上传到阿里云。 声明 水印部分代码是借鉴的…...
南方电网场景中 Agent 的智慧赋能与创新实践(15/30)
一、南方电网的数字化变革浪潮 在当今时代,能源领域正经历着深刻的变革,南方电网作为我国电力供应的重要支柱,面临着诸多挑战与机遇。随着经济的快速发展,用电需求持续攀升,电力负荷峰谷差日益增大,给电网的…...
rk3399增加新分区和计算规则
如果想要添加一个新的分区,例如添加名为"userdata"的分区,大小为,除了预留6G的system文件系统根目录分区(我这里是rootfs分区),剩下的空间全部给userdata。 需要首先确定这个分区的起始地址。这个…...
风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注
风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注 数据集下载 yolov11: https://download.csdn.net/download/pbymw8iwm/90206849 yolov…...
计算机网络-L2TP VPN基础实验配置
一、概述 上次大概了解了L2TP的基本原理和使用场景,今天来模拟一个小实验,使用Ensp的网卡桥接到本地电脑试下L2TP拨号,今天主要使用标准的L2TP,其实在这个基础上可以加上IPSec进行加密,提高安全性。 网络拓扑 拓扑说明…...
QT集成IntelRealSense双目摄像头2,集成OpenGL
上一篇文章写了如何把IntelRealSense摄像头的SDK集成到QT项目,并成功采集数据,在没有用OpenCV的情况下完成色彩数据,以及深度数据的显示。 具体地址:https://blog.csdn.net/qujia121qu/article/details/144734163 本次主要写如何…...
MySQL数据库——索引结构之B+树
本文先介绍数据结构中树的演化过程,之后介绍为什么MySQL数据库选择了B树作为索引结构。 文章目录 树的演化为什么其他树结构不行?为什么不使用二叉查找树(BST)?为什么不使用平衡二叉树(AVL树)&a…...
基于SpringBoot+Vue的旅游推荐系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
HTML——20 自定义属性
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>自定义属性</title></head><body><a href"https://ai.m.taobao.com" 自定义属性"属性值">淘宝网</a><a href"h…...
Java Day1回顾简介-----变量命名规则
Java 简介、开发环境配置 菜鸟教程 编译运行 javac HelloWorld.java java HelloWorld Hello World public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");} }JAVA基础语法 类、对象、方法、实例、变量 对象&a…...
【Rust自学】8.2. Vector + Enum的应用
8.2.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…...
机器算法之逻辑回归(Logistic Regression)详解
一、什么是逻辑回归? 逻辑回归并不是传统意义上的回归分析,而是一种用于处理二分类问题的线性模型。它通过计算样本属于某一类别的概率来进行分类,尽管名字中有“回归”二字,但它实际上是一种分类算法。简单来说,逻辑…...
UE5材质节点VertexNormalWs/PixelNormalWS
VertexNormalWs顶点法线方向,此节点可以做物体上积雪、青苔等效果 PixelNormalWS像素法线方向...
NPM组件包 vant部分版本内嵌挖矿代码
Vant 是一个轻量、可定制的移动端组件库,于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。 Vant 2 版本:https://vant-ui.github.io/vant/v2/#/zh-CN/home V…...
通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计
半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平,电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战,这些问…...
【Android】application@label 属性属性冲突报错
错误记录 What went wrong: Execution failed for task :app:processDebugMainManifest. > Manifest merger failed : Attribute applicationlabel value(string/app_name) from AndroidManifest.xml:8:9-41is also present at [:abslibrary] AndroidManifest.xml:25:9-47 v…...
如何恢复永久删除的PPT文件?查看数据恢复教程!
可以恢复永久删除的PPT文件吗? Microsoft PowerPoint应用程序是一种应用广泛的演示程序,在人们的日常生活中经常使用。商人、官员、学生等在学习和工作中会使用PowerPoint做报告和演示。PowerPoint在人们的学习和工作生活中占主导地位,每天都…...
露营小程序搭建有哪些步骤?小程序里面可以找个露营搭子
露营不仅仅是走进大自然的旅程,它也成为了一种社交和体验式的活动。随着小程序的普及,露营活动也越来越多地开始在线上开展。通过搭建一个露营小程序,商家不仅可以为用户提供更多的露营选择,还可以帮助他们找到合适的露营搭子。那…...
python小项目:使用多剪贴板自动回复消息
使用多剪贴板自动回复消息 一、效果展示二、实现步骤2.1 编写python脚本2.2 批处理脚本2.3 运行脚本 三、用到知识3.1 sys.argv3.2 pyperclip3.2.1 主要功能3.2.2 跨平台支持3.2.3 安装方法3.2.4 基本用法3.2.5 高级用法3.2.6 注意事项 一、效果展示 说明:在windows…...
http性能测试命令ab
华子目录 使用方法常用选项示例输出解读注意事项 在 Linux系统中, ab( ApacheBench)是一个用于 测试HTTP服务器性能的 工具。它是 Apache HTTP服务器项目的 一部分,专门设计用来模拟 多个用户对 服务器发起 并发请求&am…...
C 实现植物大战僵尸(四)
C 实现植物大战僵尸(四) C 实现植物大战僵尸,完结撒花(还有个音频稍卡顿的性能问题,待有空优化解决)。目前基本的功能模块已经搭建好了,感兴趣的友友可自行尝试编写后续游戏内容 因为 C 站不能…...
GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程20241231
GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程 快速导航 引言Fork 与 Clone 概念对比完整开发流程Pull Request 最佳实践常见问题与解决方案最佳实践建议实战案例 引言 在开发者的协作世界中,GitHub 就像一座桥梁,连…...
hypothesis testing
p 值、t 值、显著水平值的意义 在统计学中,p 值、t 值和显著水平值 ( α (\alpha (α)是常用的概念,用于判断研究数据是否支持某个假设。以下是它们的定义、意义和相互关系。 1. p 值 定义 p 值是指在假设原假设 ( H 0 H_0 H0) 为真的前提下&#x…...
解決當前IP地址僅適用於本地網路
想要解決“當前IP地址僅適用於本地網路”其實並不困難。本篇文章將介紹其發生的原因以及如何解決。 “僅限本地網路”是什麼意思? 當IP地址為“僅限本地網路”時,意味著設備正在使用私人網路內部IP地址,但無法連接到互聯網。如果將本地IP視…...
一个最简单的ios程序(object_c)的编写
前言 如何在苹果系统MacOS创建一个简单的ios(iphone)程序,貌似非常的简单。但是,作为习惯了Windows开发的程序员来说,有时候还觉得有点麻烦,至少开始有点很不习惯。 本博文试着把这个过程展现一下ÿ…...
HTML5实现好看的新年春节元旦网站源码
HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 新年由来界面1.3 文章详细界面1.4 登录界面1.5 注册界面1.6 新年图册界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的新年春节元旦网站源码,春节新…...
NLP模型工程化部署
文章目录 一、理论-微服务、测试与GPU1)微服务架构2)代码测试3)GPU使用 二、实践-封装微服务,编写测试用例和脚本,并观察GPU1)微服务封装(RestFul和RPC)①RestFul接口②RPC接口 2)测试编写(unit…...
git时常混淆的操作的笔记
git时常混淆的操作的笔记 写在前面git rebase与merge的不同git am 与git apply的不同删除远端分支 写在前面 离开OS公司后,git的使用不再那么频繁。许多指令,时常忘记,这里作一点笔记。 git rebase与merge的不同 首先,这二者的…...
大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上)
大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上) 前言本篇摘要8. Additional Features:补充特性8.1 队列8.1.1 使用方法8.1.2 配置队列演示 8.2 输入输出流8.2.1 输出流1. 生成器yield2. 流媒体 8.2…...
vue3 Suspense组件
当等待数据的时间比开发人员希望的时间要长时在Vue3中无须自定义代码即可实现 只需要通过Suspense组件管理这一过程。 该组件除了可以给定默认加载数据后的渲染视图,还可以设置加载数据时的应急视图。 例如,在数据加载过程中,会先显示fall…...
Linux 内核调试
系列文章目录 Linux内核学习 QEMU 虚拟机 Linux 调试视频 近阶段补充知识 文章目录 系列文章目录一、WSL二、QEMU1、安装2、退出 三、构建根文件系统1、下载 BusyBox2、编译3、构建文件目录:Makefileinit 四、内核编译1、下载2、构建 五、调试1、GDB 命令调试2、VSC…...
【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】
【华为OD-E卷 - 机房布局 100分(python、java、c、js、c)】 题目 小明正在规划一个大型数据中心机房,为了使得机柜上的机器都能正常满负荷工作,需要确保在每个机柜边上至少要有一个电箱。 为了简化题目,假设这个机房…...
Cursor小试1.生成一个网页的接口请求工具
一般开发过程中,会涉及到接口的调试,往往有时候开发的电脑不是我们自己的,没有安装一些类似postman 的接口调用工具,所以发现问题或者要测试某些接口是否正常的时候会很麻烦,而且现在网上也没有找到很好的免费的网页端接口请求的网址,所以我们使用Cursor来编写这样一个小工具, …...
免费的量化交易股票API有哪些局限性?
免费的量化交易股票 API 存在以下多方面的局限性: 功能限制 数据获取方面: 数据种类不完整:可能仅提供基本的行情数据,如开盘价、收盘价、最高价、最低价等,而深度行情数据(如买卖盘的详细挂单情况…...
leetcode之hot100---148排序链表(C++)
题目要求将一个无序的链表按照升序返回,涉及排序算法,下面对每个排序算法进行回顾 一、交换排序 1.冒泡排序 算法思想:反复比较相邻的两个元素,将它们中较大的(或较小的)元素逐步“冒泡”到数组的末尾。…...
Redis下载与安装
Redis下载与安装 注意:官网没有提供Windows版本,只有Linux版本。 GitHub下载地址: https://github.com/microsoftarchive/redis/releases 这里演示解压版的” Redis-x64-3.2.100.zip”,下载完毕后解压即可。 目录解析: 以管理员…...
TF-IDF(Term Frequency-Inverse Document Frequency)详解:原理和python实现(中英双语)
中文版 TF-IDF算法详解:理解与应用 TF-IDF(Term Frequency-Inverse Document Frequency)是信息检索与文本挖掘中常用的算法,广泛应用于搜索引擎、推荐系统以及各种文本分析领域。TF-IDF的核心思想是通过计算一个词在文档中的重要…...
论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)
论文名:Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定,替换原模型的self-attention,改为cross-attention 实现 保证图片整体场…...
.Net Core配置系统
目录 Json文件配置 读取配置原始方法 绑定读取配置 用法 传统Web.config配置的缺点为了兼容,仍然可以使用Web.config和ConifgurationManager类,但不推荐.NET中的配置系统支持丰富的配置源,包括文件(json、xml、ini等ÿ…...
互联网直播点播平台EasyDSS无人机视频推拉流技术实现工地远程监控巡检直播
在建筑行业,施工现场的安全管理和实时监控一直是项目管理中的重点。随着技术的进步,无人机工地直播技术成为了一种新兴的解决方案,它不仅能够提高施工透明度,还能够加强现场安全管理。EasyDSS作为一种先进的流媒体技术平台&#x…...
VirtualBox新版本报错 Invalid installation directory解决方案
最近需要使用到VirtualBox,但是下载最新的安装时发现如下Invalid installation directory,经过多番查找终于找到了解决问题方法,并进行了测试,现将解决办法附上 步骤一、将需要安装VirtualBox的目录下创建个目录 步骤二、使用cmd&…...
PY_11_01
前言 PY_11_01 抄就行了👻 一、代码步骤 抄就行了👻 def fact(n):if n1:return 1else:return n*fact(n-1)while True:minput(请输入一个正整数m:)if not m.isdigit() or int(m)0:print(输入错误,请重新输入!)else:mint(m)brea…...
golang syscall 三种加载DLL方式
1. syscall.MustLoadDLL() MustLoadDLL 是一种加载 DLL 的函数,它会在加载 DLL 时,如果发生错误,直接 panic。 错误处理:如果 DLL 加载失败,它会调用 panic,导致程序崩溃。dll : syscall.MustLoadDLL(&qu…...