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

MySQL、HBase、ES的特点和区别

MySQL:关系型数据库,主要面向OLTP,支持事务,支持二级索引,支持sql,支持主从、Group Replication架构模型(本文全部以Innodb为例,不涉及别的存储引擎)。

HBase:基于HDFS,支持海量数据读写(尤其是写),支持上亿行、上百万列的,面向列的分布式NoSql数据库。天然分布式,主从架构,不支持事务,不支持二级索引,不支持sql。

ElasticSearch:ES是一款分布式的全文检索框架,底层基于Lucene实现,虽然ES也提供存储,检索功能,但我一直不认为ES是一款数据库,但是随着ES功能越来越强大,与数据库的界限也越来越模糊。天然分布式,p2p架构,不支持事务,采用倒排索引提供全文检索。

Hbase

基本概念

HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。它是Hadoop生态系统的一部分,可以与HDFS、MapReduce、ZooKeeper等组件集成。HBase的主要特点是提供低延迟的随机读写访问,支持大规模数据的存储和管理。
在这里插入图片描述

HBase核心概念:

  • HFile:HBase的底层存储结构,是一个自平衡的B+树。HFile可以存储多个表的数据,并支持随机读写访问。HFile的索引功能是基于B+树的索引实现的,可以提高查询性能。

  • MemStore:HBase的内存存储结构,是HFile的基础。MemStore是一个有序的键值对缓存,每次写入数据时,数据首先写入MemStore,然后定期刷新到HFile。MemStore的搜索功能是基于内存中的数据实现的,可以提高查询性能。

  • Bloom过滤器:HBase使用Bloom过滤器来减少不必要的磁盘访问。Bloom过滤器是一种概率数据结构,可以用来判断一个元素是否在一个集合中。Bloom过滤器可以提高查询性能,减少磁盘I/O。

  • 索引文件:HBase为每个表创建一个索引文件,用于存储表中的所有列名。索引文件可以帮助查询引擎快速定位需要查询的列,提高查询性能。

  • 搜索引擎:HBase提供了一个基本的搜索引擎,可以用来实现基本的模糊查询和范围查询。搜索引擎使用了一些基本的搜索算法,如词法分析、词汇分析、排序等。

HRegion是HBase中的基本存储单元,负责存储一部分行键(Row Key)对应的数据。HRegion内部由多个HStore组成,每个HStore存储一部分列族(Column Family)的数据。MemStore中存储的是用户写入的数据,一旦MemStore存储达到阈值时,里面存储的数据就会被刷新到新生成的StoreFile中(底层是HFile),该文件是以HFile的格式存储到HDFS上,具体如图4所示。

HRegion支持自动分区:
HBase中的一个表,刚创建时,只有一个HRegion,随着数据量递增,达到阈值时,等分成两个HRegion,分布在不同的HRegionServer结点上。阈值由属性hbase.hregion.max.filesize指定,默认10G

在这里插入图片描述
HBase是一个分布式系统,这点跟MySQL不同,它的数据是分散不同的server上,每个table由一个或多个region组成,region分散在集群中的server上,一个server可以负责多个region。

这里有一点需要特别注意:table中各个region的存放数据的rowkey(主键)范围是不会重叠的,可以认为region上数据基于rowkey全局有序,每个region负责它自己的那一部分的数据。

索引原理

Hbase写流程:
在这里插入图片描述
WAL是保存在HDFS上的持久化文件。数据到达 Region 时先写入WAL,然后被加载到MemStore中。这样就算Region宕机了,操作没来得及执行持久化,也可以再重启的时候从WAL加载操作并执行。跟Redis的AOF类似。

  1. Client 先访问 zookeeper,访问 /hbase/meta-region-server 获取 hbase:meta 表位于哪个 Region Server。
  2. 访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey,查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 Region 信息以及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
  3. 与目标 Region Server 进行通讯。
  4. 将数据顺序写入(追加)到 WAL。
  5. 将数据写入对应的 MemStore,数据会在 MemStore 进行排序。
  6. 向客户端发送 ack,此处可看到数据不是必须落盘的。
  7. 等达到 MemStore 的刷写时机后,将数据刷写到 HFile
  8. 在web页面查看的时候会随机的给每一个Region生成一个随机编号。

Hbase读流程:
在这里插入图片描述

  1. Client 先访问 ZooKeeper,获取 hbase:meta 表位于哪个 Region Server。
  2. 访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey, 查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 region 信息以 及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
  3. 与目标 Region Server 进行通讯。
  4. 分别在 Block Cache(读缓存),MemStore 和 Store File(HFile)中查询目标数据,并将 查到的所有数据进行合并。此处所有数据是指同一条数据的不同版本(time stamp)或者不同的类型(Put/Delete)。
  5. 将从文件HFile中查询到的数据块(Block,HFile 数据存储单元,默认大小为 64KB)缓存到 Block Cache。
  6. 将合并后的最终结果,然后返回时间最新的数据返回给客户端。

性能调优

1,HBase预分区:

HBase表在刚刚被创建时,只有1个分区(region),当一个region过大(达到hbase.hregion.max.filesize属性中定义的阈值,默认10GB)时,表将会进行split,分裂为2个分区。表在进行split的时候,会耗费大量的资源,频繁的分区对HBase的性能有巨大的影响。

HBase提供了预分区功能,即用户可以在创建表的时候对表按照一定的规则分区。减少由于region split带来的资源消耗。从而提高HBase的性能。

2,定期进行Major Compaction:

HBase中的数据是以StoreFile的形式存储的,随着数据的不断写入,StoreFile的数量会逐渐增加,影响查询效率。

优化方案
定期执行Major Compaction操作,将多个小文件合并成一个大文件,减少StoreFile的数量。

ElasticSearch

基本概念

ElasticSearch 是一个分布式的搜索引擎,所以一般由多台物理机组成。每个物理机器上可以有多个节点,使用不同的端口和节点名称。节点按主要功能可以分为三种:主节点(Master Node),协调节点(Coordianting Node)和数据节点(Data Node):

在这里插入图片描述

  • 主节点:处理创建,删除索引等请求,维护集群状态信息。可以设置一个节点不承担主节点角色
  • 协调节点:负责处理请求。默认情况下,每个节点都可以是协调节点。
  • 数据节点:用来保存数据。可以设置一个节点不承担数据节点角色

在这里插入图片描述

  • Index (索引)
    Index(索引) 是具有稍微类似特征文档的集合,同在一个索引中的文档共同建立倒排索引。类似于 MySQL 中的 database 概念,但 ES 中的 Index 更加灵活,用起来也更加方便。提交给同一个索引中的文档,最好拥有相同的结构。这样对于 ES 来说,不管是存储还是查询,都更容易优化。

  • 分片 & 副本(Shards & Replicas)
    索引可以存储大量的数据,可能会超过单个节点的硬件限制,而且会导致单个节点效率问题。ES 提供了将单个 Index 拆分到多个 Shard 上的能力,可以支持水平扩展,分布式和并行跨 Shard 操作(可能在多个节点),从而提高了性能和吞吐量。
    为了避免故障导致节点及分片出现问题,ES 可以为分片设置副本(Replicas),副本通常在不同的节点上,从而保证高可用性。

  • 类型(Type)
    Document 的类型,类似于关系型数据库中的表的概念。该概念在6.X 时还可以使用,但在 Type 的概念已在7.X 开始废弃,官方认为这是个错误的设计。

  • Document (文档)
    文档是 ES 索引的基本单位,每个索引都是由数量众多的文档组成,Document 相当于传统数据库中的行,ES 中数据以 JSON 的形式来表示。

  • 字段(Fields)
    每个 Document 都类似一个 JSON 结构,它包含了许多字段,每个字段都有其对应的值,多个字段组成了一个 Document,可以类比关系型数据库数据表中的字段。

  • 映射(mapping)
    相当于数据库中的 schema,用来约束字段的数据类型,每一种数据类型都有对应的使用场景。mapping 中定义了一个文档所包含的所有 field 信息,每个文档都有映射。mapping 不是必须创建,因为 ES 中实现了动态映射。

在这里插入图片描述

{"_index": "user","_type": "_doc","_id": "qbuOs4AB1VH6WaY_OsFW","_version": 1,"_score": 1,"_source": {"name": "张三","address": "广东省深圳市","remark": "他是一个程序员","age": 28,"salary": 8800,"birthDate": "1991-10-05","createTime": "2019-07-22T13:22:00.000Z"}
}

上图为 ES 一条文档数据,而一个文档不只有基础数据,它还包含了元数据(metadata)——关于文档的信息,也就是用下划线开头的字段,它是官方提供的字段:

  • _index :文档所属索引名称,即文档存储的地方。
  • _type :文档所属类型名(此处已默认为_doc)。
  • _id :文档的唯一标识。在写入的时候,可以指定该 Doc 的 ID 值,如果不指定,则系统自动生成一个唯一的 UUID 值。
  • _score :顾名思义,得分,也可称之为相关性,在查询是 ES 会 根据一些规则计算得分,并根据得分进行倒排。除此之外,ES 支持通过 Function score query 在查询时自定义 score 的计算规则。
  • _source :文档的原始 JSON 数据。字段Field
    在动态映射的作用下,name会映射成text类型,age会映射成long类型,birthDate会被映射为date类型

索引原理

我们知道ES的搜索是非常快的,并且比MySQL快很多,所以来看下两者的索引原理:

  • MySQL的索引原理:B+Tree索引
  • ElasticSearch的索引原理:倒排索引

倒排索引:也叫反向索引,首先对文档数据按照id进行索引存储,然后对文档中的数据分词,记录对词条进行索引,并记录词条在文档中出现的位置。这样查找时只要找到了词条,就找到了对应的文档。概括来讲是先找到词条,然后看看哪些文档包含这些词条。通俗地来讲,正向索引是通过key找value,倒排索引则是通过value找key。跟MySQL中的索引回表查询有点类似。

下面倒排索引简单实例

假设我们有如下几篇文档:

Doc1:乔布斯去了中国。
Doc2:苹果今年仍能占据大多数触摸屏产能。
Doc3:苹果公司首席执行官史蒂夫·乔布斯宣布,iPad2将于311日在美国上市。
Doc4:乔布斯推动了世界,iPhone、iPad、iPad2,一款一款接连不断。
Doc5:乔布斯吃了一个苹果。

这五个文档中的数字代表文档的ID,比如 Doc中的1。通过这5个文档建立简单的倒排索引:

单词ID(WordID) 单词(Word) 倒排列表(DocID)

1	乔布斯	1345
2	苹果	235
3	iPad2	34
4	宣布	3
5145
…	…	…

首先要用分词系统将文档自动切分成单词序列,这样就让文档转换为由单词序列构成的数据流,并对每个不同的单词赋予唯一的单词编号(WordID),并且每个单词都有对应的含有该单词的文档列表即倒排列表。如上表所示,第一列为单词ID,第二列为单词ID对应的单词,第三列为单词对应的倒排列表。如第一个单词ID“1”对应的单词为“乔布斯”,单词“乔布斯”的倒排列表为{1,3,4,5},即文档1、文档3、文档4、文档5都包含有单词“乔布斯”。所以当我们搜索的关键字中含有乔布斯的关键字时,此时就能找到文档Doc1,Doc3,Doc4,Doc5。

这上面的列表是最简单的倒排索引,下面介绍一种更加复杂,包含信息更多的倒排索引。

单词ID(WordID)	单词(Word)	倒排列表(DocID;TF;<Pos>)
1	乔布斯	(1;1;<1>),(3;1;<6>),(4;1;<1>),(5;1;<1>)
2	苹果	(2;1;<1>),(3;1;<1>),(5;1;<5>)
3	iPad2	(3;1;<8>),(4;1;<7>)
4	宣布	(3;1;<7>)
5(1;1;<3>),(4;1;<3>)(5;1;<3>)
…	…	…
  • TF(term frequency): 单词在文档中出现的次数。
  • Pos: 单词在文档中出现的位置。

这个表格展示了更加复杂的倒排索引,前两列不变,第三列倒排索引包含的信息为(文档ID,单词频次,<单词位置>),比如单词“乔布斯”对应的倒排索引里的第一项(1;1;<1>)意思是,文档1包含了“乔布斯”,并且在这个文档中只出现了1次,位置在第一个。

性能调优

分片的设定:对于生产环境中分片的设定,需要提前做好容量规划,主分片数是在索引创建的时候预先设定,事后无法修改

  • 分片数设置过小

    • 后续无法增加节点实现水平扩展
    • 单个分片的数据量太大,导致数据重新分配耗时

  • 分片数设置过大,7.0开始,默认主分片设置成1,解决了over-sharding的问题

    • 影响搜索结果的相关性打分,影响统计结果的准确性
    • 单个节点上过多的分片,会导致资源浪费,同时也会影响性能
      用图形表示出来可能是这样子的:

参考:
https://blog.csdn.net/weixin_42081445/article/details/144748629
https://www.cnblogs.com/aspirant/p/11004991.html
https://blog.csdn.net/sadfasdfsafadsa/article/details/141716347
https://blog.csdn.net/universsky2015/article/details/135789000

相关文章:

MySQL、HBase、ES的特点和区别

MySQL&#xff1a;关系型数据库&#xff0c;主要面向OLTP&#xff0c;支持事务&#xff0c;支持二级索引&#xff0c;支持sql&#xff0c;支持主从、Group Replication架构模型&#xff08;本文全部以Innodb为例&#xff0c;不涉及别的存储引擎&#xff09;。 HBase&#xff1…...

Windows远程连接Docker服务

问题背景 本地开发了一个SpringBoot项目&#xff0c;想通过Docker部署起来&#xff0c;我本地是Window11系统&#xff0c;由于某些原因不能虚拟化并且未安装Docker-Desktop&#xff0c;所以我在想有没有办法本地不需要虚拟化也不需要安装Docker-Desktop来实现支持Docker命令远…...

【前端知识】简单易懂的vue前端页面元素权限控制

文章目录 设计思路代码实现1. **权限数据管理**2. **权限判断方法**3. **动态控制元素**4. **路由权限控制**5. **无权限页面** 总结相关文献 在前端实现基于 Vue 的权限控制&#xff0c;通常需要结合后端返回的用户权限数据&#xff0c;动态控制页面元素的显示与隐藏、按钮的可…...

2024大模型双向突破:MoE架构创新与小模型崛起

标题&#xff1a;2024大模型双向突破&#xff1a;MoE架构创新与小模型崛起 文章信息摘要&#xff1a; 文章分析了2024年初大语言模型领域的两大技术发展方向&#xff1a;一是以Arctic为代表的新型MoE架构&#xff0c;通过480B总参数但仅17B活跃参数的设计实现高效企业级应用&a…...

电气防火保护器为高校学生宿舍提供安全保障

摘 要&#xff1a;3月2日&#xff0c;清华大学紫荆学生公寓发生火情&#xff0c;无人员伤亡。推断起火原因系中厅内通电电器发生故障引燃周边可燃物所致。2月27日&#xff0c;贵州某高校女生宿舍发生火灾&#xff0c;现场明火得到有效控制&#xff0c;无人员受伤。2月19日&…...

ChatGPT大模型极简应用开发-CH2-深入了解 GPT-4 和 ChatGPT 的 API

文章目录 2.1 基本概念2.2 OpenAI API 提供的可用模型2.3 在 OpenAI Playground 中使用 GPT模型2.4 开始使用 OpenAI Python 库2.4.1 OpenAI 访问权限和 API 密钥2.4.2 Hello World 示例程序 2.5 使用 GPT-4 和 ChatGPT2.5.1 ChatCompletion 端点的输入选项2.5.2 ChatCompletio…...

notepad++下载安装及使用笔记

文章目录 可以打开多大的文件可以打开多大的文件和内存设置有关吗&#xff0c;如何设置? TODO 如果打不开太大的文件 拆分为200M的肯定可以打开Find All in CurrentDocument(在当前文档中找到所有) 下载从百度网盘下载从官网下载 主要为了本地看大日志方便&#xff0c;例如几百…...

线上突发:MySQL 自增 ID 用完,怎么办?

线上突发&#xff1a;MySQL 自增 ID 用完&#xff0c;怎么办&#xff1f; 1. 问题背景2. 场景复现3. 自增id用完怎么办&#xff1f;4. 总结 1. 问题背景 最近&#xff0c;我们在数据库巡检的时候发现了一个问题&#xff1a;线上的地址表自增主键用的是int类型。随着业务越做越…...

黑马程序员C++ P1-P40

一.注释和常量 1.多行注释&#xff1a;/*...............*/ ; 单行注释&#xff1a;//.............. 2.常量&#xff1a;用于记录程序中不可修改的量 。定义方式&#xff1a;宏常量#define定义在文件上方 ;const修饰变量 3.标识符命名规则&#xff1a;标识符不能是关键字&a…...

AIGC浪潮下,图文内容社区数据指标体系如何构建?

文章目录 01 案例&#xff1a;以图文内容社区为例实践数据指标体构建02 4个步骤实现数据指标体系构建1. 明确业务目标&#xff0c;梳理北极星指标2. 梳理业务流程&#xff0c;明确过程指标3. 指标下钻分级&#xff0c;构建多层级数据指标体系4. 添加分析维度&#xff0c;构建完…...

OpenVela 各模块之间的交互方式和数据流

目录 一、核心操作系统模块与其他模块的交互 1.1. 内核层与硬件抽象层(HAL)的交互 1.2. 内核层与服务框架的交互 二、模块化与可扩展性模块与其他模块的交互 2.1. 模块化设计与其他模块的交互 2.2. 服务框架与应用层的交互 三、通信与连接模块与其他模块的交互 3.1. …...

HTB:Heist[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用smbclient匿…...

C语言——文件操作

目录 前言 一什么是文件 1程序文件 2数据文件 3文件名 二文件的打开与关闭 1文件指针 2fopen 3fclose 三文件的读与写 1文件的顺序读写 1.1fputc fgetc 1.2fputs fgets 1.3fprintf fscanf 1.4fwrite fread 1.5文本文件和二进制文件 2文件的任意读写 1fseek …...

嵌入式知识点总结 C/C++ 专题提升(七)-位操作

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.位操作基础 2.如何求解整型数的二进制表示中1的个数 ? 3.如何求解二进制中0的个数 4.交换两个变量的值&#xff0c;不使用第三个变量。即a3,b5,交换之后a5,b3: 5.给定一个…...

26. 【.NET 8 实战--孢子记账--从单体到微服务】--需求更新--用户注销、修改用户名、安全设置

在实际开发过程中&#xff0c;项目需求的变更和增加是常见的情况&#xff0c;因此这篇文章我们就模拟一下项目需求新增的情况。 一、需求 项目经理今天提出了新的功能&#xff0c;需要增加重置密码、安全设置、修改用户名、注销账户这四个功能&#xff0c;这四个功能必须是独…...

Git 分支管理与多人协作实战指南

目录 1.分支管理&#xff1a; 1.1.理解分支&#xff1a; 1.2.创建分支 1.3.切换分支 1.4.合并分支 1.5.删除分支 2.合并冲突 3.分支管理策略 分支策略 4.bug分支 5.删除临时分支 git branch -d 和 git branch -D的区别 6.多人协作 6.1.多人协作一 6.2.多人协作二…...

使用pyboard、micropython和tja1050进行can通信

单片机和can收发器之间tx、rx不需要交叉接线&#xff01;&#xff01;&#xff01; tja1050的rx接Y3、tx接Y4 from pyb import CANcan CAN(1) can.init(modecan.NORMAL, prescaler6, sjw1, bs14, bs22, auto_restartTrue) # 1Mbps的配置&#xff0c;本文使用的micropython1.…...

新能源监控平台都管理哪些数据

北理新源信息科技有限公司&#xff08;简称“北理新源”&#xff09;依托北京理工大学电动车辆国家工程研究中心&#xff0c;建设和运营了“新能源汽车国家监测与管理平台”。该平台是国家级的新能源汽车数据监管平台&#xff0c;主要负责对新能源汽车的运行数据进行采集、监测…...

Go学习:常量

变量&#xff1a;程序运行期间&#xff0c;可以改变的量&#xff0c;变量声明需要使用 var 常量&#xff1a;程序运行期间&#xff0c;不可以改变的量&#xff0c;常量声明需要使用 const 目录 1. 常量不允许修改 2. 常量赋值不使用 : 3. 常量能够自动推导类型 1. 常量不允许…...

Apache Tika 详解

Apache Tika是一个开源的、跨平台的库&#xff0c;专门用于检测、提取和解析多种文件格式的元数据。以下是对Apache Tika的详细解析&#xff1a; 一、概述 Apache Tika旨在为各种类型的数据提取提供一个单一的API&#xff0c;它支持多种文件格式&#xff0c;包括文档、图片、…...

第12章:Python TDD完善货币加法运算(一)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

KNN的调参方法

目录 1. K 值&#xff08;邻居数 K&#xff09;的选择2. 距离度量方式2.1 常见距离度量2.2 如何选择距离度量 3. 权重策略&#xff08;weights&#xff09;4. 特征预处理4.1 特征缩放&#xff08;标准化/归一化&#xff09;4.2 处理异常值 5. 特征选择或降维6. 使用交叉验证来综…...

mac 电脑上安装adb命令

在Mac下配置android adb命令环境&#xff0c;配置方式如下&#xff1a; 1、下载并安装IDE &#xff08;android studio&#xff09; Android Studio官网下载链接 详细的安装连接请参考 Mac 安装Android studio 2、配置环境 在安装完成之后&#xff0c;将android的adb工具所在…...

P3934 [Ynoi2016] 炸脖龙 I Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​). 有 m m m 个操作&#xff0c;分以下两种&#xff1a; modify ⁡ ( l , r , k ) \operatorname{modify}(l,r,k) modify(l,r,k)&#xff1a;对每个 i ∈ [ l , r ] i \in [l…...

数据库-多表查询

介绍&#xff08;什么是多表查询&#xff1f;&#xff09; 多表查询&#xff1a;查询时从多张表中获取所需数据 单表查询的SQL语句&#xff1a;select 字段列表 from 表名; 那么要执行多表查询&#xff0c;只需要使用逗号分隔多张表即可 如&#xff1a; select 字段列表 from …...

PID控制的优势与LabVIEW应用

PID控制&#xff08;比例-积分-微分控制&#xff09;已在工业控制领域得到广泛应用&#xff0c;尤其在实时控制和自动化系统中&#xff0c;其核心优点是简单、稳定且高效。尽管许多现代控制方法&#xff08;如自适应控制、模型预测控制等&#xff09;逐渐崭露头角&#xff0c;P…...

Next.js:构建大模型智能体GPT研究者应用的 Web开发框架

Next.js&#xff1a;构建大模型智能体GPT研究者应用的 Web开发框架 Next.js 基础知识 Next.js 是由 Vercel 公司开发维护的框架&#xff0c;极大地简化了 React 应用的开发流程。其核心特性包括&#xff1a; 服务器端渲染&#xff08;SSR&#xff09;与静态站点生成&#xff…...

航空航天混合动力(7)航空航天分布式电推进系统

航空航天分布式电推进系统 1.概述2.分布式电推进系统组成3.关键技术4.分布式电推进系统优势5.国内外研究情况5.1 国外5.2 国内6.分布式电推进系统应用场景6.1 航空领域6.2 航天领域tips:资料来自网上,仅供参考学习使用 1.概述 分布式推进系统是指飞行器推力由位于整个航空器…...

Java定时任务实现方案(一)——Timer

这篇笔记&#xff0c;简单来介绍一下Java如何使用Timer来实现定时任务&#xff0c;以及该方案的优点和缺点。 Timer是JDK自带的类&#xff0c;可以用来实现定时任务。使用 1.创建定时任务 ​ 定义一个实现了java.lang.Runnable接口的类&#xff0c;重写run()方法&#xff0c;…...

Linux(UOS系统:DNS)

赛题拓扑&#xff1a; 题目&#xff1a; 2.DNS 安装BIND9。配置为DNS根域服务器。其他未知域名解析&#xff0c;统一解析为该本机IP。创建正向区域“chinaskills.cn”。类型为Slave。主服务器为“AppSrv”。 rootispsrv:~# apt-get install bind9 -y rootispsrv:~# cd /etc/…...

一. 初始 Redis(快速入门-00)

一. 初始 Redis(快速入门-00) 文章目录 一. 初始 Redis(快速入门-00)Redis 概述&#xff1a;关系型数据库(如 MySQL ) 问题NoSQL 数据库(非关系性数据库)最后&#xff1a; Redis 概述&#xff1a; Redis 官方地址&#xff1a; https://redis.io/ Reids 中文的官方地址&#xf…...

Qt中的Item Widget组控件:QListWidget、QTreeWidget 和 QTableWidget使用方法(详细图文教程)

&#x1f4aa; 图像算法工程师&#xff0c;专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &a…...

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器&#xff0c;支持MASM、TASM等多种汇编编译器&#xff0c;Windows界面&#xff0c;支持语法高亮&#xff0c;自带一个资源编辑器和一个调试器。 一、汇编IDE工具&#xff1a;RadASM RadASM有内置的语言包 下载地址&#xff1a;RadASM asse…...

澎峰科技计算软件栈与沐曦GPU完成适配和互认证

近期&#xff0c;澎峰科技与沐曦完成了对PerfXLM&#xff08;推理引擎&#xff09;、PerfXCloud&#xff08;大模型服务平台&#xff09;与沐曦的曦云系列通用计算GPU的联合测试&#xff0c;测试结果表明PerfXLM、PerfXCloud软件与沐曦GPU产品实现了全面兼容。 PerfXLM高性能大…...

如何用vscode断点调试Vue.js的项目

源码放在git上了&#xff0c;大家自己去看吧&#xff0c;非常简单&#xff0c;视频教程里面也有。 GitHub - SpaceView/howto_debug_vue_js_with_vscode: A basic project show how to debug vue with vscode How to Debug? Following, Creating a Project | Vue CLI to …...

C++17 新特性解析:Lambda 捕获 this

C17 引入了许多改进和新特性&#xff0c;其中之一是对 lambda 表达式的增强。在这篇文章中&#xff0c;我们将深入探讨 lambda 表达式中的一个特别有用的新特性&#xff1a;通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性&#xff0c;还极大地简化了某些场景下…...

Springboot自动配置的原理

先拿redis来举个例子 第一步导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 第二步配置 spring: redis: database:host:127.0.0.1 port…...

第13章:Python TDD完善货币加法运算(二)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

solidity基础 -- 存储类型

在Solidity智能合约开发中&#xff0c;存储类型是一个至关重要的概念。它不仅影响合约的性能&#xff0c;还决定了数据的存储位置和生命周期。Solidity提供了三种主要的存储类型&#xff1a;storage、memory和calldata。本文将结合给定的代码示例&#xff0c;并通过更多实例详细…...

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于GA-CNN-LST…...

AI对齐与开源发展:多学科融合创新之路

标题&#xff1a;AI对齐与开源发展&#xff1a;多学科融合创新之路 文章信息摘要&#xff1a; 本文分析了AI对齐研究中多学科融合的重要性及开源AI领域的最新发展。文章指出&#xff0c;AI对齐问题需要计算机科学与社会选择理论等学科深度结合&#xff0c;特别是在RLHF领域的应…...

大华Java开发面试题及参考答案 (下)

口述一种排序算法,如快排。 快速排序(Quick Sort): 快速排序是一种分治算法,基本思想是将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。首先,从数组中选择一个元素作为基准元素(pivot),可以选择第一个元素、最后一个元素或随机元素。然后,将小于等于基…...

[Spring] OpenFeign的使用

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

java文件按行写入数据后并创建行索引及查询

背景 当有很多数据需要存储&#xff0c;这些数据只是想要简单的按行存储和查询&#xff0c;不需要进行其他条件搜索&#xff0c;此时就可以考虑不需把这些数据存储在数据库&#xff0c;而是直接写入文件&#xff0c;然后从文件中查询 但是正常情况下&#xff0c;如果仅仅只是按…...

在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤

之前有用户反馈&#xff0c;在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程&#xff0c;我们已确认优化后的EasyNVR平台&#xff0c;通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤&#xff1a;…...

OS2.【Linux】基本命令入门(1)

目录 1.操作系统是什么? 2.好操作系统的衡量标准 3.操作系统的核心工作 4.在计算机上所有行为都会被转换为硬件行为 5.文件 6.简单介绍一些基本命令 1.clear 2.pwd 3.ls 1.ls -l 2.隐藏文件的创建 3.ls -al 4.ls -ld 5.ls -F(注意是大写) 4.cd 1.cd .. "…...

WPF 复杂页面布局及漂亮 UI 界面设计全解析

在 WPF 开发领域&#xff0c;打造一个既具备复杂功能又拥有美观 UI 界面的应用程序是众多开发者追求的目标。复杂页面布局与漂亮的 UI 设计不仅能提升用户体验&#xff0c;还能展现应用的专业性和独特性。本文将深入探讨如何在 WPF 中实现复杂页面布局以及设计出令人眼前一亮的…...

002-SpringBoot整合AI(Alibaba)

SpringBoot整合AI 一、引入依赖二、配置application.yml三、获取 api-key四、编写 controller五、起服务调用 一、引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><vers…...

c++模板进阶

前言 一、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数…...

99.8 金融难点通俗解释:净资产收益率(ROE)

目录 0. 承前1. 简述2. 比喻&#xff1a;养母鸡赚钱2.1 第一步&#xff1a;投资母鸡2.2 第二步&#xff1a;母鸡下蛋2.3 第三步&#xff1a;计算赚钱2.4 第四步&#xff1a;计算ROE 3. 生活中的例子3.1 好的ROE3.2 一般的ROE3.3 差的ROE 4. 小朋友要注意4.1 ROE高不一定好4.2 R…...