keepalived+nginx 双机热备搭建
keepalived+nginx 双机热备搭建
- 一、准备工作
- 1.1 准备两台centos7.9
- 1.2 nginx 与 keepalived软件 双机安装
- 1.3 ip分配
- 1.4 修改主机名
- 1.5 关闭selinux(双机执行)
- 1.6 修改hosts(双机执行)
- 二、安装keepalived
- 2.1 执行一下命令安装keepalived(双机执行)
- 2.1.1 yum安装
- 2.1.2 编译安装
- 2.1.2.1 安装依赖
- 2.1.2.2 解压
- 2.2 编辑keepalived配置文件
- 2.2.1 清空原有的配置文件(双机执行)
- 2.2.2 执行以下命令,编辑keepalived.conf文件。(双机分别执行)
- 2.2.3 内容粘在配置文件中,设置不抢占(第一台主节点执行)
- 2.2.4 内容粘在配置文件中(第二台从节点执行)
- 2.2.5 编写check_nginx.sh脚本(双机执行)
- 2.3 设置开机自启动
- 三、安装nginx(双机安装)
- 四、配置下systemctl管理自安装nginx
- 4.1 创建nginx.service文件
- 4.2 重载systemctl
- 4.3 设置开机自启动
- 五、开启keepalived,并测试下
- 5.1 首先区分下 nginx 的index.html页面
- 5.2 开启keepalived
- 5.3 检验 keepalived的可用性
一、准备工作
1.1 准备两台centos7.9
1.2 nginx 与 keepalived软件 双机安装
1.3 ip分配
机器1 | 机器2 | vip |
---|---|---|
192.168.19.200 | 192.168.19.201 | 192.168.19.203 |
1.4 修改主机名
# 第一台
hostnamectl set-hostname nginx01
# 第二台
hostnamectl set-hostname nginx02
1.5 关闭selinux(双机执行)
#关闭selinux
#永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
#临时关闭
setenforce 0
#查看
getenforce
1.6 修改hosts(双机执行)
cat >> /etc/hosts << EOF
192.168.19.130 nginx01
192.168.19.131 nginx02
EOF
二、安装keepalived
2.1 执行一下命令安装keepalived(双机执行)
2.1.1 yum安装
yum -y install keepalived
2.1.2 编译安装
获取安装包https://www.keepalived.org/download.html
找到自己需要的版本安装,本次安装2.1.5,双机下载,也可以wget
2.1.2.1 安装依赖
yum install curl gcc openssl-devel libnl3-devel net-snmp-devel libnfnetlink-devel -y
2.1.2.2 解压
# 解压源码包
tar fx keepalived-2.1.5.tar.gz
# 进入解压后的目录
cd keepalived-2.1.5
# 配置选项
./configure --prefix=/usr/local/keepalived --sysconf=/etc --with-run-dir=/usr/local/keepalived/run
# 编译安装
make && make install
# 检查安装情况 如果等于0则代表成功编译安装
echo $?
# 创建存放pid的目录
mkdir /usr/local/keepalived/run
# 拷贝启动文件到/usr/sbin/
cp -rf /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
2.2 编辑keepalived配置文件
2.2.1 清空原有的配置文件(双机执行)
>/etc/keepalived/keepalived.conf
2.2.2 执行以下命令,编辑keepalived.conf文件。(双机分别执行)
vim /etc/keepalived/keepalived.conf
2.2.3 内容粘在配置文件中,设置不抢占(第一台主节点执行)
! Configuration File for keepalivedglobal_defs {# 唯一表示id 规格为keep_ip最优一段router_id keep_200
}
vrrp_script check_nginx {# 执行的检测脚本script "/etc/keepalived/check_nginx.sh"# 间隔检测的时间2sinterval 2# 检测失败降低权重,需要与主实例权重相减后小于备份实例weight -20
}
vrrp_instance VI_1 {# 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUPstate BACKUP# 设置不抢占nopreempt# 网卡设置 此处记得修改,ip a s显示需要绑定vip的网卡interface ens33# 虚拟路由标识,是一个数字,不用更改virtual_router_id 51# 定义优先级,数字越大,优先级越高priority 100# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔advert_int 1# 设置验证类型和密码,两个节点必须一致authentication {auth_type PASSauth_pass 1111}# 脚本监控状态track_script {check_nginx}virtual_ipaddress {192.168.19.133}
}
2.2.4 内容粘在配置文件中(第二台从节点执行)
! Configuration File for keepalivedglobal_defs {# 唯一表示id 规格为keep_ip最优一段router_id keep_201
}
vrrp_script check_nginx {# 执行的检测脚本script "/etc/keepalived/check_nginx.sh"# 间隔检测的时间2sinterval 2# 检测失败降低权重,需要与主实例权重相减后小于备份实例weight -20
}
vrrp_instance VI_1 {# 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUPstate BACKUP# 设置不抢占nopreempt# 网卡设置 此处记得修改,ip a s显示需要绑定vip的网卡interface ens33# 虚拟路由标识,是一个数字,不用更改virtual_router_id 51# 定义优先级,数字越大,优先级越高priority 99# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔advert_int 1# 设置验证类型和密码,两个节点必须一致authentication {auth_type PASSauth_pass 1111}# 脚本监控状态track_script {check_nginx}virtual_ipaddress {192.168.19.133}
}
2.2.5 编写check_nginx.sh脚本(双机执行)
vim /etc/keepalived/check_nginx.sh
#!/bin/bashA=`ps -C nginx --no-header |wc -l`if [ $A -eq 0 ];thensystemctl start nginxif [ `ps -C nginx --no-header |wc -l` -eq 0 ];thensystemctl stop keepalivedelseexit 0fielseexit 0fi
2.3 设置开机自启动
systemctl enable keepalived
三、安装nginx(双机安装)
# 下载依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
# 创建相关目录src为下载nginx安装包目录,soft为nginx安装目录
mkdir -p /data/{src,soft}
# 进入下载目录
cd /data/src/
# 下载nginx安装包
yum -y install wget
wget http://nginx.org/download/nginx-1.21.0.tar.gz
# 解压
tar fx nginx-1.21.0.tar.gz
cd nginx-1.18.0/
# 配置nginx编译环境
./configure --prefix=/data/soft/nginx --with-http_stub_status_module
# 编译安装
make && make install
# 检查安装是否有问题
echo $?
四、配置下systemctl管理自安装nginx
4.1 创建nginx.service文件
vim /lib/systemd/system/nginx.service
将下面文字直接粘贴进去修改
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
ExecStart=/data/soft/nginx/sbin/nginx -c /data/soft/nginx/conf/nginx.conf
ExecReload=/data/soft/nginx/sbin/nginx -s reload
ExecStop=/data/soft/nginx/sbin/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target
ExecStart:nginx的启动命令
ExecReload:nginx的重载命令
ExecStop:nginx的停止命令
4.2 重载systemctl
systemctl daemon-reload
4.3 设置开机自启动
systemctl enable nginx
五、开启keepalived,并测试下
5.1 首先区分下 nginx 的index.html页面
第一台
"hello world 1" > /data/soft/nginx/html/index.html
第二台
"hello world 2" > /data/soft/nginx/html/index.html
5.2 开启keepalived
# 开启keepalived
systemctl start keepalived
# 检查keepalived状态
systemctl status keepalived
5.3 检验 keepalived的可用性
首先查看vip在那台机器上,应该在第一台上,因为给的权重高
ip a s
浏览器访问下,访问vip
关闭第一台机器的nginx,这时候我们将check_nginx.sh的启动nginx命令先注释下,要不会自动启动
完成后停止第一台nginx
# 停止nginx
systemctl stop nginx
# 查看nginx状态
systemctl status nginx
# 查看keepalived 状态
systemctl status keepalived
# 查看vip在哪台机器上(两台执行)
ip a s
nginx 停止了
keepalived也停止了
查看vip 再第二台机器上,说明没问题
访问下浏览器http://192.168.19.203/
因为用的是不抢占模式,所以我们恢复下,看看vip会不会漂移回来(不漂移回来是对的)
首先修改刚刚修改的第一台check_nginx.sh脚本,将注释取消掉
直接启动第一台的keepalived,脚本会启动nginx的
# 启动第一台keepalived
systemctl start keepalived
# 查看状态
systemctl status keepalived
# 查看nginx启动状态
systemctl status nginx
# 都启动后查看vip再那台机器上(双机执行)
ip a s
还是再第二台上,说明没问题
相关文章:
422是一个HTTP状态码,表示服务器理解客户端的请求,但无法处理该请求。这个状态码通常被用于Web应用程序中的表单验证,其中服务器无法处理客户端提交的表单数据。
422是一个HTTP状态码,表示服务器理解客户端的请求,但无法处理该请求。这个状态码通常被用于Web应用程序中的表单验证,其中服务器无法处理客户端提交的表单数据。 具体来说,当一个客户端向服务器提交表单数据时,服务器首先会验证这些数据是否符合要求。 如果数据验证失败,…...
CF1973E Cat, Fox and Swaps 题解
题意:对于一个长度为 \(n\) 的排列,求有多少对 \((l,r)\) 满足 \(1 \le l,r \le 2n\),且可以通过交换任意次 \(x,y(l \le x+y \le r)\) 使得原排列升序。首先...
最初,进入二次元是什么时候?
最初,进入二次元是什么时候呢?或许是一部吸引人的动漫,是一位帅气漂亮的人物,也许是一次不经意的一撇,也许是一位朋友的强烈推荐,Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`…...
常见的排序算法——归并排序(四)
本文记述了针对归并排序的 3 项改进和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。 ◆ 思想 本文实现了《算法(第4版)》书中提到的 2 项改进和练习题 2.2.10。对小规模子数组使用插入排序。因为递归会使小规模问题中方法的调用过于频繁,所以改进对它们的…...
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
一、介绍 食物识别系统。该项目通过构建包含11种常见食物类别(包括Bread, Dairy product, Dessert, Egg, Fried food, Meat, Noodles-Pasta, Rice, Seafood, Soup, Vegetable-Fruit)的图片数据集,并利用TensorFlow框架下的ResNet50神经网络模型进行开发。项目流程包括数据预…...
软件设计原则—迪米特法则
...
keepalived+nginx 双机热备搭建
keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux(双机执行)1.6 修改hosts(双机执行)二、安装keepalived2.1 执行一下命令安装keepa…...
【云原生】容器编排技术Docker Compose
为什么需要Docker ComposeDocker Compose介绍Docker Compose安装Docker Compose版本介绍Docker Compose基本命令介绍Docker Compose实战Docker Compose Yml文件介绍总结为什么需要Docker Compose Docker帮助我们解决服务的打包安装的问题,随着而来的问题就是服务过…...
String、StringBuilder、StringBuffer的四大区别解析
面试官问:String、StringBuilder、StringBuffer有什么区别么? 这个问题是个高频问题,所以今天从源码上进行深度刨析他们的区别。 如何回答: 从四个点出发: 1、可变/不可变类 String是不可变类。他被被final修饰&…...
【C#进阶】C# 匿名方法
序号系列文章18【C#进阶】C# 事件19【C#进阶】C# 集合类20【C#进阶】C# 泛型文章目录前言1、什么是匿名方法?2、delegate 运算符3、Lambda 表达式3.1、Lambda 表达式的自然类型3.2、Lambda 表达式的显示返回类型4、关于匿名方法的总结结语前言 📺 hello大…...
C++并发编程之二 在线程间共享数据
文章目录1.1 互斥锁(mutex)保护共享数据1.1.1 std::mutex 的成员函数 std::mutex::lock() 和std::mutex::unlock() (不推荐使用)1.1.2 使用std::lock_guard保护共享数据1.1.3 使用std::unique_lock保护共享数据1.2 保护共享数据的其他方式1.2.1 初始化过…...
FL Studio和Cubase哪个容易一些 FL Studio和Cubase修音哪个好
FL Studio和Cubase哪个容易一些?FL Studio是很适合新手使用的宿主软件。FL Studio和Cubase修音哪个好?FL Studio和Cubase在修音方面各有千秋。 一、FL Studio和Cubase哪个容易一些 FL Studio是很适合新手上手的宿主软件,这得益于FL Studio独…...
限定学校|在站博士后省公派新加坡国立大学从事博后研究
Y博士为国内在站博士后,我们向其推荐了人社部博管办国外博士后派出项目及所在省的相关项目,最终助其获得新加坡国立大学的博士后邀请函,鉴于该导师名列全球高被引科学家榜单,顺利获批省国际培养博士后资助项目,如期出国…...
信息技术最全总结(备考教资)
信息技术 备考教资信息技术知识点总结,欢迎收藏!需要xmind和备考书籍的可以评论区留言。 第一部分-学科专业知识 第一章-信息技术基础知识 信息与信息技术概述 信息概述 信息的定义 信息本身不是实体信息是通过文字、数字、图像、图形、声音、视频等方…...
spring5(三):IOC操作Bean管理(基于xml方式)
IOC操作Bean管理(基于xml方式)前言一、基于 xml 方式创建对象二、基于 xml 方式注入属性1. 使用 set 方法进行属性注入2. 使用有参数构造进行属性注入3. p 名称空间注入简化操作(了解)三、xml 注入其它类型属性1. 字面量2. 注入属…...
Vue的快速上手
一、创建一个 Vue 应用 前提条件 熟悉命令行已安装 16.0 或更高版本的 Node.js在本篇中,我们将介绍如何在本地搭建 Vue 单页应用。创建的项目将使用基于 Vite 的构建设置,并允许我们使用 Vue 的单文件组件 (SFC)。 确保你安装了最新版本的 Node.js&…...
通过ELK+kafka采集微服务日志
在springboot微服务中采集日志推送kafka背景整体流程图快速搭建kafkazk开发环境通过logback记录日志到kafka快速搭建ELK环境Kibana查看,统计日志背景 在分布式的项目中,各功能模块产生的日志比较分散,同时为满足性能要求,同一个微…...
开启新航路,拓尔思发力AIGC市场 | 爱分析调研
2022年,随着AI聊天机器人GhatGPT在世界范围内持续火爆,极具创意、表现力、个性化且能快速迭代的AIGC技术成功破圈,成为全民讨论热点。 AIGC是指在确定主题下,由算法模型自动生成内容,包括单模态内容如文本、图像、音频…...
01-死磕QNX someip
1. vsomeip3.1.20版本 环境配置 export COMMONAPI_CONFIG/etc/commonapi.ini export LD_LIBRARY_PATH/sdcard/someip:$LD_LIBRARY_PATH export VSOMEIP_CONFIGURATION/etc/vsomeip-service.json export VSOMEIP_APPLICATION_NAMEHelloWorldSomeIPService sysctl -w net.ine…...
OTFS输入输出关系
目录 1. OTFS输入输出关系的矩阵表示 1.1 OTFS:矩阵表示 1.2 OTFS发射机的实现 1.2.1 传统的OTFS调制 ISFFT 海森堡变换 1.2.2 基于IDZT的OTFS调制 1.3 OTFS接收机的实现 1.3.1 传统的OTFS解调 维格纳变换 SFFT 1.3.2 基于DZT的OTFS解调 Appendix-Matlab C…...
Java的抽象类和接口
目录 一 、抽象类 1、抽象类概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 二、接口 1、接口的概念 2、语法规则 3、接口使用 4、接口特性 5、实现多个接口 6、接口间的继承 7、抽象类和接口的区别 8、接口使用实例 9、Clonable 接口和深拷贝 三、Object类…...
作为一个女测试员是什么样的体验?
面试时极度紧张,语无伦次,觉得肯定没戏,最后却拿到高薪offer。 工作之后我听同事们讲,测试总监面试官并没打算要我,但身边的人都问他: 那个小姐姐什么时候来报道?... 于是在众人的期待的目光…...
移动端 REM 适配
Vant 中的样式默认使用 px 作为单位,如果需要使用 rem 单位,推荐使用以下两个工具: postcss-pxtorem 是一款 postcss 插件,用于将单位转化为 rem lib-flexible 用于设置 rem 基准值 下面我们分别将这两个工具配置到项目中完成 R…...
哈希表【leetcode】
笔记:代码随想录 理论 概念 哈希表(hash table,散列表):是根据关键码的值而直接访问的数据结构,说白,数组就是一张哈希表。 哈希函数:把变量直接映射为表上的索引。 哈希碰撞&a…...
【Gem5】有关gem5模拟器的资料导航
网上有关gem5模拟器的资料、博客良莠不齐,这里记录一些总结的很好的博客与自己的学习探索。 一、gem5模拟器使用入门 官方的教程: learning_gem5:包括gem5简介、修改扩展gem5的示例、Ruby相关的缓存一致性等。gem5 Documentation࿱…...
R语言中apply系列函数详解
文章目录applylapply, sapply, vapplyrapplytapplymapplyR语言的循环效率并不高,所以并不推荐循环以及循环嵌套。为了实现循环功能的情况下,兼顾效率,R语言提供了apply系列函数,用于对规则的数据进行函数式的迭代处理。 apply a…...
AOP的另类用法 (权限校验自定义注解)
👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 AOP的另类用法 (权限校验&&自定义注解) 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉…...
【机器学习】机器学习建模调参方法总结
文章目录一、前言1.1 数据来源1.2 理论简介二、知识总结2.1 回归分析2.2 长尾分布2.3 欠拟合与过拟合2.4 正则化2.5 调参方法2.5.1 贪心调参 (坐标下降)2.5.2 网格调参GridSearchCV2.5.3 贝叶斯调参三、建模与调参3.1 线性回归3.1.1 模型建立3.1.2 查看训…...
Python数据分析师|Pandas之基础知识
版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 目录一、数据分析简介二、数据分析简介三、数据查看四、知识总结五、作者Info一、数据分析简介 随着科技的发展,数据变得尤为重要,甚至有着“数据为王”&…...
macOS 13.3(22E252)/12.6.4/11.7.5正式版发布
系统介绍 3 月 28 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.3 更新(内部版本号:22E252)苹果今天还发布了macOS Monterey 12.6.4和macOS Big Sur 11.7.5,本次更新距离上次发布隔了 42 天。 macOS Ventura 带来…...
速度与兼容性功能大比拼:7款浏览器测评,哪一款更好用
还在为使用哪款浏览器而发愁吗?电脑配置低,又想浏览网页顺畅、下载速度快,那么就要挑选功能齐全、速度快的浏览器。话不多说,给大家做了7款浏览器的最全测评,看看2023年哪个浏览器更好用,更适合自己。 本次…...
【建议收藏】2023年中高级软件测试大厂面试秘籍,为你保驾护航金三银四,直通大厂
前言 从几十份顶级面试仓库和300多篇高质量面经中总结出一份全面成体系化的软件测试高级面试题集。 随着软件测试岗位技术发展的成熟,自动化、性能、框架等一下子就进入了我们的视野内,同时,软件测试自身的技术栈也正在不断扩展,…...
Cinema 4D 2023.1.3安装包下载及安装教程
[软件名称]:Cinema 4D 2023.1.3 [软件大小]: 1.0GB [安装环境]: Win11/Win 10 [软件安装包下载]: https://pan.quark.cn/s/c2324deaa028 CINEMA 4D字面意思是4D电影,不过其本身就是3D的表现软件,由德国Maxon Computer开发,以极高的运算速度和…...
IDEA vs Eclipse:使用体验对比
1. 概述 IDEA 和 Eclipse 都是常见的集成开发环境(IDE),用于编写和调试代码。它们都有一些共同的功能,例如代码编辑器、调试器、版本控制等等。但是在具体的使用体验上,它们有很多不同之处。 本文将对 IDEA 和 Eclip…...
新手学SpringCloud前需知道的5点
目录 第一点: 什么是微服务架构 第二点:为什么需要学习Spring Cloud 第三点: Spring Cloud 是什么 第四点: SpringCloud的优缺点 1、SpringCloud优点 2、SpringCloud缺点 第五点: SpringCloud由什么组成 1&…...
Java集合—HashMap为什么2倍扩容 、HashMap的key允许空值而Hashtable却不允许
目录 1. Java集合—HashMap为什么2倍扩容 1.1 从源码分析 2. 为什么HashMap的key允许空值,而Hashtable却不允许 2.1 从源码分析 1. Java集合—HashMap为什么2倍扩容 HashMap的初始容量都是2的n次幂的形式存在的,而扩容也是2倍的原来的容量进行扩容&a…...
国内、外(翻)的新闻网站推荐
也许有很多朋友和我一样,小小螺丝天天关注国家大事,总喜欢在茶余饭后关注下国内外新闻,除了新闻广播和电视之外还能有哪些方式呢?今天就给大家盘点总结一下。 一、国内 1.今日头条:链接:今日头条 推荐等…...
PHP初级教程------------------(2)
目录 运算符 赋值运算符 算术运算符 比较运算符 逻辑运算符 连接运算符 错误抑制符 三目运算符 自操作运算符 编辑 计算机码 位运算符 运算符优先级 流程控制 控制分类 顺序结构 分支结构 If分支 Switch分支 循环结构 For循环 while循环 do-while循环 循环控制 …...
js的递归函数——实现可收放的树形菜单
递归函数实现树形菜单创建假数据或者请求接口数据定义递归函数,处理数据调用函数,渲染页面效果展示完整代码树形菜单是一种常见的网站导航方式,它通常由多个层级的菜单项组成,每个菜单项可以有子菜单项。在JavaScript中࿰…...
如何高效搭建资产管理平台?众安科技告诉你答案是图技术
本⽂整理⾃ NebulaGraph x 阿⾥云计算巢专场中众安保险的⼤数据应⽤⾼级专家曾⼒带来的《众安资产在 NebulaGraph 的应⽤实践》分享,视频⻅链接。 ⼤家好,我是众安数据科学应⽤中⼼的曾⼒,今天很⾼兴在这⾥可以跟⼤家分享 NebulaGraph 在众安…...
使用mybatis-plus-generator配置一套适合你的CRUD
1、maven引入 mybatis-plus-generator 和模板引擎,你也可以使用freemarker之类的,看个人 <!-- mybatisplus代码生成器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactI…...
vue门户网站,滚动到可视化区域展示动画效果方案
1.准备两个工具库: (1.1) animate.css:动画库 (动画效果展示:Animate.css | A cross-browser library of CSS animations.) (1.2)wowjs: 负责滚动到可视化区域ÿ…...
【0180】PG内核读取pg_hba.conf并创建HbaLine记录(1)
文章目录 1. pg_hba.conf文件是什么?2. postmaster何时读取pg_hba.conf?2.1 pg内核使用pg_hba.conf完成客户端认证的原理2.2 读取pg_hba.conf的几个模块3. pg内核读取pg_hba.conf过程3.1 VFD机制获取文件描述符3.2 根据fd读取文件内容相关阅读: 【0178】DBeaver、pgAdmin I…...
【五】线程安全VS线程不安全
1. Java内存模型的特征 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来建立。下面逐个看下哪些操作实现这三个特性: 1.1 原子性(Atomicity) 由Java内存模型来直接保证的原子性变量操作包括 read、load、assig…...
【大屏设计方案】
大屏设计方案一、非等比放大(填充满整个屏幕)目的屏幕比例大小和设计稿的差的不多目的屏幕比例大小和设计稿的差很多二、等比放大(比如16:9)解决方案之后就可以用rem了,有两种便利的方式:也可以用media 根据不同的屏幕…...
input 标签原生实现数字选择器
在使用开源的UI框架时,实现数字选择器很容易,直接拷贝就行,如iview、elementui...等。但有时项目不使用第三方样式库,这样的话UI控件只能自己实现。笔者就遇到过这样的情况,自己实现数字选择器,下面分享下实…...
大数据项目实战之数据仓库:用户行为采集平台——第3章 用户行为日志
第3章 用户行为日志 3.1 用户行为日志概述 用户行为日志的内容,主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式,有代码…...
zookeeper 学习(一):简单认识zookeeper
zookeeper 学习(一):简单认识zookeeper zk官网 zk是什么? highly reliable distributed coordination. 来自官网,高可用的分布式协调服务,应用最多的场景就是用来做其他服务中间件的协调者,我最开始接触zk ,…...
IP 归属用 Ip2region 就够了
文章目录Ip2region 简介是什么特性支持的编程语言案例实操依赖获取IP输入流转化解析IP测试抖音、微博、小红书等各平台相继上线" 网络用户IP地址显示功能", 境外显示 国家, 境内显示到 省市,且该功能无法关闭,IP地址为强…...
最小生成树kruskal-修建公路1
题目描述 L 城一共有 N 个小区。 小明是城市建设的规划者,他计划在城市修 M 条路,每修建一条路都要支付工人们相应的工钱(需要支付的工钱 = 路的长度)。 然而小明所拿到的经费并不够支付修建 M 条路的工钱,于是迫于无奈,他只能将计划改变为修建若干条路,使得 N 个小区之…...
Linux常用命令汇总
一、文件和文件夹操作 1、进入某一文件夹: cd xxx/yyy/简便记忆:改变目录,change directory,cd 2、复制文件到另一个文件: cp xxx/xxx.yyy ddd/rrr.zzz简便记忆:复制,copy,cp 第…...
vue部署包可配置后台接口地址
有时候一个部署包可能要应用于不同服务器,这就需要频繁更换后台地址。 由此引申出了部署包可直接配置后台地址的需求,这样就不需要频繁打包了。 方法 1. public 新增 config.js 文件(会被恶意修改地址,不安全) publi…...
企业电子采购系统:采购过程更规范,更透明
满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 电子招标采购,是指在网上寻源和采购产品和服务的过程。对于企业和企业主来说,这是个既省钱又能提高供应链效率的有效方法…...
php 修改服务器文件上传大小限制
输入docker cp mlfnginx:/etc/nginx/conf.d/pl.conf .输入vimpl.conf 修改nginx配置文件移动到图中所示位置client_max_body_size 按键盘”i”对图中的xxM修改成需要的大小,然后按”esc”,在按”:wq”,最后按回车键输入docker cp ./pl.con…...
PICO640红外探测器配置模块verilog
目录 一、PICO640 Introduction 二、实现代码 一、PICO640 Introduction PICO640 Gen2™ is a high resolution (640x480 pixels) infrared image sensor for military, surveillance or thermography applications. It makes use of the ULIS latest, state o…...
简单易懂 关于nextTick()的理解
前言 学习Vue的过程中,大家肯定都使用过nextTick(),关于nextTick()的使用时机,大家肯定都知道,那么它的工作原理是怎样的呢,本文就简单说一下它的nextTick()的工作原理。 nextTick的使用时机 首先记住:n…...
《奔赴——@生态环境部在2023》出版发行
近日,由生态环境部组织编写,收录生态环境部政务新媒体2023年发布重点信息的图书——《奔赴——@生态环境部在2023》出版发行。2023年,生态环境部坚定践行习近平生态文明思想,宣贯全国生态环境保护大会精神,持续深入推进生态环境宣传工作,生态环境部政务新媒体及时发布生态…...
start.spring.io不支持java8,idea使用阿里云又报错
做项目的时候,我们可以发现,访问https://start.spring.io/ 创建脚手架项目的时候,最低是java 17了 但是对于很多项目来说,还是在用java8,这该怎么办呢? 值得庆幸的是,阿里云也同样有相同功能的…...
【kali工具】使用 nc 扫描端口
使用 nc 扫描端口 nc 是 netcat 的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简 单、可靠的网络工具 nc 的作用: 1. 实现任意 TCP/UDP 端口的侦听,nc 可以作为 server 以 TCP 或 UDP 方式侦听指定端口 2. 端…...
镜像抑制和镜像衰减有什么不同
在很多无线产品接收机手册中,我们会看到两个参数,一个是镜像抑制(Image Rejection),另一个是镜像衰减(Image Attention),但这两者究竟有什么不同,一直比较疑惑࿰…...
AI学习指南概率论篇-条件概率和独立性
AI学习指南概率论篇-条件概率和独立性 概述 在人工智能领域,概率论是一项至关重要的工具。概率论不仅仅是用于量化不确定性,还在AI系统中扮演着关键角色。其中,条件概率和独立性是概率论中重要的概念之一,它们在AI领域有着广泛的…...
xCode升级后: Library ‘iconv2.4.0’ not found
报错信息: targets 选中 xxxNotification: Build Phases ——> Link Binary With Libraries 中,移除 libiconv.2.4.0.tbd libiconv.2.4.0.dylib 这两个库(只有一个的移除一个就好)。 然后重新添加 libiconv.tbd 修改完…...
Java测试框架:分享常用的Java测试框架,如JUnit, TestNG等,包括单元测试,集成测试,性能测试等
单元测试框架 JUnit JUnit简介 JUnit是一个开源的Java测试框架,用于编写和执行可重复的测试。它是Java开发人员的一个重要工具,用于进行单元测试、回归测试和模块化测试。JUnit提供了一种形式化的方式来编写测试用例,并通过这些测试用例核实代码的正确性。具有可预测的测试…...
vue2人力资源项目9权限管理
页面搭建 <template><div class"container"><div class"app-container"><el-button size"mini" type"primary">添加权限</el-button><el-table-column label"名称" /><el-table-co…...
软考--软件设计师--试题六--工厂方法模式(Factory Method)
工厂方法模式(Factory Method) 1、意图 定义一个用于创建对象的接口,让子类决定实例化哪儿一个类,factory method使一个类的实例化延迟到其子类。 2、结构 3、适用性 a、当一个类不知道它所必须创建的对象的类的时候。 b、当一个类希望由它的子类来指定…...
【运维项目经历|007】:高可用Web集群重构项目
目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的技术性问题及答案 问题1:什么是lvs? 问题2:本次项目成员一共多少…...
git 基础
【一】介绍 (1)软件开发模式 瀑布式开发 线性、顺序的开发流程,严格按照需求分析、设计、编码、测试、交付等阶段进行。每个阶段都必须在前一个阶段完成后才能开始,因此开发周期长,难以应对需求变更。适用于需求明确…...
【Redis】Redis面试和工作中十有八九会遇到的问题
1. 数据类型 常用的Redis数据类型有5种,分别是: String、List、Set、SortedSet、Hash 还有一些高级数据类型,比如Bitmap、HyperLogLog、GEO等,其底层都是基于上述5种基本数据类型。因此在Redis的源码中,其实只有5种数…...