Elasticsearch 8.16.0:革新大数据搜索的新利器

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

Elasticsearch 8.16.0:革新大数据搜索的新利器

一、引言

在当今数字化飞速发展的时代,数据量呈爆炸式增长,数据的复杂性也日益提高。企业和开发者们都在寻求更高效、更强大的搜索和分析解决方案,以应对海量数据带来的挑战。Elasticsearch 作为一款广受欢迎的开源搜索和分析引擎,一直在不断进化,以满足用户日益增长的需求。

在这里插入图片描述
本次Elasticsearch 8.16.0 版本的发布(Release date: November 13, 2024),带来了一系列具有变革性的新功能,进一步巩固了其在数据领域的重要地位。其主要新功能如下:

1. BBQ(Better Binary Quantization)‌

这是一种创新的向量数据量化方法,旨在提高向量数据的压缩率,同时保持高召回率和自定义选项BBQ通过标量量化和位向量支持,能够在不影响准确性的情况下将向量数据的压缩率提高32倍,特别适用于大型工作负载‌。

2. 倒数排名融合(Reciprocal Rank Fusion, RRF)‌

RRF是一种生产就绪的混合对话搜索功能,提供了便捷的结果归一化和组合能力,能够增强生成式 AI 驱动的搜索体验‌。

3. 检索器和开放推理 API‌

这些API的发布使得用户可以更方便地构建基于混合搜索和检索增强生成(Retrieval Augmented Generation, RAG)的应用程序。

4. 可观察性增强‌

Elastic Observability通过基于搜索的相关性、不折不扣的数据保留、改进的运营效率和成本,提供了增强的日志分析和简化的入门流程。此外,还支持Amazon Bedrock集成,为基于Amazon Bedrock构建的大型语言模型(LLM)提供全面的监控功能‌。

5. 云资产保护‌

通过SIEMSecurity Information and Event Management)功能,保护云资产并解决云保护和上下文调查问题,最终在一个许可证中解决了云保护和上下文调查问题‌。

6. 本地部署简化‌

通过start-local脚本,用户可以在几分钟内在笔记本电脑上进行本地部署,从而快速开始使用Elasticsearch进行本地开发运行‌。

7. 内存优化‌

Elasticsearch 8.16.0对内存管理进行了优化,引入了一种新的内存分配算法,能够更有效地利用内存资源,同时使用更高效的数据结构来存储索引数据,减少了内存的占用。

接下来,让我们深入了解这些令人兴奋的新特性。

二、BBQ:创新的向量数据量化方法

1. BBQ 原理概述

BBQBetter Binary Quantization)是 Elasticsearch 8.16.0 中一种开创性的向量数据量化方法。它的核心目标是在提高向量数据压缩率的同时,维持高召回率,并提供自定义选项。其原理是通过巧妙地结合标量量化和位向量支持来实现这一目标。

在实际的数据处理中,向量数据往往占据大量的存储空间。传统的量化方法可能会在压缩数据的过程中损失一定的准确性,导致搜索结果的召回率下降。而 BBQ 则打破了这种局限,它能够在不影响准确性的情况下,将向量数据的压缩率提高 32 倍。这对于处理大型工作负载,特别是那些包含大量向量数据的应用场景来说,具有极其重要的意义。

2. 用法介绍

以下演示如何在 Elasticsearch 中使用 BBQ 进行向量数据的量化和查询。

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;import java.io.IOException;public class BBQExample {public static void main(String[] args) throws IOException {// 假设已经创建了 RestHighLevelClient 实例RestHighLevelClient client = createClient(); // 创建搜索请求SearchRequest searchRequest = new SearchRequest("your_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 使用 BBQ 相关的查询构建器(这里只是示例,实际使用可能需要更多配置)searchSourceBuilder.query(QueryBuilders.bbqQuery("your_vector_field", "your_vector_value")); searchRequest.source(searchSourceBuilder);// 执行搜索请求SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);// 处理搜索结果handleSearchResponse(searchResponse); client.close();}private static RestHighLevelClient createClient() {// 创建并返回 RestHighLevelClient 实例的代码,这里省略详细实现return null; }private static void handleSearchResponse(SearchResponse searchResponse) {// 处理搜索结果的代码,这里省略详细实现System.out.println("Search results: " + searchResponse); }
}

在上述代码中,我们首先创建了一个 SearchRequest,并通过 SearchSourceBuilder 构建查询条件。这里使用了 bbqQuery 方法来构建基于 BBQ 的查询,其中 your_index_name 是索引名称,your_vector_field 是存储向量数据的字段名,your_vector_value 是要查询的向量值。然后通过 RestHighLevelClient 执行搜索请求,并对搜索结果进行处理。需要注意的是,实际应用中需要完善 createClienthandleSearchResponse 方法的实现。

三、倒数排名融合(RRF):提升混合对话搜索体验

1. RRF 功能解析

倒数排名融合(Reciprocal Rank Fusion, RRF)是 Elasticsearch 8.16.0 中一个生产就绪的混合对话搜索功能。在现代搜索应用中,尤其是那些结合了生成式 AI 的应用场景,搜索结果的质量和相关性至关重要。RRF 的出现为解决这一问题提供了有力的支持。

RRF 的主要优势在于它提供了便捷的结果归一化组合能力。在复杂的搜索环境中,我们可能会从多个不同的数据源或者搜索算法中获取结果,这些结果的排名和相关性可能各不相同。RRF 能够将这些不同来源的结果进行有效的融合,通过其独特的算法,重新计算排名,从而提高搜索结果的整体质量,增强生成式 AI 驱动的搜索体验。

2. 用法介绍

以下是一个使用 RRF 进行混合对话搜索的 Java 示例。

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;import java.io.IOException;public class RRFExample {public static void main(String[] args) throws IOException {RestHighLevelClient client = createClient();SearchRequest searchRequest = new SearchRequest("your_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 使用 RRF 相关的查询构建器(这里只是示例,实际使用可能需要更多配置)searchSourceBuilder.query(QueryBuilders.rrfQuery("your_text_field", "your_search_query").addSource("source1", 0.5) .addSource("source2", 0.3) .addSource("source3", 0.2)); // 添加排序条件(这里只是示例,可根据实际情况调整)searchSourceBuilder.sort(SortBuilders.fieldSort("_score").order(SortOrder.DESC)); searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);handleSearchResponse(searchResponse);client.close();}private static RestHighLevelClient createClient() {// 创建并返回 RestHighLevelClient 实例的代码,这里省略详细实现return null;}private static void handleSearchResponse(SearchResponse searchResponse) {// 处理搜索结果的代码,这里省略详细实现System.out.println("Search results with RRF: " + searchResponse);}
}

在这个示例中,我们创建了一个 SearchRequest,并在 SearchSourceBuilder 中使用 rrfQuery 构建基于 RRF 的查询。your_index_name 是索引名称,your_text_field 是文本字段名,your_search_query 是搜索关键词。通过 addSource 方法可以指定不同数据源的权重,这里模拟了三个数据源 source1source2source3 及其权重。然后添加了按照得分降序排序的条件,最后执行搜索请求并处理结果。同样,在实际应用中需要完善 createClienthandleSearchResponse 方法。

四、检索器和开放推理 API:构建混合搜索和 RAG 应用的利器

1. API 功能介绍

Elasticsearch 8.16.0 发布的检索器和开放推理 API 为开发者们开启了构建强大应用程序的新大门。在混合搜索和检索增强生成(Retrieval Augmented Generation, RAG)应用日益流行的今天,这些 API 的出现具有里程碑意义。

检索器 API 允许开发者更方便地从 Elasticsearch 索引中获取相关数据,无论是基于文本的查询还是向量相似性查询。它提供了一种灵活且高效的方式来检索数据,满足不同应用场景的需求。

开放推理 API 则进一步扩展了功能,它与各种推理引擎和模型集成,使得开发者可以在 Elasticsearch 中直接进行复杂的推理操作。这对于构建智能搜索应用、知识图谱应用等需要高级推理能力的场景非常有帮助。通过这些 API,开发者可以轻松地将 Elasticsearch 与其他机器学习和人工智能技术相结合,创造出更具创新性的应用程序。

2. 用法介绍

以下展示如何使用检索器 API 进行数据检索。

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;import java.io.IOException;public class RetrieverAPIExample {public static void main(String[] args) throws IOException {RestHighLevelClient client = createClient();SearchRequest searchRequest = new SearchRequest("your_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 使用检索器 API 相关的查询构建器(这里只是示例,实际使用可能需要更多配置)searchSourceBuilder.query(QueryBuilders.matchQuery("your_text_field", "your_search_term")); // 添加高亮显示配置(可选,这里只是示例)HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.field("your_text_field");searchSourceBuilder.highlighter(highlightBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);handleSearchResponse(searchResponse);client.close();}private static RestHighLevelClient createClient() {// 创建并返回 RestHighLevelClient 实例的代码,这里省略详细实现return null;}private static void handleSearchResponse(SearchResponse searchResponse) {// 处理搜索结果的代码,这里省略详细实现System.out.println("Search results with Retriever API: " + searchResponse);}
}

在这个示例中,我们通过 SearchRequestSearchSourceBuilder 构建搜索请求。使用 matchQuery 方法(这是检索器 API 中一种常见的查询方式)在指定的索引 your_index_nameyour_text_field 字段中搜索关键词 your_search_term。我们还添加了一个简单的高亮显示配置,用于突出显示搜索结果中的关键词。最后执行搜索请求并处理结果。同样,实际应用中需要完善 createClienthandleSearchResponse 方法的实现。

五、可观察性增强:优化日志分析与监控

1. 可观察性增强功能概述

Elastic ObservabilityElasticsearch 8.16.0 中得到了显著的增强在处理大规模数据复杂系统时,日志分析和监控是确保系统稳定运行和性能优化的关键环节。

新的可观察性增强功能基于搜索的相关性,能够更准确地从海量日志数据中提取有价值的信息。通过不折不扣的数据保留策略,确保数据的完整性,为后续的分析和故障排查提供了坚实的基础。同时,改进的运营效率和成本控制,使得企业可以在不增加过多资源投入的情况下,获得更优质的日志分析服务。

此外,支持 Amazon Bedrock 集成是一个重要的亮点。对于那些基于 Amazon Bedrock 构建的大型语言模型(LLM),Elasticsearch 现在可以提供全面的监控功能。这意味着开发者和运维人员可以实时监控 LLM 的运行状态、性能指标等,及时发现并解决潜在问题。

2. 用法介绍

以下是一个简单的 Java 代码示例,用于查询 Elasticsearch 中的日志数据(这里只是一个简单的示例,实际的日志查询和监控可能更复杂)。

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;import java.io.IOException;public class LogQueryExample {public static void main(String[] args) throws IOException {RestHighLevelClient client = createClient();SearchRequest searchRequest = new SearchRequest("your_log_index_name");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// 根据特定条件查询日志(这里只是示例,实际查询条件可能更复杂)searchSourceBuilder.query(QueryBuilders.termQuery("log_level", "ERROR")); searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);handleSearchResponse(searchResponse);client.close();}private static RestHighLevelClient createClient() {// 创建并返回 RestHighLevelClient 实例的代码,这里省略详细实现return null;}private static void handleSearchResponse(SearchResponse searchResponse) {// 处理搜索结果的代码,这里省略详细实现System.out.println("Log query results: " + searchResponse);}
}

在这个示例中,我们创建了一个针对日志索引 your_log_index_name 的搜索请求。通过 termQuery 方法查询日志级别为 ERROR 的日志记录。这只是一个简单的日志查询示例,实际的监控和分析场景可能需要更复杂的查询条件、聚合操作等。在实际应用中,需要完善 createClienthandleSearchResponse 方法。

六、云资产保护新特性

1. SIEM 功能介绍

在云计算环境中,数据的安全性是重中之重。Elasticsearch 8.16.0 引入了强大的 SIEMSecurity Information and Event Management)功能。SIEM 是一种将安全信息管理和事件管理相结合的技术,它能够实时收集、分析和关联来自各种安全设备和应用程序的日志数据。

Elasticsearch 中,SIEM 功能通过整合安全相关的数据,为用户提供了一个全面的视角来监控和保护云资产。它可以检测到潜在的安全威胁,如恶意攻击未经授权的访问等,并及时发出警报。这一功能在解决云保护和上下文调查问题方面表现卓越,因为它能够将安全事件与相关的上下文信息(如用户行为、网络活动等)关联起来。

2. 用法介绍

以下代码演示如何使用 Elasticsearch 的 SIEM 功能来查询安全相关的事件:

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;import java.io.IOException;public class SIEMSample {public static void main(String[] args) throws IOException {// 假设已经创建了 RestHighLevelClient 实例RestHighLevelClient client = createClient(); SearchRequest searchRequest = new SearchRequest("your_security_index_name");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();// 使用 QueryBuilders 构建查询条件,这里查询特定类型的安全事件sourceBuilder.query(QueryBuilders.termQuery("event_type", "security_alert"));searchRequest.source(sourceBuilder);SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);// 处理搜索结果processSearchResponse(response); client.close();}private static RestHighLevelClient createClient() {// 这里是创建 RestHighLevelClient 的代码,根据你的 Elasticsearch 配置进行修改// 示例代码可能如下:// RestHighLevelClient client = new RestHighLevelClient(//         RestClient.builder(new HttpHost("localhost", 9200, "http")));return null; }private static void processSearchResponse(SearchResponse response) {// 在这里解析搜索结果,获取安全事件信息// 例如,可以遍历命中的文档并打印相关字段response.getHits().forEach(hit -> {System.out.println("Security event: " + hit.getSourceAsString());});}
}

在上述代码中,我们首先创建了一个SearchRequest对象,指定要查询的索引(这里假设你已经将安全相关的数据存储在名为your_security_index_name的索引中)。然后,使用SearchSourceBuilder构建查询条件,通过QueryBuilders.termQuery来查询特定类型(security_alert)的安全事件。最后,使用RestHighLevelClient执行查询并处理结果。请注意,在实际使用中,需要根据你的 Elasticsearch 环境正确配置RestHighLevelClient的创建过程。

七、本地部署简化特性

1. start-local 脚本解析

Elasticsearch 8.16.0 为本地开发带来了极大的便利,通过start-local脚本,用户可以在短短几分钟内就在笔记本电脑上完成本地部署。这个脚本封装了一系列复杂的配置和启动步骤,使得即使是对 Elasticsearch 部署不太熟悉的开发者也能轻松上手。

当你运行start-local脚本时,它会自动处理诸如环境变量设置依赖检查和服务启动等任务。这意味着你无需手动配置大量的参数,也不需要担心复杂的安装过程,就可以快速启动 Elasticsearch 实例,开始进行本地开发和测试。

2. 用法介绍

以下是一个简单的 Java 代码示例,用于在本地启动 Elasticsearch 后连接并执行一个简单的索引创建操作:

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import java.io.IOException;public class LocalDeploymentSample {public static void main(String[] args) throws IOException {// 使用 start - local 脚本启动 Elasticsearch 后,创建 RestHighLevelClient 连接RestHighLevelClient client = new RestHighLevelClient(// 根据本地启动的 Elasticsearch 配置修改主机和端口RestClient.builder(new HttpHost("localhost", 9200, "http")));CreateIndexRequest request = new CreateIndexRequest("local_test_index");try {CreateIndexResponse createIndexResponse = client.admin().indices().create(request, RequestOptions.DEFAULT);if (createIndexResponse.isAcknowledged()) {System.out.println("Index created successfully.");} else {System.out.println("Index creation failed.");}} catch (IOException e) {e.printStackTrace();} finally {client.close();}}
}

在这个示例中,我们首先创建了一个RestHighLevelClient对象,连接到本地运行的 Elasticsearch 实例(假设start - local脚本已经成功启动 Elasticsearch,并且默认监听在localhost:9200)。然后,我们创建了一个CreateIndexRequest对象,指定要创建的索引名称为local_test_index。通过client.admin().indices().create方法执行索引创建操作,并根据响应结果判断索引是否创建成功。最后,关闭RestHighLevelClient连接。

八、内存优化特性

1. 新内存分配算法介绍

Elasticsearch 8.16.0 在内存管理方面进行了重大优化,引入了一种全新的内存分配算法。这种算法能够更加智能地根据系统的资源状况数据的访问模式来分配内存

传统的内存分配方式可能会导致内存资源的浪费或者在处理大规模数据时出现内存不足的情况。新的算法通过动态分析索引数据的使用频率数据大小等因素,合理地分配内存块。 例如,对于频繁访问的数据,它会优先分配更多的内存缓存,以提高查询性能;而对于不常使用的数据,则会适当减少其占用的内存空间。

2. 高效数据结构解析

除了新的内存分配算法,Elasticsearch 8.16.0 还采用了更高效的数据结构来存储索引数据。这些数据结构经过精心设计,能够在减少内存占用的同时,保持快速的数据读写能力。

新的数据结构在存储索引数据时,通过对数据进行压缩和优化存储布局,降低了数据在内存中的冗余。例如,对于相似的数据类型,它们会采用更紧凑的存储方式,避免了不必要的内存开销。这不仅提高了内存的利用率,还加快了查询和分析操作的速度,尤其是在处理大规模数据集时效果更为显著。

3. 用法介绍

以下是一个简单的 Java 代码示例,用于演示在内存优化后的 Elasticsearch 中进行数据索引和查询操作:

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;public class MemoryOptimizationSample {public static void main(String[] args) throws IOException {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));// 准备要索引的数据Map<String, Object> data = new HashMap<>();data.put("name", "example_document");data.put("value", "This is an example document for memory optimization test.");IndexRequest indexRequest = new IndexRequest("memory_optimized_index");indexRequest.source(data, XContentType.JSON);client.index(indexRequest, RequestOptions.DEFAULT);SearchRequest searchRequest = new SearchRequest("memory_optimized_index");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(QueryBuilders.matchQuery("name", "example_document"));searchRequest.source(sourceBuilder);SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);response.getHits().forEach(hit -> {System.out.println("Found document: " + hit.getSourceAsString());});client.close();}
}

在这个示例中,我们首先创建了一个RestHighLevelClient连接到本地的 Elasticsearch 实例。然后,我们准备了一个简单的文档数据,并使用IndexRequest将其索引到名为memory_optimized_index的索引中。在索引过程中,Elasticsearch 8.16.0 的内存优化特性会自动发挥作用,根据新的内存分配算法和数据结构来存储数据。

接着,我们创建了一个SearchRequest对象,并使用SearchSourceBuilder构建了一个查询条件,通过QueryBuilders.matchQuery来查询名称为example_document的文档。当执行查询操作时,内存优化后的 Elasticsearch 能够更高效地利用内存资源来快速定位和返回结果。最后,我们遍历查询结果并打印相关信息。

九、参考资料文献

  1. Elasticsearch 8.16.0 发布说明
  2. What’s new in 8.16
  3. Elasticsearch 官方文档
  4. 相关技术论文和研究报告(可根据 Elasticsearch 官方推荐或相关学术数据库查找)

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

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

相关文章

python:用 sklearn 构建 K-Means 聚类模型

pip install scikit-learn 或者 直接用 Anaconda3 sklearn 提供了 preprocessing 数据预处理模块、cluster 聚类模型、manifold.TSNE 数据降维模块。 编写 test_sklearn_3.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 构建 K-Means 聚类模型 "&…

【大数据学习 | HBASE高级】hive操作hbase

一般在查询hbase的数据的时候我们可以直接使用hbase的命令行或者是api进行查询就行了&#xff0c;但是在日常的计算过程中我们一般都不是为了查询&#xff0c;都是在查询的基础上进行二次计算&#xff0c;所以使用hbase的命令是没有办法进行数据计算的&#xff0c;并且对于hbas…

贴代码框架PasteForm特性介绍之markdown和richtext

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…

ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API

目录 一、ServletConfig 二、ServletContext 三、ServletContext其他重要API (一)获取文件路径和上下文 (二)域对象的相关API 四、HttpServletRequest常见API (一)获取请求行/头信息相关 (二)获得请求参数相关 五、HttpServletResponse常见API 一、ServletConfig Se…

MySQL缓存使用率超过80%的解决方法

MySQL缓存使用率超过80%的解决方法 一、识别缓存使用率过高的问题1.1 使用SHOW GLOBAL STATUS命令监控1.2 监控其他相关指标二、分析缓存使用率过高的原因2.1 数据量增长2.2 查询模式变化2.3 配置不当三、解决缓存使用率过高的方法3.1 调整Buffer Pool大小3.1.1 计算合理的Buff…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

springboot004基于springboot004网页时装购物系统(源码+包运行+LW+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

丹摩征文活动 |【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 &#x1f31f;&#x1f31f;本期讲解关于HTMLCSSJavaScript的基础知识&#xff0c;小编带领大家简单过一遍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 …

进程信号

目录 信号入门 1. 生活角度的信号 2. 技术应用角度的信号 3. 注意 4. 信号概念 5. 用kill -l命令可以察看系统定义的信号列表 6. 信号处理常见方式概览 产生信号 1. 通过终端按键产生信号 Core Dump 2. 调用系统函数向进程发信号 3. 由软件条件产生信号 4. 硬件异…

【链路层】空口数据包详解(4):数据物理通道协议数据单元(PDU)

目录 一、概述 1.1. 头部&#xff08;Header&#xff09;结构 1.2. MIC字段的情况说明 1.3. 有效载荷&#xff08;Payload&#xff09;格式与LLID字段的关联 二、LL Data PDU 2.1. 定义与用途 2.2. 头部字段设置 2.3. 空PDU&#xff08;Empty PDU &#xff09; 2.4. 数…

使用 Web Search 插件扩展 GitHub Copilot 问答

GitHub Copilot 是一个由 GitHub 和 OpenAI 合作开发的人工智能代码提示工具。它可以根据上下文提示代码&#xff0c;还可以回答各种技术相关的问题。但是 Copilot 本身不能回答非技术类型的问题。为了扩展 Copilot 的功能&#xff0c;微软发布了一个名为 Web Search 的插件&am…

24 年第十届数维杯国际数模竞赛赛题浅析

本次万众瞩目的数维杯国际大学生数学建模赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是数模届的独一档&#xff0c;含金量极高&#xff0c;可以用于综测加分、保研、简历添彩等各方面。考虑到大家解题实属不易&#xff0c;为了帮助大家取得好成绩…

无人机检测车辆——多目标检测

目录 YOLOv3&#xff08;You Only Look Once version 3&#xff09;简介 YOLOv3 的主要特点 YOLOv3 的结构 1. 特征提取网络&#xff08;Backbone&#xff09; 2. 检测头&#xff08;Head&#xff09; 3. 输出层 YOLOv3 损失函数 YOLOv3 的优势 YOLOv3 的应用 YOLOv3…

ThriveX 博客管理系统前后端项目部署教程

前端 前端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Blog 控制端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Admin Vercel 首先以 Vercel 进行部署&#xff0c;两种方式部署都是一样的&#xff0c;我们以前端项目进行演示 首先我们先…

python的matplotlib实现数据分析绘图

目录 需求 效果 数据分析绘图示例 代码解释 运行结果 需求 分析一个班级中学生成绩分布&#xff0c;并绘图 效果 数据分析绘图示例 import matplotlib.pyplot as plt import numpy as np# 假设的学生成绩数据 np.random.seed(0) # 设置随机种子以确保结果可复现 score…

计算机网络 (3)计算机网络的性能

一、计算机网络性能指标 速率&#xff1a; 速率是计算机网络中最重要的性能指标之一&#xff0c;它指的是数据的传送速率&#xff0c;也称为数据率&#xff08;Data Rate&#xff09;或比特率&#xff08;Bit Rate&#xff09;。速率的单位是比特/秒&#xff08;bit/s&#xff…

MySQL Online DDL

文章目录 1. 在线DDL的优势2. 支持的DDL操作3. 在线DDL的原理4. Online DDL的操作流程1. 准备阶段&#xff08;Prepare phase&#xff09;2. 拷贝阶段&#xff08;Copy phase&#xff09;3. 应用阶段&#xff08;Apply phase&#xff09;4. 替换阶段&#xff08;Swap phase&…

SwanLab安装教程

SwanLab是一款开源、轻量级的AI实验跟踪工具&#xff0c;提供了一个跟踪、比较、和协作实验的平台&#xff0c;旨在加速AI研发团队100倍的研发效率。 其提供了友好的API和漂亮的界面&#xff0c;结合了超参数跟踪、指标记录、在线协作、实验链接分享、实时消息通知等功能&…

基于rk356x u-boot版本功能分析及编译相关(三)Makefile分析

🎏技术驱动源于热爱,祝各位学有所成。 文章目录 一、Makefile简要概述二、简要流程图三、Makefile文件具体分析大家好哈,这次因工作比较忙,文章更新拖的有些久了。哈哈,话不多说,咱们接着上次继续说u-boot的Makefile。 一、Makefile简要概述 一般要了解u-boot源码的编译…

vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-

1.前提&#xff1a; VScode中的git组件执行任何合并动作的时候需要提交远程合并的commit信息&#xff0c;然后编辑器自动打开的是nano文本编辑器 2.nano编辑器说明&#xff1a; 1.保存文件&#xff1a;按 Ctrl O&#xff0c;然后按 Enter 来保存文件。 2.退出编辑器&#xf…