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

小米自研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 最常见的实现有 LevelDBRocksDBLMDBUnQLite等。

小米自研的操作系统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. 常用功能说明

  1. 创建数据库
    使用 unqlite_open() 打开数据库,如果数据库文件不存在,则会自动创建一个新的数据库
int unqlite_open(unqlite **ppDb, const char *zDbName, int flags);
  1. 插入数据(键值存储)
    通过 unqlite_kv_store() 插入数据。
int unqlite_kv_store(unqlite *pDb, const void *pKey, int nKeyLen, const void *pData, int nDataLen);

pKey:键的指针。
nKeyLen:键的长度。
pData:值的指针。
nDataLen:值的长度。

  1. 读取数据
    通过 unqlite_kv_fetch() 读取数据。
int unqlite_kv_fetch(unqlite *pDb, const void *pKey, int nKeyLen, void *pData, int *pDataLen);

pKey:键的指针。
nKeyLen:键的长度。
pData:存储读取数据的缓冲区。
pDataLen:输出参数,存储实际读取的值的长度。

  1. 删除数据
    通过 unqlite_kv_delete() 删除数据。
int unqlite_kv_delete(unqlite *pDb, const void *pKey, int nKeyLen);
  1. 关闭数据库
    使用 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的代码接触了这个函数&#xff0c;不是很熟悉&#xff0c;每次看见名字只知道是迭代但是不知道是怎么迭代&#xff0c;因此写下以下笔记提醒自己。 def iter(source, sentinelNone): # known special case of iter"""iter(iterable) -> iteratorit…...

【AIGC】电话录音转文字实践:基于Google Cloud Speech-to-Text-v1的技术方案Python

引言 在当今数字化时代&#xff0c;将语音内容转换为文字已经成为一个非常重要的技术需求。无论是客服通话记录、会议纪要&#xff0c;还是电话采访内容&#xff0c;高效准确的语音转文字服务都能大大提升工作效率。本文将详细介绍如何利用Google Cloud Speech-to-Text服务实现…...

《AI赋能自由职业:开启竞争力提升新征程》

在当今数字化时代&#xff0c;AI技术为自由职业者带来了前所未有的机遇&#xff0c;使其能够在激烈的市场竞争中脱颖而出。以下是自由职业者借助AI提升自身竞争力的几种方法。 利用AI优化工作流程&#xff0c;提高效率 自动化任务处理&#xff1a;自由职业者可以借助自动化工具…...

学习vue3的笔记

一、vue和react的对比 1、基础介绍 vue&#xff1a;https://cn.vuejs.org/ vue3是2020年创建的 react&#xff1a;https://react.dev/ react是一个2013年开源的JavaScript库&#xff0c;严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…...

为什么要用ZGC

一、为什么要用 ZGC 问题 我们有个“智慧园区”的项目,我们的下游系统“交叉带”[硬件系统]要求我们服务 60ms内返回结果&#xff0c;并且可用性要达到 99.99%。当时使用的是 G1垃圾回收器&#xff0c;单次 Young GC 40ms&#xff0c;一分钟10次&#xff0c;接口平均响应时间…...

rm误删掉的文件夹/文件如何恢复

Linux环境rm不小心误删掉文件/文件夹如何安全恢复&#xff0c;推荐tool&#xff1a;ext4magic(ext4 or ext3)&#xff0c;大家如果遇到误删的&#xff0c;希望可以帮到你。 误删了&#xff0c;最好要保留现场&#xff0c;如果能umout当前分区最好&#xff0c;不要在当前磁盘分…...

uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器

前言 uniapp&#xff0c;碰到新需求&#xff0c;反转摄像头&#xff0c;需要在打卡的时候对上传图片加上水印&#xff0c;拍照前就显示当前时间日期地点&#xff0c;拍摄后在呈现刚才拍摄的图加上水印&#xff0c;最好还需要将图片上传到阿里云。 声明 水印部分代码是借鉴的…...

南方电网场景中 Agent 的智慧赋能与创新实践(15/30)

一、南方电网的数字化变革浪潮 在当今时代&#xff0c;能源领域正经历着深刻的变革&#xff0c;南方电网作为我国电力供应的重要支柱&#xff0c;面临着诸多挑战与机遇。随着经济的快速发展&#xff0c;用电需求持续攀升&#xff0c;电力负荷峰谷差日益增大&#xff0c;给电网的…...

rk3399增加新分区和计算规则

如果想要添加一个新的分区&#xff0c;例如添加名为"userdata"的分区&#xff0c;大小为&#xff0c;除了预留6G的system文件系统根目录分区&#xff08;我这里是rootfs分区&#xff09;&#xff0c;剩下的空间全部给userdata。 需要首先确定这个分区的起始地址。这个…...

风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集&#xff0c;86.6&#xff05;准确识别率&#xff0c;11921张图片&#xff0c;支持yolo&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式的标注 数据集下载 yolov11&#xff1a; https://download.csdn.net/download/pbymw8iwm/90206849 yolov…...

计算机网络-L2TP VPN基础实验配置

一、概述 上次大概了解了L2TP的基本原理和使用场景&#xff0c;今天来模拟一个小实验&#xff0c;使用Ensp的网卡桥接到本地电脑试下L2TP拨号&#xff0c;今天主要使用标准的L2TP&#xff0c;其实在这个基础上可以加上IPSec进行加密&#xff0c;提高安全性。 网络拓扑 拓扑说明…...

QT集成IntelRealSense双目摄像头2,集成OpenGL

上一篇文章写了如何把IntelRealSense摄像头的SDK集成到QT项目&#xff0c;并成功采集数据&#xff0c;在没有用OpenCV的情况下完成色彩数据&#xff0c;以及深度数据的显示。 具体地址&#xff1a;https://blog.csdn.net/qujia121qu/article/details/144734163 本次主要写如何…...

MySQL数据库——索引结构之B+树

本文先介绍数据结构中树的演化过程&#xff0c;之后介绍为什么MySQL数据库选择了B树作为索引结构。 文章目录 树的演化为什么其他树结构不行&#xff1f;为什么不使用二叉查找树&#xff08;BST&#xff09;&#xff1f;为什么不使用平衡二叉树&#xff08;AVL树&#xff09;&a…...

基于SpringBoot+Vue的旅游推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

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中提供了很多集合类型的数据结构&#xff0c;这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的&#xff0c;这也意味着这些集合的数据大小无需在编…...

机器算法之逻辑回归(Logistic Regression)详解

一、什么是逻辑回归&#xff1f; 逻辑回归并不是传统意义上的回归分析&#xff0c;而是一种用于处理二分类问题的线性模型。它通过计算样本属于某一类别的概率来进行分类&#xff0c;尽管名字中有“回归”二字&#xff0c;但它实际上是一种分类算法。简单来说&#xff0c;逻辑…...

UE5材质节点VertexNormalWs/PixelNormalWS

VertexNormalWs顶点法线方向&#xff0c;此节点可以做物体上积雪、青苔等效果 PixelNormalWS像素法线方向...

NPM组件包 vant部分版本内嵌挖矿代码

Vant 是一个轻量、可定制的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 Vant 2 版本&#xff1a;https://vant-ui.github.io/vant/v2/#/zh-CN/home V…...

通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计

半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平&#xff0c;电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战&#xff0c;这些问…...

【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文件吗&#xff1f; Microsoft PowerPoint应用程序是一种应用广泛的演示程序&#xff0c;在人们的日常生活中经常使用。商人、官员、学生等在学习和工作中会使用PowerPoint做报告和演示。PowerPoint在人们的学习和工作生活中占主导地位&#xff0c;每天都…...

露营小程序搭建有哪些步骤?小程序里面可以找个露营搭子

露营不仅仅是走进大自然的旅程&#xff0c;它也成为了一种社交和体验式的活动。随着小程序的普及&#xff0c;露营活动也越来越多地开始在线上开展。通过搭建一个露营小程序&#xff0c;商家不仅可以为用户提供更多的露营选择&#xff0c;还可以帮助他们找到合适的露营搭子。那…...

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 注意事项 一、效果展示 说明&#xff1a;在windows…...

http性能测试命令ab

华子目录 使用方法常用选项示例输出解读注意事项 在 Linux系统中&#xff0c; ab&#xff08; ApacheBench&#xff09;是一个用于 测试HTTP服务器性能的 工具。它是 Apache HTTP服务器项目的 一部分&#xff0c;专门设计用来模拟 多个用户对 服务器发起 并发请求&am…...

C 实现植物大战僵尸(四)

C 实现植物大战僵尸&#xff08;四&#xff09; C 实现植物大战僵尸&#xff0c;完结撒花&#xff08;还有个音频稍卡顿的性能问题&#xff0c;待有空优化解决&#xff09;。目前基本的功能模块已经搭建好了&#xff0c;感兴趣的友友可自行尝试编写后续游戏内容 因为 C 站不能…...

GitHub Fork 和 Clone 的深度指南:操作解析与 Pull Request 完整流程20241231

GitHub Fork 和 Clone 的深度指南&#xff1a;操作解析与 Pull Request 完整流程 快速导航 引言Fork 与 Clone 概念对比完整开发流程Pull Request 最佳实践常见问题与解决方案最佳实践建议实战案例 引言 在开发者的协作世界中&#xff0c;GitHub 就像一座桥梁&#xff0c;连…...

hypothesis testing

p 值、t 值、显著水平值的意义 在统计学中&#xff0c;p 值、t 值和显著水平值 ( α (\alpha (α)是常用的概念&#xff0c;用于判断研究数据是否支持某个假设。以下是它们的定义、意义和相互关系。 1. p 值 定义 p 值是指在假设原假设 ( H 0 H_0 H0​) 为真的前提下&#x…...

解決當前IP地址僅適用於本地網路

想要解決“當前IP地址僅適用於本地網路”其實並不困難。本篇文章將介紹其發生的原因以及如何解決。 “僅限本地網路”是什麼意思&#xff1f; 當IP地址為“僅限本地網路”時&#xff0c;意味著設備正在使用私人網路內部IP地址&#xff0c;但無法連接到互聯網。如果將本地IP視…...

一个最简单的ios程序(object_c)的编写

前言 如何在苹果系统MacOS创建一个简单的ios&#xff08;iphone&#xff09;程序&#xff0c;貌似非常的简单。但是&#xff0c;作为习惯了Windows开发的程序员来说&#xff0c;有时候还觉得有点麻烦&#xff0c;至少开始有点很不习惯。 本博文试着把这个过程展现一下&#xff…...

HTML5实现好看的新年春节元旦网站源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 新年由来界面1.3 文章详细界面1.4 登录界面1.5 注册界面1.6 新年图册界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的新年春节元旦网站源码&#xff0c;春节新…...

NLP模型工程化部署

文章目录 一、理论-微服务、测试与GPU1&#xff09;微服务架构2&#xff09;代码测试3&#xff09;GPU使用 二、实践-封装微服务&#xff0c;编写测试用例和脚本&#xff0c;并观察GPU1&#xff09;微服务封装(RestFul和RPC)①RestFul接口②RPC接口 2&#xff09;测试编写(unit…...

git时常混淆的操作的笔记

git时常混淆的操作的笔记 写在前面git rebase与merge的不同git am 与git apply的不同删除远端分支 写在前面 离开OS公司后&#xff0c;git的使用不再那么频繁。许多指令&#xff0c;时常忘记&#xff0c;这里作一点笔记。 git rebase与merge的不同 首先&#xff0c;这二者的…...

大模型WebUI:Gradio全解系列8——Additional Features:补充特性(上)

大模型WebUI&#xff1a;Gradio全解系列8——Additional Features&#xff1a;补充特性&#xff08;上&#xff09; 前言本篇摘要8. Additional Features&#xff1a;补充特性8.1 队列8.1.1 使用方法8.1.2 配置队列演示 8.2 输入输出流8.2.1 输出流1. 生成器yield2. 流媒体 8.2…...

vue3 Suspense组件

当等待数据的时间比开发人员希望的时间要长时在Vue3中无须自定义代码即可实现 只需要通过Suspense组件管理这一过程。 该组件除了可以给定默认加载数据后的渲染视图&#xff0c;还可以设置加载数据时的应急视图。 例如&#xff0c;在数据加载过程中&#xff0c;会先显示fall…...

Linux 内核调试

系列文章目录 Linux内核学习 QEMU 虚拟机 Linux 调试视频 近阶段补充知识 文章目录 系列文章目录一、WSL二、QEMU1、安装2、退出 三、构建根文件系统1、下载 BusyBox2、编译3、构建文件目录&#xff1a;Makefileinit 四、内核编译1、下载2、构建 五、调试1、GDB 命令调试2、VSC…...

【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】

【华为OD-E卷 - 机房布局 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小明正在规划一个大型数据中心机房&#xff0c;为了使得机柜上的机器都能正常满负荷工作&#xff0c;需要确保在每个机柜边上至少要有一个电箱。 为了简化题目&#xff0c;假设这个机房…...

Cursor小试1.生成一个网页的接口请求工具

一般开发过程中,会涉及到接口的调试,往往有时候开发的电脑不是我们自己的,没有安装一些类似postman 的接口调用工具,所以发现问题或者要测试某些接口是否正常的时候会很麻烦,而且现在网上也没有找到很好的免费的网页端接口请求的网址,所以我们使用Cursor来编写这样一个小工具, …...

免费的量化交易股票API有哪些局限性?

免费的量化交易股票 API 存在以下多方面的局限性&#xff1a; 功能限制 数据获取方面&#xff1a; 数据种类不完整&#xff1a;可能仅提供基本的行情数据&#xff0c;如开盘价、收盘价、最高价、最低价等&#xff0c;而深度行情数据&#xff08;如买卖盘的详细挂单情况&#xf…...

leetcode之hot100---148排序链表(C++)

题目要求将一个无序的链表按照升序返回&#xff0c;涉及排序算法&#xff0c;下面对每个排序算法进行回顾 一、交换排序 1.冒泡排序 算法思想&#xff1a;反复比较相邻的两个元素&#xff0c;将它们中较大的&#xff08;或较小的&#xff09;元素逐步“冒泡”到数组的末尾。…...

Redis下载与安装

Redis下载与安装 注意&#xff1a;官网没有提供Windows版本&#xff0c;只有Linux版本。 GitHub下载地址: https://github.com/microsoftarchive/redis/releases 这里演示解压版的” Redis-x64-3.2.100.zip”&#xff0c;下载完毕后解压即可。 目录解析&#xff1a; 以管理员…...

TF-IDF(Term Frequency-Inverse Document Frequency)详解:原理和python实现(中英双语)

中文版 TF-IDF算法详解&#xff1a;理解与应用 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是信息检索与文本挖掘中常用的算法&#xff0c;广泛应用于搜索引擎、推荐系统以及各种文本分析领域。TF-IDF的核心思想是通过计算一个词在文档中的重要…...

论文研读:Text2Video-Zero 无需微调,仅改动<文生图模型>推理函数实现文生视频(Arxiv 2023-03-23)

论文名&#xff1a;Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators 1. 摘要 1.1 方法总结 通过潜空间插值, 实现动作连续帧。 以第一帧为锚定&#xff0c;替换原模型的self-attention&#xff0c;改为cross-attention 实现 保证图片整体场…...

.Net Core配置系统

目录 Json文件配置 读取配置原始方法 绑定读取配置 用法 传统Web.config配置的缺点为了兼容&#xff0c;仍然可以使用Web.config和ConifgurationManager类&#xff0c;但不推荐.NET中的配置系统支持丰富的配置源&#xff0c;包括文件&#xff08;json、xml、ini等&#xff…...

互联网直播点播平台EasyDSS无人机视频推拉流技术实现工地远程监控巡检直播

在建筑行业&#xff0c;施工现场的安全管理和实时监控一直是项目管理中的重点。随着技术的进步&#xff0c;无人机工地直播技术成为了一种新兴的解决方案&#xff0c;它不仅能够提高施工透明度&#xff0c;还能够加强现场安全管理。EasyDSS作为一种先进的流媒体技术平台&#x…...

VirtualBox新版本报错 Invalid installation directory解决方案

最近需要使用到VirtualBox&#xff0c;但是下载最新的安装时发现如下Invalid installation directory&#xff0c;经过多番查找终于找到了解决问题方法&#xff0c;并进行了测试&#xff0c;现将解决办法附上 步骤一、将需要安装VirtualBox的目录下创建个目录 步骤二、使用cmd&…...

PY_11_01

前言 PY_11_01 抄就行了&#x1f47b; 一、代码步骤 抄就行了&#x1f47b; 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(输入错误&#xff0c;请重新输入&#xff01;)else:mint(m)brea…...

golang syscall 三种加载DLL方式

1. syscall.MustLoadDLL() MustLoadDLL 是一种加载 DLL 的函数&#xff0c;它会在加载 DLL 时&#xff0c;如果发生错误&#xff0c;直接 panic。 错误处理&#xff1a;如果 DLL 加载失败&#xff0c;它会调用 panic&#xff0c;导致程序崩溃。dll : syscall.MustLoadDLL(&qu…...