Elasticsearch高阶查询
Elasticsearch高阶查询
文章目录
- Elasticsearch高阶查询
- 相关性和相关性算分
- 相关性 (Relevance)
- 什么是TF-IDF
- BM25
- explain关键字
- Boosting
- 如何通过Boost控制想要的文档排在前面?
- 布尔查询(bool Query)
- 查询语法
- 语法格式
- 单字符串多字段查询
- 三种场景
- 最佳字段(Best Fields)
- 多数字段(Most Fields)
- 混合字段(Cross Field)
- 最佳字段查询(Dis Max Query)
- 可以通过tie_breaker参数调整
- 混合字段
- 聚合查询
- 聚合的分类
- 数学运算,如最大,最小,求和,平均等
- Bucket aggregation:类似于分组,就是分桶的概念
- Pipeline Aggregation: 对其他的聚合结果进行二次聚合
相关性和相关性算分
搜索是用户和搜索引擎的对话,用户关心的是搜索结果的相关性
是否可以找到所有相关的内容
有多少不相关的内容被返回了
文档的打分是否合理
结合业务需求,平衡结果排名
如何衡量相关性:
- Precision(查准率)-尽可能返回较少的无关文档
- Recall(查全率)-尽量返回较多的相关文档
- Ranking-是否能够按照相关度进行排序
相关性 (Relevance)
搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结果进行
算分 _score。打分的本质是排序,需要把最符合用户需求的文档排在前面。ES 5之前,默认的相关性
算分采用TF-IDF,现在采用BM 25。
什么是TF-IDF
TF-IDF (term frequency-inverse document frequency) 是一种用于信息检索与数据挖掘的常用加权
技术。
- TF-IDF被公认为是信息检索领域最重要的发明,除了在信息检索,在文献分类和其他相关领
域有着非常广泛的应用。 - IDF的概念,最早是剑桥大学的“斯巴克.琼斯”提出
- 1972年一-“关键词特殊性的统计解释和它在文献检索中的应用”,但是没有从理论上解
释IDF应该是用log(全部文档数/检索词出现过的文档总数),而不是其他函数,也没有做进一
步的研究 - 1970,1980年代萨尔顿和罗宾逊,进行了进一步的证明和研究,并用香农信息论做了证明
- 现代搜索引擎,对TF-IDF进行了大量细微的优化
Lucene中的TF-IDF评分公式
- TF是词频(Term Frequency)
检索词在文档中出现的频率越高,相关性也越高
- IDF是逆向文本频率(Inverse Document Frequency)
每个检索词在索引中出现的频率,频率越高,相关性越低
比如java在100个文档中都有,而多线程只有一个文档有,那么java需要扫描100篇文档,而多线程只需要扫描一篇,所以java的相关性比多线程低。
java对于用户来说,搜索java,出现了100篇文档,那么对用户搜索的相关性是低的。
- 字段长度归一值(filed-length norm)
字段的长度是多少?字段越短,字段的权重越高。检索词出现在一个内容短的 title 要比同样的词出现在一个内容长的 content 字段权重更大。
说白了就是很长的content才找到那么一个搜索关键词,那么相关性肯定低撒。
BM25
BM25 就是对 TF-IDF 算法的改进,对于 TF-IDF 算法,TF(t)部分的值越大,整个公式返回的值就会越大。BM25 就针对这点进行来优化,随着TF(t) 的逐步加大,该算法的返回值会趋于一个数值。
explain关键字
在查询的时候加上explain:true可以返回相应的算分规则
POST hotel/_search
{"explain": true, "query": {"match": {"name": "北京"}}
}
返回具体的算分规则
"_explanation" : {"value" : 1.6035968,"description" : "weight(name:北京 in 163) [PerFieldSimilarity], result of:","details" : [{"value" : 1.6035968,"description" : "score(freq=2.0), computed as boost * idf * tf from:","details" : [{"value" : 2.2,"description" : "boost","details" : [ ]},{"value" : 1.1731012,"description" : "idf, computed as log(1 + (N - n + 0.5) / (n + 0.5)) from:","details" : [{"value" : 62,"description" : "n, number of documents containing term","details" : [ ]},{"value" : 201,"description" : "N, total number of documents with field","details" : [ ]}]},{"value" : 0.621351,"description" : "tf, computed as freq / (freq + k1 * (1 - b + b * dl / avgdl)) from:","details" : [{"value" : 2.0,"description" : "freq, occurrences of term within document","details" : [ ]},{"value" : 1.2,"description" : "k1, term saturation parameter","details" : [ ]},{"value" : 0.75,"description" : "b, length normalization parameter","details" : [ ]},{"value" : 9.0,"description" : "dl, length of field","details" : [ ]},{"value" : 8.815921,"description" : "avgdl, average length of field","details" : [ ]}]}]}]}
Boosting
Boosting是控制相关度的一个手段。
参数Boost的含义:
- 当Boost > 1 时,打分的权重相对性提升
- 当 0 < Boost < 1时,打分的权重相对性降低
- 当Boost < 0时,贡献负分
如何通过Boost控制想要的文档排在前面?
POST hotel/_search
{"query": {"match": {"name": {"query": "北京西直门","operator": "and"}}}
}
如查询北京西直门的酒店
{"_index" : "hotel2","_type" : "_doc","_id" : "1765008760","_score" : 13.104373,"_source" : {"id" : 1765008760,"name" : "如家酒店(北京西直门北京北站店)","address" : "西直门北大街49号","price" : 356,"score" : 44,"brand" : "如家","city" : "北京","business" : "西直门/北京展览馆地区","location" : "39.945106,116.353827","pic" : "https://m.tuniucdn.com/fb3/s1/2n9c/4CLwbCE9346jYn7nFsJTQXuBExTJ_w200_h200_c1_t0.jpg"}},{"_index" : "hotel2","_type" : "_doc","_id" : "414168","_score" : 12.663941,"_source" : {"id" : 414168,"name" : "7天连锁酒店(北京西直门店)","address" : "西城平安里西大街翠花街育幼胡同甲20-22号","price" : 419,"score" : 37,"brand" : "7天酒店","city" : "北京","business" : "西单、金融街地区","location" : "39.931338,116.364982","pic" : "https://m2.tuniucdn.com/filebroker/cdn/res/bc/66/bc666859edf4fc072a8006c66758058d_w200_h200_c1_t0.jpg"}}
可以看到如家评分在前面。
当我们将北京的条件boost相关性调低。
POST hotel/_search
{"query": {"boosting": {"positive": {"term": {"name": {"value": "西直门"}}},"negative": {"term": {"name": {"value": "北京"}}},"negative_boost": 0.2}}
}
{"_index" : "hotel2","_type" : "_doc","_id" : "414168","_score" : 0.87095565,"_source" : {"id" : 414168,"name" : "7天连锁酒店(北京西直门店)","address" : "西城平安里西大街翠花街育幼胡同甲20-22号","price" : 419,"score" : 37,"brand" : "7天酒店","city" : "北京","business" : "西单、金融街地区","location" : "39.931338,116.364982","pic" : "https://m2.tuniucdn.com/filebroker/cdn/res/bc/66/bc666859edf4fc072a8006c66758058d_w200_h200_c1_t0.jpg"}},{"_index" : "hotel2","_type" : "_doc","_id" : "1765008760","_score" : 0.87095565,"_source" : {"id" : 1765008760,"name" : "如家酒店(北京西直门北京北站店)","address" : "西直门北大街49号","price" : 356,"score" : 44,"brand" : "如家","city" : "北京","business" : "西直门/北京展览馆地区","location" : "39.945106,116.353827","pic" : "https://m.tuniucdn.com/fb3/s1/2n9c/4CLwbCE9346jYn7nFsJTQXuBExTJ_w200_h200_c1_t0.jpg"}}
可以看到7天酒店的评分高了
这种业务场景在于**收费**的要排在前面,即使它的相关性没那么高。
布尔查询(bool Query)
一个bool查询,是一个或者多个查询子句的组合,总共包括4种子句,其中2种会影响算分,2种不影响算分。
- must: 相当于&&,必须匹配,贡献算分
- should: 相当于or,选择性匹配,贡献算分
- must not: 相当于!,必须不能匹配,不贡献算分
- filter: 必须匹配,不贡献算分
在Elasticsearch中,有Query和 Filter两种不同的Context
-
Query Context: 相关性算分
-
Filter Context: 不需要算分,可以利用Cache,获得更好的性能
相关性并不只是全文本检索的专利,也适用于yes|no 的子句,匹配的子句越多,相关性评分越高。如果多条查询子句被合并为一条复合查询语句,比如 bool查询,则每个查询子句计算得出的评分会被合并到总的相关性评分中。
查询语法
- 子查询可以任意顺序出现
- 可以嵌套多个子查询
- 如果bool查询中,没有must条件,should必须至少满足一个查询
语法格式
POST hotel/_search
{"query": {"bool": {"must": [{},{},{}],"should": [{},{},{}],"must_not": [{},{},{}],"filter": [{},{},{}]}}
}
如查询北京市的如家酒店
POST hotel/_search
{"query": {"bool": {"must": [{"match": {"brand": "如家"}},{"match": {"city": "北京"}}]}}
}
查询北京市的如家酒店,并且不要国贸地区的
POST hotel/_search
{"query": {"bool": {"must": [{"match": {"brand": "如家"}},{"match": {"city": "北京"}}],"must_not": [{"match": {"business.keyword": "国贸地区"}}]}}
}
北京市的如家酒店,并且不要国贸地区的,并且价格在200到300之间,并且价格不重要
POST hotel/_search
{"query": {"bool": {"must": [{"match": {"brand": "如家"}},{"match": {"city": "北京"}}],"must_not": [{"match": {"business.keyword": "国贸地区"}}],"filter": [{"range": {"price": {"gte": 200,"lte": 300}}}]}}
}
北京市的如家酒店,并且不要国贸地区的,并且价格在200到300之间,并且价格不重要,而且地址最好在莲花池的
POST hotel/_search
{"query": {"bool": {"must": [{"match": {"brand": "如家"}},{"match": {"city": "北京"}}],"must_not": [{"match": {"business.keyword": "国贸地区"}}],"filter": [{"range": {"price": {"gte": 200,"lte": 300}}}],"should": [{"match": {"address": "莲花池"}}]}}
}
单字符串多字段查询
三种场景
最佳字段(Best Fields)
当字段之间相互竞争,又相互关联。例如,对于博客的 title和 body这样的字段,评分来自最匹配字段
多数字段(Most Fields)
处理英文内容时的一种常见的手段是,在主字段( English Analyzer),抽取词干,加入同义词,以匹配更多的文档。相同的文本,加入子字段 (Standard Analyzer),以提供更加精确的匹配。其他字段作为匹配文档提高相关度的信号,匹配字段越多则越好。
混合字段(Cross Field)
对于某些实体,例如人名,地址,图书信息。需要在多个字段中确定信息,单个字段只能作为整体的部分。希望在任何这些列出的字段中找到尽可能多的词
最佳字段查询(Dis Max Query)
将任何与任一查询匹配的文档作为结果返回,采用字段上最匹配的评分最终评分返回
第一种写法:
POST hotel/_search
{"query": {"multi_match": {"type": "best_fields", "query": "莲花","fields": ["address","business"],"tie_breaker": 0.2}}
}
type: best_fields默认
第二种写法:
POST hotel/_search
{"query": {"dis_max": {"tie_breaker": 0.7,"queries": [{"match": {"address": "莲花"}},{"match": {"business": "莲花"}} ]}}
}
可以通过tie_breaker参数调整
Tier Breaker是一个介于0-1之间的浮点数。0代表使用最佳匹配;1代表所有语句同等重要
- 获得最佳匹配语句的评分 score。
- 将其他匹配语句的评分与tie breaker相乘
- 对以上评分求和并规范化
混合字段
混合字段支持and符,可以在多字段中精确查询每个字段。如四川成都,在province中匹配四川,在city字段中匹配成都
聚合查询
聚合主要用做统计分析功能,常见的聚合操作有求和,平均,分组
语法:
"aggs": {"aggs_name": { //自定义聚合查询的名字"aggs_type" : { //聚合的定义,如求和还是平均什么的"aggs_body"},"aggs" : {} //子查询,如某些先分组,再平均的情况}
}
聚合的分类
数学运算,如最大,最小,求和,平均等
- 查询酒店价格最大,最小,和平均值,es默认会返回查询的数据结果,使用size:0可以不需要返回数据
POST hotel/_search
{"size": 0,"aggs": {"max_price": {"max": {"field": "price"}},"min_price" : {"min" : {"field": "price"}},"avg_price" : {"avg": {"field": "price"}}}
}
{"took" : 3,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 201,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"max_price" : {"value" : 3299.0},"min_price" : {"value" : 127.0},"avg_price" : {"value" : 660.6019900497513}}
}
- 利用
stats类型,计算所有的数学运算结果
POST hotel/_search
{"size": 0,"aggs": {"stats_price": {"stats": {"field": "price"}}}
}
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 201,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"stats_price" : {"count" : 201,"min" : 127.0,"max" : 3299.0,"avg" : 660.6019900497513,"sum" : 132781.0}}
}
- 去重查询 cardinality,主要是针对keyword进行去重,如果是text类型,不允许去重。
POST hotel/_search
{"size": 0,"aggs": {"cardinate_city": {"cardinality": {"field": "city"}}}
}
Bucket aggregation:类似于分组,就是分桶的概念
常见的分桶聚合:
- terms: 需要字段支持fielddata
- keyword默认支持fielddata
- text需要在Mapping中开启fielddata,会按照分词后的结果进行分桶
- 数字类型
- Range/Data Range
- Histogram(直方图)/Data Histogram
- 支持嵌套:也就在桶里再坐分桶
- 按照城市分组
POST hotel/_search
{"aggs": {"by_size": {"terms": {"field": "city"}}}
}
- 按照价格区间分组
POST hotel/_search
{"size": 0,"aggs": {"range_price": {"range": {"field": "price","ranges": [{"key": "小于200","to": 200},{"key": "500以内","from": 200,"to": 500},{"key": "1000以内","from": 500,"to": 1000},{"key": "大于1000","from": 1000}]}}}
}
"aggregations" : {"range_price" : {"buckets" : [{"key" : "小于200","to" : 200.0,"doc_count" : 17},{"key" : "500以内","from" : 200.0,"to" : 500.0,"doc_count" : 78},{"key" : "1000以内","from" : 500.0,"to" : 1000.0,"doc_count" : 77},{"key" : "大于1000","from" : 1000.0,"doc_count" : 29}]}}
- 按照价格区间进行直方图查询
POST hotel/_search
{"size": 0,"aggs": {"histogram_price": {"histogram": {"field": "price","interval": 1000,"extended_bounds": {"min": 0,"max": 3000}}}}
}
- 嵌套查询,如先按照城市进行分组,再计算各城市酒店的平均价格
# 先按照城市进行分桶,再求价格的平均值
POST hotel/_search
{"size": 0,"aggs": {"bucket_city": {"terms": {"field": "city"},"aggs": {"avg_price": {"avg": {"field": "price"}}}}}
}
Pipeline Aggregation: 对其他的聚合结果进行二次聚合
如求取各品牌下酒店平均价格的最小值
- 根据brand进行分桶
- 求取分桶下price的平均值
- 根据avg_price求最小值
POST hotel/_search
{"size": 0,"aggs": {"terms_brand": {"terms": {"field": "brand"},"aggs": {"avg_price": {"avg": {"field": "price"}}}},"min_price_by_brand" : {"min_bucket": {"buckets_path": "terms_brand>avg_price"}}}
}
buckets_path下的> 符号为路径符号,意思是最小值通过terms_brand下的avg_price取
相关文章:
Elasticsearch高阶查询
Elasticsearch高阶查询 文章目录 Elasticsearch高阶查询相关性和相关性算分相关性 (Relevance)什么是TF-IDFBM25explain关键字Boosting如何通过Boost控制想要的文档排在前面? 布尔查询(bool Query)查询语法语法格式 单字符串多字段查询三种场…...
【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)
目录 1. RTMP_Connect函数1.1 网络层连接(RTMP_Connect0)1.2 RTMP连接(RTMP_Connect1)1.2.1 握手(HandShake)1.2.2 RTMP的NetConnection(SendConnectPacket) 2.小结 RTMP协议相关&am…...
通过https方式访问内网IP
单位要做个用浏览器扫二维码的功能。我先在本地测试一直不成功,后来放到服务器上运行成功了。比较了一下,服务器上是https,但是本地没有证书。我问了一下信安的同事,要求二维码必须在本地扫描,不能上公网。所以只好在本…...
flutter 键盘弹出 都会重新Build
原因是调用MediaQuery.of(context)后,点击TextField组件时会导致调用build方法。 解决方法:在Scaffold组件的body嵌套Builder组件,然后设置一个BuildContext变量,将Builder组件中的context传递给BuildContext变量,然后…...
RedisDistributedLock 分布式锁
设计一个简单的 RedisDistributedLock 类,实现单例模式,并包含基本的锁定机制。这个类将使用 Redis 来管理锁,确保在分布式系统中资源的同步访问 import redis.clients.jedis.Jedis;public class RedisDistributedLock {private static Redi…...
Java之包装类
Java中的包装类(Wrapper Classes)是基本数据类型的对象包装类。Java为每个基本数据类型(如int、char等)提供了对应的包装类,使得基本类型可以被当作对象来处理。这些包装类位于java.lang包中。 包装类的用途 对象化&a…...
Linux - 权限
文章目录 一、用户二、文件 一、用户 1、Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 。 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“…...
免费图形化nginx管理工具nginxWebUI
nginxWebUI是一款图形化管理nginx配置得工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, 静态html服务器, ssl证书自动申请、续签、配置等, 配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完…...
编程上的挫折不可怕,可怕的是你畏惧了
如何克服编程学习中的挫折感 编程学习之路上,挫折感就像一道道难以逾越的高墙,让许多人望而却步。然而,真正的编程高手都曾在这条路上跌倒过、迷茫过,却最终找到了突破的方法。那么,我是如何在Bug的迷宫中找到出口的&…...
docker逃逸手法
docker逃逸手法 基本docker操作docker 命令dockerfilesDocker Compose漏洞利用容器漏洞 基本docker操作 docker 命令 # docker拉取 docker pull # 指定版本拉取 docker pull ubuntu:22.04# 显示镜像可执行的操作 docker image # 列出存储在本地系统上的所有图像 docker image…...
3 pytest Fixture
3 pytest Fixture 3.1 通过 conftest.py 共享 fixture3.2 使用 fixture 执行配置及销毁逻辑3.3 使用 --setup-show 回溯 fixture 的执行过程3.4 使用 fixture 传递测试数据3.5 使用多个 fixture3.6 指定 fixture 作用范围3.7 使用 usefixtures 指定 fixture3.8 为常用 fixture …...
pinctl 和 gpio子系统驱动
一.设备树中添加pinctl节点模板 1.创建对应的节点 同一个外设的 PIN 都放到一个节点里面,打开 imx6ull-14x14-evk.dts,在 iomuxc 节点 中的“imx6ul-evk”子节点下添加 “pinctrl_test” 节点。添加完成以后如下所示: pinctrl_test:test_g…...
RocketMQ消息堆积了怎么解决?
RocketMQ 的消息堆积,一般都是因为客户端本地消费过程中,由于消费耗时过长或消费并发度较小等原因,导致客户端消费能力不足,出现消息堆积的问题。 当线上出现消息堆积的问题时,一般有以下几种方式来解决: 增加消费者…...
C++第十二弹 -- STL之list模拟实现
文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…...
Destiny of Gods首轮测试正式开启,参与玩家数量突破10万
天神风云,波澜再兴,GameFi链游聚合平台Destiny of Gods首款同名数字卡牌回合制游戏首轮测试定档8月20日20:00(GMT8),现已正式开启! 这是一个由人、游灵和神灵共存的世界,历经蛮荒时期的纷争与信…...
QT聊天室基于Tcp
server.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this)) // 给服务器指针对象实例化空间{ui->setupUi(this); }Widget::~Widget() {delete ui; }…...
公开课观后感:密歇根大学python for everyone
从2024年1月17日到2024年8月20日,终于将密歇根大学的python for everyone的python公开课跟完。站在一月份规划的时刻来看,比我想象中花费的时间更多,我当时肯定没有想到要花上整整七个月的时间才能将这个公开课的内容看完,毕竟这个…...
goweb框架-gin
文章目录 Gin框架概览Gin框架的特点Gin框架的安装和基本使用安装基本使用 路由系统路由的基本概念Gin框架路由的特点 Radix Tree(基数树)基数树的定义和原理基数树在Gin框架中的应用节省空间的优化动态路由和通配符处理 路由树的构建注册路由的过程路由树…...
2024年接口测试高频面试题及答案
1. 什么是接口测试? •接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求 •测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系 2. 为什么要做接口…...
ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(8)
接前一篇文章:ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(7) 前边几回分析了笔者在MQTT测试时所遇到的问题: 最终定位到了是由于components\components\tcp_transport\transport_ssl.c的base_poll_write函数中调用的select函数超时返回…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
