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

springBoot项目使用Elasticsearch教程

目录

  • 一、引言
    • (一)使用背景
    • (二)版本库区别
  • 二、引入依赖
    • (一)springboot集成的es依赖(建议)
    • (二)es提供的客户端库
  • 三、配置(以yaml文件为例)
    • (一)springboot集成的es依赖(建议)
    • (二)es提供的客户端库
  • 四、代码
    • (一)springboot集成的es依赖(建议)
      • 1、创建Elasticsearch实体类
      • 2、创建Elasticsearch Repository
      • 3、使用Elasticsearch Repository
      • 4、es业务类-使用Elasticsearch模板(可选)
      • 5、启动测试类
    • (二)es提供的客户端库
      • 1、es连接配置类-ElasticSearchConfig
      • 2、es业务类-ElasticSearchService
      • 3、启动测试类
  • 五、总结

一、引言

(一)使用背景

Spring项目集成Elasticsearch可以带来许多好处,主要包括:

  • 高性能搜索:Elasticsearch是基于Lucene的分布式搜索引擎,它能提供非常高效和低延迟的全文搜索、结构化查询以及分析。对于需要快速响应的查询操作,Elasticsearch能够提供显著的性能提升。
  • 灵活的数据模型:Elasticsearch是一个文档数据库,使用JSON格式存储数据,使得数据模型非常灵活,能够处理各种结构化和半结构化数据。可以轻松应对变化的数据模型和复杂的查询需求。
  • 分布式架构:Elasticsearch的分布式架构使得它具备了强大的水平扩展能力。即使数据量增长,集群也能够通过增加节点来轻松扩展,保证性能和可用性。
  • 实时性:Elasticsearch支持近实时搜索,数据一旦写入便能立即查询。这对于报表服务、实时数据分析和监控等应用场景非常适用。
  • Spring Data Elasticsearch支持:Spring提供了Spring Data
    Elasticsearch,一个高层次的框架,用来简化Spring与Elasticsearch的集成。它封装了Elasticsearch的低层API,提供了易于使用的Repository和Template,减少了开发中的重复工作。
  • 强大的聚合功能:Elasticsearch的聚合功能非常强大,可以对大量数据进行分组、统计、计算,帮助构建各种报表和分析应用。
  • 易于集成和配置:Spring
    Boot的自动配置功能使得Elasticsearch的集成变得非常简单。你只需要在application.properties或application.yml中配置连接信息,就能快速启用Elasticsearch的功能。
  • 监控和管理工具:Elasticsearch提供了如Kibana等强大的监控和可视化工具,可以帮助开发者轻松监控和调试系统运行状态。
  • 可扩展性和适应性:随着业务需求和数据量的增长,Elasticsearch能够通过集群扩展来应对。你可以随时根据需要增加更多节点、分片等。
  • 简化的查询和索引操作:Spring Data
    Elasticsearch提供了简单易用的API来执行索引操作、查询操作、批量操作等,开发者不需要深入掌握Elasticsearch的底层操作,能专注于业务逻辑的实现。

(二)版本库区别

1.spring-boot-starter-data-elasticsearch
功能:这是Spring Boot为集成Spring Data Elasticsearch提供的启动器。它通过Spring Data提供了简化的数据访问接口,使得开发者可以更轻松地与Elasticsearch交互。
用途:适用于Spring Boot应用,尤其是当你需要一个简化的方式来存取数据,而不想处理Elasticsearch客户端的复杂配置时。它提供了ElasticsearchRepository,自动化配置,方便进行基本的CRUD操作和查询。
优点:
自动配置:Spring Boot会自动配置好Elasticsearch连接和必要的基础设置,减少了手动配置的繁琐。
面向开发者的Repository接口:通过ElasticsearchRepository接口,开发者可以像操作普通数据库一样执行Elasticsearch的基本操作(如保存、查找、删除等)。
集成其他Spring功能:能够与Spring的事务管理、数据绑定等功能紧密集成。
简化操作:隐藏了底层的客户端实现细节,适合标准的应用开发。
2. elasticsearch-rest-high-level-client 和 elasticsearch-rest-client
功能:这两个是纯粹的Elasticsearch客户端库,分别提供了较高层次(rest-high-level-client)和较低层次(rest-client)的访问接口。它们专注于与Elasticsearch服务器之间的网络通信和数据传输,不提供Spring特有的集成。
用途:这两个依赖适合需要更精细控制或更复杂的Elasticsearch操作的场景。例如,你可以在这些客户端中直接操作Elasticsearch的REST API,进行高级的索引操作、聚合查询等,甚至实现一些自定义的网络请求和数据序列化。
优点:
高灵活性:提供了更细粒度的控制,你可以直接处理请求和响应。
支持更多功能:如果你需要对Elasticsearch进行更复杂的操作,可能会发现elasticsearch-rest-high-level-client或elasticsearch-rest-client能提供更多的灵活性和控制。

  • 如果你是在SpringBoot应用中开发,且不需要过多的手动配置和细节控制,推荐使用spring-boot-starter-data-elasticsearch。
  • 使用es可以用springboot集成的es库,也可以用es提供的客户端库,本文围绕两种方式展开

二、引入依赖

两种方式均可

(一)springboot集成的es依赖(建议)

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>${spring.boot.version}</version>
</dependency>

(二)es提供的客户端库

version具体以es的服务端版本为参考,需要匹配

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.10.2</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.10.2</version>
</dependency>

三、配置(以yaml文件为例)

(一)springboot集成的es依赖(建议)

spring:data:elasticsearch:cluster-name: your-cluster-namecluster-nodes: localhost:9200  # ES节点的地址和端口username: 用户名password: 密码

(二)es提供的客户端库

elasticsearch:host: 服务端主机ipport: 9200scheme: httpusername: 用户名password: 密码

四、代码

(一)springboot集成的es依赖(建议)

1、创建Elasticsearch实体类

你需要创建一个实体类,使用@Document注解标记它为Elasticsearch文档类型,定义索引名称、类型等信息。

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName = "pos_order", createIndex = false)
public class PosOrder {@Idprivate String id;private String customerName;private double totalAmount;// Getter and Setter methods
}

2、创建Elasticsearch Repository

Spring Data Elasticsearch提供了ElasticsearchRepository接口,用于与Elasticsearch进行交互:

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface PosOrderRepository extends ElasticsearchRepository<PosOrder, String> {// 你可以根据需求定义其他查询方法List<PosOrder> findByCustomerName(String customerName);
}

3、使用Elasticsearch Repository

在你的Service或Controller中注入PosOrderRepository并使用它来进行CRUD操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class PosOrderService {@Autowiredprivate PosOrderRepository posOrderRepository;public void saveOrder(PosOrder posOrder) {posOrderRepository.save(posOrder);}public List<PosOrder> findOrdersByCustomerName(String customerName) {return posOrderRepository.findByCustomerName(customerName);}
}

4、es业务类-使用Elasticsearch模板(可选)

如果需要执行更复杂的查询,可以使用ElasticsearchRestTemplate:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Service;@Service
public class PosOrderService {@Autowiredprivate ElasticsearchRestTemplate elasticsearchRestTemplate;public void searchOrders() {// 自定义查询逻辑}
}
  • 通过这些步骤,你可以在Spring Boot项目中轻松地集成Elasticsearch,实现数据的存储、查询等功能。

5、启动测试类

如果你是使用Spring Boot进行开发,确保你的服务已经注入并正常工作。你可以在Spring Boot的启动类或一个控制器中调用测试方法。
例如,在Spring Boot启动类中调用测试方法:

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;@SpringBootApplication
public class ElasticsearchTestApplication implements CommandLineRunner {@Autowiredprivate PosOrderService posOrderService;public static void main(String[] args) {SpringApplication.run(ElasticsearchTestApplication.class, args);}@Overridepublic void run(String... args) throws Exception {// 调用测试方法posOrderService.searchOrders();  // 或其他方法,如testIndexDocument(), testSearch(), etc.}
}

(二)es提供的客户端库

1、es连接配置类-ElasticSearchConfig

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.impl.nio.client.HttpAsyncClients;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @className: ElasticsearchConfig* @description: es客户端连接配置类* @author: wuyafei* @date: 2025/1/16 15:57* @version: 1.0*/
@Configuration
public class ElasticSearchConfig {@Value("${elasticsearch.host}")private String esHost;@Value("${elasticsearch.port}")private int esPort;@Value("${elasticsearch.scheme}")private String esScheme;@Value("${elasticsearch.username}")private String esUsername;@Value("${elasticsearch.password}")private String esPassword;@Beanpublic RestHighLevelClient client() {// 配置基本身份验证的用户名和密码BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(esUsername, esPassword));// 创建一个 HttpAsyncClientBuilder,并设置身份验证HttpAsyncClientBuilder asyncClientBuilder = HttpAsyncClients.custom().setDefaultCredentialsProvider(credentialsProvider);// 返回 RestHighLevelClient,并通过 setHttpClientConfigCallback 传递 HttpAsyncClientBuilderreturn new RestHighLevelClient(RestClient.builder(new HttpHost(esHost, esPort, esScheme)).setHttpClientConfigCallback(httpClientConfig -> asyncClientBuilder));}}

注意事项:HTTP与HTTPS:如果Elasticsearch实例使用HTTPS协议,确保修改HttpHost为https,并调整端口(通常是443)

2、es业务类-ElasticSearchService

package com.hxl.bi.service.es;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.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Service;/*** @className: ElasticsearchService* @description: es查询service* @author: wuyafei* @date: 2025/1/16 16:27* @version: 1.0*/
@Service
public class ElasticSearchService {private final RestHighLevelClient client;public ElasticSearchService(RestHighLevelClient client) {this.client = client;}public void searchDocument() throws Exception {//创建搜索请求(索引)SearchRequest searchRequest = new SearchRequest("bi-pos-order-query-2025");SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//1、全部查询sourceBuilder.query(QueryBuilders.matchAllQuery());
//		//2、精确查询
//		sourceBuilder.query(QueryBuilders.termQuery("orderNo", "6660001250070030004"));
//		//3、范围查询
//		sourceBuilder.query(QueryBuilders.rangeQuery("orderNo").gte(6660001250070030003l).lte(6660001250070030005l));
//		//4、模糊查询
//		sourceBuilder.query(QueryBuilders.fuzzyQuery("orderNo", "6660001250070030004").fuzziness(Fuzziness.ONE));
//		//5、多字段查询
//		sourceBuilder.query(QueryBuilders.multiMatchQuery("hello", "field1", "field2"));
//		//6、布尔查询-boolQuery 允许你组合多个查询,支持 must(必须匹配)、should(可以匹配)、must_not(不能匹配)等操作
//		BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
//				.must(QueryBuilders.termQuery("order_id", "123"))
//				.should(QueryBuilders.rangeQuery("total_amount").gte(100))
//				.mustNot(QueryBuilders.termQuery("status", "canceled"));
//		sourceBuilder.query(boolQuery);
//		searchRequest.source(sourceBuilder);
//		//7、存在查询-existsQuery 用于查询某个字段是否存在。常用于检查某个字段是否被填充
//		sourceBuilder.query(QueryBuilders.existsQuery("customer_name"));
//		//8、前缀查询-prefixQuery 用于查询某个字段的前缀匹配。常用于搜索建议
//		sourceBuilder.query(QueryBuilders.prefixQuery("orderId", "ORD"));
//		//9、组合查询-constantScoreQuery 用于组合多个查询,并使用一个权重对它们进行评分。常用于提高查询结果的相关性
//		sourceBuilder.query(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("status", "active")));
//		//10、聚合查询-aggregation 聚合查询用于对查询结果进行分组和统计。常用于生成报表和统计信息
//		sourceBuilder.aggregation(
//				AggregationBuilders.terms("agg_by_status").field("status.keyword")
//		);
//		//11、排序查询
//		sourceBuilder.sort("total_amount", SortOrder.DESC);  // 根据 `total_amount` 降序排序SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);// 打印查询到的文档总数System.out.println("Total hits: " + response.getHits().getTotalHits().value);// 获取并打印每个文档的详细内容for (SearchHit hit : response.getHits()) {// 打印文档的IDSystem.out.println("Document ID: " + hit.getId());// 打印文档的源数据 (即文档的实际内容)System.out.println("Document Source: " + hit.getSourceAsString());// 如果需要进一步处理每个字段,可以通过 hit.getSourceAsMap() 获取字段及其对应的值System.out.println("Document Fields: " + hit.getSourceAsMap());}}}
  • 上面包含了es查询11个api,按照实际业务需要去适配

3、启动测试类

如果你是使用Spring Boot进行开发,确保你的服务已经注入并正常工作。你可以在Spring Boot的启动类或一个控制器中调用测试方法。
例如,在Spring Boot启动类中调用测试方法:

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;@SpringBootApplication
public class ElasticsearchTestApplication implements CommandLineRunner {@Autowiredprivate ElasticSearchService elasticsearchService;public static void main(String[] args) {SpringApplication.run(ElasticsearchTestApplication.class, args);}@Overridepublic void run(String... args) throws Exception {// 调用测试方法elasticsearchService.searchDocument();  // 或其他方法,如testIndexDocument(), testSearch(), etc.}
}

五、总结

相关文章:

springBoot项目使用Elasticsearch教程

目录 一、引言&#xff08;一&#xff09;使用背景&#xff08;二&#xff09;版本库区别 二、引入依赖&#xff08;一&#xff09;springboot集成的es依赖&#xff08;建议&#xff09;&#xff08;二&#xff09;es提供的客户端库 三、配置&#xff08;以yaml文件为例&#x…...

模型 多元化思维(系统科学)

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。融合多学科知识&#xff0c;全面解决问题。 1 多元化思维模型的应用 1.1 完美日记的私域流量运营 完美日记作为美妆行业的新兴品牌&#xff0c;通过多元化的思维模型在私域流量运营中取得了显著成功。…...

Google地图瓦片爬虫

地图地址说明 1、谷歌矢量(中文标注) http://mt{0-3}.google.cn/vt/vm416115521&hlzh-CN&glcn&x{x}&y{y}&z{z}&sGalileo 2、谷歌矢量(英文标注) http://mt{0-3}.google.cn/vt/vm416115521&hlen&glcn&x{x}&y{y}&z{z}&sGali…...

【C++】size_t全面解析与深入拓展

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;一、什么是size_t&#xff1f;为什么需要size_t&#xff1f; &#x1f4af;二、size_t的特性与用途1. size_t是无符号类型示例&#xff1a; 2. size_t的跨平台适应性示例对…...

Web端实时播放RTSP视频流(监控)

一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <...

学习 Git 的工作原理,而不仅仅是命令

Git 是常用的去中心化源代码存储库。它是由 Linux 创建者 Linus Torvalds 创建的&#xff0c;用于管理 Linux 内核源代码。像 GitHub 这样的整个服务都是基于它的。因此&#xff0c;如果您想在 Linux 世界中进行编程或将 IBM 的 DevOps Services 与 Git 结合使用&#xff0c;那…...

C语言变长嵌套数组常量初始化定义技巧

有时候&#xff0c;我们需要在代码里配置一些常量结构&#xff0c;比如一个固定的动作流程ActionFlow&#xff1a;包含N&#xff08;即flow_num&#xff09;个动作列表&#xff08;ActionArray&#xff09;&#xff0c;每个动作列表包含M&#xff08;即act_num&#xff09;个可…...

如何查看特定版本的Spring源码

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

【深度学习】关键技术-激活函数(Activation Functions)

激活函数&#xff08;Activation Functions&#xff09; 激活函数是神经网络的重要组成部分&#xff0c;它的作用是将神经元的输入信号映射到输出信号&#xff0c;同时引入非线性特性&#xff0c;使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…...

网关相关知识

文章目录 什么是网关网关的主要作用网关的运用 什么是网关 网关又称网间连接器、协议转换器&#xff0c;也就是网段(局域网、广域网)关卡&#xff0c;不同网段中的主机不能直接通信&#xff0c;需要通过关卡才能进行互访&#xff0c;比如IP地址为192.168.31.9(子网掩码&#x…...

SpringBoot整合SpringSecurity详解

文章目录 SpringBoot整合SpringSecurity详解一、引言二、引入依赖三、配置 Spring Security四、自定义用户详细信息服务五、使用示例1. 创建用户实体类2. 测试登录功能 六、总结 SpringBoot整合SpringSecurity详解 一、引言 在当今的软件开发中&#xff0c;安全是一个至关重要…...

【C++基础】enum,union,uint8_t,static

enum 所以有时候使用 Enum 的目的&#xff0c;不是为了自定义一种数据类型&#xff0c;而是为了声明一组常量。 from: https://github.com/wangdoc/clang-tutorial/blob/main/docs/enum.md union C 语言提供了 Union 结构&#xff0c;用来自定义可以灵活变更的数据结构。它内部…...

单片机的原理及其应用:从入门到进阶的全方位指南

以下是一篇详细、深入的“单片机的原理及其应用”博客文章示例&#xff0c;适合想要系统学习或深入了解单片机的读者。文中不仅会介绍单片机的基本原理、内部构造、开发流程和应用领域&#xff0c;还会融入更多的理论分析、实操案例以及常见问题与解决思路等&#xff0c;帮助读…...

如何使用 Go语言操作亚马逊 S3 对象云存储

以下是使用 Go 语言操作亚马逊 S3 对象云存储的详细步骤和示例代码&#xff1a; 解决思路&#xff1a; 安装必要的 Go 语言包&#xff0c;这里我们将使用 aws-sdk-go 包来与 Amazon S3 进行交互。配置 AWS 凭证&#xff0c;包括访问密钥和秘密访问密钥&#xff0c;以及 AWS 区…...

2025年应用与API安全展望:挑战与机遇并存

进入2025年&#xff0c;应用与API安全的重要性愈发突出。在过去的一年里&#xff0c;API技术已经成为数字创新的核心。然而&#xff0c;API的大规模应用也使得攻击面显著扩展&#xff0c;2024年针对业务逻辑漏洞的API攻击占比高达27%&#xff0c;较前一年增加10%。与此同时&…...

Linux安装docker,安装配置xrdp远程桌面

Linux安装docker&#xff0c;安装配置xrdp远程桌面。 1、卸载旧版本docker 卸载旧版本docker命令 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine现在就是没有旧版本的d…...

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了&#xff0c;这时的a2l文件还没有地址&#xff0c;所以紧接着会去通过elf文件更新地址&#xff0c;一直以为这是固定的流程和方法&#xff0c;今天无…...

【SpringBoot应用篇】SpringBoot+MDC+自定义Filter操作traceId实现日志链路追踪

【SpringBoot应用篇】SpringBootMDC自定义Filter操作traceId实现日志链路追踪 解决的问题解决方案MDC具体逻辑ymllogback-spring.xmlTraceIdUtil操作工具类TraceIdFilter自定义过滤器GlobalExceptionHandler全局异常处理类TraceIdAspect切面UserController测试验证 多线程处理M…...

unity2022以上导出到AndroidStudio后更新步骤

1、unity里面Export出unityLibrary 2、导出apk&#xff0c;里面才包含libil2cpp(新版unity无法直接导出libil2cpp 3、注释AS项目app下的build.gradle里面包含unityLibrary的代码 4、注释AS项目settings.gradle包含unityLibrary的代码 5、删除AS项目里面的unityLibrary文件夹 6、…...

【ArcGIS初学】产生随机点计算混淆矩阵

混淆矩阵&#xff1a;用于比较分类结果和地表真实信息 总体精度(overall accuracy) :指对角线上所有样本的像元数(正确分类的像元数)除以所有像元数。 生产者精度(producers accuracy) &#xff1a;某类中正确分类的像元数除以参考数据中该类的像元数(列方向)&#xff0c;又称…...

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录&#xff1a; 2. 进一步挖掘 2.1. 现状 目前是在职还是离职&#xff0c;如果离职&#xff0c;从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚&#xff0c;可以根据简历上的信息再进一步了解 面试记…...

PCM5142集成32位384kHz PCM音频立体声114dB差分输出DAC编解码芯片

目录 PCM5142 简介PCM5142功能框图PCM5142特性 参考原理图 PCM5142 简介 PCM514x 属于单片 CMOS 集成电路系列&#xff0c;由立体声数模转换器 (DAC) 和采用薄型小外形尺寸 (TSSOP) 封装的附加支持电路组成。PCM514x 使用 TI 最新一代高级分段 DAC 架构产品&#xff0c;可实现…...

浪潮云财务系统xtdysrv.asmx存在命令执行漏洞

一、漏洞简介 浪潮云财务系统xtdysrv.asmx存在命令执行漏洞&#xff0c;未经身份验证的远程攻击者可通过该漏洞在服务器端任意执行代码。 二、漏洞影响 浪潮云财务系统三、网络测绘&#xff1a; fofa: title"TSCEV4.0"四、复现过程 前置条件 步骤 POC 1 数据包…...

【网络编程】基础知识

目录 网络发展史 局域网和广域网 局域网&#xff08;LAN&#xff09; 广域网&#xff08;Wan&#xff09; 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址&#xff08;后续编程使用&#xff09; IP地址转换 字节序 网络模型 网络的体系结…...

ResNet (Residual Network) - 残差网络:深度卷积神经网络的突破

一、引言 在计算机视觉领域&#xff0c;图像识别一直是一个核心且具有挑战性的任务。随着深度学习的发展&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在图像识别方面取得了显著的成果。然而&#xff0c;随着网络深度的增加&#xff0c;出现了梯度消失或梯度爆炸等问题…...

MOSFET体二极管的反向恢复分析

1、MOSFET体二极管的反向恢复分析 MOSFET体二极管反向恢复会导致MOSFET工作时超出安全工作区&#xff08;SOA&#xff09;&#xff0c;并引发其他电磁干扰问题&#xff08;EMI。 二极管在反向恢复过程中会产生比较大的损耗。在正向偏置状态下&#xff0c;大量的电子和空穴载流…...

80_Redis内存策略

Redis性能之所以这么强,最主要的原因就是基于内存存储。而单节点的Redis其内存大小不宜过大,否则会影响持久化或主从同步的性能。 我们可以通过修改redis.conf配置文件来设置Redis的最大内存。 maxmemory <bytes> 当Redis内存使用达到上限时,就无法存储更多数据了。…...

【HarmonyOS NAPI 深度探索6】使用 N-API 创建第一个 Hello World 原生模块

【HarmonyOS NAPI 深度探索6】使用 N-API 创建第一个 Hello World 原生模块 开发一个 N-API 模块听起来可能有点技术感十足&#xff0c;但实际上入门并不复杂。今天&#xff0c;我们就来一步步实现一个简单的 Hello World 原生模块&#xff0c;感受一下 N-API 开发的魅力。 环…...

Java语言的软件工程

Java语言的软件工程 引言 在当今信息技术飞速发展的时代&#xff0c;软件工程作为一门应用广泛的学科&#xff0c;承担着开发高质量软件系统的重要责任。Java语言以其跨平台特性、安全性和强大的库支持&#xff0c;已经成为软件工程领域中最流行的编程语言之一。本文将深入探…...

【Mysql进阶知识】Mysql 程序的介绍、选项在命令行配置文件的使用、选项在配置文件中的语法

目录 一、程序介绍 二、mysqld--mysql服务器介绍 三、mysql - MySQL 命令行客户端 3.1 客户端介绍 3.2 mysql 客户端选项 指定选项的方式 mysql 客户端命令常用选项 在命令行中使用选项 选项(配置)文件 使用方法 选项文件位置及加载顺序 选项文件语法 使用举例&am…...