当前位置: 首页 > 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…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…...

Java高级 |【实验八】springboot 使用Websocket

隶属文章&#xff1a;Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a;Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…...