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

均衡负载集群(LBC)-1

均衡负载集群(LBC)

客户–>通过Internet—>负载调度器—>n台真实服务器

负载调度器:

  • 软件:LVS;Nginx;Haproxy
  • 硬件:F5;

LVS架构:

  • 使用到C/S(B/S)架构

Nginx的负载均衡:

  • 只能使用在B/S架构上

LVS的工作层级

  • 用户:ipvsadm–>命令行管理工具
  • 内核:ipvs

1、LVS概述

LVS相关原理

  • LVS的组成
    • IPVS:运行内核空间
    • IPVSADM:运行在用户空间,管理集群服务器的命令工具
  • LVS原理:根据用户请求的套接字判断,分流至真实服务器的工作模块

LVS工作方式:

  • 工作模式:
    • NAT模式
    • TUN模式
    • DR模式
    • GitHub–>正在开发;

实验主机的配置

  • 规划:
    • 负载调度器:192.168.75.10
    • 后端服务器:192.168.75.11/12
  • 服务器配置要求:
    • 系统:centos6.x都可以
    • 网卡:双网卡
      • eth0:充当外网:192.168.75.0/24
      • eth1:充当内网:172.24.254.0/24
    • 备注:这个是是实验的预配置

构建一台主机node0–>然后复制出来5台用于后面的实验

#修改一下主机名-->永久修改
[root@node0 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node0
#修改一下主机名
[root@node0 ~]# hostname LVS-SERVER
[root@node0 ~]# su -
#关闭一下NetworkManager-->关闭网卡的守护进程
#关闭一下网卡的守护进程-->Centos6.8需要关闭;我的实验环境是没有的;使用的是Centos6.4
[root@LVS-SERVER ~]# service NetworkManager stop#配置网卡公网ip
[root@LVS-SERVER ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.10
NETMASK=255.255.255.0
GATEWAY=192.168.75.2
#配置内网ip
[root@LVS-SERVER ~]# cd /etc/sysconfig/network-scripts/
[root@LVS-SERVER network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
[root@LVS-SERVER network-scripts]# vim ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.254.10
NETMASK=255.255.255.0
#重启网络
[root@LVS-SERVER network-scripts]# service network restart#配置光盘yum源
[root@LVS-SERVER network-scripts]# cd /etc/yum.repos.d/
[root@LVS-SERVER yum.repos.d]# vim local.repo 
[local]
name=local_repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#配置自动开机挂载光盘
[root@node0 ~]# vim /etc/fstab 
...........#在末行添加以下内容
/dev/cdrom      /mnt/cdrom      iso9660 defaults        0       0#关闭iptables和selinux
[root@node0 ~]# service iptables stop
[root@node0 ~]# chkconfig iptables off
[root@node0 ~]# getenforce 
Disabled#关闭对应的ARP响应以及公告功能--->这个是可选选--->先把它所有的写进内核;#需要的时候打开
[root@node0 ~]# vim /etc/sysctl.conf 
..............#在末行添加如下几行
#关闭ARP功能
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2_
#net.ipv4.conf.default.arp_ignore = 1
#net.ipv4.conf.default.arp_announce = 2
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2#使用命令重新读取
[root@node0 ~]# sysctl -p

2、LVS-DR模式

工作逻辑图
客户–>与后端、LVS都处于同一个网段当中;

用户–>访问LVS服务器–>找后端服务器

二层MAC地址转发–>同一个IP被后端服务器隐藏了;

模式的特点:

  • 集群节点:必须在一个网络当中,集群节点必须处于同一个广播域中
  • 真实服务器网关指向路由器
  • RIP既可以是私网地址,又可以是公网IP
  • 负载调度器只负责入站请求,压力是最小的;
  • 大大减轻负载调度器的压力,支持更多的服务器节点
  • 不能支持端口映射

ARP的响应级别

  • arp-ignore
    • 0:只要本机配置有相应的IP地址就有响应
    • 1:仅在请求的目标地址配置在请求到达的网络接口上时,才给与响应

ARP的通告行为

  • arp-announce
    • 0:将本机任何网络接口上的任何地址都向外通告
    • 1:尽可能避免像目标网络通告与其网络不匹配的地址信息表
    • 2:仅向目标网络通告与其网络相匹配的地址信息

LVS-DR模式实验

  • 负载调度器配置如下—>使用是的centos7.x
    • 服务器:192.168.75.130
#首先关闭一下网卡的守护进程
[root@node0 ~]# systemctl stop NetworkManager
[root@node0 ~]# systemctl disable NetworkManager#创建一个eth0:0用来充当集群入口接口
[root@node0 ~]# cd /etc/sysconfig/network-scripts/
[root@node0 network-scripts]# cp ifcfg-ens32 ifcfg-ens32:0#配置一个虚拟ip
[root@node0 network-scripts]# vim ifcfg-ens32:0
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens32:0"				#注意修改网卡名
DEVICE="ens32:0"			
ONBOOT="yes"
IPADDR="192.168.75.100"		#这个就是虚拟ip-->自己随便创建的
PREFIX="24"#然后把子接口拉起来
[root@node0 network-scripts]# ifup ens32:0#关闭网卡重定向功能
[root@node0 network-scripts]# cd
[root@node0 ~]# vim /etc/sysctl.conf 
............#在末行添加如下内容够
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#刷新配置文件
[root@node0 ~]# sysctl -p#重载ipvs模块
[root@node0 ~]# modprobe ip_vs#安装ipvsadmin命令行工具
[root@node0 ~]# yum -y install ipvsadm
  • 后端服务器配置—>这里使用两台服务器–>两台服务器的配置完全是一样的
    • 192.168.75.131/132
    • 两台服务器分别是安装httpd
      • 创建一个页面用于实验区分
#关闭一下网卡的守护进程
[root@Node1 ~]# systemctl stop NetworkManager
[root@Node1 ~]# systemctl disable NetworkManager#配置一个环回口
[root@Node1 ~]# cd /etc/sysconfig/network-scripts/
[root@Node1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@Node1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.75.100			#配置虚拟IP-->这个ip和调度服务器的ip是一样的
NETMASK=255.255.255.255			#广播全部是255
...............
#拉起来网卡lo:0
[root@Node1 ~]# systemctl restart network#调整一下内核参数
[root@Node1 network-scripts]# cd 
[root@Node1 ~]# vim /etc/sysctl.conf 
..........
#关闭ARP功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2_
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 3#重新读取一下
[root@Node1 ~]# sysctl -p
#添加一个路由-->#如果有人来访问这个ip就把它丢给lo:0网卡
[root@node2 ~]# route  add  -host 192.168.75.100 dev lo:0#然后配置开机自启
[root@node2 ~]# echo "route  add  -host 192.168.75.100 dev lo:0" >> /etc/rc.local #安装一下httpd
[root@Node1 ~]# yum -y install httpd#启动httpd
[root@Node1 ~]# systemctl start httpd.service 
[root@Node1 ~]# systemctl enable httpd.service #修改默认页面
[root@Node1 ~]# vim /var/www/html/index.html
this is node1-131#测试一下是否能够访问
[root@Node1 ~]# curl localhost
this is node1-131
  • 最后回到调度服务器node0配置
    • 192.168.75.130
    • 开始创建lvs集群
#查看一下当前集群内容--->还没有创建,因此没有任何集群信息
[root@node0 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)#添加一下集群
-->-A是添加一个集群
-->-t是指定一个虚拟ip以及端口
-->-s:指定轮询模式为rr
[root@node0 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr #添加集群子节点
-->-a:添加子节点
-->-r:指定子节点的真实ip以及端口
-->-g:指定了是DR模式
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.131:80 -g#查看一下集群的信息
[root@node0 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.75.100:80 rr-> 192.168.75.131:80            Route   1      0          0         -> 192.168.75.132:80            Route   1      0          0  [root@node0 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes-> RemoteAddress:Port
TCP  192.168.75.100:80                   2       33        0     6972        0-> 192.168.75.131:80                   1        6        0      360        0-> 192.168.75.132:80                   1       27        0     6612        0

测试一下

http://192.168.75.100/

3、LVS-NAT模式

工作逻辑图:

用户—>访问LVS服务器

  • 源是自己,目的是LVS

LVS—>访问后端服务器

  • LVS–>通过DNAT–>把目的地址修改成后端服务器
  • 后端返回–>也是通过SNAT–>给到LVS–>然后再给到用户;

DNAT:目的地址转换

SNAT:源地址转换;

NAT模式的特点:

  • 集群节点,必须在一个网络中
  • 真实服务器必须将网关指向负载调度器
  • RIP 通常都是私有 P,仅用于各个集群节点通信
  • 负载调度器必须位于客户端和真实服务器之间,充当网关
  • 支持端口映射
  • 负载调度器操作系统必须是 Linux,真实服务器可以使用任意系统
  • 进出数据报文都要进过负载调度器机器,压力较大

实验架构图:

客户端--->路由器--->后端服务器

实验环境的构建:

  • 负载调度器:192.168.75.110

  • 后端服务器:192.168.75.130

    • 网络类型:仅主机模式:172.25.254.130;
    • 虚拟机硬件配置:
      • 硬件:2U–>CPU
      • 内存:2G
      • 网卡两张–>不同网段
        • 192.168.75.0/24–>充当公网
        • 172.25.254.0/24–>充当私网
    • 虚拟机软件配置:
  • 后端服务器:192.168.75.131

LVS负载调度器配置

  • LVS负载调度服务器:Centos6.x
  • 双网卡:192.168.75.110–>充当外网
    • 172.25.254.110–>充当内网和两台后端服务器130和131互通
#关闭selinux和防火墙
[root@localhost ~]# getenforce 
Disabled[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off#关闭一下网卡的守护进程-->Centos6.8需要关闭;我的实验环境是没有的;使用的是Centos6.4
[root@localhost ~]# service NetworkManager stop#配置光盘yum源
[root@localhost ~]# vim /etc/yum.repos.d/local.repo 
[local]
name=local_repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#挂载yum源
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/#配置网络-->#公网网络-->如下
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.110
NETMASK=255.255.255.0#私网网络如下-->eth1是使用ip a s 可以看出内核识别的网卡名;直接复制出来修改ip
[root@localhost network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
[root@localhost network-scripts]# vim ifcfg-eth1
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.254.110
NETMASK=255.255.255.0#重启网络
[root@localhost network-scripts]# service network restart#关闭网卡的重定向功能
[root@localhost network-scripts]# vim /etc/sysctl.conf #在文件的末行添加
#关闭网卡重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0#开启路由转发功能
[root@localhost ~]# vim /etc/sysctl.conf 
..........7 net.ipv4.ip_forward = 1
........#查看一下配置是否生效
[root@localhost network-scripts]# sysctl -p#重新挂载ipvs模块
[root@localhost network-scripts]# modprobe ip_vs
#安装ipvsadm命令行工具
[root@localhost network-scripts]# yum -y install ipvsadm#查看当前的ipvs集群内容
[root@localhost network-scripts]# ipvsadm -v#然后开启防火墙
[root@localhost ~]# service iptables start#一定要先清楚一下防火墙规则-->然后在设置防火墙规则
[root@localhost ~]# iptables -F#设置防火墙规则#添加防火墙规则:当源地址是内网网段,并且出口网卡为eth0的时候,进行SNAT转换,转换源地址为外网网卡地址
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 172.25.254.0/24 -o eth0 -j SNAT --to-source 192.168.75.110#查看规则是否生效
[root@localhost ~]# iptables -t nat -L
.........#看到这一行代表成功
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  172.25.254.0/24      anywhere            to:192.168.75.110 #添加集群-->添加ipvsadm的TCP集群-->指定规则是轮询
[root@localhost ~]# ipvsadm -A -t 192.168.75.110:80 -s rr#为集群添加节点-->-m指定的是LVS的nat模式
[root@localhost ~]# ipvsadm -a -t 192.168.75.110:80 -r 172.25.254.130:80 -m
[root@localhost ~]# ipvsadm -a -t 192.168.75.110:80 -r 172.25.254.131:80 -m#查看一下集群内容
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.75.110:80 rr-> 172.25.254.130:80            Masq    1      0          0         -> 172.25.254.131:80            Masq    1      0          0  #把集群保存到配置文件,开启持久化
[root@localhost ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]#设置开机自启动
[root@localhost ~]# chkconfig ipvsadm on

后端服务器131/132配置

  • 安装httpd
  • 注意网段是172.25.254.0/24
  • 注意添加网关地址:
#查看一下ip
[root@Node1 ~]# ip a
.........
inet 172.25.254.131/24 brd 172.25.254.255 scope global noprefixroute ens32
........#安装httpd
[root@Node1 ~]# yum -y install httpd#修改默认页面
[root@Node1 ~]# vim /var/www/html/index.html
this is 131.index#启动apaceh
[root@Node1 ~]# systemctl start httpd
[root@Node1 ~]# curl  localhost
this is 131.index#把网关指定到调度服务器ip
[root@Node1 ~]# route add default gw 172.25.254.110
[root@Node1 ~]# route -n 

最后浏览器访问–>到这里位置实验成功

http://192.168.75.110/

4、LVS-TUN模式

工作逻辑图:

客户端、LVS、后端–>大家都是公网地址

客户–>访问LVS—>

数据包的二次封装;

模式的特点

  • 集群节点不必位于同一个物理网络但必须都拥有公网 IP (或都可以被路由)
  • 真实服务器不能将网管指向负载调度器
  • RIP 必须是公网地址
  • 负载调度器只负责入站请求
  • 不支持端口映射功能
  • 发送方和接收方必须支持道功能

相关文章:

均衡负载集群(LBC)-1

均衡负载集群(LBC) 客户–>通过Internet—>负载调度器—>n台真实服务器 负载调度器: 软件:LVS;Nginx;Haproxy硬件:F5; LVS架构: 使用到C/S(B/S…...

WebSocket

关于WebSocket: WebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。 WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话…...

GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应

英文名称:Glutaric Acid-PEG-Glutaric Acid,GA-PEG-GA 中文名称:戊二酸-聚乙二醇-戊二酸 GA-PEG-GA是一种线性双功能PEG羧酸试剂。PEG和羧基COOH之间存在C4酯键。PEG羧酸可用于与氨基反应,与NHS和DCC、EDC等肽偶联试剂反应。 P…...

使用sqlmap + burpsuite sql工具注入拿flag

使用sqlmap burpsuite sql工具注入拿flag 记录一下自己重新开始学习web安全之路③。 目标网站:http://mashang.eicp.vip:1651/7WOY59OBj74nTwKzs3aftsh1MDELK2cG/ 首先判断网站是否存在SQL注入漏洞 1.找交互点 发现只有url这一个交互点,搜索框和登录…...

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案 CS5260是一款是一款实现USB TYPE-C到VGA视频转换的单片机解决方案转换器。CS5260支持USB Type-C显示端口交替模式,CS5260可以将视频和音频流从USB Type-C接口传输到VGA端口。在CS5260芯片中,显示…...

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一,支持开发人员通过远程更新固件,以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序:受保护的应用程序 (protected_app) 和用户应用程序 (user_app) ,这…...

C++数据结构 —— 二叉搜索树

目录 1.二叉搜索树的基本概念 1.1二叉搜索树的基本特征 2.二叉搜索树的实现 2.1数据的插入(迭代实现) 2.2数据的搜索(迭代实现) 2.3中序遍历(递归实现) 2.4数据的删除(迭代实现) 2.5数据的搜索(递归实现) 2.6数据的插入(递归实现) 2.7数据的删除(递归实现) 2.8类的完…...

Maven面试题及答案

1、Maven有哪些优点和缺点 优点: 1、简化项目依赖管理 2、方便与持续集成工具(Jenkins)整合 3、有助于多模块项目开发,比如一个模块开发好后发布到仓库,依赖该模块时可以直接从远程仓库更新,不用自己手动去编译 4、有很多插件&am…...

WebRTC系列-Qos系列之接收放RTX处理

文章目录 1. RTX详解1.1 RTX包头解析1.2 RTX包中的OSN2. RTX在WebRTC中处理2.1 组包2.2 解包2.3 发送及接收处理流程2.3.1 发送流程2.3.2 rtx标记的设置流程2.3.3 解析流程2.3.4 RTX解包在上一篇 WebRTC系列-Qos系列之接收NACK文章中分析了接收到nack后解析的主要流程。在WebR…...

国内能否炒伦敦金,2023国际十大正规伦敦金交易平台排名

在目前的投资市场环境中,现货黄金是一种屡见不鲜的投资选择,它依靠国际化的投资环境,成为了世界范围内投资者的重要选择对象。进行现货黄金投资,人们除了要认识市场发展基本现状之外,更要做好基本面和技术面分析工作&a…...

react路由 - react-router-dom

react路由 现代的前端应用大多都是 SPA(单页应用程序),也就是只有一个 HTML 页面的应用程序。因为它的用户体验更好、对服务器的压力更小,所以更受欢迎。为了有效的使用单个页面来管理原来多页面的功能,前端路由应运而…...

01-RTOS

对于裸机而言,对于RTOS而言即:对于裸机,打游戏意味着不能回消息 回消息意味着不能打游戏对于RTOS 打游戏和裸机的切换只需要一个时间片节拍 1ms 从宏观来看 就是同时进行的两件事(但要在这两件事情的优先级一样的情况下&#xff0…...

信息安全管理

信息安全管理信息安全管理信息安全风险管理信息安全管理体系应急响应与灾难恢复应急响应概况信息系统灾难修复灾难恢复相关技术信息安全管理 管理概念:组织、协调、控制的活动,核心过程的管理控制 管理对象和组成:包括人员在内相关资产&…...

深度学习tips

1、datasets_make函数中最后全部转化为numpy形式 datanp.array(data)否则会出现问题,比如数据是103216,经过trainloader生成tensor后(batch_size为30),发现生成的数据为: data.shape #(10,) data[0].shape…...

2023-2-13 刷题情况

替换子串得到平衡字符串 题目描述 有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符,且长度为 n 的字符串。 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。 给你一个这样的字符串 s,请通过…...

[HSCSEC 2023] rev,pwn,crypto,Ancient-MISC部分

比赛后有讲解,没赶上,前20比赛完1小时提交WP,谁会大半夜的起来写WP。总的感觉pwn,crypto过于简单,rev有2个难的不会,其它不是我的方向都感觉过于难,一个都没作。revDECOMPILEONEOONE入门题,一个…...

SpringBoot 接入 Spark

本文主要介绍 SpringBoot 与 Spark 如何对接,具体使用可以参考文章 SpringBoot 使用 Spark pom 文件添加 maven 依赖 spark-core:spark 的核心库,如:SparkConfspark-sql:spark 的 sql 库,如:s…...

在线支付系列【23】支付宝开放平台产品介绍

有道无术,术尚可求,有术无道,止于术。 文章目录前言支付产品App 支付手机网站支付电脑网站支付新当面资金授权当面付营销产品营销活动送红包会员产品App 支付宝登录人脸认证信用产品芝麻 GO芝麻先享芝麻免押芝麻工作证安全产品交易安全防护其…...

Python绝对路径和相对路径详解

在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。什么是当前工作目录每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。注…...

基于多进程的并发编程

一:不同平台基于多进程并发编程的实现 1.Windows平台 参考博文:Windows 编程(多进程) 更多API: 1)waitForSingleObject:等待一个内核对象变为已通知状态 2)GetExitCodeProcess:获取…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...