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

综合实验nginx+nfs+kpa

综合实验

实验目的:

静态资源和动态资源分别存放在远端存储NFS上,NFS上数据实现实时备份,用户通过负载访问后端的web服务。实现ngixn负载高可用,当keepalived master宕机,vip能自动跳转到备用节点

在这里插入图片描述

实验环境:

六台服务器都是centos8.5系统

主机名IP地址
master-kpa110.1.1.161
backup-kpa210.1.1.162
nginx-web110.1.1.121
nginx-web210.1.1.122
master-nfs10.1.1.123
slave-nfs10.1.1.124

实验步骤:

1NFS

1.1nfs共享和实时同步

#10.1.1.123master-nfs服务器端

#10.1.1.121master-nfs服务器端
(1)#在nfs服务器端安装nfs-utils和rpcbind包
[root@master-nfs ~]# yum install -y nfs-utils rpcbind
#nfs-utils:提供了NFS服务器程序和对应的管理工具 
#rpcbind:获取nfs服务器端的端口等信息
[root@master-nfs ~]# systemctl start rpcbind
[root@master-nfs ~]# yum -y install net-tools #此包中含有一些常用网络查看命令
[root@master-nfs ~]# netstat -tunlp | grep 111
(2)#创建/data/NFSdata目录,更改属主、属组
[root@master-nfs ~]# mkdir -p /data/NFSdata/web1
[root@master-nfs ~]# mkdir -p /data/NFSdata/web2
(3)#注意:此处不改权限,客户端没有创建文件权限
[root@master-nfs ~]# chown -R nobody:nobody /data
(4)#配置NFS服务的配置文件
[root@master-nfs ~]# vim /etc/exports
/data/NFSdata/web1 	#表示要共享文件的目录 
10.1.1.0/24 #表示所有允许访问的客户端IP网段
(rw,sync) 		#rw:表示读写权限,sync:表示数据同步写入内存硬盘
/data/NFSdata/web2 10.1.1.0/24(rw,sync)
/data/NFSdata/web1 10.1.1.0/24(rw,sync)
(5)#重启服务及实现开机自启动
[root@master-nfs ~]# systemctl start nfs-server.service
[root@master-nfs ~]# systemctl enable rpcbind.service 
[root@master-nfs ~]# systemctl enable nfs-server.service --now
1.2配置nfs客户端

2.1nginx-web1上10.1.1.121配置nfs客户端

(1)下载工具包nfs-utils
[root@nginx-web1 ~]# yum -y install nfs-utils
(2)#查看远程主机的NFS共享
[root@nginx-web1 ~]# showmount -e 10.1.1.123
Export list for 10.1.1.123:
/data/NFSdata/web1 10.1.1.0/24
/data/NFSdata/web2 10.1.1.0/24
(3)创建挂载目录
[root@nginx-web1 ~]# mkdir -p /data-web1/static
[root@nginx-web1 ~]# mkdir -p /data-web1/image
(4)永久挂载
[root@nginx-web1 ~]# vim /etc/fsstab/
10.1.1.123:/data/NFSdata/web1                 /data-web1                nfs        defaults        0 0
[root@nginx-web1 ~]# mount -a#挂载生效
(5)测试是否共享
[root@nginx-web1 static]# touch 1.txt
[root@nginx-web1 static]# ls
1.txt  index.html
[root@master-nfs web1]# cd /data/NFSdata/web1/static/
[root@master-nfs static]# ls
1.txt  index.html

2.2nginx-web2上10.1.1.122配置nfs客户端

(1)下载工具包nfs-utils
[root@nginx-web2 ~]# yum -y install nfs-utils
(2)#查看远程主机的NFS共享
[root@nginx-web2 ~]# showmount -e 10.1.1.123
Export list for 10.1.1.123:
/data/NFSdata/web1 10.1.1.0/24
/data/NFSdata/web2 10.1.1.0/24
(3)创建挂载目录
[root@nginx-web2 ~]# mkdir -p /data-web2/static
[root@nginx-web2 ~]# mkdir -p /data-web2/image
(4)永久挂载
[root@nginx-web2 ~]# vim /etc/fsstab/
10.1.1.123:/data/NFSdata/web2                /data-web1                nfs        defaults        0 0
[root@nginx-web2 ~]# mount -a#挂载生效
(5)测试是否共享
[root@nginx-web2 ~]# cd /data-web2/static
[root@nginx-web2 static]# ls
index.html
[root@nginx-web2 static]# touch 2.txt
[root@nginx-web2 static]# ls
2.txt  index.html
[root@master-nfs ~]# cd /data/NFSdata/web2/static/
[root@master-nfs static]# ls
2.txt  index.html
1.3部署Rsync服务

在10.1.1.124slave-nfs上部署Rsync服务端

(1)下载Rsync软件包
[root@slave-nfs ~]#yum -y install rsync
(2)新增vim /etc/rsyncd.conf配置文件
[root@slave-nfs ~]# vim /etc/rsyncd.conf
[root@slave-nfs ~]# cat /etc/rsyncd.conf 
uid = rsync
#组id
gid = rsync
#程序安全设置
use chroot = no
#客户端连接数
max connections = 200
#进程号文件位置
pid file = /var/run/rsyncd.pid
#进程锁文件位置
lock file = /var/run/rsync.lock
#日志文件位置
log file = /var/run/rsyncd.log
#连接超时时间
timeout = 300
#3.1版本以上要加这个
fake super = yes
#模块名称
[backup]
#同步数据的目录
path = /backup
#有错误时忽略
ignore errors
#只读模式(true为只读,false为可读可写)
read only = false
#阻止远程列表
list = false
#允许访问的IP
hosts allow = 10.1.1.0/24
#虚拟用户
auth users = rsync_backup
#存放用户和密码的文件
secrets file = /etc/rsync.password
(3)创建密码文件vi /etc/rsync.password
[root@slave-nfs ~]# vim /etc/rsync.password
rsync_backup:123456
(4)给/etc/rsync.password降权
[root@slave-nfs ~]# chmod 600 /etc/rsync.password
(5)创建程序用户rsync
[root@slave-nfs ~]# useradd -M -s /sbin/nologin rsync
(6)创建/backup目录并修改所有者所属组
[root@slave-nfs ~]# mkdir /backup
[root@slave-nfs ~]# chown rsync.rsync /backup
(7)守护进程启动rsync
[root@slave-nfs ~]# rsync --daemon

master-nfs10.1.1.123作为rsync客户端

(1)123客户端节点新增密码文件vim /etc/rsync.password
[root@master-nfs ~]# vim /etc/rsync.password
123456
(2)给/etc/rsync.password降权
[root@master-nfs ~]# chmod 600 /etc/rsync.password
(3)测试123节点传输文件到124上
[root@master-nfs ~]# touch 121.txt
[root@master-nfs ~]# rsync -zav 121.txt rsync_backup@10.1.1.124::backup --password-file=/etc/rsync.password
sending incremental file list
121.txt
sent 90 bytes  received 43 bytes  88.67 bytes/sec
total size is 0  speedup is 0.00
[root@slave-nfs backup]# ls
121.txt  2.txt  #-a:表示以归档模式同步文件,相当于 参数的缩写。这个选项会保留文件的元数据(如所有者、权限、时间戳等)以及其他有用的信息,例如符号链接和设备文件。-rlptgoD
-v:表示启用详细模式,输出同步过程中的详细信息。
-z:表示使用压缩算法进行传输,可以减少数据传输量。在网络较慢或传输大文件时特别有用。
rsync -avz 命令可以将文件或目录以归档模式进行同步,并在同步过程中输出详细信息,同时使用压缩算法减少传输量。
1.4部署inotify服务

NFS服务器上部署inotify服务,实现实时同步

(1)#下载epel源
[root@master-nfs ~]#  yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
(2)#清除缓存
[root@master-nfs ~]# yum clean all
[root@master-nfs ~]# yum makecache
(3)下载inotify包
[root@master-nfs ~]# yum -y install inotify-tools
(4)编写脚本inotify脚本
[root@master-nfs ~]# vim inotify.sh
backupServer=10.1.1.124
path=/data/NFSdata/
inotifywait -mrq --format '%w%f' -e create,close_write,delete $path | while read line
doif [ -f $line ];thenrsync -za $line --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordelsecd $pathrsync -za ./ --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordfi
done
(5)#后台运行
[root@master-nfs ~]# sh inotify.sh &
[1] 350

2.实现nignx负载

2.1安装Nignx

四台服务器都安装nginx

yum -y install nginx
systemctl enable nginx.service --now
systemctl status nginx.service
cd /etc/nginx/
cp nginx.conf nginx.conf.bak
2.2配置负载
 [root@master-kpa1 ~]# vim /etc/nginx/nginx.confupstream myweb {server 10.1.1.121:80 weight=1;server 10.1.1.122:80 weight=1;}server {listen       80 default_server;listen       [::]:80 default_server;server_name  kpa1.sxh.com;location / {root         /usr/share/nginx/html;proxy_pass      http://myweb;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;}[root@backup-kpa2 ~]# vim /etc/nginx/nginx.confupstream myweb {server 10.1.1.121:80 weight=1;server 10.1.1.122:80 weight=1;}server {listen       80 default_server;listen       [::]:80 default_server;server_name  kpa1.sxh.com;location / {root         /usr/share/nginx/html;proxy_pass      http://myweb;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;}
2.3配置动静分离
 [root@nginx-web1 ~]# vim /etc/nginx/nginx.confserver {listen       80 default_server;listen       [::]:80 default_server;server_name kpa1.sxh.com;location / {root /data-web1/static;}#location /sxh1.jpg {#root /data-web1/image;#}location  ~* \.(gif|jpg|jpeg)$ {root /data-web1/image;}[root@nginx-web2 ~]# vim /etc/nginx/nginx.confserver {listen       80 default_server;listen       [::]:80 default_server;server_name  kpa1.sxh.com;location / {root /data/static;}#location /sxh2.jpg {#root /data/image;#}location  ~* \.(gif|jpg|jpeg)$ {root /data-web1/image;}
2.4测试反向代理
[root@slave-nfs ~]# curl kpa1.sxh.com
this is a papge web1 10.1.1.121
[root@slave-nfs ~]# curl kpa1.sxh.com
this a page web2 10.1.1.122

在这里插入图片描述

在这里插入图片描述

3.实现keepalived

3.1编译安装kpa

master-kpa1和backup-kpa2都需要编译安装keepalived

#下载依赖软件
[root@master-kpa1 ~]# yum install gcc curl openssl-devel libnl3-devel net-snmp-devel
#下载二进制文件
[root@master-kpa1 ~]# wget https://keepalived.org/software/keepalived-2.0.20.tar.gz
#解压到指定目录
[root@master-kpa1 ~]# tar xvf keepalived-2.0.20.tar.gz -C /usr/local/src
#选项--disable-fwmark 可用于禁用iptables规则,可访止VIP无法访问,无此选项默认会启用iptables规则
[root@master-kpa1 ~]# cd /usr/local/src/keepalived-2.0.20/
#配置文件路径
[root@master-kpa1 keepalived-2.0.20]# ./configure --prefix=/usr/local/keepalived --disable-fwmark
#编译并安装
[root@master-kpa1 keepalived-2.0.20]# make && make install
[root@master-kpa1 keepalived-2.0.20]# cd
[root@master-kpa1 ~]# /usr/local/keepalived/sbin/keepalived -v
#创建配置文件
[root@master-kpa1 ~]# mkdir /etc/keepalived #没有创建,则服务起不来
[root@master-kpa1 ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
[root@master-kpa1 ~]## systemctl enable --now keepalived.service 
#注意事项
#不进行下面配置,结果:重启不报错,但是status状态一直dead
[root@master-kpa1 ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {state MASTERinterface ens160#根据自己网卡名设置virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.1.1.88 #改为vip}
}
[root@master-kpa1 ~]# systemctl restart keepalived.service 
[root@master-kpa1 ~]# systemctl stauts keepalived.service 
3.2实现kpa单主架构

master-kpa1配置

[root@master-kpa1 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {notification_email {3059955740@qq.com}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id master-kpa1vrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 230.1.1.1
}
vrrp_script check_nginx {script "/usr/bin/killall -0 nginx"interval 3weight -50fail 3rise 1
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.1.1.88 dev ens160 label ens160:1}notify_master "/usr/bin/systemctl restart nginx.service"notify_backup "/usr/bin/systemctl restart nginx.service"	
#	notify_master "/etc/keepalived/notify.sh master"
#	notify_backup "/etc/keepalived/notify.sh backup"
#	notify_fault "/etc/keepalived/notify.sh fault"track_script { check_nginx}
}

backup-kpa2配置

[root@backup-kpa2 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {notification_email {2923035330@qq.com}notification_email_from keepalived@localhostsmtp_server 127.0.0.1   smtp_connect_timeout 30router_id back-kpa2vrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0vrrp_mcast_group4 230.1.1.1
}
vrrp_script check_nginx {script "/usr/bin/killall -0 nginx"interval 3weight -50fail 3rise 1
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 70advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.1.1.88 dev ens160 label ens160:2 }track_interface {ens160}notify_master "/usr/bin/systemctl restart nginx.service"notify_backup "/usr/bin/systemctl restart nginx.service"#notify_master "/etc/keepalived/notify.sh master"#notify_backup "/etc/keepalived/notify.sh backup"#notify_fault "/etc/keepalived/notify.sh fault"track_script {check_nginx}}

抓包分析

[root@kpa1 ~]# tcpdump -i ens160 -nn src host 10.1.1.161 and dst 10.1.1.162
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
15:52:48.226434 IP 10.1.1.161 > 10.1.1.162: VRRPv2, Advertisement, vrid 66, prio 100, authtype simple, intvl 1s, length 20
15:52:49.227488 IP 10.1.1.161 > 10.1.1.162: VRRPv2, Advertisement, vrid 66, prio 100, authtype simple, intvl 1s, length 20
15:52:50.228497 IP 10.1.1.161 > 10.1.1.162: VRRPv2, Advertisement, vrid 66, prio 100, authtype simple, intvl 1s, length 20
3.3QQ邮箱设置
[root@kpa1 ~]# vim /etc/mail.rc
set from=3059955740@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=3059955740@qq.com
set smtp-auth-password=zoboduhoqcqcdfhf
set smtp-auth=login
[root@kpa1 ~]# yum -y install mailx
#发送邮件测试
[root@kpa1 ~]# echo "Test Mail 30599555740" |mail -s warning 3059955740@qq.com
3.4创建通知脚本
[root@kpa1 ~]# cat /etc/keepalived/notify.sh 
#!/bin/bash
contact='3059955740@qq.com'
notify() {mailsubject="(hostname) to be $1,vip floating"mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"echo "$mailbody" |mail -s "$mailsubject" $contact
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo "Usage: $(basename $0) {master|backup|fault}"exit 1;;
esac
[root@kpa1 ~]# chmod a+x /etc/keepalived/notify.sh 
3.5kpa测试宕机
[root@master-kpa1 ~]# killall keepalived 
[root@master-kpa1 ~]# systemctl restart keepalived.service

在这里插入图片描述

相关文章:

综合实验nginx+nfs+kpa

综合实验 实验目的: 静态资源和动态资源分别存放在远端存储NFS上,NFS上数据实现实时备份,用户通过负载访问后端的web服务。实现ngixn负载高可用,当keepalived master宕机,vip能自动跳转到备用节点 实验环境&#xff…...

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …...

group by报错

# 报错:[42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column base.biz_org_rep.ID which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_grou…...

3、云原生安全之falco的部署

文章目录 1、helm安装2、拉去镜像失败与解决3、安装faclo4、安装nfs服务器,配置k8s的持久卷4.1、创建nfs服务器,4.2、部署master节点(nsf服务的客户端)4.3、pv与pvc4.4、假设pv和pvc的配置文件出错了5、安装falcosidekick可视化(建议跳过,直接使用6)6、安装faclo与falco…...

Docker架构概述

Docker是基于Go语言实现的开源容器项目,能够把开发的应用程序自动部署到容器的开源的应用容器引擎。Docker的构想是要实现"Build, Ship and Run Any App, Anywhere",即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运…...

安装 node 错误的配置环境变量之后使用 npm 报错

安装 node 错误的配置环境变量之后使用 npm 报错 node:internal/modules/cjs/loader:1147 throw err; ^ Error: Cannot find module ‘F:\ACodeTools\Node\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js’ at Module._resolveFilename (node:internal/modules/cjs/loa…...

Matlab 最小二乘插值(曲线拟合)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在多项式插值时,当数据点个数较多时,插值会导致多项式曲线阶数过高,带来不稳定因素。因此我们可以通过固定幂基函数的最高次数 m(m < n),来对我们要拟合的曲线进行降阶。之前的函数形式就可以变为: 二、实现…...

AWTK-MVVM 配置文件模型

配置文件模型 AWTK-MVVM 内置了一些配置文件模型&#xff0c;用于读写各种配置文件&#xff0c;比如&#xff0c;JSON/XML/INI/CSV/UBJSON 等。 文件名中可以引用下面的变量。 ${app_dir} 应用程序目录${user_dir} 用户目录${temp_dir} 临时目录 json(url${app_dir}/demos/de…...

【活动】金三银四,前端工程师如何把握求职黄金期

随着春意盎然的气息弥漫大地&#xff0c;程序员群体中也迎来了一年一度的“金三银四”求职热潮。这个时间段对于广大前端工程师而言&#xff0c;不仅象征着生机勃发的新起点&#xff0c;更是他们职业生涯中至关重要的转折点。众多知名公司在这一时期大规模开启招聘通道&#xf…...

萌新学习RSA第二天(离线分解整数N)

1.yafu的使用&#xff08;离线环境分解N&#xff09;、 下载 打开 及使用 下载地址&#xff1a;https://sourceforge.net/projects/yafu/ 在下载好的并解压好的文件夹上鼠标右键打开终端 然后输入.\yafu-x64.exe并回车运行 .\yafu-x64.exe 来到这个页面就OK了 然后输入 fa…...

STM32学习和实践笔记(1): 装好了的keil μVision 5

2019年3月在淘宝上买了这块STM32的开发板&#xff0c;学了一段时间后就丢下了&#xff0c;今天重新捡起来&#xff0c;决定好好学习、天天向上。 对照教程&#xff0c;今天先把keil5装上了。 装的过程有以下几点值得记录下&#xff1a; 1&#xff09;用注册机时&#xff0c;…...

企业计算机服务器中了360勒索病毒如何解密,360后缀勒索病毒处理流程

对于众多的企业来说&#xff0c;企业的数据是企业发展的核心&#xff0c;越来越多的企业开始注重企业的数据安全问题&#xff0c;但随着网络技术的不断发展与应用&#xff0c;网络黑客的攻击加密手段也在不断升级。近期&#xff0c;云天数据恢复中心接到多家企业的求助&#xf…...

【图像拼接/视频拼接】论文精读:Efficient Video Stitching Based on Fast Structure Deformation

第一次来请先看这篇文章:【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用说明、创新思路分享等(不定期更新) 图像拼接系列相关论文精读 Seam Carving for Content-Aware Image ResizingAs-Rigid-As-Possible Shape ManipulationAdap…...

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法&#xff0c;它能够同时进行变量选择和正则化&#xff0c;以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …...

xss.haozi.me靶场练习

靶场地址alert(1) 1、第一关 输入在文本框里面&#xff0c;我们闭合前面的标签&#xff0c;中间的内容我们就可以随意写了 2、第二关 逃逸value的属性即可&#xff0c;这里使用点击事件触发xss 3、第三关 看代码&#xff0c;使用了正则表达式&#xff0c;去掉了所有的括号字…...

Unity 游戏设计模式:观察者模式

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com 在 unity 游戏设计中&#xff0c;观察者模式&#xff08;Observer Pattern&#xff09;有着重要的作用&#xff0c;它主要用于实现对象之间的一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#x…...

计算机体系结构安全:对体系结构如何支持安全机制进行调研

一、体系结构支持信任建立和主动防御的技术&#xff1a; 可信3.0 二、体系结构怎么更好的支持信任建立和主动防御 2.1 支持信任建立 一、以手机芯片举例&#xff0c;用智能手机的芯片作为信任根&#xff0c;确保应用程序和敏感数据受到保护。 二、启动时验证操作系统和应用…...

b站小土堆pytorch学习记录—— P15 Dataloader的使用

文章目录 一、前置知识1.dataloader简要介绍2.dataloader 官方文档&#xff08;翻译后&#xff09; 二、DataLoader的使用 一、前置知识 1.dataloader简要介绍 DataLoader 是 PyTorch 中用于加载数据的实用工具&#xff0c;它可以处理数据集的批量加载、数据集的随机打乱、多…...

小程序中使用echarts地图

一、下载并安装echarts 1、下载echarts-for-weixin组件 echarts-for-weixin项目提供了一个小程序组件&#xff0c;用这种方式可以在小程序中方便地使用 ECharts。 下载ec-canvas项目&#xff08;下载地址&#xff09; ​​ 注意&#xff1a;下载的 ec-canvas 中的echarts的版本…...

swoole协程

协程执行顺序 //hyperf框架 use Co;go(function () {Co::sleep(1); // Io等待一秒echo "hello go1 \n";});echo "hello main \n";go(function () {echo "hello go2 \n";});//打印结果hello mainhello go2hello go1/*运行此段代码, 系统启动一个…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...