es 进阶查询

news2024/10/7 8:29:26

准备数据

先准备一些数据

#指定ik分词器
PUT /es_db
{
  "settings" : {
      "index" : {
          "analysis.analyzer.default.type": "ik_max_word"
      }
  }
}

# 创建文档,指定id
PUT /es_db/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"address": "广州天河公园",
"remark": "java developer"
}
PUT /es_db/_doc/2
{
"name": "李四",
"sex": 1,
"age": 28,
"address": "广州荔湾大厦",
"remark": "java assistant"
}

PUT /es_db/_doc/3
{
"name": "王五",
"sex": 0,
"age": 26,
"address": "广州白云山公园",
"remark": "php developer"
}

PUT /es_db/_doc/4
{
"name": "赵六",
"sex": 0,
"age": 22,
"address": "长沙橘子洲",
"remark": "python assistant"
}

PUT /es_db/_doc/5
{
"name": "张龙",
"sex": 0,
"age": 19,
"address": "长沙麓谷企业广场",
"remark": "java architect assistant"
}    
    
PUT /es_db/_doc/6
{
"name": "赵虎",
"sex": 1,
"age": 32,
"address": "长沙麓谷兴工国际产业园",
"remark": "java architect"
}    

PUT /es_db/_doc/7
{
"name": "李虎",
"sex": 1,
"age": 27,
"address": "广州番禺节能科技园",
"remark": "java architect"
}

PUT /es_db/_doc/8
{
"name": "张星",
"sex": 1,
"age": 25,
"address": "武汉东湖高新区未来智汇城",
"remark": "golang developer"
}

PUT /es_db/_doc/9
{
"name": "李星云",
"sex": 1,
"age": 35,
"address": "杭州余杭区海创园",
"remark": "react developer"
}

PUT /es_db/_doc/10
{
"name": "范闲",
"sex": 1,
"age": 26,
"address": "杭州余杭区西溪湿地",
"remark": "vue developer"
}

PUT /es_db/_doc/11
{
"name": "陈萍萍",
"sex": 1,
"age": 18,
"address": "杭州西湖区太子湾景区",
"remark": "javascript developer"
}

PUT /es_db/_doc/12
{
"name": "王启年",
"sex": 1,
"age": 36,
"address": "杭州余杭区未来科技城",
"remark": "c++ developer"
}

match_all

使用match_all,匹配所有文档,默认只会返回10条数据。

原因:_search查询默认采用的是分页查询,每页记录数size的默认值为10。如果想显示更多数据,指定size

GET /es_db/_search
#等同于
GET /es_db/_search
{
  "query": {
    "match_all": {}
  }
}

_source 

指定返回字段

# 指定返回 某些字段
GET /es_db/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["address", "name"]
}

只返回元数据


# 指定返回 只返回元数据
GET /es_db/_search
{
  "query": {
    "match_all": {}
  },
  "_source": false
}

返回指定条数 size

只返回两条

GET /es_db/_search
{
  
  "query": {
    "match_all": {}
  },
  "_source": ["address"], 
  "size": 2
}

分页查询 from & size

查询第二页,三条数据


GET /es_db/_search
{
  
  "query": {
    "match_all": {}
  },
  "_source": ["address"], 
  "from": 2,
  "size": 3
}

指定排序字段 sort

以 age 倒序

但是注意,sort 排序会使 source 算分失效

GET /es_db/_search
{
  
  "query": {
    "match_all": {}
  },
  "_source": ["age"], 
  "size": 5,
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

Term query术语查询

term 精准查询,比如 姓名,年龄,bool类型

这里需要注意,由于使用 term 表示不对查询内容进行分词,全值匹配

所以如果文章词库中没有对应的全值分词记录,会查不到文章记录

如果使用 term 对分词字段进行全值查询,可以 keyword关键字


GET /es_db/_search
{
  "query":{
    "term": {
      "address.keyword": {
        "value": "杭州余杭区海创园"
      }
    }
  }
}

使用 constant source 避免算分 提高性能


# 这里会计算 source 算分
GET /es_db/_search
{
  "query":{
    "term": {
      "address.keyword": {
        "value": "杭州余杭区海创园"
      }
    }
  }
}
# 这里表示 转为一个 Filtering 避免算分 而且 Filter 可以有效利用缓存
#提高性能
GET /es_db/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "address.keyword": "杭州余杭区海创园"
        }
      }
    }
  }
}

term 处理多值字段时,表示包含,而不是等于

POST /employee/_bulk
{"index":{"_id":1}}
{"name":"小明","interest":["跑步","篮球"]}
{"index":{"_id":2}}
{"name":"小红","interest":["跳舞","画画"]}
{"index":{"_id":3}}
{"name":"小丽","interest":["跳舞","唱歌","跑步"]}

POST /employee/_search
{
  "query": {
    "term": {
      "interest.keyword": {
        "value": "跑步"
      }
    }
  }
}

Terms Query多术语查询

Terms query用于在指定字段上匹配多个词项(terms)。它会精确匹配指定字段中包含的任何一个词项。


POST /es_db/_search
{
  "query": {
    "terms": {
      "remark.keyword": ["java assistant", "java architect"]
    }
  }
}

exists query

在Elasticsearch中可以使用exists进行查询,以判断文档中是否存在对应的字段。

POST /es_db/_search
{
  "query": {
    "exists": {
      "field": "remark11"
    }
  }
}

ids query

ids 关键字 : 值为数组类型,用来根据一组id获取多个对应的文档

GET /es_db/_search
{
  "query": {
    "ids": {
      "values": [1,2]
    }
  }
}

range query范围查询

  • range:范围关键字
  • gte 大于等于
  • lte  小于等于
  • gt 大于
  • lt 小于
  • now 当前时间

查询时间

now - 3y 表示 当前时间 减去 3年

也是 now - 3d 就是当前时间减去3天,以此类推

#日期范围比较
DELETE /product
POST /product/_bulk
{"index":{"_id":1}}
{"price":100,"date":"2021-01-01","productId":"XHDK-1293"}
{"index":{"_id":2}}
{"price":200,"date":"2022-01-01","productId":"KDKE-5421"}

GET /product/_search
{
  "query": {
    "range": {
      "date": {
        "gte": "now-3y"
      }
    }
  }
}

prefix query前缀查询

它会对分词后的term进行前缀搜索。

  • 它不会分析要搜索字符串,传入的前缀就是想要查找的前缀
  • 默认状态下,前缀查询不做相关度分数计算,它只是将所有匹配的文档返回,然后赋予所有相关分数值为1。它的行为更像是一个过滤器而不是查询。两者实际的区别就是过滤器是可以被缓存的,而前缀查询不行。

prefix的原理:需要遍历所有倒排索引,并比较每个term是否以所指定的前缀开头。

GET /es_db/_search
{
  "_source": ["address"], 
  "query": {
    "prefix": {
      "address": {
        "value": "杭州"
      }
    }
  }
}

wildcard query通配符查询

通配符查询:工作原理和prefix相同,只不过它不是只比较开头,它能支持更为复杂的匹配模式。

GET /es_db/_search
{
  "_source": ["address"], 
  "query": {
    "wildcard": {
      "address": {
        "value": "*州*"
      }
    }
  }
}

fuzzy query模糊查询

在实际的搜索中,我们有时候会打错字,从而导致搜索不到。在Elasticsearch中,我们可以使用fuzziness属性来进行模糊查询,从而达到搜索有错别字的情形。

fuzzy 查询会用到两个很重要的参数,fuzziness,prefix_length

  • fuzziness:表示输入的关键字通过几次操作可以转变成为ES库里面的对应field的字段

通俗理解:容错率,最多容错 2

    • 操作是指:新增一个字符,删除一个字符,修改一个字符,每次操作可以记做编辑距离为1;
    • 如中文集团到中威集团编辑距离就是1,只需要修改一个字符;如果fuzziness值在这里设置成2,会把编辑距离为2的东东集团也查出来。
    • 该参数默认值为0,即不开启模糊查询; fuzzy 模糊查询 最大模糊错误必须在0-2之间
  • prefix_length:表示限制输入关键字和ES对应查询field的内容开头的第n个字符必须完全匹配,不允许错别字匹配;
    • 如这里等于1,则表示开头的字必须匹配,不匹配则不返回;
    • 默认值也是0;
    • 加大prefix_length的值可以提高效率和准确率。

GET /es_db/_search
{
  "_source": ["address"], 
  "query": {
    "fuzzy": {
      "address": {
        "value": "太子完",
        "prefix_length": 1
      }
    }
  }
}

match query匹配查询

match 表示会对查询字段进行分词,然后在和文章的分词进行比对

match支持以下参数:

  • query : 指定匹配的值
  • operator : 匹配条件类型
    • and : 条件分词后都要匹配
    • or : 条件分词后有一个匹配即可(默认)
  • minmum_should_match : 最低匹配度,即条件在倒排索引中最低的匹配度

# 表示至少分词后 需要全部匹配
GET /es_db/_search
{
  "_source": ["address"], 
  "query": {
    "match": {
      "address": {
        "query": "杭州太子湾",
        "operator": "and"
      }
    }
  }
}

# 表示至少分词后 至少能够匹配一项
GET /es_db/_search
{
  "_source": ["address"], 
  "query": {
    "match": {
      "address": {
        "query": "杭州太子湾",
        "operator": "or", 
        "minimum_should_match": 1
      }
    }
  }
}

multi_match query 多字段查询

可以根据字段类型,决定是否使用分词查询,得分最高的在前面

#多字段查询
GET /es_db/_search
{
  "_source": ["address", "name"], 
  "query": {
    "multi_match": {
      "query": "杭州星云",
      "fields": [
        "address",
        "name"
        ]
    }
  }
}

注意:字段类型分词,将查询条件分词之后进行查询,如果该字段不分词就会将查询条件作为整体进行查询。

match_phrase query短语查询

短语搜索(match phrase)会对搜索文本进行文本分析,然后到索引中寻找搜索的每个分词并要求分词相邻,你可以通过调整slop参数设置分词出现的最大间隔距离。match_phrase 会将检索关键词分词。

这里可以看到 查询 杭州西湖 并没有查到数据,但是索引中是存在杭州西湖这样的文章的

我们先看一下文章分词结果

可以看到 杭州西湖  中间隔了一个 西湖区,所以需要使用 slop 进行设置最大间隔

这里设置了 允许间隔一个 可以看到能够查到对应数据了

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": ["杭州西湖区太子湾景区"]
}

GET /es_db/_search
{
  "query": {
    "match_phrase": {
      "address": {
        "query": "杭州西湖",
        "slop": 1
      }
    }
  }
}

query_string query

允许我们在单个查询字符串中指定AND | OR | NOT条件,同时也和 multi_match query 一样,支持多字段搜索。和match类似,但是match需要指定字段名,query_string是在所有字段中搜索,范围更广泛。

注意: 查询字段分词就将查询条件分词查询,查询字段不分词将查询条件不分词查询

语法:

注意 AND OR  需要大写

GET /es_db/_search
{
  "query": {
    "query_string": {
      "default_field": "FIELD",
      "query": "this AND that OR thus"
    }
  }
}

未指定字段查询

可以根据查询条件,去全字段匹配,并计算算分返回

指定一个字段

指定字段后,只匹配指定的字段

指定多个字段

simple_query_string

类似Query String,但是会忽略错误的语法,同时只支持部分查询语法,不支持AND OR NOT,会当作字符串处理。支持部分逻辑:

  • + 替代AND
  • | 替代OR
  • - 替代NOT

GET /es_db/_search
{
  "query": {
    "simple_query_string": {
      "query": "星云 + 杭州",
      "fields": ["address", "name"]
    }
  }
}

GET /es_db/_search
{
  "query": {
    "simple_query_string": {
      "query": "星云 | 杭州",
      "fields": ["address", "name"]
    }
  }
}

GET /es_db/_search
{
  "query": {
    "simple_query_string": {
      "query": "-杭州",
      "fields": ["address"]
    }
  }
}

bool query布尔查询

布尔查询可以按照布尔逻辑条件组织多条查询语句,只有符合整个布尔条件的文档才会被搜索出来。

在布尔条件中,可以包含两种不同的上下文。

  1. 搜索上下文(query context):使用搜索上下文时,Elasticsearch需要计算每个文档与搜索条件的相关度得分,这个得分的计算需使用一套复杂的计算公式,有一定的性能开销,带文本分析的全文检索的查询语句很适合放在搜索上下文中。
  2. 过滤上下文(filter context):使用过滤上下文时,Elasticsearch只需要判断搜索条件跟文档数据是否匹配,例如使用Term query判断一个值是否跟搜索内容一致,使用Range query判断某数据是否位于某个区间等。过滤上下文的查询不需要进行相关度得分计算,还可以使用缓存加快响应速度,很多术语级查询语句都适合放在过滤上下文中。

布尔查询一共支持4种组合类型:

类型

说明

must

可包含多个查询条件,每个条件均满足的文档才能被搜索到,每次查询需要计算相关度得分,属于搜索上下文

should

可包含多个查询条件,不存在must和fiter条件时,至少要满足多个查询条件中的一个,文档才能被搜索到,否则需满足的条件数量不受限制,匹配到的查询越多相关度越高,也属于搜索上下文

filter

可包含多个过滤条件,每个条件均满足的文档才能被搜索到,每个过滤条件不计算相关度得分,结果在一定条件下会被缓存, 属于过滤上下文

must_not

可包含多个过滤条件,每个条件均不满足的文档才能被搜索到,每个过滤条件不计算相关度得分,结果在一定条件下会被缓存, 属于过滤上下文

准备数据:

DELETE /books
PUT /books
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "long"
      },
      "title": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "language": {
        "type": "keyword"
      },
      "author": {
        "type": "keyword"
      },
      "price": {
        "type": "double"
      },
      "publish_time": {
        "type": "date",
        "format": "yyy-MM-dd"
      },
      "description": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

POST /_bulk
{"index":{"_index":"books","_id":"1"}}
{"id":"1", "title":"Java编程思想", "language":"java", "author":"Bruce Eckel", "price":70.20, "publish_time":"2007-10-01", "description":"Java学习必读经典,殿堂级著作!赢得了全球程序员的广泛赞誉。"}
{"index":{"_index":"books","_id":"2"}}
{"id":"2","title":"Java程序性能优化","language":"java","author":"葛一鸣","price":46.5,"publish_time":"2012-08-01","description":"让你的Java程序更快、更稳定。深入剖析软件设计层面、代码层面、JVM虚拟机层面的优化方法"}
{"index":{"_index":"books","_id":"3"}}
{"id":"3","title":"Python科学计算","language":"python","author":"张若愚","price":81.4,"publish_time":"2016-05-01","description":"零基础学python,光盘中作者独家整合开发winPython运行环境,涵盖了Python各个扩展库"}
{"index":{"_index":"books","_id":"4"}}
{"id":"4", "title":"Python基础教程", "language":"python", "author":"Helant", "price":54.50, "publish_time":"2014-03-01", "description":"经典的Python入门教程,层次鲜明,结构严谨,内容翔实"}
{"index":{"_index":"books","_id":"5"}}
{"id":"5","title":"JavaScript高级程序设计","language":"javascript","author":"Nicholas C. Zakas","price":66.4,"publish_time":"2012-10-01","description":"JavaScript技术经典名著"}

must

条件必须同时满足

should

至少满足其中一项

filter 过滤 

可以看到是不计算 算分 的

highlight高亮

highlight 关键字: 可以让符合条件的文档中的关键词高亮。

highlight相关属性:

  • pre_tags 前缀标签
  • post_tags 后缀标签
  • tags_schema 设置为styled可以使用内置高亮样式
  • require_field_match 多字段高亮需要设置为false

示例数据:

#指定ik分词器
PUT /products
{
  "settings" : {
      "index" : {
          "analysis.analyzer.default.type": "ik_max_word"
      }
  }
}

PUT /products/_doc/1
{
  "proId" : "2",
  "name" : "牛仔男外套",
  "desc" : "牛仔外套男装春季衣服男春装夹克修身休闲男生潮牌工装潮流头号青年春秋棒球服男 7705浅蓝常规 XL",
  "timestamp" : 1576313264451,
  "createTime" : "2019-12-13 12:56:56"
}

PUT /products/_doc/2
{
  "proId" : "6",
  "name" : "HLA海澜之家牛仔裤男",
  "desc" : "HLA海澜之家牛仔裤男2019时尚有型舒适HKNAD3E109A 牛仔蓝(A9)175/82A(32)",
  "timestamp" : 1576314265571,
  "createTime" : "2019-12-18 15:56:56"
}

默认高亮

GET /products/_search
{
  "query": {
    "match": {
      "name": "牛仔"
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    }
  }
}

也可以指定高亮标签

GET /products/_search
{
  "query": {
    "multi_match": {
      "query": "牛仔",
      "fields": ["name", "desc"]
    }
  },
  "highlight": {
    "pre_tags": ["<span style='color:red'>"],
    "post_tags": ["</span>"], 
    "fields": {
      "*": {}
    }
  }
}

多字段高亮


GET /products/_search
{
  "query": {
    "term": {
      "name": {
        "value": "牛仔"
      }
    }
  },
  "highlight": {
    "pre_tags": ["<font color='red'>"],
    "post_tags": ["<font/>"],
    "require_field_match": "false",
    "fields": {
      "name": {},
      "desc": {}
    }
  }
}

感谢观看!!!感兴趣的小伙伴可以关注留言,持续更新中!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【鸿蒙 HarmonyOS 4.0】Web组件

一、介绍 页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 二、加载网页 2.1、加载在线网页 Web组件的使用非常简单&#xff0c;只需要在Page目录下的ArkTS文件中创建一个…

ArcGIS学习(十六)基于交通网络的城市情景分析

ArcGIS学习(十六)基于交通网络的城市情景分析 本任务给大家带来一个非常重要的内容一一基于交通网络的城市情景分析。基于交通网络模拟交通出行并进行相关分析是ArcGIS里面一种常用的分析方法,大家一定要掌握!本任务包括三个关卡: 交通网络模型构建基于交通网络模型的基本…

mysql show profile 简单使用

mysql官网 http://dev.mysql.com/doc/refman/ 1、是否支持&#xff0c;看看当前的mysql版本是否支持 show variables like profiling;2、开启功能&#xff0c;默认是关闭&#xff0c;使用前需要开启 set profilingon;3、运行sql 4、查看结果&#xff0c;show profiles; 5、…

Acer宏碁非凡Swift SFG16-71工厂模式原厂Win11系统,预装OEM系统恢复开箱状态

宏基笔记本电脑SFG16-71原装出厂Windows11系统安装工厂包下载&#xff0c;带恢复重置功能 链接&#xff1a;https://pan.baidu.com/s/1JK02kBbwKG_cIBNlEOzrOw?pwdzdfm 提取码&#xff1a;zdfm 原装工厂包系统自带所有驱动、Office办公软件、出厂时自带主题壁纸图片、系统…

Gitlab CICD 下载artifacts文件并用allure打开,或bat文件打开

allure命令行打开aritfacts报告 首先下载allure.zip&#xff0c;并解压 配置环境变量 使用命令行打开allure文件夹 allure open 2024-03-11-14-54-40 2024-03-11-14-54-40 包含index.html Bat文件打开artifacts There are 2 html reports in the download artifacts.zip S…

排序类算法

目录 一、交换类排序 1.冒泡排序 2.快速排序 二、 插入排序 1.直接插入排序 2.折半插入排序 3.希尔排序 三、选择排序 1.简单选择排序 2.堆排序 完整代码 四、归并排序 完整代码 五、汇总 六、OJ练习 1.冒泡排序&#xff1a;正确表示前一个数和后一个数 2.选…

Transformer模型引领NLP革新之路

在不到4 年的时间里&#xff0c;Transformer 模型以其强大的性能和创新的思想&#xff0c;迅速在NLP 社区崭露头角&#xff0c;打破了过去30 年的记录。BERT、T5 和GPT 等模型现在已成为计算机视觉、语音识别、翻译、蛋白质测序、编码等各个领域中新应用的基础构件。因此&#…

2、功能安全入门之ISO26262说人话版本GB_T 34590

目录 0. 一些功能安全资料 1. 什么是功能安全? 1.1 安全三剑客 1.2 功能安全如何解决问题: 2. ISO26262说人话版本 3-5 相关项 3-7 危害分析和风险评估 3-8功能安全方案 4-5 系统层面 5-5 硬件级产品开发 6-5 软件层面 6-6 软件架构安全设计要求 功能监控层安全…

嵌入式面经-ARM体系架构-计算机基础

嵌入式系统分层 操作系统的作用&#xff1a;向下管理硬件&#xff0c;向上提供接口&#xff08;API&#xff09; 应用开发&#xff1a;使用操作系统提供的接口&#xff08;API&#xff09;&#xff0c;做上层的应用程序开发&#xff0c;基本不用去关内核操作硬件是怎么实现的 …

数据库管理-第159期 Oracle Vector DB AI-10(20240311)

数据库管理159期 2024-03-11 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#xff09;1 其他distance函数2 实例演示使用其他函数寻找最近向量点函数变体简写语法 总结 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#x…

02 THU大模型之 Neural Network

1 Neural Network 1.1 Neural Network Components Simple Neuron单个神经元 A neuron is a computational unit with n inputs and 1 output and parameters W(权重) , b 具体来说, 输入向量( Xi )和权重向量( Wi )进行点乘得到标量值, 标量值加上偏置值b后送入激活函数acti…

【机器学习】科学库使用第1篇:机器学习(常用科学计算库的使用)基础定位、目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述&#xff0c;1.1 人工智能概述&#xff0c;1.2 人工智能发展历…

HCIA-Datacom题库(自己整理分类的)_54_聚合判断【8道题】

1.路由器的聚合端口可以配置路由器子接口。√ 2.Eth-Trunk 两端的负载分担模式可以不一致。√ 3.链路聚合接口只能作为二层接口。 4.在园区网络中通过使用链路聚合、堆叠技术可以提高网络可靠性。√ 5.园区网可以通过链路聚合和堆叠提高网络可靠性。√ 6.交换机通过堆叠、…

部署ELK日志分析系统

简介 在大型运维环境中&#xff0c;管理员通常面对大量的服务器&#xff0c;对于这些服务器的维护&#xff0c;一个很重要的工作就是查看每台服务器的日志信息&#xff0c;而每天逐台检查的方式显然效率比较低下。传统的方式是通过搭建日志服务器&#xff0c;将所有服务器的日志…

VB编程技术笔记

连续赋值 at:tb:ba 分支语句&#xff1a;

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 3、线条平滑曲面但有条纹

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata im…

C++之对象模型和this 指针,友元,和运算符重载

1&#xff0c;对象模型和this 指针 1.1成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 示例&#xff1a; #include<iostream> using namespace std;//成员变量 和 成员函数 分开存储 class Per…

Vue3全家桶 - Vue3 - 【6】组件(注册组件 + 组件通信 + 透传属性和事件 + 插槽 + 单文件CSS + 依赖注入)

组件 一、 注册组件 1.1 ❌ 全局注册 目标文件&#xff1a;main.js&#xff1b;语法&#xff1a;import { createApp } from vue import App from ./App.vue const app createApp(App)// 全局注册 app.component(组件名字, 需要注册组件)app.mount(#app)缺陷&#xff1a; 全…

怎样在CSDN赚点零花钱

请教一下各位大佬&#xff0c;看到你们在CSDN很多都几万粉丝以上&#xff0c;能不能分享一下有什么涨粉的经验&#xff0c;还有怎样转化为额外收益……感谢各位提供宝贵的经验&#xff0c;谢谢……

多目灰度cam手势追踪系统——MegaTrack

一、前言 本文是对Facebook Oculus发布的一篇VR方向&#xff08;手势追踪&#xff09;论文的解读。Oculus是一家做VR的公司&#xff0c;2014年被FaceBook收购了&#xff0c;本次参考的论文就是FaceBook Oculus团队的最新论文。论文2020年7月发表于SIGGRAPH。 因为最终是要给大…