Haproxy讲解
Haproxy:
haproxy是一个开源的高性能反向代理和负载均衡器,主要用于TCP和HTTP流量管理。
-   功能和特点:haproxy能够处理大量的并发连接,支持TCP和HTTP协议,具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站,能够保护web服务器不被直接暴露在网络中,同时提供基于cookie的会话保持、健康检查、动态和静态负载均衡策略等功能。23 
-   应用场景:haproxy被广泛应用于各种需要高性能网络流量管理的场景,包括网站、应用服务等。由于其高性能和可靠性,haproxy已经成为许多高流量网站的负载均衡解决方案。36 
-   技术细节:haproxy采用事件驱动、单一进程模型,这种模型在处理大量并发连接时表现出色。此外,haproxy还支持多种负载均衡算法,如轮询、最少连接等,以及健康检查功能,能够在后端服务器出现问题时自动剔除,恢复后自动重新加入。24 
总之,haproxy是一个功能强大且高效的工具,适用于需要高性能网络流量管理的各种环境。
1.haproxy七层代理
1.1负载均衡
Haproxy负载均衡是一种建立在现有网络结构之上,提供廉价有效透明的方法扩展网络设备和服务器的方法,通过数据流量分摊到多个服务器上执行,减轻每台服务器的压力,从而提高网络的灵活性和可用性。Haproxy特别适用于负载特大的web站点,这些站点通常需要会话保持或七层处理。Haproxy运行在时下的硬件上,可以支持数以万计的并发连接,并且它的运行模式使得它可以简单安全地整合进用户当前的架构中,同时保护web服务器不被暴露到网络上。Haproxy实现了一种事件驱动、单一进程模型,支持非常大的并发连接数,这种模型在用户空间实现所有任务,没有多进程或多线程模型所面临的内存限制、系统调度器限制以及锁限制等问题,从而能够处理高并发连接。此外,Haproxy还支持连接拒绝和全透明代理等特性,为网站提供了额外的安全保障。
1.2四层负载均衡
Haproxy的四层负载均衡是基于传输层(TCP/UDP)的负载均衡技术。它通过发布三层(网络层)的IP地址(VIP)加上四层(传输层)的端口号来决定哪些流量需要进行负载均衡。这种负载均衡架构不需要解析报文消息内容,因此在网络吞吐量与处理能力上相对较高。四层负载均衡主要基于IP地址和端口号进行流量分发,例如,通过VIP和特定的端口号(如HTTP的80端口)来辨别是否需要处理的流量,并进行NAT处理后转发至后台服务器。此外,四层负载均衡还记录下哪个服务器处理的TCP或UDP流量,确保后续该连接的所有流量都同样转发到同一台服务器处理,从而实现负载均衡。
Haproxy作为一款基于事件驱动、单进程模型设计的负载均衡器,能够实现在TCP/UDP层面以及HTTP(S)等应用层协议上的高效流量分发,包括四层和七层负载均衡。四层负载均衡在传输层及以下工作,主要依据IP地址和端口号进行流量分发,其优势在于性能较高,因为不需要解析应用层的报文内容,从而在网络吞吐量和处理能力上表现出色

支持四层的软件:nginx,haproxy,lvs
1.3七层负载均衡
Haproxy七层负载均衡是一种基于HTTP(第七层)应用的负载均衡技术,它可以根据用户请求的内容将请求转发到不同的后端服务器。这种负载均衡方法更加复杂,因为它允许负载均衡器根据HTTP请求的内容(如URL、请求头等信息)来决定如何路由请求到后端服务器,从而实现更精细的控制和优化。Haproxy七层负载均衡特别适合需要会话保持或七层处理的高负载web站点,能够提供快速、可靠的负载均衡解决方案。
Haproxy七层负载均衡的主要特点包括:
- 会话保持:能够根据会话信息(如cookie)将用户的请求路由到同一个后端服务器,保持会话的连续性。
- 灵活性:支持多种负载均衡算法,可以根据服务器的负载情况、响应时间等因素进行动态调整,实现负载的均衡分配。
- 高性能:Haproxy能够支撑数以万计的并发连接,处理大量请求,具有高性能的特点。
- 安全性:通过HAProxy的代理,可以避免Web服务器直接暴露给外部网络,增加安全性。
- 监控与管理:拥有强大的服务器状态监控页面,可以实时了解系统的运行状况,便于管理和维护。
Haproxy七层负载均衡通过这些特点,为高负载的web应用提供了可靠、高效的负载均衡解决方案,特别适用于需要会话保持或七层处理的应用场景。

支持七层的软件:nginx,haproxy
1.4区别
四层和七层负载均衡的主要区别在于它们在网络OSI模型中的操作层次、功能和处理能力。
-   操作层次和功能: - 四层负载均衡 主要工作在OSI模型的传输层(第4层),基于IP地址和端口号进行负载均衡。它主要负责简单的数据包转发,不涉及应用层数据的解析或修改。12
- 七层负载均衡 则工作在应用层(第7层),能够根据应用层协议(如HTTP、FTP等)的信息进行负载均衡。它能够解析和应用层的数据,如URL、HTTP头部等,从而实现更复杂的负载均衡策略,如内容交换和代理。
 
-   应用场景: - 四层负载均衡 适用于对性能要求较高,且不需要复杂应用层处理的场景,如简单的TCP应用。35
- 七层负载均衡 更适合需要智能处理的应用,如网站或内部信息平台等基于B/S开发的系统,因为它可以根据应用层信息优化流量分配,提高系统灵活性和安全性。
 
-   技术特点: - 四层负载均衡处理速度快,但功能相对简单;七层负载均衡虽然处理开销较大,但提供了更强大的功能和灵活性。4
 
总结来说,选择四层还是七层负载均衡取决于具体的应用需求和技术要求。
2.Haproxy软件下载
LINUX中:dnf install haproxy -y
实验环境:三台主机,haproxy,web1,web2
分别对三台主机进行如下配置
haproxy ip配置


web1 ip配置

web2 ip配置

三台主机均关闭防火墙和SELINUX
 下载安装包
  
 
#haproxy
 dnf install haproxy -y
 dnf install socat   -y #可调整服务器动态权重和其它状态
  
 #server1、server2
 dnf install nginx
 echo webserver1 -172.25.250.10 > /usr/share/nginx/html/index.html #server1的访问页面
 echo webserver2 -172.25.250.20 > /usr/share/nginx/html/index.html #server2的访问页面
 systemctl enable --now nginx
 curl 172.25.250.10
 curl 172.25.250.20    #测试web服务是否正常运行
 rpm -qc haproxy    #查询配置文件
 vim /etc/haproxy/haproxy.cfg    #修改配置文件
 systemctl start haproxy.service    #重启服务
 cat /var/log/messages #查看错误日志
对配置文件/etc/haproxy/haproxy.cfg 进行配置并测试:





修改权限

echo "help" |socat stdio /var/lib/haproxy/stats    #查看帮助
 echo "show info" |socat stdio /var/lib/haproxy/stats     #查看haproxy状态
 echo "show server stats" |socat stdio /var/lib/haproxy/stats #查看服务器状态
 echo get weight webcluster/web1 | socat stdio /var/lib/haproxy/stats#查看集群中server1的权重
 echo "set weight webcluster/web1 1" | socat stdio /var/lib/haproxy/stats#修改集群权重
 echo "disable server webcluster/web1 " | socat stdio /var/lib/haproxy/stats#关闭web1
 echo "enable server webcluster/web1 " | socat stdio /var/lib/haproxy/stats#开启web1



仅展示了部分命令,了解更多可以去haproxy网站查询
3.haproxy算法
HAProxy支持多种调度算法,包括静态和动态调度算法。 这些算法可以根据服务器的状态和负载情况进行动态调整,以提高系统的整体性能和稳定性。
以下是HAProxy中常见的几种调度算法及其特点:
-   Round Robin(轮询):这是最简单常用的一种算法,基于权重进行轮询调度。在服务器的处理时间保持均匀分布时,这是一种最平衡、最公平的算法。此算法是动态的,表示其权重可以在运行时进行调整。 
-   Least Connections(最少连接数):新的连接请求被派发至具有最少连接数目的后端服务器。在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP。 
-   Source IP Hash:基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度。这种方式可以使同一个客户端IP的请求始终被转发到某特定的后端服务器。 
-   URI Hash:基于请求的URI将请求转发至同一个后端节点上。这种模式在缓存代理实现中,对于增加缓存命中率非常理想。 
-   URL Parameter:基于请求的URL参数进行调度。 
这些调度算法可以根据具体的应用场景和需求进行选择,以达到最佳的负载均衡效果。
3.1 静态算法
     静态算法:按照事先定义好的规则轮询公平调度,不关心后端服务器的当前负载、连接数和响应速度 等,且无法实时修改权重(只能为0和1,不支持其它值),只能靠重启HAProxy生效。
3.1.1static-rr:基于权重的轮询调度
 不支持运行时利用socat进行权重的动态调整(只支持0和1,不支持其它值)
不支持端服务器慢启动
其后端主机数量没有限制,相当于LVS中的 wrr
3.1.2 first
 根据服务器在列表中的位置,自上而下进行调度
其只会当第一台服务器的连接数达到上限,新请求才会分配给下一台服务
其会忽略服务器的权重设置
不支持用socat进行动态修改权重,可以设置0和1,可以设置其它值但无效
3.2 动态算法
         基于后端服务器状态进行调度适当调整, 新请求将优先调度至当前负载较低的服务器 权重可以在haproxy运行时动态调整无需重启
3.2.1 roundrobin
 1. 基于权重的轮询动态调度算法,
2. 支持权重的运行时调整,不同于lvs中的rr轮训模式,
3. HAProxy中的roundrobin支持慢启动(新加的服务器会逐渐增加转发数),
4. 其每个后端backend中最多支持4095个real server,
5. 支持对real server权重动态调整,
6. roundrobin为默认调度算法,此算法使用广泛
3.2.2 leastconn
 eastconn加权的最少连接的动态
支持权重的运行时调整和慢启动,即:根据当前连接最少的后端服务器而非权重进行优先调度(新客户 端连接)
比较适合长连接的场景使用,比如:MySQL等场景
3.3 其他算法
         其它算法即可作为静态算法,又可以通过选项成为动态算法
3.3.1 source
 源地址hash,基于用户源地址hash并将请求转发到后端服务器,后续同一个源地址请求将被转发至同一 个后端web服务器。此方式当后端服务器数据量发生变化时,会导致很多用户的请求转发至新的后端服 务器,默认为静态方式,但是可以通过hash-type支持的选项更改这个算法一般是在不插入Cookie的TCP
模式下使用,也可给拒绝会话cookie的客户提供最好的会话粘性,适用于session会话保持但不支持
cookie和缓存的场景源地址有两种转发客户端请求到后端服务器的服务器选取计算方式,分别是取模法和一致性hash
4.Haproxy高级功能及配置、
4.1状态页
stats enable #基于默认的参数启用stats page
stats hide-version #将状态页中haproxy版本隐藏
stats refresh <delay> #设定自动刷新时间间隔,默认不自动刷新
stats uri <prefix> #自定义stats page uri,默认值:/haproxy?stats
stats auth <user>:<passwd> #认证时的账号和密码,可定义多个用户,每行指定一个用户
#默认:no authentication
stats admin { if | unless } #启用stats page中的管理功能
4.2、基于cookie的会话保持
在一个浏览器访问后,会记住选择,之后刷新一直是该后端主机,另一个浏览器访问则是另一个后端主机
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
     balance roundrobin
     cookie WEBCOOKIE insert nocache indirect
     server web1 172.25.250.10:80 cookie aaa1 check inter 2 fall 3 rise 5 weight 2
     server web2 172.25.250.20:80 cookie aaa2 check inter 2 fall 3 rise 5 weight 1
 [root@haproxy ~]# systemctl restart haproxy.service 
 [root@haproxy ~]# curl -b WEBCOOKIE=aaa1 172.25.250.100
 webserver1 - 172.25.250.10
 [root@haproxy ~]# curl -b WEBCOOKIE=aaa2 172.25.250.100
 webserver2 - 172.25.250.20
4.3 backend server信息
session rate(每秒的连接会话信息): Errors(错误统计信息):
cur:每秒的当前会话数量 : Req:错误请求量
max:每秒新的最大会话数量 conn:错误链接量
limit:每秒新的会话限制量 Resp:错误响应量
sessions(会话信息): Warnings(警告统计信息):
cur:当前会话量 Retr:重新尝试次数
max:最大会话量 Redis:再次发送次数
limit: 限制会话量
Total:总共会话量 Server(real server信息):
LBTot:选中一台服务器所用的总时间 Status:后端机的状态,包括UP和DOWN Last:和服务器的持续连接时间 LastChk:持续检查后端服务器的时间
Wght:权重
Bytes(流量统计): Act:活动链接数量
In:网络的字节输入总量 Bck:备份的服务器数量
Out:网络的字节输出总量 Chk:心跳检测时间
Dwn:后端服务器连接后都是DOWN的数量
Denied(拒绝统计信息): Dwntme:总的downtime时间
Req:拒绝请求量 Thrtle:server 状态
Resp:拒绝回复量
4.4ip透传
七层代理
七层代理 mode--->http
 #webserver1
 [root@webserver1 ~]# systemctl disable nginx
 [root@webserver1 ~]# systemctl stop nginx
 [root@webserver1 ~]# dnf install httpd -y
 [root@webserver1 ~]# echo webserver1 - 172.25.250.10 > /var/www/html/index.html
 [root@webserver1 ~]# vim /etc/httpd/conf/httpd.conf 
 如下图标注
 %{X-Forwarded-For}i
 [root@webserver1 ~]# systemctl enable --now httpd
 
 #测试
 [root@webserver1 ~]# tail -n 3 /etc/httpd/logs/access_log
 [root@webserver2 ~]# tail -3 /var/log/nginx/access.log
  
四层代理
四层代理mode--->tcp
 看不到IP地址
 [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
     mode tcp
     server web1 172.25.250.10:80  check inter 2 fall 3 rise 5 weight 2
     server web2 172.25.250.20:80 send-proxy check inter 2 fall 3 rise 5 weight 1
 [root@haproxy ~]# systemctl restart haproxy.service
 
 #webserver2
 [root@webserver2 ~]# 
  vim /etc/nginx/nginx.conf
 http {
 log_format main '$remote_addr - $remote_user [$time_local] "$request"'
     ' "$proxy_protocol_addr"'
     
 server {
         listen       80 proxy_protocol;
 
 [root@webserver2 ~]# systemctl restart nginx
  
 [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
  server web1 172.25.250.10:80 check inter 2 fall 3 rise 5 weight 2
     server web2 172.25.250.20:80 send-proxy check inter 2 fall 3 rise 5 weight 1
 [root@haproxy ~]# systemctl restart haproxy.service
 
 # 测试
 [root@webserver2 ~]# tail -n 3 /var/log/nginx/access.log
 [root@webserver1 ~]# tail -n 3 /etc/httpd/logs/access_log
4.5基于文件后缀名实现动静分离
[root@webserver1 ~]# dnf install php -y
 [root@webserver1 ~]# systemctl restart httpd
 [root@webserver1 ~]# vim /var/www/html/index.php
 [root@webserver1 ~]# cat /var/www/html/index.php 
 <?php
     phpinfo();
 ?>
 
 #haproxy
 frontend webcluster
     bind *:80
     mode http
     acl static path_end -i .html .jpg .png .css .js
     acl php    path_end -i .php
     use_backend webcluster-host if php
     default_backend default-host
5.自定义HAProxy错误界面
 基于自定义的错误页面文件
 
#webserver1\2主机上
 system stop httpd
 
 #haproxy主机上
 [root@haproxy ~]# mkdir /etc/haproxy/errorpage -p
 [root@haproxy ~]# vim /etc/haproxy/errorpage/503.http
 HTTP/1.0 503 Service Unavailable
 Cache-Control: no-cache
 Connection: close
 Content-Type: text/html;charset=UTF-8
 
 <html><body><h1>什么动物生气最安静</h1>
 大猩猩!!
 </body></html>
[root@haproxy ~]# vim /etc/haproxy/haproxy.conf
 defaults
     errorfile 503   /etc/haproxy/errorpage/503.http
 [root@haproxy ~]# systemctl restart haproxy.service 
 然后用浏览器去访问172.25.250.130
6、haproxy https实现
 #证书制作
 [root@haproxy ~]# mkdir -p /etc/haproxy/certs
 [root@haproxy ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/haproxy/certs/timinglee.org.key -x509 -days 356 -out /etc/haproxy/certs/timinglee.org.crt
 CD shannxi XIan timinglee webserver www.timinglee.org admin@timinglee.org
 
 [root@haproxy ~]# ls /etc/haproxy/certs/
 [root@haproxy ~]# cat /etc/haproxy/certs/timinglee.org.key /etc/haproxy/certs/timinglee.org.crt > /etc/haproxy/certs/timinglee.pem
 
 [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
 frontend webcluster
     bind *:80
     mode http
     redirect scheme https if !{ ssl_fc }  #全网站加密
 
 backend webcluster-host
     mode http
     server web1 172.25.250.10:80 check inter 2 fall 2 rise 5
 
 backend default-host
     mode http
     server web2 172.25.250.20:80 check inter 2 fall 2 rise 5
 
 listen web-https
     bind *:443 ssl crt /etc/haproxy/certs/timinglee.pem
     mode http
     balance roundrobin
     server web1 172.25.250.10:3306 check inter 2 fall 2 rise 5
     server web2 172.25.250.20:3306 check inter 2 fall 2 rise 5
 
 [root@haproxy ~]# systemctl restart haproxy
 [root@haproxy ~]# netsata -antup | grep 443
 
 开启web1,web2服务
 访问https://172.25.250.130
完成
相关文章:
 
Haproxy讲解
Haproxy: haproxy是一个开源的高性能反向代理和负载均衡器,主要用于TCP和HTTP流量管理。 功能和特点:haproxy能够处理大量的并发连接,支持TCP和HTTP协议,具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站&am…...
 
K8S系列——一、Ubuntu上安装Helm
在使用K8S搭建集群服务时,有时候需要用到Helm(一个用于Kubernetes应用管理的工具),下面是在Ubuntu上安装Helm的过程。 1.更新系统软件包列表 sudo apt-get update2.安装必要的依赖项 sudo apt-get install apt-transport-https…...
 
排序: 插入\希尔\选择\归并\冒泡\快速\堆排序实现
1.排序的概念及应用 1.1概念 排序:所谓排序,就是一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 1.2运用 购物筛选排序: 1.3常见排序算法 2.实现常见的排序算法 int a[ {5,3,9,6,2,4,7,1,8}; 2…...
 
OpenCV图像处理——按最小外接矩形剪切图像处理ROI后映射回原图像
引言 在图像处理过程中,提取感兴趣区域(ROI)并在其上进行处理后,往往需要将处理后的结果映射回原图像。这一步通常涉及以下几个步骤: 找到最小外接矩形:使用 cv::boundingRect 或 cv::minAreaRect 提取感兴…...
 
Linux中以单容器部署Nginx+ASP.NET Core
强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器,本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程。 Nginx->ASP.NET Coe部署架构容器化 在Docker中部署Nginx--->ASP.NETCore 有两种选择, 第一种是在单容器…...
 
【秋招笔试】8.11大疆秋招(第三套)-三语言题解
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…...
标题:打造编程学习的知识宝库:高效笔记记录与整理
标题:打造编程学习的知识宝库:高效笔记记录与整理 在编程学习的征途中,有效的笔记记录和整理技巧对于掌握和回顾知识点至关重要。本文将从笔记工具选择、笔记结构设计、以及实践与复习策略三个方面,探讨如何高效地记录并整理编程…...
【Rust光年纪】Rust 官方提供的关键工具概览:代码检查、格式化和依赖管理
提升 Rust 项目质量和安全性:掌握官方工具的核心功能和使用方法 前言 Rust 作为一种系统编程语言,拥有强大的性能和内存安全特性。然而,随着项目规模增长,代码检查、格式化和依赖管理等工作变得更加重要。因此,Rust …...
 
【Python学习-UI界面】PyQt5 小部件8-QSlider 数值滑动
样式如下: QSlider 类对象为用户提供一个沟槽,可以在其上移动一个手柄。 它是一个经典的小部件,用于控制有界值。 手柄在沟槽上的位置相当于控件的下限和上限之间的整数。 常用方法如下: 序号方法描述1setMinimum设置滑块的最小值2setMax…...
 
MapReduce入门教程
这可不是目录 入门定义与说明数据分析Map和Reduce阶段的任务<Kn,Vn>分析MapReduce的数据类型其他说明(持续更新) 开发案例(持续更新)自定义的wordcountcsv文件操作序列化操作 入门 定义与说明 数据分析 以下未数据分析示意图 Map和Reduce阶段的任务 Map阶段的任务&a…...
 
JDBC1 Mysql驱动,连接数据库
JDBC 一、JDBC Java Database Connectivity:Java访问数据库的解决方案 JDBC定义了一套标准接口,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去实现这些接口。 JDBC希望用相同的方式访问不同的数据库,让具体的…...
 
LeetCode 205 同构字符串
题目 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,…...
 
ARM高性能计算(HPC)处理器Neoverse介绍
思考: Neoverse系列中的N、V、E有什么区别? 这三个字母的缩写又是什么? ARM Neoverse架构是ARM专为服务器、数据中心、高性能计算(HPC)和网络基础设施设计的一系列处理器架构。Neoverse架构分为N系列、V系列和E系列,这些系列面向不同的应用场景,各自有不同的设计目标和…...
 
【每日力扣中医养生】力扣1298. 你能从盒子里获得的最大糖果数
1298. 你能从盒子里获得的最大糖果数 文章目录 【每日力扣&中医养生】力扣1298. 你能从盒子里获得的最大糖果数题目描述示例解析示例 1示例 2 算法思路算法步骤代码实现复杂度分析总结 【每日力扣&中医养生】力扣1298. 你能从盒子里获得的最大糖果数 《黄帝内经》的阴…...
 
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
C#创建一个自定义控件类
如果你希望在 TextBox 内部嵌入一个按钮,并且这个按钮用于打开文件选择对话框,可以创建一个自定义控件来实现这一功能。下面是一个示例,展示如何在 Windows 窗体应用程序中创建一个自定义控件,其中 Button 嵌入到 TextBox 内部。 …...
 
springboot牙科就诊管理系统--论文源码调试讲解
2 相关技术 2.1 MySQL数据库 本设计用到的数据库就是MySQL数据库[3],之所以用到这个数据库的原因很多。首先,从满足功能需求上面来讲,MySQL是符合的;其次,从学习程度来讲,MySQL相比其他数据库不管是从安装…...
 
CUDA+tensorflow+python+vscode在GPU下环境安装及问题汇总与解答
2024.8.14 因为要做深度学习,需要安装tensorflowgpu的环境,每次都搞不好整的很生气,本次将安装过程中参考的一些大佬的博客和安装过程中遇到的问题及解决方案总结一下,希望以后不要在这件事情上浪费时间。安装环境其实也没有想象中…...
 
24/8/14算法笔记 复习_逻辑回归sigmoid
import numpy as np import matplotlib.pyplot as pltdef sigmoid(x):return 1/(1np.exp(-x))x np.linspace(-5,5,100) y sigmoid(x)plt.plot(x,y,colorgreen) #损失函数 from sklearn import datasets from sklearn.linear_model import LogisticRegression from mpl_toolki…...
MySQL忘记/无root密码,强制修改root密码
MySQL忘记/无root密码,强制修改root密码_mysql无root密码登录后设置密码-CSDN博客 sudo vi /etc/mysql/my.cnf 添加如下内容: [mysqld] skip-grant-tablessudo service mysql restart mysql -u root -p use mysql; update mysql.user set authentica…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
 
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
 
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
 
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
 
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
 
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
