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

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类

1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便

使用一条kubectl命令和参数选项来实现资源对象管理操作

即通过命令的方式来实

1.2声明式资源管理方式:yaml文件管理

使用yaml配置文件或者json配置文件来定义配置,实现资源对象的管理操作

现对资源的管理

二、陈述式资源管理方法

1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
3.kubectl 的命令大全
kubectl --help
k8s中文文档:http://docs.kubernetes.org.cn/683.html
4.对资源的增、删、查操作比较方便,但对改的操作就不容易了

#查看版本信息
kubectl version#查看资源对象简写
kubectl api-resources#查看集群信息 
kubectl cluster-info#配置kubectl自动补全   只是当前生效,永久生效加入 ~/.bashrc中
source <(kubectl completion bash)#node节点查看日志
journalctl -u kubelet -f

2.1查看版本信息

kubectl version

2.2查看资源对象简写 (true代表支持命名空间  false代表不支持命名空间)

kubectl api-resources

 2.3配置kubectl自动补全

source <(kubectl completion bash)

 2.4node节点查看日志

journalctl -u kubelet -f

 三、基本信息查看

kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n 指定命令空间,-o 指定输出格式
resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)
--all-namespaces 或 -A :表示显示所有命令空间,
--show-labels :显示所有标签
-l app :仅显示标签为app的资源
-l app=nginx :仅显示包含app标签,且值为nginx的资源//查看 master 节点状态
kubectl get componentstatuses
kubectl get cs//查看命令空间
kubectl get namespace
kubectl get ns
//命令空间的作用:用于允许不同 命令空间 的 相同类型 的资源 重名的//查看default命名空间的所有资源
kubectl get all [-n default]//创建命名空间app
kubectl create ns app
kubectl get ns//删除命名空间app
kubectl delete namespace app
kubectl get ns			//在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl)
kubectl create deployment nginx-wl --image=nginx  -n kube-public //描述某个资源的详细信息
kubectl describe deployment nginx-wl -n kube-public
kubectl describe pod nginx-wl-d47f99cb6-hv6gz -n kube-public//查看命名空间kube-public 中的pod 信息
kubectl get pods -n kube-public
NAME                       READY   STATUS    RESTARTS   AGE
nginx-wl-d47f99cb6-hv6gz   1/1     Running   0          24m//kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录
kubectl exec -it nginx-wl-d47f99cb6-hv6gz bash -n kube-public//删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来
kubectl delete pod nginx-wl-d47f99cb6-hv6gz -n kube-public//若pod无法删除,总是处于terminate状态,则要强行删除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod//扩缩容
kubectl scale deployment nginx-wl --replicas=2 -n kube-public	# 扩容
kubectl scale deployment nginx-wl --replicas=1 -n kube-public	# 缩容//删除副本控制器
kubectl delete deployment nginx-wl -n kube-public
kubectl delete deployment/nginx-wl -n kube-public

 3.1查看命名空间

kubectl get namespace
kubectl get ns
命名空间的作用:用于允许不同 命名空间 的 相同类型 的资源 可以重名

 

 获取所有命名空间中的 Pod 列表

kubectl get pod --all-namespaces
kubectl get pod -A#获取所有命名空间中的 Pod 列表

 kubectl get pod --all-namespaces=kubetl get pod -A

-n 指定命名空间

 

 命令空间的作用:用于允许不同 命令空间 的 相同类型 的资源 重名的

3.2 查看所有节点标签

仅显示标签为app的资源

 3.3查看 master 节点状态

kubectl get componentstatuses
kubectl get cs

3.4查看default命名空间的所有资源 

kubectl get all [-n default]#这个命令 kubectl get all -n default 用于获取命名空间为 default 的所有资源,包括 Pod、Service、Deployment 等。具体来说,该命令包含以下部分:
kubectl:Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
get all:表示要获取指定命名空间中的所有资源,包括 Pod、Service、Deployment 等。
-n default:指定要获取资源的命名空间为 default

 3.5创建命名空间

kubectl create ns hah
kubectl get ns

同一命名空间不能有相同的名字,不同命名空间可以有相同的名字 

 3.6删除命名空间

kubectl delete namespaces hah =kubectl delete ns hah
kubectl get ns

可以删除,但是如果这个命名空间下面有资源,资源就都会被删除,再三考虑哦 

3.7在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-aa) 
 

 kubectl create deployment nginx-aa --image=nginx -n kube-public#这个命令 kubectl create deployment nginx-aa --image=nginx -n kube-public 用于在命名空间 kube-public 中创建一个名为 nginx-aa 的 Deployment,并使用 nginx 镜像作为 Deployment 中的容器。kubectl:Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
create deployment nginx-aa:创建一个名为 nginx-aa 的 Deployment。
--image=nginx:指定 Deployment 中要使用的容器镜像为 nginx。
-n kube-public:指定要将 Deployment 创建在 kube-public 命名空间中。

kubectl create <pod控制器名> <pod名称> --image=镜像名

                          Deployment:无状态应用部署

                          Statefulset:有状态应用部署

                          Replicaset:副本数量控制器

                          Daemonset:确保所有节点运行同一类 Pod

                          Cronjob:计划性任务

示例二:

用kubectl create 创建

用于创建deployment 控制器管理的pod

 随后,删除

用create创建的pod资源不会被删除,即使删除也会从node1节点转移到node2节点 

 用run直接创建(删除就没有了)

run:用于创建一个自主式/静态 Pod

 

3.8描述某个资源的详细信息

kubectl describe deployment nginx-aa -n kube-publickubectl describe pod nginx-aa-66b8d4497f-cdj44 -n kube-public

 

 

3.9查看命名空间kube-public 中的pod 信息

kubectl get pods -n kube-public

3.10kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录 

 补充:

kubectl get pods -n kube-public -owide#用于获取在 kube-public 命名空间中运行的所有 Pods 的详细信息,包括它们的名称、状态、IP 地址等。 -n kube-public 参数指定了命名空间为 kube-public,而 -owide 参数指定了输出的格式为 wide,这样可以显示更多的列。#将会列出在 kube-public 命名空间中运行的所有 Pods,并显示它们的详细信息。

 3.11删除(重启)pod资源,由于存在deployment/rc之类的副本控制器,删除pod也会重新拉起来

若pod无法删除,总是处于terminate状态,则要强行删除pod 

kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod

3.12扩缩容

​kubectl scale deployment nginx-bb --replicas=5 -n kube-public   # 扩容kubectl scale deployment nginx-bb --replicas=2 -n kube-public   # 缩容kubectl  scale pod控制器类型 资源名称 --replicas=副本数  -n 命名空间
##副本数决定扩容还是缩容

扩容:

11.2缩容

 3.13删除副本控制器

kubectl delete deployment nginx-bb -n kube-public
kubectl delete deployment/nginx-aa -n kube-public

 3.14查看标签

kubectl get pod --show-labels  #查看所有资源的标签
kubectl get pod -l app         #指定标签的键查看,只显示标签为app的资源
kubectl get pod -l app -A
kubectl get pod -l app=nginx-deployment #显示包含app标签且值为nginx的资源

kubectl get pod -l app=nginx-deployment 

 四、项目的生命周期

项目的生命周期:创建-->发布-->更新-->回滚-->删除

 4.1创建    kubectl create命令

创建并运行一个或多个容器镜像。
创建一个deployment 或job 来管理容器。
kubectl create --help


kubectl -n 命名空间 create deployment 资源名称 --image=镜像 --port=容器的端口 --
replicas=副本数

​
启动 nginx 实例,暴露容器端口 80,设置副本数 3
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3kubectl -n 命名空间 create deployment 资源名称 --image=镜像 --port=容器的端口 --replicas=副本数kubectl get pods
kubectl get all

 

可以指定命名空间,也可不指定,此处指定命名空间为test

查看命名空间,刚才创建的nginx=test有3个副本

4.2发布    kubectl expose命令 

  • 将资源暴露为新的 Service
  • kubectl expose --help

kubectl expose deployment 控制器名称 --name=服务名称 --port=服务端口 --target-port=pod端口

为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

示例:

kubectl expose deployment nginx-test --port=8082 --target-port=80 --name=nginx-svc --type=NodePort -n test#用于在 test 命名空间中,为名为 nginx-test 的 Deployment 创建一个 Service,并将其暴露为 NodePort 类型的服务。具体来说,该命令包含以下部分:kubectl:Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
expose deployment nginx-test:为名为 nginx-test 的 Deployment 创建一个 Service。
--port=8082:指定 Service 使用的端口为 8082。
--target-port=80:指定 Service 要将流量转发到 Deployment 中的容器的端口 80。
--name=nginx-svc:指定 Service 的名称为 nginx-svc。
--type=NodePort:指定 Service 的类型为 NodePort,这将在每个节点上随机选择一个端口,并将该端口映射到 Service 的目标端口上。
-n test:指定 Service 创建在 test 命名空间中。
通过执行这个命令,您为名为 nginx-test 的 Deployment 创建了一个 NodePort 类型的 Service,并将其暴露在节点的随机端口上,从而允许外部流量访问该服务

8082这个端口是随意定的哦

使用node的IP地址进行检测,node是运行服务的、master是用来管理的

浏览器检测

xhell也可以直接检测

Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的(Pod可能会重建),另一方面则是因为一组 Pod 实例之间总会有负载均衡的需求。
Service 通过 Label Selector 实现的对一组的 Pod 的访问。
对于容器应用而言,Kubernetes 提供了基于 VIP(虚拟IP) 的网桥的方式访问 Service,再由 Service 重定向到相应的 Pod

service 的 type 类型: 

ClusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)
NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。

每个端口只能是一种服务,端口范围只能是 30000-32767。

LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置Service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。

externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。 tgc.benet.com   www.benet.com 

 

 

headless clusterIP  无头模式   名称 

查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE            NOMINATED NODE
pod/nginx-cdb6b5b95-fjm2x   1/1     Running   0          44s   172.17.26.3   192.168.80.11   <none>
pod/nginx-cdb6b5b95-g28wz   1/1     Running   0          44s   172.17.36.3   192.168.80.12   <none>
pod/nginx-cdb6b5b95-x4m24   1/1     Running   0          44s   172.17.36.2   192.168.80.12   <none>NAME                    TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE   SELECTOR
service/kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        14d   <none>
service/nginx-service   NodePort    10.0.0.189   <none>        80:44847/TCP   18s   run=nginx//查看关联后端的节点
kubectl get endpoints//查看 service 的描述信息
kubectl describe svc nginx//在 node01 节点上操作,查看负载均衡端口
yum install ipvsadm -y
ipvsadm -Ln
//外部访问的IP和端口
TCP  192.168.80.11:44847 rr-> 172.17.26.3:80               Masq    1      0          0         -> 172.17.36.2:80               Masq    1      0          0         -> 172.17.36.3:80               Masq    1      0          0     
//pod集群组内部访问的IP和端口
TCP  10.0.0.189:80 rr-> 172.17.26.3:80               Masq    1      0          0         -> 172.17.36.2:80               Masq    1      0          0         -> 172.17.36.3:80               Masq    1      0          0         //在 node02 节点上操作,同样方式查看负载均衡端口
yum install ipvsadm -y
ipvsadm -Ln
TCP  192.168.80.12:44847 rr-> 172.17.26.3:80               Masq    1      0          0         -> 172.17.36.2:80               Masq    1      0          0         -> 172.17.36.3:80               Masq    1      0          0         TCP  10.0.0.189:80 rr-> 172.17.26.3:80               Masq    1      0          0         -> 172.17.36.2:80               Masq    1      0          0         -> 172.17.36.3:80               Masq    1      0          0         curl 10.0.0.189
curl 192.168.80.11:44847
//在master01操作 查看访问日志
kubectl logs nginx-cdb6b5b95-fjm2x
kubectl logs nginx-cdb6b5b95-g28wz
kubectl logs nginx-cdb6b5b95-x4m24

--------------------------------------------------------------------------------------------------------------------------------- 

查看pod网络状态详细信息和 Service暴露的端口
[root@master01 ~]#kubectl get pods,svc -o wide -n test
NAME                              READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
pod/nginx-test-7b97cf7f78-dztsx   1/1     Running   0          13m   10.244.1.60   node01   <none>           <none>
pod/nginx-test-7b97cf7f78-rg7bx   1/1     Running   0          40m   10.244.1.54   node01   <none>           <none>
pod/nginx-test-7b97cf7f78-sx9q5   1/1     Running   0          40m   10.244.1.56   node01   <none>           <none>NAME                TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
service/nginx-svc   NodePort   10.96.253.185   <none>        8082:31385/TCP   86m   app=nginx-test#查看关联后端的节点
kubectl get endpoints#查看 service 的描述信息
kubectl describe svc nginx#在 node 节点上操作,查看负载均衡端口
yum install ipvsadm -y
ipvsadm -Ln

查看pod网络状态详细信息和 Service暴露的端口

kubectl get pods,svc -o wide -n test

查看关联后端的节点
kubectl get endpoints#用于获取当前 Kubernetes 集群中所有 Service 的端点信息。端点是 Service 后面的实际 Pod 的 IP 地址和端口。#查看 service 的描述信息
kubectl describe svc nginx

 在 node01 节点上操作,查看负载均衡端口

 因为发布的时候,service的port是8082

  在 node02 节点上操作,同样方式查看负载均衡端口 

4.3更新    kubectl set命令 

  • 更改现有应用资源一些信息。

kubectl set --help

 将nginx 版本更新为 1.15版本

kubectl set image deployment/nginx-zzz nginx=nginx:1.15 -n kube-public

 处于动态监听 pod 状态,由于使用的是滚动更新方式,所以会先生成一个新的pod,然后删除一个旧的pod,往后依次类推

kubectl get pods -w

 #再看更新好后的 Pod 的 ip 会改变

4.4回滚    kubectl rollout命令

  • 对资源进行回滚管理
  • kubectl rollout --help
//查看历史版本
kubectl rollout history deployment/nginx //执行回滚到上一个版本
kubectl rollout undo deployment/nginx//执行回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=1//检查回滚状态
kubectl rollout status deployment/nginx

查看历史版本

kubectl  rollout undo dployment/nginx-zzz -n kube-public

 执行回滚到上一个版本

kubectl rollout undo deployment/nginx-zzz -n kube-public

一开始是15版本 

 

执行回滚到指定版本 

kubectl rollout undo deployment/nginx-zzz --to-revision=1 -n 指定命名空间

检查回滚状态

kubectl rollout status deployment/nginx-test -n test

4.5删除    kubectl delete命令 

//删除副本控制器
kubectl delete deployment/nginx//删除service
kubectl delete svc/nginx-servicekubectl get all

删除副本控制器

五 应用发布策略

1.蓝绿发布

2.滚动发布(k8s默认)

3.灰度发布/金丝雀发布

蓝绿发布:一套业务,两个版本

2.滚动发布:(一个一个去更新)

3.金丝雀发布:

 

六、金丝雀发布(Canary Release) (灰度发布)

5.1金丝雀发布介绍
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布

 金丝雀发布的思想则是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。验证新版本符合预期后,逐步调整流量权重比例,使得流量慢慢从老版本迁移至新版本,期间可以根据设置的流量比例,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用

 5.2金丝雀发布图解

如图,某服务当前版本为 v1,现在新版本 v2 要上线。为确保流量在服务升级过程中平稳无损,采用金丝雀发布方案,逐步将流量从老版本迁移至新版本。

 

 6.3金丝雀发布部署

创建deployment

因为我们刚刚删除了,所有我们重新创建一个

kubectl create deployment nginx-zzz --image=nginx:1.18 --replicas=6 -n test

随后,进行查看

 暴露服务

kubectl expose deployment nginx-zzz --port=8083 --target-port=80 --name=nginx-service --type=NodePort -n kube-public

 (1)更新deployment的版本,并配置暂停deployment

kubectl set image deployment/nginx-zzz nginx=nginx:1.22 && kubectl rollout pause deployment nginx-zzz -n kube-publickubectl rollout status deployment nginx-zzz -n kube-public    #观察更新状态

 再打开相同的xshell 去查看更新的状态

 

(2)监控更新的过程,可以看到已经新增了一个资源,但是并未按照预期的状态去删除一个旧的资源,就是因为使用了pause暂停命令

检测看看,既有1.22版本的nginx,也有1.18版本的nginx

补充:可以为升级的pod专门创建一个svc 只要访问这个更新的svc 都是1.22版本

 

 (3)确保更新的pod没问题了,继续更新

kubectl rollout resume deployment/nginx-zzz -n kube-public

 

(4)查看最后的更新情况

kubectl get pods -w 

 

 

更新成功,并且现在都是1.22版本的nginx服务了

6.4金丝雀发布优缺点

5.4.1金丝雀发布的优点
  • 按比例将流量无差别地导向新版本,新版本故障影响范围小
  • 发布期间逐步对新版本扩容,同时对老版本缩容,资源利用率高
5.4.2金丝雀发布的缺点
  • 流量无差别地导向新版本,可能会影响重要用户的体验
  • 发布周期长

 

相关文章:

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式&#xff1a;yaml文件管理 使用yaml配置文件或者json配置文…...

webgl入门-绘制三角形

绘制三角形 前言 三角形是一个最简单、最稳定的面&#xff0c;webgl 中的三维模型都是由三角面组成的。咱们这一篇就说一下三角形的绘制方法。 课堂目标 理解多点绘图原理。可以绘制三角形&#xff0c;并将其组合成多边形。 知识点 缓冲区对象点、线、面图形 第一章 web…...

深入分析 Android Activity (三)

深入分析 Android Activity (三) 1. Activity 的配置变化处理 当设备配置&#xff08;如屏幕方向、语言、屏幕大小等&#xff09;发生变化时&#xff0c;默认情况下&#xff0c;Android 会销毁并重新创建当前的 Activity。这种行为确保了新配置能够正确应用&#xff0c;但在某…...

电影《朝云暮雨》观后感

上周看了电影《朝云暮雨》&#xff0c;看完之后&#xff0c;感觉自己整个人都不太好了&#xff0c;也不是说电影太差&#xff0c;只是觉得电影没有传达正能量&#xff0c;让人很不舒服。 &#xff08;1&#xff09;演技在线 对于著名的演员“范伟”&#xff0c;或者说&#x…...

Isaac Sim仿真平台学习(1)认识Isaac Sim

0.前言 上一个教程中我们下载好了Isaac Sim&#xff0c;这一章我们将来简单了解一下Isaac Sim平台。 isaac Sim仿真平台安装-CSDN博客 1.Isaac Sim是啥&#xff1f; What Is Isaac Sim? — Omniverse IsaacSim latest documentation Isaac Sim是NVDIA Omniverse平台的机器…...

C++:vector基础讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;vector基础讲解》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#…...

Grafana 路径遍历所有路径 CVE-2021-43798漏洞预警

简介​ ​Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后&#xff0c;Grafana可以在网络浏览器里显示数据图表和警告。 漏洞危害等级 高危 CVE 编号​ CVE-2021-43798 FOFA查询 ​app"Grafana" ​zoomeyes查询 ​app:"gr…...

基于Docker部署GitLab环境搭建

文件在D:\E\学习文档子目录压缩\专项进阶&#xff0c;如ngnix,webservice,linux,redis等\docker 建议虚拟机内存2G以上 1.下载镜像文件 docker pull beginor/gitlab-ce:11.0.1-ce.0 注意&#xff1a;一定要配置阿里云的加速镜像 创建GitLab 的配置 (etc) 、 日志 (log) 、数…...

初始化是什么

定义 初始化&#xff08;Initialization&#xff09;是指在计算机科学和软件开发中&#xff0c;将系统、变量、对象或其他可用组件设置为其初始状态或初始值的过程。这通常是在程序开始执行或组件第一次使用之前进行的&#xff0c;以确保其处于可预测和稳定的状态。 初始化的…...

Python图形界面(GUI)Tkinter笔记(九):用【Button()】功能按钮实现人机交互

在Tkinter库中,功能按钮(Button)是实现人机交互的一个非常重要的组件: 【一】主要可实现功能及意义: (1)响应用户交互: Button组件允许用户通过点击来触发某个事件或动作。当用户点击按钮时,可以执行一个指定的函数或方法。 (2)提供用户输入: Button组件是图形用户界面(G…...

linux 内核安装、切换版本,禁用内核更新

安装内核 版本5.15.0-105 sudo apt-get install linux-image-5.15.0-105-generic sudo apt-get install linux-headers-5.15.0-105-generic切换内核版本 #查看已安装内核版本 grep menuentry /boot/grub/grub.cfg sudo dpkg --get-selections |grep linux-image#修改文件/etc…...

充电桩中PE接地实时监测的一种电路.pdf

pdf下载链接&#xff1a;https://pan.baidu.com/s/18k8tEwa6h3WAOGJs3lAsTQ 提取码&#xff1a;Ronv...

鲲泰新闻丨第七届数字中国建设峰会正式启幕,神州鲲泰携手天翼云共筑智算云生态

2024年5月23日&#xff0c;由国家发展改革委、国家数据局、国家网信办、科技部、国务院国资委、福建省人民政府共同主办的“第七届数字中国建设峰会”在福建省福州市海峡国际会展中心盛大开幕。 数字中国建设峰会是展示数字中国建设成就的盛会&#xff0c;本次峰会以“释放数据…...

零基础学Java第二十二天之IO流之内存流,打印流,随机流

IO流之内存流&#xff0c;打印流&#xff0c;随机流 1、内存流 1、理解 内存流"&#xff08;Memory Stream&#xff09;在计算机编程中通常指的是一种特殊的数据流&#xff0c;它在内存中存储和操作数据&#xff0c;而不是在外部存储&#xff08;如硬盘、网络等&#xf…...

vue-router路由懒加载以及三种实现方式

什么是路由懒加载&#xff1f; 延迟加载或按需加载路由所对应的组件&#xff0c;而不是在应用初始化时就一次性加载所有组件。 路由懒加载做了什么事情&#xff1f; 主要作用是将路由对应的组件打包成一个个的js代码块 只有在这个路由被访问到的时候&#xff0c;才加载对应…...

Java轻松转换Markdown文件到Word和PDF文档

Markdown 凭借其简洁易用的特性&#xff0c;成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果&#xff0c;例如在专业分享文档或打印成离线使用的纸质版时&#xff0c;就需要将Markdown文件以其他固定的文档格式呈现。通过将 Markdown 转换为 Word 和…...

【JAVA基础之内部类】匿名内部类

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;小林同学的专栏&#xff1a;JAVA之基础专栏 目录 1.内部类 1.1 概述 1.1.1 什么是内部类 1.1.2 什么时候使用内部类 1.2 内部类的分类 1.3 成员内部类 1.3.1 获取成员内部类对象的两种方式 1.3.2 经典面试…...

远动通讯屏的原理和应用

远动通讯屏的原理和应用 远动通讯屏&#xff0c;是一种集显示和远程控制于一体的智能化控制设备。它可以通过网络、通信线路等方式实现与远程设备的通讯和交互&#xff0c;从而实现远程监控和控制。 远动通讯屏实现远程控制的核心原理是基于PLC&#xff08;Programmable Logic …...

C++ (week4):Linux基础

文章目录 零、Linux简介1.配置环境2.Linux历史3.Linux模型 一、vim二、Linux命令行 (shell命令)1.常用命令与快捷键(1)常用命令①man命令&#xff1a;查看帮助手册 (2)快捷键 2.用户子系统(1)Linux用户(2)用户命令 3.文件子系统命令(1)目录命令1.创建文件&#xff1a;mkdir2.删…...

如何将手机中的音乐转移到 SD 卡上?轻松传输音乐

概括 如何将音乐从手机转移到 SD 卡&#xff1f;我们的智能手机可以充当个人点唱机&#xff0c;因此有效管理我们的音乐库变得至关重要。无论您是存储空间不足还是只是想整理您的音乐收藏&#xff0c;将音乐从手机传输到 SD 卡都是一个实用的解决方案。 在本指南中&#xff0…...

JKTECH柔性振动盘用途

柔性振动盘的作用与用途 在现代工业自动化领域&#xff0c;柔性振动盘凭借其独特的功能和广泛的应用场景&#xff0c;正逐渐成为生产线上的重要工具。柔性振动盘&#xff0c;又称柔性供料器&#xff0c;它结合了传统振动盘的高效性和现代自动化技术的灵活性&#xff0c;为各种…...

【职场心灵伴侣】文心一言智能体

【文心一言】智能体 写在最前面名称和简介&#xff1a;职场心灵伴侣AI生成头像添加工具智能体调优 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限…...

【运维】笔记本电脑风扇清洁

笔记本电脑是我们不可或缺的工具&#xff0c;无论是工作、学习还是娱乐。然而&#xff0c;随着时间的推移&#xff0c;笔记本电脑的性能可能会因为各种原因受到影响&#xff0c;尤其是散热问题。过热不仅会降低性能&#xff0c;还可能缩短硬件的寿命。最近&#xff0c;在使用我…...

3.1 掌握RDD的创建

在Apache Spark中&#xff0c;RDD&#xff08;Resilient Distributed Dataset&#xff09;是一个基本的、不可变的、分布式的和可分区的数据集。它能够自动进行容错处理&#xff0c;并支持在大规模集群上的并行操作。RDD之间存在依赖关系&#xff0c;可以实现管道化&#xff0c…...

深入理解 Java 中的 `volatile` 关键字:可见性与有序性的保障

深入理解 Java 中的 volatile 关键字&#xff1a;可见性与有序性的保障 volatile主要做了两个事情可见性保证 和 有序性 可见性保证就是&#xff1a; 对volatile的写操作会对其他线程可见。 简单来说我们A线程的修改了volatile的值&#xff0c;那么我B线程也可以看见。 有序…...

1077: 平衡二叉树的判定

解法&#xff1a; 平衡二叉树是一种特殊的二叉树&#xff0c;它满足以下两个条件&#xff1a; 左子树和右子树的高度差不超过1&#xff08;即&#xff0c;左右子树高度差的绝对值不超过1&#xff09;。左子树和右子树都是平衡二叉树。 后序遍历过程中每次判断左右子树高度差…...

深度学习-Softmax回归+损失函数+图像分类数据集

目录 Softmax回归回归 VS 分类Kaggle上的分类问题 从回归到多类分类回归分类从回归到多类分类-均方损失从回归到多类分类-无校验比例从回归到多类分类-校验比例 Softmax和交叉熵损失总结损失函数均方损失绝对值损失函数鲁棒损失 图像分类数据集通过框架中内置函数将FashionMNIS…...

【论文解读】Overview of the Scalable Video Coding Extension of the H.264/AVC Standard

介绍 该篇论文是一篇关于H.264/AVC标准可扩展视频编码(SVC)扩展的综述论文,由Heiko Schwarz、Detlev Marpe和Thomas Wiegand撰写,发表在《IEEE Transactions on Circuits and Systems for Video Technology》2007年9月第17卷第9期上。 论文解读 摘要: H.264/AVC视频编…...

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…...

一种获取java代码结构的实现思路

一种获取java代码结构的实现思路 有时,我们需要获取java文件里的代码结构,即,只需要里面的class定义、方法声明、属性定义。不需要额外的方法实现 这里提供一下实现思路: 采用语法解析器Tree-sitter对java代码进行解析,获取里面的方法实现遍历第一步获取到的方法列表,在源…...