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

【云原生-Kurbernetes篇】HPA 与 Rancher管理工具

文章目录

  • 一、Pod的自动伸缩
    • 1.1 HPA
      • 1.1.1 简介
      • 1.1.2 HPA的实现原理
      • 1.1.3 相关命令
    • 1.2 VPA
      • 1.2.1 简介
      • 1.2.2 VPA的组件
      • 1.2.3 VPA工作原理
    • 1.3 metrics-server简介
  • 二、 HPA的部署与测试
    • 2.1 部署metrics-server
      • Step1 编写metrics-server的配置清单文件
      • Step2 部署
      • Step3 测试kubectl top命令
    • 2.2 部署HPA
      • Step1 部署测试应用
      • Step2 创建HPA控制器
    • 2.3 测试HPA
      • 2.3.1 HPA自动扩容测试
      • 2.3.2 HPA自动回收测试
    • 思考:回收的时候,负载节点数量下降速度比较慢的原因?
  • 三、Rancher管理工具
    • 3.1 使用背景
    • 3.2 Rancher简介
    • 3.3 Rancher 的安装及配置
      • Step1 安装Rancher
      • Step2 登录 Rancher 平台
      • Step3 使用Rancher 管理已有的 k8s 集群
      • Step4 Rancher 部署监控系统
      • Step5 使用 Rancher 仪表盘管理 k8s 集群

一、Pod的自动伸缩

注:HPA和VPA不能同时使用

HPA 主要关注整个应用程序水平方向的伸缩,通过调整 Pod 的副本数量来应对负载变化;

VPA 则关注 Pod 内部容器的垂直伸缩,通过调整容器的资源限制来优化资源利用和性能。

1.1 HPA

1.1.1 简介

HPA: Pod水平自动伸缩,根据Pod的CPU(原生支持)或内存(后期的新版本支持)的使用率为控制器管理的Pod资源副本数量实现自动扩缩容。

1.1.2 HPA的实现原理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

利用metrics-server插件组件,定期的(默认为15s)收集Pod资源平均CPU负载情况,根据HPA配置的CPU内存的requests资源量百分比阈值动态调整Pod的副本数量

HPA扩容时 ,Pod副本数量上升会比较快

HPA缩容时 ,Pod副本数量下降会比较慢默认冷却时间为5m)。

1.1.3 相关命令

#获取特定命名空间(Namespace)下的HorizontalPodAutoscaler(HPA)资源列表
kubectl get hpa -n <命名空间>
#自动伸缩Kubernetes控制器资源
kubectl autoscale <控制器资源类型> <控制器资源名称> --min=<最小副本数> --max=<最大副本数> --cpu-percent=<requests资源量百分比阈值>
#详解
<控制器资源类型>: 控制器资源的类型,例如Deployment、ReplicaSet等。<控制器资源名称>: 控制器资源的名称,指定你要进行自动伸缩的资源。--min=<最小副本数>: 指定自动伸缩时的最小副本数。--max=<最大副本数>: 指定自动伸缩时的最大副本数。--cpu-percent=<requests资源量百分比阈值>: 指定自动伸缩的CPU利用率阈值百分比。当控制器资源的CPU利用率达到阈值时,将自动扩展副本数。

1.2 VPA

1.2.1 简介

VPA: Pod垂直自动伸缩 ,根据Pod容器的CPU和内存的使用率自动设置Pod容器的CPU和内存的requests资源量限制。

1.2.2 VPA的组件

在这里插入图片描述

1)Recommender

recommender 会定期收集容器的资源使用数据,例如CPU 和内存的使用情况。

然后,它会应用一些策略和算法来计算容器的实际资源需求,并生成建议的资源请求配置。

这个建议配置包括容器应该请求多少 CPU 和内存资源,以满足其性能需求。建议配置通常存储在kubernetes的资源请求对象中。

2)Updater

updater会监视 kubernetes 中的资源请求对象,检测到recommender 生成的建议配置后,将其应用于容器的 pod 。

这将导致容器的资源请求值被更新为建议的值,从而确保容器拥有足够的资源来满足其性能需求。

3)Admission Controller

admission controller 拦截创建或修改 pod 的请求,并在提交到 kubernetes API 服务器之前检查这些请求。

如果 pod 的资源请求配置不符合 VPA 建议器生成的建议配置, admission controller 将阻止这个请求,并返回错误。

这确保了只有受 VPA 管理的 Pod 能够使用建议的资源配置。

1.2.3 VPA工作原理

在这里插入图片描述

  1. 收集资源指标: VPA 通过与 Kubernetes 的 Metrics API 进行交互,获取关于容器和节点资源使用情况的指标数据。它可以收集 CPU 使用率、内存使用量等指标。
  2. 分析资源需求: VPA 将收集到的资源指标与用户定义的策略进行比较。策略可以是静态的,例如指定容器的最小和最大资源限制;或者是动态的,例如基于平均 CPU 使用率来调整容器的 CPU 分配。
  3. 生成建议:基于资源指标和策略的比较, VPA 生成针对每个容器的资源调整建议。这些建议可能包括增加或减少容器的 CPU 、内存等资源分配。
  4. 应用资源调整: VPA 将资源调整建议发送给 Kubernetes API 服务器,并通过修改 Pod 的规格 (Spec) 来应用资源调整。这可能涉及扩容或缩容 Pod ,调整容器的资源限制或请求等。
  5. 监测与迭代: VPA 持续监控 Pod 的资源使用情况,并根据需要进行进一步的资源调整。它可以根据实际情况动态地调整资源分配,以满足容器的需求。

总体而言, VPA 通过不断收集和分析资源指标,并根据定义的策略进行资源调整,实现了对容器资源的动态优化和自动化管理。这有助于提高资源利用率,减少资源浪费,并改善应用程序的性能和可靠性。

1.3 metrics-server简介

Metrics Server是一个 Kubernetes 插件,用于收集和提供集群中运行的 Pod 和 Node 的资源使用情况的度量数据。

在这里插入图片描述

部署了metrics server插件后,能够使用kubectl top命令,可以查看 Pod、Node、命名空间以及容器的资源利用率(如 CPU 和内存)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

kubectl top node|podkubectl get hpa -n 命名空间

二、 HPA的部署与测试

2.1 部署metrics-server

Step1 编写metrics-server的配置清单文件

#工作目录
mkdri /opt/hpa vim /opt/hpa/components.yaml
apiVersion: v1
kind: ServiceAccount
metadata:labels:k8s-app: metrics-servername: metrics-servernamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:k8s-app: metrics-serverrbac.authorization.k8s.io/aggregate-to-admin: "true"rbac.authorization.k8s.io/aggregate-to-edit: "true"rbac.authorization.k8s.io/aggregate-to-view: "true"name: system:aggregated-metrics-reader
rules:
- apiGroups:- metrics.k8s.ioresources:- pods- nodesverbs:- get- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:k8s-app: metrics-servername: system:metrics-server
rules:
- apiGroups:- ""resources:- pods- nodes- nodes/stats- namespaces- configmapsverbs:- get- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:k8s-app: metrics-servername: metrics-server-auth-readernamespace: kube-system
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccountname: metrics-servernamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:labels:k8s-app: metrics-servername: metrics-server:system:auth-delegator
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:auth-delegator
subjects:
- kind: ServiceAccountname: metrics-servernamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:labels:k8s-app: metrics-servername: system:metrics-server
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:metrics-server
subjects:
- kind: ServiceAccountname: metrics-servernamespace: kube-system
---
apiVersion: v1
kind: Service
metadata:labels:k8s-app: metrics-servername: metrics-servernamespace: kube-system
spec:ports:- name: httpsport: 443protocol: TCPtargetPort: httpsselector:k8s-app: metrics-server
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:k8s-app: metrics-servername: metrics-servernamespace: kube-system
spec:selector:matchLabels:k8s-app: metrics-serverstrategy:rollingUpdate:maxUnavailable: 0template:metadata:labels:k8s-app: metrics-serverspec:containers:- args:- --cert-dir=/tmp- --secure-port=4443- --kubelet-preferred-address-types=InternalIP- --kubelet-use-node-status-port- --kubelet-insecure-tlsimage: registry.cn-beijing.aliyuncs.com/dotbalo/metrics-server:v0.4.1imagePullPolicy: IfNotPresentlivenessProbe:failureThreshold: 3httpGet:path: /livezport: httpsscheme: HTTPSperiodSeconds: 10name: metrics-serverports:- containerPort: 4443name: httpsprotocol: TCPreadinessProbe:failureThreshold: 3httpGet:path: /readyzport: httpsscheme: HTTPSperiodSeconds: 10securityContext:readOnlyRootFilesystem: truerunAsNonRoot: truerunAsUser: 1000volumeMounts:- mountPath: /tmpname: tmp-dirnodeSelector:kubernetes.io/os: linuxpriorityClassName: system-cluster-criticalserviceAccountName: metrics-servervolumes:- emptyDir: {}name: tmp-dir
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:labels:k8s-app: metrics-servername: v1beta1.metrics.k8s.io
spec:group: metrics.k8s.iogroupPriorityMinimum: 100insecureSkipTLSVerify: trueservice:name: metrics-servernamespace: kube-systemversion: v1beta1versionPriority: 100

Step2 部署

kubectl apply -f components.yamlkubectl get pods -n kube-system | grep metrics-server

Step3 测试kubectl top命令

kubectl top nodekubectl top pods -A

在这里插入图片描述

hpa-example.tar 是谷歌基于 PHP 语言开发的,用于测试 HPA 的镜像,其中包含了一些可以运行 CPU 密集计算任务的代码。

2.2 部署HPA

Step1 部署测试应用

先拉取镜像

docker pull mirrorgooglecontainers/hpa-example                  

在这里插入图片描述

再编写资源配置清单文件

apiVersion: apps/v1
kind: Deployment
metadata:labels:run: php-apachename: php-apache
spec:replicas: 1selector:matchLabels:run: php-apachetemplate:metadata:labels:run: php-apachespec:containers:- image: mirrorgooglecontainers/hpa-examplename: php-apacheimagePullPolicy: IfNotPresentports:- containerPort: 80resources:requests:cpu: 200m
---
apiVersion: v1
kind: Service
metadata:name: php-apache
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:

声明式创建

kubectl apply -f hpa-pod.yamlkubectl get pods

在这里插入图片描述

Step2 创建HPA控制器

使用 kubectl autoscale 命令,设置 cpu 负载阈值为请求资源的 50%,指定最少负载节点数量为 1 个,最大负载节点数量为 10 个。

#创建HPA
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10kubectl get hpa

在这里插入图片描述

可以看到,replicas 变动范围是最小 1,最大 10;目标 CPU 利用率(utilization)为 50%

kubectl top pods

在这里插入图片描述

2.3 测试HPA

HPA可以根据应用程序的负载情况自动调整的副本数量

2.3.1 HPA自动扩容测试

当应用程序的负载增加时,HPA会根据预先设置的规则自动扩展Pod的副本数量,以应对高流量或负载的增加。

kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

利用 busybox 镜像临时生成一个 pod,用 while 循环不停的访问 php-apache 的 service。

而 php-apache 中的 http://k8s.gcr.io/hpa-example 镜像已经配置了进行消耗 CPU 的计算网页,所以 php-apache pod 的 CPU 负载会很快增长

#打开一个新的窗口,查看负载节点数目
kubectl get hpa -w

在这里插入图片描述
在这里插入图片描述

2.3.2 HPA自动回收测试

降低CPU负载,观察HPA的回收。

当应用程序的负载减少时,HPA会自动缩减Pod的副本数量

在刚才运行增加负载的窗口运行<Ctrl> + C,终止命令

在这里插入图片描述

kubectl get hpa -w

在这里插入图片描述

思考:回收的时候,负载节点数量下降速度比较慢的原因?

防止因回收策略比较积极,而导致的K8s集群认为访问流量变小而快速收缩负载节点数量,从而会引发仅剩的负载节点又承受不了高负载的压力导致崩溃,最终影响业务的风险。

归根结底,还是为了保证业务的稳定性和正常运行。

三、Rancher管理工具

3.1 使用背景

管理单个K8S集群kubectl(K8S命令行管理工具) 、dashboard(K8S官方出品的UI界面图形化管理工具) 。

同时管理多个K8S集群的工具:rancherkubespherek9s

3.2 Rancher简介

官网: https://docs.rancher.cn/

Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。

3.3 Rancher 的安装及配置

ServerHostnameIP
控制节点master01192.168.2.100
工作节点node01192.168.2.102
工作节点node02192.168.2.103
Rancher节点rancher192.168.2.107

Step1 安装Rancher

安装docker

yum install -y yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.iosystemctl enable docker.service --now

详解见我的博客:【Docker从入门到入土 1】Docker架构、镜像操作和容器操作-CSDN博客

在所有 node 节点下载 rancher-agent 镜像

#所有 node 节点
docker pull rancher/rancher-agent:v2.5.7

在这里插入图片描述

在 rancher 节点下载 rancher 镜像

docker pull rancher/rancher:v2.5.7

在这里插入图片描述

启动Rancher平台

在本地机器上使用Rancher进行容器编排和管理。

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
#--restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器docker ps -a|grep rancher

在这里插入图片描述

Step2 登录 Rancher 平台

需要先等一会儿,

浏览器访问 http://192.168.2.107
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Step3 使用Rancher 管理已有的 k8s 集群

选择【添加集群】--->点击【导入】--->【集群名称】设置为 k8s-cluster--->点击【创建】

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

#选择复制第三条命令绕过证书检查导入 k8s 集群
#在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可
curl --insecure -sfL https://192.168.2.107/v3/import/hvcjb84tv8w99znk6wt58rvtddxzq992qd7f5l9z7dhs775blw2xr4_c-std9l.yaml | kubectl apply -f -

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

kubectl get ns

在这里插入图片描述

cattle-system是Rancher系统中的一个命名空间(Namespace),用于存储Rancher本身的管理组件和相关资源配置。

fleet-system是Rancher中的一个命名空间(Namespace),用于存储Fleet项目的相关资源配置,是由Rancher和Fleet系统自动生成的。

kubectl get pods -n cattle-system -o widekubectl get pods -n fleet-system -o wide

在这里插入图片描述

Step4 Rancher 部署监控系统

点击【启用监控以查看实时监控】—>【监控组件版本】选择 0.2.1,其他的默认即可—>点击【启用监控】。

启动监控时间可能比较长,需要等待10分钟左右
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Step5 使用 Rancher 仪表盘管理 k8s 集群

创建 nginx 服务为例。

进入集群仪表盘界面

创建命名空间 namespace

点击左侧菜单【Namespaces】--->点击右侧【Create】
【Name】输入 dev,【Description】选填可自定义
点击右下角【Create】

在这里插入图片描述

创建 Deployment 资源

点击左侧菜单【Deployments】--->点击右侧【Create】
【Namespace】下拉选择 dev,【Name】输入 nginx-dev,【Replicas】输入 3点击中间选项【Container】
【Container Image】输入 nginx:1.14,【Pull Policy】选择 IfNotPresent

在这里插入图片描述

在【Pod Labels】下点击【Add Lable】,【Key】输入 app,【Value】输入 nginx

在这里插入图片描述

点击中间选项【Labels and Annotations】--->点击【Add Label】
【Key】输入 app,【Value】输入 nginx点击右下角【Create】

在这里插入图片描述
在这里插入图片描述

创建 service

点击左侧菜单【Services】---> 点击右侧【Create】---> 点击【Node Port】

在这里插入图片描述

【Namespace】下拉选择 dev
【Name】输入 nginx-dev
【Port Name】输入 nginx
【Listening Port】输入 80
【Target Port】输入 80
【Node Port】输入 30180

在这里插入图片描述

点击中间选项【Selectors】
【Key】输入 app
【Value】输入 nginx
点击右下角【Create】

在这里插入图片描述

点击【nginx-dev】查看 service 是否已关联上 Pod
#点击 service 资源的节点端口 30180/TCP,可以访问内部的 nginx 页面了

在这里插入图片描述

相关文章:

【云原生-Kurbernetes篇】HPA 与 Rancher管理工具

文章目录 一、Pod的自动伸缩1.1 HPA1.1.1 简介1.1.2 HPA的实现原理1.1.3 相关命令 1.2 VPA1.2.1 简介1.2.2 VPA的组件1.2.3 VPA工作原理 1.3 metrics-server简介 二、 HPA的部署与测试2.1 部署metrics-serverStep1 编写metrics-server的配置清单文件Step2 部署Step3 测试kubect…...

Python学习笔记(4)

《Python编程&#xff1a;从入门到实践》学习笔记 1.文件和异常 1.1 从文件中读取数据 1.1.1 读取整个文件 要读取文件&#xff0c;需要一个包含几行文本的文件。下面首先来创建一个文件&#xff0c;它包含精确到小数 点后30位的圆周率值&#xff0c;且在小数点后每10位处都换…...

算法通关村第十二关-青铜挑战字符串

大家好我是苏麟 , 今天带来字符串专题 . 转换成小写字母 描述 : 给你一个字符串 s &#xff0c;将该字符串中的大写字母转换成相同的小写字母&#xff0c;返回新的字符串。 题目 : LeetCode 709.转换成小写字母 : 709. 转换成小写字母 分析 : 这个题可以先遍历整个字符串…...

网站被反诈拦截该怎么申诉与解封

随着互联网的发展&#xff0c;网络诈骗问题也日益突出。为了打击这类问题&#xff0c;反诈中心采取了一系列的措施&#xff0c;如打击违规诈骗网站和APP&#xff0c;标记诈骗手机号等。虽然这些措施在一定程度上取得了效果&#xff0c;但是也不可避免会出现审核不到位的情况。 …...

【机器学习】033_反向传播

一、计算图、反向传播原理 1. 回顾前向传播 例&#xff1a;假设现在有一个神经网络&#xff0c;其仅有一个输出层和一个神经单元 定义 定义 &#xff0c;即激活函数对激活值不再做具体处理 定义平方损失函数 &#xff0c;计算a的值与真实值的差距 此时&#xff0c;通过计算…...

关于缓存和数据库一致性问题的深入研究

如何保证缓存和数据库一致性&#xff0c;这是一个老生常谈的话题了。 但很多人对这个问题&#xff0c;依旧有很多疑惑&#xff1a; 到底是更新缓存还是删缓存&#xff1f;到底选择先更新数据库&#xff0c;再删除缓存&#xff0c;还是先删除缓存&#xff0c;再更新数据库&…...

vim模式用法总结

0.前言 我们用gcc编译文件的时候&#xff0c;如果发生了下面的错误&#xff0c;那么如何用vim打开的时候就定位到&#xff1f; 我们可以知道&#xff0c;这是第6行出现了错误&#xff1b; 所以我们使用vim打开的时候多输入个这个&#xff0c;我们就可以快速定位了 vim test.c 6…...

基于深度学习的单帧图像超分辨率重建综述

论文标题&#xff1a;基于深度学习的单帧图像超分辨率重建综述作者&#xff1a; 吴 靖&#xff0c;叶晓晶&#xff0c;黄 峰&#xff0c;陈丽琼&#xff0c;王志锋&#xff0c;刘文犀发表日期&#xff1a;2022 年9 月阅读日期 &#xff1a;2023.11.18研究背景&#xff1a; 图像…...

开源与闭源:创新与安全的平衡

目录 一、开源和闭源的优劣势比较 一、开源软件的优劣势 优势 劣势 二、闭源软件的优劣势 优势 劣势 二、开源和闭源对大模型技术发展的影响 一、机器学习领域 二、自然语言处理领域 三、数据共享、算法创新与业务拓展的差异 三、开源与闭源的商业模式比较 一、盈…...

C# 22H2之后的windows版本使用SetDynamicTimeZoneInformation设置时区失败处理

使用SetDynamicTimeZoneInformation设置时区返回false&#xff0c;设置失败。 使用PowerShell设置Set-TimeZone成功。 /// <summary> /// 设置本地时区 /// 参数取值"China Standard Time"&#xff0c;即可设置为中国时区 /// </summary> /// <param …...

分布式与微服务 —— 初始

前言 距今微服务的提出已经过去快十个春秋&#xff0c;网络上的博文讲微服务也是一抓一大把&#xff0c;但是荔枝仍然觉得还是有必要自己梳理一下整个知识体系。在这篇文章中&#xff0c;荔枝将会以一个初学者的角度来切入&#xff0c;从分布式系统和微服务架构引入&#xff0c…...

多因素方差分析(Multi-way Analysis of Variance) R实现

1, data0507 flower 是某种植物在两个海拔和两个气温下的开花高度&#xff0c;采用合适 的统计方法&#xff0c;检验该种植物的开花高度在不同的海拔之间和不同的气温之间有无差异&#xff1f;如果有差异&#xff0c;具体如何差异的&#xff1f;&#xff08;说明依据、结论等关…...

git撤销某一次commit提交

一&#xff1a;撤销上一次commit提交&#xff0c;但不删除修改的代码 可以使用使用VSCode 二&#xff1a;使用 git reset --hard命令删除提交时&#xff0c;将会删除该提交及其之后的所有更改&#xff08;相当于你想要回滚到的提交的提交ID&#xff09; git reset --hard 版本…...

数据结构详细笔记——图

文章目录 图的定义图的存储邻接矩阵法邻接表法邻接矩阵法与邻接表法的区别 图的基本操作图的遍历广度优先遍历&#xff08;BFS&#xff09;深度优先遍历&#xff08;DFS&#xff09;图的遍历和图的连通性 图的定义 图G由顶点集V和边集E组成&#xff0c;记为G(V,E)&#xff0c;…...

黑马React18: 基础Part II

黑马React: 基础2 Date: November 16, 2023 Sum: 受控表单绑定、获取DOM、组件通信、useEffect、Hook、优化B站评论 受控表单绑定 受控表单绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 准备一个React状态值 const [value, se…...

Maven工程继承关系,多个模块要使用同一个框架,它们应该是同一个版本,项目中使用的框架版本需要统一管理。

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…...

Selenium UI 自动化

一、Selenium 自动化 1、什么是Selenium&#xff1f; Selenium是web应用中基于UI的自动化测试框架。 2、Selenium的特点&#xff1f; 支持多平台、多浏览器、多语言。 3、自动化工作原理&#xff1f; 通过上图&#xff0c;我们可以注意到3个角色&#xff0c;下面具体讲解一…...

竞赛 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…...

【unity3D-网格编程】01:Mesh基础属性以及用代码创建一个三角形

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的网格编程方面学习笔记 &#x1f236;本篇是unity的网格编程系列01-mesh基础属性 网格编程系列01 mesh基础属性实践操作用代码初始化一个三角形在三角形的基础上改成正…...

Java贪吃蛇小游戏

Java贪吃蛇小游戏 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.LinkedList; import java.util.Random;publi…...

AI系统规范过拟合:多目标优化中的性能权衡与防范策略

1. 项目概述&#xff1a;当AI系统“偏科”时&#xff0c;我们该如何应对&#xff1f;在AI系统开发的日常工作中&#xff0c;我们常常会遇到一个令人头疼的“偏科”现象&#xff1a;为了让模型在某个特定指标上表现优异&#xff0c;我们投入了大量精力进行优化&#xff0c;结果却…...

Unix架构详细介绍

Unix 是一种具有高度模块化和可扩展性的操作系统&#xff0c;其架构设计使其在多用户和多任务环境中表现出色。以下是 Unix 架构的详细介绍&#xff0c;包括其主要组成部分和功能。Unix 架构的组成部分Unix 的架构通常可以分为以下几个主要部分&#xff1a;内核&#xff08;Ker…...

AI与P-VAR模型融合:量化电子商务对国际贸易的动态影响

1. 项目概述&#xff1a;当AI遇见P-VAR&#xff0c;如何洞察电商的全球贸易脉搏最近和几位做国际贸易和宏观经济研究的朋友聊天&#xff0c;大家不约而同地提到了一个现象&#xff1a;传统的贸易模型在解释当下跨境电商、直播带货等新业态对全球货物流通的影响时&#xff0c;越…...

基于MCP协议构建AI助手与Google Drive的安全连接方案

1. 项目概述&#xff1a;一个连接Google生态与AI的桥梁 如果你正在尝试让AI助手&#xff08;比如Claude、Cursor等&#xff09;直接操作你的Google Drive、Gmail或者Google Calendar&#xff0c;而不是仅仅通过网页搜索获取信息&#xff0c;那么你很可能已经遇到了“MCP”&…...

CANN/pyasc向量加法API

asc.language.basic.add 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口&#xff0c;支持在昇腾AI处理器上加速计算&#xff0c;接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.add(dst: Loca…...

CANN/opbase快速入门指南

快速入门 【免费下载链接】opbase 本项目是CANN算子库的基础框架库&#xff0c;为算子提供公共依赖文件和基础调度能力。 项目地址: https://gitcode.com/cann/opbase 快速体验项目前&#xff0c;请参考本项目README完成环境准备和源码下载&#xff0c;此处不再赘述。 …...

别被代理忽悠了!程序员视角下的专利技术交底书避坑指南(附真实案例)

技术人必备的专利交底书实战手册&#xff1a;从核心创新到授权落地的全流程解析 当你在深夜调试代码时灵光一现的算法优化&#xff0c;或是为了解决某个技术瓶颈而设计的独特架构方案&#xff0c;这些都可能成为改变行业游戏规则的技术专利。但现实情况是&#xff0c;超过60%的…...

认知科学四维智能:构建下一代AGI评估框架与虚拟社区测试实践

1. 项目概述&#xff1a;为什么我们需要一个全新的AGI评估框架&#xff1f;在过去的几年里&#xff0c;我们见证了以GPT系列为代表的大语言模型&#xff08;LLMs&#xff09;在文本生成、代码编写乃至多模态理解上取得的惊人突破。作为一名长期关注AI技术发展的从业者&#xff…...

CANN/asc-tools msopgen算子模板样例

【免费下载链接】asc-tools Ascend C Tools仓是CANN基于Ascend C编程语言推出的配套调试工具仓。 项目地址: https://gitcode.com/cann/asc-tools msopgen使用新自定义算子工程模板样例 概述 本样例介绍msopgen工具按照新算子工程模板生成新自定义算子工程。以AddCust…...

GPT-3.5在独裁者游戏中的公平性实验:AI决策的统计模式与伦理启示

1. 项目概述&#xff1a;当AI成为“裁判”&#xff0c;公平性如何定义&#xff1f;最近在翻看一些行为经济学和博弈论的资料时&#xff0c;一个经典的实验模型——“独裁者游戏”——反复出现在眼前。这个实验很简单&#xff1a;两个人&#xff0c;一笔钱。一个人是“独裁者”&…...