探秘Elasticsearch:高性能搜索引擎的原理与应用场景(一)

news/2024/7/27 8:59:42/文章来源:https://blog.csdn.net/weixin_42506246/article/details/136605228

本系列文章简介:

        本系列文章将探秘Elasticsearch的原理与应用场景,从基本原理到具体应用,带领读者全面了解这一强大的搜索引擎。首先我们将介绍Elasticsearch的基本原理,包括分布式架构、倒排索引和分片等核心概念。然后我们将深入探讨Elasticsearch的搜索原理,包括查询解析、相似度计算和布尔搜索等关键技术。接着我们将讨论Elasticsearch的索引和映射,了解如何对文档进行索引和映射的管理。在此基础上,我们将进一步探讨Elasticsearch的聚合和过滤功能,探索其在数据分析和处理中的应用。欢迎大家订阅《Java技术栈高级攻略》专栏,一起学习,一起涨分!

目录

1、引言

1.1 Elasticsearch的概述

1.2 Elasticsearch的重要性和应用范围

2、Elasticsearch的基本原理

2.1 分布式架构

2.2 倒排索引

2.3 分片和副本

3、Elasticsearch的搜索原理

3.1 查询解析

3.2 相似度计算

3.3 布尔搜索

4、Elasticsearch的索引和映射

4.1 文档索引

4.2 字段映射

4.3 索引的创建和更新

5、Elasticsearch的聚合和过滤 

6、Elasticsearch的实时数据分析

7、Elasticsearch在企业搜索的应用场景

8、Elasticsearch在电子商务的应用场景

9、Elasticsearch在日志管理和监控中的应用场景

10、结语


1、引言

1.1 Elasticsearch的概述

Elasticsearch是一个开源的分布式搜索和分析引擎,用于处理实时的大数据集。它基于Apache Lucene搜索引擎构建而成,并提供了简单易用的API,可以进行全文搜索、结构化搜索、分析和可视化等操作。

Elasticsearch使用倒排索引的方式来存储和搜索数据,通过将每个文档中的所有词条进行索引,从而可以快速地检索到相关的文档。它支持水平扩展,可以轻松地处理大规模的数据集,并提供了自动分片和复制机制,确保数据的高可用性和容错性。

Elasticsearch支持多种数据类型,包括文本、数值、地理位置等,可以进行复杂的查询和聚合操作。它还提供了丰富的分析和可视化工具,帮助用户深入了解数据和发现有价值的信息。

除了作为搜索引擎,Elasticsearch还可以用于日志分析、实时数据处理、监控和警报等应用场景。它与其他开源工具(如Logstash和Kibana)集成,形成了一个完整的数据处理和可视化平台,被广泛应用于各种领域,如电子商务、社交媒体、日志管理等。

1.2 Elasticsearch的重要性和应用范围

Elasticsearch是一种开源的分布式搜索和分析引擎,具有高性能、可扩展性和灵活性,广泛应用于各种应用场景中。

重要性:

  1. 实时搜索和分析:Elasticsearch具有快速的搜索速度和高效的分析能力,可以实时地处理大量数据,并提供准确的搜索结果和分析报告。
  2. 可扩展性和高性能:Elasticsearch可以通过添加更多的节点进行水平扩展,以处理大规模的数据。它使用分布式架构和倒排索引技术,提供了快速的搜索和分析性能。
  3. 容错性和可靠性:Elasticsearch使用分布式架构和复制机制,确保数据的安全性和可靠性。当一个节点发生故障时,系统可以自动将副本提升为主节点,保证服务的连续性。
  4. 多样化的查询和聚合功能:Elasticsearch提供了丰富的查询和聚合功能,可以满足不同场景下的数据分析需求,如全文搜索、地理位置搜索、过滤等。

应用范围:

  1. 搜索引擎:Elasticsearch可以用于构建全文搜索引擎,支持关键词搜索、模糊搜索和相关性排序等功能。
  2. 实时日志分析:Elasticsearch可以将大量的日志数据进行实时索引和分析,从而提供实时的日志查询和报警功能。
  3. 企业级应用监控:Elasticsearch可以实时地监控企业级应用的性能和状态,如网络流量、服务器负载等,并提供可视化的监控报表。
  4. 商业智能和数据分析:Elasticsearch可以将大规模的结构化和非结构化数据进行索引和分析,支持复杂的聚合查询和数据可视化。
  5. 地理位置分析:Elasticsearch可以进行地理位置数据的索引和分析,如地图搜索、地理位置聚合等,适用于物流、地理信息系统等领域。

总之,Elasticsearch在搜索和分析领域具有广泛的应用,可以帮助企业快速高效地处理和分析大规模的数据。

2、Elasticsearch的基本原理

2.1 分布式架构

Elasticsearch是一个分布式搜索和分析引擎,它采用了分布式架构来处理和存储大规模数据。其基本原理包括以下几个方面:

  1. 分片:Elasticsearch将索引划分为多个分片,每个分片都是一个独立的索引,可以存储和处理数据。分片可以分布在不同的节点上,实现数据的水平扩展和并行处理。

  2. 副本:每个分片都可以有多个副本,副本保存了分片的一份完整拷贝,用于实现高可用和容错。副本可以分布在不同的节点上,以提供冗余和负载均衡。

  3. 节点:节点是Elasticsearch集群中的一个单独的实例,可以是物理服务器、虚拟机或容器。每个节点都是一个独立的进程,可以存储和处理数据,并与其他节点进行通信和协调。

  4. 集群:集群是由多个节点组成的逻辑组,共同协作来存储和处理数据。集群通常由一个主节点和多个数据节点组成,主节点用于协调和管理集群的状态,数据节点用于存储和处理数据。

  5. 路由和协调:当客户端发送请求时,请求会被路由到合适的分片上进行处理。Elasticsearch使用一致性哈希算法来确定请求应该路由到哪个分片上。集群中的主节点负责协调分片之间的数据同步和平衡。

  6. 数据分布和故障恢复:当新的数据被索引时,Elasticsearch会将数据根据一致性哈希分配算法分配到相应的分片上。当节点发生故障或新的节点加入集群时,Elasticsearch会自动重新平衡和分配分片,以保证数据的可用性和一致性。

总的来说,Elasticsearch的分布式架构可以实现数据的高效存储和处理,并提供高可用和容错的能力。通过将索引划分为多个分片和复制分片来实现数据的分布和冗余。节点和集群之间的通信和协调确保了数据的一致性和可用性。

2.2 倒排索引

Elasticsearch使用倒排索引(Inverted Index)来实现高效的全文搜索。

倒排索引是一种将文档的内容映射到其出现位置的数据结构。它由两部分组成:词项(Term)和倒排列表(Inverted List)。

词项是指文档中的一个单词或短语。倒排列表是指包含所有包含该词项的文档的列表,以及在每个文档中该词项出现的位置。

举个例子,如果我们有三个文档: Document A: "Elasticsearch is a search engine" Document B: "Elasticsearch is built on Lucene" Document C: "Lucene is a powerful search library"

那么倒排索引将如下所示: Term: Elasticsearch Inverted List: [Document A, Document B] Term: is Inverted List: [Document A, Document B, Document C] Term: a Inverted List: [Document A, Document C] Term: search Inverted List: [Document A, Document C] Term: engine Inverted List: [Document A] Term: built Inverted List: [Document B] Term: on Inverted List: [Document B] Term: Lucene Inverted List: [Document B, Document C] Term: powerful Inverted List: [Document C] Term: library Inverted List: [Document C]

当我们搜索词项时,Elasticsearch会查找相应的倒排列表,并返回包含该词项的文档。

倒排索引的使用有以下几个好处:

  1. 快速检索:倒排索引可以直接定位到包含词项的文档,而无需遍历整个文档集合。
  2. 支持关键词搜索:因为倒排索引将词项与文档关联起来,所以可以通过搜索词项来找到相关的文档。
  3. 支持短语搜索:倒排索引中的位置信息可以用来提供短语搜索功能,即只返回包含特定词组的文档。
  4. 支持排名:倒排索引可以使用一些排序算法对搜索结果进行排名,以便返回最相关的文档。

Elasticsearch使用倒排索引来实现其强大的全文搜索和分析功能。它对倒排索引进行了优化,以提供高性能和可扩展性。

2.3 分片和副本

Elasticsearch将数据分成多个分片存储,并且每个分片可以有多个副本。这种分片和副本的机制有助于提高 Elasticsearch 的性能和可靠性。

分片是数据在 Elasticsearch 集群中进行水平拆分的方式。每个分片都是一个独立的索引,它包含了数据的一部分,并且可以独立地在集群中的任何节点上进行分布。通过将数据分散到多个分片上,Elasticsearch 可以更高效地进行并行处理。

副本是每个分片的一份拷贝。副本的作用是提供高可用性和容错能力。当某个节点发生故障时,副本分片可以接替主分片的工作,保证数据的可用性。同时,副本也可以提供更快的读取性能,因为可以在多个副本上并行处理查询请求。

分片和副本的数量可以在创建索引时进行配置。分片的数量决定了 Elasticsearch 能够并行处理数据的能力,应该根据数据量的大小和集群的硬件资源来进行调整。副本的数量决定了数据的可用性和读取性能,应该根据数据的重要性和集群的可靠性要求来进行设置。

总的来说,分片和副本机制是 Elasticsearch 用来进行数据水平扩展和高可用性的关键原理。它们允许 Elasticsearch 实现分布式存储和处理,并在数据故障或节点故障时提供数据的冗余和容错能力。

3、Elasticsearch的搜索原理

3.1 查询解析

在Elasticsearch中,搜索的原理可以简单地分为两个步骤:查询解析和倒排索引。

查询解析是将用户输入的查询语句转换为Elasticsearch可以理解的查询DSL(Domain-Specific Language)格式。查询DSL使用JSON格式,可以包含各种搜索条件和过滤条件。

在查询解析阶段,Elasticsearch会对查询语句进行分词处理。分词是将查询语句切分成一个个独立的词项,以便与文档中的词项进行匹配。分词器会根据指定的分词规则将查询语句中的词项进行分割和标准化处理,例如将单词转为小写、去除标点符号等。

分词后的查询语句会被转换为一个查询树,树的每个节点都代表一个查询条件或者一个查询操作。查询树的构建过程中,Elasticsearch会根据查询语句中的逻辑关系和运算符进行相应的组合和嵌套。

接下来,Elasticsearch会使用倒排索引进行搜索。倒排索引是Elasticsearch中非常重要的数据结构,用于快速查找包含指定词项的文档。

倒排索引是一个词项到文档的映射,可以根据查询语句中的词项快速查找到包含该词项的文档。倒排索引由多个倒排列表组成,每个倒排列表代表一个词项,包含了包含该词项的文档ID和文档中该词项的出现位置等信息。

当查询语句中的词项与倒排索引进行匹配时,Elasticsearch可以快速找到包含该词项的文档,并计算相关性得分。相关性得分可以衡量文档和查询语句的匹配程度,根据得分可以对搜索结果进行排序。

综上所述,查询解析是将用户输入的查询语句转换为Elasticsearch可以理解的查询DSL格式,并进行分词和查询树的构建。倒排索引是用于快速查找包含指定词项的文档,并计算相关性得分。通过查询解析和倒排索引的结合,Elasticsearch可以实现快速、准确的搜索。

3.2 相似度计算

Elasticsearch的搜索原理基于相似度计算来确定搜索结果的排序和相关性。相似度计算是通过将搜索查询与索引中的文档进行比较来确定匹配程度的过程。下面是相似度计算的一些关键步骤:

  1. 倒排索引:Elasticsearch使用倒排索引来加速搜索过程。倒排索引是一个将词条映射到文档的数据结构,它可以快速查找包含特定词条的文档。倒排索引存储在每个分片中。

  2. 分词:在搜索之前,查询文本和索引中的文档都会被分词器处理。分词器将文本分解为单词或词条,这些词条将成为搜索的基本单位。分词器还执行一些文本处理任务,例如去除停用词、转换大小写等。

  3. 词项权重:在索引文档时,Elasticsearch会为每个词条计算一个词项权重。词项权重衡量了词条在文档中的重要性。根据不同的评分算法,Elasticsearch使用不同的词项权重计算方法。

  4. 查询解析:在执行搜索查询之前,Elasticsearch会对查询文本进行解析和处理,以确定搜索的目标和约束条件。解析过程可以识别查询中的词条和字段,并生成相应的查询结构。

  5. 相似度计算:一旦查询被解析,Elasticsearch会计算每个文档与查询之间的相似度得分。相似度计算是基于查询和文档之间的词条匹配程度、词项权重和其他因素来进行的。

  6. 打分和排序:最后,Elasticsearch会根据相似度得分对搜索结果进行排序。文档的得分是根据相似度计算的结果来确定的,得分越高表示匹配程度越高。

3.3 布尔搜索

布尔搜索是Elasticsearch中的一种搜索策略,它使用布尔逻辑来组合多个查询条件,以便在索引中查找匹配的文档。布尔搜索可以通过三种逻辑运算符来组合查询条件:AND、OR和NOT。

  1. AND运算符:AND运算符表示两个查询条件必须同时满足才能匹配。例如,如果我们有两个查询条件A和B,使用AND运算符的结果将只返回同时满足A和B的文档。

  2. OR运算符:OR运算符表示两个查询条件之一满足即可匹配。例如,如果我们有两个查询条件A和B,使用OR运算符的结果将返回同时满足A或B的文档。

  3. NOT运算符:NOT运算符表示排除符合某个查询条件的文档。例如,如果我们有查询条件A,使用NOT运算符的结果将返回不满足A条件的文档。

布尔搜索在Elasticsearch中可以通过布尔查询来实现。布尔查询是一个复合查询,可以包含多个查询条件,并使用逻辑运算符来组合它们。布尔查询可以嵌套使用,以构建更复杂的查询逻辑。

布尔搜索的好处是可以更精确地控制搜索结果,并根据实际需求进行组合查询。同时,它还可以通过过滤器缓存策略来提高搜索性能,节省计算资源。

总而言之,布尔搜索是一种在Elasticsearch中使用布尔逻辑来组合多个查询条件的搜索策略,通过使用AND、OR和NOT运算符,可以实现高度灵活和精确的搜索。

4、Elasticsearch的索引和映射

4.1 文档索引

在Elasticsearch中,文档索引是将数据存储在可搜索的数据结构中的过程。索引是逻辑上类似于数据库的概念,它可以包含多个文档。

文档是将数据存储在Elasticsearch中的基本单元。每个文档都有一个唯一的ID,用于标识和检索文档。文档可以是任何结构化的JSON对象,它可以包含不同类型的字段。

在将文档索引到Elasticsearch之前,需要定义文档的映射。映射是指定文档中的字段及其属性的过程。这些属性包括数据类型、索引方式、分析器等。通过映射,Elasticsearch可以正确地解析和处理文档中的字段,以便进行有效的搜索和聚合操作。

文档索引和映射的过程可以通过Elasticsearch提供的API进行。通过向Elasticsearch发送PUT请求,可以指定要索引的文档以及其映射。例如,以下是将一个名为"myindex"的索引创建为JSON映射的示例:

PUT /myindex { "mappings": { "properties": { "title": {"type": "text"}, "content": {"type": "text"} } } }

在上述示例中,我们定义了一个具有"title"和"content"字段的映射,并指定了它们的类型为"text"。

一旦索引和映射被创建,就可以通过发送POST请求将文档索引到该索引中。例如,以下是向"myindex"索引中索引一个文档的示例:

POST /myindex/_doc { "title": "Elasticsearch", "content": "Elasticsearch is a distributed, RESTful search and analytics engine." }

通过这种方式,文档就被索引到了"myindex"索引中。

在搜索时,可以使用Elasticsearch提供的查询API来搜索索引中的文档。通过指定查询条件和过滤条件,可以从索引中获取与查询匹配的文档。

总而言之,文档索引是将数据存储在Elasticsearch中的过程,映射是指定文档中字段及其属性的过程。通过这些过程,可以有效地存储、搜索和检索数据。

4.2 字段映射

在Elasticsearch中,索引是包含文档的逻辑容器。每个索引可以包含多个文档,每个文档都是包含一个或多个字段的数据。索引是用于搜索和分析文档的主要数据结构。

字段映射确定了每个字段的类型和属性,它告诉Elasticsearch如何解析和处理字段中的数据。字段映射定义了字段的索引和搜索行为,包括分词、标记化、索引方式以及可执行的搜索操作。

字段映射的类型包括:

  1. 文本类型(text):用于索引和搜索长文本字段,支持全文搜索和模糊匹配。字段在索引过程中会被分词,允许根据单词进行搜索。
  2. 关键字类型(keyword):用于索引和搜索短文本字段,支持精确匹配和聚合操作。字段不会被分词,整个字段的值作为一个整体进行索引和搜索。
  3. 数字类型(numeric):用于索引和搜索数字类型的字段,包括整数、浮点数和日期。数字类型支持范围查询和聚合运算。
  4. 日期类型(date):用于索引和搜索日期和时间类型的字段。日期类型支持日期范围查询、日期格式化和日期运算。
  5. 布尔类型(boolean):用于索引和搜索布尔类型的字段,只能是true或false。
  6. 二进制类型(binary):用于索引和搜索二进制数据的字段,例如图片、视频或其他非文本数据。

除了上述基本类型,Elasticsearch还提供了一些复杂类型,如嵌套类型(nested)和对象类型(object),用于处理复杂的数据结构。

在创建索引时,可以通过映射定义每个字段的类型和属性。映射可以手动指定,也可以使用动态映射,让Elasticsearch自动推断字段类型。可以使用PUT请求在创建索引时创建映射,或者使用PUT Mapping API在已经存在的索引上创建或更新映射。

例如,以下是一个创建索引时的映射的示例:

PUT /my_index
{"mappings": {"properties": {"title": {"type": "text"},"author": {"type": "keyword"},"publish_date": {"type": "date"}}}
}

以上示例中,创建了一个名为my_index的索引,包含三个字段:title、author和publish_date。title字段被映射为文本类型,author字段为关键字类型,publish_date字段为日期类型。

在索引或更新文档时,Elasticsearch会根据字段映射来解析和处理字段的值。根据字段的类型和属性,Elasticsearch会对字段进行相应的处理,比如进行分词、标记化或日期解析。

4.3 索引的创建和更新

在Elasticsearch中,索引是用于存储和组织文档的地方。每个索引都有一个唯一的名称,由小写字母、数字和连字符组成。

创建索引 要创建一个新的索引,可以使用PUT请求发送一个API调用到/_index_name,其中index_name是你想要为索引指定的名称。

PUT /my_index

你也可以在创建索引时指定一些索引的设置和映射。例如,你可以指定索引的分片数量和副本数量:

PUT /my_index
{"settings": {"number_of_shards": 1,"number_of_replicas": 0}
}

更新索引映射

索引映射定义了如何解析和存储文档的字段。一旦索引创建完成,就可以使用PUT请求更新索引的映射。

假设我们已经创建了一个名为my_index的索引,现在想要添加一个新的字段age,可以发送以下API请求:

PUT /my_index/_mapping
{"properties": {"age": {"type": "integer"}}
}

这将在my_index的映射中添加一个字段age,将其类型设置为integer

注意,一旦索引创建后,就不能修改已有字段的映射。如果你需要更改现有字段的映射,你需要重新创建索引。

这是关于Elasticsearch索引和映射创建和更新的基础知识,更多关于索引和映射的详细信息可以参考Elasticsearch官方文档。

5、Elasticsearch的聚合和过滤 

        详见《探秘Elasticsearch:高性能搜索引擎的原理与应用场景(二)

6、Elasticsearch的实时数据分析

        详见《探秘Elasticsearch:高性能搜索引擎的原理与应用场景(二)

7、Elasticsearch在企业搜索的应用场景

        详见《探秘Elasticsearch:高性能搜索引擎的原理与应用场景(二)

8、Elasticsearch在电子商务的应用场景

        详见《探秘Elasticsearch:高性能搜索引擎的原理与应用场景(二)

9、Elasticsearch在日志管理和监控中的应用场景

        详见《探秘Elasticsearch:高性能搜索引擎的原理与应用场景(二)

10、结语

        通过探秘Elasticsearch,我们不仅对这一高性能搜索引擎有了更全面的了解,也为大家展示了其在各个应用场景中的重要性和价值。未来,随着数据量的不断增长和搜索需求的不断演变,Elasticsearch将会继续发挥其优势,为各行各业带来更好的搜索和分析体验。

        希望本文能够帮助大家更好地理解和应用Elasticsearch,为您的工作和业务带来更大的成功。让我们一起探索Elasticsearch的未来,共同创造更加智能和高效的搜索引擎!

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

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

相关文章

国家网安教育技术产业融合发展试验区建设专家指导组莅临麒麟信安调研

3月12日下午,由教育部网络安全教学指导委员会秘书长(专家组组长)封化民、工业和信息化部规划司原司长肖华、中国现代国际关系研究院原副院长张力等领导组成的国家网安教育技术产业融合发展试验区建设专家指导组莅临麒麟信安及湖南欧拉生态创新…

【原创】[新增]ARCGIS之土地报备Txt、征地Xls格式批量导出Por旗舰版

一、软件简介 2024年新增旗舰版软件,本软件全新界面开发,保留原有软件功能及一些使用习惯,并集成了现已有的所有定制格式的支持,并增加自定义格式的导出;做到1N2(即为1种通用版本N种定制格式导出txt、Xls&a…

《次神光之觉醒》游戏简单拆解

文章目录 一、 介绍二、 游戏拆解图三、 部分模块拆解1.主界面关卡制放置挂机2.养成升级战斗属性值角色养成装备养成技能养成天赋养成藏品养成契约养成宠物养成挖矿养成 3.副本4.任务5.pvppvp竞技场锦标赛黄金矿工锦标赛公会营地 6.社交游戏圈世界频道好友系统 一、 介绍 《次…

Windows C++ 使用WinAPI实现RPC

demo下载地址:https://download.csdn.net/download/2403_83063732/88958730 1、创建IDL文件以及acf文件(创建helloworld.idl helloworld.acf) 其中IDL文件: import "oaidl.idl"; import "ocidl.idl"; [ …

Axure原型设计项目效果 全国职业院校技能大赛物联网应用开发赛项项目原型设计题目

目录 前言 一、2022年任务书3效果图 二、2022年任务书5效果图 三、2022年国赛正式赛卷 四、2023年国赛第一套样题 五、2023年国赛第二套样题 六、2023年国赛第三套样题 七、2023年国赛第四套样题 八、2023年国赛第七套样题 九、2023年国赛正式赛题(第八套…

MySQL关联查询如何优化

好久不见,关于这篇文章,我也是想了很久,还是决定写一篇文章,有很多同学问过 mysql 相关的问题,其实关联查询如何优化,首先我们要知道关联查询的原理是什么? 左连接 left join SELECT 字段列表…

Go——数组

Golang Array和以往认知的数组有很大的。 数组是同一种数据类型的固定长度的序列。数组定义:var a[len] int,比如:var a [5]int,数组长度必须是常量,且类型的组成部分。一旦定义,长度不能变。长度是数组类…

计算机网络-数据链路层

一、认识以太网 "以太网" 不是⼀种具体的网络,而是一种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理 层的内容。 例如:规定了网络拓扑结构,访问控制方式,传输速率等; 例如:以太网中的网线必须使用…

Java对接(BSC)币安链 | BNB与BEP20的开发实践(三)水龙头 WEB3

上一节我们用代码来实现BNB转账、BEP20转账、链上交易监控 这一节我们讲一个币安测试链如何获取到BNB、USDT等BEP20数字货币&#xff08;水龙头&#xff09;来让我们前期测试开发。 首先我们先来创建一个地址&#xff1a; /*** 创建地址(离线)*/Overridepublic Map<Strin…

python单例模式应用之pymongo连接

文章目录 单例模式介绍模块简介安装简单的连接使用单例模式的连接单例类的实现配置的使用单例模式的测试 单例连接的调用 单例模式介绍 适用场景&#xff1a; 单例模式只允许创建一个对象&#xff0c;因此节省内存&#xff0c;加快对象访问速度&#xff0c;因此对象需要被公用…

大数据开发 hadoop集群1. 概论

我不惧怕风暴&#xff0c; 因为我在学习如何驾驶风帆 ——《小妇人》 —— 24.3.10 一、大数据的概念 大数据&#xff1a;指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海…

[JAVAEE]—进程和多线程的认识

文章目录 什么是线程什么是进程进程的组成什么是pcb 进程概括线程线程与进程的关系线程的特点 创建线程创建线程方法创建线程的第二种方法对比 其他的方式匿名内部类创建线程匿名内部类创建Runable的子类lambda表达式创建一个线程 多线程的优势 什么是线程 什么是进程 首先想…

Mysql锁与MVCC

文章目录 Mysql锁的类型锁使用MVCC快照读和当前读读视图【Read View】串行化的解决 exlpain字段解析ACID的原理日志引擎整合SpringBoot博客记录 Mysql锁的类型 MySQL中有哪些锁&#xff1a; 乐观锁&#xff08;Optimistic Locking&#xff09;&#xff1a;假设并发操作时不会发…

【PyTorch】进阶学习:BCEWithLogitsLoss在多标签分类任务中的正确使用---logits与标签形状指南

【PyTorch】进阶学习&#xff1a;BCEWithLogitsLoss在多标签分类任务中的正确使用—logits与标签形状指南 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTo…

(黑马出品_高级篇_03)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_高级篇_03&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——多级缓存 今日目标1.什么是多级缓存2.JVM进程缓存2.1.导入案例2.1.1.安装MySQL2.1.1.1.准备目录2.1.1.2.运行命令2.1.1.3.修改配置 2.1.1.4.…

Redis-自动过期

1 EXPIRE、PEXPIRE&#xff1a;设置生存时间 用户可以通过执行EXPIRE命令或者PEXPIRE命令为键设置一个生存时间&#xff08;Time To Live, TTL&#xff09;&#xff1a;键的生存时间在设置之后就会随着时间的流逝而不断地减少&#xff0c;当一个键的生存时间被消耗殆尽时&#…

新IDEA电脑环境设置

1.设置UTF-8 2.Maven 3.JRE选对

Java EE之wait和notify

一.多线程的执行顺序 由于多个线程执行是抢占式执行&#xff0c;就会导致顺序不同&#xff0c;同时就会导致出现问题&#xff0c;就比如俩个线程同时对同一个变量进行修改&#xff0c;我们难以预知执行顺序。 但在实际开发中&#xff0c;我们希望代码按一定的逻辑顺序执行&am…

Vite为什么比Webpack快

本文作者为 360 奇舞团前端开发工程师 一.引言 Vite和Webpack作为两个主流的前端构建工具&#xff0c;在近年来备受关注。它们的出现使得前端开发变得更加高效和便捷。然而&#xff0c;随着前端项目规模的不断增大和复杂度的提升&#xff0c;构建工具的性能优化也成为了开发者关…

四川宏博蓬达法律咨询有限公司:法律服务的行业翘楚

在当今社会&#xff0c;法律服务已经成为人们生活中不可或缺的一部分。随着法律意识的提高&#xff0c;选择一家专业、可靠的法律咨询公司显得尤为重要。四川宏博蓬达法律咨询有限公司&#xff0c;作为业内的佼佼者&#xff0c;以其卓越的服务质量和广泛的业务范围&#xff0c;…