基于cobra开发的k8s命令行管理工具k8s-manager

基于cobra开发的k8s命令行管理工具k8s-manager

  • 如果觉得好用,麻烦给个Star!
    • 通用配置
    • 1 node 分析所有node的资源情况
    • 2 analysis 分析Node节点上的资源使用构成
    • 3 image 获取指定namespace的所有镜像地址
    • 4 resource 获取指定namespace的所有limit 与 Requests大小
    • 5 top 获取指定namespace的资源使用情况
    • 常用的使用套路
      • 1 k8s节点异常卡顿,容器频繁重启
      • 2 优化limit requests

如果觉得好用,麻烦给个Star!

项目介绍:Github地址 ,代码已开源

  • https://github.com/qinlang258/cobra-k8s-manager/tree/main

该命令有以下几个功能:analysis,image,node,resource,top
使用 方法:下载项目githun空间下,使用k8s-manager即可,无需进行额外配置。

 longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.Usage:k8s-manager [flags]k8s-manager [command]Available Commands:analysis    分析某一节点的资源使用情况completion  Generate the autocompletion script for the specified shellhelp        Help about any commandimage       获取镜像信息node        获取节点的资源信息resource    获取pod资源的相关 Limit与Resource信息top         获取容器的实际使用资源开销Flags:--analysis string     请输入想分析的Node名字-h, --help                help for k8s-manager--kubeconfig string   请输入 kubeconfig的文件路径 (default "/root/.kube/config")--name string         请输入资源的name信息-n, --namespace string    请输入 namespace空间,如果不填写则输出所有空间下的镜像 (default "all")--node string         请输入想要查询的Node名字--workload string     请输入 workload的种类,如果不填写输出所有类型的镜像 (default "all")Use "k8s-manager [command] --help" for more information about a command.

通用配置

  • 所有命令均可附带 --kubeconfig指定配置文件
    ./k8s-manager --kubeconfig <指定使用的k8s配置文件>

1 node 分析所有node的资源情况

示例代码

1 获取所有节点的资源信息
./k8s-manager node 

示例代码

root@k8s:/usr/local/cobra-k8s-manager# k8s-manager node
+--------+----------------+--------------------+-------------+---------------------------+-------------+-----------+-------------------------+--------------+------------+--------------------------+
| 节点名 |     节点IP     |       OS镜像       | KUBELET版本 | CONTAINER RUNTIME VERSION | 已使用的CPU | CPU总大小 | CPU使用占服务器的百分比 | 已使用的内存 | 内存总大小 | 内存使用占服务器的百分比 |
+--------+----------------+--------------------+-------------+---------------------------+-------------+-----------+-------------------------+--------------+------------+--------------------------+
| k8s    | 192.168.44.134 | Ubuntu 22.04.4 LTS | v1.26.7     | containerd://1.6.8        | 363.00m     | 8000m     | 4.54%                   | 6585.25Mi    | 7901.89Mi  | 83.34%                   |
+--------+----------------+--------------------+-------------+---------------------------+-------------+-----------+-------------------------+--------------+------------+--------------------------+

2 analysis 分析Node节点上的资源使用构成

1 分析指定节点上的所有容器的资源开销
./k8s-manager analysis --node <节点名>  

示例代码

root@k8s:/usr/local/cobra-k8s-manager# k8s-manager analysis --node k8s
E1222 05:55:41.502661   75816 analysis.go:46] context.BackgroundError fetching metrics for pod ingress-nginx-admission-create-r24ff: pods "ingress-nginx-admission-create-r24ff" not found
E1222 05:55:41.504124   75816 analysis.go:46] context.BackgroundError fetching metrics for pod ingress-nginx-admission-patch-w5gnn: pods "ingress-nginx-admission-patch-w5gnn" not found
+--------+---------------+--------------------------------------------------+---------------------------------+-----------------+-------------------------+------------------+--------------------------+
| 节点名 |   NAMESPACE   |                     POD NAME                     |             容器名              | 当前已使用的CPU | CPU使用占服务器的百分比 | 当前已使用的内存 | 内存使用占服务器的百分比 |
+--------+---------------+--------------------------------------------------+---------------------------------+-----------------+-------------------------+------------------+--------------------------+
| k8s    | kube-system   | kube-apiserver-k8s                               | kube-apiserver                  | 35.00m          | 0.44%                   | 492.68m          | 6.24%                    |
| k8s    | monitoring    | prometheus-k8s-0                                 | prometheus                      | 10.00m          | 0.12%                   | 383.23m          | 4.85%                    |
| k8s    | monitoring    | prometheus-k8s-1                                 | prometheus                      | 17.00m          | 0.21%                   | 342.59m          | 4.34%                    |
| k8s    | ingress-nginx | ingress-nginx-controller-f87d69b54-t8kd8         | controller                      | 1.00m           | 0.01%                   | 166.57m          | 2.11%                    |
| k8s    | monitoring    | grafana-9bb74449d-8m8xl                          | grafana                         | 4.00m           | 0.05%                   | 134.36m          | 1.70%                    |
| k8s    | kube-system   | calico-node-7zbfk                                | calico-node                     | 24.00m          | 0.30%                   | 102.68m          | 1.30%                    |
| k8s    | kube-system   | etcd-k8s                                         | etcd                            | 18.00m          | 0.22%                   | 86.12m           | 1.09%                    |
| k8s    | kube-system   | kube-controller-manager-k8s                      | kube-controller-manager         | 11.00m          | 0.14%                   | 85.29m           | 1.08%                    |
| k8s    | monitoring    | prometheus-adapter-854d95bc45-pvfh7              | prometheus-adapter              | 3.00m           | 0.04%                   | 58.35m           | 0.74%                    |
| k8s    | monitoring    | prometheus-operator-57cf88fbcb-wks8t             | prometheus-operator             | 1.00m           | 0.01%                   | 45.33m           | 0.57%                    |
| k8s    | kube-system   | coredns-5bbd96d687-x9qmp                         | coredns                         | 2.00m           | 0.03%                   | 43.17m           | 0.55%                    |
| k8s    | kube-system   | metrics-server-7d5c696976-wlms5                  | metrics-server                  | 3.00m           | 0.04%                   | 38.56m           | 0.49%                    |
| k8s    | kube-system   | kube-scheduler-k8s                               | kube-scheduler                  | 2.00m           | 0.03%                   | 35.71m           | 0.45%                    |
| k8s    | monitoring    | node-exporter-6cqz8                              | kube-rbac-proxy                 | 1.00m           | 0.01%                   | 34.83m           | 0.44%                    |
| k8s    | monitoring    | kube-state-metrics-79996cfcc5-5286s              | kube-state-metrics              | 1.00m           | 0.01%                   | 33.56m           | 0.42%                    |
| k8s    | kube-system   | calico-kube-controllers-57b57c56f-d5p6n          | calico-kube-controllers         | 1.00m           | 0.01%                   | 31.89m           | 0.40%                    |
| k8s    | monitoring    | prometheus-adapter-854d95bc45-tz822              | prometheus-adapter              | 3.00m           | 0.04%                   | 30.73m           | 0.39%                    |
| k8s    | kube-system   | kube-proxy-nb9tq                                 | kube-proxy                      | 1.00m           | 0.01%                   | 29.99m           | 0.38%                    |
| k8s    | monitoring    | alertmanager-main-1                              | alertmanager                    | 2.00m           | 0.03%                   | 29.04m           | 0.37%                    |
| k8s    | kube-system   | coredns-5bbd96d687-thl59                         | coredns                         | 2.00m           | 0.03%                   | 29.00m           | 0.37%                    |
| k8s    | monitoring    | alertmanager-main-0                              | alertmanager                    | 2.00m           | 0.03%                   | 27.72m           | 0.35%                    |
| k8s    | monitoring    | alertmanager-main-2                              | alertmanager                    | 2.00m           | 0.03%                   | 27.71m           | 0.35%                    |
| k8s    | monitoring    | alertmanager-main-0                              | config-reloader                 | 0.00m           | 0.00%                   | 22.56m           | 0.29%                    |
| k8s    | monitoring    | blackbox-exporter-59dddb7bb6-8lp69               | blackbox-exporter               | 1.00m           | 0.01%                   | 21.18m           | 0.27%                    |
| k8s    | monitoring    | prometheus-k8s-1                                 | config-reloader                 | 1.00m           | 0.01%                   | 20.79m           | 0.26%                    |
| k8s    | monitoring    | alertmanager-main-1                              | config-reloader                 | 1.00m           | 0.01%                   | 20.40m           | 0.26%                    |
| k8s    | monitoring    | prometheus-k8s-0                                 | config-reloader                 | 0.00m           | 0.00%                   | 20.16m           | 0.26%                    |
| k8s    | monitoring    | alertmanager-main-2                              | config-reloader                 | 1.00m           | 0.01%                   | 18.77m           | 0.24%                    |
| k8s    | nfs           | nfs-subdir-external-provisioner-65664b8954-qrs2q | nfs-subdir-external-provisioner | 1.00m           | 0.01%                   | 17.30m           | 0.22%                    |
| k8s    | monitoring    | node-exporter-6cqz8                              | node-exporter                   | 13.00m          | 0.16%                   | 15.90m           | 0.20%                    |
| k8s    | monitoring    | kube-state-metrics-79996cfcc5-5286s              | kube-rbac-proxy-main            | 1.00m           | 0.01%                   | 9.80m            | 0.12%                    |
| k8s    | monitoring    | prometheus-operator-57cf88fbcb-wks8t             | kube-rbac-proxy                 | 1.00m           | 0.01%                   | 9.67m            | 0.12%                    |
| k8s    | monitoring    | blackbox-exporter-59dddb7bb6-8lp69               | kube-rbac-proxy                 | 1.00m           | 0.01%                   | 9.62m            | 0.12%                    |
| k8s    | monitoring    | kube-state-metrics-79996cfcc5-5286s              | kube-rbac-proxy-self            | 1.00m           | 0.01%                   | 9.15m            | 0.12%                    |
| k8s    | monitoring    | blackbox-exporter-59dddb7bb6-8lp69               | module-configmap-reloader       | 0.00m           | 0.00%                   | 4.00m            | 0.05%                    |
+--------+---------------+--------------------------------------------------+---------------------------------+-----------------+-------------------------+------------------+--------------------------+

3 image 获取指定namespace的所有镜像地址

示例代码

1 获取所有namespace的镜像地址  
./k8s-manager image  
2 获取指定namespace的镜像地址
./k8s-manager image -n <namespace>

示例代码

root@k8s:/usr/local/cobra-k8s-manager# k8s-manager image
+---------------+--------------+---------------------------------+---------------------------------+---------------------------------------------------------------------------------+
|   NAMESPACE   |   资源类型   |             资源名              |             容器名              |                                    镜像地址                                     |
+---------------+--------------+---------------------------------+---------------------------------+---------------------------------------------------------------------------------+
| ingress-nginx | deployment   | ingress-nginx-controller        | controller                      | registry.cn-zhangjiakou.aliyuncs.com/jcrose-k8s/ingress-nginx-controller:v1.7.0 |
| kube-system   | deployment   | calico-kube-controllers         | calico-kube-controllers         | docker.io/calico/kube-controllers:v3.25.0                                       |
| kube-system   | deployment   | coredns                         | coredns                         | registry.aliyuncs.com/google_containers/coredns:v1.9.3                          |
| kube-system   | deployment   | metrics-server                  | metrics-server                  | k8s.dockerproxy.net/metrics-server/metrics-server:v0.7.2                        |
| kube-system   | daemonsets   | calico-node                     | calico-node                     | docker.io/calico/node:v3.25.0                                                   |
| kube-system   | daemonsets   | kube-proxy                      | kube-proxy                      | registry.aliyuncs.com/google_containers/kube-proxy:v1.26.7                      |
| monitoring    | deployment   | blackbox-exporter               | blackbox-exporter               | quay.io/prometheus/blackbox-exporter:v0.24.0                                    |
| monitoring    | deployment   | blackbox-exporter               | module-configmap-reloader       | jimmidyson/configmap-reload:v0.5.0                                              |
| monitoring    | deployment   | blackbox-exporter               | kube-rbac-proxy                 | quay.io/brancz/kube-rbac-proxy:v0.14.2                                          |
| monitoring    | deployment   | grafana                         | grafana                         | grafana/grafana:9.5.3                                                           |
| monitoring    | deployment   | kube-state-metrics              | kube-state-metrics              | bitnami/kube-state-metrics:2.9.2                                                |
| monitoring    | deployment   | kube-state-metrics              | kube-rbac-proxy-main            | quay.io/brancz/kube-rbac-proxy:v0.14.2                                          |
| monitoring    | deployment   | kube-state-metrics              | kube-rbac-proxy-self            | quay.io/brancz/kube-rbac-proxy:v0.14.2                                          |
| monitoring    | deployment   | prometheus-adapter              | prometheus-adapter              | xuxiaoweicomcn/prometheus-adapter:v0.11.1                                       |
| monitoring    | deployment   | prometheus-operator             | prometheus-operator             | quay.io/prometheus-operator/prometheus-operator:v0.67.1                         |
| monitoring    | deployment   | prometheus-operator             | kube-rbac-proxy                 | quay.io/brancz/kube-rbac-proxy:v0.14.2                                          |
| monitoring    | statefulsets | alertmanager-main               | alertmanager                    | quay.io/prometheus/alertmanager:v0.26.0                                         |
| monitoring    | statefulsets | alertmanager-main               | config-reloader                 | quay.io/prometheus-operator/prometheus-config-reloader:v0.67.1                  |
| monitoring    | statefulsets | prometheus-k8s                  | prometheus                      | quay.io/prometheus/prometheus:v2.46.0                                           |
| monitoring    | statefulsets | prometheus-k8s                  | config-reloader                 | quay.io/prometheus-operator/prometheus-config-reloader:v0.67.1                  |
| monitoring    | daemonsets   | node-exporter                   | node-exporter                   | quay.io/prometheus/node-exporter:v1.6.1                                         |
| monitoring    | daemonsets   | node-exporter                   | kube-rbac-proxy                 | quay.io/brancz/kube-rbac-proxy:v0.14.2                                          |
| nfs           | deployment   | nfs-subdir-external-provisioner | nfs-subdir-external-provisioner | dyrnq/nfs-subdir-external-provisioner:v4.0.2                                    |
+---------------+--------------+---------------------------------+---------------------------------+---------------------------------------------------------------------------------+

4 resource 获取指定namespace的所有limit 与 Requests大小

新增 Java XMX XMS的展示,比较直观的展示 CPU内存的Limit与Requests,Prometheus根据7天查询的内存CPU使用(已经根据转换得到与kubectl top po一直的数据格式),Java_opts的XMX,XMS,可以作为一个参考依据来调整。
示例代码

1 获取所有namespace的limit 与 Requests大小  
./k8s-manager resource  
2 获取指定namespace的limit 与 Requests大小
./k8s-manager resource -n <namespace>3 在prometheus查询最近七天的内存CPU使用情况
./k8s-manager resource prometheus -u <prometheus访问地址>

在这里插入图片描述

示例代码:获取requests与Limit,并且查询prometheus的实际开销

root@k8s:/usr/local/cobra-k8s-manager# k8s-manager resource prometheus -u http://192.168.44.134:20248/ -n monitoring
+------------+--------------------------------------+---------------------------+---------+---------+--------------------+----------+----------+---------------------+
| NAMESPACE  |               POD NAME               |          容器名           | CPU限制 | CPU所需 | 最近7天已使用的CPU | 内存限制 | 内存所需 | 最近7天已使用的内存 |
+------------+--------------------------------------+---------------------------+---------+---------+--------------------+----------+----------+---------------------+
| monitoring | alertmanager-main-0                  | alertmanager              | 100m    | 4m      | 7.76m              | 100Mi    | 100Mi    | 23.12MI             |
| monitoring | alertmanager-main-0                  | config-reloader           | 10m     | 10m     | 1.13m              | 50Mi     | 50Mi     | 17.61MI             |
| monitoring | alertmanager-main-1                  | alertmanager              | 100m    | 4m      | 6.68m              | 100Mi    | 100Mi    | 23.20MI             |
| monitoring | alertmanager-main-1                  | config-reloader           | 10m     | 10m     | 0.56m              | 50Mi     | 50Mi     | 17.49MI             |
| monitoring | alertmanager-main-2                  | alertmanager              | 100m    | 4m      | 8.00m              | 100Mi    | 100Mi    | 23.27MI             |
| monitoring | alertmanager-main-2                  | config-reloader           | 10m     | 10m     | 0.58m              | 50Mi     | 50Mi     | 17.42MI             |
| monitoring | blackbox-exporter-59dddb7bb6-8lp69   | blackbox-exporter         | 20m     | 10m     | 3.24m              | 40Mi     | 40Mi     | 14.40MI             |
| monitoring | blackbox-exporter-59dddb7bb6-8lp69   | module-configmap-reloader | 20m     | 10m     | 0.00m              | 40Mi     | 40Mi     | 1.24MI              |
| monitoring | blackbox-exporter-59dddb7bb6-8lp69   | kube-rbac-proxy           | 20m     | 10m     | 0.54m              | 40Mi     | 40Mi     | 8.84MI              |
| monitoring | grafana-9bb74449d-8m8xl              | grafana                   | 200m    | 100m    | 13.44m             | 200Mi    | 200Mi    | 78.36MI             |
| monitoring | kube-state-metrics-79996cfcc5-5286s  | kube-state-metrics        | 100m    | 10m     | 2.65m              | 250Mi    | 250Mi    | 18.55MI             |
| monitoring | kube-state-metrics-79996cfcc5-5286s  | kube-rbac-proxy-main      | 40m     | 20m     | 0.98m              | 40Mi     | 40Mi     | 9.24MI              |
| monitoring | kube-state-metrics-79996cfcc5-5286s  | kube-rbac-proxy-self      | 20m     | 10m     | 0.52m              | 40Mi     | 40Mi     | 8.93MI              |
| monitoring | node-exporter-6cqz8                  | node-exporter             | 250m    | 102m    | 42.76m             | 180Mi    | 180Mi    | 9.23MI              |
| monitoring | node-exporter-6cqz8                  | kube-rbac-proxy           | 20m     | 10m     | 2.64m              | 40Mi     | 40Mi     | 11.93MI             |
| monitoring | prometheus-adapter-854d95bc45-pvfh7  | prometheus-adapter        | 250m    | 102m    | 10.88m             | 180Mi    | 180Mi    | 31.21MI             |
| monitoring | prometheus-adapter-854d95bc45-tz822  | prometheus-adapter        | 250m    | 102m    | 9.31m              | 180Mi    | 180Mi    | 31.08MI             |
| monitoring | prometheus-k8s-0                     | prometheus                |       0 |       0 | 59.38m             |        0 |        0 | 321.25MI            |
| monitoring | prometheus-k8s-0                     | config-reloader           | 10m     | 10m     | 0.35m              | 50Mi     | 50Mi     | 18.61MI             |
| monitoring | prometheus-k8s-1                     | prometheus                |       0 |       0 | 53.57m             |        0 |        0 | 321.04MI            |
| monitoring | prometheus-k8s-1                     | config-reloader           | 10m     | 10m     | 0.67m              | 50Mi     | 50Mi     | 18.47MI             |
| monitoring | prometheus-operator-57cf88fbcb-wks8t | prometheus-operator       | 200m    | 100m    | 2.03m              | 200Mi    | 200Mi    | 27.48MI             |
| monitoring | prometheus-operator-57cf88fbcb-wks8t | kube-rbac-proxy           | 20m     | 10m     | 0.71m              | 40Mi     | 40Mi     | 9.12MI              |
+------------+--------------------------------------+---------------------------+---------+---------+--------------------+----------+----------+---------------------+

5 top 获取指定namespace的资源使用情况

这个命令是查看以namespace为单位的,不能top node节点,如果需要看 node信息,使用 k8s-manager node 或者 k8s-manager analysis --node

1 获取所有namespace的资源开销
./k8s-manager top
2 获取指定namespace的资源开销
./k8s-manager top -n <namespace> 

示例代码

root@k8s:/usr/local/cobra-k8s-manager# k8s-manager top -n monitoring
+------------+-------------+--------------------------------+--------------------------------------+-------------+--------------+
| NAMESPACE  |  资源类型   |             资源名             |               POD NAME               | 已使用的CPU | 已使用的内存 |
+------------+-------------+--------------------------------+--------------------------------------+-------------+--------------+
| monitoring | StatefulSet | alertmanager-main              | alertmanager-main-0                  | 2.00m       | 28.20m       |
| monitoring | StatefulSet | alertmanager-main              | alertmanager-main-1                  | 1.00m       | 19.89m       |
| monitoring | StatefulSet | alertmanager-main              | alertmanager-main-2                  | 2.00m       | 27.96m       |
| monitoring | ReplicaSet  | blackbox-exporter-59dddb7bb6   | blackbox-exporter-59dddb7bb6-8lp69   | 0.00m       | 4.00m        |
| monitoring | ReplicaSet  | grafana-9bb74449d              | grafana-9bb74449d-8m8xl              | 5.00m       | 134.92m      |
| monitoring | ReplicaSet  | kube-state-metrics-79996cfcc5  | kube-state-metrics-79996cfcc5-5286s  | 1.00m       | 9.84m        |
| monitoring | DaemonSet   | node-exporter                  | node-exporter-6cqz8                  | 9.00m       | 16.10m       |
| monitoring | ReplicaSet  | prometheus-adapter-854d95bc45  | prometheus-adapter-854d95bc45-pvfh7  | 3.00m       | 57.54m       |
| monitoring | ReplicaSet  | prometheus-adapter-854d95bc45  | prometheus-adapter-854d95bc45-tz822  | 3.00m       | 32.05m       |
| monitoring | StatefulSet | prometheus-k8s                 | prometheus-k8s-0                     | 12.00m      | 397.64m      |
| monitoring | StatefulSet | prometheus-k8s                 | prometheus-k8s-1                     | 10.00m      | 375.96m      |
| monitoring | ReplicaSet  | prometheus-operator-57cf88fbcb | prometheus-operator-57cf88fbcb-wks8t | 1.00m       | 43.32m       |
+------------+-------------+--------------------------------+--------------------------------------+-------------+--------------+

常用的使用套路

1 k8s节点异常卡顿,容器频繁重启

k8s-manager analysis --node k8s #查看实际node上的开销情况,数据是由metrics-server提供的,使用的资源在服务器的占比

2 优化limit requests

支持 namespace与 node的筛选

root@k8s:/usr/local/cobra-k8s-manager# go run main.go resource prometheus -u http://192.168.44.134:20248/  --node k8s -n nfs
+--------+-----------+--------------------------------------------------+---------------------------------+---------+---------+--------------------+----------+----------+---------------------+
| 节点名 | NAMESPACE |                     POD NAME                     |             容器名              | CPU限制 | CPU所需 | 最近7天已使用的CPU | 内存限制 | 内存所需 | 最近7天已使用的内存 |
+--------+-----------+--------------------------------------------------+---------------------------------+---------+---------+--------------------+----------+----------+---------------------+
| k8s    | nfs       | nfs-subdir-external-provisioner-65664b8954-qrs2q | nfs-subdir-external-provisioner |       0 |       0 | 4.10m              |        0 |        0 | 9.60Mi              |
+--------+-----------+--------------------------------------------------+---------------------------------+---------+---------+--------------------+----------+----------+---------------------+

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

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

相关文章

从零开始C++游戏开发之第七篇:游戏状态机与回合管理

在游戏开发的道路上&#xff0c;状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中&#xff0c;游戏的进行需要有条不紊地按照回合推进&#xff0c;同时管理多个游戏状态&#xff0c;如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到&#xff0c;当有 USB 插入时&…

MySQL从入门到入土---MySQL表的约束 (内含实践)---详细版

目录 引入&#xff1a; null 与not null default&#xff1a; comment列描述 &#xff1a; not null 和 default&#xff1a; zerofill &#xff1a; 主键&#xff1a;primary key 复合主键&#xff1a; 自增长:auto_increment 唯一键&#xff1a;unique key 外键&a…

Redis大Key问题全解析

1. 引言 1.1 什么是Redis大Key&#xff1f; Redis大Key是指单个Key对应的数据量过大&#xff0c;占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种&#xff1a; String类型&#xff1a;单个字符串的长度过大。List类型&#xff1a;包含…

VIVO Android面试题及参考答案

请重写算法题:求数组的全排列。 思路: 要获取一个数组的全排列,我们可以利用回溯算法。具体来说,回溯算法通过递归的方式逐步生成排列,在每一步都将一个元素加入排列中,然后在下一步递归中排除已选元素,回溯的时候撤销选择,尝试其他可能。 步骤: 递归生成排列: 使…

易语言 OCR 文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

postgreSql对分钟级的降雨数据进行插值为整小时

postgreSql对分钟级的降雨数据进行插值为整小时 1.SQL语句实现&#xff1a;对分钟级的降雨数据进行插值为整小时2.SQL语句实现&#xff1a;将水库、水文站、水闸按照分钟时间插值到小时 1.SQL语句实现&#xff1a;对分钟级的降雨数据进行插值为整小时 --核查某个小流域的降雨量…

docker如何打包部署springboot的项目

一、将项目打包成jar包&#xff0c;或者war包。 首先&#xff0c;确保已经使用 Maven 或 Gradle 等工具将项目打包成 JAR 文件。如果使用的是 Maven&#xff0c;可以通过以下命令打包&#xff1a; #gradle 构建的项目 gradle build #mvn 构建项目、 mvn clean packege …

【JS】for-in 和 for-of遍历对象的区别

【介绍】 for-in 和 for-of 都是 JavaScript 中用于遍历数据结构的循环语句&#xff0c;但它们的工作原理和适用场景有所不同。特别是它们在遍历对象时的行为是不同的。 【区别】 for-in 遍历对象 for-in 是用于遍历对象的 可枚举属性的键名&#xff08;属性名&#xff09;…

GraalVM完全指南:云原生时代下使用GraalVM将Spring Boot 3应用转换为高效Linux可执行文件

一、前言 在现代软件开发中,启动速度和资源利用率常常是衡量应用性能的关键指标。对于基于Spring Boot的应用来说,虽然它们易于开发和部署,但JVM的启动时间有时会成为一个瓶颈。本文介绍如何使用GraalVM将Spring Boot 3应用编译成原生Linux可执行文件,从而显著提高启动速度…

Word批量更改题注

文章目录 批量更改批量去除空格 在写文章的时候&#xff0c;往往对图片题注有着统一的编码要求&#xff0c;例如以【图 1- xx】。一般会点击【引用】->【插入题注】来插入题注&#xff0c;并且在引用的时候&#xff0c;点击【引用】->【交叉引用】&#xff0c;并且在交叉…

基于SpringBoot的蜗牛兼职网的设计与实现

一、项目背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对蜗牛兼职网方面的要求也在不断提高&#xff0c;需要兼职工作的人数更是不断增加&#xff0c;使得蜗牛兼职网的开发成为必需而且紧迫的事情。蜗牛…

shardingsphere分库分表项目实践5-自己用java写一个sql解析器+完整项目源码

前1节我们介绍了 shardingsphere 分表分库的sql解析与重写&#xff1a; shardingsphere分库分表项目实践4-sql解析&重写-CSDN博客 那么shardingsphere sql 解析底层究竟是怎么实现的呢&#xff0c;其实它直接用了著名的开源软件 antlr . antlr 介绍&#xff1a; ANTLR&a…

光谱相机与普通相机的区别

一、成像目的 普通相机&#xff1a;主要目的是记录物体的外观形态&#xff0c;生成人眼可见的、直观的二维图像&#xff0c;重点在于还原物体的形状、颜色和纹理等视觉特征&#xff0c;以供人们进行观赏、记录场景或人物等用途。例如&#xff0c;拍摄旅游风景照片、人物肖像等…

【Linux】Linux中用户信息相关的配置文件:/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers

1 用户信息 1.1 /etc/passwd linux上用户的信息保存在/etc/passwd中&#xff0c;看文件名会以为这里保存的是用户密码&#xff0c;但实际上用户密码保存在另一个文件中。 /etc/passwd文件中每行保存一个用户的信息&#xff0c;例如&#xff1a; root:x:0:0:root:/root:/bin…

TiDB 的MPP架构概述

MPP架构介绍&#xff1a; 如图&#xff0c;TiDB Server 作为协调者&#xff0c;首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换&#xff0c;让表连接在一个TiFlash上。另外 TiFlash会作为计算节点&#xff0c;每个TiFlash都负责数据交换&#xff0c;表连接…

Elasticsearch-索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 #批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mget {"…

渗透Vulnhub-Solidstate靶机

本篇文章旨在为网络安全渗透测试行业靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列Solidstate靶机有定的了解 一、信息收集阶段 靶机官网&#xff1a;https://www.vulnhub.com/entry/solidstate-1%2C261/ 因为靶机为本地部署虚拟机网段&#xff0c;查看dhcp…

YOLOv9-0.1部分代码阅读笔记-anchor_generator.py

anchor_generator.py utils\tal\anchor_generator.py 目录 anchor_generator.py 1.所需的库和模块 2.def make_anchors(feats, strides, grid_cell_offset0.5): 3.def dist2bbox(distance, anchor_points, xywhTrue, dim-1): 4.def bbox2dist(anchor_points, bbox, re…

【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案,附案例。

【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案&#xff0c;附案例。 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案&#xff0c;附案例。 文章目录 【深度学习基础|pip安装】pip 安装深度学习库常见错误及解决方案&#xff0c;附案例。1. 错…