WEB集群——负载均衡集群
目录
一、 LVS-DR 群集。
1、LVS-DR工作原理
2、LVS-DR模式的特点
3、部署LVS-DR集群
3.1 配置负载调度器(192.168.186.100)
3.2 第一台web节点服务器(192.168.186.103)
3.3 第二台web节点服务器(192.168.186.102)
3.4 客户端测试
3.5 测试
二、nginx负载均衡。
1、反向代理工作过程
2、反向代理服务配置
2.1 安装Nginx
2.2 配置反向代理
2.3 配置hosts文件
2.4 在web1服务器和web2服务器编写index.html
3、负载均衡
4、负载均衡地配置
一、 LVS-DR 群集。
1、LVS-DR工作原理
LVS-DR(Linux Virtual Server Director Server)
名称 | 缩写 | 说明 |
虚拟IP地址(Virtual IP Address) | VIP | Director用于向客户端计算机提供服务的IP地址 |
真实IP地址(Real Server IP Address) | RIP | 在集群下面节点上使用IP地址 |
Director的IP地址(Director IP Address) | DIP | Director用于连接内外网络的IP地址 |
客户端主机IP地址(Client IP Address) | CIP | 客户端用户计算机请求集群服务器的IP地址,该地址用作发送集群的请求的源IP地址 |
首先,来自客户端计算机 CIP 的请求被发送到 Director 的 VIP 。接着,Director 使用相同的 VIP 目的 IP 地址将 请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director ),并且以此回复数据包使用的目的 VIP 地址作为源 IP 地址。因此,实际上 是客户计算机被“ 欺骗 ” 了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数 据包给一台计算机(LB ),并从另一台计算机( RS )接收回复的数据包。
2、LVS-DR模式的特点
1 )所有集群节点 RS 必须和 Director 在相同的物理网段(即同一个局域网中);2 )所有客户端入站(而不是出站)请求由 Director 首先接收,并转发给集群节点 RS ;3 )集群节点 RS 通常来说最好带外部 IP ,而不使用 Director 及某固定机器作为默认网关,以便将数据包直 接回复给客户端计算机,且不会产生回包的瓶颈;4 )所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,以便验证通过目的 IP 非 RS 的数据包;5 )由于所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,因此,带来 arp 问题,即集群节点 RS 默认会相 应发往Director VIP 的数据包。因此要对所有集群节点 RS 做 ARP 抑制处理,把响应 VIP 的请求交给 LVS Director;6 )很多操作系统都可以用在集群内部的 RS 真实服务器上只要该操作系统能够实现 ARP 隐藏,如: Windows, linux , unix ;7 ) LVS/DR 模式不需要开启调度器转发功能,这点和 LVS/NAT 模式是不同的。8 ) LVS/DR Director (服务器数量 100 台)可以比 LVS-NAT Director (服务器数量 10-20 台)承受更多的 并发请求和转发更多的服务器数量。
3、部署LVS-DR集群
主机 | IP地址 |
DR服务器 | 192.168.186.100 |
web服务器1 | 192.168.186.103 |
web服务器2 | 192.168.186.102 |
客户端 | 192.168.206.100 |
vip(虚拟换回) | 192.168.186.200 |
3.1 配置负载调度器(192.168.186.100)
#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0#安装ipvsadm工具
[root@localhost ~]# yum install ipvsadm -y#配置虚拟IP地址(VIP:192.168.186.200)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0[root@localhost network-scripts]# vim ifcfg-ens33:0
#删除UUID,dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.186.200
NETMASK=255.255.255.255#重启网络服务、启动网卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifup ifcfg-ens33:0##调整/proc响应参数 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
[root@localhost network-scripts]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#刷新配置
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#加载模块
[root@localhost network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn#配置负载分配策略,并启动服务
[root@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm#手工执行配置添加LVS服务并增加两台RS
##添加真实服务器-a
##指定VIP地址及TCP端口-t
##指定RIP地址及TCP端口 -r
##指定DR模式-g
[root@localhost network-scripts]# ipvsadm -C
[root@localhost network-scripts]# ipvsadm --set 30 5 60
[root@localhost network-scripts]# ipvsadm -A -t 192.168.186.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.103:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.102: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.186.200:80 wlc-> 192.168.186.103:80 Route 1 0 0 -> 192.168.186.102:80 Route 1 0 0
3.2 第一台web节点服务器(192.168.186.103)
#关闭防火墙
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0#安装httpd,开启服务
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# systemctl start httpd #创建一个站点文件并写入内容
[root@web1 ~]# echo "this is 192.168.186.103" > /var/www/html/index.html #添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.186.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#重启网络
[root@web1 network-scripts]# systemctl restart network##添加路由
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 192.168.186.200 netmask 255.255.255.255loop txqueuelen 1000 (Local Loopback)
[root@web1 network-scripts]# route add -host 192.168.169.200 dev lo:0##调整proc相应参数
[root@web1 network-scripts]vim /etc/sysctl.conf
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[root@web1 network-scripts]sysctl -p
3.3 第二台web节点服务器(192.168.186.102)
#关闭防火墙
[root@web2 ~]# systemctl stop firewalld
[root@web2 ~]# setenforce 0#安装httpd,开启服务
[root@web2 ~]# yum install httpd -y
[root@web2 ~]# systemctl start httpd#创建站点文件
[root@web2 ~]# echo "this is 192.168.186.102" > /var/www/html/index.html#添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.185.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#设置路由
[root@web2 network-scripts]# route add -host 192.168.186.200 dev lo:0
[root@web2 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.186.2 0.0.0.0 UG 100 0 0 ens33
192.168.186.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.186.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo#开机执行命令
[root@web2 network-scripts]# vim /etc/rc.d/rc.local
/usr/sbin/route add -host 192.168.59.188 dev lo:0#调整 proc 响应参数
[root@web2 network-scripts]# vim /etc/sysctl.conf
[root@web2 network-scripts]# sysctl -p
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
3.4 客户端测试
3.5 测试
二、nginx负载均衡。
1、反向代理工作过程
从图 6-2可知,若用户A 、用户B 、用户C 同时对反向代理服务器发送请求,反向代理服务器则根据其内部的具体配置,将用户的请求分发给后端服务器进行处理,并将后端服务器处理后的响应结果作为自己的响应结果返回给用户。 反向代理服务器的整个处理过程,用户并不知情 。因此,从上述对代理和反向代理的介绍可以总结出两者的特性,主要有以下几点:
(1)、安全性: 正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这给网络安 全带来了极大的威胁。因 此, 在使用时必须采取安全措施以确保仅为经过授权的客 户端用户提供服务 而反向代理的客户端用户只能通过外网来访问代理服务器,并且用户并不知道自己访问的是一个代理服务器,好处就是反向代理将真正的处理放在内网中,有效地提高了网络安全性。(2)、功能性 : 正 向代理的主要用途是为在防火墙内的局域网用户提供访问 Int rnet途径 而反向代理的主要用途是将防火墙后的服务器提供给 Internet 用户访问,还可以为多个后端服务器提供负载均衡功能、缓存功能等。
2、反向代理服务配置
主机 | IP地址 |
反向代理服务器 | 192.168.186.100 |
web服务器1 | 192.168.186.101 |
web服务器2 | 192.168.186.102 |
2.1 安装Nginx
#配置虚拟机ip,网卡等
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33#安装C语言编译库和依赖包,使用gcc
[root@localhost ~]# yum install gcc gcc-c++ -y
[root@localhost ~]# yum install pcre-devel openssl-devel -y#解压,执行安装即可
[root@localhost ~]# tar zxvf nginx-1.22.0.tar.gz
[root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.22.0]# make
[root@localhost nginx-1.22.0]# make install#启动nginx及配置nginx开机启动
[root@localhost nginx-1.22.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx #编写一个脚本称谓系统服务
[root@localhost sbin]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload #重启nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop #停止
ExecQuit=/usr/local/nginx/sbin/nginx -s quit #优雅停止nginx
PrivateTmp=true[Install]
WantedBy=multi-user.target#重新加载系统服务
[root@localhost sbin]# systemctl daemon-reload #启动服务
[root@localhost sbin]# systemctl status nginx
2.2 配置反向代理
[root@localhost sbin]# vim /etc/nginx/conf.d/vhost.conf
#配置域名为www.wangp.com的虚拟主机
server {listen 80;server_name www.wangp.com;#域名www.wangp.com的请求全部转发到Web服务器192.168.186.101location / {proxy_pass http://192.168.186.101;}
}#配置域名为www.openlab.com的虚拟主机
server {listen 80;server_name www.openlab.com;#域名www.openlab.com的请求全部转发到Web服务器192.168.186.102location / {proxy_pass http://192.168.186.102;}
}
2.3 配置hosts文件
2.4 在web1服务器和web2服务器编写index.html
[root@web1 ~]# mkdir /www/
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /www/index.html
[root@web1 ~]# cd /www/
[root@web1 www]# ls
index.html
[root@web1 www]# cat index.html
Welcome to web1 server:192.168.186.101[root@web2 ~]# mkdir /www/
[root@web2 ~]# echo "Welcome to web2 server:192.168.186.102" > /www/index.html
[root@web2 ~]# cd /www/
[root@web2 www]# ls
index.html
[root@web2 www]# cat index.html
Welcome to web2 server:192.168.186.102
3、负载均衡
图6-5演示了负载均衡服务器地工作方式,其中客户端用户A和B同时请求了域名为test. ng. test 的网站,负载均衡服务器 (192. 168. 78. )会根据具体配置进行不同的分配。这里假设用户 的请求被分配到 Web 服务器 1(192. 168. 78. 128 )中处理,用户 的请求被 分配到另一个闲置的 Web 服务器 2(192. 168. 78. 200 )中处理 通过负载均衡,可以将一台 服务器的工作扩展到多台服务器中执行,提高整个网站的负载能力
4、负载均衡地配置
1)、准备服务器
主机 | IP地址 |
负载均衡服务器 | 192.168.186.100 |
web服务器1 | 192.168.186.101 |
web服务器2 | 192.168.186.102 |
2)、配置一般轮询负载均衡
#配置域名为www.openlab1.com的虚拟主机
[root@localhost ~]# vim /etc/nginx/conf.d/nginx.confserver{listen 80;server_name www.openlab1.com;location /{proxy_pass http://web_server;}
}
#配置负载均衡服务器组
upstream web_server{server 192.168.186.101;server 192.168.186.102;
}
3)、在web1服务器和web2服务器编写index.html
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /root/index.html
[root@web1 ~]# echo "Welcome to web2 server:192.168.186.102" > /root/index.html
4)、配置hosts文件
5)、完成后测试
相关文章:
WEB集群——负载均衡集群
目录 一、 LVS-DR 群集。 1、LVS-DR工作原理 2、LVS-DR模式的特点 3、部署LVS-DR集群 3.1 配置负载调度器(192.168.186.100) 3.2 第一台web节点服务器(192.168.186.103) 3.3 第二台web节点服务器(192.168.186.…...
ubuntu 20.0.4 搭建nvidia 显卡环境
一、安装docker 1、安装dokcer sudo apt install docker.io2、docker 添加到用户组 创建docker用户组 sudo groupadd docker添加当前用户加入docker用户组 sudo usermod -aG docker ${USER}重启docker服务 sudo systemctl restart docker切换或者退出当前账户再从新登入 …...
Windows环境下通过 系统定时 执行脚本方式 压缩并备份文件夹 到其他数据盘
环境配置 压缩时需要使用7-zip进行调用,因此根据自己电脑进行安装 官网:https://www.7-zip.org/ 脚本文件 新建记事本文件,重命名为git_back_up.bat echo off rem 设置utf-8可以正常显示中文 chcp 65001 > nulrem 获取当前日期和时间&…...
C++系列二:STL教程-常用算法
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 常用算法 前言算法列举:算法例子 前言 还有一些我在尝试中迷惑不解的,有点玄幻。 算法列举: 排序算法: sort(first, last);…...
【css】渐变
渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线) 径向渐变(由其中心定义) 1、线性渐变 语法:background-image: linear-gradient(direction, co…...
idea打开多个项目需要开多个窗口(恢复询问弹窗)
【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 使用…...
篇十三:策略模式:选择不同算法
篇十三:“策略模式:选择不同算法” 设计模式是软件开发中的重要知识,策略模式(Strategy Pattern)是一种行为型设计模式,用于在运行时根据不同的需求选择不同的算法或行为。本文将探讨策略模式的作用和实现…...
Centos7.6 安装mysql过程全记录
在centos 7.6上 离线安装mysql 的步骤,可参考下文: 一、查看当前MySQL的安装情况并卸载 1. 查看当前MySQL的安装情况 查找之前是否安装了MySQL rpm -qa|grep -i mysql 2.卸载mysql 如果已经安装mysql,则需要先停止MySQL,再删除…...
Java中的Guava是什么?
Java中的Guava是一个非常强大的Java库,它提供了很多实用的工具类和方法,可以帮助我们更高效地开发Java应用程序。从新手的角度来看,Guava可以让我们在Java编程中变得更加简单、快速和高效。 Guava的命名来源于“Google’s favorite Java lib…...
vue.js兄弟组件方法调用b组件调用a组件方法
vue.js 中兄弟组件方法调用 场景:父组件中同时引入两个子组件(A和B),此时B组件点击按钮需要调用A组件里面的方法 方案1:vue的事件总线 方案2:自定义事件($emit) 最终方案:…...
【Kubernetes】二进制搭建
目录 二进制搭建 Kubernetes v1.20 操作系统初始化配置 关闭防火墙 关闭selinux 关闭swap 根据规划设置主机名 在master添加hosts 调整内核参数 时间同步 部署 etcd 集群 准备签发证书环境 准备cfssl证书生成工具 生成Etcd证书 上传 etcd-cert.sh 和 etcd.sh 到 …...
【MFC】08.MFC消息,自定义消息,常用控件(MFC菜单创建大总结),工具栏,状态栏-笔记
本专栏上几篇文章讲解了MFC几大机制,今天带领大家学习MFC自定义消息以及常用控件,最常用的控件请查看本专栏第一二篇文章,今天这篇文章介绍工具栏,菜单和状态栏,以及菜单创建大总结。 文章目录 MFC消息分类࿱…...
Clickhouse 数据存储
一、数据分区 数据是以分区目录的形式组织的,每个分区独立分开存储.这种形式,查询数据时,可以有效的跳过无用的数据文件。 1.1 数据分区的规则 分区键的取值,生成分区ID,分区根据ID决定。根据分区键的数据类型不同&am…...
c语言每日一练(3)
前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…...
java基础-Stream(流)、File(文件)和IO
Java中的流(Stream)提供了一个统一的接口来处理输入和输出数据,文件(File)提供了一种简单的方式来操作磁盘上的文件,而I/O则允许我们在Java程序中读写数据。 一、流Stream java中得stream是一种抽象概念,流可以从多种来源读取数据ÿ…...
el-table实现指定列合并
table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素…...
38.利用matlab解 有约束无约束的参数估计对比(matlab程序)
1.简述 1.离散型随机变量的极大似然估计法: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计法: (1) 似然函数 若 X 为连续型, 似然函数为 (2) 求似然函数L(θ)的最大值点θ, 则…...
什么是React?React与VU的优缺点有哪些?
什么是React?什么是VUE? 维基百科上的概念解释,Vue.js是一个用于创建用户界面的开源MVVM前端JavaScript框架,也是一个创建单页应用的Web应用框架。Vue.js由尤雨溪(Evan You)创建,由他和其他活跃…...
区块链技术助力慈善,为您的善举赋予全新力量!
我们怀揣着一颗温暖的心,秉承着公开透明的理念,带着信任与责任,倾力打造了一套区块链技术驱动的去中心化捐赠与物资分发系统,通过智能生态网络(IEN)解决捐赠不透明问题的系统,让您的善举直接温暖…...
模拟实现消息队列项目(系列4) -- 服务器模块(内存管理)
目录 前言 1. 创建MemoryDataCenter 2. 封装Exchange 和 Queue方法 3. 封装Binding操作 4. 封装Message操作 4.1 封装消息中心集合messageMap 4.2 封装消息与队列的关系集合queueMessageMap的操作 5. 封装未确认消息集合waitMessage的操作 6. 从硬盘中恢复数据到内存中 7. Memo…...
STM32 LoRa源码解读
目录结构: SX1278 |-- include | |-- fifo.h | |-- lora.h | |-- platform.h | |-- radio.h | |-- spi.h | |-- sx1276.h | |-- sx1276Fsk.h | |-- sx1276FskMisc.h | |-- sx1276Hal.h | |-- sx1276LoRa.h | -- sx1276LoRaMisc.h – src |-- fifo.c |-- lora.c |-- …...
【BASH】回顾与知识点梳理(十)
【BASH】回顾与知识点梳理 十 十. 文件的格式化与相关处理10.1 格式化打印: printf10.2 awk:好用的数据处理工具awk 的逻辑运算字符 10.3 文件比对工具diffcmppatch 10.4 文件打印准备: pr 该系列目录 --> 【BASH】回顾与知识点梳理&#…...
【网络】应用层——HTTPS协议
🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! HTTPS协议 🍉HTTP的不安全性🍉认识HTTPS协议🍓加密解密ἵ…...
Windows新版文件资源管理器经常在后台弹出的临时解决方案
禁用组策略自动刷新 运行gpedit.msc找到计算机配置->管理模板->系统->组策略找到 “关闭组策略的后台刷新”启用 参考 https://answers.microsoft.com/en-us/windows/forum/all/windows-11-most-recently-opened-explorer-window/26e097bd-1eba-4462-99bd-61597b5…...
软考高项(八)项目整合管理 ★重点集萃★
👑 个人主页 👑 :😜😜😜Fish_Vast😜😜😜 🐝 个人格言 🐝 :🧐🧐🧐说到做到,言出必行&am…...
基于python+django开发的学生信息管理系统
基于pythondjangovue.js开发的学生信息管理系统,师弟的课程作业 功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 功能包括:学生管理、班级管理、用户管理、日志管理、系统信息模块…...
mysql的高级查询语句
目录 一、本文前言 二、高效查询方式 1)指定指字段进行查看 2)对字段进行去重查看 3)where条件查询 4)and 和 or 进行逻辑关系的增加 5)查询取值列表中的数据 6)between的引用 7)like…...
04-8_Qt 5.9 C++开发指南_QTableWidget的使用
文章目录 1. QTableWidget概述2. 源码2.1 可视化UI设计2.2 程序框架2.3 qwintspindelegate.h2.4 qwintspindelegate.cpp2.5 mainwindow.h2.6 mainwindow.cpp 1. QTableWidget概述 QTableWidget是Qt中的表格组件类。在窗体上放置一个QTableWidget 组件后,可以在 PropertyEditor…...
《golang设计模式》第二部分·结构型模式-01-适配器模式(Adapter)
文章目录 1. 概念1.1 角色1.2 应用场景1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 示例类图 1. 概念 定义一个适配器,帮助原本不能实现接口的类“实现”该接口 1.1 角色 目标(Target):客户端调用的目标接口 被适配者(…...
机器学习概述及其主要算法
目录 1、什么是机器学习 2、数据集 2.1、结构 3、算法分类 4、算法简介 4.1、K-近邻算法 4.2、贝叶斯分类 4.3、决策树和随机森林 4.4、逻辑回归 4.5、神经网络 4.6、线性回归 4.7、岭回归 4.8、K-means 5、机器学习开发流程 6、学习框架 1、什么是机器学习 机器…...
做网站用php吗/专业营销推广团队
转载:http://blog.csdn.net/lushuaiyin/article/details/7564876 对于js中eval()函数的理解 和 写一个函数trim() 去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于js中eval()函数的理解是本人心得不一定正确。 <!DOCTYPE HTM…...
哈尔滨网站建设30t/广西seo搜索引擎优化
在源代码编辑器中按住Option键单击一个符号(或单击Command键并单击该符号,然后选择“显示快速帮助”),以在弹出窗口中查看该符号的简要说明。要关闭弹出窗口,请按Escape键或单击文件中的任何位置。 技术交流 QQ:336505…...
南京网站制作建设/google国际版
大家都知道在做网页的时候,免不了有许多的图片文字,那么对于它们的样式的设计就由关重要,所以在这里介绍一些基本的css语句: 字体: 属性font-family,字体风格font-style,字体变形font-variant&a…...
自己做的小网站分享/如何去做网络营销
问题答案整理自互联网,非原创~事务的特性:(Atom)原子性: 事务包含的所有操作要么全部成功,要么全部失败回滚 (Consistency)一致性: 事务必须使数据库从一个一致性状态变换到另一个一致性状态 eg: 户A和用户B两者的钱加起来一共是5000…...
wordpress 在线课程/真正免费建站
基于webstorm的ESlint检查错误:TypeError: this.cliEngineCtor is not a constructor 网上有很多解决办法都是【过时的】基于ESlint在不断升级,请降级ESlint版本即可 【此版本ESlint6.7.2不会报错】 选择ESlint版本最好的方式就是使用 Vue-cli脚手架创建一个Vue3的…...
建设o2o网站/app排名优化公司
1234空闲时间够充裕,准备架设个LAMP和用POSTFIX架设个webmail.这两个SERVER都需要用到DNS。于是先弄个DNS,做个记录,以方便后面参考。具体步骤如下: 1.DNS用的软件名字bind。先确定下,安装了bind木有? 参考…...