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 |
| frontend | proxies | 前端servername,类似于Nginx的一个虚拟主机 server和LVS服务集群 |
| backend | proxies | 后端服务器组,等于nginx的upstream和LVS中的RS服务器 |
| listen | proxies | 将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 120s | session 会话保持超长时间,此时间段内会转发出相同的后端服务器 |
| 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++ 岗位必备,不定时更新)
📚 本文主要总结了一些常见的C面试题,主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能,掌握这些内容,基本上就满足C的岗位技能(红色标记为重点内容),欢迎大家前来学习指正&…...
LVS实验——部署DR模式集群
目录 一、实验环境 二、配置 1、LVS 2、router 3、client 4、RS 三、配置策略 四、测试 1.Director服务器采用双IP桥接网络,一个是VPP,一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网…...
pythonUI自动化008::allure测试报告(安装及应用)
allure报告预览 1 下载jdk,配置jdk Path变量: https://www.cnblogs.com/FBGG/p/15103119.html(这里不作阐述,请看该偏文章配置即可) 2 下载allure驱动,配置allure Path变量: 下载allure驱动&a…...
常用的 git 和 linux 命令有哪些?
对于 Git 命令: 1. git init:初始化一个新的 Git 仓库。 2. git clone:克隆一个远程仓库到本地。 3. git add:将文件添加到暂存区。 4. git commit:提交暂存区的更改。 5. git status:查看工作区和暂存…...
MYSQL 删除一个字段前,判断字段是否存在
开发过程中经常需要提交可以重复执行的sql,当设计到需要增加字段时,可以参考如下办法: 1.如果是mysql 版本高于5.7.5 ALTER TABLE table_name DROP COLUMN IF EXISTS column_name; 2.通用方法 写一个存储过程,然后用存储过程取…...
vulnstack-5
环境搭建 靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集、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微控制器系列中集成的一种通信接口,它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。以下是STM32 USB接口的简要介绍: 1. 接口类型 STM32的USB接口通常支持USB 2.0标准,部分高端型号可能还支持USB 3.…...
【中等】 猿人学web第一届 第2题 js混淆 动态cookie 1
目录 调试干扰Hook Function 加密参数定位hook Cookie AST 解混淆字符串解密还原解密函数AST 配合解密函数还原字符串 ASCII 编码字符串还原字符串相加花指令(对象)剔除无用代码虚假 if剔除无引用代码剔除无引用的对象数值还原 switch 还原完整的 AST 代码代码注意 还原加密 请…...
ubuntu 22.04 安装 docker(服务器从毛胚到精装)
1、用户操作 阿里云默认是 root 用户,我们一般要自己创建一个用户,然后给该用户 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++】 特殊类设计:从构思到实现,引领设计新潮流
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 前言 一: 🔥 不能被拷贝的类 二: 🔥 只能在堆上创建对象的类 三: 🔥 只能在栈上创建对象的…...
性能调优 18. Tomcat整体架构及其设计精髓分析
1. Tomcat介绍 1.1. 介绍 这边使用的是Tomcat9来做说明,本章节先对Tomcat架构和设计有个整体认识。后续章节会对Tomcat性能调优做说明。 官方文档介绍 https://tomcat.apache.org/tomcat-9.0-doc/index.html1.2. Tomcat概念 …...
【C++高阶】:特殊类设计和四种类型转换
✨ 人生如梦,朝露夕花,宛若泡影 🌏 📃个人主页:island1314 🔥个人专栏:C学习 ⛺️ 欢迎关注:👍点赞 👂&am…...
kafka基础概念二
1.Kafka中主题和分区的概念 1.主题Topic 主题-topic在kafka中是一个逻辑的概念,kafka通过topic将消息进行分类。不同的topic会被订阅该topic的消费者消费 但是有一个问题,如果说这个topic中的消息非常非常多,多到需要几T来存,因…...
牛客-热身小游戏
题目链接:热身小游戏 第一种写法:线段树 介绍第二种写法:并查集 对于一些已经查询过的点,我们可以往后跳,进行路径压缩,他们的父亲为下一个点。 a数组记录[ l , r ] 之间的乘积,初始值为1。…...
Python 深度学习调试问题
Python–深度学习解决的常见问题 1.在自己写测试样例的时候,有时候可能将要传入的是input_size,不小心传入为input_dim,这个时候会导致出现问题,自定义的卷积模块或者池化等模块会提示类型问题。 解决的策略是: 1.进行assert i…...
linux恶意请求
nginx访问日志: 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泛型总结(快速上手详解) Java Lambda表达式总结(快速上手详解) Java Optional容器总结(快速上手图解) Java 自定义注解笔记总结(油管) Jav…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
