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.索引 索引是数据库中的一个核心概念,它对于提高数据库查询效率至关重要。以下是索引的详细概念解析: 一、索引的定义 基本定义:索引是一个排序的列表,其中存储着索引的值和包含这些值的数据所在行的物理地址(或逻…...
4. 小迪安全v2023笔记 javaEE应用
4. 小迪安全v2023笔记 javaEE应用 大体上跟随小迪安全的课程,本意是记录自己的学习历程,不能说是完全原创吧,大家可以关注一下小迪安全。 若有冒犯,麻烦私信移除。 默认有java基础。 文章目录 4. 小迪安全v2023笔记 javaEE应…...
anaconda修改安装的默认环境
📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…...
MySQL 9.0 正式发行Innovation创新版已支持向量
从 MySQL 8.1 开始,官方启用了新的版本模型:MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍,两者的质量都已达到可用于生产环境级别。区别在于: 如果希望尝试最新的功能和改进,并喜欢与最新技术保持同步&am…...
基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现
博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…...
【蔬菜网元宇宙】—— 探索农业的未来之旅
在数字化时代的浪潮中,技术和创新不断塑造着我们的生活方式。现在,这种变革已经延伸到了农业领域。蔬菜网,一个专注于农产品供应链的领先平台,自豪地宣布我们正式迈入元宇宙的世界——一个全新的虚拟空间,旨在彻底改变…...
淘宝商品历史价格查询(免费)
当前资料来源于网络,禁止用于商用,仅限于学习。 淘宝联盟里面就可以看到历史价格 并且没有加密 淘宝商品历史价格查询可以通过以下步骤进行: 先下载后,登录app注册账户 打开淘宝网站或淘宝手机App。在搜索框中输入你想要查询的商…...
14-47 剑和诗人21 - 2024年如何打造AI创业公司
2024 年,随着人工智能继续快速发展并融入几乎所有行业,创建一家人工智能初创公司将带来巨大的机遇。然而,在吸引资金、招聘人才、开发专有技术以及将产品推向市场方面,人工智能初创公司也面临着相当大的挑战。 让我来…...
WPF界面设计-更改按钮样式 自定义字体图标
一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构  对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…...
开源项目的机遇与挑战
随着全球经济和科技环境的快速变化,开源软件项目的蓬勃发展成为了开发者社区的热门话题。越来越多的开发者和企业选择参与开源项目,以推动技术创新和实现协作共赢。本文将从开源项目的发展趋势、参与开源的经验分享,以及开源项目的挑战三个方…...
Linux实现CPU物理隔离
文章目录 背景使用 taskset 命令使用 cgroups案例 背景 在 Linux 上实现 CPU 的物理隔离(也称为 CPU 隔离或 CPU pinning),可以通过将特定的任务或进程绑定到特定的 CPU 核心来实现。这可以提高系统性能,尤其是在需要实时响应的应…...
元做网站/银川网页设计公司
Python对我来说是一种相对较新的语言。单元测试和依赖注入是我已经做了一段时间的事情,所以我从C#的角度对它很熟悉。最近,我写了一段Python代码:import requests # my dependency: http://docs.python-requests.org/en/latest/class someCla…...
营口网站建设/网络宣传推广方法
CXF wsdl2java 生成java代码供客户端使用环境配置:1、下载apache-cxf-2.6.2在环境变量中配置CXF_HOME 值为E:\gavin\cxf\apache-cxf-3.0.0,在PATH中加入%CXF_HOME%\bin2、输入cmd 进入控制窗口,输入wsdl2java看是否配置成功3、参考它的文档看这个工具的具…...
自己做网站教程/seo的形式有哪些
1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一…...
广州做网站的企业/外链工厂 外链
题意:给定函数\(f(x)\),有\(n^2-3*n2\sum_{d|n}f(d)\),求\(\sum_{i1}^nf(i)\) 题解:很显然的杜教筛,假设\(g(n)n^2-3*n2\),那么有\(gf*I\),由莫比乌斯反演,\(fg*\mu\),可以O(nlogn)预处理到1e6,剩余部分杜教筛 我们先观察杜教筛的推导过程,假设要求\(s(n)\sum_{i1}^nf(i)\),\(\…...
建站平台社区/口碑优化
我们平时所见的打车app例如:滴滴打车,曹操专车......都是走的JT808协议,有人问为什么呢?小编告诉大家,原因是:国家有关部门规定,所有运营车辆必须接入这样的协议,实时监测车辆信息&a…...
做旅游网站会遇到什么问题/什么是网络推广营销
Python相比于C语言、PHP、Java等编程语言,更加简单易学,很多没有编程经验或者对编程一知半解的人员往往会选择Python作为入门编程语言,Python虽然入门简单,但是要想更深入的掌握Python知识和技能,还需要下一番苦功&…...