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

CCF-CV企业交流会:打造大模型时代的可信AI,探索AI安全治理新路径

CCF-CV企业交流会:打造大模型时代的可信AI,探索AI安全治理新路径

〇、前言 近日,由中国计算机学会计算机视觉专委会(CCF-CV)主办,合合信息承办,中国运筹学会数学与智能分会协办的《打造大模型时代的可信AI》论坛顺利举行。论坛特邀来自上海交通大学、电子技术标准化研究院、中国科学技术大学、中科院、合合信息等机构与企业的专家们,从立法、监管、前沿研究、技术实践等多个维度分享AI安全领域的最新进展,助力AI向善发展。 一、AI安全治理:产学研共话可信AI未来 随着以ChatGPT为代表的AI大语言模型技术的飞速发展,数据安全、知识产权、算法偏见和有害内容生成等大语言模型的内容安全问题日益凸显。如何确保AI大模型在生成内容的过程中遵循安全规范,成为业界关注的焦点。 论坛现场,嘉宾们纷纷就AI安全治理的热点话题发表了自己的见解。 上海交通大学人工智能研究院教授金耀辉指出,安全是一个抽象的概念,而安全对齐的过程则是一个从抽象到具体的模拟过程。通过这些手段,我们可以确保AI大模型在训练过程中就能够遵循安全规范,从而避免潜在的安全风险。 金耀辉教授提出“训练对齐、提示引导和文本过滤”三大安全保障手段,为AI安全治理这一问题的解决提供了新思

一篇5000字教程教大家怎么在Pycharm中调用AI模型的API进行辅助编程(可以免费无限使用Gemini-2.5-Flash-lite,Claude4.5也能调用)

一篇5000字教程教大家怎么在Pycharm中调用AI模型的API进行辅助编程(可以免费无限使用Gemini-2.5-Flash-lite,Claude4.5也能调用)

目录 1. 你要实现的效果,先在脑子里“对齐”一遍 2. 在 PyCharm 安装 ProxyAI,并确认它能正常弹出聊天窗口 3. 获取API镜像站的 API Key,并理解它在 ProxyAI 里应该填到哪 4. 在 ProxyAI 里把 Provider 切到 Custom OpenAI,并把 base URL 指向该镜像站 4.1 Base URL 到底应该填什么:要不要带 /chat/completions? 4.2 Model 应该怎么填:是“模型昵称”还是“模型 ID”? 5. 先别急着在插件里“

98_Spring AI 干货笔记之 Qdrant 向量存储

98_Spring AI 干货笔记之 Qdrant 向量存储

一、Qdrant 更多相关文章内容: 👉《Spring AI 干货笔记》专栏 本节将引导您设置 Qdrant VectorStore 来存储文档嵌入并执行相似性搜索。 Qdrant 是一个开源的高性能向量搜索引擎/数据库。它使用 HNSW(分层可导航小世界)算法实现高效的 k-NN 搜索操作,并为基于元数据的查询提供高级过滤功能。 二、先决条件 * Qdrant 实例:按照 Qdrant 文档中的 安装说明 设置一个 Qdrant 实例。 * (如果需要)用于 EmbeddingModel 的 API 密钥,以生成由 QdrantVectorStore 存储的嵌入。 建议预先创建具有适当维度和配置的 Qdrant 集合。如果未创建集合

Kiro 安装与上手:两种方法快速拥抱AWS新世代AI IDE

Kiro 安装与上手:两种方法快速拥抱AWS新世代AI IDE

Kiro是亚马逊 AWS 近期推出的一款备受关注的AI集成开发环境(IDE),它在竞争激烈的AI编码工具市场中,选择了一条差异化的道路。与市面上主流的、强调“即兴发挥”(Vibe Coding)的工具如Cursor不同,Kiro的核心是面向企业和专业开发者的“规范驱动开发”(Spec-Driven Development)。它的目标不仅仅是帮助开发者更快地编写代码,更是希望通过结构化的流程,引导团队产出更健壮、更易于维护的生产级软件。 以下是对Kiro的详细介绍: 📝 核心哲学:从“即兴创作”到“规范驱动” Kiro的诞生源于对当前“即兴编码”潮流的反思。许多AI工具虽然能快速生成代码,但也带来了缺乏文档、逻辑混乱、难以维护的“技术债务”问题 。Kiro的解决方案是在AI生成代码之前,引入一个严谨的规划阶段 。 其核心工作流围绕三个动态的“规范文件”展开,形成了一个“需求-设计-任务”的闭环: * requirements.md (需求):Kiro会将你的自然语言描述(无论是口头禅式的还是正式的)转化为结构化的用户故事和验收标准,通常会使用易于理解的EARS(