k8s集群 安装配置 Prometheus+grafana
k8s集群 安装配置 Prometheus+grafana
- k8s环境如下:
- 机器规划:
- node-exporter组件安装和配置
- 安装node-exporter
- 通过node-exporter采集数据
- 显示192.168.40.180主机cpu的使用情况
- 显示192.168.40.180主机负载使用情况
- Prometheus server安装和配置
- 创建sa账号,对sa做rbac授权
- 创建prometheus数据存储目录
- 安装Prometheus server服务
- 通过deployment部署prometheus
- 给prometheus pod创建一个service
- Prometheus热加载
- 可视化UI界面Grafana的安装和配置
- 安装Grafana
- Grafana界面接入Prometheus数据源
- 配置grafana界面:
- 导入的监控模板,可在如下链接搜索
- 如果Grafana导入Prometheusz之后,发现仪表盘没有数据,如何排查?
- 安装kube-state-metrics组件
- kube-state-metrics是什么?
- 安装kube-state-metrics组件
k8s环境如下:
k8s集群: k8s的控制节点
ip:192.168.40.110
主机名:k8smaster1
配置:4vCPU/4Gi内存
k8s的工作节点:
ip:192.168.40.111
主机名:k8snode1
配置:4vCPU/4Gi内存
k8s版本1.25
机器规划:
我的实验环境使用的k8s集群是一个master节点和一个node节点
master节点的机器ip是192.168.40.110,主机名是k8smaster1
node节点的机器ip是192.168.40.111,主机名是k8snode1
node-exporter组件安装和配置
node-exporter介绍
node-exporter可以采集机器(物理机、虚拟机、云主机等)的监控指标数据,能够采集到的指标包括CPU, 内存,磁盘,网络,文件数等信息。
安装node-exporter
node-exporter.tar.gz镜像压缩包上传到k8s的各个节点,手动解压:
链接:https://pan.baidu.com/s/1EBsJPfWDO3c1qMeaESe5Ig?pwd=7bbw
提取码:7bbw
kubectl create ns monitor-sa
ctr -n=k8s.io images import node-exporter.tar.gz
docker load -i node-exporter.tar.gz
node-export.yaml
链接:https://pan.baidu.com/s/1wqaDok9afK58AGTR-QlvGg?pwd=fjfr
提取码:fjfr
cat node-export.yaml
kind: DaemonSet #可以保证k8s集群的每个节点都运行完全一样的podspec:hostPID: truehostIPC: truehostNetwork: true
# hostNetwork、hostIPC、hostPID都为True时,表示这个Pod里的所有容器
#会直接使用宿主机的网络,直接与宿主机进行IPC(进程间通信)通信,可以看到宿主机里正在运行的所有进程。
#加入了hostNetwork:true会直接将我们的宿主机的9100端口映射出来
#从而不需要创建service 在我们的宿主机上就会有一个9100的端口cpu: 0.15 #这个容器运行至少需要0.15核cpusecurityContext:privileged: true #开启特权模式args:- --path.procfs #配置挂载宿主机(node节点)的路径- /host/proc- --path.sysfs #配置挂载宿主机(node节点)的路径- '"^/(sys|proc|dev|host|etc)($|/)"'#通过正则表达式忽略某些文件系统挂载点的信息收集volumeMounts:- name: devmountPath: /host/dev- name: procmountPath: /host/proc- name: sysmountPath: /host/sys- name: rootfsmountPath: /rootfs
#将主机/dev、/proc、/sys这些目录挂在到容器中,这是因为我们采集的很多节点数据都是通过这些文件来获取系统信息的。
通过kubectl apply更新node-exporter.yaml文件
kubectl apply -f node-export.yaml
查看node-exporter是否部署成功
kubectl get pods -n monitor-sa
显示如下,看到pod的状态都是running,说明部署成功
通过node-exporter采集数据
显示192.168.40.180主机cpu的使用情况
curl http://虚拟机ip:9100/metrics
curl http://192.168.40.110:9100/metrics | grep node_cpu_seconds
- #HELP:解释当前指标的含义,上面表示在每种模式下node节点的cpu花费的时间,以s为单位
- #TYPE:说明当前指标的数据类型,上面是counter类型
node_cpu_seconds_total{cpu="0",mode="idle"} :
- cpu0上idle进程占用CPU的总时间,CPU占用时间是一个只增不减的度量指标,从类型中也可以看出node_cpu的数据类型是counter(计数器)
- counter计数器:只是采集递增的指标
显示192.168.40.180主机负载使用情况
curl http://192.168.40.180:9100/metrics | grep node_load
- node_load1该指标反映了当前主机在最近一分钟以内的负载情况,系统的负载情况会随系统资源的使用而变化,因此node_load1反映的是当前状态,数据可能增加也可能减少,从注释中可以看出当前指标类型为gauge(标准尺寸)
- gauge标准尺寸:统计的指标可增加可减少
Prometheus server安装和配置
创建sa账号,对sa做rbac授权
创建一个sa账号monitor
kubectl create serviceaccount monitor -n monitor-sa
把sa账号monitor通过clusterrolebing绑定到clusterrole上
kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin --serviceaccount=monitor-sa:monitor
注意:行上面授权可能回报错,那就需要下面的授权命令
kubectl create clusterrolebinding monitor-clusterrolebinding-1 -n monitor-sa --clusterrole=cluster-admin --user=system:serviceaccount:monitor:monitor-sa
创建prometheus数据存储目录
在k8s集群的xianchaonode1节点上创建数据存储目录
#在节点创建
mkdir /data
chmod 777 /data/
安装Prometheus server服务
创建一个configmap存储卷,用来存放prometheus配置信息
通过kubectl apply更新configmap
prometheus-cfg.yaml文件上传到k8s控制节点k8smaster1上:
链接:https://pan.baidu.com/s/1lQGQLp7ikDHSanOusSMTWQ?pwd=w6w4
提取码:w6w4
kubectl apply -f prometheus-cfg.yaml
cat prometheus-cfg.yaml
scrape_interval: 15s #采集目标主机监控据的时间间隔scrape_timeout: 10s # 数据采集超时时间,默认10sevaluation_interval: 1m #触发告警检测的时间,默认是1m#我们写了超过80%的告警,结果收到多条告警,但是真实超过80%的只有一个时间点。#这是另外一个参数影响的
evaluation_interval #这个是触发告警检测的时间,默认为1m。假如我们的指标是5m被拉取一次。
#检测根据evaluation_interval 1m一次,所以在值被更新前,我们一直用的旧值来进行多次判断,造成了1m一次,同一个指标被告警了4次。#scrape_configs:配置数据源,称为target,每个target用job_name命名。又分为静态配置和服务发现- job_name: 'kubernetes-node'kubernetes_sd_configs:
#使用的是k8s的服务发现- role: node
# 使用node角色,它使用默认的kubelet提供的http端口来发现集群中每个node节点。relabel_configs:
#重新标记- source_labels: [__address__] #配置的原始标签,匹配地址regex: '(.*):10250' #匹配带有10250端口的urlreplacement: '${1}:9100' #把匹配到的ip:10250的ip保留target_label: __address__ #新生成的url是${1}获取到的ip:9100action: replace- action: labelmap
#匹配到下面正则表达式的标签会被保留,如果不做regex正则的话,默认只是会显示instance标签regex: __meta_kubernetes_node_label_(.+)- job_name: 'kubernetes-node-cadvisor'
# 抓取cAdvisor数据,是获取kubelet上/metrics/cadvisor接口数据来获取容器的资源使用情况- action: labelmap #把匹配到的标签保留regex: __meta_kubernetes_node_label_(.+) #保留匹配到的具有__meta_kubernetes_node_label的标签- target_label: __address__ #获取到的地址:__address__="192.168.40.110:10250"replacement: kubernetes.default.svc:443 #把获取到的地址替换成新的地址kubernetes.default.svc:443- source_labels: [__meta_kubernetes_node_name] #把原始标签中__meta_kubernetes_node_name值匹配到regex: (.+)target_label: __metrics_path__ #获取__metrics_path__对应的值replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor #把metrics替换成新的值api/v1/nodes/k8smaster1/proxy/metrics/cadvisor
# ${1}是__meta_kubernetes_node_name获取到的值
#新的url就是https://kubernetes.default.svc:443/api/v1/nodes/k8smaster1/proxy/metrics/cadvisor- job_name: 'kubernetes-apiserver'kubernetes_sd_configs:- role: endpoints #使用k8s中的endpoint服务发现,采集apiserver 6443端口获取到的数据- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] #endpoint这个对象的名称空间 ,endpoint对象的服务名,exnpoint的端口名称]action: keep #采集满足条件的实例,其他实例不采集regex: default;kubernetes;https #正则匹配到的默认空间下的service名字是kubernetes,协议是https的endpoint类型保留下来relabel_configs:- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]action: keepregex: true
# 重新打标仅抓取到的具有 "prometheus.io/scrape: true" 的annotation的端点,意思是说如果某个service具有prometheus.io/scrape = true annotation声明则抓取,annotation本身也是键值结构,所以这里的源标签设置为键,而regex设置值true,当值匹配到regex设定的内容时则执行keep动作也就是保留,其余则丢弃。- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]action: replacetarget_label: __scheme__regex: (https?)
#重新设置scheme,匹配源标签__meta_kubernetes_service_annotation_prometheus_io_scheme也就是prometheus.io/scheme annotation,如果源标签的值匹配到regex,则把值替换为__scheme__对应的值。- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]action: replacetarget_label: __metrics_path__regex: (.+)
# 应用中自定义暴露的指标,也许你暴露的API接口不是/metrics这个路径,那么你可以在这个POD对应的service中做一个"prometheus.io/path = /mymetrics" 声明,上面的意思就是把你声明的这个路径赋值给__metrics_path__,其实就是让prometheus来获取自定义应用暴露的metrices的具体路径,不过这里写的要和service中做好约定,如果service中这样写 prometheus.io/app-metrics-path: '/metrics' 那么你这里就要
__meta_kubernetes_service_annotation_prometheus_io_app_metrics_path这样写。- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]action: replacetarget_label: __address__regex: ([^:]+)(?::\d+)?;(\d+)replacement: $1:$2
# 暴露自定义的应用的端口,就是把地址和你在service中定义的 "prometheus.io/port = <port>" 声明做一个拼接,然后赋值给__address__,这样prometheus就能获取自定义应用的端口,然后通过这个端口再结合__metrics_path__来获取指标,如果__metrics_path__值不是默认的/metrics那么就要使用上面的标签替换来获取真正暴露的具体路径。
scrape_configs:
#scrape_configs:配置数据源,称为target,每个target用job_name命名。又分为静态配置和服务发现- job_name: 'kubernetes-node'kubernetes_sd_configs:
#使用的是k8s的服务发现- role: node
# 使用node角色,它使用默认的kubelet提供的http端口来发现集群中每个node节点。relabel_configs:
#重新标记- source_labels: [__address__] #配置的原始标签,匹配地址regex: '(.*):10250' #匹配带有10250端口的url
replacement: '${1}:9100' #把匹配到的ip:10250的ip保留target_label: __address__ #新生成的url是${1}获取到的ip:9100action: replace- action: labelmap
#匹配到下面正则表达式的标签会被保留,如果不做regex正则的话,默认只是会显示instance标签regex: __meta_kubernetes_node_label_(.+)
通过deployment部署prometheus
镜像prometheus-2-2-1.tar.gz上传到k8s的工作节点k8snode1上,手动解压
链接:https://pan.baidu.com/s/1arlhVb0q-9tWe9KHZG1Htg?pwd=j6m1
提取码:j6m1
ctr -n=k8s.io images import prometheus-2-2-1.tar.gz
#1.24前用 docker load -i prometheus-2-2-1.tar.gz
prometheus-deploy.yaml 上传至k8smaster1
链接:https://pan.baidu.com/s/11QOcz5udgbMpxGoYD6pP9w?pwd=rkp6
提取码:rkp6
kubectl apply -f prometheus-deploy.yaml
cat prometheus-deploy.yaml- --storage.tsdb.path=/prometheus #旧数据存储目录- --storage.tsdb.retention=720h #何时删除旧数据,默认为15天。- --web.enable-lifecycle #开启热加载
注意:在上面的prometheus-deploy.yaml文件有个nodeName字段,这个就是用来指定创建的这个prometheus的pod调度到哪个节点上,我们这里让nodeName=k8snode1,也即是让pod调度到k8snode1节点上,因为k8snode1节点我们创建了数据目录/data,所以大家记住:你在k8s集群的哪个节点创建/data,就让pod调度到哪个节点,nodeName根据你们自己环境主机去修改即可。
查看prometheus是否部署成功
kubectl get pods -n monitor-sa
给prometheus pod创建一个service
prometheus-svc.yaml文件上传到k8s的控制节点k8smaster1上:
链接:https://pan.baidu.com/s/1j9Nz7trUT6rgZ9kS-ANb7Q?pwd=hgql
提取码:hgql
kubectl apply -f prometheus-svc.yaml
查看service在物理机映射的端口
kubectl get svc -n monitor-sa
通过上面可以看到service在宿主机上映射的端口是31090,这样我们访问k8s集群的master1节点的ip:31090,就可以访问到prometheus的web ui界面了
#访问prometheus web ui界面
火狐浏览器输入如下地址:
http://192.168.40.110:31090/graph
可看到如下页面:
点击页面的Status->Targets,可看到如下,说明我们配置的服务发现可以正常采集数据
Prometheus热加载
为了每次修改配置文件可以热加载prometheus,也就是不停止prometheus,就可以使配置生效,想要使配置生效可用如下热加载命令:
kubectl get pods -n monitor-sa -o wide -l app=prometheus
10.244.249.2是prometheus的pod的ip地址,如何查看prometheus的pod ip
想要使配置生效可用如下命令热加载:
curl -X POST http://10.244.249.2:9090/-/reload
- 热加载速度比较慢,可以暴力重启prometheus,如修改上面的prometheus-cfg.yaml文件之后,可执行如下强制删除:
kubectl delete -f prometheus-cfg.yaml
kubectl delete -f prometheus-deploy.yaml
- 然后再通过apply更新:
kubectl apply -f prometheus-cfg.yaml
kubectl apply -f prometheus-deploy.yaml
注意:线上最好热加载,暴力删除可能造成监控数据的丢失
可视化UI界面Grafana的安装和配置
安装Grafana
镜像heapster-grafana-amd64_v5_0_4.tar.gz上传到k8s的工作节点k8snode1上,手动解压:
链接:https://pan.baidu.com/s/1CMP6Ju-Zi-4dmJy2eSVtew?pwd=fkls
提取码:fkls
ctr -n=k8s.io images import heapster-grafana-amd64_v5_0_4.tar.gz
grafana.yaml文件上传到k8s的控制节点:
kubectl apply -f grafana.yaml
查看grafana是否创建成功:
kubectl get pods -n kube-system -l task=monitoring
Grafana界面接入Prometheus数据源
查看grafana前端的service
kubectl get svc -n kube-system | grep grafana
登陆grafana,在浏览器访问
192.168.40.110:30551
配置grafana界面:
选择Create your first data source
Name: Prometheus
Type: Prometheus
HTTP 处的URL写 如下:
http://prometheus.monitor-sa.svc:9090
配置好的整体页面如下:
点击左下角Save & Test,出现如下Data source is working,说明prometheus数据源成功的被grafana接入了
导入的监控模板,可在如下链接搜索
https://grafana.com/dashboards?dataSource=prometheus&search=kubernetes
上面Save & Test测试没问题之后,就可以返回Grafana主页面
点击左侧+号下面的Import,出现如下界面
可直接导入node_exporter.json监控模板,这个可以把node节点指标显示出来
node_exporter.json
链接:https://pan.baidu.com/s/1lK43XIWKuMYiQoWBAtJJ-Q?pwd=j01k
提取码:j01k
docker_rev1.json,显示容器资源指标的
链接:https://pan.baidu.com/s/1F_9ApBvKCV3lkHvxPLP-OQ?pwd=wkph
提取码:wkph
导入docker_rev1.json监控模板,步骤和上面导入node_exporter.json步骤一样,导入之后显示如下:
如果Grafana导入Prometheusz之后,发现仪表盘没有数据,如何排查?
打开grafana界面,找到仪表盘对应无数据的图标
Edit之后出现如下:
node_cpu_seconds_total 就是grafana上采集的cpu的时间,需要到prometheus ui界面看看采集的指标是否是node_cpu_seconds_total
如果在prometheus ui界面输入node_cpu_seconds_total没有数据,那就看看是不是prometheus采集的数据是node_cpu_seconds_totals,怎么看呢?
安装kube-state-metrics组件
kube-state-metrics是什么?
- kube-state-metrics通过监听API Server生成有关资源对象的状态指标,比如Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,
- 比如Pod副本状态等;调度了多少个replicas?现在可用的有几个?多少个Pod是running/stopped/terminated状态?Pod重启了多少次?我有多少job在运行中。
安装kube-state-metrics组件
创建sa,并对sa授权
kube-state-metrics-rbac.yaml文件上传到k8s的控制节点:
链接:https://pan.baidu.com/s/1fNAovsSfabcQMTpX4AknnQ?pwd=m6r0
提取码:m6r0
kubectl apply -f kube-state-metrics-rbac.yaml
安装kube-state-metrics组件
kube-state-metrics_1_9_0.tar.gz组件上传到k8s各个工作节点,手动解压:
链接:https://pan.baidu.com/s/1UufIAWnnQgP1vYSTvushSw?pwd=uunh
提取码:uunh
ctr -n=k8s.io images import kube-state-metrics_1_9_0.tar.gz
kube-state-metrics-deploy.yaml上传到k8smaster1节点
链接:https://pan.baidu.com/s/1GnMeja2VQUwHXj9MPsCHqQ?pwd=n0o9
提取码:n0o9
kubectl apply -f kube-state-metrics-deploy.yaml
查看kube-state-metrics是否部署成功
kubectl get pods -n kube-system -l app=kube-state-metrics
创建service
kube-state-metrics-svc.yaml文件上传到k8s的k8smaster1节点:
链接:https://pan.baidu.com/s/1DjZuLFDcH9mjRXY6CHJNfw?pwd=uo52
提取码:uo52
kubectl apply -f kube-state-metrics-svc.yaml
查看service是否创建成功
kubectl get svc -n kube-system | grep kube-state-metrics
在grafana web界面导入Kubernetes Cluster (Prometheus)-1577674936972.json和Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json
导入Kubernetes Cluster (Prometheus)-1577674936972.json文件
链接:https://pan.baidu.com/s/1SpGM2hb0uuEsyJaYnhE_Rw?pwd=u1dz
提取码:u1dz
在grafana web界面导入Kubernetes cluster monitoring (via Prometheus) (k8s 1.16)-1577691996738.json
链接:https://pan.baidu.com/s/1v-zwCmwqC3iRix1M5s_GnA?pwd=2jhl
提取码:2jhl
相关文章:
k8s集群 安装配置 Prometheus+grafana
k8s集群 安装配置 Prometheusgrafana k8s环境如下:机器规划: node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…...
【Java--数据结构】二叉树oj题(上)
前言 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 判断是否是相同的树 oj链接 要判断树是否一样,要满足3个条件 根的 结构 和 值 一样左子树的结构和值一样右子树的结构和值一样 所以就可以总结以下思路…...
微服务之间Feign调用
需使用的服务 FeignClient(name "rdss-back-service", fallback SysUserServiceFallback.class, configuration FeignConfiguration.class) public interface SysUserService {/*** 订单下单用户模糊查询*/GetMapping(value "/user/getOrderUserName")…...
【Qt】按钮的属性相关API
目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类,集成了按钮的核心属性和API 按钮说明QPushButton(普通按钮)最常见的按钮,用于触发操作或者事件。可以设…...
blender和3dmax和maya和c4d比较
Blender、3ds Max、Maya和Cinema 4D (C4D)都是强大的3D建模和动画软件,但它们各有特点和适用领域。以下是它们的比较: Blender: 开源免费全面的功能,包括建模、动画、渲染、视频编辑等学习曲线较陡峭,但社区支持强大适合独立艺术家…...
visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊
本文主要解决三个问题 visio保存一部分图 需求描述:在一个visio文件中画了很多个图,但我只想把其中一部分保存成某种图片格式,比如jpg emf png之类的,以便做后续的处理。 方法:超级容易。 选中希望保存的这部分图&…...
沙尘传输模拟教程(基于wrf-chem)
沙尘传输模拟教程(基于wrf-chem) 文章目录 沙尘传输模拟教程(基于wrf-chem)简介实验目的wrf-chem简介 软件准备wps、wrf-chem安装conda安装ncl安装ncap安装 数据准备气象数据准备下垫面数据准备 WPS数据预处理namelist.wps的设置geogrid.exe下垫面处理ungrib.exe气象数据预处理…...
使用 Python 进行测试(8)纯净测试
原文:Testing with Python (part 8): purity test 总结 如果你要使用综合测试(integrated tests): def test_add_new_item_to_cart(product, cart):new_product Product.objects.create(nameNew Product, price15.00)new_cart…...
python的tkinter、socket库开发tcp的客户端和服务端
一、tcp通讯流程和开发步骤 1、tcp客户端和服务端通讯流程图 套接字是通讯的利器,连接时要经过三次握手建立连接,断开连接要经过四次挥手断开连接。 2、客户端开发流程 1)创建客户端套接字 2)和服务端器端套接字建立连接 3&#x…...
Python面试题:Python中的异步编程:详细讲解asyncio库的使用
Python 的异步编程是实现高效并发处理的一种方法,它使得程序能够在等待 I/O 操作时继续执行其他任务。在 Python 中,asyncio 库是实现异步编程的主要工具。asyncio 提供了一种机制来编写可以在单线程内并发执行的代码,适用于 I/O 密集型任务。…...
【信号频率估计】MVDR算法及MATLAB仿真
目录 一、MVDR算法1.1 简介1.2 原理1.3 特点1.3.1 优点1.3.2 缺点 二、算法应用实例2.1 信号的频率估计2.2 MATLAB仿真代码 三、参考文献 一、MVDR算法 1.1 简介 最小方差无失真响应(Mininum Variance Distortionless Response,MVDR)算法最…...
HarmonyOS NEXT零基础入门到实战-第二部分
HarmonyOS NEXT零基础入门到实战-第二部分 Swiper 轮播组件 Swiper是一个 容器 组件,当设置了多个子组件后,可以对这些 子组件 进行轮播显示。(文字、图片...) 1、Swiper基本语法 2、Swiper常见属性 3、Swiper样式自定义 4、案例&…...
《小程序02:云开发之增删改查》
一、前置操作 // 一定要用这个符号包含里面的${}才会生效 wx.showToast({title: 获取数据成功:${colorLista}, })1.1:初始化介绍 **1、获取数据库引用:**在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用 cons…...
SQL执行流程、SQL执行计划、SQL优化
select查询语句 select查询语句中join连接是如何工作的? 1、INNER JOIN 返回两个表中的匹配行。 2、LEFT JOIN 返回左表中的所有记录以及右表中的匹配记录。 3、RIGHT JOIN 返回右表中的所有记录以及左表中的匹配记录。 4、FULL OUTER JOIN 返回左侧或右侧表中有匹…...
【前端】JavaScript入门及实战41-45
文章目录 41 嵌套的for循环42 for循环嵌套练习(1)43 for循环嵌套练习(2)44 break和continue45 质数练习补充 41 嵌套的for循环 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"…...
更加深入Mysql-04-MySQL 多表查询与事务的操作
文章目录 多表查询内连接隐式内连接显示内连接 外连接左外连接右外连接 子查询 事务事务隔离级别 多表查询 有时我们不仅需要一个表的数据,数据可能关联到俩个表或者三个表,这时我们就要进行夺标查询了。 数据准备: 创建一个部门表并且插入…...
基于最新版的flutter pointycastle: ^3.9.1的AES加密
基于最新版的flutter pointycastle: ^3.9.1的AES加密 自己添加pointycastle: ^3.9.1库config.dartaes_encrypt.dart 自己添加pointycastle: ^3.9.1库 config.dart import dart:convert; import dart:typed_data;class Config {static String password 成都推理计算科技; // …...
K8S内存资源配置
在 Kubernetes (k8s) 中,资源请求和限制用于管理容器的 CPU 和内存资源。配置 CPU 和内存资源时,使用特定的单位来表示资源的数量。 CPU 资源配置 CPU 单位:Kubernetes 中的 CPU 资源以 “核” (cores) 为单位。1 CPU 核心等于 1 vCPU/Core…...
【多任务YOLO】 A-YOLOM: You Only Look at Once for Real-Time and Generic Multi-Task
You Only Look at Once for Real-Time and Generic Multi-Task 论文链接:http://arxiv.org/abs/2310.01641 代码链接:https://github.com/JiayuanWang-JW/YOLOv8-multi-task 一、摘要 高精度、轻量级和实时响应性是实现自动驾驶的三个基本要求。本研究…...
数学建模--灰色关联分析法
目录 简介 基本原理 应用场景 优缺点 优点: 缺点: 延伸 灰色关联分析法在水质评价中的具体应用案例是什么? 如何克服灰色关联分析法在主观性强时的数据处理和改进方法? 灰色关联分析法与其他系统分析方法(如A…...
NetSuite Saved Search迁移工具
我们需要在系统间迁移Saved Search,但是采用Copy To Account或者Bundle时,会有一些Translation不能迁移,或者很多莫名其妙的Dependency,导致迁移失败。因此,我们想另辟蹊径,借助代码完成Saved Search的迁移…...
Java IO模型深入解析:BIO、NIO与AIO
Java IO模型深入解析:BIO、NIO与AIO 一. 前言 在Java编程中,IO(Input/Output)操作是不可或缺的一部分,它涉及到文件读写、网络通信等方面。Java提供了多种类和API来支持这些操作。本文将从IO的基础知识讲起ÿ…...
《从C/C++到Java入门指南》- 9.字符和字符串
字符和字符串 字符类型 Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。 // 计算1 .. 100 public class Hello {public static void main(String[] args) {char a A;char b 中;System.out.println(a);System.out.println(b)…...
Adobe国际认证详解-视频剪辑
在数字化时代,视频剪辑已成为创意表达和视觉传播的重要手段。随着技术的不断进步,熟练掌握视频剪辑技能的专业人才需求日益增长。在这个背景下,Adobe国际认证应运而生,成为全球创意设计领域的重要标杆。 Adobe国际认证是由Adobe公…...
昇思25天学习打卡营第19天|MindNLP ChatGLM-6B StreamChat
文章目录 昇思MindSpore应用实践ChatGML-6B简介基于MindNLP的ChatGLM-6B StreamChat Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 ChatGML-6B简介 ChatGLM-6B 是由清华大学和智谱AI联合研发的产品,是一个开源的、支持…...
.NET在游戏开发中有哪些成功的案例?
简述 在游戏开发的多彩世界中,技术的选择往往决定了作品的成败。.NET技术,以其跨平台的性能和强大的开发生态,逐渐成为游戏开发者的新宠。本文将带您探索那些利用.NET技术打造出的著名游戏案例,领略.NET在游戏开发中的卓越表现。 …...
搜维尔科技:我们用xsens完成了一系列高难度的运动项目并且捕获动作
我们用xsens完成了一系列高难度的运动项目并且捕获动作 搜维尔科技:我们用xsens完成了一系列高难度的运动项目并且捕获动作...
深入探讨:Node.js、Vue、SSH服务与SSH免密登录
在这篇博客中,我们将深入探讨如何在项目中使用Node.js和Vue,并配置SSH服务以及实现SSH免密登录。我们会一步步地进行讲解,并提供代码示例,确保你能轻松上手。 一、Node.js 与 Vue 的结合 1.1 Node.js 简介 Node.js 是一个基于 …...
Unity UGUI 之 Toggle
本文仅作学习笔记与交流,不作任何商业用途本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.什么是Toggle? Unity - Manual: Toggle 带复选框的开关,可…...
Git报错:error: fsmonitor--daemon failed to start处理方法
问题描述 git用了很久了,但是后面突然发现执行命令时,后面都会出现这个报错,虽然该报错好像不会影响正常的命令逻辑,但是还是感觉有天烦人,就去找了找资料。 $ git status error: fsmonitor--daemon failed to start…...
沧州市做网站价格/2023年的新闻十条
声明:本文引用吴恩达教授的DeepLearning课程内容。 滑动窗口法的卷积实现虽然效率更高,但仍然存在问题,不能输出最精准的边界框。因为滑动窗口法中,取这些离散的位置集合并不能完全匹配目标大小、位置。 其中一个能得到更精准边界…...
星裕建设网站/seo岗位有哪些
突然想写写自己的伞。 研究生三年使用的伞。 第一把伞,是大学时候就有的伞。时至今日,我还清晰的记得它的来路,那正是我暑假回学校下火车的那天,西安下着大雨,而我,忘了带伞,从出站口大妈手里&a…...
织梦制作手机网站/seo关键词软件
调试时总是会遇到各种各样的接口,各种各样的转换板,似懂非懂的感觉很不爽!首先,串口、UART口、COM口、USB口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。串口:串口是一个泛称,UART&#…...
阿里云虚拟主机怎么建立网站/免费个人网站模板
知己知彼才能百战不殆。要想回答好问题就要先思考面试官的提问的动机。 首先我们分析一下面试官为什么要问这个问题,通过这个问题的答案他希望能获取到什么信息,然后我们把他希望获取到信息表达出来就可以了。面试官通过这个问题主要想了解三个方面&…...
wordpress 插件主题冲突/湖南专业seo公司
2. RBAC实践 创建一个名为deployment-clusterrole的clusterrole a) 该clusterrole只允许创建Deployment、Daemonset、Statefulset的create操作 在名字为app-team1的namespace下创建一个名为cicd-token的serviceAccount,并且将上一步创建clusterrole的权限绑定到该serviceAcc…...
网站备案需要些什么/百度点击排名收费软件
From:http://www.2cto.com/kf/201111/112631.html 今天就讲下UIScrollView的一些事情,这个可以拖动的组件无论在应用还是游戏开发都会经常用到,所以我们就一定要更加熟悉它了。下面我们开始下手咯。 (1)初始化 一般的组件初始化…...