xml地图|网站地图|网站标签 [设为首页] [加入收藏]
获取本机CPU序列号,爬虫学习笔记
分类:编程

前面我们学习过回归问题,比如对于房价的预测,因为其预测值是个连续的值,因此属于回归问题。

图片 1

      在完成了DNS解析模块之后,我意识到了DNS缓存机制也很有必要。在Redis,Memcache,和.Net自带的Cache之间,考虑到部署问题,最终选择了后者,之前在学习Web及开发的过程中用过System.Web.Caching.Cache.aspx)这个类库,但是这次的爬虫程序我打算部署为桌面软件,所以选用了System.Runtime.Caching.MemoryCache(后期如有必要也会加入System.Web.Caching.Cache来适配Web端程序)。

      MemoryCache的使用网上介绍的不多,不过这个是.NET4.0新引入的缓存对象,估计主要是替换原来企业库的缓存模块,使得.NET的缓存可以无处不在,而不用基于特定的Windows版本上使用。

      出于方便考虑,我们将不再实例化新的MemoryCache对象,只对MemoryCache的默认示例Memory.Default进行增删查操作。

基础篇

增加:

图片 2

增加缓存需要提供两个参数,CacheItem类表示缓存中的单个缓存项,

构造函数:
CacheItem(String, Object, String)            用缓存项的指定键、值和区域初始化新的 CacheItem 实例。

三个参数分别为:键、值和区域。

CacheItemPolicy类则表示缓存项的过期信息,只含有默认的构造函数。

增加一条缓存:

var item = new CacheItem("习大大", "两学一做");
var policy = new CacheItemPolicy();
policy.SlidingExpiration = new TimeSpan(500);
//插入一条key为"习大大",value为"两学一做",500毫秒后自动销毁的缓存
MemoryCache.Default.Add(item, policy);
//重新设置policy的过期时间为当前时间+十分钟
policy.AbsoluteExpiration = DateTimeOffset.Now + TimeSpan.FromMinutes(10);
//注意,如果要使用Sliding时间,则Absolute必须为DateTimeOffset.MaxValue,反之,则Sliding必须为TimeSpan.Zero
policy.SlidingExpiration = TimeSpan.Zero;
//重新插入,覆盖前一条数据
MemoryCache.Default.Add(item, policy);

注意,如果要使用Sliding时间,则Absolute必须为DateTimeOffset.MaxValue,反之,则Sliding必须为TimeSpan.Zero 

查询:

缓存对象类似于字典集,查询可以直接采用memoryCache[key]来进行,例如我们查询一下前面插入的那条数据:

var idea = MemoryCache.Default["习大大"];

移除:

图片 3

参数

key:要移除的缓存项的唯一标识符。

regionName:缓存中的一个添加了缓存项的命名区域。不要为该参数传递值。默认情况下,此参数为null,因为 MemoryCache 类未实现区域。

返回值
Type: System.Object  如果在缓存中找到该项,则为已移除的缓存项;否则为 null。

删除前面加入的那一项:

MemoryCache.Default.Remove("习大大");

进阶篇

明白了基本的用法之后,我们就可以对它做进一步的封装,使之使用起来更为便捷:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;


namespace Crawler.Common { ///

/// 基于MemoryCache的缓存辅助类 /// public static class MemoryCacheHelper { private static readonly object _locker = new object();
public static bool Contains(string key) { return MemoryCache.Default.Contains(key); }

/// /// 获取Catch元素 /// /// 所获取的元素的类型 /// 元素的键 /// 特定的元素值 public static T Get(string key) { if (string.IsNullOrWhiteSpace(key)) throw new ArgumentException("不合法的key!"); if (!MemoryCache.Default.Contains(key)) throw new ArgumentException("获取失败,不存在该key!"); if (!(MemoryCache.Default[key] is T)) throw new ArgumentException("未找到所需类型数据!"); return (T)MemoryCache.Default[key]; }
/// /// 添加Catch元素 /// /// 元素的键 /// 元素的值 /// 元素过期时间(时间间隔) /// 元素过期时间(绝对时间) /// public static bool Add(string key, object value, TimeSpan? slidingExpiration = null, DateTime? absoluteExpiration = null) { var item = new CacheItem(key, value); var policy = CreatePolicy(slidingExpiration, absoluteExpiration); lock (_locker) return MemoryCache.Default.Add(item, policy); }
/// /// 移出Cache元素 /// /// 待移出元素的类型 /// 待移除元素的键 /// 已经移出的元素 public static T Remove(string key) { if (string.IsNullOrWhiteSpace(key)) throw new ArgumentException("不合法的key!"); if (!MemoryCache.Default.Contains(key)) throw new ArgumentException("获取失败,不存在该key!"); var value = MemoryCache.Default.Get(key); if (!(value is T)) throw new ArgumentException("未找到所需类型数据!"); return (T)MemoryCache.Default.Remove(key); }
/// /// 移出多条缓存数据,默认为所有缓存 /// /// 待移出的缓存类型 /// /// public static List RemoveAll(IEnumerable keyList = null) { if (keyList != null) return (from key in keyList where MemoryCache.Default.Contains(key) where MemoryCache.Default.Get(key) is T select (T)MemoryCache.Default.Remove(key)).ToList(); while (MemoryCache.Default.GetCount() > 0) MemoryCache.Default.Remove(MemoryCache.Default.ElementAt(0).Key); return new List(); }
/// /// 设置过期信息 /// /// /// /// private static CacheItemPolicy CreatePolicy(TimeSpan? slidingExpiration, DateTime? absoluteExpiration) { var policy = new CacheItemPolicy();
if (absoluteExpiration.HasValue) { policy.AbsoluteExpiration = absoluteExpiration.Value; } else if (slidingExpiration.HasValue) { policy.SlidingExpiration = slidingExpiration.Value; }
policy.Priority = CacheItemPriority.Default;
return policy; } } }

但还有一类问题属于分类的问题,比如我们根据一张图片来辨别它是一只猫还是一只狗。某篇文章的内容是属于体育新闻还是经济新闻等,这个结果是有一个全集的离散值,这类问题就是分类问题。

首先引入服务 然后 调用

我有时会把回归问题看成是分类问题,比如对于房价值的预测,在实际的应用中,一般不需要把房价精确到元为单位的,比如对于均价,以上海房价为例,可以分为:5000-10万这样的一个范围段,并且以1000为单位就可以了,尽管这样分出了很多类,但至少也可以看成是分类问题了。

本文转载自

因此分类算法应用范围非常广泛,我们来看下在tensorflow中如何解决这个分类问题的。
本文用经典的手写数字识别作为案例进行讲解。

 

准备数据

# 准备数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('D:/todel/python/MNIST_data/', one_hot=True)

执行上述代码后,会从线上下载测试的手写数字的数据。
不过在我的机器上运行时好久都没有下载下相应的数据,最后我就直接到 网站上下载其中的训练数据和测试数据文件到指定的目录下,然后再运行这个程序就能把数据给解压开来。
图片 4

这里总共大概有6万个训练数据,1万个测试数据。

手写数字是一堆28X28像素的黑白图片,例如:
图片 5

在本次案例中,我们把这个数组展开成一个向量,长度是 28x28 = 784,也就是一个图片就是一行784列的数据,每列中的值是一个像素的灰度值,0-255。
为何要把图像的二维数组转换成一维数组?
把图像的二维数组转换成一维数组一定是把图像中的某些信息给丢弃掉了,但目前本文的案例中也可以用一维数组来进行分类,这个就是深度神经网络的强大之处,它会尽力寻找一堆数据中隐藏的规律。
以后我们会用卷积神经网络来处理这个图像的分类,那时的精确度就能再次进行提高。
但是即便把此图像数据碾平成一维数据的方式也能有一个较好的分辨率。

另外这里有一个关于分类问题的重要概念就是one hot数据,虽然我们对每个图片要打上的标签是0-9数字,但在分类中用一个总共有10个占位分类的数字来表示,如果属于哪个类就在那个位置设置为1,其它位置为0.
例如:
标签0将表示成([1,0,0,0,0,0,0,0,0,0,0])
标签2将表示成([0,0,1,0,0,0,0,0,0,0,0])
这样结果集其实是一个10列的数据,每列的值为0或1。

  public class Computer
    {
        public static string CpuID; //1.cpu序列号
        public static string MacAddress; //2.mac序列号
        public static string DiskID; //3.硬盘id
        public static string IpAddress; //4.ip地址
        public static string LoginUserName; //5.登录用户名
        public static string ComputerName; //6.计算机名
        public static string SystemType; //7.系统类型
        public static string TotalPhysicalMemory; //8.内存量 单位:M

         static   Computer()
        {
            CpuID = GetCpuID();
            MacAddress = GetMacAddress();
            DiskID = GetDiskID();
            IpAddress = GetIPAddress();
            LoginUserName = GetUserName();
            SystemType = GetSystemType();
            TotalPhysicalMemory = GetTotalPhysicalMemory();
            ComputerName = GetComputerName();
        }
        //1.获取CPU序列号代码 

       static  string GetCpuID()
        {
            try
            {
                string cpuInfo = "";//cpu序列号 
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                }
                moc = null;
                mc = null;
                return cpuInfo;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        //2.获取网卡硬件地址 

       static string GetMacAddress()
        {
            try
            {
                string mac = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        mac = mo["MacAddress"].ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return mac;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        //3.获取硬盘ID 
       static string GetDiskID()
        {
            try
            {
                String HDid = "";
                ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    HDid = (string)mo.Properties["Model"].Value;
                }
                moc = null;
                mc = null;
                return HDid;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        //4.获取IP地址 

       static string GetIPAddress()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        //st=mo["IpAddress"].ToString(); 
                        System.Array ar;
                        ar = (System.Array)(mo.Properties["IpAddress"].Value);
                        st = ar.GetValue(0).ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        /// 5.操作系统的登录用户名 
       static string GetUserName()
        {
            try
            {
                string un = "";

                un = Environment.UserName;
                return un;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }



        //6.获取计算机名
       static string GetComputerName()
        {
            try
            {
                return System.Environment.MachineName;

            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }



        ///7 PC类型 
       static string GetSystemType()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {

                    st = mo["SystemType"].ToString();

                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }



        ///8.物理内存        
       static string GetTotalPhysicalMemory()
        {
            try
            {

                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {

                    st = mo["TotalPhysicalMemory"].ToString();

                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }


    }

本文由澳门新葡亰手机版发布于编程,转载请注明出处:获取本机CPU序列号,爬虫学习笔记

上一篇:窗体关闭事件,Net的DNS解析模块 下一篇:抽象类和类成员,面向对象的设计的三大特征
猜你喜欢
热门排行
精彩图文