Elasticsearch-模糊查询
模糊查询
-
前缀搜索:prefix
概念:以xx开头的搜索,不计算相关度评分。
注意:
PUT my_index
{"mappings": {"properties": {"text": {"analyzer": "ik_max_word","type": "text","index_prefixes":{"min_chars":2,"max_chars":4},"fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}
}
PUT my_index的含义是向Elasticsearch发送一个PUT请求来创建一个名为“my_index”的索引。
在Elasticsearch中,索引是用于存储和检索数据的容器。每个索引都有一个或多个映射(mapping),这些映射定义了索引中字段的类型、分析器、字段属性等。在提供的JSON中,“mappings"字段的作用是指定索引的映射定义。它定义了索引中包含的字段及其属性。
在"properties"字段下,定义了一个名为"text"的字段。该字段的配置如下:
“analyzer”: “ik_max_word”:指定使用"ik_max_word"分析器,这是一个用于中文分词的分析器。
“type”: “text”:字段类型设置为"text”,表示这是一个文本字段,可以用于全文搜索。
“index_prefixes”:定义了前缀搜索的参数,其中"min_chars"和"max_chars"分别表示最小和最大前缀长度。
“fields”:定义了多重字段(multi-fields),即一个字段可以有多个不同的表示。在这里,定义了一个名为"keyword"的子字段,其类型为"keyword",表示这是一个不分析的字段,通常用于精确匹配和排序。
"ik_max_word"是IK分词器的一个变种,用于中文分词。它试图将文本尽可能细粒度地分割成单词,以提供更好的全文搜索效果。
"index_prefixes"和"fields"的用途是提供对文本字段的额外索引方式。例如,"index_prefixes"使得可以使用前缀搜索,而"fields"中的"keyword"子字段使得可以进行精确匹配和排序,而不是基于分析器的全文搜索。
综合上述配置,这个映射定义了一个名为"text"的文本字段,该字段使用"ik_max_word"分析器进行中文分词,并提供了前缀搜索和精确匹配的不同索引方式。
GET my_index/_mapping
POST /my_index/_bulk?filter_path=items.*.error
{"index":{"_id":"1"}}
{"text":"城管打电话喊商贩去摆摊摊"}
{"index":{"_id":"2"}}
{"text":"笑果文化回应商贩老农去摆摊"}
{"index":{"_id":"3"}}
{"text":"老农耗时17年种出椅子树"}
{"index":{"_id":"4"}}
{"text":"夫妻结婚30多年AA制,被城管抓"}
{"index":{"_id":"5"}}
{"text":"黑人见义勇为阻止抢劫反被铐住"}
GET my_index/_search
GET my_index/_mapping
GET _analyze
{"analyzer": "ik_max_word","text": ["城管打电话喊商贩去摆摊摊"]
}
GET my_index/_search
{"query": {"prefix": {"text": {"value": "摊摊"}}}
}
# 通配符
DELETE my_index
POST /my_index/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }
DELETE product_en
POST /product_en/_bulk
{ "index": { "_id": "1"} }
{ "title": "my english","desc" : "shouji zhong de zhandouji","price" : 3999, "tags": [ "xingjiabi", "fashao", "buka", "1"]}
{ "index": { "_id": "2"} }
{ "title": "xiaomi nfc phone","desc" : "zhichi quangongneng nfc,shouji zhong de jianjiji","price" : 4999, "tags": [ "xingjiabi", "fashao", "gongjiaoka" , "asd2fgas"]}
{ "index": { "_id": "3"} }
{ "title": "nfc phone","desc" : "shouji zhong de hongzhaji","price" : 2999, "tags": [ "xingjiabi", "fashao", "menjinka" , "as345"]}
{ "title": { "_id": "4"} }
{ "text": "xiaomi erji","desc" : "erji zhong de huangmenji","price" : 999, "tags": [ "low", "bufangshui", "yinzhicha", "4dsg" ]}
{ "index": { "_id": "5"} }
{ "title": "hongmi erji","desc" : "erji zhong de kendeji","price" : 399, "tags": [ "lowbee", "xuhangduan", "zhiliangx" , "sdg5"]}
GET my_index/_search
GET product_en/_search
GET my_index/_mapping
GET product_en/_mapping
GET my_index/_search
{"query": {"wildcard": {"text.keyword": {"value": "my eng*ish"}}}
}GET my_index/_search 是一个Elasticsearch的HTTP请求,用于查询名为my_index的索引库中的所有文档。其中,_search是Elasticsearch的API端点,用于执行搜索查询。wildcard查询用于模糊匹配,支持通配符。*代表任意多个字符,?代表单个字符。在wildcard查询中,text.keyword字段表示要在text字段的keyword子字段中执行通配符查询。value属性是查询模式,用于匹配文档中的字段值。"value": "my eng*ish"表示查询text.keyword字段中包含"my"开头,以"ish"结尾,中间任意字符的字符串。例如,它会匹配"my english"、"my english speaking"等。整个查询请求的含义是:在my_index索引库中,查找text.keyword字段值匹配"my eng*ish"模式的所有文档。需要注意的是,wildcard查询可能不如其他类型的查询(如match、term)高效,因为它需要对索引进行全扫描,以找到匹配模式的文档。因此,在需要高效查询的场景中,可能需要选择其他类型的查询。GET product_en/_mapping
#exact value
GET product_en/_search
{"query": {"wildcard": {"tags.keyword": {"value": "men*inka"}}}
}
-
正则:regexp
概念:regexp查询的性能可以根据提供的正则表达式而有所不同。为了提高性能,应避免使用通配符模式,如.或 .?+未经前缀或后缀
语法:
GET <index>/_search {"query": {"regexp": {"<field>": {"value": "<regex>","flags": "ALL",}}} }
flags
-
ALL
启用所有可选操作符。
-
COMPLEMENT
启用操作符。可以使用对下面最短的模式进行否定。例如
a~bc # matches ‘adc’ and ‘aec’ but not ‘abc’
-
INTERVAL
启用<>操作符。可以使用<>匹配数值范围。例如
foo<1-100> # matches ‘foo1’, ‘foo2’ … ‘foo99’, ‘foo100’
foo<01-100> # matches ‘foo01’, ‘foo02’ … ‘foo99’, ‘foo100’
-
INTERSECTION
启用&操作符,它充当AND操作符。如果左边和右边的模式都匹配,则匹配成功。例如:
aaa.+&.+bbb # matches ‘aaabbb’
-
ANYSTRING
启用@操作符。您可以使用@来匹配任何整个字符串。
您可以将@操作符与&和~操作符组合起来,创建一个“everything except”逻辑。例如:@&~(abc.+) # matches everything except terms beginning with ‘abc’
-
GET product_en/_search
{"query": {"regexp": {"title": "[\\s\\S]*nfc[\\s\\S]*"}}
}
该查询请求的含义是:在product_en索引中,通过正则表达式搜索title字段,查找包含nfc子串的文档。
解释如下:
GET product_en/_search:这是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
“query"字段:在Elasticsearch查询中,query字段用于定义搜索条件。在此查询中,使用了regexp查询,它是基于正则表达式的查询。
“regexp"查询:regexp查询允许用户通过正则表达式模式来匹配文档中的字段值。在此查询中,它被用于匹配title字段。
正则表达式”[\s\S]nfc[\s\S]”:这个正则表达式的匹配规则如下:
[\s\S]:匹配任何字符,包括空格和非空格字符。
:匹配前面的字符零次或多次。
nfc:匹配字面字符串"nfc"。
再次使用[\s\S],表示"nfc"前后可以有任何字符(包括空格和非空格字符)。
因此,该正则表达式匹配title字段中包含"nfc"的文档,且"nfc"前后可以有任何字符。
综合以上信息,该查询请求在product_en索引中查找title字段中包含"nfc"的文档,且"nfc"前后可以有任何字符。
GET product_en/_search
{"query": {"regexp": {"desc": {"value": "zh~dng","flags": "COMPLEMENT"}}}
}
GET product_en/_search 是一个Elasticsearch的HTTP请求,用于查询名为product_en的索引库中的所有文档。_search是Elasticsearch的API端点,用于执行搜索查询。
在这个查询中,使用了正则表达式查询(regexp),用于匹配符合特定正则表达式的字段值。具体来说,它试图匹配desc字段中包含正则表达式zh~dng的文档。
“value”: "zhdng"表示要匹配的正则表达式。在正则表达式中,通常表示匹配一个单词的边界。但在这个例子中,zhdng可能并不是一个有效的正则表达式,因为通常用于单词边界,而zhdng更像是字符z、h、、d和n的序列,并没有明确的单词边界含义。
“flags”: "COMPLEMENT"表示使用的正则表达式标志。COMPLEMENT标志表示取反,即匹配所有不符合正则表达式的文档。
然而,zh~dng可能并不是一个合适的正则表达式,因为它并不符合常见的正则表达式语法和用途。通常,在Elasticsearch中使用正则表达式查询时,我们会期望value参数中的表达式是一个有效的正则表达式,用于匹配特定的字符串模式。
因此,这个查询可能并不会按照预期工作,除非desc字段中的文档确实包含zh~dng这个字符串,或者这个查询是用于测试某种特定的正则表达式行为。
需要注意的是,Elasticsearch的正则表达式查询是基于Apache Lucene的正则表达式引擎,所以正则表达式的语法和标志可能与其他语言或工具中的有所不同。
另外,使用COMPLEMENT标志时,请确保您的查询是清晰的,并且了解它将返回不符合正则表达式的文档。在实际应用中,确保您的正则表达式是有效的,并且与您的查询意图相匹配。
GET product_en/_search
{"query": {"regexp": {"tags.keyword": {"value": ".*<2-3>.*","flags": "INTERVAL"}}}
}
查询包含2-3的数据
这是一个Elasticsearch查询语句,用于在product_en索引中搜索数据。这个查询语句使用了正则表达式查询(regexp),它允许用户通过正则表达式模式来匹配文档中的字段值。
GET product_en/_search:
这部分是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。regexp查询:
regexp查询是Elasticsearch中的一种查询类型,它使用正则表达式来匹配文档中的字段值。这种查询类型特别适用于需要基于模式匹配的场景。
“tags.keyword”:
这表示查询的是tags.keyword字段。tags可能是一个包含多个标签的字段,而keyword通常表示该字段的值是精确匹配的,不会被分词。
“value”: “.<2-3>.”:
这是正则表达式的模式。这里的模式尝试匹配任何包含<2-3>字符串的文本。但是,.*<2-3>.*并不是一个有效的正则表达式,因为它没有定义<2-3>应该匹配的具体内容。通常,<2-3>会被当作字面量而不是正则表达式的一部分,这意味着它会尝试匹配包含这个字符串的文档。
“flags”: “INTERVAL”:
flags参数用于指定正则表达式的匹配选项。然而,INTERVAL并不是Elasticsearch中regexp查询的有效标志。标准的regexp标志包括ALL、ANYSTRING、COMPLEMENT、EMPTY、INTERSECTION、INTERVAL、NONE、NOTEMPTY和NOTNONE。其中,INTERVAL标志用于定义重复数量的区间,但它通常与{}一起使用,例如{2,3}表示匹配2到3次重复。在这里,flags的INTERVAL值可能是错误的,或者该查询可能尝试使用一个特定于应用程序或自定义的正则表达式标志。
这个查询整体上试图找到tags.keyword字段中包含<2-3>字符串的文档,但由于正则表达式模式不正确,以及flags参数中可能存在的错误,这个查询可能不会返回预期的结果。正确的正则表达式模式取决于<2-3>应如何解释,以及是否应该使用特定的标志来影响匹配过程。
这个查询可能适用于需要基于标签中的特定模式或特定值进行搜索的场景,例如,如果<2-3>是一个特定的标签值,并且你想找到所有包含这个标签的文档。然而,由于正则表达式和标志的错误,这个查询可能需要进行修正才能正常工作。
-
模糊查询:fuzzy
混淆字符 (box → fox) 缺少字符 (black → lack)
多出字符 (sic → sick) 颠倒次序 (act → cat)
语法
GET <index>/_search {"query": {"fuzzy": {"<field>": {"value": "<keyword>"}}} }
参数:
-
value:(必须,关键词)
-
fuzziness:编辑距离,(0,1,2)并非越大越好,召回率高但结果不准确
-
两段文本之间的Damerau-Levenshtein距离是使一个字符串与另一个字符串匹配所需的插入、删除、替换和调换的数量
-
距离公式:Levenshtein是lucene的,es改进版:Damerau-Levenshtein,
axe=>aex Levenshtein=2 Damerau-Levenshtein=1
-
-
transpositions:(可选,布尔值)指示编辑是否包括两个相邻字符的变位(ab→ba)。默认为true。
-
GET product_en/_search
{"query": {"fuzzy": { "desc": {"value": "zhandou","fuzziness": "2"}}}
}
该查询请求的含义是:在product_en索引中,使用模糊查询(fuzzy query)在desc字段中查找包含与"quangongneng nfc"相似词项的文档。
解释如下:
GET product_en/_search:这是Elasticsearch的HTTP GET请求的基本结构,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
"query"字段:在Elasticsearch查询中,query字段用于定义搜索条件。在此查询中,使用了fuzzy查询,它是基于模糊匹配的查询,用于查找与指定词项相似的词项。
"fuzzy"查询:fuzzy查询在Elasticsearch中允许用户通过编辑距离(fuzziness)来匹配与指定词项相似的词项。它基于Levenshtein距离(也称为编辑距离)来度量两个词项之间的相似性。
“value"字段:value参数定义了要搜索的原始词项,即"quangongneng nfc”。
“fuzziness"字段:fuzziness参数定义了最大的编辑距离,用于确定与原始词项相似的词项。在这里,fuzziness设置为"2”,意味着查询将匹配与"quangongneng nfc"在最多两个字符内相似的词项。
综合以上信息:整个查询请求在product_en索引中查找desc字段中包含与"quangongneng nfc"相似的词项的文档,其中相似度由最多两个字符的编辑距离确定。
此查询将返回与"quangongneng nfc"在最多两个字符内相似的所有词项所在的文档。
-
短语前缀:match_phrase_prefix
match_phrase:
-
match_phrase会分词
-
被检索字段必须包含match_phrase中的所有词项并且顺序必须是相同的
-
被检索字段包含的match_phrase中的词项之间不能有其他词项
概念:
match_phrase_prefix与match_phrase相同,但是它多了一个特性,就是它允许在文本的最后一个词项(term)上的前缀匹配,如果 是一个单词,比如a,它会匹配文档字段所有以a开头的文档,如果是一个短语,比如 “this is ma” ,他会先在倒排索引中做以ma做前缀搜索,然后在匹配到的doc中做match_phrase查询,(网上有的说是先match_phrase,然后再进行前缀搜索, 是不对的)
参数
-
analyzer 指定何种分析器来对该短语进行分词处理
-
max_expansions 限制匹配的最大词项
-
boost 用于设置该查询的权重
-
slop 允许短语间的词项(term)间隔:slop 参数告诉 match_phrase 查询词条相隔多远时仍然能将文档视为匹配 什么是相隔多远? 意思是说为了让查询和文档匹配你需要移动词条多少次?
原理解析:https://www.elastic.co/cn/blog/found-fuzzy-search#performance-considerations
-
GET product_en/_search
{"query": {"match_phrase_prefix": {"desc": {"query": "zhong hongzhaji","max_expansions": 50,"slop": 3}}}
}
这个查询请求的含义是:在product_en索引中,使用match_phrase_prefix查询在desc字段中查找与"zhong hongzhaji"相似词项的文档。
解释如下:
GET product_en/_search:这是一个Elasticsearch的HTTP GET请求,用于从product_en索引中检索数据。_search端点用于执行搜索查询。
match_phrase_prefix查询:这是一个特定类型的查询,它用于查找与指定词项在特定字段中相似(但不一定完全匹配)的词项。与match_phrase查询相比,match_phrase_prefix允许在最后一个词项上只匹配前缀,从而可以捕获更多与查询词项相似的词项。
“zhong hongzhaji”:这是搜索的查询词项,表示用户想要查找与"zhong hongzhaji"相关的内容。
max_expansions: 50:这个参数定义了最后一个词项可以被重写(扩展)成多少个前缀。这里设置为50,意味着将尝试生成最多50个前缀来匹配文档中的词项。
slop: 3:这个参数用于定义在匹配词项时,允许词项之间的最大位移量。这里的值为3,表示在匹配过程中,词项之间的最大距离为3个词项。
整个查询语句的意图:这个查询请求的目的是在product_en索引中查找与"zhong hongzhaji"相关的文档,通过扩展前缀和允许一定的词项位移量,以捕获更多相似但不完全匹配的文档。
应用场景:这个查询可能用于类似搜索引擎的场景,当用户输入部分搜索词时,系统能够自动补全或推荐与用户输入相似的完整词项,以提供更精确的搜索结果。例如,在电商网站中,用户可能输入"zhong"作为商品名称的一部分,系统可以推荐完整的商品名称,如"zhong xiao mi"或"zhong xing"等。
这个查询使用了Elasticsearch的match_phrase_prefix查询类型,它允许用户输入部分搜索词,并自动补全或推荐与用户输入相似的完整词项,从而提供更精确和相关的搜索结果。
-
N-gram和edge ngram
tokenizer
GET _analyze {"tokenizer": "ngram","text": "reba always loves me" }
token filter
GET _analyze {"tokenizer": "ik_max_word","filter": [ "ngram" ],"text": "reba always loves me" }
min_gram:创建索引所拆分字符的最小阈值
max_gram:创建索引所拆分字符的最大阈值
ngram:从每一个字符开始,按照步长,进行分词,适合前缀中缀检索
edge_ngram:从第一个字符开始,按照步长,进行分词,适合前缀匹配场景
GET _analyze
{"tokenizer": "ik_max_word","filter": [ "edge_ngram" ],"text": "reba always loves me"
}
PUT my_index
{"settings": {"analysis": {"filter": {"2_3_edge_ngram": {"type": "edge_ngram","min_gram": 2,"max_gram": 3}},"analyzer": {"my_edge_ngram": {"type":"custom","tokenizer": "standard","filter": [ "2_3_edge_ngram" ]}}}},"mappings": {"properties": {"text": {"type": "text","analyzer":"my_edge_ngram","search_analyzer": "standard"}}}
}
GET /my_index/_mappingPOST /my_index/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }GET /my_index/_search
GET /my_index/_mapping
GET /my_index/_search
{"query": {"match_phrase": {"text": "my eng is goo"}}
}PUT my_index2
{"settings": {"analysis": {"filter": {"2_3_grams": {"type": "edge_ngram","min_gram": 2,"max_gram": 3}},"analyzer": {"my_edge_ngram": {"type":"custom","tokenizer": "standard","filter": [ "2_3_grams" ]}}}},"mappings": {"properties": {"text": {"type": "text","analyzer":"my_edge_ngram","search_analyzer": "standard"}}}
}
GET /my_index2/_mapping
POST /my_index2/_bulk
{ "index": { "_id": "1"} }
{ "text": "my english" }
{ "index": { "_id": "2"} }
{ "text": "my english is good" }
{ "index": { "_id": "3"} }
{ "text": "my chinese is good" }
{ "index": { "_id": "4"} }
{ "text": "my japanese is nice" }
{ "index": { "_id": "5"} }
{ "text": "my disk is full" }GET /my_index2/_search
{"query": {"match_phrase": {"text": "my eng is goo"}}
}GET _analyze
{"tokenizer": "ik_max_word","filter": [ "ngram" ],"text": "用心做皮肤,用脚做游戏"
}
相关文章:
Elasticsearch-模糊查询
模糊查询 前缀搜索:prefix 概念:以xx开头的搜索,不计算相关度评分。 注意: 前缀搜索匹配的是term,而不是field。 前缀搜索的性能很差 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 语法: GET &…...
C#学习1:C#初接触,一些基础内容备忘和相关报错说明
目录 1 C#基本语法格式 1.1 基础规则 1.2 以if为例子 2 一些写法 2.1 时间相关 2.2 对数写法 2.3 关于使用random 2.4 UnityEngine.Random.value 2.5 PerlinNoise 函数 PerlinNoise 函数本身的输出范围 3 各种报错 3.0 unity里对C#报错内容超级详细 3.1 error cs1…...
机器学习的方法
机器学习方法主要分为三种:监督学习、无监督学习、半监督学习。 1.监督学习 神经网络、朴素贝叶斯、线性回归、逻辑回归、随机森林、支持向量机(SVM)都是典型的监督学习方法。 监督学习,即监督机器学习,之所以叫监督…...
el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)
好的,我来帮你分析前端为什么只能展示 10 条数据,以及如何解决这个问题。 问题分析: pageSize 的值: 你的 el-pagination 组件中,pageSize 的值被设置为 10:<el-pagination:current-page"current…...
vulhub-wordpress靶场
一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录,把它拖出来 点开moban目录后,创建…...
Docker 默认安装位置迁移
一、找到 Docker 默认安装位置 [roothost-192-168-0-1 ~]# docker info Client:Version: 26.1.0Context: defaultDebug Mode: falseServer:Containers: 31Running: 31Paused: 0Stopped: 0Images: 128Server Version: 26.1.0Storage Driver: overlay2Backing Filesystem:…...
【机器学习】SVM支持向量机(一)
介绍 支持向量机(Support Vector Machine, SVM)是一种监督学习模型,广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点,并且尽可能地最大化离该超平面最近的数据点(支持向量…...
无需配置设备,借助GitHub快速编译项目并直接运行!
引言 你是否曾经有过类似的烦恼,发现了一个有趣的项目,想要测试一下,但是自己的设备没有对应的开发环境或者受制于自己的设备,不想或者不能去配置对应的开发环境,应该怎么办呢?这种情况下,其实…...
【C#联合halcon实现绘制ROI功能】
前言 C#联合halcon实现绘制ROI功能: C#联合Halcon,使用HDrawingObject、HDrawingObjectXld,绘制矩形、方向矩形、圆形、椭圆、自定义ROI。支持拖动、重设大小、选中,右键复制、粘贴、删除功能。 运行结果 代码 代码结构 MainFo…...
语言模型的革命:大型概念模型(LCM)的崛起
在人工智能领域,Meta最近推出的一项重大突破正在引起研究人员和开发者的广泛关注:大型概念模型(Large Concept Models,简称LCM)。这一创新彻底改变了我们对语言模型的理解,并为未来AI技术的进展指明了新的方…...
在C#中获取程序的命令行参数
实现此目的的一种方法是重写程序的Main方法并赋予其一个字符串数组参数,如下面的代码所示。 static void Main(string[] args) {foreach (string arg in args){lstArguments.Items.Add(arg);} } 这种方法是从 C 编程语言继承而来的。 我更喜欢下面的方法…...
R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
全文链接:https://tecdat.cn/?p38667 摘要:在母婴暴露于空气污染对儿童健康影响的研究中,常需对孕期暴露情况与健康结果进行回归分析。分布滞后非线性模型(DLNM)是一种常用于估计暴露 - 时间 - 响应函数的统计方法&am…...
小程序基础 —— 08 文件和目录结构
文件和目录结构 一个完整的小程序项目由两部分组成:主体文件、页面文件: 主体文件:全局文件,能够作用于整个小程序,影响小程序的每个页面,主体文件必须放到项目的根目录下; 主体文件由三部分组…...
bishengjdk-8
title: 深入探索 BishengJDK-8:技术魅力与优势尽显 date: 2024-12-29 category: blog tags:- BishengJDK-8- Java 开发- 性能优化- 技术剖析 sig: BishengJDK archives: 2024-12 author:- way_back summary: BishengJDK-8 作为一款备受瞩目的 JDK 版本,以…...
Android9.x SurfaceView源码分析
前言 本文是继Android 深入理解SurfaceView再次对SurfaceView进行源码分析。 看了下代码,上篇文章是基于Android7.x的,本篇基于Android9.x再次进行分析, Android从7.0开始支持SurfaceView动画,并建议7.0之后使用SurfaceView替代TextureView,这里主要在Android9.0上分析Su…...
分布式 IO 模块助力冲压机械臂产线实现智能控制
在当今制造业蓬勃发展的浪潮中,冲压机械臂产线的智能化控制已然成为提升生产效率、保障产品质量以及增强企业竞争力的关键所在。而分布式 IO 模块的应用,正如同为这条产线注入了一股强大的智能动力,开启了全新的高效生产篇章。 传统挑战 冲压…...
解决VMware的ubuntu22虚拟机没有网络
解决步骤 1.在 Windows 系统中,按 “WinR” 键,输入 “services.msc” 并回车,在服务列表中找到 “VMware DHCP Service” 和 “VMware NAT Service”,确保这两个服务已启动,若未启动则右键点击选择 “启动”…...
Linux arm 编译安装glibc-2.29
重要的话说三遍: !!!!!不要轻易自己去安装glibc!!!!! !!!!!不要轻易自己去安装glibc&a…...
Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde
介绍 安装自己的linux-server,可以作为学习使用,web方式访问,基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …...
linux 7.6安装mysql 8.0步骤如下
linux 7.6安装mysql 8.0步骤如下: 注意:在导入密钥的时候这个不行,可更换为 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023...
meshy的文本到3d的使用
Meshy官方网站: 中文官网: Meshy官网中文站 编辑 Opens in a new window 编辑www.meshycn.com Meshy AI 中文官网首页 英文官网: Meshy目前似乎还没有单独的英文官网,但您可以在中文官网上找到英文界面或相关英文资料。 链…...
抓取手机HCI日志
荣耀手机 1、打开开发者模式 2、开启HCI、ADB调试 3、开启AP LOG 拨号界面输入*##2846579##* 4、蓝牙配对 5、抓取log adb pull /data/log/bt ./...
如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈
如果你的网站是h5网站,如何将h5网站变成小程序-除开完整重做方法如何快速h5转小程序-h5网站转小程序的办法-优雅草央千澈 h5如何转小程序 如果当年你们开发网站是用的h5但是没有开发小程序,也没有使用uniapp这样的混开框架,但是目前根据业务需…...
2024:踏平坎坷成大道,斗罢艰险又出发!
一、开篇 12月今年最后一个月了,相逢的人已走散,Q4的OKR已经定型了,很平淡无味、闲的无聊,提前写个年终总结吧。25年,再过一个月就35岁了,一个人来北京也已经11年了。年近末尾,思绪良多。回顾过…...
Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
文章目录 一、Qt For Android运行示例二、个人理解及情况解析三、配置Android相关配置项3.1 安装简述3.2 安装Qt1.安装Qt第一步:启动Qt安装包程序2.Qt账号(注册)登录3.了解Qt开源使用义务4.指定Qt安装目录5.选择Qt安装内容6.接受“许可协议”…...
LLaMA详解
LLaMA 进化史 大规模语言模型(Large Language Model, LLM)的快速发展正在以前所未有的速度推动人工智能(AI)技术的进步。 作为这一领域的先行者, Meta在其LLaMA(Large Language Model Meta AI)系列模型上取得了一系列重大突破。 近日, Meta官方正式宣布推出LLaMA-3, 作为继LL…...
【学生管理系统】权限管理之用户管理
目录 6. 权限管理 6.1 环境搭建 6.1.1 数据库 6.1.2 后端环境 6.2 用户管理 6.2.1 查询所有用户(关联角色) 6.2.2 核心1:给用户授予角色 6. 权限管理 6.1 环境搭建 6.1.1 数据库 权限管理的5张表的关系 添加4张表 # 权限表&…...
基于Java+Springboot+Vue开发的旅游景区管理系统,实习作品
项目简介 该项目是基于JavaSpringbootVue开发的旅游景区管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的旅…...
人工智能及深度学习的一些题目
1、一个含有2个隐藏层的多层感知机(MLP),神经元个数都为20,输入和输出节点分别由8和5个节点,这个网络有多少权重值? 答:在MLP中,权重是连接神经元的参数,每个连接都有一…...
JavaFX FXML模式下的布局
常见布局方式概述 在 JavaFX FXML 模式下,有多种布局方式可供选择。这些布局方式可以帮助您有效地组织和排列 UI 组件,以创建出美观且功能良好的用户界面。常用布局容器及布局方式 BorderPane 布局 特点:BorderPane 将空间划分为五个区域&…...
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录
#记录工作 以下是基于CUDA官网给定命令在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录: 一、准备工作 确保你的 Windows 11 系统已经成功启用 WSL 功能,并且已经安装了 Ubuntu 24.04 操作系统。同时,确保系统处于联网状态&#…...
Qt 12.28 day3
作业: 1】 思维导图 2】 在登录界面的登录取消按钮进行以下设置: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&a…...
AISuite:提供了统一的跨 LLM API的开源 Python 库
1. 简介: AISuite是一个开源的Python库,旨在提供一个统一的接口来调用不同的大型语言模型(LLM)API。这个工具由吴恩达(Andrew Ng)领导开发,目的是简化AI模型的调用过程,使得开发者能…...
springMVC-请求响应
springmvc——一 站式web框架,核心是处理http请求响应。 前后端分离:需要序列化,服务端把数据序列化成字符串或者流给前端,前端又把json转成对象,前端的叫反序列化。前端把数据序列化转成字符串给服务器,服…...
【代码分析】Unet-Pytorch
1:unet_parts.py 主要包含: 【1】double conv,双层卷积 【2】down,下采样 【3】up,上采样 【4】out conv,输出卷积 """ Parts of the U-Net model """import torch im…...
uni-app开发-识图小程序-个人中心页面
目录 一:功能描述 二:代码实现 一:功能描述 个人中心中心主要包含用户登录信息,退出登录,图像识别记录,分类识别记录,分享记录以及小程序介绍信息。用户登录状态下可以看到图形识别记录,分类识别记录和分享记录,未登录状态只能看到介绍信息,点击未登录文字会触发…...
C++小游戏
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 设计一个桌面游戏是一个有趣且富有挑战性的项目。下面是一个简单的C桌面游戏的设计思路和示例代码。我们将创建一个简单的“猜数字”游戏,玩家需要在有限的尝试次数内猜测一个随机生成的数字。 游戏…...
Flutter封装一个三方ViewPager学习
Flutter如何实现一个增强的 PageView,支持自定义页面切换动画。 前置知识点学习 CrossAxisAlignment CrossAxisAlignment 是 Flutter 中用于控制布局子组件在交叉轴(cross axis)方向上的对齐方式的一个枚举类。它主要在 Flex 布局模型中使…...
【算法】复杂性理论初步
六、算法复杂性初步 重要的复杂性类 P P P 的定义 多项式时间内可解的问题 若 L ∈ P L∈P L∈P,则存在确定性多项式时间的图灵机 M M M,使得 M ( x ) 1 ⟺ x ∈ L M(x)1⟺x∈L M(x)1⟺x∈L N P NP NP 的定义 多项式时间内可验证验证解的正确性 &…...
vscode实用插件(持续更新)
目录 Git History Diff Git Graph Error Lens Git History Diff 用于将当前分支的某个文件夹与远程分支的相同文件夹做对比,方便代码评审!解决了为了一个问题而多次commit,导致代码不好评审,即不晓得和远程分支相比࿰…...
使用Lodash工具库的orderby和sortby进行排序的区别
简介 _.orderBy 和 _.sortBy 是 Lodash 库中用于排序数组的两个函数。 区别 _.orderBy 允许你指定一个或多个属性来排序,并为每个属性指定排序方向(升序或降序)。默认所有值为升序排,指定为"desc" 降序,…...
胡闹厨房练习(三)
ScriptableObject 一、初步了解 1、实质:是一种特殊类型的Unity对象, 2、作用:用于存储大量数据,而不必依附于游戏场景中的某个GameObject。 3、特点: 可以在不增加场景中对象数量的情况下,管理和存储复杂的数据结构、配置信息、游戏状态等。 4、适用:非常适合用来…...
Postman接口测试01|接口测试基础概念、http协议、RESTful风格、接口文档
目录 一、接口测试基础概念 1、什么是接口 2、接口的类型 3、什么是接口测试 4、为什么要做接口测试 5、接口测试的实现方式 6、什么是自动化接口测试? 二、接口返回的数据格式 1、三种格式 2、Json 三、接口协议 1、webservice协议 2、dubbo协议 3、…...
算法进阶:贪心算法
贪心算法是一种简单而直观的算法思想,它在每一步选择中都采取在当前状态下最优的选择,以期望最终得到全局最优解。贪心算法通常适用于一些具有最优子结构的问题,即问题的最优解可以通过一系列局部最优解的选择得到。 贪心算法的基本思路是&a…...
深度学习笔记(6)——循环神经网络RNN
循环神经网络 RNN 核心思想:RNN内部有一个“内部状态”,随着序列处理而更新 h t f W ( h t − 1 , x t ) h_tf_W(h_{t-1},x_t) htfW(ht−1,xt) 一般来说 h t t a n h ( W h h h t − 1 W x h x t ) h_ttanh(W_{hh}h_{t-1}W_{xh}x_t) httanh(Whhht−1Wxhxt…...
电商项目高级篇07-redisson分布式锁
redisson分布式锁 1、引入maven依赖2、config类3、可重入锁设计 1、引入maven依赖 <!--引入redisson--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></depend…...
STM32中断详解
STM32中断详解 NVIC 中断系统中断向量表相关寄存器中断优先级中断配置 外部中断实验EXTI框图外部中断/事件线映射中断步骤初始化代码实现 定时器中断通用定时器相关功能标号1:时钟源标号 2:控制器标号 3:时基单元 代码实现 NVIC 中断系统 STM…...
KNN分类算法 HNUST【数据分析技术】(2025)
1.理论知识 KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。 KNN算法的思想: 对于任意n维输入向量,分别对应于特征…...
【Win11】安装 VMware17 和 Ubuntu
【Win11】安装 VMware17 和 Ubuntu 15 版本和 Win11 家庭版间的兼容应该有 BUG,请直接跳至【VMware 17】 安装【VMware 15】 本来是按如下资源链接安装的,但发现 15 版本和 Win11 家庭版间的兼容应该有 BUG,在安装并关闭 Hyper-Vÿ…...
Jmeter快速入门
目录 1.安装Jmeter 1.1.下载 1.2.解压 1.3.运行 2.快速入门 2.1.设置中文语言 2.2.基本用法 1.安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载 可以Apache Jmeter官网下载,地址…...