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

Elasticsearch进阶篇-DSL

目录

DSL查询

1 快速入门

2 DSL 查询分类

2.1 叶子查询

2.1.1 全文检索查询

语法

举例

2.1.2 精准查询

term 语法

term 示例

range 语法

range 示例

2.2 复合查询

2.2.1 bool查询

举例

2.3 排序

语法

示例

2.4 分页

2.4.1 基础分页

示例

2.4.2 深度分页

2.4.3 总结

2.5 高亮

2.5.1 语法

2.5.2 示例

2.5.3 注意

3. 总结


今天,我们来研究下elasticsearch的数据搜索功能。Elasticsearch提供了基于JSON的DSL(Domain Specific Language)语句来定义查询条件,其JavaAPI就是在组织DSL条件。

因此,我们先学习DSL的查询语法,然后再基于DSL来对照学习JavaAPI,就会事半功倍。

DSL查询

Elasticsearch的查询可以分为两大类:

  • 叶子查询(Leaf query clauses):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。

  • 复合查询(Compound query clauses):以逻辑方式组合多个叶子查询或者更改叶子查询的行为方式。

1 快速入门

我们依然在Kibana的DevTools中学习查询的DSL语法。首先来看查询的语法结构:

GET /{索引库名}/_search 
{ "query": {"查询类型": { // .. 查询条件 }} 
}

说明:

  • GET /{索引库名}/_search:其中的_search是固定路径,不能修改

例如,我们以最简单的无条件查询为例,无条件查询的类型是:match_all,因此其查询语句如下:

# 无条件查询
GET /items/_search
{"query": {"match_all": {}}
}

由于match_all无条件,所以条件位置不写即可。

执行结果如下:

{"took" : 9,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 10000,"relation" : "gte"},"max_score" : 1.0,"hits" : [{"_index" : "items","_type" : "_doc","_id" : "317578","_score" : 1.0,"_source" : {"id" : "317578","name" : "RIMOWA 21寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4","price" : 28900,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "RIMOWA","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1683342377000}},{"_index" : "items","_type" : "_doc","_id" : "317580","_score" : 1.0,"_source" : {"id" : "317580","name" : "RIMOWA 26寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4","price" : 28600,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "RIMOWA","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1696644279000}},{"_index" : "items","_type" : "_doc","_id" : "546872","_score" : 1.0,"_source" : {"id" : "546872","name" : "博兿(BOYI)拉杆包男23英寸大容量旅行包户外手提休闲拉杆袋 BY09186黑灰色","price" : 27500,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t3301/221/3887995271/90563/bf2cadb/57f9fbf4N8e47c225.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "博兿","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}},{"_index" : "items","_type" : "_doc","_id" : "561178","_score" : 1.0,"_source" : {"id" : "561178","name" : "RIMOWA 30寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4","price" : 13000,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "RIMOWA","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1696644294000}},{"_index" : "items","_type" : "_doc","_id" : "577967","_score" : 1.0,"_source" : {"id" : "577967","name" : "莎米特SUMMIT 旅行拉杆箱28英寸PC材质大容量旅行行李箱PC154 黑色","price" : 71300,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t30454/163/719393962/79149/13bcc06a/5bfca9b6N493202d2.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "莎米特","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}},{"_index" : "items","_type" : "_doc","_id" : "584382","_score" : 1.0,"_source" : {"id" : "584382","name" : "美旅AmericanTourister拉杆箱 商务男女超轻PP行李箱时尚大容量耐磨飞机轮旅行箱 25英寸海关锁DL7灰色","price" : 36600,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/22734/21/2036/130399/5c18af2aEab296c01/7b148f18c6081654.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "美旅箱包","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}},{"_index" : "items","_type" : "_doc","_id" : "584387","_score" : 1.0,"_source" : {"id" : "584387","name" : "美旅AmericanTourister拉杆箱 商务男女超轻PP行李箱时尚大容量耐磨飞机轮旅行箱 29英寸海关锁DL7灰色","price" : 16200,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/22734/21/2036/130399/5c18af2aEab296c01/7b148f18c6081654.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "美旅箱包","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}},{"_index" : "items","_type" : "_doc","_id" : "584391","_score" : 1.0,"_source" : {"id" : "584391","name" : "美旅AmericanTourister拉杆箱 商务男女超轻PP行李箱时尚大容量耐磨飞机轮旅行箱 20英寸海关锁DL7灰色","price" : 29900,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/22734/21/2036/130399/5c18af2aEab296c01/7b148f18c6081654.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "美旅箱包","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}},{"_index" : "items","_type" : "_doc","_id" : "584392","_score" : 1.0,"_source" : {"id" : "584392","name" : "美旅AmericanTourister拉杆箱 商务男女超轻PP行李箱时尚大容量耐磨飞机轮旅行箱 29英寸海关锁DL7灰色","price" : 17000,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/22734/21/2036/130399/5c18af2aEab296c01/7b148f18c6081654.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "美旅箱包","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1696644299000}},{"_index" : "items","_type" : "_doc","_id" : "584394","_score" : 1.0,"_source" : {"id" : "584394","name" : "美旅AmericanTourister拉杆箱 商务男女超轻PP行李箱时尚大容量耐磨飞机轮旅行箱 25英寸海关锁DL7灰色","price" : 79400,"image" : "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/22734/21/2036/130399/5c18af2aEab296c01/7b148f18c6081654.jpg!q70.jpg.webp","category" : "拉杆箱","brand" : "美旅箱包","sold" : 0,"commentCount" : 0,"isAD" : false,"updateTime" : 1556640000000}}]}
}

你会发现虽然是match_all,但是响应结果中并不会包含索引库中的所有文档,而是仅有10条。这是因为处于安全考虑,elasticsearch设置了默认的查询页数。

2 DSL 查询分类

DSL 查询可以分为两大类:
• 叶子查询( Leaf query clauses ):一般是在特定的字段里查询特定值,属于简单查询,很少单独使用。
• 复合查询( Compound query clauses ):以逻辑方式组合多个叶子查询或者更改叶子查询的行为方式。
在查询以后,还可以对查询的结果做处理,包括:
• 排序:按照 1 个或多个字段值做排序
• 分页:根据 from 和 size 做分页,类似 MySQL
• 高亮:对搜索结果中的关键字添加特殊样式,使其更加醒目
• 聚合:对搜索结果做数据统计以形成报表

2.1 叶子查询

这里列举一些常见的,例如:

  • 全文检索查询(Full Text Queries):利用分词器对用户输入搜索条件先分词,得到词条,然后再利用倒排索引搜索词条。例如:

    • match

    • multi_match

  • 精确查询(Term-level queries):不对用户输入搜索条件分词,根据字段内容精确值匹配。但只能查找keyword、数值、日期、boolean类型的字段。例如:

    • ids

    • term

    • range

  • 地理坐标查询用于搜索地理位置,搜索方式很多,例如:

    • geo_bounding_box:按矩形搜索

    • geo_distance:按点和半径搜索

  • ...略

2.1.1 全文检索查询
语法

以全文检索中的match为例

GET /{索引库名}/_search
{"query": {"match": {"字段名": "搜索条件"}}
}

 与match类似的还有multi_match,区别在于可以同时对多个字段搜索,而且多个字段都要满足,

GET /{索引库名}/_search
{"query": {"multi_match": {"query": "搜索条件","fields": ["字段1", "字段2"]}}
}
举例
# match所有
# 需求:搜索商品名称含脱脂牛奶
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}}
}
GET /items/_search
{"query": {"multi_match": {"query": "脱脂牛奶","fields": ["name","brand"]}}
}
2.1.2 精准查询

精确查询,英文是Term-level query,顾名思义,词条级别的查询。也就是说不会对用户输入的搜索条件再分词,而是作为一个词条,与搜索的字段内容精确值匹配。因此推荐查找keyword、数值、日期、boolean类型的字段。例如:

  • id

  • price

  • 城市

  • 地名

  • 人名

等等,作为一个整体才有含义的字段。

term 语法

term查询为例,其语法如下:

GET /{索引库名}/_search
{"query": {"term": {"字段名": {"value": "搜索条件"}}}
}
term 示例
# 需求:搜索品牌名称是德亚
GET /items/_search
{"query": {"term": {"brand": {"value": "德亚"}}}
}
range 语法
GET /{索引库名}/_search
{"query": {"range": {"字段名": {"gte": {最小值},"lte": {最大值}}}}
}

range是范围查询,对于范围筛选的关键字有:

  • gte:大于等于

  • gt:大于

  • lte:小于等于

  • lt:小于

range 示例
# 需求:搜索结果在500到1000的
GET /items/_search
{"query": {"range": {"price": {"gte": 50000,"lte": 100000}}}
}

2.2 复合查询

复合查询大致可以分为两类:

  • 第一类:基于逻辑运算组合叶子查询,实现组合条件,例如

    • bool

  • 第二类:基于某种算法修改查询时的文档相关性算分,从而改变文档排名。例如:

    • function_score

    • dis_max

注:我们这里只讲解bool查询

2.2.1 bool查询

bool查询,即布尔查询。就是利用逻辑运算来组合一个或多个查询子句的组合。bool查询支持的逻辑运算有:

  • must:必须匹配每个子查询,类似“与”

  • should:选择性匹配子查询,类似“或”

  • must_not:必须不匹配,不参与算分,类似“非”

  • filter:必须匹配,不参与算分

bool查询的语法如下:

GET /items/_search
{"query": {"bool": {"must": [{"match": {"name": "手机"}}],"should": [{"term": {"brand": { "value": "vivo" }}},{"term": {"brand": { "value": "小米" }}}],"must_not": [{"range": {"price": {"gte": 2500}}}],"filter": [{"range": {"price": {"lte": 1000}}}]}}
}

出于性能考虑,与搜索关键字无关的查询尽量采用must_not或filter逻辑运算,避免参与相关性算分。

举例

我们要搜索手机,但品牌必须是华为,价格必须是900~1599,那么可以这样写:

GET /items/_search
{"query": {"bool": {"must": [{"match": {"name": "手机"}}],"filter": [{"term": {"brand": { "value": "华为" }}},{"range": {"price": {"gte": 90000, "lt": 159900}}}]}}
}

2.3 排序

elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。不过分词字段无法排序,能参与排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。

语法
GET /indexName/_search
{"query": {"match_all": {}},"sort": [{"排序字段": {"order": "排序方式asc和desc"}}]
}
示例
# 排序查询,排序没有打分,先按第一个字段排序,仅当第一个字段值相同时,才会按第二个字段排序。如果第一个字段的值完全不同,后续字段不会影响最终顺序。
GET /items/_search
{"query": {"match_all": {}},"sort": [{"sold": "desc"},{"price": "asc"}]
}

2.4 分页

elasticsearch 默认情况下只返回top10的数据。而如果要查询更多数据就需要修改分页参数了。

2.4.1 基础分页

elasticsearch中通过修改fromsize参数来控制要返回的分页结果:

  • from:从第几个文档开始

  • size:总共查询几个文档

类似于mysql中的limit ?, ?

示例
GET /items/_search
{"query": {"match_all": {}},"from": 0, // 分页开始的位置,默认为0"size": 10,  // 每页文档数量,默认10"sort": [{"price": {"order": "desc"}}]
}
2.4.2 深度分页

elasticsearch的数据一般会采用分片存储,也就是把一个索引中的数据分成N份,存储到不同节点上。这种存储方式比较有利于数据扩展,但给分页带来了一些麻烦。

针对深度分页,elasticsearch提供了两种解决方案:

  • search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。官方推荐使用的方式。

  • scroll:原理将排序后的文档id形成快照,保存下来,基于快照做分页。官方已经不推荐使用。

2.4.3 总结

大多数情况下,我们采用普通分页就可以了。查看百度、京东等网站,会发现其分页都有限制。例如百度最多支持77页,每页不足20条。京东最多100页,每页最多60条。

因此,一般我们采用限制分页深度的方式即可,无需实现深度分页。

2.5 高亮

高亮显示:就是在搜索结果中把搜索关键字突出显示。

2.5.1 语法
GET /{索引库名}/_search
{"query": {"match": {"搜索字段": "搜索关键字"}},"highlight": {"fields": {"高亮字段名称": {"pre_tags": "<em>","post_tags": "</em>"}}}
}
2.5.2 示例
# 高亮
GET /items/_search
{"query": {"match": {"name": "脱脂牛奶"}},"highlight": {"fields": {"name": { "pre_tags": "<em>", //默认em,所以可以不写"post_tags": "</em>"}}}
}
2.5.3 注意
  • 搜索必须有查询条件,而且是全文检索类型的查询条件,例如match

  • 参与高亮的字段必须是text类型的字段

  • 默认情况下参与高亮的字段要与搜索字段一致,除非添加:required_field_match=false

3. 总结

查询的DSL是一个大的JSON对象,包含下列属性:

  • query:查询条件

  • fromsize:分页条件

  • sort:排序条件

  • highlight:高亮条件

相关文章:

Elasticsearch进阶篇-DSL

目录 DSL查询 1 快速入门 2 DSL 查询分类 2.1 叶子查询 2.1.1 全文检索查询 语法 举例 2.1.2 精准查询 term 语法 term 示例 range 语法 range 示例 2.2 复合查询 2.2.1 bool查询 举例 2.3 排序 语法 示例 2.4 分页 2.4.1 基础分页 示例 2.4.2 深度分页 …...

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案) 一、单项选择题(每题 5 分) C++ 程序流程控制的基本结构不包括以下哪项? A. 分支结构 B. 数据结构 C. 循环结构 D. 顺序结构 以下哪段代码能将数组 int a[4] = {2, 4, 6, 8}; 的所有元素变…...

C++ 二分查找:解锁高效搜索的密码

一、引言 在 C 编程的广阔领域中&#xff0c;数据处理和查找是日常开发中极为常见的操作。想象一下&#xff0c;你有一个包含数百万个数据的有序数组&#xff0c;需要从中快速找到特定的元素&#xff0c;如果采用逐个遍历的方式&#xff0c;效率之低可想而知&#xff0c;而二分…...

YOLO12改进-模块-引入Channel Reduction Attention (CRA)模块 降低模型复杂度,提升复杂场景下的目标定位与分类精度

在语义分割任务中&#xff0c;基于 Transformer 的解码器需要捕获全局上下文信息&#xff0c;但传统自注意力机制&#xff08;如 SRA&#xff09;因高分辨率特征图导致计算成本高昂。现有方法多通过降低空间分辨率减少计算量&#xff0c;但未充分优化通道维度。为平衡全局上下文…...

sparkSQL读入csv文件写入mysql

思路 示例 &#xff08;年龄>18改成>20) mysql的字符集问题 把user改成person “让字符集认识中文”...

如何确定自己的职业发展方向?

引言 确定职业发展方向是一个需要深度自我探索和外部信息结合的过程。以下是系统化的思考框架和行动步骤&#xff0c;帮助你逐步清晰方向&#xff1a; 一、核心问题&#xff1a;职业方向的本质是什么&#xff1f; 职业方向的核心是找到 “你能做什么”&#xff08;能力&…...

【LLIE专题】基于Retinex理论的transformer暗光增强

Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement&#xff08;2023&#xff0c;ICCV&#xff09; 专题介绍一、研究背景二、Retinexformer方法1. 通用Retinex理论2. 作者建立的Retinex理论3. ORF(one stage Retinex-based Framework)4. 网…...

C++多态与虚函数详解——从入门到精通

C多态与虚函数详解——从入门到精通 引言 在C面向对象编程中&#xff0c;多态是一个核心概念&#xff0c;它赋予了程序极大的灵活性和扩展性。本文将通过六个精心设计的实例&#xff0c;深入浅出地讲解C中的多态、虚函数、继承和抽象类等概念&#xff0c;帮助初学者快速理解这…...

自适应Prompt技术:让LLM精准理解用户意图的进阶策略

开发&#xff5c;界面&#xff5c;引擎&#xff5c;交付&#xff5c;副驾——重写全栈法则&#xff1a;AI原生的倍速造应用流 来自全栈程序员 nine 的探索与实践&#xff0c;持续迭代中。 欢迎关注评论私信交流~ 一、核心挑战&#xff1a;传统Prompt的局限性 传统静态Prompt&…...

Java文件读写程序

1.引言 在日常的软件开发中&#xff0c;文件操作是常见的功能之一。不仅要了解如何读写文件&#xff0c;更要知道如何安全地操作文件以避免程序崩溃或数据丢失。这篇文章将深入分析一个简单的 Java 文件读写程序 Top.java&#xff0c;包括其基本实现、潜在问题以及改进建议&am…...

数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器

目录 1 使用Digital软件来绘制脉冲触发的触发器 1.1 使用Digital软件来绘制脉冲触发的SR触发器 1.2 使用Digitial软件绘制脉冲触发的JK触发器 1.3 使用Digital软件绘制脉冲触发D触发器 1 使用Digital软件来绘制脉冲触发的触发器 1.1 使用Digital软件来绘制脉冲触发的SR触发…...

C++学习:六个月从基础到就业——C++20:范围(Ranges)基础

C学习&#xff1a;六个月从基础到就业——C20&#xff1a;范围(Ranges)基础 本文是我C学习之旅系列的第五十一篇技术文章&#xff0c;也是第三阶段"现代C特性"的第十三篇&#xff0c;介绍C20引入的范围(Ranges)库的基础知识。查看完整系列目录了解更多内容。 引言 S…...

【AGI】模型性能评估框架EvalScope

【AGI】模型性能评估框架EvalScope 项目地址&#xff1a;https://github.com/modelscope/evalscope ​ EvalScope 是由阿里巴巴魔搭社区&#xff08;ModelScope&#xff09;推出的一款开源模型评估框架&#xff0c;旨在为大语言模型&#xff08;LLM&#xff09;和多模态模型提供…...

【老马】离线版金融敏感信息加解密组件开源项目 encryption-local

前言 你是否存在这样的苦恼&#xff0c;数据需要安全存储&#xff0c;但是每个系统大家自己写&#xff0c;很浪费时间。。 每一个子项目各自为政&#xff0c;加解密搞得也无法统一。也许下面这个开源项目可以帮助你。 encryption-local 一个离线版本的金融敏感信息加解密工具…...

利用systemd启动部署在服务器上的web应用

0.背景 系统环境&#xff1a; Ubuntu 22.04 web应用情况&#xff1a; 前后端分类&#xff0c;前端采用react&#xff0c;后端采用fastapi 1.具体配置 1.1 前端配置 开发态运行&#xff08;启动命令是npm run dev&#xff09;,创建systemd服务文件 sudo nano /etc/systemd/…...

YOLOv5目标构建与损失计算

YOLOv5目标构建与损失计算 YOLOv5目标构建与损失计算构建目标关键步骤解析&#xff1a; 计算损失关键实现细节解析各损失分量说明 YOLOv5目标构建与损失计算 YOLOv5作为单阶段目标检测的经典算法&#xff0c;其高效的检测性能离不开精心设计的训练目标构建和损失计算策略。本文…...

【Linux】ELF与动静态库的“暗黑兵法”:程序是如何跑起来的?

目录 一、什么是库&#xff1f; 1. C标准库&#xff08;libc&#xff09; 2. C标准库&#xff08;libstdc&#xff09; 二、静态库 1. 静态库的生成 2. 静态库的使用 三、动态库 1. 动态库的生成 2. 动态库的使用 3. 库运行的搜索路径。 &#xff08;1&#xff09;原因…...

【图书管理系统】用户注册系统实现详解

引言 本系统允许用户输入用户名和密码&#xff0c;前端通过AJAX请求将数据发送到后端&#xff0c;后端验证并存储用户信息&#xff0c;同时为每个用户创建一个专属图书表。尽管这是一个基础实现&#xff0c;但它展示了前后端分离开发的核心思想。博客还将讨论潜在的优化点&…...

FastDFS分布式文件系统架构学习(一)

FastDFS分布式文件系统架构学习 1. FastDFS简介 FastDFS是一个开源的轻量级分布式文件系统&#xff0c;由淘宝资深架构师余庆设计并开发。它专为互联网应用量身定制&#xff0c;特别适合以中小文件&#xff08;如图片、文档、音视频等&#xff09;为载体的在线服务。FastDFS不…...

Oracle 内存优化

Oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区&#xff0c;也就是 SGA和 PGA(process global area or private global area)。对于 SGA 区域内的内存来说&#xff0c;是共享的全局的。在 UNIX 上&#xff0c;必须为 Oracle 设置共享内存段(可以是一个或者多…...

算法题(149):矩阵消除游戏

审题&#xff1a; 本题需要我们找到消除矩阵行与列后可以获得的最大权值 思路&#xff1a; 方法一&#xff1a;贪心二进制枚举 这里的矩阵消除时&#xff0c;行与列的消除会互相影响&#xff0c;所以如果我们先统计所有行和列的总和&#xff0c;然后选择消除最大的那一行/列&am…...

AI:NLP 情感分析

💬 从零开始掌握情感分析:NLP 初学者实战指南 本文适合自然语言处理(NLP)入门者,聚焦于最热门应用之一——情感分析(Sentiment Analysis)。无论你是学生、工程师,还是数据爱好者,都可以通过本文了解情感分析的原理、方法和实现技巧。 🧠 一、什么是情感分析? 情感…...

LearnOpenGL---着色器

着色器的例子 文章目录 着色器的例子1.颜色变化的三角形2.构造三个顶点颜色不同的一个三角形 1.颜色变化的三角形 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <cmath>void framebuffer_size_callback(GLFWwindow* …...

计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 13.几何着色器(一)修改顶点

几何着色器 以下是OpenGL图像管线的主要阶段&#xff1a; 几何着色器&#xff08;Geometry Shader&#xff09; 几何着色器是OpenGL管线中的一个可选阶段&#xff0c;位于顶点着色器和片段着色器之间。它能够动态地生成或修改图元&#xff08;primitives&#xff09;。 主…...

如何利用 Java 爬虫获得某书笔记详情:实战指南

在知识分享和学习的领域&#xff0c;许多平台提供了丰富的书籍笔记和学习资源。通过 Java 爬虫技术&#xff0c;我们可以高效地获取这些笔记的详细信息&#xff0c;以便进行进一步的分析和整理。本文将详细介绍如何利用 Java 爬虫获取某书笔记详情&#xff0c;并提供完整的代码…...

【关联git本地仓库,上传项目到github】

目录 1.下载git2.绑定用户3.git本地与远程仓库交互4.github项目创建5.上传本地项目到github6.完结撒花❀❀❀&#xff01;&#xff01;&#xff01; 1.下载git git下载地址&#xff1a;https://git-scm.com/downloads 下载安装后创建快捷地址&#xff1a;&#xff08;此处比较…...

计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统

NMR&#xff08;N-Modular Redundancy&#xff0c;N 模冗余&#xff09;是一种通用的容错设计架构&#xff0c;通过引入 N 个冗余模块&#xff08;N ≥ 3 且为奇数&#xff09;&#xff0c;并采用多数投票机制&#xff0c;来提升系统的容错能力与可靠性。单个模块如果可靠性小于…...

配置代理服务器访问github、google

配置代理服务器访问github、google 背景与原理配置环境配置步骤云主机配置Windows客户端创建SSH隧道安装 Windows 内置 OpenSSHssh config 配置文件创建动态代理隧道 浏览器代理设置 验证浏览器访问google、githubssh 访问github 背景与原理 由于网络政策限制&#xff0c;中国…...

Java API学习笔记

一.类 1. String 类 不可变性&#xff1a;String对象创建后不可修改&#xff0c;每次操作返回新对象 String str "Hello"; str.length(); str.charAt(0); str.substring(1, 4); str.indexOf("l"); str.equals("hel…...

C++ map容器: 插入操作

1. map插入操作基础 map是C STL中的关联容器&#xff0c;存储键值对(key-value pairs)。插入元素时有四种主要方式&#xff0c;各有特点&#xff1a; 1.1 头文件与声明 #include <map> using namespace std;map<int, string> mapStu; // 键为int&#xff0c;值…...

Linux SSH 远程连接全攻略:从加密原理到实战配置(含图解)

一、SSH 加密体系核心理论 &#xff08;一&#xff09;对称加密与非对称加密对比解析 1. 加密算法分类与应用场景 类型代表算法密钥数量加密速度安全性特点典型用途对称加密AES、3DES1 个★★★★☆密钥传输风险高会话数据加密非对称加密RSA、ECC2 个★★☆☆☆公钥可公开&a…...

项目制作流程

一、使用 CRA 创建项目 npx create-react-app name 二、按照业务规范整理项目目录 &#xff08;重点src目录&#xff09; 三、安装插件 npm install sass -Dnpm install antd --savenpm install react-router-dom 四、配置基础路由 Router 1. 安装路由包 react-router-dom …...

ctr查看镜像

# 拉取镜像到 k8s.io 命名空间 sudo nerdctl --namespace k8s.io pull nginx:1.23.4 # 验证镜像是否已下载 sudo nerdctl --namespace k8s.io images 下载镜像到k8s.io名称空间下 nerdctl --namespace k8s.io pull zookeeper:3.6.2 sudo ctr image pull --namespace k8s.io …...

【深度学习基础】从感知机到多层神经网络:模型原理、结构与计算过程全解析

【深度学习基础】从感知机到多层神经网络&#xff1a;模型原理、结构与计算过程全解析 1. 引言 神经网络的重要性&#xff1a; 作为人工智能的核心技术之一&#xff0c;神经网络通过模拟人脑神经元的工作机制&#xff0c;成为解决复杂模式识别、预测和决策任务的利器。从图像分…...

discuz X3.5批量新建用户

<?php define(IN_DISCUZ, true); require ./source/class/class_core.php; // 确保管理员权限&#xff08;可选&#xff0c;增加安全性&#xff09;删除这一段加粗则可以直接使用. if ($_G[adminid] ! 1) { exit(Access denied. Only admin allowed.); } C::app()->…...

symfonos: 1靶场

symfonos: 1 来自 <https://www.vulnhub.com/entry/symfonos-1,322/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.252 3&…...

C# String 格式说明符

标准格式说明符数字格式说明符C 或 c&#xff1a;货币格式D 或 d&#xff1a;十进制数字格式E 或 e&#xff1a;科学计数法格式。F 或 f&#xff1a;固定点格式G 或 g&#xff1a;常规格式N 或 n&#xff1a;数字格式P 或 p&#xff1a;百分比格式X 或 x&#xff1a;十六进制格…...

Python高级特性深度解析:从熟练到精通的跃迁之路

Python高级特性深度解析&#xff1a;从熟练到精通的跃迁之路 引言 对于已经掌握Python基础语法的开发者而言&#xff0c;如何突破瓶颈进入高手行列&#xff1f;本文将从Python的高级特性入手&#xff0c;深入剖析那些能让代码更优雅、效率更高的技术点&#xff0c;助你完成从…...

【微信小程序 + 高德地图API 】键入关键字搜索地址,获取经纬度等

前言 又到熟悉的前言&#xff0c;接到个需求&#xff0c;要引入高德地图api&#xff0c;我就记录一下&#xff0c;要是有帮助记得点赞、收藏、关注&#x1f601;。 后续有时间会慢慢完善一些文章&#xff1a;&#xff08;画饼时间&#xff09; map组件自定义气泡、mark标记点…...

贪心、分治和回溯算法

1. 贪心算法 1.1. 贪心算法的概念 定义&#xff1a;在求解过程中&#xff0c;始终做出当前状态下看起来“最优”的选择&#xff0c;不回退。核心思想&#xff1a;每一步都选择当前最优解&#xff0c;期望最后得到全局最优解。 适用问题的特征&#xff1a; 问题可以分解成多个…...

window自带截图快捷键

Win Shift S&#xff1a;按此组合键后&#xff0c;会出现截图模式选择框&#xff0c;可选择矩形截图、任意形状截图、窗口截图和全屏幕截图&#xff0c;然后使用 “Ctrl V” 粘贴截图内容...

简单使用Slidev和PPTist

简单使用Slidev和PPTist 1 简介 前端PPT制作有很多优秀的工具包&#xff0c;例如&#xff1a;Slidev、revealjs、PPTist等&#xff0c;Slidev对Markdown格式支持较好&#xff0c;适合与大模型结合使用&#xff0c;选哟二次封装&#xff1b;revealjs适合做数据切换&#xff0c…...

1.2.2

某智慧养老平台的心率监测模块目前存在数据准确性不高、异常预警响应慢等问题&#xff0c;影响了老年人健康监测的体验和服务质量。作为人工智能训练师&#xff0c;你需要结合业务知识和人工智能技术&#xff0c;对该模块进行优化设计与实现。 &#xff08;1&#xff09;列出心…...

LeeCode 101.对称二叉树

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内-100 < Node.val < 100 进阶&#xff1a;你可以运用递归和迭代两种方法解决这个问题吗&#xff1f; 答案 && 测试代码&#xff1a; #include &…...

面向GIS的Android studio移动开发(二)--在地图上绘制电子围栏

电子围栏&#xff0c;校园跑的常客&#xff0c;也是定位打卡必不可少的东西 主要代码&#xff1a; 创建电子围栏代码 // 添加多边形地理围栏&#xff08;兼容2023版SDK&#xff09;private void addPolygon(String fenceName, List<LatLng> points) {if (points null…...

《从零开始:Spring Cloud Eureka 配置与服务注册全流程》​

关于Eureka的学习&#xff0c;主要学习如何搭建Eureka&#xff0c;将order-service和product-service都注册到Eureka。 1.为什么使用Eureka? 我在实现一个查询订单功能时&#xff0c;希望可以根据订单中productId去获取对应商品的详细信息&#xff0c;但是产品服务和订单服…...

能力验证及大练兵活动第一期

计算机 请根据计算机检材&#xff0c;回答以下问题&#xff1a; (10道题&#xff0c;共19.0分) 1. 计算机中曾挂载的Bitlocker加密分区的恢复密钥后6位为&#xff1f;&#xff08;答案格式&#xff1a;6位数字&#xff09; (1.0分) 答案&#xff1a;700755 2. 请写出曾远程连…...

TASK03【Datawhale 组队学习】搭建向量知识库

文章目录 向量及向量知识库词向量与向量向量数据库 数据处理数据清洗文档分割 搭建并使用向量数据库 向量及向量知识库 词向量与向量 词向量&#xff08;word embedding&#xff09;是一种以单词为单位将每个单词转化为实数向量的技术。词向量背后的主要想理念是相似或相关的…...

ProfibusDP转ModbusRTU的实用攻略

ProfibusDP转ModbusRTU的实用攻略 在工业自动化领域中&#xff0c;Profibus DP和Modbus RTU是两种常见的通信协议。 Profibus DP是一种广泛应用于过程控制和工厂自动化的现场总线标准&#xff0c;具有高实时性和可靠性。 而Modbus RTU则是一种串行通信协议&#xff0c;常用于…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序源码的去中心化商业扩散研究

摘要&#xff1a;本文探讨在去中心化商业趋势下&#xff0c;开源AI智能名片链动21模式S2B2C商城小程序源码如何助力企业挖掘数据价值、打破信息孤岛&#xff0c;实现商业高效扩散。通过分析该技术组合的架构与功能&#xff0c;结合实际案例&#xff0c;揭示其在用户关系拓展、流…...