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

Mysql进阶

目录

一.Mysql架构

1.连接层

2.服务层

3.引擎层

4.物理文件存储层

二.Mysql引擎

1.InnoDB

2.MyISAM

三.索引

1.什么是索引

2.为什么要有索引

3.索引的原理

4.索引优势

5.索引劣势

6.索引分类

主键索引

唯一索引

单值索引

组合索引(复合索引)

最左前缀原则

前缀索引

全文索引

7.索引创建原则

哪些情况下的列可以创建索引?

哪些情况下的列不要创建索引?

8.索引数据结构

9.聚簇索引和非聚簇索引

10.回表查询

11.索引下推

四.数据库事务

1.什么是事务?

2.事务的特征(4个)

3.隔离级别

4.事务实现原理

五.锁机制

六.Sql优化


一.Mysql架构

这两个词汇得分清楚,单词很相近,认证和授权意义不一样。

authentication认证 身份认证 账号密码验证-->token

authorisation授权 -->分配权限菜单

1.连接层

在mysql服务中,负责客户端连接,进行身份认证,授权。

2.服务层

在服务层进行sql分析,优化,各种逻辑的处理等.

3.引擎层

引擎层是实际负责数据存储提取操作. mysql提供了不同的引擎(处理方式),可以根据需要进行选择。

4.物理文件存储层

实际的文件存储, 包括存储数据的文件,还有各种日志文件。

二.Mysql引擎

引擎就是负责实现数据存储和提取的一种实现方式,不同的引擎数据存储和提取的方式不同。

mysq提供多种引擎。

1.InnoDB

    是MySQL中默认的引擎。

    支持事务(安全可靠),支持行级锁(锁的粒度小,并发量高),支持外键约束,支持全文索引,支持数据缓存,提高查询的效率,不存储总行数( select count(*) from table 统计总行数 逐行统计)。

2.MyISAM

myisam不支持事务,不支持外键,不支持行级锁,支持表锁(并发量低),适合写多查询少的场景,支持全文索引,存储表的行数。

三.索引

1.什么是索引

    索引是一种有序的数据结构(B+树),可以帮助更快地查询数据。

    如果数据库中的存储量特别大的话,逐行查询效率就很低。

    索引类似于书的目录,可以帮助我们快速的定位到具体的页数.

2.为什么要有索引

        没有索引的话,数据库中查询一条数据就是逐行查询,效率就很低,所以就存在了索引这个概念,使得查询效率大幅提高。

3.索引的原理

 索引的目的在于提高查询效率,与我们查阅图书所用的目录是一个道理:先定位到章,然后定位到该章下的一个小节,然后找到页数。相似的例子还有:查字典,查火车车次,飞机航班等.

    本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。

    索引类似于书的目录,在一本书前面加上目录,查找内容时不必逐页翻阅就能够快速地找到所需的内容。借助索引,执行查询时不必扫描整个表就能够快速地找到所需要的数据。

4.索引优势

    可以快速定位到数据,提高查询效率,减少了硬盘的IO成本。

    同时所以就已经排好序了,也降低了排序的成本,减少了CPU的消耗。

5.索引劣势

        索引虽然好,但是也不能滥用,创建索引也是需要空间的,当数据发生改变时(新增,删除),那么索引信息也要改变。

6.索引分类

如何在表中加索引

主键索引

把某个列设置为主键后,自动创建主键索引,

-- 创建表时添加注解索引
CREATE TABLE test(id INT  PRIMARY KEY
)
-- 修改表结构,添加主键
ALTER TABLE test ADD PRIMARY KEY test(id)
-- 删除主键
ALTER TABLE test DROP PRIMARY KEY ;

唯一索引

CREATE UNIQUE INDEX 索引名 ON 表名(列名);DROP INDEX 索引名 ON test;

单值索引

一般的列多数添加的都是单值索引,用的最多的.

CREATE INDEX 索引名 ON 表名(列名);DROP INDEX 索引名 ON 表名;

组合索引(复合索引)

一个索引中包含多个列,降低索引开销(推荐)

CREATE INDEX 索引名 ON 表名(列 1,列 2...);DROP INDEX 索引名 ON 表名;
最左前缀原则

在使用组合索引时,需要满足组合索引的最左前缀原则。

例如:表中有 a,b,c 3 列,为 a,b 两列创建组合索引,那么在使用时需要满足最左侧索引原则.在使用组合索引的列作为条件时,必须要出现最左侧列为条件,否则组合索引不生效.

CREATE INDEX test_a_b_index ON test(a,b);EXPLAIN SELECT * FROM test WHERE a='1' AND b='1'  索引生效
EXPLAIN SELECT * FROM test WHERE a='1' AND c='1'  索引生效
EXPLAIN SELECT * FROM test WHERE b='1' AND c='1'  没有使用最左列,索引失效

也就是说a,b两列已经是组合索引,左侧的列是a列,所以要想使用组合索引,条件中就必须存在a列。

前缀索引

有的列中的内容比较长(新闻摘要,内容),如果给该列建立索引,对索引开销就很大,

给指定长度的区间内容建立索引。

create index 索引名 on 表名(列名(长度))

全文索引

需要模糊查询时,一般索引无效,这时候就可以使用全文索引了。

解决了使用模糊查询索引失效的问题。

CREATE FULLTEXT INDEX 索引名 ON test(列) WITH PARSER ngram;
SELECT * FROM 表名 WHERE MATCH(列) AGAINST('搜索词')
EXPLAIN SELECT * FROM 表名 WHERE MATCH(列) AGAINST('搜索词')

7.索引创建原则

哪些情况下的列可以创建索引?

    ①主键自动建立唯一索引

    ②作为查询条件的列

    ③尽量使用联合索引(几个列添加一个索引),减少单列索引

    ④针对于数据量较大,且查询比较频繁的表建立索引。

    ⑤针对于用来排序,分组的列创建索引会提高效率。

哪些情况下的列不要创建索引?

    ①表记录太少

    ②经常增删改的表,发生增删改操作时,mysql不仅要保存数据,还要保存索引文件。

    ③where条件里面用不到的字段

    ④重复出现很多的数据,例如性别.

8.索引数据结构

    B+树

首先B+树是有序的,而且一个节点可以存储多个数据,非叶子节点只存储索引数据。

所以每个节点可以存储更多的索引数据。

9.聚簇索引和非聚簇索引

聚簇索引就是能通过这个索引找到完整的数据的索引。eg:主键id

    mysql中innodb引擎中的主键索引就是聚簇索引。

    因为数据和索引都在一个文件中存储,主键索引是一级索引,直接与数据绑定。

    还有像name等其他索引是属于二级索引,如果通过name进行查询学生信息,先在name二级索引树上查找,找到了然后再通过name对应的主键去主键索引树上找到数据,那么这些二级索引属于非聚簇索引.

非聚簇索引不能通过索引找到完整的数据,一般只能找到聚簇索引,并通过回表查询再找到完整的数据。

    innodb中的二级所以属于非聚簇索引。

    myisam中索引和数据分别存储在不同的文件中,所以是非聚簇的。

10.回表查询

回表查询就是查询时,一次没有查到我们需要的数据,而是需要再次进行查询。

例如学生信息有id(主键),学号(唯一索引 二级索引),姓名(没有加任何索引),

如果我们通过主键查询学生所有信息,那么是直接可以找到数据的,不需要二次回表查询。

如果我们通过学号查询学生所有信息,先在学号索引树上找到学号,以及主键,然后再二次上主键索引树上查找,才能找到数据,就是发生了两次查询,称为回表查询了.

如果我们通过学号只查询学号,可以直接在学号索引树上找到数据,不会二次回表.

11.索引下推

索引下推(Index Condition Pushdown,简称 ICP)是Mysql中的一项优化技术,尽量在查询时,减少回表查询的次数。

也就是在查询之前,先通过条件中的索引进行初筛先在索引树上面进行条件筛选)。

注意:索引下推只存在于查询条件中有索引的情况。

 

四.数据库事务

1.什么是事务?

数据库事务就是对一次数据库操作过程的管理,保证一次与数据库交互过程中执行的多条sql要么全部都成功执行,要么全部都不执行,保证原子性。

    eg:银行转账问题,购物车下订单。

2.事务的特征(4个)

原子性:保证一次操作中多条sql在没有问题时,提交事务,多条sql都执行,一旦有问题,事务回滚,回滚到事务开始前的状态。

隔离性:数据库为了提高读写的并发性,提供了四种隔离级别:读 未提交,读 已提交,可重复读,串行化。

持久性:事务处理结束后,对数据的修改就是永久的,即便宕机也不会丢失。

一致性:是事务的终极目标, 以上三点都是为了保证一致性,当多个事务同时对一条数据多次操作时,最终结果与我们预期结一致.

3.隔离级别

a.读 未提交:A事务可以读到B事务中还没提交的数据,并发访问量是最高的。

                       产生问题:脏读,不可重复读,幻读。

    脏读:读到的是垃圾数据,A查询到了B事务还没提交的数据,此时一旦B事务撤销回滚了,那么数据就是无效的。

b.读 已提交:A事务只能读到B事务已提交的数据。

                        解决了脏读的问题,但是还存在不可重复读,幻读的问题。

    不可重复读问题:A事务在同一个事务当中,读取同一个内容两次,如果读第二次的时候数据已经修改提交,那么读到的数据就是修改后的。

    eg:A事务第一次读id=1,拿到的结果是10,继续还在这次事务中,又读了一次id=1,结果读到是20,两次结果不同,这就是不可重复读问题。

c.可重复 读:A事务在同一个事务中,读取相同的数据两次,两次读到的结果是一致的,即使期间其他的事务对这个数据进行了修改提交,同一个事务读到的数据仍然是相同的。

    解决了不可重复的的问题,一般的查询也解决了幻读的问题。

    在查询语句的后面,如果添加了for update 这样的查询语句,拥有了与新增,修改,删除同等的权利,还是会出现幻读的问题。

    幻读问题:同一个事务中,读取了两次,而两次读到数量不一致。

d.串行化:和加锁是一样的,不管是查询也好,还是新增,修改删除,一次只能允许一个事务进行操作,并发访问量最低。

    两个事务都是读,不互斥

    读写,写写都是互斥的。

保证数据安全可靠,但是效率也是最低的。

4.事务实现原理

a.持久性实现原理:在事务提交后,先把数据写到redo log日志文件当中,再向库中去持久化,一旦期间断电宕机,那么服务恢复之后,会将redo log文件中的数据再次写入到库中。

b.原子性实现原理:当执行insert操作时,在undo log日志文件中存储一个相反的delete操作,当事务回滚撤销时,执行相反的操作。

c.隔离性实现原理

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

    实现不同的事务在写-读操作,读-写操作时,可以同时进行,提高并发访问的能力,每次事务在对数据操作,都会在表中的隐式字段中记录当前操作者的id和上一个记录的回滚指针,从而形成一个版本链。

    读视图(readView),从版本链上进行的一个快照。

    读-已提交:称为当前读,每次读取时,都会获得一个最新的快照,即使是在同一个事务中的两次读取,都是读到的是最新的内容。

    可重复读:称为快照读,在同一个事务当中,第一次查询时生成一个版本快照,在下一次读取时还是从第一次生成的这个快照中读取,这样就保证了可重复读。

d.一致性:由其他三个特征来保障。

五.锁机制

锁机制保证了进行数据操作时,保证写操作安全可靠。

按照锁的粒度分:

全局锁:对数据库备份时,锁住整个库。

FLUSH TABLES WITH READ LOCKmysqldump --single-TRANSACTION -uroot -proot test> E:/文件名.sqlUNLOCK TABLES;

表级锁:表级锁,在操作时会锁住整张表,加锁开销小,但是并发量低。

                muisam引擎只支持表锁,适合读多写少的场景。

行级锁:航机送就是只锁住操作那一行的数据。

                innodb引擎就支持行级锁。

    间隙锁:间隙锁可以说是行级锁的一个子锁。

                    对与范围操作的 id>1 and id<10 的区间范围进行加锁。

按照锁的行为分:

排他锁:(写锁)新增,修改,删除操作时,默认加的的就是排他锁,锁住操作的那行数据。

                查询语句如果执行时,需要添加排他锁,需要在查询语句末尾添加 for update

共享锁:(读锁)用于给查询语句添加的,如果事务1给行1添加了共享锁,那么其他事务就只能给行1添加共享锁。

                其他事务不能给行1添加共享锁。

六.Sql优化

写sql语句的一些注意事项:

物理删除(真删):delete操作

逻辑删除(假删):update操作 表中会有一个列,表示删除状态 0-未删除 1-已删除

1.查询时,只查询需要的列

    尽量不使用 select *

2.能使用整数的列,不要使用字符

    例如mysal主键 使用int 自增

            性别,可以使用0/1表示

            还有各种状态等

3.varchar():变长字符串,最大上限

    char():定长字符串

    char一般存储长度固定的内容,varchar用于存储长度不固定的内容。

4.清空表数据

truncate table 比 delete 速度快,且使用的系统和事务日志资源少.

delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

truncate table 通过释放存储表数据所用的**数据页**来删除数据.

5.建立索引

where order by , group by涉及的列添加索引,提高效率,避免全表扫描,同时注意创建索引的规则。

6.避免索引失效

模糊查询,在条件上使用函数,in,not in,or 这些语句导致索引失效

7.order by 写法,先条件筛选,在分组。切勿先分组,再条件筛选。

8.减少表关联查询的数量,阿里建议最多三张表,索引也不宜过多。

9.避免深度分页的问题

    分页是为了减少每次查询过多的数据。

反例
select id,name from account limit 100000,10;
正例
select id,name FROM account where id > 100000 order by id limit 10; 先条件过滤,然后再取值

10.使用explain关键字查看sql执行计划

    使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的 SQL 语句的。分析你的查询语句或是表结构的性能瓶颈。查看如何执行这条sql的,使用到了什么索引,引擎.....等。

explain select * from test where a = 10

possible_keys : 查询中可以使用的索引

key: 本次查询实际使用到的索引 (查看索引是否有效)

相关文章:

Mysql进阶

目录 一.Mysql架构 1.连接层 2.服务层 3.引擎层 4.物理文件存储层 二.Mysql引擎 1.InnoDB 2.MyISAM 三.索引 1.什么是索引 2.为什么要有索引 3.索引的原理 4.索引优势 5.索引劣势 6.索引分类 主键索引 唯一索引 单值索引 组合索引&#xff08;复合索引&#…...

探秘JVM内部

在我们编写Java代码&#xff0c;点击运行后&#xff0c;会发生什么事呢&#xff1f; 首先&#xff0c;Java源代码会经过Java编译器将其编译成字节码&#xff0c;放在.class文件中 然后这些字节码文件就会被加载到jvm中&#xff0c;然后jvm会读取这些文件&#xff0c;调用相关…...

c语言学习12天

c语言的宏定义&#xff1a;宏定义单纯的文本替换不会检查语法是否合法 #include #pragma 以及开头的#都属于预处理指令 预处理指令&#xff1a;在gcc编译套件中的cpp预处理器对程序进行编译之前所做的一些动作&#xff0c;如#include预处理指令就是在程序编译之前有预处理器…...

公司内网部署离线deepseek本地模型实战

企业内部可能有些数据比较敏感&#xff0c;不能连接互联网。deepseek来提高工作效率&#xff0c;这个时候你可以利用ollama在内网本地部署来实现。 本式样是先在自己电脑上用虚拟机部署好&#xff0c;再用U盘把虚拟机文件复制到内网去。 一、使用VMware新建WIN2022虚拟机 &a…...

rocketmq中的延迟队列使用详解

RocketMQ的延迟队列通过预设的延迟等级实现消息的定时投递&#xff0c;适用于订单超时、定时通知等高并发场景。以下是其核心原理、使用方式及优化策略的详细解析&#xff1a; 一、实现原理 延迟等级机制 RocketMQ默认提供18个固定延迟等级&#xff08;1s、5s、10s、30s、1m、2…...

VB.NET Asp.Net Core模板WebAPI应用-宝塔面板Linux系统通过Docker部署

宝塔面板支持在Linux系统上部署Docker容器吗&#xff1f; 如何在宝塔面板上通过Docker部署VB.NET应用&#xff1f; Docker容器中的VB.NET Asp.Net Core WebAPI应用如何配置&#xff1f; 一,首先,创建一个ASP.NET Core测试项目 1.1 打开VS2019/2022,创建一个.NTE6 Core控制台应…...

4985 蜗牛

4985 蜗牛 ⭐️难度&#xff1a;中等 ⭐️考点&#xff1a;2023、省赛、动态规划 &#x1f4d6; &#x1f4da; import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner sc new Sc…...

springboot多模块工程打包部署运行

1、问题概述? 基于实际项目打包过程,各种配置面面俱到,已配置的可跳过。 本文以打包jar包为模板进行操作,部署方便。 在实际的开发中,项目的模块可能较多,如果都放在一个项目的目录中,势必会造成项目包中的文件冗余,难以管理,这个时候就需要使用多模块管理项目。 …...

吴恩达深度学习复盘(8)神经网络中激活函数的建模

激活函数的建模原理 到目前为止&#xff0c;在隐藏层等一直使用激活函数&#xff0c;最初通过逻辑回归建立新网络&#xff0c;组合多个逻辑回归单元。这表明激活函数在神经网络构建中一直存在&#xff0c;且最初的网络构建方式与逻辑回归相关。实际上&#xff0c;激活函数的种类…...

1-linux的基础知识

一.linux的文件系统结构 windows文件系统 微软windows系统将硬盘上的几个分区&#xff0c;用A: B: C: D:等符号标识。存取文件时一定要清楚放在那个磁盘的那个目录下。 linux文件系统 linux文件系统的组织模式犹如一颗倒置的树&#xff0c;这与windows文件系统有很大的差别…...

docker 常用命令

文章目录 一、帮助启动类命令启动docker停止docker重启docker查看docker状态开机自启查看docker概要信息 二、镜像命令列出本地主机上的镜像搜索镜像拉取镜像查看镜像所占空间删除镜像 三、容器命令新建运行容器交互式启动容器守护进程式启动容器列出当前所有的容器进入容器之后…...

使用docker搭建redis镜像时云服务器无法访问到国外的docker官网时如何解决

下载redis镜像 docker redis:版本号 此时截图中无法访问到国外的docker官网 解决方案&#xff1a; 通过更换镜像源来正常下载redis镜像 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1…...

基于Python的人脸识别校园考勤系统

【Python】基于Python的人脸识别校园考勤系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f31f; 该系统主要分为前端和后端两个部分&#xff0c;前端&#x1f440;负责人脸采集、人…...

微信小程序学习实录11:startLocationUpdateBackground:fail auth deny

startLocationUpdateBackground:fail auth deny 表明小程序在尝试开启后台位置更新时&#xff0c;用户授权被拒绝。以下是可能的原因及解决方法&#xff1a; 原因分析 缺少必要的用户授权&#xff1a; 使用 wx.startLocationUpdateBackground 接口需要用户授予 scope.userLo…...

DAPP实战篇:规划下我们的开发线路

前言 在DApp实战篇&#xff1a;先用前端起个项目一文中我们起了一个前端项目&#xff0c;在后续开发中笔者将带领大家一步步完成这个DAPP&#xff0c;为了方便后续讲解&#xff0c;本篇将完整说明后续我们要进行的开发和思路。 主打前端 实际上一个完整的DAPP是由前端和智能…...

docker配置redis容器时配置文件docker-compose.yml示例

1.配置数据节点&#xff08;主从节点&#xff09; version: 3.7 services:master:image: redis:5.0.9container_name: redis-masterrestart: alwayscommand: redis-server --appendonly yesports:- 6379:6379slave1:image: redis:5.0.9container_name: redis-slave1restart: a…...

清晰易懂的 Jenkins 安装与核心使用教程

Jenkins 是业界领先的开源自动化服务器&#xff0c;用于实现持续集成与持续交付&#xff08;CI/CD&#xff09;。本教程将覆盖 安装部署、核心功能配置、避坑指南&#xff0c;助你快速掌握企业级自动化流水线搭建&#xff01; 一、Jenkins 安装&#xff08;全平台指南&#xff…...

anomalib—2—输入图像大小调整

三个地方 第一&#xff1a;在定义model时&#xff0c;要在pre_processor里面去定义一个前处理&#xff0c;前处理就一个功能&#xff0c;定义图像的大小 pre_processor0 Patchcore.configure_pre_processor( image_size (128, 128)) model Patchcore( backbone"wide_r…...

小型园区组网图

1. 在小型园区中&#xff0c;S5735-L-V2通常部署在网络的接入层&#xff0c;S8700-4通常部署在网络的核心&#xff0c;出口路由器一般选用AR系列路由器。 2. 接入交换机与核心交换机通过Eth-Trunk组网保证可靠性。 3. 每个部门业务划分到一个VLAN中&#xff0c;部门间的业务在C…...

编程哲学——TCP可靠传输

TCP TCP可靠传输 TCP的可靠传输表现在 &#xff08;1&#xff09;建立连接时三次握手&#xff0c;四次挥手 有点像是这样对话&#xff1a; ”我们开始对话吧“ ”收到“ ”好的&#xff0c;我收到你收到了“ &#xff08;2&#xff09;数据传输时ACK应答和超时重传 ”我们去吃…...

2024华为OD机试真题-任务最优调度(C++/Java/Python)-E卷-200分

2024华为OD机试最新E卷题库-(D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 考点 题目解析 代码 c++ java python 题目描述 给定一个正整数数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。请计算执…...

蓝桥杯 2023省B 飞机降落 dfs

传送门 P9241 [蓝桥杯 2023 省 B] 飞机降落 - 洛谷 n<10&#xff0c;考虑dfs&#xff0c;只有当 当前飞机的到达时刻盘旋时间 < 上一个飞机降落的时刻 时&#xff0c;当前飞机才能降落 const int N 1e3 10;int n; struct Node {LL t,d,l; }a[N];bool st[N];bool dfs(in…...

Mybatis--动态SQL

动态SQL是MyBatis的重要特征之一&#xff0c;能够完成不同条件下的SQL拼接&#xff0c;参考文档&#xff1a;动态 SQL_MyBatis中文网 一、<if>标签 该标签主要适用的情况为实现必填字段和非必填字段&#xff1a; 例如下面的例子就是将用户表中的性别设置成了非必填字段…...

计算机视觉中的基于网格的卷绕算法全解析

大家好呀&#xff5e;今天给大家带来一个超级实用且有趣的计算机视觉技巧&#xff1a;基于网格的卷绕算法&#xff08;Grid Warp Algorithm&#xff09;&#xff01;如果你对图像变形、动画制作感兴趣&#xff0c;那一定不要错过这篇文章哦&#xff01;话不多说&#xff0c;直接…...

xv6 文件系统

Buffer Cache buffer Cache 结构体 bcache 存放了 NBUF 个 buf 框&#xff0c;每个框对应 disk 上某一个 block。从初始化函数 binit中可以看出&#xff0c;bcache 是一个循环双向链表。通过双链表组织这些 buf&#xff0c;以近似 LRU 的策略管理&#xff0c;大概如下图。 st…...

Python Cookbook-5.5 根据内嵌的数字将字符串排序

任务 你想将一个字符串列表进行排序&#xff0c;这些字符串都含有数字的子串(比如一系列邮寄地址)。举个例子&#xff0c;“foo2.txt”应该出现在“foo10.txt”之前。然而&#xff0c;Python 默认的字符串比较是基于字母顺序的&#xff0c;所以默认情况下&#xff0c;“foo10.…...

EMC内参二(1-45页)学习【技术进阶】

EMC设计介入产品设计时间越早&#xff0c;成本越低。 微带线和带状线的区别&#xff1a; 微带线是PCB外层的走线&#xff0c;带状线是结余两个完整参考平面&#xff08;电源层和地层&#xff09;之间的走线。 天线效应&#xff1a; PCB上面任何悬空的金属都会积累电荷&…...

Ansible(7)——管理机密

目录 一、Ansible Vault &#xff1a; 二、ansible-vault 命令行工具&#xff1a; 1、创建加密文件&#xff1a; 2、查看加密文件&#xff1a; 3、编辑现有加密文件&#xff1a; 4、加密现有文件&#xff1a; 5、解密现有文件&#xff1a; 6、更改加密文件的密码&#…...

通俗地讲述DDD的设计

通俗地讲述DDD的设计 前言为什么要使用DDDDDD架构分层重构实践关键问题解决方案通过​​领域事件机制​​解耦服务依赖&#xff1a;防止逻辑下沉 领域划分电商场景下的领域划分 结语完结撒花&#xff0c;如有需要收藏的看官&#xff0c;顺便也用发财的小手点点赞哈&#xff0c;…...

【学Rust写CAD】34 精确 Alpha 混合函数(argb.rs补充方法)

源码 #[inline]pub fn over_exact(self, dst: Argb) -> Argb {let a 255 - self.alpha32();let t dst.rb() * a 0x80_00_80;let mut rb (t ((t >> 8) & Argb::MASK)) >> 8;rb & Argb::MASK;rb self.rb();// saturaterb | 0x1000100 - ((rb >&…...

10种电阻综合对比——《器件手册--电阻》

二、电阻 前言 10种电阻对比数据表 电阻类型 原理 特点 应用 贴片电阻 贴片电阻是表面贴装元件&#xff0c;通过将电阻体直接贴在电路板上实现电路连接 体积小、重量轻&#xff0c;适合高密度电路板&#xff1b;精度高、稳定性好&#xff0c;便于自动化生产 广泛应用于…...

SpringCloud入门及创建分布式项目

1、了解微服务 1.1 什么是微服务 微服务是一种架构风格一个应用拆分为一组小型服务每个服务运行在自己的进程内&#xff0c;也就是可独立部署和升级服务之间使用轻量级HTTP交互服务围绕业务功能拆分可以由全自动部署机制独立部署去中心化&#xff0c;服务自治。服务可以使用不同…...

xv6启动过程

entry,S -> start.c -> main.c -> proc.c中的 userinit 函数 -> initcode.S -> init.c entry.S // entry.S# qemu -kernel loads the kernel at 0x80000000# and causes each CPU to jump there.# kernel.ld causes the following code to# be placed at 0x800…...

【秣厉科技】LabVIEW工具包——OpenCV 教程(18):highgui 模块

文章目录 前言highgui 模块总结 前言 需要下载安装OpenCV工具包的朋友&#xff0c;请前往 此处 &#xff1b;系统要求&#xff1a;Windows系统&#xff0c;LabVIEW>2018&#xff0c;兼容32位和64位。 highgui 模块 尽量别用&#xff0c;要不我删了吧&#xff1f; LabVIEW…...

基于OPENCV的图像透视矫正

这段代码的主要功能是对输入的图像进行透视矫正。它会读取一张图像&#xff0c;检测图像中最大的四边形轮廓&#xff0c;然后对该四边形区域进行透视变换&#xff0c;将其矫正为正视图&#xff0c;最后保存矫正后的图像。 模块导入说明 python import cv2 import numpy as n…...

数据结构----------顺序查找,折半查找和分块查找(java实现)

import java.util.Arrays;//顺序查找法 public class Main {public static void main(String[] args) {//查找表int[] arr {4, 3, 5, 1, 2};System.out.print("5在数组中的索引:");System.out.println(SearchSeq(arr, 5));Arrays.sort(arr);System.out.print("…...

整数编码 - 华为OD统一考试(A卷、JavaScript)

题目描述 实现一种整数编码方法&#xff0c;使得待编码的数字越小&#xff0c;编码后所占用的字节数越小。 编码规则如下: 编码时7位一组&#xff0c;每个字节的低7位用于存储待编码数字的补码。字节的最高位表示后续是否还有字节&#xff0c;置1表示后面还有更多的字节&…...

CompletableFuture:整合、超时、完成事件与批量处理

引言 在异步编程实践中&#xff0c;我们不仅需要处理单个任务的执行流程&#xff0c;更需要应对多个异步任务之间的复杂交互。本文将通过实际案例解析以下核心功能&#xff1a; 双任务整合&#xff1a;合并两个独立任务的结果高效超时控制&#xff1a;防止异步操作无限等待完…...

【LeetCode 热题100】45:跳跃游戏 II(详细解析)(Go语言版)

&#x1f680; 力扣 45&#xff1a;跳跃游戏 II&#xff08;全解法详解&#xff09; &#x1f4cc; 题目描述 给你一个非负整数数组 nums&#xff0c;表示你最初位于数组的第一个位置。 数组中的每个元素表示你在该位置可以跳跃的最大长度。 你的目标是使用 最少的跳跃次数 到…...

【C/C++】滑动谜题(leetcode T773)

核心考点&#xff1a;广度优先搜索 (BFS)、哈希表、字符串、状态转移 题目描述&#xff1a; 在一个 2 x 3 的板上&#xff08;board&#xff09;有 5 块砖瓦&#xff0c;用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次 移动 定义为选择 0 与一个相邻的数字&#xff08;上…...

python用x08覆盖上一次输出来模拟控制台等待效果,pycharm运行sys.stdout.write在控制台无打印的解决方法

一个多进程程序&#xff0c;主进程阻塞&#xff0c;子进程不断打印等待效果直到主进程结束&#xff0c;原理是\x08在ascii中表示退格键&#xff0c;理解为打印完后立马删掉打印下一个内容。 import sys, time import multiprocessing DELAY 0.1 DISPLAY [ |, /, -, \\ …...

【嵌入式开发】使用Linux系统调用编程练习

一、进程和线程的概念及基础用法 在Linux系统中&#xff0c;进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统进行任务调度的基本单位&#xff0c;它们既有联系又有区别。 1.1 进程和线程介绍 1.1.1 进程&#xff08;Process&#xff09…...

React框架的Concurrent Mode

以下是关于 Concurrent Mode 的系统梳理: 一、Concurrent Mode 的诞生背景 传统渲染的局限性 同步阻塞:React 15 的 Stack Reconciler 无法中断渲染流程优先级缺失:用户交互与后台任务同等对待资源竞争:网络请求与渲染任务无法智能调度核心设计目标 可中断渲染:允许高优先…...

ER-图,详情和画法

一、E-R图的核心元素 1.实体 表示现实中对象或概念&#xff0c;用矩形表示 示例&#xff1a;用户、老师、学生 2.属性 描述实体的特征&#xff0c;用椭圆表示。 分为主键&#xff08;用户id&#xff09; 和非主键&#xff08;用户昵称&#xff09; 3.关系 表示实体间的…...

深度学习图像分类数据集—十种西红柿病态叶识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;10种西红柿病态叶识别分类&#xff1a;Bacterial_spot&#xff0c;Earl…...

【Flask开发】嘿马文学web完整flask项目第3篇:2.用户认证,2.用户认证【附代码文档】

教程总体简介&#xff1a;2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…...

基于Pyhon的京东笔记本电脑数据可视化分析系统

【Python】基于Pyhon的京东笔记本电脑数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目基于Python语言开发&#xff0c;通过Flask框架与Bootstrap的结合&#xff0c;实…...

『不废话』之Llama 4实测小报

2025年4月5日Llama 4一开源&#xff0c;随后OpenRouter等平台就提供免费调用。对于中文社区来&#xff0c;官方的测评结果其实意义不大&#xff08;原因先按下不表&#xff09;&#xff0c;就看知乎、微博、B站、twitter上的真实感受&#xff0c;最重要的是自己的真实案例测评。…...

llama.cpp 和 vLLM 的详细对比分析

llama.cpp 和 vLLM 的详细对比分析&#xff0c;基于最新技术动态&#xff08;2025年4月&#xff09;整理&#xff1a; 1. 核心定位 维度llama.cppvLLM设计目标轻量化边缘计算&#xff0c;突破硬件限制&#xff08;如手机/树莓派&#xff09;企业级高性能推理&#xff0c;优化G…...

Windows 操作系统使用vscode 配置GTK4

本篇教程,主要介绍在vscode中如何配置使用GTK4,并运行一个简易的入门案例。 一、程序代码 1、demo.cpp #include <gtk/gtk.h>// 定义一个回调函数,用于处理按钮点击事件 static void on_button_clicked(GtkButton *button...