Ubuntu 安装 HAProxy
HAProxy 是什么
HAProxy(High Availability Proxy) 是一个 高性能、高可用的 TCP 和 HTTP 负载均衡器与代理服务器。
HAProxy 的特点
特性 | 说明 |
---|---|
支持协议 | HTTP、HTTPS、TCP |
高性能 | 使用 C 语言编写,性能极高 |
高可用 | 与 Keepalived 配合可实现主备 |
健康检查 | 实时检查后端服务器是否存活 |
连接控制 | 支持并发限制、超时设置、连接数控制等 |
日志与监控 | 提供详细日志,便于排错和监控 |
HAProxy vs Nginx 区别
对比项 | HAProxy | Nginx |
---|---|---|
核心定位 | 专业负载均衡器 | Web服务器 + 反向代理 |
支持协议 | TCP、HTTP、HTTPS(L4 + L7) | HTTP、HTTPS、邮件协议(L7) |
处理静态内容 | 不支持 | 支持(可直接做 Web Server) |
性能表现 | 高并发、大连接场景更强 | 中等并发性能良好 |
健康检查能力 | 强,支持高级健康检查 | 支持基本健康检查 |
配置复杂度 | 专注负载均衡,配置清晰 | 功能丰富,配置复杂多变 |
状态监控界面 | 内置强大状态统计页 | 有但功能简单 |
模块机制 | 无法动态加载模块 | 支持动态模块 |
主流应用 | 金融、电商、大型高可用架构 | Web服务、CDN、轻量负载均衡 |
HAProxy vs Nginx 使用场景
使用场景 | 推荐方案 | 原因说明 |
---|---|---|
Web 网站负载均衡 + 静态资源服务 | Nginx | 能代理、缓存、压缩、处理静态资源,适合前端站点 |
仅 TCP(如 MySQL、Redis)负载均衡 | HAProxy | 支持四层负载均衡,Nginx 无法代理纯 TCP 连接 |
高并发反向代理(如 API 网关) | HAProxy | 并发能力更强,适合海量 API 请求分发 |
高可用集群 + 主备 VIP 浮动 | HAProxy + Keepalived | 主从切换快,专用于高可用负载均衡 |
Kubernetes Ingress 网关 | Nginx | 社区插件多,原生支持 Ingress Controller |
企业 Web 服务 + 页面缓存优化 | Nginx | 支持 gzip、缓存、rewrite,适合前端 |
纯粹做 Layer 7 负载均衡器(无文件处理) | HAProxy | 更稳定、日志更清晰、健康检查更强 |
小型应用或快速上线部署 | Nginx | 简单易部署,配置灵活 |
带状态的健康检查需求(如根据返回内容判活) | HAProxy | 可配置返回码、内容、脚本等高级判活规则 |
安装 HAProxy
sudo apt-get update
sudo apt-get install -y haproxy
HAProxy 常用命令
查看 HAProxy 版本:haproxy -v
启动 HAProxy:sudo systemctl start haproxy
停止 HAProxy:sudo systemctl stop haproxy
重启 HAProxy:sudo systemctl restart haproxy
重新加载配置(不中断连接):sudo systemctl reload haproxy
查看状态:sudo systemctl status haproxy
开启开机自启动:sudo systemctl enable haproxy
禁用开机自启动:sudo systemctl disable haproxy
检查配置文件是否有语法错误:haproxy -c -f /etc/haproxy/haproxy.cfg
查看系统日志(包含 haproxy 日志):journalctl -u haproxy
查看所有运行状态(需配置 stats socket):echo "show stat" | socat stdio /var/run/haproxy.sock
查看当前连接:echo "show info" | socat stdio /var/run/haproxy.sock
查看所有后端状态:echo "show backend" | socat stdio /var/run/haproxy.sock
暂停某个后端服务器(server_name 为配置中的名称):echo "disable server backend_name/server_name" | socat stdio /var/run/haproxy.sock
启用某个后端服务器(server_name 为配置中的名称):echo "enable server backend_name/server_name" | socat stdio /var/run/haproxy.sock
HAProxy 配置文件详解
默认文件位置
sudo vim /etc/haproxy/haproxy.cfg
global:全局配置,影响整个 HAProxy 实例
global# 日志输出地址,可设为 UNIX socket 或 IP:portlog /dev/log local0# 设置日志到远程服务器# log 192.168.1.100:514 local0# 更改根目录,提高安全性(只允许访问该目录)chroot /var/lib/haproxy# 指定 PID 文件路径pidfile /var/run/haproxy.pid# 全局最大连接数(上限),限制资源使用maxconn 4096# 指定运行用户user haproxy# 指定运行用户组group haproxy# 让 HAProxy 以守护进程方式运行(后台)daemon# 启用 stats socket 用于控制台管理stats socket /var/run/haproxy.sock mode 600 level admin# 启动进程数,一般为 1,(多核 CPU 可用,但需小心状态同步)nbproc 1# 每个进程的线程数(多线程支持,需 HAProxy 2.0+),需结合 thread 关键字使用。nbthread 4 # 当前节点的名称(用于 peers 同步)node haproxy-node-1
注意:
- nbproc 的值大于 1 且不配置 peers:多进程不共享内存,stick-table 不同步,容易出错
- 不配置 stats socket:运行时不便调试和状态查看
- 不配置 log:失去调试能力,难以追踪问题
defaults:默认配置,会被 frontend/backend/listen 使用
# 这些参数会被所有 frontend、backend 和 listen 块自动继承(除非这些块中显式覆盖)
defaults# 工作模式:http、tcpmode http# 使用 global 中的日志设置log global# 使用专为 HTTP 设计的日志格式,tcplog: TCP 日志格式option httplog# 不记录无数据连接日志option dontlognull# 连接后端超时时间timeout connect 5s# 客户端空闲超时timeout client 50s# 服务端响应超时时间timeout server 50s# 请求头超时 10 秒timeout http-request 10s# keep-alive 超时timeout http-keep-alive 10s# 最大并发连接数maxconn 2000 # 自动重试其他服务器option redispatch # 重试次数retries 3# default-server [参数1] [参数n],为所有 backend server 统一指定默认属性# inter 3s:每 3 秒进行一次健康检查;rise 2:连续 2 次检查通过视为“恢复”;fall 3:连续 3 次检查失败视为“宕机”;maxconn 100:单个服务器最多接受 100 个连接default-server inter 3s rise 2 fall 3 maxconn 100# default-bind [参数1] [参数n],指令为所有 frontend 或 listen 块中未显式定义 bind 的地方,统一设置绑定行为的默认参数# ssl:开启 SSL 支持; crt /path/to/cert.pem:指定默认证书路径; alpn h2,http/1.1:支持 HTTP/2 和 HTTP/1.1; ipv4 / ipv6:限定只绑定 IPv4 或 IPv6; transparent:用于 TPROXY 透明代理场景; defer-accept:延迟连接处理直到数据可读,提高效率。default-bind ssl crt /etc/ssl/private/haproxy.pem alpn h2,http/1.1
注意:
- 忘写 mode:容易导致行为异常(默认是 TCP)
- 忽略超时参数:会导致连接悬挂或资源被耗尽
- 使用 HTTP 却没有 option httplog:日志中缺失请求详情
- 不加 timeout http-request:防止慢速 HTTP 攻击时不生效
- 不了解继承机制:容易在 frontend 或 backend 中重复配置
frontend:前端,接收客户端请求
frontend 块用于定义 接收客户端请求的入口,可以指定监听的 IP、端口、协议,并将请求转发到某个后端(backend)或做更复杂的路由处理,匹配请求(基于 URL、Host、IP、Header、方法等)。frontend = “入口”,backend = “出口(服务端池)”
# http_front:是 frontend 的自定义名称
frontend http_front## 监听所有 IP 上的端口/地址,如 *:80bind *:80## 监听 443 端口,使用 SSL 证书 /etc/ssl/private/haproxy.pem# bind *:443 ssl crt /etc/ssl/private/haproxy.pem## 指定工作模式为 HTTP,选项有 HTTP|TCPmode http## 默认转发到后端名为 http_back 的服务器池default_backend http_back## 访问控制规则,支持多种判断(如路径、头部、IP)acl is_static path_end .jpg .png .css .js## 根据 ACL 条件使用不同后端use_backend static_back if is_static
注意:
- 忘写 mode http:会使 HTTP 规则无法生效,表现异常
- 多个 bind 不同端口未区分流量:建议使用 ACL 区分请求类型
- 忽略 http-request 控制:限流、重定向、拒绝请求功能缺失
- 日志无记录的话:确保配置了 log global 和 option httplog
backend:后端,定义服务器组和转发策略
backend 是用来定义 后端服务器池 的模块,负责处理前端 (frontend) 或中间路由转发过来的请求。你可以在 backend 中指定多个真实服务节点(server),并配置负载均衡方式、健康检查等参数。
# http_back:是 backend 的自定义名称
backend http_back## 负载均衡策略,选项如下:# roundrobin:轮询,默认方式,平均分配请求。适用于大多数场景。# leastconn:优先分配给当前连接数最少的服务器。适合长连接(如数据库、API)场景。# source:根据客户端 IP 哈希,保持同一客户端请求固定落到一台服务器(会话保持)。# uri [option]:根据请求 URI 哈希,常用于静态资源缓存场景。# url_param <param>:根据 URL 中指定的参数值做哈希。例如 ?id=123 中的 id。# hdr(<name>):根据指定 HTTP 头做哈希,如:hdr(User-Agent)。# rdp-cookie <cookie_name>:仅用于 TCP 模式 + RDP 协议,根据 RDP cookie 实现持久会话。# random [draws N]:随机选择一台服务器(可选多次抽样,选最优)# first(仅限 backup 服务器):优先选择第一台健康的服务器balance roundrobin## 健康检查路径option httpchk GET /health## 健康检查响应状态码要求http-check expect status 200## 给所有 server 设置默认参数# default-server [参数1] [参数n]## 定义服务器,格式:<name> <IP>:<port> [check] [backup]# check:开启健康检查# backup:作为备用服务器# weight:权重# resolvers:使用 DNS 解析器,mydns:解析器的名字server web1 192.168.1.10:80 weight 3 checkserver web2 192.168.1.11:80 weight 1 check backup resolvers mydns## 修改请求头、添加路由规则等。# http-request# tcp-request## 配合 frontend 实现会话保持(IP、cookie等)# stick-table## 会话保持策略# cookie## 连接超时时间# timeout connect## 服务响应超时时间# timeout server
注意:
- 会话丢失的话:使用 cookie 或 stick-table 保持 session
- 后端负载不均:优化 balance 策略(如 leastconn)
- 连接超时:设置合理的 timeout server 和 timeout connect
- 后端节点不健康:检查 option httpchk 是否配置正确
- 不支持 HTTPS 后端的话:加上 ssl verify none 让 HAProxy 与后端走 TLS
listen:同时定义 frontend 和 backend 的组合配置(简写方式)
listen 是一个组合块,将 frontend(接收请求)和 backend(转发处理)合并在一起,适合简单场景或 TCP 代理场景,比如 MySQL、Redis、FTP、SMTP 等服务的负载均衡。
# admin_stats:是 listen 的自定义名称
listen admin_stats# 监听端口或地址,如 *:80bind *:8080# 工作模式:http、tcpmode http## 最大连接数maxconn 1000## 启用日志记录(需配置 syslog)log global## 启用的日志格式,httplog|tcplogoption tcplog## 负载均衡算法balance roundrobin## 启用基于 Cookie 的会话保持cookie SRV insert indirect ## 粘性表(用于限流、IP 绑定)stick-table## 根据某字段粘性会话stick on src## 启用状态页面stats enable## 设置访问路径stats uri /haproxy?stats## 设定登录提示标题 stats realm Haproxy\ Stats## 设置访问认证stats auth admin:admin## 刷新频率stats refresh 10s
注意:
- 复杂路由逻辑:用 frontend + backend 更清晰
- 日志无输出:添加 log global 和 option httplog
- 会话粘性失败:检查 cookie 名称、参数一致性
- 无监控界面:添加 stats 相关配置
peers:多节点之间的同步(如 stick-table)
peers 是 HAProxy 中用于配置多实例之间的状态同步的模块,常用于多个 HAProxy 节点之间同步 stick-table(会话表) 数据,从而实现集群中“共享状态”。如:源 IP 的请求频率(防护 DDOS、限流),用户会话保持,自定义统计(登录失败次数等)。
stick-table 是 HAProxy 用来在运行时追踪客户端状态的数据结构(例如追踪 IP 的连接数、请求数、失败数等)。这对于防止 DDoS、暴力破解、限流、会话保持非常有用。
# group_name 同步组名(多个节点使用相同组名以便互相同步)
peers <group_name># <本机名> 必须与当前 HAProxy 启动时的 -L <name> 参数一致(或 global 中的 node <name>)peer <本机名> <本机IP>:<端口>peer <其他节点名> <其他IP>:<端口>
注意:
- 所有节点都必须有相同的 peers 配置(节点名字可不同)
- peer 名称必须唯一且不能是当前机器的名称
- 每台机器的 bind 地址和 peer 中配置的 IP 要匹配
- peers 同步是双向的,每台都要监听端口
- 用于高可用部署(主-主同步),不适用于主-备场景
- stick-table 配置中的 peers <name> 不能漏掉
resolvers:自定义 DNS 解析器
resolvers 用于配置 DNS 解析器,使 HAProxy 能动态解析和刷新服务器的 IP 地址。默认情况下,HAProxy 启动时只解析一次 DNS,如果没有配置 resolvers,域名解析不会动态更新。
这对于以下场景尤其重要:
- 后端服务器 IP 可能变动(比如后端是 Kubernetes Pod、云主机、容器)
- 使用主机名作为后端地址(如 server web1 app.example.com:80)
# 自定义一个resolvers 名称,名称可在 server 行中引用
resolvers mydns# 设置 DNS 服务器nameserver dns1 8.8.8.8:53nameserver dns2 8.8.4.4:53# 解析重试次数resolve_retries 3# 重试超时时间timeout retry 1s# 超时时间timeout resolve 1s# 解析结果缓存多久hold valid 10s## 对 NXDOMAIN 响应的缓存时间hold nx 30s## 其它响应(如 SERVFAIL)的缓存时间hold other 30s ## 拒绝响应的缓存时间hold refused 30s ## 超时响应的缓存时间hold timeout 30s## DNS 响应最大数据包(默认 512)accepted_payload_size 8192 ## 使用 /etc/resolv.conf 中的配置(仅 Linux)parse-resolv-conf
注意:
- 必须指定 resolvers 才能解析主机名(否则启动报错)
- 建议设置合理的 hold valid,避免频繁解析
- 使用多个 nameserver 做冗余,提升稳定性
- 支持 SRV 和 A/AAAA 查询(需设置 init-addr 参数)
userlist:用户认证列表
userlist 用于定义用户名和密码列表,它相当于一个“认证数据库”,本地内置用户名+密码信息,HAProxy 直接验证请求。主要用于:
- HTTP Basic 认证(常见于管理页面、监控接口保护)
- 配合 acl 使用,实现访问控制
- 可用于结合 stats 页面进行访问限制
userlist <名称>user <用户名1> password <明文密码>user <用户名2> insecure-password <明文密码>user <用户名3> encrypted-password <加密后的密码(推荐使用 bcrypt)>
注意:
- 不支持动态用户加载,必须在启动时写死
- 密码推荐使用加密格式(SHA-256/512 或 bcrypt)
- userlist 只在 HAProxy 本地生效,不能对接 LDAP 或外部认证
- 支持多个 userlist,可按需引用
相关文章:
Ubuntu 安装 HAProxy
HAProxy 是什么 HAProxy(High Availability Proxy) 是一个 高性能、高可用的 TCP 和 HTTP 负载均衡器与代理服务器。 HAProxy 的特点 特性说明支持协议HTTP、HTTPS、TCP高性能使用 C 语言编写,性能极高高可用与 Keepalived 配合可实现主备健…...
VUE CLI - 使用VUE脚手架创建前端项目工程
前言 前端从这里开始,本文将介绍如何使用VUE脚手架创建前端工程项目 1.预准备(编辑器和管理器) 编辑器:推荐使用Vscode,WebStorm,或者Hbuilder(适合刚开始练手使用),个…...
Nginx高级配置
目录 一.网页的状态页 二. Nginx第三方模块 2.1 echo模块 三. 变量 3.1 内置变量 3.2 自定义变量 四. 自定义访问日志 (优化) 4.1 自定义访问日志的格式 4.2 自定义json 格式日志 五. Nginx压缩功能 六 . HTTPS 功能 6.1 https概述 6.2 配置实例-----自签名证…...
Docker镜像搬运工:深入解析export与import,实现容器环境无缝迁移!
Docker作为现代开发运维的利器,其镜像和容器的管理技巧直接影响效率。当我们需要跨环境迁移容器状态时,docker export和docker import这对组合命令就能大显身手。本文带你彻底搞懂它们的核心逻辑、使用场景及避坑指南! 一、Docker export&…...
数字孪生实战笔记(1)数字孪生的含义、应用及技术体系
一、含义 数字孪生(Digital Twin)是一种通过数字化模型在虚拟世界中实时映射和模拟物理实体、系统或过程的技术。它的核心目的是通过对现实对象的建模、感知、分析和预测,实现对物理世界的全面感知、智能控制和优化决策。数字孪生 实体对象 …...
计算机网络 4-2-2 网络层(IPv4)
2.7 网络地址转换NAT 引入端口号:IP地址端口号→一个特定的进程,(不同主机可能存在相同端口号) 网络层实现了“主机到主机”的通信。网络层在IP数据报的首部,指明源IP地址、目的IP地址 传输层实现了“端到端” &#…...
第二个简单的SpringBoot和Vue前后端全栈的todoapp案例
项目源于哔哩哔哩,按视频手敲了一下,补充上代码和一些细节。 全栈项目实践:1小时快速入门SpringBootvue3element-plus_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LH4y1w7Nd/?spm_id_from333.1387.favlist.content.click&vd_…...
探秘 Canva AI 图像生成器:重塑设计创作新范式
Canva 凭借简洁易用的界面和海量模板资源,早已成为设计师和普通用户的心头好。而 Canva AI 图像生成器的推出,更是为设计领域带来了一场深刻变革,以智能化的手段重塑了图像创作的方式与边界。 技术内核:AI 如何驱动图像生成 Can…...
栈应用:辅助站(c++)
干货 今天讲讲最大辅助栈和最小辅助栈 主栈进入元素的时候 最大辅助栈:保证新元素大于等于(辅助栈)顶的时候,再进入辅助栈这样就能保证最大辅助栈的栈顶元素 是主栈中的最大值 主栈出栈的时候 最大辅助栈:主栈出栈元素如果等于(辅助栈)的栈顶元素,再…...
AI时代的数据可视化:未来已来
你有没有想过,数据可视化在未来会变成什么样?随着人工智能(AI)的飞速发展,数据可视化已经不再是简单的图表和图形,而是一个充满无限可能的智能领域。AI时代的可视化不仅能自动解读数据,还能预测…...
常见音频主控芯片以及相关厂家总结
音频主控芯片是音频设备(如蓝牙耳机、音箱、功放等)的核心组件,负责音频信号的解码、编码、处理和传输。以下是常见的音频主控芯片及其相关厂家,按应用领域分类: 蓝牙音频芯片 主要用于无线耳机、音箱等设备࿰…...
湖仓一体架构在金融典型数据分析场景中的实践
在数字经济与金融科技深度融合的今天,数据已成为金融机构的核心战略资产。然而,传统数据架构面临着三大困局,制约着金融机构数据价值的充分释放。 一、需求驱动更多银行数据分析场景 金融机构,特别是银行业,面临着双重…...
VBA —— 学习Day5
子程序与函数 子程序:实现特定功能的程序代码块 子程序语法: [修饰符] Sub 子程序名称([参数1,参数2,参数3]) 代码块 End Sub 子程序如何调用: 1 . 子程序名 [参数1,参数2,...] 2. Cal…...
Flink 实时数据一致性与 Exactly-Once 语义保障实战
在构建企业级实时数仓的过程中,“数据一致性” 是保障指标准确性的核心能力,尤其是在金融、电商、医疗等对数据敏感度极高的场景中。Flink 作为流批一体的实时计算引擎,其内建的 Exactly-Once 语义为我们提供了强有力的保障机制。本篇将围绕如何实现端到端的数据一致性、如何…...
Java云原生到底是啥,有哪些技术
☁️ Java云原生:程序员の修仙飞升指南(附渡劫技巧) 一、修仙世界观:传统程序 vs 云原生程序 🏡 传统Java程序(老宅院) 特点:单体大瓦房、扩建要拆墙(耦合度高…...
IPM IMI111T-026H 高效风扇控制板
概述: REF-MHA50WIMI111T 是一款专为风扇驱动设计的参考开发板,搭载了英飞凌的IMI111T-026H iMOTION™智能功率模块(IPM)。这个模块集成了运动控制引擎(MCE)、三相栅极驱动器和基于IGBT的功率级,全部封装在一个紧凑的DSO22封装中。REF-MHA50…...
JavaScript基础-局部作用域
在JavaScript中,理解不同种类的作用域是掌握这门语言的关键之一。作用域决定了变量和函数的可访问性(即可见性和生命周期)。与全局作用域相对应的是局部作用域,它限制了变量和函数只能在其定义的特定范围内被访问。本文将深入探讨…...
[特殊字符]Meilisearch:AI驱动的现代搜索引擎
前言 大家好,我是MAI麦造! 上文介绍一了Manticore Search 这款轻量级的搜索引擎,这次又有了新的发现!传送门: Elasticsearch太重?它的超轻量的替代品找到了! 这是一个让我超级兴奋的AI搜索引…...
K8S Svc Port-forward 访问方式
在 Kubernetes 中,kubectl port-forward 是一种 本地与集群内资源(Pod/Service)建立临时网络隧道 的访问方式,无需暴露服务到公网,适合开发调试、临时访问等场景。以下是详细使用方法及注意事项: 1. 基础用…...
SD06_前后端分离项目部署流程(采用Nginx)
本文档详细描述了如何在Ubuntu 20.04服务器上从零开始部署Tlias前后端分离系统。Tlias系统由Spring Boot后端(tlias-web-management)和Vue前端(vue-tlias-management)组成。 目录 环境准备安装MySQL数据库部署后端项目部署前端项…...
计算机网络:家庭路由器WiFi信号的发射和手机终端接收信号原理?
WiFi路由器与手机之间的信号传输涉及多个技术层面的协作,以下是其工作原理的详细步骤: 一、数据封装与协议处理 应用层数据生成 用户操作(如浏览网页、视频播放)产生数据包,经TCP/IP协议栈逐层封装,添加IP地址(网络层)和MAC地址(数据链路层)。协议封装 数据包被封装…...
【Redis】string
文章目录 string 字符串常用命令设置和获取setgetmget & mset 计数操作incr & incrbydecr & decrbyincrbyfloat 字符串操作appendstrlengetrangesetrange string 字符串 关于 Redis 的字符串,有几点需要注意 Redis 所有的 key 的类型都是字符串类型va…...
vue3的响应式设计原理
Vue 3 的响应式设计是其核心特性之一,依赖于 Proxy 和 依赖收集机制,相比 Vue 2 的 Object.defineProperty,Vue 3 的响应式系统更加高效、灵活且易于维护。 以下是 Vue 3 响应式设计的核心原理: 一、核心机制概览 使用 Proxy 实现…...
学习黑客5 分钟深入浅出理解Linux Logs [特殊字符]
5 分钟深入浅出理解Linux Logs 📝 大家好!今天我们将探索Linux系统中的日志机制——这是系统管理和安全分析的重要组成部分。在网络安全学习特别是TryHackMe平台上的挑战中,理解和分析日志是发现入侵痕迹、追踪攻击者行为和收集证据的关键技…...
【Docker系列】docker inspect查看容器部署位置
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
journalctl使用
journalctl 可以查看很多服务的日志,比如 docker,ollama 等。 1. 查看 xx 服务的最新日志(实时滚动) sudo journalctl -u docker -f -f 参数表示 跟随(follow),会持续输出最新日志࿰…...
Satori:元动作 + 内建搜索机制,实现超级推理能力
Satori:元动作 内建搜索机制,实现超级推理能力 论文大纲一、背景:LLM 推理增强的三类方法1. 基于大规模监督微调(SFT)的推理增强2. 借助外部机制在推理时进行搜索 (RLHF / 多模型 / 工具)3. 现有局限性总结 二、Sator…...
基于语言模型的依存关系分句 和 主题变换检测(基于词频和句段得分)的 意思
🧠 一、基于语言模型的依存关系分句(Dependency-based Segmentation) ✅ 说人话: 用语言模型判断句子里的语法结构(谁依赖谁),找到合理的“断点”,把太长的句子拆成语法上更自然的小…...
计算机体系结构一些笔记
1、异构计算:CPU也像人类社会一样存在专业分工。 异构计算(Heterogeneous Computing)是指不同类型的计算单元合作完 成计算任务。每个计算单元采用不同的架构,分别擅长处理某一种类型 的计算任务。整个计算任务分解为小的单位&…...
Go语言——goflow工作流使用
一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…...
理性地倾听与表达:检索算法的语言学改进
论文标题 Rational Retrieval Acts: Leveraging Pragmatic Reasoning to Improve Sparse Retrieval 论文地址 https://arxiv.org/pdf/2505.03676 代码地址 https://github.com/arthur-75/Rational-Retrieval-Acts 作者背景 巴黎萨克雷大学,索邦大学ÿ…...
RV1126 ROS2环境交叉编译及部署(基于官方Docker)
RV1126 ROS2环境交叉编译及部署(基于官方Docker) 0 前言1 SDK源码更新1.1 启动Docker容器1.2 更新SDK源码1.3 SDK更新问题2 ROS2编译配置3 Buildroot rootfs编译ROS2的依赖包3.1 编译问题解决4 使用Docker交叉编译ROS24.1 准备Linux(Ubuntu) PC机的依赖环境4.1.1 Ubuntu PC机…...
每日脚本学习5.10 - XOR脚本
xor运算的简介 异或就是对于二进制的数据可以 进行同0异1 简单的演示 : 结果是 这个就是异或 异或的作用 1、比较两数是否相等 2、可以进行加密 加密就是需要key 明文 :0b010110 key : 0b1010001 这个时候就能进行加密 明文 ^ key密文 还有这个加密比…...
深圳SMT贴片加工厂制造流程解析
内容概要 作为大湾区电子制造产业链的重要节点,深圳SMT贴片加工厂凭借精密的生产体系与技术创新,构建了涵盖12道核心工序的标准化流程。从PCB基板的来料检验开始,通过全自动贴片机的高精度元件定位、SPI三维锡膏检测、智能温控回流焊接等关键…...
英语六级---2019.6 卷二 仔细阅读2
文章 Officials at the White House announced a new space policy focused on managing the increasing number of satellites that companies and governments are launching into space. Space Policy Directive-3 lays out general guidelines for the United States to mi…...
【小沐学GIS】基于C++绘制二维瓦片地图2D Map(QT、OpenGL、GIS)
🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut、GIS)第二期3【小沐学…...
Windows 系统 - Trae 内 终端 无法使用 node (重新配置 nodejs 路径)
想在 Trae 中尝试一下 mcp, 所以 Windows 系统下安装了 node.js. 安装成功后, 在 Windows 的 powershell 下可以 node -v, 但是在 Trae 的终端下输入 node -v 时, 识别提示不能识别 node 命令. 参考了 vscode 下的一种解决方式 VS Code 内终端无法使用 node 解决方案是相似的…...
AI编程: 使用Trae1小时做成的音视频工具,提取音频并识别文本
背景 在上个月,有网页咨询我怎么才能获取视频中的音频并识别成文本,我当时给他的回答是去问一下AI,让AI来给你答案。 他觉得我在敷衍他,大骂了我一顿,大家觉得我的回答对吗? 小编心里委屈,我…...
springCloud/Alibaba常用中间件之Nacos服务注册与发现
文章目录 SpringCloud Alibaba:依赖版本补充六、Nacos:服务注册与发现1、下载安装Nacos2、服务注册1. 导入依赖(这里以服务提供者为例)2. 修改配置文件和主启动类3. 创建业务类4. 测试 3.服务映射1. 导入依赖2. 修改配置文件和主启动类3. 创建业务类和RestTemplate配置类用来提…...
鸿蒙 所有API缩略图鉴
从HarmonyOS NEXT Developer Preview1(API 11)版本开始,HarmonyOS SDK以 Kit 维度提供丰富、完备的开放能力,涵盖应用框架、应用服务、系统、媒体、AI、图形在内的六大领域,共计30000个API...
互联网大厂Java求职面试:AI集成场景下的技术挑战与架构设计
标题:互联网大厂Java求职面试:AI集成场景下的技术挑战与架构设计 第一幕:向量数据库选型与性能调优 技术总监(严肃脸): 郑薪苦,我们最近在做一个基于大语言模型的企业级AI应用,需要…...
搜索与图论
文章目录 搜索与图论深度优先搜索 DFS[843. n-皇后问题 - AcWing题库](https://www.acwing.com/problem/content/845/) 宽度优先搜索 BFS[844. 走迷宫 - AcWing题库](https://www.acwing.com/problem/content/description/846/) 树与图的存储[846. 树的重心 - AcWing题库](http…...
【递归、搜索和回溯】二叉树中的深搜
个人主页 : zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 前言1 2331. 计算布尔二叉树的值1.1 分析1.2 代码 2 129. 求根节点到叶节点数字之和2.1 分析2.2 代码 3 814. 二叉树剪枝3.1 分析3.2 代码 4 98. 验证…...
通俗的理解MFC消息机制
1. 消息是什么? 想象你家的门铃响了(比如有人按门铃、敲门、或者有快递),这些都是“消息”。 在 MFC 中,消息就是系统或用户触发的各种事件,比如鼠标点击(WM_LBUTTONDOWN)、键盘输入…...
Windows CMD通过adb检查触摸屏Linux驱动是否被编译
检查 CONFIG_TOUCHSCREEN_GT9XX 是否启用,检查内核是否编译了Goodix GT9XX系列触摸屏的驱动支持 Windows CMD.exe输入: adb shell “zcat /proc/config.gz | grep CONFIG_TOUCHSCREEN_GT9XX” 如果返回CONFIG_TOUCHSCREEN_GT9XXy,表示驱动已编…...
Java并发编程-锁(八)
文章目录 Condition的使用和实现使用add(T t) 实现等待队列await()signal()signalAll() 总结 Condition的使用和实现 我们知道,任意一个Java Object,都拥有一组监视器方法,主要包括wait()、 wait(long timeout)、notify()以及notifyAll()方法…...
idea如何快速生成测试类
点击 code -> generate -> Test...
FPGA笔试题review
今天翻网盘上的旧资料,找到了一套20年9月份在武汉某芯片公司食堂做的笔试题(我在做笔试题,旁边的人在嗦酸辣粉,也算是记忆犹新),借着这套题目,正好也可以捡一捡关于FPGA的基础知识点,算是温故而知新。答案更新中 1、名词解释 (1)FPGA、ASIC (2)CLB、LUT (3)时…...
[C++类和对象]构造函数和析构函数
类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗? 并不是,任何类在什么都不写时,编译器会自动生成以下6 个默认成员函数。 默认成员函数:用户没有显式实现,编译器会…...
Java【网络原理】(5)深入浅出HTTPS:状态码与SSL/TLS加密全解析
目录 1.前言 2.正文 2.1状态码 2.2HTTP与HTTPS的关系 2.3SSL协议 2.3.1对称加密 2.3.2非对称加密 2.3.3中间人攻击 2.3.4校验机制 2.3.4.1证书 2.3.4.2数字签名 1. 数字签名的生成过程 2. 数字签名的验证过程 2.4TLS协议(握手过程) 3.小结…...