36.3 grafana-dashboard看图分析
kube-prometheus中的grafana总结
- db使用 sqlit,volume类型为emptydir 无法持久化,pod扩缩就重新创建
- 通过configMap设置的prometheus DataSource
- 通过 prometheus-k8s svc对应的 域名访问
- 下面对应两个prometheus容器,有HA
- 各个dashboard通过 configMap挂载,grafana动态加载,不能修改
- 内置了22张大盘图,包含预聚合指标,很全面
grafana deployment部署分析
sqlit db文件
- manifests\grafana-deployment.yaml
volumeMounts:- mountPath: /var/lib/grafananame: grafana-storagereadOnly: false
- 对应的grafana-storage为 emptyDir类型,属于pod临时的目录
volumes:- emptyDir: {}name: grafana-storage
通过配置的方式进行datasource设置
- 对应的volume配置
volumeMounts:- mountPath: /etc/grafana/provisioning/datasourcesname: grafana-datasourcesreadOnly: false- name: grafana-datasourcesvolumes:secret:secretName: grafana-datasources
grafana provisioning
- 是grafana 5.0后引入的功能,用以支持通过配置的方式进行datasource和dashboard的配置。
- 首先要在grafana的配置中增加provisioning的选项
[paths]
# folder that contains provisioning config files that grafana will apply on startup and while running.
;provisioning = /etc/grafana/provisioning
- 而后在/etc/grafana/provisioning中增加dashboards和datasources文件夹
[root@local provisioning]# ll
total 0
drwxr-xr-x 2 root grafana 25 Nov 28 03:09 dashboards
drwxr-xr-x 2 root grafana 25 Nov 28 03:09 datasources
- datasource只支持静态配置,即,在datasources中配置好后,grafana启动时候将会进行加载。在grafana启动后在加入该文件夹,需要重启才能生效。
- datasoures文件夹下需要放置对应的datasource的yaml文件,进到grafana容器内部查看内容
/etc/grafana/provisioning $ cat /etc/grafana/provisioning/datasources/datasources.yaml
{"apiVersion": 1,"datasources": [{"access": "proxy","editable": false,"name": "prometheus","orgId": 1,"type": "prometheus","url": "http://prometheus-k8s.monitoring.svc:9090","version": 1}]
}
对应的secret内容
- 将manifests\grafana-dashboardDatasources.yaml 中的data做base64解码可以得到 datasources.yaml 的内容
apiVersion: v1
data:datasources.yaml: ewogICAgImFwaVZlcnNpb24iOiAxLAogICAgImRhdGFzb3VyY2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgImFjY2VzcyI6ICJwcm94eSIsCiAgICAgICAgICAgICJlZGl0YWJsZSI6IGZhbHNlLAogICAgICAgICAgICAibmFtZSI6ICJwcm9tZXRoZXVzIiwKICAgICAgICAgICAgIm9yZ0lkIjogMSwKICAgICAgICAgICAgInR5cGUiOiAicHJvbWV0aGV1cyIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Byb21ldGhldXMtazhzLm1vbml0b3Jpbmcuc3ZjOjkwOTAiLAogICAgICAgICAgICAidmVyc2lvbiI6IDEKICAgICAgICB9CiAgICBdCn0=
kind: Secret
metadata:labels:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 7.5.4name: grafana-datasourcesnamespace: monitoring
type: Opaque
- base64解码结果
[root@k8s-master01 kube-prometheus]# echo "ewogICAgImFwaVZlcnNpb24iOiAxLAogICAgImRhdGFzb3VyY2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgImFjY2VzcyI6ICJwcm94eSIsCiAgICAgICAgICAgICJlZGl0YWJsZSI6IGZhbHNlLAogICAgICAgICAgICAibmFtZSI6ICJwcm9tZXRoZXVzIiwKICAgICAgICAgICAgIm9yZ0lkIjogMSwKICAgICAgICAgICAgInR5cGUiOiAicHJvbWV0aGV1cyIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Byb21ldGhldXMtazhzLm1vbml0b3Jpbmcuc3ZjOjkwOTAiLAogICAgICAgICAgICAidmVyc2lvbiI6IDEKICAgICAgICB9CiAgICBdCn0" |base64 --decode
{"apiVersion": 1,"datasources": [{"access": "proxy","editable": false,"name": "prometheus","orgId": 1,"type": "prometheus","url": "http://prometheus-k8s.monitoring.svc:9090","version": 1}]
}
动态加载dashboards
- 不同于datasource,dashboards是支持动态加载的
- 在grafana容器内部看到的dashboards
cat /etc/grafana/provisioning/dashboards/dashboards.yaml
{"apiVersion": 1,"providers": [{"folder": "Default","name": "0","options": {"path": "/grafana-dashboard-definitions/0"},"orgId": 1,"type": "file"}]
}
- path /grafana-dashboard-definitions/0 代表加载这个目录下的json文件
- folder Default代表加载后的dashboard放在 Default folder下
- 查看dashboards加载目录
/grafana-dashboard-definitions/0 $ ls -lrt /grafana-dashboard-definitions/0
total 0
drwxrwsrwx 3 root nobody 81 Sep 6 04:36 scheduler
drwxrwsrwx 3 root nobody 93 Sep 6 04:36 node-cluster-rsrc-use
drwxrwsrwx 3 root nobody 93 Sep 6 04:36 namespace-by-workload
drwxrwsrwx 3 root nobody 94 Sep 6 04:36 k8s-resources-workload
drwxrwsrwx 3 root nobody 90 Sep 6 04:36 k8s-resources-node
drwxrwsrwx 3 root nobody 85 Sep 6 04:36 cluster-total
drwxrwsrwx 3 root nobody 81 Sep 6 04:36 apiserver
drwxrwsrwx 3 root nobody 95 Sep 6 04:36 prometheus-remote-write
drwxrwsrwx 3 root nobody 82 Sep 6 04:36 prometheus
drwxrwsrwx 3 root nobody 85 Sep 6 04:36 node-rsrc-use
drwxrwsrwx 3 root nobody 105 Sep 6 04:36 k8s-resources-workloads-namespace
drwxrwsrwx 3 root nobody 90 Sep 6 04:36 controller-manager
drwxrwsrwx 3 root nobody 77 Sep 6 04:36 proxy
drwxrwsrwx 3 root nobody 88 Sep 6 04:36 namespace-by-pod
drwxrwsrwx 3 root nobody 95 Sep 6 04:36 k8s-resources-namespace
drwxrwsrwx 3 root nobody 86 Sep 6 04:36 workload-total
drwxrwsrwx 3 root nobody 94 Sep 6 04:36 persistentvolumesusage
drwxrwsrwx 3 root nobody 77 Sep 6 04:36 nodes
drwxrwsrwx 3 root nobody 79 Sep 6 04:36 kubelet
drwxrwsrwx 3 root nobody 89 Sep 6 04:36 k8s-resources-pod
drwxrwsrwx 3 root nobody 93 Sep 6 04:36 k8s-resources-cluster
drwxrwsrwx 3 root nobody 83 Sep 6 04:36 statefulset
drwxrwsrwx 3 root nobody 81 Sep 6 04:36 pod-total
以node-exporter大盘为例
- 目录 定义
- mountPath: /grafana-dashboard-definitions/0/nodesname: grafana-dashboard-nodes- configMap:name: grafana-dashboard-nodesname: grafana-dashboard-nodes
- 对应的configmap grafana-dashboard-nodes,位置 manifests\grafana-dashboardDefinitions.yaml
kind: ConfigMapmetadata:labels:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 7.5.4name: grafana-dashboard-nodesnamespace: monitoring
dashboard是不能修改的
- Cannot save provisioned dashboard
数据源地址dns解析
- 地址 http://prometheus-k8s.monitoring.svc:9090
grafana 容器内部访问prometheus
[root@k8s-master01 kube-prometheus]# kubectl get pod -n monitoring -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
alertmanager-main-0 2/2 Running 0 6h32m 10.100.85.235 k8s-node01 <none> <none>
alertmanager-main-1 2/2 Running 0 6h32m 10.100.85.233 k8s-node01 <none> <none>
alertmanager-main-2 2/2 Running 0 6h32m 10.100.85.234 k8s-node01 <none> <none>
blackbox-exporter-55c457d5fb-rzn7l 3/3 Running 0 6h32m 10.100.85.236 k8s-node01 <none> <none>
grafana-9df57cdc4-tf6qj 1/1 Running 0 6h32m 10.100.85.237 k8s-node01 <none> <none>
kube-state-metrics-76f6cb7996-27dc2 3/3 Running 0 6h32m 10.100.85.238 k8s-node01 <none> <none>
node-exporter-7rqfg 2/2 Running 0 6h32m 172.20.70.215 k8s-node01 <none> <none>
node-exporter-b5pnx 2/2 Running 0 6h32m 172.20.70.205 k8s-master01 <none> <none>
prometheus-adapter-59df95d9f5-28n4c 1/1 Running 0 6h32m 10.100.85.241 k8s-node01 <none> <none>
prometheus-adapter-59df95d9f5-glwk7 1/1 Running 0 6h32m 10.100.85.242 k8s-node01 <none> <none>
prometheus-k8s-0 2/2 Running 1 6h32m 10.100.85.240 k8s-node01 <none> <none>
prometheus-k8s-1 2/2 Running 1 6h32m 10.100.85.239 k8s-node01 <none> <none>
prometheus-operator-7775c66ccf-hkmpr 2/2 Running 0 7h16m 10.100.85.232 k8s-node01 <none> <none>
[root@k8s-master01 kube-prometheus]#
[root@k8s-master01 kube-prometheus]# kubectl -n monitoring exec grafana-9df57cdc4-tf6qj -ti -- /bin/sh
/usr/share/grafana $ cat /etc/resolv.conf
search monitoring.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.96.0.10
options ndots:5
/usr/share/grafana $ ping prometheus-k8s.monitoring.svc
PING prometheus-k8s.monitoring.svc (10.96.200.87): 56 data bytes
ping: permission denied (are you root?)
/usr/share/grafana $
k8s 会为service创建cordns解析
- 解析域名为
${service_name}.${namespace}.svc.cluster.local
- 其中 cluster.local代表集群的后缀
- 那么prometheus-k8s的域名为
prometheus-k8s.monitoring.svc.cluster.local
pod中dns的配置
- 同时pod中的dns配置为search 3个域,我们可以exec进入grafana 容器中查看,如下面的实例所示。
[root@k8s-master01 kube-prometheus]# kubectl get pod -n monitoring -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
alertmanager-main-0 2/2 Running 0 6h32m 10.100.85.235 k8s-node01 <none> <none>
alertmanager-main-1 2/2 Running 0 6h32m 10.100.85.233 k8s-node01 <none> <none>
alertmanager-main-2 2/2 Running 0 6h32m 10.100.85.234 k8s-node01 <none> <none>
blackbox-exporter-55c457d5fb-rzn7l 3/3 Running 0 6h32m 10.100.85.236 k8s-node01 <none> <none>
grafana-9df57cdc4-tf6qj 1/1 Running 0 6h32m 10.100.85.237 k8s-node01 <none> <none>
kube-state-metrics-76f6cb7996-27dc2 3/3 Running 0 6h32m 10.100.85.238 k8s-node01 <none> <none>
node-exporter-7rqfg 2/2 Running 0 6h32m 172.20.70.215 k8s-node01 <none> <none>
node-exporter-b5pnx 2/2 Running 0 6h32m 172.20.70.205 k8s-master01 <none> <none>
prometheus-adapter-59df95d9f5-28n4c 1/1 Running 0 6h32m 10.100.85.241 k8s-node01 <none> <none>
prometheus-adapter-59df95d9f5-glwk7 1/1 Running 0 6h32m 10.100.85.242 k8s-node01 <none> <none>
prometheus-k8s-0 2/2 Running 1 6h32m 10.100.85.240 k8s-node01 <none> <none>
prometheus-k8s-1 2/2 Running 1 6h32m 10.100.85.239 k8s-node01 <none> <none>
prometheus-operator-7775c66ccf-hkmpr 2/2 Running 0 7h16m 10.100.85.232 k8s-node01 <none> <none>
[root@k8s-master01 kube-prometheus]#
[root@k8s-master01 kube-prometheus]# kubectl -n monitoring exec grafana-9df57cdc4-tf6qj -ti -- /bin/sh
/usr/share/grafana $ cat /etc/resolv.conf
search monitoring.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.96.0.10
options ndots:5
- 所以在容器中可以ping一下 kube-state-metrics,可以看到解析的ip地址
/usr/share/grafana $ ping prometheus-k8s.monitoring.svc
PING prometheus-k8s.monitoring.svc (10.96.200.87): 56 data bytes
ping: permission denied (are you root?)
/usr/share/grafana $
- 在node上用这个ip访问以下 prometheus页面
[root@k8s-master01 kube-prometheus]# curl 10.96.200.87:9090/api/v1/status/buildinfo
{"status":"success","data":{"version":"2.26.0","revision":"3cafc58827d1ebd1a67749f88be4218f0bab3d8d","branch":"HEAD","buildUser":"root@a67cafebe6d0","buildDate":"20210331-11:56:23","goVersion":"go1.16.2"}}
kube-prometheus中的grafana总结
- db使用 sqlit,volume类型为emptydir 无法持久化,pod扩缩就重新创建
- 通过configMap设置的prometheus DataSource
- 通过 prometheus-k8s svc对应的 域名访问
- 下面对应两个prometheus容器,有HA
- 各个dashboard通过 configMap挂载,grafana动态加载,不能修改
- 内置了22张大盘图,包含预聚合指标,很全面
相关文章:
36.3 grafana-dashboard看图分析
kube-prometheus中的grafana总结 db使用 sqlit,volume类型为emptydir 无法持久化,pod扩缩就重新创建通过configMap设置的prometheus DataSource 通过 prometheus-k8s svc对应的 域名访问下面对应两个prometheus容器,有HA 各个dashboard通过 …...
面试题整理5----进程、线程、协程区别及僵尸进程处理
面试题整理5----进程、线程、协程区别及僵尸进程处理 1. 进程、线程与协程的区别1.1 进程(Process)1.2 线程(Thread)1.3 协程(Coroutine)2. 总结对比 3. 僵尸进程3.1 什么是僵尸进程?3.2 僵尸进…...
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录😋 <第1关:顺序结构的应用> 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: <第2关:交换变量值> 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: <第…...
LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Dify与Qwen2.5
背景 Dify 是一款开源的大语言模型(LLM) 应用开发平台。其直观的界面结合了 AI 工作流、 RAG 管道、 Agent 、模型管理、可观测性功能等,让您可以快速从原型到生产。相比 LangChain 这类有着锤子、钉子的工具箱开发库, Dify 提供了更接近生产需要的完整…...
C语言中的转义字符
C语言中的转义字符 常见字符ASCII码表...
ilqr算法原理推导及代码实践
目录 一. ilqr原理推导1.1 ilqr问题描述1.2 ilqr算法原理1.3 ilqr算法迭代过程 二. ilqr实践代码 一. ilqr原理推导 1.1 ilqr问题描述 本文参考知乎博主: LQR与iLQR:从理论到实践【详细】 基础LQR只能处理线性系统 (指可以使用 x ( k 1 ) A x ( k ) B u ( k )…...
系列1:基于Centos-8.6部署Kubernetes (1.24-1.30)
每日禅语 “木末芙蓉花,山中发红萼,涧户寂无人,纷纷开自落。”这是王维的一首诗,名叫《辛夷坞》。这首诗写的是在辛夷坞这个幽深的山谷里,辛夷花自开自落,平淡得很,既没有生的喜悦ÿ…...
finereport新的数据工厂插件使用场景一 通过accessToken获取数据
1 有两个接口,一个接口获取一个accessToken,一个接口根据accessToken来获取数据。代码示例为: @RequestMapping(value = {"df_test/getAccessToken"},method = {RequestMethod.GET})@ResponseBodypublic String getAccessToken(HttpServletRequest req, HttpServ…...
matlab绘图时设置左、右坐标轴为不同颜色
目录 一、需求描述 二、实现方法 一、需求描述 当图中存在两条曲线,需要对两条曲线进行分别描述时,应设置左、右坐标轴为不同颜色,并设置刻度线,且坐标轴颜色需要和曲线颜色相同。 二、实现方法 1.1、可以实现: 1…...
魏裕雄的JAVA学习总结
JAVA学习总结 Java面向对象程序设计知识总结第1章 初识Java与面向对象程序设计JAVA概述面向对象程序设计思想JAVA开发环境搭建第一个JAVA程序JAVA常用开发工具 第2章 Java编程基础变量与常量运算符与表达式选择结构循环结构方法数组JVM中的堆内存与栈内存 第3章 面向对象程序设…...
深度学习从入门到精通——图像分割实战DeeplabV3
DeeplabV3算法 参数配置关于数据集的配置训练集参数 数据预处理模块DataSet构建模块测试一下数据集去正则化模型加载模块DeepLABV3 参数配置 关于数据集的配置 parser argparse.ArgumentParser()# Datset Optionsparser.add_argument("--data_root", typestr, defa…...
SAP抓取外部https报错SSL handshake处理方法
一、问题描述 SAP执行报表抓取https第三方数据,数据获取失败。 报错消息: SSL handshake with XXX.COM:449 failed: SSSLERR_SSL_READ (-58)#SAPCRYPTO:SSL_read() failed##SapSSLSessionStartNB()==SSSLERR_SSL_READ# SSL:SSL_read() failed (536875120/0x20001070)# …...
Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总
背景 在实际开发中,我发现团队对于这几个路径的设置上是纯靠猜的,通过一点点地尝试来找到可行的路径,这是不应该的,我们应该很清晰地了解这几个概念,以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…...
穷举vs暴搜vs深搜vs回溯vs剪枝专题一>全排列II
题目: 解析: 这题设计递归函数,主要把看如何剪枝 代码: class Solution {private List<List<Integer>> ret;private List<Integer> path;private boolean[] check;public List<List<Integer>> p…...
Nginx中Server块配置的详细解析
Nginx中Server块配置的详细解析 一、Server块简介 在Nginx配置文件中,server块是非常关键的部分。它用于定义虚拟主机,一个server块就代表一个虚拟主机。这使得我们可以在一台Nginx服务器上通过不同的配置来处理多个域名或者基于不同端口的服务请求。 …...
【后端面试总结】Redis的三种模式原理介绍及优缺点
Redis作为一款高性能的键值对数据库,提供了多种模式以满足不同场景下的需求。本文将详细介绍Redis的三种主要模式:主从复制模式、哨兵模式(Sentinel)和集群模式(Cluster),包括它们的原理、配置、…...
TCP协议详解
目录 一. TCP协议概述 1. 概念 2. 特点 (1) 面向连接 (2) 可靠传输 (3) 面向字节流 (4) 全双工通信 (5) 流量控制和拥塞控制 二. TCP协议报文格式 1. 源端口号 和 目的端口号 (16位) 2. 序号 和 确认序号 (32位) 3. 首部长度 (4位) 4. 保留位 (6位) 7. 控制位 8.…...
Webpack学习笔记(2)
1.什么是loader? 上图是Webpack打包简易流程,webpack本身只能理解js和json这样的文件,loader可以让webpack解析其他类型文件,并且将文件转换成模块供我们使用。 test识别出那些文件被转换,use定义转换时使用哪个loader转换 上图…...
【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)
🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:Grafana 安全漏洞 (CVE-2024-9264)漏洞编号:CVE-2024-9264 | CNNVD-202410-1891漏洞类型:命令注入、本地文件包含漏洞威胁等级:…...
C++实现最大字段和
又是一道非常基础且经典的动态规划题目:假设有一个整数序列,我们将连续的几个元素组成的序列称为子段,要求我们得出所有子段和中最大的一个~ 例如:{-2,11,-4,13,-5,-2},这一序列中&a…...
当我用影刀AI Power做了一个旅游攻略小助手
在线体验地址:旅游攻略小助手https://power.yingdao.com/assistant/ca1dfe1c-9451-450e-a5f1-d270e938a3ad/share 运行效果图展示: 话不多说一起看下效果图: 智能体的截图: 工作流截图: 搭建逻辑: 其实这…...
K8s HPA的常用功能介绍
Kubernetes 的 Horizontal Pod Autoscaler (HPA) 是一种自动扩展功能,用于根据资源使用情况(如 CPU、内存等)或自定义指标,动态调整 Pod 的副本数量,从而保证应用的性能和资源利用率。 以下是 HPA 的常用功能介绍&…...
web3跨链预言机协议-BandProtocol
项目简介 Band Protocol 项目最初于 2017年成立并建立在 ETH 之上。后于2020年转移到了 Cosmos 网络上,基于 Cosmos SDK 搭建了一条 Band Chain 。这是一条 oracle-specific chain,主要功能是提供跨链预言机服务。Cosmos生态上第一个,也是目…...
Python如何正确解决reCaptcha验证码(9)
前言 本文是该专栏的第73篇,后面会持续分享python爬虫干货知识,记得关注。 我们在处理某些国内外平台项目的时候,相信很多同学或多或少都见过,如下图所示的reCaptcha验证码。 而本文,笔者将重点来介绍在实战项目中,遇到上述中的“reCaptcha验证码”,如何正确去处理并解…...
电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据
电商数据采集可以通过多种方式完成,其中包括人工采集、使用电商平台提供的API接口、以及利用爬虫技术等自动化工具。以下是一些常用的电商数据采集方法: 人工采集:人工采集主要是通过基本的“复制粘贴”的方式在电商平台上进行数据的收集&am…...
【java】Executor框架的组成部分
目录 1. 任务(Task)2. 执行器(Executor)3. 任务结果(Future)4. 线程池(ThreadPool)5. 任务队列(Work Queue)6. 线程工厂(Thread Factoryÿ…...
KMP算法基础
文章一览 前言一、核心思想二、实现步骤三、图解实现四、next数组的实现总结 前言 本栏目将讲解在学习过程中遇到的各种常用算法,深入浅出的讲解算法的用法与使用场景。 那么话不多说,让我们进入第一个算法KMP算法吧! 一、核心思想 KMP&am…...
C语言——实现百分制换算为等级分
问题描述:百分制换算为等级分 //百分制换算为等级分#include<stdio.h>void my_function(int x) {if(x>95 && x<100){printf("A");}else if(x>81 && x<94){printf("B");}else if(x>70 && x<8…...
@pytest.fixture() 跟 @pytest.fixture有区别吗?
在iOS UI 自动化工程里面最早我用的是pytest.fixture(),因为在pycharm中联想出来的fixture是带()的,后来偶然一次我没有带()发现也没有问题,于是详细查了一下pytest.fixture() 和 pytest.fixtur…...
docker run命令大全
docker run命令大全 基本语法常用选项基础选项资源限制网络配置存储卷和挂载环境变量重启策略其他高级选项示例总结docker run 命令是 Docker 中最常用和强大的命令之一,用于创建并启动一个新的容器。该命令支持多种选项和参数,可以满足各种使用场景的需求。以下是 docker ru…...
BootAnimation源码流程分析
BootAnimation流程 bootanimation源码位于frameworks/base/cmds/bootanimation,正如其名,主要功能是加载播放开机动画,是一个C程序,编译生成的可执行文件位于/system/bin 主要逻辑:解析系统路径下的bootanimation.zi…...
Vue前端开发-数据缓存
完成全局性的axios实例对象配置后,则可以在任意一个组件中直接调用这个对象,发送异步请求,获取服务端返回的数据,同时,针对那些不经常变化的数据,可以在请求过程中,进行数据缓存,并根…...
唯品会Android面试题及参考答案
HTTP 和 HTTPS 的区别是什么?你的项目使用的是 HTTP 还是 HTTPS? HTTP 和 HTTPS 主要有以下区别。 首先是安全性。HTTP 是超文本传输协议,数据传输是明文的,这意味着在数据传输过程中,信息很容易被窃取或者篡改。比如&…...
ARM CCA机密计算安全模型之固件启动
安全之安全(security)博客目录导读 目录 1、安全启动(Verified boot) 2、镜像格式和签名方案 3、防回滚 4、离线启动(Off-line boot) 5、CCA HES固件启动流程 6、CCA系统安全域启动过程 7、应用程序PE启动过程 8、稳健性 本节定义了将CCA固件引导至可证明状态的要…...
LeetCode:3376. 破解锁的最少时间 I(DFS回溯 Java)
目录 3376. 破解锁的最少时间 I 题目描述: 实现代码与解析: DFS 原理思路: 3376. 破解锁的最少时间 I 题目描述: Bob 被困在了一个地窖里,他需要破解 n 个锁才能逃出地窖,每一个锁都需要一定的 能量 …...
利用编程获得money?
在当今数字化时代,编程技能为人们开辟了众多赚钱途径。无论你是编程新手还是经验丰富的开发者,都能在广阔的市场中找到适合自己的盈利方式。以下是一份详细的用编程赚钱指南。 一、自由职业平台 像 Upwork、Freelancer 和 Fiverr 等知名自由职业平台&am…...
51c视觉~合集36
我自己的原文哦~ https://blog.51cto.com/whaosoft/12275223 #无监督盲超分算法MLMC 即插即用的解决方案 本文介绍了一种新的无监督盲超分辨率算法MLMC,该算法结合了元学习和马尔可夫链蒙特卡罗核估计,无需监督预训练或参数先验,即可实现…...
域名系统_域名展示出售系统 PC+H5 双端自适应页面
域名系统_域名展示出售系统 PCH5 双端自适应页面 PCH5 双端自适应页面 " 是一套专门用于域名展示和出售的系统源代码 它包含 PC 端和 H5 移动端两个版本,确保在不同设备上都能提供良好的用户体验 这套系统不仅具备基本的域名展示功能,还注重设计…...
Linux C/C++编程的线程结束
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com…...
户口本识别、接口识别、python户口本文字识别集成
文字识别技术是数字化转型中一项重要的信息处理手段,正在改变政府机构、企业及个人用户之间的交互方式。通过先进的OCR(光学字符识别)技术和AI算法的支持,户口本识别不仅简化了信息采集流程,还提高了数据的准确性。 随…...
王佩丰24节Excel学习笔记——第十一讲:Vlookup函数
【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章小技巧】 掌握vlookup使用方法,选区的第一列一定是查询参数条件一。使用通配符查询。vlookup 限 255 位长度。掌握日常使用场景。使用vlookup模糊匹配查询个税 一、使用Vlookup函…...
java全栈day16--Web后端实战(数据库)
一、数据库介绍 二、Mysql安装(自行在网上找,教程简单) 安装好了进行Mysql连接 连接语法:winr输入cmd,在命令行中再输入mysql -uroot -p密码 方法二:winr输入cmd,在命令行中再输入mysql -uroo…...
Upload-labs 靶场(通关攻略)
WebShell 一句话木马: <?php eval($_POST[a])?> <?php system($_POST[a])?> 第一关(删除前端js校验) 删除return checkFile() 就能上传成功 第二关(抓包文件类型校验) BP抓包修改后缀 改为2.php后放行 第三关(上传php同种类型的不…...
【爬虫一】python爬虫基础合集一
【爬虫一】python爬虫基础合集一 1. 网络请求了解1.1. 请求的类型1.2. 网络请求协议1.3. 网络请求过程简单图解1.4. 网络请求Headers(其中的关键字释义):请求头、响应头 2. 网络爬虫的基本工作节点2.1. 了解简单网络请求获取响应数据的过程所涉及要点 1. 网络请求了…...
TRELLIS,一键生成3D模型,图像转3D,微软开源
大家好!今天给大家分享微软最近开源的一个3D模型生成项目——TRELLIS。简单来说就是输入一张图片,它就能自动帮你生成3D模型。这与之前分享的TripoSR项目类似,但是精度和贴图细节比TripoSR要高很多。 好久没关注AI生成3D模型这块,…...
【JavaEE进阶】关于Maven
目录 🌴什么是Maven 🌲为什么要学Maven 🎍创建一个Maven项目 🎄Maven核心功能 🚩项目构建 🚩依赖管理 🎋Maven Help插件 🍀Maven 仓库 🚩本地仓库 Ὢ…...
泷羽sec学习打卡-powershell的灵魂
声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于powshell的那些事儿-玩转powershell 什么是powershell?什么是cmd?powershel…...
利用Map集合设计程序,存储城市和对应等级相关信息
package testmap;import java.util.HashMap; import java.util.Scanner; import java.util.Set;public class TestHashMap6 {public static void main(String[] args) {//1.创建一个Map集合:存储键值对HashMap<String, String> map new HashMap<>();/…...
【数字图像处理】期末综合知识点总结 ver1,灰度图像,图像增强,平滑滤波,锐化滤波,图像复原,图像压缩
关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...
GIN
gin是什么 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。 特点:gin是golang的net/http库封装的web框架,api友好,注…...