46、lvs集群- 博客

1、lvs集群:

  • lvs:linux virtual server----章文嵩发起的开源项目,阿里。linux的内核层面实现负载均衡的软件。

  • 主要作用:将多个后端服务器组成一个高可用,高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上,来实现高可用和负载均衡。

  • 阿里的SLB:server load balance----lvm+keepalive实现的。

2、集群和分布式:

2.1、系统的拓展方式:

  • 垂直扩展:向上扩展,增强,性能更强的计算机。瓶颈,计算机本身设备的限制,硬件本身的性能瓶颈。

  • 水平扩展向外扩展,增加设备。并行的运行多个服务,依靠网络解决内部通信问题,cluster 集群。

  • 集群:为了解决某个特定的问题将计算机组合起来形成的单个系统。

2.2、集群的类型,三种类型:

1、LB:load balance负载均衡,多个主机组成,每个主机只承担一部分的访问请求。

2、HA:high availiablity高可用,在设计系统时,采取一定的措施,确保系统当中某一组件或者部分出现故障,整个系统依然能够正常运行。为了维护系统的可用性,可靠性,容错性。

3、HPC:high-performance computing 高性能 对响应时间,处理能力要求更高。

2.3、系统可靠性指标:

MTBF:Mean time Between Failure 平均无故障时间

MTTR:Mean time Resotration repair 平均故障恢复时间

A=MTBF/(MTBF+MTTR)

0-1

A指标0-1之间,A指标就是系统可用性的度量,0表示系统越不可用,1表示系统越可以用。

A指标要无线接近于1.

99.99%

都是以小时为单位

1年365天=8760小时
90(1-90%)*365=36.5天99 8760**1%=87.6小时
99.9999=31秒
99.99%=======52.6分钟

停机时间:计划内时间,计划内的时间开以忽略不计。但是现在也算在内。

计划外时间,故障时间,从故障发生到故障解决的总时间,尤其是运维,计划外时间是我们必须关注的一个指标。

某某-----当天事必须当天解决----没有解决之间,人是不可用离开的-------解决完之后必须生成报告,备案。

日报,周报,月报,年报。

运维精神:7*24小时待命(及时响应,及时处理,及时总结。)

2.4、lvs适用场景:

  • 小集群不需要使用lvs,大集群使用lvs。

  • lvs集群中的术语

  • VS: virtual server:lvs服务的逻辑名称,也就是我们外部访问lvs集群时使用的ip地址和端口。

  • DS: Director Server :lvs集群中的主服务器,也就是调度器(nginx的代理服务器)是集群的核心

  • 调度服务器就是用来接收客户端的请求转发到后端的服务器。

  • RS: Real Server:lvs集群中的真实服务器,后端服务器,用来接收DS转发来的请求,并响应结果。

  • CIP:Client ip :客户端的地址,发起请求的客户端地址。

  • VIP:virtual Ip :lvs集群使用的ip地址,对外提供集群访问的虚拟ip地址。

  • DIP:Director ip :调度器在集群中的地址,用于和RS通信。

  • RIP:Real ip :后端服务器在集群当中的ip地址。

在这里插入图片描述

2.5、lvs的工作模式:

  • NAT模式:由调度器响应给客户端

  • DR模式:直接路由模式,真实服务器直接响应给客户端

  • TUN:隧道模式----电信公司DNS提供

  • 常用的模式:NATDR模式

2.5.1、NAT模式

nat模式是常用的lvs的模式之一。

在nat模式下,lvs会将来自客户端的请求报文中的目标ip地址和端口,修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器。

在这里插入图片描述

响应结果返回客户端的过程中,响应报文经过lvs的处理,把目标ip和端口修改成客户端的ip地址和端口。

好处:在于,对于客户端来说,请求的目标地址始终不变,客户端的配置不需要做特殊的修改,只需调度器再对ip和端口进行转换,后端的服务端也不需要更改任何配置。

缺点:性能损失,请求和响应都需要调度器做地址转换,影响性能,nat模式只要有一个调度器,调度器故障,整个集群就不能正常工作。

地址转换:

内网----外网 转换的源ip地址 snat

外网----内网 转换的目的ip地址 nat

1、客户端发起请求,访问vip地址,到达调度器

2、调度器接收到请求之后,根据负载均衡算法选一个后端服务器。

3、请求的地址,转成可以直接和内部RS通信的IP地址。

4、后端服务器处理请求。

5、目的的地址转换,转换vip地址

6、调度器的vip地址响应给客户端

在这里插入图片描述

外网到内网–12.0.0.10-----12.0.0.1------192.168.168.10

内网到外网–192.168.168.0/24-----12.0.0.1-----12.0.0.10----需要地址转换

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

2.6、lvs的工具

2.6.1、ipvsadm 工具,用来配置和管理lvs集群的工具。

  • -A 添加虚拟服务器 vip

  • -D 删除虚拟服务器地址

  • -s指定负载均衡的调度算法

  • -a 添加真实服务器

  • -d 删除真实服务器

  • -t 指定vip的地址和端口

  • -r 指定rip的地址和端口

  • -m使用nat模式

  • -g 使用DR模式

  • -i 使用隧道模式

  • -w 设置权重

  • -p 60:连接保持60设置保持时间

  • -l:列表查看

  • -n:数字化展示

  • -m指定模式为nat模式

2.6.2、算法

  • rr默认,轮询

  • 加权轮询:wrr

  • 最小连接:lr

  • 加权最小连接:wlc

2.6.3、操作

ipvsadm -C—#清空原有的策略

ipvsadm -A -t 12.0.0.1:80 -s rr------#指定好的vip的地址和端口

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m—#先添加vip,虚拟服务器的ip和端口,然后再添加真实服务器

ipvsadm -D -t 192.168.168.50:80----#删除策略

ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80----###删除节点服务器

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0     

开启路由转发:

vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1

3、NAT集群实验

3.1、rr配置

在这里插入图片描述

nginx1 :192.168.168.10

nginx2:192.168.168.20

test5:调度器 ens33:192.168.168.50 ens36 :12.0.0.1

test6 客户端12.0.0.10

test5:

安装ipvsadm工具

yum -y install ipvsadm* -y

添加网卡

[root@test5 network-scripts]# cp ifcfg-ens33 ifcfg-ens36

vim ifcfg-ens33TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.50
NETMASK=255.255.255.0 
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
vim ifcfg-ens36TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.1
NETMASK=255.255.255.0
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69

systemctl restart network

在这里插入图片描述

nginx1修改网卡中的网关指向调度器的ip(即网关)

TYPE=Ethernet 
DEVICE=ens33 
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.10
NETMASK=255.255.255.0
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx1

nginx2修改网卡中的网关指向调度器的ip(即网关)

TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.20
NETMASK=255.255.255.0 
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx2

test5配置:

内网到外网—出去做地址转换

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

ipvsadm -C—#清空原有的策略

ipvsadm -A -t 12.0.0.1:80 -s rr-----指定好的vip的地址和端口

先添加vip,虚拟服务器的ip和端口,然后再添加真实服务器:

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m

-a 添加真实服务器

-t 指定vip地址

-r 指定真实服务器的地址和端口

-m指定模式为nat模式

ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0  [root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# 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.168.50:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0    

在这里插入图片描述

删除策略

ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

重新保存

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0         
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0 

删除节点服务器

ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0     

开启路由转发:

vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1

简单的全部完成。

test6:

在这里插入图片描述

需要改网关和ip地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33     ##更改网关指向路由TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.10
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
DNS1=218.2.135.1
DNS2=221.131.143.69 

在这里插入图片描述

外网到内网–12.0.0.10-----12.0.0.1------192.168.168.10

net.ipv4.ip_forward=1,可以进行转发

内网到外网192.168.168.10-----12.0.0.1-------12.0.0.10

做地址转换进行访问

3.2、wrr加权算法

第二个,删除rr算法,

ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 rr-> 192.168.168.10:80            Masq    1      0          0         -> 192.168.168.20:80            Masq    1      0          0         
[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

添加wrr权重算法

[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wrr
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 2
[root@test5 opt]# ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80 
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr-> 192.168.168.10:80            Masq    2      0          0         
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wrr-> 192.168.168.10:80            Masq    2      0          0         -> 192.168.168.20:80            Masq    1      0          0    

测试结果
在这里插入图片描述

3.3、设置wlc最小连接数加权算法

[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wlc
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wlc
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  12.0.0.1:80 wlc-> 192.168.168.10:80            Masq    2      0          0         -> 192.168.168.20:80            Masq    1      0          0  

创建vip地址的时候才能指定负载均衡算法,不是在真实服务器上添加算法。

test5做地址转换:

iptables -t nat -vnL ----查看nat地址转换策略表

iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1

ipvsadm -a-t 12.0.0.1:80-r192.168.233.61:80 -m

-a 添加真实服务器

-t 指定vip地址

3.4、增加理解

在探讨外网访问内网与内网访问外网时,是否需要开启转发功能或地址转换,我们首先要明确几个基本概念和它们在网络通信中的作用。### 外网访问内网,开启转发功能,不需要地址转换当外网需要访问内网时,通常涉及到的是网络访问控制和路由策略。在某些情况下,如使用VPN(虚拟私人网络)或端口转发等技术,可以实现外网直接访问内网资源,而无需进行地址转换。这是因为VPN等技术可以在不暴露内网实际IP地址的情况下,为外网用户提供一条安全的通道来访问内网资源。同样,端口转发可以将外网对特定端口的访问请求转发到内网中的特定设备或服务上,而无需改变IP地址。### 内网访问外网,为什么需要地址转换1. 内网与公网的隔离:- 内网通常是指被NAT(网络地址转换)隔离起来的私有地址空间,这些地址在Internet上是不可见的,也无法被直接路由。- 公网则是指全球互联网上分配的全局IP地址空间,任何设备只要具有公网IP地址,就可以被Internet上的其他设备访问。
2. IP地址的稀缺性:- 由于IPv4地址的稀缺性,不可能为每个内网设备分配一个独立的公网IP地址。因此,需要通过NAT技术将内网设备的私有IP地址转换为公网IP地址,以实现与外部网络的通信。
3. 安全性和隐私性:- NAT技术还可以在一定程度上提供安全性和隐私保护。通过隐藏内网设备的真实IP地址,可以防止外部网络对内网设备的直接攻击和扫描。
4. 通信的必要性:- 内网中的设备,如企业内部的服务器或终端用户,有时需要访问外部网络或互联网上的资源。为了实现这种访问,必须进行地址转换,以便将内网设备的私有IP地址转换为公网IP地址,从而通过Internet进行通信。综上所述,内网访问外网需要地址转换的原因主要是由于内网与公网的隔离、IP地址的稀缺性、安全性需求以及通信的必要性。NAT技术通过在内网出口设备上部署,实现了内网设备私有IP地址到公网IP地址的转换,从而解决了内网设备访问外部网络的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于cmake为项目自动获取git分支tag的版本号和commitid

目录 1. 引言2. 实现过程2.1 工程目录规划2.2 c程序文件2.3 CMakeLists.txt2.4 GitVersion.cmake文件2.5 BuildNumber.cmake文件1. 引言 在项目构建的时候,我们经常会希望能够将git提交的分支信息和提交号(commitid)以及当前版本发布的tag信息作为版本号自动构建到程序里面,以…

自建搜索引擎-基于美丽云

Meilisearch 是一个搜索引擎,主程序完全开源,除了使用官方提供的美丽云服务(收费)进行对接之外,还可以通过自建搜索引擎来实现完全独立的搜索服务。 由于成本问题,本博客采用自建的方式,本文就…

通过git将文件push到github 远程仓库

1.先git clone 代码地址 git clone htttp://github.com/用户名/test.git 2. 添加文件 例如:touch 1.txt 3.将文件添加到暂存区 git add 1.txt 4.提交 git commit -m "commit 1.txt" 5.与远程仓库建立关联 git remote add 远程仓库名 远程仓库…

LLM 研究方向(一): LLM Prompts--p-tuning、LoRA

目录 1. prompt-tuning background 2. Prompt Tuning 模型介绍 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ​2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…

详解[USACO07OPEN] Cheapest Palindrome G(洛谷PP2890)(区间DP经典题)

题目 思路 考虑区间DP。 设dp[i][j]为从i到j这段区间被修正为回文串的最小花费 c[cc][1]为添加字符cc的花费 c[cc][2]为删去字符cc的花费 s为题目给出的字符串。 用[i 1,j]区间转移:这种转移相当于在[i1,j]区间的左边加入一个字符,让[i,j]变为回文的方…

云仓适合什么商家?

1、电商平台和网店: 对于拥有大量在线订单但没有自建仓储和物流能力的小型和中型电商企业,云仓可以在成本和效率上提供显著优势,帮助快速处理订单并缩短配送时间。 —————————————————————————————————— …

【独家揭秘】视频号矩阵系统火爆上线,一键式多平台管理,你的内容营销神器!

在信息爆炸的时代,内容创作者们面临着前所未有的挑战与机遇。如何让自己的内容在众多平台中脱颖而出,快速传播并吸引大量观众,成为了每个创作者关注的焦点。近日,一款名为“迅狐视频号矩阵系统”的神器震撼来袭,它以其…

UV胶,它是否有毒?如同那些隐藏在黑暗中的危险之物?

UV胶,它是否有毒?如同那些隐藏在黑暗中的危险之物? 关于uv胶的毒性问题,或许我们可以这样深入探讨。UV胶,如同一位戴着神秘面纱的访客,在我们的生活中悄然出现,却带着诸多疑问。那么&#xff0…

二维码生成需知:名片二维码尺寸多少合适?电子名片二维码制作方法?

随着数字化时代的到来,二维码在各个领域的应用越来越广泛,名片作为商业交流的重要工具之一,也开始逐渐融入二维码的元素。通过在名片上添加二维码,我们可以轻松实现信息的快速传递和分享。然而,名片二维码的尺寸选择成…

Monorepo仓库管理策略之 Lerna

这里写目录标题 前言:一、简介二、新建项目使用安装生成结构 三、复用现有项目执行命令查看包 四、配置package相互引用导入现有的包 五、发布包确定项目版本发布项目添加项目到到git发布包到NPM包发布出错解决方案 五、实例代码 前言: 将大型代码仓库分…

文心一言的流式接口数据进行处理 增加属性

需求:需要对文心一言的流式接口数据进行处理 增加属性 return ResponseEntity.ok().header("Access-Control-Allow-Origin", "*").contentType(org.springframework.http.MediaType.TEXT_EVENT_STREAM).cacheControl(org.springframework.http…

python调用串口收发数据

1、确认串口信息 2、安装pyserial库 打开终端或命令行,敲入这行命令:pip install pyserial 3、python编程 import serial def main(): #创建串口对象 ser serial.Serial(COM4, 9600, timeout1) if not ser.isOpen(): print("串…

飞睿智能6公里WiFi图传接收模块,低延迟、抗干扰、高速稳定传输数据,无人机、农田远距离WiFi模块

在科技日新月异的今天,无线通信技术正以前所未有的速度发展,不仅改变了我们的生活方式,还为企业带来了前所未有的商业机遇。今天,我要向大家介绍一款飞睿智能的产品——6公里WiFi图传接收模块,它以其高性能、稳定的传输…

【React】基础数据回填--useForm与setFieldsValue详解

相关属性 1.form 2.setFieldsValue 代码 import{Form }from"antd";const Publish =

体积大的快递怎么寄便宜?如何寄件寄包裹更省钱?

大学毕业了,面对即将到来的工作生活,小李不得不把宿舍里的大包小包打包寄回家。可是,当他真正开始打包行李时,才发现这可不是一件简单的事:衣服、被子、书籍、杂物……这些东西加起来体积不小,想要省钱寄快…

基于stm32单片机的智能手环的设计

摘 要 随着科技的飞速发展和人们生活水平的提高,健康与科技日益融合,智能可穿戴设备已成为现代人生活中不可或缺的一部分。智能手环,作为一种便携、实用且功能丰富的可穿戴设备,受到越来越多用户的喜爱。它不仅能够实时监测用户的…

特殊的“user profile service服务登录失”情况

记录一下比较特殊的user profile service服务登录失败情况 公司电脑,某次之后每次来公司电脑开机后就会出现这个情况,后来发现只要是关机后再开机百分百出现,重启就不会,一开始也百度、google了,网上有很多解决方式&am…

DropNotch for Mac v1.0.1 在 Mac 刘海快速使用 AirDrop

应用介绍 DropNotch 是一款专为Mac设计的应用程序,可以将MacBook的凹口区域(刘海)转换为文件放置区。 功能特点 文件共享: 用户可以将文件拖放到MacBook的凹口区域,并通过AirDrop、邮件、消息等方式轻松共享。多显示器支持: 即…

.Net C#执行JavaScript脚本

文章目录 前言一、安装二、执行 JavaScript 脚本三、与脚本交互四、JS 调用 C# 方法五、多线程使用总结 前言 ClearScript 是一个 .NET 平台下的开源库,用于在 C# 和其他 .NET 语言中执行脚本代码。它提供了一种方便和安全的方法来将脚本与应用程序集成,…

PHP酒店宾馆民宿多商户版系统小程序源码

解锁酒店新境界!揭秘多商户版系统的无限可能🏨✨ 🚀 开篇:酒店业的新革命,多商户版系统来袭! 你是否梦想过将你的酒店打造成一个集餐饮、娱乐、购物于一体的综合型休闲空间?现在,这…