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

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

头图

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

文章目录

  • 第三代软件开发-系统监测
    • 项目介绍
    • 系统监测

关键字: QtQmlcpu内存、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();
}

博客签名2021

相关文章:

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

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

向量矩阵范数pytorch

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

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. 连续数列二、合并两个有序数组&#xff08;力扣88&#xff09;三、存在重复元素&#xff08;217&#xff09;四、有效的字母异位词&#xff08;242&#xff09; 一、16.17. 连续数列 简单 给定一个整数数组&#xff0c;找出总和最大的连续数列&…...

某60区块链安全之整数溢出漏洞实战学习记录

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

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

Neo4j的全文索引是基于Lucene实现的&#xff0c;但是Lucene默认情况下只提供了基于英文的分词器&#xff0c;下篇文章我们在讨论中文分词器&#xff08;IK&#xff09;的引用&#xff0c;本篇默认基于英文分词来做。我们前边文章就举例说明过&#xff0c;比如我要搜索苹果公司&…...

element-china-area-data使用问题

使用CodeToText报错&#xff0c;下载的时候默认下载最新版本的&#xff0c; 稳定版本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)

起因&#xff1a; 安装thinphp6后&#xff0c;发现无法访问控制器&#xff0c;直接通过URL访问&#xff0c;就报错404。 错误原因&#xff1a; Nginx不支持URL的 PathInfo。 解决方法&#xff1a; 配置伪静态。 伪静态代码&#xff1a; location / {if (!-e $request_filen…...

腾讯云轻量应用服务器使用场景列举说明

腾讯云轻量应用服务器&#xff08;TencentCloud Lighthouse&#xff09;是新一代开箱即用、面向轻量应用场景的云服务器产品&#xff0c;轻量应用服务器可用于搭建中小型网站、Web应用、博客、论坛、小程序/小游戏、电商、云盘/图床、云端开发测试和学习环境等轻量级、中低负载…...

【漏洞复现】IP-guard WebServer 远程命令执行

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

23111704[含文档+PPT+源码等]计算机毕业设计springboot办公管理系统oa人力人事办公

文章目录 **软件开发环境及开发工具&#xff1a;****功能介绍&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 软件开发环境及开发工具&#xff1a; 前端技术&#xff1a;jsc…...

在Linux系统上检测GPU显存和使用情况

在Linux系统上&#xff0c;你可以使用一些命令行工具来检测GPU显存和使用情况。以下是一些常用的方法&#xff1a; 1. 使用nvidia-smi&#xff08;仅适用于NVIDIA GPU&#xff09; 如果你使用的是NVIDIA的显卡&#xff0c;你可以使用nvidia-smi命令来获取显卡信息&#xff0c…...

内网穿透 cpolar

通过 cpolar软件 可以获得一个临时域名&#xff0c;而这个临时域名是一个 公网ip 下载与安装 下载地址&#xff1a;https://dashboard.cpolar.com/get-started 安装过程中&#xff0c;一直下一步即可 验证 进入官网验证页面复制 authtoken打开 cmd 进入安装目录执行命令&#…...

ai剪辑矩阵系统源码+无人直播系统源码技术开发

开发AI剪辑矩阵系统和无人直播系统源码&#xff0c;需要以下步骤&#xff1a; 1. 市场调研&#xff1a;了解市场需求和竞品情况&#xff0c;明确系统的功能和特点。 2. 系统设计&#xff1a;设计系统的整体架构和功能模块&#xff0c;包括视频剪辑、直播推流、实时互动、数据分…...

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和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…...

Android 屏幕适配

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

Python使用Mechanize库完成自动化爬虫程序

目录 引言 一、了解Mechanize库 二、安装Mechanize库 三、使用Mechanize库发送HTTP请求 四、使用Mechanize库解析HTML页面 五、使用Mechanize库模拟用户输入 六、使用Mechanize库处理JavaScript动态生成的内容 七、使用Mechanize库处理登录和表单提交的常见问题 总结 …...

【Shell脚本入门】

Shell中的特殊符号 1.$ 美元符号&#xff0c;用来表示变量的值。 如变量NAME的值为Mike&#xff0c;则使用$NAME就可以得到“Mike”这个值。2.# 井号&#xff0c;除了做为超级用户的提示符之外&#xff0c;还可以在脚本中做为注释的开头字母&#xff0c;每一行语句中&#xff…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...