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 查询?02. ElasticSearch term 查询数值型数据?03. ElasticSearch term 查询字符串类型数据?04. ElasticSearch term 查询日期型数据?05. ElasticSearch term 查询日期型数据的注意事项?…...

关于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:给定一个字符串 s,返回 s 中不同的非空 回文子序列 个数, 通过从 s 中删除 0 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致,那么它是 回文字符序列。 如果有某个 i , 满足 ai ! bi ÿ…...

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

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

【python-leecode刷题】动态规划类问题----以53. 最大子数组和为例
作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…...
Idea常用快捷键设置
设置来源于尚硅谷宋红康老师 第1组:通用型 说明 快捷键 复制代码-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组:提高编写速度(上…...

【新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、零代码自动化测试方法:NLP(自然语言处理) 06、为什么我们需要零代码自动化测…...

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

pyhon部署注意事项
前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...
宣城x移动云,打造“城市级物联感知平台”
随着新一代信息技术与城市现代化的深度融合,智慧城市建设的重要性也愈发凸显。而在智慧城市建设中,物联网感知体系扮演着中枢神经系统的角色。 安徽宣城紧抓长三角城市群一体化发展机遇,为构建“数字宣城”建设发展新模式,携手移…...

英伟达Jetson NX套件刷机,配置Ubuntu20。
0. 前言 人并没有眼见得那么光鲜亮丽,博客也是。 今天推荐一本书《一百个人的十年》,没错就是我们的那十年(60年代)。写得很真实,牛棚猪圈,确实如此。 1. SdkManager安装 官网下载。 打开终端 执行命令sud…...
Vue计算属性
计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数;简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性),仅此而已…...
代码随想录刷题-字符串-反转字符串
文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中:代码随想录,讲解视频:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili 习题 题目链接:344. 反转字符串 - …...

14-链表练习-剑指 Offer II 021. 删除链表的倒数第 n 个结点
题目 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入:head [1], n 1 输出:[] 示例 3&…...
用Java解决华为OD机试考题,真的高效,真的强,来吧,清单奉上,祝你上岸
华为 OD 机试题最新(Java)清单(机试题库还在逐日更新) 题库目录 直接在本页使用 CtrlF,输入题目名称就可以进行检索。 序号文章分值1【华为OD机试真题JAVA】快递装载问题_国服第二切图仔的博客-CSDN博客1002【华为…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
python数据结构和算法(1)
数据结构和算法简介 数据结构:存储和组织数据的方式,决定了数据的存储方式和访问方式。 算法:解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想,对于算法而言&a…...