052-第三代软件开发-系统监测

第三代软件开发-系统监测
文章目录
- 第三代软件开发-系统监测
- 项目介绍
- 系统监测
关键字:
Qt
、
Qml
、
cpu
、
内存
、memory`
项目介绍
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。
在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。
在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。
无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!
重要说明☝
☀该专栏在第三代软开发更新完将涨价
系统监测
这个其实是一个临时起意,不属于原本的圆形设计,就是什么呢,我们的程序在启动后,是会置顶全品显示,则就导致我们想看系统CPU占用率和内存使用率变得空难,也不是不可以,就是得再接一块屏幕出来,所以就加了一个功能。代码如下
头文件
#ifndef XXXX_SYSTEMINFOR_H
#define XXXX_SYSTEMINFOR_H#include <QObject>
#include <QTimer>
class XXXX_SystemInfor : public QObject
{Q_OBJECTQ_PROPERTY(double cpuRate READ cpuRate WRITE setCpuRate NOTIFY cpuRateChanged FINAL) // CPU使用率Q_PROPERTY(double memoryUseed READ memoryUseed WRITE setMemoryUseed NOTIFY memoryUseedChanged FINAL) // 内存使用Q_PROPERTY(double memoryTotal READ memoryTotal WRITE setMemoryTotal NOTIFY memoryTotalChanged FINAL) // 内存总量public:explicit XXXX_SystemInfor(QObject *parent = nullptr);~XXXX_SystemInfor();static XXXX_SystemInfor *getInstance();double cpuRate() const;void setCpuRate(double newCpuRate);double memoryUseed() const;void setMemoryUseed(double newMemoryUseed);double memoryTotal() const;void setMemoryTotal(double newMemoryTotal);signals:void cpuRateChanged();void memoryUseedChanged();void memoryTotalChanged();protected:void getCpuRate();void getMemoryRate();
private:QTimer* m_getSysInfor = nullptr;double m_cpuRate = 0;double m_memoryUseed = 0;double m_memoryTotal = 0;
};#endif // XXXX_SYSTEMINFOR_H
源文件
#include "XXXX_systeminfor.h"
#include "qdebug.h"
#include "qprocess.h"
#include <unistd.h>
Q_GLOBAL_STATIC(XXXX_SystemInfor,XXXX_SystemInfor) // 单例宏
XXXX_SystemInfor::XXXX_SystemInfor(QObject *parent): QObject{parent}
{m_getSysInfor = new QTimer(this);m_getSysInfor->setInterval(1000 * 2);connect(m_getSysInfor,&QTimer::timeout,this,[=](){getCpuRate();getMemoryRate();});m_getSysInfor->start();
}
/*** @brief XXXX_SystemInfor::~XXXX_SystemInfor* 析构函数*/
XXXX_SystemInfor::~XXXX_SystemInfor()
{m_getSysInfor->stop();
}
/*** @brief XXXX_SystemInfor::getInstance* @return* 获取单例*/
XXXX_SystemInfor *XXXX_SystemInfor::getInstance()
{return XXXX_SystemInfor;
}
/*** @brief XXXX_SystemInfor::cpuRate* @return* 获取cpu使用率* linux下使用mpstat命令获取* sudo apt-get install sysstat* V 2.0 使用top命令获取* V 2.1 使用sar命令获取* 最终使用V 1.0版本*/
void XXXX_SystemInfor::getCpuRate()
{
#ifdef Q_OS_LINUX// QProcess process;
// /// 使用mpstat命令获取CPU使用率
// QString program = "sar";
// QStringList arguments;
// /// 获取所有CPU核心的使用率
// arguments << "-u"<< "1" << "1";
// process.start(program, arguments);
// /// 等待进程完成
// process.waitForFinished();// process.readLine();
// process.readLine();
// process.readLine();
// process.readLine();
// QString str = process.readLine();
// str.replace("\n","");
// str.replace(QRegExp("( ){1,}")," ");
// auto lst = str.split(" ");// if(lst.size() > 6)
// {// if(lst.last().toDouble() > 0)
// setCpuRate(100.00 - lst.last().toDouble());
// // qDebug() << lst.at(7).toDouble();
// }// QProcess process;
// /// 使用mpstat命令获取CPU使用率
// QString program = "top";
// QStringList arguments;
// /// 获取所有CPU核心的使用率
// arguments << "-b"<< "-n" << "1" << "-i" << "-c";
// process.start(program, arguments);
// /// 等待进程完成
// process.waitForFinished();// process.readLine();
// process.readLine();
// QString str = process.readLine();
// str.replace("\n","");
// str.replace(QRegExp("( ){1,}")," ");
// auto lst = str.split(" ");
// if(lst.size() > 10)
// {
// if(lst.at(7).toDouble() > 0)
// setCpuRate(100.00 - lst.at(7).toDouble());qDebug() << lst.at(7).toDouble();
// }QProcess process;/// 使用mpstat命令获取CPU使用率QString program = "/usr/bin/mpstat";QStringList arguments;/// 获取所有CPU核心的使用率arguments << "-P" << "ALL";process.start(program, arguments);/// 等待进程完成process.waitForFinished();process.readLine();process.readLine();process.readLine();QString str = process.readLine();str.replace("\n","");str.replace(QRegExp("( ){1,}")," ");auto lst = str.split(" ");if(lst.size() > 10)setCpuRate(100.0 - lst.last().toDouble());#endif
}/*** @brief XXXX_SystemInfor::getMemoryRate* @return* 获取内存使用率*/
void XXXX_SystemInfor::getMemoryRate()
{#ifdef Q_OS_LINUXQProcess process;/// 使用free完成获取process.start("free -m");process.waitForFinished();process.readLine();QString str = process.readLine();str.replace("\n","");/// 将连续空格替换为单个空格 用于分割str.replace(QRegExp("( ){1,}")," ");auto lst = str.split(" ");if(lst.size() > 6){setMemoryTotal(lst[1].toDouble());setMemoryUseed(lst[1].toDouble() - lst[6].toDouble());}
#endif
}/*** @brief XXXX_SystemInfor::setMemoryRate* @param newMemoryRate* CPU 使用率*/
double XXXX_SystemInfor::cpuRate() const
{return m_cpuRate;
}
/*** @brief XXXX_SystemInfor::setCpuRate* @param newCpuRate* 设置 CPU 使用率*/
void XXXX_SystemInfor::setCpuRate(double newCpuRate)
{// if (qFuzzyCompare(m_cpuRate, newCpuRate))// return;m_cpuRate = newCpuRate;emit cpuRateChanged();
}double XXXX_SystemInfor::memoryUseed() const
{return m_memoryUseed;
}void XXXX_SystemInfor::setMemoryUseed(double newMemoryUseed)
{// if (qFuzzyCompare(m_memoryUseed, newMemoryUseed))// return;m_memoryUseed = newMemoryUseed;emit memoryUseedChanged();
}double XXXX_SystemInfor::memoryTotal() const
{return m_memoryTotal;
}void XXXX_SystemInfor::setMemoryTotal(double newMemoryTotal)
{// if (qFuzzyCompare(m_memoryTotal, newMemoryTotal))// return;m_memoryTotal = newMemoryTotal;emit memoryTotalChanged();
}

相关文章:

052-第三代软件开发-系统监测
第三代软件开发-系统监测 文章目录 第三代软件开发-系统监测项目介绍系统监测 关键字: Qt、 Qml、 cpu、 内存、memory 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C 的强大功…...

向量矩阵范数pytorch
向量矩阵范数pytorch 矩阵按照某个维度求和(dim就是shape数组的下标)1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下,PyTorch会累积梯度,我们需要清除之前的值 范数是向量或…...

NVIDIA Jetson OTA升级
从 JetPack 4.4 开始,可以使用包管理工具升级到下一个 JetPack 版本。请按照以下步骤执行升级。 1,小版本升级 (如,从 JetPack 4.4 升级到 JetPack 4.4.1) 第一步: sudo apt update 第二步: apt list --upgradable 第三步: sudo apt upgrade更新完之后重新启动即可 …...
【算法】算法题-20231118
这里写目录标题 一、16.17. 连续数列二、合并两个有序数组(力扣88)三、存在重复元素(217)四、有效的字母异位词(242) 一、16.17. 连续数列 简单 给定一个整数数组,找出总和最大的连续数列&…...

某60区块链安全之整数溢出漏洞实战学习记录
区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…...

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)
Neo4j的全文索引是基于Lucene实现的,但是Lucene默认情况下只提供了基于英文的分词器,下篇文章我们在讨论中文分词器(IK)的引用,本篇默认基于英文分词来做。我们前边文章就举例说明过,比如我要搜索苹果公司&…...

element-china-area-data使用问题
使用CodeToText报错,下载的时候默认下载最新版本的, 稳定版本5.0.2版本才可以 npm install element-china-area-data5.0.2 -S...

248: vue+openlayers 以静态图片作为底图,并在上面绘制矢量多边形
第248个 点击查看专栏目录 本示例是演示如何在vue+openlayers项目中以静态图片作为底图,并在上面绘制矢量多边形。这里主要通过pixels的坐标作为投射,将静态图片作为底图,然后通过正常的方式在地图上显示多边形。注意的是左下角为[0,0]。 直接复制下面的 vue+openlayers源代…...

thinkphp6(TP6)访问控制器报404(Nginx)
起因: 安装thinphp6后,发现无法访问控制器,直接通过URL访问,就报错404。 错误原因: Nginx不支持URL的 PathInfo。 解决方法: 配置伪静态。 伪静态代码: location / {if (!-e $request_filen…...
腾讯云轻量应用服务器使用场景列举说明
腾讯云轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,轻量应用服务器可用于搭建中小型网站、Web应用、博客、论坛、小程序/小游戏、电商、云盘/图床、云端开发测试和学习环境等轻量级、中低负载…...

【漏洞复现】IP-guard WebServer 远程命令执行
漏洞描述 IP-guard是一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。互联网上披露IP-guard WebServer远程命令执行漏洞情报。攻击者可利用该漏洞执行任意命令,获取服务器控制权限。 免责声明 技术文章仅供参考,任何个人和…...

23111704[含文档+PPT+源码等]计算机毕业设计springboot办公管理系统oa人力人事办公
文章目录 **软件开发环境及开发工具:****功能介绍:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及开发工具: 前端技术:jsc…...
在Linux系统上检测GPU显存和使用情况
在Linux系统上,你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法: 1. 使用nvidia-smi(仅适用于NVIDIA GPU) 如果你使用的是NVIDIA的显卡,你可以使用nvidia-smi命令来获取显卡信息,…...
内网穿透 cpolar
通过 cpolar软件 可以获得一个临时域名,而这个临时域名是一个 公网ip 下载与安装 下载地址:https://dashboard.cpolar.com/get-started 安装过程中,一直下一步即可 验证 进入官网验证页面复制 authtoken打开 cmd 进入安装目录执行命令&#…...

ai剪辑矩阵系统源码+无人直播系统源码技术开发
开发AI剪辑矩阵系统和无人直播系统源码,需要以下步骤: 1. 市场调研:了解市场需求和竞品情况,明确系统的功能和特点。 2. 系统设计:设计系统的整体架构和功能模块,包括视频剪辑、直播推流、实时互动、数据分…...
2311rust,到38版本更新
1.35.0稳定版 此版本亮点是分别为Box<dyn FnOnce>,Box<dyn FnMut>和Box<dyn Fn>实现了FnOnce,FnMut和Fn闭包特征. 此外,现在可按不安全的函数指针转换闭包.现在也可无参调用dbg!. 为Box<dyn Fn*>实现Fn*装饰特征. 以前,如果要调用在盒子闭包中存储的…...

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例
腾讯云4核8G服务器S5和轻量应用服务器优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,腾讯云…...

Android 屏幕适配
目录 一、为什么要适配 二、几个重要的概念 2.1 屏幕尺寸 2.2 屏幕分辨率 2.3 屏幕像素密度 2.4 屏幕尺寸、分辨率、像素密度三者关系 三、常用单位 3.1 密度无关像素(dp) 3.2 独立比例像素(sp) 3.3 dp与px的转换 四、解决方案 4.1 今日头条…...

Python使用Mechanize库完成自动化爬虫程序
目录 引言 一、了解Mechanize库 二、安装Mechanize库 三、使用Mechanize库发送HTTP请求 四、使用Mechanize库解析HTML页面 五、使用Mechanize库模拟用户输入 六、使用Mechanize库处理JavaScript动态生成的内容 七、使用Mechanize库处理登录和表单提交的常见问题 总结 …...
【Shell脚本入门】
Shell中的特殊符号 1.$ 美元符号,用来表示变量的值。 如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。2.# 井号,除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中ÿ…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

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

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...