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

数据库的两种模式

数据库的 严格模式(Strict Mode)宽松模式(Non-Strict Mode) 是数据库管理系统(DBMS)中用于控制数据验证和处理方式的两种不同模式。它们的主要区别在于对数据完整性、一致性和错误处理的严格程度。


1. 严格模式(Strict Mode)

在严格模式下,数据库会对数据的插入、更新和删除操作进行严格的验证,确保数据的完整性和一致性。如果数据不符合定义的表结构或约束条件,数据库会拒绝操作并返回错误。

特点
  • 数据验证
    • 数据库会检查数据的类型、长度、唯一性、外键约束等。
    • 例如,如果尝试插入一个超出字段长度的字符串,数据库会拒绝操作。
  • 错误处理
    • 如果数据不符合要求,数据库会直接抛出错误,操作失败。
  • 数据完整性
    • 严格模式确保数据库中的数据始终符合预定义的规则,避免脏数据。
  • 适用场景
    • 适用于对数据完整性要求高的场景,如金融系统、医疗系统等。
示例

假设有一个表 users,定义如下:

CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT CHECK (age >= 0)
);

在严格模式下:

  • 如果尝试插入一个 nameNULL 的记录,数据库会拒绝操作。
  • 如果尝试插入一个 age 为负数的记录,数据库会拒绝操作。

2. 宽松模式(Non-Strict Mode)

在宽松模式下,数据库对数据的验证较为宽松,允许某些不符合规则的数据插入或更新,可能会自动截断数据或使用默认值。

特点
  • 数据验证
    • 数据库对数据的验证较为宽松,可能会忽略某些约束条件。
    • 例如,如果插入一个超出字段长度的字符串,数据库可能会自动截断字符串。
  • 错误处理
    • 如果数据不符合要求,数据库可能会尝试修复或忽略错误,而不是直接抛出错误。
  • 数据完整性
    • 宽松模式可能导致数据不一致或脏数据,因为某些不符合规则的数据可能被允许插入。
  • 适用场景
    • 适用于对数据完整性要求较低的场景,如日志记录、临时数据存储等。
示例

在宽松模式下:

  • 如果尝试插入一个 nameNULL 的记录,数据库可能会自动填充默认值(如空字符串)。
  • 如果尝试插入一个 age 为负数的记录,数据库可能会忽略约束条件并允许插入。

3. 严格模式 vs 宽松模式

特性严格模式宽松模式
数据验证严格验证,拒绝不符合规则的数据宽松验证,可能允许不符合规则的数据
错误处理抛出错误,操作失败可能忽略错误或自动修复
数据完整性高,确保数据始终符合规则低,可能导致脏数据或不一致
适用场景金融、医疗等高完整性要求的系统日志记录、临时数据存储等低要求场景

4. 如何设置严格模式或宽松模式

不同的数据库管理系统(如 MySQL、PostgreSQL、SQLite)对严格模式和宽松模式的支持和设置方式有所不同。

MySQL
  • 严格模式通过 sql_mode 参数控制。
  • 启用严格模式:
    SET sql_mode = 'STRICT_ALL_TABLES';
    
  • 禁用严格模式:
    SET sql_mode = '';
    
PostgreSQL
  • PostgreSQL 默认启用严格模式,不支持宽松模式。
  • 如果需要宽松行为,可以通过触发器或规则手动实现。
SQLite
  • SQLite 默认是宽松模式,但可以通过 PRAGMA 命令启用严格模式:
    PRAGMA foreign_keys = ON; -- 启用外键约束
    PRAGMA ignore_check_constraints = OFF; -- 启用检查约束
    

5. 选择模式的建议

  • 严格模式
    • 适用于对数据完整性要求高的场景。
    • 可以避免脏数据和不一致问题。
  • 宽松模式
    • 适用于对数据完整性要求较低的场景。
    • 可以提高开发效率,但需要额外注意数据质量问题。

总结

严格模式和宽松模式是数据库管理中的重要概念,选择哪种模式取决于应用场景和对数据完整性的要求。严格模式适合高完整性要求的系统,而宽松模式适合对数据质量要求较低的场景。

数据库的常见模式分类:

sql_mode 是 MySQL 中的一个系统变量,它定义了数据库的运行模式,控制了 SQL 语句的解析和执行方式。通过设置不同的 sql_mode,可以启用或禁用特定的 SQL 特性和行为,从而改变数据库的行为方式。

sql_mode 可以包含多个选项,这些选项会影响数据验证、日期/时间处理、空值处理等方面的行为。sql_mode 变量可以在会话级别(针对当前连接)和全局级别(对所有连接)进行设置。

常见的 sql_mode 选项包括:

  1. STRICT_TRANS_TABLES:在严格模式下,如果出现不合法的数据插入(例如,插入空值到非空字段,插入超出字段长度的值等),MySQL 会返回错误而不是警告。如果没有设置该选项,MySQL 会将数据插入并发出警告。

  2. ALLOW_INVALID_DATES:允许插入无效日期(如 ‘2023-02-30’),而在严格模式下,MySQL 会拒绝插入无效日期。

  3. NO_ZERO_DATE:禁止插入值为 ‘0000-00-00’ 的日期。如果开启该模式,插入该日期时会返回错误。

  4. NO_ZERO_IN_DATE:禁止在日期中出现零日(例如,‘2023-01-00’)。该模式会在遇到零日时抛出错误。

  5. ERROR_FOR_DIVISION_BY_ZERO:在除零操作时抛出错误。在该模式下,执行除以零的操作会导致错误,而不是返回 NULL 或其他值。

  6. NO_AUTO_CREATE_USER:禁止 GRANT 语句自动创建用户。如果没有此模式,GRANT 语句可以在没有先前创建用户的情况下自动创建用户。

  7. NO_ENGINE_SUBSTITUTION:禁止在表的存储引擎不可用时使用默认存储引擎。当启用此选项时,如果指定的存储引擎不可用,MySQL 会抛出错误,而不是回退到默认的存储引擎。

  8. ONLY_FULL_GROUP_BY:启用此模式时,GROUP BY 子句必须包含所有在 SELECT 列表中的非聚合列。也就是说,查询必须按照标准 SQL 语法进行,避免在 GROUP BY 中省略某些字段。这有助于避免不明确的分组操作。

  9. TRADITIONAL:传统模式,它相当于启用了多种严格模式,确保 MySQL 更加严格地执行 SQL 语句,避免一些不良的行为,比如插入无效日期或自动类型转换。

  10. ANSI:启用 ANSI SQL 语法模式,会禁用 MySQL 特有的语法特性,并且遵循标准的 SQL 语法。

  11. STRICT_ALL_TABLES:启用严格模式,对所有表都应用严格检查,和 STRICT_TRANS_TABLES 类似,但是作用范围更广。

设置和查看 sql_mode

  • 查看当前的 sql_mode

    SELECT @@sql_mode;
    
  • 设置会话级别的 sql_mode

    SET SESSION sql_mode = 'STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
  • 设置全局级别的 sql_mode

    SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
  • 设置为某个预定义的模式(例如 TRADITIONAL):

    SET sql_mode = 'TRADITIONAL';
    

通过合理配置 sql_mode,可以确保数据库在处理数据时符合预期的规范和行为,避免出现潜在的错误或不一致。

以下是每个选项的详细解释:


好的,以下是 sql_mode 中每个选项的详细目的、作用以及示例:

1. STRICT_TRANS_TABLES

  • 目的:启用严格模式,确保插入的数据符合数据库约束条件,避免插入无效或不合法的数据。
  • 作用:当插入的数据不符合表的约束(例如,插入空值到非空字段、插入超出字段长度的数据)时,MySQL 会抛出错误,而不是警告或自动修正。
  • 示例
    • 如果一个列定义为 NOT NULL,而插入 NULL 值:
      CREATE TABLE test (id INT NOT NULL);
      INSERT INTO test (id) VALUES (NULL);  -- 会抛出错误,因为 id 是 NOT NULL
      
    • 如果插入的字符串长度超过字段长度限制:
      CREATE TABLE test (name VARCHAR(5));
      INSERT INTO test (name) VALUES ('LongName');  -- 会抛出错误,因为 'LongName' 长度超过 5
      

2. ALLOW_INVALID_DATES

  • 目的:允许插入无效日期数据(如 ‘2023-02-30’)。
  • 作用:在没有严格模式时,MySQL 会允许插入无效的日期值。
  • 示例
    SET sql_mode = 'ALLOW_INVALID_DATES';
    CREATE TABLE test (date_col DATE);
    INSERT INTO test (date_col) VALUES ('2023-02-30');  -- 插入成功,即使日期无效
    

3. NO_ZERO_DATE

  • 目的:禁止插入值为 ‘0000-00-00’ 的日期。
  • 作用:如果插入一个日期为 ‘0000-00-00’,会抛出错误。
  • 示例
    SET sql_mode = 'NO_ZERO_DATE';
    CREATE TABLE test (date_col DATE);
    INSERT INTO test (date_col) VALUES ('0000-00-00');  -- 会抛出错误
    

4. NO_ZERO_IN_DATE

  • 目的:禁止在日期中出现零日(如 ‘2023-01-00’)。
  • 作用:如果日期中出现零日(‘00’ 日),会抛出错误。
  • 示例
    SET sql_mode = 'NO_ZERO_IN_DATE';
    CREATE TABLE test (date_col DATE);
    INSERT INTO test (date_col) VALUES ('2023-01-00');  -- 会抛出错误
    

5. ERROR_FOR_DIVISION_BY_ZERO

  • 目的:在除零操作时抛出错误。
  • 作用:如果发生除以零的运算,MySQL 会抛出错误,而不是返回 NULL 或其他结果。
  • 示例
    SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO';
    SELECT 1 / 0;  -- 会抛出错误,因为除以零
    

6. NO_AUTO_CREATE_USER

  • 目的:禁止 GRANT 语句自动创建用户。
  • 作用:当使用 GRANT 语句授权时,如果指定的用户不存在,MySQL 不会自动创建该用户。
  • 示例
    SET sql_mode = 'NO_AUTO_CREATE_USER';
    GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost';  -- 如果用户 'new_user' 不存在,会抛出错误
    

7. NO_ENGINE_SUBSTITUTION

  • 目的:禁止在指定的存储引擎不可用时回退到默认存储引擎。
  • 作用:如果指定的存储引擎不可用,MySQL 会抛出错误,而不是使用默认的存储引擎(如 InnoDB)。
  • 示例
    SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
    CREATE TABLE test (id INT) ENGINE=MYISAM;  -- 如果 MYISAM 不可用,会抛出错误
    

8. ONLY_FULL_GROUP_BY

  • 目的:强制在 GROUP BY 中包含所有非聚合列,遵循 SQL 标准。
  • 作用:当进行 GROUP BY 查询时,必须显式地在 GROUP BY 子句中包含所有非聚合列,否则查询会抛出错误。
  • 示例
    SET sql_mode = 'ONLY_FULL_GROUP_BY';
    CREATE TABLE test (id INT, name VARCHAR(20));
    SELECT id, name FROM test GROUP BY id;  -- 会抛出错误,因为 `name` 没有被聚合或包含在 GROUP BY 中
    

9. TRADITIONAL

  • 目的:启用严格模式,确保 MySQL 更加严格地执行 SQL 语句。
  • 作用:启用此模式时,相当于启用了 STRICT_TRANS_TABLESNO_ZERO_DATENO_ZERO_IN_DATE 等多个严格模式,确保数据更严格地符合约束条件。
  • 示例
    SET sql_mode = 'TRADITIONAL';
    CREATE TABLE test (id INT NOT NULL, name VARCHAR(5));
    INSERT INTO test (id, name) VALUES (1, 'LongName');  -- 会抛出错误,因为 name 的长度超出了限制
    

10. ANSI

  • 目的:启用 ANSI SQL 语法模式,禁用 MySQL 特有的语法。
  • 作用:此模式会使 MySQL 遵循标准 SQL 语法,禁用 MySQL 特有的扩展特性。
  • 示例
    SET sql_mode = 'ANSI';
    CREATE TABLE test (id INT);
    INSERT INTO test (id) VALUES (1);  -- 使用标准的 SQL 语法进行操作
    

11. STRICT_ALL_TABLES

  • 目的:对所有表应用严格模式。
  • 作用:启用此模式时,对所有表的数据操作都会严格检查,确保数据符合字段约束。
  • 示例
    SET sql_mode = 'STRICT_ALL_TABLES';
    CREATE TABLE test (id INT NOT NULL, name VARCHAR(5));
    INSERT INTO test (id, name) VALUES (1, 'LongName');  -- 会抛出错误,因为 'LongName' 超过了字段长度限制
    

总结

sql_mode 可以根据需要启用不同的选项来严格控制 MySQL 数据库的行为,确保数据符合预期的规则。通过配置这些选项,可以防止一些潜在的错误和不一致性,保证数据的准确性和完整性。
``

相关文章:

数据库的两种模式

数据库的 严格模式(Strict Mode) 和 宽松模式(Non-Strict Mode) 是数据库管理系统(DBMS)中用于控制数据验证和处理方式的两种不同模式。它们的主要区别在于对数据完整性、一致性和错误处理的严格程度。 1. …...

【css酷炫效果】纯CSS实现立体旋转立方体

【css酷炫效果】纯CSS实现立体旋转立方体 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492014 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&am…...

Cursor与Coze结合开发电影推荐系统:一次高效的技术实践

1 项目背景 有个想法,和朋友打算一起看电影,但是不知道看什么(吃饭也是),于是在豆瓣高分电影榜单中选择出来一些感兴趣的电影,随机挑选一部“天意之选”。为此,我尝试结合Cursor(智…...

【总结篇】java多线程,新建线程有几种写法,以及每种写法的优劣势

java多线程 新建线程有几种写法,以及每种写法的优劣势 [1/5]java多线程 新建线程有几种写法–继承Thread类以及他的优劣势[2/5]java多线程-新建线程有几种写法–实现Runnable接口以及他的优劣势[3/5]java多线程 新建线程有几种写法–实现Callable接口结合FutureTask使用以及他的…...

idea问题(三)pom文件显示删除线

一、问题 1、现象 2、原因 分析原因和出现的流程:创建子模块的时候因为名称错误了,并且通过修改模块模块名称后,又删除了模块,因删除不干净。再次建立了同名模块,会让IDEA认为你再次新建的项目是已经被删除的项目。 …...

python爬虫概述

0x00 python爬虫概述 以豆瓣的选电影模块为例,当查看源代码搜索猫猫的奇幻漂流瓶是搜不到的 这时服务器的工作方式应该是这样的 客户端浏览器第一次访问其实服务器端是返回的一个框架(html代码) 当客户端浏览器第二次通过脚本等方式进行访问时服务器端才返回的数据…...

实现拖拽图片验证的基本步骤

前端部分 UI 设计: 显示一个滑块和一张背景图(通常是带缺口的图片)。滑块可以是拼图的一块或简单的方块。 拖拽功能: 监听滑块的 mousedown、mousemove、mouseup 事件,实现拖拽效果。 验证逻辑: 计算滑块最…...

conda报错activate没办法激活环境

遇到激活环境报错 # >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<< Traceback (most recent call last): File …...

numpy学习笔记3:三维数组 np.ones((2, 3, 4)) 的详细解释

numpy学习笔记3&#xff1a;三维数组 np.ones((2, 3, 4)) 的详细解释 以下是关于三维数组 np.ones((2, 3, 4)) 的详细解释&#xff1a; 1. 三维数组的形状 形状 (2, 3, 4) 表示&#xff1a; 最外层维度&#xff1a;2 个“层”&#xff08;或“块”&#xff09;&#xff1b; …...

论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World

Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答&#xff08;ERQA&#xff09;基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…...

不用 Tomcat?SpringBoot 项目用啥代替?

在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat。 同时&#xff0c;SpringBoot也支持Undertow容器&#xff0c;我们可以很方便的用Undertow替换Tomcat&#xff0c;而Undertow的性能和内存使…...

ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面

ChatTTS&#xff08;Chat Text To Speech&#xff09;&#xff0c;专为对话场景设计的文本生成语音(TTS)模型&#xff0c;适用于大型语言模型(LLM)助手的对话任务&#xff0c;以及诸如对话式音频和视频介绍等应用。支持中文和英文&#xff0c;还可以穿插笑声、说话间的停顿、以…...

嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充

1. 外设引脚重映射 1.1 定义 在STM32中&#xff0c;每个外设的引脚都有默认的GPIO端口&#xff0c;但有些引脚可以通过重映射寄存器将功能映射到其他端口。这种机制称为引脚重映射&#xff0c;主要用于解决引脚复用冲突或优化PCB布线。 1.2 重映射的类型 部分重映射&#x…...

spring循环依赖

Spring 通过三级缓存机制解决单例 Bean 的循环依赖问题&#xff0c;其核心思想是提前暴露未完全初始化的 Bean 引用。以下是详细流程和原理&#xff1a; 1. 循环依赖的场景 假设两个 Bean 相互依赖&#xff1a; BeanA 依赖 BeanBBeanB 依赖 BeanA 如果没有特殊处理&#xff…...

算法刷题区域部分反转

不断创建数组&#xff0c;相加&#xff0c;利用cpp内字符串相加的性质即可。具体代码如下&#xff1a; class Solution { public: string reverseStr(string s, int k) { int size s.size(); int count size / (2*k); string a; int i 0; for ( i 0; i < count; i)…...

使用【docker】+【shell】脚本半自动化部署微服务项目

一.前言 以下是一个基于 ‌Docker Shell脚本‌ 的半自动化部署方案&#xff0c;包含镜像构建、容器管理、网络配置和日志监控等核心功能&#xff0c;适用于大多数Web应用或微服务项目。 二‌.目录结构 三.脚本代码实现 1.‌Shell脚本实现 (deploy.sh) #!/bin/bash# 设置颜…...

关于“碰一碰发视频”系统的技术开发文档框架

以下是关于“碰一碰发视频”系统的技术开发文档框架&#xff0c;涵盖核心功能、技术选型、开发流程和关键模块设计&#xff0c;帮助您快速搭建一站式解决方案 --- 随着短视频平台的兴起&#xff0c;用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣&#xff0c…...

Java面试黄金宝典5

1. ConcurrentHashMap 和 HashTable 有哪些区别 原理 HashTable&#xff1a;它继承自 Dictionary 类&#xff0c;是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如&#xff0c;在调用 put、get 等方法时&#xff…...

【FastGPT】利用知识库创建AI智能助手

【FastGPT】利用知识库创建AI智能助手 摘要创建知识库上传文档创建应用准备提示词准备开场白关联知识库AI回答效果 摘要 关于FastGPT的部署&#xff0c;官方提供了docker-compose方式的部署文档&#xff0c;如果使用的是podman和podman-compose的同学&#xff0c;可以参考这篇…...

尚硅谷爬虫(解析_xpath的基本使用)笔记

1、xpath的基本使用 创建一个简单的HTML&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><ul><li>北京</li><li&…...

redis MISCONF Redis is configured to save RDB snapshots报错解决

直接上解决方案 修改redis配置文件 stop-writes-on-bgsave-error no 重启redis...

《深入理解AOP编程:从基础概念到Spring实现》

AOP编程 AOP(Aspect Oriented Programing) 面向切面编程 Spring动态代理开发 以切面为基本单位的程序开发&#xff0c;通过切脉你间的彼此协同&#xff0c;相互调用&#xff0c;完成程序构建 切面切入点额外功能 OOP(Object Oriented Programing)面向对象编程 java 以对象为基本…...

网络安全漏洞的种类分为哪些?

漏洞&#xff0c;是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷&#xff0c;从而可以使攻击者能够在未授权的情况下访问或破坏系统。漏洞的出现&#xff0c;不仅会造成个人隐私信息泄露&#xff0c;还涉及到我们的财产安全&#xff0c;那么网络安全漏洞的种类分…...

C程序设计(第五版)及其参考解答,附pdf

通过网盘分享的文件&#xff1a;谭浩强C语言设计 链接: https://pan.baidu.com/s/1U927Col0XtWlF9TsFviApg?pwdeddw 提取码: eddw 谭浩强教授的《C程序设计》是C语言学习领域的经典教材&#xff0c;其内容深入浅出&#xff0c;适合不同层次的学习者。 一、教材版本与特点 最…...

CXL协议之FM(Fabric Management)解释

CXL协议中的FM功能详解 1. FM的核心作用 FM是CXL&#xff08;Compute Express Link&#xff09;架构中的核心管理实体&#xff0c;负责协调和管理CXL设备之间的通信、资源分配及拓扑结构。其核心功能包括&#xff1a; 设备发现与枚举&#xff1a;识别CXL拓扑中的设备&#x…...

gstreamer之GstVideoDecoder源码剖析

GStreamer 中的 GstVideoDecoder 基类旨在为实现视频解码器提供一个框架。它定义了一套规则和规范&#xff0c;用于指导基类与其派生子类&#xff08;具体的视频解码器&#xff09;之间如何交互与协作。 /*** SECTION:gstvideodecoder* title: GstVideoDecoder* short_descrip…...

Windows部署deepseek R1训练数据后通过AnythingLLM当服务器创建问答页面

如果要了解Windows部署Ollama 、deepseek R1请看我上一篇内容。 这是接上一篇的。 AnythingLLM是一个开源的全栈AI客户端&#xff0c;支持本地部署和API集成。它可以将任何文档或内容转化为上下文&#xff0c;供各种语言模型&#xff08;LLM&#xff09;在对话中使用。以下是…...

嵌入式软件开发--面试总结

&#xff08;1&#xff09;公司简介&#xff1a;做打印机设备、项目涉及到操作系统 &#xff08;2&#xff09;面试内容&#xff1a;笔试题技术面试 //32位单片机c语言程序typedef struct{int a;char b;char c;}str1;typedef struct{char a;int b;char c;}str2;void function…...

测试专项3:算法测试基础理论速查手册

1 算法测试的基本概念 1.1 传统软件测试 vs. 算法测试 在软件工程领域&#xff0c;传统软件测试主要关注程序逻辑的正确性。测试人员通过预设输入与期望输出的对比&#xff0c;确保软件程序能够按照设计要求执行&#xff0c;从而发现代码中的错误或缺陷。常见的测试方法包括单…...

基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等

基于SpringbootTypst的PDF生成方案&#xff0c;适用于报告打印/标签打印/二维码打印等。 仅提供后端实现 Typst2pdf-for-report/label/QR code github 环境 JDK11linux/windows/mac 应用场景 适用于定制化的报告模板/标签/条码/二维码等信息的pdf生成方案。通过浏览器的p…...

轻松迁移 Elasticsearch 数据:如何将自建索引导出并导入到另一个实例

概述 在日常的 Elasticsearch 运维和数据管理中&#xff0c;数据迁移是一个常见的需求。无论是为了备份、升级&#xff0c;还是将数据从一个集群迁移到另一个集群&#xff0c;导出和导入索引数据都是至关重要的操作。本文将详细介绍如何将自建 Elasticsearch 实例中的索引数据…...

【C#语言】C#同步与异步编程深度解析:让程序学会“一心多用“

文章目录 ⭐前言⭐一、同步编程&#xff1a;单线程的线性世界&#x1f31f;1、寻找合适的对象✨1) &#x1f31f;7、设计应支持变化 ⭐二、异步编程&#xff1a;多任务的协奏曲⭐三、async/await工作原理揭秘⭐四、最佳实践与性能陷阱⭐五、异步编程适用场景⭐六、性能对比实测…...

【Linux】——环境变量与进程地址空间

文章目录 环境变量环境变量的概念常见的环境变量PATH相关指令 main的三个参数前两个参数第三个参数 程序地址空间进程地址空间 环境变量 环境变量的概念 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;将来会以shell的形式传递给所有进程&…...

docker、docker-compose常用命令

初学者使用的docker、docker-compose常用命令&#xff0c;日常练习&#xff0c;环境简单搭建。 一、docker 1.1、安装docker 1.1.1、yum安装 #安装docker的数据存储驱动包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置新的安装源、下载配置文件到…...

LS-NET-006-思科MDS 9148S 查看内存

LS-NET-006-思科MDS 9148S 查看内存 方法一&#xff1a;使用 show version​ 命令 该命令可显示设备的基本系统信息&#xff0c;包括内存总量。 登录交换机的CLI&#xff08;通过控制台或SSH连接&#xff09;。输入命令&#xff1a; show version 在输出中查找类似以下内容…...

Pytorch使用手册—自定义函数的双重反向传播与自定义函数融合卷积和批归一化(专题五十二)

1. 使用自定义函数的双重反向传播 有时候,在反向计算图中运行两次反向传播是有用的,例如计算高阶梯度。然而,支持双重反向传播需要对自动求导(autograd)有一定的理解,并且需要小心处理。支持单次反向传播的函数不一定能够支持双重反向传播。在本教程中,我们将展示如何编…...

OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::BestOf2NearestRangeMatcher 是 OpenCV 库中用于图像拼接模块的一个匹配器类&#xff0c;专门用于寻找两幅图像之间的最佳特征点匹配…...

springmvc中如何自定义入参注解并自动注入值

在Spring中&#xff0c;HandlerMethodArgumentResolver 是一个非常强大的接口&#xff0c;用于自定义控制器方法参数的解析逻辑。以下是一个完整的示例&#xff0c;展示如何使用 HandlerMethodArgumentResolver 并结合自定义注解来实现特定的参数解析逻辑。 ### **1. 定义自定…...

前端安全之DOMPurify基础使用

DOMPurify时一款专门用于防御XSS攻击的库&#xff0c;通过净化HTML的内容&#xff0c;移除恶意脚本&#xff0c;同时保留安全的HTML标签和数学。以下是基础使用指南&#xff0c;涵盖基础的安装与用法。 1&#xff0c;安装DOMPurify 通过npm或yarn安装 npm install dompurify …...

test skills

一、测试技术 1、python GitHub - taizilongxu/interview_python: 关于Python的面试题 GitHub - JushuangQiao/Python-Offer: 《剑指Offer》面试题Python实现 GitHub - vinta/awesome-python: An opinionated list of awesome Python frameworks, libraries, software and …...

sql-DDL

ddl全称为data definition language(数据定义语言)&#xff0c;用来定义数据库对象(数据库&#xff0c;表&#xff0c;字段) 一.ddl-数据库操作 1.查询数据库 show databases&#xff1b; 2.创建数据库 create database [if not exists] 数据库名 [default charset 字符集]…...

小科普《DNS服务器》

DNS服务器详解 1. 定义与核心作用 DNS&#xff08;域名系统&#xff09;服务器是互联网的核心基础设施&#xff0c;负责将人类可读的域名&#xff08;如www.example.com&#xff09;转换为机器可识别的IP地址&#xff08;如192.0.2.1&#xff09;&#xff0c;从而实现设备间的…...

【操作系统安全】任务3:Linux 网络安全实战命令手册

目录 一、基础网络信息获取 1. 网络接口配置 2. 路由表管理 3. 服务端口监控 二、网络监控与分析 1. 实时流量监控 2. 数据包捕获 3. 网络协议分析 三、渗透测试工具集 1. 端口扫描 2. 漏洞利用 3. 密码破解 四、日志审计与分析 1. 系统日志处理 2. 入侵检测 3…...

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用

Docker 是一种轻量级容器化技术&#xff0c;它允许开发者打包应用程序和其依赖项到一个可移植的容器中&#xff0c;然后在任何环境中运行。Docker 的基本概念包括以下几点&#xff1a; 容器&#xff1a;Docker 使用容器来封装应用程序及其所有依赖项&#xff0c;使其能够在任何…...

数据结构与算法-图论-拓扑排序

前置芝士 概念 拓扑排序&#xff08;Topological Sorting&#xff09;是对有向无环图&#xff08;DAG&#xff0c;Directed Acyclic Graph&#xff09;的顶点进行排序的一种算法。它将图中的所有顶点排成一个线性序列&#xff0c;使得对于图中的任意一条有向边 (u, v)&#x…...

RabbitMQ的高级特性介绍(一)

消息确认机制 ⽣产者发送消息之后, 到达消费端之后, 可能会有以下情况: a. 消息处理成功 b. 消息处理异常 RabbitMQ向消费者发送消息之后, 就会把这条消息删掉, 那么第二种情况, 就会造成消息丢失。 那么如何确保消费端已经成功接收了, 并正确处理了呢? 为了保证消息从队列…...

嵌入式硬件篇---WIFI模块

文章目录 前言一、核心工作原理1. 物理层&#xff08;PHY&#xff09;工作频段2.4GHz5GHz 调制技术直接序列扩频正交频分复用高效数据编码 2. 协议栈架构MAC层Beacon帧4次握手 3. 核心工作模式 二、典型应用场景1. 智能家居系统远程控制环境监测视频监测 2. 工业物联网设备远程…...

Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取。本地部署方式

开源地址&#xff1a;https://github.com/mendableai/firecrawl 01、FireCrawl 项目简介 Firecrawl 是一款开源、优秀、尖端的 AI 爬虫工具&#xff0c;专门从事 Web 数据提取&#xff0c;并将其转换为 Markdown 格式或者其他结构化数据。 Firecrawl 还特别上线了一个新的功…...

zabbix数据库溯源

0x00 背景 zabbix数据库如果密码泄露被登录并新增管理员如何快速发现&#xff1f;并进行溯源&#xff1f; 本文介绍数据库本身未开启access log的情况。 0x01 实践 Mysql 数据库查insert SELECT * FROM sys.host_summary_by_statement_type where statement like %insert% 查…...

oracle 索引

Oracle 数据库中的索引是优化查询性能的重要工具&#xff0c;其类型多样&#xff0c;适用于不同场景。以下是 Oracle 索引的主要分类及特点&#xff1a; 1.B-Tree 索引&#xff08;平衡树索引&#xff09; 特点&#xff1a; 默认索引类型&#xff0c;树形结构&#xff08;根、…...