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

【MongoDB篇】MongoDB的集合操作!

在这里插入图片描述

目录

    • 引言
    • 第一节:集合的“诞生”——自动出现还是手动打造?🤔
    • 第二节:集合的“查阅”——看看这个数据库里有哪些柜子?📂👀
    • 第三节:集合的“重命名”——给文件柜换个名字!✏️
    • 第四节:集合的“销毁”——丢掉这个文件柜!💥👋
    • 第五节:集合与模式 (Schema) 的那些事儿 🤔↔️📄
    • 第六节:总结与展望 (集合篇) 🎉📄

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!

其他优质专栏: 【🎇SpringBoot】【🎉多线程】【🎨Redis】【✨设计模式专栏(已完结)】…等

如果喜欢作者的讲解方式,可以点赞收藏加关注,你的支持就是我的动力
✨更多文章请看个人主页: 码熔burning

来,各位csdn的佬友们!💻📱 这是一篇专门为你量身定制的,关于如何“驯服”MongoDB 数据库(而不是里面的数据)的干货文章!请接收!👇

看之前可以先了解一下MongoDB是什么:【MongoDB篇】万字带你初识MongoDB!

引言

各位未来的技术大牛们,你们好!👋 上一篇咱们聊透了 MongoDB 的“房间”——数据库。现在,咱们的目光转向房间里那些用来分门别类存放数据的“文件柜”——集合 (Collection)

了解数据库操作请看:【MongoDB篇】MongoDB的数据库操作!

在传统的关系型数据库里,你把数据放在“表”里,表有固定的列,每行数据都得按照表的结构来。而在 MongoDB 里,这个概念被“集合”取代了。集合是文档 (Document) 的容器,它最大的特点是:同一个集合里的文档,可以有不同的结构! 🤯

想象一下,你的文件柜里不再是整齐划一的文件夹,而是各种形状、大小、内容都不一样的“包裹”(文档),只要你能把它们塞进同一个柜子(集合)里,就行!📦➡️📁

这种灵活的设计,让 MongoDB 在处理多样化、结构不固定的数据时如鱼得水!🚀

那么,对于这些灵活的“文件柜”,我们都能做些什么操作呢?

第一节:集合的“诞生”——自动出现还是手动打造?🤔

就像数据库一样,MongoDB 的集合也可以通过两种方式“诞生”:自动创建 (Implicit Creation)手动创建 (Explicit Creation)

1. 自动创建 (Implicit Creation) - 懒人模式!😴

这是 MongoDB 最常见的方式!当你第一次向一个不存在的集合中插入文档时,MongoDB 会自动创建这个集合。

示例:

假设你当前在 mydatabase 数据库里,并且里面还没有一个叫 users 的集合。

use mydatabase; // 切换到数据库
db.users.insertOne({ name: "张三", age: 30 }); // 向 users 集合插入第一个文档

在这里插入图片描述

执行 db.users.insertOne(...) 命令后,MongoDB 会发现 mydatabase 数据库里还没有 users 这个集合,于是它会自动为你创建 users 集合,然后再把文档插入进去。

此时,如果你执行 show collections; 命令,你会看到 users 集合已经出现在列表里了!🎉

在这里插入图片描述

优点: 开发速度快,特别是在原型开发或数据结构变动频繁时,你不需要停下来先定义集合。
缺点: 无法在创建时指定一些高级选项,比如设置固定大小集合 (Capped Collection) 或添加数据验证规则 (Schema Validation)。

2. 手动创建 (Explicit Creation) - 精心打造模式!📐✨

如果你需要在创建集合时指定一些特殊的属性或行为,比如固定大小、数据验证规则等,你就需要使用 db.createCollection() 命令来手动创建集合。

db.createCollection(name, options)
  • name: 要创建的集合的名称(字符串)。
  • options: 一个文档,用于指定集合的配置选项(可选)。

示例:

db.createCollection("my_logs"); // 创建一个最简单的集合 my_logs// 创建一个带选项的集合
db.createCollection("capped_logs", {capped: true,        // 设置为固定大小集合size: 1024 * 1024 * 100 // 设置集合大小上限为 100MB (字节)
});// 创建一个带数据验证规则的集合
db.createCollection("strict_users", {validator: { // 验证规则$jsonSchema: { // 使用 JSON Schema 标准定义验证规则bsonType: "object", // 文档必须是对象类型required: ["name", "age", "email"], // 必须包含 name, age, email 字段properties: { // 定义字段的规则name: {bsonType: "string",description: "must be a string and is required"},age: {bsonType: "int", // 年龄必须是整数minimum: 0,     // 最小值为 0description: "must be an integer >= 0 and is required"},email: {bsonType: "string",pattern: "^.+@.+\\..+$", // 邮箱格式验证description: "must be a string and match the email pattern and is required"},// 其他可选字段...status: {enum: ["active", "inactive", "pending"], // status 字段的值必须是列表中的一个description: "can only be one of the enum values"}}}},validationLevel: "strict", // 验证级别: "strict" (默认) 或 "moderate"validationAction: "error" // 验证失败时的动作: "error" (默认) 或 "warn"
});

createCollection 命令的常用选项详解:

  • capped: <boolean>:设置为 true 创建一个固定大小集合 (Capped Collection)。固定大小集合有以下特点:
    • 高性能写入:写入速度非常快,因为它只是在集合末尾追加数据。
    • 插入顺序保留:文档始终按照插入顺序存储和读取。
    • 达到上限时自动覆盖:当集合达到 sizemax 指定的上限时,最老的文档会被新的文档自动覆盖,就像一个循环缓冲区!🔄
    • 不支持删除或更新导致的文档大小增加:通常用于存储日志、缓存、消息队列等需要快速写入、按时间排序且会自动清理旧数据的场景。
  • size: <number>:指定固定大小集合的最大容量(以字节为单位)。必须与 capped: true 一起使用。
  • max: <number>:指定固定大小集合的最大文档数量。可选,与 capped: truesize 一起使用。如果同时指定了 sizemax,则哪个先达到,集合就达到上限。
  • validator: <document>:指定集合的数据验证规则 (Schema Validation)。这是一个强大的功能,让你在 MongoDB 的灵活模式基础上,依然能对文档结构和内容进行一定程度的约束!你可以使用 JSON Schema 标准或者 MongoDB 特定的验证表达式来定义规则。
    • 验证规则定义在一个文档中。
    • $jsonSchema 是最推荐的方式,因为它基于标准,易于理解和维护。
    • 你可以定义字段的类型 (bsonType)、必填字段 (required)、字段的属性规则 (properties),甚至更复杂的逻辑。
  • validationLevel: <string>:验证级别,控制验证规则在什么时候执行:
    • strict (默认):对所有的插入和更新操作都应用验证规则。
    • moderate:只对现有的有效文档应用验证规则,对于插入操作和对无效文档的更新才应用验证规则。对于更新操作,如果更新会导致文档从有效变为无效,也会应用验证规则。
  • validationAction: <string>:验证失败时的动作:
    • error (默认):验证失败时,拒绝插入或更新操作,并抛出错误。
    • warn:验证失败时,记录警告日志,但仍然允许插入或更新操作。
  • collation: <document>:指定集合的排序规则 (Collation)。这对于进行字符串比较操作(比如排序、字符串相等比较、范围查询、聚合中的分组等)非常重要,特别是当你处理非英文字符(比如中文)时。可以指定语言、大小写敏感性、重音敏感性等。
  • storageEngine: <document>:指定集合使用的存储引擎的特定选项。通常你不需要在这里指定,除非你有特殊的存储引擎配置需求。MongoDB 默认使用 WiredTiger 存储引擎。

通过 createCollection 命令并配合这些选项,你可以根据不同的业务场景,创建出满足特定需求的“文件柜”!🎯

注意: 手动创建的空集合也会立即出现在 show collections; 列表中!不像自动创建那样需要先有数据。

第二节:集合的“查阅”——看看这个数据库里有哪些柜子?📂👀

想知道你当前所在的数据库里有哪些集合?很简单!

使用 show collections; 命令。

use mydatabase; // 切换到数据库
show collections;

执行这个命令后,你会看到当前数据库中所有集合的名称列表。

注意: 这个命令只会列出当前数据库中的集合,不会列出其他数据库的集合。它就像是打开了当前房间的门,看看里面有哪些文件柜,而不会去隔壁房间看。🚪👀

第三节:集合的“重命名”——给文件柜换个名字!✏️

文件柜名字起得不好?想换个更贴切的名字?没问题!你可以重命名一个集合。

使用 db.collection_name.renameCollection("new_name") 命令。

use mydatabase; // 切换到集合所在的数据库
db.myoldcollection.renameCollection("mynewcollection"); // 将 myoldcollection 改名为 mynewcollection
  • db.myoldcollection: 指定要重命名的集合对象。
  • renameCollection("mynewcollection"): 调用 renameCollection 方法,并传入新的集合名称。

注意: 重命名操作是原子性的,它会一次性完成。重命名后,原集合名称就不能再使用了。

第四节:集合的“销毁”——丢掉这个文件柜!💥👋

如果某个集合的数据已经不再需要,或者整个文件柜都要扔掉,你可以删除(销毁)一个集合。

警告: 删除集合是一个非常危险的操作! 一旦删除,该集合中的所有文档都将永久丢失不可恢复! 在执行这个操作之前,请务必再三确认,并在生产环境谨慎至极,最好先进行备份!💣💾

删除集合的命令是 db.collection_name.drop()

  1. 首先,你需要切换到包含要删除集合的数据库。

  2. 然后,指定要删除的集合名称,并调用 drop() 方法。

    use mydatabase; // 切换到数据库
    db.mycollection.drop(); // 删除名为 mycollection 的集合
    

执行这个命令后,MongoDB 会返回一个结果,告诉你操作是否成功。通常你会看到 true 或者一个包含成功信息的文档。

再运行 show collections;,你会发现刚才删除的集合已经不见了!💨

在这里插入图片描述

重要注意事项:

  • drop() 方法总是删除你调用它的那个集合对象。确保你调用的是正确的集合!
  • 删除集合的操作也需要足够的权限,通常需要该集合所在数据库的 dropCollectiondbAdmin 等角色权限。

第五节:集合与模式 (Schema) 的那些事儿 🤔↔️📄

前面我们一直强调,MongoDB 的集合是“模式灵活”的,同一个集合里的文档可以有不同的结构。这是它与关系型数据库“表”的最大区别之一。

这种灵活性带来了巨大的开发便利性,特别是在数据结构不稳定或多样化的场景。但同时,它也带来了一些挑战:

  • Schema on Read vs Schema on Write: 传统关系型数据库是“Schema on Write”,你在写入数据前就定义好模式,写入时强制遵守。MongoDB 则是“Schema on Read”,它不强制写入时的模式(除非你使用了验证规则),而是在读取数据时由应用程序去理解和处理不同的文档结构。这意味着你的应用程序代码需要更灵活地处理可能存在的字段缺失或类型不匹配问题。
  • 数据一致性: 如果没有验证规则,同一个字段在不同文档中可能有不同的数据类型(比如,某个文档的 age 是数字,另一个是字符串),这可能导致查询或聚合操作出现意外结果。

这就是为什么 MongoDB 引入了数据验证 (Schema Validation) 这个功能!通过在集合层面定义验证规则,你可以在享受模式灵活带来的便利的同时,也能保证关键数据的结构和类型符合预期,提高数据质量和一致性!✅

选择是否使用以及使用多严格的验证规则,取决于你的业务需求和对数据一致性的要求。

第六节:总结与展望 (集合篇) 🎉📄

太棒了!关于 MongoDB 的“文件柜”——集合,我们已经从它的“出生”聊到了“死亡”,还深入了解了它灵活的模式以及如何通过验证规则进行约束!

核心要点回顾:

  • 集合是文档的容器,模式灵活。
  • 创建可以是自动(第一次写入数据时)或手动createCollection)。
  • createCollection 可以指定固定大小 (capped)数据验证 (validator)排序规则 (collation) 等选项。
  • 查看集合使用 show collections;
  • 重命名集合使用 db.collection.renameCollection();
  • 删除集合使用 db.collection.drop();危险!
  • 集合的模式灵活带来便利和挑战,数据验证是平衡两者的方式。

现在,我们已经掌握了如何在 MongoDB 这个“仓库”中划分“房间”(数据库),以及如何在房间里设置“文件柜”(集合)。接下来,就该看看文件柜里那些最最核心的“文件”——文档 (Document) 了!那可是真正的数据载体!📄

关注作者不迷路,下篇文章会讲解。


相关文章:

【MongoDB篇】MongoDB的集合操作!

目录 引言第一节&#xff1a;集合的“诞生”——自动出现还是手动打造&#xff1f;&#x1f914;第二节&#xff1a;集合的“查阅”——看看这个数据库里有哪些柜子&#xff1f;&#x1f4c2;&#x1f440;第三节&#xff1a;集合的“重命名”——给文件柜换个名字&#xff01;…...

antd中的表格穿梭框(Transfer)如何使用

穿梭框是什么?怎么使用? 需求如下: 有一组端口需要分配给具体接口 功能要求: 1. 需要展示当前端口名称及其所属的接口 2. 需支持搜索功能可对端口名或接口名进行筛选便于分配 3. 分配端口时,需检测当前接口内的端口是否满足此接口最低要求 4. 提供Select下拉框,可供查…...

联邦学习与安全多方计算的结合是隐私保护机器学习领域

联邦学习(Federated Learning, FL)与安全多方计算(Secure Multi-Party Computation, MPC)的结合是隐私保护机器学习领域的前沿方向,其框架设计需兼顾计算效率、安全性和可扩展性。以下是结合两者的框架设计与实现流程的详细解析: 一、框架设计核心目标 隐私保护:确保多…...

mongoose的介绍,连接数据库

Mongoose 是一个基于 Node.js 的 MongoDB ODM&#xff08;Object Data Modeling&#xff09;库&#xff0c;用于在 MongoDB 和 Node.js 应用之间提供结构化的模型层&#xff0c;帮助你更优雅、安全地操作数据库。 &#x1f9fe; 一、Mongoose 简介 &#x1f4e6; 功能&#xff…...

Pytest中的fixture装饰器详解

pytest是Python生态中最流行的自动化测试框架&#xff0c;它通过简洁的语法、强大的功能(如fixture、参数化、插件扩展等)和丰富的插件生态&#xff0c;帮助开发者高效完成单元测试、集成测试和端到端测试。fixture是pytest框架中最核心、最强大的功能之一&#xff0c;它提供了…...

Linux系统配置JDK

目录 一、xftp传输JDK包 1、新建xftp会话并连接到我们的服务器 2、上传jdk包 二、配置环境变量 为了方便javaweb项目的建立&#xff0c;我们需要在搭建好的linux环境下配置安装JDK环境 一、xftp传输JDK包 因为jdk包文件比较大了&#xff0c;这时候不能使用简单的linux上传…...

通义千问最新一代大语言模型Qwen3发布了

通义千问Qwen3全面解析&#xff1a;最强开源大模型Ollama本地运行实战 &#x1f525; 最新重大好消息&#xff01; 经过漫长的等待&#xff0c;今天凌晨阿里云正式发布了Qwen3大语言模型&#xff01;本次更新带来了0.6b 1.7b 4b 8b 14b 30b 32b 235b超大参数模型&#xff0c;更…...

想做博闻强记的自己

2025年4月29日&#xff0c;13~25℃&#xff0c;还好 待办&#xff1a; 冶金《物理》期末测试 阅卷&#xff08;冶金《物理》期末测试试卷&#xff09; 重修《物理》《物理2》电子材料归档 规则变更&#xff0c;《高等数学2》期末试卷推倒重来 遇见&#xff1a;直播画面。 感受…...

爱普生SG2520HHN晶振数据中心服务器的理想解决方案

在当今数字化时代&#xff0c;数据中心作为海量数据存储、处理与传输的核心枢纽&#xff0c;其服务器的高效稳定运行至关重要。服务器作为其核心设备&#xff0c;对时钟信号的精度和稳定性提出了严苛要求——微小的时序误差可能导致数据传输失败或系统宕机。爱普生 SG2520HHN 差…...

【Prometheus-MySQL Exporter安装配置指南,开机自启】

目录 1. 创建 MySQL 监控用户2. 配置 MySQL 认证文件3. 安装 mysqld_exporter4. 配置 Systemd 服务5. 启动并验证服务6. 修改Prometheus配置常见错误排查错误现象排查步骤 6. 验证监控数据关键注意事项 1. 创建 MySQL 监控用户 mysql -uroot -p123456 # 登录MySQL-- 1. 创建监…...

Linux 服务管理两种方式service和systemctl

Linux 服务管理两种方式service和systemctl 确定当前系统使用的哪种命令用来启动服务 SysV init 或者 systemd 使用下面的命令&#xff1a; ps -p 1例如&#xff0c;输出&#xff1a; PID TTY TIME CMD1 ? 00:00:02 systemdSysV init service命令用于对系统…...

P1494 [国家集训队] 小 Z 的袜子 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 q q q 次查询&#xff0c;每次查询给定 ( l , r ) (l,r) (l,r). 你需要求出 2 ∑ i ≤ i < j ≤ r [ a i a j ] ( r − l ) ( r − l 1 ) \dfrac{2\sum…...

(开源)视频画面增强模型:Ev-DeblurVSR (可以解决视频画面不清晰的问题)

在计算机视觉领域&#xff0c;模糊视频超分辨率&#xff08;BVSR&#xff09;是一个复杂且具有挑战性的任务&#xff0c;目标是从低分辨率&#xff08;LR&#xff09;和模糊的输入生成高分辨率&#xff08;HR&#xff09;视频。传统方法常常因缺乏足够运动信息和高频细节而表现…...

探索豆包WEB/PC超能创意1.0:创意新利器的全面解析

在当今数字化创意蓬勃发展的时代&#xff0c;新工具不断涌现&#xff0c;为创作者们带来了更多的可能性。豆包WEB/PC超能创意1.0便是其中一款备受瞩目的产品&#xff0c;它的出现为创意工作者和爱好者们打开了一扇充满无限可能的大门。 一、体验信息&#xff1a;探索创意新领域…...

五、UI自动化测试05--PyTest框架

目录 一、PyTest 框架2. 特点2. 安装步骤3. 基本使⽤3.1 测试函数形式3.2 执⾏⽅式3.3 测试类形式3.4 执⾏⽅式3.5 另⼀种执⾏⽅式: 主函数执⾏3.6 特殊⽅法: 函数级别3.7 特殊⽅法: 类级别3.8 特殊⽅法: 函数级别和类级别同时使⽤ 4. pytest 配置⽂件4.1 选项字段获取4.2 编写…...

51LA使用方法与悟空统计,网站数据分析的双重选择

在网站运营与数据分析领域&#xff0c;51LA作为国内较早的流量统计工具&#xff0c;曾为许多用户提供基础的访问数据监测服务。然而&#xff0c;随着技术的发展和用户需求的升级&#xff0c;越来越多的企业开始寻求功能更全面、体验更优的统计工具。小编今天将给大家介绍一款更…...

MongoDB的下载安装与启动

MongoDB的下载安装与启动&#xff0c; 一、MongoDB下载安装 1. 官网下载 打开官网&#xff1a;https://www.mongodb.com/try/download/community选择&#xff1a; 版本&#xff08;Version&#xff09;&#xff1a;选最新版或者根据需要选旧版。平台&#xff08;OS&#xff0…...

解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题

问题背景 更新ktransformers docker镜像到v0.3版本后&#xff08;之前为v0.2.4post1&#xff09;&#xff0c;使用更新前启动命令无法正确启动服务&#xff0c;提示以下错误&#xff1a; Traceback (most recent call last):File "/workspace/ktransformers/ktransforme…...

MySQL事务隔离级别的实现原理MVCC

一、什么是MVCC? MVCC(Multi-Version Concurrency Control)&#xff0c;即多版本并发控制&#xff0c;是并发读写场景下&#xff0c;数据库层面提供的一种解决方案。 数据库的并发场景有以下三种&#xff1a; 读读 当多个事务同时进行读取操作时&#xff0c;它们之间不存在…...

EtherCAT 分布式时钟(DC)补偿技术解析

一、技术定义 EtherCAT 分布式时钟(Distributed Clock, DC)是一种基于硬件的高精度同步机制,旨在解决工业自动化系统中多设备协同控制的时间同步问题。其核心功能包括: 初始偏移补偿:消除从站本地时钟与主站系统时间的初始偏差,确保所有设备在启动阶段的时间基准一致。…...

7.进程概念(三)

一、进程优先级 是什么&#xff1f; 进程得到CPU资源的先后顺序。 为什么要有进程优先级&#xff1f; 目标资源稀缺&#xff0c;导致要通过优先级确定谁先谁后。 如何比较和分配&#xff1f; 进程优先级也是一种数字&#xff0c;int&#xff0c;task_struct 值越低&#xff0c;…...

MATLAB小试牛刀系列(2)

问题描述 捷运公司在下一年度 1 - 4 月的 4 个月内拟租用仓库堆放物资。已知各月所需仓库面积列于表 1.1。仓库租借费用随合同期而定&#xff0c;期限越长&#xff0c;折扣越大&#xff0c;具体数字见表 1.1。租借合同每月初都可办理&#xff0c;每份合同具体规定租用面积和期…...

一个SciPy图像处理案例的全过程

本文利用SciPy进行图像处理&#xff0c;并记录图像处理的全过程&#xff0c;处理过程包含高斯模糊、腐蚀等操作。 代码 import matplotlib.pyplot as plt import numpy as np from scipy import ndimage# 设置图像的大小为 128x128&#xff0c;即 128x128 的逻辑像素 l 128 …...

修改输入框选择框颜色

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 有时候需要改写element原来输入框/选择框的颜色 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 输入框的话需要hover时边框颜色修改&#xff0c;选择值的时候边框颜色修改以及选…...

rust 全栈应用框架dioxus

逛github时发现了一个号称全栈应用框架dioxus,适用于web / desktop / mobile。零配置、集成了热启动和基于信号的状态管理。是由rust编写的&#xff0c;所以也就不受平台限制。 既然说的这么好&#xff0c;那就来试试构建一下三种平台的应用&#xff0c;构建的应用编译成web 、…...

电子电器框架 --- 数据连接性和云集成在增强电气/电子架构方面的作用

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

Nvidia 可能会发布具有增强内存配置的 RTX 5080 和 5070 Super

距离英伟达正式发布RTX 50系列显卡仅过去数月&#xff0c;有关"Super"系列升级版显卡的传闻已甚嚣尘上。据硬件爆料平台Chiphell论坛&#xff08;该消息源可靠性参差不齐&#xff09;用户透露&#xff0c;英伟达可能正在研发配备24GB显存的RTX 5080 Super和16GB显存的…...

预留库存的实现

1. 实体类 import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;import java.sql.Timestamp;Data TableName("products") public class Product {private Long id;private String name;private int stock; }Data TableName("shopping_c…...

[逆向工程]如何理解小端序?逆向工程中的字节序陷阱与实战解析

[逆向工程]如何理解小端序&#xff1f;逆向工程中的字节序陷阱与实战解析 关键词&#xff1a;逆向工程、小端序、字节序、二进制分析、数据解析 引言&#xff1a;为什么字节序是逆向工程师的必修课&#xff1f; 在逆向工程中&#xff0c;分析二进制数据是最基础的任务之一。…...

【Python笔记 05】 if判断、比较运算符与逻辑运算符

一、if判断 1、基本格式 if 要判断的条件&#xff1a; #条件成立为true条件成立的时候要做的事情注&#xff1a;注意判断条件后面的冒号&#xff0c;以及条件成立要做的事情此行代码的缩进&#xff0c;最好是软件自动缩进。 2、练习题 用户在控制台输入成绩&#xff0c;…...

AI应用实战:Excel表的操作工具

有个小需求是这样的&#xff0c;需要在一份数据表里&#xff0c;将1000多个客户的月报数据分别单独截图存档&#xff0c;有客户需要的时候就要发给客户&#xff0c;截图下来的也是以客户为命名&#xff0c;这样查找时也比较容易匹配上。 在没有写工具之前&#xff0c;以往财务…...

P1903 [国家集训队] 数颜色 / 维护队列 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 m m m 个操作分两种&#xff1a; modify ⁡ ( i , x ) \operatorname{modify}(i,x) modify(i,x)&#xff1a;执行 a i ← x a_i\gets x ai​←x. query ⁡ ( …...

Transformer数学推导——Q33 分析正弦编码的频率衰减对长程依赖建模的影响

该问题归类到Transformer架构问题集——位置编码——绝对位置编码。请参考LLM数学推导——Transformer架构问题集。 1. 背景知识&#xff1a;Transformer 与长程依赖 在自然语言处理和其他序列数据处理任务中&#xff0c;Transformer 模型凭借其强大的性能脱颖而出。与传统的…...

微服务架构下的熔断与降级:原理、实践与主流框架深度解析

微服务架构下的熔断与降级&#xff1a;原理、实践与主流框架深度解析 在现代分布式系统中&#xff0c;熔断 (Circuit Breaker) 和 降级 (Degrade) 是保障系统弹性与高可用性的核心机制。本文将系统解析两者的原理、区别与协同方式&#xff0c;并结合主流框架 (Resilience4j、S…...

大脑、机器人与贝叶斯信念及AI推理

在机器不再局限于重复性任务的世界里&#xff0c;机器人技术已经大胆地迈入了感知、学习和决策的领域。这篇文章探讨了智能机器人系统是如何构建的——从理解它们嘈杂的传感器和不确定的环境&#xff0c;到使它们能够做出明智的选择并随着时间的推移调整自己的行为。 AI推理 …...

stm32wb55rg (4) 启用usart串口

code repo: 访问gitee 上节课成功点亮了LED&#xff0c;这次来把usart 用起来&#xff0c;毕竟有交互才是系统。 技术准备 首先查看手册&#xff0c;发现mcu有1个usart和1个 lpuart。 usart 的使用需要两个pin&#xff0c;一个接收一个发送。继续查看pin and ball definition…...

LSTM预测模型

LSTM预测模型 时间序列预测通常需要捕获时间依赖性&#xff0c;而 L S T M LSTM LSTM&#xff08;长短时记忆网络&#xff09;是处理时间序列数据的经典深度学习方法之一。结合长短时注意力机制&#xff08; L o n g − S h o r t A t t e n t i o n M e c h a n i s m Long-S…...

[计算机网络]物理层

文章目录 物理层的概述与功能传输介质双绞线:分类:应用领域: 同轴电缆&#xff1a;分类: 光纤&#xff1a;分类: 无线传输介质&#xff1a;无线电波微波&#xff1a;红外线&#xff1a;激光&#xff1a; 物理层设备中继器&#xff1a;放大器&#xff1a;集线器(Hub)&#xff1a…...

Day16(贪心算法)——LeetCode45.跳跃游戏II763.划分字母区间

1 LeetCode45.跳跃游戏II 1.1 题目描述 与跳跃游戏类似&#xff0c;跳跃游戏II给定长为n的从0开始索引的整数数组nums&#xff0c;nums[i]是你在i处能向右跳跃的最大步数&#xff0c;求到达数组最后一个索引处需要跳跃的最少次数。   一个示例&#xff1a;nums[2,3,1,1,4]&a…...

【MySQL】表的内外连接

表的内外连接 一. 内连接二. 外连接1. 左外连接2. 右外连接 三. 简单案例四. SQL 实战 表的连接分为内连接和外连接 一. 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;之前博客中的查询都是内连接&#xff0c;也是在开发过程中使用的最多…...

Prometheus使用Recoding Rules优化性能

通过PromQL可以实时对Prometheus中采集到的样本数据进行查询&#xff0c;聚合以及其它各种运算操作。而在某些PromQL较为复杂且计算量较大时&#xff0c;直接使用PromQL可能会导致Prometheus响应超时的情况。这时需要一种能够类似于后台批处理的机制能够在后台完成这些复杂运算…...

Linux 怎么安装 Oracle Java 8

在 Linux 系统上安装 Oracle Java 8 的步骤如下&#xff1a; 1. 下载 Oracle Java 8 访问 Oracle 官方网站的 Java 下载页面&#xff1a; 下载链接&#xff1a;Oracle Java 8 下载页面选择适合 Linux x64 的安装包&#xff08;通常是 .tar.gz 格式&#xff09;。需要登录 Or…...

项目三 - 任务2:创建笔记本电脑类(一爹多叔)

在本次实战中&#xff0c;我们通过Java的单根继承和多接口实现特性&#xff0c;设计了一个笔记本电脑类。首先创建了Computer抽象类&#xff0c;提供计算的抽象方法&#xff0c;模拟电脑的基本功能。接着定义了NetCard和USB两个接口&#xff0c;分别包含连接网络和USB设备的抽象…...

基于蓝耘MaaS平台进行api调用创建本地智能ai

关于MaaS平台 MaaS 平台即 “模型即服务”&#xff08;Model as a Service&#xff09;平台&#xff0c;是一种依托云计算的人工智能服务模式。 模型即服务&#xff08;MaaS&#xff09;平台面向企业开发者、创业者及非技术背景用户&#xff0c;提供开箱即用的热门AI模型服务&…...

【Luogu】动态规划七

P1566 加等式 - 洛谷 思路&#xff1a; 其实这道题就是一个纸老虎&#xff0c;说这么多&#xff0c;其实最后就是问所有 a[i] 的组成方法之和有多少种 那么显然的一个dp就是 dp[j] dp[j - a[i]] 然后这题就结束了&#xff0c;就是这么简单&#xff0c;最后记得减去 n&…...

Kotlin 常见问题

以下从基础、中级、高级三个难度等级为你提供 Kotlin 面试题及参考答案&#xff1a; 基础难度 1. Kotlin 中 val 和 var 的区别是什么&#xff1f; 答案要点&#xff1a;val 用于声明不可变变量&#xff0c;类似于 Java 中的 final 变量&#xff0c;一旦赋值后就不能再重新赋…...

应急演练考试排查-DC01

DC01&#xff1a;攻击者最早通过哪种方式获取了机器权限&#xff1f;&#xff08; &#xff09; A、远程登录&#xff08;RDP登录&#xff09; B、主机系统漏洞 C、软件服务漏洞 D、钓鱼 E、物理访问 F、内网横向手段 G、低权限账户提权 H、未获取到主机权限 DC01&…...

Spring MVC 中解决中文乱码问题

在 Spring MVC 中解决中文乱码问题&#xff0c;需要从 请求参数编码 和 响应内容编码 两方面入手。以下是完整的解决方案&#xff1a; 一、解决请求参数中文乱码 1. POST 请求编码&#xff08;表单提交&#xff09; 配置 CharacterEncodingFilter 在 web.xml 中添加 Spring 提…...

排序算法详解笔记(二)

归并排序 #include <vector> #include <iostream> #include <algorithm> // For std::inplace_merge in optimization// Helper function to merge two sorted subarrays void merge(std::vector<int>& arr, int left, int mid, int right) {int …...

Spark GraphX 机器学习:图计算

引言 在数字化时代&#xff0c;图数据&#xff08;Graph Data&#xff09;的价值日益凸显&#xff1a;社交网络中的用户关系、电商平台的商品关联、知识图谱的实体链接……这些以“节点&#xff08;Vertex&#xff09;”和“边&#xff08;Edge&#xff09;”为核心的非结构化…...