运维锅总详解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. 使用全局日志

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

globallog 127.0.0.1 local0log 127.0.0.1 local1 notice

2. 限制最大连接数

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

globalmaxconn 20000

3. 使用非root用户运行

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

globaluser haproxygroup haproxy

4. 启用守护进程模式

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

globaldaemon

5. 设置合理的超时时间

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

defaultstimeout connect 5000mstimeout client  50000mstimeout server  50000ms

6. 启用HTTP日志

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

defaultsoption httplog

7. 启用HTTP健康检查

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

backend http_backoption httpchk GET /health

8. 使用强加密算法

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

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

9. 启用HTTP/2

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

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

10. 设置负载均衡算法

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

backend http_backbalance roundrobin

11. 启用压缩

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

frontend http_frontcompression algo gzipcompression type text/html text/plain text/css

12. 使用ACL进行访问控制

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

frontend http_frontacl restricted_page path_beg /adminhttp-request deny if restricted_page

13. 启用连接重用

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

defaultsoption http-server-closeoption forwardfor except 127.0.0.0/8

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

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

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

15. 启用统计界面

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

frontend statsbind *:8404stats enablestats uri /statsstats realm Haproxy\ Statisticsstats auth admin:password

16. 设置合理的重试次数

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

defaultsretries 3

17. 启用监控和报警

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

backend http_backoption log-health-checks

18. 优化连接池

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

defaultsmaxconn 3000

19. 使用Keepalived实现高可用性

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

vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass password}virtual_ipaddress {192.168.1.100}
}

20. 定期更新和安全补丁

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

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

配置示例

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

# 全局设置
globallog 127.0.0.1 local0log 127.0.0.1 local1 noticemaxconn 20000user haproxygroup haproxydaemonstats socket /var/run/haproxy.sock mode 600 level admintune.ssl.default-dh-param 2048# 默认设置
defaultslog globaloption httplogoption dontlognulloption http-server-closeoption forwardfor except 127.0.0.0/8retries 3timeout connect 5000mstimeout client  50000mstimeout server  50000mstimeout http-request 10stimeout queue 1mtimeout http-keep-alive 10stimeout check 10smaxconn 3000# 前端配置(HTTP)
frontend http_frontbind *:80mode httpdefault_backend http_backoption httploglog globalmaxconn 10000# 启用压缩compression algo gzipcompression type text/html text/plain text/css# ACL 进行访问控制acl restricted_page path_beg /adminhttp-request deny if restricted_page# 前端配置(HTTPS)
frontend https_frontbind *:443 ssl crt /etc/ssl/private/haproxy.pem alpn h2,http/1.1mode httpdefault_backend https_backoption httploglog globalmaxconn 10000# 后端配置(HTTP)
backend http_backbalance roundrobinmode httpoption httpchk GET /healthserver web1 192.168.1.1:80 checkserver web2 192.168.1.2:80 check# 启用连接重用option http-server-closeoption forwardfor except 127.0.0.0/8# 启用监控和报警option log-health-checks# 后端配置(HTTPS)
backend https_backbalance roundrobinmode httpoption httpchk GET /healthserver web1 192.168.1.1:443 ssl verify none checkserver web2 192.168.1.2:443 ssl verify none check# 统计界面配置
frontend statsbind *:8404mode httpstats enablestats uri /statsstats realm Haproxy\ Statisticsstats auth admin:passwordstats 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 服务。# 连接池优化
defaultsmaxconn 3000# 使用DNS解析后端服务器
backend dynamic_http_backbalance roundrobinmode httpoption httpchk GET /healthserver-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.rhkb.cn/news/364261.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot 整合 DolphinScheduler(二):UI页面上的主要功能介绍

📍当前部署情况:DolphinScheduler V2.0.6 已经在三台服务器上安装完毕,具体如下: 角色 服务器IP master 192.168.1.247 master 192.168.1.248 worker 192.168.1.249 📂 具体搭建过程:Springboot 整…

绕过命令过滤器:探索UnixLinux中的Bypass技术

前言 在Unix或Linux系统的安全测试和网络防御中,了解如何绕过命令过滤器是非常重要的。今天,我们将探讨几种利用shell命令绕过安全限制的技巧,这些技巧常用于渗透测试中,以检测系统的安全漏洞。 0x00 命令介绍 一般而言&#x…

ros1仿真导航机器人 hector_mapping gmapping

仅为学习记录和一些自己的思考&#xff0c;不具有参考意义。 1 hector_mapping 建图过程 &#xff08;1&#xff09;gazebo仿真 roslaunch why_simulation why_slam.launch <launch><!-- We resume the logic in empty_world.launch, changing only the name of t…

算法-位运算基础

文章目录 前置知识1. 交换两个数2. 比较两个数的大小3. leetcode268 寻找缺失的数字4. leetcode136 只出现一次的数字5. leetcode260 只出现一次的数字|||6. leetcode137 只出现一次的数字||7. 2/3的幂8. 大于等于该数字的最小2的幂9. leetcode201 数字范围按位与10. 位运算中分…

effective java (1)(考虑使用!)静态工厂方法代替构造方法

只是目前阶段 对本书第一章内容的浅显认知&#xff0c;说实话 这一章 我看了4遍左右&#xff0c;每一遍感觉都不一样 他的创建模式 有时候像设计模式&#xff0c;但作者已经在原文中描述&#xff0c;它并不等价于 设计模式 我们正常 创建一个年级类 是长这样的 我们不写成标准…

C语言 for循环

for循环语句 //初始化 //判断 //调整 for&#xff08;表达式1; 表达式2; 表达式3;&#xff09;循环语句; 例&#xff1a; for循环里break for循环里continue 注&#xff1a;1.不可在for循环体内修改循环变量&#xff0c;防止for循环失去控制 2.建议for语句的循环控制变量的…

open-chat-video-editor:开源短视频生成和编辑工具,以及抖音|TikTok 的移动端短视频项目

open-chat-video-editor&#xff1a;开源短视频生成和编辑工具&#xff0c;以及抖音|TikTok 的移动端短视频项目。 open-chat-video-editor&#xff1a;开源短视频生成和编辑工具 简介 Open Chat Video Editor是开源的短视频生成和编辑工具&#xff0c;整体技术框架如下&…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI研发的一款聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够基于在预训练阶段所见…

[深度学习] Transformer

Transformer是一种深度学习模型&#xff0c;最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;但其架构的灵活性使其在许多其他领域也表现出色&#xff0c;如计算机视觉、时间序列分析…

HarmonyOS Next开发学习手册——选项卡 (Tabs)

当页面信息较多时&#xff0c;为了让用户能够聚焦于当前显示的内容&#xff0c;需要对页面内容进行分类&#xff0c;提高页面空间利用率。 Tabs 组件可以在一个页面内快速实现视图内容的切换&#xff0c;一方面提升查找信息的效率&#xff0c;另一方面精简用户单次获取到的信息…

Redis Stream Redisson Stream

目录 一、Redis Stream1.1 场景1&#xff1a;多个客户端可以同时接收到消息1.1.1 XADD - 向stream添加Entry&#xff08;发消息 &#xff09;1.1.2 XREAD - 从stream中读取Entry&#xff08;收消息&#xff09;1.1.3 XRANGE - 从stream指定区间读取Entry&#xff08;收消息&…

【王佩丰 Excel 基础教程】第一讲:认识Excel

文章目录 前言一、Excel软件简介1.1、历史上的其他数据处理软件与 Microsoft Excel1.2、Microsoft Excel 能做些什么1.3、Excel 界面介绍 二、Microsoft Excel 的一些重要概念2.1、Microsoft Excel 的几种常见文件类型2.2、工作簿、工作表、单元格. 三、使用小工具&#xff1a;…

SpringDataJPA系列(1)JPA概述

SpringDataJPA系列(1)JPA概述 SpringDataJPA似乎越来越流行了&#xff0c;我厂的mysql数据库和MongoDB数据库持久层都依赖了SpringDataJPA。为了更好的使用它&#xff0c;我们内部还对MongoDB的做了进一步的抽象和封装。为了查漏补缺&#xff0c;温故而知新&#xff0c;整理下…

基于自组织长短期记忆神经网络的时间序列预测(MATLAB)

LSTM是为了解决RNN 的梯度消失问题而诞生的特殊循环神经网络。该网络开发了一种异于普通神经元的节点结构&#xff0c;引入了3 个控制门的概念。该节点称为LSTM 单元。LSTM 神经网络避免了梯度消失的情况&#xff0c;能够记忆更长久的历史信息&#xff0c;更能有效地拟合长期时…

【面试系列】数据科学家 高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

[OtterCTF 2018]Name Game

Name Game 题目描述&#xff1a;我们知道这个帐号登录到了一个名为Lunar-3的频道。账户名是什么&#xff1f;猜想&#xff1a;既然登陆了游戏&#xff0c;我们尝试直接搜索镜像中的字符串 Lunar-3 。 直接搜索 Lunar-3 先把字符串 重定向到 txt文件里面去然后里面查找 Lunar-3…

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征

使用 Spring Boot 3.x 与图形学技术,添加电子印章防伪特征 在电子办公和无纸化办公日益普及的今天,电子印章的使用越来越广泛。然而,如何确保电子印章的安全性和防伪能力成为了一个亟待解决的问题。本文将通过 Spring Boot 3.x 和图形学技术,深入探讨如何为电子印章添加防…

Numpy array和Pytorch tensor的区别

1.Numpy array和Pytorch tensor的区别 笔记来源&#xff1a; 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…

IDEA中导入Maven项目

IDEA中导入Maven项目 方式1&#xff1a;使用Maven面板&#xff0c;快速导入项目 打开IDEA&#xff0c;选择右侧Maven面板&#xff0c;点击 号&#xff0c;选中对应项目的pom.xml文件&#xff0c;双击即可 说明&#xff1a;如果没有Maven面板&#xff0c;选择 View > Appe…

C#——SortedList 排序列表详情

SortedList 排序列表 SortedList 类用来表示键/值对的集合&#xff0c;这些键/值对按照键值进行排序&#xff0c;并且可以通过键或索引访问集合中的各个项。 我们可以将排序列表看作是数组和哈希表的组合&#xff0c;其中包含了可以使用键或索引访问各项的列表。如果您使用索…