当前位置: 首页 > news >正文

Elasticsearch 索引

一、简介

在 Elasticsearch 中,索引(Index)是存储相关文档的地方,类似于关系数据库中的数据库。索引是 Elasticsearch 中最重要的概念之一,用于组织和存储数据。

二、索引的基本概念

  • 索引(Index):
    • 索引是 Elasticsearch 中存储相关文档的地方,类似于关系数据库中的数据库。
    • 每个索引有一个唯一的名称,用于标识和访问该索引。
  • 文档(Document):
    • 文档是索引中的基本数据单元,格式为 JSON。每个文档包含多个字段(Fields),字段可以是各种数据类型,如文本、数字、日期等。
    • 文档是 Elasticsearch 中存储和搜索的基本单位。
  • 类型(Type):
    • 在 Elasticsearch 7.x 之前,索引中可以包含多个类型(Types),类似于关系数据库中的表。但在 7.x 及以后版本中,类型已被弃用,每个索引只能包含一种类型,默认类型为 _doc。
  • 分片(Shard):
    • 索引被分成多个分片,每个分片是一个独立的 Lucene 索引。
    • 分片允许数据分布在集群中的多个节点上,从而实现水平扩展和并行处理。
  • 副本(Replica):
    • 每个分片可以有零个或多个副本,副本是分片的拷贝,用于提供高可用性和负载均衡。
    • 副本分片可以与主分片存储在不同的节点上,以防止数据丢失。

三、索引的组成

在 Elasticsearch 中,创建索引时通常包含以下几个主要部分:

  1. 索引名称:唯一标识符。
  2. 设置(Settings):配置分片、副本、分析器等。
  3. 映射(Mappings):定义文档结构和字段类型。
  4. 别名(Aliases,可选):为索引创建虚拟名称。

示例:

PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2,"refresh_interval": "2s","analysis": {"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "standard","filter": ["lowercase", "my_filter"]}},"filter": {"my_filter": {"type": "stop","stopwords": ["and", "the"]}}},"merge": {"policy": {"max_merged_segment": "5gb","segments_per_tier": 10}},"indexing_buffer": "512mb","codec": "best_compression","max_result_window": 20000},"mappings": {"properties": {"title": {"type": "text","analyzer": "my_analyzer"},"date": {"type": "date"},"author": {"type": "keyword"},"content": {"type": "text","analyzer": "my_analyzer"},"views": {"type": "integer"}}},"aliases": {"my_alias": {}}
}
3.1 索引名称
  • 索引名称是索引的唯一标识符,用于在集群中识别该索引。
  • 索引名称必须是小写字母,不能包含特殊字符(如 , /, *, ?, ", <, >, |, , , # 等)。
  • 示例:my_index。
3.2 设置(Settings)

在 Elasticsearch 中,Settings(设置) 是创建索引时用于配置索引行为和属性的部分。Settings 定义了索引的分片、副本、分析器、刷新间隔等核心参数,直接影响索引的性能、可用性和功能。

  1. Settings 的作用

    • 分片和副本:定义索引的分片数和副本数,影响数据的分布和高可用性。
    • 分析器:定义文本字段的分词器和过滤器,影响全文搜索的行为。
    • 刷新和合并策略:控制索引的刷新频率和段合并策略,影响写入性能和查询性能。
    • 其他高级配置:如缓存、压缩、路由等。
  2. Settings 的核心配置项

    • 分片和副本

      • number_of_shards:
        • 定义索引的主分片数量。
        • 分片是 Elasticsearch 分布式存储的基本单位,每个分片是一个独立的 Lucene 索引。
        • 分片数在索引创建时指定,创建后不可更改。
        • 默认值:5。
        • 示例:
          "number_of_shards": 3
          
      • number_of_replicas:
        • 定义每个主分片的副本数量。
        • 副本用于提供高可用性和负载均衡,副本分片可以与主分片存储在不同的节点上。
        • 副本数可以在索引创建后动态调整。
        • 默认值:1。
        • 示例:
          "number_of_replicas": 2
          
    • 分析器(Analysis)

      • analyzer:
        • 定义自定义分析器,用于在索引和搜索时处理文本字段。
        • 分析器由分词器(Tokenizer)和过滤器(Filter)组成。
        • 示例:
          "analysis": {"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "standard","filter": ["lowercase", "my_filter"]}},"filter": {"my_filter": {"type": "stop","stopwords": ["and", "the"]}}
          }
          
      • tokenizer:
        • 定义分词器,用于将文本拆分为词项(Token)。
        • 常见的分词器:standard、whitespace、keyword 等。
      • filter:
        • 定义过滤器,用于对分词后的词项进行处理。
        • 常见的过滤器:lowercase(转换为小写)、stop(去除停用词)、synonym(同义词)等。
    • 刷新间隔(Refresh Interval)

      • refresh_interval:
        • 定义索引的刷新频率,即新写入的文档在多长时间后可以被搜索到。
        • 刷新间隔越短,搜索的实时性越高,但写入性能可能下降。
        • 默认值:1s(1 秒)。
        • 示例:
        "refresh_interval": "2s"
        
    • 段合并策略(Merge Policy)

      • merge.policy:
        • 定义 Lucene 段的合并策略,影响索引的写入性能和查询性能。
        • 常见的配置项:
          • merge.policy.max_merged_segment:最大合并段大小。
          • merge.policy.segments_per_tier:每层的段数。
        "merge": {"policy": {"max_merged_segment": "5gb","segments_per_tier": 10}
        }
        
    • 写入缓冲区(Indexing Buffer)

      • indexing_buffer:
        • 定义索引写入缓冲区的大小,影响写入性能。
        • 默认值:10% 的 JVM 堆内存。
        • 示例:
        "indexing_buffer": "512mb"
        
    • 压缩(Compression)

      • codec:
        • 定义索引数据的压缩算法。
        • 常见的压缩算法:default(默认)、best_compression(更高压缩率)。
        • 示例:
        "codec": "best_compression"
        
    • 路由(Routing)

      • routing:
        • 定义文档的路由规则,影响文档存储的分片。
        • 示例:
        "routing": {"allocation": {"include": {"region": "us-east"}}
        }
        
    • 其他配置

      • max_result_window:
        • 定义搜索结果的最大返回条数。
        • 默认值:10000。
        • 示例:
        "max_result_window": 20000
        
      • max_refresh_listeners:
        • 定义每个分片的最大刷新监听器数量。
        • 默认值:1000。
        • 示例:
        "max_refresh_listeners": 2000
        
  3. Settings 的最佳实践

    • 合理设置分片数:
      • 分片数应根据数据量和集群规模合理设置,避免分片过多或过少。
      • 分片过多会增加集群的开销,分片过少会影响查询性能。
    • 动态调整副本数:
      • 副本数可以根据集群的负载和可用性需求动态调整。
    • 优化分析器:
      • 根据业务需求自定义分析器,提升全文搜索的准确性和性能。
    • 调整刷新间隔:
      • 对于实时性要求高的场景,可以缩短刷新间隔;对于写入性能要求高的场景,可以延长刷新间隔。
    • 监控和调优:
      • 定期监控索引的性能和资源使用情况,根据实际需求调整 Settings 配置。
3.3 映射(Mappings)

在 Elasticsearch 中,Mappings(映射) 是定义索引中文档结构及其字段类型的方式。它类似于关系型数据库中的表结构(Schema),用于指定字段的数据类型、分析器、格式等属性。Mappings 是 Elasticsearch 索引的核心组成部分之一,直接影响数据的存储、索引和搜索行为。

  1. Mappings 的作用

    • 定义字段类型:指定每个字段的数据类型(如 text、keyword、date 等)。
    • 控制字段行为:设置字段是否可索引、是否存储、是否支持分词等。
    • 优化搜索性能:通过合理配置字段类型和分析器,提升搜索效率和准确性。
    • 支持复杂数据结构:支持嵌套对象(object)和嵌套类型(nested)等复杂数据结构。
  2. Mappings 的组成部分

    • 字段属性(Field Properties)
      • type:字段的数据类型(如 text、keyword 等)。
      • index:是否索引该字段(true 或 false)。
      • analyzer:指定分词器(用于 text 字段)。
      • search_analyzer:指定搜索时的分词器。
      • store:是否单独存储该字段(true 或 false)。
      • format:指定日期格式(用于 date 字段)。
      • fields:多字段(Multi-fields),允许一个字段以多种方式索引。
      • ignore_above:忽略超过指定长度的字符串(用于 keyword 字段)。
      • null_value:为 null 值指定默认值。
    • 字段类型(Field Types)
      • 常见的字段类型:
        • text:全文搜索字段,支持分词。
        • keyword:用于精确匹配的字段,不支持分词。
        • date:用于存储日期和时间。
        • long, integer, short, byte, double, float:用于存储数值。
        • boolean:用于存储布尔值(true 或 false)。
        • binary:用于存储二进制数据。
        • geo_point:用于存储地理坐标(经度和纬度)。
        • geo_shape:用于存储复杂的地理形状。
        • object:用于存储嵌套的 JSON 对象。
        • nested:用于存储数组中的嵌套对象(每个对象独立索引)。
  3. 动态映射(Dynamic Mapping)
    Elasticsearch 支持动态映射,即在索引文档时自动推断字段类型。可以通过 dynamic 参数控制动态映射的行为:

    • true:自动添加新字段(默认)。
    • false:忽略新字段。
    • strict:遇到未定义的字段时抛出异常。
    "mappings": {"dynamic": "strict","properties": {"title": { "type": "text" }}
    }
    
  4. 多字段(Multi-fields)
    多字段允许一个字段以多种方式索引。例如,一个 text 字段可以同时以 text 和 keyword 类型索引:

    "title": {"type": "text","fields": {"keyword": {"type": "keyword"}}
    }
    这样,title 字段可以用于全文搜索,而 title.keyword 字段可以用于精确匹配。
    
  5. 嵌套对象(Nested Object)

    "mappings": {"properties": {"user": {"type": "nested","properties": {"name": { "type": "text" },"age": { "type": "integer" }}}}
    }
    
  6. Mappings 的最佳实践

    • 合理选择字段类型:
      • 对于需要全文搜索的字段,使用 text 类型。
      • 对于需要精确匹配的字段,使用 keyword 类型。
      • 对于日期字段,使用 date 类型并指定合适的格式。
    • 使用多字段:
      • 对于需要同时支持全文搜索和精确匹配的字段,使用多字段(Multi-fields)。
    • 控制动态映射:
      • 根据需求设置 dynamic 参数,避免不必要的字段自动创建。
    • 优化嵌套对象:
      • 对于嵌套对象,使用 nested 类型以确保每个对象独立索引。
    • 避免过度索引:
      • 对于不需要搜索的字段,设置 index: false 以减少索引开销。
  7. Mappings 的查看和修改

    • 查看 Mappings:
      GET /my_index/_mapping
      
    • 修改 Mappings:
      • 对于已存在的字段,不能直接修改其类型,但可以添加新字段。
      • 如果需要修改字段类型,通常需要重新创建索引并重新索引数据。
3.4 别名(Aliases,可选)
  • 别名是一个指向一个或多个索引的虚拟名称,可以用于简化索引管理和查询。
  • 别名可以在创建索引时定义,也可以在索引创建后动态添加。
  • 示例:
    "aliases": {"my_alias": {}
    }
    

四、索引的创建

  • 创建索引
    • 使用 PUT 请求创建索引,并指定设置和映射。
    • 索引创建成功之后,以下属性将不可修改:
      • 索引名称
      • 主分片数量
      • 字段类型

下面是一个完整的 Elasticsearch 索引创建示例,包含设置、映射和别名:

PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2,"analysis": {"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "standard","filter": ["lowercase", "my_filter"]}},"filter": {"my_filter": {"type": "stop","stopwords": ["and", "the"]}}}},"mappings": {"properties": {"title": {"type": "text","analyzer": "my_analyzer"},"date": {"type": "date"},"author": {"type": "keyword","index": true},"content": {"type": "text","analyzer": "my_analyzer"},"views": {"type": "integer"}}},"aliases": {"my_alias": {}}
}

五、索引的操作

  • 查看索引:

    • 使用 GET 请求可以查看索引的详细信息,包括设置、映射、分片等。
      GET /my_index
      
  • 删除索引:

    • 使用 DELETE 请求可以删除一个索引。
      DELETE /my_index
      
  • 更新索引
    在 Elasticsearch 中,索引一旦创建,其核心结构和设置通常是不可变的,但某些部分是可以动态更新的。

    • 索引的设置(Settings)
      • 可更新的内容:
        • 副本数(number_of_replicas):可以动态调整副本数。
        • 刷新间隔(refresh_interval):可以动态修改刷新间隔。
        • 分析器(analyzer):可以为新字段添加分析器,但不能修改现有字段的分析器。
      • 不可更新的内容:
        • 分片数(number_of_shards):分片数在索引创建后不可更改。
        • 主分片的设置:主分片的设置(如分片大小)不可更改。
      PUT /my_index/_settings
      {"index": {"number_of_replicas": 2,"refresh_interval": "30s"}
      }
      
    • 索引的映射(Mapping)
      • 可更新的内容:
        • 添加新字段:可以向现有映射中添加新字段。
        • 修改字段的多字段(multi-fields):可以为现有字段添加新的多字段类型。
      • 不可更新的内容:
        • 修改现有字段的类型:例如,不能将 text 类型的字段改为 keyword 类型。
        • 删除字段:不能直接删除字段。
      PUT /my_index/_mapping
      {"properties": {"new_field": {"type": "text"}}
      }
      
    • 别名(Aliases)
      • 索引别名是一个指向一个或多个索引的虚拟名称。创建索引后,可以随时添加、删除或更新别名。
        • 添加别名:为索引添加新的别名。
        • 删除别名:移除索引的别名。
        • 切换别名:将别名指向另一个索引。
      POST /_aliases
      {"actions": [{ "add": { "index": "my_index", "alias": "my_alias" } }]
      }
      

相关文章:

Elasticsearch 索引

一、简介 在 Elasticsearch 中&#xff0c;索引&#xff08;Index&#xff09;是存储相关文档的地方&#xff0c;类似于关系数据库中的数据库。索引是 Elasticsearch 中最重要的概念之一&#xff0c;用于组织和存储数据。 二、索引的基本概念 索引&#xff08;Index&#xf…...

Java EE(16)——网络原理——TCP协议解析二

4.滑动窗口(效率机制) 上篇博客讲到的确认应答/超时重传/连接管理都是安全机制&#xff0c;但也会降低传输效率。滑动窗口就是在保证可靠传输的基础上&#xff0c;尽可能地提高传输效率。 根据确认应答机制&#xff0c;客户端每发送一个请求都需要收到服务器的确认应答报文后才…...

解决address already in use报错:如何查看占用某个端口的程序并杀死

文章目录 问题背景解决策略概述端口占用诊断步骤 1&#xff1a;确认占用端口的进程步骤 2&#xff1a;确认进程的详细信息 解决端口占用问题方案 1&#xff1a;安全终止进程方案 2&#xff1a;修改应用配置 最佳实践与预防措施端口使用规范开发环境配置 进阶技巧批量处理端口占…...

linux 设置tomcat开机自启动

tomcat自启动配置 1.添加tomcat.service文件 vim /etc/systemd/system/tomcat.service 2.编辑文件内容&#xff0c;路径修改为自己的 [Unit] DescriptionTomcat8 Aftersyslog.target network.target remote-fs.target nss-lookup.target[Service] Typeoneshot ExecStart/us…...

如何配置本地git

配置本地 Git 主要包含设置用户信息、配置 SSH 密钥、设置 Git 仓库等步骤&#xff0c;以下是详细的配置过程&#xff1a; 1. 安装 Git 在开始配置之前&#xff0c;你需要先安装 Git。不同操作系统的安装方式有所不同&#xff1a; Windows&#xff1a;访问 Git 官方下载页面&a…...

VSCode 生成HTML 基本骨架

在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…...

蓝桥杯备考:DFS暴搜之健康的荷斯坦奶牛

这道题数据量很小很小&#xff0c;我们可以用dfs暴搜来搜索 这是我们的决策树 #include <iostream> using namespace std; int n, m; const int N 45; int rq[N]; int g[N][N]; int cnt; int path; int ret 45; int st; bool check() {for (int i 1; i < n; i){in…...

android adjust 卸载与重装监测

想要洞察应用内用户的留存率,可以通过Adjust 的卸载与重装进行监测 名词解释: 卸载:集成完成后,卸载应用,安装状态为:卸载 重装:如果应用已经卸载,但一段时间后又进行安装,则会被视为重装。 📢📢📢:adjust 文件中说到24 小时后,可以再 adjust 控制台看安装…...

WPF Reactive 数据绑定

文章目录 Combox 绑定List-通过枚举绑定方法一:方法二:Button 绑定TextBlock绑定NumericUpDown绑定Expander绑定checkbox绑定NumericUpDownCombox 绑定List-通过枚举绑定 方法一: ViewControl using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; usin…...

2.创建Collection、添加索引、加载内存、预览和搜索数据

milvus官方文档 milvus2.3.1的官方文档地址: https://milvus.io/docs/v2.3.x 使用attu创建collection collection必须要有一个主键字段、向量字段 确保字段类型与索引类型兼容 字符串类型&#xff08;VARCHAR&#xff09;通常需要使用 Trie 索引&#xff0c;而不是 AutoInd…...

yaffs

YAFFS&#xff08;Yet Another Flash File System&#xff09;是专为NAND闪存设计的日志结构文件系统&#xff0c;其核心原理围绕NAND闪存的特性优化数据管理。以下是其关键原理的详细说明&#xff1a; 1. NAND闪存适配 写入限制&#xff1a;NAND闪存需按页写入&#xff08;通…...

CMake-环境变量介绍

文章目录 作用域获取环境变量初始化查看特殊的环境变量 环境变量类似普通变量&#xff0c;但也有些不同&#xff0c;如下&#xff1a; 作用域 在一个CMake进程中环境变量具有全局作用域 获取环境变量 使用ENV操作符获取环境变量&#xff0c;例如$ENV{<name>}&#xff…...

wordpress表单插件CF7调用方式

Contact Form 7(CF7)是WordPress中非常流行的表单插件&#xff0c;以下是其常见的调用方式&#xff1a; 通过短代码调用 在页面或文章编辑器中添加&#xff1a;完成表单设置后&#xff0c;复制表单对应的短代码&#xff0c;然后在需要显示表单的页面或文章的编辑器中直接粘贴…...

小程序开发中的用户反馈收集与分析

我们在开发小程序的过程中根据开发过程中的代码及业务场景,以下是针对需求管理系统的用户反馈收集与分析方案设计: 需求管理系统用户反馈收集与分析方案 一、反馈数据模型设计 // 新增Feedback模型(app/admin/model/Feedback.php) namespace app\admin\model; use think\…...

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解

【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解 &#xff08;图1-1&#xff09; 一、鸿蒙中App、HAP、HAR、HSP是什么&#xff1f; &#xff08;1&#xff09;App Pack&#xff08;Application Package&#xff09; 是应用发布的形态&#xff0c;上架应用市场是以App Pa…...

Linux:一些命令记录

netstat -antp|grep -i 27017 | awk {print $5}| cut -d: -f1 | sort | uniq -c | sort -n 查看磁盘大小 du -sh /usr/local/* 查看剩余内存&#xff1a; free -m linux下获取占用CPU资源最多的10个进程&#xff0c;可以使用如下命令组合&#xff1a; ps aux|head -1;ps aux|gr…...

Microsoft Edge浏览器的取证分析(基于Chromium)

概述 早在2019年&#xff0c;微软就用Chromium替换了EdgeHTML浏览器引擎&#xff0c;这是微软支持谷歌Chrome浏览器的一个开源项目。通过切换到Chromium&#xff0c;Edge与Chrome浏览器共享一个共同的架构&#xff0c;这意味着用于Chrome浏览器调查的取证技术也适用于Edge。 …...

Java面试黄金宝典6

1. 什么是 CAS 原理&#xff1a; CAS &#xff08;Compare-And-Swap&#xff09;是一种硬件级别的原子操作指令&#xff0c;在 Java 并发编程中常被用于实现无锁算法。其核心逻辑是&#xff1a;在进行数据更新时&#xff0c;会先将内存位置 V 的值与预期原值 A 进行比较&#x…...

【计算机网络】网络编程

文章目录 1. 客户端/服务器2. TCP/UDP协议3. 网络编程套接字-socket3.1 API的使用3.1 DatagramScoket类3.1 DatagramScoket类 4. 通过UDP实现回显服务器程序4.1 服务器代码4.2 客户端代码4.3 代码执行过程4.4 通过UDP实现翻译客户端 5. 通过TCP实现回显服务器5.1 服务器代码5.2…...

算法刷题整理合集(七)·【算法赛】

本篇博客旨在记录自已的算法刷题练习成长&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xf…...

【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画

第 0 步&#xff1a;项目结构 lighting-text/├─ index.html└─ style.cssindex.html&#xff1a;包含列表 <ul>&#xff0c;其中每个 <li> 放一个字母或符号。style.css&#xff1a;设置背景、文字样式&#xff0c;以及关键帧动画&#xff08;lighting&#xf…...

C#与西门子PLC的六大通信库

C#与西门子PLC的六大通信库&#xff1a; 一、S7.NET S7.NET是一款开源的S7协议通信库&#xff0c;支持西门子S7通信。 二、Sharp7 Sharp7与S7.NET一样&#xff0c;是一款.NET版本的S7通信库。 三、Snap7 Snap7是一个开源的C通信库&#xff0c;支持西门子S7通信。 四、Prodave P…...

VScode

由于centos停止了维护 ,后面使用ubuntu 在Ubuntu中用vscode 充当记事本的作用 替代了centos中vim的作用 后面使用vscode编辑 vscode中继续使用makefile , xshell中的cgdb进行debug (半图形写 ,半命令行debug&&运行) 官网下载地址&#xff1a;https://code.visuals…...

Linux文件系统与磁盘管理

文件系统和磁盘管理是Linux系统管理的核心组成部分&#xff0c;直接影响系统的性能、数据安全性和存储效率。本文将从Linux文件系统的基本概念出发&#xff0c;深入探讨其架构、类型、管理工具以及实际操作技巧&#xff0c;帮助读者全面理解并掌握这一关键领域。 第一章&#x…...

【云馨AI-大模型】大模型的开发和应用中,Python、PyTorch和vLLM关系概括

说明 1. Python 定位&#xff1a;基础编程语言。作用&#xff1a;Python 是大模型生态系统的核心语言&#xff0c;几乎所有深度学习框架&#xff08;如 PyTorch、TensorFlow&#xff09;和工具链&#xff08;如 vLLM&#xff09;都通过 Python 接口提供服务。特点&#xff1a…...

AWS SAP学习笔记-概念

1、什么是ETL应用程序&#xff0c;举个例子说明&#xff1f; ETL&#xff08;Extract, Transform, Load&#xff09;应用程序是一种用于数据处理和迁移的工具或程序&#xff0c;它主要负责从多个数据源提取数据&#xff0c;对数据进行转换和清洗&#xff0c;然后将处理后的数据…...

kotlin知识体系(三) : Android Kotlin 中的函数式编程实践指南

前言 Kotlin以函数式编程革新了Android开发&#xff0c;通过高阶函数、扩展函数等特性&#xff0c;帮助开发者构建高可维护性代码。接下来我们来看一下Kotlin 中的函数式编程的各个特性。 1. 高阶函数与 Lambda 表达式&#xff1a;函数作为参数或返回值 在 Kotlin 中&#x…...

SpringBoot3+Vue3实战(Vue3快速开发登录注册页面并对接后端接口、表单项自定义校验规则、Hutool工具类)(4)

目录 一、SpringBoot3Vue3实现基本增删改查。前后端通信交互、配置后端跨域请求。数据批量删除。(博客链接) 二、SpringBoot3Vue3快速开发登录、注册页面并实现对接。 &#xff08;1&#xff09;操作数据表employee(员工信息表)。 <1>修改employee表的字段组成。 <2&g…...

OpenCV图像拼接项目指南

引言 图像拼接是计算机视觉领域中的一个重要应用&#xff0c;它可以将多张有重叠区域的图像拼接成一张全景图。这项技术广泛应用于虚拟现实、医学影像、卫星图像处理等领域。OpenCV作为一个强大的开源计算机视觉库&#xff0c;提供了丰富的工具和函数来实现图像拼接。本文将详…...

机器学习--DBSCAN聚类算法详解

目录 引言 1. 什么是DBSCAN聚类&#xff1f; 2. DBSCAN聚类算法的原理 3. DBSCAN算法的核心概念 3.1 邻域&#xff08;Neighborhood&#xff09; 3.2 核心点&#xff08;Core Point&#xff09; 3.3 直接密度可达&#xff08;Directly Density-Reachable&#xff09; 3…...

使用 Docker 构建 LangChain 开发环镜及 ChatOllama 示例

文章目录 Github官网简介Dockerfilerequirements.txt构建 LangChain 镜像ChatOllama 示例Ollama 示例模拟 tools Github https://github.com/langchain-ai/langchain 官网 https://python.langchain.com/docs/introduction/ 简介 LangChain 是一个用于构建 LLM 驱动的应用…...

持续集成与持续交付:这里有从开发到部署的全流程优化

阅读原文 在上一篇中&#xff0c;我们深入探讨了安全测试的核心内容&#xff0c;强调了它在发现安全漏洞和提升系统安全性中的重要作用。接下来&#xff0c;我们将聚焦于持续集成&#xff08;CI&#xff09;与持续交付&#xff08;CD&#xff09;&#xff0c;这是现代软件开发…...

CH32V208蓝牙内部带运放32位RISC-V工业级微控制器CH32V208CBU6、CH32V208GBU6开发板原理图和PCB

开发板 CH32V208CBU6立创格式的开发板上述链接可下载&#xff0c;官方文件进行了转换&#xff0c;使用前请仔细核对。 CH32V208CBU6原理图&#xff0c;上述图片为芯片部分。已进行DRC。 CH32V208CBU6 PCB三维图&#xff0c;上述图片为芯片部分。已进行DRC。 CH32V208GBU6开发…...

机器臂运动控制算法工程师面试

大厂的经验总结: 一、基础概念理解 请解释机器臂运动学正解和逆解的概念,并分别说明其用途。 正解:已知机器臂各关节的角度(或位移),通过运动学模型计算出机器臂末端执行器在笛卡尔空间中的位置和姿态。用途在于可以根据给定的关节驱动值,预测末端的实际位置,用于运动…...

【一起来学kubernetes】21、Secret使用详解

Secret 的详细介绍 Secret 是 Kubernetes 中用于存储和管理敏感信息&#xff08;如密码、令牌、密钥等&#xff09;的资源对象。Secret的设计目的是为了安全地存储和传输敏感信息&#xff0c;如密码、API密钥、证书等。这些信息通常不应该直接硬编码在配置文件或镜像中&#x…...

Java架构师成长之路

概述 本教程主要从6个方面&#xff0c;全面讲解Java技术栈的知识。 1.性能调优 深入理解MySQL底层原理、索引逻辑&#xff0c;数据结构与算法。使用Explain进行优化分析MVCC原理剖析日志机制解析 2.框架源码 掌握Spring底层原理带你手写一个Spring解析IOC、AOP源码、以及事…...

Cyberchef实用功能之-json line格式文件美化和查询

本文将介绍一下如何使用cyberchef对json line格式数据进行美化方便阅读&#xff0c;以及json line格式数据的批量查询操作。 之前的文章介绍了json格式数据的美化和查询&#xff0c;即Cyberchef实用功能之-json解析美化和转换&#xff0c;Cyberchef实用功能之-批量提取json数据…...

span与span之间的空白如何解决?

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>标题</title> <style>div{background: yellow;}span:first-of-type{background: red;}span:last-of-type{background: blue;}</styl…...

2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现&#xff1a; 甲骨文是我国目前已知的最早成熟的文字系统&#xff0c;它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值&#xff0c;不仅对中国文…...

3.23学习总结

字符串 String java.lang,String 类代表字符串&#xff0c;Java程序中所有的字符串文字都为此类的对象 字符串的内容是不会发生改变的&#xff0c;它的对象在创建之后不能呗更改 字符串的内存模型 当使用双引号直接赋值时&#xff0c;系统会检查该字符串在串池中是否存在。 …...

RT-Thread CI编译产物artifacts自动上传功能介绍

近期在RT-Thread开源项目中&#xff0c;我们引入了一项实用的功能改进——将每次CI&#xff08;持续集成&#xff09;编译生成的产物&#xff08;artifacts&#xff09;自动上传到GitHub&#xff0c;方便开发者和用户能够更便捷地获取和测试最新的编译结果。 参考链接&#xf…...

Android adb调试应用程序

启动app 有的时候app不是预先安装的&#xff0c;也不能从界面start一个app&#xff0c;这时需要后台拉起app。 $adb shell am start package.name/Activity.name 例如&#xff0c;android原生camera app&#xff0c; 包名为com.android.camera2&#xff0c; mainActivity名为…...

仅靠prompt,Agent难以自救

Alexander的观点很明确&#xff1a;未来 AI 智能体的发展方向还得是模型本身&#xff0c;而不是工作流&#xff08;Work Flow&#xff09;。还拿目前很火的 Manus 作为案例&#xff1a;他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体&#xff0c;…...

【嵌入式学习2】函数

目录 ## 函数 ## 函数分类 ## 函数定义 1、无参数无返回值 2、有参数无返回值 3、有参数有返回值 ## 函数声明 ## 局部变量和全局变量 ## 多文件编程 如何避免把同一个头文件 include 多次&#xff0c;或者头文件嵌套包含&#xff1f; 命令行编译文件 头文件包含的…...

平芯微PW5012应用电路

PW5012应用电路板介绍&#xff1a; 1.1 单节和两节锂电池升压 12V 或 9V&#xff0c; 1A 至 3A 电路板&#xff0c; 1.2 应用&#xff1a; 升压电压转换板 1.3 VIN 输入电压&#xff1a; 3V-9V 1.4 VOUT 输出电压&#xff1a; 9V 2A&#xff08;VIN3.7V&#xff09; &#xff0…...

Langchain4J框架相关面试题

以下是关于Langchain4J框架的面试题目及答案 ### Langchain4J基础概念类 1. **Langchain4J框架是什么&#xff1f;它的核心功能有哪些&#xff1f;** Langchain4J是一个用于构建语言模型应用的Java框架&#xff0c;它为开发者提供了一套简洁高效的API&#xff0c;使得在Jav…...

【MySQL】用户管理

目录 一、用户1.1 用户信息1.2 创建用户1.3 删除用户1.4 修改用户密码1.4.1 用户修改自己密码1.4.2 root用户修改指定用户的密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 结尾 一、用户 1.1 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中。…...

5.高频加热的原理与常用集成电路介绍

一、高频加热的类型 利用高频电源加热通常由两种方法&#xff1a;电介质加热&#xff08;被加热物体绝缘&#xff09;与感应加热&#xff08;被加热物体导电&#xff09;&#xff0c;详细解释如下&#xff1a; 电介质加热&#xff08;利用高频电压的高频电场导致物体自身分子摩…...

Elasticsearch:可配置的推理 API 端点分块设置

作者&#xff1a;来自 Elastic Daniel Rubinstein Elasticsearch 开放推理 API 现已支持可配置的分块&#xff0c;以便在文档摄取时处理语义文本字段。 Elasticsearch 推理 API 允许用户利用各种提供商的机器学习模型执行推理操作。其中一个常见用例是在索引中支持用于语义搜索…...

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…...