前端数据库 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

【VSCode Copilot登录失败终极指南】:9大常见问题与高效解决方案

第一章:VSCode Copilot登录失败的典型表现 当使用 VSCode 中的 GitHub Copilot 插件时,用户在尝试登录过程中可能会遇到多种异常现象。这些表现不仅影响代码补全功能的正常使用,还可能干扰开发流程。以下是常见的登录失败典型表现。 认证窗口无法加载 部分用户在点击“Sign in to GitHub”后,浏览器或内置认证弹窗长时间停留在加载状态,最终显示空白页面或提示网络错误。这通常与本地网络策略、代理设置或防火墙规则有关。 登录成功但插件无响应 尽管认证流程显示已完成,Copilot 图标仍显示未登录状态,且不提供任何代码建议。此时可在命令面板(Ctrl+Shift+P)中执行以下命令检查状态: # 检查 Copilot 当前会话状态 Developer: Reload With Extensions Disabled # 重新启用后再次尝试 GitHub Copilot: Sign in to GitHub 错误提示信息汇总

FPGA板上基于Simulink与ModelSim联合仿真验证的Buck闭环设计及调试

FPGA板上基于Simulink与ModelSim联合仿真验证的Buck闭环设计及调试

simulink与modelsim联合仿真buck闭环设计 主电路用simulink搭建,控制电路完全有verilog语言实现(包括DPWM,PI补偿器) 适用于验证基于fpga的电力电子变换器控制,由于控制回路完全由verilog语言编写,因此仿真验证通过,可直接下载进fpga板子,极大缩短了开发数字电源的研发周期。 buck变换器指标如下: (*额定输入电压*) Vin->20, (*最大输入电压*) Vin_max->25, (*最小输入电压*) Vin_min->15, (*输出电压*)Vo>10, (*开关频率*)fs->50*10^3, (*输出功率*)Po->100, (*最小占空比*)Dmin->0.1, (*额定占空比*)D ->0.5,

在OrangePi-5 Plus/5 Ultra上实时运行yolo26进行无人机检测,fps超50!

在OrangePi-5 Plus/5 Ultra上实时运行yolo26进行无人机检测,fps超50!

在OrangePi-5 Plus/5 Ultra上使用VideoPipe与YOLO26n实现高性能无人机检测 视频效果展示 RK3588无人机检测 前言 随着低空经济的快速发展,无人机检测已成为安防监控、边境巡逻、关键区域保护等场景中的重要需求。OrangePi 5 Plus和OrangePi 5 Ultra作为瑞芯微RK3588平台的高性能开发板,凭借其强大的NPU算力,成为边缘端AI推理的理想选择。 本文将详细介绍如何基于VideoPipe框架,结合最新的YOLO26n模型,在这两款开发板上实现高效的无人机检测,并分享我们在预处理和模型量化方面的深度优化经验。 一、硬件平台与模型概述 1.1 硬件平台 * OrangePi 5 Plus: 搭载瑞芯微RK3588处理器,8核CPU + Mali-G610 GPU + 6TOPS NPU * OrangePi 5 Ultra: 同样基于RK3588,NPU算力可达16TOPS(INT8) 这两款开发板都具备强劲的AI推理能力,非常适合部署目标检测模型。 📷 图1: OrangePi 5 Plus

Qwen2.5-0.5B极速对话机器人:轻量级大模型在边缘计算中的实战

Qwen2.5-0.5B极速对话机器人:轻量级大模型在边缘计算中的实战 1. 轻量级大模型的现实意义 你有没有遇到过这样的场景:想在树莓派上跑个AI助手,结果发现模型太大、速度太慢,连回答一句“今天天气怎么样”都要等十几秒?或者部署一个客服机器人,却因为GPU成本太高而不得不放弃? 这正是我们今天要解决的问题。随着AI技术的发展,越来越多的应用需要在本地设备或低算力环境中运行——比如智能家居控制中心、工业边缘网关、移动巡检终端。这些场景对响应速度和资源占用极为敏感。 而Qwen2.5系列中最轻量的成员——Qwen/Qwen2.5-0.5B-Instruct,就是为此类需求量身打造的。它仅有约1GB的模型体积,却能在纯CPU环境下实现接近打字机输出速度的流式对话体验。 更关键的是,这个镜像不是简单的模型封装,而是完整集成了Web聊天界面、流式输出机制和指令微调能力,真正做到了“一键启动,开箱即用”。 2. 技术特性深度解析 2.1 模型架构与性能权衡 Qwen2.5-0.5B是通义千问系列中参数最少的版本(5亿参数),但它并非简单缩水版。通过高质量的指令微调(Inst