Sigar获取CPU的基本信息、使用率

本文介绍如何使用Sigar库获取系统CPU基本信息及使用情况,包括CPU型号、频率等,并展示了如何获取进程占用CPU的百分比。
我们经常有这样的需求,想得到系统CPU的基本信息、使用率等等。使用Sigar可以很好的完成这一需求。

通过Sigar我们可以获得CPU的基本信息有:vendor、model、mhz、cacheSize;CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。

下面通过例子说明用法:

    package lab.sigar;  
      
    import org.hyperic.sigar.Cpu;  
    import org.hyperic.sigar.CpuInfo;  
    import org.hyperic.sigar.CpuPerc;  
    import org.hyperic.sigar.Sigar;  
    import org.hyperic.sigar.SigarException;  
      
    import com.thoughtworks.xstream.XStream;  
      
    /** 
     * Cpu数据 
     *  
     * 使用Sigar获得CPU的基本信息、使用百分比、使用时间 
     *  
     */  
    public class CpuData {  
        private CpuInfo info;  
        private CpuPerc perc;  
        private Cpu timer;  
      
        public CpuData() {  
        }  
      
        public void populate(Sigar sigar) throws SigarException {  
            info = sigar.getCpuInfoList()[0];  
            perc = sigar.getCpuPerc();  
            timer = sigar.getCpu();  
        }  
      
        public static CpuData gather(Sigar sigar) throws SigarException {  
            CpuData data = new CpuData();  
            data.populate(sigar);  
            return data;  
        }  
      
        public static void main(String[] args) throws Exception {  
            Sigar sigar = new Sigar();  
            CpuData cpuData = CpuData.gather(sigar);  
            XStream xstream = new XStream();  
            xstream.alias("CpuData", CpuData.class);  
            System.out.println(xstream.toXML(cpuData));  
        }  
      
    }  

输出:

    <CpuData>  
      <info>  
        <vendor>Intel</vendor>  
        <model>Pentium M</model>  
        <mhz>1862</mhz>  
        <cacheSize>-1</cacheSize>  
      </info>  
      <perc>  
        <user>0.12574850299401197</user>  
        <sys>0.031936127744510975</sys>  
        <nice>0.0</nice>  
        <idle>0.8423153692614771</idle>  
        <wait>0.0</wait>  
      </perc>  
      <timer>  
        <user>932250</user>  
        <sys>520375</sys>  
        <nice>0</nice>  
        <idle>6366031</idle>  
        <wait>0</wait>  
        <total>7818656</total>  
      </timer>  
    </CpuData>  

下载地址: Sigar相关jar下载地址     最新下载地址(包含类库)

在 SugarCRM 中,行删除操作通常涉及对数据库中特定记录的删除,可以通过模块对象(如 `SugarBean`)来完成。SugarCRM 提供了标准的方法用于删除记录,确保删除操作的安全性和完整性。以下是一些关键点和方法: ### 删除记录的常用方法 1. **使用 `SugarBean` 类进行删除** `SugarBean` 是 SugarCRM 中所有模块类的基类,它提供了删除记录的核心方法。通过调用 `delete()` 方法,可以删除特定的记录。 ```php require_once('include/SugarObjects/SugarBean.php'); $bean = BeanFactory::getBean('ModuleName', $recordId); if ($bean) { $bean->mark_deleted($recordId); } ``` 此方法会将记录标记为已删除(软删除),而不是从数据库中物理删除。如果需要彻底删除记录,可以使用 `delete()` 方法,但需谨慎操作[^2]。 2. **直接操作数据库进行删除** 如果需要直接对数据库进行操作,可以使用 `DBManager` 类来执行 SQL 查询。 ```php global $db; $recordId = 'some_record_id'; $query = "DELETE FROM table_name WHERE id = '$recordId'"; $db->query($query); ``` 此方法会直接从数据库中删除记录,不会触发 SugarCRM 的任何删除逻辑(如删除钩子、审计记录等),因此建议仅在特殊情况下使用。 3. **删除钩子(Delete Hooks)** SugarCRM 支持在删除操作前后触发自定义逻辑,称为“钩子”。可以在模块的 `logic_hooks.php` 文件中定义 `before_delete` 和 `after_delete` 钩子,用于执行额外的清理任务或日志记录。 示例: ```php $hook_array['before_delete'][] = Array( 1, 'custom_before_delete', 'custom/modules/ModuleName/CustomClass.php', 'CustomClass', 'custom_before_delete_method' ); ``` 4. **软删除与硬删除的区别** - **软删除(Soft Delete)**:SugarCRM 默认使用软删除机制,即将 `deleted` 字段设置为 `1`,表示该记录已被删除,但仍保留在数据库中。这种方式有助于数据恢复和审计。 - **硬删除(Hard Delete)**:直接从数据库中移除记录,通常用于清理不再需要的数据。硬删除操作不可逆。 ### 注意事项 - 在执行删除操作前,应确保已备份相关数据,以防止误删。 - 删除操作可能影响与其他模块的关联关系,应确保相关逻辑已处理。 - 使用 `mark_deleted()` 方法时,SugarCRM 会自动处理关联记录的删除标志。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值