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

基于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              |
+--------+-----------+--------------------------------------------------+---------------------------------+---------+---------+--------------------+----------+----------+---------------------+

相关文章:

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

基于cobra开发的k8s命令行管理工具k8s-manager 如果觉得好用&#xff0c;麻烦给个Star!通用配置1 node 分析所有node的资源情况2 analysis 分析Node节点上的资源使用构成3 image 获取指定namespace的所有镜像地址4 resource 获取指定namespace的所有limit 与 Requests大小5 top…...

scala基础学习(数据类型)-数组

文章目录 数组 Array创建数组直接定义fillofDimtabulate range打印数组toSeqdeepforeach(println) length获取长度indexOf 获取元素索引获取元素/修改元素遍历数组数组内元素转换filter 过滤found 查找元素数组折叠 foldLeft切片拼接排序拷贝copyclone 数组 Array Array是一个…...

uniapp 微信小程序 页面部分截图实现

uniapp 微信小程序 页面部分截图实现 ​ 原理都是将页面元素画成canvas 然后将canvas转化为图片&#xff0c;问题是我页面里边本来就有一个canvas&#xff0c;ucharts图画的canvas我无法画出这块。 ​ 想了一晚上&#xff0c;既然canvas最后能转化为图片&#xff0c;那我直接…...

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…...

直流无刷电机驱动原理3-驱动板硬件设计

六步换向原理 检测转子角度,知道什么时候是60度,什么时候应该换向。 逆时针旋转 三相逆变器,mos管,半桥驱动电路。 PWM调制 不对称半桥调制例程使用第(2)种。对上桥臂PWM调制,下桥臂全部导通。这时候由上桥臂的PWM的占空比决定电机的旋转速度。驱动器电路硬件框图--实…...

攻防世界web第三题file_include

<?php highlight_file(__FILE__);include("./check.php");if(isset($_GET[filename])){$filename $_GET[filename];include($filename);} ?>惯例&#xff1a; 代码审查&#xff1a; 1.可以看到include(“./check.php”);猜测是同级目录下有一个check.php文…...

Trivy Operator命令使用说明

你已成功安装了 Trivy Operator&#xff0c;以下是命令的使用说明&#xff1a; 1. 查看 VulnerabilityReports VulnerabilityReports 是 Trivy Operator 生成的漏洞扫描报告&#xff0c;用于检查容器镜像中的漏洞。 kubectl get vulnerabilityreports --all-namespaces -o wi…...

Lazada商品评论API接口:深度解析与应用实践

在电商领域&#xff0c;用户评论是了解产品市场表现和消费者反馈的重要渠道。Lazada作为东南亚领先的电商平台&#xff0c;提供了商品评论API接口&#xff0c;允许第三方开发者获取平台上商品的评论信息。本文将深入解析Lazada商品评论API接口的重要性、开发应用、以及如何通过…...

2024最新鸿蒙开发面试题合集(二)-HarmonyOS NEXT Release(API 12 Release)

上一篇面试题链接&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/144685078 1. 鸿蒙简单介绍和发展历程 HarmonyOS 是新一代的智能终端操作系统&#xff0c;为不同设备的智能化、互联与协同提供了统一的语言。带来简洁&#xff0c;流畅&#xff0c;连续&#xff0…...

macrodroid通过http请求控制手机运行宏

macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…...

【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体

版本&#xff1a;Unity2019.4.0f1 PackageManager下载Burst插件(1.2.3版本) 利用如下代码&#xff0c;生成一个Texture3D资源&#xff0c;它只能脚本生成&#xff0c;是一个32*32*32的立方体&#xff0c;导出路径记得改下&#xff0c;不然报错。 using UnityEditor; using Uni…...

Cesium材质——Material

简介&#xff1a; Cesium.Material对象的目的&#xff0c;就是生成一段名称为czm_getMaterial的函数&#xff08;示例代码如下&#xff09;&#xff0c; 这个czm_getMaterial函数&#xff0c;是shader代码&#xff0c;会被放到片元着色器中使用。 czm_material czm_getMater…...

Postman请求报错SSL证书验证问题

1.报错如下 2.解决报错...

终章:DevOps实践总结报告

DevOps实践总结报告 一、概述 1. 报告目的 本报告旨在总结DevOps实践中的关键领域、最佳实践和实施成果&#xff0c;包括需求管理、持续集成/持续部署、测试管理、安全管理和效能度量等方面。 2. 覆盖范围 #mermaid-svg-L0xFFzMbiDH1qhbl {font-family:"trebuchet ms&…...

解锁金融新纪元:内部知识库的深度挖掘与战略价值

在日新月异的金融行业中&#xff0c;信息的快速流通与精准决策成为了企业竞争力的核心。随着大数据、人工智能等技术的不断渗透&#xff0c;金融机构开始意识到&#xff0c;内部知识库的深度挖掘不仅是提升业务效率的关键&#xff0c;更是推动行业创新与转型的重要驱动力。本文…...

【c语言】一维数组与二维数组

数组 数组名代表的是数组在内存中的起始位置&#xff0c;即首元素的地址&#xff0c;而下表表示的则是该元素相对数组起始位置的偏移量 一维数组 1.定义 类型名 数组名[数组长度] int a[100]; //整型数组长度为101&#xff0c;数组名为a char b[100];//字符型数组长度为101&…...

Milvus×EasyAi:如何用java从零搭建人脸识别应用

如何从零搭建一个人脸识别应用&#xff1f;不妨试试原生Java人工智能算法&#xff1a;EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括&#xff1a; EasyAi&#xff1a;人脸特征向量提取Milvus&#xff1a;向量数据库用于高效存储和检索数据。 01. EasyAi&#xff1a;…...

Dockerfile 实战指南:解锁高效容器化开发

一、Dockerfile 简介 Dockerfile 是构建镜像的文本文件&#xff0c;通过一系列指令描述镜像构建过程&#xff0c;构建操作由 Docker daemon 进行&#xff0c;它会先验证语法&#xff0c;然后逐一运行指令&#xff0c;每次生成一个新的镜像层&#xff0c;直到构建出最终的镜像。…...

【每日学点鸿蒙知识】混淆配置、主线程处理大量数据、客户端拖拽效果、三方网站加载样式、List警告问题

1、HarmonyOS API升级之后缺少混淆配置文件&#xff1f; 可参考以下文档&#xff1a; 混淆配置&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-obfuscation-V5 混淆规则&#xff1a;https://gitee.com/openharmony/arkcompiler_ets…...

ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例

目录 1.扩写&#xff08;expansion/paraphrasing&#xff09; 2.优化&#xff08;optimization&#xff09; 3.缩写&#xff08;optimization&#xff09; 4.提取关键词&#xff08;keyword extraction&#xff09; 5.短语转换&#xff08;phrase transformation&#xff…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

书籍“之“字形打印矩阵(8)0609

题目 给定一个矩阵matrix&#xff0c;按照"之"字形的方式打印这个矩阵&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为&#xff1a;1&#xff0c;…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...