万字详述haproxy

news2024/11/16 2:51:40

目录

写在前面

1、Haproxy简介

2、Haproxy的安装和基本配置信息

2.1、haproxy的安装

2.2haproxy的基本配置信息

2.2.1基本配置文件global参数

2.2.2基本配置文件proxys的相关参数

2.2.2.1 default的相关参数

2.2.2.2 frontend的相关配置

2.2.2.3 backend的相关配置

对于server配置参数的补充

3、haproxy热更新-socat

4、haproxy调度算法

4.1、静态算法

4.1.1、static-rrr:基于权重的轮询调度

4.1.2、first

4.2、动态算法

4.2.1、roundrobin

4.2.2、leastconn

4.3、其他算法

4.3.1、source

4.3.1.1、Source静态算法---map-base 取模法   

 4.3.1.2、一致性hash算法

4.3.2、uri

4.3.2.1、uri静态算法

4.3.2.2、uri动态算法

4.3.3、url_param

4.3.3.1、url_param静态算法

4.3.3.2、url_param动态算法

4.3.4、hdr

4.3.4.1、hdr静态算法

4.3.4.2、hdr动态算法

5、基于cookie的会话保持

6、HAProxy状态页

7、IP透传

8、ACL

9、错误日志定向

10、四层tcp负载均衡数据库

11、Haproxy https实现

写在最后

慢启动

hash取模算法


写在前面

了解haproxy之前希望你能了解一定的负载均衡原理,这会对你了解haproxy有不小的帮助
详情请见http://t.csdnimg.cn/ijWYa

注:所有不清楚的知识点都可以在写在最后目录下找到

1、Haproxy简介

        HAProxy是法国开发者 威利塔罗 (Willy Tarreau) 2000 年使用 C 语言开发的一个开源软件是一款具备高并发( 万级以上 ) 、高性能的 TCP HTTP 负载均衡器,支持基于cookie 的持久性(不怎么用的到了),自动故障切换(这个很棒),支持正则表达式及 web 状态统计,支持动态更改服务器状态。
        社区版网站: http://www.haproxy.org

2、Haproxy的安装和基本配置信息

主机IP角色
haproxy192.168.220.100负载均衡调度器
server1192.168.220.150db1
server2192.168.220.200

db2

2.1、haproxy的安装

这里haproxy采用的安装方式是配置rhel9的本地源,直接从本地源里下载

#创建挂载目录
mkdir /rhel9

#将挂载命令写入开机自启文件中,并授予该文件执行权限
echo "mount /dev/cdrom /rhel9" > /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

#写一个repl9的repo文件
[AppStream]
name=AppStream
baseurl=file:///rhel9/AppStream/        #本地yum源的配置
gpgcheck=0

[BaseOS]
name=BaseOS
baseurl=file:///rhel9/BaseOS/
gpgcheck=0

#下载haproxy
yum install haproxy -y

2.2haproxy的基本配置信息

haproxy配置文件:/etc/haproxy/haproxy.cfg

2.2.1基本配置文件global参数

#打开配置文件 
vim /etc/haproxy/haproxy.cfg
global                                  #全局参数
    log         127.0.0.1 local2        #日志存放目录,具体后续在/etc/rsyslog.conf

    chroot      /var/lib/haproxy        #锁定运行目录
    pidfile     /var/run/haproxy.pid    #指定Pid所在文件
    maxconn     4000                    #指定最大连接数,建议十万
    user        haproxy                 #指定用户
    group       haproxy                 #指定用户组
    nbproc      2                       #开启的haproxy的进程数,默认进程数为1
#   nbthread    1     #指定每个haproxy进程开启的线程数,默认为每个进程一个线程,不能和nbproc共存
    cpu-map 1 0                         #将第一个进程绑定至0号CPU
    maxsslconn 100000                   #haproxy进程ssl最大连接数,用于https场景下
    maxconnrate 100                     #每个进程每秒创建的最大连接数量

    daemon                              #以守护进程运行

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats    #套接字文件

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

2.2.2基本配置文件proxys的相关参数

2.2.2.1 default的相关参数
defaults
    mode                    http                #七层负载均衡,tcp为四层
    log                     global              #日志,根据global参数
    option                  httplog             #log选项,采集http会话相关的各种属性值    
                                                #包括HTTP请求、会话状态、源地址、连接时间等
    option                  http-keep-alive     #开启与客户端的会话保持
    option                  dontlognull         #log选项,不采集空会话连接日志
    option http-server-close                    #等待客户端完整HTTP请求的时间,此处为等待10s
    option forwardfor       except 127.0.0.0/8  #透传客户端真实IP至后端web服务器,除lo外
    option                  redispatch          #当连接的服务器挂掉后,强制连接其他健康的server
    retries                 3                   #连接后端服务器最多尝试次数
    timeout http-request    10s                 #等待客户端请求完全被接收和处理的最长时间
    timeout queue           1m                  #设置删除连接和客户端收到503信息前的等待时间
    timeout connect         10s                 #设置等待服务器连接成功的时间
    timeout client          1m                  #设置允许客户端处于非活动状态的时间
    timeout server          1m                  #设置服务端超时的时间
    timeout http-keep-alive 10s                 #session 会话保持超时时间
                                                #此时间段内会转发到相同的后端服务器
    timeout check           10s                 #指定后端服务器健康检查的超时时间
    maxconn                 3000                #指定一个haproxy进程最大的连接数
    errorfile 503 /etc/errorpage/503.http       #配置503,当报503时,使其访问定义的文件
    errorloc 503 https://www.baidu.com          #配置503,当报503时,使其重定向到百度

default中这三个时间不好区分理解,采用画图方式理解

  • option http-server-close
  • timeout http-request
  • timeout connect
2.2.2.2 frontend的相关配置
frontend webcluster        #名字随意起
    bind *:80              #监听的主机和端口 *表示任意,格式是IP:Port
    mode http              #采用几层负载均衡
    use_backend webcluster-host        #调用的backend
2.2.2.3 backend的相关配置
backend webcluster-host                #名字需要与frontend使用的backend名称一致
    balance roundrobin                 #采用的算法是轮询
    server web1 192.168.220.150:80     #后端服务器主机
    server web2 192.168.220.200:80     #后端服务器主机
对于server配置参数的补充
  • check:对指定 real 进行健康状态检查,如果不加此设置,默认不开启检查
  • addr: 可指定的健康状态监测 IP ,可以是专门的数据网段,减少业务网络的流量
  • inter <num>: 健康状态检查间隔时间,默认 2s
  • weight <num>: 默认为 1 ,最大值为 256 0( 状态为蓝色 ) 表示不参与负载均衡,但仍接受持久连接
  • maxconn <maxconn>: 当前后端 server 的最大并发连接数
  • redirect prefix http://www.baidu.com/: 将请求临时 (302) 重定向至其它 URL ,只适用 http 模式
  • disabled: 将后端服务器标记为不可用状态,即维护状态,除了持久模式
  • backup: 将后端服务器标记为备份状态 , 只在所有非备份主机 down 机时提供服务,类似 Sorry Server
  • rise <num>: 后端服务器从下线恢复上线的检查的连续有效次数,默认为 2
  • fall <num>: 后端服务器从线上转为线下的检查的连续失效次数,默认为 3
  • port: 指定的健康状态监测端口
2.2.2.4 listen的相关配置
listen webserver_80
    bind *:80
    mode http
    balance roundrobin
    server web1 192.168.220.150:80 check inter 2 fall 2 rise 3
    server web2 192.168.220.200:80 check inter 2 fall 2 rise 3 weight 2
    server web3 192.168.220.100:8080 backu

3、haproxy热更新-socat

我的haproxy配置


使用工具socat

需要先在下载并修改haproxy配置文件,以下配置是socat热更新单进程的配置

socat动态热更新多进程

socat命令(重启失效)

  • 查看帮助:echo "help" | socat stdio /var/lib/haproxy/stats
  • 查看haproxy状态:echo "show info" | socat stdio /var/lib/haproxy/stats
  • 查看集群状态:echo "show servers state" | socat stdio /var/lib/haproxy/stats
  • 查看集群权重:echo "get weight myhaback/web1" | socat stdio /var/lib/haproxy/stats
  • 设置集群权重:echo "set weight myhaback/web2 2" | socat stdio /var/lib/haproxy/stats
  • 下线后端服务:echo "disable server myhabck/web1" | socat stdio/var/lib/haproxy/stats 
  • 上线后端服务:echo "enable server myhaback/web1" socat stdio /var/lib/haproxy/stats

4、haproxy调度算法

4.1、静态算法

        静态算法:按照事先定义好的规则轮询公平调度,不关心后端服务器的当前负载、连接数和响应速度 等,且无法实时修改权重(只能为 0 1, 不支持其它值 ) ,只能靠重启 HAProxy 生效。
4.1.1、static-rrr:基于权重的轮询调度
  • 不支持端服务器慢启动
  • 其后端主机数量没有限制,相当于 LVS 中的 wrr

配置如下

验证:按照权重分配,访问9次,应是三次web1,6次web2

4.1.2、first
  • 根据服务器在列表中的位置,自上而下进行调度
  • 其只会当第一台服务器的连接数达到上限,新请求才会分配给下一台服务
  • 其会忽略服务器的权重设置
配置如下

验证,如是first,那么全部的访问都应打向web1

4.2、动态算法

        基于后端服务器状态进行调度适当调整,新请求将优先调度至当前负载较低的服务器,权重可以在haproxy运行时动态调整无需重启

4.2.1、roundrobin

       先看负载,再看权重

        相同权重,不同负载,选负载低的

        不同权重,相同负载,选权重高的

        不同权重,不同负载,选负载低的

  • 基于权重的轮询动态调度算法
  • HAProxy 中的 roundrobin 支持慢启动
  • 其每个后端 backend 中最多支持 4095 real server
  • roundrobin 为默认调度算法

配置如下

验证:其效果应与静态算法static-rr 调度算法效果一致,三次web1,6次web2

4.2.2、leastconn
  • leastconn加权的最少连接的动态

  • 支持权重的运行时调整和慢启动,即 : 根据当前连接最少的后端服务器而非权重进行优先调度 ( 新客户端连接)
  • 比较适合长连接的场景使用,比如: MySQL 等场景 

配置如下

验证,可动态改变权重,但是调度与权重无关,所以对于短连接来说,效果应近似于两个主机权重皆为1的静态调度算法static-rr

没想到短链接leastconn的效果完全与两个主机权重皆为1的静态调度算法static-rr的效果一致

4.3、其他算法

        其它算法即可作为静态算法,又可以通过选项成为动态算法

4.3.1、source

        源地址hash,基于用户源地址hash并将请求转发到后端服务器,后续同一个源地址请求将被转发至同一 个后端web服务器。

        此方式当后端服务器数据量发生变化时,会导致很多用户的请求转发至新的后端服务器,默认为静态方式,但是可以通过hash-type 支持的选项更改
        适用场景:这个算法一般是在不插入Cookie的TCP 模式下使用,也可给拒绝会话cookie 的客户提供最好的会话粘性,适用于 session 会话保持但不支持 cookie和缓存的场景
        源地址有两种转发客户端请求到后端服务器的服务器选取计算方式,分别是取模法和一致性hash

验证:因源地址不变,打向的后端服务器也不会变,所以访问全与第一次访问一致

4.3.1.1、Source静态算法---map-base 取模法   
        map-based:取模法,对 source 地址进行 hash 计算,再基于服务器总权重的取模,最终结果决定将此请求转发至对应的后端服务器。
        此方法是静态的,不支持在线调整权重,不支持慢启动,可实现对后端服务器均衡调度
        缺点是当服务器的总权重发生变化时,即有服务器上线或下线,都会因总权重发生变化而导致调度结果整体改变
        而且通常为了节约IT成本,一个公司往往只会有1个公网IP,那么当这个公司内用户访问服务器时,所有的流量都会打向同一个服务器,导致负载失衡。

配置如下

frontend webcluster
    bind *:80
    mode http
    use_backend webcluster-host 
backend webcluster-host
    balance source
    server web1 192.168.220.150:80 check inter 2 fall 2 rise 3 weight 2
    server web2 192.168.220.200:80 check inter 2 fall 2 rise 3 weight 1

验证:不同的主机去访问haproxy服务器,根据总权重3,hash会将其hash(IP)之后对总权重3 取模,将其分向后端对应的服务器,且若IP没有改变,服务器没有下线,则流量流向不会变

 4.3.1.2、一致性hash算法
        一致性哈希,当服务器的总权重发生变化时,对调度结果影响是局部的,不会引起大的变动;该hash算法是动态的,支持使用 socat 等工具进行在线权重调整,支持慢启动
算法:
  1. 后端服务器哈希环点keyA=hash(后端服务器虚拟ip)%(2^32)
  2. 客户机哈希环点 key1=hash(client_ip)%(2^32) 得到的值在 [0---4294967295] 之间
  3. keyA key1 都放在 hash 环上,将用户请求调度到离 key1 最近的 keyA 对应的后端服务器

        hash环在服务器节点较少的情况下或许会发生hash环偏斜问题

        hash环偏斜问题:Hash 环偏斜指的是在将数据或任务映射到 Hash 环上时,分布不均匀,导致某些节点承担了过多的负载,而其他节点负载较轻。

一致性 hash 示意图
后端服务器在线与离线的调度方式

配置如下

frontend webcluster
    bind *:80
    mode http
    use_backend webcluster-host 
backend webcluster-host
    balance source
    hash-type consistent
    server web1 192.168.220.150:80 check inter 2 fall 2 rise 3 weight 2
    server web2 192.168.220.200:80 check inter 2 fall 2 rise 3 weight 1
4.3.2、uri
        uri仅支持http应用层,不支持tcp传输层
        基于对用户请求的URI的左半部分或整个
uri hash ,再将 hash 结果对总权重进行取模后
根据最终结果将请求转发到后端指定服务器,适用于后端是缓存服务器场景,默认是静态算法,也可以通过hash-type 指定 map-based consistent ,来定义使用取模法还是一致性hash
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
<scheme>:协议
<user>:用户
<password>:密码
<host>:域名或IP
<port>:端口
<params>:执行的命令
<query>:字段
<frag>:分段,分片,类似于索引
左半部分: /<path>;<params>
uri:/<path>;<params>?<query>#<frag>
4.3.2.1、uri静态算法

配置如下

haproxy

RS1

RS2

验证结果

4.3.2.2、uri动态算法

配置如下

haproxy

4.3.3、url_param
        url_param对用户请求的 url 中的  params 部分中的一个参数 key 对应的 value 值作 hash 计算,并由服务器总权重相除以后派发至某挑出的服务器, 后端搜索同一个数据会被调度到同一个服务器,多用与电商通常用于追踪用户,以确保来自同一个用户的请求始终发往同一个real server,如果无没key ,将按 roundrobin 算法
4.3.3.1、url_param静态算法

配置如下

listen webcluster
bind *:80
mode http
balance url_param name,id
server webserver1 192.168.220.150:80 weight 1 check inter 3s fall 3 rise 5
server webserver2 192.168.220.200:80 weight 1 check inter 3s fall 3 rise 5
4.3.3.2、url_param动态算法

配置如下

listen webcluster
bind *:80
mode http
balance url_param name, id
hash-type consistent
server webserver1 192.168.220.150:80 weight 1 check inter 3s fall 3 rise 5
server webserver2 192.168.220.200:80 weight 1 check inter 3s fall 3 rise 5
4.3.4、hdr
针对用户每个 http 头部 (header) 请求中的指定信息做 hash ,此处由 name 指定的 http 首部将会被取出并做 hash 计算, 然后由服务器总权重取模以后派发至某挑出的服务器,如果无有效值,则会使用默认的轮询调度。
4.3.4.1、hdr静态算法

配置如下

4.3.4.2、hdr动态算法

配置如下

5、基于cookie的会话保持

        cookie仅支持http模式,不支持tcp模式

        cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用较少, 已经被session共享服务器代替

配置如下

insert:插入新的cookie,默认不插入

nocache:不允许中间缓存服务器进行缓存

indirect:若客户端已有cookie值,则不会再发送cookle信息

6、HAProxy状态页

        通过web界面,显示当前HAProxy的运行状态

配置

        listen stats:
        mode http
        bind *:8200
        stats enable
        log global
        stats uri /status 
        stats auth admin:admin

7、IP透传

具有负载均衡架构的怎么分析真实数据来源----IP透传

七层IP透传

haproxy配置

apache配置

日志参数自取地:%{X-Forwarded-For}i

apache效果

nginx配置

日志参数自取地:

  • $proxy_add_x_forwarded_for: 包括客户端IP和中间经过的所有代理的IP
  • $http_x_forwarded_For: 只有客户端IP

nginx效果

四层IP透传

  • 注:apache不支持四层IP透传

haproxy配置

nginx配置

日志参数自取地:"$proxy_protocol_addr"

nginx效果

8、ACL

(待补充)

9、错误日志定向

先将所有的后端服务器全部关闭

#第一个errorfile

#在haproxy配置文件中default模块中添加一行
errorfile 503 /etc/errorpage/503.http    #目录自己创建,错误日志自己创建自己写


#创建错误日志
cp /usr/share/haproxy/503.http /etc/errorpage
vim /etc/errorpage/503.http
#修改其内容为自己想修改的
HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html;charset=UTF-8

<html><body><h1>503报文</h1>
没有灵魂的人就是行尸走肉
</body></html>

验证

#第二个errorloc
#在haproxy配置文件default模块中添加一行
errorloc 503 https://www.baidu.com

 验证

10、四层tcp负载均衡数据库

环境需求

主机IP角色
haproxy192.168.220.100负载均衡调度器
server1192.168.220.150db1
server2192.168.220.200

db2

haproxy

vim /etc/haproxy/haproxy.cfg
#在最下方写入内容
listen dbservers
    bind *:3306        #监听任何主机的3306端口
    mode tcp           #使用四层负载均衡
    balance static-rr           #使用静态轮询算法
    server db1 192.168.220.150:3306 check inter 2 fall 2 rise 3 #服务器1 
    server db2 192.168.220.200:3306 check inter 2 fall 2 rise 3 #服务器2
#保存并退出
:x
#重启haproxy,重启之前需要将server1和server2配置好
systemctl restart haproxy

server1

#安装数据库
yum install mariadb-server -y
#修改配置文件以区分集群中数据库
vim /etc/my.cnf.d/mariadb-server.cnf
#在[mysqld]下增加一行内容
server-id=1
#保存并退出
:x
#启动数据库
systemctl enable --now mariadb

 server2

#安装数据库
yum install mariadb-server -y
#修改配置文件以区分集群中数据库
vim /etc/my.cnf.d/mariadb-server.cnf
#在[mysqld]下增加一行内容
server-id=2
#保存并退出
:x
#启动数据库
systemctl enable --now mariadb

最后在windows上验证数据库负载均衡是否成功 ,效果如下

11、Haproxy https实现

写在最后

慢启动

        慢启动是指在服务器刚刚启动上不会把他所应该承担的访问压力全部给它,而是先给一部分,当没 问题后在给一部分

hash取模算法

  • 10对3取模 -> 10=3×3+1 -> 10%3=1
  • 2对5取模 -> 2=5×0+2 -> 2%5=2
  • 34对6取模 -> 34=6×5+4 -> 34%6=4

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

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

相关文章

24年下半年软考只剩下3个月时间,来得及准备吗?

过来人告诉你来得及&#xff0c;但是选对科目很重要&#xff01; 一般来说&#xff0c;自学备考软考的时间为4-5个月&#xff0c;如果大家现在才开始备考的话&#xff0c;时间就有点紧张了&#xff0c;需要加倍努力才行&#xff0c;推荐大家可以报考一些相对简单的科目&#x…

Windows Server 2012 R2服务器安装CVE-2024-38077补丁KB5040456的安装及问题解决

Windows 远程桌面授权服务远程代码执行漏洞CVE-2024-38077&#xff0c;该漏洞影响: 远程执行代码&#xff0c;漏洞最高严重性: 严重。本文记录了Windows Server 2012 R2服务器补丁KB5040456的安装及报错“此更新不适用于你的计算机”的问题解决过程。 一、漏洞相关信息 1.影响…

具有 SAM2 分段的 NDVI 无人机

在我们之前的博客文章《OAK相机扩展NDVI功能检测植物健康情况》中&#xff0c;我们探讨了 NDVI 方法以及如何使用多光谱相机计算它。 今天&#xff0c;我们通过使用带有多光谱相机的无人机并使用 SAM2 模型进行场分割和健康比较&#xff0c;将 NDVI 感知提升到一个新的水平。 …

基于Python的孔夫子旧书网热销书籍爬虫与可视化分析报告

摘要&#xff1a;随着社会的不断发展&#xff0c;数据时代的到来&#xff0c;数据的背后是什么&#xff0c;数据有什么用&#xff0c;怎么用庞大的数据来呈现出数据的价值&#xff0c;让我们一起去揭开它神秘的面纱。 以孔夫子旧书网热销书籍5本图书数据爬取为例&#xff0c;介…

免费录屏软件之QQ

录屏太简单了 1、首先下载QQ 2、在随便打开个对话框&#xff0c;再操作1、2步骤即可 3、嫌打开对话框麻烦&#xff1f; 4、打开QQ后直接按下CtrlAltR即可录屏&#xff0c;连对话框都不用打开了&#xff0c;按完快捷键后效果如下&#xff1a; 5、点击右下角开始录屏即可

想在官网中放可以720°交互的3D模型,怎么做?

在官网中放置可以交互的3D模型&#xff0c;可以通过以下步骤实现&#xff1a; 一、准备3D模型 1、设计3D模型&#xff1a; 使用专业的3D建模软件&#xff08;如Blender、3ds Max、Maya等&#xff09;制作符合需求的3D模型。确保模型的尺寸、比例和细节都符合实际要求。 2、…

斜坡函数在PLC中的应用

最近在做项目的时候用到了通过模拟量输出控制设备速度快慢。因为之前大多数是通过端子控制或者是总线的控制方式来控制速度&#xff0c;因此首先尝试了端子控制模拟速度输出。但是由于加速度过大导致设备启动后会快速加速&#xff0c;停止时也会快速减速&#xff0c;不够平滑。…

数据库:数据查询

1 实验目的 掌握SQL语言的数据查询语句,具体包括&#xff1a; SELECT语句的基本用法 使用WHERE子句进行有条件的查询 使用IN&#xff0c;NOT IN&#xff0c;BETWEEN等谓词查询 利用LIKE子句实现模糊查询 利用ORDER子句为结果排序 用…

SQL Server 2022的游标

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 游标是SQL Serv…

使用 CSS 打印样式为 Web 页面设置专业的打印机效果

对于有打印需求的网页&#xff0c;特别是文章的详情页&#xff0c;需要设置专门的打印样式来适配页面。CSS 打印样式允许你为网页设置专门用于打印的样式。文本就是专门介绍如何使用 CSS 打印样式为 Web 页面设置专业的打印机效果。 media print 通过使用 media print 媒体查…

【轨物洞见】当下是技术创新的好时机

“创新之父”熊比特认为&#xff0c;创新是一个经济学名词&#xff0c;是一种新的生产函数&#xff0c;即通过重新组合从未有过的生产要素来引入现有的生产过程&#xff0c;判断创新的关键是有没有创造价值。熊比特认为&#xff0c;创新是经济发展的根本动力&#xff0c;它包括…

[LitCTF 2023]debase64-入土为安的第十八天

点进去sub_401520(v15, (int)v4) if ( !*a1 )return 0;v2 a1 4;v3 a1;v4 0;v5 0;v13 0;while ( 1 ){v14 -1;for ( i 0; i ! 64; i ){while ( byte_404000[i] ! *v3 ){if ( i 64 )goto LABEL_7;}LOBYTE(v14) i;} LABEL_7:LOBYTE(i) 0;do{while ( byte_404000[i] ! a1…

【三维重建】SpotlessSplats:去除瞬态干扰物的三维高斯喷溅(3DGS)

代码&#xff1a;https://spotlesssplats.github.io 论文&#xff1a;https://arxiv.org/pdf/2406.20055 来源&#xff1a;DeepMind&#xff0c;多伦多大学&#xff0c;斯坦福大学&#xff0c;西蒙弗雷泽大学 提示&#xff1a;关注B站【方矩实验室】&#xff0c;查看视频讲解…

【SQL】有趣的电影

目录 题目 分析 代码 题目 表&#xff1a;cinema -------------------------- | Column Name | Type | -------------------------- | id | int | | movie | varchar | | description | varchar | | rating | float | -…

JDBC如何避免SQL注入

JDBC如何避免SQL注入 一 . 什么是SQL注入 SQL注入&#xff08;SQL Injection&#xff09;是一种代码注入技术&#xff0c;它允许攻击者将或“注入”恶意的SQL命令到后端数据库引擎执行。这些恶意的SQL命令可以执行未授权的数据库查询、修改数据、管理数据库服务器上的文件系统…

2024.8.12 作业

TCP服务器端代码实现 #include <myhead.h> #define SER_PORT 6666 #define SER_IP "192.168.254.129" int main(int argc,const char *argv[]) {//1.创建套接字文件int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror("socket error");retur…

Echarts-GL和three.js对比,实力在一个档次么?

我们都知道echarts非常好用&#xff0c;简单配置就可以实现各式各样的图表下过&#xff0c;echarts有一个扩展叫echarts-GL&#xff0c;可以实现三维图表效果&#xff0c;那么和three.js相比呢&#xff1f; 一、Echarts-GL的来源 ECharts-GL 是百度开源的一款基于 WebGL 的数据…

PMP和PMI-ACP 考哪个证书好,还是两个都考?

PMP是一个由美国项目管理协会&#xff08;PMI&#xff09;发起的项目管理专业人士或专家资格认证&#xff0c;它评估从业者领导和引导项目团队的能力。PMP在中国早已推广&#xff0c;基于系统项目管理的框架体系&#xff0c;是项目管理领域的基本要求。这个证书知名度很高&…

为什么要加强产供协同管理?可以从哪些方面提高产供协同效率?

随着市场竞争的加剧和客户需求的多变&#xff0c;企业之间的竞争已经转变为供应链之间的竞争。在这一背景下&#xff0c;产供协同管理显得尤为重要。本文将概述加强产供协同管理的必要性&#xff0c;探讨其在提升企业响应速度、优化库存、增强客户满意度和降低成本方面的作用&a…

【数学建模备赛】Ep02:TOPSIS模型(优劣解距离法)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、TOPSIS法&#xff1a;☀️☀️☀️1. 引入&#xff08;综合类评价问题&#xff09;1.1 分析层次分析法的局限1.2 小例子①给出评分类比权重②构造计算评分的公式③解释④拓展问题&#xff08;增加指标个数&#x…