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

使用 docker-compose 一键部署多个 redis 实例

目录

1. 前期准备

2. 导入镜像

3. 部署redis master脚本

4. 部署redis slave脚本

5. 模板文件

6. 部署redis

7. 基本维护


1. 前期准备

新部署前可以从仓库(repository)下载 redis 镜像,或者从已有部署中的镜像生成文件:

# 查看当前本地镜像
docker images
# 生成本地镜像文件
docker save <IMAGE ID> -o redis_503.tar

2. 导入镜像

# 在新部署的机器上导入镜像
docker load -i redis_503.tar
docker images

3. 部署redis master脚本

redis-master-deploy.sh 文件内容如下:

#!/bin/bashif [ ! -n "$1" ] ;thenecho "执行方式:redis-master-deploy.sh 镜像 redis起始端口号,如 redis-master-deploy.sh a.com:8443/dockerhub/redis:5.0.3 7001"exit
fiif [ ! -n "$2" ] ;thenecho "执行方式:redis-master-deploy.sh 镜像 redis起始端口号,如 redis-master-deploy.sh a.com:8443/dockerhub/redis:5.0.3 7001"exit
fiimage=${1//\//\\/}
port=$2
len=${#port}for ((var=0; var<$len; var++))
doa=${port:$var:1}if [ $var -eq 0 ]; thensentinel_port=$(($a+1))elif [ $var -eq $(($len-1)) ]; thensentinel_port=${sentinel_port}1elsesentinel_port=${sentinel_port}0fi
done# redis-server
for i in {1..16}
doold_port=$((7000+$i))new_port=$(($port + $i -1))sed_para=$sed_para"s/${old_port}/${new_port}/g;"mkdir -p /usr/local/etc/redis/redis$i/cp -f ~/redis.conf.template /usr/local/etc/redis/redis$i/redis.confsed -i 's/7001/'"${new_port}"'/g;s/redis1/redis'"${i}"'/g;' /usr/local/etc/redis/redis$i/redis.conf
donecp -f ~/docker-compose-server.yml.template /usr/local/etc/redis/docker-compose.yml
sed -e ${sed_para} -i /usr/local/etc/redis/docker-compose.yml
sed -i 's/a.com:8443\/dockerhub\/redis:5.0.3/'"${image}"'/g;' /usr/local/etc/redis/docker-compose.yml# sentinel
mkdir -p /usr/local/etc/redis/sentinel/
cp -f ~/sentinel.conf.template /usr/local/etc/redis/sentinel/sentinel.conf
ip=`hostname -I | awk '{print $1}'`
sed -i 's/172.18.29.56/'"${ip}"'/g;s/8001/'"${sentinel_port}"'/g;' /usr/local/etc/redis/sentinel/sentinel.conf
sed -e ${sed_para} -i /usr/local/etc/redis/sentinel/sentinel.conf
cp -f ~/docker-compose-sentinel.yml.template /usr/local/etc/redis/sentinel/docker-compose.yml
sed -i 's/a.com:8443\/dockerhub\/redis:5.0.3/'"${image}"'/g;s/8001/'"${sentinel_port}"'/g;' /usr/local/etc/redis/sentinel/docker-compose.yml# start-all
chown -R polkitd:root /usr/local/etc/redis/
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/docker-compose.yml up -d
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/sentinel/docker-compose.yml up -d

4. 部署redis slave脚本

redis-slave-deploy.sh 文件内容如下:

#!/bin/bashif [ ! -n "$1" ] ;thenecho "执行方式:redis-master-deploy.sh 镜像 redis起始端口号 master_ip,如 redis-master-deploy.sh a.com:8443/dockerhub/redis:5.0.3 7001 172.18.29.56"exit
fiif [ ! -n "$2" ] ;thenecho "执行方式:redis-master-deploy.sh 镜像 redis起始端口号 master_ip,如 redis-master-deploy.sh a.com:8443/dockerhub/redis:5.0.3 7001 172.18.29.56"exit
fiif [ ! -n "$3" ] ;thenecho "执行方式:redis-master-deploy.sh 镜像 redis起始端口号 master_ip,如 redis-master-deploy.sh a.com:8443/dockerhub/redis:5.0.3 7001 172.18.29.56"exit
fiimage=${1//\//\\/}
port=$2
len=${#port}for ((var=0; var<$len; var++))
doa=${port:$var:1}if [ $var -eq 0 ]; thensentinel_port=$(($a+1))elif [ $var -eq $(($len-1)) ]; thensentinel_port=${sentinel_port}1elsesentinel_port=${sentinel_port}0fi
done# redis-server
for i in {1..16}
doold_port=$((7000+$i))new_port=$(($port + $i -1))sed_para=$sed_para"s/${old_port}/${new_port}/g;"mkdir -p /usr/local/etc/redis/redis$i/cp -f ~/redis.conf.template /usr/local/etc/redis/redis$i/redis.confsed -i 's/7001/'"${new_port}"'/g;s/redis1/redis'"${i}"'/g;' /usr/local/etc/redis/redis$i/redis.conf
donecp -f ~/docker-compose-server.yml.template /usr/local/etc/redis/docker-compose.yml
sed -e ${sed_para} -i /usr/local/etc/redis/docker-compose.yml
sed -i 's/a.com:8443\/dockerhub\/redis:5.0.3/'"${image}"'/g;s/172.18.29.56/'"$3"'/g;' /usr/local/etc/redis/docker-compose.yml# sentinel
mkdir -p /usr/local/etc/redis/sentinel/
cp -f ~/sentinel.conf.template /usr/local/etc/redis/sentinel/sentinel.conf
# ip=`hostname -I | awk '{print $1}'`
sed -i 's/172.18.29.56/'"$3"'/g;s/8001/'"${sentinel_port}"'/g;' /usr/local/etc/redis/sentinel/sentinel.conf
sed -e ${sed_para} -i /usr/local/etc/redis/sentinel/sentinel.conf
cp -f ~/docker-compose-sentinel.yml.template /usr/local/etc/redis/sentinel/docker-compose.yml
sed -i 's/a.com:8443\/dockerhub\/redis:5.0.3/'"${image}"'/g;s/8001/'"${sentinel_port}"'/g;' /usr/local/etc/redis/sentinel/docker-compose.yml# start-all
chown -R polkitd:root /usr/local/etc/redis/
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/docker-compose.yml up -d
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/sentinel/docker-compose.yml up -d

5. 模板文件

docker-compose-sentinel.yml.template 文件内容如下:

version: '3'
services:sentinel:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-sentinelports:- 8001:8001command: redis-sentinel /sentinel/sentinel.confvolumes:- /usr/local/etc/redis/sentinel/:/sentinel

docker-compose-server.yml.template 文件内容如下:

version: '3'
services:master1:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master1restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7001:7001volumes:- /usr/local/etc/redis/redis1/:/redis1command: redis-server /redis1/redis.confmaster2:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master2restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7002:7002volumes:- /usr/local/etc/redis/redis2/:/redis2command: redis-server /redis2/redis.confmaster3:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master3restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7003:7003volumes:- /usr/local/etc/redis/redis3/:/redis3command: redis-server /redis3/redis.confmaster4:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master4restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7004:7004volumes:- /usr/local/etc/redis/redis4/:/redis4command: redis-server /redis4/redis.confmaster5:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master5restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7005:7005volumes:- /usr/local/etc/redis/redis5/:/redis5command: redis-server /redis5/redis.confmaster6:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master6restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7006:7006volumes:- /usr/local/etc/redis/redis6/:/redis6command: redis-server /redis6/redis.confmaster7:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master7restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7007:7007volumes:- /usr/local/etc/redis/redis7/:/redis7command: redis-server /redis7/redis.confmaster8:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master8restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7008:7008volumes:- /usr/local/etc/redis/redis8/:/redis8command: redis-server /redis8/redis.confmaster9:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master9restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7009:7009volumes:- /usr/local/etc/redis/redis9/:/redis9command: redis-server /redis9/redis.confmaster10:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master10restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7010:7010volumes:- /usr/local/etc/redis/redis10/:/redis10command: redis-server /redis10/redis.confmaster11:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master11restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7011:7011volumes:- /usr/local/etc/redis/redis11/:/redis11command: redis-server /redis11/redis.confmaster12:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master12restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7012:7012volumes:- /usr/local/etc/redis/redis12/:/redis12command: redis-server /redis12/redis.confmaster13:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master13restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7013:7013volumes:- /usr/local/etc/redis/redis13/:/redis13command: redis-server /redis13/redis.confmaster14:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master14restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7014:7014volumes:- /usr/local/etc/redis/redis14/:/redis14command: redis-server /redis14/redis.confmaster15:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master15restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7015:7015volumes:- /usr/local/etc/redis/redis15/:/redis15command: redis-server /redis15/redis.confmaster16:image: a.com:8443/dockerhub/redis:5.0.3container_name: redis-master16restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 7016:7016volumes:- /usr/local/etc/redis/redis16/:/redis16command: redis-server /redis16/redis.conf

redis.conf.template 文件内容如下:

rename-command flushAll ""
daemonize no
port 7001
dir "/redis1"
pidfile "/redis1/redis.pid"
logfile "/redis1/redis.log"
dbfilename "dump.rdb"
save 900 1
appendonly no
appendfilename "appendonly.aof"
appendfsync always
maxmemory 500mb
maxmemory-policy volatile-lru
maxmemory-samples 3
slowlog-log-slower-than 10000
repl-backlog-size 64mb
timeout 0
repl-timeout 240requirepass "123456"
masterauth "123456"
protected-mode no

sentinel.conf.template 文件内容如下:

port 8001
protected-mode no
dir "/sentinel"sentinel monitor redis1 172.18.29.56 7001 2
sentinel auth-pass redis1 123456
sentinel down-after-milliseconds redis1 5000
sentinel failover-timeout redis1 10000sentinel monitor redis2 172.18.29.56 7002 2
sentinel auth-pass redis2 123456
sentinel down-after-milliseconds redis2 5000
sentinel failover-timeout redis2 10000sentinel monitor redis3 172.18.29.56 7003 2
sentinel auth-pass redis3 123456
sentinel down-after-milliseconds redis3 5000
sentinel failover-timeout redis3 10000sentinel monitor redis4 172.18.29.56 7004 2
sentinel auth-pass redis4 123456
sentinel down-after-milliseconds redis4 5000
sentinel failover-timeout redis4 10000sentinel monitor redis5 172.18.29.56 7005 2
sentinel auth-pass redis5 123456
sentinel down-after-milliseconds redis5 5000
sentinel failover-timeout redis5 10000sentinel monitor redis6 172.18.29.56 7006 2
sentinel auth-pass redis6 123456
sentinel down-after-milliseconds redis6 5000
sentinel failover-timeout redis6 10000sentinel monitor redis7 172.18.29.56 7007 2
sentinel auth-pass redis7 123456
sentinel down-after-milliseconds redis7 5000
sentinel failover-timeout redis7 10000sentinel monitor redis8 172.18.29.56 7008 2
sentinel auth-pass redis8 123456
sentinel down-after-milliseconds redis8 5000
sentinel failover-timeout redis8 10000sentinel monitor redis9 172.18.29.56 7009 2
sentinel auth-pass redis9 123456
sentinel down-after-milliseconds redis9 5000
sentinel failover-timeout redis9 10000sentinel monitor redis10 172.18.29.56 7010 2
sentinel auth-pass redis10 123456
sentinel down-after-milliseconds redis10 5000
sentinel failover-timeout redis10 10000sentinel monitor redis11 172.18.29.56 7011 2
sentinel auth-pass redis11 123456
sentinel down-after-milliseconds redis11 5000
sentinel failover-timeout redis11 10000sentinel monitor redis12 172.18.29.56 7012 2
sentinel auth-pass redis12 123456
sentinel down-after-milliseconds redis12 5000
sentinel failover-timeout redis12 10000sentinel monitor redis13 172.18.29.56 7013 2
sentinel auth-pass redis13 123456
sentinel down-after-milliseconds redis13 5000
sentinel failover-timeout redis13 10000sentinel monitor redis14 172.18.29.56 7014 2
sentinel auth-pass redis14 123456
sentinel down-after-milliseconds redis14 5000
sentinel failover-timeout redis14 10000sentinel monitor redis15 172.18.29.56 7015 2
sentinel auth-pass redis15 123456
sentinel down-after-milliseconds redis15 5000
sentinel failover-timeout redis15 10000sentinel monitor redis16 172.18.29.56 7016 2
sentinel auth-pass redis16 123456
sentinel down-after-milliseconds redis16 5000
sentinel failover-timeout redis16 10000

6. 部署redis

# 在 redis master 机器执行
./redis-master-deploy.sh 0f88f9be5839 20001# 在 redis slave 机器执行
./redis-slave-deploy.sh 0f88f9be5839 20001 172.18.3.15

说明:

  1. 一次创建16组redis一主两从实例
  2. 需要模板文件 /root/*.template
  3. image、port为redis-master-deploy.sh命令行参数;image、port、master_ip为redis-slave-deploy.sh命令行参数;
  4. port为16个redis-server示例的起始端口,例如:port为7001将创建 7001 - 7016 16个实例
  5. 先部署master,再部署slave,主从port参数必须相同,本例同为7001
  6. 哨兵端口位数与port参数相同,定义为:第一位为port的第一位加1,最后一位为1,中间位数为0。例如port 参数值为 20010,则哨兵端口为30001;port 参数值为 7001,则哨兵端口为8001。

7. 基本维护

# 查看镜像
docker images
# 查看容器
docker ps
# 查看容器详细信息
docker inspect <CONTAINER ID>
# 重启容器
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/docker-compose.yml down
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/sentinel/docker-compose.yml down
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/docker-compose.yml up -d
/usr/libexec/docker/cli-plugins/docker-compose -f /usr/local/etc/redis/sentinel/docker-compose.yml up -d

相关文章:

使用 docker-compose 一键部署多个 redis 实例

目录 1. 前期准备 2. 导入镜像 3. 部署redis master脚本 4. 部署redis slave脚本 5. 模板文件 6. 部署redis 7. 基本维护 1. 前期准备 新部署前可以从仓库&#xff08;repository&#xff09;下载 redis 镜像&#xff0c;或者从已有部署中的镜像生成文件&#xff1a; …...

14-测试分类

1.按照测试对象划分 ①界面测试 软件只是一种工具&#xff0c;软件与人的信息交流是通过界面来进行的&#xff0c;界面是软件与用户交流的最直接的一层&#xff0c;界面的设计决定了用户对设计的软件的第一印象。界面如同人的面孔&#xff0c;具有吸引用户的直接优势&#xf…...

打开域名跳转其他网站,官网被黑解决方案(Linux)

某天打开网站&#xff0c;发现进入首页&#xff0c;马上挑战到其他赌博网站。 事不宜迟&#xff0c;不能让客户发现&#xff0c;得马上解决 我的网站跳转到这个域名了 例如网站跳转到 k77.cc 就在你们部署的代码的当前文件夹下面&#xff0c;执行下如下命令 find -type …...

redis总结

1.redis redis高性能的key-value数据库&#xff0c;支持持久化&#xff0c;不仅仅支持简单的key-value&#xff0c;还提供了list&#xff0c;set&#xff0c;zset&#xff0c;hash等数据结构的存储&#xff0c;支持数据的备份&#xff08;master-slave模式&#xff09; redis&…...

现代C++中的从头开始深度学习:激活函数

一、说明 让我们通过在C中实现激活函数来获得乐趣。人工神经网络是生物启发模型的一个例子。在人工神经网络中&#xff0c;称为神经元的处理单元被分组在计算层中&#xff0c;通常用于执行模式识别任务。 在这个模型中&#xff0c;我们通常更喜欢控制每一层的输出以服从一些约束…...

python怎么实现tcp和udp连接

目录 什么是tcp连接 什么是udp连接 python怎么实现tcp和udp连接 什么是tcp连接 TCP&#xff08;Transmission Control Protocol&#xff09;连接是一种网络连接&#xff0c;它提供了可靠的、面向连接的数据传输服务。 在TCP连接中&#xff0c;通信的两端&#xff08;客户端和…...

java设计模式-观察者模式(jdk内置)

上一篇我们学习了 观察者模式。 观察者和被观察者接口都是我们自己定义的&#xff0c;整个设计模式我们从无到有都是自己设计的&#xff0c;其实&#xff0c;java已经内置了这个设计模式&#xff0c;我们只需要定义实现类即可。 下面我们不多说明&#xff0c;直接示例代码&am…...

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 背景 在这个以k8s为云os的时代&#xff0c;程序员在日常的开发过程中&#xff0c;肯定会遇到各种问题&#xff0c;比如&#xff1a;本地开发完&#xff0c;需要部署到远程k8s集群&#xff0c;本地…...

CV前沿方向:Visual Prompting 视觉提示工程下的范式

prompt在视觉领域&#xff0c;也越来越重要&#xff0c;在图像生成&#xff0c;作为一种可控条件&#xff0c;增进交互和可控性&#xff0c;在多模态理解方面&#xff0c;指令prompt也使得任务灵活通用。视觉提示工程&#xff0c;已然成为CV一个前沿方向&#xff01; 下面来看看…...

Redis五大基础类型解析

1.String类型 特征&#xff1a;即存储字符串的类型&#xff0c;单个字符串存储量最大不超过512MB 常用业务场景&#xff1a;⽤来存储JSON序列化之后对象 底层编码&#xff1a; int编码 数据结构特点&#xff1a;ptr指针直接指向字符串常量池中对应字符串地址&#xff0c;而…...

在CSDN学Golang云原生(服务网格istio)

一&#xff0c;在Kubernetes上部署istio 在Kubernetes上部署istio&#xff0c;可以按照以下步骤进行&#xff1a; 安装Istio 使用以下命令从Istio官网下载最新版本的Istio&#xff1a; curl -L https://istio.io/downloadIstio | ISTIO_VERSION<VERSION> sh - 其中&…...

Golang 获取本地 IP 地址方法

在 Golang 中&#xff0c;使用 net 包可以很方便地获取到本机IP地址。 借助 net.InterfaceAddrs 方法 简单示例代码如下&#xff1a; package mainimport ("fmt""net" )func main() {addrList, err : net.InterfaceAddrs()if err ! nil {panic(err)}for…...

抖音seo短视频账号矩阵系统技术开发简述

说明&#xff1a;本开发文档适用于抖音seo源码开发&#xff0c;抖音矩阵系统开发&#xff0c;短视频seo源码开发&#xff0c;短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面&#xff1a; 1.前端界面设…...

运维高级--shell脚本完成分库分表

为什么要进行分库分表 随着系统的运行&#xff0c;存储的数据量会越来越大&#xff0c;系统的访问的压力也会随之增大&#xff0c;如果一个库中的表数据超过了一定的数量&#xff0c;比如说MySQL中的表数据达到千万级别&#xff0c;就需要考虑进行分库分表&#xff1b; 其…...

Mysql 忘记密码怎么重置密码(详细步骤)

每种方法都有其适用的情况&#xff0c;根据具体情况选择合适的方法。无论选择哪种方法&#xff0c;请务必在重置密码后及时删除临时用户并重新启动 MySQL 服务。 一、使用 mysqladmin 重置密码 停止服务 # systemctl 启动的使用这个停止 $ sudo systemctl stop mysql# mac 本机…...

机器学习深度学习——图像分类数据集

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归&#xff08;下&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习…...

【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2

第一道栈迁移题目&#xff0c;跌跌撞撞理解了 前言 当前溢出可用空间比较少时&#xff08;极端情况下仅能覆写ebp和ret&#xff09;&#xff0c;可以通过栈迁移的方式&#xff0c;扩大shellcode的容纳空间&#xff0c;其核心是将esp移动到一段shellocode开头。而esp总是由ebp赋…...

网络编程(13): 网络通信常用命令(后续待补充)

ifconfig 一般用于查看网卡信息 ping 一般用于侦测本机到目标网络主机的网络是否通常: ping ip/域名 telnet 可以用于指定ip地址和端口的侦听服务是否存在&#xff1a;telnet ip port, 也可以模拟客户端给服务器发数据 netstat 用于查看网络连接状态 -a: 显示所有选项 -t&#…...

flask创建数据库连接池

flask创建数据库连接池 在Python中&#xff0c;您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装&#xff0c;实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…...

C语言手撕顺序表

目录 一、概念 1、静态顺序表&#xff1a;使用定长数组存储元素。 2、动态顺序表&#xff1a;使用动态开辟的数组存储 二、接口实现 1、对顺序表的初始化 2、对数据的销毁 3、对数据的打印 4、检查是否需要扩容 5、尾插 6、头插 7、尾删 8、头删 9、在pos位置插入x …...

常见的排序算法

常见的排序算法 常见的排序算法包括&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;依次比较相邻的元素&#xff0c;将较大的元素交换到右侧&#xff0c;逐步将最大元素移动到末尾。插入排序&#xff08;Insertion Sort&#xff09;&#xff1a;将数组…...

C#如何使用SQLite数据库?

文章目录 0.引言1.SQLite工具准备2.创建窗体项目并添加SQLite的命名空间3.编写使用SQLite代码4.结果展示 0.引言 SQLite是一个轻量级的嵌入式数据库&#xff0c;它的库文件非常小巧&#xff0c;不需要独立的服务器进程或配置。这使得它非常适合在资源受限的环境中使用&#xff…...

如何将表格中的状态数据转换为Tag标签显示

考虑到系统前端页面的美观程度&#xff0c;通常通过Tag标签来代替某条数据中的状态信息。仅通过一点操作&#xff0c;便能够使得页面美观程度得到较大提升&#xff0c;前后对比如下所示。代码基于Vue以及Element-ui组件实现。 修改前&#xff1a; 修改后&#xff1a; 修改前…...

centos中修改防火墙端口开放配置

1、直接进入文件修改 vim /etc/sysconfig/iptables 2、添加需要开放的端口 &#xff08;1&#xff09;添加需要开放的单个端口 4001 -A INPUT -m state --state NEW -m tcp -p tcp --dport 4001 -j ACCEPT &#xff08;2&#xff09;添加需要开放的某个网段端口 4001:4020 …...

程序设计 算法基础

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

ubuntu开机自启动

ubuntu开机自启动 1、建一个test.sh脚本&#xff0c;并写入 #!/bin/sh gnome-terminal -x bash -c ‘cd /home/文件路径/;python3 main.py’ exit 0 2、:wq!保存 3、创建rc-local.service文件&#xff08;sudo vim /etc/systemd/system/rc-local.service&#xff09;&#xf…...

Git将其他分支合并至主分支

主要思想&#xff1a; 把分支代码合并到master&#xff0c;合给谁&#xff0c;就先切换到谁的分支 1. 当前分支是dev&#xff0c;开发完成后&#xff0c;需要合并到master分支 先把该提交的提交&#xff0c;需要push的push完成后&#xff0c;再切换分支。 否则也会告诉你要提交…...

Python+request+pytest 接口自动化测试框架入门(与unittest的比较)

1. Pythonrequestpytest 接口自动化测试框架入门 - 简书 pytest和unittest的比较&#xff1a; pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要有以下几个特点&#xff1a; 简单灵活&#xff0c;容易上手支持参数化能够支持简单的单元测试和复杂的功能测试&a…...

数据结构——复杂度

总有一天你要一个人&#xff0c;再暗夜中&#xff0c;向那座桥走过去 文章目录 一、算法的复杂度 考察形式范例 二、算法的时间复杂度 大O的渐进表示法 常见的复杂度对比 例题&#xff1a;消失的数字 题目的三种思路 1.排序遍历 2.减法 3.单身狗思想 三、空间复杂度…...

网站建设丿找vx cp5173/ seo won

数据库是数据的仓库&#xff0c;用于存储数据&#xff0c;而存储数据需要媒介&#xff0c;现在的存储媒介&#xff0c;最常用的是硬盘&#xff0c;土豪一点的服务器使用固态硬盘&#xff08;SSD&#xff09;&#xff0c;特殊用途的服务器使用内存。数据库最常用的存储文件是数据…...

建筑工程承包网app/seo技术分享博客

1、创建用户 create user ‘用户名’’%’ identified by ‘用户名’; 说明&#xff1a;%代表外部连接所有的IP&#xff0c;可指定固定的IP或者是本地连接&#xff08;localhost&#xff09; 2、删除用户 drop user ‘用户名’’%’; 3、用户权限 3.1、 --赋予某个用户某个数…...

规范网站维护 建设 管理/seo推广费用

<< Back to linux.chinaitlab.com 红帽企业 Linux 4安全指南版权 © 2005 Red Hat, Inc.ISBN: N/A 目录介绍1. 体系特有的信息2. 文档约定3. 激活订阅3.1. 提供红帽登录帐号3.2. 提供你的订阅号码3.3. 连接系统4. 未来的扩充4.1. 递交你的反馈I. 安全问题概述1章 . 安…...

做动态网站 和数据库交互/乔拓云建站平台

说实话&#xff0c;这是个老话题&#xff0c;有很多人都知道怎么传&#xff0c;但也有很多的朋友弄不清楚&#xff0c;折腾半天都没有结果&#xff0c;现在我在这里再分解一次。其实三个典型方法&#xff1a;1、利用QQ、微信传图片资料等&#xff1b;2、用电脑上软件&#xff0…...

兼职做视频的网站/排名优化公司电话

在腾讯云的centos云服务器上如果你要使用图形界面&#xff0c;比如图形界面安装oracle&#xff0c;应该怎么做&#xff1f;今天就和大家分享下图形界面的安装和vnc的搭建&#xff0c;来解决刚才提到的问题。 安装可能导致DNS被清空&#xff0c;所以需要先执行下面命令后再按照…...

重庆制作网站速成班/如何优化标题关键词

用sed命令在行首或行尾添加字符的命令有以下几种&#xff1a; 假设处理的文本为test.file 在每行的头添加字符&#xff0c;比如"HEAD"&#xff0c;命令如下&#xff1a; sed s/^/HEAD&/g test.file 在每行的行尾添加字符&#xff0c;比如“TAIL”&#xff0c;命令…...