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

基于DR模式的LVS集群案例

一.环境描述

如上图所示,后端是一个NFS服务器实现共享文件,调度器是一个高可用的环境,

这是基于LVS的DR模式实现的一个负载均衡集群。

keepalived在于LVS结合使用的时候,会自动实现很多功能。

比如,第一点我们可以修改keep alived的配置文件,当这个软件启动的时候,会自动帮助我们在调度器上自动帮助我们配置虚拟服务,自动帮助我们添加real  server的信息。

此时就使用不到了ipvsadm命令。

第二keepalived能够帮助我们自动检测后端real  server的健康状态,如果后端服务器的是不健康的,那么此时调度器就不会再向这个不健康的后端服务器转发客户端请求。

keepalived结合LVS集群使用时的优势:

1.实现调度器的HA

2.自动生成虚拟服务。real  server

3.对real  server进行健康状态检查

在NFS服务器上添加一个新的磁盘,将来使得NFS服务器来共享存储空间。

1.配置NFS共享数据目录

如上图所示,将共享磁盘挂载上,

如上图所示,安装NFS相关的软件。

如上图所示,想要将NFS服务器上的目录共享到指定机器,并且配置目录权限,就需要将信息编写到/etc/exports文件中。

在NFS服务器共享空间上创建测试文件。

2.在所有的real  server上安装httpd,连接后端存储。

在实际业务中,肯定是要在阿帕奇上创建虚拟主机的形式去部署网站的。

如上图所示,我们在web01上安装完阿帕奇之后,需要我们将NFS的共享目录挂载到阿帕奇软件默认的网页目录,使得/var/www/html下的内容是NFS服务器的共享目录中的文件内容。

此时表示web01服务器默认不支持这个NFS的文件系统格式,那么我们下载nfs-utils软件,

如上图所示,此时表达挂载成功。NFS文件共享的目的达到。

随后第二个web02的配置跟第一个web01的配置一样,

如上图所示,此时web02机器上共享存储成功。

3.在所有real  server配置VIP,修改arp内核参数。

如上图所示,第一个real server的机器已经配置成功,

如上图所示,我们可以直接将修改好的web01上的内核文件复制给web02一份,随后使用sysctl -p使得内核参数生效。

我们还需要在web02上添加VIP地址。

4.在调度器上分别安装keepalived,ipvsadm软件,

此时的ipvsadm软件的作用是查看keepalived软件有没有帮助我们在调度器上创建虚拟服务成功,

如上图所示,两个调度器上一摸一样的安装这两个软件。

5.编辑主调度器的keepalived配置文件

keepalived实现调度器高可用的原理性知识:把两个调度器放到一个虚拟的keepalived的组中,

在这一个组里面,keepalived就实现了一个互为备份,两个调度器谁当主调度器谁当被调度器,需要给这两个调度器配置优先级,其实就是阿拉伯数字,取值在1-255之间。谁的优先级高谁就是主调度器。

优先级大的就是主调度器,小的就是被调度器。

如上图所示,这是keepalived软件的全局配置,

如上图所示,这是keepalived软件用来实现调度器备份的,这一块配置就是用来实现调度器的高可用的。

这一块配置就是用来配置虚拟的组。

如上图所示,从36行往后就是keepalived软件跟LVS集群结合使用的时候,才会使用到的配置。

来帮助LVS集群自动生成虚拟服务,添加real  server信息到LVS集群的。

如果keepalived软件不是和LVS集群配置使用,后面的配置就用不到。

所有的空格都不要删除,不要乱动,因为这个keepalived软件没有语法检查的功能,当因为语法问题启动失败的时候,也没有办法去确定语法问题出现在哪里。

全局配置大多是用来指定邮箱的地址。

如上图所示,这行配置是用来指定这个调度器被keppalived添加到虚拟的组中时,调度器在这个组中的名称,一般是使用主机名来标识这个调度器在虚拟的组中的名称。

如上图所示,这是用来配置调度器的高可用的组。此时的VI_1就是组的名称。

此时我们要将192.168.140.10和192.168.140.11放到同一组里面去,只要确保组的名称一致,就可以确定这两个调度器在同一个组里面。

然后是这个机器在组里面的身份是主调度器还是被调度器。

后面跟上的网卡名称,代表的就是这个VIP出现在那块网卡上。一般指定物理网卡,

随后,这个数字代表的就是这个组的ID,将来将两台机器放到同一个组里面的时候,需要保证,这两个调度器在同一个组,组名要一致,组的ID要一致。

随后配置的就是这个机器在高可用的组里面的优先级,是多少。

随后是心跳信息,多长时间主调度器向被调度器发送一次心跳信息,单位是秒。

随后啊authenticcation是给这个调度器设置一个密码验证,密码验证通过之后两台调度器才能加入到同一个组里面去。

随后是VIP地址信息。

最后就是使用keepalived与LVS集群结合使用,将来让keepalived来帮助我们生成虚拟服务,并且为虚拟服务添加后端的real  server信息。

如上图所示,这是创建虚拟服务,并且配置参数。

其中的delay_loop 6

是调度器每隔6秒检查一次后端服务器的可用状态,确保客户端的请求不向故障节点转发。

使用的调度算法是轮询。

负载均衡类型是DR

持久性连接时长是50秒

指定的协议类型是TCP协议。

其中ipvsadm  -A -t 192.168.140.100:80 -s rr -p 300

指定协议为TCP协议,指定调度算法是轮询,指定持久性连接时间是300

如上图所示,这是给虚拟服务添加real  server机器。并且配置权重值是1

其中的SSL_GET是调度器检查后端服务器健康状态一种方法。

如上图所示,这是换了检查后端服务器的方法为TCP_CHECK

6.编辑备调度器的配置文件

复制/etc/keepalived/keepalived.conf文件到备调度器上,

如上图所示,修改备调度器的ID,

如上图所示,这是修改备调度器的状态为BACKUP,VIP地址出现的网卡位置应该是物理网卡。

配置优先级是50

7.分别启动keep alived服务。

1)验证VIP地址,只在主调度器上出现。

如上图所示,VIP地址只会出现在主调度器上,

如上图所示,VIP地址不会出现在备调度器上。除非主调度器挂了。

如果VIP地址在两台调度器上同时作用,那么此时就发生了HA集群的脑裂,造成竞争资源。

2)验证虚拟服务

如上图所示,我们去查看负载均衡表。

这个负载均衡表在备调度器上,也有但是不会生效,因为虚拟服务是基于VIP地址实现的。

3)测试访问服务

4)停止主调度器,验证VIP地址是否故障转移

相关文章:

基于DR模式的LVS集群案例

一.环境描述 如上图所示,后端是一个NFS服务器实现共享文件,调度器是一个高可用的环境, 这是基于LVS的DR模式实现的一个负载均衡集群。 keepalived在于LVS结合使用的时候,会自动实现很多功能。 比如,第一点我们可以修…...

Spark jdbc写入崖山等国产数据库失败问题

随着互联网、信息产业的大发展、以及地缘政治的变化,网络安全风险日益增长,网络安全关乎国家安全。因此很多的企业,开始了国产替代的脚步,从服务器芯片,操作系统,到数据库,中间件,逐步实现信息技术自主可控,规避外部技术制裁和风险。 就数据库而言,目前很多的国产数据…...

Chain-of-Draft (CoD) 是提示工程的新王者

图像由 DALLE 3 生成 推理型大模型,是当前 AI 研究的热门话题。 我们从最早的 GPT-1 一路走到现在像 Grok-3 这样的高级推理模型。 这段旅程可以说非常精彩,过程中也发现了很多重要的推理方法。 其中之一就是 Chain-of-Thought(CoT&#xff0…...

隐私计算技术及其在数据安全中的应用:守护数据隐私的新范式

前言 在数字化时代,数据已成为企业和组织的核心资产。然而,数据的收集、存储和使用过程中面临着诸多隐私和安全问题。随着法律法规对数据隐私的监管日益严格,企业和组织需要在数据利用与隐私保护之间找到平衡。隐私计算技术作为一种新兴的数据…...

使用Milvus向量数据库构建具有长期记忆的对话机器人

一、申请Milvus试用版 快速创建Milvus实例_向量检索服务 Milvus 版(Milvus)-阿里云帮助中心 二、配置 pip3 install pymilvus tqdm dashscope 由于在下文使用的时候需要用到Milvus的公网地址,而公网地址需要我们手动开启,参考下面这篇文章开启公网地…...

[Es_1] 介绍 | 特点 | 图算法 | Trie | FST

编程就是一门不断试错的艺术。不要害怕犯错,实践才会出真知。 什么是ElasticSearch? Elasticsearch是一个分布式的免费开源搜索和分析引擎 适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch在Apache Luc…...

企业安装加密软件有什么好处

企业安装加密软件可以有效保护敏感数据安全,防止信息泄露,并满足合规要求。以下是其主要好处及具体应用场景: 1. 防止数据泄露,保护核心资产 文件加密:对敏感文件(如财务数据、客户信息、设计图纸&#xff…...

【MVCP】基于解纠缠表示学习和跨模态-上下文关联挖掘的多模态情感分析

多处可看出与同专栏下的DCCMCI很像 abstract 多模态情感分析旨在从多模态数据中提取用户表达的情感信息,包括语言、声学和视觉线索。 然而,多模态数据的异质性导致了模态分布的差异,从而影响了模型有效整合多模态互补性和冗余性的能力。此外,现有的方法通常在获得表征后直…...

2025软考【系统架构设计师】:两周极限冲刺攻略(附知识点解析+答题技巧)

距离2025上半年“系统架构设计师”考试已经只剩最后两周了,还没有准备好的小伙伴赶紧行动起来。为了帮助大家更好的冲刺学习,特此提供一份考前冲刺攻略。本指南包括考情分析、答题技巧、注意事项三个部分,可以参考此指南进行最后的复习要领&a…...

企业该如何选择合适的DDOS防护?

在互联网行业当中,大型的网络游戏和网络视频企业会经常受到DDOS攻击和CC攻击,这些网络攻击会导致服务器崩溃或者是网络中断,给企业造成巨大的经济损失,所以企业通常会配备合适的DDOS防护来进行防御,但是,对…...

CPU-GPU-NPU-TPU 概念

1.CPU 中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。 2.GPU GPU&#xff0…...

DELL R770 服务器,更换OCP模块!

今天接到客户报修电话,说有一台 DELL PowerEdge R770服务器,网卡出现了故障,需要更换OCP模块。顺便做一个教程,分享给有需要的小伙伴们。 这一期的教程,听起来好像很高大上,很多小伙伴可能不知道OCP是什么…...

go.mod没有自动缓存问题

今天在安装Gin框架的时候遇到了一个问题 在Terminal运行下面命令安装时,包已经被下载安装到了GoPath中的bkg/mod go get -u github.com/gin-gonic/gin但是由于使用的是Go Modules,GPT以及大多数人给的说法是 运行完这个依赖包会被自动同步更新到go.mod…...

黑电平校正(Black Level Correction, BLC)算法

黑电平校正(Black Level Correction, BLC)算法 黑电平校正(BLC)是图像传感器(如CMOS/CCD)信号处理中的一个重要步骤,主要用于消除传感器暗电流(Dark Current)导致的基线…...

Ubuntu 安装 Keepalived

Keepalived 是什么 Keepalived 是一个用于实现高可用性(High Availability, HA)的服务,是一款基于 VRRP 协议的高可用软件,常用于主备切换和虚拟IP漂移,在服务故障时自动实现故障转移。 Keepalived 的核心功能 功能说…...

基于SpringBoot和PostGIS的应急运输事件影响分析-以1.31侧翻事故为例

目录 前言 一、技术实现路径 1、需要使用的数据 2、空间分析方法 二、相关模块设计与实现 1、运输路线重现开发 2、事故点影响范围实现 3、WebGIS可视化实现 三、讨论 1、界面结果展示 2、影响范围分析 四、总结 前言 在交通运输发达的当今社会,应急运输…...

ABP-Book Store Application中文讲解 - 前期准备 - Part 2:创建Acme.BookStore + Angular

ABP-Book Store Application中文讲解-汇总-CSDN博客 因为本系列文章使用的.NET8 SDK,此处仅介绍如何使用abp cli .NET 8 SDK SQL sevrer 2014创建Angular模板的Acme.BookStore。 目录 1. ABP cli创建项目 1.1 打开cmd.exe 1.2 创建项目 2. ABP Studio创建项…...

grpc到底是啥! ! !!

一、什么是RPC(Remote Procedure Call) 简单理解: RPC是一种让程序可以像调用本地函数一样去调用远程机器上的函数或方法。它的目标:让分布式系统中的不同计算机可以透明地互相通信,实现远程服务调用的封装。 举个例…...

ES6入门---第三单元 模块五:Map和WeakMap

map: users.map((user) 遍历 类似 json, 但是json的键(key)只能是字符串 map的key可以是任意类型 使用: let map new Map(); map.set(key,value); 设置一个值 map.get(key) 获取一个值 map.delete(key) 删除一项 map.has(key) 判断有没有 map.clear…...

【C++】【数据结构】【API列表】标准库数据结构

标准库数据结构 unordered_set 头文件&#xff1a;#include <unordered_set>​ 特性&#xff1a; 唯一性&#xff1a;所有元素唯一&#xff0c;重复插入无效无序性&#xff1a;元素存储顺序不固定自定义类型&#xff1a;若存储自定义类型需提供哈希函数和相等比较器 …...

三、Hadoop1.X及其组件的深度剖析

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月7日 专栏&#xff1a;Hadoop教程 一、Hadoop 1.X 概述 &#xff08;一&#xff09;概念 Hadoop 是 Apache 开发的分布式系统基础架构&#xff0c;用 Java 编写&#xff0c;为集群处理大型数据集提供编程模型&#xff0c;…...

stm32常见错误

1.使用LCD屏幕时&#xff0c;只用st-link时&#xff0c;亮度很暗&#xff0c;需要用usb数据线额外给屏幕供电&#xff1b; 2.移植freertos到f103c8t6芯片时&#xff0c;工程没有错误&#xff0c;但单片机没有反应&#xff1b; 需要将堆的大小改成10*1024&#xff1b; 3.在找已经…...

《Python星球日记》 第46天:决策树与随机森林

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏&#xff1a;《Python星球日记》&#xff0c;限时特价订阅中ing 目录 一、前言二…...

【Pandas】pandas DataFrame expanding

Pandas2.2 DataFrame Function application, GroupBy & window 方法描述DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴&#xff08;行或列&#xff09;应用一个函数DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数DataFrame.a…...

【SpringCloud GateWay】Connection prematurely closed BEFORE response 报错分析与解决方案

一、背景 今天业务方调用我们的网关服务报错: Connection prematurely closed BEFORE response二、原因分析 三、解决方案 第一步: 增加 SCG 服务的JVM启动参数,调整连接获取策略。 将连接池获取策略由默认的 FIFO&#xff08;先进先出&#xff09;变更为 LIFO&#xff08…...

【行业】一些名词

名词 分布式应用架构&#xff08;分布式计算技术的应用和工具&#xff09;中间件 中间件&#xff08;Middleware&#xff09;主流中间件技术1.通信类2.数据类3. **协调与治理类中间件**4. 监控与可观测性中间件5.**流处理与批处理**中间件6.云原生中间件 数据库Redismogodb 分布…...

深度学习模型的部署实践与Web框架选择

引言 在深度学习项目的完整生命周期中&#xff0c;模型训练只是第一步&#xff0c;将训练好的模型部署到生产环境才能真正发挥其价值。本文将详细介绍模型部署的核心概念、常见部署方式以及三种主流Python Web框架的对比分析&#xff0c;帮助开发者选择最适合自己项目的技术方…...

【笔记】当个自由的书籍收集者从canvas得到png转pdf

最近有点迷各种古书&#xff0c;然后从 www.shuge.org 下载了各种高清的印本&#xff0c;快成db狂魔了…上面也有人在各种平台上分享&#xff0c;不胜感激…只是有些平台可以免费看但是没法下载… 反正你都canvas了&#xff0c;撸下来自己珍藏… 于是让qwen写了一段代码&#…...

Ubuntu 配置网络接口端点(静态 IP 地址)详细教程

在 Ubuntu 系统中&#xff0c;配置网络接口端点通常指的是为您的有线或无线网卡设置一个固定的 IP 地址、子网掩码、网关以及 DNS 服务器。这对于服务器或者需要稳定网络标识的设备来说非常重要。 使用 Netplan (Ubuntu 17.10 及更高版本的默认方式)使用 ifupdown (通过 /etc/…...

JavaScript ES6+ 最佳实践

1. 变量声明&#xff1a;从 var 到 let/const 问题代码&#xff1a;var 存在变量提升&#xff0c;只有函数作用域&#xff0c;没有块级作用域&#xff0c;容易导致变量污染。 // 变量提升导致意外行为 console.log(num); // undefined 而非报错 var num 10;// 没有块级作用域…...

华为昇腾在智慧矿山机器人的应用及其技术解决方案

一、智慧矿山机器人的核心应用场景 1. ‌井下智能巡检机器人‌ 搭载昇腾AI芯片的巡检机器人可实现 ‌全自主导航与多模态感知‌&#xff0c;通过激光雷达视觉SLAM技术实时构建井下三维地图&#xff0c;精准识别巷道变形、设备漏油等异常状态47。结合昇腾边缘计算能力&#xf…...

发那科机器人3(机器人编程基础)

发那科机器人(机器人编程基础) 一、机器人编程基础1、程序构成2、程序创建3、程序修改4、程序操作5、程序的停止与恢复6、执行程序7、测试运转8、自动运转一、机器人编程基础 1、程序构成 什么是程序? 程序指的是由用户编写的一系列机器人指令以及其他附带信息构成,使机器…...

2014年写的一个文档《基于大数据应用的综合健康服务平台研发及应用示范》

项目目标与任务 项目目标与任务需求分析 当今社会已经处于高度信息化的时代&#xff0c;作为关系民生的重要领域&#xff0c;医疗行业的信息化直接涉及临床服务、社会保障、医学研究和大众健康等环节&#xff0c;对提升医疗服务水平&#xff0c;强化管理职能&#xff0c;改善…...

Python初学者笔记第十一期 -- (字符串编程练习题)

第20节课 【字符串编程练习题】 练习01 回文字符串 输入一个字符串&#xff0c;判断其是否是回文字符串。 # 思路1 # s1 "黄山落叶松叶落山黄" # s2 s1[::-1] # 反转 # print(s2) # print(s1 s2)# 思路2 def is_palindrome(s):l 0r len(s) - 1while l < r…...

[量化交易Backtrader] - 如何规避过拟合

一、回测中的过拟合:隐藏在数据背后的陷阱 过拟合发生在模型过度适应历史数据,以至于在新数据上表现不佳。这就像是为历史数据量身定制了一件衣服,却在新的数据集上穿不进去。 (一)过拟合的常见表现 曲线过于完美 当在回测报告中看到策略的净值曲线如同一条完美的上升直…...

前端日常 · 移动端网页调试

前端日常 移动端网页调试技巧集锦&#xff1a;5个工具 实战思路 在移动端开发中&#xff0c;调试网页内容常常不是“写完就跑”的顺滑体验。尤其当页面跑在 App WebView 里时&#xff0c;不同系统版本、设备特性、浏览器行为都可能带来各种“只有你遇得到”的玄学 Bug。本篇…...

SQLite数据库加密(Java语言、python语言)

1. 背景与需求 SQLite 是一种轻量级的关系型数据库,广泛应用于嵌入式设备、移动应用、桌面应用等场景。为了保护数据的隐私与安全,SQLite 提供了加密功能(通过 SQLCipher 扩展)。在 Java 中,可以使用 sqlite-jdbc 驱动与 SQLCipher 集成来实现 SQLite 数据库的加密。 本…...

【前端基础】6、CSS的文本属性(text相关)

目录内容 text-decoration&#xff1a;设置文本装饰线text-transform&#xff1a;文本中文字的大小写转换text-indent&#xff1a;首行缩进text-align&#xff1a;设置文本对齐方式 一、text-decoration&#xff1a;设置文本装饰线 常见值&#xff1a; None&#xff1a;没有…...

Kafka生产者send方法详解

Kafka生产者send方法详解 1. send方法的工作原理 1.1 基本流程 #mermaid-svg-EXvKiyf8oSlenrxK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EXvKiyf8oSlenrxK .error-icon{fill:#552222;}#mermaid-svg-EXvKiyf…...

RPA与After Effects 2024深度融合:自动化影视特效全链路革命

文章目录 一、RPA在影视后期中的核心应用场景1. 跨平台数据自动化采集与预处理2. 动态数据驱动动画&#xff1a;从Excel到AE的无缝衔接 二、After Effects 2024自动化增强技术1. Python脚本深度集成&#xff1a;批量生成三维动画2. 实时渲染优化&#xff1a;智能调度与多分辨率…...

【Python 实战】---- 使用Python批量将 .ncm 格式的音频文件转换为 .mp3 格式

1. 前言 .ncm 格式是网易云音乐专属的加密音频格式,用于保护版权。这种格式无法直接播放,需要解密后才能转换为常见的音频格式。本文将介绍如何使用 Python 批量将 .ncm 格式的音频文件转换为 .mp3 格式。 2. 安装 ncmdump ncmdump 是一个专门用于解密 .ncm 文件的工具。它…...

【上位机——MFC】序列化机制

相关类 CFile-文件操作类&#xff0c;封装了关于文件读写等操作 CFile::Open CFile::Write/Read CFile::Close CFile::SeekToBegin / SeekToEnd / Seek 代码示例 #include <afxwin.h> #include <iostream>using namespace std;void File() {CFile file;file.Ope…...

同步 / 异步、阻塞 / 非阻塞

前言 同步异步&#xff0c;在计算机科学中是一个非常重要的概念。作为一位软件开发工程师&#xff0c;我们每天都在和同步和异步打交道。 同步 同步-阻塞&#xff0c;顾名思义&#xff0c;就是同步和阻塞。调用方法后&#xff0c;必须等到结果返回&#xff0c;才能继续执行别…...

Java学习手册:ORM 框架性能优化

一、优化实体类设计 减少实体类属性 &#xff1a;仅保留必要的字段&#xff0c;避免持久化过多数据。例如&#xff0c;对于一个用户实体类&#xff0c;如果某些信息&#xff08;如详细地址&#xff09;不是经常使用&#xff0c;可以将其拆分到单独的实体类中。使用合适的数据类…...

标量/向量/矩阵/张量/范数详解及其在机器学习中的应用

标量&#xff08;Scalar&#xff09;、向量&#xff08;Vector&#xff09;、矩阵&#xff08;Matrix&#xff09;、张量&#xff08;Tensor&#xff09;与范数&#xff08;Norm&#xff09;详解及其在机器学习中的应用 1. 标量&#xff08;Scalar&#xff09; 定义&#xff1…...

Android学习总结之网络篇补充

一、TCP/IP 五层模型&#xff08;字节跳动 / 腾讯高频题&#xff09; 面试真题 1&#xff1a;TCP/IP 五层模型与 OSI 七层模型的区别是什么&#xff1f;各层的核心协议有哪些&#xff1f; 常见错误&#xff1a;混淆五层模型与七层模型的层次对应&#xff0c;遗漏关键协议&…...

金融企业如何借力运维监控强化合规性建设?

日前&#xff0c;国家金融监督管理总局网站公布行政处罚信息&#xff0c;认定某银行存在多项违规并对其进行罚款。其中&#xff0c;国家金融监督管理总局认定该银行主要违规内容包括&#xff1a; 一、部分重要信息系统识别不全面&#xff0c;灾备建设和灾难恢复能力不符合监管要…...

食品行业EDI:General Mills EDI需求分析

General Mills 是全球知名的食品制造企业致力于生产和销售各类食品和消费品牌&#xff0c;涵盖早餐谷物、零食、乳制品、烘焙产品和宠物食品等多个领域。其旗下拥有众多家喻户晓的品牌&#xff0c;如 Cheerios、Nature Valley、Yoplait、Hagen-Dazs 和 Blue Buffalo。General M…...

C语言初阶--数组

1.一维数组的创建和初始化 1.1数组的创建 数组是一组相同类型元素的集合。 数组的创建方式&#xff1a; type_t arr_name [const_n]; //type_t 数组的元素类型 //const_n 常量表达式&#xff0c;指定数组的大小#include <stdio.h> int main() {int arr[10]; //数组…...

如何做界面自动化工具选择?

在2025年的技术环境中&#xff0c;UI自动化测试工具的选择需综合考虑工具的功能特性、适用场景、维护成本以及与团队技术栈的匹配度。以下从不同维度对当前主流的UI自动化工具进行分类推荐&#xff0c;并结合实际应用场景提供选型建议&#xff1a; 一、AI驱动的智能测试工具 …...