<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Arath</title>
    <description>在Windows下使用C/C++摸爬了5年,似乎和Java关系比较少
但是天下程序员一家人嘛^.^</description>
    <link>http://arath.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>双刃剑 - 宏</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/63083" style="color:red;">http://arath.javaeye.com/blog/63083</a>&nbsp;
          发表时间: 2007年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在C中使用宏的确是一个非常好的代码手段，可以大量的减少代码量，提高阅读性，通过对一些常用代码的归类写成宏，作用巨大. <br />例如如下代码:<br />if(((t->flag & S_FLAG1) || (t->flay & S_FLAG2)) && t->type == T_TYPE1)<br />	...<br />条件部分如果多次使用到，那么我们完全可以写如下的宏<br />#define IsXXXX(t) (((t->flag & S_FLAG1) || (t->flay & S_FLAG2)) && t->type == T_TYPE1)<br />这样上面的代码就成了<br />if(IsXXXX(t))<br />	...<br />代码少了很多，而且可读性也增加了很多.<br />还有一个代码，C中分配一个结构，一般如下代码:<br />p=(STRUCT*)malloc(sizeof(STRUCT));<br />是否可以更加漂亮呢？创建一个宏，如下:<br />#define new(t)	(t*)malloc(t)<br />这样上面的代码就变成了<br />p=new(STRUCT);<br />是否有C++的风格了？<br /><br />但是有利必有弊，宏一旦使用不当反而会产生严重的后遗症,下面随意说几点.<br />1.给宏赋予太强大的功能，几乎所有的编译器以及大部分的IDE无法展开和定位宏中的代码，所以一旦产生错误，很难调试, 如果真的需要最好还是用函数来封装.<br /><br />2.宏名字起的不当，这是很致命的，会导致代码可读性大大降低，例如随意将前面例子中的IsXXXX定义为a，然后后面的代码中全是一堆的<br /> if(a(t))<br />如果这样，键盘是少打了，但是已经完全没有了可读性，也许今天写的这个宏，明天你就忘记这个宏是做什么了. 同时过于简单的名字也会导致同名但是功能不同的宏大量出现，使得代码更难看懂.<br /><br />3.宏的随意undef，这个是一个很不好的习惯，代码量一旦达到了一定程度，会导致极度的混乱.<br />例如在某个.h文件中定义了IsXXXX，然后在某个.c中如下使用<br />#undef IsXXXX<br />#define IsXXXX(t) (((t->flag & S_FLAG3) || (t->flay & S_FLAG4)) && t->type == T_TYPE2)<br />这个对于以后的维护修改埋下了极大的隐患.<br /><br />4.重名，说起来这个算是很多编译器的问题，如果将一个宏的名字和一个变量的名字重名了，那么很多的C Compiler默认状态下不会报警或报错.<br />例如:<br />int a;<br />...<br />#define a b<br />这种错误有时候简直可以让人发疯！！！<br /><br />5.宏的嵌套使用，不是不能这么用，由于宏屏蔽了实际代码，如果宏->宏，那么即使你的宏写的够漂亮明了，恐怕天长日久也就忘记里面具体的逻辑，一旦想修改就很麻烦，所以要小心使用.<br /><br />到了C++年代，宏的使用少了很多，不过模板几乎就是宏的升级.<br />说起来在MFC中消息映射就是一套极具特色的宏，如果不了解它也就算了，但是当你看懂了就会感叹宏的魔力！
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/63083#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 Mar 2007 22:58:20 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/63083</link>
        <guid>http://arath.javaeye.com/blog/63083</guid>
      </item>
      <item>
        <title>病毒又见病毒！！</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/49163" style="color:red;">http://arath.javaeye.com/blog/49163</a>&nbsp;
          发表时间: 2007年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          老婆的电脑中毒了！<br />这个毒真厉害，竟然用driver去保护另一个service进程，普通的办法根本搞不定，即使进入安全模式也是，最后要用window xp的recover模式的控制台才杀掉.<br />说它厉害真的是厉害，竟然想到去写driver, 但要说什么技术含量，只能用雕虫小技一词来评价. <br />病毒清理好了，但是总要找到源头，网络是安全的，使用也很注意，怎么会呢？最后怀疑到了一个U盘，曾经拿去用户那里使用，插上我的电脑，McAfee马上红脸，果然是它.是一个通过U盘自动播放传染的病毒，老婆的电脑没有关自动播放.<br />最近又有一个熊猫烧香的蠕虫病毒据说很嚣张，真是无聊的人多，用心险恶的人更多!传言很多反病毒公司都在自己做病毒，用这种手段来让用户购买使用他们的产品,如果是真的那简直无耻至极了！！<br /><br />这里附带支一招，system32\gpedit.msc 启动 Group Policy ，在Computer Configuration\Administrative Templates\下将Turn off Autoplay打开，所有的设备都禁止掉，这样可以安全点.
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/49163#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 22 Jan 2007 16:36:13 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/49163</link>
        <guid>http://arath.javaeye.com/blog/49163</guid>
      </item>
      <item>
        <title>有关file mapping的测试</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/48412" style="color:red;">http://arath.javaeye.com/blog/48412</a>&nbsp;
          发表时间: 2007年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.javaeye.com/topic/46777" target="_blank">http://www.javaeye.com/topic/46777</a><br />这个帖子中说到了file mapping用于大文件读写，因为速度快.<br />按照我以往个人的认识是: file mapping能够提高大文件读写速度，但是并不是一定要用file mapping来实现.<br />file mapping的工作原理并不复杂，应该算是一种大的文件数据cache, 大的cache可以使在一定范围内的寻址速度加快，因为数据不需要通过较慢的File IO去操作，而直接使内存读写. 正是这个主要的特性将大大提高随机的读取操作，例如数据库文件的操作就是.<br />依照这个思想，如果不用file mapping也应该可以实现这种功能.<br />为了验证自己的观点，我写了一个测试程序，如附件.<br />总共三个测试方法，分别为:<br />FileOperation1 - 使用file mapping<br />FileOperation2 - 常用的文件读写<br />FileOperation3 - 自定义cache读写<br />测试的时候产生一个按照扇区总数（BLOCKSIZE/SECSIZE大）的乱序访问顺序，用来模拟实际的随机读取，每个测试程序都根据这个顺序一个扇区一个扇区（这里简单的用SECSIZE设定扇区大小，完善的话就去抓取系统物理扇区的大小）的访问，每个扇区内的数据都逐一读写.<br />在设定BLOCKSIZE为1MB的时候，得到的测试数据如下<br />Test1:<br />Access: 0<br />Write: 20<br />Test2:<br />Access: 3996<br />Test3:<br />Access: 0<br />Write: 20<br />在设定BLOCKSIZE为10MB的时候，得到的测试数据如下，这时候Test2的速度已经让人难以忍受了<br />Test1:<br />Access: 60<br />Write: 421<br />Test2:<br />Access: 39827<br />Test3:<br />Access: 90<br />Write: 311<br />在设定BLOCKSIZE为100MB的时候，我已经无法忍受Test2了，只对比Test1和Test3<br />Test1:<br />Access: 701<br />Write: 4166<br />Test3:<br />Access: 922<br />Write: 4887<br />简单三次测试虽然模拟的方式会比file mapping慢一点，但是基本还是在一个档次上的，所以应该可以证实我的判定，剩余速度的差异应该是出在操作系统对file mapping的优化了.<br />当然我这个测试只是验证了作为cache对速度提升上面，实际操作中file mapping在数据commit上作的优化较多，所以还是推荐使用file mapping访问大文件，但是同样要说file mapping不是处理大文件的唯一途径.<br /><br />最后提醒...测试的目标文件会被修改，使用产生任何意外与本人无关<img src="/images/smiles/icon_biggrin.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/48412#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 18 Jan 2007 20:16:40 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/48412</link>
        <guid>http://arath.javaeye.com/blog/48412</guid>
      </item>
      <item>
        <title>PC升级小记</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/43019" style="color:red;">http://arath.javaeye.com/blog/43019</a>&nbsp;
          发表时间: 2007年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          年末手痒，外加压抑已久的购物欲望，决定对家里的电脑进行小小的升级.<br />电脑是3年前配的，整体还是可以的，最不满的就是噪音大，经过观察噪音主要来源于共振，原先的立式机箱不够结实，而电源很重又置于机箱上方，电源启动后由于内部的风扇转动，产生了共振效果，如此一来开机如同启动了一台拖拉机, 所以升级首先必须换掉机箱（看他不顺眼多年了）.<br />其次毕竟是3年前的机器了，速度上有些慢，所以准备换掉CPU，原先考虑升级主板能支持的CPU，但是发现价格反而贵，所以乘现在AMD64 3000+便宜，主板CPU一起换掉。<br />其他配置都还可以，就不准备更换了.<br />由于主板要更换，就考虑装一台小体积的准系统电脑了，准备使用Micro-ATX板子，不过要搭配939的CPU外加支持AGP真的比较难，最后选中了华硕的A8v-MX，各方面都很好，可是人算不如天算，找遍了卖场，甚至去华硕内部也没有这块板子了，最后只能在某个场子内的店里买到了一块华擎939A8X-M，总算能用.<br />以下是升级的对比<br />           原来的机器            新机器<br />CPU     AMD AthlonXP 1800+  ->  AMD Athlon64 3000+ 939盒装<br />主板     NF2（忘了牌子）        ->  华擎939A8X-M<br />机箱    世纪之星 立式            ->  Qbox 准系统型全铝机箱<br />内存    Kingmax DDR400 512Mx2<br />硬盘    Maxtor 80G<br />显卡    ASUS V9999LE<br />声卡    Sound Blaster Live!<br />光驱    Pioneer 16X 吸入式DVD<br />                             CoolerMaster 120mm静音风扇<br />----------------------------------------------------------<br />总计花费                           1400<br /><br /><strong>Qbox 准系统型全铝机箱</strong><br /><img src="http://218.75.18.219/pc/box-1.jpg" /><br />可以清楚看到内部空间是相当紧凑的，由于是铝的，所以比较轻，感觉如果能再厚点就好了.<br /><img src="http://218.75.18.219/pc/box-2.jpg" /><br />面板设备齐全，两个USB、耳机话筒、1394、还有一个液晶温度显示，可以放置两个光驱，竟然还提供软驱面板，还有一条提手，就是白色部分下面那个锯齿的，不过我是不太敢用，因为机箱装好了很重的.<br /><img src="http://218.75.18.219/pc/box-3.jpg" /><br />有一个120mm的风扇位置，我很满意，不过个人对后面的铝板厚度有些不满，应该再厚点.装配时需要从后面将一个拖板抽出后安装主板的.<br /><br /><strong>CPU AMD Athlon64 3000+ 939盒装</strong><br /><img src="http://218.75.18.219/pc/cpu.jpg" /><br />绝对的经典之作，当年打得Intel满地找牙，即使现在速度也是很不错的，而且现在的价格很好，599盒装带票.<br /><br /><strong>华擎 939A8X-M主板</strong><br /><img src="http://218.75.18.219/pc/mb.jpg" /><br />这块板子是意外找到的，正当我寻找华硕A8v-MX近乎绝望的时候还好有了这个救星，第一次买华擎的板子，观察了下做工用料还是不错的，主板使用ULi M1689一体化的芯片（南北桥在一起），唯一遗憾的是只支持SATA，连NCQ都不支持.<br /><br /><strong>电源 Seventeam ST-402HLP</strong><br /><img src="http://218.75.18.219/pc/dc-1.jpg" /><br />这个电源是和显卡一起后配的，好东西，400W的功率，而且是主动PFC，转换效率高，提在手里一个重.<br /><img src="http://218.75.18.219/pc/dc-2.jpg" /><br />Seventeam(七盟）不是太大排的企业，但是也是小有名气，看看这个做工吧，大家有兴趣拆开自己的电源比较下，就知道什么叫实诚！缺点就两个风扇，运行比较响，本来想换掉，但是由于工具不足最后放弃了.<br /><img src="http://218.75.18.219/pc/dc-3.jpg" /><br />再来一张~~这是两年前买的，主动PFC，蛇皮线现在才被国内一些厂商作为高档的身份抬出来，其实早就有了. 当年这个电源花了400大洋, 绝对物有所值.<br /><br /><strong>显卡 ASUS V9999LE</strong><br /><img src="http://218.75.18.219/pc/gc-1.jpg" /><br />两年前为了玩EQ2买的，可惜后来没有了用武之地.<br /><img src="http://218.75.18.219/pc/gc-2.jpg" /><br />买的时候其实有两个选择，还有一块XFX的，但是对比发现还是ASUS的做工好，所以多花了50买了华硕的.<br />6800LE现在是落后了，但是运行一般的游戏还没有太大问题，Vista也可以对付.<br /><br /><strong>内存和光驱</strong><br /><img src="http://218.75.18.219/pc/dvd_ram.jpg" /><br />光驱买了有年头了，2001年买的，当时价格是700多，市面上唯一的吸入式，至今用起来还是很好. 现在吸入式也很少，用惯了吸入式真的不习惯托盘式的^.^<br />内存三年前有先见，超规格买了DDR400的，现在正好AMD64能全速支持了.<br /><br /><strong>组装完成</strong><br /><img src="http://218.75.18.219/pc/inbox.jpg" /><br />看看，都装满了，电源线头太多了也是个麻烦，只能扎起来.风扇的位置和电源有点顶，不过还好总算能亲密的靠着.<br /><img src="http://218.75.18.219/pc/run.jpg" /><br />启动了~~，显示13.8度，因为室温很低，全速运行大概到25度左右，探头放在CPU的散热器里，误差是有，不过不大.<br />光驱面板的白色有些不协调，不过不是很大问题.<br /><br /><strong>装机中的磨难</strong><br />每次动手装机总是有些问题，上次的机器因为主板的兼容性(NF2的兼容性问题真的很多)搞了我一个多月.<br />不过这次还好,遇到的第一个问题就是光驱太长了，现在很多光驱都很短，放在最上面的一格电源线就会顶住，导致电源放不进去，最后不得不放在第二格，有损美观...<br />第二个问题，我早有担心主板的兼容性问题（华擎这个牌子第一次使用，ULi的芯片也是第一次使用），所以在装起来前，先在机箱外面将所有部件装在一起运行XP(原来硬盘里的操作系统)测试了一次，发现没有问题才装进了机箱，但是万万没有想到的是安装window xp的时候竟然蓝屏，上网查了一下主板上的已经是最新版本的BIOS, 调整了好多次BIOS都不起作用,最后怀疑到了声卡，sound blaster的卡由于对中断应用的特殊，往往有问题，拔掉卡后安装及就过了. 系统装完，因为舍不得这块卡，再装上一点问题没有#@#@#$只能怪MS了.<br />第三个问题，显卡的驱动装不上，一装就重新启动，后来在BIOS中打开了一个开关就好了...<br />也就遇到了这三个问题，还算是很幸运的.<br /><br /><strong>使用</strong><br />首先，最讨厌的噪音没有了，声音低了很多！<br />新机的确快了不少，使用superpi和3dmark测试都有很大的提高，不过资料没有被我留下. 运行文明4，在同样的内存下现在可以使用huge地图了，原来的机器只能是卡死!<br />稳定运行了2个礼拜，没有出现其他不稳定情况，这才将机箱合起来，放入位置，折腾下又能好好的用上两三年了.<br /><br /><strong>总结</strong><br />准系统由于体积小，部件的选择往往有所限制，所以一定要首先搞定主板. 同时准系统的机箱内部空间是很很拥挤的，而且装卸都有顺序，所以一定要保证所有配件装在一起没有问题后再装在一起，否则有得你累了.<br />准系统内部空间是小了不少，但是对于一般用户哪有那么多卡可以插？现在网卡都集成了，声卡也集成，显卡也集成了，有的甚至集成1394，一般人装机能插上两张卡的都很少，完全没有必要留那么多接口.<br />个人比较喜欢这样的机箱，虽然横向有所增大，但是高度降低很多，可以节省不少空间；同时降低了重心，减少了共振的可能；现在主板是卧着的，不用担心过重的显卡和CPU风扇了，我看了下这个机箱的位置，即使装上8800GTX这种怪兽级显卡也可以稳稳当当.
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/43019#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 04 Jan 2007 14:58:26 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/43019</link>
        <guid>http://arath.javaeye.com/blog/43019</guid>
      </item>
      <item>
        <title>Vista开发主管提醒盖茨 离职后将购买Mac</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/39078" style="color:red;">http://arath.javaeye.com/blog/39078</a>&nbsp;
          发表时间: 2006年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">12月12日消息﹐据日前公开的一封电子邮件显示﹐微软平台及服务部门联合总裁吉姆‧阿尔奇(Jim Allchin)曾提醒盖茨﹐微软已经迷失方向。如果离开微软﹐他将购买竞争对手苹果的产品。 <br />
据pcpro.co.uk报道﹐这封电子邮件显示的日期为2004年1月7日。阿尔奇当时在邮件中提醒盖茨和CEO鲍尔默﹐称微软已经迷失方向。 <br />
阿尔奇在邮件中称﹐微软已经丧失了对用户的关注﹐不知道什么是用户最关心的问题﹔Vista开发小组也不知道什么是&ldquo;无漏洞&rdquo;﹐什么是安全﹐什么是性能。阿尔奇最后还称﹕&ldquo;如果我不在微软工作﹐那么我会购买一台Mac。&rdquo; <br />
微软的新一代操作系统Windows Vista企业版已于11月30日推出﹐而个人版要到明年1月才能上市。阿尔奇此前曾表示﹐Vista上市后﹐他将退休。 </font></p>
<p><font face="Arial">------------------------------------------</font></p>
<p>不知道是不是真的，不过Vista的确是一个臃肿的系统，花哨的界面并没有给大多数用户带来实质的好处.</p>
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/39078#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 14 Dec 2006 19:20:42 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/39078</link>
        <guid>http://arath.javaeye.com/blog/39078</guid>
      </item>
      <item>
        <title>遇到借钱不还的人借钱怎么办</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/38909" style="color:red;">http://arath.javaeye.com/blog/38909</a>&nbsp;
          发表时间: 2006年12月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">接到我表哥的电话，又要向我借3000，我表哥是个借钱不还的人，亲戚包括他的家人见了都怕，之前和我借了5000，后来好不容易用其他的方法才拿回来。<br />
好郁闷，真不是到怎么处理，而且更糟糕的是这次真的身边没有这些钱，年底刚出去一笔大开销...<br />
怎么办呢?????????????</font>
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/38909#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 13 Dec 2006 16:50:28 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/38909</link>
        <guid>http://arath.javaeye.com/blog/38909</guid>
      </item>
      <item>
        <title>闲谈用人</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/37658" style="color:red;">http://arath.javaeye.com/blog/37658</a>&nbsp;
          发表时间: 2006年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">上周末和一个大学同学吃饭。这位同学刚海归，自己办了一个贸易公司，招了一个应届的女孩子作类似助理的工作，每月税前工资2200，还有年底奖金。<br />
当时我感到很惊讶，同学公司开了不到半年，而且这个女孩子所在的事情简单（主要是处理邮件，管理一下货物单据）也不多，于是便向同学说你这样是不是给的太高了，怀疑同学用国外的水平来作了参考，现在上海普遍的应届指导工资都很低。<br />
同学就说，的确是比较高的，而且还要缴纳所有的社会福利，折算一个人要4000多成本，但是他觉得这个女孩子工作主动、仔细还能吃苦，上班从来不迟到而且每次都要早到，所以基本上上海这边的工作交给她就可以了，同学自己不需要太多照顾，所以他觉得现在有这样的员工非常不错，并且很希望能够长期培养留在公司。<br />
然后他和我讲，培养一个员工很是不容易，其成本是很高的，在国外如果一个老板要求某个老员工去培训一个新员工，老员工是可以要求加薪的，而且老板一般也都会同意。所以遇到这种好的员工就要好好的加以培养。<br />
我听完顿感欣慰，我这个同学果然是留学归来的，在用人上的观念的确和国内很多老板不同。而我在公司遇到过一件事情，就完全不一样了。<br />
公司一位员工工作很是认真努力，成长的也很快，工作9个月后某种原因有了一个新的工作机会，对方的薪资较高，但他还是希望能留在这里，但要加一下薪水，不需要达到同等水平但是只要能接近就可以了，这样家里能够交待过去。我觉得这个还是合理的，于是呈报给了老板，可老板不同意，因为他认为还没到一年就提加薪不合理，何况还在外面找工作，就认为这种人以后不好留，当时我就是以培养的成本来和老板交涉，这个员工进来的时候也是应届的，经过了公司3个月的培训外加半年的工作经历，正到了当用之时，如此让他走从公司角度就是亏本的，何况这个员工又是一个很勤奋努力的。老板最后还是执意不同意加薪，这个员工最后也是选择了期满离职.<br />
这里不能说我的老板完全没有道理，但是可以看出在用人意识上是欠缺了。<br />
现在就业问题比较严峻，但同时对于一个公司能够找到一个合适的员工同样的不易。现在的学校教育出来的学生能够马上上手的人不多（真正优秀的也早早的被那些大公司大企业挑走了）。即使招到一个，社会上机会那么多，能够安心做事情的人真的不多，何况还要能够做好事情的。<br />
还有就是提到的培养问题，一个基本无法工作的新手培养成能够独立工作的员工，这个成本不小，包括其自身在初期无法创造效益和优秀员工为了培养他而消耗的时间成本。国内很多企业不愿意招应届生其中一点就在于此，当然还有一点就是等你培养好了，可能这个员工就跑了。记得2000年我刚来上海找工作的时候，看到招聘上几乎都是要2年以上工作经验的，去招聘会以看我是应届的就直接回绝，这种现象到目前为止也没有改善。现在回过头来看，如果公司企业能够给员工更好的回报，那么这种状况就会大为改观的。<br />
</font>
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/37658#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Dec 2006 17:41:16 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/37658</link>
        <guid>http://arath.javaeye.com/blog/37658</guid>
      </item>
      <item>
        <title>程序64位化带来的问题和思考</title>
        <author>Arath</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://arath.javaeye.com">Arath</a>&nbsp;
          链接：<a href="http://arath.javaeye.com/blog/28724" style="color:red;">http://arath.javaeye.com/blog/28724</a>&nbsp;
          发表时间: 2006年10月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司的一个产品需要转移到了Windows Vista 64上去，由于程序某一部分和Windows的一个AP紧密相连，而这个Windows AP已经64位化了，不得不将自己的程序也转到64位. <br />我原来不是负责这个产品的，由于项目很赶，所以被零时抽调去帮忙，遇到了一些问题，这里和大家分享下. <br />1. 指针和long的转换 <br />这是最基本的处理部分，由于32位系统下地址是32位，所以很多代码里都会存在这样的转换: <br />void* pData; <br />LONG lData; <br />lData = (LONG)pData; <br />现在地址是64位了，所以原来的这种转换就会导致地址高4Byte丢弃的问题. <br />这种转换向来被认为不安全，但还是大量出现，实际程序员代码的时候只要用一个指针保留就可以，完全没有必要用一个long保留，同样的问题也会出现在函数指针的保留. <br />思考: <br />所谓的存在即合理的思维在作怪吧，很多程序员认为这么做程序运行的好好的，所以不管是否有风险还照样这么写，实际上改成安全写法代码多不了多少. <br />当然不排除很多程序员对16位、32位、64位完全没有概念的. <br />还有一点可能是微软的windows消息给人以误导，消息的WPARAM和LPARAM中常会夹带数据指针，然后强制类型转换，但是看一下它们的定义，其中隔了一层，虽然只是语法上的小小手脚，但是绝对是有先见之明, 而很多人只会依样画葫芦而未明白期间的巧妙.<br /><br />2. PE Import和Export Table的变化 <br />程序中用到了PE hack，由于之前有人发现vista 32下原来所需要替换的一个import table中的函数找不到了，结果竟然去修改了export table, 姑且不谈修改export table的危险吧，结果vista 64的时候发现PE格式有了小小的变更. <br />MS将Import table中的地址转成了64bit，但是export table却还是32bit，估计其认为代码不可能大于4GB吧，这样就会发现更改export table变得很难，因为不同的dll会被load在不同的地址段，其间差距会大于4GB，所以只有将自己的dll强制定义在和目标dll相同的4GB范围内. <br />回头来说这种更改是极其危险的，因为对于export table OS会尽量保持全局唯一，所以一旦你的dll退出未能正确恢复原有的值，会造成其他所有使用到这个dll的程序crash. <br />最终我发现需要hack的那个函数放在了delayload import table中，简单的修改就解决了问题. <br />如果这个问题最终找不到而还是采用修改export table的方法，那么就会很惨，测试部门已经发现了经常性的系统crash. <br />思考: <br />这里出现了弯路，这个弯路项目的时间压迫难辞其咎，但是程序员未能自己去分析问题是更大的问题，vista在很多方面都保留了很好的兼容性，去分析下windows的目录就会发现基本和xp区别不大，所以很多基础dll的功能也没有变化(这一点让我感觉到vista并未如其发表的那样70%代码重写)，在分析dll的时候只要稍微仔细点就会找到问题很简单. <br />另一个问题就是MS在定义PE格式的时候的确有很高的前瞻性，很好的保持了松耦合的能力，其实PE格式在2001年后就基本没有什么大的更改，那时大家还基本没有64位的概念，这一点是需要学习的，但是同样对于export table没有扩展到64bit我还是保留意见，难道真的认为4GB不会超过？当年盖茨大叔不是宣称640KB就够了吗^.^<br /><br />3. DelayLoad的问题 <br />DelayLoad这个特性在VC6开始出现，一般大家不会去接触，包括我自己，要不是这次机会也不会去看. <br />推荐一篇文章 <br />http://www.microsoft.com/msj/0200/hood/hood0200.aspx <br />有详细的阐述，有兴趣可以自己看一下，其实其原理很简单，主要是在使用到某个dll的接口的时候再去load这个dll，这样可以节约空间，因为有些dll中的接口可能在程序周期中永远不会用到, 而且如果某个dll没有，如果没有用到，那么整个程序也能继续执行. <br />这真的是一个巧妙的设定, 虽然在第一次呼叫的时候会有小小的性能损失，并且代码也会稍微大一点，但是可能会带来更大的空间节省. <br />但是随即带来的思考, 为什么这么好的一个东西会那么生疏呢？个人考虑有以下原因: <br />1. 这种技术显然对于很多人来说过于底层了，有多少人在意编译出来的程序是怎么样存放，又是如何被加载运行的呢？ <br />2. DelayLoad带来的好处对很多人不可见，只要我的程序编译通过，并且可以正确执行就可以了，节省了那么些空间或者扩展兼容有必要考虑吗？ <br />3. 现在的硬件太好了，何必要去做这种优化呢？内存消耗多了，没什么嘛去买1GB内存插上不久解决了？ <br />4. 编译系统不够智能，可能Visual Studio做的更加智能些，自动去分析然后产生delay load会更好吧？ <br />如此这样一个不错的技术可能慢慢被人们淡忘.<br /><br />引申一个问题就是我们现在硬件越来越好，但是大家还是觉得不够用，为什么？这几天我在写另一篇文章，可惜一直很忙还未能完成，就是自己在反思分析这个问题.
          <br/>
          <span style="color:red;">
            <a href="http://arath.javaeye.com/blog/28724#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Oct 2006 17:14:08 +0800</pubDate>
        <link>http://arath.javaeye.com/blog/28724</link>
        <guid>http://arath.javaeye.com/blog/28724</guid>
      </item>
  </channel>
</rss>