运维锅总详解HAProxy

本文尝试从HAProxy简介、HAProxy工作流程及其与Nginx的对比对其进行详细分析;在本文最后,给出了为什么Nginx比HAProxy更受欢迎的原因。希望对您有所帮助!

HAProxy简介

HAProxy(High Availability Proxy)是一款广泛使用的开源软件,主要用于负载均衡和代理。它在高性能、可靠性和灵活性方面表现出色,广泛应用于各种规模的企业和互联网服务中。以下是关于HAProxy的介绍:

HAProxy最初由Willy Tarreau在2000年开发,旨在提供高性能和高可用性的负载均衡解决方案。它主要用于分发网络或应用流量,确保服务的可用性和响应速度。

主要功能和特点

1. 高性能
  • 多线程支持:现代版本的HAProxy支持多线程,充分利用多核CPU的性能。
  • 高吞吐量:HAProxy能够处理大量并发连接,每秒可以处理数十万甚至百万级别的请求。
  • 低延迟:优化的事件驱动架构保证了低延迟处理。
2. 负载均衡算法
  • 轮询(Round Robin):将请求依次分发到后端服务器。
  • 最少连接数(Least Connections):将请求分发到当前连接数最少的服务器。
  • 源IP哈希(Source IP Hashing):根据请求的源IP地址进行分发,保证同一IP的请求始终分发到同一服务器。
  • 加权轮询(Weighted Round Robin):根据服务器权重分配请求,权重高的服务器分配更多请求。
3. 高可用性
  • 健康检查:定期检查后端服务器的健康状态,自动移除不可用的服务器。
  • 自动故障转移:在检测到故障时,自动将流量切换到健康的服务器。
4. 安全性
  • SSL/TLS终止:支持在代理层进行SSL/TLS解密,减轻后端服务器的负担。
  • 防DDoS:内置多种防护措施,可以有效抵御DDoS攻击。
5. 灵活性和可扩展性
  • 支持多种协议:支持HTTP、HTTPS、TCP和UDP等多种协议。
  • 配置灵活:通过配置文件可以实现非常灵活的流量管理策略。

HAProxy的优缺点

优点
  1. 高性能和高可用性:在高并发和高流量场景下表现优异。
  2. 丰富的负载均衡算法:能够根据不同需求选择最合适的算法。
  3. 强大的健康检查和故障转移机制:保证服务的高可用性。
  4. 灵活的配置:可以满足复杂的流量管理需求。
  5. 开源和社区支持:拥有庞大的用户社区和丰富的文档支持。
缺点
  1. 配置复杂:对于初学者来说,复杂的配置文件和众多选项可能会有一定的学习曲线。
  2. 高级功能需要专业知识:一些高级功能的配置和优化需要较深入的专业知识。

HAProxy的历史演进

1. 初期开发(2000-2005)
  • 2000年:Willy Tarreau开始开发HAProxy,旨在提供高性能的负载均衡解决方案。
  • 2001年:HAProxy 1.0发布,初步具备负载均衡和健康检查功能。
2. 功能扩展和社区发展(2006-2010)
  • 2006年:HAProxy 1.2发布,引入了高级负载均衡算法和改进的健康检查机制。
  • 2009年:HAProxy 1.3发布,增加了对更多协议的支持,包括TCP和HTTPS。
3. 稳定性和性能优化(2011-2015)
  • 2011年:HAProxy 1.4发布,引入了对多核CPU的支持和更灵活的配置选项。
  • 2013年:HAProxy 1.5发布,支持SSL终止和多线程,进一步提升性能和安全性。
4. 现代化和云支持(2016-至今)
  • 2016年:HAProxy 1.6发布,引入了更多的性能优化和安全特性。
  • 2017年:HAProxy 1.7发布,支持HTTP/2和改进的SSL/TLS性能。
  • 2018年:HAProxy 1.8发布,全面支持多线程和更多的协议。
  • 2019年:HAProxy 2.0发布,引入了更多现代化特性和对云环境的支持。
  • 2020年:HAProxy 2.2发布,增加了对更多云平台的支持和改进的负载均衡算法。
  • 2021年:HAProxy 2.4发布,进一步优化了性能和安全性,支持更多的现代Web标准。
  • 2022年:HAProxy 2.6发布,增强了对微服务和容器化环境的支持。

主要里程碑总结

  1. 2000年:开始开发。
  2. 2001年:发布第一个版本。
  3. 2011年:引入多核支持。
  4. 2013年:支持SSL终止。
  5. 2017年:支持HTTP/2。
  6. 2019年:HAProxy 2.0发布,支持现代化特性和云环境。

HAProxy在过去20多年中不断发展,逐步成为高性能和高可靠性的负载均衡解决方案。通过不断引入新功能和优化性能,HAProxy在现代Web应用和云环境中扮演着重要角色。

HAProxy工作流程

要深入了解HAProxy的工作流程,可以分解HAProxy的处理流程,包括接收请求、选择后端服务器、转发请求、处理响应、健康检查等步骤。以下是HAProxy的详细工作流程以及调用的具体模块。

HAProxy工作流程

  1. 接收客户端请求:客户端请求到达HAProxy前端。
  2. 解析请求:HAProxy解析请求,确定要使用的前端和后端配置。
  3. 选择后端服务器:根据配置的负载均衡算法,HAProxy从后端服务器池中选择一台服务器。
  4. 转发请求:将客户端请求转发到选定的后端服务器。
  5. 服务器处理请求:后端服务器处理请求并生成响应。
  6. 转发响应:将后端服务器的响应转发回客户端。
  7. 健康检查:定期对后端服务器进行健康检查,确保其可用性。

详细的Mermaid图

日志和监控模块
健康检查模块
轮询
最少连接
源IP哈希
记录请求日志
接收请求模块
记录响应日志
后端服务器处理请求
记录健康检查日志
健康检查
选择后端服务器1
选择后端服务器2
选择后端服务器3
客户端请求
解析请求模块
选择负载均衡算法
转发请求模块
生成响应
转发响应模块
客户端响应

解释

  1. 客户端请求:客户端发出请求,发送到HAProxy。
  2. 接收请求模块:HAProxy接收客户端请求,进入接收请求模块。
  3. 解析请求模块:HAProxy解析请求,确定使用的前端和后端配置。
  4. 选择负载均衡算法:根据配置的负载均衡算法,选择适当的后端服务器。
    • 轮询:选择后端服务器1。
    • 最少连接:选择后端服务器2。
    • 源IP哈希:选择后端服务器3。
  5. 转发请求模块:将客户端请求转发到选定的后端服务器。
  6. 后端服务器处理请求:后端服务器处理请求并生成响应。
  7. 生成响应:后端服务器生成响应。
  8. 转发响应模块:将后端服务器的响应转发回客户端。
  9. 客户端响应:客户端接收到来自HAProxy的响应。

健康检查模块

  • 健康检查:定期对后端服务器进行健康检查,确保其可用性。健康检查模块与选择后端服务器模块(E、F、G)相连接,以确保选择的服务器都是健康的。

日志和监控模块

  • 记录请求日志:在接收请求时记录请求日志。
  • 记录响应日志:在处理响应时记录响应日志。
  • 记录健康检查日志:在进行健康检查时记录健康检查日志。

具体实现原理和调用模块

  • 接收请求模块:负责接受客户端的请求,并传递给解析请求模块。
  • 解析请求模块:解析HTTP请求头、确定目标前端和后端配置。
  • 选择负载均衡算法模块:根据配置选择合适的负载均衡算法,并选择相应的后端服务器。
  • 转发请求模块:将解析后的请求转发到选定的后端服务器。
  • 后端服务器处理请求模块:后端服务器接收请求并生成响应。
  • 生成响应模块:后端服务器生成响应内容并返回给HAProxy。
  • 转发响应模块:将后端服务器生成的响应转发回客户端。
  • 健康检查模块:定期检查后端服务器的健康状态,确保服务器的可用性。
  • 日志和监控模块:记录请求、响应和健康检查的日志,用于监控和调试。

这张详细的Mermaid图和解释展示了HAProxy的工作流程和调用的具体模块,帮助理解其内部工作机制。

和Nginx有什么区别,两者各有什么优势

HAProxy和Nginx都是非常流行的开源负载均衡和反向代理软件,各自有不同的特点和优势。以下是两者的详细对比:

基本介绍

  • Nginx:最初由Igor Sysoev于2004年开发,主要设计用于高性能的HTTP服务器、反向代理服务器以及负载均衡器。Nginx以其高并发处理能力和低资源消耗著称。

  • HAProxy:由Willy Tarreau于2000年开发,主要设计用于提供高可用性、负载均衡和代理服务。HAProxy以其强大的负载均衡和高可用性功能闻名。

工作模式

  • Nginx:基于事件驱动架构,可以高效地处理大量并发连接。支持HTTP、HTTPS、IMAP、POP3、SMTP等多种协议。

  • HAProxy:基于事件驱动和单线程架构,专注于TCP和HTTP协议的负载均衡和代理。能够处理非常高的并发连接和请求速率。

主要特性和优势对比

1. 性能
  • Nginx

    • 高并发处理:能够处理数十万并发连接。
    • 低内存占用:高效的事件驱动模型,低资源消耗。
  • HAProxy

    • 极高的请求处理能力:能够处理每秒数百万的请求。
    • 细粒度的性能优化:专门为高性能和高可用性设计。
2. 配置和灵活性
  • Nginx

    • 灵活的配置文件:支持模块化配置,易于扩展和定制。
    • 广泛的功能支持:包括静态文件服务、反向代理、负载均衡、缓存、SSL终止等。
  • HAProxy

    • 高度优化的配置文件:配置选项多样,针对性能和高可用性进行了优化。
    • 高级负载均衡算法:支持多种负载均衡算法,如轮询、最少连接、源IP哈希等。
3. 健康检查和故障转移
  • Nginx

    • 基础健康检查:支持简单的健康检查功能,通过配置进行状态监控。
  • HAProxy

    • 高级健康检查:支持多种健康检查方法,如TCP、HTTP、SSL等,并可以对健康检查进行细粒度的配置。
    • 自动故障转移:在后端服务器故障时自动进行故障转移,确保服务高可用性。
4. 代理和协议支持
  • Nginx

    • 多协议支持:支持HTTP、HTTPS、IMAP、POP3、SMTP等多种协议。
    • 反向代理和缓存:强大的反向代理和缓存功能,适用于Web加速。
  • HAProxy

    • 专注于TCP和HTTP:主要支持TCP和HTTP协议,专注于高性能的负载均衡和代理。
    • SSL/TLS支持:支持SSL终止和传递,增强了安全性。
5. 扩展性和社区支持
  • Nginx

    • 模块化设计:支持动态加载模块,可以根据需求扩展功能。
    • 活跃的社区和广泛的文档:拥有庞大的用户社区和丰富的文档支持。
  • HAProxy

    • 集中式功能设计:所有功能都直接集成在核心中,无需额外的模块。
    • 专业支持和丰富的文档:活跃的开发者社区和详细的文档支持。

适用场景

  • Nginx

    • Web服务器:适合作为高性能的Web服务器,提供静态内容服务。
    • 反向代理:适合作为反向代理服务器,提供缓存和负载均衡功能。
    • 应用交付控制器:适用于需要高级HTTP处理功能的场景,如Web加速和安全性增强。
  • HAProxy

    • 高性能负载均衡:适用于需要极高请求处理能力和高可用性的负载均衡场景。
    • 全局流量管理:适用于需要复杂流量管理和细粒度控制的环境。
    • 高可用性场景:适用于要求严格的健康检查和故障转移机制的场景。

总结

  • Nginx以其灵活性和多功能性著称,适用于各种Web应用和反向代理场景。它的模块化设计和多协议支持使其在Web服务器领域非常受欢迎。
  • HAProxy以其卓越的负载均衡和高可用性功能闻名,适用于高性能和高可靠性的场景。它专注于TCP和HTTP协议,提供了极高的请求处理能力和细粒度的控制。

两者各有优势,选择使用哪一个主要取决于具体的应用需求和使用场景。在许多情况下,Nginx和HAProxy可以结合使用,发挥各自的优势,提供更强大的解决方案。

HAProxy最佳实践

以下是20项HAProxy生产最佳实践,每项都附有简要介绍:

1. 使用全局日志

配置全局日志以便于故障排除和监控。

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice

2. 限制最大连接数

限制最大连接数以防止资源耗尽。

global
    maxconn 20000

3. 使用非root用户运行

使用非root用户运行HAProxy,提高安全性。

global
    user haproxy
    group haproxy

4. 启用守护进程模式

确保HAProxy以守护进程模式运行。

global
    daemon

5. 设置合理的超时时间

设置各种超时时间以避免长时间占用资源。

defaults
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms

6. 启用HTTP日志

启用HTTP日志以便于分析请求和响应。

defaults
    option httplog

7. 启用HTTP健康检查

使用HTTP健康检查以确保后端服务器的可用性。

backend http_back
    option httpchk GET /health

8. 使用强加密算法

在SSL/TLS配置中使用强加密算法。

frontend https_front
    bind *:443 ssl crt /etc/ssl/private/haproxy.pem

9. 启用HTTP/2

启用HTTP/2以提高传输性能。

frontend https_front
    bind *:443 ssl crt /etc/ssl/private/haproxy.pem alpn h2,http/1.1

10. 设置负载均衡算法

选择合适的负载均衡算法(如轮询、最少连接)。

backend http_back
    balance roundrobin

11. 启用压缩

启用压缩以减少传输数据量。

frontend http_front
    compression algo gzip
    compression type text/html text/plain text/css

12. 使用ACL进行访问控制

使用ACL进行细粒度的访问控制。

frontend http_front
    acl restricted_page path_beg /admin
    http-request deny if restricted_page

13. 启用连接重用

启用连接重用以减少连接建立的开销。

defaults
    option http-server-close
    option forwardfor except 127.0.0.0/8

14. 使用DNS解析后端服务器

使用DNS解析后端服务器以便动态更新IP。

backend http_back
    server-template web 1-5 web.example.com:80 check

15. 启用统计界面

启用统计界面以便监控HAProxy的状态。

frontend stats
    bind *:8404
    stats enable
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth admin:password

16. 设置合理的重试次数

设置请求重试次数以提高可用性。

defaults
    retries 3

17. 启用监控和报警

配置监控和报警以便快速响应故障。

backend http_back
    option log-health-checks

18. 优化连接池

优化连接池以提高性能和资源利用率。

defaults
    maxconn 3000

19. 使用Keepalived实现高可用性

使用Keepalived实现HAProxy的高可用性。

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

20. 定期更新和安全补丁

定期更新HAProxy版本和应用安全补丁以确保安全性和性能。

通过实施这些最佳实践,可以确保HAProxy在生产环境中的高性能、高可用性和安全性。这些实践涵盖了从配置优化到安全性增强的各个方面,帮助你打造一个稳定可靠的HAProxy负载均衡解决方案。

配置示例

下面是一个综合了上述20项最佳实践的完整HAProxy生产配置示例。这个配置文件包含了全局设置、默认设置、前端和后端配置、高可用性、健康检查、日志记录和安全设置等方面。

# 全局设置
global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 20000
    user haproxy
    group haproxy
    daemon
    stats socket /var/run/haproxy.sock mode 600 level admin
    tune.ssl.default-dh-param 2048

# 默认设置
defaults
    log global
    option httplog
    option dontlognull
    option http-server-close
    option forwardfor except 127.0.0.0/8
    retries 3
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
    timeout http-request 10s
    timeout queue 1m
    timeout http-keep-alive 10s
    timeout check 10s
    maxconn 3000

# 前端配置(HTTP)
frontend http_front
    bind *:80
    mode http
    default_backend http_back
    option httplog
    log global
    maxconn 10000
    # 启用压缩
    compression algo gzip
    compression type text/html text/plain text/css
    # ACL 进行访问控制
    acl restricted_page path_beg /admin
    http-request deny if restricted_page

# 前端配置(HTTPS)
frontend https_front
    bind *:443 ssl crt /etc/ssl/private/haproxy.pem alpn h2,http/1.1
    mode http
    default_backend https_back
    option httplog
    log global
    maxconn 10000

# 后端配置(HTTP)
backend http_back
    balance roundrobin
    mode http
    option httpchk GET /health
    server web1 192.168.1.1:80 check
    server web2 192.168.1.2:80 check
    # 启用连接重用
    option http-server-close
    option forwardfor except 127.0.0.0/8
    # 启用监控和报警
    option log-health-checks

# 后端配置(HTTPS)
backend https_back
    balance roundrobin
    mode http
    option httpchk GET /health
    server web1 192.168.1.1:443 ssl verify none check
    server web2 192.168.1.2:443 ssl verify none check

# 统计界面配置
frontend stats
    bind *:8404
    mode http
    stats enable
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth admin:password
    stats admin if TRUE

# 高可用性配置(Keepalived示例)
# Keepalived配置需要放在Keepalived配置文件中,一般是 /etc/keepalived/keepalived.conf
# 示例:
#
# vrrp_instance VI_1 {
#     state MASTER
#     interface eth0
#     virtual_router_id 51
#     priority 100
#     advert_int 1
#     authentication {
#         auth_type PASS
#         auth_pass password
#     }
#     virtual_ipaddress {
#         192.168.1.100
#     }
# }

# 高可用性配置指示
# 请将上述 Keepalived 配置保存为 /etc/keepalived/keepalived.conf 并启动 Keepalived 服务。

# 连接池优化
defaults
    maxconn 3000

# 使用DNS解析后端服务器
backend dynamic_http_back
    balance roundrobin
    mode http
    option httpchk GET /health
    server-template web 1-5 web.example.com:80 check

# 定期更新和安全补丁
# 这个部分需要手动执行,确保你的HAProxy版本是最新的,并定期应用安全补丁。

# 完整的配置文件示例

解释

  • 全局设置:定义全局日志、最大连接数、运行用户和组、守护进程模式、统计套接字等。
  • 默认设置:设置日志、HTTP选项、重试次数、超时时间和最大连接数等。
  • 前端配置(HTTP/HTTPS):绑定IP和端口、启用压缩、设置ACL、日志和模式、启用HTTP/2。
  • 后端配置(HTTP/HTTPS):定义负载均衡算法、健康检查、连接重用、启用监控和报警。
  • 统计界面配置:启用并配置统计界面。
  • 高可用性配置:使用Keepalived实现高可用性。
  • 连接池优化:优化连接池设置。
  • 使用DNS解析后端服务器:动态解析后端服务器IP。
  • 定期更新和安全补丁:确保定期更新和应用安全补丁。

通过遵循这些最佳实践,可以确保HAProxy在生产环境中的高性能、高可用性和高安全性。

为什么Nginx比HAProxy更受欢迎

从多个角度来看,Nginx在某些场景下比HAProxy更受欢迎,主要原因如下:

1. 多功能性

  • 反向代理和静态内容服务:Nginx不仅仅是一个负载均衡器,它还可以作为一个高性能的HTTP服务器,能够处理静态内容,提供反向代理功能。
  • 多协议支持:Nginx支持多种协议,包括HTTP、HTTPS、HTTP/2、WebSocket等,而HAProxy主要集中在TCP和HTTP负载均衡。

2. 性能和资源利用

  • 事件驱动架构:Nginx采用事件驱动架构,在处理大量并发连接时表现出色。相比之下,虽然HAProxy在高并发情况下也表现良好,但Nginx的设计使其在处理静态内容和反向代理方面更具优势。
  • 内存和CPU效率:Nginx的设计更加轻量化,在相同的硬件资源下,可以处理更多的请求和连接。

3. 配置简便性

  • 易于配置:Nginx的配置文件语法相对简单且直观,尤其是在处理静态内容和反向代理设置时。
  • 模块化设计:Nginx支持动态加载模块,使其在扩展和配置方面更加灵活。

4. 社区和生态系统

  • 广泛的社区支持:Nginx拥有一个庞大的用户社区,提供丰富的文档、教程和支持,使新用户更容易上手和解决问题。
  • 丰富的插件和模块:Nginx的生态系统中有许多第三方模块和插件,可以扩展其功能,满足各种需求。

5. 功能丰富

  • 广泛的功能集:Nginx原生支持许多功能,如缓存、负载均衡、限速、访问控制和SSL/TLS终止等,这些功能在一个工具中集成,使其在各种场景下都非常实用。
  • 高级功能:Nginx Plus(商业版)提供了一些高级功能,如活动健康检查、动态重新配置、增强的监控和分析等,进一步增强了Nginx的吸引力。

6. 市场接受度和惯性

  • 市场占有率:由于早期的广泛采用,Nginx在市场上已经占据了很大的份额,很多企业和开发者已经习惯于使用Nginx,并形成了使用惯性。
  • 集成支持:许多开源和商业软件,如容器编排工具(Kubernetes)、CI/CD工具和云服务平台,默认或优先支持Nginx作为反向代理或负载均衡解决方案。

7. 可扩展性

  • 自动伸缩支持:在容器化环境和微服务架构中,Nginx能够更好地支持自动伸缩和动态配置,这在现代应用部署中非常重要。
  • 灵活的负载均衡策略:虽然HAProxy也提供多种负载均衡算法,但Nginx在配置和灵活性方面更具优势。

8. 商业支持

  • Nginx Plus:Nginx公司提供的商业支持和增强版(Nginx Plus),提供了更多的企业级功能和技术支持,这对一些企业用户非常有吸引力。
  • 长期支持:Nginx提供了长期支持版本(LTS),使企业用户可以在稳定的版本上获得持续的支持和更新。

总结

Nginx的多功能性、性能优势、配置简便性、广泛的社区支持、丰富的功能集、市场接受度、可扩展性和商业支持使其在许多场景下比HAProxy更受欢迎。虽然HAProxy在负载均衡和高可用性方面表现出色,但Nginx的综合优势使其成为许多用户的首选解决方案。

完。

一个秘密

希望对您有用!关注锅总,及时获得更多花里胡哨的运维实用操作!

图片

锅总个人博客

https://gentlewok.blog.csdn.net/

锅总微信公众号

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【知识学习】阐述Unity3D中Profile和性能的概念及使用方法示例

在Unity3D中,"Profile"和"性能"是两个相关但不同的概念,它们在游戏开发中扮演着重要的角色。 Profile(配置文件) "Profile"在Unity中通常指的是一种配置文件,它包含了一系列的设置和参…

JAVA医院绩效考核管理系统源码:系统优势、系统目的、系统原则 (自主研发 功能完善 可直接上项目)

JAVA医院绩效考核管理系统源码:系统优势、系统目的、系统原则 (自主研发 功能完善 可直接上项目) 医院绩效考核系统优势 1.实现科室负责人单独考核 对科室负责人可以进行单独考核、奖金发放。 2. 科室奖金支持发放到个人 支持奖金二次分配&…

Numpy array和Pytorch tensor的区别

1.Numpy array和Pytorch tensor的区别 笔记来源: 1.Comparison between Pytorch Tensor and Numpy Array 2.numpy.array 4.Tensors for Neural Networks, Clearly Explained!!! 5.What is a Tensor in Machine Learning? 1.1 Numpy Array Numpy array can only h…

已解决问题 | 该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的

在Chrome浏览器中,如果你看到“该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的”这样的提示,通常是因为该扩展程序没有通过Chrome网上应用店进行安装。以下是解决这个问题的步骤: 解决办法:…

Bridging nonnull in Objective-C to Swift: Is It Safe?

Bridging nonnull in Objective-C to Swift: Is It Safe? In the world of iOS development, bridging between Objective-C and Swift is a common practice, especially for legacy codebases (遗留代码库) or when integrating (集成) third-party libraries. One importa…

uniapp+vue3开发微信小程序踩坑集

本文主要记录使用uniappvue3开发微信小程序遇见的各种常见问题及注意点。(持续更新) 问题: 自定义组件为什么有些样式加不上去 给自定义组件增加class的时候,有时候不生效有时候生效,一度让我怀疑自己记忆错乱。后来…

揭秘Etched AI:三个哈佛辍学00后挑战英伟达,推出Transformer专用ASIC芯片sohu

人工智能领域最近掀起了一股新的热潮,三位哈佛辍学的00后本科生创建了Etched AI,并成功推出了一款超强AI芯片sohu,直指英伟达的AI芯片帝国。这款芯片被誉为比英伟达H100快20倍,吸引了众多科技界的关注。本文将深入探讨Etched AI及…

css 布局出现无法去除的空白

案件介绍&#xff1a;在没有设置任何的css样式的情况下 文字顶部出现无法去除的空白 源代码 <div click"onClick" ><div class"tableTextButton--container"></div><Icon v-if"loading || thisLoading" type"ios-lo…

springboot的特点是什么?

Spring Boot是一个基于Spring框架的开源项目&#xff0c;它旨在简化Spring应用的初始搭建和开发过程。以下是Spring Boot的一些主要特点&#xff1a; 快速开发&#xff1a; Spring Boot提供了许多默认配置&#xff0c;使得开发者可以更快地开始开发应用程序&#xff0c;而无需…

Linux Doxygen快速生成文档

此前写过一篇编写Doxygen格式的注释以用于生成文档,点击以查阅, Doxygen常用语法与字段记录,但是当时用的windows桌面版的doxygen,最近使用ubuntu编写代码想直接使用doxygen生成,故写下此博客 Doxygen Doxygen是一个用于生成软件文档的工具&#xff0c;它可以从代码中提取注释…

工业自动化控制中心

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using System; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace 工业自动化控制中心 {public partial class Form1 : Form{public Form1(){InitializeComponent();}pri…

【智能算法】目标检测算法

目录 一、目标检测算法分类 二、 常见目标检测算法及matlab代码实现 2.1 R-CNN 2.1.1 定义 2.1.2 matlab代码实现 2.2 Fast R-CNN 2.2.1 定义 2.2.2 matlab代码实现 2.3 Faster R-CNN 2.3.1 定义 2.3.2 matlab代码实现 2.4 YOLO 2.4.1 定义 2.4.2 matlab代码实现…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时&#xff0c;服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如&#xff1a;客户端1s内连续发送了两个hello world&#xff01;,服务器过了2s才接…

昇思25天学习打卡营第11天|SSD目标检测

1. 学习内容复盘 模型简介 SSD&#xff0c;全称Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上&#xff0c;SSD对于输入尺寸300x300的网络&#xff0c;达到74.3%mAP(mean Average Precision)…

amis源码 更新组件数据域的几种方法

更新组件数据域的几种方法&#xff1a; 默认都是合并数据&#xff0c;非覆盖(指定replace为true的才是覆盖)&#xff1a; const comp amisScoped.getComponentById(id);//或者getComponentByName(name) 1.comp.setData(values, replace); //更新多个值values&#xff0c; r…

开启网络监控新纪元:免费可视化工具助力网络信息链路拓扑监控大屏

在数字化浪潮汹涌的今天&#xff0c;网络已成为我们生活、工作的不可或缺的一部分。然而&#xff0c;你是否曾经想过&#xff0c;在这个庞大的网络世界中&#xff0c;是谁在默默守护着每一条信息的传输&#xff0c;确保我们的数据安全、稳定地抵达目的地&#xff1f; 网络信息链…

昇思MindSpore学习总结五——网络构建

1、网络构建 神经网络模型是由神经网络层和Tensor操作构成的&#xff0c;mindspore.nn提供了常见神经网络层的实现&#xff0c;在MindSpore中&#xff0c;Cell类是构建所有网络的基类&#xff0c;也是网络的基本单元。一个神经网络模型表示为一个Cell&#xff0c;它由不同的子C…

【机器学习300问】136、C4.5虽然改善了ID3决策树算法的部分缺点,但还是有不足,请问还有更好的算法吗?CART算法构建决策树

一、C4.5算法仍存在的不足 &#xff08;1&#xff09;计算效率不高 C4.5使用的信息增益率计算涉及熵的对数计算&#xff0c;特别是当属性值数量大时&#xff0c;计算成本较高。 &#xff08;2&#xff09;处理连续数值属性不够高效 ID3算法只能处理离散属性&#xff0c;需要预…

STM32CUBEMX配置USB虚拟串口

STM32CUBEMX配置USB虚拟串口 cubemx上默认配置即可。 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 配置完后生成工程&#xff0c;主要就是要知道串口的收发接口就行了。 发送&#xff1a;CDC_Transmit_FS()&#xff0c;同时记得包含头文件#include “…

转运机器人:智能物流的得力助手

在物流行业&#xff0c;转运机器人已经成为提高转运效率、降低成本的重要工具。而富唯智能转运机器人凭借其出色的性能和智能化的设计&#xff0c;成为了众多企业的得力助手。 富唯智能转运机器人采用了先进的AMR控制系统&#xff0c;可以一体化控制移动机器人并实现与产线设备…