ElasticSearch(es)倒排索引
目录
一、ElasticSearch
二、倒排索引
1. 正向索引
2. 倒排索引
具体细节
1. 文档分析
2. 索引构建
3. 索引存储
4. 词条编码
5. 索引优化
6. 查询处理
示例
总结
3. 正向和倒排
三、总结
倒排索引的基本概念
为什么倒排索引快
一、ElasticSearch
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其 次是Apache Solr,也是基于Lucene
演示:京东,淘宝
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。
官网地址: https:// lucene.apache.org/
重要特性:
- 1、分布式的实时文件存储,每个字段都被索引并可被搜索
- 2、实时分析的分布式搜索引擎
- 3、可以扩展到上百台服务器,处理PB级结构化或非结构化数据
二、倒排索引
倒排索引的概念是基于MySQL这样的正向索引而言的。
1. 正向索引
那么什么是正向索引呢?例如给下表(tb_goods)中的id创建索引:
如果是根据id查询,那么直接走索引,查询速度非常快。
但如果是基于title做模糊查询,只能是逐行扫描数据,流程如下:
- 1)用户搜索数据,条件是title符合 "%手机%"
- 2)逐行获取数据,比如id为1的数据
- 3)判断数据中的title是否符合用户搜索条件
- 4)如果符合则放入结果集,不符合则丢弃。回到步骤1
逐行扫描,也就是全表扫描,随着数据量增加,其查询效率也会越来越低。当数据量达到数百万时,就是一场灾难。
2. 倒排索引
倒排索引中有两个非常重要的概念:
文档( Document ):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息
词条( Term ):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条
创建倒排索引是对正向索引的一种特殊处理,流程如下:
- 将每一个文档的数据利用算法分词,得到一个个词条
- 创建表,每行数据包括词条、词条所在文档id、位置等信息
- 因为词条唯一性,可以给词条创建索引,例如hash表结构索引
如图:
倒排索引的搜索流程如下(以搜索"华为手机"为例):
- 1)用户输入条件 "华为手机" 进行搜索。
- 2)对用户输入内容分词,得到词条: 华为 、 手机 。
- 3)拿着词条在倒排索引中查找,可以得到包含词条的文档id:1、2、3。
- 4)拿着文档id到正向索引中查找具体文档。
如图:
虽然要先查询倒排索引,再查询倒排索引,但是无论是词条、还是文档id都建立了索引,查询速度非常快!无需全表扫描。
具体细节
Elasticsearch 的底层原理涉及到多个层面,包括文档分析、索引构建、存储和查询处理等方面。下面详细解释这些方面的具体实现:
1. 文档分析
- 分析器(Analyzer): 当文档被索引时,它们会被传递给一个分析器,分析器负责将文档分解成一系列的词条(terms)。分析器通常包括分词器(Tokenizers)和过滤器(Token Filters)。
- 分词器: 将文本分割成单词或符号。
- 过滤器: 对分词结果进行处理,如大小写转换、去除停用词等。
2. 索引构建
- 词条(Terms): 从文档中提取出来的关键词。
- 文档ID(Document IDs): 每个文档都有一个唯一的ID。
- 倒排列表(Posting Lists): 对于每个词条,Elasticsearch维护了一个文档ID列表,其中包含了包含该词条的所有文档的ID。
3. 索引存储
Elasticsearch 使用 Lucene 作为其底层索引存储层。Lucene 使用倒排索引结构,主要包括以下几个组成部分:
- 词条字典(Terms Dictionary): 存储所有唯一词条的有序列表。
- 倒排文件(Postings File): 存储词条对应的文档ID列表。
- 频率文件(Frequency File): 存储每个词条在每个文档中的出现次数。
- 位置文件(Position File): 存储每个词条在文档中的位置信息,这对于短语查询非常重要。
4. 词条编码
词条在索引中通常是按照字典顺序排列的,以便快速定位。Lucene 使用多种编码技术来减少存储空间的需求,比如:
- 前缀编码(Prefix Coding): 利用词条间的相似性来减少存储需求。
- 可变字节编码(VByte Encoding): 一种用于整数编码的方法,可以有效地压缩文档ID列表。
- Gamma 编码: 用于编码整数的一种方式,特别适用于文档ID这样的非负整数。
5. 索引优化
- 合并(Merging): Lucene 会定期合并较小的索引片段,以减少碎片化。
- 缓存: Elasticsearch 使用多种缓存策略来加速查询,包括过滤器缓存(Filter Cache)、字段数据缓存(Field Data Cache)等。
- 段(Segments): Lucene 将索引划分为多个段,每个段是一个独立的倒排索引。这有助于减少锁的竞争,提高并发性能。
6. 查询处理
- 查询解析: 当用户提交查询时,Elasticsearch 首先解析查询,将其转换为 Lucene 可以理解的形式。
- 倒排列表获取: 根据查询中的词条,Elasticsearch 从索引中获取相应的倒排列表。
- 合并结果: 如果查询包含多个词条,则需要合并这些词条对应的文档ID列表。
- 评分与排序: 根据相关性评分算法对结果进行评分,并根据评分排序。
- 结果返回: 最终返回排序后的文档列表给用户。
示例
假设我们有两个文档:
- 文档1: "The quick brown fox jumps over the lazy dog."
- 文档2: "A quick movement of the enemy will jeopardize six gunboats."
对于词条 "quick",倒排列表将是
[1, 2]
,表示文档1和文档2都包含词条 "quick"。当用户搜索 "quick" 时,Elasticsearch:
- 查找词条 "quick" 的倒排列表
[1, 2]
。- 返回包含这两个文档ID的结果集。
总结
通过上述机制,Elasticsearch 能够高效地处理各种复杂的全文搜索请求。索引构建时采用的分析器确保了文档能够被正确地拆解为词条,而倒排索引的设计则允许快速定位包含特定词条的文档集合。同时,通过多种优化技术和缓存策略,Elasticsearch 保证了高性能和高可用性。
3. 正向和倒排
那么为什么一个叫做正向索引,一个叫做倒排索引呢?
- 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
- 而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。
正向索引:
优点:
- 可以给多个字段创建索引
- 根据索引字段搜索、排序速度非常快
缺点:
- 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
倒排索引:
优点:
- 根据词条搜索、模糊搜索时,速度非常快
缺点:
- 只能给词条创建索引,而不是字段
- 无法根据字段做排序
三、总结
Elasticsearch (ES) 使用倒排索引来加速文本的搜索速度。倒排索引之所以高效,主要是因为它改变了数据的组织方式,使得查询操作可以快速完成。
倒排索引的基本概念
传统的正向索引是按照文档到词的方式存储的,即每个文档记录了它包含哪些词语。而倒排索引则反过来,它是按照词到文档的方式存储的,即每个词对应了包含该词的所有文档列表。
为什么倒排索引快
倒排索引之所以能够实现快速搜索,主要得益于以下几个方面:
减少扫描范围:
- 倒排索引将查询从文档到词的模式转变为词到文档的模式。这意味着当我们搜索一个词时,可以直接定位到包含这个词的所有文档,而无需遍历整个文档集合。
高效的数据结构:
- 词条按字典序排序,并且使用高效的数据结构(如跳表、B树等)来存储,这使得查找词条变得非常迅速。
- 倒排列表使用诸如可变字节编码、Gamma 编码等编码技术来压缩文档ID列表,减少存储空间的同时也提升了读取速度。
缓存机制:
- Elasticsearch 使用多种缓存机制,如过滤器缓存、字段数据缓存等,来缓存常用数据,从而避免频繁地从磁盘读取数据,显著提升查询性能。
并发处理:
- Elasticsearch 可以在多个节点上并行处理查询请求,利用集群中的多台机器来加速查询过程。
优化的搜索算法:
- Elasticsearch 使用高效的搜索算法来处理复杂的查询条件,例如使用布尔逻辑运算来组合不同的查询条件,以及利用跳表等数据结构来减少不必要的文档比较。
索引合并与优化:
- Lucene 会定期合并较小的索引片段,以减少碎片化,优化索引结构,从而提高查询效率。
内存映射:
- Elasticsearch 和 Lucene 会利用内存映射技术将索引文件映射到内存中,这使得数据可以直接在内存中操作,大大加快了访问速度。
综上所述,倒排索引的设计和实现通过减少不必要的数据访问、利用高效的数据结构和算法、优化存储格式以及利用缓存和并发处理等手段,实现了非常高的搜索性能。这些特性共同作用,使得Elasticsearch能够在大规模数据集中实现快速准确的全文搜索。
相关文章:
![](https://i-blog.csdnimg.cn/direct/e9dc1193e3374e248c607193493f0af5.png)
ElasticSearch(es)倒排索引
目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…...
![](https://img-blog.csdnimg.cn/img_convert/7250f62b6bb238ea81a9c5f500bd37a8.png)
【自然语言处理】概论(一):自然语言处理概要
1.1 概论:(一)自然语言处理概要 知识点 自然语言的定义:人类交流使用的,包括口语和书面语的信息交流方式。AI的终极目标:使计算机具备理解(听、读)和生成(说、写&#…...
![](https://www.ngui.cc/images/no-images.jpg)
flask 开始
# 导入flask类 from flask import Flask,request,render_template # 使用flask类来创建一个app对象 # __name__ 代表当前app.py 这个模块 app Flask(__name__) # 创建一个路由和视图函数的映射 url http://127.0.0.1:5000/ app.route("/") def hello_word():return …...
![](https://i-blog.csdnimg.cn/direct/575017440aed4077a7eeeef372b3cf3e.png)
仕考网:公务员可以报考军队文职吗?
公务员可以报考军队文职考试,但是需要满足前提条件。 对于已经与国家、地方的用人单位建立劳动关系的社会人才,在获得当前用人单位的许可后才可以申请报考。 在面试过程中,考生必须出示一份由其用人单位出具的且加盖公章的同意报考证明。一…...
![](https://www.ngui.cc/images/no-images.jpg)
Java整理22
1、动态sql 多条件查询 .xml配置文件中sql语句书写<select id"getEmpByCondition",resultType"Emp">select * from t_emp where <if test"empName ! null and empName! ">empName#{empName}</if><if test"age ! nul…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode 408周赛 3234. 统计 1 显著的字符串的数量
3234. 统计 1 显著的字符串的数量 题目描述 给你一个二进制字符串 s。 请你统计并返回其中 1 显著 的子字符串的数量。 如果字符串中 1 的数量 大于或等于 0 的数量的 平方,则认为该字符串是一个 1 显著 的字符串 。 思路 一个很显然的思路是,我们…...
![](https://www.ngui.cc/images/no-images.jpg)
容器对比虚拟机有哪些不足?
引言 在当今的云计算和微服务架构中,容器技术已成为不可或缺的一部分。它以其轻量级、高效和快速部署的特性,赢得了广大开发者和运维人员的青睐。然而,正如任何技术都有其两面性,容器技术也不例外。本文将对容器技术在安全性、隔离…...
![](https://www.ngui.cc/images/no-images.jpg)
C# 归并排序
栏目总目录 概念 归并排序是一种分而治之的排序算法。它将一个大数组分成两个小数组,递归地对这两个小数组进行排序,然后将排序好的小数组合并成一个有序的大数组。这个过程一直递归进行,直到数组被拆分成只有一个元素的数组(自然…...
![](https://i-blog.csdnimg.cn/direct/04283789f6b64c5d92d66256bbcbceb0.png)
【请求代理】springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能
springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能 一、前言二、解决思路三、基于gateway实现四、基于过滤器Filter实现五、问题总结 **注:本文源码获取或者更多资料,关注公众号:技术闲人**一、前言 在项目开发时会遇到w…...
![](https://www.ngui.cc/images/no-images.jpg)
.NET Core异步编程与多线程解析:提升性能与响应能力的关键技术
在.NET Core中,异步编程和多线程是构建高性能应用程序的核心技能。理解这两个概念不仅可以提升应用程序的响应能力,还能优化资源使用。本文将深入剖析异步编程和多线程的关键知识点,提供代码示例,并附上步骤以帮助理解。 1. 异步…...
![](https://i-blog.csdnimg.cn/direct/febd187bc96640d88f27526860db4a08.jpeg)
Photoshop(PS) 抠图简单教程
目录 快速选择 魔棒 钢笔 橡皮擦 蒙版 通道 小结 可以发现,ps逐渐成为必备基础的办公软件。本文让ps新手轻松学会抠图。 快速选择 在抠图之前,先了解下选区的概念。ps中大多数的抠图操作都是基于选区的,先选区再Ctrl J提取选区。而快…...
![](https://i-blog.csdnimg.cn/direct/d13c3e52671447e0ac043d39ff98f86b.png#pic_center)
项目管理中的常用工件(二):可视化工件
项目管理中的常用工件(二):可视化工件 亲和图(affinity diagram)因果图(cause-and-effect diagram)直方图(histogram)流程图(flowchart)散点图&am…...
![](https://www.ngui.cc/images/no-images.jpg)
Git入门与实战:版本控制的艺术
🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 🔥 微信:zsqtcyw 联系我领取学习资料 …...
![](https://www.ngui.cc/images/no-images.jpg)
[Mysql-DML数据操作语句]
目录 数据增加:INSERT 全字段插入: 部分字段插入: 一次性添加多条: 数据修改:UPDATE 数据删除:DELECT delete truncate drop 区别 数据增加:INSERT 总体格式:insert into 表…...
![](https://i-blog.csdnimg.cn/direct/f4d6aa9ff35e44d2994fa10bf18cc246.png#pic_center)
Tableau入门|数据可视化与仪表盘搭建
原视频链接(up:戴戴戴师兄),文章为笔者的自学笔记,用于复习回顾,原视频下方有原up整理的笔记,更加直观便捷。因为视频中间涉及的细节较多,建议一边操作,一边学习。 整体介绍 可视化…...
![](https://i-blog.csdnimg.cn/direct/d3f981ce961144e09852b11669c5bfaf.png)
API 技术开发分享:连接电商平台数据获取的桥梁
在当今数字化的时代,API(Application Programming Interface,应用程序编程接口)技术成为了实现不同系统之间通信和数据交换的关键。它就像是一座无形的桥梁,使得各种应用能够相互协作,共享资源,…...
![](https://www.ngui.cc/images/no-images.jpg)
区块链如何助力数字版权保护和内容创作者的权益?
区块链技术可以助力数字版权保护和内容创作者的权益,主要有以下几个方面: 去中心化的版权登记和溯源:区块链可作为一个可信的去中心化数据库,记录并验证数字内容的版权信息。内容创作者可以将自己的作品信息存储在区块链上&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
记一次老旧项目的整体技术升级
最近给公司采购的老旧的 node8 vue2.6 webpack3 npm 项目做构建优化 背景:整个项目 build 一次 20 min ,本地冷启动和热更新也忒慢,依赖 npm i 一下也得装个 20 min 众所周知,Node 版本,依赖包管理工具 和 构建工…...
![](https://i-blog.csdnimg.cn/direct/31b69e7082ec4e2395d7b2465ac2f855.png)
2024年最受欢迎的五大上网审计设备和软件
在2024年的市场上,上网行为审计设备和软件种类繁多,它们帮助企业监控和管理员工的网络活动,确保网络安全并提高工作效率。下面是一些受欢迎的上网行为审计设备和软件。 2024年最受欢迎的上网行为审计设备和软件如下 1.安企神软件:…...
![](https://i-blog.csdnimg.cn/direct/03fdf8d9cf7942208d051417bc26a589.png)
sed利用脚本处理文件
一、sed是什么 sed 命令是利用脚本来处理文本文件。它可以依照脚本的指令来处理、编辑文本文件。主要用来自动编 辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 二、sed的原理 读入新的一行内容到缓存空间; 从指定的操作指令中取出第一条指令&…...
![](https://www.ngui.cc/images/no-images.jpg)
泰山派RK3566开发板800x1280MIPI屏设备树补丁
泰山派RK3566开发板800x1280MIPI屏设备树补丁 泰山派下800 X 1280分辨率MIPI屏调试,设备树补丁如下: https://download.csdn.net/download/qq_45143522/89584066 用kernel.patch文件,在泰山派内核源码下打补丁即可完成更新,或者…...
![](https://i-blog.csdnimg.cn/direct/eae5df151c734ee7be5a0066354118fc.png)
informer中的indexer机制的实现分析与源码解读
1. 背景 client-go工具下的tools/cache.indexer为informer提供缓存与索引的能力。可以实现快速通过索引找到对应的对象(pod, deployment,secret,configmap等)。 indexer再informer机制中的使用图示: indexer包括2部分: 一部分是store用于实际数据的存储,…...
![](https://i-blog.csdnimg.cn/direct/e521a1e45a6f4e58b7cf91ec27621c7b.jpeg)
英特尔宣布针对对Llama 3.1进行优化 以提升所有产品的性能
日前Meta正式发布了Llama 3.1开源大模型,以其庞大的参数量和卓越性能,首次在多项基准测试中击败了GPT-4o等业界领先的闭源模型。允许开发者自由地进行微调、蒸馏,甚至在任何地方部署,这种开放性为AI技术的普及和创新提供了无限可能…...
![](https://img-blog.csdnimg.cn/direct/b42026808d024ec6b49bb6a725078e3b.png)
Python3网络爬虫开发实战(1)爬虫基础
一、URL 基础 URL也就是网络资源地址,其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme:协议,常用的协议有 Http,https,ftp等等;usern…...
![](https://i-blog.csdnimg.cn/direct/070d8c23344043d1be4e4c03d7b119b0.png)
Redis的五种数据类型与命令
目录 引言 一 Redis的特性 二 Redis的安装 三 Redis的优点 四 Redis的五种数据类型与命令 五 Redis的配置文件 引言 Redis是什么? Remote Dictionary Service(远程字典服务器) Redis 是一个开源的(BSD许可)的,C语言编写的,高性能的数…...
![](https://i-blog.csdnimg.cn/direct/ba0dbc7b251e44e09995e70973bde5a3.png)
RocketMQ的详细讲解(四种mq的对比(activeMq、rabbitmq、rocketmq、kafka))
20240729 RocketMQ1 mq的三大作用 异步、削峰限流、解耦合2. 四种mq的对比(activeMq、rabbitmq、rocketmq、kafka)3 rocketmq特点1. 平台无关2. 能提供什么样的功能 4 rocketMq4.1 broker中的标题,来约束读和写4.2 rocketmq的结构4.3 读和写的…...
![](https://i-blog.csdnimg.cn/direct/5cc35e0fd3fd4aaca69c84477e20290c.png)
除了GPT,还有哪些好用的AI工具?
最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 多得很,这20个免费的国产AI工具,打工人必备,除了比chatGPT好用,甚至还可以用来变现…...
![](https://i-blog.csdnimg.cn/direct/32fbd9883ed543a9abb6c8204bac78b8.png)
04 | 深入浅出索引(上)
此系列文章为极客时间课程《MySQL 实战 45 讲》的学习笔记! 索引的常见模型 可以提供查询效率的数据结构有很多,常见的有三种:哈希表、有序数组、搜索数。 哈希表是一种以 key-value 形式存储的数据结构。输入一个 key,通过固定…...
![](https://img-blog.csdnimg.cn/img_convert/ffe272dcef1d833a04fd3aa124a640b9.png)
Linux的yum源安装MySQL5.7
linux的yum源安装MySQL5.7 一、MySQL 1、简介 MySQL 是一种流行的关系型数据库管理系统(RDBMS),由瑞典公司 MySQL AB 开发,后来被 Oracle Corporation 收购。它是一个开源软件,提供了高效、稳定和可靠的数据管理解决…...
![](https://www.ngui.cc/images/no-images.jpg)
基于深度学习的音频自监督学习
基于深度学习的音频自监督学习(Self-Supervised Learning, SSL)是一种利用未标注的音频数据,通过设计自监督任务进行特征学习的方法。这种方法在需要大量标注数据的音频处理任务(如语音识别、情感分析等)中,…...
![](https://www.ngui.cc/images/no-images.jpg)
用uniapp 及socket.io做一个简单聊天app1
####相关的表结构,用的是mysql 用户表(Users) 存储用户的基本信息。 CREATE TABLE Users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE,created_a…...
![](https://i-blog.csdnimg.cn/direct/9ee563d82c8241648bda6084760c5322.png)
在Postman中引用JS库
前言 在做接口测试时,出于安全因素,请求参数需要做加密或者加上签名才能正常请求,例如:根据填写的请求参数进行hash计算进行签名。postman作为主流的接口调试工具也是支持请求预处理的,即在请求前使用JavaScript脚本对…...
![](https://i-blog.csdnimg.cn/direct/4c4e8cfd5c914b06b722a3cca34f9a29.png)
学习笔记-系统框图简化求传递函数公式例题
简化系统结构图求系统传递函数例题 基础知识回顾 第四讲 控制系统的方框图 (zhihu.com) 「自控原理」2.3 方框图的绘制及化简_方框图化简-CSDN博客 自动控制原理笔记-结构图及其等效变换_结构图等效变换-CSDN博客 例子一 「自控原理」2.3 方框图的绘制及化简_方框图化简-CS…...
![](https://www.ngui.cc/images/no-images.jpg)
postgrsql——事务概述
事务概述 事务的特性 原子性(Atomicity): 事务被视为一个整体,其中的操作要么全部执行成功,要么全部不执行,即不存在部分执行的情况。这确保了事务的完整性和一致性。一致性(Consistency&…...
![](https://www.ngui.cc/images/no-images.jpg)
1.Spring Boot 简介(Spring MVC+Mybatis-plus)
文章目录 一,Spring Boot 简介二,搭建springboot项目并整合mybatis-plus框架1.pom导依赖2.添加启动项3.配置文件.yml 三,springboot集成 Spring MVC1.springmvc定义2.应用注解 一,Spring Boot 简介 SpringBoot是Spring的子工程(或…...
![](https://img-blog.csdnimg.cn/direct/a46f8da6b19d42b292029409c046f285.png)
《计算机网络》(学习笔记)
目录 一、计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 电流交换、报文交换和分组交换 1.1.5 计算机网络的分类 1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型 1.2.1 计算机…...
![](https://i-blog.csdnimg.cn/direct/a6adcb59881540b0983701f2a622004a.png)
指针函数和函数指针
函数名在表达式中应该如何被解读?答:函数名可以在表达式中被解读成“指向该函数的指针”。 函数指针和指针函数有什么区别?答:函数指针是一个指向函数的指针;指针函数是一个返回指针变量的函数。 一个函数能否有时候…...
![](https://www.ngui.cc/images/no-images.jpg)
Elasticsearch跨集群搜索
Elasticsearch(简称ES)是一种基于Lucene的搜索引擎,以其高性能、可扩展性和实时搜索能力而广受欢迎。在大型分布式系统中,跨集群搜索成为了一个重要的需求,它允许用户从多个Elasticsearch集群中联合查询数据࿰…...
![](https://img-blog.csdnimg.cn/img_convert/d70b07e77773cc139be3bd397e6014a9.png)
基于FPGA的数字信号处理(19)--行波进位加法器
1、10进制加法是如何实现的? 10进制加法是大家在小学就学过的内容,不过在这里我还是帮大家回忆一下。考虑2个2位数的10进制加法,例如:15 28 43,它的运算过程如下: 个位两数相加,结果为5 8 1…...
![](https://www.ngui.cc/images/no-images.jpg)
树莓派下,centos7操作系统, TensorFlow java版实现植物分类功能
在树莓派上运行CentOS 7,并使用TensorFlow Java版本实现植物分类功能可以通过以下步骤实现。以下是详细的指导: 一、安装和设置环境 1. 更新系统并安装基本工具 确保你的CentOS 7系统是最新的,并安装必要的工具: sudo yum update -y sudo yum install -y wget unzip gi…...
![](https://www.ngui.cc/images/no-images.jpg)
开源一个react路由缓存库
Github仓库 背景 产品希望可以像浏览器那样每打开一个路由,会多一个tab,用户可以切换tab访问之前加载过的页面,且不会重新加载。真就产品一句话…… Github上有轮子了吗 Github上开箱即用的轮子是基于react-router-dom V5实现的ÿ…...
![](https://i-blog.csdnimg.cn/direct/9a4c59d405c849608f1b5c3bec5a38ef.png)
go-kratos 学习笔记(7) 服务发现服务间通信grpc调用
服务发现 Registry 接口分为两个,Registrar 为实例注册和反注册,Discovery 为服务实例列表获取 创建一个 Discoverer 服务间的通信使用的grpc,放到data层,实现的是从uses服务调用orders服务 app/users/internal/data.go 加入 New…...
![](https://img-blog.csdnimg.cn/img_convert/901b4a3c343841576e9507f6f2f1b384.gif)
SPSS个人版是什么软件
SPSS是一款数据统计、分析软件,它由IBM公司出品,这款软件平台提供了文本分析、大量的机器学习算法、数据分析模型、高级统计分析功能等,软件易学且功能非常强大,可以使用SPSS制作图表,例如柱状、饼状、折线等图表&…...
![](https://i-blog.csdnimg.cn/direct/ff681463ecdd4a3e950c6c809a9092da.png)
Minos 多主机分布式 docker-compose 集群部署
参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) 【运维】docker-compose安装minio集群-CSDN博客 Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能 中文地址:MinIO | 用于AI的S3 …...
![](https://img-blog.csdnimg.cn/direct/640962f12ce6422e9543abfbbe2023ea.jpeg)
Unity + Hybridclr + Addressable + 微信小程序 热更新报错
报错时机: Generate All 怎么All 死活就是报错 生成微信小程序,并启动后 报错内容: MissingMethodException:AoT generic method notinstantiated in aot.assembly:Unity.ResourceManager:dll, 原因: Hybridclr 开发文档 解…...
![](https://i-blog.csdnimg.cn/direct/7b9b8e00e11b4b58aa503b84a524527f.png)
鸿蒙开发—黑马云音乐之Music页面
目录 1.外层容器效果 2.信息区-发光效果 3.信息区-内容布局 4.播放列表布局 5.播放列表动态化 6.模拟器运行并配置权限 效果: 1.外层容器效果 Entry Component export struct MuiscPage {build() {Column() {// 信息区域Column() {}.width(100%)// .backgroun…...
![](https://i-blog.csdnimg.cn/direct/9dc1e1fbd3764331b1227cde7712a5f4.png#pic_center)
IsaacLab | 如何在Manipulation任务中添加新的目标(target)
如是我闻: 终于让我给摸索出来了,在这里描述一下问题场景。 假使说我们有一个机械臂操作的任务,这样婶的 Isaac Lab | Push 我们想做多目标的任务,这时候需要向环境中添加第二个目标,像这样 Isaac Lab | Add target 那…...
![](https://i-blog.csdnimg.cn/direct/b37e6792aac045dfb8db9c236ca1e6db.png)
【Python从入门到进阶】61、Pandas中DataFrame对象的操作(二)
接上篇《60、Pandas中DataFrame对象的操作(一)》 上一篇我们讲解了DataFrame对象的简介、基本操作及数据清洗相关的内容。本篇我们来继续讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。 一、DataFrame的统计分析 在数据分析和处理中…...
![](https://i-blog.csdnimg.cn/direct/83fce574f41747a18f72807eba819ae2.png)
Linux(虚拟机)的介绍
Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…...
![](https://i-blog.csdnimg.cn/direct/8cdffe9199a649c98b45670a1b695a0f.png)
CSS(九)——CSS 轮廓(outline)
CSS 轮廓(outline) 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。 让我们用一个图来看…...