一招鲜吃遍天之Haproxy集群

四层:

  • LVS:Linux Virtual Server

  • Nginx:

  • HAProxy:High Availability Proxy

七层:

  • HAProxy

  • Nginx

硬件:

  • F5 F5 | 多云安全和应用交付

  • Netscaler NetScaler: Application Delivery at Scale

  • Array 北京华耀科技有限公司

  • 深信服 深信服 - 让每个用户的数字化更简单、更安全-深信服

  • 北京灵州 产品中心 > 链路负载均衡_北京灵州网络技术有限公司

一 HAProxy介绍

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

HAProxy是可提供高可用性、负载均衡以及基于TcP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HProxy非常适用于并发大(并发达1w以上) web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。

支持功能

  • TCP 和 HTTP反向代理

  • SSL/TSL服务器

  • 可以针对HTTP请求添加cookie,进行路由后端服务器

  • 可平衡负载至后端服务器,并支持持久连接

  • 支持所有主服务器故障切换至备用服务器 keepalive

  • 支持专用端口实现监控服务

  • 支持停止接受新连接请求,而不影响现有连接

  • 可以在双向添加,修改或删除HTTP报文首部字段

  • 响应报文压缩

  • 支持基于pattern实现连接请求的访问控制

  • 通过特定的URI(url)为授权用户提供详细的状态信息

二 HAProxy的主要特性有:

  1. 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;

  2. 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;

  3. 支持多达8种负载均衡算法,同时也支持会话保持;

  4. 支持虚拟机主机功能,从而实现web负载均衡更加灵活;

  5. 支持连接拒绝、全透明代理等独特的功能;

  6. 拥有强大的ACL支持,用于访问控制; sendfile

  7. 其独特的弹性二x树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条日的增加而速度有所下降;·支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;

  8. 支持TCP加速,零复制功能,类似于mmap机制;

  9. 支持响应池(response buffering) ;

  10. 支持RDP协议;

  11. 基于源的粘性,类似nginx的ip hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;·更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;

  12. 详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;

  13. 基于流量的健康评估机制;

  14. 基于http认证;

  15. 基于命令行的管理接口;

  16. 日志分析器,可对日志进行分析

三 HAProxy负载均衡策略非常多,常见的有如下8种:

官方文档:HAProxy version 2.4.15 - Configuration Manual

静态调度算法:不管后端,按照调度器的算法进行 分配

动态调度算法:会考虑后端服务器的负载情况

(1) roundrobin,表示简单的轮询 rr

(2) static-rr,表示根据权重

(3) leastconn,表示最少连接者先处理

( 4) source,表示根据请求源IP

(5) uri,表示根据请求的URI,做cdn需使用;

(6) url param,表示根据请求的URl参数' balance url param’requires an URL parameter name

(7) hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

(8) rdp-cookie (name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

四 LVS、Nginx、HAproxy的区别:

  1. IVS基于Linux操作系统实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;

  2. LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;

  3. LVs因为工作在TCP模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URI等多种状态检测方式;

  4. HAProxy功能强大,但整体性能低于4层模式的IVS负载均衡。

  5. Ngrinx主要用于web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好。

五 安装haproxy

另一方面

5.1 yum 安装

CentOS 7 的默认的base仓库中包含haproxy的安装包文件,但是版本比较旧,是1.5.18的版本,距离当前版本已经有较长时间没有更新,由于版本比较旧所以有很多功能不支持,如果对功能和性能没有要求可以使用此版本,否则推荐使用新版本。

5.2 第三方 rpm -ivh 安装包

官方没有提供rpm相关的包,可以通过第三方仓库的rpm包

从第三方网站下载rpm包:https://pkgs.org/download/haproxy

基于互联网第三方仓库在线安装

yum install centos-release-scl-rh 
yum install rh-haproxy18-haproxy

systemctl start rh-haproxy18-haproxy.service        开启

5.3 编译安装

1.5版 基础功能 稳定

2.0 新特性

编译安装HAProxy 2.0 LTS版本,更多源码包下载地址:http://www.haproxy.org/download/

5.3.1 解决lua环境

HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua 官网:www.lua.org

Lua 应用场景

  • 游戏开发

  • 独立应用脚本

  • Web 应用脚本

  • 扩展和数据库插件,如MySQL Proxy

  • 安全系统,如入侵检测系统

由于CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy,过程如下:

#当前系统版本
[root@centos7 ~]#lua -v 
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio


https://www.lua.org/ftp/lua-5.4.6.tar.gz  官网

curl -R -O http://www.lua.org/ftp/lua-5.4.6.tar.gz
tar zxf lua-5.4.6.tar.gz
cd lua-5.4.6
make all test
cd  src
./lua -v 


/usr/local/lua/src/ 

另一种方法
[root@mcb-11-7 opt]# 
[root@mcb-11-7 opt]# curl -L -R -O http://www.lua.org/ftp/lua-5.4.6.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0    180      0 --:--:-- --:--:-- --:--:--   180
100  354k  100  354k    0     0   5966      0  0:01:00  0:01:00 --:--:--  8532
[root@mcb-11-7 opt]# tar zxf lua-5.4.6.tar.gz
[root@mcb-11-7 opt]# cd lua-5.4.6
[root@mcb-11-7 lua-5.4.6]# make all 
make[1]: 进入目录“/opt/lua-5.4.6/src”
Guessing Linux
make[2]: 进入目录“/opt/lua-5.4.6/src”
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl"
make[3]: 进入目录“/opt/lua-5.4.6/src”
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_LINUX    -c -o lapi.o lapi.c
make[3]: gcc:命令未找到
make[3]: *** [lapi.o] 错误 127
make[3]: 离开目录“/opt/lua-5.4.6/src”
make[2]: *** [linux-noreadline] 错误 2
make[2]: 离开目录“/opt/lua-5.4.6/src”
make[1]: *** [guess] 错误 2
make[1]: 离开目录“/opt/lua-5.4.6/src”
make: *** [guess] 错误 2
[root@mcb-11-7 lua-5.4.6]# yum -y install gcc openssl-devel pcre-devel systemd-devel
已加载插件:fastestmirror, langpacks
base                                                                            | 3.6 kB  00:00:00     
extras                                                                          | 2.9 kB  00:00:00     
updates                                                                         | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.nju.edu.cn
 * updates: mirrors.bupt.edu.cn
5.3.2编译安装haproxy
yum -y install gcc openssl-devel pcre-devel systemd-devel
#安装依赖环境
 
tar xf haproxy-2.4.25.tar.gz 
cd   haproxy-2.4.25.tar.gz 
 
#查看安装方法
[root@centos7 haproxy-2.1.3]#ll Makefile 
-rw-rw-r-- 1 root root 40812 Feb 12 23:18 Makefile
[root@centos7 haproxy-2.1.3]#cat README 
[root@centos7 haproxy-2.1.3]#cat INSTALL
 
#做软连接
ln -s lua-5.4.4 lua
 
make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/data/lua/src/  LUA_LIB=/data/lua/src/
 
#指定安装目录
make install PREFIX=/apps/haproxy
 
#做软连接 
ln -s /apps/haproxy/sbin/haproxy /usr/sbin/

#haproxy  -v  查看版本
 
 

指定安装目录

 

把haproxy交给systemd管理

tee /usr/lib/systemd/system/haproxy.service  <<eof
 
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
 
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg  -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
LimitNOFILE=100000
 
[Install]
WantedBy=multi-user.target
 
 
eof

 

 

mkdir /etc/haproxy
vim /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /apps/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
#nbproc 4
#cpu-map 1 0
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /var/lib/haproxy/haproxy.pid
log 127.0.0.1 local3 info
 
defaults
option http-keep-alive
option  forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms
 
listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:123456
 
listen  web_port
 bind 0.0.0.0:8899
 mode http
 log global
 server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5



mkdir  /var/lib/haproxy              #pid 文件路径


[root@centos7 ~]# useradd -r -s /sbin/nologin  haproxy   #设置用户和目录权限


[root@centos7 ~]# systemctl enable --now haproxy

 

 

六 配置文件详解

官方地址配置文件官方帮助文档

http://cbonte.github.io/haproxy-dconv/

http://cbonte.github.io/haproxy-dconv/2.4/configuration.html

https://www.haproxy.org/download/2.5/doc/configuration.txt
chroot    #锁定运行目录
deamon    #以守护进程运行,后台运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin process 1   #socket文件
user, group, uid, gid  #运行haproxy的用户身份
nbproc    n     #开启的haproxy work 进程数,默认进程数是一个
#nbthread  1    #和多进程 nbproc配置互斥(版本有关,CentOS8的haproxy1.8无此问题),指定每个haproxy进程开启的线程数,默认为每个进程一个线程
#如果同时启用nbproc和nbthread 会出现以下日志的错误,无法启动服务Apr  714:46:23 haproxy haproxy: [ALERT] 097/144623 (1454) : config : cannot enable multiple processes if multiple threads are configured. Please use either nbproc or nbthread but not both.

cpu-map 1  0     #绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 2  1     #绑定haproxy worker 进程至指定CPU,将第2个work进程绑定至1  号CPU
                 #ps axo  pid,cmd,psr  |grep haproxy
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协议,最多可以定义两个

defaults
        log     global    	#引入global定义的日志格式
        mode    http      	#模式为http(7层代理http,4层代理tcp)
        option  httplog	   	#日志类别为http日志格式		 	
        option  dontlognull	#不记录健康检查日志信息
        retries 3           #检查节点服务器失败次数,连续达到3次,则反馈不可用 
        redispatch			#当服务器负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000		#最大连接数,此处的数值不能大于全局里的数值
        contimeout      5000  #设置连接超时时间,默认单位是毫秒
		clitimeout      50000 #设置客户端超时时间,默认单位是毫秒
		srvtimeout      50000 #设置服务器超时时间,默认单位是毫秒

#以下是新版本中的
timeout http-request 10s  	#默认http请求超时时间
timeout queue 1m 			#默认队列超时时间	
timeout connect 10s 		#默认连接超时时间,新版本中替代
timeout client 1m
timeout server 1m
timeout http-keep-alive
timeout check 10s


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


使用listen替换 frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用
#官网业务访问入口
listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html
        balance roundrobin
        server  inst1 192.168.91.102:80 check inter 2000 fall 3
        server  inst2 192.168.91.103:80 check inter 2000 fall 3

HAProxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分

  • global:全局配置段

进程及安全配置相关的参数
性能调整相关参数
Debug参数

6.2proxies:代理配置段
defaults:为frontend, backend, listen提供默认配置

frontend:前端,相当于nginx中的server {}

backend:后端,相当于nginx中的upstream {}

listen:同时拥有前端和后端配置,配置简单,生产推荐使用

6.1global配置

官方文档:http://cbonte.github.io/haproxy-dconv/2.4/configuration.html#3
chroot #锁定运行目录,类似于  ftp中的禁锢
deamon #以守护进程运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin process 1   #socket文件 进程件通信
user, group, uid, gid  #运行haproxy的用户身份


nbproc   n #开启的haproxy worker 进程数,默认进程数是一个,保持与 淳朴个数相同
#nbthread 1 #和多进程 nbproc配置互斥(版本有关,CentOS8的haproxy1.8无此问题),指定每个haproxy进程开启的线程数,默认为每个进程一个线程
#如果同时启用nbproc和nbthread 会出现以下日志的错误,无法启动服务

Apr  7 14:46:23 haproxy haproxy: [ALERT] 097/144623 (1454) : config : cannot 
enable multiple processes if multiple threads are configured. Please use either 
nbproc or nbthread but not both.



cpu-map 1 0   		#绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 2 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协议,最多可以定义两个
6.1.1状态页
listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:123456


http://192.168.91.100:9999/haproxy-status

浏览器访问一下

6.1.2 指定进程线程个数

进程与线程会有冲突

nbproc    n     #开启的haproxy work 进程数,默认进程数是一个

#nbthread  1    #和多进程 nbproc配置互斥(版本有关,CentOS8的haproxy1.8无此问题),指定每个
haproxy进程开启的线程数,默认为每个进程一个线程
#如果同时启用nbproc和nbthread 会出现以下日志的错误,无法启动服务Apr  714:46:23 haproxy haproxy: [ALERT] 097/144623 (1454) : config : cannot enable multiple processes if multiple threads are configured. Please use either nbproc or nbthread but not both.

[root@mcb-11 haproxy-2.4.25]# vim /etc/haproxy/haproxy.cfg 

6.1.3 cpu亲缘性
nbproc  2

cpu-map 1  0     #绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU

cpu-map 2  1     #绑定haproxy worker 进程至指定CPU,将第2个work进程绑定至1  号CPU
                
ps axo  pid,cmd,psr  |grep haproxy

对比一下

6.1.4多进程和线程

范例:多进程和socket文件

 需要修改一下配置文件

 

检测 

6.1. 5 日志

HAproxy本身不记录客户端的访问日志.此外为减少服务器负载,一般生产中HAProxy不记录日志.也可以配置HAProxy利用rsyslog服务记录日志到指定日志文件中

例子: 传给远端服务器

①本机服务器配置

②7-5远端要开启

③浏览器刷新 检测

6.2Proxies配置

官方文档:HAProxy version 2.1.12 - Configuration Manual

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

注意:name字段只能使用大小写字母,数字,‘-’(dash),'_‘(underscore),'.' (dot)和 ':'(colon),并且严格区分大小写  

6.2.1 Proxies配置-defaults

defaults 配置参数:

5.2.2Proxies配置-listen 简化配置

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

5.2.3 Proxies配置-frontend

frontend 配置参数:

5.2.4Proxies配置-backend

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

注意: backend 的名称必须唯一,并且必须在listen或frontend中事先定义才可以使用,否则服务无法启动

server 配置

七  实际操作

环境准备

实验1:

11-11haproxy服务器

11-7客户机

11-5  11-4  后端服务器

7-11haproxy服务器

11-5后端服务器

7-4后端服务器

 

检测

 

实操模拟 :开启健康性检查

 

再去检测 

原理:通过抓包看到实际上是haproxy三次握手没有成功,来进行的健康检查

80端口是haproxy代为监听,如果有Web服务的请求将转到后端真实服务器,不然就会丢包

实验3:haproxy代理设置,用前后端的方法设置

开启之后

客户机7-7再去服务

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/443352.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新:Selenium操作已经打开的Chrome(免登录)

最近重新尝试了一下&#xff0c;之前写的博客内容。重新捋了一下思路。 目的就是&#xff0c;selenium在需要登录的网站面前&#xff0c;可能就显得有些乏力&#xff0c;因此是不是有一种东西&#xff0c;可以操作它打开我们之前打开过的网站&#xff0c;这样就不用登录了。 …

北漂程序员整理阿里云服务器地域机房所在城市表

2024年最新阿里云服务器地域分布表&#xff0c;地域指数据中心所在的地理区域&#xff0c;通常按照数据中心所在的城市划分&#xff0c;例如华北2&#xff08;北京&#xff09;地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

创建数据表

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 如果要进行数据表的创建 create table 表名称 (列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,...列名称 类型 [DEFAULT 默认值 ] )…

鸿蒙应用开发学习:使用视频播放(Video)组件播放视频和音频文件

一、前言 播放音视频是手机的重要功能之一&#xff0c;近期我学习了在鸿蒙系统应用开发中实现音视频的播放功能&#xff0c;应用中使用到了视频播放(Video)组件&#xff0c;ohos.file.picker&#xff08;选择器&#xff09;。特撰此文分享一下我的学习经历。 二、参考资料 本…

详解Linux例行性工作

例行性工作&#xff08;计划任务&#xff09; 场景&#xff1a; 生活中&#xff0c;我们有太多场景需要使用到闹钟&#xff0c;比如早上7点起床&#xff0c;下午4点开会&#xff0c;晚上8点购物&#xff0c;等等。再Linux系统里&#xff0c;我们同样也有类似的需求。比如我们…

创新企业成长模型:嘉绩咨询深化招商教育与系统策划

在当今企业发展与市场拓展的竞争激烈背景下&#xff0c;嘉绩咨询已凸显其在招商体系孵化领域的领先地位。集团不仅在招商教育、招商落地支持、陪跑孵化及渠道商学院搭建等业务领域提供全面的服务&#xff0c;同时构筑了与众不同的企业成长循环模型。 嘉绩咨询秉承其"教育策…

四、DMSP/OLS等夜间灯光数据贫困地区识别——相对误差相关折线图制作

一、前言 前文对于MPI和灯光指数拟合、误差分析&#xff0c;本文重点介绍地理加权分析&#xff0c;但是在此之前给大家介绍一下专业表格制作&#xff0c;其实专业的软件有很多像Orgin、棱镜等&#xff0c;到我们熟知的Excel&#xff0c;其实各有千秋&#xff0c;Excel入手容易…

软件杯 交通目标检测-行人车辆检测流量计数 - 软件杯

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

mtk平台ATF介绍

1、链接地址 uboot ATF 2、工具链 ARM 64位平台需要aarch64工具链&#xff0c;可以在staging_dir/toolchain- aarch64_xxxxx中找到。另外dtc工具来为ATF编译.dts文件&#xff0c;一般在 Ubuntu中的device-tree-compiler包&#xff0c;编译后的u-boot/kernel源代码树中的脚本…

设计模式(工厂模式)

设计模式&#xff08;工厂模式&#xff09; 一、工厂模式介绍 在工厂模式中&#xff0c;父类决定生成示例的方式&#xff0c;但不决定所要生成的具体的类&#xff0c;具体的处理部分交给子类负责。这样就可以将生成示例的框架和生成示例的类解耦。 二、示例程序 以下示例程…

[壹],安卓开发环境搭建

1&#xff0c;下载JDK并安装 网址: Java Downloads | Oracle 下载完成&#xff0c;安装到自定义位置。 2&#xff0c;设置系统环境变量 2.1&#xff0c;新建环境变量JAVA_HOME 2.2&#xff0c;Path环境变量追加 %JAVA_HOME%\bin 2.3&#xff0c;验证安装效果 3&#xff0c;…

error Mixed spaces and tabs no-mixed-spaces-and-tabs报错

vue尚硅谷todolist案例 中报错如下&#xff1a; ERROR Failed to compile with 1 error 21:18:11 Module Error (from ./node_modules/eslint-loader/index.js): F:\文件\网页文件\code\source\vu…

UCRTBASED.DLL缺失怎么办?UCRTBASED.DLL文件的解决方法分享

UCRTBASED.DLL 是一个属于Microsoft Universal C Runtime (UCRT) 的动态链接库&#xff08;DLL&#xff09;文件。在Windows操作系统中&#xff0c;这个文件提供了一系列C和C标准库函数的实现&#xff0c;这些函数对于支持基于C或C开发的应用程序至关重要。 UCRT是微软为了统一…

揭秘:我的GPTs广告项目到底挣了多少银子?

写在前面 &#x1f31f; 之前分享了GPTs接入广告赚取收益的项目保姆级教程: GPTs接入广告到提现成功全过程真实记录 &#xff0c;很多粉丝朋友问&#xff0c;我GPTs广告项目&#xff0c;一共赚了多少钱&#xff0c;现在还能入场吗&#xff1f; 这篇文章&#xff0c;就来总结一下…

【web | CTF】BUUCTF [强网杯 2019]随便注

天命&#xff1a;这题考点有两个&#xff0c;第一个是闭合&#xff0c;第二个是叠堆注入 先探测一下是不是单引号闭合&#xff0c;其实我一开始以为是没有引号闭合的&#xff0c;毕竟是数字 经过测试&#xff0c;的确是单引号闭合 然后探测未知的东西&#xff0c;我习惯性直接…

雷卯的ESD管SDA3311DN可以替代AZ5883-01F ---国产化替代篇

已经有很多客户选用雷卯的 SDA3311DN替代Amazing的 AZ5883-01F&#xff0c;客户可以获得更好的价格和更快的交期。 SDA3311DN主要应用于对3.3V供电的静电浪涌防护等&#xff0c;特别是在一些受空间所限的小电子设备很受青睐。 雷卯的SDA3311DN优势&#xff1a; IPP大(65A) &…

【Python】Python Astar算法生成最短路径GPS轨迹

简介 最短路径问题是计算机科学中一个经典问题&#xff0c;它涉及找到图中两点之间距离最短的路徑。在实际应用中&#xff0c;最短路径算法用于解决广泛的问题&#xff0c;例如导航、物流和网络优化。 步骤 1&#xff1a;加载道路网络数据 要计算最短路径&#xff0c;我们需…

WebSocket:实现客户端与服务器实时通信的技术

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【分库分表】基于mysql+shardingSphere的分库分表技术

目录 1.什么是分库分表 2.分片方法 3.测试数据 4.shardingSphere 4.1.介绍 4.2.sharding jdbc 4.3.sharding proxy 4.4.两者之间的对比 5.留个尾巴 1.什么是分库分表 分库分表是一种场景解决方案&#xff0c;它的出现是为了解决一些场景问题的&#xff0c;哪些场景喃…

ERC20学习

ERC20简介 ERC20是一种代币标准&#xff0c;用于创建可替代的代币。 ERC20是在以太坊网络上实现的代币标准&#xff0c;它为数字资产或代币定义了一套规则和接口。这些符合ERC20标准的代币在性质上是完全相同的。即每一个代币都可以被另一个同类型的代币替代&#xff0c;这种属…