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

系统学习Linux-LVS集群

集群概述

负载均衡技术类型

四层负载均衡器 也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;

七层负载均衡器 也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。

负载均衡实现方式

硬件负载均衡产品:F5 、深信服 、Radware

软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

LVS结构

三层结构:负载调度器、服务器池、共享存储

架构对象:

VS:Virtual Server,也称为 Director,负载均衡服务器
RS:Real Server,真正的服务器,集群中各节点
VIP:Director 向外部提供服务的 IP
DIP:Director 向内部与 RS 通信的 IP
RIP:真实服务器的 IP
CIP:客户端的 IP

LVS工作模式

LVS-NAT(NAT模式)

LVS-DR(直接路由模式)(应用最广泛)

LVS-TUN(IP隧道(Tunnel)模式,不常用)

FULL-NAT模式(双向转换模式,不常用)

LVS负载均衡算法

静态负载均衡:

    rr(round robin,轮询 )

    wrr(weight round robin,加权轮询)

    sh(source hashing,源地址散列算法(HASH))

    dh(destination hashing,目标地址 HASH)

动态负载均衡:

lc(leash-connection,最少连接 )

    简单算法:active * 256 + inactive (谁的小选谁)

wlc(加权最少连接)

    简单算法:(active * 256 + inactive) / weight(谁的小选谁)

sed(最少期望延迟)

    简单算法:(active + 1) * 256 / weight (谁的小选谁)

nq(never queue,永不排队)

LBLC(基于局部性的最少连接 )

LBLCR(基于局部性的带复制功能的最少连接)

ipvsadm命令详解

-A添加虚拟服务节点
-D删除虚拟服务节点
-L查看虚拟服务节点列表
-a添加真实服务节点
-d删除真实服务节点
-l查看真实服务节点列表
-t指定虚拟服务器IP地址
-s指定调度算法
-r指定真实服务器节点IP地址
-w指定权重值
-g直接路由模式(默认)
-i隧道模式(不常用)
-mNAT模式
案例ipvsadm -A -t 207.175.44.110:80 -s rr
       ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
       ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
       ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
       ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m
       ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
基础配置
systemctl stop firewalld.service 
systemctl stop NetworkManager
setenforce 0
sed -i "s/ONBOOT=no/ONBOOT=yes/" /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens33
 systemctl restart network
修改主机名
关闭防火墙
关闭Selinux
关闭Networkmanager
配置IP地址

LVS配置案例

实现NAT模型搭建

负载调度器配置

配置IP地址

增加一块网卡

配置ens33和ens37网卡添加路由转发

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#网卡1配置
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.31.4
PREFIX=24
GATEWAY=192.168.31.2
DNS1=192.168.31.2
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens37
#网卡2配置
TYPE=Ethernet
BOOTPROTO=static
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.217.100
PREFIX=24
GATEWAY=192.168.217.3
DNS1=192.168.217.3[root@localhost ~]# vim /etc/sysctl.d/route.conf 
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p /etc/sysctl/route.conf

查看网卡

修改宿主机

测试网通性

LVS2、LVS3(web1、web2)

安装nginx

#LVS2机器上nginx1网页配置
[root@localhost html]# yum -y install nginx
[root@localhost html]# systemctl start nginx
[root@localhost html]# ss -anl | grep :80
nl     UNCONN     0      0         0:805                    *                   
nl     UNCONN     0      0         0:805                    *                   
tcp    LISTEN     0      128       *:80                    *:*                  
tcp    LISTEN     0      128    [::]:80                 [::]:*    #网络源安装完成后修改网关联到LVS主机ens37上
[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.31.5
PREFIX=24
GATEWAY=192.168.217.100
DNS1=192.168.31.2
[root@localhost html]# ifdown ens33 && ifup ens33
成功断开设备 "ens33"。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)#写网页内容一会测试用
[root@localhost ~]# cd /usr/share/nginx/html/
[root@localhost html]# echo nginx1 index.html 
nginx1 index.html
[root@localhost html]# echo nginx1 > index.html #LVS3机器上nginx2网页
[root@localhost html]# yum -y install nginx
[root@localhost html]# systemctl start nginx
[root@localhost html]# ss -anl | grep :80
nl     UNCONN     0      0         0:809                    *                   
nl     UNCONN     0      0         0:809                    *                   
nl     UNCONN     0      0        15:809                    *                   
nl     UNCONN     0      0        15:809                    *                   
nl     UNCONN     0      0        16:809                    *                   
tcp    LISTEN     0      128       *:80                    *:*                  
tcp    LISTEN     0      128    [::]:80                 [::]:*           #网络源安装完成后修改网关联到LVS主机ens37上
[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.31.6
PREFIX=24
GATEWAY=192.168.217.100
DNS1=192.168.31.2
[root@localhost html]# ifdown ens33 && ifup ens33
成功断开设备 "ens33"。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)#写网页内容一会测试用
[root@localhost ~]# cd /usr/share/nginx/html/
[root@localhost html]# echo nginx2 index.html 
nginx1 index.html
[root@localhost html]# echo nginx2 > index.html 

回到LVS1继续配置

通信与配置后主机安装

yum install -y ipvsadm

加载ip_vs模块并检测

启动ipvsadm服务

systemctl start ipvsadm

启动会报错少目录文件 

创建目录

#创建目录后可以启动但没有文件
[root@localhost ~]# mkdir /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# ipvsadm -A -t 192.168.217.100:80 -s rr
[root@localhost ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
[root@localhost ~]# 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.217.100:80 rr
#移动到ipvadm配置负载分配策略
root@localhost sysctl.d]# ipvsadm -A -t 192.168.217.100:80 -s rr
[root@localhost sysctl.d]# ipvsadm -a -t 192.168.217.100:80 -r 192.168.31.5:80 -m
[root@localhost sysctl.d]# ipvsadm -a -t 192.168.217.100:80 -r 192.168.31.6:80 -m
[root@localhost sysctl.d]# 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.217.100:80 rr-> 192.168.31.5:80              Masq    1      0          0         -> 192.168.31.6:80              Masq    1      0          0   
[root@localhost sysctl.d]# ipvsadm-save > /etc/sysconfig/ipvsadm/ipvsadm 
[root@localhost sysctl.d]# cd /etc/sysconfig/ipvsadm/
[root@localhost ipvsadm]# ls
ipvsadm

配置好后测试ctrl+f5刷新会从web1和web2一直跳转

 


实现DR模型搭建

DR模型原理

LVS-DR的工作原理就是:通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址,源IP/PORT,以及目标IP/PORT均保持不变

LVS-DR:直接路由的特点

   Director和各RS上都配置使用VIP

     (1)确保前端路由将目标IP为VIP的请求报文发往Director

        (a)在前端网关做静态绑定

        (b)在RS上使用arptables

        (c)在RS上修改内核参数以限制ARP通告和应答级别

           arp_announce

           arp-ignore

     (2)RS的RIP可以使用私网地址,也可以是公网地址,RIP与DIP在同一IP网络,RIP的网关不能指向DIP,以确保响应报文不会经由Director

     (3)RS跟Director要在同一个物理网络

     (4)请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client

     (5)不支持端口映射


还用刚才的试验机所以要关闭网卡2  清空数据还原成新的主机

[root@localhost ~]#  ipvsadm -C
[root@localhost ~]#  ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

删除ens37配置文件

留一块ens33的配置文件网卡 

 删除ipvsadm的配置文件  并创建新的ipvsadm配置文件

[root@localhost ~]# rm -rf /etc/sysconfig/ipvsadm
[root@localhost ~]# touch /etc//sysconfig/ipvsadm

删除路由转发功能

[root@localhost ~]# cd /etc/sysctl.d/
[root@localhost ~]# rm -rf route.conf

复制网卡配置ens33:0

[root@localhost sysctl.d]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.31.200
PREFIX=24
#GATEWAY=192.168.31.2
#DNS1=192.168.31.2
[root@localhost network-scripts]# systemctl restart network

 配置负载分配策略

[root@localhost network-scripts]# ipvsadm -A -t 192.168.31.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.31.200:80 -r 192.168.31.5:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.31.200:80 -r 192.168.31.6:80 -g
[root@localhost network-scripts]# 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.31.200:80 rr-> 192.168.31.5:80              Route   1      0          0         -> 192.168.31.6:80              Route   1      0          0     

保存策略

[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm

 

接下来配置两台web 

先将两台web服务器上注销网关与DNS

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network

首先负载调度器配置

内核参数配置生效后才可以进行配置web节点配置

调整ARP参数

[root@localhost ~]# vim /etc/sysctl.conf 
[root@localhost ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

配置虚拟ip地址

注意:web服务器虚拟地址为32位子网验码

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33    ifdown-ib    ifdown-routes    ifup-aliases  ifup-isdn    ifup-sit          network-functions
ifdown-ippp  ifdown-sit       ifup-bnep     ifup-plip    ifup-Team         network-functions-ipv6
ifcfg-lo       ifdown-ipv6  ifdown-Team      ifup-eth      ifup-plusb   ifup-TeamPort
ifdown         ifdown-isdn  ifdown-TeamPort  ifup-ib       ifup-post    ifup-tunnel
ifdown-bnep    ifdown-post  ifdown-tunnel    ifup-ippp     ifup-ppp     ifup-wireless
ifdown-eth     ifdown-ppp   ifup             ifup-ipv6     ifup-routes  init.ipv6-global
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.31.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
[root@localhost network-scripts]# systemctl  restart network
[root@localhost network-scripts]# 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.31.200/32 brd 192.168.31.200 scope global lo:0valid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:12:94:c3 brd ff:ff:ff:ff:ff:ffinet 192.168.31.5/24 brd 192.168.31.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe12:94c3/64 scope link valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:45:34:d8 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:45:34:d8 brd ff:ff:ff:ff:ff:ff

web服务器分别添加回环路由

[root@localhost network-scripts]# route add -host 192.168.31.200/32 dev lo:0
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.31.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.31.200  0.0.0.0         255.255.255.255 UH    0      0        0 lo

这样重启就没有了 写到etc下的bashrc或

写下来就可以访问了

ctrl+f5

 

 

也可以先tcpdump抓包

tcpdump -i ens33:0 >> ./tcpdump.txt

查找看http的包

或者用Wireshark抓包软件 可以看到全是200网段看不到web1、2的ip地址

 

课下了解内容CDN内容分发网络—网页缓存加速

相关文章:

系统学习Linux-LVS集群

集群概述 负载均衡技术类型 四层负载均衡器 也称为 4 层交换机&#xff0c;主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡&#xff0c;如常见的 LVS、F5 等&#xff1b; 七层负载均衡器 也称为 7 层交换机&#xff0c;位于 OSI 的最高层&#xff0c;即…...

使用matplotlib绘制动图

主程序如下&#xff1a; 项目:701项目三分报告 作者&#xff1a;WN 内容&#xff1a;速度障碍法实现 时间&#xff1a;2023年8月26号import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib import animation from utils import *uav1 Agen…...

加油站ai视觉分析检测预警

加油站ai视觉分析预警系统通过yolov8图像识别和行为分析&#xff0c;加油站ai视觉分析预警算法识别出打电话抽烟、烟火行为、静电释放时间是否合规、灭火器摆放以及人员工服等不符合规定的行为&#xff0c;并发出预警信号以提醒相关人员。YOLOv8 的推理过程和 YOLOv5 几乎一样&…...

Docker构建镜像

Docker根据Dockerfile文件构建镜像 在实际生产中&#xff0c;常常使用Dockerfile构建企业级生产环境镜像,然后再部署在我们的生产环境中&#xff0c;本文将从从零开始介绍Dockerfile如何使用&#xff0c;构建镜像。 Dockerhub官网地址&#xff1a;https://registry.hub.docke…...

【太多网工对NAT还存在这4种误解!你是其中一个吗?】

NAT是解决公网地址不够用大家最熟悉的网络技术之一&#xff0c;而NAT最依赖的是NAT translation表项&#xff0c;至于NAT的概念和背景这里不再解释&#xff0c;网络上有很多关于此的类似介绍&#xff0c;自己搜索即可。下面主要是针对大家对NAT的一些误解进行分析。 1 误解一…...

React钩子函数之useEffect,useLayoutEffect与useInsertionEffect的区别

React钩子函数在React开发中扮演着非常重要的角色。其中&#xff0c;useEffect、useLayoutEffect和useInsertionEffect是三个常用的钩子函数&#xff0c;它们的作用虽然有些相似&#xff0c;但是也存在一些区别。在本文中&#xff0c;我们将详细介绍这三个钩子函数的区别&#…...

Unity——后期处理举例

Post Processing&#xff08;后期处理&#xff09;并不属于特效&#xff0c;但现代的特效表现离不开后期处理的支持。本文以眩光&#xff08;Bloom&#xff09;为例&#xff0c;展示一种明亮的激光的制作方法 1、安装后期处理扩展包 较新的Unity版本已经内置了新版的后期处理扩…...

PMP P-05 Quality Management

质量管理...

vue中css修改滚动条样式

vue中css修改滚动条样式 效果图&#xff1a; 代码(在app.vue中全局增加下面样式即可)&#xff1a; &::-webkit-scrollbar {width: 8px;height: 8px;border-radius: 3px;}/*定义滚动条轨道 内阴影圆角*/&::-webkit-scrollbar-track {//-webkit-box-shadow: inset 0 0 …...

uniapp的H5实现图片长按保存

实现图片预览 使用uniapp的api实现图片预览&#xff0c;可以缩放&#xff0c;关闭等操作 uni.previewImage({urls:[imageUrl],success:()>{this.controllTouch();} }) imageUrl是图片地址&#xff0c;如https://www.111.com/abc/image.png urls是字符串数组&#xff0c;…...

Java 8:Stream API 流式操作(学习)

Java 8&#xff1a;Stream API Java 8 中的 Stream API 是一组用于对集合数据进行处理的新特性&#xff1b;提供一种以声明式风格对集合进行操作的方式&#xff0c;简化集合的处理&#xff0c;使得代码更加简洁、优雅&#xff0c;并且能够更高效地处理数据&#xff1b; 这种风格…...

04_20 直接使用代码 创建内核模块获取物理内存信息

好像和 free得出来有关 和/proc/meminfo 有关 但是下面是全部的物理页 #include <linux/version.h> #include <linux/module.h> #include <linux/init.h> #include <linux/mm.h>//下面宏表示物理内存空间起始地址 对应页帧号 #define ARCH_PFN_OFFSET…...

<C++> STL_list

1.list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。list与…...

聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化

聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化 目录 聚类分析 | MATLAB实现基于FCM模糊C均值聚类结果可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 FCM模糊C均值聚类&#xff0c;聚类结果可视化&#xff0c;MATLAB程序。 FCM&#xff08;Fuzzy C-Means&a…...

C++笔记之设计模式:setter函数、依赖注入

C笔记之设计模式&#xff1a;setter函数、依赖注入 参考笔记&#xff1a; 1.C笔记之静态成员函数可以在类外部访问私有构造函数吗&#xff1f; 2.C笔记之设计模式&#xff1a;setter函数、依赖注入 3.C笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究…...

Spring MVC详解

文章目录 一、SpringMVC1.1 引言1.2 MVC架构1.2.1 概念1.2.2 好处 二、开发流程2.1 导入依赖2.2 配置核心(前端)控制器2.3 后端控制器2.4 配置文件2.5 访问 三、接收请求参数3.1 基本类型参数3.2 实体收参【重点】3.3 数组收参3.4 集合收参 【了解】3.5 路径参数3.6 中文乱码 四…...

谷歌公开.zip域名,应采取哪些措施应对可能的安全风险?

近期&#xff0c;谷歌发布了几个新的顶级域名&#xff0c;这些新域名包括.dad、.esq、.prof、.phd、.nexus、.foo、.mov以及本文我们将要提到的.zip域名。自发布以来&#xff0c;多个安全社区都开始讨论这些顶级域名所带来的影响&#xff0c;主要原因是.zip很容易被误认为是文件…...

css3滤镜属性filter让网页变黑白

今天是特殊的日子&#xff0c;抗击疫情全国哀悼日&#xff0c;向英雄们致敬&#xff0c;一路走好&#xff01;应该发现了今天很多网站页面都是黑白色的&#xff0c;我的博客今天都是黑白色&#xff0c;用css3滤镜属性filter让网页马上变黑白&#xff0c;一行代码就搞定。 在你…...

C++教程 - How to C++系列专栏第5篇

关于专栏 这个专栏是优质的C教程专栏&#xff0c;如果你还没看过第0篇&#xff0c;点击这里去第0篇 本专栏一致使用操作系统&#xff1a;macOS Ventura&#xff0c;代码编辑器&#xff1a;CLion&#xff0c;C编译器&#xff1a;Clang 感谢一路相伴的朋友们&#xff0c;感谢你…...

Vue2向Vue3过度核心技术插槽

目录 1 插槽-默认插槽1.作用2.需求3.问题4.插槽的基本语法5.代码示例6.总结 2 插槽-后备内容&#xff08;默认值&#xff09;1.问题2.插槽的后备内容3.语法4.效果5.代码示例 3 插槽-具名插槽1.需求2.具名插槽语法3.v-slot的简写4.总结 4 作用域插槽1.插槽分类2.作用3.场景4.使用…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...