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

第9步---MySQL的索引和存储引擎

第9步---MySQL的索引和存储引擎

 1.索引

1.1分类

索引可以快速的找出具有特定值的行。不用从头开始进行寻找了。

类别

  • hash和b+tree

hash

  • 根据字段值生生成一个hash的值

  • 快速的进行定位到对应的行的值

  • 可能会出现相同的值,找到对应的空间会出现对应的值

b+tree树

  • 基于树的结构

  • 左边的数据都是比较大的

  • 中间的是相似的大小的数据

  • 最右边的是比较大的数据

类型

  • 单列:普通 唯一和主键

  • 组合

  • 全文

  • 空间

1.2索引操作

基本语法

 index 索引名字(要添加索引名称的列) -- 给name列创建索引

创建的方法

三种方式

  • 创建表的时候

  • 直接创建

  • 修改表的方式

创建表的时候进行指定
​
-- ========================索引相关操作=================
​
-- 方式1-创建表的时候直接指定
DROP TABLE IF EXISTS student;
create  table student(sid int primary key,card_id varchar(20),name varchar(20),gender varchar(20),age int,birth date, phone_num varchar(20),score double,index index_name(name) -- 给name列创建索引
);
​

刚刚创建的是普通的normal的索引的类型,创建的数据结构是btree。

之后查询指定索引的时候才是会有效的。而且数据量需要达到一定的规模不然也是不行的,速度变化不是很大的。

-- 直接创建的方式
CREATE INDEX index_gender ON student (gender);-- 修改表结构的方式
​
ALTER TABLE student add index index_age(age);
​

1.3查看索引

-- 1、查看数据库所有索引 
-- select * from mysql.`innodb_index_stats` a where a.`database_name` = '数据库名’; 
select * from mysql.`innodb_index_stats` a where a.`database_name` = 'xx';-- 2、查看表中所有索引 
-- select * from mysql.`innodb_index_stats` a where a.`database_name` = '数据库名' and a.table_name like '%表名%’; 
select * from mysql.`innodb_index_stats` a where a.`database_name` = 'xx' and a.table_name like '%student%';-- 3、查看表中所有索引 
-- show index from table_name; 
show index from student;

最后一个就可以了。前两个是比较详细的数据的信息了。  

1.4删除索引

-- 删除索引
drop INDEX 索引名字 ON 表名;
alter table student drop index index_age; drop INDEX index_gender ON student;

1.5唯一索引

创建表的时候创建唯一索引

直接创建唯一索引

修改表的时候创建唯一索引

-- 方式1-创建表的时候直接指定
create  table student2(sid int primary key,card_id varchar(20),name varchar(20),gender varchar(20),age int,birth date, phone_num varchar(20),score double,unique index_card_id(card_id) -- 给card_id列创建索引
);

-- 方式2-直接创建
-- create unique index 索引名 on 表名(列名) 
create  table student3(sid int primary key,card_id varchar(20),name varchar(20),gender varchar(20),age int,birth date, phone_num varchar(20),score double
);
create unique index index_card_id on student3(card_id);
-- 方式3-修改表结构(添加索引)
-- alter table 表名 add unique [索引名] (列名)
create  table student4(sid int primary key,card_id varchar(20),name varchar(20),gender varchar(20),age int,birth date, phone_num varchar(20),score double
);
alter table student4 add unique index_phone_num(phone_num);

 删除索引

-- 操作-删除索引drop index 索引名 on 表名; alter table 表名 drop index 索引名; 

1.6主键索引

在设置完主键进行创建表的时候会自动进行创建不需要单独进行指定索引。

1.7组合索引

针对的是对多个字段进行索引的设置的情况

-- 创建复合索引
-- 跟顺序是有关的
CREATE INDEX index_phone_number_name on  (phone_num,name);

 删除组合索引

drop index  index_phone_number_name on student  ;

创建一个组合唯一索引

-- 创建唯一索引两列的值不能相同
CREATE UNIQUE INDEX index_phone_number_name on  student(phone_num,name);

当出现下面的第4种的情况的时候是不行的是会出现错误的。

 什么时候可以用到索引呢?

组合索引是有原则的,最多优先的原则,尽量多的才能进行识别的。而且还遵循一个最左原则。

1.8全文索引

相似度的长度。数据量大的时候是比较好的。比全文检索的是快的。

不同的存储引擎对搜索引擎的支持是不同的。

最小搜索长度和最大搜索长度。

show variables like '%ft%';

 可以在my.ini文件夹下进行设置。

1.9全文检索的操作

create table t_article (id int primary key auto_increment ,title varchar(255) ,content varchar(1000) ,writing_date date -- , -- fulltext (content) -- 创建全文检索
);insert into t_article values(null,"Yesterday Once More","When I was young I listen to the radio",'2021-10-01');
insert into t_article values(null,"Right Here Waiting","Oceans apart, day after day,and I slowly go insane",'2021-10-02'); 
insert into t_article values(null,"My Heart Will Go On","every night in my dreams,i see you, i feel you",'2021-10-03');
insert into t_article values(null,"Everything I Do","eLook into my eyes,You will see what you mean to me",'2021-10-04');
insert into t_article values(null,"Called To Say I Love You","say love you no new year's day, to celebrate",'2021-10-05');
insert into t_article values(null,"Nothing's Gonna Change My Love For You","if i had to live my life without you near me",'2021-10-06');
insert into t_article values(null,"Everybody","We're gonna bring the flavor show U how.",'2021-10-07');

创建表的时候时候创建全文索引,不推荐

  -- fulltext (content) -- 创建全文检索-- 修改表结构添加全文索引
alter table t_article add fulltext index_content(content)-- 添加全文索引 推荐
create fulltext index index_content on t_article(content);

-- 使用全文索引
-- 跟最小的匹配的长度是相关的
SELECT * FROM t_article WHERE MATCH(content) against('you');
SELECT * FROM t_article WHERE content like '%you%';

1.10空间索引

不常用

create table shop_info (id  int  primary key auto_increment comment 'id',shop_name varchar(64) not null comment '门店名称',geom_point geometry not null comment '经纬度',spatial key geom_index(geom_point)
);

1.11hash算法

1.12二叉树

1.13B-Tree树和B+Tree树

MyISAM引擎采用的就是b+tree树作为索引结构的。

InnerDB和myisam是不一样的。

1.14索引的特点

1.15索引使用的原则

  • 经常变动的不建议

  • 数据量小的不建议

  • 重复数据多的不建议

  • 首先对where和order by的加上索引

2.存储引擎

2.1介绍

数据库底层的如那件组织。数据库管理系统使用数据引擎进行创建查询和更新以积极删除数据。

-- 查看引擎
SHOW ENGINES;

只有innnerdb是支持存储引擎的操作其他的是不支持引擎的操作的。

存储引擎的简单比较

2.2基本操作


-- 查看引擎
SHOW ENGINES;-- 查看当前默认的存储引擎
SHOW VARIABLES like '%storage_engine%'; 

-- 查看表的存储引擎
SHOW create TABLE student;

指定创建表时候的存储的引擎

CREATE TABLE `student7` (`sid` int(11) NOT NULL,`card_id` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,`name` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,`gender` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,`age` int(11) DEFAULT NULL,`birth` date DEFAULT NULL,`phone_num` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,`score` double DEFAULT NULL,PRIMARY KEY (`sid`)
) ENGINE=MyISAM -- 查看创建表时候的存储引擎
SHOW CREATE TABLE student7;

修改表的存储引擎

-- 修改表的存储引擎
ALTER TABLE student7  engine = InnoDB;
SHOW CREATE TABLE student7;

修改默认的数据库默认的存储引擎

  • 关闭服务

  • 修改myi.ini文件

  • 找到Idefault-storage-engine=INNODB 修改成自己默认的引擎

  • 重新启动服务

2.3事务操作

只有innoDB的存储引擎是支持事务的操作的。

转账的时候必须需要支持事务的操作的,需要保证转出的钱是正确的。

-- 创建账户表
create table account(id int primary key, -- 账户idname varchar(20), -- 账户名money double -- 金额
);--  插入数据
insert into account values(1,'zhangsan',1000);
insert into account values(2,'lisi',1000);

事务操作就是把几条sql绑定在一起然后采用统一的操作,将失败的进行回滚。

  • 开启事务:begin 或者是START TRANSACTION;

  • 提交事务:commit

  • 回滚事务:rollback

-- 设置的事务的时候需要先设置事务 不能自动提交
-- 需要为一个整体设置事务的操作不能单独的进行设置事务的操作
-- 设置事务操作-- 设置事务手动提交
SELECT @@autocommit;
-- 设置手动提交事务
set autocommit=0;
-- 设置事务自动提交
set autocommit=1;-- 转账的操作
BEGIN;
UPDATE  account set money=money-200 WHERE name ='zhangsan';
UPDATE  account set money=money+200 WHERE name ='lisi';
COMMIT;

-- 先执行下面的这几句sql
BEGIN;
UPDATE  account set money=money-200 WHERE name ='zhangsan';
UPDATE  account set money=money+200 WHERE name ='lisi';

此时进行下面的操作

  • 此时查询的数据是内存中的数据是没有进行持久化的数据

  • 但是navicat中得数据是持久化的数据

SELECT * FROM account;

此时内存中的数据是发生变化的。

 此时数据没有从内存中持久化到数据库中的,此时进行提交的话操作才能进行生效。提交了之后就不能进行事务的回滚的操作了。需要在没有提交的时候进行回滚的操作。

rollback;

一般的事务的操作时通过异常才进行事务的回滚的操作。正常的时候是不需要进行事务的操作。

事务的特性

  • 原子性:要么全做要么全不做

  • 一致性:一个正确的状态转换成另外一个正确的状态

  • 隔离性:事务之间是相互之间不能干扰的

  • 持久性:事务提交之后。事务的操作时永久的不能进行更改的。

2.4隔离性

isolate:事务和事务之间要 隔离起来,比如多个事务操作同一个表。

  • 读未提交:A事务会读取到B事务没有提交的数据

  • 读提交:A事务不会读取B事务没有提交的数据,但是不能重复读

  • 可重复读:有幻读

  • 序列化:互斥的,效率低下,数据库表被锁定了

 

下面是隔离级别的演示

-- 查看隔离级别 
show variables like '%isolation%';

 此时对下面表中的数据进行相关的操作。

-- 执行下面的操作
set autocommit=0;-- 设置隔离级别
/*
set session transaction isolation level 级别字符串
级别字符串:read uncommitted、read committed、repeatable read、serializable
	
*/
-- 设置read uncommitted
set session transaction isolation level read uncommitted;
-- 这种隔离级别会引起脏读,A事务读取到B事务没有提交的数据-- 设置read committed
set session transaction isolation level read committed;
-- 这种隔离级别会引起不可重复读,A事务在没有提交事务之前,可看到数据不一致-- 设置repeatable read (MySQ默认的)
set session transaction isolation level repeatable read;
-- 这种隔离级别会引起幻读,A事务在提交之前和提交之后看到的数据不一致-- 设置serializable
set session transaction isolation level serializable;
-- 这种隔离级别比较安全,但是效率低,A事务操作表时,表会被锁起,B事务不能操作。

设置读未提交

 

上面两个数据目前是正常的

分别执行

-- 设置隔离级别
set session transaction isolation level read uncommitted;

第一个开启事务

begin;

第二个开始事务

-- 开启事务
begin;

第一个zhangsan转出去500

UPDATE  account set money=money-500 WHERE name ='zhangsan';
​
​

第二个执行

SELECT * FROM account WHERE name ='zhangsan';
​

当第一个回滚了事务

rollback;

第二个再去执行


SELECT * FROM account WHERE name ='zhangsan';

此时查询到的数据就是1000

 出现了脏读。

设置读已提交

两个都进行执行

-- 设置事务隔离级别
set session transaction isolation level read committed;set autocommit=0;

第一个和第二个执行

BEGIN;

第一个执行

UPDATE  account set money=money-500 WHERE name ='zhangsan';

第二个执行

SELECT * FROM account WHERE name ='zhangsan';

 第一个执行

COMMIT;

第二个执行

SELECT * FROM account WHERE name ='zhangsan';

 

可重复读

A和B都执行下面得操作

set session transaction isolation level repeatable read;
-- 设置事务手动提交
SELECT @@autocommit;
-- 设置手动提交事务
set autocommit=0;
begin;

B执行下面得操作

SELECT * FROM account WHERE name ='zhangsan';

A执行下面得操作

UPDATE  account set money=money-500 WHERE name ='zhangsan';

B执行下面得操作

SELECT * FROM account WHERE name ='zhangsan';

此时查询得数据还是正常得。

 A提交事务

COMMIT;

B执行下面得操作

SELECT * FROM account WHERE name ='zhangsan';

此时查询得数据还是正常的。

 

此时读取的数据还是原先的数据。

B执行下面的操作

COMMIT;
SELECT * FROM account WHERE name ='zhangsan';

 B在事务提交前和提交后读取的数据是不同的。

序列化

B设置了事务执行了操作A被卡死了,只有B提交了事务A才能执行对应的操作

 

2.5锁机制

保障数据被并发进行访问的时候可以保证数据的正确性。

分类

  • 表锁:操作时。会锁定整个表。

  • 行锁:操作时,会锁定当前的行。

下面是存储引擎对锁的执行的类型

 下面是对表级别锁的介绍

 表锁是查询位置,行锁针对的是并发的操作。

2.6MyISAM

读锁 MyISAM在执行查询之前会加一个读锁。一般的情况下 不需要用户指定对应的锁。

lock table 表名 read;
select * from 表名;
-- 可以正确的进行读取。但是不能进行修改。

此时另外一个客户端

  • 可以加读锁

  • 但是不能加入写锁。

加了读锁的就不能读取别的表的数据了。和在银行中进行取钱是差不多的。

unlock tables;

此时就能操作别的操作了。

读锁是共享锁。都可以加,不能读取别的表中的数据,不能修改当前表中的数据。

写锁

A加了写锁,B不能读取也不能读取也不能加写锁的。

也就是A加了B不能读不能写的。

只能加一个写锁。

2.7InnoDB行锁

表级锁和MyISAM是相似的。

行锁。

行锁的模式

 

 

相关文章:

第9步---MySQL的索引和存储引擎

第9步---MySQL的索引和存储引擎 1.索引 1.1分类 索引可以快速的找出具有特定值的行。不用从头开始进行寻找了。 类别 hash和btree hash 根据字段值生生成一个hash的值 快速的进行定位到对应的行的值 可能会出现相同的值,找到对应的空间会出现对应的值 btree树…...

Numpy入门(3)—线性代数

线性代数 线性代数(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分,NumPy中实现了线性代数中常用的各种操作,并形成了numpy.linalg线性代数相关的模块。本节主要介绍如下函数: diag&am…...

php的openssl_encrypt是不是自动做了PKCS5Padding?

在PHP中,openssl_encrypt函数默认使用的是PKCS7填充(不是PKCS5填充)。PKCS7填充实际上是PKCS5填充的扩展,用于对不同块大小的数据进行填充。 当你使用openssl_encrypt函数进行加密时,如果你没有显式指定填充模式和填充…...

在本地创建repository及上传至github

文章目录 本地管理设定git的用户名与邮箱初始化添加修改提交修改设定分支问题一:error: insufficient permission for adding an object... 数据同步创建SSH keys创建并关联远程仓库上传改动至github问题二:Failed to connect to github.com port 443: Connection timed out问题…...

情人节特别定制:多种语言编写动态爱心网页(附完整代码)

写在前面案例1:HTML Three.js库案例2:HTML CSS JavaScript案例3:Python环境 Flask框架结语 写在前面 随着七夕节的临近,许多人都在寻找独特而令人难忘的方式来表达爱意。在这个数字时代,结合创意和技术&#xff0…...

Docker mysql主从同步安装

1. 构建master实例 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -d mysql:5.7 2. 构建master配置…...

docker update 命令

docker update 更新一个或多个容器的配置。官方文档 用法 $ docker update [OPTIONS] CONTAINER [CONTAINER...]请参阅选项部分OPTIONS,了解此命令可用的概述。 描述 该docker update命令动态更新容器配置。您可以使用此命令来防止容器消耗 Docker 主机的过多资…...

阻塞和挂起的区别和联系

阻塞和挂起是进程两种不同的状态,其描述如下: 阻塞:正在执行的进程由于发生某时间(如I/O请求、申请缓冲区失败等)暂时无法继续执行。此时引起进程调度,OS把处理机分配给另一个就绪进程,而让受阻…...

水力发电厂测量装置配置选型及厂用电管理系统

《水力发电厂测量装置配置设计规范》对水电厂的测量装置配置做了详细要求和指导。测量装置是水力发电厂运行监测的重要环节,水电厂的测量主要分为电气量测量和非电量测量。电气测量指使用电的方式对电气实时参数进行测量,包括电流、电压、频率、功率因数…...

【RabbitMQ】RabbitMQ整合SpringBoot案例

文章目录 1、前情提要【RabbitMQ】2、RabbitMQ-SpringBoot案例 -fanout模式2.1 实现架构总览2.2 具体实现2.2.1生产者2.2.1消费者 1、前情提要【RabbitMQ】 【RabbitMQ】消息队列-RabbitMQ篇章 RabbitMQ实现流程 2、RabbitMQ-SpringBoot案例 -fanout模式 2.1 实现架构总览…...

如何在window下cmd窗口执行linux指令?

1.Git:https://git-scm.com/downloads(官网地址) 2.根据自己的实际路径,添加两个环境变量 3.重启电脑...

c++基础系列:字符串、向量和数组

字符串、向量和数组 命名空间的using声明 目前用到的库函数基本上都属于命名空间std;通过using声明(using declaration)实现更简单的途径使用到命名空间中的成员。 标准库类型string string表示可变长的字符序列,必须先包含st…...

docker 05(dockerfile)

一、docker镜像原理 镜像可以复用 二、容器转镜像 将容器保存为镜像[参考] docker commit -a -m 现有容器ID 保存后的名称:版本号 -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :…...

PostMan 测试项目是否支持跨域

使用PostMan可以方便快速的进行跨域测试。 只需要在请求头中手动添加一个Origin的标头,声明需要跨域跨到的域(IP:端口)就行,其余参数PostMan会自动生成。添加此标头后,请求会被做为一条跨域的请求来进行处…...

jsp 协同过滤 图书管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 协同过滤 图书管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库为My…...

商城-学习整理-高级-商城业务-商品上架es(十)

目录 一、商品上架1、sku在ES中存储模型分析2、nested数据类型场景3、构造基本数据(商品上架) 二、首页1、项目介绍2、整合thymeleaf(spring-boot下模板引擎)渲染页面3、页面修改不重启服务器实时更新4、渲染二级三级数据 三、搭建…...

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)

生态流量(Ecological Flow, EF) 是指维持河道内生态环境所需要的水流流量。生态流量计算方法众多,主要分为水文学方法、栖息地模拟法、水力学方法、整体法等,各方法多用于计算维持河道生态平衡的最小生态流量(Minimum …...

特斯拉Model 3的七年狂飙

‍ 作者 | 张祥威 编辑 | 德新 发布一周拿下32万张订单,之后用时五年,交付量突破100万辆。粗略计算,自2016年发布至今,特斯拉Model 3已交付超150万辆。 放眼新能源赛道,如此战绩 别无二家。 Model 3踩中纯电动车的…...

物流签收异常,财务对账复杂,怎么解决?

电子商务行业的蓬勃发展为人们的购物体验带来了巨大的便利,然而,随之而来的物流签收异常和财务对账复杂问题却给电商企业的财务部门带来了一系列困扰。 每天大量的订单和货物流转,不可避免地导致了物流签收数据与财务记录之间的不一致和差异…...

docker之镜像与数据卷

镜像 简介 1.镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于环境开发的软件,他包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量、配置文件 2.将所有的应用和环境11,直接打包成docker镜像&…...

服务器为什么会被攻击?43.248.186.x

进入信息时代,各种行业对数据的安全和技术要求也越来越高,同时也遇到了各种各样的服务器故障问题,但是网络攻击才是最大的伤害,在这上面造成了企业不必要的损失,那么服务器为什么会被攻击,这里给大家讲解一下服务器被攻击有哪几种情况 一、服…...

文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题

四、请用go语言,证明:RANDOMIZED-QUICKSORT 期望运行时间是 Ω(nlgn)。 文心一言: 首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n),我们需要证明在最坏的情况下,该算法的运行时间是O(nlg n)。然后&…...

整理mongodb文档:索引

个人博客 整理mongodb文档:索引 个人博客,求关注,有问题的地方欢迎指出,觉得讲解的繁琐的也请指出 文章概叙 本文主要还是在shell下的操作。让大家了解下mongodb中index的用途,基本的索引的新增、查看、删除等,最后…...

EPICS libCom库(4) -- epicsTimer

epicsTimer.h描述了一个C和C timer功能。 1 C接口 1.1 epicsTimerNotify和epicsTimer /* 使用一个timer的代码必须实现epicsTimerNotify */ class LIBCOM_API epicsTimerNotify { public:enum restart_t { noRestart, restart };class expireStatus {public:LIBCOM_API expir…...

成都大运会,保障大型活动无线电安全需要…

成都大运会 7月28日,备受关注的第31届世界大学生夏季运动会在成都正式开幕。据悉,这是全球首个5G加持的智慧大运会,也是众多成熟信息技术的综合“应用场”。使用基于5G三千兆、云网、8K超高清视频等技术,在比赛现场搭建多路8K摄像…...

【Spring Boot】构建RESTful服务 — 实战:实现Web API版本控制

实战:实现Web API版本控制 前面介绍了Spring Boot如何构建RESTful风格的Web应用接口以及使用Swagger生成API的接口文档。如果业务需求变更,Web API功能发生变化时应该如何处理呢?可以通过Web API的版本控制来处理。 1.为什么进行版本控制 …...

6.Web后端开发【SpringBoot入门】

文章目录 1 SpringBoot快速入门1.1 Web分析 2. HTTP协议2.1 HTTP-概述2.1.1 介绍2.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 常见的相应状态码 3 WEB服务器3.1 服务器概述 1 SpringBoot快速入门 Spring的官网Spring Boot 可以帮助我们非常…...

[ubuntu]ubuntu18.04使用自带共享桌面实现vncserver连接

vncserver有很多方法比如你安装vnc4server,tightvncserver,x11vnc等都可以实现vnc局域网连接,今天使用系统共享桌面设置vnc连接 Ubuntu开启远程桌面 Ubuntu18.04使用gnome桌面环境,系统自带屏幕共享和远程登录功能,默认使用的是vino作为VNC…...

docker启用cgroup v2

要求 本人的操作系统是kali,基于debian docker info如果你这里是2那么说明启用了,如果是1,那么就未启用 对于Docker来说,Cgroups v2的使用需要满足以下条件: Linux内核版本在4.15以上。 uname -r 系统已经启用Cgro…...

Java课题笔记~ Axios

Axios 对原生的AJAX进行封装&#xff0c;简化书写。 Axios官网是&#xff1a;https://www.axios-http.cn 2.1 基本使用 axios 使用是比较简单的&#xff0c;分为以下两步&#xff1a; 引入 axios 的 js 文件 <script src"js/axios-0.18.0.js"></script…...

ip地址和地理位置有关系吗

在互联网时代&#xff0c;网络已经成为了人们生活中不可或缺的一部分。而在网络通信中&#xff0c;IP地址扮演着非常重要的角色。那么&#xff0c;IP地址和地理位置之间是否有关系呢&#xff1f;虎观代理小二二将从以下几个方面进行探讨。 一、IP地址和地理位置的基本概念 首…...

mac指定node版本 mac node版本降级 mac切换node版本

本文解决问题&#xff1a; mac指定node版本 mac切换node版本 mac node版本降级 第一步 进行nvm 安装操作 brew install nvm 执行 nvm --version nvm --version 出现zsh: command not found: nvm问题去进行配置第二步 nvm配置 1.输入: vim ~/.bash_profile 点击 i 进行插入…...

C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一)

首先常规的账户进程是没办法获取登录界面的信息的&#xff0c;因为登录界面已经不在某个账户下了&#xff0c;登录界面显示了每一个账户的切换。所以得使用System权限的进程。 那么Windows系统究竟是怎么将登录界面与用户桌面隔离开的呢&#xff1f;首先先通过一些Windows操作系…...

因果推断(五)基于谷歌框架Causal Impact的因果推断

因果推断&#xff08;五&#xff09;基于谷歌框架Causal Impact的因果推断 除了传统的因果推断外&#xff0c;还有一些机器学习框架可以使用&#xff0c;本文介绍来自谷歌框架的Causal Impact。该方法基于合成控制法的原理&#xff0c;利用多个对照组数据来构建贝叶斯结构时间…...

VR全景加盟项目如何开展?如何共赢VR时代红利?

VR全景作为一个新兴蓝海项目&#xff0c;相信有着很多人刚接触VR行业的时候都会有这样的疑问&#xff1a;VR全景加盟后项目如何开展&#xff1f;今天&#xff0c;我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去&#xff0c;学校、…...

Win10+anaconda+CUDA+pytorch+vscode配置

Win10anacondaCUDApytorchvscode配置 1.安装anaconda2.安装CUDA确认CUDA版本确认CUDA和pytorch版本安装CUDA 3.安装cudnn4.安装Pytorch5.vscode配置安装VScodevscode配置pytorch环境 1.安装anaconda 官网https://www.anaconda.com 下载安装&#xff0c;路径全英文然后记得有一…...

vue-router在vue2/3区别

构建选项区别 vue2-router const router-new VueRouter({mode:history,base:_name,})vue-next-router import { createRouter,createWebHistory} from vue-next-router const routercreateRouter({history:createHistory(/) })在上述代码中我们发现,vue2中的构建选项mode和ba…...

Apache Doris 入门教程33:统计信息

统计信息 统计信息简介​ Doris 查询优化器使用统计信息来确定查询最有效的执行计划。Doris 维护的统计信息包括表级别的统计信息和列级别的统计信息。 表统计信息&#xff1a; 信息描述row_count表的行数data_size表的⼤⼩&#xff08;单位 byte&#xff09;update_rows收…...

有效需求的特征

如何区分优秀的软件需求和软件需求规格说明书&#xff08;SRS&#xff09;与可能导致问题的需求和规格说明书&#xff1f;在这篇文章中&#xff0c;我们将首先讨论单个需求应该具有的几种不同特性。然后&#xff0c;我们将讨论成功的SRS整体应具有的理想特征。 1.有效需求的特…...

基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计

一、系统方案 1、本设计默认采用STC89C52单片机&#xff0c;如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值&#xff0c;通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…...

Spring Data JPA的@Entity注解

一、示例说明 rules\CouponTypeConverter.java Converter public class CouponTypeConverterimplements AttributeConverter<CouponType, String> {Overridepublic String convertToDatabaseColumn(CouponType couponCategory) {return couponCategory.getCode();}Overr…...

CANoe panel中,Path Dialog如何保存选择的文件路径

这里写目录标题 Path Dialog控件的设置系统变量和环境变量 Path Dialog控件的设置 过滤加载的文件类型 填写格式为&#xff1a;Hex file |.hex 其中Hex file为自定义name&#xff0c;.hex为你想识别的文件类型 系统变量和环境变量 系统变量&#xff1a;在canoe的Environmen…...

关于es中索引,倒排索引的理解

下面是我查询进行理解的东西 也就是说我们ES中的索引就相当于我们mysql中的数据库表&#xff0c;索引库就相当于我们的数据库&#xff0c;我们按照mapping规则会根据相应的字段&#xff08;index为true默认&#xff09;来创建倒排索引&#xff0c;这个倒排索引就相当于我们索引…...

k8s service (二)

K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod访问地址&#xff0c;它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成&#xff0c;这些Pod通过Endpoints…...

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…...

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第二天&#xff09;Mybatis的深入学习&#xff08;增删改查的操作&#xff09; 上一篇我们的项目搭建好了&#xff0c;也写了简答的Junit测试类进行测试&#xff0c;可以正确映射…...

学习笔记:Opencv实现限制对比度得自适应直方图均衡CLAHE

2023.8.19 为了完成深度学习的进阶&#xff0c;得学习学习传统算法拓展知识面&#xff0c;记录自己的学习心得 CLAHE百科&#xff1a; 一种限制对比度自适应直方图均衡化方法&#xff0c;采用了限制直方图分布的方法和加速的插值方法 clahe&#xff08;限制对比度自适应直方图…...

R语言处理缺失数据(1)-mice

#清空 rm(listls()) gc()###生成模拟数据### #生成100个随机数 library(magrittr) set.seed(1) asd<-rnorm(100, mean 60, sd 10) %>% round #平均60&#xff0c;标准差10 #将10个数随机替换为NA NA_positions <- sample(1:100, 10) asd[NA_positions] <- NA #转…...

SpringBoot自动配置原理

Spring Boot 的自动配置可以根据添加的jar依赖&#xff0c;自动配置 Spring Boot 应用程序。例如&#xff0c;我们想要使用Redis&#xff0c;直接在POM文件中增加spring-boot-starter-data-redis依赖&#xff0c;然后我们配置下连接信息就可以使用了。 那么Spring Boot 是如何…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 五)

管理应用拥有的状态概述 LocalStorage&#xff1a;页面级UI状态存储 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态。 本文仅介绍LocalStora…...