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

web高可用集群项目(数据库主从同步、文件共享存储、nginx动静分离+负载均衡+高可用)

一、项目环境

二、环境准备

主机名IP地址备注
openEuler-1192.168.121.11主负载调度器
openEuler-2192.168.121.12副负载调度器
openEuler-3192.168.121.13web-1(静态)
openEuler-4192.168.121.14web-2(静态)
openEuler-5192.168.121.15web-3(动态)
openEuler-6192.168.121.16web-4(动态)
openEuler-7192.168.121.17node-1(共享存储)
openEuler-8192.168.121.18node-2(共享存储)
openEuler-9192.168.121.19node-3(共享存储)
openEuler-10192.168.121.20mysql-master
openEuler-11192.168.121.21mysql-slave

注意:该实验环境默认关闭防火墙和SELinux

三、数据库配置

1、安装环境

[root@openEuler-10 ~]# yum install mysql-server -y
[root@openEuler-10 ~]# systemctl enable --now mysqld# 另外两台服务器同理

2、配置主从同步

主库配置:

[root@openEuler-10 ~]# vim /etc/my.cnf
[root@openEuler-10 ~]# tail -n3 /etc/my.cnf
server_id=20
gtid_mode=ON
enforce-gtid-consistency=ON
[root@openEuler-10 ~]# systemctl restart mysqld
[root@openEuler-10 ~]# mysqlmysql> create user rep@'192.168.121.%' identified with mysql_native_password by '123456';
mysql> grant replication slave on *.* to rep@'192.168.121.%';
mysql> flush privileges;

从库配置:

[root@openEuler-11 ~]# vim /etc/my.cnf
[root@openEuler-11 ~]# tail -n3 /etc/my.cnf
server_id=21
gtid_mode=ON
enforce-gtid-consistency=ON
[root@openEuler-11 ~]# systemctl restart mysqld
[root@openEuler-11 ~]# mysqlmysql> change replication source to-> source_host='192.168.121.20',-> source_user='rep',-> source_password='123456',-> source_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.06 sec)mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)mysql> show slave status \G
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.121.20Master_User: repMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000001Read_Master_Log_Pos: 978Relay_Log_File: openEuler-11-relay-bin.000002Relay_Log_Pos: 1188Relay_Master_Log_File: binlog.000001Slave_IO_Running: YesSlave_SQL_Running: Yes...

3、创建库以及授权用户

mysql> create database wordpress;
mysql> create user wp@'%' identified by 'wp123456';
mysql> grant all privileges on wordpress.* to wp@'%';
mysql> flush privileges;# 检查从库中是否同步
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+

四、web服务端配置(动态)

1、安装环境

[root@openEuler-5 ~]# yum install nginx mysql-server php php-mysqlnd -y
[root@openEuler-5 ~]# echo "dynamic test page!" > /usr/share/nginx/html/index.html
[root@openEuler-5 ~]# systemctl enable --now nginx.service

2、PHP和MySQL对接测试

[root@openEuler-5 ~]# vim /usr/share/nginx/html/index.php
<?php
$con = mysqli_connect("192.168.121.20","wp","wp123456");
if ($con)echo '数据库连接成功!';
elseecho '数据库连接失败!';
$con->close();
?>
[root@openEuler-5 ~]# systemctl restart nginx.service

浏览器访问测试:192.168.121.15/mysql_connect.php

3、安装部署wordpress

[root@openEuler-5 ~]# wget -c http://wordpress.org/latest.tar.gz
[root@openEuler-5 ~]# tar -xzf latest.tar.gz -C /usr/share/nginx/html/

接着浏览器访问:http://192.168.121.15/wordpress

若弹出此窗口则按照其提示来完成:

按照提示写入文件:

[root@openEuler-5 ~]# vim /usr/share/nginx/html/wp-config.php

最后创建站点并登录:

4、配置另一个web端

重复步骤1-4。

五、共享存储配置

1、安装环境

[root@openEuler-7 ~]# yum install glusterfs-server -y
[root@openEuler-7 ~]# systemctl enable --now glusterd# 另外两台服务器同理

2、创建存储目录

[root@openEuler-7 ~]# mkdir -p /gluster/brick1# 另外两台服务器同理

3、配置hosts解析

[root@openEuler-7 ~]# vim /etc/hosts
[root@openEuler-7 ~]# tail -n3 /etc/hosts
192.168.121.17 openEuler-7
192.168.121.18 openEuler-8
192.168.121.19 openEuler-9# 另外两台服务器同理

4、配置GlusterFS存储信任池

在其中一个节点上配置:

[root@openEuler-7 ~]# gluster peer probe openEuler-8
peer probe: success
[root@openEuler-7 ~]# gluster peer probe openEuler-9
peer probe: success# 查看信任池状态
[root@openEuler-7 ~]# gluster peer status
Number of Peers: 2Hostname: openEuler-8
Uuid: 6c17b306-413f-4f1c-a5f5-90f43104eda6
State: Peer in Cluster (Connected)Hostname: openEuler-9
Uuid: b6c8b385-daf8-476b-8207-fafe8b9119eb
State: Peer in Cluster (Connected)# 查看信任池列表
[root@openEuler-7 ~]# gluster pool list
UUID                                    Hostname        State
6c17b306-413f-4f1c-a5f5-90f43104eda6    openEuler-8     Connected
b6c8b385-daf8-476b-8207-fafe8b9119eb    openEuler-9     Connected
20d6bdce-a81f-4f69-82a6-9a5b224dba4e    localhost       Connected

5、创建web卷

[root@openEuler-7 ~]# gluster volume create web_vol replica 2 arbiter 1 \
openEuler-7:/gluster/brick1 \
openEuler-8:/gluster/brick1 \
openEuler-9:/gluster/brick1 \
force[root@openEuler-7 ~]# gluster volume start web_vol
volume start: web_vol: success
[root@openEuler-7 ~]# gluster volume info web_volVolume Name: web_vol
Type: Replicate
Volume ID: 3db1b974-bc4c-45c4-84bb-381107dd612b
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: openEuler-7:/gluster/brick1
Brick2: openEuler-8:/gluster/brick1
Brick3: openEuler-9:/gluster/brick1 (arbiter)
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

六、web服务端配置(静态)

1、安装环境

[root@openEuler-3 ~]# yum install glusterfs-fuse nginx -y
[root@openEuler-3 ~]# echo "static test page!" > /usr/share/nginx/html/index.html
[root@openEuler-3 ~]# systemctl enable --now nginx.service# 另一台服务器同理

2、挂载目录

# 备份原来的根目录数据(后续另一个web服务配置时不需要备份)
[root@openEuler-3 ~]# cd /usr/share/nginx/
[root@openEuler-3 nginx]# ls
html  modules
[root@openEuler-3 nginx]# cp -r html{,.bak}# 配置hosts解析
[root@openEuler-3 nginx]# vim /etc/hosts
[root@openEuler-3 nginx]# tail -n3 /etc/hosts
192.168.121.17 openEuler-7
192.168.121.18 openEuler-8
192.168.121.19 openEuler-9# 高可用挂载(节点故障自动转移)
[root@openEuler-3 nginx]# mount -t glusterfs openEuler-7,openEuler-8,openEuler-9:/web_vol  ./html/# 还原数据
[root@openEuler-3 nginx]# mv html.bak/* html/
[root@openEuler-3 nginx]# tree html
html
├── 404.html
├── 50x.html
├── index.html
└── nginx-logo.png

3、配置另一个web端

重复步骤1-3。

4、编写静态网页测试

# 在其中一台web服务器编写
[root@openEuler-3 nginx]# cd html/
[root@openEuler-3 html]# echo "web test1 page" > test1.html
[root@openEuler-3 html]# echo "web test2 page" > test2.html
[root@openEuler-3 html]# echo "web test3 page" > test3.html
[root@openEuler-3 html]# echo "web test4 page" > test4.html
[root@openEuler-3 html]# echo "web test5 page" > test5.html# 查看另一个web
[root@openEuler-4 html]# ls
404.html  index.html      test1.html  test3.html  test5.html
50x.html  nginx-logo.png  test2.html  test4.html

七、负载均衡器配置

1、安装环境

[root@openEuler-1 ~]# yum install nginx keepalived -y# 设置开机自启
[root@openEuler-1 ~]# systemctl enable --now nginx.service
[root@openEuler-1 ~]# systemctl enable --now keepalived.service

2、配置负载均衡(虚拟主机+动静分离)

[root@openEuler-1 ~]# vim /etc/nginx/conf.d/lb.conf
upstream static_webs {server 192.168.121.13:80;server 192.168.121.14:80;}upstream dynamic_webs {ip_hash;server 192.168.121.15:80;server 192.168.121.16:80;
}server {listen 80;server_name static.yunjisuan.com;location / {proxy_pass http://static_webs;# proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}
}server {listen 80;server_name dynamic.yunjisuan.com;location / {proxy_pass http://dynamic_webs;# proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}
}# 另一台负载调度器同理

3、创建web服务检查脚本

[root@openEuler-1 ~]# mkdir /script/
[root@openEuler-1 ~]# vim /script/check_ngx.sh
#!/bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]
thensystemctl start nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ]thensystemctl stop keepalivedfi
fi
[root@openEuler-1 ~]# chmod +x /script/check_ngx.sh# 另一台负载调度器同理

4、配置keepalived实现高可用

# [root@openEuler-1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id 11
}vrrp_script check_nginx {script "/script/check_ngx.sh"interval 1
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_nginx}virtual_ipaddress {192.168.121.10}
}# 另一台配置,稍作修改
[root@openEuler-2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id 12
}vrrp_script check_nginx {script "/script/check_ngx.sh"interval 1
}vrrp_instance VI_1 {state SLAVEinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {check_nginx}virtual_ipaddress {192.168.121.10}
}# 重启服务
[root@openEuler-1 ~]# systemctl restart keepalived.service
[root@openEuler-2 ~]# systemctl restart keepalived.service

八、测试

测试主机上配置hosts解析:

192.168.121.10 static.yunjisuan.com dynamic.yunjisuan.com

1、测试访问静态页面

多访问几次,查看静态web服务器的日志:

可以看到是轮询的访问两台静态web服务器。

2、测试访问动态页面

多访问几次,查看动态web服务器的日志(这里采用动态查看日志,访问前通过空格隔开):

可以看到只访问了其中一台动态web端,因为采用的是哈希算法。

访问wordpress:

3、模拟后端web端节点故障

用户仍然可以通过另一台服务器进行访问。

4、模拟负载调度器节点故障

nginx故障:

由于配置了脚本检查,当nginx服务停止后会尝试重启。

测试在配置文件中加入未知字符,使其不能重启时:

可以看到vip进行了漂移,去到了备用的服务器上。

keepalived故障同理。

相关文章:

web高可用集群项目(数据库主从同步、文件共享存储、nginx动静分离+负载均衡+高可用)

一、项目环境 二、环境准备 主机名IP地址备注openEuler-1192.168.121.11主负载调度器openEuler-2192.168.121.12副负载调度器openEuler-3192.168.121.13web-1&#xff08;静态&#xff09;openEuler-4192.168.121.14web-2&#xff08;静态&#xff09;openEuler-5192.168.121.…...

如何快速上手RabbitMQ 笔记250304

如何快速上手RabbitMQ 要快速上手 RabbitMQ&#xff0c;可以按照以下步骤进行&#xff0c;从安装到基本使用逐步掌握核心概念和操作&#xff1a; 1. 理解核心概念 Producer&#xff08;生产者&#xff09;&#xff1a;发送消息的程序。Consumer&#xff08;消费者&#xff09…...

PPT小黑第26套

对应大猫28 层次级别是错的&#xff0c;看着是十页&#xff0c;导入ppt之后四十多页 选中所有 红色蓝色黑色 文本选择标题&#xff1a;选择 -格式相似文本&#xff08;检查有没有漏选 漏选的话 按住ctrl 点下一个&#xff09; 要求新建幻灯片中不包含原素材中的任何格式&…...

甘特图开发代码(测试版)

场景&#xff1a;要实现的功能就是单行数据能左右拖动。 流程五个&#xff1a;ABCDE。&#xff08;对应&#xff1a;Charter开发、概念和计划、初样开发、正样开发、验证&#xff09; 1、A有开始时间&#xff0c;结束时间。B的开始时间必须是A的结束时间&#xff08;相等或者…...

鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 目录 技术融合背景与价值鸿蒙分布式架构解析DeepSeek技术体系剖析核心整合架构设计智能调度系统实现…...

Docker Desktop常见问题记录

1.docker pull报错&#xff0c;无法连接https://registry-1.docker.io/v2/ 报错信息如下&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection(Client.Timeout exceeded …...

Qt 的 Lambda 捕获局部变量导致 UI 更新异常的分析与解决

1. 问题描述 在 Qt 开发中,我们通常会使用 QTimer 进行周期性 UI 更新。例如,下面的代码用于在检测游戏窗口时,在 UI 界面上显示动态变化的“正在检测游戏窗口...”的文本,每 300 毫秒更新一次。 void MainWindow::detectAndPopulateGameList() {ui->game_record_stac…...

RAGflow采用docker-compose-continuous方式pull,把服务器充满了

采用docker-compose-continuous在后台下载&#xff0c;导致服务器被充满。 原因分析&#xff1a; 如果网络不稳定&#xff0c;可能导致下载任务异常中断&#xff0c;而 systemd 服务会不断重启并重新下载&#xff0c;从而占用大量空间。如果网络问题无法解决&#xff0c;可以…...

【第12节】C++设计模式(结构型模式)-Proxy(代理)模式

一、问题背景 使用 Proxy 模式优化对象访问 在某些情况下&#xff0c;直接访问对象可能会导致性能问题或安全性问题。Proxy 模式&#xff08;代理模式&#xff09;通过引入一个代理对象来控制对原始对象的访问&#xff0c;从而解决这些问题。以下是几种典型的应用场景&#xf…...

【C++】vector(上):vector的常用接口介绍

文章目录 前言一、vector的介绍二、vector的常用接口介绍1.vector类对象的常见构造2.vector iterator 的使用3.vector类对象的容量操作3.1 size、capacity 和 empty的使用3.2 reserve的使用3.3 resize的使用 4.vector类对象的访问&#xff08;包含data&#xff1a;返回底层数组…...

【详细讲解在STM32的UART通信中使用DMA机制】

详细讲解在STM32的UART通信中使用DMA机制 目录 详细讲解在STM32的UART通信中使用DMA机制一、DMA机制概述二、DMA在UART中的作用三、DMA的配置步骤四、UART初始化与DMA结合五、DMA传输的中断处理六、DMA与中断的结合使用七、注意事项与常见问题八、代码示例九、总结 一、DMA机制…...

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

快速生成viso流程图图片形式

我们在写详细设计文档的过程中总会不可避免的涉及到时序图或者流程图的绘制&#xff0c;viso这个软件大部分技术人员都会使用&#xff0c;但是想要画的好看&#xff0c;画的科学还是比较难的&#xff0c;现在我总结一套比较好的方法可以生成好看科学的viso图(图片格式)。主要思…...

设备管理系统功能与.NET+VUE(IVIEW)技术实现

在现代工业和商业环境中&#xff0c;设备管理系统&#xff08;Equipment Management System&#xff0c;简称EMS&#xff09;是确保设备高效运行和维护的关键工具。本文采用多租户设计的设备管理系统&#xff0c;基于.NET后端和VUE前端&#xff08;使用IVIEW UI框架&#xff09…...

《深度学习实战》第11集:AI大模型压缩与加速

深度学习实战 | 第11集&#xff1a;AI大模型压缩与加速 在深度学习领域&#xff0c;随着模型规模的不断增大&#xff0c;模型的推理速度和部署效率成为实际应用中的关键挑战。本篇博客将带你深入了解模型压缩与加速的核心技术&#xff0c;并通过一个实战项目展示如何使用知识蒸…...

【大模型安全】大模型的技术风险

【大模型安全】大模型的技术风险 1.DDoS攻击2.常见的传统网络攻击方式3.恶意意图的识别4.AI生成虚假信息传播5.利用AI进行黑客攻击6.模型对抗攻击7.后门攻击8.Prompt攻击9.数据投毒攻击10.模型窃取攻击11.数据窃取攻击 1.DDoS攻击 2023年11月9日凌晨&#xff0c;OpenAI在官网公…...

git命令学习记录

1. git reset 参数说明 git reset 是用来回退版本的&#xff0c;它可以添加三个参数&#xff0c;常用的使用格式是这样的&#xff1a;git reset [--hard | --soft | --mixed] 版本号 一般使用git修改文件并提交需要三步&#xff0c;第一步在文本编辑器中编辑文件&#xff0c;也…...

Gartner:数据安全平台DSP提升数据流转及使用安全

2025 年 1 月 7 日&#xff0c;Gartner 发布“China Context&#xff1a;Market Guide for Data Security Platforms”&#xff08;《数据安全平台市场指南——中国篇》&#xff0c;以下简称指南&#xff09;&#xff0c;报告主要聚焦中国数据安全平台&#xff08;Data Securit…...

结构型模式---享元模式

概念 享元模式是一种结构型设计模式&#xff0c;他摒弃了在每个对象中保存所有数据的方式&#xff0c;通过共享多个对象所共有的相同状态&#xff0c;让你能在有限的内存容量中载入更多对象。享元模式将原始类中的数据分为内在状态数据和外在状态数据。 内在状态&#xff1a;就…...

一学就会:A*算法详细介绍(Python)

&#x1f4e2;本篇文章是博主人工智能学习以及算法研究时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在&am…...

【Elasticsearch】Elasticsearch 中使用 HDFS 存储快照

在 Elasticsearch 中使用 HDFS 存储快照的步骤如下&#xff1a; 1.安装 HDFS 插件 要使用 HDFS 存储 Elasticsearch 的索引快照&#xff0c;需要在 Elasticsearch 集群的所有节点上安装 HDFS 插件。 • 在线安装&#xff1a;适用于网络环境良好的场景&#xff0c;执行以下命…...

【每日十题系列】前端面试高频题目

以下是作为前端面试官常用的10道手撕代码题目&#xff0c;涵盖JavaScript核心、CSS、算法及框架原理&#xff0c;结合高频考点与实际开发场景设计&#xff1a; 1. 手写防抖&#xff08;debounce&#xff09;与节流&#xff08;throttle&#xff09; 要求&#xff1a;实现防抖函…...

Kafka 消息 0 丢失的最佳实践

文章目录 Kafka 消息 0 丢失的最佳实践生产者端的最佳实践使用带有回调的 producer.send(msg, callback) 方法设置 acks all设置 retries 为一个较大的值启用幂等性与事务&#xff08;Kafka 0.11&#xff09;正确关闭生产者与 flush() 方法 Broker 端的最佳实践设置 unclean.l…...

学网络安全报班可靠吗?

在当今社会&#xff0c;网络安全已经成为我们工作和生活中不可忽视的重要部分&#xff0c;而且市场上各大企业对网络安全人才的需求量非常之大&#xff0c;因此网络安全培训班应运而生&#xff0c;那么学网络安全报培训班靠谱吗?这是很多小伙伴都关心的问题&#xff0c;我们来…...

LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)

【LetMeFly】1745.分割回文串 IV&#xff1a;动态规划&#xff08;用III或II能直接秒&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-iv/ 给你一个字符串 s &#xff0c;如果可以将它分割成三个 非空 回文子字符串&#xff0c;…...

4 Redis4 List命令类型讲解

Redis 列表&#xff08;List&#xff09;命令详解 1. Redis 列表&#xff08;List&#xff09;简介 Redis 列表&#xff08;List&#xff09;是一个简单的字符串列表&#xff0c;按照插入顺序排序。它可以用作 栈&#xff08;Stack&#xff09; 和 队列&#xff08;Queue&…...

鬼泣:项目前置设置杂项

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 插件niagara ui render&#xff1a;在 UI 中渲染 Niagara 特效skeletal editor&#xff1a;编辑骨骼&#xff0c;调整骨骼动画motion warping&#xff1a;根据目标自动调整角色动画。animation warping&#xff1a;…...

MyBatis-Plus 条件构造器的使用(左匹配查询)

在上一篇文章中&#xff0c;我们已经介绍了 MyBatis-Plus 条件构造器&#xff0c;包括 QueryWrapper 和 UpdateWrapper 的基本使用方法、常见查询条件&#xff08;如等于、不等于、大于、小于&#xff09;以及如何使用 Lambda 表达式来构建动态查询和更新条件。 在本文中&…...

#define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))

这个宏 #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) 是用来在 C++ 中标记某些函数、变量或者代码元素为已弃用(deprecated)的,并附带一个自定义的弃用消息。 具体解释: __declspec(deprecated(msg)): __declspec 是 Microsoft Visual C++ (MSVC) 的扩展…...

Vue输入框获取焦点

1. 元素未渲染完成 如果你在组件挂载或数据更新后立即调用 focus()&#xff0c;可能元素还未渲染到 DOM 中&#xff0c;导致 focus() 失效。 解决方法&#xff1a;确保在元素渲染完成后再调用 focus()。可以使用 nextTick 确保 DOM 更新完成。 2. ref 未正确绑定 确保 ref 正确…...

辛格迪客户案例 | 深圳善康医药科技GMP培训管理(TMS)项目

01 善康医药&#xff1a;创新药领域的探索者 深圳善康医药科技股份有限公司自2017年创立以来&#xff0c;便扎根于创新药研发领域&#xff0c;专注于成瘾治疗药物的研究、生产与销售。公司坐落于深圳&#xff0c;凭借自身独特的技术优势与研发实力&#xff0c;在行业内逐渐崭露…...

迷你世界脚本出生点接口:Spawnport

出生点接口&#xff1a;Spawnport 彼得兔 更新时间: 2023-04-26 10:19:56 具体函数名及描述如下: 序号 函数名 函数描述 1 getSpawnPoint(...) 获取默认出生点 2 setSpawnPoint(...) 设置出生点位置 3 getChunkValidSpawnPos(...) 获取区块有效刷新点…...

Android车机DIY开发之软件篇(二十)立创泰山派android编译

准备工作 sudo apt-get update sudo apt-get install git -y sudo apt install repo -ysudo apt-get install python2.7sudo apt-get install python3sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /u…...

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…...

Libgdx游戏开发系列教程(6)——游戏暂停

目录 最初方案1 优化方案2 - 事件拦截器监听按键 优化方案3 - 暂停状态重绘 优化方案4 优化方案5 补充 - 监听android手机的返回键 暂停也是一个游戏的必要功能了,本文研究了Libgdx实现游戏暂停 例子以桌面端游戏实现讲解为主,至于移动端,可能之后会进行补充... 本文最…...

车载测试:智能座舱测试中多屏联动与语音交互的挑战

智能座舱作为汽车智能化发展的核心&#xff0c;集成了多屏联动和语音交互功能&#xff0c;为驾驶员和乘客提供更便捷的体验。然而&#xff0c;这些功能的测试面临诸多挑战&#xff0c;包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战&#xff0c;探讨测试方…...

【踩坑随笔】`npm list axios echarts`查看npm依赖包报错

npm list axios echarts查看npm依赖包出现以下报错&#xff0c;原因就是包的版本匹配问题&#xff0c;按照提示降axios版本或者自己升找合适的got版本&#xff0c;我这里是选择了降版本。本文记录仅做解决思路参考不一定适配大家的实际情况。 weed-detection-system1.0.0 E:\P…...

用于管理 Elasticsearch Serverless 项目的 AI Agent

作者&#xff1a;来自 Elastic Fram Souza 由自然语言驱动的 AI 代理&#xff0c;可轻松管理 Elasticsearch Serverless 项目 - 支持项目创建、删除和状态检查。 这个小型命令行工具让你可以用简单的英语管理你的无服务器 Elasticsearch 项目。它通过AI&#xff08;这里是 Ope…...

【文生图】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 带图片的详细功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…...

STaR(Self-Taught Reasoner)方法:让语言模型自学推理能力(代码实现)

STaR&#xff08;Self-Taught Reasoner&#xff09;方法&#xff1a;让语言模型自学推理能力 在大型语言模型&#xff08;LLM&#xff09;的推理能力优化中&#xff0c;STaR&#xff08;Self-Taught Reasoner&#xff09; 是一种引人注目的技术&#xff0c;属于“修改提议分布…...

十大经典排序算法简介

一 概述 本文对十大经典排序算法做简要的总结(按常用分类方式排列),包含核心思想、时间/空间复杂度及特点。 二、比较类排序 1. 冒泡排序 (BUBBLE SORT) 思想:重复交换相邻逆序元素,像气泡上浮 复杂度: 时间:O(n^2)(最好情况O(n)) 空间:O(1) 特点:简单但效率低,稳…...

5.训练策略:优化深度学习训练过程的实践指南——大模型开发深度学习理论基础

在实际开发中&#xff0c;训练策略对神经网络的表现起着至关重要的作用。通过合理的训练策略&#xff0c;我们可以有效避免过拟合和欠拟合&#xff0c;加速模型收敛&#xff0c;并提升最终性能。本文将从实际开发角度详细介绍几种关键的训练策略&#xff0c;包括 Early Stoppin…...

道可云人工智能每日资讯|《奇遇三星堆》VR沉浸探索展(淮安站)开展

道可云元宇宙每日简报&#xff08;2025年3月5日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 《奇遇三星堆》VR沉浸探索展&#xff08;淮安站&#xff09;开展 近日&#xff0c;《奇遇三星堆》VR沉浸探索展&#xff08;淮安站&#xff09;开展。该展将三星堆文…...

Camera相关配置

一、 Purpose目的 通常&#xff0c; 感知模块使用雷达点云和相机图像来对物体进行检测和分类&#xff0c;感知数据分别来自雷达和相机&#xff0c;就传感器数据融合准确性&#xff0c;我们需要雷达和相机同一时间捕捉到同一物体(时间间隔尽可能短)&#xff0c;否则一个真实的物…...

PHP Error处理指南

PHP Error处理指南 引言 在PHP开发过程中,错误处理是一个至关重要的环节。正确的错误处理不仅能够提高代码的健壮性,还能提升用户体验。本文将详细介绍PHP中常见的错误类型、错误处理机制以及最佳实践,帮助开发者更好地应对和处理PHP错误。 PHP错误类型 在PHP中,错误主…...

【Pandas】pandas Series argmax

Pandas2.2 Series Computations descriptive stats 方法描述Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法Series.argmax([axis, skipna])用于返回 Series…...

Gitlab配置personal access token

1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token &#xff0c;输入token名称&#xff0c;勾选权限&#xff08;注意截至日期 “Expiration date” 可不填&#xff09; 4. 创建成功后&#xff0c;显示token信息&#xff0c;复制到本地…...

【MySQL、Oracle、SQLserver、postgresql】查询多条数据合并成一行

四大数据库多行合并为单行&#xff1a;函数详解与对比 一、MySQL**GROUP_CONCAT()** 函数说明&#xff1a;语法结构&#xff1a;参数解释&#xff1a;示例&#xff1a;注意事项&#xff1a; 二、Oracle**LISTAGG()** 函数说明&#xff1a;语法结构&#xff1a;参数解释&#xf…...

人机交互进化论:解码智能手机81种交互方式背后的用户体验革命

人机交互进化论&#xff1a;解码智能手机81种交互方式背后的用户体验革命 2023年艾瑞咨询报告显示&#xff1a;中国智能手机用户日均触屏交互超2500次&#xff0c;解锁屏幕达76次/天。在这看似简单的点击与滑动背后&#xff0c;隐藏着一场持续演进的人机交互革命。本文将深度解…...

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台

OCPP扩展机制与自定义功能开发&#xff1a;协议灵活性设计与实践 引言 OCPP作为开放协议&#xff0c;其核心价值在于平衡标准化与可扩展性。面对不同充电桩厂商的硬件差异、区域能源政策及定制化业务需求&#xff0c;OCPP通过**扩展点&#xff08;Extension Points&#xff09…...