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

K8S - Deployment 的版本回滚

在这里插入图片描述

当前状态

先看deployment
root@k8s-master:~# kubectl get deploy -o wide --show-labels
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR             LABELS
bq-api-service-deploy-sample   5/5     5            5           4h47m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.3   app=bq-api-service   app=bq-api-service,author=Jason
root@k8s-master:~# 

得知 这个deployment 的image 版本是1.1.3 , 有5个运行副本




查看revisions 历史
root@k8s-master:~# kubectl rollout history deployment/bq-api-service-deploy-sample
deployment.apps/bq-api-service-deploy-sample 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

可以见到有3个revisions
其实他们对应的是image 版本1.1.1 , 1.1.2 和 1.1.3

至于k8s 会为1个deployment 保留多少个revisions, 是由参数spec.revisionHistoryLimit 决定的

例如 下面配置意思就是期望运行5个pod 副本, 但是会保留pod 的10个历史版本

spec:replicas: 10            # desired replica count, Please note that the replica Pods in a Deployment are typically distributed across multiple nodes.revisionHistoryLimit: 10




查看ReplicaSet 信息
root@k8s-master:~# kubectl get rs -o wide -l app=bq-api-service
NAME                                      DESIRED   CURRENT   READY   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR
bq-api-service-deploy-sample-7bff8fbc4b   5         5         5       81m     bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.3   app=bq-api-service,pod-template-hash=7bff8fbc4b
bq-api-service-deploy-sample-8d49d9845    0         0         0       88m     bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.2   app=bq-api-service,pod-template-hash=8d49d9845
bq-api-service-deploy-sample-9f8d9c988    0         0         0       5h23m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.1   app=bq-api-service,pod-template-hash=9f8d9c988
root@k8s-master:~# 

刚好也是3个rs, 其实他们刚好对应了3个revisions的image 版本
只不过1.1.3 版本的RS 有5个当前运行的POD 副本, 而1.1.1 和 1.1.2 的副本数量是0, 符合常规.

但是 ReplicaSet 和 Revision 不是永远可以一一对应的, 一是revisions数量有限制, 二是1个deployment 的replicaSet 有可能会被重用




查看Pod 信息
root@k8s-master:~# kubectl get po -o wide -l app=bq-api-service
NAME                                            READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
bq-api-service-deploy-sample-7bff8fbc4b-b9c8v   1/1     Running   0          92m   10.244.3.40   k8s-node3   <none>           <none>
bq-api-service-deploy-sample-7bff8fbc4b-bf8bp   1/1     Running   0          92m   10.244.1.29   k8s-node1   <none>           <none>
bq-api-service-deploy-sample-7bff8fbc4b-hqfmw   1/1     Running   0          92m   10.244.1.30   k8s-node1   <none>           <none>
bq-api-service-deploy-sample-7bff8fbc4b-lgjj9   1/1     Running   0          92m   10.244.2.91   k8s-node0   <none>           <none>
bq-api-service-deploy-sample-7bff8fbc4b-wgrj5   1/1     Running   0          92m   10.244.2.89   k8s-node0   <none>           <none>

有5个pod 正在运行, 关键pod 名字是包含了 rs 的对象名字的

bq-api-service-deploy-sample-7bff8fbc4b-b9c8v
所以我们可以用pod 的名字来知道它是属于哪个 ReplicaSet的




用新的部署来实现回滚到1.1.2 版本

回滚1个service 的版本有多种方法

  1. 是部署多一次旧的image 版本
  2. 恢复已备份的service版本

在生产中, 我们可能会更常用第一种
这里我们也试试

方法很简单, 在上一篇文章介绍过来
用kubectl set image 命令来实现
kubectl set image deployment/<deployment_name> <container_name>=europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:<新版本号>

root@k8s-master:~# kubectl set image deployment/bq-api-service-deploy-sample bq-api-service-container=europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.2
deployment.apps/bq-api-service-deploy-sample image updated

更新回1.1.2 版本

root@k8s-master:~# kubectl get deploy -o wide --show-labels
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR             LABELS
bq-api-service-deploy-sample   5/5     5            5           5h53m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.2   app=bq-api-service   app=bq-api-service,author=Jason




检查rs
root@k8s-master:~# kubectl get rs -o wide -l app=bq-api-service
NAME                                      DESIRED   CURRENT   READY   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR
bq-api-service-deploy-sample-7bff8fbc4b   0         0         0       111m    bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.3   app=bq-api-service,pod-template-hash=7bff8fbc4b
bq-api-service-deploy-sample-8d49d9845    5         5         5       119m    bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.2   app=bq-api-service,pod-template-hash=8d49d9845
bq-api-service-deploy-sample-9f8d9c988    0         0         0       5h53m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.1   app=bq-api-service,pod-template-hash=9f8d9c988

更新回之前的版本, 与一般的更新不同, 因为之前已经有1个RS 是for image 1.1.2的所以这次k8s 重用了之前的rs而并没有增加1个



查看deployment event

kubectl describe deployment bq-api-service-deploy-sample

Events:Type    Reason             Age                 From                   Message----    ------             ----                ----                   -------Normal  ScalingReplicaSet  12m (x2 over 131m)  deployment-controller  Scaled up replica set bq-api-service-deploy-sample-8d49d9845 to 3Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled up replica set bq-api-service-deploy-sample-8d49d9845 to 2Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled down replica set bq-api-service-deploy-sample-7bff8fbc4b to 4Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled down replica set bq-api-service-deploy-sample-7bff8fbc4b to 3Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled up replica set bq-api-service-deploy-sample-8d49d9845 to 4Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled down replica set bq-api-service-deploy-sample-7bff8fbc4b to 2Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled up replica set bq-api-service-deploy-sample-8d49d9845 to 5Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled down replica set bq-api-service-deploy-sample-7bff8fbc4b to 1Normal  ScalingReplicaSet  12m                 deployment-controller  Scaled down replica set bq-api-service-deploy-sample-7bff8fbc4b to 0

可以看到回滚的实现就是无非把1.1.2的rs 里的pod副本逐渐增加到5, 而1.1.3 rs的pod副本从5 减少到0




查看revisions
root@k8s-master:~# kubectl rollout history deployment/bq-api-service-deploy-sample
deployment.apps/bq-api-service-deploy-sample 
REVISION  CHANGE-CAUSE
1         <none>
3         <none>
4         <none>

并我预想中的 1, 2,3 变成 1,2,3,4 而是把2删除了




用恢复备份的方法来回到1.1.1 版本

上面的方法其实有限制的, 前提就是 1.1.2的镜像还在server or GAR里存在

而用恢复备份的方法并没有限制

命令:
kubectl rollout undo deployment/deployment_name --to-revision=x x就是revisions 数字
如果不提供x 则默认回滚到上1个版本 (本文例子是1.1.3)

执行

root@k8s-master:~# kubectl rollout undo deployment/bq-api-service-deploy-sample --to-revision=1
deployment.apps/bq-api-service-deploy-sample rolled back

执行成功, 而且提示是rolled back




检查deployment

版本已经恢复到1.1.1

root@k8s-master:~# kubectl get deploy -o wide --show-labels
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR             LABELS
bq-api-service-deploy-sample   5/5     5            5           6h12m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.1   app=bq-api-service   app=bq-api-service,author=Jason
root@k8s-master:~# 




检查rs

同样这种方法也能重用之前的rs (1.1.1 版本)

root@k8s-master:~# kubectl get rs -o wide -l app=bq-api-service
NAME                                      DESIRED   CURRENT   READY   AGE     CONTAINERS                 IMAGES                                                                       SELECTOR
bq-api-service-deploy-sample-7bff8fbc4b   0         0         0       131m    bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.3   app=bq-api-service,pod-template-hash=7bff8fbc4b
bq-api-service-deploy-sample-8d49d9845    0         0         0       138m    bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.2   app=bq-api-service,pod-template-hash=8d49d9845
bq-api-service-deploy-sample-9f8d9c988    5         5         5       6h13m   bq-api-service-container   europe-west2-docker.pkg.dev/jason-hsbc/my-docker-repo/bq-api-service:1.1.1   app=bq-api-service,pod-template-hash=9f8d9c988
root@k8s-master:~# 




查看revisions
root@k8s-master:~# kubectl rollout history deployment/bq-api-service-deploy-sample
deployment.apps/bq-api-service-deploy-sample 
REVISION  CHANGE-CAUSE
3         <none>
4         <none>
5         <none>

变成了 3,4,5 其实就是1变成5

查看deployment event

kubectl describe deployment bq-api-service-deploy-sample

  Normal  ScalingReplicaSet  2m54s               deployment-controller  Scaled down replica set bq-api-service-deploy-sample-8d49d9845 to 4Normal  ScalingReplicaSet  2m54s               deployment-controller  Scaled up replica set bq-api-service-deploy-sample-9f8d9c988 to 2Normal  ScalingReplicaSet  2m53s               deployment-controller  Scaled down replica set bq-api-service-deploy-sample-8d49d9845 to 3Normal  ScalingReplicaSet  2m53s               deployment-controller  Scaled up replica set bq-api-service-deploy-sample-9f8d9c988 to 4Normal  ScalingReplicaSet  2m53s               deployment-controller  Scaled down replica set bq-api-service-deploy-sample-8d49d9845 to 2Normal  ScalingReplicaSet  2m53s               deployment-controller  Scaled up replica set bq-api-service-deploy-sample-9f8d9c988 to 5Normal  ScalingReplicaSet  2m53s               deployment-controller  Scaled down replica set bq-api-service-deploy-sample-8d49d9845 to 1Normal  ScalingReplicaSet  2m52s               deployment-controller  Scaled down replica set bq-api-service-deploy-sample-8d49d9845 to 0sh

一样, 1.1.2 的rs pod 副本数量被scale down ->0 , 1.1.1 的rs pod 副本数量 scale up-> 5

相关文章:

K8S - Deployment 的版本回滚

当前状态 先看deployment rootk8s-master:~# kubectl get deploy -o wide --show-labels NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES …...

53 v-bind 和 v-model 的实现和区别

前言 这个主要的来源是 偶尔的情况下 出现的问题 就比如是 el-select 中选择组件之后, 视图不回显, 然后 model 不更新等等 这个 其实就是 vue 中 视图 -> 模型 的数据同步, 我们通常意义上的处理一般是通过 模型 -> 数据 的数据同步, 比如 我们代码里面更新了 model.…...

VMware-16.0配置虚拟机网络模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、为什么要配置网络&#xff1f;二、配置步骤1.检查VMware服务2.进入配置页面3.添加网络模式1.Bridge2.NAT3.Host-only 4.DHCP租约5.静态IP 三、使用总结 前言…...

element-ui badge 组件源码分享

今日简单分享 badge 组件的源码实现&#xff0c;主要从以下两个方面&#xff1a; 1、badge 组件页面结构 2、badge 组件属性 一、badge 组件页面结构 二、badge 组件属性 补充几个标签的用途&#xff1a; sub&#xff1a;下标、sup&#xff1a;上标、var 变量 代码如下&am…...

MySQL中日期有关函数

本次记录了获取日期时间的多种方式&#xff0c;还有日期和字符串之间的转换&#xff0c;以及加减日期的操作。 获取时间 # 1.获取当前时间(年月日时分秒格式) select now();# 2.获取当前时间(年月日格式) select curdate();# 3.获取当前时间(时分秒格式) select curtime();# 4.…...

jdbc工具类

jdbc 工具类&#xff0c;具体见下面代码&#xff0c;直接可以用。 /*** version 1.0* descpription: jdbc工具类* date 2024/4/6*/ public class JDBCUtils {private static final String URL "jdbc:mysql://127.0.0.1:3306/mybatis";private static final String …...

Svelte Web 框架介绍

Svelte 是一个用于构建网络应用程序的现代框架&#xff0c;它与其他用户界面框架&#xff08;如React和Vue&#xff09;有着本质的不同。Svelte 的核心理念是在构建应用程序时&#xff0c;将大部分工作转移到编译步骤中&#xff0c;而不是在用户的浏览器中运行时处理。这种方法…...

IP地址获取不到的原因是什么?

在数字化时代的今天&#xff0c;互联网已成为我们日常生活和工作中不可或缺的一部分。而IP地址&#xff0c;作为互联网通信的基础&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到IP地址获取不到的问题&#xff0c;这会给我们的网络使用带来诸多不便。那么&a…...

Android APP加固利器:深入了解混淆算法与混淆配置

Android APP 加固是优化 APK 安全性的一种方法&#xff0c;常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆&#xff0c;使得反编译出来的代码很难阅读和理解&#xff…...

蓝桥杯真题Day47 倒计时6天:6道真题+回溯递归问题

[蓝桥杯 2019 省 A] 糖果 题目描述 糖果店的老板一共有M种口味的糖果出售。为了方便描述&#xff0c;我们将M 种口味编号 1∼ M。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果&#xff0c;而是K 颗一包整包出售。 幸好糖果包装上注明了其中 K 颗糖果的口味…...

通过UDP实现参数配置

来讲讲UDP的一种常见应用 我们知道UDP是一种无连接的网络传输协议&#xff0c;在发送数据时指定目标IP及端口就可以将数据发送出去&#xff0c;因此特别适合用作网络设备发现。 我们可以自定义一个通信端口&#xff0c;假设为55555。我们再制定一个协议用于查询目标设备&#x…...

解析Apache Kafka:在大数据体系中的基本概念和核心组件

关联阅读博客文章&#xff1a;探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章&#xff1a;深入解析大数据体系中的ETL工作原理及常见组件 关联阅读博客文章&#xff1a;深度剖析&#xff1a;计算机集群在大数据体系中的关键角色和技术要点 关联阅读博客文章&a…...

独角数卡对接码支付收款教程

1、到码支付后台找到支付配置。2、将上面的复制依次填入&#xff0c;具体看下图&#xff0c;随后点立即添加 商户ID商户PID 商户KEY异步不能为空 商户密钥商户密钥...

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…...

LabVIEW太赫兹波扫描成像系统

LabVIEW太赫兹波扫描成像系统 随着科技的不断发展&#xff0c;太赫兹波成像技术因其非电离性、高穿透性和高分辨率等特点&#xff0c;在生物医学、材料质量无损检测以及公共安全等领域得到了广泛的应用。然而&#xff0c;在实际操作中&#xff0c;封闭性较高的信号采集软件限制…...

什么是stable diffusion?

&#x1f31f; Stable Diffusion&#xff1a;一种深度学习文本到图像生成模型 &#x1f31f; Stable Diffusion是2022年发布的深度学习文本到图像生成模型&#xff0c;主要用于根据文本的描述产生详细图像。它还可以应用于其他任务&#xff0c;如内补绘制、外补绘制&#xff0…...

KeyguardClockSwitch的父类

KeyguardClockSwitch 定义在KeyguardStatusView中, mClockView findViewById(R.id.keyguard_clock_container);KeyguardClockSwitch的父类为&#xff1a; Class Name: LinearLayout Class Name: KeyguardStatusView Class Name: NotificationPanelView Class Name: Notificat…...

Gradle系列(二):Groovy基础

Gradle系列(二)&#xff1a;Groovy基础 本篇文章继续讲下Groovy一些基础的语法。 1&#xff1a;Map map与List的用法很像&#xff0c;只不过值是一个K:V的键值对。 下面是是Groovy中Map的定义&#xff1a; task testMap { def map [‘width’:1280,‘height’:1960] prin…...

PW1503限流芯片:可达3A限流,保障USB电源管理安全高效

在电源管理领域&#xff0c;开关的性能直接关系到设备的稳定性和安全性。今天&#xff0c;我们将详细解析一款备受关注的超低RDS&#xff08;ON&#xff09;开关——PW1503。它不仅具有可编程的电流限制功能&#xff0c;还集成了多项保护机制&#xff0c;为各类电子设备提供了高…...

深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…...

Web3 革命:揭示区块链技术的全新应用

随着数字化时代的不断发展&#xff0c;区块链技术作为一项颠覆性的创新正在改变着我们的世界。而在这一技术的进步中&#xff0c;Web3正逐渐崭露头角&#xff0c;为区块链技术的应用带来了全新的可能性。本文将探讨Web3革命所揭示的区块链技术全新应用&#xff0c;并展望其未来…...

[实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?

在MyBatis框架中&#xff0c;传入参数使用#{para}和#{para, jdbcTypeBIGINT}的有什么区别呢&#xff1f; #{para}&#xff1a;这种写法表示使用MyBatis自动推断参数类型&#xff0c;并根据参数的Java类型自动匹配数据库对应的类型。例如&#xff0c;如果参数para的Java类型是Lo…...

高并发下的linux优化

针对高并发服务&#xff0c;对 Linux 内核和网络进行优化可以提高系统的性能和稳定性。本文将深入探讨如何对 Linux 内核和网络进行优化&#xff0c;包括调整内核参数、调整网络性能参数、使用 TCP/IP 协议栈加速技术、下面将介绍一些可用于优化Linux内核和网络的技术&#xff…...

不同设备使用同一个Git账号

想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法&#xff0c; 依次输入 git config user.name git config user.email第2种方法&#xff0c; 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…...

蓝桥杯算法题:区间移位

题目描述 数轴上有n个闭区间&#xff1a;D1,...,Dn。 其中区间Di用一对整数[ai, bi]来描述&#xff0c;满足ai < bi。 已知这些区间的长度之和至少有10000。 所以&#xff0c;通过适当的移动这些区间&#xff0c;你总可以使得他们的“并”覆盖[0, 10000]——也就是说[0, 100…...

提取word文档里面的图片

大家好&#xff0c;我是阿赵。   阿赵我写博客的时候的习惯是&#xff0c;先用word文档写好&#xff0c;然后再把word文档里面的图片另存&#xff0c;最后再在博客里面复制正文和上传图片。   而我写的文章一般配图都比较多&#xff0c;所以经常要做的一个功能就是另存图片…...

MybatisPlus总结

一、MyBatis回顾 &#xff08;1&#xff09;什么是MyBatis&#xff1a;MyBatis 是一款优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映…...

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start&#xff08;python版本的&#xff09;&#xff0c;我了解 grpc 内部使用的是 HTTP2&#xff0c;所以我就想着抓包来试试&#xff0c;下面就来记录一下这个过程中的探索。 注意&#xff1a;我的电脑上面安装了 Fiddler Classic&#xff0c;…...

【解决Jetson Nano 内存不足问题】纯命令行将 Conda 环境迁移到 SD 卡

前言 Jetson Nano 板载只有 16GB 的存储空间&#xff0c;在安装完 Ubuntu 和 Conda 环境后&#xff0c;剩余空间就捉襟见肘了&#xff0c;无法满足安装 PyTorch 等大型包的需求。此时如果你有一张SD卡&#xff0c;那么可以考虑将 Conda 环境迁移到 SD 卡上。 但网上的教程基本…...

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…...

网站建设内容和功能的介绍/网站开发从入门到实战

为深入贯彻落实《合肥工业大学“第二课堂成绩单”分模块实施细则》建设目标&#xff0c;11月15日&#xff0c;计算机与信息学院在翡翠科教楼举办学院第二课堂成绩单(体育健身模块)项目启动仪式&#xff0c;学院相关辅导员老师、团学干部、2019级各班班委骨干出席本次仪式。启动…...

网站平台开发要注意什么问题/今日头条国际军事新闻

在工作流Activiti的使用中&#xff0c;任务是不可或缺的元素&#xff0c;通过各种任务&#xff0c;来完成作业系统中各个环节的执行&#xff0c;任务分为用户任务、脚本任务、Java服务任务、邮件任务、手工任务、业务规则任务、调用活动(子流程)任务&#xff0c;下面就一一介绍…...

网站建设投资大概每年需要多少钱/网络营销师资格证报名

在Python中&#xff0c;一个.py文件就称之为一个模块&#xff08;Module&#xff09;。 模块有什么好处&#xff1f; 大大提高了代码的可维护性。便于代码引用&#xff0c;不必从零开始。当一个模块编写完毕&#xff0c;就可以被其他地方引用。我们在编写程序的时候&#xff…...

安徽最新天气预报/南宁关键词优化软件

问题&#xff1a; 安装了老版本的idea 14.0.3 导入项目后报&#xff1a;Dmaven.multiModuleProjectDirectory system property is not set 解决方法&#xff1a; setting-->runner-->VM Options -Dmaven.multiModuleProjectDirectory$M2_HOME 重新 clean install…...

西宁哪家网络公司做网站/网络营销方案设计范文

jmeter中通过jdbc方式连接mysql数据库的配置参考&#xff1a; Database URLjdbc:mysql://ip:port/dbname?useUnicodetrue&allowMultiQueries&characterEncodingUTF-8 JDBC Driver classcom.mysql.jdbc.Driver jmeter中配置截图&#xff1a; 转载于:https://www.cnblog…...

红色文创产品设计/成都高薪seo

第一步&#xff1a;数据库连接 <php//创建数据库的连接error_reporting(E_ALL & ~E_DEPRECATED);mysql_connect("localhost","admin","123.com")or die("数据库连接错误");//连接数据库地址用户名密码mysql_select_db("bo…...