守超's profilewaretPhotosBlogNetwork Tools Help

Blog


    October 04

    别去打扰人家了

    都已经分手了,能不打扰还是不要打扰了吧,况且处于低谷中。
    July 24

    撅屁股看天,有眼无珠

    撅屁股看天,有眼无珠
    太三俗了!!!
    May 23

    怎么成了六点了?




    方法论
    认识论
    工具
    May 18

    统一祖国,自由民主!

    八字真言。
    去tmd什么政治,去tmd什么主义~~~
    April 02

    Fixedsys等系统字体

        熟悉VC6.0的程序员对Fixedsys字体肯定不陌生,但是这个字体在word中就是找不到,
    只有在记事本中才能使用,大家不禁要问它们到底是何方神圣。其实Fixedsys等系统字体
    也是放在%windir%\Fonts,只不过是特殊的隐藏文件,在资源管理器中是看不到的,即使
    是设置显示隐藏文件也不行。要想看到这一类字体有两个方法:
    • 使用winrar浏览"%windir%\Fonts"文件夹
    • 在命令行下使用"dir /a"查看
        至于如何在word中使用该字体还没有好的解决方法,有待于进一步探索~~

    November 09

    冬天来了,春天还会远么?

        莫名的有些感伤,日子一天天过,没有什么波澜,悠哉悠哉~~~学习永远是最要紧的,头上不停的悬着好多任务,可又不想去干,游戏是最好的借口,沉迷如游戏可以不去想其他的任何事,一心一意的玩儿好游戏,沉浸在其中就好。有一段时间做梦都是dota里面的人物,似乎我就置身的广袤的地图中,享受着追杀别人的乐趣,也有被别人追杀的紧张~~今天又玩了一天,呵呵,对不起自己啊。
    November 05

    CString转到char*

        用vs2005或vs2008的时候,Unicode的问题经常会出现很多问题。同学的作业中遇到一个问题要将CString转到char*,同样的代码在别人的机器上都可以,但是在他的机器上就是不行,无奈从网上找到一个新的方法。
    CString str("test");
    int len=str.getLength();
    char *cstr=new char[len+1];
    cstr[len]=0;
    WideCharToMultiByte(CP_OEMCP, 0, str, -1, cstr, len, NULL, NULL); 
     
    这种方法在我的机器上是可以用的。
    CString theString( (_T("Char test "));
    LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;
     
    November 04

    IP包的协议字段

    switch(Protocol){
     case 0:  return "HOPOPT";  //IPv6逐跳选项
     case 1:  return "ICMP";   //控制消息
     case 2:  return "IGMP";   //组管理
     case 3:  return "GGP";   //网关对网关
     case 4:  return "IP in IP";  //IP中的IP(封装)
     case 5:  return "ST";   //流
     case 6:  return "TCP";   //TCP传输控制
     case 7:  return "CBT";   //CBT
     case 8:  return "EGP";   //外部网关协议
     case 9:  return "IGB";   //任何专用内部网关(Cisco将其用于IGRP)
     case 10: return "BBN-RCC-MON"; //BBN RCC监视
     case 11: return "NVP-II";  //网络语音协议
     case 12: return "PUP";   //PUP
     case 13: return "ARGUS";   //ARGUS
     case 14: return "EMCON";   //EMCON
     case 15: return "XNET";   //跨网调试器
     case 16: return "CHAOS";   //Chaos
     case 17: return "UDP";   //用户数据报
     case 18: return "MUX";   //多路复用
     case 19: return "DCN-MEAS";  //DCN测量子系统
     case 20: return "HMP";   //主机监视
     case 21: return "PRM";   //数据包无线测量
     case 22: return "Xns_IDP";  //XEROX NS IDP
     case 23: return "TRUNK-1";  //第1主干
     case 24: return "TRUNK-2";  //第2主干
     case 25: return "LEAF-1";  //第1叶
     case 26: return "LEAF-2";  //第2叶
     case 27: return "RDP";   //可靠数据协议
     case 28: return "IRTP";   //Internet可靠事务
     case 29: return "ISO-TP4";  //ISO传输协议第4类
     case 30: return "NETBLT";  //批量数据传输协议
     case 31: return "MFE-NSP";  //MFE网络服务协议
     case 32: return "MERIT-INP";  //MERIT节点间协议
     case 33: return "SEP";   //顺序交换协议
     case 34: return "3PC";   //第三方连接协议
     case 35: return "IDPR";   //IDPR域间策略路由协议
     case 36: return "XTP";   //XTP
     case 37: return "DDP";   //数据报传送协议
     case 38: return "IDPR-CMTP";  //IDPR控制消息传输协议
     case 39: return "TP++";   //TP++传输协议
     case 40: return "IL";   //IL传输协议
     case 41: return "IPv6";   //IPv6
     case 42: return "SDRP";   //源要求路由协议
     case 43: return "IPv6-Route"; //IPv6的路由标头
     case 44: return "IPv6-Frag";  //IPv6的片段标头
     case 45: return "IDRP";   //域间路由协议
     case 46: return "RSVP";   //保留协议
     case 47: return "GRE";   // 通用路由封装
     case 48: return "MHRP";   // 移动主机路由协议
     case 49: return "BNA";   // BNA
     case 50: return "ESP";   // IPv6 的封装安全负载
     case 51: return "AH";   // IPv6 的身份验证标头
     case 52: return "I-NLSP";  // 集成网络层安全性 TUBA
     case 53: return "SWIPE";   // 采用加密的 IP
     case 54: return "NARP";   // NBMA 地址解析协议
     case 55: return "MOBILE IP";  // 移动性
     case 56: return "TLSP";   // 传输层安全协议使用 Kryptonet 密钥管理
     case 57: return "SKIP";   // SKIP
     case 58: return "IPv6-ICMP";  // 用于 IPv6 的 ICMP
     case 59: return "IPv6-NoNxt"; // 用于 IPv6 的无下一个标头
     case 60: return "IPv6-Opts";  // IPv6 的目标选项
     case 61: return "Anyone Betwen Hosts"; // 任意主机内部协议
     case 62: return "CFTP";   // CFTP
     case 63: return "Anyone of LocalHost"; // 任意本地网络
     case 64: return "SAT-EXPAK";  // SATNET 与后台 EXPAK
     case 65: return "KRYPTOLAN";  // Kryptolan
     case 66: return "RVD MIT";  // 远程虚拟磁盘协议
     case 67: return "IPPC";   // Internet Pluribus 数据包核心
     case 68: return "Any Distributed File System"; //任意分布式文件系统
     case 69: return "SAT-MON";  // SATNET 监视
     case 70: return "VISA";   // VISA 协议
     case 71: return "IPCV";   // Internet 数据包核心工具
     case 72: return "CPNX";   // 计算机协议网络管理
     case 73: return "CPHB";   // 计算机协议检测信号
     case 74: return "WSN";   // 无线电脑网络
     case 75: return "PVP";   // 数据包视频协议
     case 76: return "BR-SAT-MON"; // 后台 SATNET 监视
     case 77: return "SUN-ND";  // SUN ND PROTOCOL-Temporary
     case 78: return "WB-MON";  // WIDEBAND 监视
     case 79: return "WB-EXPAK";  // WIDEBAND EXPAK
     case 80: return "ISO-IP";  // ISO Internet 协议
     case 81: return "VMTP";   // VMTP
     case 82: return "SECURE-VMTP"; // SECURE-VMTP
     case 83: return "VINES VINES";
     case 84: return "TTP";   // TTP
     case 85: return "NSFNET-IGP"; // NSFNET-IGP
     case 86: return "DGP";   // 异类网关协议
     case 87: return "TCF";   // TCF
     case 88: return "EIGRP";   // EIGRP
     case 89: return "OSPFIGP";  // OSPFIGP
     case 90: return "Sprite-RPC"; // Sprite RPC 协议
     case 91: return "LARP";   // 轨迹地址解析协议
     case 92: return "MTP";   // 多播传输协议
     case 93: return "AX.25";   // AX.25 帧
     case 94: return "IPIP";   // IP 中的 IP 封装协议
     case 95: return "MICP";   // 移动互联控制协议
     case 96: return "SCC-SP";  // 信号通讯安全协议
     case 97: return "ETHERIP";  // IP 中的以太网封装
     case 98: return "ENCAP";   // 封装标头
     case 99: return "Any Encrypt Plan"; //任意专用加密方案
     case 100: return "GMTP";   // GMTP
     case 101: return "IFMP";   // Ipsilon 流量管理协议
     case 102: return "PNNI";   // IP 上的 PNNI
     case 103: return "PIM";   // 独立于协议的多播
     case 104: return "ARIS";   // ARIS
     case 105: return "SCPS";   // SCPS
     case 106: return "QNX";   // QNX
     case 107: return "A/N";   // 活动网络
     case 108: return "IPComp";  // IP 负载压缩协议
     case 109: return "SNP";   // Sitara 网络协议
     case 110: return "Compaq-Peer"; // Compaq 对等协议
     case 111: return "IPX-in-IP";  // IP 中的 IPX
     case 112: return "VRRP";   // 虚拟路由器冗余协议
     case 113: return "PGM";   // PGM 可靠传输协议
     case 114: return "Zero Hop Protocal"; //任意 0 跳协议
     case 115: return "L2TP";   // 第二层隧道协议
     case 116: return "DDX";   // D-II 数据交换 (DDX)
     case 117: return "IATP";   // 交互式代理传输协议
     case 118: return "STP";   // 计划传输协议
     case 119: return "SRP";   // SpectraLink 无线协议
     case 120: return "UTI";   // UTI
     case 121: return "SMP";   // 简单邮件协议
     case 122: return "SM";   // SM
     case 123: return "PTP";   // 性能透明协议
     case 124: return "ISIS";   // over IPv4
     case 125: return "FIRE";   //
     case 126: return "CRTP";   // Combat 无线传输协议
     case 127: return "CRUDP";   // Combat 无线用户数据报
     case 128: return "SSCOPMCE";  //
     case 129: return "IPLT";   //
     case 130: return "SPS";   // 安全数据包防护
     case 131: return "PIPE";   // IP 中的专用 IP 封装
     case 132: return "SCTP";   // 流控制传输协议
     case 133: return "FC";   // 光纤通道
     case 255: return "保留";   //
     default: return "未分配";
     }
    November 03

    有感于nkbbs

        在板上回了几个个贴,不到两分钟的时间就被删的一干二净。不知道这是个什么样的时代,最有朝气最有批判精神的学生只能在私下里发表一下自己对周围环境的意见,最终的结果只是一声叹息,问题依旧还在那里。
        遥想当年五四运动,是何风卷残云,而在和谐的社会主义下一切都被和谐了……

    STL std::map的用法小结

        网络作业中用到map这个东西,不会的东西,总结一下吧
    首先是从别的网站上直接拷的:
     
    目录:
    1. map简介
    2. map的功能
    3. 使用map
    4. 在map中插入元素
    5. 查找并获取map中的元素
    6. 从map中删除元素

    1 map简介

        map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

    2 map的功能   

    1. 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
    2. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
    3. 快速插入Key - Value 记录。
    4. 快速删除记录
    5. 根据Key 修改value记录。
    6. 遍历所有记录。

    3 使用map

        使用map得包含map类所在的头文件#include <map> //注意,STL头文件没有扩展名.h。
        map对象是模板类,需要关键字和存储对象两个模板参数:std:map<int, string> personnel;这样就定义了一个用int作为索引,并拥有相关联的指向string的指针. 为了使用方便,可以对模板类进行一下类型定义
        typedef map<int, CString> UDT_MAP_INT_CSTRING;
        UDT_MAP_INT_CSTRING enumMap;

    4 在map中插入元素

        改变map中的条目非常简单,因为map类已经对[]操作符进行了重载
          enumMap[1] = "One";
          enumMap[2] = "Two";
          .....
        这样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个空字符串,插入完成后,将字符串赋为"Two"; 该方法会将每个值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。我们可以用以下方法来避免开销:
    enumMap.insert(map<int, CString> :: value_type(2, "Two"))

    5 查找并获取map中的元素

        下标操作符给出了获得一个值的最简单方法:CString tmp = enumMap[2];但是,只有当map中有这个键的实例时才对,否则会自动插入一个实例,值为初始化值。我们可以使用Find()和Count()方法来发现一个键是否存在。查找map中是否包含某个关键字条目用find()方法,传入的参数是要查找的key,在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator.
        int nFindKey = 2;            //要查找的Key
        //定义一个条目变量(实际是指针)
        UDT_MAP_INT_CSTRING::iterator it= enumMap.find(nFindKey);
        if(it == enumMap.end()) {
            //没找到
        }
        else {
           //找到
        }
        通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据。

    6 从map中删除元素

        移除某个map中某个条目用erase()。该成员方法的定义如下
          iterator erase(iterator it);//通过一个条目对象删除
          iterator erase(iterator first, iterator last);//删除一个范围
          size_type erase(const Key& key);//通过关键字删除
        clear()就相当于 enumMap.erase(enumMap.begin(), enumMap.end());

     

    下面是自己用到的关于map的功能

    typedef struct record{
        int number;    //数据包的数量
    }RECORD;
    typedef map<CString, RECORD>MY_MAP;
    MY_MAP myHash;

    MY_MAP::iterator myIt;
    myItr = myHash.begin(); //将指针放在map的头部
    //以下作为map表的key值
    CString sTemp = _T("Test");
    RECORD value;
    value.number = 1;
    myItr = myHash.find(sTemp); //在map表中查找相应的sTemp值
    if(myItr == myHash.end()){
        myHash[sTemp] = value;
    }
    else{
       myHash[sTemp].number++;
    }

    for(MY_MAP::iterator it = myHash.begin(); it != myHash.end();){
       it = myHash.erase(it);  //逐个删除map中的元素
    }

    for(MY_MAP::iterator it = myHash.begin(); it != myHash.end(); ++it){
        it->second.number...  //使用map内部的元素
    }

    November 02

    关于二维数组动态分配问题

    1.
    A (*ga)[n] = new A[m][n];
    ...
    delete []ga;
    缺点:n必须是已知
    优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)

    2. A** ga = new A*[m];
    for(int i = 0; i < m; i++)
    ga[i] = new A[n];
    ...
    for(int i = 0; i < m; i++)
    delete []ga[i];
    delete []ga;
    缺点:非连续储存,程序烦琐,ga为A**类型
    优点:调用直观,n可以不是已知

    3. A* ga = new A[m*n];
    ...
    delete []ga;
    缺点:调用不够直观
    优点:连续储存,n可以不是已知

    4. vector > ga;
    ga.resize(m); //这三行可用可不用
    for(int i = 1; i < n; i++) //
    ga[i].resize(n); //
    ...

    缺点:非连续储存,调试不够方便,编译速度下降,程序膨胀(实际速度差别不大)
    优点:调用直观,自动析构与释放内存,可以调用stl相关函数,动态增长

    5. vector ga;
    ga.resize(m*n);
    方法3,4的结合


    6. 2的改进版
    A** ga = new A*[m];
    ga[0] = new A[m*n];
    for(int i = 1; i < m; i++)
    ga[i] = ga[i-1]+n;
    优点:连续存储,n可以不是已知,析构方便,猜想只需delete [] ga;
    October 31

    又是一段时间

        自从感冒好了又是一段时间了,每天过的挺充实,感觉挺好,尽量不去想扰乱身心的事,
    每天都希望自己过的能自由自在些,虽然有时候只是奢望。
        比赛输了,挺惨的,辜负了那些大一大二小孩儿们的期望了。哎,本人打比赛就是不行,
    那怎么办?我也想打好啊,已经最大努力了,水平就是这样,就只有花架子,真拉出去溜溜
    的时候就歇菜了,呵呵。我就是喜欢练球,喜欢那种拉上拉下的感觉,不愿意和别人争来争
    去的。
     
        准备回宿舍,回去睡觉喽。现在每天缺的就是觉~~~
    October 21

    服了

    作业中遇到中文显示问题

    试了好长时间,查找工具各种选项,求助别人……

    想到遇到困难的时候不能钻牛角尖,解决不了的话就试着干其他更重要的事

    想给自己个提醒,想到了侧边栏,竟然有在线安装的地方

    找到一个可以在线听广播的小工具,关闭音乐

    删除广播工具发现还有声音,查看进程是media player

    打开player的时候不小心打开Media Center

    开始玩游戏,打开音乐

    玩了好长时间发现不爽

    赶紧重新打开作业

    重试以前的方法,肯定不行

    试着用baidu搜索,发现了原来dialog中的语言分中文和英文

    找到改变语言的地方,改成中文,重新写上标题,搞定!

    果然回到了哪句话“遇到困难不能钻牛角尖,试着干别的事”,不过这里的事就不是什么重要的了

    感冒了

    烧到到39度。

    本来只是觉得头和腿疼,那天晚上睡的也是具难受,想来身体强壮,抗抗应该就会好吧,结果越来越疼。去了医院量了体温,同学也说,怪不得浑身疼啊,都烧到39了~~~哎,自己倒也没觉得自己太热啊,虽然晚上出了好多好多汗。后来又打了一阵,还是打pp。因为没吃饭,胃抽搐了一阵,死的心都快有了。后来回到宿舍吃了药,睡觉。那一觉睡的啊,够洗两回热水澡了。

    第二天一早醒来,身上不疼了,头也没事了,心想真好,吃了药,接着上课去了。比较晚,让同学带了一个小饼鸡蛋,上完第一节课才拿到,再吃的时候已经吃不下去了,胃里那个难受啊~~中午仅仅是从二食堂经过了一下,就引来剧烈的反应。又是一天没吃饭,只是吃了些葡萄,半个面包。可怜的我还去和实验室人打羽毛球去了,作啊~~~晚上听了tf的建议,才发现,原来是红霉素有不良反应,会引起胃了的问题,还有纳差~~什么狗屁纳差啊,不就是食欲不振啊,搞的我太不振了。我太佩服医生了,成功的将我的感冒转移到肠胃~~

    可怜的娃儿啊,什么时候才能好啊~~~

    October 20

    发现大多时候我太啰嗦+墨迹了

        这样下去不好啊,很不好。
    一定要把自己想表达的内容想周全了再说出去,谨记!!!!
    October 17

    vista+vs2008下winpcap使用

         前几天刚换的系统vista,之前就听说兼容性不是太好。后来想用vc6.0都装不上,就说兼容性不好,不过这是后话,后面再说。当时也没怎么在意,想来现在vista那么流行应该不会出什么问题吧,果然很快就遇到问题了。
         网络课上留的作业,要用到winpcap类库。心想现在vs2008都流行了,咱就用它吧;再者winpcap在本科的时候也用过,不会有什么问题。按部就办的添加include文件夹,添加预处理定义,添加lib文件,新建了一个基于对话框的MFC程序,运行之,赫然出现:
    1>c:\program files\microsoft sdks\windows\v6.0a\include\netioapi.h(155) : error C2146: syntax error : missing ';' before identifier 'PhysicalMediumType'
    1>c:\program files\microsoft sdks\windows\v6.0a\include\netioapi.h(155) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>c:\program files\microsoft sdks\windows\v6.0a\include\netioapi.h(155) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
         新安装的vs2008,把include文件除去又试着新建一个项目,不做任何改动,没有问题,说明sv2008安装是成功的;再看netioapi.h,连在哪里inlude上的都不知道,还是系统自带的文件,总不能去改它吧~~郁闷之。google之,也没找出个所以然来。因此郁闷的想装vc6.0去用,结果还是兼容性不好,继续郁闷~~
         这是看到一个不是很熟悉的东西#pragma,遂google之,学了一些它的用法,在后面多亏这东西帮助了我,#pragma message("test") 很有用的编译消息输出啊,当然还有更好的输出命令,不过忘了什么东西了,可怜可怜~~
         用刚学的东西进行测试,我的目的就是想找出来netioapi.h到底是在哪里被调用的。从stdafx.h中每个include之间插入,#pragma message,发现是在#include <afxwin.h>的时候调用了netioapi.h文件,继续在afxwin.h文件里面找。后来仔细看了一下netioapi.h的文件名,net io api,这样的话应该是和网络处理有关的。afxwin.h里面好多include,就找了个看着像网络方面的开始测试,又发现是在#include <iphlpapi.h>时调用了netioapi.h,只是为了测试目的,我把#include <iphlpapi.h>这句注释了,编译执行,成功,哈,果然是这里。可是执行是可以执行了,毕竟是改动了系统自带的文件,不具有普遍性啊,以后再用到相关的内容还得改。这时候注意到了前面有#if (_WIN32_WINNT >= 0x600),因为之前查过关于vs2008自动生成的文件targetver.h的功能,该文件是定义了最低系统版本和开发平台版本之类的东西,里面有定义_WIN32_WINNT的东西,一下子反应过来,原来还是兼容性作怪,查了一下_WIN32_WINNT的MSND,将定义值改为xp平台的0x0501,编译执行,原来的问题没有了,但是出现了另一个问题,再仔细查了一下,将_WIN32_WINNT前面的WINVER定义也改为0x0501,编译执行,正常,至此解决问题。
         总结:还是兼容性在作怪,winpacap不适合用在vista环境下。猜测targetver.h就是为了解决程序员编程中的兼容性问题的,之前的版本中从来没见过这个文件,微软的这种系统性做的还是很不错的,虽然出现的问题更多。以后在vista下编程,要考虑的首先就是一个兼容性问题。
        一个教训,不能看见什么流行了就盲目的追捧,不好啊;不过阿q精神告诉我们,在学习上还是多遇到些问题比较好,该追捧的还是追捧,用过才知道它的不好嘛。
    Done!
     
    还没有Done!!
        经loveni同学指点,原来不仅仅是版本的问题。和以前的系统不一样的是,现在的vs2008把它的头文件和库什么单独放到一个文件夹\Program Files\Microsoft SDKs\下,但是在vs2008里面并没有包含这个文件夹。又因为WinPcap用了一些这里面的系统调用,所以当然会出现问题,说有什么东西没有定义。
        解决方法就是把那个文件夹添加到vs2008->Tools->Options->Projects and Solutions->VC++ Directories->(Include Files和Library Files)里。
        在SDKs文件夹下可能会有多个文件夹,表示不同版本的系统调用,这个还是要和targetver.h里面定义的符号配合
    October 15

    一个c++问题

    int main()
    {
        int a[] = {1,2,3,4,5,6};
        int *ptr = (int *) *(&a+1);
        int p = *(ptr-1);
        printf("%d\n",p);
        return 0;
    }
     
    结果输出为:6
    &a是(int[6])*
    vs2008下debug的结果:
      a:0x001dfe30
      &a:0x001dfe30
      &a+1:0x001dfe48
      *(&a+1):0x001dfe48
      ptr:0x001dfe48
      *ptr:-858993460
      ptr-1:0x001dfe44
      p:6
     
    int *ptr = (int *) *(&a+1); 中最后一个*不是必须的
    October 12

    换装vista

        电脑最近不知道耍什么小脾气,开机的时候老想另类一番,决定升级系统至vista。可是升级了
    系统以后,貌似开机问题仍然没有解决。早晨摁下开机键后去洗漱,回来发现电脑屏幕上一溜串的
    "H",顿时极度郁闷,还好摁下重启键以后正常启动,一直闹不明白到底为什么。开机运行的时候一
    点儿问题都没有,就是开机的时候不正常,非得重启一下才好,怀疑是电源或者bios的问题,比较
    烦,回头再看。
        目前的问题是:
        1.gigaget和vista下的ie7不兼容,原来的2003系统上ie7是有问题,但至少不是和gigaget
    冲突,努力寻找答案中。
        2.机箱突然变得非常响。昨天清理机箱灰尘了,按理说声音应该更小一些才是啊,困惑中。
     
        遇到的问题:
        由于光驱有问题,开始安装vista老是报错,说io错误,想了好多方面,恢复MBR,格式化fedroa9
    系统,都不成,最后换了同学的两个光驱才安装成功,初步认定是光驱的问题,可见安装系统的时候
    一个好的光驱有多重要。
     
        下午经过清理电源灰尘,最终发现是显卡的小风扇响的厉害,估计是昨天动了它一下,不乐意了,
    哎,没办法,没有集显,只好就这么凑活着用了。忍受轰鸣声中;不过话又说回来,这声音比实验室
    里p41.5要好很多了,知足常乐吧~~嘿嘿,总喜欢用阿q精神安慰自己。
    September 02

    搬到新家

        搬到新家了,又是一个新学期的即将开始,一个全新的开始,生活必须需要一些改变的。
    July 05

    毕业了

        毕竟是毕业,毕竟是人生中的一件大事……
        四年的风风雨雨,四年的酸甜苦辣,就这么随风轻轻的飘走了。
        宿舍六个人,三个继续本校读研,一个两个外校读研,一个工作,以后三个人还是可以在一起,虽然
    比不上其他宿舍的支离破碎,但是毕业的忧伤还是弥漫在空气中。送了三个人,没送太远,只是宿舍楼下。
    没走太远,也无需送的太远,因为以后还可以相见。
        系里的人一天天的,一个个的都走了,再去看的时候,那些曾经熟悉的宿舍已经住进了稚嫩的面孔。
    楼道里很少再看见那些虽然熟悉但不认识的外系人。