【大数据】MySQL与Elasticsearch的对比分析:如何选择适合的查询解决方案

目录
  • 引言
  • 一、全文检索(Full-text Search)
    • 1.1 Elasticsearch(ES)
    • 1.2 MySQL
    • 1.3 对比总结
  • 二、精确查询(Exact Match Queries)
    • 2.1 MySQL
    • 2.2 Elasticsearch
    • 2.3 对比总结
  • 三、复杂查询和聚合(Complex Queries & Aggregations)
    • 3.1 Elasticsearch
    • 3.2 MySQL
    • 3.3 对比总结
  • 四、数据量和性能(Data Volume and Performance)
    • 4.1 Elasticsearch (ES)
    • 4.2 MySQL
    • 4.3 对比总结
  • 五、实时性(Real-time Processing)
    • 5.1 MySQL
    • 5.2 Elasticsearch
    • 5.3 对比总结
  • 六、资源消耗(Resource Consumption)
    • 6.1 Elasticsearch
    • 6.2 MySQL
    • 6.3 对比总结:
  • 七、总结与建议
    • 7.1 选择建议
    • 7.2 性能优化建议
  • 总结

引言

在当今大数据时代,信息的快速检索和高效处理对于企业和开发者至关重要。无论是需要处理海量文本数据的全文检索,还是要求高效精确查询的数据库系统,选择合适的技术方案将直接影响系统的性能和用户体验。MySQL和Elasticsearch作为两种广泛使用的数据库技术,它们各自具有独特的优势和适用场景。本文将通过对比两者在不同查询场景下的表现,帮助您在实际应用中做出更明智的选择。

我们将从以下几个维度进行分析:全文检索、精确查询、复杂查询与聚合、大数据量处理、实时性、资源消耗等,并结合不同场景给出选择建议,帮助开发者在特定需求下做出最优决策。

一、全文检索(Full-text Search)

1.1 Elasticsearch(ES)

  • 专为全文检索设计:Elasticsearch 是一个基于 Apache Lucene 的搜索引擎,专为高效的全文搜索而设计。它利用 倒排索引 来加速搜索过程。倒排索引会将文档中的每个词汇映射到包含该词汇的文档集合中,从而使得查询能够迅速定位相关文档。
  • 强大的分词和分析功能:ES 配备了先进的文本分析器,支持对中文、英文等多语言的有效分词。这些分析器能够处理复杂的查询类型,包括模糊查询、通配符查询、短语查询等,表现尤为出色。对于中文等语言的特殊分词规则,ES 提供了针对性的支持。
  • 分布式架构:ES 的分布式设计使得它能够在大规模数据集下进行高效的检索,并在多节点之间分配数据,从而提高查询的并发处理能力和系统的伸缩性。

1.2 MySQL

  • 全文索引(FULLTEXT):从 MySQL 5.6 版本起,MySQL 引入了全文索引功能。它适用于简单的文本搜索,例如可以对某个字段使用全文索引,进行如 MATCH...AGAINST 的查询。
  • 适用场景:MySQL 的全文索引适合于中小规模的数据集,特别是查询不涉及复杂的分析和处理时。在数据量较小(如百万级)时,性能较好。
  • 性能瓶颈:尽管 MySQL 支持全文索引,但在面对大规模数据时,尤其是数据量达到千万级甚至更高时,性能会明显下降。索引建立与查询时的性能瓶颈主要体现在查询速度、查询的并发量以及维护成本上。

1.3 对比总结

  • 全文检索:当数据规模较小且查询简单时,MySQL 的全文索引足以满足需求。但在大规模数据和高并发场景下,Elasticsearch 的性能更为优秀,尤其是在处理复杂查询、模糊查询时,ES 的表现更具优势。

#mermaid-svg-hw6VZzSvipD2cq9B {font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .error-icon{fill:#552222;}#mermaid-svg-hw6VZzSvipD2cq9B .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hw6VZzSvipD2cq9B .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hw6VZzSvipD2cq9B .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hw6VZzSvipD2cq9B .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hw6VZzSvipD2cq9B .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hw6VZzSvipD2cq9B .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hw6VZzSvipD2cq9B .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hw6VZzSvipD2cq9B .marker.cross{stroke:#333333;}#mermaid-svg-hw6VZzSvipD2cq9B svg{font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hw6VZzSvipD2cq9B .label{font-family:“trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .cluster-label text{fill:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .cluster-label span{color:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .label text,#mermaid-svg-hw6VZzSvipD2cq9B span{fill:#333;color:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .node rect,#mermaid-svg-hw6VZzSvipD2cq9B .node circle,#mermaid-svg-hw6VZzSvipD2cq9B .node ellipse,#mermaid-svg-hw6VZzSvipD2cq9B .node polygon,#mermaid-svg-hw6VZzSvipD2cq9B .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hw6VZzSvipD2cq9B .node .label{text-align:center;}#mermaid-svg-hw6VZzSvipD2cq9B .node.clickable{cursor:pointer;}#mermaid-svg-hw6VZzSvipD2cq9B .arrowheadPath{fill:#333333;}#mermaid-svg-hw6VZzSvipD2cq9B .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hw6VZzSvipD2cq9B .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hw6VZzSvipD2cq9B .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hw6VZzSvipD2cq9B .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hw6VZzSvipD2cq9B .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hw6VZzSvipD2cq9B .cluster text{fill:#333;}#mermaid-svg-hw6VZzSvipD2cq9B .cluster span{color:#333;}#mermaid-svg-hw6VZzSvipD2cq9B div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hw6VZzSvipD2cq9B :root{–mermaid-font-family:“trebuchet ms”,verdana,arial,sans-serif;}#mermaid-svg-hw6VZzSvipD2cq9B .watermark>*{fill:#fff!important;stroke:none!important;font-size:15px!important;opacity:0.8!important;}#mermaid-svg-hw6VZzSvipD2cq9B .watermark span{fill:#fff!important;stroke:none!important;font-size:15px!important;opacity:0.8!important;}

CSDN @ 2136

Elasticsearch

倒排索引

分词与分析

MySQL

全文索引

性能瓶颈

CSDN @ 2136

二、精确查询(Exact Match Queries)

2.1 MySQL

  • 高效的精确查询:MySQL 在执行精确匹配查询时表现优异。对于使用了主键或唯一索引的查询,如 SELECT * FROM table WHERE id = 1,MySQL 能够通过索引快速定位记录,查询速度几乎是即时的。
  • 单表查询优化:在简单的单表查询场景中,MySQL 利用 B+ 树等数据结构进行快速索引查找,查询效率非常高。

2.2 Elasticsearch

  • 精确查询支持:ES 也能进行精确查询,特别是基于 term 查询的精确匹配。尽管 ES 在分布式环境下的查询可以处理更高的并发,但对于单表的精确查询,MySQL 的性能通常更优。ES 在精确查询时通常会有一定的额外开销,尤其是数据量较小的情况。
  • 分布式查询优势:ES 的优势主要体现在处理大规模数据时,它的分片机制和并行查询能极大提高查询效率,特别是跨多个字段和多个节点的复杂查询。

2.3 对比总结

  • 精确查询:对于简单的精确查询,MySQL 通常表现更好,尤其是在表结构优化良好并且有合适索引的情况下。对于小规模数据,MySQL 的查询速度几乎即时。而 Elasticsearch 更适合处理复杂的精确查询,特别是在需要横向扩展的场景中。

三、复杂查询和聚合(Complex Queries & Aggregations)

3.1 Elasticsearch

  • 复杂查询支持:Elasticsearch 非常擅长处理复杂查询,包括多条件查询、范围查询、嵌套查询等。它提供了强大的查询 DSL,可以灵活地组合多个查询条件,实现高效的查询。
  • 聚合查询:ES 在聚合方面的表现尤为出色。它支持复杂的聚合查询,可以在单次请求中实现多层级的数据统计、分组、排序等操作。例如,可以对数据进行 分组聚合求平均值最大值/最小值 等操作。ES 的聚合框架非常高效,尤其在数据量庞大的情况下,能够快速返回结果。
  • 高并发查询:由于 Elasticsearch 采用了分布式架构,它能够在高并发查询和大数据量环境下保持高效性能,处理多种类型的复杂查询。

3.2 MySQL

  • 复杂查询支持:MySQL 支持各种复杂查询,包括多表联接(JOIN)、子查询、分组(GROUP BY)、排序(ORDER BY)等操作。对于小数据集或中等规模数据的复杂查询,MySQL 能够提供良好的性能。
  • 聚合查询:MySQL 也能进行聚合查询(如使用 COUNT()SUM()AVG() 等函数),并能通过索引优化这些查询。然而,当数据量增大时,尤其是涉及多表联接、大范围分组和排序时,MySQL 的性能会显著下降。
  • 性能瓶颈:在处理复杂查询时,MySQL 可能会遇到性能瓶颈,尤其是在查询涉及多个大表连接、复杂的 JOIN 操作或大量数据聚合时。

3.3 对比总结

  • 复杂查询与聚合:在处理复杂查询和聚合方面,Elasticsearch 相对于 MySQL 具有显著的优势。特别是在面对大规模数据和高并发请求时,ES 的分布式架构能够有效提升查询性能。而 MySQL 在处理中小规模数据时也能很好地支持复杂查询,但在大数据量下会逐渐暴露出性能瓶颈。

#mermaid-svg-oPIZFpdVObVYKa6g {font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .error-icon{fill:#552222;}#mermaid-svg-oPIZFpdVObVYKa6g .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oPIZFpdVObVYKa6g .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-oPIZFpdVObVYKa6g .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oPIZFpdVObVYKa6g .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oPIZFpdVObVYKa6g .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oPIZFpdVObVYKa6g .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oPIZFpdVObVYKa6g .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oPIZFpdVObVYKa6g .marker.cross{stroke:#333333;}#mermaid-svg-oPIZFpdVObVYKa6g svg{font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oPIZFpdVObVYKa6g .label{font-family:“trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .cluster-label text{fill:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .cluster-label span{color:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .label text,#mermaid-svg-oPIZFpdVObVYKa6g span{fill:#333;color:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .node rect,#mermaid-svg-oPIZFpdVObVYKa6g .node circle,#mermaid-svg-oPIZFpdVObVYKa6g .node ellipse,#mermaid-svg-oPIZFpdVObVYKa6g .node polygon,#mermaid-svg-oPIZFpdVObVYKa6g .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oPIZFpdVObVYKa6g .node .label{text-align:center;}#mermaid-svg-oPIZFpdVObVYKa6g .node.clickable{cursor:pointer;}#mermaid-svg-oPIZFpdVObVYKa6g .arrowheadPath{fill:#333333;}#mermaid-svg-oPIZFpdVObVYKa6g .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oPIZFpdVObVYKa6g .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oPIZFpdVObVYKa6g .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-oPIZFpdVObVYKa6g .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-oPIZFpdVObVYKa6g .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oPIZFpdVObVYKa6g .cluster text{fill:#333;}#mermaid-svg-oPIZFpdVObVYKa6g .cluster span{color:#333;}#mermaid-svg-oPIZFpdVObVYKa6g div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oPIZFpdVObVYKa6g :root{–mermaid-font-family:“trebuchet ms”,verdana,arial,sans-serif;}#mermaid-svg-oPIZFpdVObVYKa6g .watermark>*{fill:#fff!important;stroke:none!important;font-size:15px!important;opacity:0.8!important;}#mermaid-svg-oPIZFpdVObVYKa6g .watermark span{fill:#fff!important;stroke:none!important;font-size:15px!important;opacity:0.8!important;}

CSDN @ 2136

Elasticsearch

复杂查询支持

聚合查询

MySQL

多表查询

复杂聚合

CSDN @ 2136

四、数据量和性能(Data Volume and Performance)

4.1 Elasticsearch (ES)

  • 分布式架构:Elasticsearch 采用分布式架构,数据通过分片进行分布存储,并支持副本机制。这使得它非常适合处理大规模数据,可以在多个节点间分担查询和索引负载,从而提升查询性能。
  • 横向扩展:随着数据量的增长,Elasticsearch 通过增加节点(横向扩展)来处理更大规模的数据。横向扩展使得它可以在多台机器之间分配负载,保持查询性能,即便在数据量激增的情况下也能高效工作。

4.2 MySQL

  • 单机架构:MySQL 本身是基于单机架构的数据库,虽然可以通过分区、分库和分表的方式处理大数据,但这些操作通常需要复杂的管理和调优。在面对庞大数据集时,性能可能会受到瓶颈限制,尤其是当数据量达到一定规模时。
  • 性能瓶颈:MySQL 在处理非常大数据量的查询时,尤其是涉及到多表 JOIN 或复杂的聚合操作时,可能会遭遇性能瓶颈。对比于分布式系统,MySQL 的扩展性较差,且其性能提升有限。

4.3 对比总结

  • 数据量和性能:Elasticsearch 在处理大规模数据时表现更为优异,尤其是在分布式架构下,通过横向扩展能够保持较高的查询性能。MySQL 在大数据量的场景下,可能会面临单机架构的性能瓶颈,尤其是涉及复杂查询时。

五、实时性(Real-time Processing)

5.1 MySQL

  • OLTP 优势:MySQL 非常适合处理在线事务处理(OLTP)场景,支持事务机制,可以保证数据的一致性和可靠性。它在实时写入和快速查询方面表现出色,适合需要频繁更新和快速查询的应用。
  • ACID 特性:MySQL 提供了完整的 ACID(原子性、一致性、隔离性、持久性)支持,确保数据一致性和事务的可靠性,非常适合处理要求严格数据一致性的场景。

5.2 Elasticsearch

  • OLAP 优势:Elasticsearch 主要用于在线分析处理(OLAP),尤其在处理大规模数据查询时表现优越。尽管它也支持写入操作,但写入的延迟相对较高,因此更适用于查询密集型任务,尤其是涉及全文检索和大规模分析时。
  • 近实时搜索:Elasticsearch 提供近实时(NRT)搜索能力,这意味着它的数据更新在小时间延迟后即可对外提供服务,但与 MySQL 的实时写入相比,Elasticsearch 的写入延迟较高。

5.3 对比总结

  • 实时性:MySQL 更适合处理高频繁的写入和实时事务,确保低延迟的实时数据处理。而 Elasticsearch 更擅长于近实时的数据查询和分析,适合数据量大且查询要求高的应用场景。

六、资源消耗(Resource Consumption)

6.1 Elasticsearch

  • 内存消耗较大:作为一个分布式系统,Elasticsearch 通常需要较高的内存和计算资源,尤其是在处理大规模数据时。为确保查询性能,Elasticsearch 需要合理配置较强的硬件资源,特别是在启用缓存、分片等机制时。
  • 计算密集型:Elasticsearch 在执行复杂查询、聚合操作时对 CPU 和内存的消耗较大,尤其在查询大型数据集时,可能需要更强的硬件支持。

6.2 MySQL

  • 资源消耗较低:MySQL 在资源消耗方面相对较轻,特别是在数据集较小或中等规模时,资源消耗远低于 Elasticsearch。在单机模式下,MySQL 对硬件要求相对较低。

6.3 对比总结:

  • 资源消耗:MySQL 更适合在硬件资源有限的环境中使用,尤其是在数据量相对较小或对实时性要求较高的场景。Elasticsearch 在处理大规模数据和复杂查询时需要更多的内存和计算资源,因此适合硬件资源充足的场景。

七、总结与建议

场景

Elasticsearch (ES)

MySQL

全文检索

更快,倒排索引优化全文检索

性能不如 ES,适合小规模文本查询

精确查询

可以处理,但性能不如 MySQL

对于精确查询性能优秀,特别是在使用索引时

复杂查询和聚合

优势明显,能高效处理多条件查询和聚合

支持复杂查询,但数据量增大时性能下降

大数据处理

支持分布式架构,横向扩展性能优异,适合大数据量

在大数据量下性能瓶颈明显,尤其是多表JOIN操作

实时性

适合近实时数据查询,写入延迟稍高

适合OLTP,实时事务写入和查询性能优秀

资源消耗

高,尤其在大数据和复杂查询场景下

资源消耗较低,适合资源受限的场景

7.1 选择建议

  1. 当应用需求是复杂的全文检索或需要快速处理大量文本数据时

    • 选择 Elasticsearch,它专为大规模文本数据的搜索与分析设计,提供优化的全文检索性能,尤其在多条件查询和复杂查询下表现优秀。
  2. 当应用需要进行精确的关系型数据查询、事务处理和高频繁写入时

    • 选择 MySQL,它在处理结构化数据、事务和精确查询时具有优势,适合保证数据一致性的 OLTP 场景。
  3. 当数据量达到数百万、甚至数十亿时

    • 选择 Elasticsearch,它的分布式架构和横向扩展能力使其能够有效应对大数据量的查询请求,而 MySQL 在这类场景中可能遭遇性能瓶颈,尤其是多表 JOIN 或复杂聚合时。
  4. 当实时性要求较高时(例如,高频写入和低延迟查询)

    • 选择 MySQL,它的事务性支持和低延迟写入能力使其非常适合需要快速写入和实时处理的应用。Elasticsearch 更适合用于近实时数据查询,但写入延迟较高。
  5. 当资源受限或硬件条件较差时

    • 选择 MySQL,它的资源消耗较低,适合在硬件资源有限的环境下使用。Elasticsearch 需要较强的硬件支持,特别是在处理大数据和复杂查询时。

7.2 性能优化建议

  1. Elasticsearch 性能优化

    • 索引优化:合理设计索引结构,尽量减少不必要的字段和映射。选择合适的分词器和分析器来提高查询效率。
    • 缓存机制:合理配置缓存,尤其在查询频繁的场景中,利用 Elasticsearch 的节点缓存、字段缓存和过滤缓存来提升性能。
    • 数据分片:确保合理的分片设计。分片过多或过少都会影响查询性能,应该根据数据量和查询负载动态调整分片数。
    • 集群扩展:随着数据量的增加,考虑横向扩展 Elasticsearch 集群,增加节点数来分担查询和写入压力。
  2. MySQL 性能优化

    • 索引优化:确保常用查询字段已创建索引,避免全表扫描。尤其在多表连接查询中,合理使用联合索引。
    • 查询优化:使用 EXPLAIN 分析查询执行计划,避免不必要的全表扫描和嵌套查询,必要时可将复杂查询拆分成多个小查询。
    • 数据库分区和分库分表:对于大数据量表,使用分区表减少扫描范围。对于超大规模应用,考虑使用分库分表来分担负载。
    • 缓存机制:引入外部缓存(如 Redis)缓存热点数据,减少数据库负载,尤其是对于频繁查询的数据。

总结

  • Elasticsearch:适用于大规模文本数据的快速全文检索和复杂聚合分析,能够处理大数据量且具有优秀的分布式架构支持。特别适合需要高效搜索、实时数据分析和日志处理的场景。

  • MySQL:对于需要精确查询、强事务支持(ACID)、以及实时写入的应用场景,MySQL无疑是更为合适的选择。它在数据结构简单、查询要求较为直接的系统中表现优异。

每种技术都有其独特的优势,选择合适的数据库和搜索引擎应依据具体的应用场景、性能需求和数据规模。合理的技术选型不仅能够优化系统性能,还能提升用户体验,实现业务目标的最大化。


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

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

相关文章

【前端】CSS学习笔记(1)

目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式(行内样式)内部样式外部样式(推荐) 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程:当事件比较简单的时候,利用面向过程,注重的是事件的具体的步骤/过程,注重的是过程中的具体的行为,以函数为最小单位,考虑怎么做。 面向对象:注重找“参与者…

电阻电位器可调电阻信号隔离变送器典型应用

电阻电位器可调电阻信号隔离变送器典型应用 产品描述: 深圳鑫永硕科技的XYS-5587系列是一进一出线性电子尺(电阻/电位计信号及位移)信号隔离变送器,是将输入电阻,线性电子尺,角度位移传感器信号进行采集,隔离,放大并转换成模拟量信号的小型仪表设备,并以…

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…

文件系统格式RAW数据恢复全攻略

一、RAW文件系统格式深度解析 在数据存储的世界里,文件系统扮演着至关重要的角色,它负责管理和组织硬盘、U盘、SD卡等存储设备上的数据。而RAW文件系统格式,作为一种特殊状态,常常让许多用户感到困惑与不安。RAW格式并非一种标准…

探索 Stable-Diffusion-Webui-Forge:更快的AI图像生成体验

目录 简介🌟 主要特点📥 安装步骤1. 下载2. 配置环境和安装依赖3. 模型目录说明 🚀 运行 Stable-Diffusion-Webui-Forge1. 进入项目目录2. 运行项目3. 打开页面 🎨 使用体验常见问题📝 小结 简介 Stable-Diffusion-We…

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

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

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用. 本地部署,注重隐私,简单高效的MYSQL审计平台。 它可以通过流程审批,实现真实线上环境sql的审核和执行,还可以回滚执行,能够确保线上SQL更新的可靠性…

PyTorch使用教程(10)-torchinfo.summary网络结构可视化详细说明

1、基本介绍 torchinfo是一个为PyTorch用户量身定做的开源工具,其核心功能之一是summary函数。这个函数旨在简化模型的开发与调试流程,让模型架构一目了然。通过torchinfo的summary函数,用户可以快速获取模型的详细结构和统计信息&#xff0…

【2024 博客之星评选】请继续保持Passion

我尝试复盘自己2024年走的路,希望能给诸君一些借鉴。 文章目录 回头望感想与收获成长与教训今年计划感恩一些体己话 回头望 回望我的2024年,年初拿高绩效,但感觉逐渐被公司一点点剥离出中心;年中一直在学习防患于未然&#xff1b…

C++ 类- 构造和析构

空类 class A {};空类大小: sizeof(A) 1编译器会默认生成 6 个成员函数: class A { public:A();//构造函数 - 完成对象初始化工作~A();//析构函数 - 完成对象的资源清理A(const A& a);//拷贝构造函数 - 使用同一类中之前创建的对象来初始化新创建…

集群、分布式及微服务间的区别与联系

目录 单体架构介绍集群和分布式架构集群和分布式集群和分布式区别和联系 微服务架构的引入微服务带来的挑战 总结 单体架构介绍 早期很多创业公司或者传统企业会把业务的所有功能实现都打包在一个项目中,这种方式就称为单体架构 以我们都很熟悉的电商系统为例&…

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题。 安装 rdp 服务: yum install -y epel-release yum install -y xrdp或者如下: 可以通过下载rpm软件包,然后rpm方式安装。访问xrdp官网https…

Maven多环境打包方法配置

简单记录一下SpringBoot多环境打包配置方法,分部署环境和是否包含lib依赖包两个维度 目录 一、需求说明二、目录结构三、配置方案四、验证示例 一、需求说明 基于Spring Boot框架的项目分开发,测试,生产等编译部署环境(每一个环境…

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章:三层架构和MVC 三层架构: 开发服务器端,一般基于两种形式,一种 C/S 架构程序,一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序,B/S 架构又分成了三层架构三层架构: 表现…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github,搜索github-chinese2.打开项目,打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动,找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大

2024年1月12日,第四届OceanBase数据库大赛决赛在北京圆满落幕。在大赛的颁奖典礼上,OceanBase 首席科学家阳振坤老师为同学们献上了一场主题为“爱上数据库”的公开课,他不仅分享了个人的成长历程,还阐述了对数据库行业现状与未来…

2.1.3 第一个工程,点灯!

新建工程 点击菜单栏左上角,新建工程或者选择“文件”-“新建工程”,选择工程类型“标准工程”选择设备类型和编程语言,并指定工程文件名及保存路径,如下图所示: 选择工程类型为“标准工程” 选择主模块机型; 选择熟悉的编程语言; 填写工程名,选择存放路径; 确定。 编…

Chrome谷歌浏览器如何能恢复到之前的旧版本

升级了谷歌最新版不习惯,如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本,但是有种种的不适应,如何能恢复到之前的旧版本呢?我们来看看操作步骤,而且无需卸载重装。 怎么恢复Chrome 之前版本&a…

IO进程----进程

进程 什么是进程 进程和程序的区别 概念: 程序:编译好的可执行文件 存放在磁盘上的指令和数据的有序集合(文件) 程序是静态的,没有任何执行的概念 进程:一个独立的可调度的任务 执行一个程序分配资…