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

ElasticSearch系列 - SpringBoot整合ES:精确值查询 term

文章目录

      • 01. ElasticSearch term 查询?
      • 02. ElasticSearch term 查询数值型数据?
      • 03. ElasticSearch term 查询字符串类型数据?
      • 04. ElasticSearch term 查询日期型数据?
      • 05. ElasticSearch term 查询日期型数据的注意事项?
      • 06. ElasticSearch term 查询布尔型数据?
      • 07. ElasticSearch term 查询数组型数据?
      • 08. ElasticSearch term 查询对象型数据?
      • 09. SpringBoot整合ES实现term查询?
      • 10. TermQueryBuilder 源码

01. ElasticSearch term 查询?

在 ElasticSearch 中,term 查询是一种用于查找指定字段中包含指定值的文档的查询方式。term 查询是一种精确匹配查询,它会精确地匹配指定字段中的值,不会对查询关键词进行分词处理。

GET /${index_name}/_search 
{ "query": { "term": { "${FIELD}": {            //搜索字段名称 "value": "${ VALUE }"  //搜索值 } } } 
}  

FIELD和VALUE分别代表字段名称和查询值,FIELD的数据类型可以是数值型、布尔型、日期型、数组型及关键字等。

02. ElasticSearch term 查询数值型数据?

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"price":{"type": "integer"}}}
}PUT /my_index/_doc/1
{"price":10
}PUT /my_index/_doc/2
{"price":20
}PUT /my_index/_doc/3
{"price":30
}

② 查询 price 字段包含 10的文档:

GET /my_index/_search
{"query": {"term": {"price": {"value": "10"}}}
}
{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"price" : 10}}]}
}

③ 需要注意的是,term 查询是一种精确匹配查询,它不会对查询关键词进行分词处理。因此,如果查询关键词包含多个单词,term 查询可能无法匹配到任何文档。在这种情况下,可以考虑使用 match 查询或者 phrase 查询等其他查询方式。

GET /my_index/_search
{"query": {"term": {"title": {"value": "金都时尚"}}}
}
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]}
}

03. ElasticSearch term 查询字符串类型数据?

在 ElasticSearch 中,term 查询是一种用于精确匹配查询的查询方式,可以用于查询 keyword 类型的字符串。term 查询会将查询关键词作为一个整体进行匹配,只有当查询关键词与文档中的词条完全匹配时,才会返回匹配的文档。keyword类型不会对文本进行分词,term查询不会对关键词进行分词,如果查询关键词分词了或者文本分词了,都有可能查询不到结果。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"tag":{"type": "keyword"}}}
}PUT /my_index/_doc/1
{"tag":"这是一个标签一"
}PUT /my_index/_doc/2
{"tag":"这是一个标签二"
}PUT /my_index/_doc/3
{"tag":"这是一个标签三"
}

② 查询 tag 字段包含 “这是一个标签三” 的文档:

GET /my_index/_search
{"query": {"term": {"tag": {"value": "这是一个标签三"}}}
}

term 查询会将查询关键词作为一个整体进行匹配,它不会对查询关键词进行分词处理。只有当文档中的 "tag " 字段的值与查询关键词完全匹配时,才会返回匹配的文档。

{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 0.9808292,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.9808292,"_source" : {"tag" : "这是一个标签三"}}]}
}

04. ElasticSearch term 查询日期型数据?

在Elasticsearch中,可以使用日期类型来索引日期型数据,并且可以指定日期的格式。日期类型支持多种日期格式,并且可以用于搜索、聚合和排序操作。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"createTime":{"type": "date","format": "yyyy-MM-dd HH:mm:ss"}}}
}PUT /my_index/_doc/1
{"createTime":"2023-03-29 10:30:11"
}PUT /my_index/_doc/2
{"createTime":"2023-03-29 10:35:11"
}PUT /my_index/_doc/3
{"createTime":"2023-03-29 10:38:11"
}

② 查询 createTime 字段包含 “2023-03-29 10:38:11” 的文档:

GET /my_index/_search
{"query": {"term": {"createTime":  "2023-03-29 10:30:11"}}
}
{"took" : 12,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"createTime" : "2023-03-29 10:30:11"}}]}
}

③ 注意:如果"create_time"字段包含时间信息,需要使用完整的日期时间格式来进行匹配,否则查询将报错:

GET /my_index/_search
{"query": {"term": {"create_time": {"value": "2023-03-28"}}}
}

报错结果:

"caused_by": {"type": "date_time_parse_exception","reason": "Text '2023-03-28' could not be parsed at index 10"
}

05. ElasticSearch term 查询日期型数据的注意事项?

在Elasticsearch中,日期型数据的默认格式是ISO 8601格式,即yyyy-MM-dd’T’HH:mm:ss.SSSZ。其中,yyyy表示年份,MM表示月份,dd表示日期,HH表示小时,mm表示分钟,ss表示秒,SSS表示毫秒,Z表示时区。

PUT /my_index
{"mappings": {"properties": {"create_time": {"type": "date"}}}
}

在这个示例中,"create_time"字段被定义为一个日期类型的字段,会使用默认的数据格式即 ISO 8601 格式。

要索引和创建日期型数据,您可以使用以下示例请求:

PUT /my_index/_doc/1
{"create_time": "2023-03-28T12:00:00"
}

如果您要搜索所有"create_time"字段值在某个日期之后的文档,您可以使用以下查询:

GET /my_index/_search
{"query": {"range": {"create_time": {"gte": "2023-03-28T00:00:00"}}}
}

对于日期型的字段查询,需要按照该字段在mappings中定义的格式进行查询。如果create_time字段使用默认的格式,那么下面的请求是错误的:

GET /my_index/_search 
{ "query": { "term": { "create_time": {               "value": "2021-01-15 12:00:00"  //使用与默认格式不符的日期格式查询} } } 
} 

06. ElasticSearch term 查询布尔型数据?

在Elasticsearch中,可以使用term查询来搜索布尔型数据。布尔型数据只有两个可能的值:true和false。因此,term查询是精确匹配查询,只能用于搜索精确匹配的值,而不能用于搜索范围或模糊匹配的值。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"flag":{"type": "boolean"}}}
}PUT /my_index/_doc/1
{"flag":true
}PUT /my_index/_doc/2
{"flag":true
}PUT /my_index/_doc/3
{"flag":false
}

② 查询 flag 字段包含 true 的文档:

GET /my_index/_search
{"query": {"term": {"flag": true}}
}
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.47000363,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 0.47000363,"_source" : {"flag" : true}},{"_index" : "my_index","_type" : "_doc","_id" : "2","_score" : 0.47000363,"_source" : {"flag" : true}}]}
}

07. ElasticSearch term 查询数组型数据?

在Elasticsearch中,可以使用term查询来查询数组类型的数据。term查询用于匹配一个字段中包含指定值的文档。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"tags":{"type": "keyword"}}}
}PUT /my_index/_doc/1
{"tags":["tag1"]
}PUT /my_index/_doc/2
{"tags":["tag2"]
}PUT /my_index/_doc/3
{"tags":["tag1","tag2"]
}PUT /my_index/_doc/4
{"tags":["tag1","tag2","tag3"]
}

② 查询 tags 字段包含 tag1 的文档,将返回所有"tags"数组中包含"tag1"的文档。

GET /my_index/_search
{"query": {"term": {"tags":"tag1"}}
}
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : 0.43250346,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 0.43250346,"_source" : {"tags" : ["tag1"]}},{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.43250346,"_source" : {"tags" : ["tag1","tag2"]}},{"_index" : "my_index","_type" : "_doc","_id" : "4","_score" : 0.43250346,"_source" : {"tags" : ["tag1","tag2","tag3"]}}]}
}

③ 需要注意的是,如果"tags"字段包含多个值,您需要使用精确匹配所有值的查询,则需要使用以下查询:

GET /my_index/_search
{"query": {"bool": {"must": [{"term": {"tags": "tag1"}},{"term": {"tags": "tag2"}},{"term": {"tags": "tag3"}}]}}
}

搜索结果为:

{"took" : 5,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.3249426,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "4","_score" : 2.3249426,"_source" : {"tags" : ["tag1","tag2","tag3"]}}]}
}

08. ElasticSearch term 查询对象型数据?

① 索引文档,构造数据,映射中包含了一个名为"person"的对象类型字段

PUT /my_index
{"mappings": {"properties": {"person": {"type": "object","properties": {"name": {"type": "keyword"},"age": {"type": "integer"},"address": {"type": "keyword"}}}}}
}PUT /my_index/_doc/1
{"person": {"name": "John","age": 30,"address": "123 Main St"}
}PUT /my_index/_doc/2
{"person": {"name": "Alex","age": 20,"address": "123 Main St"}
}PUT /my_index/_doc/3
{"person": {"name": "Smith","age": 10,"address": "123 Main St"}
}

在这个示例中,“person"字段被定义为一个对象类型的字段,并且包含了三个子字段,即"name”、“age"和"address”。

② 查询person.name 字段中包含 Smith 的文档:

GET /my_index/_search
{"query": {"term": {"person.name": "Smith"}}
}
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 0.9808292,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.9808292,"_source" : {"person" : {"name" : "Smith","age" : 10,"address" : "123 Main St"}}}]}
}

③ 需要注意的是,如果对象型数据包含多个字段,您需要使用精确匹配所有字段的查询。例如,如果对象型数据包含"name"和"age","address"字段,您需要使用以下查询:

GET /my_index/_search
{"query": {"bool": {"must": [{"term": {"person.name":"John"}},{"term": {"person.age": 30}},{"term": {"person.address": {"value": "123 Main St"}}}]}}
}

搜索结果为:

{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.1143606,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 2.1143606,"_source" : {"person" : {"name" : "John","age" : 30,"address" : "123 Main St"}}}]}
}

09. SpringBoot整合ES实现term查询?

GET /my_index/_search
{"query": {"term": {"price": {"value": "337"}}}
}
@Slf4j
@Service
public class ElasticSearchImpl {@Autowiredprivate RestHighLevelClient restHighLevelClient;public void searchUser() throws IOException {SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();TermQueryBuilder termQueryBuilder = new TermQueryBuilder("price",337);searchSourceBuilder.query(termQueryBuilder);SearchRequest searchRequest = new SearchRequest(new String[]{"my_index"},searchSourceBuilder);SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);System.out.println(searchResponse);}
}

10. TermQueryBuilder 源码

public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {public static final String NAME = "term";private static final ParseField TERM_FIELD = new ParseField("term");private static final ParseField VALUE_FIELD = new ParseField("value");/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, String) */public TermQueryBuilder(String fieldName, String value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, int) */public TermQueryBuilder(String fieldName, int value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, long) */public TermQueryBuilder(String fieldName, long value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, float) */public TermQueryBuilder(String fieldName, float value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, double) */public TermQueryBuilder(String fieldName, double value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, boolean) */public TermQueryBuilder(String fieldName, boolean value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, Object) */public TermQueryBuilder(String fieldName, Object value) {super(fieldName, value);}
}

相关文章:

ElasticSearch系列 - SpringBoot整合ES:精确值查询 term

文章目录01. ElasticSearch term 查询&#xff1f;02. ElasticSearch term 查询数值型数据&#xff1f;03. ElasticSearch term 查询字符串类型数据&#xff1f;04. ElasticSearch term 查询日期型数据&#xff1f;05. ElasticSearch term 查询日期型数据的注意事项&#xff1f…...

关于async/await、promise和setTimeout执行顺序

关于async/await、promise和setTimeout执行顺序 async function async1() {console.log(async1 start);await async2();console.log(asnyc1 end); } async function async2() {console.log(async2); } console.log(script start); setTimeout(() > {console.log(setTimeOut…...

2023-03-31:如何计算字符串中不同的非空回文子序列个数?

2023-03-31&#xff1a;给定一个字符串 s&#xff0c;返回 s 中不同的非空 回文子序列 个数&#xff0c; 通过从 s 中删除 0 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致&#xff0c;那么它是 回文字符序列。 如果有某个 i , 满足 ai ! bi &#xff…...

D. The Number of Imposters(二分图染色)

Problem - D - Codeforces Theofanis开始玩名为“Among them”的新网络游戏。然而&#xff0c;他总是和塞浦路斯球员一起踢球&#xff0c;他们都有一个相同的名字:“安德烈亚斯”(塞浦路斯最常见的名字)。在每个游戏中&#xff0c;Theofanis和n个其他玩家一起玩。因为它们都有相…...

图片太大怎么改小kb?简单的图片压缩方法分享

平时当我们在朋友圈分享一些有趣的照片或者使用图片素材进行上传的时候&#xff0c;经常遇到图片大小kb超出平台限制的情况&#xff0c;这时就无法正常上传了&#xff0c;遇到这种情况我们就需要想办法降低图片大小kb&#xff0c;那么有什么办法能够压缩图片大小呢&#xff1f;…...

【python-leecode刷题】动态规划类问题----以53. 最大子数组和为例

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…...

Idea常用快捷键设置

设置来源于尚硅谷宋红康老师 第1组&#xff1a;通用型 说明 快捷键 复制代码-copy ctrl c 粘贴-paste ctrl v 剪切-cut ctrl x 撤销-undo ctrl z 反撤销-redo ctrl shift z 保存-save all ctrl s 全选-select all ctrl a 第2组&#xff1a;提高编写速度&#xff08;上…...

【新2023Q2模拟题JAVA】华为OD机试 - 分苹果

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:分苹果 题目 AB两个人把苹果…...

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 BERT、GPT、ELMO对比学习简记

目录三模型架构BERTGPTELMO三者差异点三模型架构 BERT 优点 在11个NLP任务上取得SOAT成绩.利用了Transformer的并行化能力以及长语句捕捉语义依赖和结构依赖.BERT实现了双向Transformer并为后续的微调任务留出足够的空间. 缺点 BERT模型太大, 太慢.BERT模型中的中文模型是以…...

【嵌入式Bluetooth应用开发笔记】第四篇:初探蓝牙HOST及应用开发(持续更新ing)

概念 蓝牙HOST(Bluetooth Host)是指能够连接到其他蓝牙设备并控制它们的设备。在蓝牙技术中,通常有两种类型的设备:蓝牙HOST和蓝牙SLAVE。蓝牙HOST通常是指拥有控制权的设备,它可以主动连接其他蓝牙设备并向其发送命令。相反,蓝牙SLAVE则是指被动连接的设备,它接受来自…...

GORM 基础 -- CRUD 接口

1、Create 1.1 创建纪录 user : User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}result : db.Create(&user) // pass pointer of data to Createuser.ID // 回填插入数据的主键 result.Error // 返回的 error 信息 result.RowsAffect…...

为什么0代码自动化测试越来越受欢迎?一文2000字解析

目录 01、什么是零代码自动化测试 02、为什么零代码自动化测试越来越受欢迎 03、有代码和零代码自动化有什么区别 04、零代码自动化测试可以帮助你做什么 05、零代码自动化测试方法&#xff1a;NLP&#xff08;自然语言处理&#xff09; 06、为什么我们需要零代码自动化测…...

cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍

CleanMyMac X4.12.5 中文版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级&#xff0c;功能方面有更多增加&#xff0c;与最新macOS系统更加兼容&#xff0c;流畅地与系统性能更加…...

pyhon部署注意事项

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…...

宣城x移动云,打造“城市级物联感知平台”

随着新一代信息技术与城市现代化的深度融合&#xff0c;智慧城市建设的重要性也愈发凸显。而在智慧城市建设中&#xff0c;物联网感知体系扮演着中枢神经系统的角色。 安徽宣城紧抓长三角城市群一体化发展机遇&#xff0c;为构建“数字宣城”建设发展新模式&#xff0c;携手移…...

英伟达Jetson NX套件刷机,配置Ubuntu20。

0. 前言 人并没有眼见得那么光鲜亮丽&#xff0c;博客也是。 今天推荐一本书《一百个人的十年》&#xff0c;没错就是我们的那十年&#xff08;60年代&#xff09;。写得很真实&#xff0c;牛棚猪圈&#xff0c;确实如此。 1. SdkManager安装 官网下载。 打开终端 执行命令sud…...

Vue计算属性

计算属性 ​ 计算属性的重点突出在属性两个字上(属性是名词)&#xff0c;首先它是个属性其次这个属性有计算的能力(计算是动词)&#xff0c;这里的计算就是个函数;简单点说&#xff0c;它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性)&#xff0c;仅此而已…...

代码随想录刷题-字符串-反转字符串

文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中&#xff1a;代码随想录&#xff0c;讲解视频&#xff1a;字符串基础操作&#xff01; | LeetCode&#xff1a;344.反转字符串_哔哩哔哩_bilibili 习题 题目链接&#xff1a;344. 反转字符串 - …...

14-链表练习-剑指 Offer II 021. 删除链表的倒数第 n 个结点

题目 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&…...

用Java解决华为OD机试考题,真的高效,真的强,来吧,清单奉上,祝你上岸

华为 OD 机试题最新&#xff08;Java&#xff09;清单&#xff08;机试题库还在逐日更新&#xff09; 题库目录 直接在本页使用 CtrlF&#xff0c;输入题目名称就可以进行检索。 序号文章分值1【华为OD机试真题JAVA】快递装载问题_国服第二切图仔的博客-CSDN博客1002【华为…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...