【Elasticsearch】match查询
Elasticsearch 的`match`查询是全文搜索中最常用和最强大的查询类型之一。它允许用户在指定字段中搜索文本、数字、日期或布尔值,并提供了丰富的功能来控制搜索行为和结果。以下是`match`查询的详细解析,包括其工作原理、参数配置和使用场景。
1.`match`查询的基本概念
`match`查询是 Elasticsearch 中用于执行全文搜索的标准查询方式。它通过分析器(Analyzer)对查询文本进行处理,然后在指定字段中搜索匹配的文档。`match`查询的主要特点是它能够处理复杂的文本数据,并提供灵活的搜索选项。
2.`match`查询的工作原理
`match`查询的工作过程可以分为以下几个步骤:
2.1 文本分析
查询文本首先会被分析器处理,分析器会将查询文本分解为一系列的词元(Tokens)。分析器通常包括以下几个部分:
• 分词器(Tokenizer):将文本分解为词元。
• 过滤器(Token Filters):对词元进行进一步处理,如小写化、停用词过滤、词干提取等。
• 字符过滤器(Character Filters):对原始文本进行预处理,如删除HTML标签、替换特殊字符等。
2.2 构建布尔查询
分析器处理后的词元会被用来构建一个布尔查询(`boolean query`)。布尔查询是`match`查询的核心,它通过布尔逻辑(`AND`或`OR`)来组合多个词元的匹配条件。
• `operator`参数:
• `OR`(默认值):文档中包含查询词中的任意一个词元即可匹配。
• `AND`:文档中必须包含查询词中的所有词元才能匹配。
2.3 模糊匹配(可选)
如果启用了模糊匹配(通过`fuzziness`参数),Elasticsearch 会为每个词元生成模糊变体,并尝试匹配这些变体。模糊匹配允许一定程度的拼写错误或相似性匹配。
2.4 同义词扩展(可选)
如果字段定义中使用了同义词过滤器(如`synonym_graph`),`match`查询会将查询词扩展为同义词,并尝试匹配这些同义词。
2.5 查询执行
构建好的布尔查询会被执行,Elasticsearch 会搜索索引中的文档,找出匹配的文档。每个文档的相关性分数(`_score`)会根据匹配的词元数量、词频、倒排索引等因素计算得出。
2.6 结果返回
最终,Elasticsearch 会返回匹配的文档列表,以及每个文档的相关性分数。用户可以通过其他参数(如`from`和`size`)来分页显示结果。
3.`match`查询的参数
`match`查询支持多种参数,这些参数可以用来控制查询的行为和结果。以下是一些常用的参数:
3.1`query`(必需)
查询文本,可以是文本、数字、日期或布尔值。
3.2`analyzer`(可选)
用于分析查询文本的分析器。默认情况下,Elasticsearch 使用字段在索引时定义的分析器。如果没有定义分析器,则使用索引的默认分析器。
3.3`operator`(可选)
布尔逻辑,用于组合查询词元:
• `OR`(默认值):文档中包含查询词中的任意一个词元即可匹配。
• `AND`:文档中必须包含查询词中的所有词元才能匹配。
3.4`fuzziness`(可选)
允许的模糊匹配程度,可以是以下值之一:
• `0`:不启用模糊匹配。
• `1`或`2`:允许的编辑距离。
• `AUTO`:自动根据词元长度选择合适的编辑距离。
3.5`prefix_length`(可选)
模糊匹配中不变的前缀字符数量。默认值为`0`。
3.6`max_expansions`(可选)
模糊匹配中生成的最大词元数量。默认值为`50`。
3.7`fuzzy_transpositions`(可选)
是否允许字符置换(如`ab`→`ba`)。默认值为`true`。
3.8`boost`(可选)
用于调整文档相关性分数的提升值。默认值为`1.0`。值越小,相关性分数越低;值越大,相关性分数越高。
3.9`minimum_should_match`(可选)
必须匹配的子句的最小数量。可以是整数(如`3`)或百分比(如`75%`)。
3.10`zero_terms_query`(可选)
如果分析器移除了所有查询词元(如停用词过滤器),是否返回所有文档:
• `none`(默认值):不返回任何文档。
• `all`:返回所有文档,类似于`match_all`查询。
3.11`auto_generate_synonyms_phrase_query`(可选)
是否为多词同义词生成短语查询:
• `true`(默认值):生成短语查询。
• `false`:将多词同义词拆分为独立的词元进行匹配。
4.`match`查询的示例
4.1 基本用法
```json
GET /_search
{
"query": {
"match": {
"message": "this is a test"
}
}
}
```
• 查询字段`message`中包含`"this is a test"`的文档。
4.2 使用`operator`参数
```json
GET /_search
{
"query": {
"match": {
"message": {
"query": "capital of Hungary",
"operator": "AND"
}
}
}
}
```
• 查询字段`message`中同时包含`"capital"`和`"Hungary"`的文档。
4.3 使用`fuzziness`参数
```json
GET /_search
{
"query": {
"match": {
"message": {
"query": "tezt",
"fuzziness": "AUTO"
}
}
}
}
```
• 查询字段`message`中包含与`"tezt"`模糊匹配的文档。
4.4 使用`zero_terms_query`参数
```json
GET /_search
{
"query": {
"match": {
"message": {
"query": "to be or not to be",
"zero_terms_query": "all"
}
}
}
}
```
• 如果分析器移除了所有查询词元,则返回所有文档。
4.5 使用`minimum_should_match`参数
```json
GET /_search
{
"query": {
"match": {
"message": {
"query": "this is a test",
"minimum_should_match": "75%"
}
}
}
}
```
• 查询字段`message`中至少匹配查询词元的 75%的文档。
5.`match`查询的高级用法
5.1 多字段搜索
可以通过`multi_match`查询在多个字段中搜索相同的文本:
```json
GET /_search
{
"query": {
"multi_match": {
"query": "this is a test",
"fields": ["message", "description"]
}
}
}
```
• 查询字段`message`和`description`中包含`"this is a test"`的文档。
5.2 同义词扩展
使用`synonym_graph`过滤器时,`match`查询会自动扩展同义词:
```json
GET /_search
{
"query": {
"match": {
"message": {
"query": "NY",
"auto_generate_synonyms_phrase_query": true
}
}
}
}
```
• 查询字段`message`中包含`"NY"`或`"New York"`的文档。
6.`match`查询的优化建议
6.1 合理选择分析器
• 根据字段的内容和搜索需求选择合适的分析器。
• 例如,对于英文文本,可以使用`standard`分析器;对于中文文本,可以使用`ik_max_word`分析器。
6.2 控制模糊匹配
• 模糊匹配会增加查询的复杂度和性能开销,建议谨慎使用。
• 可以通过`fuzziness`、`prefix_length`和`max_expansions`参数来控制模糊匹配的范围。
6.3 使用`minimum_should_match`
• 通过`minimum_should_match`参数可以提高查询的精确度,减少无关结果的返回。
6.4 分页和性能优化
• 使用`from`和`size`参数进行分页,避免一次性返回大量结果。
• 对于大数据量的查询,可以使用`filter`
6.5 使用`filter`来提高性能
在查询中使用`filter`来缩小搜索范围,可以显著提高查询性能。`filter`通常用于过滤出满足特定条件的文档,而这些条件不需要计算相关性分数(`_score`)。例如:
```json
GET /_search
{
"query": {
"bool": {
"must": {
"match": {
"message": "this is a test"
}
},
"filter": {
"range": {
"timestamp": {
"gte": "2025-01-01",
"lte": "2025-01-31"
}
}
}
}
}
}
```
• 这个查询会先过滤出`timestamp`在 2025 年 1 月的文档,然后再在这些文档中搜索包含`"this is a test"`的文档。
6.6 使用`boosting`来调整结果
`boosting`查询可以用来降低某些文档的相关性分数,而不是完全排除它们。例如:
```json
GET /_search
{
"query": {
"boosting": {
"positive": {
"match": {
"message": "this is a test"
}
},
"negative": {
"match": {
"message": "error"
}
},
"boost": 0.2
}
}
}
```
• 这个查询会搜索包含`"this is a test"`的文档,但如果文档中包含`"error"`,则其相关性分数会被降低到原来的 20%。
6.7 使用`profile`来调试查询
Elasticsearch 提供了`profile`参数,可以帮助调试查询的执行过程。例如:
```json
GET /_search
{
"profile": true,
"query": {
"match": {
"message": "this is a test"
}
}
}
```
• 查询结果中会包含详细的执行计划和性能分析信息,帮助优化查询。
8.`match`查询的高级用法(续)
8.1 使用`query_string`查询
`query_string`查询允许使用更复杂的查询语法,支持布尔运算符、通配符等。例如:
```json
GET /_search
{
"query": {
"query_string": {
"query": "(this AND test) OR (error AND warning)",
"fields": ["message"]
}
}
}
```
• 这个查询会搜索字段`message`中包含`(this AND test)`或`(error AND warning)`的文档。
8.2 使用`simple_query_string`查询
`simple_query_string`查询类似于`query_string`,但语法更简单,适合用户输入。例如:
```json
GET /_search
{
"query": {
"simple_query_string": {
"query": "this AND test",
"fields": ["message"]
}
}
}
```
• 这个查询会搜索字段`message`中包含`this`和`test`的文档。
8.3 使用`match_phrase`查询
`match_phrase`查询用于搜索短语匹配,要求文档中包含完整的短语。例如:
```json
GET /_search
{
"query": {
"match_phrase": {
"message": "this is a test"
}
}
}
```
• 这个查询会搜索字段`message`中包含完整短语`"this is a test"`的文档。
8.4 使用`match_phrase_prefix`查询
`match_phrase_prefix`查询用于搜索短语匹配,并允许短语的最后一个词元使用前缀匹配。例如:
```json
GET /_search
{
"query": {
"match_phrase_prefix": {
"message": "this is a te"
}
}
}
```
• 这个查询会搜索字段`message`中包含`"this is a"`并且以`"te"`开头的短语。
8.5 使用`multi_match`查询
`multi_match`查询允许在多个字段中搜索相同的文本。例如:
```json
GET /_search
{
"query": {
"multi_match": {
"query": "this is a test",
"fields": ["message", "description"]
}
}
}
```
• 这个查询会搜索字段`message`和`description`中包含`"this is a test"`的文档。
9.`match`查询的性能优化
9.1 索引优化
• 合理设计字段映射:根据字段的内容和查询需求,合理选择字段类型和分析器。
• 使用倒排索引:Elasticsearch 默认使用倒排索引,确保字段类型适合倒排索引。
• 使用`keyword`类型字段:对于不需要分词的字段,使用`keyword`类型以提高查询性能。
9.2 查询优化
• 避免使用`match_all`查询:尽量使用更具体的查询条件来缩小搜索范围。
• 使用`filter`来减少结果集:通过`filter`条件过滤出符合特定条件的文档。
• 限制返回的字段:使用`_source`参数指定返回的字段,减少数据传输量。
9.3 硬件优化
• 增加内存:Elasticsearch 是内存密集型应用,增加内存可以显著提高性能。
• 使用 SSD 磁盘:SSD 磁盘的读写速度比传统硬盘快得多,可以提高查询性能。
• 合理配置集群:根据数据量和查询负载,合理配置 Elasticsearch 集群的节点数量和硬件配置。
10.总结
`match`查询是 Elasticsearch 中最强大的全文搜索工具之一,它通过分析器将查询文本转换为词元,并通过布尔逻辑组合这些词元来搜索匹配的文档。通过合理配置参数和优化查询,可以实现高效、灵活的全文搜索。
相关文章:
【Elasticsearch】match查询
Elasticsearch 的match查询是全文搜索中最常用和最强大的查询类型之一。它允许用户在指定字段中搜索文本、数字、日期或布尔值,并提供了丰富的功能来控制搜索行为和结果。以下是match查询的详细解析,包括其工作原理、参数配置和使用场景。 1.match查询的…...
【开发心得】CentOS7编译Redis7.4.2打包RPM完整方案
概述 由于最近客户需要解决redis版本升级问题,故而全网寻找安全版本,redis7.4.x版本求而为果,只能自己编译了。 截止发文时间2025-02-12 最新稳定版的redis版本号为7.4.2 Security fixes (CVE-2024-46981) Lua script commands may lead t…...
云计算——AWS Solutions Architect – Associate(saa)6.CloudWatch
Amazon CloudWatch 是一种面向开发运营工程师、开发人员、站点可靠性工程师(SRE)和 IT 经理的监控和可观测性服务。CloudWatch 为我们提供相关数据和切实见解,以监控应用程序、响应系统范围的性能变化、优化资源利用率,并在统一视图中查看运营状况。 Clo…...
面试实战题:手写一个队列和介绍Stream流怎么使用
手写一个队列 思路解析: 队列要有入队和出队操作,还要有查看队列大小,查看队头元素,查看队列是否为空,查看队列是否满了这些功能 package com.example.transational.MyQueue;public class MyQueue<T> {privat…...
Jmeter+Influxdb+Grafana平台监控性能测试过程
一、Jmeter自带插件监控 下载地址:https://jmeter-plugins.org/install/Install/ 安装:下载后文件为jmeter-plugins-manager-1.3.jar,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。 启动Jmeter&…...
【现代深度学习技术】深度学习计算 | GPU
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
基于斜坡单元的机器学习模型预测滑坡易发性,考虑条件因素的异质性
1、引用 Chang Z, Catani F, Huang F, et al. Landslide susceptibility prediction using slope unit-based machine learning models considering the heterogeneity of conditioning factors[J]. Journal of Rock Mechanics and Geotechnical Engineering, 2023…...
Node.js调用DeepSeek Api 实现本地智能聊天的简单应用
在人工智能快速发展的今天,如何快速构建一个智能对话应用成为了开发者们普遍关注的话题。本文将为大家介绍一个基于Node.js的命令行聊天应用,它通过调用硅基流动(SiliconFlow)的API接口,实现了与DeepSeek模型的智能对话…...
实战 - 编写一个最简单的 Hello World 内核模块
实战 - 编写一个最简单的 Hello World 内核模块 在嵌入式开发中,编写 Linux 内核模块是设备驱动开发的重要基础。内核模块可以帮助我们在不修改内核源码的情况下扩展内核功能。本篇博客将指导你如何编写并运行一个简单的 Hello World 内核模块,让你快速…...
面向对象程序设计-实验七
6-1 计算捐款总量 这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额 代码清单: #include <iostream> using namespace std; class Donator { private: string name; float money; //单位&…...
JVM组成
JVM是什么? JVM(Java Virtual Machine):Java程序的运行环境(java二进制字节码的运行环境) 好处: 1.一次编写,到处运行 Java代码是如何做到一次编写,到处运行? 计算机的最底层是计…...
java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException
Java8升级到17之后, 启动报错, :LocalValidatorFactoryBean]: Factory method defaultValidator threw exception; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException 报错原因:这个错误通常是由于缺少 javax.xml.bind 相关的依赖引起…...
Electron 实现自定义系统托盘菜单
效果如下: 其实实现自定义托盘菜单的本质上,就是开一个新窗口,下面直接给出核心代码。 // 加载窗口 const loadWindow (example, path) > {if (is.dev && process.env[ELECTRON_RENDERER_URL]) {example.loadURL(process.env[EL…...
HCIA-路由器相关知识和面试问题
二、 路由器 2.1 关于路由器的知识 2.1.1 什么是路由器 路由器是一种网络层互联设备,主要用于连接多个逻辑上分开的网络,实现不同网络之间的数据路由和通信。它能根据网络层地址(如 IP 地址)来转发数据包,在网络中起…...
2.【BUUCTF】bestphp‘s revenge
进入题目页面如下 进行代码审计 <?php // 1. 高亮显示当前PHP文件的源代码,方便开发者查看代码内容,在生产环境中不应使用此函数,可能会导致代码泄露。 highlight_file(__FILE__);// 2. 定义变量 $b ,其值为字符串 implode &…...
wx060基于springboot+vue+uniapp的宿舍报修系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
使用 meshgrid函数绘制网格点坐标的原理与代码实现
使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中,meshgrid 是一个常用函数,用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标,并给出具体的代码实现和原理解析。 实现思路 …...
快速上手Vim的使用
Vim Linux编辑器-vim使用命令行模式下所有选项都可以带数字底行模式可视块模式(ctrlV进入) Linux编辑器-vim使用 Vim有多种模式的编辑器。能帮助我们很快的进行代码的编辑,甚至完成很多其他事情。 默认情况下我们打开vim在命令模式下&#x…...
HCIA项目实践---ACL访问控制列表相关知识和配置过程
十 ACL访问控制列表 1 策略的概念 在网络连通之后, 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上,匹配流量,执行相应的动作。(流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...
机器学习核心算法解析
机器学习核心算法解析 机器学习是人工智能的核心技术之一,它通过从数据中学习模式并做出预测或决策。本文将深入解析机器学习的核心算法,包括监督学习、无监督学习和强化学习,并通过具体案例和代码示例帮助读者理解这些算法的实际应用。 1. …...
Oracle 12c 并发统计信息收集功能:技术解析与实践指南
一、功能背景与核心价值 在Oracle数据库的早期版本中,统计信息收集(如通过DBMS_STATS包)是串行执行的,即一次仅处理一个表或分区。对于大规模数据库或数据仓库环境,这种串行模式可能导致统计信息收集耗时过长…...
Android Studio:EditText常见4种监听方式
1. 文本变化监听(TextWatcher) TextWatcher 主要用于监听 EditText 里的文本变化,它有三个方法: beforeTextChanged(文本变化前)onTextChanged(文本正在变化时)afterTextChanged&a…...
【第2章:神经网络基础与实现——2.3 多层感知机(MLP)的构建与调优技巧】
在当今科技飞速发展的时代,人工智能早已不是一个陌生的词汇,它已经渗透到我们生活的方方面面,从智能语音助手到自动驾驶汽车,从图像识别到自然语言处理。而支撑这一切的核心技术之一,就是神经网络。作为机器学习领域的璀璨明星,神经网络已经在众多任务中取得了令人瞩目的…...
C++ 网络编程
1. socket Socket 是一种用于网络通信的编程接口,它提供了一种类似于文件描述符的接口,允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上,最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP(用户数据报协…...
SQL-leetcode—1683. 无效的推文
1683. 无效的推文 表:Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中,tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...
vue前端可视化大屏页面适配方案
参考了其他博主的代码,但发现会有滚动条,并且居中的位置不太对,所以改了一下css,修复了这些问题,直接上代码 <template> <div class"ScaleBoxA"><divclass"ScaleBox"ref"Sca…...
mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案
用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…...
Dockfile语法
目录 dockerfile的作用 1. 构建 Docker 映像 2. 提高开发和运维效率 3. 版本控制 4. 提供可移植性和灵活性 使用示例 总结 dockerfile应该放的位置 为什么放在根目录? 例外情况 调用构建 dockerfile的基本结构和常用指令 基本结构和常用指令 示例 Dock…...
Nginx负载均衡
一。Nginx负载均衡的算法以及过程 二。nginx四层负载均衡的配置(四层) 1.vi /etc/nginx/conf.d/lb.conf 比较常见:weight:设置权重,backup:当其他主机全部用不了,这个作为备份 2.systemctl r…...
【C】初阶数据结构5 -- 栈
前面学习了两种最基本的数据结构 -- 顺序表和链表,接下来就可以基于这两种数据结构来实现其他数据结构了。其实,其他的数据结构的物理结构要么是数组,要么就是链表,所以学好顺序表和链表是学好其他数据结构的基础。接下里…...
Linux查找占用的端口,并杀死进程的简单方法
在Linux系统管理中,识别并管理占用特定端口的进程是一项常见且重要的任务。以下是优化过的步骤指南,帮助您高效地完成这一操作,同时提供了一个简洁的命令参考表。 Linux下识别并终止占用端口的进程 1. 探寻端口占用者 使用 lsof命令 lsof…...
为什么Pytorch中实例化模型会直接调用forward方法?
在 PyTorch 中,为何定义一个继承自 nn.Module 的自定义类并实现 forward 方法后,直接调用模型实例时,便会自动调用其 forward 方法?例如使用 output model(x) 这种形式。 因为自定义的神经网络类所继承的 nn.Module 类对 __call_…...
easyexcel快速使用
1.easyexcel EasyExcel是一个基于ava的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel 即通过java完成对excel的读写操作, 上传下载 2.easyexcel写操作 把java类中的对象写入到excel表格中 步骤 1.引入依赖 <depen…...
DeepSeek的出现会对百度有多大影响?
当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 01 传统搜索已死?AI助手正在重写游戏规则! 当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 就像汽车淘汰马车、触屏终结按键…...
生成格雷码
以下是Verilog实现格雷码的两种常见方法: 1. 二进制转格雷码(组合逻辑实现) module binary_to_gray #(parameter N 4 // 默认4位位宽 )(input [N-1:0] binary, // 二进制输入output [N-1:0] gray // 格雷码输出 );assign gray binary…...
【STM32】BootLoader和IAP详解
文章目录 0 前言1 基本概念2 BootLoader3 主程序相关配置4 相关理论:芯片启动与中断响应5 特殊情况:Cortex-M0内核的芯片 0 前言 最近在研究一个RT-Thread的项目,遇到很多之前没咋遇见过的STM32相关的知识,想着顺带也整体过一遍。…...
Threadlocal的实现原理
文章目录 ThreadLocal与Thread关系分析Threadlocal 不支持继承性lnheritableThreadLocal 类 ThreadLocal与Thread关系分析 由该图可知, Thread 类中有一个 threadLocals 和一个 inheritableThreadLocals , 它们 都是 ThreadLocalMap 类型 的变量 &#x…...
【Elasticsearch】多字段查询方式汇总
在 Elasticsearch 中,实现多字段查询的常见方式有以下几种,每种方式适用于不同的场景: --- ### 1. **multi_match 查询** - **用途**:在多个字段中执行同一查询,支持多种匹配策略。 - **关键参数**:…...
Unity使用反射进行Protobuf(CS/SC)协议,json格式
protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…...
MySQL和SQL server的区别
在当今数据驱动的世界里,数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统(DBMS),它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别…...
SpringMVC请求执行流程源码解析
文章目录 0.SpringMVC九大内置组件1.processRequest方法1.请求先到service方法2.然后不管是get还是post都会跳转到processRequest方法统一处理 2.doService方法3.doDispatch方法1.代码2.checkMultipart 4.核心流程 0.SpringMVC九大内置组件 1.processRequest方法 1.请求先到se…...
LabVIEW与小众设备集成
在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中࿰…...
docker-compose暴露端口,但其他主机无法访问问题。
问题描述:docker-compose暴露端口,但其他主机无法访问问题。 排障思路: 执行命令:ss -antlp | grep 80,发现端口正常监听0.0.0.0:80(ps:如果是127.0.0.1:80则只能本机访问同区域网段服务器执行…...
【MySQL】 基本查询(上)
欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】 基本查询(上) 发布时间:2025.2.14 隶属专栏:MySQL CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 目录 Create基…...
python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向
文章目录 前言一、Python 爬虫简介二、环境搭建1. 下载 Python2. 安装 Python3. 安装必要的库 三、一个简单的爬虫示例四、应对网站反爬机制五、深入学习方向 前言 以下是一份较为全面的 Python 爬虫教程,涵盖基础知识、环境搭建、简单示例、反爬应对及深入学习方向…...
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...
你认为如何理解“约定大于配置”?
SpringBoot的“约定大于配置”(Convention Over Configuration)是一种核心理念,旨在简化开发过程,减少开发人员在配置上的繁琐工作。以下是对其含义的详细介绍: 一、定义与目的 定义:约定优于配置&#x…...
Linux 基础IO——重定向和缓冲区
目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 (1)输出重定向 (2)追加重定向 (3) 输入重定向 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区? 4.这个缓冲区在哪里ÿ…...
基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!
一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统,专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈,提供了丰富的功能…...
华为云之CodeArts IDE的使用体验
一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开发者提供的智能化可扩展桌面集成开发环境(IDE),结合华为云行业和产业开发套件,实现…...