部署Discuz论坛项目

DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。

安装MySQL数据库5.7
主机名IP地址操作系统硬件配置
discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory

修改主机名用来自己识别

hostnamectl set-hostname discuz-db
#重连远程更新或使用bash命令启动一个新的交互式的命令行界面

下载 MySQL 仓库

rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

导入 GPG 密钥文件

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

安装 MySQL 软件包

yum install mysql-server -y

启动 MySQL 程序

systemctl enable mysqld --now

查看 MySQLroot 初始密码

grep -i password /var/log/mysqld.log

通过初始密码登录到数据库

 mysql -uroot -p'密码'

修改密码复杂度策略(即不验证复杂度)

mysql> SET GLOBAL validate_password_policy=LOW;

修改密码长度(用来短位数密码方便学习使用)

mysql> SET GLOBAL validate_password_length=4;

设置 root 本机登录密码(长度须满足8位)

mysql> alter user root@"localhost" identified by "1234";

退出数据库

mysql> exit

修改 /etc/my.cnf 文件,在文件中定义密码策略,让策略永久生效

vim /etc/my.cnf#最后一行新增如下代码
validate_password_policy=0
#设置字符集支持中文
character-set-server=utf8

重启 MySQL 使配置生效

systemctl restart mysqld

登录数据库授权 root 账号可以远程登录,后边需要测试 PHP 与数据库的连接

mysql -uroot -p1234
#创建一个root用户用来远程访问用,这个root和登录本机登录数据库的root不是同一个哈,现在创建成功后数据库就有两个root用户拉。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'admin123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123456';
mysql> FLUSH PRIVILEGES;

创建对应的 discuz

mysql> create database discuz;

退出数据库

mysql> exit
安装Nginx web服务
主机名IP地址操作系统硬件配置
discuz01192.168.226.129CentOS 72 Core/4G Memory
discuz02192.168.226.130CentOS 72 Core/4G Memory

Nginx版本分为 Mainline (开发版本)、Stable (最新稳定版)和Legacy (旧的稳定版)。

修改主机名(记得初始化脚本对虚拟机初始设置)

#对192.168.226.129操作
hostnamectl set-hostname discuz01
#对192.168.226.130操作
hostnamectl set-hostname discuz02

准备 Nginx 稳定版仓库,仓库地址:https://nginx.org/en/linux_packages.html#RHEL

提示:在 discuz01discuz02 主机安装

vim /etc/yum.repos.d/nginx.repo[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装 Nginx 软件包

yum install nginx-1.20.2 -y

Nginx常用相关文件

/etc/nginx/nginx.conf #Nginx主配置文件

/usr/share/nginx/html #Nginx网页目录

/var/log/nginx/error.log #Nginx错误日志文件

/var/log/nginx/access.log #Nginx访问日志文件

/etc/nginx/conf.d/ #虚拟web主机目录

安装PHP相关软件

php #是php代码的解释器
php-fpm #管理php进程接收请求
php-mysql #与MySQL集成,连接MySQL数据库并进行增删改查
php-gd #帮助php处理图片的扩展,如生成图片、裁剪图片、缩放图片等

提示:在 discuz01discuz02 主机安装

yum install php php-fpm php-mysql php-gd -y

修改配置文件:/etc/php-fpm.d/www.conf,指定PHP程序运行时的用户与组,并开启PHP状态页面用于监控服务状态。

vim /etc/php-fpm.d/www.conf 
#...#指定PHP程序运行时的用户和组为Nginx
#在第39行
user = nginx
#在第41行
group = nginx#在第121行,取消 ;号注释,开启PHP状态页面,并改名为/php_status
pm.status_path = /php_status

修改配置文件指定php时区:/etc/php.ini

vim /etc/php.ini +878
#...#在第878行取消注释,并修改PHP时区
date.timezone ="Asia/shanghai"

修改 Nginx 虚拟web主机配置文件,定义网站信息:/etc/nginx/conf.d/

#清空该路径默认文件
rm -rf /etc/nginx/conf.d/*
vim /etc/nginx/conf.d/discuz.confserver {listen       80;server_name  localhost;#开启nginx状态页面location = /status {    stub_status;}location / {root   /usr/share/nginx/html;index  index.php index.html index.htm;  }#配置nginx连接phplocation ~ \.php$ {root           /usr/share/nginx/html; fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}#开启php页面location /php_status {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;include        fastcgi_params;}
}

启动 NginxPHP

systemctl start nginx php-fpm
systemctl enable nginx php-fpm

测试 NginxPHP 之间的连接

vim /usr/share/nginx/html/phpinfo.php<?php
phpinfo();
?>

重启Nginx和PHP

systemctl restart nginx php-fpm

访问页面测试(你需要改成你的IP):访问正确页面则会显示php默认页面

http://192.168.226.129/phpinfo.php

http://192.168.226.130/phpinfo.php

测试 PHPMySQL 之间的连接

vim /usr/share/nginx/html/mysql.php 
#这里面的ip要修改成你配数据库的虚拟机的ip,root密码就是添加的一个root用户的admin123456的密码
#在数据库哪里新增创建拉一个root专门用来远程访问的,这里迷惑拉去看数据库那
<?php
$con=mysql_connect("192.168.226.128","root","admin123456");
if(!$con){die("could not connect to the db:\n".mysql_error());
}
else{echo "success";
}
mysql_close($con);
?>

访问页面测试:正确页面会显示 success

http://192.168.226.129/mysql.php

http://192.168.226.130/mysql.php

上线Discuz论坛项目

discuz01 主机切换到Nginx网页目录并删除自带的页面文件

cd /usr/share/nginx/html/
rm -rf *

自行将项目源码包上传

下载解压工具

yum -y install zip unzip

解压项目到网页目录

unzip Discuz_X3.3_SC_UTF8.zip 

upload 下的页面文件移动到至当前 html 目录

mv upload/* .

修改项目文件权限,确保 Nginx 用户对所有项目文件具备完全权限

chown -R nginx.nginx .

访问Discuz:

http://192.168.226.129/

http://192.168.226.130/

两个ip都能看到如下页面就表示成功

如下页面安装只针对一台机器操作,这里我对discuz01操作安装。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

discuz01 主机的 html 目录同步给 discuz02 主机(此时项目中已经包含了连接数据库的相关信息)

[root@discuz01 ~]# scp -r /usr/share/nginx/html 192.168.226.130:/usr/share/nginx/

discuz02 主机修改 html 目录下项目文件权限

[root@discuz02 ~]# cd /usr/share/nginx/html/
[root@discuz02 html]# chown -R nginx.nginx .

访问 discuz02 测试:http://192.168.226.130/

上面我只对discuz01安装拉这个项目,而discuz02没有安装,将主机discuz01的html目录拷贝到discuz02,现在主机discuz02

没有安装也可以访问到项目网页,这样就完成拉集群操作,同理,可以部署更多的服务主机用不同的主机都可以访问同一个网站。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Redis为论坛提供缓存

通过 Redis 缓存数据库将论坛数据存储在内存中,使其能够处理高并发的读写操作,每秒可以执行高达数十万次的读写操作,来提高论坛的性能。

discuz-db 主机安装Redis数据库

[root@discuz-db ~]# yum install redis -y

Redis 默认只允许本地访问,需要修改 Redis 配置文件允许远程访问

[root@discuz-db ~]# vim /etc/redis.conf +61#查找 bind 127.0.0.1 这一行修改为0.0.0.0 监听所有接口。如下所示:
bind 0.0.0.0

启动 Redis 服务

[root@discuz-db ~]# systemctl start redis
[root@discuz-db ~]# systemctl enable redis

Discuz 中检查是否支持 Redis

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

默认不支持 Redis 缓存,Discuzphp 语言开发,如需通过 Redis提供缓存,需要安装 php 连接 Redis 的扩展模块。

discuz01和discuz02 主机安装 php-pecl-redis 扩展模块

yum -y install php-pecl-redis

两台都重启 php-fpm 并检查是否支持 redis

systemctl restart php-fpm
php -m | grep redis

再次刷新Discuz页面检查是否支持Redis

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是现在 DiscuzRedis 之间还没有建立连接,接下来配置Discuz连接 Redis

discuz01discuz02 主机修改文件:/usr/share/nginx/html/config/config_global.php

vim /usr/share/nginx/html/config/config_global.php +19
#...#指定Redis服务器地址
$_config['memory']['redis']['server'] = '192.168.226.128'; 

再次刷新页面可看到Discuz已经成功与Redis连接,并且已经利用Redis存储了数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Nginx为Discuz实现负载均衡

负载均衡通过分散流量到多台服务器,避免单一服务器负载过重,提高系统性能和响应速度

配置多个负载均衡节点,当其中一个节点发生故障,其他节点可以接管其工作,避免业务中断。

主机名IP地址操作系统硬件配置
master-proxy192.168.226.131CentOS 72 Core/4G Memory
backup-proxy192.168.226.132CentOS 72Core/4G Memory

再准备两台虚拟机分别修改主机名修改主机名

#对192.168.226.131操作
hostnamectl set-hostname master-proxy
#对192.168.226.132操作
hostnamectl set-hostname backup-proxy

两台机器安装 Nginx 软件包

vim /etc/yum.repos.d/nginx.repo[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
yum install nginx-1.20.2 -y

创建 Nginx 代理配置文件,实现代理功能

rm -rf /etc/nginx/conf.d/*
vim /etc/nginx/conf.d/proxy.confupstream web {server 192.168.226.129:80;   #这里你要修改成discuz01的IP 注意改成你的server 192.168.226.130:80;   #这里改成discuz02的IP
}server {listen       80;server_name  web.discuz.com;#开启nginx状态页面location = /status {    stub_status;}location / {proxy_pass http://web;}location ~ .* {proxy_pass http://web;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

两台代理主机都启动 Nginx 程序

systemctl start nginx
systemctl enable nginx

访问两台代理测试:

http://192.168.226.131/

http://192.168.226.132/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Keepalived为Nginx实现高可用

通过 keepalivedNginx 代理实现高可用,当其中一个代理节点发生故障,keepalived 可以实现故障自动切换,避免业务中断。

在两台代理节点安装 keepalived 软件包

yum install keepalived -y

master-proxy 主机修改 keepalived 配置文件

vim /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {router_id LVS_DEVEL
script_user rootenable_script_security
}
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 5weight -5fall 2
rise 1
}
vrrp_instance VI_1 {state MASTER               interface ens33      #这里的ens33是我的网卡,你要注意你的网卡是什么,再修改         virtual_router_id 51priority 101          #这里是优先级 和备用代理节点的优先级数字不能一样    advert_int 2authentication {auth_type PASSauth_pass abc123}virtual_ipaddress {192.168.226.111/24    #这个虚拟IP自定义,但需要在同一个网段并没有占用的IP }track_script {chk_nginx        }
}

backup-proxy 主机修改keepalived配置文件

vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived
global_defs {router_id LVS_DEVEL
script_user rootenable_script_security
}
vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 5weight -5fall 2
rise 1
}
vrrp_instance VI_1 {state BACKUP               interface ens33       #这里的ens33是我的网卡,你要注意你的网卡是什么,再修改         virtual_router_id 51priority 99             #这里是优先级 和主代理机的优先级数字不能一样   advert_int 2authentication {auth_type PASSauth_pass abc123}virtual_ipaddress {192.168.226.111/24   #这个虚拟IP自定义,但需要在同一个网段并没有占用的IP}track_script {chk_nginx        }
}

keepalived的配置文件详解

#定义一个自定义脚本,名称为chk_nginx
vrrp_script chk_nginx {#脚本所在的路径及名称script "/etc/keepalived/check_nginx.sh"#监控检查的时间间隔,单位秒interval 5#健康检查的次数,连续2次健康检查失败,服务器将被标记为不健康fall 2#连续健康检查成功的次数,有1次健康检查成功,服务器将被标记为健康rise 1
}#配置了一个名为VI_1VRRP实例组
vrrp_instance VI_1 {#该节点在VRRP组中的身份,Master节点负责处理请求并拥有虚拟IP地址state MASTER#实例绑定的网络接口,实例通过这个网络接口与其他VRRP节点通信,以及虚拟IP地址的绑定interface ens32#虚拟的路由ID,范围1255之间的整数,用于在一个网络中区分不同的VRRP实例组,但是在同一个VRRP组中的节点,该ID要保持一致virtual_router_id 51#实例的优先级,范围1254之间的整数,用于决定在同一个VRRP组中哪个节点将成为Master节点,数字越大优先级越>高priority 101#Master节点广播VRRP报文的时间间隔,用于通知其他Backup节点Master节点的存在和状态,在同一个VRRP组中,所有>节点的advert_int参数值必须相同advert_int 2#实例之间通信的身份验证机制authentication {#PASS为密码验证auth_type PASS#此密码必须为18个字符,在同一个VRRP组中,所有节点必须使用相同的密码,以确保正确的身份验证和通信auth_pass abc123}#定义虚拟IP地址virtual_ipaddress {192.168.0.111/24      }#引用自定义脚本,名称与上方vrrp_script中定义的名称保持一致track_script {chk_nginx}
}

在两台主机的 /etc/keepalived/ 目录准备 check_nginx.sh 脚本

vim /etc/keepalived/check_nginx.sh#!/bin/bash
conut=`ps -C nginx | grep -v PID | wc -l`
if [ $conut -eq 0 ];thensystemctl stop keepalived
fi

为脚本添加执行权限

chmod +x /etc/keepalived/check_nginx.sh

两台主机启动 keepalived 服务

systemctl start keepalived
systemctl enable keepalived

master-proxy 主机查看 keepalived 虚拟IP地址

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 #本机IPinet 192.168.226.131/24 brd 192.168.226.255 #keepalived虚拟IPinet 192.168.226.111/24 scope global secondary ens33

windows 的 hosts 文件中配置本地解析:C:\Windows\System32\drivers\etc\hosts

注:建议用记事本的管理员身份运行去修改这个配置文件,普通身份可能会失败

192.168.226.111 web.discuz.com

访问域名测试:http://web.discuz.com/

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

测试备用代理,当主代理的Nginx挂掉,Keepalived会将使用备用代理

将master-proxy主机关闭nginx,观察备用代理的IP

#关闭nginx服务
systemctl stop nginx   
#查看keepalived  正常是同时关闭拉
systemctl status keepalived    

在备用代理backup-proxy查看IP

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 #本机IPinet 192.168.226.132/24 brd 192.168.226.255 #keepalived虚拟IPinet 192.168.226.111/24 scope global secondary ens33 ~]# ip a
#可以看到虚拟IP现在成功切换到拉备用代理主机上拉

现在再切换回master-proxy主机开启nginx和keepalived并查看master-proxy的IP

systemctl start nginx keepalived[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 #本机IPinet 192.168.226.131/24 brd 192.168.226.255 #keepalived虚拟IPinet 192.168.226.111/24 scope global secondary ens33

可以发现,当主代理nginx挂掉,就成功让keepalived也关闭,从而使虚拟IP成功切换到备用代理机上,当主代理机恢复nginx和keepalived服务后,主代理机又拿回拉虚拟IP,至此成功实现了高可用。

将master-proxy主机关闭nginx,观察备用代理的IP

#关闭nginx服务
systemctl stop nginx   
#查看keepalived  正常是同时关闭拉
systemctl status keepalived    

在备用代理backup-proxy查看IP

[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 #本机IPinet 192.168.226.132/24 brd 192.168.226.255 #keepalived虚拟IPinet 192.168.226.111/24 scope global secondary ens33 ~]# ip a
#可以看到虚拟IP现在成功切换到拉备用代理主机上拉

现在再切换回master-proxy主机开启nginx和keepalived并查看master-proxy的IP

systemctl start nginx keepalived[root@master-proxy ~]# ip a
#...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 #本机IPinet 192.168.226.131/24 brd 192.168.226.255 #keepalived虚拟IPinet 192.168.226.111/24 scope global secondary ens33

可以发现,当主代理服务器发生故障后,Keepalived会自动把IP切换到备用代理服务器上,当主代理恢复服务后,又从新换回来,从而达到代理服务器的高可用效果。

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

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

相关文章

uniapp h5 配置代理服务器

"devServer": {"disableHostCheck": true,"proxy": {"/api": {// 需要被代理的后台地址"target": "http://自己的地址","changeOrigin": true,"secure": false,"pathRewrite": {&q…

机器学习(2)

目录 2-1泛化能力 2-2过拟合和欠拟合 2-3三大问题 2-4评估方法 2-5调参和验证集 2-6性能度量 2-7比较检验 2-1泛化能力 如何进行模型评估与选择&#xff1f; 2-2过拟合和欠拟合 泛化误差&#xff1a;在“未来”样本上的误差 经验误差&#xff1a;在训练集上的误差&am…

每日OJ题_贪心算法四⑧_力扣767. 重构字符串

目录 力扣767. 重构字符串 解析代码 力扣767. 重构字符串 767. 重构字符串 难度 中等 给定一个字符串 s &#xff0c;检查是否能重新排布其中的字母&#xff0c;使得两相邻的字符不同。 返回 s 的任意可能的重新排列。若不可行&#xff0c;返回空字符串 "" 。 …

鸿蒙系统编译方式

鸿蒙系统编译 编译原理编译方式概述hb编译ohos-buildhb安装编译使用build脚本hpmhpm介绍编译举例说明综合应用举例虚拟机中编译docker中使用hpm编译编译原理 编译构建指导:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-build-all.md,文档介绍…

设计模式 六大原则之里氏替换原则

文章目录 概念替换逻辑行为不变 拆解小结 概念 子类对象能够替换程序中父类对象出现的任何地方&#xff0c;并且保证原来程序的逻辑行为不变及正确性不被破坏。 替换 替换的前提是面向对象语言所支持的多态特性&#xff0c;同一个行为具有多个不同表现形式或形态的能力。 逻…

Android adb shell关于CPU核的命令

Android adb shell关于CPU核的命令 先使用命令&#xff1a; adb shell 进入控制台。 然后&#xff0c;直接在$后面输入下面命令&#xff0c;针对CPU的命令。 cat /proc/cpuinfo | grep ^processor | wc -l 查看当前手机的CPU是几核的。 cat sys/devices/system/cpu/online …

Java面试八股之什么是Java反射

什么是Java反射 基本概念 反射是Java语言的一个重要特性&#xff0c;它允许我们在运行时分析类、接口、字段、方法等组件的信息&#xff0c;并能够动态地操作这些组件&#xff0c;包括创建对象、调用方法、访问和修改字段值等。简单来说&#xff0c;反射提供了在程序运行时对…

【kubeflow文档】kubeflow介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习&#xff08;ML&#xff09;工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务&#xff0c;而是提供一种直接的方法&#xff0c;将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…

Shell的运行原理和Linux的权限

Shell的运行原理 Linux严格意义上说是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;”&#xff0c;但我们一般用户不能直接使用kernel&#xff0c;而是通过kernel的“外壳程序”&#xff0c;也就是所谓的Shell&#xff0c;来与kernel沟通。 Shell…

Operations Research课程之非线性规划(梯度下降|牛顿法|Gurobi+Python)

目录 1.非线性规划介绍 2.梯度下降法(Gradient descent) 2.1 梯度和Hessians矩阵 2.2 梯度下降算法 2.3 算法举例 3. 牛顿法(Newton’s method) 3.1 适合单变量的牛顿法 3.2 适合多变量的牛顿法 3. 实例(GurobiPython) 3.1 Agricultural Pricing问题描述 3.2 Gurobi…

【论文复刻】堆叠柱状图+饼图

复刻了一下这篇论文里的fig2c&#xff1a;Impacts of COVID-19 and fiscal stimuli on global emissions and the Paris Agreement | Nature Climate Change 效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;随机赋值 2. 图像绘制&#xff1a;绘制堆叠柱状…

【C++】可变参数模板简单介绍

前言 可变参数模板是C11中的新特性&#xff0c;它能够让我们创建可以接收可变参数的函数模板和类模板&#xff0c;相比C98/03&#xff0c;类模版和函数模版中只能含固定数量的模版参数&#xff0c;可变模版参数是一个巨大的改进&#xff0c;通过系统系统推演数据的类型&#xf…

Python笔记-Alchemy中改变表的模式(库schema)

现在是2024-01-10&#xff0c;发到互联网上应该是2024-05-13。查了下chatgpt&#xff0c;麻了&#xff0c;乱七八糟的。 最后还是靠stackoverflow解决的&#xff0c;目前&#xff0c;从解决问题的角度来看&#xff0c;这个还是牛逼点。 原文如下&#xff1a; python - How d…

Ansible常用变量【下】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 前言 在上一篇文章《Ansible常用变量【上】》中&#xff0c;学习了Ansible常用变量的前半部分&#xff0c;放了个五一假&#x…

买货查窜货过程中的可能情况

控价除了要管控渠道中的低价、乱价链接外&#xff0c;还可能需要解决窜货问题&#xff0c;当窜货问题蔓延不及时解决时&#xff0c;渠道会越来越受影响&#xff0c;所以治理窜货也是控价过程中很重要的一步&#xff0c;窜货问题的治理多通过买货溯源来解决&#xff0c;买货要先…

点云分割论文阅读01--FusionVision

FusionVision: A Comprehensive Approach of 3D Object Reconstruction and Segmentation from RGB-D Cameras Using YOLO and Fast Segment Anything FusionVision&#xff1a;使用 YOLO 和 Fast Segment Anything 从 RGB-D 相机重建和分割 3D 对象的综合方法 toread&#x…

拥有一台服务器可以做哪些有趣又实用的事情?

在接触云服务器这个概念你以前&#xff0c;你是不是在想&#xff1a; 可能是&#xff0c;云服务器&#xff0c;这个产品的存在&#xff0c;它可以为你做些什么实用的事情吗&#xff1f; 或者是&#xff0c;云服务器这个看似高大上的科技产品&#xff0c;其实可以为我们的生活…

JVM 自定义类加载器

文章目录 1. 为什么要自定义类加载器1.1 隔离加载类1.2 修改类加载的方式1.3 扩展加载源1.4 防止源码泄漏 2. 自定义类加载器应用场景有哪些3. 两种实现方式 自定义类加载器是Java中的一个高级特性&#xff0c;允许您在运行时动态加载类。通过自定义类加载器&#xff0c;您可以…

论文翻译及部分笔记:LANDMARC: Indoor Location Sensing Using Active RFID

LANDMARC: Indoor Location Sensing Using Active RFID 摘要 移动计算设备和嵌入式技术的日益融合引发了“上下文感知”应用的发展和部署&#xff0c;其中位置是最重要的上下文。在本文中&#xff0c;我们介绍了一种名为LANDMARC的定位感知原型系统&#xff0c;该系统使用射频识…

在云计算与人工智能中,7ECloud扮演着什么样的角色

数据驱动的时代&#xff0c;云计算和人工智能已成为推动现代科技进步的两大引擎。作为一家专注于云计算的公司&#xff0c;7ECloud正是在这个领域发挥自己的力量&#xff0c;力图为企业提供一站式解决方案&#xff0c;并拥有来自厂家的源头支持&#xff0c;用极其低的价格助力企…