大数据面试题之ElasticSearch(2)

目录

ElasticSearch的单播、多播和广播

什么是Zen Discovery机制

ElasticSearch和Solr主要区别

ElasticSearch和Solr各自适用于哪些场景

Elasticsearch的同类产品有哪些

Elasticsearch有哪些主要应用场景

Elasticsearch 中执行搜索的各种可能方式有哪些

Elasticsearch 中列出集群的所有索引的语法是什么

Elasticsearch 中删除索引的语法是什么

Elasticsearch 支持哪些类型的查询

Elasticsearch 有关的主要可用字段数据类型

说下ELK Stack及其内容


ElasticSearch的单播、多播和广播

在Elasticsearch集群中,节点间的发现和通信机制是确保集群稳定性和可扩展性的关键部分。Elasticsearch提供了三种不同的发现方式来帮助节点找到彼此并形成集群:单播(Unicast)、多播(Multicast)和广播(Broadcast)实际上是不准确的术语,在Elasticsearch的上下文中,正确的应该是单播和多播,没有广播这一选项。下面分别解释这两种机制:
单播(Unicast)

  • 定义:单播是一种节点发现方式,其中每个节点都需要手动配置其他节点的IP地址或主机名。这意味着集群中的每个节点都知道至少另一个节点的网络位置,从而能够直接尝试连接以加入集群。
  • 优点:相比多播,单播在某些网络环境下更为可靠,特别是在那些限制多播流量或配置复杂的网络中。它也提供了更好的控制,因为管理员可以精确控制哪些节点可以加入集群。
  • 缺点:配置较为繁琐,尤其是在大型或动态变化的集群中,需要维护节点列表的更新。

多播(Multicast)

  • 定义:多播是一种自动发现机制,它依赖于网络层的多播协议来广播心跳信息,使得新节点可以自动发现集群并请求加入。Elasticsearch早期版本中多播发现非常常见,但现代网络环境对多播的支持度不一,可能导致不稳定。
  • 优点:配置简单,无需手动指定每个节点的地址,特别适合快速设置和测试环境。
  • 缺点:在一些企业级网络环境中,多播可能被防火墙或路由器阻止,导致发现过程不可靠。此外,随着集群规模的增长,多播可能会增加网络的负载。

配置
在Elasticsearch的elasticsearch.yml配置文件中,可以通过以下设置来选择发现方式:

  • 使用单播:
discovery.type: single-node  # 对于单节点部署
或
discovery.seed_hosts: ["host1", "host2:port", "host3"]  # 对于多节点部署
  • 使用多播(旧版本中更常见,新版本默认不推荐使用多播,而是推荐单播):
discovery.type: multicast

请注意,从Elasticsearch 7.x版本开始,多播发现已经被默认禁用,推荐使用单播发现配合初始主节点设置(cluster.initial_master_nodes)来确保集群启动时的稳定性。

什么是Zen Discovery机制

Zen Discovery 是 Elasticsearch 内部使用的一种集群管理与节点发现机制,它负责处理节点如何加入集群、主节点选举、故障检测以及分片分配等核心功能。这一机制的设计目标是为了保证集群的高可用性、灵活性以及可伸缩性。以下是 Zen Discovery 的几个关键组件和功能:
1、节点发现:

  • 如之前讨论的,Zen Discovery 支持单播和多播(虽然现代版本推荐使用单播)来帮助新节点发现集群并加入。它通过维护一个种子节点列表(seed hosts)来实现单播发现。

2、主节点选举:

  • 当集群初始化或者当前主节点失效时,Zen Discovery 负责选举出新的主节点。选举过程基于各节点的健康状况、节点的属性(如是否允许成为主节点)以及节点之间的心跳信息来决定最适合担任主节点的候选者。

3、故障检测:

  • 通过周期性的心跳消息,Zen Discovery 监控集群内所有节点的状态。如果一个节点在预定时间内未响应心跳检查,该节点会被标记为失败,从而触发必要的重新分配或主节点选举流程。

4、分片分配与再平衡:

  • 当索引创建或节点加入/离开集群时,Zen Discovery 管理着分片的分配和重新分配过程,确保数据均匀分布在集群中,并尽可能维持副本的高可用性。

5、集群状态管理:

  • 集群状态包含所有索引的元数据、节点列表、分片分配情况等关键信息。主节点负责维护这个状态,并通过 Zen Discovery 机制广播给所有节点,确保集群的一致性。

6、Gossip Protocol(八卦协议):

  • Zen Discovery 实现了一种简化形式的八卦协议来辅助节点间的信息传播,如节点状态的变化、主节点的变更等,这有助于提高信息传播的效率和可靠性。

综上所述,Zen Discovery 是 Elasticsearch 集群稳定运行的核心,它不仅关乎节点的发现与通信,还深入到集群管理的各个方面,确保了数据的高效处理和存储。

ElasticSearch和Solr主要区别

1. 实时性和性能

  • Elasticsearch:Elasticsearch在实时搜索和大数据处理方面表现出色。它默认集成了近实时搜索功能,可以在文档变更时迅速对新文档进行索引,通常能在几秒内完成。随着数据量的增加,Elasticsearch的性能相对稳定,没有明显的性能损失。这使得Elasticsearch非常适合需要实时数据分析和搜索的应用场景,如日志分析、实时搜索等。
  • Solr:Solr在单纯对已有数据进行搜索时速度较快,但在实时建立索引时可能会产生IO阻塞,导致查询性能下降。随着数据量的增加,Solr的搜索效率可能会降低。因此,Solr更适合那些不需要高度实时性的搜索应用,如企业级搜索、电子商务网站的产品搜索等。

2. 数据格式和扩展性

  • Elasticsearch:Elasticsearch主要支持JSON格式的数据,这使得它非常适合处理现代互联网应用中常见的结构化或半结构化数据。Elasticsearch还提供了强大的扩展性,能够轻松扩展到上百个服务节点,支持PB级别的数据。
  • Solr:Solr支持更多类型的数据格式,包括JSON、XML、CSV等。这使得Solr在处理不同类型的数据源时更加灵活。然而,在扩展性方面,Solr可能需要借助额外的工具(如Apache ZooKeeper)来实现分布式部署和管理。

3. 社区和生态系统

  • Elasticsearch:Elasticsearch是一个开源项目,拥有庞大的社区和丰富的生态系统。其API和插件的文档十分丰富,能够满足几乎所有的开发和使用需求。Elasticsearch的社区活跃度很高,新特性和更新层出不穷。
  • Solr:Solr也是一个开源项目,但相较于Elasticsearch的社区,Solr的社区相对较小。虽然Solr拥有广泛的用户群体和成熟的生态系统,但在一些新特性的实现和开发方面可能会稍显滞后。

4. 使用场景

  • Elasticsearch:由于其出色的实时性和扩展性,Elasticsearch更适用于需要实时数据分析和搜索的应用场景,如社交媒体、在线新闻、电子商务网站的个性化推荐等。
  • Solr:Solr则更适合那些对实时性要求不是特别高,但需要处理大量数据和复杂查询的应用场景,如企业级搜索、新闻搜索、文档管理等。

5. 其他区别

  • 安装和配置:Elasticsearch通常被认为比Solr更容易安装和配置,学习成本也相对较低。Solr的安装和配置过程可能相对复杂一些,需要更多的技术知识和经验。
  • 查询语法:Elasticsearch采用了面向文档的查询方式,让用户能够更加方便地进行查询。而Solr支持丰富的查询语法,能够满足更多复杂的查询需求。

综上所述,Elasticsearch和Solr在实时性、数据格式、扩展性、社区和生态系统以及使用场景等方面存在明显的区别。在选择使用哪个搜索引擎时,需要根据具体的应用需求和场景来综合考虑。

ElasticSearch和Solr各自适用于哪些场景

Elasticsearch 适用场景:

  1. 日志和事件数据分析:Elasticsearch 结合 Logstash 和 Kibana 形成的 Elastic Stack,特别适合实时日志收集、分析和可视化,广泛应用于 IT 运维监控、应用程序日志分析等领域。
  2. 实时搜索应用:由于其快速的索引和搜索速度,Elasticsearch 非常适合那些需要即时反馈和高可用性的实时搜索应用,比如电商网站的商品搜索、新闻网站的内容搜索等。
  3. 大规模数据聚合与分析:Elasticsearch 支持复杂的聚合操作,适合处理海量数据的统计分析、实时报表生成和业务洞察。
  4. 物联网(IoT)数据处理:对于不断涌入的传感器数据,Elasticsearch 能够有效管理和分析这些数据流,支持实时监控和预警。

Solr 适用场景:

  1. 企业级搜索:Solr 在企业内部搜索应用中表现出色,如文档管理系统、企业知识库等,支持丰富的查询语法,能够满足复杂的搜索需求。
  2. 电子商务搜索:Solr 提供了多种评分机制、拼写检查、自动补全等功能,适合构建具有个性化推荐和高级筛选功能的电商平台搜索。
  3. 内容管理系统(CMS):对于需要高效检索和管理大量文档、文章等内容的CMS平台,Solr 提供了详尽的全文检索能力。
  4. 多语言支持:Solr 对多语言处理的支持非常全面,包括词干提取、同义词处理等,适合国际化应用中的搜索需求。
  5. 高度定制化需求:Solr 提供了丰富的插件系统和高度可配置性,对于需要深度定制搜索逻辑和索引结构的应用,Solr 提供了更多灵活性。

总的来说,Elasticsearch 更加侧重于实时数据处理和分析,而 Solr 则在企业级搜索、高度定制化方面具有优势。选择哪个工具,应基于具体项目的实际需求、团队技能以及系统的扩展性和维护成本来决定。

Elasticsearch的同类产品有哪些

1、Solr:Solr 是第一个基于 Lucene 核心库功能完备的搜索引擎产品,早期在全文搜索领域有很大优势。但在大数据发展时代,Elasticsearch 因其分布式特性和更丰富的功能特点,逐渐占据主导地位。不过 Solr 依然在一些老旧系统中使用。
2、Lucene:Lucene 是一个搜索的核心库,Elasticsearch 就是在其基础之上构建的。但直接使用 Lucene 需要处理诸多复杂问题,而 Elasticsearch 对其进行了完美封装,设计了友好的 Restful-API,具有开箱即用、分片与副本机制等优势。
3、ParadeDB:这是一个建立在 PostgreSQL 之上的搜索引擎,旨在提供与 Elasticsearch 类似的功能。它利用 PostgreSQL 的强大功能和可靠性,通过扩展 PostgreSQL 的功能,允许用户执行复杂的全文搜索查询。不过 ParadeDB 是一个虚构的产品概念,在实际应用中,可以考虑使用 PostgreSQL 的内置全文搜索功能或其他类似的数据库技术。
4、VictoriaLogs:是一个日志存储数据库,具有极低的资源占有率,相对于 ElasticSearch 来说内存、磁盘、CPU 的占用率都有几十倍的下降。它适用于存储日志相关数据,且没有很强的分词需求的场景,但存在分词功能有限、不支持集群、过期时间无法混用以及默认无法查询所有字段等问题。
5、ZincSearch:是 Elasticsearch 的轻量级替代品,使用较少的资源运行。它操作简单,提供全文索引功能,具有用于安装和运行的单个二进制文件,且无需预先定义模式。同时,它与 Elasticsearch API 兼容以获取数据,并提供了用于查询数据的 Web UI。

Elasticsearch有哪些主要应用场景

Elasticsearch是一个基于Lucene的开源分布式搜索引擎,提供了强大的搜索、分析和聚合功能,支持实时数据处理和可伸缩性。其主要应用场景包括但不限于以下几个方面:
1. 全文搜索
网站搜索:Elasticsearch适用于任何需要全文搜索的网站,可以快速返回用户查询的相关结果。
文档管理系统:在文档管理系统中,Elasticsearch可以帮助用户快速找到所需的文档。
电子商务搜索:为电商平台提供商品搜索功能,支持复杂的查询语句和中文分词,提升用户体验。
2. 日志分析
实时监控:Elasticsearch可以实时地收集、存储和分析日志数据,帮助开发人员和运维人员快速识别和解决问题。
系统监控:通过收集和分析系统日志,Elasticsearch可以帮助监控系统的性能和健康状况。
安全事件管理:Elasticsearch可以收集和存储安全事件日志,并支持安全分析查询和报告,用于网络安全监控、入侵检测和威胁分析。
3. 数据分析
业务分析:Elasticsearch可以对海量数据进行搜索、聚合和分析,支持多种数据格式和数据源,帮助企业了解业务情况、市场趋势等。
商业智能:作为商业智能(BI)平台的后端引擎,Elasticsearch可以存储和检索大规模的数据,并提供快速的搜索和分析功能。
实时分析:Elasticsearch能够处理连续的数据流输入,提供低延迟的数据存储和查询,适用于实时监控系统、业务分析和物联网(IoT)数据处理等场景。
4. 搜索推荐
电商搜索推荐:根据用户的搜索历史和行为数据,进行个性化推荐,提高电商平台的转化率和用户体验。
新闻推荐:为新闻平台提供个性化推荐功能,根据用户的兴趣推送相关内容。
5. 地理空间分析
地图服务:Elasticsearch支持地理坐标索引和查询,可以快速地搜索和聚合地理数据,并支持地图可视化等功能。
物流管理:用于追踪物流信息,提供基于位置的查询和分析功能。
位置服务:为基于位置的服务提供技术支持,如位置感知服务和资产跟踪等。
6. 机器学习
异常检测:通过Elasticsearch的机器学习功能,可以自动检测数据中的异常和异常行为,用于预测维护和用户行为分析。
预测分析:进行数据的预测和趋势分析,为数据驱动决策提供支持。
7. 云服务与托管解决方案
云服务:Elasticsearch可以作为云服务或托管解决方案提供,帮助用户快速部署和扩展Elasticsearch集群,并提供自动备份和灾难恢复功能。

Elasticsearch 中执行搜索的各种可能方式有哪些

在 Elasticsearch 中,执行搜索有多种方式,每种方式适用于不同的使用场景和复杂度要求。以下是几种主要的搜索执行方法:
1、基本查询(Basic Queries):

  • Match Query:最基本的全文本搜索,根据字段值匹配文档。
  • Term Query:精确匹配一个字段的精确值,不考虑分析器。
  • Range Query:用于搜索某个字段值在指定范围内的文档。
  • Bool Query:组合多个查询条件,支持 must、should、must_not 和 filter 子句,实现布尔逻辑搜索。

2、复合查询(Compound Queries):

  • 结合多个基本查询,使用布尔逻辑组合查询条件,增强搜索的灵活性和复杂度。

3、查询字符串(Query String Query):

  • 允许用户输入类似SQL的查询语句,支持多种搜索运算符和通配符,适用于简单到中等复杂的搜索请求。

4、多字段查询(Multi Match Query):

  • 在多个字段上执行相同的查询,适用于不确定关键词会出现在哪个字段的情况。

5、过滤器(Filters):

  • 使用过滤器(如 term filter, range filter)来筛选结果,过滤器不计算相关性得分,通常用于提高性能。

6、聚合(Aggregations):

  • 不直接用于搜索文档,但可以结合查询使用,对结果进行分组、统计、桶分析等,帮助理解数据分布。

7、DSL(Domain Specific Language):

  • Elasticsearch 的查询和过滤是通过 JSON 格式的查询 DSL(Domain Specific Language)来定义的,几乎所有的搜索操作都可以通过编写 DSL 来实现。

8、Search Templates:

  • 可以预先定义查询模板,然后通过传递参数来动态填充查询条件,简化重复查询的编写工作。

9、Scroll API:

  • 用于处理大量数据的分页搜索,不同于传统分页,它提供了一种持久的搜索上下文,可以从头到尾遍历整个结果集,适用于批量处理。

10、Pit(Point in Time)API:

  • 类似于 Scroll API,但更适用于长时间运行的搜索会话,提供了更好的并发性和资源管理。

11、Suggesters:

  • 用于自动完成、拼写建议等功能,可以在用户输入时提供实时的搜索建议。

Elasticsearch 中列出集群的所有索引的语法是什么

在 Elasticsearch 中,要列出集群中的所有索引,你可以使用 GET 请求配合 _cat/indices API。这是一个简洁的方式来查看索引信息。具体的命令语法如下:

GET /_cat/indices?v

这里,
_cat 是一个简化的监控和获取集群状态的接口。
indices 表示你想要查看的是索引信息。
v 参数表示 verbose 模式,会输出更多关于每个索引的详细信息,比如索引的健康状态、文档数量、存储大小等。
如果你想通过 Kibana 的 Dev Tools 或者是 Postman 等工具执行这个命令,直接粘贴上述命令并发送 GET 请求即可。

如果你偏好使用更加结构化的 JSON 响应而非紧凑的表格视图,可以使用下面的命令:

GET /_index
或者
GET /_aliases

这两个命令都会返回索引的详细信息,但格式会比 _cat/indices 更加适合程序解析。不过,请注意,/_aliases 会额外包含索引别名信息。

Elasticsearch 中删除索引的语法是什么

在 Elasticsearch 中删除索引的语法是使用 HTTP DELETE 请求指定索引的 URL。以下是一些常见的删除索引的方式:
1、删除单个索引:

  • DELETE /<index_name>
  • 例如,要删除名为“mikechen”的索引,请求如下:DELETE /mikechen

2、删除多个索引:

  • 可以在一个请求中用逗号分隔各个索引名,例如:DELETE /index1,index2,index3

3、删除所有索引(这是一项非常危险的操作,应当极其谨慎):

  • 使用“_all”通配符,如:DELETE /_all 或者DELETE /*

需注意,删除索引操作是不可逆的,会删除索引及其所有数据。在实际操作前,请确保已正确备份要删除的数据。
另外,为了避免意外地通过通配符或“_all”删除大量索引,可以在 Elasticsearch 的配置文件elasticsearch.yml中设置action.destructive_requires_name:true。这样设置后,将只允许通过指定特定的索引名称来执行删除操作,而不允许使用通配符或“_all”来删除索引。

Elasticsearch 支持哪些类型的查询

Elasticsearch 支持非常丰富的查询类型,这些查询类型可以满足从简单到复杂的数据检索需求。以下是一些主要的查询类型分类及其示例:

  1. Term Query: 用于精确匹配字段的精确值,不考虑分析器的影响。
  2. Match Query: 这是最常用的全文本搜索查询,它会分析查询字符串,并对索引中的文本进行评分。
  3. Bool Query: 允许组合多个查询子句,包括 must(必须匹配)、should(应该匹配)、must_not(必须不匹配)以及 filter(过滤,只影响结果集不参与评分)。
  4. Range Query: 用于筛选某个字段值在特定范围内的文档,如日期范围、数值范围等。
  5. Prefix Query: 匹配具有指定前缀的词。
  6. Wildcard Query: 使用通配符进行模糊匹配,如 te*t 可以匹配 "test" 或 "text"。
  7. Fuzzy Query: 实现模糊搜索,允许一定程度上的拼写错误。
  8. Regexp Query: 使用正则表达式进行匹配。
  9. Match Phrase Query: 类似于 match 查询,但要求短语中的词顺序和间隔都要完全匹配。
  10. Multi Match Query: 在多个字段上执行相同的查询,并可以配置不同字段的权重。
  11. Exists Query: 查找具有指定字段的文档,不论该字段值为何。
  12. Missing Query (Deprecated in newer versions, use bool with must_not + exists instead): 用于查找缺少特定字段的文档。
  13. Nested Query: 针对嵌套对象类型的字段进行查询。
  14. Joining Queries (has_child, has_parent, parent_id): 用于连接索引中嵌套或相关文档的查询。
  15. Aggregation Queries: 虽然不是直接的查询类型,但聚合(Aggregations)功能强大,可以用来统计、分组、桶化(bucketing)数据,例如 terms, histogram, date_histogram, avg, sum, max, min 等。
  16. Script Query: 允许使用自定义脚本进行查询,提供了极大的灵活性。

这只是Elasticsearch查询功能的一小部分概述,实际上Elasticsearch的查询DSL(Domain Specific Language)非常丰富,几乎可以覆盖所有常见的数据检索需求。随着版本更新,新的查询类型和特性也在不断加入。

Elasticsearch 有关的主要可用字段数据类型

核心数据类型
1、字符串类型
text:用于全文检索,搜索时会自动使用分词器进行分词再匹配。
keyword:用于精确匹配,搜索时需要匹配完整的值,不分词。
2、数值类型
整型:byte、short、integer、long。
浮点型:float、half_float、scaled_float、double。
3、日期类型
date:JSON没有日期类型,但在Elasticsearch中,日期可以是包含格式化日期的字符串(如"2015-01-01"或"2015/01/01 12:10:30"),也可以是长整型的时间戳(毫秒或秒)。
4、布尔类型
boolean:接受true或false值,也可以接受代表真或假的字符串和数字。
5、二进制类型
binary:存储经过Base64编码的字符串,默认不存储且不可搜索。
6、范围类型
integer_range、long_range、float_range、double_range、date_range:用于表示一定范围内的数值或日期。
复杂数据类型
1、数组类型
array:Elasticsearch中没有专门的数组类型,但每个字段默认可以包含零个或多个值,且数组中的所有值都必须是相同的数据类型。
2、对象类型
object:允许定义嵌套的对象结构,用于表示复杂的文档结构。
3、嵌套类型
nested:是对象类型的一个专门版本,用于使一组对象被单独地索引和查询,以解决嵌套对象在查询时可能遇到的问题。
地理位置数据类型
1、地理点类型
geo_point:用于存储地理坐标点(经纬度)。
2、地理形状类型
geo_shape:用于存储复杂的地理形状,如多边形等。
专用数据类型
1、IP类型
ip:用于存储和索引IPv4或IPv6地址。
2、自动补全类型
completion:提供自动补全的建议,优化查找时的输入体验。
3、单词计数类型
token_count:统计字符串中的单词数量。
4、附件类型
attachment:支持附件索引,将搜索条件作为文档进行存储。
注意事项
在使用Elasticsearch时,应根据具体的应用场景和数据需求选择合适的字段类型。
字段类型的选择会影响索引的创建、查询的性能以及数据的存储方式。
Elasticsearch支持动态类型检测,但在某些情况下,显式定义字段类型可以获得更好的性能和准确性。
综上所述,Elasticsearch的字段数据类型丰富多样,能够满足各种复杂的搜索和分析需求。在设计和使用Elasticsearch时,合理选择和配置字段类型是非常重要的。

说下ELK Stack及其内容

ELK Stack 是一套流行的数据日志收集、分析和展示的开源解决方案,由 Elasticsearch、Logstash 和 Kibana 三个核心组件组成。这套组合因其强大的数据处理能力和直观的可视化界面,在日志管理、监控分析、故障排查等领域得到广泛应用。下面是每个组件的基本介绍:
Elasticsearch (ES)
Elasticsearch 是一个基于 Lucene 的分布式、RESTful 风格的搜索引擎。它不仅提供了全文检索功能,还支持结构化搜索、聚合分析等高级特性。Elasticsearch 能够存储大量数据,并允许用户通过复杂的查询语句实时检索这些数据。在 ELK Stack 中,Elasticsearch 作为数据存储和索引的核心,负责存储从 Logstash 或者直接发送来的数据,并对这些数据进行索引,以便快速查询和分析。
Logstash
Logstash 是一个数据处理管道,用于收集、解析、转换和输出数据。它可以从各种来源(如文件、数据库、消息队列等)收集数据,通过插件系统进行过滤和丰富(如日志解析、数据格式转换),然后将处理后的数据发送到指定的目的地,通常是 Elasticsearch。Logstash 的强大之处在于其灵活性和可配置性,使得数据处理流程可以根据需求高度定制。
Kibana
Kibana 是一个可视化平台,用于与 Elasticsearch 数据进行交互,提供图表、仪表板、地图等多种可视化选项。开发者和分析师可以通过 Kibana 对存储在 Elasticsearch 中的数据进行探索、分析和展示。Kibana 还包括高级功能,如机器学习用于异常检测、Timelion 用于时间序列分析等,使得数据洞察更加直观和深入。
ELK Stack 的工作流程

  1. 数据收集:Logstash 或者 Beats(轻量级数据采集器,如 Filebeat、Metricbeat)从不同源头收集数据。
  2. 数据处理:Logstash 对收集到的数据进行解析、清洗、转换和富化,准备将其导入 Elasticsearch。
  3. 数据存储与索引:处理后的数据被发送至 Elasticsearch 进行存储和索引,Elasticsearch 负责高效地管理和检索这些数据。
  4. 数据分析与可视化:Kibana 提供界面,让用户能够查询 Elasticsearch 中的数据,并通过丰富的可视化工具展示分析结果,创建仪表板和报告。

ELK Stack 以其强大的数据处理能力、灵活的配置选项和直观的可视化界面,成为众多企业和项目进行日志管理和数据分析的首选工具。

引用:通义千问、文心一言

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

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

相关文章

UWB系列教程(一)UWB简介

UWB系列教程&#xff08;一&#xff09;&#xff1a;UWB简介 超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术作为一种先进的无线通信技术&#xff0c;近年来在多个领域展现出了巨大的潜力和应用前景。 什么是超宽带&#xff08;UWB&#xff09;技术&#xff1f; 超…

Java中的数据缓存技术及其应用

Java中的数据缓存技术及其应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序中&#xff0c;数据缓存是一种重要的技术手段&#xff0c;用于提…

linux中的僵尸进程

僵尸进程&#xff08;Zombie Process&#xff09;是指在操作系统中&#xff0c;一个进程已经终止执行了&#xff08;即已经退出&#xff09;&#xff0c;但是其父进程还没有通过 wait() 系统调用来获取该进程的终止状态&#xff08;exit status&#xff09;&#xff0c;因此该进…

Python面试宝典第10题:精选选择题

题目1 在以下函数中&#xff0c;b和a的关系是___。 def add_one_to_list(lst):lst.append(1)return lsta [1, 2, 3] b add_one_to_list(a) A. b是a的浅拷贝 B. b和a是同一个列表对象 C. b是a的深拷贝 D. b是a的一个子列表 题目2 以下函数的作用是___。 def operate_s…

C++多态的实现原理

静态多态&#xff08;编译期&#xff09; 函数重载&#xff1a; 允许在同一个作用域中声明多个功能类似的同名函数函数的参数列表不同&#xff08;参数个数&#xff0c;参数类型&#xff0c;参数顺序&#xff09;注意&#xff1a;不能通过函数返回值区分&#xff08;name man…

(补充)IDEA项目结构

文章目录 前言一、pycharm中Python项目结构二、IDEA中的java项目结构设计总结前言 本文主要介绍一下pycharm和IDEA里面的项目结构的使用方法 一、pycharm中Python项目结构 之前我们在pycharm做过python项目,项目结构很清晰,还是比较灵活的。 一般项目里面就是 数据驱动、数…

【JavaSE】程序逻辑控制

目录 1. 顺序结构 2. 分支结构 2.1 if语句 2.1.1 语法格式1 2.1.2 语法格式2 2.1.3 语法格式3 2.1.4 练习 2.1.5 注意事项 2.2 switch 语句 3. 循环结构 3.1 while循环 3.1.1 语法格式 3.1.2 代码示例 3.1.3 注意事项 3.2 break 3.3 continue 3.4 for循环 …

scratch3编程05-画笔绘制圆及与圆相关的图形

目录 一&#xff0c;圆 1&#xff0c;空心圆 2&#xff0c;实心圆 3&#xff0c;嵌套在一起的圆 4&#xff0c;圆环 二&#xff0c;五角星 1&#xff0c;空心五角星 1&#xff09;思路 2&#xff09;完整的程序 2&#xff0c;实心五角星 1&#xff09;思路 2&…

C# 预处理器指令

C# 预处理器指令 概述 C# 预处理器指令是编译器在编译代码之前处理的指令。这些指令用于控制编译过程,包括条件编译、编译指令的定义和取消等。预处理器指令以 # 开头,不包含在代码的执行逻辑中,仅在编译阶段起作用。 常用的预处理器指令 1. #define 和 #undef #define…

RK3568笔记三十三: helloworld 驱动测试

若该文为原创文章&#xff0c;转载请注明原文出处。 报着学习态度&#xff0c;接下来学习驱动是如何使用的&#xff0c;从简单的helloworld驱动学习起。 开始编写第一个驱动程序—helloworld 驱动。 一、环境 1、开发板&#xff1a;正点原子的ATK-DLRK3568 2、系统&#xf…

d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题

dcompiler_43.dll 是一个Windows系统中的系统文件&#xff0c;属于DirectX软件的一部分。这个dcompiler_43.dll&#xff08;动态链接库&#xff09;文件主要用于处理与3D图形编程有关的任务&#xff0c;是运行许多游戏和高级图形程序必需的组件之一。那么如果电脑丢失d3dcompil…

香蕉派BPI-Wifi6迷你路由器公开发售

Banana Pi BPI-Wifi6 Mini 公开发售。 Banana Pi BPI-Wifi6 Mini 开源路由器采用Triductor TR6560 TR5220 wifi SOC设计&#xff0c;是一款迷你尺寸的wifi6路由器解决方案。内置高性能双核ARM Cortec A9处理器用于WIFI报文转发或智能业务处理&#xff0c;内置高性能LSW和硬件N…

[NeetCode150] String Encode and Decode

String Encode and Decode Design an algorithm to encode a list of strings to a single string. The encoded string is then decoded back to the original list of strings. Please implement encode and decode Example 1: Input: [“neet”,“code”,“love”,“you…

ubuntu 上vscode +cmake的debug调试配置方法

在ubuntu配置pcl点云库以及opencv库的时候&#xff0c;需要在CMakeLists.txt中加入相应的代码。配置完成后&#xff0c;无法调试&#xff0c;与在windows上体验vs studio差别有点大。 找了好多调试debug配置方法&#xff0c;最终能用的有几种&#xff0c;但是有一种特别好用&a…

ubuntu部署minio集群

minio集群介绍 官方文档&#xff1a;https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-multi-node-multi-drive.html 本方案采用在多节点多驱动器 (MNMD) 或“分布式”配置部署 MinIO。 MNMD 部署提供企业级性能、可用​​性和可扩展性&#…

jmeter-beanshell学习4-beanshell截取字符串

再写个简单点的东西&#xff0c;截取字符串&#xff0c;参数化文件统一用csv&#xff0c;然后还要用excel打开&#xff0c;如果是数字很容易格式就乱了。有同事是用双引号把数字引起来&#xff0c;报文里就不用加引号了&#xff0c;但是这样beanshell处理起来&#xff0c;好像容…

Facebook社交平台的未来发展趋势分析

随着科技和社交需求的不断演变&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;其未来发展的趋势备受关注。从技术创新到社会影响&#xff0c;Facebook正在经历着前所未有的变化和挑战。本文将探讨Facebook未来发展的几个关键趋势&#xff0c;并分析其可能的影响和…

[Linux][Shell][Shell变量]详细讲解

目录 1.本地变量2.变量定义3.取出变量值4.特殊变量5.特殊状态变量6.shell内置的变量命令1.echo2.eval3.exec 7.截取字符串8.特殊shell扩展变量处理1.语法2.应用场景 1.本地变量 定义Shell变量&#xff0c;变量名不需要加$本地变量只在⽤户当前shell⽣存期中有效 2.变量定义 变…

SpringBoot防止重复提交 AOP+自定义注解+redis

1.什么是重复提交呢 在Web开发中&#xff0c;重复提交&#xff08;也称为双重提交或重复表单提交&#xff09;是指用户在没有明确意图的情况下&#xff0c;多次提交同一表单的情况。这可能是由于用户多次点击提交按钮、表单提交过程中的网络延迟导致用户重复点击、或者由于浏览…

双向全桥隔离dc-dc变换器(DAB)

DAB(dual active bridge) 双向全桥隔离dc-dc变换器&#xff08;DAB&#xff09;和Buck/Boost不同&#xff0c;该变换器通过交流电感进行功率传输&#xff0c;其调制和控制不适合直接借鉴已有的研究。 调制挑战&#xff1a;开关网络相对复杂&#xff0c;调制自由度较多&#x…