运维锅总详解HAProxy

news2024/12/26 11:20:26

本文尝试从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.coloradmin.cn/o/1877666.html

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

相关文章

开源项目-商城管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示,我的订单,个人中心等内容;后端的主要功能包括产品管理,门店管理,会员管理,订单管理等模块 移动端页面

汽车电子工程师入门系列——AUTOSAR通信服务框架(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

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

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

实验 1 图像基本操作

1. 实验目的 ①熟悉 Photoshop 基本操作; ②掌握 Matlab 、PythonOpenCV 中处理图像的基本方法; ③掌握图像的半调转换和抖动转换。 2. 实验内容 ①Photoshop 基本操作:打开图像文件,选择区域,旋转、裁剪图像、图层…

PHP电商系统开发指南数据库管理

回答:数据库管理是电商系统开发的关键,涉及数据的存储、管理和检索。选择合适的数据库引擎,如mysql或 postgresql。创建数据库架构,定义数据的组织方式(如产品表、订单表)。进行数据建模,考虑实…

华润万家超市卡怎么用?

华润的礼品卡不仅能线下门店使用,还能直接叫送货上门 我最近用积分兑了几张华润卡,但是又没有购物需求,送朋友吧面值又不大,朋友也说用不上 最后朋友建议我在收卡云上把卡出掉,我试了下92折出掉了,价格还…

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个…

Python之父推荐!Star 60k!这本 CPython 书把内部实现全讲透了!

都说 Python 是人工智能的“天选”语言,为什么呢? 可能很多读者都知道,Python 的解释器是用 C 语言写的,所以其实我们在谈论 “Python” 的时候,99.9% 的情况说的就是 “CPython”! CPython 是目前最流行的…

《昇思25天学习打卡营第11天 | 昇思MindSpore基于 MindSpore 实现 BERT 对话情绪识别》

11天本节学习到BERT全称是来自变换器的双向编码器表征量,它是Google于2018年末开发并发布的一种新型语言模型。BERT模型的主要创新点都在pre-train方法上,即用了Masked Language Model和Next Sentence Prediction两种方法分别捕捉词语和句子级别的repres…

数学学习与研究杂志社《数学学习与研究》杂志社2024年第6期目录

课改前沿 基于核心素养的高中数学课堂教学研究——以“直线与圆、圆与圆的位置关系”为例 张亚红; 2-4 核心素养视角下初中生数学阅读能力的培养策略探究 贾象虎; 5-7 初中数学大单元教学实践策略探索 耿忠义; 8-10《数学学习与研究》投稿:cn7kantougao…

x3daudio1_7.dll在哪个文件夹?打开游戏提示找不到x3daudio1_7.dll怎么解决?

电脑打开游戏软件时候,我相信大部分人都会遇到提示找不到x3daudio1_7.dll文件。或错误代码126:加载x3daudio1_7.dll失败等等问题,那这个是怎么回事呢?需要怎么解决这个问题?下面我给大家一一解答。 一、x3daudio1_7.dl…

C#测试调用DotnetSpider爬取网页内容

微信公众号“DotNet”的文章《.NET快速实现网页数据抓取》介绍了调用开源网页爬取模块DotnetSpider爬取cnblog网站文章的基本方式。之前学习过使用HtmlAgilityPack抓取并分析网页内容,DotnetSpider也依赖HtmlAgilityPack模块,不过前者属于轻量、高效的爬…

昇思MindSpore学习笔记5--数据变换Transforms

摘要: 昇思MindSpore的数据变换,包括通用变换Common Transforms、图像变换Vision Transforms、标准化Normalize、文本变换Text Transforms、匿名函数变换Lambda Transforms。 一、数据变换Transforms概念 原始数据需预处理后才能送入神经网络进行训练…

docker网络功能介绍

一、 网络启动过程二、 修改容器dns和主机名① 临时处理(容器终止或重启后不会保存)② 通过参数指定 三、 容器内访问控制① 容器访问外部网络② 容器间互相访问(1)访问所有端口(2)访问指定端口 四、 docke…

.[emcrypts@tutanota.de].mkp勒索病毒新变种该如何应对?

引言 在数字化时代,随着信息技术的迅猛发展,网络安全问题日益凸显。其中,勒索病毒作为一种极具破坏力的恶意软件,给个人和企业带来了巨大的经济损失和数据安全风险。近期,一种名为“.mkp勒索病毒”的新型威胁开始在网络…

2000-2021年县域金融机构存贷款数据

2000-2021年县域金融机构存贷款数据 1、时间:2000-2021年 2、指标:统计年度、地区编码ID、县域代码、县域名称、所属地级市、所属省份、年末金融机构贷款余额/亿元、年末金融机构存款余额/亿元、年末城乡居民储蓄存款余额/亿元 3、来源:县…

VBA技术资料MF171:创建指定工作表数的工作簿

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

Vue.js 和 Node.js 全栈项目的运行与部署指南

Vue.js 和 Node.js 全栈项目的运行与部署指南 前言具体运行方式导入数据库初始化安装配置nodejs启动server后端启动client前端确保前后端正确连接 前言 本博客用来介绍一下一个包含前端和后端代码的全栈项目MoreMall,前端部分使用了 Vue.js,后端部分使用…

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…

镂空的文字?分享 1 段优质 CSS 代码片段!

大家好,我是大澈! 本文约 800 字,整篇阅读约需 1 分钟。 每日分享一段优质代码片段。 今天分享一段优质 CSS 代码片段,实现 CSS 文字镂空的效果。 老规矩,先阅读代码片段并思考,再看代码解析再思考&#…