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

Elasticsearch 中,分片(Shards)数量上限?副本的数量?

概念

ElasticSearch高可用集群架构实战

在这里插入图片描述

在这里插入图片描述

分片数量@1

在 Elasticsearch 中,分片(Shards)是数据存储和索引的基本单位。创建分片时需要考虑多个因素,包括集群的配置、硬件资源(如磁盘空间、内存等)以及性能要求。

Elasticsearch 并没有一个硬性限制来限制单个索引的分片数量,但有一些建议和最佳实践需要遵循,避免过多分片对集群性能产生负面影响。

1. 默认分片数量

在 Elasticsearch 中,每个索引默认会被创建为 5 个主分片(Primary Shards),这个值在创建索引时可以配置。

  • 默认情况下,每个索引有 5 个主分片。
  • 可以通过 number_of_shards 设置来修改默认分片数。
PUT /my-index-000001
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}

2. 分片数的限制

虽然 Elasticsearch 没有明确的最大分片数限制,但以下是一些影响分片数和集群性能的因素:

  • 每个节点的分片限制:Elasticsearch 集群会限制每个节点上可以容纳的最大分片数。每个节点上有太多分片会导致性能问题,因为每个分片都需要内存、CPU 和磁盘空间来进行管理和操作。

  • 内存和硬盘限制:每个分片都消耗一定的内存和磁盘空间。过多的分片会导致资源耗尽,进而影响集群的稳定性和性能。

  • 文件句柄限制:每个分片在操作系统中都会占用文件句柄,如果分片数过多,操作系统的文件句柄数量可能会达到限制,导致 Elasticsearch 无法继续创建分片。

3. 过多分片的影响

如果一个索引的分片数量过多,会带来以下负面影响:

  • 内存压力:每个分片都会消耗一部分内存。分片数过多会导致 JVM 堆内存不足,可能会引发 GC(垃圾回收)压力,从而影响集群的性能。

  • 磁盘碎片:每个分片都有一个固定的文件系统开销,太多的分片会导致磁盘碎片化,降低磁盘的使用效率。

  • 文件句柄限制:每个分片都可能会使用多个文件,操作系统的文件句柄数量是有限的,太多分片可能会触及系统文件句柄限制。

  • 集群管理复杂度:分片过多会增加集群的管理和协调成本。例如,节点间的数据重新分配、集群状态更新和查询都需要更多的资源。

4. 分片数量最佳实践

为了避免上述问题,以下是一些最佳实践来管理分片数量:

  • 合理设置每个索引的分片数:根据数据量、预期的查询负载和硬件资源合理设置分片数量。通常,每个分片的大小应该在 10GB 到 50GB 之间。如果数据量过大,可以考虑使用多个索引而不是一个大索引。

  • 使用索引生命周期管理(ILM):Elasticsearch 提供了索引生命周期管理(ILM)功能,可以帮助自动调整索引的分片数和复制数,适应数据增长和查询模式变化。

  • 使用跨多个节点的分片设计:根据集群节点数和硬件资源,将分片分配到不同的节点上,确保数据均匀分布,避免某些节点过载。

  • 避免过多小分片:过多的小分片会导致管理和查询开销增加。尽量避免创建大量小的索引和分片。可以通过设置合理的分片数和数据量来避免过多的小分片。

5. 分片数量的调优

在创建索引时,你可以根据数据量来调整分片的数量。以下是一些常见的策略:

  • 小数据量:如果每个索引的数据量较小,可以使用较少的分片,例如 12 个主分片。

  • 大数据量:如果数据量较大,可以使用更多的分片。为了确保性能,通常每个分片的大小最好保持在 10GB 到 50GB 之间。

  • 动态索引创建:对于动态索引(例如时间序列数据),可以使用模板来控制分片的数量。可以使用 Elasticserach 的索引模板(Index Templates)来设置默认的分片数。

6. 查询性能和分片

查询性能也受分片数量的影响。过多的分片可能会导致查询时产生更多的协调工作,增加延迟。因此,分片数量需要与查询需求、节点数量以及数据量相匹配。

7. 如何查看当前集群的分片情况

可以使用 _cat/shards API 查看当前集群中所有索引的分片分布情况:

curl -X GET "localhost:9200/_cat/shards?v"

这会列出每个索引的分片、主分片和副本分片的分布情况,帮助你了解当前集群中分片的实际数量和状态。

总结

虽然 Elasticsearch 没有一个硬性限制分片数量的上限,但过多的分片会影响集群的性能和稳定性。合理设置每个索引的分片数量,避免创建过多小分片,确保分片大小和集群规模匹配,是保证集群高效运行的关键。

分片数量@2

在Elasticsearch中合理设置分片数量是优化性能和资源利用的关键。以下从多个角度详细说明如何合理设置分片数量,以避免性能问题和资源浪费:

1. 分片数量的合理范围

  • 单个分片大小:每个分片的大小应控制在30GB到50GB之间,以平衡查询性能和存储效率。
  • 分片数量与节点数量的关系:分片数量通常建议不超过节点数量的3倍,以避免单个节点因分片过多而资源不足。例如,如果集群有6个节点,分片数量可以设置为18个。
  • 动态调整:对于增长型数据集,可以根据数据量和增长趋势逐步增加分片数量,以适应未来的需求。

2. 分片数量的计算公式

  • 经验公式:分片数量 = 节点数量 + 1。例如,一个4节点的集群可以设置5个分片。
  • 硬件限制:每个节点的内存、CPU和磁盘资源有限,因此需要根据硬件配置合理分配分片数量。例如,单节点内存为32GB时,单个分片建议不超过750MB。

3. 避免过度分片

  • 过度分片的影响:过多的分片会导致资源竞争,降低查询性能,增加管理复杂度,并可能导致数据分布不均。
  • 避免频繁重分配:频繁的分片重分配会占用大量集群资源,建议在业务低峰期进行。

4. 考虑查询负载和数据增长

  • 查询负载:如果查询负载较高,可以适当增加分片数量以提高并行处理能力。
  • 数据增长趋势:对于增长型数据集,应预估未来数据量并动态调整分片数量,以确保性能和资源利用。

5. 副本数量的设置

  • 副本的作用:副本用于提高系统的可用性和容错性,但过多的副本会增加存储和计算开销。
  • 副本数量建议:通常设置为1到3个副本,具体取决于数据的重要性和集群的可用性要求。

6. 优化策略

  • 分片合并:定期合并小分片可以减少存储空间并提高查询性能。例如,使用Shrink APIReroute API来调整分片数量。
  • 负载均衡:通过动态迁移热点分片到性能较好的节点,实现集群负载均衡。

7. 实际案例与经验总结

  • 静态数据集:对于静态或缓慢增长的数据集(如2-3GB),推荐设置7到8个分片。
  • 日志型数据集:对于日志型数据集,建议单个分片大小不超过360GB。
  • 高并发场景:在高并发查询场景下,可以通过增加副本数量来提升查询性能。

总结

合理设置Elasticsearch中的分片数量需要综合考虑数据量、节点数量、硬件资源、查询负载以及数据增长趋势等因素。一般建议:

  1. 单个分片大小在30GB到50GB之间;
  2. 分片数量不超过节点数量的3倍;
  3. 根据数据增长趋势动态调整分片数量;
  4. 避免过度分片,减少资源竞争;
  5. 使用副本提高系统可用性,但需权衡存储和计算开销。

通过以上方法,可以有效避免性能问题和资源浪费,同时提升Elasticsearch集群的整体性能和稳定性。

根据提供的信息,无法直接回答如何根据Elasticsearch的硬件配置确定单个分片的最佳大小。然而,我们可以从我搜索到的资料中提取一些相关的信息和建议来帮助确定最佳的分片大小。

1. 分片大小的建议

  • 日志类数据:单个分片建议不超过50GB。
  • 搜索类数据:单个分片建议不超过20GB。
  • GitHub案例:单个分片建议保持在25GB到40GB之间。
  • 一般建议:单个分片建议为30GB到50GB。

2. 硬件配置的影响

  • 存储配置:推荐使用SSD和多块硬盘,避免使用远程挂载存储。
  • RAID 0:可以提高I/O性能,但需注意单点故障风险。
  • 内存配置:单台服务器的堆内存应根据服务器内存大小配置,如31GB/256GB。
  • 节点数据量:单节点数据量建议控制在2TB以内,最大不超过5TB。

3. 其他因素

  • 数据增长趋势:根据数据增长趋势合理分配分片数量,避免过度分配。
  • 查询负载:高查询负载可能需要更多的分片来分散负载和提高并行性。
  • 索引更新频率:如果索引经常更新,可能需要更多的主分片以支持并发写入。

结论

确定单个分片的最佳大小需要综合考虑硬件配置、数据类型、数据量、查询负载和索引更新频率等因素。以下是一些具体的建议:

  1. 日志类数据:单个分片建议不超过50GB,以确保性能和可靠性。
  2. 搜索类数据:单个分片建议不超过20GB,以优化搜索性能。
  3. 一般建议:单个分片建议为30GB到50GB,以平衡性能和资源消耗。
  4. 硬件配置:使用SSD和多块硬盘,避免远程挂载存储,确保内存配置合理。
在Elasticsearch中,如何评估和平衡副本数量与存储开销的关系?

在Elasticsearch中,评估和平衡副本数量与存储开销的关系需要综合考虑多个因素。首先,合理设置索引的分片(shards)和副本(replicas)数量是关键。分片数量过多可能导致开销增加,而分片数量过少可能影响查询性能和数据平衡。例如,对于大型复杂的数据集,最佳的分片数取决于目标节点数,如果计划使用10个节点,则应配置10个分片。

副本数量的增加可以提高读取性能,因为查询请求可以分配到多个副本上进行处理。然而,过多的副本也会增加写入操作的复杂度和资源消耗。因此,建议根据实际业务需求和硬件配置来调整分片和副本的数量,以达到最佳的性能平衡。

此外,定期执行优化操作(如force merge)可以减少索引的碎片,提高查询性能。同时,定期清理不再需要的数据和对象也是必要的。

在具体配置时,可以参考以下建议:

  1. 主分片数量应根据读取负载设置,避免过多的分片导致资源竞争和性能下降。
  2. 副本数量应根据数据冗余和可用性需求设置,但不应过多,以免增加存储和计算开销。
  3. 对于单个节点上的Shard数量,建议不超过5个。
Elasticsearch的Shrink API和Reroute API的具体使用方法和最佳实践是什么?

根据提供的信息,无法回答关于Elasticsearch的Shrink API和Reroute API的具体使用方法和最佳实践的问题。我搜索到的资料主要集中在Shrink API的使用方法和最佳实践,而没有涉及Reroute API的相关内容。

关于Shrink API的具体使用方法和最佳实践

  1. 创建新索引

    • 首先,需要创建一个具有相同设置但主分片数较少的新索引。例如,如果原索引有30个主分片,可以创建一个只有5个主分片的新索引。
  2. 设置原索引为只读状态

    • 确保原索引处于只读状态,以避免在缩分过程中发生数据写入。
  3. 删除不必要的分片

    • 删除原索引中不需要的分片,并将这些分片的数据迁移到新索引中。这一步可以通过PUT请求来实现。
  4. 创建 segments 硬链接

    • 在新旧索引之间创建 segments 硬链接,以确保数据的一致性。
  5. 恢复新索引

    • 对新索引执行恢复操作,使其生效。这一步可以通过POST请求来实现。
  6. 验证和监控

    • 使用cat recovery API查看缩分的进度,确保没有与缩分相关的 recovery 并且集群状态健康时,表示缩分完成。

性能测试和最佳实践

  • 性能测试

    • 测试结果显示,与reindex相比,_shrink API在耗时和资源占用上表现更优。
  • 最佳实践

    • 在测试环境中,将原索引设置为禁止写状态,副本置为0,并将分片汇集到集群中的一个节点,可以实现快速减少主分片数。
    • 在实际操作中,确保集群有足够的磁盘空间来存储所有分片的数据。

注意事项

  • 配置恢复

    • 在收缩之前,如果改变了原索引的相关配置(如路由分配策略),需要在收缩后的索引中恢复这些配置。
  • 监控和调整

    • 在缩分过程中,需要持续监控集群的状态和性能,确保缩分操作不会对系统的正常运行造成影响。

虽然我搜索到的资料主要集中在Shrink API的使用方法和最佳实践,但没有涉及Reroute API的相关内容。

对于不同类型的Elasticsearch集群(如日志型、静态数据集),如何动态调整分片数量以优化性能?

根据提供的信息,无法直接回答如何动态调整Elasticsearch集群中不同类型的分片数量以优化性能的问题。然而,我们可以从我搜索到的资料中提取一些关于分片数量调整的通用建议和最佳实践。

通用建议

  1. 初始分片数量设置

    • 初始分片数量不宜过多,以避免不必要的开销。合理的初始分片数量可以减少后续的调整工作。
  2. 根据数据量和节点数量动态调整

    • 分片数量应根据数据量和节点数量动态调整。例如,对于实时日志分析,可以将分片数量设置为10-20个,具体数量要根据节点数量和硬件资源进行调整。
    • 对于静态数据集,分片数量可以设置为20-50GB,具体取决于数据的增长趋势。
  3. 使用索引生命周期管理(ILM)策略

    • 对于数据量增长过快的情况,可以使用索引生命周期管理(ILM)策略来动态管理分片。ILM可以根据数据的生命周期自动调整分片数量和副本数量。
  4. 分片大小控制

    • 每个分片的大小应控制在合理范围内,例如10GB到50GB之间。过小的分片会导致过多的文件描述符和网络负担,而过大的分片则可能导致数据分布不均。
  5. 副本配置

    • 副本可以增加数据的冗余和高可用性。合理配置副本数量可以提高系统的稳定性和容错能力。
  6. 性能测试和监控

    • 通过测试获取最佳的分片数量和副本数量。使用真实数据和现实查询负载进行测试,以找到最佳的配置。

特定场景下的建议

  1. 日志型集群

    • 对于日志型集群,可以将分片数量设置为10-20个,并根据节点数量和硬件资源进行调整。副本数量可以设置为0或1,以减少不必要的开销。
  2. 静态数据集

    • 对于静态数据集,可以将分片大小设置为接近50GB,并根据数据的增长趋势合理分配分片数量。例如,如果数据量达到200GB,推荐分配7到8个分片。
  3. 大数据集

    • 对于大数据集,建议按照节点数量的1.5~3倍来分配分片数量。随着数据量增加,只需增加节点即可。每个分片不超过30GB。

总结

虽然我搜索到的资料没有直接回答如何动态调整不同类型的Elasticsearch集群的分片数量,但通过合理的初始设置、动态调整、使用ILM策略、控制分片大小和副本数量,以及进行性能测试和监控,可以有效地优化Elasticsearch集群的性能。

在Elasticsearch中,如何有效地进行负载均衡以避免资源竞争和提高查询性能?

在Elasticsearch中,有效地进行负载均衡以避免资源竞争和提高查询性能,可以通过以下几种策略实现:

  1. 节点负载均衡:通过调整副本数来实现负载均衡。确保分片和副本的总数与节点数量相匹配,以均匀分配查询请求。

  2. 查询负载均衡:Elasticsearch通过路由查询到相关的分片,确保查询请求均匀分布在集群中。此外,可以通过协调节点接收用户的请求,并将其分发到合适的数据节点进行处理,然后将结果聚合后返回给客户端。

  3. 数据负载均衡:当新节点加入或现有节点故障时,集群能够动态调整分片分布,以优化性能和可用性。

  4. 负载均衡策略:Elasticsearch提供了多种负载均衡策略,包括轮询(Round-robin)、最少连接(Least Connections)、IP哈希(IP Hash)和随机(Random)等。这些策略可以根据具体需求选择,以实现最佳的负载均衡效果。

  5. 缓存机制:Elasticsearch利用多种缓存机制来提高查询性能,包括查询缓存、字段数据缓存等。这些缓存机制能够减少对磁盘的访问次数,从而加快查询响应速度。

  6. 水平扩展:通过增加节点数量来适应流量增长,确保系统的平稳运行。

  7. 优化索引和查询:通过优化索引、查询和负载均衡等方面,可以提高Elasticsearch的性能,满足大规模数据处理的需求。

副本数量

上限

在 Elasticsearch 中,副本数量number_of_replicas)并没有明确的硬性上限,但有一些与资源、性能和集群规模相关的实际限制。以下是影响副本数量上限的一些因素:

1. 硬件和资源限制

副本数量增加会导致更多的存储空间和计算资源需求。每增加一个副本,Elasticsearch 就会为每个分片创建一个副本分片,这会占用额外的磁盘空间。由于副本分片是数据的完整副本,因此集群的存储能力会直接影响你可以配置的副本数量。

  • 磁盘空间:每增加一个副本,集群的存储需求就会翻倍。因此,集群的存储容量是副本数量的一个主要限制因素。
  • 网络带宽:更多的副本可能导致更多的网络流量,特别是在分片重新分配或集群健康恢复期间。

2. 性能和负载

副本分片不仅占用存储空间,还会影响集群的性能:

  • 查询性能:增加副本数量有助于提高查询性能,因为查询可以并行地在多个副本分片上执行。但如果副本数量过多,可能会对系统造成额外的负载,特别是在查询负载较高的情况下。
  • 写入性能:增加副本数量会影响写入操作的性能,因为每次写入数据都需要同步到所有副本分片。随着副本数量的增加,写入延迟可能会增加。

3. 集群节点数量

副本的数量与集群中可用的节点数量密切相关。如果副本数量过多,而集群节点数不足以容纳这些副本分片,就会导致分片分配失败或集群健康状况变差。

例如:

  • 每个主分片都会有 number_of_replicas 个副本。每个副本分片都会被分配到集群中的节点上。如果副本数量过多,而可用节点数不足,那么副本分片可能无法分配,从而导致集群处于 yellowred 状态。

4. Elasticsearch 内部限制

虽然没有明确的副本数量上限,Elasticsearch 仍然存在一些关于资源分配和性能的限制。随着副本数量的增加,集群的管理复杂度和性能瓶颈可能会变得更加明显。

5. 理想副本数

对于大多数情况,建议副本数量设置为 1 或 2。通常情况下:

  • 副本数量为 1:提供一个冗余副本,确保数据的可靠性,在一个节点故障时不会丢失数据。
  • 副本数量为 2:提供更高的冗余,适用于关键业务场景。

增加副本数量超过 2 并不一定会带来显著的性能提升,尤其是在集群规模较大时,可能会导致过度的资源消耗。

6. 实际部署中副本数量的建议

  • 副本数量为 0:适用于开发或测试环境,或者如果数据没有严格的可靠性要求。
  • 副本数量为 1:适用于大多数生产环境,提供适度的可靠性和性能。
  • 副本数量为 2 或更高:适用于高可用性要求较高的环境,但需确保集群有足够的资源来处理增加的副本分片。

总结

  • 副本数量没有明确的最大限制,但实际可配置的副本数量取决于集群的存储容量、计算资源、节点数量、性能需求和写入/读取负载等因素。
  • 增加副本数量会提高数据冗余性和查询性能,但会增加存储需求和对集群资源的消耗,因此应根据实际需求合理配置副本数量。

副本数量修改

在 Elasticsearch 中,修改索引副本的数量会影响集群的分片分配和重新平衡。副本是原始数据分片的复制品,增加副本数量会提高数据的可靠性和读取性能,但也会增加存储需求。减少副本数量可以节省存储,但会影响数据的冗余和容错能力。

要修改索引的副本数量并触发分片的重新平衡,通常有以下步骤:

1. 查看当前索引的副本数量

首先,你可以使用以下命令查看当前索引的副本数量:

curl -X GET "localhost:9200/_settings?pretty"

该命令将返回当前所有索引的设置,其中包括副本数量。你可以查看返回的 JSON 数据中的 number_of_replicas 配置。

例如:

{"my_index": {"settings": {"index": {"number_of_replicas": "1",  # 这是副本数量"number_of_shards": "5"}}}
}

2. 修改副本数量

要修改副本数量,可以使用 PUT 请求更新索引的设置。假设你要将索引 my_index 的副本数从 1 修改为 2,可以执行以下命令:

curl -X PUT "localhost:9200/my_index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index": {"number_of_replicas": 2}}
}'

如果你想将副本数减少为 0,执行如下命令:

curl -X PUT "localhost:9200/my_index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index": {"number_of_replicas": 0}}
}'

3. 分片重新平衡

修改副本数量后,Elasticsearch 会开始执行分片的重新分配和重新平衡。这意味着 Elasticsearch 将尝试将副本分片分配到不同的节点上,以满足新的副本数量要求。你可以查看集群的健康状态,以观察分片是否已成功分配并且集群是否平衡。

查看集群的健康状态:

curl -X GET "localhost:9200/_cluster/health?pretty"

集群的健康状态可以是:

  • green:所有分片(包括副本分片)都已分配,并且集群健康。
  • yellow:副本分片未完全分配,集群可用,但有冗余副本缺失。
  • red:主分片未分配,集群不可用。

4. 查看分片分配

为了确认分片是否已平衡并且副本分片被正确分配,你可以使用以下命令查看分片的详细状态:

curl -X GET "localhost:9200/_cat/shards?v"

该命令将返回当前所有索引的分片分配信息,你可以查看副本分片是否已被分配到不同的节点上。

5. 集群重新平衡

如果你发现集群在修改副本数量后没有自动平衡,可以手动触发分片的重新平衡。可以使用以下命令来执行集群的重新分配:

curl -X POST "localhost:9200/_cluster/reroute?pretty"

如果需要特定的分配策略或规则,可以在 reroute 请求中指定。

总结

  • 你可以通过修改索引的设置来调整副本数量,使用 PUT 请求来更新 number_of_replicas
  • 修改副本数量后,Elasticsearch 会自动重新平衡分片,确保副本分片按照新的设置分配。
  • 使用 _cluster/health_cat/shards API 来监控集群的健康状态和分片分配情况。
  • 如果集群没有自动重新平衡,你可以手动触发重新分配分片。

修改副本数量时,确保集群有足够的节点和资源来容纳新的副本分片,以避免出现 yellowred 健康状态。
在这里插入图片描述
在这里插入图片描述

相关文章:

Elasticsearch 中,分片(Shards)数量上限?副本的数量?

概念 ElasticSearch高可用集群架构实战 分片数量1 在 Elasticsearch 中,分片(Shards)是数据存储和索引的基本单位。创建分片时需要考虑多个因素,包括集群的配置、硬件资源(如磁盘空间、内存等)以及性能要…...

Unity入门1

安装之后无法获得许可证,可以考虑重装 新建项目 单击空白处生成脚本 双击c#文件 会自动打开vstudio 检查引用 如果没有引用,重开vstu,或者重新加载项目 hierarchy层级 scenes场景 assets资产 inspector督察 icon图标 资源链接&…...

网络模型简介:OSI七层模型与TCP/IP模型

计算机网络是现代信息社会的基石,而网络通信的基础在于理解网络模型。网络模型是对通信过程的抽象,它帮助我们理解数据从源到目的地的传输过程。常见的网络模型有 OSI 七层模型 和 TCP/IP 模型,这两种模型在理论和实践中都起着重要作用。 一、…...

软件测试压力太大了怎么办?

本文其实是知乎上针对一个问题的回答: 目前在做软件测试,主要负责的是手机端的项目测试,项目迭代很快,每次上线前验正式都会发现一些之前验测试包时候没有发现的问题,压力太大了,应该怎么调整 看过我之前其…...

微信小程序-点餐(美食屋)02开发实践

目录 概要 整体架构流程 (一)用户注册与登录 (二)菜品浏览与点餐 (三)订单管理 (四)后台管理 部分代码展示 1.index.wxml 2.list.wxml 3.checkout.wxml 4.detail.wxml 小结优点 概要…...

转换算术表达式

文章目录 构造二叉树表示的算术表达式:按先序次序输入二叉树中结点的值(操作数及运算符均以一位字符表示,注意转换), #字符表示空树,如上图的算术表达式 输入2##*3##4## 输入格式 第一行输入表示要计算的算术表达式的二叉树结点的…...

99.17 金融难点通俗解释:归母净利润

目录 0. 承前1. 简述2. 比喻:小明家的小卖部2.1 第一步:计算收到的所有钱2.2 第二步:减去各种支出2.3 第三步:计算能带回家的钱 3. 生活中的例子3.1 好的经营情况3.2 一般的经营情况3.3 不好的经营情况 4. 小朋友要注意4.1 为什么…...

【Flutter】旋转元素(Transform、RotatedBox )

这里写自定义目录标题 Transform旋转元素可以改变宽高约束的旋转 - RotatedBox Transform旋转元素 说明:Transform旋转操作改变了元素的方向,但并没有改变它的布局约束。因此,虽然视觉上元素看起来是旋转了,但它仍然遵循原始的宽…...

MYSQL学习笔记(六):聚合函数、sql语句执行原理简要分析

前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是内容较少,主要讲解:聚合函数和简要介绍sql语句执行过…...

thinkphp6+swoole使用rabbitMq队列

安装think-swoole安装 composer require php-amqplib/php-amqplib,以支持rabbitMq使用安装rabbitMq延迟队列插件 安装 rabbitmq_delayed_message_exchange 插件,按照以下步骤操作: 下载插件:https://github.com/rabbitmq/rabbitmq-delayed-…...

大模型开发 | RAG在实际开发中可能遇到的坑

近年来,大语言模型 (LLM) 的飞速发展令人瞩目,它们在各个领域展现出强大的应用潜力。然而,LLM 也存在一些固有的局限性,例如知识更新滞后、信息编造 (幻觉) 等问题。为了克服这些挑战,检索增强生成 (Retrieval-Augment…...

mybatis是什么?有什么作用?mybatis的简单使用

mybatis是什么? MyBatis 是一个持久层框架。 有什么作用? 简化了对数据库数据的操作。 如何简化数据操作的? MyBatis 通过提供 SQL 映射、动态 SQL、结果映射、事务管理等功能,我们直接去用就可以了。 怎么使用?&…...

求平均年龄(信息学奥赛一本通-1059)

【题目描述】 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 【输入】 第一行有一个整数n(1≤n≤100),表示学生的人数。其后n行每行有…...

CY T 4 BB 5 CEB Q 1 A EE GS MCAL配置 - MCU组件

1、ResourceM 配置 选择芯片信号: 2、MCU 配置 2.1 General配置 1) McuDevErrorDetect: - 启用或禁用MCU驱动程序模块的开发错误通知功能。 - 注意:采用DET错误检测机制作为安全机制(故障检测)时,不能禁用开发错误检测。2) McuGetRamStateApi - enable/disable th…...

10 Hyperledger Fabric 介绍

简介 HypeLedger(超级账本)是由Linux基金会2015年创建的首个面向企业应用场景的开源分布式账本平台。 HypeLedger Fabric是HypeLedger种的区块链项目之一HypeLedger Fabric引入权限管理在架构设计上支持可插拔、可扩展是首个面向联盟链场景的开源项目 …...

Word 中实现方框内点击自动打 √ ☑

注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…...

噪声算法 纹理

噪声是一种程序生成的随机或伪随机数据,在图形学中常用来创建各种自然现象和复杂纹理效果。 它的本质是一种由数学算法公式生成的有规则性或可控的随机数据。 通过噪声算法生成的随机数据具有以下特点: 随机性:噪声数据本质上是随机的&#…...

hexo + Butterfly搭建博客

Hexo‌是一个基于Node.js的静态网站生成器,主要用于快速搭建博客和个人网站。它使用Markdown语法编写文章,能够迅速生成静态页面并部署到服务器上。 配置node 使用nvm安装node(v16.13.2)后配置镜像 安装并使用node: nvm install 16.13.2 n…...

05.KNN算法总结

KNN算法总结 1 k近邻算法优缺点汇总 优点: 简单有效重新训练的代价低适合类域交叉样本 KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适…...

CentOS 7 搭建lsyncd实现文件实时同步 —— 筑梦之路

在 CentOS 7 上搭建 lsyncd(Live Syncing Daemon)以实现文件的实时同步,可以按照以下步骤进行操作。lsyncd 是一个基于 inotify 的轻量级实时同步工具,支持本地和远程同步。以下是详细的安装和配置步骤: 1. 系统准备 …...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...