华为云环境下LVS/DR架构的故障诊断优化
本文作者:刘涛
文章目录
- 前言
- 1.LVS/DR集群的问题
- 2.华为云环境
- 3.问题排查
- 3.1 检查LVS/DR模式配置
- 3.1.1 RS服务器
- 3.1.2 DS服务器
- 3.2 继续分析抓包结果
- 3.2.1 调整tcpdump抓包过滤条件
- 3.2.2 client向集群VIP发包
- 3.2.3 DS服务器arp消息
- 3.3 查看丢包
- 3.3.1 监控DS和RS服务器的收发包错误值
- 3.3.2 查看网卡收发包错误
- 3.4 Ping抓包
- 3.5 client发包和DS发包比较
- 3.6 分析总结
- 3.6.1 由表中的二层链路可知:
- 3.6.2 从表中涉及VIP地址可知:
- 4.尝试LVS/TUN模式
- 4.1 安装和配置tun模式
- 4.2 抓包验证
前言
本文针对华为云环境的LVS/DR接收不到数据包的问题, 排查故障, 分析并验证云上二层网络的Ethernet数据包连通性; LVS/DR模式下, 基本确认ip伪装会被华为云物理网络丢弃。
1.LVS/DR集群的问题
问题:
华为云环境下部署LVS/DR后, 后端服务RS收不到数据包.
现象:
- client向集群VIP发包, RS服务器没有收到包; 同时tcpdump也没有抓到相应的包.
- client直接向RS发包, RS可以收到包.
- 在DS服务器上直接向RS发包, RS也可以收到包.
2.华为云环境
使用华为云作为LVS测试环境,四台服务器:
角色 | IP | EIP | 功能 |
---|---|---|---|
client | xxx.xxx.1.15 | xxx.xxx.25.28 | |
DS:VIP | xxx.xxx.1.60 | xxx.xxx.25.5 | |
DS:DIP | xxx.xxx.1.59 | xxx.xxx.25.196 | |
RS1 | xxx.xxx.1.48 | xxx.xxx.25.181 | UDP程序 |
RS2 | xxx.xxx.1.98 | xxx.xxx.25.154 | UDP程序 |
其中:
- DS:Director Server, 指的是前端负载均衡器节点;
- RS:Real Server, 后端真实的工作服务器;
- VIP:向外部直接面向用户请求, 作为用户请求的目标的IP地址;
- DIP:Director Server IP, 主要用于和RS通讯的IP地址;
- RIP:Real Server IP, 后端服务器RS的IP地址;
- CIP:Client IP, 客户端的IP地址。
RS服务器上部署的是java udp程序。安装及配置前, DS和RS已经提前关闭防火墙, 以及iptables/selinux/firewalld等服务。
3.问题排查
3.1 检查LVS/DR模式配置
要点:
- 虚拟地址VIP配置在DS上;
- 虚拟地址VIP配置RS的lo网卡上;
- RS服务器上阻止arp应答。
3.1.1 RS服务器
在RS服务器上执行:
# sysctl -ar arp_ignore
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.ens33.arp_ignore = 0
net.ipv4.conf.lo.arp_ignore = 1# sysctl -ar arp_announce
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.ens33.arp_announce = 0
net.ipv4.conf.lo.arp_announce = 2# sysctl -ar rp_filter | grep 1
net.ipv4.conf.all.rp_filter = 1# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet xxx.xxx.1.60/32 brd xxx.xxx.1.60 scope global lo:0valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000inet xxx.xxx.1.48/24 brd xxx.xxx.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft forever
RS1和RS2更新配置:
# echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
# sysctl -p# sysctl -ar rp_filter | grep 1
<无输出>
3.1.2 DS服务器
在DS服务器上执行:
# sysctl -ar rp_filter | grep 1
<无输出># ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000inet xxx.xxx.1.59/24 brd xxx.xxx.1.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet xxx.xxx.1.60/32 brd xxx.xxx.1.60 scope global ens33:0valid_lft forever preferred_lft forever
# LVS规则
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
UDP xxx.xxx.1.60:52002 rr-> xxx.xxx.1.48:52002 Route 1 0 0-> xxx.xxx.1.98:52002 Route 1 0 0
配置无误
3.2 继续分析抓包结果
Ip地址 + Mac地址:
角色 | IP | MAC地址 | 功能 |
---|---|---|---|
client | xxx.xxx.1.15 | fa:16:xx:xx:xx:8c | |
DS:VIP | xxx.xxx.1.60 | fa:16:xx:xx:xx:8d | |
DS:DIP | xxx.xxx.1.59 | fa:16:xx:xx:xx:8d | |
RS1 | xxx.xxx.1.48 | fa:16:xx:xx:xx:9a | udp程序 |
RS2 | xxx.xxx.1.98 | fa:16:xx:xx:xx:d3 | udp程序 |
3.2.1 调整tcpdump抓包过滤条件
DS机器上:
tcpdump ether src fa:16:xx:xx:xx:8c
改为:
tcpdump '(udp or arp or icmp)' -en -v -w ds.cap
RS机器上:
tcpdump ether src fa:16:xx:xx:xx:8d
改为:
tcpdump '(udp or arp or icmp)' -en -v -w rs.cap
3.2.2 client向集群VIP发包
DS上tcpdump抓包结果, 这是client向集群VIP发包时的记录:
Frame-351,mac地址xx:8c ------> xx:8d,即: 1.15 —> 1.59
下一个包:
Mac地址xx:8d ------> xx:9a, 即: 1.59 —> 1.48, 如下图:
上面两张图中, 标识码都是0x704d, 是同一个包; TTL先是64, 再到63, 过了一跳。表明lvs/DR生效了, 包的mac地址更改成了rs-1.48的, 包也发出了。
3.2.3 DS服务器arp消息
DS服务器上抓包, arp请求和应答:
1.48收到的arp请求:
说明DS(1.59/1.60) 到 RS(1.48/1.98) 在二层网络上是通的。
3.3 查看丢包
3.3.1 监控DS和RS服务器的收发包错误值
# udp收发包
watch -d netstat -su
# 链路层收发包
watch -d netstat -i
# 网卡收发包
watch -d ifconfig
没有发现异常信息!
3.3.2 查看网卡收发包错误
1.59网卡:
# ethtool -S ens33 | grep errorrx_errors: 0tx_errors: 0rx_length_errors: 0rx_over_errors: 0rx_crc_errors: 0rx_frame_errors: 0rx_missed_errors: 0tx_aborted_errors: 0tx_carrier_errors: 0tx_fifo_errors: 0tx_heartbeat_errors: 0tx_window_errors: 0rx_long_length_errors: 0rx_short_length_errors: 0rx_align_errors: 0rx_csum_offload_errors: 0
# ethtool -S ens33 | grep droptx_dropped: 0dropped_smbus: 0
1.48和1.98同样没有错误和丢包
3.4 Ping抓包
从DS上ping RS服务器, 查看通讯过程:
发出的icmp包, 源mac地址和ip地址对应DS服务器, 而目的mac地址和ip地址对应RS1服务器;
Ping reply包,源mac地址和ip地址对应RS1服务器,目的mac地址和ip地址对应DS服务器。
3.5 client发包和DS发包比较
- client发包链路: 1.15 —> 1.59/1.60 —> 1.98
- DS直接发包链路: 1.59/1.60 —> 1.98
Client发包, DS上收到的包: 1.15 —> 1.59
3.6 分析总结
汇总测试和抓包结果:
场景 | 源 | 目的 | 是否通过vip | rs1结果 |
---|---|---|---|---|
ping | 1.59 | rs1服务器 | 通、tcpdump有数据 | |
arp | 1.59 | rs1服务器 | 通、tcpdump有数据 | |
nc发udp包 | 1.15 | 1.60 | 是 | rs1收不到包、tcpdump无数据 |
1.60 | 1.60 | 是 | rs1收不到包、tcpdump有数据 | |
1.59 | 1.60 | 是 | rs1收到包、tcpdump有数据 | |
1.59 | rs1服务器 | rs1收到包、tcpdump有数据 | ||
1.60 | rs1服务器 | rs1收到包、tcpdump有数据 |
DS服务器到RS的ethernet数据包情况:
场景 | 源ip | 目的ip | 源mac | 目的mac | rs结果 |
---|---|---|---|---|---|
Ping | ds-ip | rs1-ip | ds-mac | rs1-mac | 通、tcpdump有数据 |
Arp | ds-ip | rs1-ip | ds-mac | rs1-mac | 通、tcpdump有数据 |
nc发udp包 | client-ip | VIP | ds-mac | rs1-mac | rs收不到包、tcpdump无数据 |
VIP | VIP | ds-mac | rs1-mac | rs收不到包、tcpdump有数据 | |
ds-ip | VIP | ds-mac | rs1-mac | rs收到包、tcpdump有数据 | |
ds-ip | rs1-ip | ds-mac | rs1-mac | rs收到包、tcpdump有数据 | |
VIP | rs1-ip | ds-mac | rs1-mac | rs收到包、tcpdump有数据 |
3.6.1 由表中的二层链路可知:
- 从ds-mac到rs-mac, 大部分通, 少部分不通;
- arp和ping的结果, 表明DS和RS之间二层链路是通的;
- DS和RS上协议栈及网卡没有错误和丢包, 表明DS和RS上发包成功, 从二层链路可以接收到的数据包也都成功入栈。
3.6.2 从表中涉及VIP地址可知:
有问题的包都是涉及VIP的源地址或者目的地址:
-
源IP是VIP,目的IP也是VIP:
RS可以收到包,因为VIP地址在RS上是loopback环回接口,从网卡上收到本身发出去的包,RS默认情况下会拒收,即会丢弃该数据包。
# RS修改内核参数
sysctl -w net.ipv4.conf.all.accept_local=1
# 或者
# echo "net.ipv4.conf.all.accept_local = 1" >> /etc/sysctl.conf
# sysctl -p
-
源IP是CIP,目的IP是VIP:
RS收不到包, tcpdump抓不到包,而且DS/RS协议栈和网卡没有收发包错误和丢包;表明包成功发送出DS,但是没有到达RS,说明包在DS和RS之间丢失。
-
结论:
考虑到华为云环境下, 网络是虚拟网络, 比如构建于vxLan之上的二层链路网络; DS和RS之间还有物理网络设备, 如: VTEP入口。
考察云环境下的链路:
源 | VTEP | 目的/源 | VTEP | 目的 | |
---|---|---|---|---|---|
client发包 | client-ip | 通过 | VIP | ||
client发包 | client-mac | 通过 | ds-mac | ||
DS转发 | client-ip | 拒绝 | VIP | ||
DS转发 | ds-mac | 拒绝 | rs-mac |
VTEP入口启用了rp_filter[功能是防止ip伪装和欺骗]。
4.尝试LVS/TUN模式
4.1 安装和配置tun模式
安装和配置tun模式, 并且在RS服务器上关闭rp_filter功能:
# echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
# sysctl -p
从client向集群VIP发包, RS上正常收到udp包。
考察云环境下的链路:
源 | VTEP | 目的/源 | VTEP | 目的 | |
---|---|---|---|---|---|
client发包 | client-ip | 通过 | VIP | ||
client发包 | client-mac | 通过 | ds-mac | ||
DS转发 | ds-ip | 通过 | rs-ip、 内含ip包: client-ip —> VIP | ||
DS转发 | ds-mac | 通过 | rs-mac、内含ip包: client-ip —> VIP |
VTEP设备看到的数据包, 是ds-ip/ds-mac发送到rs-ip/rs-mac的, 符合rp_filter的验证。
RS服务器接收到数据包后, tunl0网卡及内核ipip模块解封数据包后, 内核协议栈看到的数据包是client-ip发送到VIP的, 而VIP是本地tunl0网卡的IP地址, 并且本地已经关闭rp-filter功能, 可以顺利通过内核ip路由的校验, 进入协议栈及应用层。
4.2 抓包验证
从101.43发包, 链路是:
101.43 —> 101.60/101.41 —> 101.42
在101.60/101.41上抓包, 收到的包:
Frame-53, 2d:d7 —> ce:54, 即101.43至101.60/101.41:
Frame-54, ce:54 —> 9f:4b, 即101.41至101.42:
可以看到这个Frame做了IP-over-IP. ip协议层上, ip地址和mac地址一一对应, 可以通过rp-filter检查。
至101.42, 内核IPIP模块解封后:
相关文章:
华为云环境下LVS/DR架构的故障诊断优化
本文作者:刘涛 文章目录 前言1.LVS/DR集群的问题2.华为云环境3.问题排查3.1 检查LVS/DR模式配置3.1.1 RS服务器3.1.2 DS服务器 3.2 继续分析抓包结果3.2.1 调整tcpdump抓包过滤条件3.2.2 client向集群VIP发包3.2.3 DS服务器arp消息 3.3 查看丢包3.3.1 监控DS和RS服…...
Effective C++ 条款 22:将成员变量声明为 private
文章目录 条款 22:将成员变量声明为 private核心思想示例代码注意事项结论 条款 22:将成员变量声明为 private 核心思想 成员变量的封装性 将成员变量声明为 private 是面向对象设计的重要原则,有助于保持封装性。 为何使用 private&#x…...
ShardingSphere(分库分表)
ShardingSphere 高性能架构模式 读写分离架构: 基本原理是将数据库读写操作分散到不同的节点上,主库负责处理事务性的增删改操作,从库负责处理查询操作。避免由数据更新导致的行锁,来提升性能。 一主一从:可以将查…...
Visual Studio Code(VS Code)配置C/C++环境
一、Visual Studio Code安装 Visual Studio Code,下文中简称为VS Code的详细安装方法请参考VSCode安装教程(超详细)-CSDN博客 二、MinGW编译器下载与配置 1、MinGW介绍 MinGW(Minimalist GNU for Windows)是一款用于Windows 平台的轻…...
使用 OpenCV 在图像中添加文字
在图像处理任务中,我们经常需要将文本添加到图像中。OpenCV 提供了 cv2.putText() 函数,可以很方便地在图像上绘制文本,支持多种字体、颜色、大小和位置等参数。 本文将详细介绍如何使用 OpenCV 在图像中添加文字,介绍 cv2.putTe…...
高校网络安全_网络安全之道
需要对学校的网络进行安全防护,主要有这么几个痛点: 传统本地化产品难以及时更新情报库,应对新型攻击。 近年来,黑客和黑产团伙攻击手 段呈现多样化实战化,除传统僵木蠕外,各类新型、复杂甚至未知威胁高发…...
『大模型笔记』评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释
评估大型语言模型的指标:ELO评分,BLEU,困惑度和交叉熵介绍以及举例解释 文章目录 一. ELO Rating大模型的elo得分如何理解1. Elo评分的基本原理2. 示例说明3. 大模型中的Elo得分总结3个模型之间如何比较计算,给出示例进行解释1. 基本原理扩展到三方2. 示例计算第一场: A A…...
kafka的配置
server.properties server.properties模板 # broker id,多个broker服务器的话,每个broker id必须不同 broker.id1# kafka broker所在节点的 hostnamehostname10.1.1.1.3:9092# 处理网络请求的线程数 num.network.threads 8# 执行磁盘IO的线程数 num.io…...
Linux下Java通过JNI调用C++
以下为Demo流程 1.创建Java文件 public class HelloWord {// 声明本地方法public native void sayHello();static {// 加载本地库System.loadLibrary("hello");}public static void main(String[] args) {new HelloWord().sayHello();} } 2.编译生成.h头文件 在H…...
家政预约小程序数据库设计
目录 1 如何设计表结构1.1 用户表1.2 服务分类表1.3 服务表1.4 服务规格表1.5 订单表1.6 服务人员表1.7 评价表1.8 促销活动表1.9 投诉表1.10 年卡表1.11 派单表1.12 支付记录表1.13 通知记录表1.14 优惠券表1.15 用户优惠券表1.16 消息模板表1.17 积分记录表 经过一系列的设计…...
【Git学习】windows系统下git init后没有看到生成的.git文件夹
[问题] git init 命令后看不到.git文件夹 [原因] 文件夹设置隐藏 [解决办法] Win11 win10...
云手机群控能用来做什么?
随着云手机的发展,云手机群控技术逐渐从小众的游戏多开工具,发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营,还是账号养成等场景,云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…...
go下载依赖提示连接失败
1、现象 Go下载模块提示连接失败 dial tcp 142.251.42.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.…...
在线excel编辑(luckysheet)
项目地址:Luckysheet: 🚀Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 可以下载项目使用npm安装运行,也可以用cdn 加载excel文件(使用luckyexcel): …...
2024国赛A题第一问
第一问 板凳龙等距螺线匀速运动模型的建立 坐标系的建立 根据题意,舞龙队沿螺距为55cm的螺线顺时针进入,进入位置为螺线第16圈点A处,即整个螺线的最外侧点,设定其为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)。为了便于计算出题目要…...
【魅力golang】之-反射
1、引言 反射(Reflection)在 Golang中用于运行时检查和操作变量的类型和值。通过反射,可以实现动态类型处理,这在构建泛型代码、框架、序列化工具和动态代理等场景中非常有用。 2、什么是反射 反射是指程序在运行时能够动态地检…...
Java在 聊天管理系统中的应用
聊天管理系统已经成为人们日常沟通不可或缺的一部分。无论是企业内部的即时通讯,还是社交媒体平台的聊天功能,聊天管理系统都扮演着至关重要的角色。 Java 作为一种广泛应用的编程语言,凭借其强大的功能、良好的跨平台性以及丰富的类库&…...
记一次rac故障原因分析(虚拟化平台)
一 现象描述 XX客户于1月14号凌晨业务中断,检查数据库发现数据库集群宕机。 XX客户于2月14号春节初五早上业务异常,连接数据库无响应。 二 问题详细诊断 1月14号故障 1月14号凌晨2点,客户反馈业务中断,发现节点1无法连接&…...
opencv中的各种滤波器简介
在 OpenCV 中,滤波器是图像处理中的重要工具,用于对图像进行平滑、去噪、边缘检测等操作。以下是几种常见滤波器的简单介绍。 1. 均值滤波 (Mean Filter) 功能: 对图像进行平滑处理,减少噪声。 应用场景: 去除图像…...
文本数据处理
文本数据处理 一、数据转换与错误处理 (一)运维中的数据转换问题 在计算机审计及各类数据处理场景中,数据转换是关键步骤,涉及将被审计单位或其他来源的数据有效装载到目标数据库,并明确标示各表及字段含义与关系。…...
ThinkPHP 8开发环境安装
【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《ThinkPHP 8高效构建Web应用 夏磊 编程与应用开发丛书 清华大学出版社》【摘要 书评 试读】- 京东图书 1. 安装PHP8 Windows系统用户可以前往https://windows.php.net/downloads/releases/archives/下载PHP 8.0版本&am…...
php怎么去除数点后面的0
在PHP中,我们可以使用几种方法来去除数字小数点后的0。 方法一:使用intval函数 intval函数可以将一个数字转化为整数,另外,它也可以去除小数点后面的0。 “php $number 123.4500; $number intval($number); echo $number; // 输…...
Database.NET——一款轻量级多数据库客户端工具
文章目录 Database.NET简介下载使用使用场景总结 Database.NET简介 Database.NET 是一个功能强大且易于使用的数据库管理工具,适用于多种数据库系统。它为开发者和数据库管理员提供了一个统一的界面,可以方便地管理和操作不同类型的数据库。 支持的数据…...
Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果
目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…...
protobuf学习使用
1、概述 protobuf是Google开发的一种语言中立、平台无关、可扩展的序列化结构数据格式。允许定义一次数据结构,然后可以使用各种支持的语言来生成代码,以轻松地读写这些结构到一个二进制流中,如网络传输或文件,Protobuf支持多种编…...
跟我学c++中级篇——C++中的缓存利用
一、缓存 学习过计算机知识的一般都知道缓存这个概念,大约也知道缓存是什么。但是如果是程序员,如何更好的利用缓存,可能就有很多人不太清楚了。其实缓存的目的非常简单,就是了更高效的操作数据。大家都听说过“局部性原理”&…...
Goland 安装与使用
GoLand安装 官方网址: JetBrains GoLand:不只是 Go IDE 1. 进入官网,点击下载: 2. 如下图一步步安装 3. 如下图一步步安装...
cesium通过经纬度获取3dtiles 得feature信息
找到这里3dtiles的两种访问方式: 1.1 3DTileContent#getFeature 这里涉及3DTile 数据结构,暂不了解3DTile 数据结构,因此暂不使用。 1.2 scene.pick 本次使用 scene表示虚拟场景中所有 3D 图形对象和状态的容器;scene中…...
spring cloud gateway 3
**Spring Cloud Gateway 3** 是 Spring Cloud 生态系统中的一个重要组件,用于构建 API 网关,提供路由、监控、安全等关键功能。以下是关于 Spring Cloud Gateway 3 的详细介绍: ## 1. 什么是 Spring Cloud Gateway? **Spring Clou…...
青少年编程与数学 02-005 移动Web编程基础 03课题、流式布局
青少年编程与数学 02-005 移动Web编程基础 03课题、流式布局 一、流式布局二、网页示例HTML (index.html)CSS (styles.css) 三、精灵图精灵图的工作原理精灵图的优点精灵图的缺点精灵图的适用场景 四、轮播图HTML (index.html)CSS (styles.css)JavaScript (script.js) 课题摘要…...
【数据可视化复习方向】
1.数据可视化就是数据中信息的可视化 2.数据可视化主要从数据中寻找三个方面的信息:模式、关系和异常 3.大数据可视化分类:科学可视化、信息可视化、可视分析学 4.大数据可视化作用:记录信息、分析推理、信息传播与协同 5.可视化流程&…...
Spring Security 6 系列之九 - 集成JWT
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...
大数据实验三
Python and anaconda 实验三数据预处理和轨迹聚类参考地址: https://www.hifleet.com/wp/communities/data/hangyundashujujishukechengshiyanzhinanshujuyuchulijiguijijuleichixugengxinzhong#post-2212https://www.hifleet.com/wp/communities/data/hangyundas…...
《计算机网络(第7版)-谢希仁》期末考试复习题和答案(总结整理)
目录 前言: 一、选择题。 二、填空题。 三、名词解释。 四、简答题。 前言: 这个自动标题自己带了序号,一开始想全部选项和题号都改过来的,结果一看一百多个全是,懒得改了 一、选择题。 1、广域网覆盖的地理范围…...
学习笔记 --C#基础其他知识点(持续更新)
C#中的同步和异步《一》 以下理解借鉴博客:借鉴博客地址1 异步编程(Asynchronous) 允许任务在后台执行,而不会阻塞调用线程。C#使用async和await关键字 async Task AsynchronousMethod() {// 等待异步操作完成await Task.Delay…...
STM32 高级 谈一下IPV4/默认网关/子网掩码/DNS服务器/MAC
首先可以通过 winr->输入cmd->输入ipconfig 命令可以查看计算机的各种地址 IPV4:是互联网协议第 4 版(Internet Protocol version 4)所使用的地址。它是一个 32 位的二进制数字,通常被分为 4 个 8 位的部分ÿ…...
智能家居实训室中,STC单片机驱动的“互联网+”智能家居系统设计
一、引言 随着经济的快速发展,人们对家居环境的智能化、网络化需求日益增强,智能家居的研究也因此受到了国内外相关机构的广泛关注。STC单片机凭借其卓越的性能和广泛的应用领域,成为了智能家居系统设计的优选方案。作为一种先进的微控制器&…...
esp32学习:用虫洞ESP32S3-EYE开发板快速实现USB摄像头(UVC免驱)
直接上干货:实现一个USB摄像头,免驱UVC设备。 硬件准备: 乐官方推荐的Cam开发板就是乐鑫带摄像头OV2604的esp32-s3-eye,我们虫洞esp32-s3-eye完全兼容这个板子哦,虫洞ESP32-S3-EYE 人脸识别 esp-cam升级 OpenCV LVGL …...
Python 面向对象编程 五(结束)组合
Python 面向对象编程 五(结束)组合 组合 组合 组合是面向对象编程中另一个流行的概念,它与封装也有一定关系。简单地说,组成是指在一个对象中包含一个或多个对象,从而形成一个真实世界的对象。包含其他类对象的类称为…...
基于微信小程序的校园访客登记系统
基于微信小程序的校园访客登记系统 功能列表 用户端功能 注册与登录 :支持用户通过手机号短信验证码注册和登录。个人资料管理 :允许用户编辑和更新个人信息及其密码。站内信消息通知:通知公告。来访预约:提交来访预约支持车牌…...
docker 部署mysql8
在Docker中部署MySQL 8是一个相对简单的过程。以下是基本的步骤: 拉取MySQL 8镜像: 使用Docker命令拉取最新的MySQL 8镜像: docker pull registry.openanolis.cn/openanolis/mysql:8.0.30-8.6创建并运行MySQL容器: 创建并运行MySQ…...
聊一聊 C#前台线程 如何阻塞程序退出
一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug,最后发现是有一个 Backgrond…...
【编译原理】往年题汇总(山东大学软件学院用)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀编译原理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
【原创学习笔记】近期项目中使用的西门子V20变频器总结(上篇)
现场V20 22kW变频器如图所示 进线分别为L1,L2,L3,PE线,出现分别为U,V,W接电机 在西门子官网查询手册后,查询可知可以通过多种方式控制变频器,比如:面板(BOP)控制,端子(NPN/PNP&…...
IndexOf Apache Web For Liunx索引服务器部署及应用
Apache HTTP Server 是一款广泛使用的开源网页服务器软件,它支持多种协议,包括 HTTP、HTTPS、FTP 等 IndexOf 功能通常指的是在一个目录中自动生成一个索引页面的能力,这个页面会列出该目录下所有的文件和子目录。比如网上经常看到的下图展现的效果,那么接下来我们就讲一下…...
Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集PI-FGSM介绍背景和动机算法原理算法流程 PI-FGSM代码实现PI-FGSM算法实现攻击效果 代码汇总pifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexN…...
Casino Royale靶场wp
0x00 下载安装 https://download.vulnhub.com/casinoroyale/CasinoRoyale.ova 导入vmware启动 0x01 主机信息收集 0x02目录扫描 index.php 获取到一个域名 修改本地hosts 添加一行 路径:C:\Windows\System32\drivers\etc 192.168.2.20 casino-royale.local 点击…...
c/c++ 无法跳转定义
背景 对于嵌入式开发离不开交叉编译工作,采用vccode远程到虚拟机开发来说,总会遇到一个函数跳转问题。下面针对运用开发如何设置vscode保证函数能正确跳转大函数定义。 一、安装c/c插件 安装C/C Extension Pack插件,这插件包含有几个插件。…...
4.5 数据表的外连接
本次课程我们将继续的学习数据表的连接。因为数据表的连接是分为内连接和外连接的。内连接的语法,还有一些练习,我们都是学习到了。那么本次课程咱们就开始学习数据表的外连接语法。首先我来解释一下为什么要使用外连接这种语法。咱们首先看一条记录&…...
请购单一直提示需求部门不能为空无法提交
终于发现了它的逻辑。用户很多次反馈,提交请购单时,提示需求部门不能为空,既使选择了需求部门,保存时,神奇的是会清空掉部门的信息,提交时就会有错误提示出来。 原因:光选择单头上的需求部门是…...