标签-镜像拉取策略-重启策略-pod优雅终止-pod中容器资源限制-容器类型-容器守护进程-日志排错-容器命令exec-cp

news2024/9/21 19:02:08

一.标签

1.概述:

        标签是附加到kubernets对象(比如pod)上的键值对,标签可以在创建时附加到对象,随后也可以随时添加修改;标签不支持唯一性。

        在k8s中大多数资源都是通过标签进行关联的(如pod与service)

2.标签管理

· 查看资源标签

[root@master demo]# kubectl get pods --show-labels
NAME       READY   STATUS    RESTARTS   AGE   LABELS
demo-env   1/1     Running   0          6s    <none>

· 创建标签

1.声明式创建标签
1.1编辑资源清单
[root@master demo]# cat 08-pod-nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo-label
  #资源加标签
  labels:
    learn: bilibili
    k8s: wage
spec:
  containers:
  - name: demo-n
    image: nginx:1.20.1-alpine
1.2创建查看资源(标签)
[root@master demo]# kubectl apply -f 08-pod-nginx.yaml 
pod/demo-label created
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE   LABELS
demo-label   1/1     Running   0          17s   k8s=wage,learn=bilibili

2.响应式创建标签
2.1给现有pod资源加一个标签
[root@master demo]# kubectl label pods demo-label time=1255
pod/demo-label labeled
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE     LABELS
demo-label   1/1     Running   0          4m11s   k8s=wage,learn=bilibili,time=1255

注:响应式创建的标签,如果重新拉取pod(删除后再创建pod),标签会消失

3.删除标签
[root@master demo]# kubectl label pods demo-label time-
pod/demo-label unlabeled
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE    LABELS
demo-label   1/1     Running   0          8m2s   k8s=wage,learn=bilibili
[root@master demo]# 

注:声明式创建的标签(资源清单),删除后,重新拉区,标签会重新创建

4.修改标签
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE    LABELS
demo-label   1/1     Running   0          8m2s   k8s=wage,learn=bilibili
[root@master demo]# kubectl label pods demo-label k8s=kubernets --overwrite
pod/demo-label labeled
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE   LABELS
demo-label   1/1     Running   0          11m   k8s=kubernets,learn=bilibili

5.通过标签删除pod
[root@master demo]# kubectl get pods --show-labels 
NAME         READY   STATUS    RESTARTS   AGE   LABELS
demo-label   1/1     Running   0          11m   k8s=kubernets,learn=bilibili
[root@master demo]# kubectl delete pods -l k8s
pod "demo-label" deleted
[root@master demo]# kubectl get pods -o wide
No resources found in default namespace.

二.pod镜像拉取策略

· Always:对比所有镜像来源,选择时间最新的

· Never:只使用本地镜像,本地若没有,也不会去远程仓库拉取

· IfNotPresent(默认策略):先看本地,本地有选择本地,本地没有,选择远程仓库

1.编写镜像拉取策略的资源清单

[root@master demo]# cat 09-pod-pull.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo-pull
  labels:
    demo: pull
spec:
  containers:
  - name: nginx
    image: nginx:1.20.1-alpine
    #设置镜像拉取策略
    imagePullPolicy: IfNotPresent
[root@master demo]# kubectl apply -f 09-pod-pull.yaml 
pod/demo-pull created
[root@master demo]# kubectl get pods -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo-pull   1/1     Running   0          12s   10.100.1.30   worker1   <none>           <none>

三.pod中容器的重启策略

· Always(默认值):当容器退出时(不论什么原因),自动拉起新的容器;

· Never:当容器退出时(不论什么原因),都不会重新创建拉起新的容器;

· OnFailure:当容器“意外退出”时,才会拉起新的容器;

1.容器重启

· 编写容器重启策略的资源清单

[root@master demo]# cat 10-pod-restart.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo-restart
  labels:
    demo: restart
spec:
  #设置容器重启策略
  restartPolicy: Always
  containers:
  - name: nginx
    image: nginx:1.20.1-alpine

· 创建查看资源

[root@master demo]# kubectl apply -f 10-pod-restart.yaml 
pod/demo-restart created
[root@master demo]# kubectl get pods -o wide
NAME           READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
demo-restart   1/1     Running   0          10s     10.100.2.34   worker2   <none>           <none>

· 在worker节点删除容器测试是否会重新拉起容器

[root@worker2 ~]# docker ps | grep "nginx"
714d17c65cef   7f18bdc92ca5                                        "/docker-entrypoint.…"   About a minute ago   Up About a minute             k8s_nginx_demo-restart_default_03b7f2a9-6a09-4259-aa71-b9e5a186dc08_0
[root@worker2 ~]# docker rm -f 714d17c65cef
714d17c65cef
[root@worker2 ~]# docker ps | grep "nginx"
d4b6f0852149   7f18bdc92ca5                                        "/docker-entrypoint.…"   2 seconds ago        Up 2 seconds                  k8s_nginx_demo-restart_default_03b7f2a9-6a09-4259-aa71-b9e5a186dc08_1

· master节点查看pod状态

此时,pod的restarts从0变为1

[root@master demo]# kubectl get pods -o wide
NAME           READY   STATUS    RESTARTS   AGE    IP            NODE      NOMINATED NODE   READINESS GATES
demo-restart   1/1     Running   1          113s   10.100.2.34   worker2   <none>           <none>

四.pod的优雅终止

        在pod的删除时,系统会自动延迟30s,为了给pod处理未处理完的请求

1.编辑资源清单

[root@master demo]# cat 11-pod-stop.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo-stop
  labels:
    demo: stop
spec:
  #pod优雅终止字段,定义延时kill信号的时间,给pod处理未完成的请求时间;
  #缓期多少秒时间执行;若不设置,默认是30s;
  terminationGracePeriodSeconds: 5
  containers:
  - name: demo-nginx
    image: nginx:1.20.1-alpine
    #定义容器的生命周期(容器启动做什么动作,容器停止前做什么动作)
    lifecycle:
      #容器启动前做什么
      postStart:
        exec:
          command:
          - "sh"
          - "-c"
          - "echo \"postStart at $(date +%F_%T)\" >> /poststart.log"
      #容器停止前做什么
      preStop:
        exec:
          command:
          - "sh"
          - "-c"
          - "echo \"prestop at $(date +%F_%T)\" >> /prestop.log"

2.创建查看资源

[root@master demo]# kubectl apply -f 11-pod-stop.yaml 
pod/demo-stop created
[root@master demo]# kubectl get pods -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo-stop   1/1     Running   0          9s    10.100.1.31   worker1   <none>           <none>

3.进入容器查看是否完成容器启动前置动作

[root@master demo]# kubectl exec demo-stop -it -- sh
/ # ls
bin                   etc                   mnt                   root                  sys
dev                   home                  opt                   run                   tmp
docker-entrypoint.d   lib                   poststart.log         sbin                  usr
docker-entrypoint.sh  media                 proc                  srv                   var
/ # cat poststart.log 
postStart at 2024-07-14_05:32:59
/ # exit

五.pod中容器的资源限制

        给pod设置固定的硬件使用限制,例如cpu、磁盘、内存

        CPU资源单位:Kubernetes将1CPU以1000m来表示,CPU的最小资源单位为m,1m表示千分之一CPU。通常一个容器使用的CPU配额为100m~ 300m。

1.编辑资源清单

[root@master demo]# cat 12-pod-resources.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo-res
  labels:
    demo: res
spec:
  containers:
  - name: demo
    image: nginx:1.20.1-alpine
    #设置资源限制
    resources:
      #最大资源的使用限制;最多就能用这么多的资源;
      limits:
        #2c;
        cpu: 2000m
        #限制内存
        memory: 40M
      #期望资源限制;需要宿主机预留的资源,我可以不用,但是你必须要有
      requests:
        #1c
        cpu: 1000m
        #限制内存
        memory: 20M

2.创建查看资源

[root@master demo]# kubectl apply -f 12-pod-resources.yaml 
pod/demo-res created
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo-res   1/1     Running   0          8s    10.100.2.35   worker2   <none>           <none>

3.查看容器的资源大小是否为设置阈值

[root@worker2 ~]# docker ps | grep demo
0a1df97e8497   7f18bdc92ca5                                        "/docker-entrypoint.…"   35 seconds ago   Up 35 seconds             k8s_demodemo-res_default_a8af141d-f1cd-4474-95d1-eb3405413cfe_0
4c204b53ce98   registry.aliyuncs.com/google_containers/pause:3.6   "/pause"                 36 seconds ago   Up 35 seconds             k8s_POD_demo-res_default_a8af141d-f1cd-4474-95d1-eb3405413cfe_0
[root@worker2 ~]# docker stats 0a1df97e8497

六.容器类型

· 基础架构容器【pause】:运行pod中的容器时,提供容器的网络名称空间

· 初始化容器【initContainers】:

        完成一些业务容器运行前的操作,如执行命令,如果初始化容器没有创建成功,将一直重启,业务容器也就无法创建出来;

        它可以延后业务容器的启动时间;

1.基础架构容器pause

查看基础架构容器

[root@worker2 ~]# docker ps | grep pause

2.初始化容器initContainers

· 编辑带有初始化容器的pod资源清单

[root@master demo]# cat 13-pod-init.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: m12
spec:
  #声明初始化容器
  initContainers:
  - name: init-demo1
    image: alpine
    #在初始化容器中执行命令
    command:
    - "sleep"
    - "5"
  - name: init-demo2
    image: alpine
    #在初始化容器中执行命令 
    command:
    - "sleep"
    - "5"
  #业务容器
  containers:
  - name: demoinit
    image: alpine
    #给容器一个标准输入,也就是守护进程
    stdin: true

·创建查看资源

[root@master demo]# kubectl apply -f 13-pod-init.yaml 
pod/m12 created
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS     RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
m12    0/1     Init:0/2   0          12s   <none>   worker1   <none>           <none>

·查看状态

[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS     RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m12    0/1     Init:0/2   0          24s   10.100.1.32   worker1   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS     RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m12    0/1     Init:1/2   0          27s   10.100.1.32   worker1   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS            RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m12    0/1     PodInitializing   0          52s   10.100.1.32   worker1   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m12    1/1     Running   0          63s   10.100.1.32   worker1   <none>           <none>

七.pod中容器的守护进程

1.创建资源清单,拉取alpine最小linux系统

[root@master demo]# cat 14-pod-dae.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: m-alpine
spec:
  containers:
    - name: c1
      image: alpine

2.创建查看资源

        查看pod资源,发现,启动后会结束,因为没有守护进程

[root@master demo]# kubectl apply -f 14-pod-dae.yaml 
pod/m-alpine created
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
m-alpine   0/1     ContainerCreating   0          7s    <none>   worker1   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS      RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m-alpine   0/1     Completed   0          19s   10.100.1.33   worker1   <none>           <none>

3.修改资源清单,加入标准输入stdin

[root@master demo]# cat 14-pod-dae.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: m-alpine
spec:
  containers:
    - name: c1
      image: alpine
      stdin: true

4,再次查看pod

[root@master demo]# kubectl apply -f 14-pod-dae.yaml 
pod/m-alpine created
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
m-alpine   0/1     ContainerCreating   0          7s    <none>   worker2   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
m-alpine   0/1     ContainerCreating   0          17s   <none>   worker2   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
m-alpine   1/1     Running   0          18s   10.100.2.36   worker2   <none>           <none>

5.命令方式守护进程

·command
1.编辑资源清单
[root@master demo]# cat 14-pod-dae.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: c1
      image: alpine
      command:
      - "tail"
      - "-f"
      - "/etc/hosts"
2.创建查看资源
[root@master demo]# kubectl apply -f 14-pod-dae.yaml 
pod/demo created
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
demo   0/1     ContainerCreating   0          6s    <none>   worker2   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          19s   10.100.2.37   worker2   <none>           <none>
·args
1.编辑资源清单
[root@master demo]# cat 14-pod-dae.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: c1
      image: alpine
      args:
      - "tail"
      - "-f"
      - "/etc/hosts"
2.创建查看资源
[root@master demo]# kubectl apply -f 14-pod-dae.yaml 
pod/demo created
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS              RESTARTS   AGE   IP       NODE      NOMINATED NODE   READINESS GATES
demo   0/1     ContainerCreating   0          5s    <none>   worker2   <none>           <none>
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          83s   10.100.2.38   worker2   <none>           <none>
· command与args结合(Dockerfile的命令讲解)


        args可以当做command的参数进行命令执行;

        跟docker中的守护进程命令一样;command就类似于ENTRYPOINT;args就类似于CMD;

[root@master pod]# cat 14-pod-dae.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: c1
      image: alpine
      command:
      - "tail"
      - "-f"
      args:
      - "/etc/hosts"
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          83s   10.100.2.38   worker2   <none>           <none>

八.pod排障之二-日志查询

1.查看pod

[root@master demo]# cat 14-pod-dae.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: demo
      image: nginx:1.20.1-alpine
[root@master demo]# kubectl apply -f 14-pod-dae.yaml 
pod/demo created
[root@master demo]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          6s    10.100.2.39   worker2   <none>           <none>

2.模拟循环访问pod

while true ; 
do 
  curl 10.100.2.39; 
  sleep 0.5 
done

3.查看pod日志

[root@master demo]# kubectl logs -f demo

4.面试题

         如果pod中容器发生重启,如何查看重启前的容器的log日志信息?

· 模拟容器重启

[root@worker2 ~]# docker ps | grep demo
[root@worker2 ~]# docker kill ad9a8501d12c 
ad9a8501d12c

· 验证是否重新拉起容器 

· 查看容器重启前,上一个容器的日志信息

-p

[root@master demo]# kubectl logs -p demo

九.进入pod容器exec与cp命令

#进入pod中容器

kubectl  exec  pod名称  -it  --  sh

#拷贝容器中数据到宿主机(默认pod中第一个容器)

kubectl  cp  pod名称:/root/demo.txt    ./

#拷贝宿主机数据到容器

kubectl  cp  ./a.log   pod名称:/mnt/

#指定容器拷贝

kubectl  cp -c 容器名  pod名称:/root/demo.txt    ./

#pod外部执行命令

[root@master pod]# kubectl exec demo -it -- ifconfig

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

管理Linux本地用户和组

什么是用户 用户账户在可以运行命令的不同人员和程序之间提供安全界限。 在Linux系统中&#xff0c;系统通过分配唯一的标识号&#xff08;用户ID或UID&#xff09;来区分不同的用户帐户。 在Linux系统中&#xff0c;用户帐户有以下三种主要类型&#xff1a; 超级用户 负责…

跨平台APP开发工具的选择

跨平台APP开发工具允许开发者编写一次代码,然后在多个平台上运行,如iOS、Android等,这极大地提高了开发效率并降低了维护成本。下面是一些流行的跨平台APP开发工具及其特点: React Native 开发公司:Facebook编程语言:JavaScript特点: 使用React的组件模型构建原生应用。…

无损音乐播放器推荐:Audirvana for Mac 中文激活版

udirvana 是一款高品质的音乐播放软件&#xff0c;专为Mac操作系统设计。它被设计来提供音频播放的最高标准&#xff0c;支持多种音频格式&#xff0c;包括高达32位/192kHz的高分辨率音频。Audirvana Plus 是其高级版本&#xff0c;提供了更多的功能和优化&#xff0c;例如音频…

stm32h743 NetXduo 实现http server CubeIDE+CubeMX

在这边要设置mpu的大小,要用到http server,mpu得设置的大一些 我是这么设置的,做一个参考 同样,在FLASH.ld里面也要对应修改,SECTIONS里增加.tcp_sec和 .nx_data两个区,我们用ram_d2区域去做网络,这个就是对应每个数据在d2区域的起点。 在CubeMX里,需要用到filex、dhc…

全栈智能家居系统设计方案:STM32+Linux+多协议(MQTT、Zigbee、Z-Wave)通信+云平台集成

1. 项目概述 随着物联网技术的快速发展,智能家居系统正在成为现代生活中不可或缺的一部分。本文介绍了一个基于STM32微控制器和Linux系统的智能家居解决方案,涵盖了硬件设计、软件架构、通信协议以及云平台集成等方面。 该系统具有以下特点: 采用STM32作为终端设备的控制核心…

【python学习】python标准库之正则表达式库re的定义、功能和函数,以及正则表达式的元字符和含义

引言 re 库是Python标准库的一部分&#xff0c;不需要额外安装。要使用 re 库&#xff0c;只需在代码中导入它 文章目录 引言一、re库的定义二、re 库中常用的功能和函数&#xff1a;2.1 搜索模式2.2 查找模式2.3 替换模式2.4 分割模式2.5 编译模式2.6 错误信息2.7 支持的模式2…

基础部分-变量

目录 1、一个程序就是一个世界&#xff0c;变量是程序的基本组成单位。 2、变量有三个基本要素&#xff1a;类型名称值 3、变量相当于内存中一个数据存储空间的表示 4、变量的使用步骤 &#xff08;先定义后使用&#xff09; 5、变量快速入门 6、格式化输出 7、程序中 号…

链接追踪系列-07.logstash安装json_lines插件

进入docker中的logstash 容器内&#xff1a; jelexbogon ~ % docker exec -it 7ee8960c99a31e607f346b2802419b8b819cc860863bc283cb7483bc03ba1420 /bin/sh $ pwd /usr/share/logstash $ ls bin CONTRIBUTORS Gemfile jdk logstash-core modules tools x-pack …

【Linux】进程控制的详细介绍

前言 在此之前&#xff0c;我们学过进程的概念&#xff0c;进程的状态&#xff0c;进程地址空间等一系列进程相关的问题。本章我们继续学习进程&#xff0c;我们要来学习一下进程的控制&#xff0c;关于进程等待&#xff0c;等问题。 目录 1.再次认识Fork函数1.1 fork()之后操…

什么是 Modbus协议?

一、网络中的协议是指什么&#xff1f; 网络协议是网络通信中至关重要的一部分&#xff0c;它定义了网络中两个或多个设备之间通信的规则、过程和格式。这些规则确保了计算机网络设备能够使用一种通用语言来传输和接收数据&#xff0c;而不管它们的设计、硬件或基础设施如何。…

MySQL-ubuntu环境下安装配置mysql

文章目录 什么是数据库&#xff1f;一、ubuntu环境下安装mysql二、配置mysql配置文件1.先登上root账号2.配置文件的修改show engines \G; mysql和mysqld数据库的基础操作登录mysql创建数据库显示当前数据库使用数据库创建表插入students表数据打印students表数据select * from …

【吊打面试官系列-ZooKeeper面试题】说说客户端注册 Watcher 实现?

大家好&#xff0c;我是锋哥。今天分享关于 【说说客户端注册 Watcher 实现&#xff1f; 】面试题&#xff0c;希望对大家有帮助&#xff1b; 说说客户端注册 Watcher 实现&#xff1f; 1、调用 getData()/getChildren()/exist()三个 API&#xff0c;传入 Watcher 对象 1000道…

数据结构(Java):树二叉树

目录 1、树型结构 1.1 树的概念 1.2 如何判断树与非树 1.3 树的相关概念 1.4 树的表示形式 1.4.1 孩子兄弟表示法 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的遍历 1、树型结构 1.1 树的概念 树型结构是一种非线…

文本分类--NLP-AI(八)

文本分类任务 任务简介1.字符数值化方式1方式2 2.池化&#xff08;pooling&#xff09;3.全连接层4.归一化函数&#xff08;Sigmoid&#xff09;5.总结 从任务抽象新的技术点Embedding层池化层 任务简介 任务介绍&#xff1a; 字符串分类&#xff0c;根据一句话的含妈量&#…

air-conditioning

air-conditioning 空调机安装 实地测量&#xff1a; 测量宽度 测量高度 测试厚度 其他位置测量 根据实际绘图&#xff1a; 改进图&#xff0c;哈哈&#xff0c;让自己满意也让别人满意 1&#xff09;需要考虑安装位置&#xff0c;减少高空放置&#xff0c;放置高空掉落 2&#…

YOLOv5和LPRNet的车牌识别系统

车牌识别系统 YOLOv5和LPRNet的车牌识别系统结合了深度学习技术的先进车牌识别解决方案。该系统整合了YOLOv5目标检测框架和LPRNet文本识别模型 1. YOLOv5目标检测框架 YOLO是一种先进的目标检测算法&#xff0c;以其实时性能和高精度闻名。YOLOv5是在前几代基础上进行优化的…

Mac应用程序清理卸载工具:App Cleaner Uninstaller for Mac 中文版

App Cleaner Pro是一款Mac上非常好用的软件卸载工具&#xff0c;支持应用卸载、Widget卸载、浏览器插件卸载&#xff0c;支持拖拽卸载和列表卸载&#xff0c;能够非常干净的卸载应用&#xff0c;节省你的磁盘空间。App Cleaner Uninstaller Pro是一款深度清理和卸载的工具&…

Postman下载及使用说明

Postman使用说明 Postman是什么&#xff1f; ​ Postman是一款接口对接工具【接口测试工具】 接口&#xff08;前端接口&#xff09;是什么&#xff1f; ​ 前端发送的请求普遍被称为接口 ​ 通常有网页的uri参数格式json/key-value请求方式post/get响应请求的格式json 接…

uboot默认配置过程

uboot默认配置,对于6ull来说,在uboot源码目录下执行:make mx6ull_14x14_evk_defconfig 1、make mx6ull_14x14_evk_defconfig mx6ull_14x14_evk_defconfig文件是在uboot源码configs/目录下面 执行过程分析 HOSTCC:编译一些.c文件 HOSTLD:制作出scripts/kconfig/conf这个…

[数仓]十二、离线数仓(Atlas元数据管理)

第1章 Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 Atlas的具体功能如下: 元数据分类 支持对元数据进行分类管理,例…