搜档网
当前位置:搜档网 › C# 获取CPU,硬盘,网卡信息

C# 获取CPU,硬盘,网卡信息

C#  获取CPU,硬盘,网卡信息
C#  获取CPU,硬盘,网卡信息

using System;

using System.Runtime.InteropServices;

using System.Text;

using System.Management;

using System.Collections.Generic;

namespace Hardware

{

public class HardwareInfo

{

///

/// cpu序列号

///

public static List GetCPUIds()

{

List cpuInfos = new List();

ManagementClass cimobject = new ManagementClass("Win 32_Processor");

ManagementObjectCollection moc = cimobject.GetInstan ces();

foreach (ManagementObject mo in moc)

{

string cpuInfo = mo.Properties["ProcessorId"].Va lue.ToString();

if (!string.IsNullOrEmpty(cpuInfo)) {

cpuInfos.Add(cpuInfo);

}

}

return cpuInfos;

}

///

///获取硬盘ID

///

public static List GetHDIds()

{

List hdIds = new List();

ManagementClass cimobject = new ManagementClass("Win 32_DiskDrive");

ManagementObjectCollection moc = cimobject.GetInstan

foreach (ManagementObject mo in moc)

{

String HDid = (string)mo.Properties["Model"].Val ue.ToString();

if (!string.IsNullOrEmpty(HDid))

{

hdIds.Add(HDid);

}

}

return hdIds;

}

///

///获取网卡MAC地址

///

public static List GetMacAddresses() {

List macs = new List();

ManagementClass mc = new ManagementClass("Win32_Netw orkAdapterConfiguration");

ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)

{

if ((bool)mo["IPEnabled"] == true) {

string mac = mo["MacAddress"].ToString();

if (!string.IsNullOrEmpty(mac)) {

macs.Add(mac);

}

}

}

return macs;

}

}

partial class IDE

{

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.A

internal struct IDSECTOR

{

public ushort wGenConfig;

public ushort wNumCyls;

public ushort wReserved;

public ushort wNumHeads;

public ushort wBytesPerTrack;

public ushort wBytesPerSector;

public ushort wSectorsPerTrack;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public ushort[] wVendorUnique;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string sSerialNumber;

public ushort wBufferType;

public ushort wBufferSize;

public ushort wECCSize;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] public string sFirmwareRev;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string sModelNumber;

public ushort wMoreVendorUnique;

public ushort wDoubleWordIO;

public ushort wCapabilities;

public ushort wReserved1;

public ushort wPIOTiming;

public ushort wDMATiming;

public ushort wBS;

public ushort wNumCurrentCyls;

public ushort wNumCurrentHeads;

public ushort wNumCurrentSectorsPerTrack;

public uint ulCurrentSectorCapacity;

public ushort wMultSectorStuff;

public uint ulTotalAddressableSectors;

public ushort wSingleWordDMA;

public ushort wMultiWordDMA;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128 )]

public byte[] bReserved;

}

[StructLayout(LayoutKind.Sequential)]

internal struct DRIVERSTATUS

{

public byte bDriverError;

public byte bIDEStatus;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] bReserved;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public uint[] dwReserved;

}

[StructLayout(LayoutKind.Sequential)]

internal struct SENDCMDOUTPARAMS

{

public uint cBufferSize;

public DRIVERSTATUS DriverStatus;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 513 )]

public byte[] bBuffer;

}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.A nsi)]

internal struct SRB_IO_CONTROL

{

public uint HeaderLength;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] public string Signature;

public uint Timeout;

public uint ControlCode;

public uint ReturnCode;

public uint Length;

}

[StructLayout(LayoutKind.Sequential)]

internal struct IDEREGS

{

public byte bFeaturesReg;

public byte bSectorCountReg;

public byte bSectorNumberReg;

public byte bCylLowReg;

public byte bCylHighReg;

public byte bDriveHeadReg;

public byte bCommandReg;

public byte bReserved;

}

[StructLayout(LayoutKind.Sequential)]

internal struct SENDCMDINPARAMS

{

public uint cBufferSize;

public IDEREGS irDriveRegs;

public byte bDriveNumber;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] bReserved;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public uint[] dwReserved;

public byte bBuffer;

}

[StructLayout(LayoutKind.Sequential)]

internal struct GETVERSIONOUTPARAMS

{

public byte bVersion;

public byte bRevision;

public byte bReserved;

public byte bIDEDeviceMap;

public uint fCapabilities;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public uint[] dwReserved; // For future use.

}

[DllImport("kernel32.dll")]

private static extern int CloseHandle(uint hObject);

[DllImport("kernel32.dll")]

private static extern int DeviceIoControl(uint hDevice,

uint dwIoContr olCode,

ref SENDCMDINP ARAMS lpInBuffer,

int nInBufferS ize,

ref SENDCMDOUT PARAMS lpOutBuffer,

int nOutBuffer Size,

ref uint lpbyt esReturned,

int lpOverlapp ed);

[DllImport("kernel32.dll")]

private static extern int DeviceIoControl(uint hDevice,

uint dwIoContr olCode,

int lpInBuffer,

int nInBufferS ize,

ref GETVERSION OUTPARAMS lpOutBuffer,

int nOutBuffer Size,

ref uint lpbyt esReturned,

int lpOverlapp ed);

[DllImport("kernel32.dll")]

private static extern uint CreateFile(string lpFileName,

uint dwDesiredAcce ss,

uint dwShareMode,

int lpSecurityAttr ibutes,

uint dwCreationDis position,

uint dwFlagsAndAtt ributes,

int hTemplateFile);

private const uint GENERIC_READ = 0x80000000;

private const uint GENERIC_WRITE = 0x40000000;

private const uint FILE_SHARE_READ = 0x00000001;

private const uint FILE_SHARE_WRITE = 0x00000002;

private const uint OPEN_EXISTING = 3;

private const uint INVALID_HANDLE_VALUE = 0xffffffff;

private const uint DFP_GET_VERSION = 0x00074080;

private const int IDE_ATAPI_IDENTIFY = 0xA1; // Returns ID sector for ATAPI.

private const int IDE_ATA_IDENTIFY = 0xEC; // Returns ID

sector for ATA.

private const int IDENTIFY_BUFFER_SIZE = 512;

private const uint DFP_RECEIVE_DRIVE_DATA = 0x0007c088;

public static string Read(byte drive)

{

OperatingSystem os = Environment.OSVersion;

if (os.Platform != PlatformID.Win32NT) throw new Not SupportedException("仅支持WindowsNT/2000/XP");

//if (os.Version.Major < 5) throw new NotSupportedEx ception("仅支持WindowsNT/2000/XP");

string driveName = "\\\\.\\PhysicalDrive" + drive.To String();

uint device = CreateFile(driveName,

GENERIC_READ | GENERIC_WRIT E,

FILE_SHARE_READ | FILE_SHAR

E_WRITE,

0, OPEN_EXISTING, 0, 0);

if (device == INVALID_HANDLE_VALUE) return"";

GETVERSIONOUTPARAMS verPara = new GETVERSIONOUTPARAM

S();

uint bytRv = 0;

if (0 != DeviceIoControl(device, DFP_GET_VERSION,

0, 0, ref verPara, Marshal. SizeOf(verPara),

ref bytRv, 0))

{

if (verPara.bIDEDeviceMap > 0)

{

byte bIDCmd = (byte)(((verPara.bIDEDeviceMap >> drive & 0x10) != 0) ? IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY);

SENDCMDINPARAMS scip = new SENDCMDINPARAMS();

SENDCMDOUTPARAMS scop = new SENDCMDOUTPARAMS ();

scip.cBufferSize = IDENTIFY_BUFFER_SIZE;

scip.irDriveRegs.bFeaturesReg = 0;

scip.irDriveRegs.bSectorCountReg = 1;

scip.irDriveRegs.bCylLowReg = 0;

scip.irDriveRegs.bCylHighReg = 0;

scip.irDriveRegs.bDriveHeadReg = (byte)(0xA0

| ((drive & 1) << 4));

scip.irDriveRegs.bCommandReg = bIDCmd;

scip.bDriveNumber = drive;

if (0 != DeviceIoControl(device, DFP_RECEIVE _DRIVE_DATA,

ref scip, Marshal.S izeOf(scip), ref scop,

Marshal.SizeOf(scop ), ref bytRv, 0))

{

StringBuilder s = new StringBuilder();

for (int i = 20; i < 40; i += 2) {

s.Append((char)(scop.bBuffer[i + 1]) );

s.Append((char)scop.bBuffer[i]);

}

CloseHandle(device);

return s.ToString().Trim();

}

}

}

CloseHandle(device);

return"";

}

}

}

信息获取复习资料

信息获取 一、信息 1、信息的含义 数据经过加工处理后的结果 2、数据的含义 记录客观事物的性质,形态和数量特征的抽象符号。 3、信息与数据的关系 信息由数据生成,是数据经过加工处理后的结果,数据——加工处理——信息。 二、有用信息 1、有用信息的特征及具体内容 (1)高质量 ①高质量的信息必须是精确的 ②排列有序,而不是杂乱无章的 ③信息传递的媒介对质量有重要影响 (2)及时 ①及时提供 ②反映当前情况 (3)安全 ①范围广泛,从而可以使得管理者较全面的了解现状 ②尽可能简洁,但应该尽可能详细 三、信息系统的要素 1、一般信息系统所包含的五个基本要素 输入、处理、输出、反馈、控制 2、输入,处理,输出,反馈和控制的内容 输入:系统所要处理的原始数据。 处理:把原始数据加工或转换成有用的信息的过程。 输出:系统处理后的结果。 反馈:当管理者对输出的结果不大满意时,对输入进行调整。 控制:对输入、处理、输出、反馈进行监视,使得这些过程正常。 3、一般信息系统五要素的相互关系 四、信息系统的开发步骤 1、信息系统的分析与设计的步骤 (1)系统分析:目的是确定信息系统的功能要求 ①考察分析当前使用的系统,评估组织的外部环境和组织的内部条件,评估最终用户的要求; ②系统设计人员确定一系列功能要求 (2)系统设计 ①设计用户界面或人员和信息的交互点

②产生数据,及其属性和结构以及不同数据元素之间的关系,将数据输入到数据库中。 ③设计软件系统——各种计算机程序 2、系统开发周期五个步骤的相互关系 (1)系统调查:组织确定是否存在一个能被信息系统处理的问题或机会。 (2)系统分析:目的是确定信息系统的功能要求 ①考察分析当前使用的系统,评估组织的外部环境和组织的内部条件,评估最终用户的要求; ②系统设计人员确定一系列功能要求 (3)系统设计 ①设计用户界面或人员和信息的交互点 ②产生数据,及其属性和结构以及不同数据元素之间的关系,将数据输入到数据库中。 ③设计软件系统——各种计算机程序 (4)系统实施:将设计的系统付诸实施阶段。 主要任务包括:购置、安装并调试各硬件;编写和调试程序;培训用户和其它人员;转换数据文件;调试和转换系统等。 各工作可同时展开,互相交叉,要协调一致。每个分阶段要写实施进度报告。测试后要写出系统测试分析报告。 (5)系统维护:主要指系统投入运行的工作。 包括:日常运行管理,维护,评价及局部调整,修改,终止,使用新系统等。

如何用C#实时获取CPU利用率

如何用C#实时获取CPU利用率 using System.Diagnostics; using System.Threading; public class CpuLoadInfo { // auxiliary print methods private static void Say ( string txt ) { Console.WriteLine(txt); } // auxiliary print methods private static void Say() { Say(""); } // The main method. Command line arguments are ignored. [STAThread] public static void Main() { Say("$Id: CpuLoadInfo.cs,v 1.2 2002/08/17 17:45:48 rz65 Exp $"); Say(); Say("Attempt to create a PerformanceCounter instance:"); Say("Category name = " + CategoryName); Say("Counter name = " + CounterName); Say("Instance name = " + InstanceName); PerformanceCounter pc = new PerformanceCounter(CategoryName,CounterName,InstanceName); Say("Performance counter was created."); Say("Property CounterType: " + pc.CounterType); Say(); Say("Property CounterHelp: " + pc.CounterHelp); Say(); Say("Entering measurement loop.");

获取类的元数据信息

package classhandle; import https://www.sodocs.net/doc/2b11283232.html,ng.reflect.Field; import https://www.sodocs.net/doc/2b11283232.html,ng.reflect.Modifier; import java.sql.Timestamp; import java.util.Calendar; public class GetMetaDataInformationOfClass { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Calendar birthday = Calendar.getInstance(); birthday.set(1988, 1, 11, 0, 1, 0); Student stu = new Student("0002", "人参", true, new Timestamp( birthday.getTimeInMillis()), 1.80); // System.out.println(birthday.getTimeInMillis()); ClassInfo classInfo = new ClassInfo(); System.out.println(classInfo.getClassInfo(stu)); } } class ClassInfo { public String getClassInfo(Object obj) { StringBuffer result = new StringBuffer(); // 得到参数变量的Class引用变量 Class cls = obj.getClass(); // System.out.println(cls); // 得到参数类变量的信息 Field[] fields = cls.getDeclaredFields();

linux c程序获取cpu使用率及内存使用情况

想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了。方法就是读取proc下的文件来获取了。cpu使用率:/proc/stat ,内存使用情 况:/proc/meminfo 看程序: /*************************************************************** * @file: statusinfo.c * * @brief: 从linux系统获取cpu及内存使用情况 * * @version 1.0 * * @author 抹黑 * * @date 2009年3月17日 * ***************************************************************/ typedef struct PACKED //定义一个cpu occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned int user; //定义一个无符号的int类型的user unsigned int nice; //定义一个无符号的int类型的nice unsigned int system;//定义一个无符号的int类型的system unsigned int idle; //定义一个无符号的int类型的idle }CPU_OCCUPY; typedef struct PACKED //定义一个mem occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned long total; char name2[20]; unsigned long free; }MEM_OCCUPY; get_memoccupy (MEM_OCCUPY *mem) //对无类型get函数含有一个形参结构体类弄的指针O

获取CPU的温度的方法

获取CPU的温度的方法 在内存配置较低的计算机中(比如内存32MB,Windows 98第二版),CPU的占有率是较高的,一般能够达到50%,这可能是由于系统需要CPU进行许多的运算模拟来弥补资源的不足。下面是收集获取CPU温度的方法,欢迎阅读。 作为一个系统级程序员或者编程爱好者,掌握一些系统的高级编程技巧是非常有意义的。本文将介绍如何利用一些高级的编程技巧来实现动态监控。 虽然Windows 98“系统工具”中的“资源状况”程序能够监视CPU的资源占用状况,但是那些相关的数据却无法传递到我们自己的程序中。为此,笔者用VB 6编写了一个具有上述功能的CPU监视软件,它可以实现对CPU资源状况的监视并取得有关数据,并且能够显示到一个精致的图示窗口中。 编程原理 CPU的资源占用情况真正反映在CMOS中,但是如果我们直接从这里开始编程,那将是一件非常复杂的工作。幸好,Windows 98已经帮我们做好了这一步,它的底层技术能够从CMOS中获取CPU的资源占用状况参数并且记录到注册表中 “HKEY_DYN_DATA\PerfStats\StatData”的分支“KERNEL\CPUUsage”中,通过周期性地读取该键的键值,并且将参数传递到我们自己制作的监视器界面或者有关变量中,就可以即时获得并反映出CPU的使用状况了。

本程序的关键是以通用的方法获取相关键值并反映输出到自制的动态进度监视器上,为了更有利于观察、分析,我们将添加一个简单的趋势分析平均线。通过本文,初学者还将能了解如何从注册表的指定项获取数据和利用Picture控件实现进度指示器的编程技巧。 1.设计程序界面 首先运行VB 6中文版,建立一个标准的exe工程,将窗体命名为frmmain,borderstyle属性设为:3-fixed,caption,属性设置为空;接着添加一个frame控件——“frame1”,caption属性设置为空,再添加picturebox控件pctPrg,前景色为绿色,背景色为浅红色;最后添加一个定时器控件——“timer”,interval设置为100(当然,也可以根据自己的需要设置读取间隔),enabled设置为true,其他的属性采用系统的默认值,调整窗体和控件到适当位置和适当大小即可(参见附图)。 2.编写程序代码,双击窗体frmmain并输入以下代码 Option Explicit '变量检查 Private Declare Function RegQueryValueEx Lib "advapi32.dll " Alias "RegQueryValueExA " (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long '获取一个指定的注册表项的设置值

通过SNMP查看设备CPU利用率配置举例

通过SNMP查看设备CPU利用率配置举例 关键词:SNMP、NMS、Agent、MIB、CPU利用率 摘要:NET-SNMP是SNMP协议的一套开源实现工具,可作为NMS或Agent。本文主要介绍NET-SNMP作为NMS通过SNMP协议查看H3C设备(作为Agent)CPU利用率的配置应用。 缩略语:SNMP、NMS、MIB 缩略语英文全名中文解释 SNMP Simple Network Management Protocol 简单网络管理协议 NMS Network Management System 网络管理系统 Information Base 管理信息库 MIB Management

目录 1 简介 (3) 2 Net-SNMP使用简介 (3) 3 相关MIB节点 (4) 4 使用SNMP v1、v2c查看设备CPU利用率配置举例 (5) 4.1 组网需求 (5) 4.2 配置思路 (6) 4.3 配置步骤 (6) 4.3.1 配置Agent (6) 4.3.2 配置NMS (7) 5 使用SNMP v3查看设备CPU利用率配置举例 (8) 5.1 组网需求 (8) 5.2 配置思路 (9) 5.3 配置步骤 (9) 5.3.1 配置Agent (9) 5.3.2 配置NMS (10)

1 简介 SNMP是网络中管理设备(NMS)和被管理设备(Agent)之间的通信规则。NMS通过Get和Set等操作获取、设置Agent上变量的值,从而实现对Agent的远程管理、监控。Agent的CPU 利用率就是NMS经常监控的重要变量。 CPU利用率反映了一段时间内设备CPU资源的使用情况。如果CPU利用率一直居高不下,说明设备负载较重,需要对设备当前状况进行分析,找到引起设备负载过重的原因,从而预防、诊断网络故障。 目前市场上有多种NMS产品,其中Net-SNMP作为一种开源实现的NMS在业界被广泛使用。它提供了一套完整的应用程序,实现了SNMPv1/v2c/v3功能。本文将描述如何使用Net-SNMP工具通过访问MIB对象获取设备CPU利用率。 2 Net-SNMP使用简介 本文主要用到Net-SNMP的snmpget功能和snmpwalk功能。 z snmpget功能:即执行一次SNMP Get操作,用来获取Agent上指定MIB对象的值。命令行格式为snmpget [OPTIONS] AGENT OID [OID]。 z snmpwalk功能:即执行一次SNMP Walk操作,用来获取Agent上多个MIB对象的值。命令行格式为snmpwalk [OPTIONS] AGENT [OID]。 以上两条命令行中各参数的含义如下: 参数说明 snmpget 命令关键字,表示执行Get操作 snmpwalk 命令关键字,表示执行Walk操作 OPTIONS 命令行选项(常用选项请参见表1) AGENT Agent的IP地址 OID Agent上MIB对象的OID(如果是执行Get操作,OID必须是叶子节点或者是表节点实体的OID;如果是执行Walk操作,可以是所有类型对象的OID) 表1Net-SNMP命令行工具常用选项 选项说明举例-h 显示命令帮助信息-h -v 设置使用的SNMP版本,取值为1、2c或3 -v 1 -c 设置团体名-c public -a 设置认证协议类型,取值为MD5或SHA -a MD5 -A 设置认证密码-A 12345678

用top命令查看CPU使用率

用top 命令查看CPU 使用率 在系统维护的过程中,随时可能有需要查看CPU 使用率,并根据相应信息分析系统状况的需要。在CentOS 中,可以通过top 命令来查看CPU 使用状况。运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。退出top 的命令为q (在top 运行中敲q 键一次)。 运行top 在命令行中输入“top” 即可启动top ,运行后如下图所示: 如上图所示,top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。第一部分-- 最上部的系统信息栏: 第一行(top): “00:11:04”为系统当前时刻; “3:35”为系统启动后到现在的运作时间; “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数-- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目; “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、

15分钟前进程的平均数,一般的可以认为这个数值超过CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程; 第二行(Tasks): “59 total”为当前系统进程总数; “1 running”为当前运行中的进程数; “58 sleeping”为当前处于等待状态中的进程数; “0 stoped”为被停止的系统进程数; “0 zombie”为被复原的进程数; 第三行(Cpus): 分别表示了CPU 当前的使用率; 第四行(Mem): 分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量; 第五行(Swap): 表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。 第二部分-- 中间部分的内部命令提示栏: top 运行中可以通过top 的内部命令对进程的显示方式进行控制。内部命令如下表: s - 改变画面更新频率 l - 关闭或开启第一部分第一行top 信息的表示 t - 关闭或开启第一部分第二行Tasks 和第三行Cpus 信息的表示 m - 关闭或开启第一部分第四行Mem 和第五行Swap 信息的表示 N - 以PID 的大小的顺序排列表示进程列表(第三部分后述) P - 以CPU 占用率大小的顺序排列进程列表(第三部分后述) M - 以内存占用率大小的顺序排列进程列表(第三部分后述) h - 显示帮助 n - 设置在进程列表所显示进程的数量 q - 退出top s - 改变画面更新周期 第三部分-- 最下部分的进程列表栏: 以PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过top 内部命令可以控制此处的显示方式。 应用top

linux下如何获取cpu的利用率

linux下如何获取cpu的利用率 “proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc 得到系统的信息,并可以改变内核的某些参数。” 这里将介绍如何从/proc文件系统中获取与防火墙相关的一些性能参数,以及如何通过/proc 文件系统修改内核的相关配置。 1、从/proc文件系统获取相关的性能参数 cpu使用率:/proc/stat 内存使用情况:/proc/meminfo 网络负载信息:/proc/net/dev 相应的计算方法:(摘自:什么是proc文件系统,见参考资料) (1)处理器使用率 (2)内存使用率 (3)流入流出数据包 (4)整体网络负载 这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用man proc来查看proc文件系统的联机手册。 (1)处理器使用率 这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于/proc/stat文件的第一行。CPU 的利用率使用如下公式来计算。 CPU利用率= 100 *(user + nice + system)/(user + nice + system + idle) (2)内存使用率 这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。

信息获取材料—传感器

信息获取材料—传感器 传感器是重要的信息获取材料。传感器的作用相当于人的各种感觉器官,它利用材料所具有的不同的物理、化学和生物效应制成对光、声、磁、电、力、温度、湿度、气体等敏感的器件,它既是信息获取、感知和转换所必需的元件,也是自动控制、遥感技术的关键。它对材料的要求近乎苛刻,必须具有高敏感性、高选择性、工作温度低、稳定性好等特性。敏感材料的种类很多,可分为半导体、陶瓷、有机膜及金属间充化合物等。根据用途的不同可分为光敏、声敏、磁敏、电敏、热敏、湿敏、气敏、力敏传感器等。 光敏传感器指对紫外到红外的光敏感,并将光能量转换成电信号的器件。当光照到两端接上电源的半导体材料时,这些材料(又称光电晶体)将吸收光能而产生电子一空穴对,电子向正极,空穴向负极移动,从而产生光电流。通常,随着入射光的增强,半导体的电阻减小,光电流增大,这种光电流信号可引出进行测量。这就是光敏传感器的工作原理。在光电晶体中,硫化镉对可见光敏感,砷化镓和锗对红外光敏感,而硫化锌对紫外光敏感。因此,根据所需感知的光的波长,可以选用不同的材料来制成光敏传感器。由光敏电阻器制成的光敏传感器在日常生活中应用日趋广泛。例如,能白天自动关灯,晚上自动开灯的路灯控制器、施工警灯;也可制成报警器、防盗器等。 声敏传感器是声波振动所产生的压力在压电导体中与自由载流子(电子或空穴对)相互作用,从而产生压电效应的器件。大部分声敏传感器采用硫化镉、氧化锌等制成。目前也常用压电陶瓷(如锆钛酸铅陶瓷,统称PZT)、压电晶体(石英等)以及新发展起来的压电高聚物(聚偏二氯乙烯等)来感知声的振动。 磁敏传感器是根据半导体的磁电阻率随磁场强度的增强而加大的特性制成的器件。常用材料是在锑化铟中加1%镍而得到的锑化铟与锑化镍的共晶,以及砷化铟等材料。 电敏传感器是利用一种伏安特性为非线性的电阻元件制成的器件。当这种传感器的两端施加的电压增加到某一特定值时,其电阻值就会急剧变小。碳化硅金属氧化物、钛酸钡、硒化镉等材料都具有这种特性。 热敏传感器是利用电阻值对温度极为敏感的电阻元件而制成的器件。例如,用钛酸钡半导体陶瓷加微量稀土元素可制成正温度系数热敏半导体;用多晶金属氧化物半导体或硅、锗、玻璃等半导体材料可制成负温度系数热敏半导体。这种传感器应用广泛,涉及从温度测量(超低温至高温)、温度控制、火灾报警、气象探空、过荷保护一直到空间技术、火箭导弹等军事技术。 湿敏传感器是由感湿层、基片以及感湿层上的两个电极组成的。当吸湿程度变化时会导致电阻率的改变。感湿层以氧化物性能最佳。例如,碱金属氧化物加五氧化二钒加硅粉、三氧化二铬、氧化锡及氧化锑等。 气敏传感器一般是利用半导体表面吸收某种气体分子后发生氧化或还原反应,引起导电性能变化而制成的器件。采用三氧化二铟、氧化锌、二氧化锡、二氧化钛、五氧化二矾等的N型半导体,遇还原性气体时电阻减小,可检出氢、一氧化碳、甲烷等气体;采用氧化亚镍、三氧化二铬、氯化亚铜等的P型气敏半导体,遇氧化性气体时电阻减小,可检出氧、氯、二氧化氮等气体。例如,煤气泄漏及取暖器不完全燃烧时会释放出危险的一氧化碳气体,用二氧化锡、催化剂钯和金电极制成的薄膜型气敏传感器,其厚度仅0.6毫米左右,在室温至100 C时对一氧化碳气体极为敏感。 力敏传感器是根据材料电阻率随外加应力变化而改变的原理制作的器件。压电陶瓷、石英晶体、硅、硒锑合金等都是具有将压力(机械能)转变为电能的功能。利用力敏传感器可测量受力时材料内部的应力分布情况,也可用来测量人体血压、脑压及心音,还可用作地震探头来预报地震等。 专家们认为,在传感器敏感材料的开发中最有发展前途的是陶瓷材料。因为它稳定可靠,

Java获取Linux和Window系统CPU、内存和磁盘总使用率的情况

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Java 获取Linux 和Window 系统CPU、内存和磁盘总使用率的情况 2017/05/08 0 这是一个工具类,获取的内容: CPU 使用率:得到的是当前CPU 的使用情况,这是算出的是两次500 毫秒时间 差的CPU 使用率 内存使用率:[1 - 剩余的物理内存/(总的物理内存+虚拟内存) ] * 100 磁盘总使用率:[1 - 磁盘空余大小/磁盘总大小] * 100 下面开始贴代码:使用暂时没有发现什么问题,如果有问题,咱们可以一起讨论package com.util; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.LineNumberReader;import https://www.sodocs.net/doc/2b11283232.html,ng.management.ManagementFactory;import java.math.BigDecimal;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.StringTokenizer; import org.apache.log4j.Logger; import com.sun.management.OperatingSystemMXBean; public class ComputerMonitorUtil { private static String osName = System.getProperty(“https://www.sodocs.net/doc/2b11283232.html,”);private static final int CPUTIME = 500;private static final int PERCENT = 100;private static final int FAULTLENGTH = 10;private static final Logger logger = Logger.getLogger(ComputerMonitorUtil.class); /** * 功能:获取Linux 和Window 系统cpu 使用率* */public static double getCpuUsage() {// 如果是window 系统if (osName.toLowerCase().contains(“windows”)||osName.toLowerCase().contains(“win”)) {try {String procCmd = System.getenv(“windir”)+“//system32//wbem//wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTi

微信公众号(获取用户基本信息)

1. 用户关注以及回复消息的时候,均可以获得用户的OpenID 1372307736 其中的FromUserName就是OpenID 2. 然后使用access_token接口,请求获得全局Access Token https://https://www.sodocs.net/doc/2b11283232.html,/cgi- bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 返回结果: { "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy- rz2y441W9qgfnmNtIZWSjSQ", "expires_in": 7200 } 3. 再使用全局ACCESS_TOKEN获取OpenID的详细信息 https://https://www.sodocs.net/doc/2b11283232.html,/cgi- bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID 返回如下: { "subscribe": 1, "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc", "nickname": "刺猬宝宝", "sex": 1, "language": "zh_CN", "city": "深圳", "province": "广东", "country": "中国",

cpu使用率计算方法

cpu使用率计算方法 cpu使用率计算方法一使用cpu的处理能力基准计算实时cpu占用率 具体描述: (1) 在rtos系统启动前, 使用tick中断测试cpu的处理能力基准 cpuperformancebase; (2) 在系统进入运行后, 使用空闲任务执行与测试cpu处理能力基准完全相同的算法, 得到rtcpuperformance. (3) 周期地计算cpu占用率, 并清除rtcpuperformance的值, 一般每秒钟计算一次: realtime cpu load = 1 - (rtcpuperformance/cpuperformancebase) * 100% 优点: (1) 实现简单 (2) 所得到的cpu占用率非常准确, 误差只取决于cpuperformancebase的测试结果和整除时的余数, 通常误差小于1% (3) 不占用硬件资源 缺点: (1) cpu必须一直全速运行, 不能修改cpu主频, 也不能使cpu进入掉电保护模式

(2) 不能得到系统中每个任务对cpu占用率的贡献 (3) 必须有一个空闲任务才能计算 评价: 这个算法只适用于工控, 电信等对不需要使cpu进入掉电保护模式的领域. 在tick中断中对rtos中的任务进行采样 具体描述: (1) 系统进入运行后, 每次tick中断发生时, 采样一下当前正在执行的任务, 如果cpu处于halt态, 累加halttimes (2) 周期性地计算cpu占用率, 一般每秒钟计算一次, 并清除halttimes:(tickintfrequance表示tick中断的发生频率) realtime cpu load = halttimes / tickintfrequance 某个任务对cpu占用率的贡献 = 一个周期内该任务被采样到的次数 / tickintfrequance * 100% 优点: (1) 实现简单 (2) 支持cpu掉电模式 (3) 可以大致得到每个任务对cpu占用率的贡献 缺点: (1) 误差取决于tick的频率和os中每个任务的运行时长, 因此误差非常大 评价: 这个算法适用于对cpu占用率精度要求不高的消息电子产品. 精确计算每个任务对cpu占用率的贡献

获取信息的基本过程

获取信息的基本过程 【知识点】 一、获取信息的基本过程 (定位信息需求)——(选择信息来源)——(确定信息获取方法)——(评价信息) 二、信息获取的各个环节 1、定位信息需求 主要表现在以下几个方面:一是信息的时间范围;二是信息的地域范围;三是信息的内容范围。 2、选择信息来源

3、确定信息获取方法:比如:观察法、问卷调查法、访谈法、检索法等等 4、评价信息 表现在:所选择的信息能不能满足人们的信息需求。 【相关练习题】 一、单项选择题 1、下列信息来源属于媒体类的是:()。A A、网络 B、老师 C、同学 D、活动过程 2、下列信息来源属于文献型信息源的是()。B A、同学 B、图书 C、老师 D、网络 3、小华从书上看到大象的图片,他想知道大象有多高,爸爸就带他去动物园看大象,小华对大象有了一个印象,这是()信息源。D A.文献型 B.口头型 C.电子型 D.实物型 4、获取信息的来源决定了信息的可靠程度,下列信息来源中哪一种获得的信息最可靠?()A

A、亲自进行科学实验 B、因特网 C、朋友、同学 D、报刊杂志 5、学校要组织一次“奥运在我心中”的知识竞赛,李峥是参与者之一,为准备知识竞赛,他需要掌握与奥运会有关的知识信息。如果你是李峥,根据实际情况,你认为他获取信息的途径不太现实的是()。D A、相关网站 B、报纸、杂志 C、相关书籍 D、体委 6、小明急需查一本书中的内容,按最佳方案,他第一个应选择的方式是()。A A、到因特网上查找能否下载此书中的内容 B、找同学咨询,到指定书店购买 C、找书店营业员咨询并购买 D、到书店的电脑查询系统上查找并购买 7、下列叙述正确的是()。C A、网上的信息都是可信的,可以直接使用。 B、在网络上可以利用搜索引擎查找到我们需要的任何信息。 C、获取信息后要对其分类、整理、保存。

snmp如何获取主机CPU的频率和使用率

snmp如何获取主机CPU的频率和使用率 根据MRTG绘图原理,一般只要提供给MRTG两组数字再透过mrtg.cfg的设定后,执行/usr/bin/mrtg /etc/mrtg/mrtg.cfg.xxx 即可绘出一个图形出来,因此,我们可以利用这样的原理来绘出一皆我们所想要的监控图形出来,本章节所提的主机CPU负载量统计即是利用这样的原理所产生而来的。 1. 首先,我们必须利用script来产生两个数值出来,一般针对CPU而言必须对日常CPU 负载作监控的方式,在网路上有很多方法,一般较常见的方式便是采用sar 这个指令来作,因为sar 这个指令会产生Average(平均值)例如: ,因此,我们便直接抓欲监测的数值两个即可绘出我们所想要看到的图形出来了。 2. Script,一般而言sar 所产生的数据,我们仅仅要的只是其中的两个而已,因此必须透过Script来完成抓值的工作,至於要抓哪些值呢?以sar所产生的数据来说我们得先抓到 Average: all 0.00 0.00 0.00 100.00 这行,然后%user、%nice、%system、%idle这四个数值我们仅仅只需要两个就够了,以下所举的例子是以%user使用量平均值及%system系统使用量平均值: /usr/bin/sar -u 1 3 | grep Average | awk '{print $3}' /usr/bin/sar -u 1 3 | grep Average | awk '{print $5}' 以上两个数据,我们还必须加上”开机时间”及”主机名称”,所以我们必须写一个Script来完成这四个数据的产生。以下两个范例一个是采用一般的shell script所写出来的,另一个则是用perl与法所写的: #!/bin/bash

linux下如何获取cpu的利用率

linux下如何获取cpu的利用率 "proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。" 这里将介绍如何从/proc文件系统中获取与防火墙相关的一些性能参数,以及如何通过/proc文件系统修改内核的相关配置。 1、从/proc文件系统获取相关的性能参数 cpu使用率:/proc/stat 内存使用情况:/proc/meminfo 网络负载信息:/proc/net/dev 相应的计算方法:(摘自:什么是proc文件系统,见参考资料) (1)处理器使用率 (2)内存使用率 (3)流入流出数据包 (4)整体网络负载 这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取。如里有问题或对要提取的数据不太清楚,可以使用man proc来查看proc文件系统的联机手册。 (1)处理器使用率 这里要从/proc/stat中提取四个数据:用户模式(user)、低优先级的用户模式(nice)、内核模式(system)以及空闲的处理器时间(idle)。它们均位于/proc/stat文件的第一行。CPU的利用率使用如下公式来计算。 CPU利用率= 100 *(user + nice + system)/ (user + nice + system + idle) (2)内存使用率 这里需要从/proc/meminfo文件中提取两个数据,当前内存的使用量(cmem)以及内存总量(amem)。 内存使用百分比= 100 * (cmem / umem) (3)网络利用率 为了得到网络利用率的相关数据,需要从/proc/net/dev文件中获得两个数据:从本机输出的数据包数,流入本机的数据包数。它们都位于这个文件的第四行。 性能收集程序开始记录下这两个数据的初始值,以后每次获得这个值后均减去这个初始值即为从集群启动开始从本节点通过的数据包。 利用上述数据计算出网络的平均负载,方法如下: 平均网络负载= (输出的数据包+流入的数据包) / 2 2. 通过/proc文件系统调整相关的内核配置 允许ip转发/proc/sys/net/ipv4/ip_forward 禁止ping /proc/sys/net/ipv4/icmp_echo_ignore_all 可以在命令行下直接往上述两个“文件”里头写入"1"来实现相关配置,如果写入"0"将取

获取客户信息十大渠道

获取客户信息十大渠道 客户企业的信息可以为我们提供很多有价值的内容,从而有效的指导我们的销售工作。但市场处处竞争,信息变得隐蔽,不完整,如何获取我们所需要的信息呢? 能找到你想要的信息的十个方法: 1、搜索:动动你的手指,信息尽在指尖;网上信息让你搜——企业网站、新闻报道、行业评论等等。优点:信息量大,覆盖面广泛。缺点:准确性,可参考性不高,需要经过筛选方可放心使用。 2、权威数据库:他们是谁;国家或者国际上对行业信息或者企业信息有权威的统计和分析,是可供参考的重点,对企业销售具有重要的知道作用。优点:内容具有权威性和准确性。缺点:不易获得。 3、专业网站:很多是免费的;各行业内部或者行业之间为了促进发展和交流,往往设立有行业网站,或者该方面技术的专业网站。优点:以专业的眼光看行业,具有借鉴性,企业间可做对比。缺点:不包含深层次的信息。 4、展览:最值得去的地方;各行业或者地区定期或不定期会有展览。会有很多企业参展。优点:更丰富具体的信息。缺点:展览时间的不确定性。 5、老客户:你忽略了信息价值吗;你的老客户同你新的大客户之间会有一定的相同之处。而同行业之间会有更多的相似之处,因此,你的老客户也会很了解其他客户的信息。销售企业可根据同老客户的关系,获得行业内部的一些信息,优点:信息的针对性和具体性,可参考性高。缺点:容易带主观思想色彩。 6、竞争对手:让对手开口告诉你你的客户信息。 7、客户企业:他会为您提供相应的一些必要信息。 8、市场考察:想畅销就得做。 9、会议与论坛:注意那些头脑们的观点,这些观点对行业的发展会起到很深的影响。 10、专业机构:为你提供专业信息。 从多个渠道收集我们所需要的信息,是保证我们信息全面的有效方法,因为客户信息对我们后面的专业判断影响甚大,因此要严格认真的对待。 在获取客户信息时,要充分明确自身信息需求,积极汇聚潜在客户信息,要以敏锐的触觉感知市场,洞悉自己的竞争对手,实时跟踪动态信息的流变,要对

CPU内存利用率(VC)

VC++设计图形显示CPU内存利用率程序 核心提示:本程序分两种情况来获取CPU的利用率,NT下利用ntdll.dll中没有公开的API 1)、本程序分两种情况来获取CPU的利用率,NT下利用ntdll.dll中没有公开的API: NtQuerySystemInformation,9x下利用注册表来获取CPU的利用率 code:NT typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG); PROCNTQSI NtQuerySystemInformation; NtQuerySystemInformation = (PROCNTQSI)GetProcAddress( GetModuleHandle("ntdll"), "NtQuerySystemInformation" ); if (!NtQuerySystemInformation) { return; } // get number of processors in the system status = NtQuerySystemInformation(SystemBasicInformation, &SysBaseInfo,sizeof(SysBaseInfo),NULL); if (status != NO_ERROR) { return; } status = NtQuerySystemInformation(SystemTimeInformation, &SysTimeInfo,sizeof(SysTimeInfo),0); if (status!=NO_ERROR) { return; } // get new CPU''s idle time status = NtQuerySystemInformation(SystemPerformanceInformation, &SysPerfInfo,sizeof(SysPerfInfo),NULL); if (status != NO_ERROR) { return; } // if it''s a first call - skip it if (m_liOldIdleTime.QuadPart != 0) { // CurrentValue = NewValue - OldValue dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(m_liOldIdleTime); dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(m_liOldSystemTime);

用java获取CPU占用率

用java获取CPU占用率 废话不说,代码如下: Bytes.java 引用: Class Bytes{ public static String substring(Stringsrc,int start_idx,int end_idx){ byte[]b=src.getBytes(); Stringtgt=""; for(int i=start_idx;i<=end_idx;i++){ tgt+=(char)b; } return tgt; } } MonitorInfoBean.java 引用: Public class MonitorInfoBean{ /**线程总数.*/ private int totalThread; /**cpu使用率.*/ private double cpuRatio; public int getTotalThread(){ return totalThread; } public void setTotalThread(int totalThread){

this.totalThread=totalThread; } publicdouble getCpuRatio(){ return cpuRatio; } publicvoid setCpuRatio(double cpuRatio){ this.cpuRatio=cpuRatio; } } CPU.java 引用: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.StringTokenizer; Public class CPU{ private static finalint CPUTIME=30; private static finalint PERCENT=100; private static finalint FAULTLENGTH=10; private static String linuxVersion=null; public double getCpuRatio(){ //操作系统 StringosName=System.getProperty("https://www.sodocs.net/doc/2b11283232.html,"); double cpuRatio=0; if(osName.toLowerCase().startsWith("windows")){ cpuRatio=this.getCpuRatioForWindows(); }else{ cpuRatio=this.getCpuRateForLinux();

相关主题