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

神经网络入门实战:(六)PyTorch 中的实用工具 SummaryWriter 和 TensorBoard 的说明

(一) SummaryWriter

这里先讲解 SummaryWriter ,TensorBoard 会在第二大点进行说明。

SummaryWriter 是 PyTorch 中的一个非常实用的工具,它主要用于将深度学习模型训练过程中的各种日志和统计数据记录下来,并可以与 TensorBoard 配合使用,实现数据的可视化。以下是对 SummaryWriter 库的详细介绍:

1)概述

SummaryWriter 是 torch.utils.tensorboard 包中的一个类,它允许用户将训练过程中的关键信息(如损失值、准确率、学习率、模型权重分布、图像等)写入到指定的事件文件中。这些信息随后可以被 TensorBoard 解析和展示,从而帮助开发者更好地理解和监控模型的训练过程。

2)代码使用步骤

  1. 安装 TensorBoard:在使用 SummaryWriter 之前,需要确保已经安装了 TensorBoard 。可以使用 pip 命令进行安装:pip install tensorboard
  2. 导入 SummaryWriter:在代码中导入 SummaryWriter 类:from torch.utils.tensorboard import SummaryWriter
  3. 实例化 SummaryWriter:创建一个 SummaryWriter 对象,并指定一个日志目录(log_dir),用于保存事件文件。
    • 例如:writer = SummaryWriter('runs/my_experiment') ,或者 writer = SummaryWriter('logs')
    • 如果没有指定日志目录,那么当开始记录数据时,会自动在当前代码的目录下创建一个名为 runs 的文件夹,同时在此文件夹下创建一个以当前时间、日期和主机名命名的子目录,用于保存时间文件,类似于 ./runs/YYYYMMDD_HHMMSS_hostname/ 这样的路径。
  4. 记录数据(第三小点会详细介绍):在训练过程中,使用 SummaryWriter 对象的各种方法记录需要的数据。例如,使用 add_scalar 记录损失值,使用 add_histogram 记录权重分布等。
  5. 关闭 SummaryWriter:在训练结束后,调用 writer.close() 方法关闭 SummaryWriter 对象,确保所有数据都被正确写入事件文件。
  6. 启动 TensorBoard(见下方第二大点):在命令行中使用 tensorboard --logdir=事件文件所在的文件夹名 命令启动 TensorBoard服务。然后,在浏览器中访问 http://localhost:6006,就可以看到 TensorBoard 的可视化界面了。

3)记录不同数据的代码

  1. 记录标量信息:使用 add_scalar 方法,可以记录如 损失值、准确率 等标量信息。这些信息通常以曲线图的形式在 TensorBoard 中展示,便于观察其变化趋势。

    writer = SummaryWriter('logs')
    writer.add_scalar('曲线图标题',scalar_value,global_step)
    # scalar_value 表示曲线图纵坐标数值
    # global_step 表示曲线图横坐标数值
    
  2. 记录张量信息:通过 add_histogram 等方法,可以记录 模型权重、梯度 等张量信息。TensorBoard 会以直方图的形式展示这些张量的分布,有助于分析模型的稳定性和收敛性。

  3. 记录图像信息(注意图像格式):使用 add_image 方法记录 图像 数据。这对于处理图像任务的模型来说尤其有用,因为可以直观地看到模型对输入图像的预测结果或中间层的特征图。

    writer = SummaryWriter('logs')
    writer.add_image("图片标题",image_tensor,global_step,dataformats='HWC')
    # image_tensor 表示图片的数据格式,只能是 torch.tensor 或者 numpy.ndarray 或者 string 格式
    # global_step 表示步长,从0开始!!
    # dataformats 表示图片的具体格式是CHW(通道数,高,宽)还是HWC(高,宽,通道数)还是HW。默认是CHW
    
    • torch.tensor 格式的图片,可以由 transforms 工具转成,具体会在后续 transforms 模块中进行讲解。

      在将图片转换成 tensor 格式时,代码会自动将像素值从(0,255)放缩到(0,1)之间

    • numpy.ndarray 格式的图片,有两种生成方式:

      • 通过 opencv 库中的工具直接读取:

        # 导入cv2库 
        img_path = "dataset/train/bees/bees(3).jpg"
        img_cv = cv2.imread(img_path)
        
      • 通过 numpy 库,间接生成:

        # 导入PIL.Image库,和numpy库
        img_path = "dataset/train/bees/bees(3).jpg"
        img_PIL = Image.open(image_path)
        img_array = np.array(img_PIL)
        

      nimpy.ndarray 格式的图片,是由 RGB 三个通道的值组成的,每个元素的值,都在(0,255)之间。

  4. 记录模型结构:在训练开始前,可以使用add_graph方法记录模型的结构。这有助于开发者理解模型的复杂性,并在TensorBoard 中直观地查看模型的层次结构和参数。

4)注意事项

  1. 日志目录的选择:为了避免日志文件的混乱,建议为每个实验或模型训练任务指定一个唯一的日志目录。
  2. 数据的实时性:SummaryWriter 是异步更新文件内容的,这意味着在训练过程中记录的数据可能不会立即显示在TensorBoard 中。但是,这并不会影响数据的准确性和完整性。
  3. 资源的占用:长时间运行 TensorBoard 可能会占用较多的系统资源。因此,建议在需要时才启动 TensorBoard 服务,并在完成后及时关闭。

5)示例

代码中的 SummaryWriter 中的字母 SW 一定要大写。

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter('logs')# y=x
for i in range(100):writer.add_scalar('y=x', i, i,)writer.close()

(二) TensorBoard

要确保安装的 TensorBoard 版本与 PyTorch 兼容,一般使用指令 pip install tensorboard==2.12.0 来安装(此时的 torch 版本为 2.4.1),原先安装好了也可以通过此指令进行覆盖。

1)使用方法

查看记录好的数据日志文件,将其可视化

运行下面这两个命令时,TensorBoard 会启动一个本地服务器,并在 默认网页浏览器中 打开一个新的标签页或窗口,显示 TensorBoard 的用户界面。在这个界面中,可以看到各种图表和可视化工具,它们展示了训练过程中记录的各种指标,如损失、准确率、模型参数分布等。

  • 默认端口号:

    tensorboard --logdir=日志目录路径
    # 例如:tensorboard --logdir=logs,logs就在当前代码文件夹中,是相对路径
    

    日志目录路径:

    • 如果 日志目录路径 是一个相对路径(即不以斜杠 / 开头),那么它会被解释为相对于你当前工作目录的路径。
    • 如果 日志目录路径 是一个绝对路径(即以斜杠 / 开头,或者在 Windows 上以盘符开头后跟冒号和斜杠,如 C:/logs),那么它会被直接解释为那个位置的路径。
  • 指定端口号:

    tensorboard --logdir=日志目录路径 --port=指定端口号
    # 例如:tensorboard --logdir=logs --port=6007,logs就在当前代码文件夹中,是相对路径
    

2)问题及解决办法

  • 已经画了一个图像,第二次画图时,如果图像内容变了,但是图像标题没变的话,两个图像就会重合紊乱,

    建议换标题,或者删除所有的日志文件,重新运行

  • 其他的问题,诸如显示不全、显示不出等,都可以通过删除所有的日志文件,换个端口重新运行来解决。

3)演示(结合 SummaryWriter )

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
import cv2writer = SummaryWriter('logs')image_path = "E:\\4_Data_sets\\1\\train\\ants_image\\ants(2).jpg"
img_cv = cv2.imread(image_path)
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)print("img_cv :",type(img_cv))
print("img_PIL :",type(img_PIL))
print("img_array :",type(img_array))
print(img_array.shape)writer.add_image("test",img_array,2,dataformats='HWC')
# y=x
for i in range(100):writer.add_scalar('y=x', i, i,)writer.close()
-----------------------------------------------------------------------------------------------------------------
# 运行结果:
img_cv : <class 'numpy.ndarray'>
img_PIL : <class 'PIL.JpegImagePlugin.JpegImageFile'>
img_array : <class 'numpy.ndarray'>
(375, 500, 3)

在终端执行 tensorboard --logdir=logs --port=6007 并打开相应网址之后的运行结果:
在这里插入图片描述

上一篇下一篇
神经网络入门实战(五)神经网络入门实战(七)

相关文章:

神经网络入门实战:(六)PyTorch 中的实用工具 SummaryWriter 和 TensorBoard 的说明

(一) SummaryWriter 这里先讲解 SummaryWriter &#xff0c;TensorBoard 会在第二大点进行说明。 SummaryWriter 是 PyTorch 中的一个非常实用的工具&#xff0c;它主要用于将深度学习模型训练过程中的各种日志和统计数据记录下来&#xff0c;并可以与 TensorBoard 配合使用&am…...

SpringBoot的validation参数校验

文章目录 前言一、引入validation 依赖二、validation中的注解说明 &#xff08;1&#xff09;Validated&#xff08;2&#xff09;Valid&#xff08;3&#xff09;NotNull&#xff08;4&#xff09;NotBlank&#xff08;5&#xff09;NotEmpty&#xff08;6&#xff09;Patte…...

RPC与HTTP调用模式的架构差异

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;和 HTTP 调用是两种常见的通信模式&#xff0c;它们在架构上有以下一些主要差异&#xff1a; 协议层面 RPC&#xff1a;通常使用自定义的二进制协议&#xff0c;对数据进行高效的序列化和反序列化&am…...

R语言机器学习论文(六):总结

文章目录 介绍参考文献介绍 本文采用R语言对来自进行数据描述、数据预处理、特征筛选和模型构建。 最后我们获得了一个能有效区分乳腺组织的随机森林预测模型,它的性能非常好,这意味着它可能拥有非常好的临床价值。 在本文中,我们利用R语言对来自美国加州大学欧文分校的B…...

工业—使用Flink处理Kafka中的数据_ProduceRecord2

使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入HBase 中的 gyflinkresult:Produce5minAgg 表, rowkey“...

【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

SpringBoot整合JWT

一. JWT简介 1. 什么是JWT&#xff1f; JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 它将用户信息加密到token里&#xff0c;服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性&#xff0c;只要正确即通过验证&…...

使用docker创建cloudstack虚拟主机

文章目录 概要 环境准备&#xff1a; 1.使用rockyLinux&#xff1a;8镜像 2.配置yum源 3.添加vim cloudstack.repo为以下内容 4.前期我们已经搭好了cloudstack平台&#xff0c;这里需要映射几个目录到容器里面&#xff0c; 5.创建Dockerfile 6.构建镜像 7.使用命令创建…...

mybatis-xml映射文件及mybatis动态sql

规范 XML映射文件的名称与Mapper接口名称一致&#xff0c;并且将XML映射文件和Mapper接口放置在相同包下(同包同名&#xff09;。 XML映射文件的namespace属性为Mapper接口全限定名一致。 XML映射文件中sql语句的id与Mapper接口中的方法名一致&#xff0c;并保持返回类型一致…...

Qt | TCP服务器实现QTcpServer,使用线程管理客户端套接字

点击上方"蓝字"关注我们 01、QTcpServer >>> QTcpServer 是 Qt 网络模块中的一个类,用于实现TCP服务器。它允许创建一个服务器,可以接受来自客户端的连接。QTcpServer 是事件驱动的,这意味着它将通过信号和槽机制处理网络事件。 常用函数 构造函数: QT…...

rustdesk远程桌面使用

文章目录 简介1.客户端rustdesk使用2.基于 S6-overlay 的镜像 服务端部署3.声明 简介 为什么使用rustdesk&#xff0c;因为向日葵&#xff0c;todesk&#xff0c;免费版本的有各种各样的坑&#xff0c;比如限制你的登录&#xff0c;需要你重新登录使用&#xff0c;画面模糊&am…...

C#中图片的Base64编码与解码转换详解

在C#中&#xff0c;我们可以使用Base64编码将图片转换为字符串&#xff0c;也可以将Base64编码的字符串转换回图片。这通常用于在需要文本表示图像数据的场合&#xff08;例如在Web开发中传输图像数据&#xff09;。 将图片转换为Base64字符串 要将图片文件转换为Base64字符串…...

瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示

遇到部分串口工具不支持1500000波特率&#xff0c;这时候就需要进行修改&#xff0c;本文以触觉智能RK3562开发板修改系统波特率为115200为例&#xff0c;介绍瑞芯微方案主板Linux修改系统串口波特率教程。 温馨提示&#xff1a;瑞芯微方案主板/开发板串口波特率只支持115200或…...

阿里云整理(二)

阿里云整理 1. 访问网站2. 专业名词2.1 域名2.2 域名备案2.3 云解析DNS2.4 CDN2.5 WAF 1. 访问网站 用户使用浏览器访问网站大体分为几个过程&#xff1a; 用户在浏览器输入域名URL&#xff0c;例如www.baidu.com。 不过&#xff0c;浏览器并不知道为该域名提供服务的服务器具…...

python实现一个简单的不断发送dns查询的功能

the code below: import socket import struct import time import randomdef create_dns_query(domain"example123.com"):# DNS HeaderID random.randint(0, 65535) # 随机查询IDFLAGS 0x0100 # Standard queryQDCOUNT 1 # One questionANCOUNT 0 # …...

鲲鹏麒麟使用Docker部署Redis5

本次部署采用Docker方式进行部署&#xff0c;服务器为鲲鹏服务器&#xff0c;CPU架构为ARM64&#xff0c;操作系统版本信息为 # cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel)镜像 下载镜像鲲鹏麒麟Redis5镜像包 部署 1、上传镜像到服务器 2、…...

MySQL悲观锁和乐观锁

MySQL悲观锁和乐观锁 在数据库中&#xff0c;锁是用来管理并发控制的一种机制&#xff0c;确保数据的一致性和完整性。MySQL中的悲观锁和乐观锁是两种不同的并发控制策略&#xff0c;它们在处理并发事务时采用不同的方法。 悲观锁&#xff08;Pessimistic Locking&#xff09…...

【AI模型对比】Kimi与ChatGPT的差距:真实对比它们在六大题型中的全面表现!

文章目录 Moss前沿AI语义理解文学知识数学计算天文学知识物理学知识英语阅读理解详细对比列表总结与建议 Moss前沿AI 【OpenAI】获取OpenAI API Key的多种方式全攻略&#xff1a;从入门到精通&#xff0c;再到详解教程&#xff01;&#xff01; 【VScode】VSCode中的智能AI-G…...

一根网线如何用软路由给手机、电脑分配设置不同IP

众所周知&#xff0c;在同一个网络下&#xff0c;我们的互联网IP是一样的&#xff0c;即外网只有一个IP。很多互联网公司、游戏工作室、营利工作室都需要利用它们来实现同一网络下多台设备IP地址不同的效果。对此我们该怎么办&#xff1f;下面给大家简单分享一下&#xff01; 在…...

面经自测——自我介绍

前言 这是作者新开的坑&#xff0c;一切题目都是从网上找的原题&#xff0c;为了总结网上有关的面经&#xff0c;以便在真实面试中较为流利的回答面试官的问题 面试之——自我介绍 自我介绍是面试中最常见的问题之一&#xff0c;主要目的是让面试官了解你的背景、技能和职业…...

uniapp 小程序 监听全局路由跳转 获取路由参数

uniapp 小程序 监听全局路由跳转 获取路由参数 app.vue中 api文档 onLaunch: function(options) {let that this;let event [navigateTo, redirectTo, switchTab, navigateBack];event.forEach(item > {uni.addInterceptor(item, { //监听跳转//监听跳转success(e) {tha…...

【LeetCode每日一题】——204.计数质数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 204.计数质数 四【题目描述】 给定整数 n &…...

TCP的“可靠性”(下)——三次握手四次挥手

目录 建立连接&#xff08;三次握手&#xff09;为啥要进行握手&#xff1f;&#xff1f;意义何在&#xff1f;&#xff1f;常见面试题&#xff1a;为啥必须是三次握手&#xff1f; 断开连接&#xff08;四次挥手&#xff09;三次握手和四次挥手的相同点和不同点连接过程中涉及…...

【笔记2-5】ESP32:freertos消息队列

主要参考b站宸芯IOT老师的视频&#xff0c;记录自己的笔记&#xff0c;老师讲的主要是linux环境&#xff0c;但配置过程实在太多问题&#xff0c;就直接用windows环境了&#xff0c;老师也有讲一些windows的操作&#xff0c;只要代码会写&#xff0c;操作都还好&#xff0c;开发…...

java操作doc(二)——java利用Aspose.Words动态创建自定义doc文档

有关java动态操作word文档&#xff0c;上一篇写了如何使用模板动态设置对于内容以及相关单元格的动态合并问题&#xff0c;详细请参看如下文档&#xff1a; java利用Aspose.Words操作Word动态模板文档并动态设置单元格合并 这篇文档说说&#xff0c;如何利用Aspose.Words动态…...

计算机光电成像理论基础

一、透过散射介质成像 1.1 光在散射介质中传输 光子携带物体信息并进行成像的过程是一个涉及光与物质相互作用的物理现象。这个过程可以分为几个步骤来理解&#xff1a; 1. **光的发射或反射**&#xff1a; - 自然界中的物体可以发射光&#xff08;如太阳&#xff09;&am…...

【Qt中实现屏幕录制】

在Qt中实现屏幕录制可以通过使用QScreen和QVideoEncoder类来完成。以下是一个简单的示例代码&#xff0c;演示如何捕获屏幕并将其保存为视频文件。请确保已经安装了Qt Multimedia模块&#xff0c;因为我们将使用其中的类来处理视频编码。 下面是一个基本的实现步骤&#xff1a…...

repo仓库转移到自己本地的git服务器

前提条件&#xff1a;搭建好gitolite 以转移正点原子rk3568_linux工程为例子&#xff0c;将其转移到自己的git服务器。 获取完整repo仓库 将正点原子epo仓库sync出来 evanevan-X99:~/SRC/atk$ .repo/repo/repo sync -l -j10 evanevan-X99:~/SRC/atk$ .repo/repo/repo list -n…...

java操作文件(一)——java如何实现多文件打包压缩并下载

在实际开发项目过程中&#xff0c;文件下载是异常频繁的操作&#xff0c;但是多文件zip打包下载并非常见使用场景&#xff0c;本文介绍如何使用io流操作多文件实现压缩并下载。 特别说明&#xff1a; 无需依赖任何第三方包或者拆件 一、效果展示&#xff1a; 1.打包前文件列…...

Git仓库移除文件的暂存和修改

在使用Git进行版本控制时&#xff0c;有时需要移除文件的暂存状态或者撤销对文件的修改。根据不同的需求和场景&#xff0c;可以采取不同的命令来完成这些操作。下面将详细介绍如何在Git中移除文件的暂存以及撤销文件的修改。 请注意&#xff0c;在执行这些命令之前&#xff0…...

Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards

获取Grafana dashboards的JSON文件 这里是获取已经编辑好的Grafana dashboards的JSON文件&#xff1b;以便内置到Kube-Prometheus-Stack的helm charts的安装zip文件中。 编辑自定义dashboards JSON文件 获取dashboards JSON文件模板 其实Kube-Prometheus-Stack内部本身已经内…...

2024-12-05OpenCV高级-滤波与增强

OpenCV高级-滤波与增强 文章目录 OpenCV高级-滤波与增强1-OpenCV平滑滤波1. 均值滤波 (cv2.blur())2. 高斯滤波 (cv2.GaussianBlur())3. 中值滤波 (cv2.medianBlur())4. 双边滤波 (cv2.bilateralFilter())总结 2-OpenCV边缘检测1. Sobel算子 (cv2.Sobel())2. Canny边缘检测 (cv…...

taro小程序进入腾讯验证码

接入原因 昨天突然晚上有人刷我们公司的登录发送短信接口&#xff0c;紧急将小程序的验证码校验更新上去了 接下来就是我们的接入方法&#xff0c;其实很简单&#xff0c;不过有时候可能大家着急就没有仔细看文档&#xff0c;腾讯验证码文档微信小程序地址&#xff0c;注意这里…...

微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现

微信小程序没有发现可以实现非tabbar页面显示tabbar的方法&#xff0c;但是可以在tabbar页面当中隐藏tabbar&#xff0c;使用wx.hideTabBar()方法就可以实现&#xff0c;在非tabbar页面调用wx.showTabBar()方法却会显示失败&#xff0c;不能显示tabbar onLoad() {wx.showTabBar…...

001集—— 创建一个WPF项目 ——WPF应用程序入门 C#

本例为一个WPF应用&#xff08;.NET FrameWork&#xff09;。 首先创建一个项目 双击xaml文件 双击xaml文件进入如下界面&#xff0c;开始编写代码。 效果如下&#xff1a; 付代码&#xff1a; <Window x:Class"WpfDemoFW.MainWindow"xmlns"http://schema…...

【LeetCode: 316. 去除重复字母 + 栈 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

基于Python的Selenium详细教程

一、PyCharm安装配置Selenium 本文使用环境&#xff1a;windows11、Python 3.10.5、PyCharm 2022.1.3、Selenium 4.3.0 需要你懂的技术&#xff1a;Python、HTML、CSS、JavaScript 1.Seleium安装&#xff1a; 在PyCharm终端或window命令窗口输入以下命令 #查看已安装的Pytho…...

金仓KDTS迁移工具报错ERROR: 对访问方法 “btree“ 数据类型 unknown 没有默认的操作符表

ERROR: 对访问方法 "btree" 数据类型 unknown 没有默认的操作符表 查看错误日志 com.kingbase8.util.KSQLException: ERROR: 对访问方法 "btree" 数据类型 unknown 没有默认的操作符表Hint: 你必须指定一个操作符表给索引或定义一个默认的操作符表给数据…...

前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)

泛型&#xff1a;代码的"变色龙" &#x1f98e; 为什么需要泛型&#xff1f; 想象一个快递员&#xff0c;每天要处理不同类型的包裹。如果为每种类型的包裹都写一套处理程序&#xff0c;那会很麻烦。泛型就像是一个"通用的包裹处理系统"&#xff0c;它能…...

数据链路层(四)---PPP协议的工作状态

1 PPP链路的初始化 通过前面几章的学习&#xff0c;我们学了了PPP协议帧的格式以及组成&#xff0c;那么对于使用PPP协议的链路是怎么初始化的呢&#xff1f; 当用户拨号上网接入到ISP后&#xff0c;就建立起了一条个人用户到ISP的物理链路。这时&#xff0c;用户向ISP发送一…...

EasyNVR中HTTP-FLV协议无法播放怎么解决?

在科技日新月异的今天&#xff0c;摄像头作为公共安全领域的重要一环&#xff0c;其技术的不断提升正显著地改变着社会的安全格局。从最初的简单监控到如今的高清智能分析&#xff0c;我们可以对特定区域进行实时监控和记录&#xff0c;为社会的安全稳定提供了强有力的保障。 问…...

微服务监控prometheus+Grafana

目录 Prometheus 概述 核心组件 特点 使用场景 Grafana 概述 功能特点 使用场景 PrometheusGrafana组合 部署和配置 一、准备工作 二、部署Prometheus 三、部署Grafana 四、创建监控仪表盘 五、验证和调优 总结 微服务监控是确保微服务架构稳定运行的关键环节…...

C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher

文章目录 0. 引言1. 设计概要1.1 主要组件1.2 类关系图1.3 工作流程 2. 代码实现2.1. 定义数据结构2.2. 实现 DataVisitor2.3. 实现 DataDispatcher2.4. 实现 Receiver2.5. 实现具体的 DataVisitor2.6. 示例主程序2.7. 编译和运行 0. 引言 使用 C 实现一个类似CyberRT 架构的 …...

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…...

银河麒麟v4/v10 Ubuntu上添加服务过程-以编译postgressql数据库为例

1 首先联网安装依赖 apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libxml2-dev python-setuptools 2 下载安装包 下载地址&#xff1a;https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz 3 编译安装 mkdir -p /data/pgsql…...

电子商务人工智能指南 1/6 - 搜索、广告和发现

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…...

JAVA面试基础(总结了很多)

最近帮整理了一份JAVA的面试基础&#xff0c;不过很基础后面还回继续更新。 java的专业技能 2.1 java的基础部分 2.1.1 简单讲一下java的跨平台原理 由于各操作系统&#xff08;windows,liunx等&#xff09;支持的指令集&#xff0c;不是完全一致的。就会让我们的程序在不同的操…...

PPT怎样做的更加精美

目录 PPT怎样做的更加精美 3D的GIF图片 3维空间图​编辑 结果有明显的对比 阅读高质量文献,采用他们的图 PPT怎样做的更加精美 3D的GIF图片 3维空间图 结果有明显的对比...

postgresql与pgvector安装与使用

环境变量修改 打开 .bashrc 文件进行编辑&#xff1a; vim ~/.bashrc在文件的末尾添加上面的环境变量配置 # 添加 PostgreSQL 可执行文件路径到系统 PATH export PATH/home/....../pg/postgresql-12.4/bin:$PATH# 设置 PostgreSQL 数据目录 export PGDATA/home/....../pg/pos…...

Tomcat,javaweb, servlet , springBoot

在server.xml里配置服务器 <scope>provided</scope>打包的时候&#xff0c;这个jar包不会被打进去&#xff0c;因为tomcat已将封装了这个jar包&#xff0c;没必要要这个...