Elasticsearch7.10集群搭建
Elasticsearch详细介绍:
Elasticsearch 是一个分布式、RESTful 风格的搜索和分析引擎。它的核心基于 Apache Lucene,能够处理海量的数据,并支持实时的全文搜索。以下是关于 Elasticsearch 的详细介绍。
一、基本概念
-  
索引(Index):索引是 Elasticsearch 中的一个基本单位,类似于关系型数据库中的数据库。每个索引包含多种类型的文档(在 7.x 之前)。在 7.x 之后,一个索引只能包含一种类型的文档。
 -  
文档(Document):文档是 Elasticsearch 中最小的数据单元,存储在索引中,类似于关系型数据库中的行。每个文档用 JSON 格式表示,包含多个字段和对应的值。
 -  
分片(Shard):索引可以分成多个分片,每个分片是一个独立的 Lucene 实例。分片允许数据水平扩展,分布在集群中的多个节点上。
 -  
副本(Replica):每个分片可以有多个副本,副本用于提高数据的可用性和查询性能。当主分片出现故障时,副本分片可以保证数据的高可用性。
 
二、核心功能
-  
全文搜索:Elasticsearch 提供强大的全文搜索能力,支持复杂的查询和过滤条件,能够处理自然语言文本,并支持分词、同义词扩展等功能。
 -  
实时数据处理:Elasticsearch 支持实时索引和查询,适用于需要快速响应的大数据处理场景。
 -  
分布式架构:通过分片和副本机制,Elasticsearch 能够在集群中分布和管理数据,提供高可用性和可扩展性。
 -  
RESTful API:Elasticsearch 通过 RESTful API 提供与外部系统的交互接口,支持常见的 HTTP 方法(如 GET、POST、PUT、DELETE),方便集成。
 -  
聚合分析:支持复杂的聚合操作,如统计、分组、求和、平均等,能够对大规模数据进行实时分析。
 
三、主要组件
-  
Elasticsearch Core:核心组件,负责数据存储、索引、查询等基本功能。
 -  
Kibana:数据可视化工具,与 Elasticsearch 集成,用于创建图表、仪表盘、报表等,方便用户进行数据分析和展示。
 -  
Logstash:数据收集和处理管道,支持从多种数据源采集数据,进行过滤、变换,然后输出到 Elasticsearch。
 -  
Beats:轻量级的数据采集器家族,包括 Filebeat、Metricbeat、Packetbeat 等,用于将不同类型的数据发送到 Logstash 或 Elasticsearch。
 
四、使用场景
-  
日志和事件数据分析:通过 Logstash 和 Beats,Elasticsearch 可以收集和分析日志数据,提供实时监控和故障排查。
 -  
全文搜索引擎:适用于构建网站内部搜索引擎、文档管理系统等,提供快速、精准的全文搜索能力。
 -  
实时数据分析:通过 Kibana,用户可以对数据进行可视化分析,适用于各种实时数据监控和分析场景,如监控系统性能、用户行为分析等。
 -  
大数据处理:利用 Elasticsearch 的分布式架构,可以处理海量数据,并支持复杂的查询和聚合操作。
 
Elasticsearch各版本比较:
| 优缺点 | Elasticsearch 6.x 系列 | Elasticsearch 7.x 系列 | 
|---|---|---|
| 优点 | 强大的分词和搜索能力:提供多种分词器和搜索功能,适用于不同语言和需求。 | |
| 滚动升级:支持从5.x到6.x的滚动升级,简化了升级过程。 | ||
| 跨集群复制:允许在多个Elasticsearch集群之间复制索引,增加了数据的可用性和冗余。 | 更加优化的性能:预计在查询、索引和聚合性能方面有进一步优化。 | |
| 更好的安全性:更多的安全功能和改进,使得数据更加安全。 | ||
| 云原生支持:对云原生环境的支持更好,方便在各种云平台上部署和管理。 | ||
| 自动化和简化运维:更多的自动化运维功能,减少手动干预,提高稳定性和可维护性。 | ||
| 缺点 | 类型删除:Elasticsearch 6.x 开始移除了类型功能,虽然简化了映射但对某些应用造成了影响。 | |
| 性能问题:与7.x相比,某些查询和索引性能较低。 | 兼容性问题:新版本可能会引入一些不向下兼容的变更,需要在升级前进行充分的评估和测试。 | |
| 学习曲线:新功能和新特性可能需要学习和适应,尤其对于现有用户来说。 | 
Elasticsearch集群搭建:
一、环境配置
| 角色 | IP地址 | 操作系统 | 
|---|---|---|
| master | 99.99.10.30 | CentOS Linux release 7.9.2009 (Core) | 
| slave | 99.99.10.31 | CentOS Linux release 7.9.2009 (Core) | 
| slave | 99.99.10.32 | CentOS Linux release 7.9.2009 (Core) | 
# Elasticsearch 不能以 root 用户运行,创建一个新用户并赋予适当权限。 sudo adduser es  sudo passwd 123456  sudo usermod -aG sudo es
# 调整 vm.max_map_count 参数,以满足 Elasticsearch 的需求。 sudo sysctl -w vm.max_map_count=262144  echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# 增加文件描述符限制。 sudo echo "elasticsearch - nofile 65535" | sudo tee -a /etc/security/limits.conf  sudo echo "elasticsearch - nproc 4096" | sudo tee -a /etc/security/limits.conf
# 调整内存锁定: sudo echo "elasticsearch soft memlock unlimited" | sudo tee -a /etc/security/limits.conf  sudo echo "elasticsearch hard memlock unlimited" | sudo tee -a /etc/security/limits.conf
# 安装java sudo yum install java-11-openjdk-devel -y  # 配置 JAVA_HOME 环境变量(在.bash_profile 文件,添加以下内容) export JAVA_HOME=/usr/lib/jvm/java-11-openjdk export PATH=$JAVA_HOME/bin:$PATH  # 然后重新加载配置: source ~/.bashrc  #检查Java版本 java -version  openjdk version "11.0.23" 2024-04-16 LTS OpenJDK Runtime Environment (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS) OpenJDK 64-Bit Server VM (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS, mixed mode, sharing)
二、安装elasticsearch
es官方下载地址,es和kibana尽量下载同一版本
elasticsearch各版本下载地址
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
kibana (es的可视化管理工具)
https://www.elastic.co/cn/downloads/past-releases/#kibana
# 解压elasticsearch包到/usr/local/下面: tar -zxvf elasticsearch-7.10.0-linux-x86_64.tar.gz -C /usr/local/  #将elasticsearch-7.10.0重命名为es cd /usr/local/ mv elasticsearch-7.10.0 es  # 这个文件夹用于存储 Elasticsearch 的数据,它将所有的索引数据和相关元数据存储在这个目录中 mkdir -p /data/elasticsearch_data/data # 这个文件夹用于存储 Elasticsearch 的日志文件,记录了 Elasticsearch 的运行状态、错误信息和性能指标。 mkdir -p /data/elasticsearch_data/logs  sudo chown -R es:es /data/elasticsearch_data sudo chmod -R 755 /data/elasticsearch_data  # 这个文件夹用于存储 Elasticsearch 的备份数据。 mkdir -p /opt/backup/es mkdir -p /opt/backup/es1  sudo chown -R es:es /opt/backup/ sudo chmod -R 755 /opt/backup/
三、配置elasticsearch
1.先搭建单个节点,再复制到其他节点:
path.data: /opt/data path.logs: /opt/logs#http访问端口,程序或kibana使用 http.port: 9200xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
# 尝试启动 ./bin/elasticsearch
设置安全账号信息(ES要启动状态):
-  
执行以下命令,给各账号设置密码(演示使用的密码都为:123456), 整个集群只需要设置一次即可
 -  
警告:设置账户密码切记要在单实例非集群模式时配置,不能添加任何集群的配置,否则会设置失败
 
./bin/elasticsearch-setup-passwords interactive
2.集群配置:
cluster.name: elasticsearchnode.name: node1path.data: /data/elasticsearch_data/datapath.logs: /data/elasticsearch_data/logs#数据备份和恢复使用,可以一到多个目录 path.repo: ["/opt/backup/es", "/opt/backup/es1"]http.port: 9200#是否可以参与选举主节点 node.master: true#是否是数据节点 node.data: true#允许访问的ip,4个0的话则允许任何ip进行访问 network.host: 0.0.0.0#es各节点通信端口 transport.tcp.port: 9300#集群每个节点IP地址。 discovery.seed_hosts: ["99.99.10.30:9300", "99.99.10.31:9300", "99.99.10.32:9300"]#es7.x新增的配置,初始化一个新的集群时需要此配置来选举master cluster.initial_master_nodes: ["node1", "node2", "node3"]#配置是否压缩tcp传输时的数据,默认为false,不压缩 transport.tcp.compress: true# 是否支持跨域,es-header插件使用 http.cors.enabled: true# *表示支持所有域名跨域访问 http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length#集群模式开启安全 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-minimal-setup.html xpack.security.enabled: true xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.keystore.password: "123456" xpack.security.transport.ssl.truststore.password: "123456"#默认为1s,指定了节点互相ping的时间间隔。 discovery.zen.fd.ping_interval: 1s#默认为30s,指定了节点发送ping信息后等待响应的时间,超过此时间则认为对方节点无响应。 discovery.zen.fd.ping_timeout: 30s#ping失败后重试次数,超过此次数则认为对方节点已停止工作。 discovery.zen.fd.ping_retries: 3
四、复制elasticsearch到其他节点
scp -r /usr/local/es/ root@99.99.10.31:/usr/local/ scp -r /usr/local/es/ root@99.99.10.32:/usr/local/sudo chown -R es:es /usr/local/es/ sudo chmod -R 755 /usr/local/es/
五、测试elasticsearch集群
# 切换到es用户
su es# 启动es
cd /usr/local/es/
./bin/elasticsearch# 查看集群信息
curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cluster/health?pretty"
{"cluster_name" : "elasticsearch","status" : "green","timed_out" : false,"number_of_nodes" : 3,"number_of_data_nodes" : 3,"active_primary_shards" : 1,"active_shards" : 2,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}
 
这个 JSON 响应显示了 Elasticsearch 集群的健康状态及其一些关键指标。
集群基本信息
-  
cluster_name:
"elasticsearch"-  
集群的名称。这是你在
elasticsearch.yml配置文件中指定的名称。 
 -  
 
集群健康状态
-  
status:
"green"-  
集群的健康状态。可能的状态有三种:
-  
green: 所有主分片和副本分片都是可用的。
 -  
yellow: 所有主分片都是可用的,但有一些副本分片不可用。
 -  
red: 有一些主分片不可用。
 
 -  
 
 -  
 -  
timed_out:
false-  
表示查询是否超时。
false表示查询在规定时间内完成。 
 -  
 
节点和分片信息
-  
number_of_nodes:
3-  
集群中的节点总数。这里表示集群中有 3 个节点。
 
 -  
 -  
number_of_data_nodes:
3-  
集群中的数据节点总数。数据节点存储数据并处理搜索请求。这里表示所有 3 个节点都是数据节点。
 
 -  
 
分片状态
-  
active_primary_shards:
1-  
当前活动的主分片数量。主分片是实际存储数据的分片。
 
 -  
 -  
active_shards:
2-  
当前活动的总分片数量,包括主分片和副本分片。这里有 1 个主分片和 1 个副本分片。
 
 -  
 -  
relocating_shards:
0-  
正在重新分配的分片数量。重新分配是指将分片从一个节点移动到另一个节点。
 
 -  
 -  
initializing_shards:
0-  
正在初始化的分片数量。这些分片正在被分配和恢复。
 
 -  
 -  
unassigned_shards:
0-  
未分配的分片数量。可能是因为没有足够的节点来分配这些分片。
 
 -  
 -  
delayed_unassigned_shards:
0-  
延迟分配的未分配分片数量。这些分片被延迟分配,通常是因为某些节点暂时不可用。
 
 -  
 
任务和队列信息
-  
number_of_pending_tasks:
0-  
当前待处理的任务数量。任务可以是索引刷新、分片移动等。
 
 -  
 -  
number_of_in_flight_fetch:
0-  
当前正在获取的分片数量。通常是在执行搜索请求时从不同的分片获取数据。
 
 -  
 -  
task_max_waiting_in_queue_millis:
0-  
当前任务队列中等待时间最长的任务的等待时间(毫秒)。这里表示没有任务在队列中等待。
 
 -  
 
活动分片百分比
-  
active_shards_percent_as_number:
100.0-  
当前活动分片占所有分片的百分比。100% 表示所有分片都是活动的,没有分片是未分配的或初始化中的。
 
 -  
 
# 创建一个索引看集群中每个节点索引数据 curl -XPUT -u elastic:123456 "http://127.0.0.1:9200/test-index"curl -XGET -u elastic:123456 "http://localhost:9200/_cat/indices?pretty" green open test-index _hNfQpNqTZWAsPKrqa51XA 1 1 0 0 416b 208b green open .security-7 L6YSY_F0Sl207ijttvv4CQ 1 1 7 0 51.5kb 25.7kb
六、安装kibana和es-header插件:
# 下载kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz# 解压到/usr/local/,并重命名为kibana tar -zxvf kibana-7.10.0-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local/ mv kibana-7.10.0-linux-x86_64/ kibana
# 配置kibana,并加入下面的配置 vim /usr/local/kibana/config/kibana.yml -------------------------------------- #设置为中文 i18n.locale: "zh-CN" #允许其它IP可以访问 server.host: "0.0.0.0" elasticsearch.username: "kibana_system" elasticsearch.password: "elastic123" #es集群地址,填写真实的节点地址 elasticsearch.hosts: ["http://xxx.xx.xx.xx:9200","http://xxx.xx.xx.xx:9200","http://xxx.xx.xx.xx:9200"] --------------------------------------
# 启动kibana cd /usr/local/kibana/./bin/kibana
es-head安装如下面的官方文档所示:
GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster
Elasticsearch如何合理的设置分片:
一、什么是分片
在 Elasticsearch 中,索引是由一个或多个分片组成的。每个分片是一个完整的 Lucene 索引,独立存储数据并执行搜索操作。通过分片,Elasticsearch 可以将数据分布到多个节点上,从而提高系统的吞吐量和容错能力。
二、分片的类型
主分片(Primary Shard):
-  
每个索引默认包含的分片。
 -  
数据首先写入主分片,然后再复制到副本分片。
 -  
主分片的数量在索引创建时确定,之后不能更改。
 
副本分片(Replica Shard):
-  
主分片的副本,用于提高数据的高可用性和搜索性能。
 -  
默认情况下,每个主分片有一份副本分片。
 -  
可以动态调整副本的数量。
 
三、分片的工作原理
数据分布:当你向 Elasticsearch 索引文档时,Elasticsearch 会根据文档的 ID 计算一个哈希值,并根据这个哈希值决定将文档存储到哪个主分片。这种方式确保了文档在主分片间的均匀分布。
数据存储:当你向 Elasticsearch 索引文档时,Elasticsearch 会根据文档的 ID 计算一个哈希值,并根据这个哈希值决定将文档存储到哪个主分片。这种方式确保了文档在主分片间的均匀分布。
数据存储:每个分片是一个独立的 Lucene 索引,包含多个倒排索引。这些倒排索引用于高效的全文搜索。分片将文档分成多个段(segment),每个段是一个不可变的索引文件。随着文档的添加,新的段会不断创建,旧的段会被合并以优化性能和存储空间。
数据副本:副本分片存储在不同的节点上,以防止单点故障。如果一个主分片节点故障,Elasticsearch 可以将副本分片升级为主分片,并继续提供服务。副本分片不仅用于故障恢复,还可以分担搜索请求的负载,从而提高查询性能。
请求处理
-  
写请求(Indexing Request):
-  
写请求首先发送到主分片。
 -  
主分片将数据写入自身,然后将数据复制到对应的副本分片。
 -  
所有分片都成功写入后,返回确认响应。
 
 -  
 -  
读请求(Search Request):
-  
读请求可以发送到任意一个副本分片,包括主分片。
 -  
通过这种方式,读请求可以被均衡地分配到所有分片,提高查询性能。
 
 -  
 
四、分片的优点
水平扩展:通过增加分片和节点,可以轻松扩展 Elasticsearch 集群以处理更多数据和更高的查询负载。
高可用性:通过副本分片,Elasticsearch 提供了数据冗余,确保在节点故障时数据不会丢失。
高性能:分片使得搜索和索引请求可以并行处理,提高了系统的吞吐量。
五、分片如何设置
-  
分片的官方建议:
 
1、分片过小会导致段过小,进而致使开销增加。您要尽量将分片的平均大小控制在至少几 GB 到几十 GB 之间。 对时序型数据用例而言,分片大小通常介于 20GB 至 40GB 之间。2、由于单个分片的开销取决于段数量和段大小,所以通过 forcemerge 操作强制将 较小的段合并为较大的段能够减少开销并改善查询性能。理想状况下, 应当在索引内再无数据写入时完成此操作。请注意:这是一个极其耗费资源的操作, 所以应该在非高峰时段进行。 3、每个节点上可以存储的分片数量与可用的堆内存大小成正比关系,但是 Elasticsearch并未 强制规定固定限值。这里有一个很好的经验法则:确保对于节点上已配置的每个 GB,将分片数量 保持在 20 以下。如果某个节点拥有 30GB 的堆内存,那其最多可有 600 个分片,但是在此限值范围内, 您设置的分片数量越少,效果就越好。一般而言,这可以帮助集群保持良好的运行状态。 (编者按:从 8.3 版开始,我们大幅减小了每个分片的堆使用量, 因此对本博文中的经验法则也进行了相应更新。请按照以下提示了解 8.3+ 版本的 Elasticsearch。)
-  
在网上总结的:
 
每个分片的数据量不超过最大JVM堆空间设置,一般不超过32G。如果一个索引大概500G,那分片大概在16个左右比较合适。单个索引分片个数一般不超过节点数的3倍,推荐是1.5 ~ 3倍之间。假如一个集群3个节点,根据索引数据量大小分片数在5-9之间比较合适。主分片、副本和节点数,分配时也可以参考以下关系:节点数<= 主分片数 * (副本数 +1 )
-  
创建索引时指定分片数量:
 
PUT /my_index
{"settings": {"index": {"number_of_shards": 3,"number_of_replicas": 1}}
} 
Elasticsearch常用操作命令:
# es启动:./bin/elasticsearch# 访问地址:http://localhost:9200/ 默认9200端口# Kibana 启动:./bin/Kibana# 访问地址:http://localhost:5600/ 默认5600端口
# 查看集群状态 # 检查集群运行情况: curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cat/health?v"# 查看集群节点列表: curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cat/nodes"# 查看所有索引: curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cat/indices?v"
# 索引操作API # 1.查询查看分片状态-Authorization方式(postman通过账密获取token) curl -XGET ‘http://127.0.0.1:9200/_cluster/allocation/explain?pretty’ --header ‘Authorization’: Basic ZWxhc3RpYzphcDIwcE9QUzIw’# 2.查询查看分片状态-账密方式 curl -XGET -u elastic "http://127.0.0.1:9200/_cluster/allocation/explain?pretty" -H ‘Content-Type:application/json’# 3.查询集群状态命令 curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cluster/health?pretty"# 4.查询Es全局状态 curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cluster/stats?pretty"# 5.查询集群设置 curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cluster/settings?pretty"# 6.查询集群文档总数 curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cat/count?v"# 7.查看当前集群索引分片信息 curl -XGET -u elastic:123456 "http://127.0.0.1:9200/_cat/shards?v"# 8.查看集群实例存储详细信息 curl -XGET -u elastic "http://127.0.0.1:9200/_cat/allocation?v"# 9.查看当前集群的所有实例 curl -XGET -u elastic "http://127.0.0.1:9200/_cat/nodes?v"# 10.查看当前集群等待任务 curl -XGET -u elastic "http://127.0.0.1:9200/_cat/pending_tasks?v"# 11.查看集群查询线程池任务 curl -XGET -u elastic "http://127.0.0.1:9200/_cat/thread_pool/search?v"# 12.查看集群写入线程池任务 curl -XGET -u elastic "http://127.0.0.1:9200/_cat/thread_pool/bulk?v"# 13.清理ES所有缓存 curl -XPOST "http://127.0.0.1:9200/_cache/clear"# 14.查询索引信息 curl -XGET -u : ‘https://127.0.0.1:9200/licence_info_test?pretty’# 15.关闭索引 curl -XGET -u : ‘https://127.0.0.1:9200/my_index/_close?pretty’# 16.打开索引 curl -XGET -u : ‘https://127.0.0.1:9200/my_index/_open?pretty’
相关文章:
Elasticsearch7.10集群搭建
Elasticsearch详细介绍: Elasticsearch 是一个分布式、RESTful 风格的搜索和分析引擎。它的核心基于 Apache Lucene,能够处理海量的数据,并支持实时的全文搜索。以下是关于 Elasticsearch 的详细介绍。 一、基本概念 索引(Index…...
SMU Summer 2024 Contest Round 3
A.Hcode OnlineJudge 先用欧拉筛把质数预处理出来,然后枚举左端点的质数,只需要询问右端点是不是质数并取差值的min就行了 #include<bits/stdc.h> #define endl \n #define mk make_pair #define int long long using namespace std; typedef lon…...
uniapp 封装瀑布流组件
思路: 1.coulumns:需要分成几列 2.如何分布数据 3.计算每列的宽度 4.图片进行高度自适应 <template><view :style"{ margin: boxM }"><view class"flex flex-justify-start bg-red" style"background-colo…...
pd虚拟机去虚拟化是什么意思?pd虚拟机去虚拟化教程 PD虚拟机优化设置
Parallels Desktop for Mac(PD虚拟机)去虚拟化是指在虚拟机(Virtual Machine,简称 VM)中禁用或减少虚拟化层的影响,使其表现更接近于物理机。这种操作通常用于提高虚拟机的性能或解决某些软件兼容性问题。具…...
低代码研发项目管理流程优化:提效与创新的双重驱动
随着信息技术的迅猛发展,软件项目的规模和复杂度日益增加,传统的软件开发方式已经难以满足快速迭代和高效交付的需求。在这一背景下,低代码平台应运而生,以其高效、灵活、易用的特点,迅速成为软件行业的新宠。然而&…...
32位版 C 库函数time 将在 2038 年溢出,那到时候,它该何去何从
简单地说,通常不必担心,在64位操作系统已经成为主流的今天这基本上不是问题(在写这篇回答的时候,我才发现我甚至找不到32位的机器来测试)刚好我有一些资料,是我根据网友给的问题精心整理了一份「32库函数的…...
C语言 printf函数缓冲机制
printf不立即打印到stdout的原因 printf函数使用了缓冲机制。当我们调用printf时,输出通常不会立即显示在屏幕上,而是先存储在一个缓冲区中。这是为了提高I/O操作的效率。 缓存数据输出的原理 stdio库维护了一个缓冲区。当缓冲区满了,或者在特定条件下,缓冲区的内容会被刷新…...
【Linux进阶】文件系统8——硬链接和符号连接:ln
在Linux下面的链接文件有两种, 一种是类似Windows的快捷方式功能的文件,可以让你快速地链接到目标文件(或目录);另一种则是通过文件系统的inode 链接来产生新文件名,而不是产生新文件,这种称为硬链接&…...
代码随想录算法训练营Day64|拓扑排序(卡码网117)、dijkstra朴素版
拓扑排序 117. 软件构建 (kamacoder.com) 拓扑排序简单的说是将一个有向图转为线性的排序。 它将图中的所有结点排序成一个线性序列,使得对于任何的边uv,结点u在序列中都出现在结点v之前,这样的序列满足图中所有的前驱-后继关系。 拓扑排…...
neo4j 图数据库:Cypher 查询语言、医学知识图谱
neo4j 图数据库:Cypher 查询语言、医学知识图谱 Cypher 查询语言创建数据查询数据查询并返回所有节点查询并返回所有带有特定标签的节点查询特定属性的节点及其所有关系和关系的另一端节点查询从名为“小明”的节点到名为“小红”的节点的路径 更新数据更新一个节点…...
数据结构基础--------【二叉树基础】
二叉树基础 二叉树是一种常见的数据结构,由节点组成,每个节点最多有两个子节点,左子节点和右子节点。二叉树可以用来表示许多实际问题,如计算机程序中的表达式、组织结构等。以下是一些二叉树的概念: 二叉树的深度&a…...
数据开源 | Magic Data大模型高质量十万轮对话数据集
能够自然的与人类进行聊天交谈,是现今的大语言模型 (LLM) 区别于传统语言模型的重要能力之一,近日OpenAI推出的GPT-4o给我们展示了这样的可能性。 对话于人类来说是与生俱来的,但构建具备对话能力的大模型是一项不小的挑战,收集高…...
webpack之ts打包
tsconfig.json配置 // 是否对js文件进行编译,默认false"allowJs": true,// 是否检查js代码是否符合语法规范,默认false(引入的外部文件有可能语法有问题)"checkJs": true, allowJs和checkJs基本是同时出现,因为有了allowJs 这个检查…...
MATLAB数据统计描述和分析
描述性统计就是搜集、整理、加工和分析统计数据, 使之系统化、条理化,以显示出数据资料的趋势、特征和数量关系。它是统计推断的基础,实用性较强,在数学建模的数据描述部分经常使用。 目录 1.频数表和直方图 2 .统计量 3.统计…...
设计分享—国外后台界面设计赏析
国外后台界面设计将用户体验放在首位,通过直观易懂的布局和高效的交互设计,提升用户操作效率和满意度。 设计不仅追求美观大方,还注重功能的实用性和数据的有效展示,通过图表和图形化手段使数据更加直观易懂。 采用响应式布局&a…...
最小生成树(算法篇)
算法之最小生成树 最小生成树 概念: 最小生成树是一颗连接图G所有顶点的边构成的一颗权最小的树,最小生成树一般是在无向图中寻找。最小生成树共有N-1条边(N为顶点数)。 算法: Prim算法 概念: Prim(普里姆)算法是生成最小生…...
教师管理小程序的设计
管理员账户功能包括:系统首页,个人中心,教师管理,个人认证管理,课程信息管理,课堂记录管理,课堂统计管理,留言板管理 微信端账号功能包括:系统首页,课程信息…...
Selenium 等待
环境: Python 3.8 selenium3.141.0 urllib31.26.19 Chromium 109.0.5405.0 (32 位) # 1 固定等待(time) # 固定待是利用python语言自带的time库中的sleep()方法,固定等待几秒。 # 这种方式会导致这个脚本运…...
安装easy-handeye
一、aruco_ros配置 mkdir -p ~/ros_ws/src cd ~/ros_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make 二、visp配置(需要联外网下载东西,不然会一直出问题) sudo apt-get install ros-melodic-…...
【面试题】MySQL 索引(第二篇)
1.索引 索引是数据库中的一个核心概念,它对于提高数据库查询效率至关重要。以下是索引的详细概念解析: 一、索引的定义 基本定义:索引是一个排序的列表,其中存储着索引的值和包含这些值的数据所在行的物理地址(或逻…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
