wordpress 前台删除评论/优化大师app下载安装

wordpress 前台删除评论,优化大师app下载安装,镇江网站设计制作,企业购 网站建设InnoDB 引擎核心知识点 6.1 逻辑存储结构 表空间(Tablespace):所有数据逻辑上存储在一个表空间中,物理上可能由多个文件组成。段(Segment):分为数据段(B树叶子节点)、索引…

InnoDB 引擎核心知识点


6.1 逻辑存储结构

在这里插入图片描述

  • 表空间(Tablespace):所有数据逻辑上存储在一个表空间中,物理上可能由多个文件组成。
  • 段(Segment):分为数据段(B+树叶子节点)、索引段(B+树非叶子节点)、回滚段(Undo Log)。
  • 区(Extent):由连续的页组成,每个区固定为 1MB(64个16KB的页)。
  • 页(Page):InnoDB的最小存储单元,默认 16KB
  • 行(Row):数据按行存储,支持行级锁。
-- 示例:查看页大小(默认16KB)
SHOW VARIABLES LIKE 'innodb_page_size';

6.2 架构

6.2.1 概述

MySQL5.5 版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发 中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。

在这里插入图片描述

在左侧的内存结构中,主要分为这么四大块儿: Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer。 接下来介绍一下这四个部分。

InnoDB架构分为 内存结构磁盘结构,通过后台线程协调工作。

6.2.2 内存结构

  1. Buffer Pool(缓冲池)核心组件,缓存数据和索引页。

    InnoDB存储引擎基于磁盘文件存储,访问物理硬盘和在内存中进行访问,速度相差很大,为了尽可能 弥补这两者之间的I/O效率的差值,就需要把经常使用的数据加载到缓冲池中,避免每次访问都进行磁 盘I/O。

    在InnoDB的缓冲池中不仅缓存了索引页和数据页,还包含了undo页、插入缓存、自适应哈希索引以及 InnoDB的锁信息等等。

    在这里插入图片描述

    缓冲池 Buffer Pool,是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增 删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频 率刷新到磁盘,从而减少磁盘IO,加快处理速度。

    缓冲池以Page页为单位,底层采用链表数据结构管理Page。根据状态,将Page分为三种类型:

    • free page:空闲page,未被使用。

    • clean page:被使用page,数据没有被修改过。

    • dirty page:脏页,被使用page,数据被修改过,也中数据与磁盘的数据产生了不一致。

    在专用服务器上,通常将多达80%的物理内存分配给缓冲池 。参数设置: show variables like ‘innodb_buffer_pool_size’;

    在这里插入图片描述

    -- 示例:查看Buffer Pool大小
    SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
    
  2. Change Buffer(写缓冲):缓存非唯一索引的变更,减少磁盘IO。

    Change Buffer,更改缓冲区(针对于非唯一二级索引页),在执行DML语句时,如果这些数据Page 没有在Buffer Pool中,不会直接操作磁盘,而会将数据变更存在更改缓冲区 Change Buffer 中,在未来数据被读取时,再将数据合并恢复到Buffer Pool中,再将合并后的数据刷新到磁盘中。

    Change Buffer的意义是什么呢?

    先来看一幅图,这个是二级索引的结构图:

    在这里插入图片描述

    Change Buffer的意义是什么?

    与聚集索引不同,二级索引通常是非唯一的,并且以相对随机的顺序插入二级索引。同样,删除和更新 可能会影响索引树中不相邻的二级索引页,如果每一次都操作磁盘,会造成大量的磁盘IO。有了 ChangeBuffer之后,我们可以在缓冲池中进行合并处理,减少磁盘IO。

  3. Adaptive Hash Index(自适应哈希索引):自动为频繁访问的数据创建哈希索引。

    在这里插入图片描述

    自适应hash索引,用于优化对Buffer Pool数据的查询。MySQL的innoDB引擎中虽然没有直接支持 hash索引,但是给我们提供了一个功能就是这个自适应hash索引。因为前面我们讲到过,hash索引在 进行等值匹配时,一般性能是要高于B+树的,因为hash索引一般只需要一次IO即可,而B+树,可能需 要几次匹配,所以hash索引的效率要高,但是hash索引又不适合做范围查询、模糊匹配等。

    InnoDB存储引擎会监控对表上各索引页的查询,如果观察到在特定的条件下hash索引可以提升速度, 则建立hash索引,称之为自适应hash索引。

    自适应哈希索引,无需人工干预,是系统根据情况自动完成。

    参数: adaptive_hash_index

  4. Log Buffer(日志缓冲):存储Redo Log的缓冲区,定期刷盘。(如果有一台Mysql的服务器,那么一般80%的内存一般都会分配给缓存池,以此来提高Myql的执行效率。)

    在这里插入图片描述

    Log Buffer:日志缓冲区,用来保存要写入到磁盘中的log日志数据(redo log 、undo log), 默认大小为 16MB,日志缓冲区的日志会定期刷新到磁盘中。如果需要更新、插入或删除许多行的事 务,增加日志缓冲区的大小可以节省磁盘 I/O。

    参数:

    innodb_log_buffer_size:缓冲区大小

    innodb_flush_log_at_trx_commit:日志刷新到磁盘时机,取值主要包含以下三个:

    1: 日志在每次事务提交时写入并刷新到磁盘,默认值。

    0: 每秒将日志写入并刷新到磁盘一次。

    2: 日志在每次事务提交后写入,并每秒刷新到磁盘一次。

6.2.3 磁盘结构

  1. 系统表空间(ibdata1):存储元数据、Undo Log、Double Write Buffer。

    系统表空间是更改缓冲区的存储区域。如果表是在系统表空间而不是每个表文件或通用表空间中创建 的,它也可能包含表和索引数据。(在MySQL5.x版本中还包含InnoDB数据字典、undolog等)

    在这里插入图片描述

    参数:innodb_data_file_path

    在这里插入图片描述

    **系统表空间,默认的文件名叫 ibdata1。

  2. 用户表空间(.ibd文件):每个表独立存储数据和索引

    File-Per-Table Tablespaces

    如果开启了innodb_file_per_table开关 ,则每个表的文件表空间包含单个InnoDB表的数据和索 引 ,并存储在文件系统上的单个数据文件中。 开关参数:innodb_file_per_table ,该参数默认开启。

    在这里插入图片描述

    那也就是说,我们每创建一个表,都会产生一个表空间文件,如图:

    在这里插入图片描述

  3. 通用表空间: General Tablespaces

    通用表空间,需要通过 CREATE TABLESPACE 语法创建通用表空间,在创建表时,可以指定该表空 间。

    A. 创建表空间

     CREATE TABLESPACE ts_name  ADD  DATAFILE  'file_name' ENGINE = engine_name;
    

    在这里插入图片描述

    B. 创建表时指定表空间

    CREATE  TABLE  xxx ...  TABLESPACE  ts_name;
    

    在这里插入图片描述

  4. Undo Log(回滚日志):保证事务原子性,用于回滚和MVCC。

    Undo Tablespaces

    撤销表空间,MySQL实例在初始化时会自动创建两个默认的undo表空间(初始大小16M),用于存储 undo log日志。

    5). Temporary Tablespaces InnoDB 使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。

    6). Doublewrite Buffer Files 双写缓冲区,innoDB引擎将数据页从Buffer Pool刷新到磁盘前,先将数据页写入双写缓冲区文件 中,便于系统异常时恢复数据。

    7). Redo Log 重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。当事务提交之后会把所 有修改信息都会存到该日志中, 用于在刷新脏页到磁盘时,发生错误时, 进行数据恢复使用。 以循环方式写入重做日志文件,

    涉及两个文件:

    在这里插入图片描述

    前面我们介绍了InnoDB的内存结构,以及磁盘结构,那么内存中我们所更新的数据,又是如何到磁盘 中的呢? 此时,就涉及到一组后台线程,接下来,就来介绍一些InnoDB中涉及到的后台线程。

6.2.4 后台线程

  • Master Thread:负责异步刷盘、合并写缓冲等核心任务。
  • IO Thread:处理异步IO请求(如Redo Log写入)。
  • Purge Thread:清理Undo Log中无用的数据。
  • Page Cleaner Thread:协助刷新脏页。

6.3 事务原理

6.3.1 事务基础

1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 (例如:银行转账)

2). 特性

• 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

• 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。(数据+约束的一致性)

• 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

• 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

那实际上,我们研究事务的原理,就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的。

在这里插入图片描述

而对于这四大特性,实际上分为两个部分。 其中的原子性、一致性、持久化,实际上是由InnoDB中的 两份日志来保证的,一份是redo log日志,一份是undo log日志。 而持久性是通过数据库的锁, 加上MVCC(多版本并发控制)来保证的。

在这里插入图片描述

我们在讲解事务原理的时候,主要就是来研究一下redolog,undolog以及MVCC。

  • ACID特性:原子性(Undo Log)、持久性(Redo Log)、隔离性(锁+MVCC)、一致性(前三者共同保证)。
  • 事务隔离级别:READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ(默认)→ SERIALIZABLE。

6.3.2 Redo Log

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。

该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中, 用于在刷新脏页到磁盘,发生错误时, 进行数据恢复使用。

如果没有redolog,可能会存在什么问题的? 我们一起来分析一下。

我们知道,在InnoDB引擎中的内存结构中,主要的内存区域就是缓冲池,在缓冲池中缓存了很多的数 据页。 当我们在一个事务中,执行多个增删改的操作时,InnoDB引擎会先操作缓冲池中的数据,如果 缓冲区没有对应的数据,会通过后台线程将磁盘中的数据加载出来,存放在缓冲区中,然后将缓冲池中 的数据修改,修改后的数据页我们称为脏页。 而脏页则会在一定的时机,通过后台线程刷新到磁盘 中,从而保证缓冲区与磁盘的数据一致。 而缓冲区的脏页数据并不是实时刷新的,而是一段时间之后 将缓冲区的数据刷新到磁盘中,假如刷新到磁盘的过程出错了,而提示给用户事务提交成功,而数据却没有持久化下来,这就出现问题了,没有保证事务的持久性。

(buffer pool 存储的数据。只是当前屏幕上显示的数据, 修改它, 只是为了让屏幕上显示的数据进行变更。)

在这里插入图片描述

那么,如何解决上述的问题呢?(数据缓存池的脏数据丢失,导致应该持久化的数据无法持久化。) 在InnoDB中提供了一份日志 redo log,接下来我们再来分析一 下,通过redolog如何解决这个问题

在这里插入图片描述

有了redolog之后,当对缓冲区的数据进行增删改之后,会首先将操作的数据页的变化,记录在redo log buffer中。在事务提交时,会将redo log buffer中的数据刷新到redo log磁盘文件中(循环型,每隔一段时间就会清理,并不会永久保留下来,因为持久化完成之后这块的数据就没必要存在了。)。 过一段时间之后,如果刷新缓冲区的脏页到磁盘时,发生错误,此时就可以借助于redo log进行数据 恢复,这样就保证了事务的持久性。 而如果脏页成功刷新到磁盘 或 或者涉及到的数据已经落盘,此 时redolog就没有作用了,就可以删除了,所以存在的两个redolog文件是循环写的。

那为什么每一次提交事务,要刷新redo log 到磁盘中呢,而不是直接将buffer pool中的脏页刷新到磁盘呢 ? 因为在业务操作中,我们操作数据一般都是随机读写磁盘的,而不是顺序读写磁盘。 而redo log在 往磁盘文件中写入数据,由于是日志文件,所以都是顺序写的。顺序写的效率,要远大于随机写。 这 种先写日志的方式,称之为 WAL(Write-Ahead Logging:先写日志)。

小结:

  • 作用发生脏页数据丢失,也能保证事务持久性,记录物理修改(如页的变更)。

  • 写入流程:事务提交时,Redo Log先写入日志文件,再异步刷盘。

    事务提交 → Redo Log Buffer → 刷盘(fsync)→ 持久化
    

6.3.3 Undo Log(解决事务原子性)

回滚日志,用于记录数据被修改前的信息 , 作用包含两个 : 提供回滚(保证事务的原子性) 和 MVCC(多版本并发控制) 。

undo log和redo log记录物理日志不一样,它是逻辑日志。(物理日志:mysql数据最终是保存在数据页中的,物理日志记录的就是数据页变更)可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的 update记录。当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。(key:反向的日志,目的是为了方便事务的回滚

Undo log销毁:undo log在事务执行时产生,事务提交时,并不会立即删除undo log,因为这些 日志可能还用于MVCC。

Undo log存储:undo log采用段的方式进行管理和记录,存放在前面介绍的 rollback segment 回滚段中,内部包含1024个undo log segment。

  • 作用保证事务原子性,提供回滚功能,记录逻辑反向操作(如INSERT对应DELETE)。
  • 其他用途支持MVCC,提供历史版本数据

6.4 MVCC(多版本并发控制)(高频面试题)

6.4.1 基本概念

1). 当前读(每一次读操作都会加锁)

读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select … lock in share mode(共享锁),select … for update、update、insert、delete(排他锁)都是一种当前读。

  • 通过 版本链ReadView 实现非锁定读,解决读写冲突。

测试:

在这里插入图片描述

在测试中我们可以看到,即使是在默认的RR隔离级别下,事务A中依然可以读取到事务B最新提交的内 容,因为在查询语句后面加上了 lock in share mode 共享锁,此时是当前读操作。当然,当我们 加排他锁的时候,也是当前读操作。

2). 快照读(每一次读操作都不加锁)

简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据, 不加锁,是非阻塞读。

• Read Committed:每次select,都生成一个快照读。

• Repeatable Read:开启事务后第一个select语句才是快照读的地方。

• Serializable:快照读会退化为当前读。

测试:

在这里插入图片描述

在测试中,我们看到即使事务B提交了数据,事务A中也查询不到。 原因就是因为普通的select是快照 读,而在当前默认的RR隔离级别下,开启事务后第一个select语句才是快照读的地方,后面执行相同 的select语句都是从快照中获取数据,可能不是当前的最新数据,这样也就保证了可重复读。

3). MVCC

全称 Multi-Version Concurrency Control,多版本并发控制。**指维护一个数据的多个版本, 使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。**MVCC的具体实现,还需 要依赖于数据库记录中的三个隐式字段、undo log日志、readView。

接下来,我们再来介绍一下InnoDB引擎的表中涉及到的隐藏字段 、undolog 以及 readview,从 而来介绍一下MVCC的原理。

6.4.2 隐藏字段

介绍

在这里插入图片描述

当我们创建了上面的这张表,我们在查看表结构的时候,就可以显式的看到这三个字段。 实际上除了 这三个字段以外,InnoDB还会自动的给我们添加三个隐藏字段及其含义分别是:

在这里插入图片描述

而上述的前两个字段是肯定会添加的, 是否添加最后一个字段DB_ROW_ID,得看当前表有没有主键, 如果有主键,则不会添加该隐藏字段。

文件名.ibd:独立表空间文件。

  • DB_TRX_ID:最近修改事务ID。
  • DB_ROLL_PTR:指向Undo Log中旧版本数据的(PTR:point是指针的简写)指针。

6.4.3 Undo Log版本链

6.4.3.1 介绍

回滚日志,在insert、update、delete的时候产生的便于数据回滚的日志。 当insert的时候,产生的undo log日志只在回滚时需要,在事务提交后,可被立即删除。 而update、delete的时候,产生的undo log日志不仅在回滚时需要,在快照读时也需要,不会立即 被删除。

6.4.3.2 版本链

有一张表原始数据为:

在这里插入图片描述

DB_TRX_ID : 代表最近修改事务ID,记录插入这条记录或最后一次修改该记录的事务ID,是 自增的。 DB_ROLL_PTR : 由于这条数据是才插入的,没有被更新过,所以该字段值为null。

然后,有四个并发事务同时在访问这张表。

A. 第一步

在这里插入图片描述

当事务2执行第一条修改语句时,会记录undo log日志,记录数据变更之前的样子; 然后更新记录, 并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

在这里插入图片描述

B.第二步

在这里插入图片描述

当事务3执行第一条修改语句时,也会记录undo log日志,记录数据变更之前的样子; 然后更新记 录,并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

在这里插入图片描述

C. 第三步

在这里插入图片描述

当事务4执行第一条修改语句时,也会记录undo log日志,记录数据变更之前的样子; 然后更新记 录,并且记录本次操作的事务ID,回滚指针,回滚指针用来指定如果发生回滚,回滚到哪一个版本。

在这里插入图片描述

最终我们发现,不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成一条 记录版本链表,链表的头部是最新的旧记录,链表尾部是最早的旧记录。

  • 每个行记录的多个版本通过 DB_ROLL_PTR 形成链表。

6.4.4 ReadView(版本链访问规则不用记,了解)

ReadView(读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录并维护系统当前活跃的事务 (未提交的)id。 ReadView中包含了四个核心字段:

在这里插入图片描述

而在readview中就规定了版本链数据的访问规则:

trx_id 代表当前undolog版本链对应事务ID。

在这里插入图片描述

不同的隔离级别,生成ReadView的时机不同:

READ COMMITTED :在事务中每一次执行快照读时生成ReadView。

REPEATABLE READ:仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。

  • 关键字段m_ids(活跃事务ID列表)、min_trx_id(最小活跃事务ID)、max_trx_id(预分配事务ID)、creator_trx_id(当前事务ID)。
  • 可见性规则:根据事务ID判断数据版本是否可见。

6.4.5 原理分析

  • 快照读(如 SELECT):基于ReadView读取符合条件的历史版本。
  • 当前读(如 SELECT FOR UPDATE):读取最新版本并加锁。

重点总结

1.逻辑存储结构

表空间、段、区、页、行

2.架构

内存结构
磁盘结构

3.事务原理

原子性-undolog
持久性-redolog
一致性-undolog+redolog
隔离性-锁+MVCC

4.MVCC

记录隐藏字段、undolog版本链、readView

思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 Deep Learning 第9章 卷积网络 CNN

深度学习 Deep Learning 第9章 卷积网络 章节概述 本章深入探讨了卷积网络的原理、变体及其在深度学习中的应用。卷积网络通过卷积操作实现了参数共享和稀疏连接,显著提高了模型的效率和性能。本章首先介绍了卷积操作的基本形式及其在不同数据维度上的应用&#x…

基于MATLAB的涡旋光和高斯光叠加产生平顶光

强度叠加耦合成平顶光,不发生干涉 通过分别生成高斯光和涡旋光的强度分布,然后按合适的权重将它们叠加,得到近似平顶光(flat‐top beam)的效果。由于我们只是将强度相加(而非复振幅叠加)&#…

wordpress-网站百宝箱插件

含置顶,网页宠物, 哀悼, 禁止复制, 禁止查看源码, 弹幕, WP优化,媒体分类,预加载,定时发布,在线客服, 留言板, 手机客服, 网站背景, 公告, 跑马灯, 水印, 分享, 打赏, 海报图, 广告,数据库管理,图片加载特效。等综合功能插件

Vue 中的日期格式化实践:从原生 Date 到可视化展示!!!

📅 Vue 中的日期格式化实践:从原生 Date 到可视化展示 🚀 在数据可视化场景中,日期时间的格式化显示是一个高频需求。本文将以一个邀请码关系树组件为例,深入解析 Vue 中日期格式化的 核心方法、性能优化 和 最佳实践…

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能,让运维经验不再零散!只需将日常的运维操作和故障排查经验转化为标准化流程,就能一键复用,效率翻倍,从此告别重复劳动,把时间留给更有价值的创新工作。更贴心的是&…

分布式光伏防逆流管理:技术要点与实践解析

在国家“双碳”目标推动下,分布式光伏作为新能源体系的重要组成部分,正迎来快速发展。国家能源局近期发布的《关于做好新能源消纳工作保障新能源高质量发展的通知》明确提出,需加强网源协调与调节能力,优化新能源利用率。其中&…

【CSS】CSS 使用全教程

CSS 使用全教程 介绍 CSS(层叠样式表,Cascading Style Sheets)是一种样式表语言,用于描述 HTML 或 XML 文档的布局和外观,它允许开发者将文档的内容结构与样式表现分离,通过定义一系列的样式规则来控制网页…

EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用

一、市场背景 随着人们生活水平的提高,对于家居安全和远程监控的需求日益增长,带屏IPCam不仅满足了用户实时查看监控画面的需求,还提供了诸如双向语音通话、智能报警等丰富的功能,极大地提升了用户体验。 此外,技术的…

AI编辑器-Trae 玩转AI 编程

参考 掘金社区地址 Trae下载地址 管理插件 Trae 从入门到实践:AI 编码的妙笔生花 掘金社区 掘金社区简介 掘金是面向全球中文开发者的技术内容分享与交流平台。我们通过技术文章、沸点、课程、直播等产品和服务,打造一个激发开发者创作灵感,激励开发者沉淀分享,陪伴开发者…

C++《红黑树》

在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树,那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树,在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点,接下来在试着实现红黑树的结构…

【第23节】windows网络编程模型(WSAEventSelect模型)

目录 引言 一、WSAEventSelect模型概述 二、 WSAEventSelect模型的实现流程 2.1 创建一个事件对象,注册网络事件 2.2 等待网络事件发生 2.3 获取网络事件 2.4 手动设置信号量和释放资源 三、 WSAEventSelect模型伪代码示例 四、完整实践示例代码 引言 在网…

手撕算法——链表

算法基础——链表-CSDN博客 一、排队顺序 题⽬来源:洛⾕ 题⽬链接:B3630 排队顺序 - 洛谷 难度系数:★ 1. 题目描述 2. 算法原理 本题相当于告诉了我们每⼀个点的后继,使⽤静态链表的存储⽅式能够很好的还原这个队列。 数组中 [1,…

RAG优化:python从零实现[吃一堑长一智]循环反馈Feedback

本文将介绍一种有反馈循环机制的RAG系统,让当AI学会"吃一堑长一智",给传统RAG装了个"后悔"系统,让AI能记住哪些回答被用户点赞/拍砖,从此告别金鱼记忆: 每次回答都像在玩roguelike:失败结局会强化下次冒险悄悄把优质问答变成新知识卡牌,实现"以…

使用cursor开发java案例——springboot整合elasticsearch

安装elasticsearch 打开cursor,输入如下提示词 使用springboot整合elasticsearch。其中elasticsearch服务器ip:192.168.236.134 管理员用户名elastic 管理员密码 PdQy_xfR2yLhpok*MK_ 监听端口9200点Accept all 使用idea打开生成的项目 &#xff0…

vue3 项目的最新eslint9 + prettier 配置

注意:eslint目前升级到9版本了 在 ESLint v9 中,配置文件已经从 .eslintrc 迁移到了 eslint.config.js 配置的方式和之前的方式不太一样了!!!! 详见自己的语雀文档:5、新版eslint9prettier 配…

基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印): 设置SNR12db 将FPGA数据导入到MATLAB显…

[学成在线]06-视频分片上传

上传视频 需求分析 教学机构人员进入媒资管理列表查询自己上传的媒资文件。 点击“媒资管理” 进入媒资管理列表页面查询本机构上传的媒资文件。 教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。 点击“上传视频”打开上传页面 选择要上传的文件…

Maven安装与环境配置

首先我们先介绍一些关于Maven的知识,如果着急直接看下面的安装教程。 目录 Maven介绍 Maven模型 Maven仓库 Maven安装 下载 安装步骤 Maven介绍 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念…

AI Tokenization

AI Tokenization 人工智能分词初步了解 类似现在这个,一格子 一格子,拼接出来的,一行或者一句,像不像,我们人类思考的时候组装出来的话,并用嘴说出来了呢。

React(四)setState原理-性能优化-ref

setState详解 实现原理 开发中我们并不能直接修改State来重新渲染界面: 因为修改State之后,希望React根据最新的State来重新渲染界面,但这种方式的修改React并不知道数据发生了变化; React并没有类似于Vue2中的Object.defineP…