前端数据库 IndexedDB 详解:构建强大的离线Web应用

前端数据库 IndexedDB 详解:构建强大的离线Web应用

引言:为什么需要前端数据库?

在现代Web开发中,我们经常需要处理大量结构化数据。传统的localStoragesessionStorage虽然简单易用,但只能存储少量字符串数据,无法满足复杂应用的需求。IndexedDB应运而生——这是一个功能强大的浏览器内置数据库,支持存储大量结构化数据,提供索引、事务等高级功能,是实现离线应用、缓存机制和复杂数据处理的理想选择。

IndexedDB核心概念解析

1. 数据库(Database)

  • 每个源(协议+域名+端口)可以创建多个数据库
  • 每个数据库包含多个对象存储(类似于SQL中的表)

2. 对象存储(Object Store)

  • 存储键值对集合的主要容器
  • 键可以是路径、自增数字或自定义键生成器
  • 值可以是任何结构化可克隆对象

3. 索引(Index)

  • 允许高效查询对象存储中的数据
  • 可以基于对象属性创建多个索引
  • 支持唯一索引约束

4. 事务(Transaction)

  • 所有操作都在事务中执行
  • 三种模式:只读(readonly)、读写(readwrite)和版本变更(versionchange)
  • 提供原子性保证(全部成功或全部失败)

5. 游标(Cursor)

  • 用于遍历对象存储或索引中的记录
  • 支持方向控制(前进/后退)和范围查询

完整代码示例:实现一个联系人管理器

1. 初始化数据库

// 打开或创建数据库const dbName ='ContactDB';const dbVersion =1;const request = indexedDB.open(dbName, dbVersion); request.onerror=(event)=>{  console.error('数据库打开失败:', event.target.error);}; request.onupgradeneeded=(event)=>{ const db = event.target.result;// 创建对象存储(如果不存在)if(!db.objectStoreNames.contains('contacts')){ const store = db.createObjectStore('contacts',{  keyPath:'id', autoIncrement:true});// 创建索引 store.createIndex('name','name',{  unique:false}); store.createIndex('email','email',{  unique:true}); store.createIndex('phone','phone',{  unique:false}); store.createIndex('group','group',{  unique:false});}}; request.onsuccess=(event)=>{ const db = event.target.result; console.log('数据库成功打开');// 存储数据库引用供后续使用 window.contactDB = db;};

2. 添加联系人

functionaddContact(contact){ returnnew

Read more

llama.cpp + llama-server 的安装部署验证

飞桨AI Studio星河社区-人工智能学习与实训社区 用的是 魔塔的免费资源 不太稳定 我的Notebook · 魔搭社区 cat /etc/os-release  Ubuntu 22.04.5 LTS (Jammy Jellyfish) —— 这是一个长期支持(LTS)且完全受支持的现代 Linux 发行版,非常适合部署 llama.cpp + llama-server。Ubuntu 22.04 自带较新的 GCC(11+)、CMake(3.22+)和 Python 3.10+,无需手动升级工具链,部署过程非常顺畅。 一、安装系统依赖 sudo apt update sudo apt install -y

11-Xtuner具体使用以及LLama Factory与Xtuner多卡微调大模型

11-Xtuner具体使用以及LLama Factory与Xtuner多卡微调大模型

训练前 500轮训练后 xtuner命令不存在 版本:0.2.0存在 回退到0.2.0rc0版本,注意这个版本的依赖固定 一、大模型分布式训练的基本概念 1.1 为什么需要分布式训练? 模型规模爆炸:现代大模型(如GPT-3、 LLaMA等)参数量达千亿级别,单卡GPU无法存储完整模型。 计算资源需求:训练大模型需要海量计算(如GPT-3需数万GPU小时),分布式训练可加速训练过程。 内存瓶颈:单卡显存不足以容纳大模型参数、梯度及优化器状态。 1.2 分布式训练的核心技术 数据并行(Data Parallelism) 原理:将数据划分为多个批次,分发到不同设备,每个设备拥有完整的模型副本。 同步方式:通过All-Reduce操作同步梯度(如PyTorch的DistributedDataParallel)。 挑战:通信开销大,显存占用高(需存储完整模型参数和优化器状态)。 模型并行(Model Parallelism) 原理:

SiameseUniNLU镜像免配置优势:开箱即用支持NER/RE/EC/RC/NLI/RC/QA八大任务

SiameseUniNLU镜像免配置优势:开箱即用支持NER/RE/EC/RC/NLI/RC/QA八大任务 你是不是也遇到过这样的烦恼?想用AI模型处理一段中文文本,比如从新闻里提取人名地名,或者分析一段评论是好评还是差评。结果发现,每个任务都需要找一个专门的模型,部署起来步骤一大堆,配置文件看得人头大,好不容易跑起来了,效果还不一定好。 今天要介绍的SiameseUniNLU镜像,就是来解决这个问题的。它就像一个“自然语言处理瑞士军刀”,把命名实体识别、关系抽取、情感分类等八个常用任务,全都打包进了一个模型里。最棒的是,它完全免配置,下载下来就能用,真正做到了开箱即用。 这篇文章,我就带你快速上手这个强大的工具,看看它到底能做什么,以及怎么用最简单的几步,让它为你工作。 1. SiameseUniNLU是什么?一个模型解决八大任务 在深入使用之前,我们先花几分钟了解一下SiameseUniNLU到底厉害在哪里。理解了它的设计思路,你用起来会更得心应手。 1.1 核心思路:用“提示”统一所有任务 传统的自然语言处理(NLP)

从零开始:AIGC中的变分自编码器(VAE)代码与实现

从零开始:AIGC中的变分自编码器(VAE)代码与实现

个人主页:chian-ocean 文章专栏 深入理解AIGC中的变分自编码器(VAE)及其应用 随着AIGC(AI-Generated Content)技术的发展,生成式模型在内容生成中的地位愈发重要。从文本生成到图像生成,变分自编码器(Variational Autoencoder, VAE)作为生成式模型的一种,已经广泛应用于多个领域。本文将详细介绍VAE的理论基础、数学原理、代码实现、实际应用以及与其他生成模型的对比。 1. 什么是变分自编码器(VAE)? 变分自编码器(VAE)是一种生成式深度学习模型,结合了传统的概率图模型与深度神经网络,能够在输入空间和隐变量空间之间建立联系。VAE与普通自编码器不同,其目标不仅仅是重建输入,而是学习数据的概率分布,从而生成新的、高质量的样本。 1.1 VAE 的核心特点 * 生成能力:VAE通过学习数据的分布,能够生成与训练数据相似的新样本。 * 隐空间结构化表示:VAE学习的隐变量分布是连续且结构化的,使得插值和生成更加自然。 * 概率建模:VAE通过最大化似然估计,能够对数据分布进行建模,并捕获数据的复杂特性。