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

一.标签

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: bilibilik8s: wage
spec:containers:- name: demo-nimage: 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-pulllabels:demo: pull
spec:containers:- name: nginximage: 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-restartlabels:demo: restart
spec:#设置容器重启策略restartPolicy: Alwayscontainers:- name: nginximage: 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-stoplabels:demo: stop
spec:#pod优雅终止字段,定义延时kill信号的时间,给pod处理未完成的请求时间;#缓期多少秒时间执行;若不设置,默认是30s;terminationGracePeriodSeconds: 5containers:- name: demo-nginximage: 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-reslabels:demo: res
spec:containers:- name: demoimage: nginx:1.20.1-alpine#设置资源限制resources:#最大资源的使用限制;最多就能用这么多的资源;limits:#2c;cpu: 2000m#限制内存memory: 40M#期望资源限制;需要宿主机预留的资源,我可以不用,但是你必须要有requests:#1ccpu: 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-demo1image: alpine#在初始化容器中执行命令command:- "sleep"- "5"- name: init-demo2image: alpine#在初始化容器中执行命令 command:- "sleep"- "5"#业务容器containers:- name: demoinitimage: 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: c1image: 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: c1image: alpinestdin: 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: c1image: alpinecommand:- "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: c1image: alpineargs:- "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: c1image: alpinecommand:- "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: demoimage: 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.mzph.cn/pingmian/46144.shtml

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

相关文章

DP(3) | 0-1背包 | Java | LeetCode 1049, 494, 474 做题总结

1049. 最后一块石头的重量 II 和 LC 416.分割等和子集 类似 思路&#xff08;我没有思路&#xff09;&#xff1a; 两块石头相撞&#xff0c;这里没有想到的一个点是&#xff0c;相撞的两个石头要几乎相似 以示例1为例&#xff0c;stones [2,7,4,1,8,1]&#xff0c;如果从左到…

【数组、特殊矩阵的压缩存储】

目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组 概述&#xff1a;数…

HyperSD - 会画草图就能玩AI绘画,AI一键手绘,实时同步 本地一键整合包下载

字节跳动的Lightning团队发布的新图像模型蒸馏算法Hyper-SD&#xff0c;是一项在图像处理和机器学习领域的重要进展。这项技术通过创新的方法提升了模型在不同推理步骤下的性能&#xff0c;同时保持了模型大小的精简。 基于这个算法模型&#xff0c;一个很实用的功能出现了&am…

绝区零 双闪 双闪-三轴 工具

绝区零 双闪 双闪-三轴 工具 0. 演示视频 绝区零&#xff1a;≈100%的极致双闪和双闪-三轴 绝区零&#xff1a;手残党也能打双闪-三轴 1. 基本信息 作者: GMCY系列: 工具系列仓库: GitHub | Gitee话题(GitHub): Tools \ ZenlessZoneZero创建时间: 2024/07/14 2. 声明 !!! 使…

【Linux】重定向 | 为什么说”一切皆文件?“

目录 前言 1.文件描述符分配规则 2.dup2 重定向接口 3.重定向 3.1>输出重定向 3.2>>追加重定向 3.3<输入重定向 3.4 shell 模拟实现< > 3.5 理解> 4. 理解“Linux 下一切皆文件” 前言 问&#xff1a;fd 为什么默认从 3 开始&#xff0c;而不是…

LeetCode热题100刷题15:200. 岛屿数量、所有可达路径、118. 杨辉三角、287. 寻找重复数、84. 柱状图中最大的矩形

200. 岛屿数量 借助DFS寻找整个图的连通分量数&#xff0c;DFS将一个连通分量中的节点标记为visited&#xff0c;res记录连通分量数&#xff0c;最后返回res class Solution { public:const int dir[4][2] {1,0,0,1,-1,0,0,-1};void dfs(vector<vector<char>>&a…

代码随想录——不同路径Ⅱ(Leetcode 63)

题目链接 动态规划 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;int[][] dp new int[m][n];// 遇到障碍则从(0,0)到达for(int i 0; i < m && obstacleGrid[i][0] …

前端挑战:Tkinter布局与设计【三种布局】

前端挑战:Tkinter布局与设计【三种布局】 文章目录 前端挑战:Tkinter布局与设计【三种布局】前言Frame 窗口组件代码效果Tkinter的布局grid 网格布局效果展示:代码讲解pack 布局基本使用左右布局place 布局代码预览前言 作为一个前端开发,习惯性的用HTML去解决客户端的问题…

2024.7.14周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、文献解读 一、Introduction 二、KINN框架 三、主要结果 四、Conclusion 二、KAN 一、KAN与MLP区别 二、KAN网络解析 三、激活函数参数化&#xff08;B-splines&#xff09; 三、网络架构代码 摘要 本周…

Kafka基础入门篇(深度好文)

Kafka简介 Kafka 是一个高吞吐量的分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用与大数据实时处理领域。 1. 以时间复杂度为O(1)的方式提供消息持久化能力。 2. 高吞吐率。&#xff08;Kafka 的吞吐量是MySQL 吞吐量的30…

输入法发展历史

输入法的发展历史&#xff0c;尤其是中文输入法&#xff0c;是一个相当丰富和多元的话题&#xff0c;它反映了技术进步、用户需求变化以及计算机和移动设备界面设计的演进。以下是一个概览&#xff1a; 早期阶段 1970s&#xff1a;朱邦复在1976年发明了仓颉输入法&#xff0c;…

python:绘制一元四次函数的曲线

编写 test_x4_x2_4x.py 如下 # -*- coding: utf-8 -*- """ 绘制函数 y x^4x^24x-3 在 -2<x<2 的曲线 """ import numpy as np from matplotlib import pyplot as plt# 用于正常显示中文标题&#xff0c;负号 plt.rcParams[font.sans-s…

Amazon EC2 部署Ollama + webUI

最近和同事闲聊&#xff0c;我们能不能内网自己部署一个LLM&#xff0c;于是便有了Ollama webUI的尝试 对于Linux&#xff0c;使用一行命令即可 curl -fsSL https://ollama.com/install.sh | shollama --help Large language model runnerUsage:ollam…

网络规划设计师教程(第二版) pdf

网络规划设计师教程在网上找了很多都是第一版&#xff0c;没有第二版。 所以去淘宝买了第二版的pdf&#xff0c;与其自己独享不如共享出来&#xff0c;让大家也能看到。 而且这个pdf我已经用WPS扫描件识别过了&#xff0c;可以直接CtrlF搜索关键词&#xff0c;方便查阅。 链接…

PostgreSQL 中如何解决因频繁的小事务导致的性能下降?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中解决因频繁小事务导致性能下降的方法 PostgreSQL 中解决因频繁小事务导致性能下降的方法…

基于SpringBoot的校园志愿者管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 个人中心 志愿者管理 活动信息…

three-tile开发: 5. 取得地图的地面信息

three-tile 是一个开源的轻量级三维瓦片库&#xff0c;它基于threejs使用typescript开发&#xff0c;提供一个三维地形模型&#xff0c;能轻松给你的应用增加三维瓦片地图。 项目地址&#xff1a;GitHub - sxguojf/three-tile: 3D tile map using threejs 示例地址&#xff1a;…

IT运维也有自己的节日 724向日葵IT运维节,三大版本如何选?

“724运维节”&#xff0c;是2016年由开放运维联盟发起倡议&#xff0c;广大运维人员共同投票产生的属于运维人自己的节日。 对于运维人最大的印象&#xff0c;那就是工作都需要7x24小时待命&#xff0c;是名副其实的“日不落骑士”&#xff0c;这也是大家选择724这一天作为运…

原理图大结局

一、总结哪些地方是5V供电&#xff1f;哪些地方是4V供电&#xff1f;哪些地方是3.3V供电&#xff1f;为什么会这样&#xff1f;根据什么原则来划分供电区域&#xff1f; 二、 5V 供电为什么有的地方要100uF&#xff0b; 0.1uF 滤波&#xff1f;有的地方只要 10uF 滤波&#xff…

RabbitMQ - 延迟消息 - 死信交换机

目录 1、怎么理解延迟消息&#xff1f; 2、如何实现延迟消息&#xff1f; 2.1、方案一&#xff1a;死信交换机 2.1.1、什么是死信&#xff1a; 2.1.2、什么是死信交换机&#xff1f; 2.2、方案二&#xff1a;延迟消息插件 2.2.1、插件安装&#xff1a; 2.2.2、代码实现 …