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

postgrsql——事务概述

事务概述

事务的特性

  1. 原子性(Atomicity
    • 事务被视为一个整体,其中的操作要么全部执行成功,要么全部不执行,即不存在部分执行的情况。这确保了事务的完整性和一致性。
  2. 一致性(Consistency
    • 事务在执行前后,数据库的状态必须保持一致。即事务的执行结果必须满足数据库的所有规则和约束,以维护数据的完整性。
  3. 隔离性(Isolation
    • 事务的执行应该相互独立,互不干扰。一个事务的执行结果不应该被其他并发执行的事务所影响,这通过数据库管理系统提供的隔离级别来实现。
  4. 持久性(Durability
    • 一旦事务被提交,其对数据库的修改就是永久性的,即使系统发生故障也不会丢失。这确保了数据的可靠性和稳定性。

事务的作用

  1. 保证数据的一致性
    • 通过事务的原子性特性,确保在一组操作中,要么所有操作都成功执行,要么全部回滚,从而保证数据库的数据一致性。
  2. 确保数据的完整性
    • 事务通过ACID属性(原子性、一致性、隔离性和持久性)来确保数据的完整性,防止数据丢失或损坏。
  3. 提供隔离性
    • 事务的隔离性确保了多个并发事务之间的隔离,避免了数据交叉访问和干扰,保证了每个事务的独立性。
  4. 支持回滚和恢复
    • 在事务执行过程中,如果发生错误或异常情况,可以通过回滚操作将数据库恢复到事务开始前的状态,保证数据的可靠性和稳定性。

综上所述,事务是数据库管理系统中保证数据一致性、完整性和可靠性的重要机制。通过事务的ACID属性,可以确保数据库操作的原子性、一致性、隔离性和持久性,从而满足各种复杂的应用需求。

事务的一致性

事务的一致性(Consistency)是数据库事务管理中一个至关重要的特性,它确保了事务执行前后数据库的状态都满足所有定义的规则和约束。换句话说,一致性要求事务的执行结果必须使数据库从一个一致的状态转换到另一个一致的状态。

在事务的上下文中,一致性通常涉及以下几个方面:

  1. 数据的完整性:事务的执行不能破坏数据库中数据的完整性约束,如主键约束、外键约束、唯一性约束、检查约束等。这些约束用于维护数据的准确性和可靠性。
  2. 业务规则:除了数据库本身的约束外,事务还需要遵守应用程序定义的业务规则。例如,在银行账户转账的场景中,转账事务必须确保转出账户的余额足够,并且在转账后两个账户的余额总和保持不变。
  3. 数据的逻辑一致性:事务的执行结果应该符合数据的逻辑定义和预期的业务逻辑。例如,在库存管理系统中,一个减少库存数量的事务必须确保库存数量不会变为负数。
  4. 数据依赖关系:在复杂的数据关系中,事务的执行可能需要考虑数据之间的依赖关系。一致性要求事务的执行不能破坏这些依赖关系,以保持数据的逻辑一致性。

为了保持事务的一致性,数据库管理系统(DBMS)通常会在事务执行过程中进行一系列的检查和验证。如果事务违反了任何一致性约束或规则,DBMS将拒绝执行该事务或回滚已执行的操作,以恢复数据库到一致的状态。

此外,事务的一致性还与事务的隔离性密切相关。虽然隔离性主要关注事务之间的并发控制,但它也间接地影响了一致性,因为并发事务可能会相互干扰并破坏数据的一致性。因此,数据库系统通过提供不同级别的隔离性来平衡一致性和并发性之间的需求。

总之,事务的一致性是数据库事务管理中不可或缺的特性之一,它确保了事务执行前后数据库状态的一致性和数据的完整性。通过遵守数据库的约束、业务规则和数据依赖关系,事务能够维护数据的逻辑一致性和可靠性。

事务的隔离级别

SHOW TRANSACTION ISOLATION LEVEL;

SELECT current_setting('transaction_isolation');

事务的隔离级别是数据库管理系统(DBMS)中用于处理并发事务时可能发生的各种问题的关键概念。SQL标准定义了四种隔离级别,由低到高依次为:

  1. 读未提交(Read Uncommitted

但在内部,实际上只有三种独立的隔离级别,分别对应读已提交,可重复读和可串行化

    • 这是最低的隔离级别。
    • 在此级别下,一个事务可以读取另一个事务尚未提交的数据修改。
    • 这可能会导致脏读问题,即一个事务读取到了另一个事务尚未提交的数据,而后者可能会在后续被回滚,从而导致读取到的数据实际上是无效的。
    • 由于允许脏读,读未提交的隔离级别无法保证事务的一致性,且通常不推荐在生产环境中使用。
  1. 读已提交(Read Committed
    • 在此级别下,一个事务只能读取到已经提交的数据修改。
    • 这避免了脏读问题,但仍然存在不可重复读的风险,即在同一事务中多次读取同一数据,可能会因为其他事务的提交而导致结果不一致。
    • 读已提交隔离级别提供了一定程度的数据隔离,但无法解决幻读问题。
  2. 可重复读(Repeatable Read
    • 此级别提供了比读已提交更高的隔离性。
    • 在可重复读隔离级别下,一个事务在执行过程中多次读取同一行数据,可以得到一致的结果,即使其他事务对数据进行了修改也不会影响到当前事务的读取结果。
    • 它解决了不可重复读问题,但在某些情况下仍然可能出现幻读,即在同一事务中多次执行相同的查询,但结果集却不一致,通常是由于其他事务插入了符合查询条件的新数据。
    • 需要注意的是,不同的数据库系统(如MySQLInnoDB引擎)可能通过特定的机制(如next-key锁)来进一步解决幻读问题。
  3. 串行化(Serializable
    • 这是最高的隔离级别。
    • 在串行化隔离级别下,事务之间具有完全的隔离性,每个事务都像是在独立的执行环境中执行一样,互不干扰。
    • 它可以完全避免脏读、不可重复读和幻读等并发问题。
    • 但是,由于事务之间需要串行执行,这可能会导致系统性能显著下降,因此在实际应用中需要权衡数据一致性和系统性能的需求。

在实际应用中,选择合适的隔离级别需要根据具体的业务场景和需求来决定。例如,在需要高并发但对数据一致性要求不高的场景下,可以选择较低的隔离级别;而在对数据一致性要求极高的场景下,则可能需要选择更高的隔离级别甚至串行化级别。同时,数据库系统通常也提供了相应的配置选项来允许用户根据需要调整事务的隔离级别。

需要注意的是,虽然SQL标准定义了这四种隔离级别,但不同的数据库系统可能会在实现上有所差异。因此,在使用特定数据库系统时,需要参考该系统的官方文档来了解其事务隔离级别的具体实现和特性。

事务并发mvcc

事务的MVCCMulti-Version Concurrency Control,多版本并发控制)模式是一种用于实现事务隔离性的并发控制机制,常见于许多数据库管理系统(如MySQLInnoDB引擎和PostgreSQL)中。MVCC通过创建数据的多个版本,并为每个事务提供适当的版本来实现并发访问数据而不会相互干扰的目的。以下是关于事务MVCC模式的详细解析:

MVCC的基本概念

1. 定义

MVCC是一种并发控制的方法,用于在数据库管理系统中实现对数据库的并发访问。它通过维护数据的多个版本来避免读写冲突,从而提高数据库的并发性能。

2. 核心思想

MVCC的核心思想是为每个事务创建一个独立的数据视图,该视图反映了在事务开始时数据库的一致状态。每个事务在执行读操作时,只能看到在其开始之前已经提交的版本。

​​​​​​​数据版本

MVCCMulti-Version Concurrency Control,多版本并发控制)是一种在数据库管理系统中实现并发控制的技术,它通过保留数据的多个版本来实现事务的隔离性,从而允许读写操作同时进行,提高数据库的并发性能和响应能力。在MVCC中,数据版本是核心概念之一,具体来说,数据版本指的是数据在特定时间点的状态或记录。

​​​​​​​

数据版本的核心要素

MVCC机制下,数据版本通常包含以下几个关键信息:

  1. 事务IDTransaction ID:标识了生成该数据版本的事务。每当事务对数据进行修改时,都会生成一个新的数据版本,并将该事务的ID与该版本关联起来。
  2. 数据内容:即事务修改后的数据值。每个版本都保存了数据在某一时刻的具体内容。
  3. 版本链信息:在支持MVCC的数据库中,如MySQLInnoDB存储引擎,会通过一种称为版本链的数据结构来管理数据的多个版本。版本链中的每个节点都代表了一个数据版本,通过指针(如roll_ptr)将不同版本的数据连接起来。这样,系统就可以通过遍历版本链来访问数据的不同版本。​​​​​​​​​​​​​​数据版本的生成与管理​​​​​​​
  4. 数据修改时生成新版本:当事务对数据库中的数据进行修改时,MVCC机制会生成一个新的数据版本,并将旧版本的数据保存到undo日志中。新版本的数据会包含事务ID、修改后的数据内容以及指向旧版本的指针(如果适用)。
  5. 版本的选择与可见性:事务在读取数据时,会根据其隔离级别和当前系统的状态来选择合适的数据版本进行读取。例如,在可重复读(Repeatable Read)隔离级别下,事务会读取事务开始时数据库的快照中的数据版本;而在读已提交(Read Committed)隔离级别下,事务会读取最新的已提交事务修改的数据版本。
  6. 垃圾回收:随着时间的推移和事务的不断执行,数据库中会积累大量的旧数据版本。为了节省存储空间并提高性能,MVCC机制会定期执行垃圾回收操作,清理那些不再被任何事务需要的旧版本数据。
        1. 总结

MVCC的数据版本是指数据在特定时间点的状态或记录,它包含了事务ID、数据内容以及版本链信息等关键信息。通过管理数据的多个版本,MVCC机制能够在保证数据一致性的同时提高数据库的并发性能。

      1. Pg数据库的数据版本

PostgreSQL(简称PG)数据库的MVCCMulti-Version Concurrency Control,多版本并发控制)机制中,数据版本是核心概念之一。在PostgreSQL中,数据版本是指数据在特定时间点的状态或记录,这些版本通过一系列的内部机制来管理和维护,以确保事务的隔离性和一致性。

        1. 数据版本的核心要素
  1. 事务IDTransaction IDXID
    • 事务IDPostgreSQL中用于唯一标识事务的标识符。在MVCC中,每个事务在创建时都会被分配一个递增的事务ID
    • 事务ID在数据库中是全局唯一的,并且用于关联每个事务对数据库所做的修改(即数据版本)。
  2. 版本链(Version Chain
    • 对于数据库中的每个数据行,PostgreSQL都会维护一个版本链。这个链表记录了不同事务对该数据行所做的所有修改,每个节点代表一个数据版本。
    • 当数据行被更新时,会创建一个新的数据版本并将其添加到版本链的头部,而旧版本则通过链表结构保留下来。
  3. 可见性规则(Visibility Rules
    • PostgreSQL定义了一套可见性规则,用于确定哪些数据版本对于特定事务是可见的。
    • 这些规则通常基于事务的开始时间戳(即事务ID的创建时间)来判断。一个事务只能看到在其开始时间之前已经提交的事务所创建的数据版本。
数据版本的管理
  • 读取操作
    • 当事务执行读取操作时,PostgreSQL会根据该事务的快照(Snapshot)和可见性规则来确定哪些数据版本是可见的。
    • 快照是在事务开始时创建的,记录了数据库在那一刻的状态。事务在整个执行过程中都会使用这个快照来读取数据。
  • 写入操作
    • 当事务执行写入(包括INSERTUPDATEDELETE)操作时,PostgreSQL不会直接在原始数据上进行修改,而是创建一个新的数据版本。
    • 这个新版本会被添加到相应数据行的版本链中,并更新相关的事务ID和可见性信息。
  • 垃圾回收
    • 随着时间的推移,版本链会变得越来越长,导致性能下降和存储空间浪费。
    • PostgreSQL通过定期执行VACUUM操作来清理不再需要的数据版本(即那些对任何当前或未来事务都不可见的数据版本)。
​​​​​​​总结

PostgreSQLMVCC机制通过事务ID、版本链和可见性规则等核心要素来管理数据版本。这种机制允许多个事务同时读写数据库中的数据,而不会相互干扰,从而提高了数据库的并发性能和响应能力。同时,通过定期的垃圾回收操作,PostgreSQL能够保持数据库的性能和存储效率。

​​​​​​​MVCC的实现原理

1. 隐藏列字段

在支持MVCC的数据库中,每行记录除了用户自定义的字段外,还包含了一些隐藏字段,用于跟踪和管理事务的相关信息。这些字段通常包括事务IDDB_TRX_ID)、回滚指针(DB_ROLL_PTR)、行IDDB_ROW_ID)等。

2. UNDO日志

UNDO日志是数据库系统中的一种日志,用于记录事务所做的修改操作的逆向操作,以便在需要回滚事务或恢复数据时能够撤销这些修改。在MVCC中,UNDO日志用于保存旧版本的数据,以便事务可以读取到之前的数据版本。

3. Read View(读视图)

Read ViewMVCC机制中的一个重要概念,它提供了在给定时间点上一致的数据视图给读取操作。每个事务在开始执行时会创建自己的Read View,该视图反映了在该事务开始之前数据库的一致状态。Read View记录了在该事务开始之前已经提交的其他事务所做的修改,以及这些修改的版本信息。

​​​​​​​MVCC的工作流程

1. 读操作

当事务执行读操作时,MVCC会根据Read ViewUNDO日志来确定可以读取的数据版本。如果读取的数据版本在当前事务开始之前已经提交,则该数据版本对当前事务可见;否则,事务将通过UNDO日志找到更早的版本进行读取。

2. 写操作

当事务执行写操作(如插入、更新、删除)时,MVCC会为被修改的数据行创建一个新的版本,并将旧版本标记为不可见。同时,UNDO日志会记录修改前的数据版本,以便在需要回滚时能够撤销修改。

​​​​​​​MVCC的优势

1. 提高并发性能

MVCC允许读写操作并发执行,减少了锁冲突和阻塞,从而提高了数据库的吞吐量。

2. 解决事务隔离问题

MVCC可以支持不同的事务隔离级别(如读未提交、读已提交、可重复读和串行化),通过维护数据的多个版本来确保事务的隔离性和一致性。

3. 降低死锁风险

由于MVCC避免了传统锁机制中的显式锁,因此降低了死锁的风险。

​​​​​​​总结

事务的MVCC模式是一种高效的并发控制机制,它通过维护数据的多个版本来实现事务的隔离性和一致性。MVCC通过隐藏列字段、UNDO日志和Read View等组件来实现其功能,并具有提高并发性能、解决事务隔离问题和降低死锁风险等优势。在高度并发的数据库环境中,MVCC是一种被广泛采用的并发控制机制。

相关文章:

postgrsql——事务概述

事务概述 事务的特性 原子性(Atomicity): 事务被视为一个整体,其中的操作要么全部执行成功,要么全部不执行,即不存在部分执行的情况。这确保了事务的完整性和一致性。一致性(Consistency&…...

1.Spring Boot 简介(Spring MVC+Mybatis-plus)

文章目录 一,Spring Boot 简介二,搭建springboot项目并整合mybatis-plus框架1.pom导依赖2.添加启动项3.配置文件.yml 三,springboot集成 Spring MVC1.springmvc定义2.应用注解 一,Spring Boot 简介 SpringBoot是Spring的子工程(或…...

《计算机网络》(学习笔记)

目录 一、计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 电流交换、报文交换和分组交换 1.1.5 计算机网络的分类 1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型 1.2.1 计算机…...

指针函数和函数指针

函数名在表达式中应该如何被解读?答:函数名可以在表达式中被解读成“指向该函数的指针”。 函数指针和指针函数有什么区别?答:函数指针是一个指向函数的指针;指针函数是一个返回指针变量的函数。 一个函数能否有时候…...

Elasticsearch跨集群搜索

Elasticsearch(简称ES)是一种基于Lucene的搜索引擎,以其高性能、可扩展性和实时搜索能力而广受欢迎。在大型分布式系统中,跨集群搜索成为了一个重要的需求,它允许用户从多个Elasticsearch集群中联合查询数据&#xff0…...

基于FPGA的数字信号处理(19)--行波进位加法器

1、10进制加法是如何实现的? 10进制加法是大家在小学就学过的内容,不过在这里我还是帮大家回忆一下。考虑2个2位数的10进制加法,例如:15 28 43,它的运算过程如下: 个位两数相加,结果为5 8 1…...

树莓派下,centos7操作系统, TensorFlow java版实现植物分类功能

在树莓派上运行CentOS 7,并使用TensorFlow Java版本实现植物分类功能可以通过以下步骤实现。以下是详细的指导: 一、安装和设置环境 1. 更新系统并安装基本工具 确保你的CentOS 7系统是最新的,并安装必要的工具: sudo yum update -y sudo yum install -y wget unzip gi…...

开源一个react路由缓存库

Github仓库 背景 产品希望可以像浏览器那样每打开一个路由,会多一个tab,用户可以切换tab访问之前加载过的页面,且不会重新加载。真就产品一句话…… Github上有轮子了吗 Github上开箱即用的轮子是基于react-router-dom V5实现的&#xff…...

go-kratos 学习笔记(7) 服务发现服务间通信grpc调用

服务发现 Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc,放到data层,实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…...

SPSS个人版是什么软件

SPSS是一款数据统计、分析软件,它由IBM公司出品,这款软件平台提供了文本分析、大量的机器学习算法、数据分析模型、高级统计分析功能等,软件易学且功能非常强大,可以使用SPSS制作图表,例如柱状、饼状、折线等图表&…...

Minos 多主机分布式 docker-compose 集群部署

参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) 【运维】docker-compose安装minio集群-CSDN博客 Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能 中文地址:MinIO | 用于AI的S3 …...

Unity + Hybridclr + Addressable + 微信小程序 热更新报错

报错时机: Generate All 怎么All 死活就是报错 生成微信小程序,并启动后 报错内容: MissingMethodException:AoT generic method notinstantiated in aot.assembly:Unity.ResourceManager:dll, 原因: Hybridclr 开发文档 解…...

鸿蒙开发—黑马云音乐之Music页面

目录 1.外层容器效果 2.信息区-发光效果 3.信息区-内容布局 4.播放列表布局 5.播放列表动态化 6.模拟器运行并配置权限 效果: 1.外层容器效果 Entry Component export struct MuiscPage {build() {Column() {// 信息区域Column() {}.width(100%)// .backgroun…...

IsaacLab | 如何在Manipulation任务中添加新的目标(target)

如是我闻: 终于让我给摸索出来了,在这里描述一下问题场景。 假使说我们有一个机械臂操作的任务,这样婶的 Isaac Lab | Push 我们想做多目标的任务,这时候需要向环境中添加第二个目标,像这样 Isaac Lab | Add target 那…...

【Python从入门到进阶】61、Pandas中DataFrame对象的操作(二)

接上篇《60、Pandas中DataFrame对象的操作(一)》 上一篇我们讲解了DataFrame对象的简介、基本操作及数据清洗相关的内容。本篇我们来继续讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。 一、DataFrame的统计分析 在数据分析和处理中…...

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…...

CSS(九)——CSS 轮廓(outline)

CSS 轮廓(outline) 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。 让我们用一个图来看…...

Unity Timeline:构建复杂动画序列的利器

Unity的Timeline是一个强大的动画工具,它允许开发者创建复杂的动画序列,将动画、音频和事件整合到一个统一的时间轴上。Timeline的可视化编辑界面使得动画制作变得更加直观和灵活。本文将介绍Unity Timeline的基本概念、功能以及如何使用它来实现动画。 …...

C# 与C++ cli

cli CLI(Command Line Interface)是一种通过命令行界面与计算机系统进行交互的方式。它提供了一种以文本形式输入命令和接收系统输出的方法,用于执行各种操作和管理计算机系统。以下是CLI的详细解释: 一、定义与基本概念 定义&…...

Linux文件编程--打开及创建

...

Vue3点击按钮实现跳转页面并携带参数

前提&#xff1a;有完整的路由规则 1.源页面 <template><div><h1>源页面</h1><!--通过js代码跳转--><template #default"scope"><button click"toTargetView(scope.row)">点击跳转携带参数</button><…...

探索Linux-1-虚拟机远程登陆XShell6远程传输文件Xftp6

Linux是什么&#xff1f; Linux是一个开源的操作系统内核&#xff0c;由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。它基于Unix操作系统&#xff0c;但提供了更多的自由和灵活性。Linux内核是操作系统的核心部分&#xff0c;负责管理系统资源、处理…...

SpringBoot中使用监听器

1.定义一个事件 /*** 定义事件* author hrui* date 2024/7/25 12:46*/ public class CustomEvent extends ApplicationEvent {private String message;public CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() …...

mybatise全接触-面试宝典-知识大全

1 . 简述什么是Mybatis和原理 &#xff1f; Mybatis工作原理&#xff1a; &#xff08;1&#xff09;Mybatis是一个半ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;它内部封装了JDBC&#xff0c;加载驱动、创建连接、创建statement等繁杂的过程&#xff0c;开发者…...

Catalyst优化器:让你的Spark SQL查询提速10倍

目录 1 逻辑优化阶段 2.1 逻辑计划解析 2.2 逻辑计划优化 2.2.1 Catalys的优化过程 2.2.2 Cache Manager优化 2 物理优化阶段 2.1 优化 Spark Plan 2.1.1 Catalyst 的 Join 策略 2.1.2 如何决定选择哪一种 Join 策略 2.2 Physical Plan 2.2.1 EnsureRequirements 规则 3 相关文…...

【Hot100】LeetCode—416. 分割等和子集

目录 题目1- 思路2- 实现⭐152. 乘积最大子数组——题解思路 3- ACM 实现 题目 原题连接&#xff1a;416. 分割等和子集 1- 思路 理解为背包问题 思路&#xff1a; 能否将均分的子集理解为一个背包&#xff0c;比如对于 [1,5,11,5]&#xff0c;判断能否凑齐背包为 11 的容量…...

前端开发知识-vue

大括号里边放键值对&#xff0c;即是一个对象。 一、vue可以简化前端javascript的操作。 主要特点是可以实现视图、数据的双向绑定。 使用vue主要分为三个步骤&#xff1a; 1.javascript中引入vue.js 可以src中可以是vue的网址&#xff0c;也可以是本地下载。 2.在javasc…...

【嵌入式硬件】快衰减和慢衰减

1.引语 在使用直流有刷电机驱动芯片A4950时,这款芯片采用的是PWM控制方式,我发现他的正转、反转有两种控制方式,分别是快衰减和慢衰减。 2.理解 慢衰减:相当于加在电机(感性原件)两端电压消失,将电机两端正负短接。 快衰减:相当于加在电机(感性原件)两端电压消失,将电机…...

C语言 | Leetcode C语言题解之第275题H指数II

题目&#xff1a; 题解&#xff1a; int hIndex(int* citations, int citationsSize) {int left 0, right citationsSize - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > citationsSize - mid) {right mid - 1;} else {left mi…...

速盾:网络安全和 CDN 之间的关系是怎样的?

网络安全和内容交付网络&#xff08;CDN&#xff09;之间有着密切的关系。网络安全主要涉及保护网络和系统免受各种威胁和攻击&#xff0c;而CDN是一种用于提供更快速、高效和可靠的内容交付服务的技术。在当今数字化和云计算时代&#xff0c;网络安全和CDN之间的关系变得更加紧…...

数据库安全:MySQL安全配置,MySQL安全基线检查加固

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需要知道MySQL的安全基线标准和加固方式。 MySQL基线检查 1、更新…...

【SpringBoot】参数传递

1.定义URL变量 RequestMapping("/user/{username}") ResponseBody public String userProfile(PathVariable String username){ return "user:"username; } 2.定义多个URL变量 RequestMapping("/user/{username}/blog/{blogId}") Response…...

Unity 骨骼动画(Skinned Mesh Renderer): 角色动画的高级渲染

在Unity中&#xff0c;骨骼动画(Skinned Mesh Renderer)是一种用于高级角色动画渲染的组件。它允许开发者将复杂的3D模型和动画应用到游戏角色上&#xff0c;实现逼真的视觉效果。本文将探讨Skinned Mesh Renderer的基本概念、使用方法以及如何优化性能。 Skinned Mesh Render…...

花几千上万学习Java,真没必要!(三十四)

1、泛型类&#xff1a; 测试代码&#xff1a; 创建一个Box类; package settest.com; public class Box<T> { // T stands for "Type" - T是一个占位符&#xff0c;用于表示具体的类型 // 类的内部可以使用T作为类型声明变量 private T t; // 构造方法&am…...

【代码】Python3|Scrapy框架初探(汽车之家大连市二手车车辆数据爬取、清洗与可视化)

本篇主要是整个项目的介绍&#xff0c;没提到太多琐碎的技术细节&#xff0c;以后有空的话会整理一下 Scrapy 和原生爬虫的差异&#xff0c;还有它坑人的一些地方&#xff0c;单发出来。 开源地址&#xff1a;https://github.com/shandianchengzi/car_home_spider 使用说明&a…...

C#中的new以及类

new关键字的用法 实例化对象&#xff1a;使用 new 关键字可以创建一个类的实例。例如&#xff1a; ​ MyClass obj new MyClass(); 指定构造函数&#xff1a;如果类有多个构造函数&#xff0c;可以使用 new 关键字指定使用哪一个构造函数来创建对象。例如&#xff1a; ​ MyC…...

Hbase简介和快速入门

一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的&#xff0c;一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文&#xff0c;论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…...

【AI落地应用实战】Amazon Bedrock +Amazon Step Functions实现链式提示(Prompt Chaining)

一、链式提示 Prompt Chaining架构 Prompt Chaining 是一种在生成式人工智能&#xff08;如大型语言模型&#xff09;中广泛使用的技术&#xff0c;它允许用户通过一系列精心设计的提示&#xff08;Prompts&#xff09;来引导模型生成更加精确、丰富且符合特定需求的内容。 P…...

vue Ref 和 Reactive 原理解析

文章目录 RefReactive Ref ref 的语义是指向一个值的引用&#xff0c;主要用于处理基本数据类型和单一值对象&#xff0c;即对值的引用进行包装和管理&#xff0c;而不是对对象的操作进行拦截&#xff0c;对于基础类型通过 getter 和 setter 实现拦截使用 Proxy 拦截对象的所有…...

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

目录 一、引言 二、图像分类&#xff08;image-classification&#xff09; 2.1 概述 2.2 技术原理 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 pipeline&#x…...

编程语言漫谈之「初始化与赋值」——以C++和汇编语言为示例

编程语言漫谈之「初始化与赋值」——以C和汇编语言为示例 1. 赋值时汇编做了什么2. 在变量定义时做初始化, 与在使用时才进行初始化, 有区别吗? 1. 赋值时汇编做了什么 当我们在C中写下如下代码: int main() {int a 10;return 0; }这是一个简单的整数类型变量a的初始化赋值…...

windows使用ssh-agent管理私钥

主要有以下几个方面: 开启openssh 的 ssh-agent 服务 打开powershell 输入 Get-Service -Name ssh-agent 查看服务是否起来Start-Service ssh-agent 启动服务Stop-Service ssh-agent 关闭服务将私钥添加到ssh-agent 添加私钥 ssh-add ~/.ssh/id_rsa查询添加哪些私钥 ssh-add -…...

PostgreSQL 之 to_timestamp函数

to_timestamp 是 PostgreSQL 中的一个函数,用于将字符串或数字转换为时间戳。以下是关于 to_timestamp 的详细介绍: 引入版本 to_timestamp 函数在 PostgreSQL 7.3 版本中引入。 语法 to_timestamp 有两种主要的用法: 1.将字符串转换为时间戳 to_timestamp(text, text)第…...

USB3.0的等长要求到底是多少?

USB2.0与USB3.0接口的PCB布局布线要求PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 90欧姆阻抗&#xff0c;走差分线&#xff1a; 重点来了&#xff1a;...

力扣高频SQL 50题(基础版)第二十五题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十五题619.只出现一次的最大数字题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十五题 619.只出现一次的最大数字 题目说明 MyNumbers 表&#xff1a; ------…...

【C++题解】1581. 马里奥的银币1

问题&#xff1a;1581. 马里奥的银币1 类型&#xff1a;数组找数 题目描述&#xff1a; 马里奥有很多银币&#xff0c;有一天他得到了一张魔法卡&#xff0c;只要使用这张魔法卡&#xff0c;就可以使得他的银币里面的最大的银币金额变得更大。如果他最大的银币是偶数的金额&a…...

system和popen函数的异同点

system和popen函数的异同点 文章目录 system和popen函数的异同点1.什么是shell命令2.system 函数3.popen 函数4.总结 1.什么是shell命令 Shell 命令是在类 UNIX 操作系统&#xff08;包括 UNIX、Linux 和 macOS 等&#xff09;的 Shell 中执行的指令。Shell 是操作系统的命令行…...

Python小工具之httpstat网络分析

一、简介 Python httpstat是一个基于Python的命令行工具&#xff0c;用于测量HTTP请求的性能和状态信息。它能够向目标服务器发送HTTP请求&#xff0c;并显示详细的统计信息&#xff0c;包括DNS解析时间、建立连接时间、TLS/SSL握手时间、首字节时间、总时间等。这些信息对于排…...

挑战房市预测领头羊:KNN vs. 决策树 vs. 线性回归

挑战房市预测领头羊&#xff08;KNN&#xff0c;决策树&#xff0c;线性回归&#xff09; 1. 介绍1.1 K最近邻&#xff08;KNN&#xff09;&#xff1a;与邻居的友谊1.1.1 KNN的基础1.1.2 KNN的运作机制1.1.3 KNN的优缺点 1.2 决策树&#xff1a;解码房价的逻辑树1.2.1 决策树的…...

Docker 基础知识

Docker 基础知识 什么是 Docker&#xff1f; Docker 是一个开源平台&#xff0c;用于开发、发布和运行应用程序。Docker 通过将应用程序及其依赖项打包到一个称为容器的可移植单元中来工作。 Docker 的核心组件是什么&#xff1f; Docker Engine&#xff1a;核心组件&#xff0…...