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

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 (DR模式)

架构

lvs-dr

本设计方案采用三台服务器构建集群,使用Linux Virtual Server (LVS) 作为负载均衡器,运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务,以实现 高可用性可扩展性LVS 将作为前端节点,接收所有进入的请求,并将它们分发到后端服务器。

流程

配置三台服务器,安装必要的操作系统和软件。

  • 关闭防火墙: systemctl disable firewalld
  • 系统支持 lvs
  • 安装 ipvsadm
  1. 在一台服务器上安装并配置 LVS,设置为直接路由模式。
  2. 在另外两台服务器上部署相同的应用服务。
  3. 配置 LVS 规则,将流量分发到后端服务器。
  4. 使用 ApacheBench (ab) 作为压测工具,对集群进行性能测试。

各服务功能

  • LVS 节点:作为集群的前端负载均衡器,负责接收客户端请求并分发到后端服务器。
  • 后端服务器:运行应用服务,处理来自 LVS 的请求。
  • ab 工具:用于生成高并发请求,测试集群的性能。

部署

在三台服务器上安装 Linux 操作系统,并确保网络配置正确。

  1. LVS 节点上安装 LVS 软件包。
  2. 在后端服务器上部署应用服务,并确保服务可以正常运行。
  3. 配置 LVS 规则,包括 虚拟IP 地址、后端服务器的IP地址和端口等。
  4. 配置网络,确保 LVS 节点和后端服务器之间可以正常通信。
  5. 使用 ab 工具在客户端机器上对集群进行压力测试。

文件目录

.
├── director-dr.sh
├── director-nat.sh
├── director-tunl.sh
├── README.en.md
├── README.md
└── realsever-dr.sh

Director 节点上运行director-dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forwardipv=/sbin/ipvsadmvip=192.168.152.131rs1=192.168.152.129
rs2=192.168.152.133ifconfig ens33:0 down
ifconfig ens33:0 $vip broadcast $vip netmask 255.255.255.0 up
route add -host $vip dev ens33:0$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -w 1 -g
$ipv -a -t $vip:80 -r $rs2:80 -w 1 -g

查看部署结果

# vip ens33:0 是否成功创建成功 
[root@localhost lvs]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:02:6a:99 brd ff:ff:ff:ff:ff:ffinet 192.168.152.128/24 brd 192.168.152.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.152.131/24 brd 192.168.152.131 scope global secondary ens33:0 # vip 创建成功valid_lft forever preferred_lft foreverinet6 fe80::c4cc:bc59:19a3:dc4c/64 scope link noprefixroute valid_lft forever preferred_lft forever# 查看是否创建 lvs: dr 模式成功
[root@localhost lvs]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.152.131:80 rr-> 192.168.152.129:80           Route   1      0          0         -> 192.168.152.133:80           Route   1      0          0 

RealServer 上分别运行 realserver.sh

#!/bin/bash
vip=192.168.152.131ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

查看部署结果

[root@master lvs]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.152.131/32 brd 192.168.152.131 scope global lo:0 # vip 部署 lo:0 成功valid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever# docker创建nginx nginx:1.23.0-alpine 自带netstat 容器统计 负载数
[root@master lvs]# docker run --name nginx -d -p 80:80 nginx:1.23.0-alpine

压测

使用 Jemterab 进行压力测试。

1. 监听Drector lvs负载

# 在 director 上执行
[root@localhost lvs]# watch ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.152.131:80 rr-> 192.168.152.129:80           Route   1      0          0         -> 192.168.152.133:80           Route   1      0          0 

2. ab模拟负载进行连接

# 非 lvs 集群的主机进行执行ab -n 50000 请求数 -c 20000 并发
ab -n 50000 -c 20000 http://192.168.152.131/

3. 统计RealServer负载

# rs1 统计nginx的负载数
[root@master lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
2
# rs2 统计nginx的负载数
[root@master lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
2

压测结果

# Director
Every 2.0s: ipvsadm -Ln                                                                                                                                         Fri Aug 16 02:06:02 2024IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.152.131:80 rr-> 192.168.152.129:80           Route   1	 10001          25000-> 192.168.152.133:80           Route   1	 9999           24992# RS 1
[root@master lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
25002# RS 2
[root@master lvs]# docker exec -it openui-nginx netstat -nat|grep :80|wc -l
25002

优劣势

优势:

  • 高可用性:通过 LVS 实现的负载均衡可以提高系统的可用性。
  • 可扩展性:可以轻松添加更多的后端服务器来扩展集群。
  • 性能LVSDR 模式提供了高性能的负载均衡能力。
  • 成本效益:使用开源软件,减少了成本。

劣势:

  • 复杂性:配置 LVS 和后端服务器可能相对复杂。
  • 单点故障LVS 节点作为单点,如果出现故障,可能会影响整个集群。
  • 资源消耗LVS 节点需要足够的资源来处理负载均衡任务。
  • 性能测试:使用 ab 工具可以模拟大量并发请求,帮助评估集群的性能。

监控和日志:集成监控系统来监控集群状态,并记录日志以便于问题排查。

通过综合考虑这些因素,可以设计并实现一个高效、可靠且易于维护的基于 LVS 的集群系统。通过使用 DR 模式,我们能够实现高性能的负载均衡,同时通过 ab 工具进行性能测试,确保系统满足预期的性能要求。

ISSUE

  1. Director 节点端口连接数不足
    永久修改端口范围 net.ipv4.ip_local_port_range = 1024 65535

  2. windows 执行ab,报错: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
    修改windows 端口范围

netsh int ipv4 set dynamicport tcp start=5001 num=60535 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 30 /f

项目地址

gitee

参考博客

Jmeter性能测试
linux如何查看系统端口范围
Linux添加虚拟网卡的多种方法
LVS原理详解以及部署
就是要你懂负载均衡–lvs和转发模式
connect failed error 10055 由于系统缓冲区空间不足

相关文章:

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 &#xff08;DR模式&#xff09; 架构 本设计方案采用三台服务器构建集群&#xff0c;使用Linux Virtual Server (LVS) 作为负载均衡器&#xff0c;运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务&#xff0c;以实现 高可用…...

Linux环境开发工具【yum与vim】

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1.Linux软件包管理器yum1.1 快速使用yum 2. Linux编辑器-vim的使用2.1 vim的基本…...

laravel GuzzleHttp Client 无法获取返回的错误信息

Client发送一些请求&#xff0c;当返回状态不是200的时候&#xff0c;无法获取完整错误信息 $client new Client([base_uri > $this->getUri()./order/aaaaaa,timeout > 30,verify > false]);try {$response $client->request(POST, , [headers > [Lang&g…...

XMOS 多路音频解码器

当谈及高性能音频解码器&#xff0c;XMOS 是一个不容忽视的名字。作为音频解决方案领域的领军者&#xff0c;XMOS 的多路音频解码器在音频处理技术中扮演着至关重要的角色。下面我们一起深入探讨 XMOS 多路音频解码器去了解这一技术的魅力。 设计背景&#xff1a;追求音频极致…...

XSS小游戏(题目+解析)

xss题目练习地址&#xff1a; xss小游戏 游戏界面 一、Ma Spaghet! 我将题目要求进行翻译: 题目的主要要求就是&#xff1a;弹出一个&#xff08;1337&#xff09;的弹窗 开始解题&#xff1a; Let’s Go! 首先&#xff0c;传个参数看看 发现参数直接显示在了 < h2 >…...

《Redis核心技术与实战》学习笔记4——AOF日志:宕机了,Redis如何避免数据丢失?

文章目录 AOF 日志是如何实现的&#xff1f;三种写回策略 日志文件太大了怎么办&#xff1f;AOF 重写会阻塞吗?小结 大家好&#xff0c;我是大白。 如果有人问你&#xff1a;“你会把 Redis 用在什么业务场景下&#xff1f;”我想你大概率会说&#xff1a;“我会把它当作缓存使…...

NextJs - 服务端/客户端组件之架构多样性设计

NextJs - 服务端/客户端组件之架构多样性设计 前言一. 架构设计1.1 SSR流式渲染常见错误设计之 - 根页面同步阻塞1.2 架构设计之 - 客户端组件依赖于服务端组件数据① 使用 Redux 完成数据共享 1.3 架构设计之 - 单页内的分步骤跳转① 如何做到服务端组件和客户端组件之间的切换…...

使用 Python 进行 PDF 文件加密

使用 Python 解密加密的 PDF 文件-CSDN博客定义一个名为的函数&#xff0c;该函数接受三个参数&#xff1a;输入的加密 PDF 文件路径input_pdf、输出的解密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/qq_45519030/article/details/141256661 在数字化时代…...

Spring Boot集成RabbitMQ

目录 1.RabbitMQ简介2.添加依赖3.配置RabbitMQ连接4.DirectExchange4.1 消费者4.2 生产者4.3 测试4.4 一个交换机对多个队列4.5 一个队列对多个消费者 5.FanoutExchange5.1 消费者5.2 生产者5.3 测试 6.TopicExchange6.1 消费者6.2 生产者 1.RabbitMQ简介 RabbitMQ是一个由Erl…...

OLED屏幕制造工艺流程

OLED屏幕制造工艺流程是一个复杂且精细的过程&#xff0c;涉及多个关键步骤以确保最终的显示效果和性能。以下是OLED屏幕制造工艺流程的主要步骤&#xff1a; 1. 衬底制作与准备 材料选择&#xff1a;OLED器件需要一个透明的导电衬底&#xff0c;通常使用玻璃或塑料材料。 清…...

knowLedge-VueCLI项目中环境变量的定义与使用

1. env 1.1简介 在 Vue CLI 创建的项目中&#xff0c;你可以通过 .env 文件来定义环境变量。Vue CLI 支持多种 .env 文件&#xff0c;它们根据文件名中的前缀来决定何时加载和使用这些环境变量。 以下是一些常见的 .env 文件及其用途&#xff1a; .env&#xff1a;在任何环境…...

【C#】 接口 继承

简介 继承是面向对象编程的核心特性之一&#xff0c;它允许我们创建一个类&#xff08;称为子类&#xff09;来继承另一个类&#xff08;称为基类&#xff09;的属性和方法。 作用 这样&#xff0c;我们可以重用代码&#xff0c;减少重复&#xff0c;并使我们的代码更加模块…...

Self-Supervised Learning(李宏毅老师系列)

自学参考&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding BERT 论文逐段精读 视频课 课件资料 笔记 一、概述 自监督学习模型与芝麻街~ 参数量 ELMO&#xff1a;94MBERT&#xff1a;340MGPT-2&#xff1a;1542MMegatron&…...

8月16日笔记

只有DNS协议出网场景 DNS 协议是一种请求、应答协议&#xff0c;也是一种可用于应用层的隧道技术。DNS 隧道的工作原理很简单&#xff0c;在进行 DNS 查询时&#xff0c;如果查询的域名不在 DNS 服务器本机缓存中&#xff0c;就会访问互联网进行查询&#xff0c;然后返回结果。…...

苹果Mac电脑——装macOS和Windows双系统的方法

一、实验环境 在Windows系统电脑上制作MacOS启动U盘。准备一个大于16G的U盘。 二、实验步骤 2.1 在Windows系统电脑上制作MacOS启动U盘 MacOS镜像下载 在Windows系统电脑上制作MacOS启动U盘的方法 2.2 U盘插上苹果电脑&#xff0c;安装macOS系统 U盘插上苹果电脑&#xf…...

【C++ 面试 - 基础题】每日 3 题(十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…...

数学建模学习笔记

数学建模学习笔记 现学现卖&#xff0c;随缘更新QwQ 主要根据b站大师兄的视频整理而成&#xff0c;有不懂的可以去看原视频 List 数学建模学习笔记一、 层次分析法1.1 矩阵的一致性及其检验1.2 权重计算1.3 具体流程 二、模糊综合评测2.1 隶属函数2.2 隶属函数的确定方法2.3 模…...

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息&#xff08;PII&#xff09; 个人信息保护 / AI 模型 。 1. 产品功能 基于自有专业模型进行 PII 自动去除高效处理敏感信息全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 /…...

【Python-办公自动化】1秒提取PPT文本内容形成目录保存至WORD

欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。 自我介绍: 我热衷于将复杂的技术概念以简单易懂…...

maven介绍与安装

一. maven概述 1. 关于项目依赖的jar包管理 问题描述&#xff1a; 直接在每个项目的lib文件夹中复制jar包会导致多个问题&#xff0c;包括jar包的重复存放、版本冲突以及手动管理带来的不便和错误。 问题分析&#xff1a; 重复存放&#xff1a;每个项目都保存一份相同的jar…...

瑞友科技项目经理认证负责人杨文娟受邀为第四届中国项目经理大会演讲嘉宾︱PMO评论

全国项目经理专业人士年度盛会 北京瑞友科技股份有限公司项目经理认证负责人杨文娟女士受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“瑞友科技项目经理人才培养体系落地实践”。大会将于10月26-27日在北京举…...

Ubuntu基础使用

Ubuntu是一种流行的Linux操作系统。它提供了一个友好的图形界面和许多强大的功能&#xff0c;适用于个人电脑和服务器。一般来说使用Ubuntu都是在虚拟机上运行的。 一、虚拟机的安装 VMware是一家专门提供虚拟化解决方案的公司&#xff0c;而VMware Workstation是该公司开发的…...

知识图谱结构的提示

文章介绍了一种名为“知识图谱结构作为提示”&#xff08;KG Structure as Prompt&#xff09;的新方法&#xff0c;该方法旨在增强小型语言模型&#xff08;SLMs&#xff09;在知识驱动的因果发现任务中的能力。通过将知识图谱中的结构信息融入到基于提示的学习中&#xff0c;…...

(计算机网络)网络层

目录 一.网络层提供哪种服务 二.两种服务的比较 三.ip协议 四.ip地址 五.ip地址的分类 六.子网掩码 七.路由器介绍 一.网络层提供哪种服务 1.ip地址--唯一的标识互联网上的某一台主机 2. 虚电路&#xff1a;虚拟的电路 二.两种服务的比较 ip数据报&#xff0c;不需要建…...

[upload]-[GXYCTF2019]BabyUpload1-笔记

尝试上传.htaccess和图片和一句话木马提示 php文件提示 响应头可以看到 构造一句话图片木马如下&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 上传成功 必须增加文件夹下jpg后缀解析php .htaccess如下 <FilesMatch "jpg">Set…...

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video

2023卫星视频综述论文Recent Advances in Intelligent Processing of Satellite Video 1.摘要2.引言3. 文章的定量分析4 难点与挑战5 方法论系统A. 卫星视频观察的特点B. 卫星视频目标跟踪与运动估计C. 卫星视频目标检测D. 卫星视频超分辨率 (VSR)E. 卫星视频目标分割&#xff…...

Mysql的Binlog的数据样例

Binlog&#xff08;Binary Log&#xff09;是 MySQL 中的二进制日志&#xff0c;记录了所有更改数据库的操作&#xff0c;包括数据的插入、更新和删除&#xff0c;它是主从复制、数据恢复和审计的重要来源。 以下是一些常见的 Binlog 数据样本和它们的结构&#xff1a; 1. 基…...

基于VS2022+Qt5+C++的串口助手开发

目录 一、前言 二、环境准备 三、创建QT串口项目 ​编辑 四、串口项目实现 1.ui界面设计 2.添加QT串口模块 3.功能实现 ①串口扫描 ②波特率、停止位等设置 ③接收数据 ④发送数据 五、最终效果 六、总结 一、前言 如果有人之前看过我文章的话应该知道&#xf…...

Mysql之视图

视图 创建语法&#xff1a;create [or replace] view 视图名称 as select * from where [with check option] 查询&#xff1a;show create view 视图名称 查看视图数据&#xff1a;select * from 视图名称 修改&#xff1a; 1&#xff0c;可以使用创建的语法更新&#xf…...

【开端】Java 分页工具类运用

一、绪论 Java系统中&#xff0c;分页查询的场景随处可见&#xff0c;本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…...

leetcode每日一题48

143.环形链表ii 快慢指针 至于入环点的计算 设链表中环外部分的长度为 a。slow 指针进入环后&#xff0c;又走了 b 的距离与 fast 相遇。此时&#xff0c;fast 指针已经走完了环的 n 圈&#xff0c;因此它走过的总距离为 an(bc)ba(n1)bnc。 任意时刻&#xff0c;fast 指针走过…...

源码工具文档手册

手册文档工具 TinaSDK开发文档&#xff1a;https://tina.100ask.net/ 开发板使用文档&#xff1a;https://allwinner-docs.100ask.net/ 教程示例 一板懂百板通&#xff1a;https://www.bilibili.com/video/BV1Nx4y1w7AF/?spm_id_from333.999.0.0 T113 LVGLUI开发&#xff1…...

hive之greatest和least函数

1、greatest函数&#xff1a; greatest(col_a, col_b, ..., col_n)比较n个column的大小&#xff0c;过滤掉null或对null值进行处理&#xff0c;当某个column中是string&#xff0c;而其他是int/double/float等时&#xff0c;返回null&#xff1b; 举例&#xff1a; select g…...

C:数组传参的本质

1、一维数组传参的本质 数组传参是指在函数调用时将数组作为参数传递给函数。 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };test(arr);return 0;}数组传参只需要写数组名就可以了。注意&#xff1a;数组名是arr&#xff0c;而不是arr[10] 数组传参形参该怎么写呢&am…...

excel 2019版本的index match搜索功能

{TEXTJOIN("", TRUE, IF((sheet2!A:A"文字")*(sheet2!C:CC5), sheet2!G:G, ""))} excel单元格输入公式后&#xff1a; TEXTJOIN("", TRUE, IF((sheet2!A:A"文字")*(sheet2!C:CC5), sheet2!G:G, "")) 按CtrlShi…...

【问题解决】apache.poi 3.1.4版本升级到 5.2.3,导出文件报错版本无法解析

【问题解决】apache.poi 3.1.4版本升级到 5.2.3&#xff0c;导出文件报错无法解析 3.1.4版本代码&#xff1a; /*** 创建workbook* param inp* return* throws Exception*/public Workbook createworkbook(InputStream inp) throws Exception {if (!inp.markSupported()) {inp…...

(亲测有效)SpringBoot项目集成腾讯云COS对象存储(2)

接上文&#xff08;亲测有效&#xff09;SpringBoot项目集成腾讯云COS对象存储&#xff08;1&#xff09;-CSDN博客 目录 3、通用能力类 文件下载 测试 3、通用能力类 文件下载 官方文档介绍了2种文件下载方式。一种是直接下载 COS 的文件到后端服务器&#xff08;适合服务…...

界面优化 - QSS

目录 1、背景介绍 2、基本语法 3、QSS 设置方式 3.1 指定控件样式设置 代码示例: 子元素受到影响 3.2 全局样式设置 代码示例: 使用全局样式 代码示例: 样式的层叠特性 代码示例: 样式的优先级 3.3 从文件加载样式表 代码示例: 从文件加载全局样式 3.4 使用 Qt Desi…...

实现基于TCP协议的服务器与客户机间简单通信

服务器端程序 #include <myhead.h> #define SER_PORT 6666 //服务器端口号 #define SER_IP "192.168.2.53" //服务器ip地址 int main(int argc, char const *argv[]) { /*创建套接字 int socket(int domain, int type, int protocol);*/ …...

在uniapp中使用navigator.MediaDevices.getUserMedia()拍照并上传服务器

产品提了这样一个需求&#xff1a; 移动端拍照上传后图片不保存在用户设备上&#xff0c;试了好几种方法&#xff0c;uni-file-picker、uni.chooseImage、input type‘file’&#xff0c;安卓手机都会默认把图片保存在手机&#xff0c;于是各种查资料&#xff0c;找到了以下方法…...

PULLUP

重要提示&#xff1a;PULLUP属性已被弃用&#xff0c;应替换为PULLTYPE 财产。 PULLUP在三态输出或双向端口上应用弱逻辑高&#xff0c;以防止 它从漂浮。PULLUP属性保证逻辑高电平&#xff0c;以允许三态网络 以避免在不被驱动时漂浮。 输入缓冲器&#xff08;如IBUF&#xff…...

【无标题】乐天HIQ壁挂炉使用

这里写自定义目录标题 1.按键①&#xff1a; 按一下&#xff0c;小液晶显示的温度是所设定的供暖温度&#xff1b; 按二下&#xff0c;小液晶显示的温度是所设定的生活热水温度&#xff1b; 按三下&#xff0c;小液晶显示的温度是所设定的室内温度&#xff1b; 如果忘记按几下的…...

使用Python编写AI程序,让机器变得更智能

人工智能&#xff08;AI&#xff09;是当今科技领域最热门的话题之一。随着Python编程语言的逐渐流行&#xff0c;它已经成为许多人工智能编程的首选语言。本文将介绍如何使用Python编写AI程序&#xff0c;让机器变得更智能。 首先&#xff0c;Python提供了大量的AI库和工具&a…...

VScode + PlatformIO 和 Keil 开发 STM32

以前经常使用 KEIL 写 STM32 的代码&#xff0c;自从使用 VScode 写 ESP32 后感觉 KEIL 的开发环境不美观不智能了&#xff0c;后面学习了 VScode 开发 STM32 。 使用过程中发现 串口重定向在 KEIL 中可以用&#xff0c;搬到 VScode 后不能用&#xff0c;不用勾选 Use Micro LI…...

PostgreSQL 练习 ---- psql 新增连接参数

目标 添加一个连接参数&#xff0c;默认为 false 。当 psql 连接时&#xff0c;若该连接参数非 “true” 时&#xff0c;用户 “u1“ 对表对象无操作权限&#xff0c;包括自己拥有的表。 连接机制简介 连接过程如下所述&#xff1a; 客户端初始化一个空连接&#xff0c;设置…...

pdf翻译软件哪个好用?多语言轻松转

想知道怎么用pdf翻译器在线翻译吗&#xff1f;无需复杂操作&#xff0c;一键即可解锁语言障碍。 在这个全球化日益加深的时代&#xff0c;掌握pdf文件的快速翻译技巧尤为重要。 无论是学习、工作还是国际交流&#xff0c;以下4个免费pdf翻译技巧都将是你不可或缺的得力助手。…...

培训第三十天(ansible模块的使用)

上午 ansible是⼀种由Python开发的⾃动化运维⼯具&#xff0c;集合了众多运维⼯ 具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量 系统配置、批量程序部署、批量运⾏命令等功能。 1、学习ansible的使用 ansible 主机ip|域名|组…...

关于Log4net的使用记录——无法生成日志文件输出

关于Log4net的使用记录 前言遇到的问题具体使用总结前言 最近在使用log4net进行日志记录,保存一些需要的数据,以便后期使用需要。在使用的时候出现没有生成日志文件,针对这些问题,发现解决的办法! 遇到的问题 报错,提示没有找到对应的文件。 log4net:ERROR Failed to f…...

golang Kratos 概念

"Kratos"指的是一个开源的微服务框架&#xff0c;它用于构建高性能和可扩展的云原生应用。Kratos框架提供了一套丰富的工具和库&#xff0c;旨在简化微服务的开发和维护。下面是Kratos框架的一些基本概念&#xff1a; 服务构建与注册&#xff1a; gRPC与HTTP服务&…...

入门 MySQL 数据库:基础指南

简介 MySQL 是一个非常流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于 Web 应用、企业应用和数据仓库。本博客将引导你从零开始&#xff0c;学习 MySQL 数据库的基础知识。 什么是 MySQL&#xff1f; MySQL 是一个基于 SQL&#xff08;Str…...