均衡负载集群(LBC)-1
均衡负载集群(LBC)
客户–>通过Internet—>负载调度器—>n台真实服务器
负载调度器:
- 软件:LVS;Nginx;Haproxy
- 硬件:F5;
LVS架构:
- 使用到C/S(B/S)架构
Nginx的负载均衡:
- 只能使用在B/S架构上
LVS的工作层级
- 用户:ipvsadm–>命令行管理工具
- 内核:ipvs
1、LVS概述
LVS相关原理
- LVS的组成
- IPVS:运行内核空间
- IPVSADM:运行在用户空间,管理集群服务器的命令工具
- LVS原理:根据用户请求的套接字判断,分流至真实服务器的工作模块
LVS工作方式:
- 工作模式:
- NAT模式
- TUN模式
- DR模式
- GitHub–>正在开发;
实验主机的配置
- 规划:
- 负载调度器:192.168.75.10
- 后端服务器:192.168.75.11/12
- 服务器配置要求:
- 系统:centos6.x都可以
- 网卡:双网卡
- eth0:充当外网:192.168.75.0/24
- eth1:充当内网:172.24.254.0/24
- 备注:这个是是实验的预配置
构建一台主机node0–>然后复制出来5台用于后面的实验
#修改一下主机名-->永久修改
[root@node0 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node0
#修改一下主机名
[root@node0 ~]# hostname LVS-SERVER
[root@node0 ~]# su -
#关闭一下NetworkManager-->关闭网卡的守护进程
#关闭一下网卡的守护进程-->Centos6.8需要关闭;我的实验环境是没有的;使用的是Centos6.4
[root@LVS-SERVER ~]# service NetworkManager stop#配置网卡公网ip
[root@LVS-SERVER ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.10
NETMASK=255.255.255.0
GATEWAY=192.168.75.2
#配置内网ip
[root@LVS-SERVER ~]# cd /etc/sysconfig/network-scripts/
[root@LVS-SERVER network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
[root@LVS-SERVER network-scripts]# vim ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.254.10
NETMASK=255.255.255.0
#重启网络
[root@LVS-SERVER network-scripts]# service network restart#配置光盘yum源
[root@LVS-SERVER network-scripts]# cd /etc/yum.repos.d/
[root@LVS-SERVER yum.repos.d]# vim local.repo
[local]
name=local_repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#配置自动开机挂载光盘
[root@node0 ~]# vim /etc/fstab
...........#在末行添加以下内容
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0#关闭iptables和selinux
[root@node0 ~]# service iptables stop
[root@node0 ~]# chkconfig iptables off
[root@node0 ~]# getenforce
Disabled#关闭对应的ARP响应以及公告功能--->这个是可选选--->先把它所有的写进内核;#需要的时候打开
[root@node0 ~]# vim /etc/sysctl.conf
..............#在末行添加如下几行
#关闭ARP功能
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2_
#net.ipv4.conf.default.arp_ignore = 1
#net.ipv4.conf.default.arp_announce = 2
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2#使用命令重新读取
[root@node0 ~]# sysctl -p
2、LVS-DR模式
工作逻辑图
客户–>与后端、LVS都处于同一个网段当中;
用户–>访问LVS服务器–>找后端服务器
二层MAC地址转发–>同一个IP被后端服务器隐藏了;
模式的特点:
- 集群节点:必须在一个网络当中,集群节点必须处于同一个广播域中
- 真实服务器网关指向路由器
- RIP既可以是私网地址,又可以是公网IP
- 负载调度器只负责入站请求,压力是最小的;
- 大大减轻负载调度器的压力,支持更多的服务器节点
- 不能支持端口映射
ARP的响应级别
- arp-ignore
- 0:只要本机配置有相应的IP地址就有响应
- 1:仅在请求的目标地址配置在请求到达的网络接口上时,才给与响应
ARP的通告行为
- arp-announce
- 0:将本机任何网络接口上的任何地址都向外通告
- 1:尽可能避免像目标网络通告与其网络不匹配的地址信息表
- 2:仅向目标网络通告与其网络相匹配的地址信息
LVS-DR模式实验
- 负载调度器配置如下—>使用是的centos7.x
- 服务器:192.168.75.130
#首先关闭一下网卡的守护进程
[root@node0 ~]# systemctl stop NetworkManager
[root@node0 ~]# systemctl disable NetworkManager#创建一个eth0:0用来充当集群入口接口
[root@node0 ~]# cd /etc/sysconfig/network-scripts/
[root@node0 network-scripts]# cp ifcfg-ens32 ifcfg-ens32:0#配置一个虚拟ip
[root@node0 network-scripts]# vim ifcfg-ens32:0
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens32:0" #注意修改网卡名
DEVICE="ens32:0"
ONBOOT="yes"
IPADDR="192.168.75.100" #这个就是虚拟ip-->自己随便创建的
PREFIX="24"#然后把子接口拉起来
[root@node0 network-scripts]# ifup ens32:0#关闭网卡重定向功能
[root@node0 network-scripts]# cd
[root@node0 ~]# vim /etc/sysctl.conf
............#在末行添加如下内容够
#关闭网卡重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0#刷新配置文件
[root@node0 ~]# sysctl -p#重载ipvs模块
[root@node0 ~]# modprobe ip_vs#安装ipvsadmin命令行工具
[root@node0 ~]# yum -y install ipvsadm
- 后端服务器配置—>这里使用两台服务器–>两台服务器的配置完全是一样的
- 192.168.75.131/132
- 两台服务器分别是安装httpd
- 创建一个页面用于实验区分
#关闭一下网卡的守护进程
[root@Node1 ~]# systemctl stop NetworkManager
[root@Node1 ~]# systemctl disable NetworkManager#配置一个环回口
[root@Node1 ~]# cd /etc/sysconfig/network-scripts/
[root@Node1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@Node1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.75.100 #配置虚拟IP-->这个ip和调度服务器的ip是一样的
NETMASK=255.255.255.255 #广播全部是255
...............
#拉起来网卡lo:0
[root@Node1 ~]# systemctl restart network#调整一下内核参数
[root@Node1 network-scripts]# cd
[root@Node1 ~]# vim /etc/sysctl.conf
..........
#关闭ARP功能
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2_
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 3#重新读取一下
[root@Node1 ~]# sysctl -p
#添加一个路由-->#如果有人来访问这个ip就把它丢给lo:0网卡
[root@node2 ~]# route add -host 192.168.75.100 dev lo:0#然后配置开机自启
[root@node2 ~]# echo "route add -host 192.168.75.100 dev lo:0" >> /etc/rc.local #安装一下httpd
[root@Node1 ~]# yum -y install httpd#启动httpd
[root@Node1 ~]# systemctl start httpd.service
[root@Node1 ~]# systemctl enable httpd.service #修改默认页面
[root@Node1 ~]# vim /var/www/html/index.html
this is node1-131#测试一下是否能够访问
[root@Node1 ~]# curl localhost
this is node1-131
- 最后回到调度服务器node0配置
- 192.168.75.130
- 开始创建lvs集群
#查看一下当前集群内容--->还没有创建,因此没有任何集群信息
[root@node0 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)#添加一下集群
-->-A是添加一个集群
-->-t是指定一个虚拟ip以及端口
-->-s:指定轮询模式为rr
[root@node0 ~]# ipvsadm -A -t 192.168.75.100:80 -s rr #添加集群子节点
-->-a:添加子节点
-->-r:指定子节点的真实ip以及端口
-->-g:指定了是DR模式
[root@node0 ~]# ipvsadm -a -t 192.168.75.100:80 -r 192.168.75.131:80 -g#查看一下集群的信息
[root@node0 ~]# 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.75.100:80 rr-> 192.168.75.131:80 Route 1 0 0 -> 192.168.75.132:80 Route 1 0 0 [root@node0 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes-> RemoteAddress:Port
TCP 192.168.75.100:80 2 33 0 6972 0-> 192.168.75.131:80 1 6 0 360 0-> 192.168.75.132:80 1 27 0 6612 0
测试一下
http://192.168.75.100/
3、LVS-NAT模式
工作逻辑图:
用户—>访问LVS服务器
- 源是自己,目的是LVS
LVS—>访问后端服务器
- LVS–>通过DNAT–>把目的地址修改成后端服务器
- 后端返回–>也是通过SNAT–>给到LVS–>然后再给到用户;
DNAT:目的地址转换
SNAT:源地址转换;
NAT模式的特点:
- 集群节点,必须在一个网络中
- 真实服务器必须将网关指向负载调度器
- RIP 通常都是私有 P,仅用于各个集群节点通信
- 负载调度器必须位于客户端和真实服务器之间,充当网关
- 支持端口映射
- 负载调度器操作系统必须是 Linux,真实服务器可以使用任意系统
- 进出数据报文都要进过负载调度器机器,压力较大
实验架构图:
客户端--->路由器--->后端服务器
实验环境的构建:
-
负载调度器:192.168.75.110
-
后端服务器:192.168.75.130
- 网络类型:仅主机模式:172.25.254.130;
- 虚拟机硬件配置:
- 硬件:2U–>CPU
- 内存:2G
- 网卡两张–>不同网段
- 192.168.75.0/24–>充当公网
- 172.25.254.0/24–>充当私网
- 虚拟机软件配置:
-
后端服务器:192.168.75.131
LVS负载调度器配置
- LVS负载调度服务器:Centos6.x
- 双网卡:192.168.75.110–>充当外网
- 172.25.254.110–>充当内网和两台后端服务器130和131互通
#关闭selinux和防火墙
[root@localhost ~]# getenforce
Disabled[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off#关闭一下网卡的守护进程-->Centos6.8需要关闭;我的实验环境是没有的;使用的是Centos6.4
[root@localhost ~]# service NetworkManager stop#配置光盘yum源
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[local]
name=local_repo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#挂载yum源
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/#配置网络-->#公网网络-->如下
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.75.110
NETMASK=255.255.255.0#私网网络如下-->eth1是使用ip a s 可以看出内核识别的网卡名;直接复制出来修改ip
[root@localhost network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
[root@localhost network-scripts]# vim ifcfg-eth1
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.254.110
NETMASK=255.255.255.0#重启网络
[root@localhost network-scripts]# service network restart#关闭网卡的重定向功能
[root@localhost network-scripts]# vim /etc/sysctl.conf #在文件的末行添加
#关闭网卡重定向
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0#开启路由转发功能
[root@localhost ~]# vim /etc/sysctl.conf
..........7 net.ipv4.ip_forward = 1
........#查看一下配置是否生效
[root@localhost network-scripts]# sysctl -p#重新挂载ipvs模块
[root@localhost network-scripts]# modprobe ip_vs
#安装ipvsadm命令行工具
[root@localhost network-scripts]# yum -y install ipvsadm#查看当前的ipvs集群内容
[root@localhost network-scripts]# ipvsadm -v#然后开启防火墙
[root@localhost ~]# service iptables start#一定要先清楚一下防火墙规则-->然后在设置防火墙规则
[root@localhost ~]# iptables -F#设置防火墙规则#添加防火墙规则:当源地址是内网网段,并且出口网卡为eth0的时候,进行SNAT转换,转换源地址为外网网卡地址
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 172.25.254.0/24 -o eth0 -j SNAT --to-source 192.168.75.110#查看规则是否生效
[root@localhost ~]# iptables -t nat -L
.........#看到这一行代表成功
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 172.25.254.0/24 anywhere to:192.168.75.110 #添加集群-->添加ipvsadm的TCP集群-->指定规则是轮询
[root@localhost ~]# ipvsadm -A -t 192.168.75.110:80 -s rr#为集群添加节点-->-m指定的是LVS的nat模式
[root@localhost ~]# ipvsadm -a -t 192.168.75.110:80 -r 172.25.254.130:80 -m
[root@localhost ~]# ipvsadm -a -t 192.168.75.110:80 -r 172.25.254.131:80 -m#查看一下集群内容
[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.75.110:80 rr-> 172.25.254.130:80 Masq 1 0 0 -> 172.25.254.131:80 Masq 1 0 0 #把集群保存到配置文件,开启持久化
[root@localhost ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]#设置开机自启动
[root@localhost ~]# chkconfig ipvsadm on
后端服务器131/132配置
- 安装httpd
- 注意网段是172.25.254.0/24
- 注意添加网关地址:
#查看一下ip
[root@Node1 ~]# ip a
.........
inet 172.25.254.131/24 brd 172.25.254.255 scope global noprefixroute ens32
........#安装httpd
[root@Node1 ~]# yum -y install httpd#修改默认页面
[root@Node1 ~]# vim /var/www/html/index.html
this is 131.index#启动apaceh
[root@Node1 ~]# systemctl start httpd
[root@Node1 ~]# curl localhost
this is 131.index#把网关指定到调度服务器ip
[root@Node1 ~]# route add default gw 172.25.254.110
[root@Node1 ~]# route -n
最后浏览器访问–>到这里位置实验成功
http://192.168.75.110/
4、LVS-TUN模式
工作逻辑图:
客户端、LVS、后端–>大家都是公网地址
客户–>访问LVS—>
数据包的二次封装;
模式的特点
- 集群节点不必位于同一个物理网络但必须都拥有公网 IP (或都可以被路由)
- 真实服务器不能将网管指向负载调度器
- RIP 必须是公网地址
- 负载调度器只负责入站请求
- 不支持端口映射功能
- 发送方和接收方必须支持道功能
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
均衡负载集群(LBC)-1
均衡负载集群(LBC) 客户–>通过Internet—>负载调度器—>n台真实服务器 负载调度器: 软件:LVS;Nginx;Haproxy硬件:F5; LVS架构: 使用到C/S(B/S…...
![](https://img-blog.csdnimg.cn/78d9136e2a7d4213aafa648ae8f8450b.png)
WebSocket
关于WebSocket: WebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。 WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话…...
![](https://img-blog.csdnimg.cn/4fd4a77263234421bcc874d6eb9a7f47.png)
GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应
英文名称:Glutaric Acid-PEG-Glutaric Acid,GA-PEG-GA 中文名称:戊二酸-聚乙二醇-戊二酸 GA-PEG-GA是一种线性双功能PEG羧酸试剂。PEG和羧基COOH之间存在C4酯键。PEG羧酸可用于与氨基反应,与NHS和DCC、EDC等肽偶联试剂反应。 P…...
![](https://img-blog.csdnimg.cn/097ead65692d4dccbb7e7e31df54f602.png#pic_center)
使用sqlmap + burpsuite sql工具注入拿flag
使用sqlmap burpsuite sql工具注入拿flag 记录一下自己重新开始学习web安全之路③。 目标网站:http://mashang.eicp.vip:1651/7WOY59OBj74nTwKzs3aftsh1MDELK2cG/ 首先判断网站是否存在SQL注入漏洞 1.找交互点 发现只有url这一个交互点,搜索框和登录…...
![](https://img-blog.csdnimg.cn/56afefb1a5ca43f986dc2fb159df268c.png)
替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案
替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案 CS5260是一款是一款实现USB TYPE-C到VGA视频转换的单片机解决方案转换器。CS5260支持USB Type-C显示端口交替模式,CS5260可以将视频和音频流从USB Type-C接口传输到VGA端口。在CS5260芯片中,显示…...
![](https://img-blog.csdnimg.cn/img_convert/ab781e763a55b53c836365e0ab390762.jpeg)
乐鑫特权隔离机制的 OTA 固件升级
固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一,支持开发人员通过远程更新固件,以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序:受保护的应用程序 (protected_app) 和用户应用程序 (user_app) ,这…...
![](https://img-blog.csdnimg.cn/0c9b88ad4fa14c1fb1d8ddaada441b4e.png)
C++数据结构 —— 二叉搜索树
目录 1.二叉搜索树的基本概念 1.1二叉搜索树的基本特征 2.二叉搜索树的实现 2.1数据的插入(迭代实现) 2.2数据的搜索(迭代实现) 2.3中序遍历(递归实现) 2.4数据的删除(迭代实现) 2.5数据的搜索(递归实现) 2.6数据的插入(递归实现) 2.7数据的删除(递归实现) 2.8类的完…...
![](https://www.ngui.cc/images/no-images.jpg)
Maven面试题及答案
1、Maven有哪些优点和缺点 优点: 1、简化项目依赖管理 2、方便与持续集成工具(Jenkins)整合 3、有助于多模块项目开发,比如一个模块开发好后发布到仓库,依赖该模块时可以直接从远程仓库更新,不用自己手动去编译 4、有很多插件&am…...
![](https://www.ngui.cc/images/no-images.jpg)
WebRTC系列-Qos系列之接收放RTX处理
文章目录 1. RTX详解1.1 RTX包头解析1.2 RTX包中的OSN2. RTX在WebRTC中处理2.1 组包2.2 解包2.3 发送及接收处理流程2.3.1 发送流程2.3.2 rtx标记的设置流程2.3.3 解析流程2.3.4 RTX解包在上一篇 WebRTC系列-Qos系列之接收NACK文章中分析了接收到nack后解析的主要流程。在WebR…...
![](https://www.ngui.cc/images/no-images.jpg)
国内能否炒伦敦金,2023国际十大正规伦敦金交易平台排名
在目前的投资市场环境中,现货黄金是一种屡见不鲜的投资选择,它依靠国际化的投资环境,成为了世界范围内投资者的重要选择对象。进行现货黄金投资,人们除了要认识市场发展基本现状之外,更要做好基本面和技术面分析工作&a…...
![](https://www.ngui.cc/images/no-images.jpg)
react路由 - react-router-dom
react路由 现代的前端应用大多都是 SPA(单页应用程序),也就是只有一个 HTML 页面的应用程序。因为它的用户体验更好、对服务器的压力更小,所以更受欢迎。为了有效的使用单个页面来管理原来多页面的功能,前端路由应运而…...
![](https://img-blog.csdnimg.cn/img_convert/4a23f7fdc6870dbc616e04645b681e18.png)
01-RTOS
对于裸机而言,对于RTOS而言即:对于裸机,打游戏意味着不能回消息 回消息意味着不能打游戏对于RTOS 打游戏和裸机的切换只需要一个时间片节拍 1ms 从宏观来看 就是同时进行的两件事(但要在这两件事情的优先级一样的情况下࿰…...
![](https://img-blog.csdnimg.cn/4a775550d56746eaa733d4e29f897f5b.png)
信息安全管理
信息安全管理信息安全管理信息安全风险管理信息安全管理体系应急响应与灾难恢复应急响应概况信息系统灾难修复灾难恢复相关技术信息安全管理 管理概念:组织、协调、控制的活动,核心过程的管理控制 管理对象和组成:包括人员在内相关资产&…...
![](https://www.ngui.cc/images/no-images.jpg)
深度学习tips
1、datasets_make函数中最后全部转化为numpy形式 datanp.array(data)否则会出现问题,比如数据是103216,经过trainloader生成tensor后(batch_size为30),发现生成的数据为: data.shape #(10,) data[0].shape…...
![](https://www.ngui.cc/images/no-images.jpg)
2023-2-13 刷题情况
替换子串得到平衡字符串 题目描述 有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符,且长度为 n 的字符串。 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。 给你一个这样的字符串 s,请通过…...
![](https://img-blog.csdnimg.cn/img_convert/0f2c43221175c94bc65826a707caea56.jpeg)
[HSCSEC 2023] rev,pwn,crypto,Ancient-MISC部分
比赛后有讲解,没赶上,前20比赛完1小时提交WP,谁会大半夜的起来写WP。总的感觉pwn,crypto过于简单,rev有2个难的不会,其它不是我的方向都感觉过于难,一个都没作。revDECOMPILEONEOONE入门题,一个…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot 接入 Spark
本文主要介绍 SpringBoot 与 Spark 如何对接,具体使用可以参考文章 SpringBoot 使用 Spark pom 文件添加 maven 依赖 spark-core:spark 的核心库,如:SparkConfspark-sql:spark 的 sql 库,如:s…...
![](https://img-blog.csdnimg.cn/6884a569b4674136b32439a942d4aeeb.png)
在线支付系列【23】支付宝开放平台产品介绍
有道无术,术尚可求,有术无道,止于术。 文章目录前言支付产品App 支付手机网站支付电脑网站支付新当面资金授权当面付营销产品营销活动送红包会员产品App 支付宝登录人脸认证信用产品芝麻 GO芝麻先享芝麻免押芝麻工作证安全产品交易安全防护其…...
![](https://img-blog.csdnimg.cn/img_convert/d86bc2724c3de28763a5a73d2a3437c1.gif)
Python绝对路径和相对路径详解
在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。什么是当前工作目录每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。注…...
![](https://www.ngui.cc/images/no-images.jpg)
基于多进程的并发编程
一:不同平台基于多进程并发编程的实现 1.Windows平台 参考博文:Windows 编程(多进程) 更多API: 1)waitForSingleObject:等待一个内核对象变为已通知状态 2)GetExitCodeProcess:获取…...
![](https://www.ngui.cc/images/no-images.jpg)
Flask入门(4):CBV和FBV
目录4.CBV和FBV4.1 继承 views.View4.2 继承 views.MethodView4.CBV和FBV 前面的例子中,都是基于视图函数构建视图(FBV),和Django一样,Flask也有基于类构建视图(CBV)的方法。这种方式用的不多&…...
![](https://img-blog.csdnimg.cn/748e7e96ae1e461fb815e9fa9faa86f5.png)
Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机
提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机 一、场景 在之前绘制完毕雷达显示图之后,这时候,我们能匹配的场景就更广泛了,比如说…...
![](https://img-blog.csdnimg.cn/6bb1a387b040459aa87a4b7ce18476e3.png)
系统应用 odex 转 dex
说下为什会有这个需求,以某系统应用为例,我们通过 adb 获取到的 apk 反编译查看只有少部分代码和资源,关键代码看不到。 经过一系列操作,把 odex 转换为 dex 可以看到源码。 工具下载 Smali 下载 1、使用 adb shell pm list pa…...
![](https://img-blog.csdnimg.cn/afba39f15dff44aba8bc555e17f30201.jpeg)
【GPLT 三阶题目集】L3-013 非常弹的球
刚上高一的森森为了学好物理,买了一个“非常弹”的球。虽然说是非常弹的球,其实也就是一般的弹力球而已。森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不太会,你能帮他解…...
![](https://img-blog.csdnimg.cn/img_convert/e9745b6023bc4ff6a86e37aceac645e4.png)
vue项目第三天
论坛项目动态路由菜单以及渲染用户登录全局前置拦截器获取用户的菜单以及接口执行过程解析菜单数据,渲染伟动态路由。菜单数据将数据源解析为类似路由配置对象的格式(./xxx/xxx 这种格式)。下方是路由实例的代码,后面封装了很多方法这里也需要…...
![](https://img-blog.csdnimg.cn/img_convert/b172381efbf82bbc7f4a38056034dddb.png)
【渝偲医药】实验室关于核磁共振波谱NMR的知识(原理、用途、分析、问题)
核磁共振波谱法(Nuclear Magnetic Resonance,简写为NMR)与紫外吸收光谱、红外吸收光谱、质谱被人们称为“四谱",是对各种有机和无机物的成分、结构进行定性分析的强有力的工具之一,亦可进行定量分析。 核磁共振&…...
![](https://img-blog.csdnimg.cn/img_convert/e287e3690ff38b3833f988a6741797b5.jpeg)
教你文本生成图片——stablediffusion
今天来点轻松的话题,带大家玩一个用文字生成图片的模型。相信大家如果关注AIGC领域,对文本生成图片,对Stablefiffusion、DEALL.E应该不陌生。今天给大家介绍的就是基于SD2 finetune出来的一个模型()这篇文章不会教大家…...
![](https://img-blog.csdnimg.cn/ca159311c6fe43528a44b2b707f6dbf2.png#pic_center)
C语言学习笔记-命令行参数
在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。 命令行(command line)是在命令行环境中,用户为运行程序输入命令的行。命令行参数(command-line argument)是同一行的附加项…...
![](https://img-blog.csdnimg.cn/b4eed76844ac46a58a37cc8eb9ef6d40.jpeg)
ASEMI代理FGH60N60,安森美FGH60N60车规级IGBT
编辑-Z 安森美FGH60N60车规级IGBT参数: 型号:FGH60N60 集电极到发射极电压(VCES):600V 栅极到发射极电压(VGES):20V 收集器电流(IC):120A 二…...
![](https://img-blog.csdnimg.cn/img_convert/200dc23a81197ed43825b80a39f76465.jpeg)
http409报错原因
今天一个同事的接口突然报409,大概百度了一下,不是很清楚,谷歌也没找到特别好的解释 因为是直接调用的gitlab,就直接看了下gitlab的api The following table shows the possible return codes for API requests. Return valuesDescription200 OKThe GET, PUT or DELETE request…...
![](/images/no-images.jpg)
企业网站 php/ 今日头条
本次我总结的是springmysql利用hibernate注解进行实体映射时候的一些命名规则: 1. mysql在数据库建表的时候不区分大小写,也就是对大小写不敏感; SELECT s.* FROM s_union_interfacetemplate s select s.*from s_union_interfacetemplate …...
![](/images/no-images.jpg)
璧山集团网站建设/广州官方新闻
easyui为我们提供了validatebox类型的组件,使用它可以完成自动验证,十分方便。要注意的是,easyui中的各个组件都是有继承关系的。通过查看api,textbox继承validatebox,而其他的组件类型又直接或间接的继承textbox&…...
![](/images/no-images.jpg)
郑州做网站的公司有哪些/青岛百度seo排名
2015年7月下旬,回湖南老家看望老人,前后正好一周,天气炎热,每日不过就是在家闲坐打发时光,间有人来聊天,尽量把来访者当成一个访谈对象,往往一谈就是数小时,偶尔也到邻居家坐坐&…...
![](https://img-blog.csdnimg.cn/20190612225626248.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VUX0VuZGVhdm9yaW5n,size_16,color_FFFFFF,t_70)
微信网站制作/输入搜索内容
欢迎加QQ群309798848交流C/C/linux/Qt/音视频/OpenCV 源码面前,了无秘密。阅读源码能帮助我们理解实现原理,然后更灵活的运用。 接下来我用VS2015调试Qt5.9源码。 首先提一下,Qt在WinMain中调用用户的main函数: 我们知道&#…...
![](/images/no-images.jpg)
上海专业做网站的公司/使用 ahrefs 进行 seo 分析
标记-整理算法是先标记出存活对象,接着把所有的存活对象移动到内存的一端,然后把另一端的所有垃圾对象全部清除。 因此标记-整理算法是先整理内存空间再清除垃圾对象的,而不是先清除再整理。...
![](https://img.jbzj.com/file_images/article/202005/2020051111170743.png)
网站服务器配置单/各大网站收录提交入口
方法一、使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场…...