大量大数据如何进行查询

2023-10-26

1.两种查询引擎查询速度(myIsam 引擎 )

InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。

MyISAM只要简单的读出保存好的行数即可。

注意的是,当count(*)语句包含 where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上where col 条件。其中col列是表的主键之外的其他具有唯一约束索引的列。这样查询时速度会很快。就是可以避免全表扫描。

总结:

mysql 在300万条数据(myisam引擎)情况下使用 count(*) 进行数据总数查询包含条件(正确设置索引)运行时间正常。对于经常进行读取的数据我们建议使用myIsam引擎。

 

2.百万数据下mysql分页问题

在开发过程中我们经常会使用分页,核心技术是使用limit进行数据的读取,在使用limit进行分页的测试过程中,得到以下数据:

select * from news order by id desc limit 0,10
耗时0.003秒
select * from news order by id desc limit 10000,10
耗时0.058秒
select * from news order by id desc limit 100000,10 
耗时0.575秒
select * from news order by id desc limit 1000000,10
耗时7.28秒

我们惊讶的发现mysql在数据量大的情况下分页起点越大查询速度越慢,100万条起的查询速度已经需要7秒钟。这是一个我们无法接受的数值!

改进方案 1

select * from news 
where id >  (select id from news order by id desc  limit 1000000, 1)
order by id desc 
limit 0,10

查询时间 0.365秒,提升效率是非常明显的!!原理是什么呢???

我们使用条件对id进行了筛选,在子查询 (select id from news order by id desc limit 1000000, 1) 中我们只查询了id这一个字段比起select * 或 select 多个字段 节省了大量的查询开销!

 

改进方案2

适合id连续的系统,速度极快!

select * from news 
where id  between 1000000 and 1000010 
order by id desc

不适合带有条件的、id不连续的查询。速度非常快!

3. 百万数据下mysql条件查询、分页查询的注意事项

接上一节,我们加上查询条件:

select id from news 
where cate = 1
order by id desc 
limit 500000 ,10 

查询时间 20 秒

好恐怖的速度!!利用第一节知识进行优化:

select * from news
where cate = 1 and id > (select id from news where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10 

查询时间 15 秒

优化效果不明显,条件带来的影响还是很大!在这样的情况下无论我们怎么去优化sql语句就无法解决运行效率问题。那么换个思路:建立一个索引表,只记录文章的id、分类信息,我们将文章内容这个大字段分割出去。

表 news2 [ 文章表 引擎 myisam 字符集 utf-8 ]

-------------------------------------------------

id int 11 主键自动增加

cate int 11 索引

在写入数据时将2张表同步,查询是则可以使用news2 来进行条件查询:

select * from news
where cate = 1 and id > (select id from news2 where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10

注意条件 id > 后面使用了news2 这张表!

运行时间 1.23秒,我们可以看到运行时间缩减了近20倍!!数据在10万左右是查询时间可以保持在0.5秒左右,是一个逐步接近我们能够容忍的值!

但是1秒对于服务器来说依然是一个不能接受的值!!还有什么可以优化的办法吗??我们尝试了一个伟大的变化:

将 news2 的存储引擎改变为innodb,执行结果是惊人的!

select * from news
where cate = 1 and id > (select id from news2 where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10

只需要 0.2秒,非常棒的速度。

 

4.mysql存储引擎 myIsam和innodb的区别

MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。

MyISAM存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYIndex)。

InnoDB是事务型引擎,支持回滚、崩溃恢复能力、多版本并发控制、ACID事务,支持行级锁定(InnoDB表的行锁不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,如like操作时的SQL语句),以及提供与Oracle类型一致的不加锁读取方式。InnoDB存储它的表和索引在一个表空间中,表空间可以包含数个文件。

核心区别

MyISAM是非事务安全型的,而InnoDB是事务安全型的。

MyISAM锁的粒度是表级,而InnoDB支持行级锁定。

MyISAM支持全文类型索引,而InnoDB不支持全文索引。

MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。

MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。

InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(alter table tablename type=innodb)。

应用场景

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。

InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。

Mysql的存储引擎和索引

数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能忍受的。我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将关键字存储到树的节点即可。当数据库一条记录里包含多个字段时,一棵B+树就只能存储主键,如果检索的是非主键字段,则主键索引失去作用,又变成顺序查找了。这时应该在第二个要检索的列上建立第二套索引。 这个索引由独立的B+树来组织。有两种常见的方法可以解决多个B+树访问同一套表数据的问题,一种叫做聚簇索引(clustered index ),一种叫做非聚簇索引(secondary index)。这两个名字虽然都叫做索引,但这并不是一种单独的索引类型,而是一种数据存储方式。对于聚簇索引存储来说,行数据和主键B+树存储在一起,辅助键B+树只存储辅助键和主键,主键和非主键B+树几乎是两种类型的树。对于非聚簇索引存储来说,主键B+树在叶子节点存储指向真正数据行的指针,而非主键。

InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。

MyISM使用的是非聚簇索引,非聚簇索引的两棵B+树看上去没什么不同,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的节点存储了主键,辅助键索引B+树存储了辅助键。表数据存储在独立的地方,这两颗B+树的叶子节点都使用一个地址指向真正的表数据,对于表数据来说,这两个键没有任何差别。由于索引树是独立的,通过辅助键检索无需访问主键的索引树。

为了更形象说明这两种索引的区别,我们假想一个表如下图存储了4行数据。其中Id作为主索引,Name作为辅助索引。图示清晰的显示了聚簇索引和非聚簇索引的差异。

 

我们重点关注聚簇索引,看上去聚簇索引的效率明显要低于非聚簇索引,因为每次使用辅助索引检索都要经过两次B+树查找,这不是多此一举吗?聚簇索引的优势在哪?

1 由于行数据和叶子节点存储在一起,这样主键和行数据是一起被载入内存的,找到叶子节点就可以立刻将行数据返回了,如果按照主键Id来组织数据,获得数据更快。

2 辅助索引使用主键作为"指针" 而不是使用地址值作为指针的好处是,减少了当出现行移动或者数据页分裂时辅助索引的维护工作,使用主键值当作指针会让辅助索引占用更多的空间,换来的好处是InnoDB在移动行时无须更新辅助索引中的这个"指针"。也就是说行的位置(实现中通过16K的Page来定位,后面会涉及)会随着数据库里数据的修改而发生变化(前面的B+树节点分裂以及Page的分裂),使用聚簇索引就可以保证不管这个主键B+树的节点如何变化,辅助索引树都不受影响。

所以在百万级数据及更大数据情况下,mysql innoDB 的索引表现更加优秀!

 

5、MySQL性能优化的一些经验

a.为查询优化你的查询

大多数的MySQL服务器都开启了查询缓存。这是提高性能最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。

这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。

请看下面的示例:

// 查询缓存不开启

$r = mysql_query("SELECT username FROM user WHERE     signup_date >= CURDATE()");

// 开启查询缓存

$today = date("Y-m-d");

$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。

 

b.学会使用EXPLAIN

使用EXPLAIN关键字可以让你知道MySQL是如何处理你的SQL语句的。

select id, title, cate from news where cate = 1

发现查询缓慢,然后在cate字段上增加索引,则会加快查询

 

c.当只要一行数据时使用LIMIT 1

当你查询表的有些时候只需要一条数据,请使用 limit 1。

 

d.正确的使用索引

索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段你总要会经常用来做搜索、拍下、条件,那么,请为其建立索引吧。

 

e.不要ORDER BY RAND()

效率很低的一种随机查询。

 

f.避免SELECT *

从数据库里读出越多的数据,那么查询就会变得越慢。并且,如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。必须应该养成一个需要什么就取什么的好的习惯。

 

g.使用 ENUM 而不是 VARCHAR

ENUM 类型是非常快和紧凑的。在实际上,其保存的是 TINYINT,但其外表上显示为字符串。这样一来,用这个字段来做一些选项列表变得相当的完美。

如果你有一个字段,比如“性别”,“国家”,“民族”,“状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是 VARCHAR。

 

h.使用 NOT NULL

除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议,请往下看。

首先,问问你自己“Empty”和“NULL”有多大的区别(如果是INT,那就是0和NULL)?如果你觉得它们之间没有什么区别,那么你就不要使用NULL。(你知道吗?在 Oracle 里,NULL 和 Empty 的字符串是一样的!)

不要以为 NULL 不需要空间,其需要额外的空间,并且,在你进行比较的时候,你的程序会更复杂。 当然,这里并不是说你就不能使用NULL了,现实情况是很复杂的,依然会有些情况下,你需要使用NULL值。

 

下面摘自MySQL自己的文档

“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”

i.IP地址存成 UNSIGNED INT

很多程序员都会创建一个 VARCHAR(15) 字段来存放字符串形式的IP而不是整形的IP。如果你用整形来存放,只需要4个字节,并且你可以有定长的字段。而且,这会为你带来查询上的优势,尤其是当你需要使用这样的WHERE条件:IP between ip1 and ip2。

我们必需要使用UNSIGNED INT,因为 IP地址会使用整个32位的无符号整形

 

j.固定长度的表会更快

如果表中的所有字段都是“固定长度”的,整个表会被认为是 “static” 或 “fixed-length”。 例如,表中没有如下类型的字段: VARCHAR,TEXT,BLOB。只要你包括了其中一个这些字段,那么这个表就不是“固定长度静态表”了,这样,MySQL 引擎会用另一种方法来处理。

固定长度的表会提高性能,因为MySQL搜寻得会更快一些,因为这些固定的长度是很容易计算下一个数据的偏移量的,所以读取的自然也会很快。而如果字段不是定长的,那么,每一次要找下一条的话,需要程序找到主键。

并且,固定长度的表也更容易被缓存和重建。不过,唯一的副作用是,固定长度的字段会浪费一些空间,因为定长的字段无论你用不用,他都是要分配那么多的空间。

 

k.垂直分割

“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。需要注意的是,这些被分出去的字段所形成的表,你不会经常性地去Join他们,不然的话,这样的性能会比不分割时还要差,而且,会是极数级的下降。

 

l.拆分大的 DELETE 或 INSERT 语句

如果在一个在线的网站上去执行一个大的 DELETE 或 INSERT 查询,你需要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。

Apache 会有很多的子进程或线程。所以,其工作起来相当有效率,而我们的服务器也不希望有太多的子进程,线程和数据库链接,这是极大的占服务器资源的事情,尤其是内存。

如果你把你的表锁上一段时间,比如30秒钟,那么对于一个有很高访问量的站点来说,这30秒所积累的访问进程/线程,数据库链接,打开的文件数,可能不仅仅会让你泊WEB服务Crash,还可能会让你的整台服务器马上掛了。

 

m.越小的列会越快

对于大多数的数据库引擎来说,硬盘操作可能是最重大的瓶颈。所以,把你的数据变得紧凑会对这种情况非常有帮助,因为这减少了对硬盘的访问。

 

n.选择正确的存储引擎

在 MySQL 中有两个存储引擎 MyISAM 和 InnoDB,每个引擎都有利有弊。

MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大量大数据如何进行查询 的相关文章

  • 15个C++项目列表

    实验楼上有很多C 的实战项目 从简单到进阶 学习每个项目都可以掌握相应的知识点 如果你还是C 新手的话 那么这个C 的项目列表你可以拿去练手实战开发 毕竟学编程动手实践是少不了的 如果你不知道C 可以用来做哪些项目 可以应用在哪些地方 那么
  • 从 相对路径 说开来(从C++到Qt)

    在Qt论坛经常看到网友抱怨 QPixmap dbzhang800 png 加载图片不成功 QFile dbzhang800 txt 打开文件失败 遇到这种问题 我一般回答 请注意区分进程的 工作目录 与程序所在的目录 但这种回答似乎还是显得
  • paddleocr np.array(padding.Execute(distance)[0]) IndexError: list index out of range

    报错 File I project jushi shuini PaddleOCR release 2 4 ppocr data imaug make border map py line 61 in call self draw borde
  • 容器部署HertzBeat监控系统

    HertzBeat是开源的监控系统 支持网站 API PING 端口 数据库 操作系统等监控类型 拥有易用友好的可视化操作界面的开源监控告警项目 同时也支持邮件 钉钉 微信 飞书 等告警通知 环境和配置要求 软件类别 软件名称与版本 配置要
  • 防御第八次作业

    一 根据以下问题总结当天内容 1 什么是数据认证 有什么作用 有哪些实现的技术手段 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密 数字签名和签名验证 确保网上传递信息的安全性 完整性 使用了数字证书 即使您
  • 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友 拥有这一篇博文就够了 深入浅出 里面包含了寄存器 外部中断 定时器中断 中断嵌套等的讲解 还有代码实战 快一万字 写得不容易 还请大家点赞支持一下 后续持续更新 一 寄存器 1 什么是寄存器 2 寄存器怎么用 二
  • Pcap文件详解

    Pcap文件详解 一 简介 pcap文件是常用的数据报存储格式 可以理解为就是一种文件格式 只不过里面的数据是按照特定格式存储的 所以我们想要解析里面的数据 也必须按照一定的格式 普通的记事本打开pcap文件显示的是乱码 用安装了HEX E
  • Java-数组的定义和使用

    一 数组的基本用法 1 什么是数组 数组本质上就是让我们能 批量 创建相同类型的变量 2 创建数组 动态初始化 数据类型 数组名称 new 数据类型 初始化数据 静态初始化 数据类型 数组名称 初始化数据 代码示例 int arr new
  • css样式表属性

    文章目录 css样式表属性 color background color font size font weight font family font style text decoration text indent line heigh
  • JDBC连接多个SQLServer实例

    机器上同时装有SQLServer2000和2005 并存在多个数据库实例时 在写dbURL时需要在服务器地址后加实例名称 否则将连接到机器默认的数据库实例 在注册表的HKEY LOCAL MACHINE SOFTWARE Microsoft
  • 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求

    在实际项目使用中 必须要考虑服务的安全性 当服务部署到互联网以后 就要考虑服务被恶意请求和暴力攻击的情况 下面的教程 通过intercept和redis针对url ip在一定时间内访问的次数来将ip禁用 可以根据自己的需求进行相应的修改 来
  • 跨域问题解决

    在网关中添加配置类 import org springframework context annotation Bean import org springframework context annotation Configuration
  • 程序员如何做好职业规划?

    1 了解自己的职业目标 首先 要明确自己的职业目标 包括想成为什么样的程序员 是否想做管理工作等 2 了解市场需求 了解市场对技能的需求 通过对人才市场的认识 了解市场对不同类型程序员的需求和薪资水平 3 学习技能 根据自己的职业目标和市场
  • 软件使用:如何彻底把VMware卸载干净

    1 禁用VM虚拟机服务 首先 需要停止虚拟机VMware相关服务 按下快捷键WIN R 打开windows运行对话框 输入services msc 点击确定 在服务管理中 找到VM开头的所有服务类别 将所有VM开头的服务禁用掉 右击选择属性
  • 直接插入排序(深入讲解哨兵的作用)---------通俗易懂,直击重点!!!

    直接插入排序详细讲解 直接插入排序 Straight Insertion Sort 哨兵 代码区实例 你好 欢迎来和我一起学习 直接插入排序算法内容 如果大佬们发现问题希望指出 我会尽全力来更改 希望我们共同进步 直接插入排序 Straig
  • Python:PyCharm 永久破解方法,真的超超超超超超超超超级简单!!!

    准备工作 1 破解包 gt gt gt 下载链接 gt gt gt 提取码 jjbf 2 注册码 gt gt gt 获取地址 gt gt gt 第一步 进入PyCharm 的安装目录的bin文件夹下 把破解包放到该目录 第二步 把bin 目
  • 正确理解stem教育

    成人对STEM教育的理解和态度将深刻地影响孩子们对STEM学习的信念和他们的能力发展 无论孩子天赋如何 STEM对所有的孩子非常有利 也对所有学科领域都很重要 格物斯坦小坦克告诉大家如何正确理解stem教育 当我们学习新技能时 大脑将整合之
  • Tensorflow中tf.nn.bias_add()以及tf.add()和tf.add_n的实现

    tf nn bias add 通俗解释 一个叫bias的向量加到一个叫value的矩阵上 是向量与矩阵的每一行进行相加 得到的结果和value矩阵大小相同 import tensorflow as tf a tf constant 1 1
  • Qt 内存回收机制

    关于 Qt 内存回收机制的 刚接触 Qt 不久 第一次看到这方面的问题 这篇文章需要在对Qt有很多了解后才会理解的更透彻 在你不断补充知识时 温故而知新 看到更全面和更官方的内容时随时更新 C GUI Programming with Qt
  • 多线程+隧道代理:提升爬虫速度

    在进行大规模数据爬取时 爬虫速度往往是一个关键问题 本文将介绍一个提升爬虫速度的秘密武器 多线程 隧道代理 通过合理地利用多线程技术和使用隧道代理 我们可以显著提高爬虫的效率和稳定性 本文将为你提供详细的解决方案和实际操作价值 同时附上Py

随机推荐

  • H5页面实现跳转微信公众号主页面

    由于考虑到微信商城内用户分享给未关注用户 所以进行openid判断 并且进行 跳转 谨此记录一下 1 登录公众号管理后台 2 F12 进入element 模块 3 ctrl f 搜索uin base64字段 4 在下面代码中填入uin ba
  • 戴尔计算机网卡驱动程序,dell戴尔网卡驱动如何安装

    网卡是电脑连接外部网络的重要设备 可以实现局域网传输介质之间的物理连接和电信号匹配 不过想要正常使用网卡设备还需要安装网卡驱动 下面 我就以Dell网卡为例 教大家安装驱动的方法 Dell 戴尔 以设计 生产 销售类型电脑而闻名 戴尔电脑质
  • vue-element-admin项目关闭eslint校验

    事情是这样的 今天在启动项目的时候报错了 报错差不多是这样的 我们都知道 ESLint 是一个代码规范和错误检查工具 对于代码的语法格式的规范相当的严格 我忘记自己在哪里的代码写的出现问题了 但现在直接启动不了就很麻烦了 只有先关闭一下es
  • CentOS7.6服务器搭建SFTP服务及JAVA工具类

    一 SFTP的简介 sftp Secure File Transfer Protocol 是一种安全的文件传送协议 是ssh内含协议 也就是说只要sshd服务器启动了 sftp就可使用 不需要额外安装 它的默认端口和SSH一样为22 1 s
  • thinkphp6 入门(4)--数据库操作 增删改查

    一 设计数据库表 比如我新建了一个数据库表 名为test 二 配置数据库连接信息 本地测试 直接在 env中修改 不用去config database php中修改 正式环境 三 增删改查 引入Db库 use think facade Db
  • 分析 Spring 的依赖注入模式

    一 依赖注入 二 Field Injection 优点 缺点 三 Constructor Injection 优点1 容易发现 code smell 优点2 容易厘清依赖关系 优点3 容易写单元测试 优点4 Immutable Object
  • 微信小程序 用户协议和隐私协议

  • 金山桌面软件测试实习生笔试面试

    2014年5月 实习生 笔试 3道数列推导题 1道推理题 2道编程题 2道设计测试用例题 推理题 A B C D E五个人将来的职业分别是预言师 侍女 舞蹈师 魔术师 侍应生 这5个人现在说的话 只有将来是预言师的那个人说的才是正确的 A
  • 经常使用runOnUiThread(),你真的理解它吗

    在Android开发的过程中 主线程主要来完成UI绘制和响应用户的操作 默认情况下 我们大部分的代码都是在主线程 中执行的 因此我们时刻要考虑主线程的情况 我们都知道要开启一个子线程来完成一个耗时操作 以避免阻塞主线程影响 用户体验 甚至A
  • FCM——(Fuzzy C-means)模糊C均值算法

    FCM算法是一种基于划分的聚类算法 它的思想就是使得被划分到同一簇的对象之间相似度最大 而不同簇之间的相似度最小 模糊C均值算法是普通C均值算法的改进 普通C均值算法对于数据的划分是硬性的 而FCM则是一种柔性的模糊划分 模糊聚类的目标函数
  • 【目标跟踪】1、基础知识

    文章目录 一 卡尔曼滤波 二 匈牙利匹配 一 卡尔曼滤波 什么是卡尔曼滤波 状态估计器 卡尔曼滤波用于在包含不确定信息的系统中做出预测 对系统下一步要做什么进行推测 且会结合推测值和观测值来得到修正后的最优值 卡尔曼滤波就是利用 t 1 状
  • k-medoids聚类算法

    引言 上一篇博客介绍了k means聚类算法 该算法虽然高效快速 但却受异常点的影响严重 如果样本中存在异常点 则聚类结果会产生极大的偏差 针对异常点对聚类结果的影响 本文介绍k medoids聚类算法 k medoids算法能有效削弱异常
  • vue2项目打包dist文件后如何部署访问(本地部署和网络部署)

    1 本地部署 前提 1 注意端口的占用 防火墙的放行 2 注意后端服务的请求链接3 记得不要关闭运行4 记得element ui的引入要放在vue版本导入的后面 1 1 新建一个文件夹打开之后打开终端 1 2 npm i express s
  • 知识图谱技术概述

    1知识图谱定义与架构 1 1知识图谱定义 维基百科上对知识图谱的定义是这样的 知识图谱是谷歌及其提供的服务所使用的知识库 目的是通过从各种来源收集信息以增强其搜索结果的展示 这个定义时侠义的 知识图谱 是结构化的语义知识库 用于以符号形式描
  • 5分钟解决阿里云oss对象存储

    5分钟解决阿里云OSS对象存储 后附关键代码 启动代码如下 pom xml里添加依赖 com aliyun oss aliyun sdk oss 2 8 3 1 建类AliyunOSSClientUtil package io import
  • Centos8用户和组的管理

    1 用户和组的相关配置文件 1 1 用户的分类 linux用户三种角色 超级用户 普通用户 虚拟用户 超级用户 root 拥有对系统的最高的管理权限 UID 0 普通用户 系统用户 UID范围 1 999 Centos7 8版本 1 499
  • Python数据分析与挖掘——线性回归预测模型

    线性回归模型属于经典的统计学模型 该模型的应用场景是根据已 知的变量 自变量 来预测某个连续的数值变量 因变量 例如 餐 厅根据每天的营业数据 包括菜谱价格 就餐人数 预定人数 特价菜 折扣等 预测就餐规模或营业额 网站根据访问的历史数据
  • 超好用的开发工具-VScode插件EIDE

    EIDE介绍 一款适用于8051 STM8 Cortex M RSCv的单片机开发环境 在 vscode上提供8051 STM8 Cortex M RISC V 项目的开发编译烧录等功能 使用文档 简介 em ide com 论坛地址 Em
  • android 日期相减得天数_用 bash 倒计时日期

    需要知道重要事件发生前有多少天吗 让 Linux bash 和 date 命令可以帮助你 Sandra Henry stocker 作者 随着即将来临的重要假期 你可能需要提醒你还要准备多久 幸运的是 你可以从 date 命令获得很多帮助
  • 大量大数据如何进行查询

    1 两种查询引擎查询速度 myIsam 引擎 InnoDB 中不保存表的具体行数 也就是说 执行select count from table时 InnoDB要扫描一遍整个表来计算有多少行 MyISAM只要简单的读出保存好的行数即可 注意的