MySQL Galera Cluster 部署与介绍

news2024/11/15 16:45:34

目录

主要特点

组件

一. 环境准备

二. 配置 

1. 配置 galera1 主机的my.cnf的文件

2. 配置 galera2 主机的my.cnf的文件

3. 配置 galera3 主机的my.cnf的文件

4. 在给galera1 主机的my.cnf的文件增加节点

5. 写入数据验证同步

6. 配置 galera4 主机的my.cnf的文件

MySQL Galera Cluster 和传统My SQL的区别

1. 集群架构

2. 一致性和容错

3. 复制机制

4. 配置和管理

5. 事务处理

6. 数据完整性

扩展:

如果节点全部关闭,重新都起来的解决办法:


MySQL Galera Cluster 是一个高可用、同步复制的数据库解决方案,基于 Galera Library 和 MySQL 数据库。它设计用于提供高可用性、负载均衡和数据一致性,特别适合需要高写入负载和多主节点支持的场景。

主要特点

  1. 同步复制

    • 所有的写操作(包括插入、更新、删除)在集群中的所有节点上都是同步的。这意味着每个节点上的数据是完全一致的。
  2. 多主节点(Multi-Master)

    • 集群中的每个节点都是主节点。所有节点都可以处理读写请求,从而实现负载均衡和高可用性。
  3. 自动故障转移

    • 如果一个节点发生故障,其他节点会自动接管,确保系统持续可用。
  4. 自动节点加入

    • 新节点可以自动加入集群,并同步到当前集群状态。
  5. 数据一致性

    • 使用基于事务的复制保证数据一致性,所有事务在所有节点上以相同的顺序执行。
  6. 容错性

    • 集群能够处理网络分区和节点故障,确保集群的健壮性。

组件

  1. Galera Library

    • 提供了同步复制功能和事务一致性。Galera Library 负责复制和应用事务。
  2. MySQL 数据库

    • 提供数据库管理功能,包括 SQL 支持、查询优化等。
  3. State Snapshot Transfer (SST) 和 Incremental State Transfer (IST)

    • SST 用于将新节点与集群中的现有数据进行同步,IST 用于在集群中节点之间进行增量数据传输。

一. 环境准备

主机名IP系统软件版本配置信息
galera1192.168.226.31Rocky_linux9.4mysql-wsrep-8.0

galera-26.4.14-1

2核4G
galera2192.168.226.32Rocky_linux9.4mysql-wsrep-8.0

galera-26.4.14-1

2核4G
galera3192.168.226.33Rocky_linux9.4mysql-wsrep-8.0

galera-26.4.14-1

2核4G
galera4192.168.226.34Rocky_linux9.4mysql-wsrep-8.0​​​​​​​

galera-26.4.14-1

2核4G

同意关闭防火墙和selinux,进行时间同步。

 主机解析:

[root@galera1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.32 galera2
192.168.226.33 galera3
192.168.226.34 galera4
[root@galera2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.31 galera1
192.168.226.33 galera3
192.168.226.34 galera4
[root@galera3 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.32 galera2
192.168.226.31 galera1
192.168.226.34 galera4
[root@galera4 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.32 galera2
192.168.226.33 galera3
192.168.226.31 galera1

四台虚拟机都导入创建该服务的yum源

[root@galera1 ~]# cat /etc/yum.repos.d/mysql-wsrep.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-8.0/redhat/9/x86_64/
enabled=1
gpgcheck=0
[root@galera1 ~]# yum clean all

四台虚拟机都下载mysql-wsrep-8.0和galera

[root@galera1 ~]# yum install -y mysql-wsrep-8.0 galera

  • mysql-wsrep-8.0:

    • mysql-wsrep-8.0 是 MySQL 8.0 版本的一个变体,集成了 WSREP(Write Set Replication)协议。这是一个用于数据库集群的复制协议,允许 MySQL 数据库节点之间的同步复制。
    • 这个版本的 MySQL 是通过 WSREP 协议来实现数据的一致性和高可用性。WSREP 协议确保了所有节点的数据库状态保持一致,支持事务的自动同步和冲突解决。
    • 通常,这种版本的 MySQL 是在集群配置中使用的,旨在提高系统的容错能力和可扩展性。
  • Galera:

    • Galera 是一个用于 MySQL 数据库的同步复制插件,它实现了 WSREP 协议。Galera 提供了一个多主节点的数据库集群方案,允许所有节点同时进行读写操作,并且确保数据在所有节点之间保持一致。
    • 它主要用于提高数据库的可用性、容错性和扩展性。Galera 使得所有节点都能够同时处理读写请求,这比传统的主从复制模式更具灵活性。
    • Galera 可以与 MySQL 以及 MariaDB 配合使用,它的主要特点包括全同步复制、自动节点加入、冲突检测和解决等。

二. 配置 

四台虚拟器都启动服务,并改个密码

[root@galera1 ~]# systemctl start mysqld
# 获取数据库初始化密码的步骤
[root@galera1 ~]# password=$(grep "temporary password" /var/log/mysqld.log | awk -F': ' '{print $2}')
[root@galera1 ~]# echo $password
D.s#wfreZ8L%

#改密码
[root@galera1 ~]# mysqladmin -p"$password" password "Qaz123456+"

四台服务都配置一个远程用户并授权,采用脚本方式执行

[root@galera1 ~]# vim user.sh   #每台都要执行一次,用来创建远程用户并授权
#!/bin/bash

# MySQL 连接参数
MYSQL_USER="root"
MYSQL_PASS="Qaz123456+"  # 替换为实际的 root 密码
MYSQL_HOST="localhost"           # 或者使用 IP 地址

# 创建远程用户和授予权限的 SQL 命令
SQL_COMMANDS="
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'Qaz123456+';
GRANT ALL PRIVILEGES ON *.* TO 'syncuser'@'%';
FLUSH PRIVILEGES;
"

# 执行 SQL 命令
mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -h "$MYSQL_HOST" -e "$SQL_COMMANDS"
[root@galera1 ~]# sh user.sh

四台虚拟机服务都先停止

[root@galera1 ~]# systemctl stop mysqld

1. 配置 galera1 主机的my.cnf的文件
[root@galera1 ~]# vim /etc/my.cnf   #在最后行增加即可
server-id=1  # 服务器 ID,用于唯一标识 MySQL 服务器
binlog_format=row  # 二进制日志格式,行级别
innodb_file_per_table=1  # 为每个 InnoDB 表使用一个独立的表空间文件
innodb_autoinc_lock_mode=2  # 自增锁模式,2表示更高效的锁模式

wsrep_on=ON  # 启用 Galera 集群
wsrep_provider=/usr/lib64/galera/libgalera_smm.so  # Galera 提供者库的路径
wsrep_cluster_name='galera'  # Galera 集群的名称
wsrep_cluster_address='gcomm://'  # Galera 集群的地址,通常为 `gcomm://` 表示集群初始节点
wsrep_node_name='galera1'  # 当前节点的名称
wsrep_node_address='192.168.226.31'  # 当前节点的 IP 地址
wsrep_sst_auth=syncuser:'Qaz123456+'  # SST(状态快照传输)认证信息
wsrep_sst_method=rsync  # SST 方法,使用 rsync 进行状态快照传输

启动galera1主机的mysql

[root@galera1 ~]# systemctl start mysqld
[root@galera1 ~]# ss -tnlp
State               Recv-Q              Send-Q                            Local Address:Port                              Peer Address:Port              Process                                         
LISTEN              0                   4096                                    0.0.0.0:4567                                   0.0.0.0:*                  users:(("mysqld",pid=5145,fd=9))               
LISTEN              0                   128                                     0.0.0.0:22                                     0.0.0.0:*                  users:(("sshd",pid=819,fd=3))                  
LISTEN              0                   70                                            *:33060                                        *:*                  users:(("mysqld",pid=5145,fd=33))              
LISTEN              0                   128                                        [::]:22                                        [::]:*                  users:(("sshd",pid=819,fd=4))                  
LISTEN              0                   151                                           *:3306                                         *:*                  users:(("mysqld",pid=5145,fd=35))  


4567: 用于 Galera 集群的内部通信。这是 MySQL 数据库的默认端口,用于客户端连接 MySQL 数据库。所有的 SQL 查询和数据库操作通过这个端口进行。
33060: 用于 MySQL X Protocol。这是 MySQL 的 X Plugin 端口,主要用于 MySQL 的 X Protocol (MySQL Shell、MySQL Router 和其他 MySQL X API 客户端) 的连接。
3306: 用于 MySQL 数据库客户端连接。这是 MySQL 数据库的默认端口,用于客户端连接 MySQL 数据库。所有的 SQL 查询和数据库操作通过这个端口进行。

2. 配置 galera2 主机的my.cnf的文件
[root@galera2 ~]# systemctl start mysqld
server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera3,galera4'
wsrep_node_name='galera2'
wsrep_node_address='192.168.226.32'
wsrep_sst_auth=syncuser:'Qaz123456+'
wsrep_sst_method=rsync

启动galera2主机的mysql

[root@galera2 ~]# systemctl start mysqld

3. 配置 galera3 主机的my.cnf的文件
[root@galera3 ~]# vim /etc/my.cnf
server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera3,galera4'
wsrep_node_name='galera2'
wsrep_node_address='192.168.226.33'
wsrep_sst_auth=syncuser:'Qaz123456+'
wsrep_sst_method=rsync

启动galera3主机的mysql 

[root@galera3 ~]# systemctl start mysqld
4. 在给galera1 主机的my.cnf的文件增加节点
[root@galera1 ~]# vim /etc/my.cnf  #增加上节点,即修改这行内容如下,或见下图所示:

wsrep_cluster_address='gcomm://galera2,galera3,galera4'  # Galera 集群的地址,通常为 `gcomm://` 表示集群初始节点

 重启动galera1主机的mysql 

[root@galera1 ~]# systemctl restart mysqld
5. 写入数据验证同步

在 galera1主机写入数据,创建一个库

[root@galera1 ~]# mysql -uroot -p"Qaz123456+"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.37 Galera Cluster for MySQL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE database_name;
Query OK, 1 row affected (0.00 sec)

在 galera2和galera3主机查看

[root@galera2 ~]# mysql -uroot -p"Qaz123456+"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.37 Galera Cluster for MySQL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| database_name      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

[root@galera3 ~]# mysql -uroot -p"Qaz123456+"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.37 Galera Cluster for MySQL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| database_name      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

可以看到在 galera1主机创建的库,同步写入到了其他节点的mysql中。

6. 配置 galera4 主机的my.cnf的文件

[root@galera4 ~]# vim /etc/my.cnf
server-id=4
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera2,galera3'
wsrep_node_name='galera1'
wsrep_node_address='192.168.226.34'
wsrep_sst_auth=syncuser:'Qaz123456+'
wsrep_sst_method=rsync

 启动galera4主机的mysql  

[root@galera4 ~]# systemctl start mysqld

登录数据库查看数据 

[root@galera4 ~]# mysql -uroot -p"Qaz123456+"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.37 Galera Cluster for MySQL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| database_name      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

如此验证成功,新启动的mysq即为新加入集群的msyql,启动即发现,并完成同步数据。 

MySQL Galera Cluster 和传统My SQL的区别

1. 集群架构
  • 传统 MySQL:

    • 主从复制:传统的 MySQL 配置通常包括一个主服务器和多个从服务器。从服务器从主服务器接收数据更新。这是一种异步复制方式,意味着从服务器可能会滞后于主服务器。
    • 主主复制:一些系统配置多个主节点进行主主复制,但仍存在潜在的数据一致性问题。
  • MySQL Galera Cluster:

    • 多主复制:Galera Cluster 是一个同步复制系统,每个节点都可以充当主节点。所有节点都可以读写操作,确保数据在所有节点之间保持一致。
    • 同步复制:数据更改会在所有节点之间同步,这意味着所有节点的数据是一致的,没有主从的延迟。
2. 一致性和容错
  • 传统 MySQL:

    • 最终一致性:在主从复制中,从节点的数据更新可能会有延迟,直到从节点追上主节点。数据一致性在主从复制中不是实时保证的。
    • 容错性:单个主节点的故障可能会导致整个系统停机,尽管从节点可以作为备用,但恢复时间可能会较长。
  • MySQL Galera Cluster:

    • 强一致性:Galera Cluster 提供强一致性,即所有节点都在数据更新时保持一致。每个事务都需要在集群中的所有节点上成功提交才能被认为是成功的。
    • 高可用性:集群中的任何节点都可以提供服务,并且集群能够在节点失效时继续运行,只要集群中有足够的节点来维持“法定人数”(quorum)。
3. 复制机制
  • 传统 MySQL:

    • 异步复制:数据从主服务器复制到从服务器,可能存在延迟。
    • 半同步复制:可以配置为在主服务器确认至少一个从服务器已收到数据之前才提交事务,但这并不保证所有从服务器都已更新。
  • MySQL Galera Cluster:

    • 同步复制:所有节点在事务提交时需要在集群中多数节点上确认事务,从而确保数据一致性。
4. 配置和管理
  • 传统 MySQL:

    • 复杂性:主从复制的配置和管理可能较为复杂,尤其是在处理主节点故障、重新配置主从关系以及负载均衡时。
    • 自动化工具:通常需要外部工具和脚本来处理故障转移和负载均衡。
  • MySQL Galera Cluster:

    • 集群管理:配置集群较为复杂,但它提供了内置的节点加入和故障恢复机制。
    • 故障转移:Galera Cluster 内置的机制使得节点故障转移和恢复更加自动化和高效。
5. 事务处理
  • 传统 MySQL:

    • 单节点事务:事务处理通常发生在单个主节点上,可能会受制于主节点的性能和负载。
  • MySQL Galera Cluster:

    • 全局事务:事务需要在所有参与的节点上进行一致性检查和提交,可能会对事务性能产生影响,但保证了数据一致性。
6. 数据完整性
  • 传统 MySQL:

    • 数据一致性问题:在高负载和故障情况下,可能会出现数据一致性问题,尤其是在主从复制中。
  • MySQL Galera Cluster:

    • 数据完整性:通过同步复制和全节点一致性检查,Galera Cluster 更好地保证了数据的完整性和一致性。

 

扩展:

如果节点全部关闭,重新都起来的解决办法:

现在将四个节点全部停止,再起来mysql就都起不来了,这是因为集群的特点,并且已经有了集群的信息数据。只需要将一个节点的集群数据删除即可。

[root@galera1 ~]# rm -rf /var/lib/mysql/g*

 在删除这个节点配置文件中配置的其他的节点名

[root@galera1 ~]# vim /etc/my.cnf

将这个行修改wsrep_cluster_address='gcomm://galera2,galera3,galera4' 
修改为此行wsrep_cluster_address='gcomm://'

然后启动这个节点服务

[root@galera1 ~]# systemctl start mysqld

但这个几点起来后,在将其余几个节点启动就可以了。

[root@galera2 ~]# systemctl start mysqld
[root@galera3 ~]# systemctl start mysqld
[root@galera4 ~]# systemctl start mysqld

然后在把刚删除galera1的配置文件中节点名再添加回去并重启服务即可。

[root@galera1 ~]# vim /etc/my.cnf

再将这个行修改wsrep_cluster_address='gcomm://'
修改为此行wsrep_cluster_address='gcomm://galera2,galera3,galera4' 

[root@galera1 ~]# systemctl restart mysqld

这是查验数据数据是否还完整

[root@galera1 ~]# mysql -uroot -p"Qaz123456+"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.37 Galera Cluster for MySQL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| database_name      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

可以看到这样数据依旧存在。

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

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

相关文章

线性回归Pytorch方法

借助 PyTorch 实现深度神经网络 - 线性回归 PyTorch 方法 - 第 3 周 | Coursera 随机梯度下降和数据加载器 在每个epoch中,使用一个样本进行更新的方法称为随机梯度下降,而使用所有样本进行更新的方法称为批量梯度下降。 随机梯度下降: 随…

第五代数字产业园入驻西安,西安国际数字影像产业园究竟能带来哪些颠覆性变革?

西安,这座承载着千年历史文化底蕴的古老城市,在时代的洪流中不断焕发出新的生机与活力。如今,西安第五代数字产业园入驻西安,犹如一颗璀璨的新星在这片土地上冉冉升起,为这座城市的发展注入了强大的动力。而在这一重大…

AFSim 仿真系统---- 通信、传感器与干扰系统方程

概述 本文档旨在描述在WSF中对象之间交互所使用的方程和算法。这包括: 传感器交互通信交互干扰(干扰)交互 常见无线电频率方程 WSF使用一套通用类来封装涉及无线电频率(RF)交互的组件(实际上&#xff0…

基于B/S模式的JSP二手车交易网站

你好,我是计算机专业的学生,专注于Web开发。希望我的论文能够为您提供一些有价值的信息。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:ECLIPSE、Tomcat 系统展示 首页 用户界面 管理员界面 汽车评…

新加坡服务器延迟大吗?如何进行优化

新加坡服务器延迟大吗?新加坡服务器的延迟通常在全国平均延迟111ms左右,其中移动网络约为90ms,联通网络106ms,电信网络最低约为85ms。为了进行优化,一般可以采取使用CDN、优化路由线路、增加带宽和服务器升级等方法。 …

VBA高级应用30例应用3在Excel中的ListObject对象:创建表

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…

Linux 内核源码分析---简单文件系统

顺序文件 debugfs 文件系统 允许只用几个函数调用,就实现一个双向的调试接口。 小的文件系统中的文件,通常用户层是 从头到尾顺序读取 的,其内容可能是遍历一些数据项创建的。 kprobe 机制包含了到上述 debugfs文件系统 的一个接口。一个顺…

【模电笔记】——集成运算放大电路

tips:本章节的笔记已经打包到word文档里啦,建议大家下载文章顶部资源(有时看不到是在审核中,等等就能下载了。手机端下载后里面的插图可能会乱,建议电脑下载,兼容性更好且易于观看),…

利用学校资源访问scientdirect等国外数据库

就直接点view pdf这样的下载按钮,会让你输入组织,搜索找到学校的名字,接下来可以能会要求输入学校邮箱或者其他身份认证信息,最后就可以享受学校已经出过钱买的服务啦!如果不用那么你每个学期大几千的学费简直是暴殄天…

定制你的项目工作流:最适合的文档管理解决方案

国内外主流的10款项目文档管理软件对比:PingCode、Worktile、Teambition、Tapd、Tower、Confluence、Notion、Dropbox Paper、Quip、Basecamp。 在面对项目管理的复杂性时,选择合适的文档管理工具可以显著提高效率和团队协作。许多团队在文档管理上遭遇混…

灰度宣布推出SUI加密投资信托基金

灰度,这家推出受欢迎的BTC和ETH交易所交易基金(ETF)的投资公司,于8月7日宣布将开始提供两种新的加密基金Grayscale Sui Trust和Grayscale Bittensor Trust,这些基金投资于Layer-1区块链Sui(SUI)…

RTT-网络组件-AT命令-未完成

AT指令文档 调用树 at_client_init();at_client_para_init();client_parser();struct at_client {rt_device_t device;at_status_t status;char end_sign;char *send_buf;/* The maximum supported send cmd length */rt_size_t send_bufsz;/* The length of last cmd */rt_si…

Prometheus+Grafana-2-Linux监控-四种指标类型

一、概念 1.时间序列 安装完成后prometheus会暴露一个/metrics的HTTP服务,默认会加上/metrics,Prometheus就会采集这里面的样本数据。 样本 ​ 样本数据会以时间序列的方式保存在内存数据库中,并且定时保存到硬盘上,时间…

CloudCompare—点云切片

文章目录 一、整体功能展示1、必要参数2、其他选项二、代码实现1、提取平面上的包络线2、将点投影到二维平面上3、提取二维凸包三、算法原理参考资料一、整体功能展示 整个点云切片的步骤如下动图所示: 激活点云后,选择切片功能(小立方盒),在点云视图中显示工具栏框,工具…

Javascript常见算法(每日两个)

合并两个有序链表 在JavaScript中,合并两个有序链表通常指的是将两个已经按照某种顺序(如升序或降序)排列的链表合并成一个新的有序链表。由于JavaScript本身不直接支持链表数据结构,我们通常会用对象或数组来模拟链表的行为。但…

【大模型从入门到精通15】openAI API 构建和评估大型语言模型(LLM)应用3

这里写目录标题 设置评估前的准备工作先决条件获取LLM响应 根据评估标准评估响应构建详细的评估标准评估过程示例评估 设置评估前的准备工作 先决条件 在开始评估过程之前,请确保必要的工具和配置已经到位: import os import openai from dotenv impo…

数据结构课程设计:航班订票系统的设计与实现

目录 1 系统功能及要求 2 系统功能框架 3 详细设计 3.1 录入航班信息模块 3.2 客户订票模块 3.3 客户退票模块 3.4 航班查询模块 3.5 订单查询模块 3.6 航班修改模块 参考文献 1 系统功能及要求 (1)录入信息。可以录入航班信息情况,数据存储在一个数据文件中;可以…

靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解+卷积长短期+注意力多元时间序列预测

靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解卷积长短期注意力多元时间序列预测 目录 靓图!多点创新!CEEMDAN-Kmeans-VMD-CNN-LSTM-Attention双重分解卷积长短期注意力多元时间序列预测效果一览基本介绍程序设计…

了解babel的作用、原理、基本使用,为什么有babel,以及在webpack中的babel-loader

一、为什么有babel? babel是一个工具链,如今大多数的浏览器都支持es6的语法和特性,但难免有些旧版本的浏览器是不支持的,为了兼容这些旧版本的浏览器,有了babel这一个 JavaScript 编译器。它能为我们做一些事情&#…

Linux中针对文件权限的解析

1.文件权限详细解析: -rw-r--r--. 1 root root 114 4月 10 16:32 100.txt 1)-rw-r--r--. 总共11位 第一个“-”和最后一个“.”不用去管,剩下 rw- r-- r-- 属主 属组 其他人 u g o 第一个是“-”表示普通文件 第一个是“d”表示文件目录 …