MySQL 之存储引擎(MySQL Storage Engine)

MySQL 之存储引擎

常见存储引擎及其特点

  1. ‌InnoDB‌:

    • ‌特点‌:支持事务处理、行级锁定、外键约束,使用聚簇索引,适合高并发读写和事务处理的场景‌。
    • ‌适用场景‌:需要高可靠性、高并发读写和事务处理的场景‌。
  2. ‌MyISAM‌

    • ‌特点‌:不支持事务处理和行级锁定,但支持全文索引,以高效率的插入和查询速度著称,适合读操作比写操作更频繁的场景‌。
    • ‌适用场景‌:不需要事务处理,主要进行大量读操作的应用‌。
  3. ‌Memory‌:

    • ‌特点‌:所有数据存储在内存中,适合快速读写操作,但数据在服务器重启后会丢失,适用于缓存和临时数据存储‌。
    • ‌适用场景‌:需要快速访问数据的缓存应用‌。

存储引擎的选择依据

选择合适的存储引擎需要根据具体的应用需求来决定:

  • ‌事务处理需求‌:如果需要事务处理,选择InnoDB。
  • ‌读写比例‌:如果读操作远多于写操作,MyISAM可能更合适。
  • ‌数据安全性和并发需求‌:如果需要高并发和高数据安全性,InnoDB是更好的选择。

Connectors:连接器

连接器对 Native,JDBC,ODBC,NET,PHP,Perl,Python,Ruby,Cobol 等客户端工具或编程语言的 API 对MySQL 的连接功能进行管理。连接器是 Server 端的第一个模块。

JDBC:Java 数据库连接( Java DataBase Connectivity )

它是一套用于执行 SQL 语句的 Java API。应用程序可通过这套API连接到关系数据库,并使用 SQL 语句来完成对数据库中数据的查询、更新和删除等操作。

ODBC:开放数据库互连(Open Database Connectivity)

是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。

Connection Pool:线程池

MySQL 是单进程多线程模型,因此,每个用户连接,都会创建一个连接线程,客户端和服务端通过这个线程进行数据交互。MySQL 通过线程池来管理这些线程,线程池组件的功能包括登录验证(authentication),线程重用(Connection Pool) 等,connection limit 值决定了线程池中线程数量,也就

决定了MySQL服务的最大并发连接数,check memory 用来检测内存,caches 实现线程缓存。

#最大并发连接数,在实际的生产环境中,可以将此参数调大mysql> show variables like 'max_connections';+-----------------+-------+| Variable_name   | Value |+-----------------+-------+| max_connections | 151   |+-----------------+-------+1 row in set (0.00 sec)

SQL Interface:SQL 语句接口

完整的 sql 命令的解释器,对 SQL 语句进行检查,是否有错误,并且进行词法分析,语法分析,识别出具体操作,对象,参数等。

Parser:查询解析器

解析器会根据已经检查过的SQL语句生成一个数据结构,一般是树形结构,我们称其为解析树。在这个过程中也会校验当前连接的客户端是否有权限操作库和表等。

Optimizer:查询优化器

根据解析器生成的解析树中的各个节点,决定一个最优的执行顺序路径,保证在使用最少的开销的情况下返回正确的结果。

Cache & Buffer:查询缓存

将已查询过的结果进行缓存,下次使用相同的查询语句查询时,可以直接从缓存中返回查询结果。

存储引擎

存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。MySQL 数据库中的数据,本质上来讲,是存在于硬盘上的物理文件,不同的存储引擎有不同的特性,实际上就是使用不同的技术和方式来管理文件中的数据。

其它

MySQL 是一个复杂的系统,除了上述核心组成部分之外,还有一些其它的管理和服务工具,例如:备份和恢复工具,安全工具,集群服务,配置工具,迁移工具等。

1.1 存储引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力,此种技术称为存储引擎,MySQL 支持多种存储引擎,其中目前应用最广泛的是 InnoDB 和 MyISAM 两种。

在 MySQL5.5 之后默认存储引擎是 InnoDB,在之前是 MyISAM。

MySQL中常见的存储引擎特性说明

Feature 

MyISAM 

Memory 

InnoDB 

Archive 

NDB

B-tree indexes(B树索引) 

Yes 

Yes 

Yes 

No 

No

Backup/point-in-time recovery (备份/时间点恢复) 

Yes 

Yes 

Yes 

Yes 

Yes

Cluster database support(集群模式) 

No 

No 

No 

No 

Yes

Clustered indexes(聚集索引) 

No 

No 

Yes 

No 

No

Compressed data(数据压缩) 

Yes 

No 

Yes 

Yes 

No

Data caches(数据缓存) 

No 

N/A 

Yes 

No 

Yes

Encrypted data(数据加密) 

Yes 

Yes 

Yes 

Yes 

Yes

Foreign key support(外键) 

No 

No 

Yes 

No 

Yes

Full-text search indexes(全文检索) 

Yes 

No 

Yes 

No 

No

Geospatial data type support(地理空间数据类型) 

Yes 

No 

Yes 

Yes 

Yes

Geospatial indexing support(地理空间数据索引) 

Yes 

No 

Yes 

No 

No

Hash indexes(HASH索引) 

No 

Yes 

No 

No 

Yes

Index caches(索引缓存) 

Yes 

N/A 

Yes 

No 

Yes

Locking granularity(锁颗粒度) 

Table 

Table 

Row 

Row 

Row

MVCC(多版本并发控制) 

No 

No 

Yes 

No 

No

Replication support(数据同步) 

Yes 

Limited 

Yes 

Yes 

Yes

Storage limits(表空间上限) 

256TB 

RAM 

64TB 

None 

384EB

T-tree indexes(T树索引) 

No 

No 

No 

No 

Yes

Transactions(事务) 

No 

No 

Yes 

No 

Yes

Update statistics for data dictionary(元数据静态更新) 

Yes 

Yes 

Yes 

Yes 

Yes

官方文档

https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/storage-engines.htmlhttps://docs.oracle.com/cd/E17952_01/mysql-5.7-en/storage-engines.html

表锁与行锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。

在计算机中,除了计算机自身的资源,如CPU,内存,IO等争用以外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性,有效性是所有系统必须解决的问题。​​​​​​​

[root@rocky86 ~]# ls anaconda-ks.cfg abcls: cannot access 'abc': No such file or directoryanaconda-ks.cfg
[root@rocky86 ~]# ls anaconda-ks.cfg abc 1>ls.log 2>ls.log
#两个设备同时写一个文件,数据丢失[root@rocky86 ~]# cat ls.loganaconda-ks.cfgs 'abc': No such file or directory

在关系型数据库中,按数据操作的颗粒度划分,分为表锁,行锁和页锁。

表锁:表锁是 MySQL 中锁定粒度最大的一种锁,表示对当前操作的整张表加锁(哪怕只操作表里面的一行数据),它实现简单,消耗资源少,被大部分 MySQL 存储引擎支持,MyISAM 存储引擎使用表锁,表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。

表锁的特点是开销小,加锁快,不会出现死锁,锁定颗粒度大,发生锁冲突的概率高,并发性差。

行锁:行锁是 MySQL 中锁定粒度最小的一种锁,表示只对当前操作的行加锁,行锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。InnoDB存储引擎默认采用行锁。

行锁的特点是开销大,加锁慢,会出现死锁,锁定颗粒度最小,发生锁冲突的概率最低,并发性好。

1.1.1 MyISAM 存储引擎

MyISAM 存储引擎特点

  • 不支持事务

  • 表级锁定

  • 读写相互阻塞,写入不能读,读时不能写

  • 只缓存索引

  • 不支持外键约束

  • 不支持聚簇索引

  • 支持全文索引

  • 读取数据较快,占用资源较少

  • 不支持MVCC(多版本并发控制机制)高并发

  • 崩溃恢复性较差

  • MySQL5.5.5 前默认的数据库引擎

    MyISAM 存储引擎适用场景

  • 读多写少的业务(或者只读的业务)

  • 不需要事务支持的业务(比如转账,充值这种业务就不行)

  • 并发访问低的业务

  • 对数据一致性要求不高的业务

  • 表较小(可以接受长时间进行修复操作)

    MyISAM 存储引擎相关文件

  • tbl_name.frm 表格式定义

  • tbl_name.sdi 表格式定义(mysql8.0开始)

  • tbl_name.MYD 数据文件

  • tbl_name.MYI 索引文件

    查看表文件​​​​​​​

mysql> select version();+-----------+| version() |+-----------+| 5.1.52    |+-----------+1 row in set (0.00 sec)
mysql> use mysql;
#user表使用 MyISAM 存储引擎mysql> show table status like 'user'\G
#查看表文件[root@c6 ~]# ll /var/lib/mysql/mysql/user*-rw-rw---- 1 mysql mysql 10466 Jan 29 16:24 /var/lib/mysql/mysql/user.frm-rw-rw---- 1 mysql mysql 260 Jan 29 16:24 /var/lib/mysql/mysql/user.MYD-rw-rw---- 1 mysql mysql 2048 Jan 29 16:24 /var/lib/mysql/mysql/user.MYI

1.1.2 InnoDB 存储引擎

InnoDB 存储引擎特点

  • 支持事务,适合处理大量短期事务

  • 行级锁定

  • 读写阻塞与事务隔离级别相关

  • 可缓存数据和索引

  • 支持聚簇索引

  • 崩溃恢复性更好

  • 支持MVCC高并发

  • 支持表分区,支持表空间

  • 从MySQL5.5 后支持全文索引

  • 从MySQL5.5.5 开始为默认的数据库引擎

    InnoDB 存储引擎适用场景

  • 数据读写都较为频繁的业务

  • 需要事务支持的业务

  • 对并发要求较高的业务

  • 对数据一致性要求较高的业务

    InnoDB 存储引擎相关文件

  • tbl_name.frm 表格式定义

  • tbl_name.ibd 数据和索引文件

    InnoDB 中有共享表空间和独立表空间的概念。

共享表空间是指表结构文件单独放在以数据命名的文件夹中,格式为 tbl_name.frm,所有 InnoDB 引擎表的数据都放在一个文件中 (ibdata1,ibdata2,...)。

独立表空间是指用独立文件存放每个表的表结构 tbl_name.frm 和数据及索引 tbl_name.ibd,在独立表空间的前提下,共享表空间中的 ibdata 文件还是存在,独立表空间文件只存储该表的数据,索引和插入缓冲的BITMAP等信息,其它信息还是存放在共享表空间中。

MySQL 5.5 版本以后默认采用独立表空间

MySQL 8.0 开始,InnoDB 引擎的 frm 文件被取消了,并入到 idb文件中了

查看表文件​​​​​​​

mysql> select version();+-----------+| version() |+-----------+| 8.0.30    |+-----------+1 row in set (0.00 sec)
#开启了独立表空间mysql> show variables like 'innodb_file_per_table';+-----------------------+-------+| Variable_name         | Value |+-----------------------+-------+| innodb_file_per_table | ON    |+-----------------------+-------+1 row in set (0.01 sec)
mysql> use mysql;Database changed
#user表使用 InnoDB 存储引擎mysql> show table status like 'user'\G
#查看文件,没有 mysql 表的相关数据[root@rocky86 ~]# ll /var/lib/mysql/mysql/user*ls: cannot access '/var/lib/mysql/mysql/user*': No such file or directory
[root@rocky86 ~]# ll /var/lib/mysql/mysql/total 32-rw-r----- 1 mysql mysql 5972 Jan 26 11:27 general_log_213.sdi-rw-r----- 1 mysql mysql 35 Jan 26 11:27 general_log.CSM-rw-r----- 1 mysql mysql 0 Jan 26 11:27 general_log.CSV-rw-r----- 1 mysql mysql 12505 Jan 26 11:27 slow_log_214.sdi-rw-r----- 1 mysql mysql 35 Jan 26 11:27 slow_log.CSM-rw-r----- 1 mysql mysql 0 Jan 26 11:27 slow_log.CSV
#在 mysql8.0中,mysql 数据库的文件不在数据库目录中[root@rocky86 ~]# ll /var/lib/mysql/mysql.ibd -h-rw-r----- 1 mysql mysql 27M Jan 29 18:36 /var/lib/mysql/mysql.ibd
#看其它表mysql> use wordpress;Database changedmysql> show table status like 'wp_posts'\G
#只有一个 ibd文件[root@rocky86 ~]# ll /var/lib/mysql/wordpress/wp_posts*-rw-r----- 1 mysql mysql 196608 Jan 26 13:47 /var/lib/mysql/wordpress/wp_posts.ibd

1.1.3 InnoDB 存储引擎中的 MVCC

MVCC(Multi-Version Concurrency Control):多版本并发控制

MVCC 是一种实现并发控制的方法,一般用在数据库管理系统中,实现对数据库的并发访问。

MVCC 使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,而是把数据库的行锁与数据版本结合起来,只需要很小的开销,就可以实现非锁定读,从而大大提高了数据库系统的并发性能。

如果A进程从数据库中读取数据的同时,B进程往数据库中写入数据,则A进程有可能读到 "半写" 的数据,从而造成混乱。为了解决这个问题,我们有很多种方法,最简单的,就是加锁,让所有的读进程等待写进程处理完成后再读,但是这种方法效率会很差,写入的数据越频繁,写数据的进程越多,加锁的时间就越长,性能就越差。

MVCC并不使用加锁的方式来实现并发控制,每个连接到数据库的读进程,在某个瞬间看到的都是数据库的一个快照,在写进程没有完成提交之前,读进程的快照并不会受到该写进程的数据影响。

基于对提升并发性能的考虑,各大数据库厂商的事务型存储引擎一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了。但各个数据库厂商的实现机制不尽相同。可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。

InnoDB 中的 MVCC

在MySQL中,使用 InnoDB 存储引擎的表,在创建时,系统会自动给表加上两个版本控制字段,这是两个隐藏列,这两个字段不显示在表结构中。其中一个字段保存了行的创建时间,一个保存了行的过期时间(或删除时间),(实际上存储的并不是时间,而是版本号,为了方便理解,我们认为记录的是时间)。当客户端要执行SQL语句时,会根据当前的时间与数据表中记录的时间进行比较,确保不会让客户端得到非法数据。

id 

name 

age 

insert 

delete

tom 

10 

1000 

5000

jerry 

20 

2000 

3500

alice 

30 

3000 

4000

tom 

11 

5000

1001

#时间轴------|------|------|-----|-----|-----|------|------>     1000   2000   3000  3500  4000  5000
#查询时数据与时间点的关系#能查询到的数据 = insert 时间小于或等于当前时间 且 (delete 时间为空 或 delete 时间大于当前时间)

1.1.4 其它存储引擎

  • Performance_Schema:Performance_Schema 数据库使用。

  • Memory:将所有数据存储在RAM中,以便在需要快速查找参考和其他类似数据的环境中进行快速访问。适用存放临时数据。引擎以前被称为HEAP引擎。

  • MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB(Very Large Data Base)环境,如数据仓库。

  • Archive:为存储和检索大量很少参考的存档或安全审核信息,只支持 SELECT 和 INSERT 操作;支持行级锁和专用缓存区。

  • Federated联合:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,提供链接单独MySQL服务器的能力,以便从多个物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境。

  • BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

  • Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。

  • CSV:CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中。可以使用CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换。

  • BLACKHOLE:黑洞存储引擎接受但不存储数据,检索总是返回一个空集。该功能可用于分布式数据库设计,数据自动复制,但不是本地存储。

  • example:"stub"引擎,它什么都不做。可以使用此引擎创建表,但不能将数据存储在其中或从中检索。目的是作为例子来说明如何开始编写新的存储引擎。

    1.1.5 管理存储引擎

查看 mysql 支持的存储引擎

show engines;

查看当前默认的存储引擎

show variables like '%storage_engine%';

设置默认的存储引擎​​​​​​​

vim /etc/my.cnf[mysqld]default_storage_engine=InnoDB

查看库中所有表使用的存储引擎

show table status from db_name;

查看库中指定表的存储引擎​​​​​​​

show table status like 'tb_name';show create table tb_name;

设置表的存储引擎​​​​​​​

CREATE TABLE tb_name(... ) ENGINE=InnoDB;ALTER TABLE tb_name ENGINE=InnoDB;
1.2 MySQL 中的系统数据​​​​​​​
mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.00 sec)
MariaDB [(none)]> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema |+--------------------+3 rows in set (0.000 sec)
mysql 数据库

类似于Sql Server中的master库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

information_schema 数据库

MySQL 5.0 之后产生的,一个虚拟数据库,物理上并不存在information_schema数据库类似于"数据字典",提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)。

performance_schema 数据库

MySQL 5.5 开始新增的数据库,主要用于收集数据库服务器性能参数,库里表的存储引擎均为PERFORMANCE_SCHEMA,用户不能创建存储引擎为 PERFORMANCE_SCHEMA 的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CXL ALMP(ARB/MUX Link Management Packet)理解

前言: ALMP(ARB/MUX Link Management Packet) 是CXL协议中由ARB/MUX层生成和处理的专用管理报文,用于协调链路电源状态切换(如L0s/L1)和虚拟链路状态机(vLSM)同步。以下是其核心特性…

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址: 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…

计算机网络(3)TCP格式/连接

1、TCP三大特点:面向连接、可靠、基于字节流 2、如何唯一确定一个TCP连接?TCP四元组:源地址、源端口、目的地址、目的端口 源地址和目标地址的字段(32 位)是在 IP 头部中,作用是通过 IP 协议发送报文给对方主机源端口和目标端口…

vscode远程报错:Remote host key has changed,...

重装了Ubuntu系统之后,由20.04改为22.04,再用vscode远程,就出现了以上报错。 亲测有效的办法 gedit ~/.ssh/known_hosts 打开这个配置文件 删掉与之匹配的那一行,不知道删哪一行的话,就打开第一行这个 /.ssh/confi…

无符号整数和带符号整数的相互转换

无符号字符数x转换为带符号字符数时,当时,转换后仍然为x;当时,转换后变为。 带符号字符数y转换为无符号字符数时,当时,转换后变为;当时,转换后仍然为y。 无符号整数和带符号整数的…

浏览器报错:无法访问此网站 无法找到xxx.xxx.net的DNS地址。正在诊断该问题。尝试运行Windows网络诊断。DNS_PROBE_STARTED

🤟致敬读者 🟩感谢阅读🟦希望我的文章能帮到您🟪如有兴趣可点关注了解更多内容 📘博主信息 点击标题👆有惊喜 📃文章前言 🔷文章均为学习和工作中整理的笔记,分享记录…

2025-02-18 学习记录--C/C++-PTA 7-25 念数字

一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ /*** 输入一个整数&#xff0c;输出每个数字对应的拼音。当整数为负数时&#xff0c;先输出fu字。*/#include <stdio.h>// 输出 正数 中 各位数 对应的 拼音 void getLetter(int num) {// 10个数字&#x…

VirtualBox 中使用 桥接网卡 并设置 MAC 地址

在 VirtualBox 中使用 桥接网卡 并设置 MAC 地址&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1&#xff1a;设置桥接网卡 打开 VirtualBox&#xff0c;选择你的虚拟机&#xff0c;点击 “设置” (Settings)。进入 “网络” (Network) 选项卡。在 “适配器 1” (Adapt…

Fiddler笔记

文章目录 一、与F12对比二、核心作用三、原理四、配置1.Rules:2.配置证书抓取https包3.设置过滤器4、抓取App包 五、模拟弱网测试六、调试1.线上调试2.断点调试 七、理论1.四要素2.如何定位前后端bug 注 一、与F12对比 相同点&#xff1a; 都可以对http和https请求进行抓包分析…

【数据结构初阶第十节】队列(详解+附源码)

好久不见。。。别不开心了&#xff0c;听听喜欢的歌吧 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。云边有个稻草人-CSDN博客 目录 一、概念和结构 二、队列的实现 Queue.h Queue.c test.c Relaxing Time&#xff01; ————————————《有没…

idea无法联网,离线安装插件

插件地址&#xff1a;https://plugins.jetbrains.com/ JetBrains Marketplace 如果无法进入&#xff0c;可以试试 配置hosts 3.163.125.103 plugins.jetbrains.com ip 变了&#xff0c;可以查询个最新的&#xff1a; https://tool.chinaz.com/speedtest/plugins.jetbrai…

二十多年前的苹果电源Power Mac G4 Mdd 电源接口

在1999年&#xff0c;苹果推出了最初的Power Mac G4电脑。第一代Power Mac G4有与G3系列相似的外壳和两种主板设置&#xff0c;分别使用PCI和AGP显示总线。第二代电脑被昵称为快银或水银机&#xff0c;来自2001年的它们有更高速的PowerPC 7450系列芯片&#xff0c;增强了L2缓存…

qt:按钮的常见操作(简单方向键项目)

1.圆形按钮 首先&#xff0c;设置圆形按钮&#xff0c;首先要将setGeometry(x位置&#xff0c;y位置&#xff0c;长&#xff0c;宽)中的长和宽设置为相等&#xff0c;再使用一下模板 q2->setStyleSheet("QPushButton {"" background-color: black;"…

SAP-ABAP:外部断点设置详解

在 SAP 中打外部断点&#xff08;External Breakpoint&#xff09;是调试 ABAP 程序的一种常用方法&#xff0c;尤其是在调试标准程序、增强或用户出口时。外部断点允许开发人员在特定用户或特定会话中触发断点&#xff0c;而不会影响其他用户。以下是使用外部断点时需要注意的…

springboot399-中文社区交流平台(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…

(9/100)每日小游戏平台系列

项目地址位于&#xff1a;小游戏导航 新增一个跳跃小方块&#xff01; 游戏简介 跳跃小方块&#xff08;Jumping Square&#xff09;是一款轻松有趣的休闲小游戏&#xff0c;考验玩家的反应速度和操作技巧。玩家需要控制一个蓝色小方块&#xff0c;通过点击屏幕或按下空格键进…

React实现自动滚动表格

在 React 中实现一个自动滚动的表格&#xff0c;可以通过 CSS 动画和 JavaScript 定时器来实现。以下是一个完整的示例代码&#xff0c;包含示例数据和自动滚动功能。 实现思路&#xff1a; ** 自动滚动&#xff1a;** 使用 setInterval 实现表格的自动滚动。 手动滚动&…

数字滤波器的设计实现及应用(论文+仿真)

3.1系统总体设计 对于本次毕业设计的课题基于DSP的IIR数字滤波器来说&#xff0c;在此选用了TI公司的DSP芯片TMS320F5402芯片来作为数字滤波器的主控制器&#xff0c;另外再采用高速AD模拟到数字转换芯片来进行输入信号的采样&#xff0c;以此将采集到的信号输出给主控制器进行…

Blackbox.AI:高效智能的生产力工具新选择

前言 在当今数字化时代&#xff0c;一款高效、智能且功能全面的工具对于开发者、设计师以及全栈工程师来说至关重要。Blackbox.AI凭借其独特的产品特点&#xff0c;在众多生产力工具中脱颖而出&#xff0c;成为了我近期测评的焦点。以下是我对Blackbox.AI的详细测评&#xff0…

Ollama DeepSeek + AnythingLLM 实现本地私有AI知识库

Ollama DeepSeek AnythingLLM 实现本地私有AI知识库 本地部署DeepSeek-r1下载安装AnythingLLMAnythingLLM 配置LLM首选项Embedder首选项向量数据库工作区其他配置 AnythingLLM Workspace使用上传知识词嵌入知识检索 本文主要介绍了如何使用AnythingLLM结合Ollama部署的DeepSee…