当前位置: 首页 > news >正文

haproxy基础

目录

1 HAProxy介绍

1.1 版本对比

1.2 HAProxy功能

2 参数介绍与实践

2.1 global参数说明

2.2 真实代码格式实例

2.3 常用全局参数

2.3.1 nbproc -- 开启几个进程

2.3.2 cpu-map(CUP绑定)

2.3.3 nbthread 2   --开启2个线程

3 Proxies配置

3.1 Proxies配置-defaults

3.2 Proxies配置-frontend(和backend组合使用)

3.3 Proxies配置-backend(与frontend混合使用)

3.4 frontend+backend配置实例

3.5 Proxies配置-listen替代 frontend+backend

3.6 使用子配置文件保存配置

4 Socat 工具

4.1 下载工具

4.2 Socat 工具的使用

4.2.1 查看帮助

4.2.2 套接字文件添加管理员权限

4.2.3 常用实例

4.2.4 套接字文件配合CPU核心分批次管理


1 HAProxy介绍

HAProxy是法国开发者威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计,目前最新TLS版本为2.0

历史版本:

历史版本更新功能:1.4  1.5  1.6  1.7  1.8 1.9  2.0 2.1 2.2-dev
1.8:多线程,HTTP/2缓存……
1.7:服务器动态配置,多类型证书……
1.6:DNS解析支持,HTTP连接多路复用……
1.5:开始支持SSL,IPV6,会话保持……

企业版网站:[HAProxy Technologies | World's Fastest Load Balancer]

社区版网站:[http://www.haproxy.org/]

1.1 版本对比

功能社区版企业版
高级HTTP / TCP负载平衡和持久性支持支持
高级健康检查支持支持
应用程序加速支持支持
高级安全特性支持支持
高级管理支持支持
HAProxy Dev Branch新功能支持
24*7 支持服务支持
实时仪表盘支持
VRRP和Route Health Injection HA工具支持
ACL,映射和TLS票证密钥同步支持
基于应用程序的高级DDoS和Bot保护(自动保护)支持
Bot(机器人)监测支持
Web应用防火墙支持
HTTP协议验证支持
实时集群追踪支持

1.2 HAProxy功能

2 参数介绍与实践

2.1 global参数说明

参数类型作用
chroot全局锁定运行目录
deamon全局以守护进程运行
user, group, uid, gid全局运行haproxy的用户身份
stats socket全局套接字文件
nbproc N (和nbproc互斥)全局开启的haproxy worker 进程数,默认进程数是一个
nbthread 1全局指定每个haproxy进程开启的线程数,默认认为每个进程一个线程
cpu-map 0 1全局绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 1 1全局绑定haproxy worker 进程至指定CPU,将第2个work进程绑定至1号CPU
maxconn N全局每个haproxy进程的最大并发连接数
maxsslconn N全局每个haproxy进程SSL最大连接数,用于haproxy配置了证书的场景下
maxconnrate N全局每个进程每秒创建的最大连接数量
spread-checks N全局后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间,默认值0
pidfile全局指定pid文件路径
log 127.0.0.1 local2 info全局定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个

2.2 真实代码格式实例

global# 将工作目录锁定在/var/haproxychroot /var/haproxy# 以守护进程运行daemon# 以haproxy用户和组的身份运行user haproxygroup haproxy# 打开了一个套接字文件,允许管理员通过socket与Haproxy交互stats socket /run/haproxy/admin.sock mode 660 level admin# 开启了两个worker进程nbproc 2# 让每个Haproxy进程开启两个线程nbthread 2# 将第一个worker进程绑定了到0号CPU,第二个worker进程绑定了到1号CPUcpu-map 0 0cpu-map 1 1# 设置每个Haproxy进程的最大并发连接数为4000maxconn 4000# 设置每个Haproxy进程SSL最大连接数为4000maxsslconn 4000# 设置每个进程每秒创建的最大连接数量为1000maxconnrate 1000# 设置后端server状态check随机提前或延迟百分比时间为2%spread-checks 2# 指定了pid文件路径pidfile /var/run/haproxy.pid# 定义全局的syslog服务器,日志服务器需要开启UDP协议,最多可以定义两个log 127.0.0.1 local2 info

2.3 常用全局参数

2.3.1 nbproc -- 开启几个进程

查看此时haproxy的进程数

[root@haproxy ~]# pstree -p | grep haproxy|-haproxy(2307)---haproxy(2309)---{haproxy}(2310)

打开配置文件,增加以下行

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

重启服务再次查看进程,由原先的一个进程变成了两个

[root@haproxy ~]# systemctl restart haproxy.service 
[root@haproxy ~]# pstree -p | grep haproxy|-haproxy(2375)-+-haproxy(2377)|               `-haproxy(2378)

但这样子设置会照成一个不好的效果,会使得CPU抖动

CPU抖动:

CPU抖动是指CPU在短时间内频繁地在不同任务间切换,导致性能下降的现象。这种现象通常发生在多核处理器上,因为操作系统会在不同的核心上调度不同的任务,如果任务之间的切换过于频繁,就会出现CPU抖动。

2.3.2 cpu-map(CUP绑定)

所以为了解决这一问题,就得使用到一个新的参数cpu-map(CUP绑定)

2.3.3 nbthread 2   --开启2个线程

注意:多进程与多线程不能同时开多个,不然会报错

查看系统日志文件,说明如果使用多个线程就不能使用多个进程

注释

重启服务

[root@haproxy ~]# systemctl restart haproxy.service 
[root@haproxy ~]# pstree -p | grep haproxy|-haproxy(3388)---haproxy(3390)---{haproxy}(3391)[root@haproxy ~]# cat /proc/3390/status | grep -i thread
Threads:        2
Speculation_Store_Bypass:       thread vulnerable

3 Proxies配置

参数类型作用
defaults proxies默认配置项,针对以下的frontend、backend和listen生效,可以多个name也可以没有name
frontendproxies前端servername,类似于Nginx的一个虚拟主机 server和LVS服务集群
backendproxies后端服务器组,等于nginx的upstream和LVS中的RS服务器
listenproxies将frontend和backend合并在一起来配置,相对于frontend和backend配置更简洁,生产常用

3.1 Proxies配置-defaults

参数功能
option abortonclose当服务器负载很高时,自动结束掉当前队列处理比较久的连接,针对业务情况选择开启
option redispatch当server Id对应的服务器挂掉后,强制定向到其他健康的服务器,重新派发
option http-keep-alive开启与客户端的会话保持
option forwardfor透传客户端真实IP至后端web服务器(在apache配置文件中加入:%{X-Forwarded-For}i后在webserer中看日志即可看到地址透传信息)
mode http|tcp设置默认工作类型,使用TCP服务器性能更好,减少压力
timeout http-keep-alive 120ssession 会话保持超长时间,此时间段内会转发出相同的后端服务器
timeout connect 120s客户端请求从haproxy到后端server最长连接等待时间(TCP连接之前),默认单位ms
timeout server 600s客户端请求从haproxy到后端服务端的请求处理超时时长(TCP连接之后),默认单位ms,如果超时,会出现502错误,此值建议设置较大些,防止502错误
timeout client 600s设置haproxy与客户端的最长非活动时间,默认单位ms,建议和timeout server相同
timeout check 5s对后端服务器的默认检测超时时间
default-server inter 1000 weight 3指定后端服务器的默认设置

3.2 Proxies配置-frontend(和backend组合使用)

frontend 配置参数:

bind:   #指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中#格式:
bind [<address>]:<port_range> [, ...] [param*]#注意:如果需要绑定在非本机的IP,需要开启内核参数:net.ipv4.ip_nonlocal_bind=1

生产示例:

frontend  webcluster               #可以采用后面形式命名:业务-服务-端口号bind :80,:8080bind 10.0.0.7:10080,:8801-8810,10.0.0.17:9001-9010mode  http|tcp              #指定负载协议类型use_backend <backend_name>  #调用的后端服务器组名称

3.3 Proxies配置-backend(与frontend混合使用)

定义一组后端服务器,backend服务器将被frontend进行调用。

mode  http|tcp      #指定负载协议类型,和对应的frontend必须一致
option              #配置选项
server              #定义后端real server

注意:option后面加 httpchk,smtpchk,mysql-check,pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能。

server  配置

check               #对指定real进行健康状态检查,如果不加此设置,默认不开启检查addr  <IP>        #可指定的健康状态监测IP,可以是专门的数据网段,减少业务网络的流量port  <num>   #指定的健康状态监测端口inter <num>   #健康状态检查间隔时间,默认2000 msfall  <num>       #后端服务器从线上转为线下的检查的连续失效次数,默认为3rise  <num>       #后端服务器从下线恢复上线的检查的连续有效次数,默认为2
weight  <weight>  #默认为1,最大值为256,0表示不参与负载均衡,但仍接受持久连接
backup              #将后端服务器标记为备份状态,只在所有非备份主机down机时提供服务,类似Sorry Server
disabled            #将后端服务器标记为不可用状态,即维护状态,除了持久模式,将不再接受连接
redirect prefix  http://www.baidu.com/      #将请求临时(302)重定向至其它URL,只适用于http模式
redir http://www.baidu.com                  #将请求临时(302)重定向至其它URL,只适用于http模式
maxconn <maxconn>     #当前后端server的最大并发连接数
backlog <backlog> #当前端服务器的连接数达到上限后的后援队列长度,注意:不支持backend

3.4 frontend+backend配置实例

frontend webclusterbind *:80mode httpuse_backend webcluster-hostbackend webcluster-host# 使用 roundrobin 动态算法balance roundrobinserver web1 192.168.239.10:80 check inter 3000 fall 3 rise 5server web2 192.168.239.20:80 check inter 3000 fall 3 rise 5# check 关键字表示启用健康检查。
# inter 3000 表示健康检查的间隔时间为 3 秒钟。
# fall 3 表示连续失败 3 次之后,HAProxy 认为这个服务器不可用。
# rise 5 表示连续成功 5 次之后,HAProxy 认为这个服务器可用

3.5 Proxies配置-listen替代frontend+backend

使用listen替换上面的frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用

#官网业务访问入口
listen webclusterbind *:80mode httpbalance roundrobin# inter 健康检查的时间 每隔2毫秒进行一次健康检查# fall 如果连续三次健康检查都失败,那么HAProxy会认为该服务器不可用.# rise 如果连续五次健康检查都成功,那么HAProxy会认为该服务器可用。server web1 192.168.239.10:80 check inter 2 fall 3 rise 5  weight 1server web2 192.168.239.20:80 check inter 2 fall 3 rise 5  weight 1

3.6 使用子配置文件保存配置

当业务众多时,将所有配置都放在一个配置文件中,会造成维护困难。可以考虑按业务分类,将配置信息拆分,放在不同的子配置文件中,从而达到方便维护的目的。

#创建子配置文件,注意:必须为cfg后缀
[root@node1 ~]# vim   /etc/haproxy/conf.d/test.cfg
listen  WEB_PORT_80bind *:80mode httpbalance roundrobinserver web1  192.168.239.14:80   check inter 3000 fall 3 rise 5server web2  192.168.239.15:80   check inter 3000 fall 3 rise 5

在使用yum安装的版本中服务脚本中是默认加载子配置文件的,不需要在主配置文件里增加配置

4 Socat 工具

Socat 是 Linux 下的一个多功能的网络工具,名字来由是Socket CAT,Socat 的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式。如 IP、TCP、 UDP、IPv6、Socket文件等

静态算法:按照事先定义好的规则轮询公平调度,不关心后端服务器的当前负载、链接数和响应速度等,且无法实时修改权重,只能靠重启HAProxy生效。可以利用 socat工具对服务器动态权重和其它状态的调整

4.1 下载工具

[root@haproxy ~]# yum -y install socat

4.2 Socat 工具的使用

4.2.1 查看帮助

# 查看帮助[root@haproxy ~]# socat -h
# stdio 是 socat 的一个选项,它表示标准输入/输出。在这个命令中,stdio 用来接收来自 echo 的输入,并将其传递给 /var/lib/haproxy/stats
[root@haproxy ~]# echo help | socat stdio /var/lib/haproxy/stats

4.2.2 套接字文件添加管理员权限

打开haproxy的配置文件

4.2.3 常用实例

[root@haproxy ~]# echo show servers state | socat - /var/lib/haproxy/stats
1
# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord srv_use_ssl srv_check_port srv_check_addr srv_agent_addr srv_agent_port
2 webcluster 1 web1 192.168.239.10 2 0 1 1 171 6 3 7 6 0 0 0 - 80 - 0 0 - - 0
2 webcluster 2 web2 192.168.239.20 2 0 1 1 172 6 3 7 6 0 0 0 - 80 - 0 0 - - 0
2 webcluster 3 web3_sorry 192.168.239.100 2 0 1 1 15732 1 0 2 0 0 0 0 - 8080 - 0 0 - - 0[root@haproxy ~]# echo get weight webcluster/web1 | socat - /var/lib/haproxy/stats
1 (initial 1)# 修改weight,注意只针对单进程有效
[root@haproxy ~]# echo set weight webcluster/web1 2 | socat stdio /var/lib/haproxy/stats[root@haproxy ~]# echo get weight webcluster/web1 | socat - /var/lib/haproxy/stats
2 (initial 1)# 将后端服务器禁用,注意只针对单进程有效
[root@haproxy ~]# echo disable server webcluster/web1 | socat stdio /var/lib/haproxy/stats# 将后端服务器启用
[root@haproxy ~]# echo enable server webcluster/web1 | socat stdio /var/lib/haproxy/stats# 将后端服务器软下线,即weight设为0
[root@haproxy ~]# echo set weight webcluster/web1 0 | socat - /var/lib/haproxy/stats
[root@client ~]# while true;do curl 192.168.239.100; sleep 0.1; done
this is web2
this is web2
this is web2
this is web2
this is web2# 如果静态算法,如:static-rr,可以更改weight为0或1,但不支持动态更改weight为其它值,否则会提示下面信息
[root@haproxy ~]# echo set weight webcluster/web1 0 | socat - /var/lib/haproxy/stats
[root@haproxy ~]# echo set weight webcluster/web1 1 | socat - /var/lib/haproxy/stats
[root@haproxy ~]# echo set weight webcluster/web1 2 | socat - /var/lib/haproxy/stats
Backend is using a static LB algorithm and only accepts weights '0%' and '100%'.

4.2.4 套接字文件配合CPU核心分批次管理

设置第一个套接字文件由第一个进程管,第二个进程管第二个套接字

# nbproc 2:这行配置指定了 HAProxy 进程的数量,这里是 2 个进程。
#
# cpu-map 1 0 cpu-map 2 1:这两行配置指定了每个进程应该绑定到哪个 CPU 核心上。1 0 表示第一个进程
# 绑定到第 0 个核心,2 1 表示第二个进程绑定到第 1 个核心>。这意味着 HAProxy 将创建两个进程,其中一
# 个进程将被绑定到 CPU 的第一个核心,另一个进程将被绑定到 CPU 的第二个核心。这样做的目的是为了更好地
# 利用多核处>理器,提高性能。
#
# stats socket /var/lib/haproxy/stats1 mode 600 level admin process 1:
# 这行配置打开了一个名为 /var/lib/haproxy/stats1 的套接字文件,用于收集 HAProxy 的统计信息。
# mode 600 表示权限为 600,level admin 表示管理员级别,process 1 表示仅限于第一个进程。这意味着
# 只有拥有足够权限的用户才能访问这个套接字,而且>只能访问第一个进程的信息。
#
# stats socket /var/lib/haproxy/stats2 mode 600 level admin process 2:这行配置同上,但仅限于
# 第二个进程。这意味着只有拥有足够权限的用户才能访问这个套接字,而且只能访问第二个进程的信息。
#
# 总的来说,这段代码的作用是启动两个 HAProxy 进程并将它们绑定到不同的 CPU 核心,同时开放了两个套接
# 字供管理员获取这两个进程的统计信息。这样做的好处是可>以更有效地监控和管理 HAProxy,在多核环境中充
# 分利用硬件资源# 这样每个进程就会有单独的sock文件来进行单独管理[root@haproxy ~]# ll /var/lib/haproxy/
总用量 0
srw-------. 1 root root 0  8月 10 00:24 stats
srw-------. 1 root root 0  8月 10 00:33 stats1
srw-------. 1 root root 0  8月 10 00:33 stats2

相关文章:

haproxy基础

目录 1 HAProxy介绍 1.1 版本对比 1.2 HAProxy功能 2 参数介绍与实践 2.1 global参数说明 2.2 真实代码格式实例 2.3 常用全局参数 2.3.1 nbproc -- 开启几个进程 2.3.2 cpu-map(CUP绑定) 2.3.3 nbthread 2 --开启2个线程 3 Proxies配置 3.1 Proxies配置-defaults 3.2 Proxi…...

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

&#x1f4da; 本文主要总结了一些常见的C面试题&#xff0c;主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能&#xff0c;掌握这些内容&#xff0c;基本上就满足C的岗位技能&#xff08;红色标记为重点内容&#xff09;&#xff0c;欢迎大家前来学习指正&…...

LVS实验——部署DR模式集群

目录 一、实验环境 二、配置 1、LVS 2、router 3、client 4、RS 三、配置策略 四、测试 1.Director服务器采用双IP桥接网络&#xff0c;一个是VPP&#xff0c;一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网…...

pythonUI自动化008::allure测试报告(安装及应用)

allure报告预览 1 下载jdk&#xff0c;配置jdk Path变量&#xff1a; https://www.cnblogs.com/FBGG/p/15103119.html&#xff08;这里不作阐述&#xff0c;请看该偏文章配置即可&#xff09; 2 下载allure驱动&#xff0c;配置allure Path变量&#xff1a; 下载allure驱动&a…...

常用的 git 和 linux 命令有哪些?

对于 Git 命令&#xff1a; 1. git init&#xff1a;初始化一个新的 Git 仓库。 2. git clone&#xff1a;克隆一个远程仓库到本地。 3. git add&#xff1a;将文件添加到暂存区。 4. git commit&#xff1a;提交暂存区的更改。 5. git status&#xff1a;查看工作区和暂存…...

MYSQL 删除一个字段前,判断字段是否存在

开发过程中经常需要提交可以重复执行的sql&#xff0c;当设计到需要增加字段时&#xff0c;可以参考如下办法&#xff1a; 1.如果是mysql 版本高于5.7.5 ALTER TABLE table_name DROP COLUMN IF EXISTS column_name; 2.通用方法 写一个存储过程&#xff0c;然后用存储过程取…...

vulnstack-5

环境搭建 靶场虚拟机共用两个&#xff0c;一个外网一个内网&#xff0c;用来练习红队相关内容和方向&#xff0c;主要包括常规信息收集、Web攻防、代码审计、漏洞利用、内网渗透以及域渗透等相关内容学习。 虚拟机密码 win7 sun\heart 123.com sun\Administrator dc123.com # …...

回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出

回归预测|基于灰狼优化GWO-Transformer-LSTM组合模型的数据回归预测Matlab程序 多特征输入单输出 文章目录 前言回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出GWO-Transformer-BiLSTM 一、GWO-Transformer-BiLSTM模型二、实验…...

STM32的USB接口介绍

STM32 USB接口是STM32微控制器系列中集成的一种通信接口&#xff0c;它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。以下是STM32 USB接口的简要介绍&#xff1a; 1. 接口类型 STM32的USB接口通常支持USB 2.0标准&#xff0c;部分高端型号可能还支持USB 3.…...

【中等】 猿人学web第一届 第2题 js混淆 动态cookie 1

目录 调试干扰Hook Function 加密参数定位hook Cookie AST 解混淆字符串解密还原解密函数AST 配合解密函数还原字符串 ASCII 编码字符串还原字符串相加花指令(对象)剔除无用代码虚假 if剔除无引用代码剔除无引用的对象数值还原 switch 还原完整的 AST 代码代码注意 还原加密 请…...

ubuntu 22.04 安装 docker(服务器从毛胚到精装)

1、用户操作 阿里云默认是 root 用户&#xff0c;我们一般要自己创建一个用户&#xff0c;然后给该用户 sudo 权限 添加用户 sudo adduser newUserName赋予sudo权限 sudo usermod -aG sudo newUserName删除用户 sudo deluser --remove-home --remove-all-files newUserNam…...

Vue3从零开始——如何巧妙使用setup语法糖、computed函数和watch函数

文章目录 一、setup语法糖二、computed函数2.1 computed的基本用法2.2 computed vs methods2.3 注意事项 三、watch函数3.1 watch的基本用法3.2 immediate和deep选项 四、综合小Demo五、总结 一、setup语法糖 之前我们在编写代码时每次都要编写setup()​ ,默认导出配置&#x…...

【C++】 特殊类设计:从构思到实现,引领设计新潮流

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f680; 前言 一&#xff1a; &#x1f525; 不能被拷贝的类 二&#xff1a; &#x1f525; 只能在堆上创建对象的类 三&#xff1a; &#x1f525; 只能在栈上创建对象的…...

性能调优 18. Tomcat整体架构及其设计精髓分析

1. Tomcat介绍 1.1. 介绍 ‌‌‌  这边使用的是Tomcat9来做说明&#xff0c;本章节先对Tomcat架构和设计有个整体认识。后续章节会对Tomcat性能调优做说明。 ‌‌‌  官方文档介绍 ‌‌‌  https://tomcat.apache.org/tomcat-9.0-doc/index.html1.2. Tomcat概念 ‌‌…...

【C++高阶】:特殊类设计和四种类型转换

✨ 人生如梦&#xff0c;朝露夕花&#xff0c;宛若泡影 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&am…...

kafka基础概念二

1.Kafka中主题和分区的概念 1.主题Topic 主题-topic在kafka中是一个逻辑的概念&#xff0c;kafka通过topic将消息进行分类。不同的topic会被订阅该topic的消费者消费 但是有一个问题&#xff0c;如果说这个topic中的消息非常非常多&#xff0c;多到需要几T来存&#xff0c;因…...

牛客-热身小游戏

题目链接&#xff1a;热身小游戏 第一种写法&#xff1a;线段树 介绍第二种写法&#xff1a;并查集 对于一些已经查询过的点&#xff0c;我们可以往后跳&#xff0c;进行路径压缩&#xff0c;他们的父亲为下一个点。 a数组记录[ l , r ] 之间的乘积&#xff0c;初始值为1。…...

Python 深度学习调试问题

Python–深度学习解决的常见问题 1.在自己写测试样例的时候&#xff0c;有时候可能将要传入的是input_size&#xff0c;不小心传入为input_dim&#xff0c;这个时候会导致出现问题&#xff0c;自定义的卷积模块或者池化等模块会提示类型问题。 解决的策略是: 1.进行assert i…...

linux恶意请求

nginx访问日志&#xff1a; 162.243.135.29 - - [05/Jan/2024:00:12:07 0800] "GET /autodiscover/autodiscover.json?zdi/Powershell HTTP/1.1" 404 153 "-" "Mozilla/5.0 zgrab/0.x"107.151.182.54 - - [04/Mar/2024:11:30:06 0800] "G…...

Java 反射笔记总结(油管)

Java系列文章目录 IDEA使用指南 Java泛型总结&#xff08;快速上手详解&#xff09; Java Lambda表达式总结&#xff08;快速上手详解&#xff09; Java Optional容器总结&#xff08;快速上手图解&#xff09; Java 自定义注解笔记总结&#xff08;油管&#xff09; Jav…...

从MySQL DBA视角迁移:在Ubuntu 22.04上快速上手人大金仓KingbaseES的配置与连接

从MySQL DBA视角迁移&#xff1a;在Ubuntu 22.04上快速上手人大金仓KingbaseES的配置与连接 对于长期使用MySQL或Oracle的数据库管理员来说&#xff0c;初次接触国产数据库KingbaseES可能会感到既熟悉又陌生。作为一款成熟的企业级关系型数据库&#xff0c;KingbaseES在语法和功…...

Qwen3.5-2B效果展示:低参数模型在中文长文本摘要与英文翻译中的准确表现

Qwen3.5-2B效果展示&#xff1a;低参数模型在中文长文本摘要与英文翻译中的准确表现 1. 轻量化多模态模型概述 Qwen3.5-2B是Qwen3.5系列中的轻量化版本&#xff0c;仅有20亿参数规模&#xff0c;专为低功耗、低门槛部署场景设计。这款模型特别适合在端侧设备和边缘计算环境中…...

MiniCPM-o-4.5-nvidia-FlagOS开发入门:C语言基础与系统编程概念问答

MiniCPM-o-4.5-nvidia-FlagOS开发入门&#xff1a;C语言基础与系统编程概念问答 1. 引言&#xff1a;你的随身C语言导师 刚开始学C语言&#xff0c;是不是感觉有点懵&#xff1f;指针、内存、结构体这些概念&#xff0c;看书看半天&#xff0c;好像懂了&#xff0c;一写代码又…...

09 华夏之光永存:带领华为盘古大模型走向世界巅峰

09 华夏之光永存&#xff1a;带领华为盘古大模型走向世界巅峰 小标题&#xff1a;鸿蒙生态深度协同&#xff1a;端侧大模型原生融合方案 文章摘要 本文作为系列专栏第九篇&#xff0c;聚焦华为盘古大模型与鸿蒙生态端侧原生适配、端边云全域协同核心痛点&#xff0c;针对当前端…...

如何用双路PWM实现16bit DAC输出?MCU音频信号处理实战

如何用双路PWM实现16bit DAC输出&#xff1f;MCU音频信号处理实战 在嵌入式音频开发中&#xff0c;高精度DAC输出往往是提升音质的关键。但当你手头的MCU主频有限&#xff0c;内置DAC分辨率不足时&#xff0c;如何突破硬件限制&#xff1f;本文将带你深入双路PWM分频叠加技术的…...

YOLO11导出TFLite格式:移动端轻量级部署,如何将YOLO11转换为TFLite格式,并测试推理效果全面实战(一)

🎬 Clf丶忆笙:个人主页 🔥 个人专栏:《YOLOv11全栈指南:从零基础到工业实战》 ⛺️ 努力不一定成功,但不努力一定不成功! 文章目录 一、YOLO11与TFLite技术概述 1.1 TFLite格式技术解析 1.2 YOLO11转TFLite的应用价值 二、环境准备与依赖安装 2.1 Python环境配置 2…...

嵌入式轻量级时间解耦引擎:逻辑Tick与物理循环分离

1. 项目概述bluemicro_engine是一个面向嵌入式实时系统的轻量级时间解耦引擎&#xff0c;其核心设计目标是在硬件资源受限的微控制器&#xff08;如 Cortex-M0/M3/M4&#xff09;上&#xff0c;构建一个与用户输入响应、CPU主频波动及外设时序无关的确定性执行循环。它并非通用…...

OpenClaw硬件控制:Qwen3.5-9B通过串口操作物联网设备

OpenClaw硬件控制&#xff1a;Qwen3.5-9B通过串口操作物联网设备 1. 为什么选择OpenClaw控制物联网设备 去年我在搭建智能温室种植系统时&#xff0c;遇到了一个典型问题&#xff1a;市面上的物联网中台要么价格昂贵&#xff0c;要么灵活性不足。作为一个喜欢折腾的开发者&am…...

论文阅读:arxiv 2026 Agent Privilege Separation in OpenClaw: A Structural Defense Against Prompt Injectio

总目录 大模型安全研究论文整理 2026年版&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/159047894 https://arxiv.org/abs/2603.13424 Agent Privilege Separation in OpenClaw: A Structural Defense Against Prompt Injection 该论文名为《Agent Privilege …...

Windows环境SonarQube与SonarScanner实战:从零搭建代码质量守护体系

1. 为什么你的项目需要SonarQube&#xff1f; 每次提交代码前&#xff0c;你是不是总在担心那些隐藏的Bug会悄悄溜进生产环境&#xff1f;我见过太多团队在深夜被紧急报警叫醒&#xff0c;原因往往只是一行没处理好的空指针异常。SonarQube就像个24小时值班的代码质检员&#x…...