Silver Champagne(BZ)

分享快乐!
  • 人体密码知多少 你了解你的身体吗?

      一个人的头到底有多重?不包括头骨,居然跟一台笔记本电脑重量差不多(大约1.4公斤);那一个人的肠子长度有多长?一个人一天又排多少汗……


      近日,一则关于人体密码的热帖出现在几大门户网站上,专家表示,要适当了解人体常识,对健康生活有益。


      人体密码让你了解你的身体


      昨日,记者打开“绝对想不到的人体密码大解析”这则热帖,他对人体的器官和人的一些生理反应做出了量化的解释,让你对自己的身体一目了然。


      帖子的主要内容如下:


      ■密码:头跟笔记本电脑一样重


      一个人的头到底有多重?答案是跟一台笔记本电脑差不多,大约1.4公斤重(不包括头骨重量)。人的大脑包括80%的水,其中25%被用做有氧及糖分的体内循环,以补给营养。人发育到18岁时,脑袋就不会再长了,所以不可能有比一个4G的笔记本电脑更大的容量储存记忆。


      ■密码:血管长度可绕地球两周半


      人体内大大小小血管有1000多亿条,如果将人体的所有血管接成一条线,科学家估计,成人的血管总长度约为96000公里。地球一周是40000公里,也就是说,人体血管接成一条线之后,长度可以绕行地球2周半。


      ■密码:打喷嚏速度为177公里/小时


      当人打喷嚏时,空气穿越餐桌的速度可以达到177公里/小时,相当于英国驾车极限的一半。


      ■密码:肠子长度是身高的4~5倍


      肠子到底有多长?有解剖学家认为,每个人的肠子的长度都不一样,一般约为身高的4~5倍。有趣的是,肠胃科医师进行肠胃镜检查时发现,高瘦的人,肠子比较松垮。


      ■密码:一天排汗量可达10升


      人最大排汗量可达到一天10升,每小时排汗量最大可达2升。有趣的是,季节不同,人体排汗量也有很大的差异,盛夏时,一个人平均一天的排汗量可达4~5升;春天及秋天,一天的排汗量是0.8升左右;冬天出汗量不大,但也要排出0.5升,相当于3大杯水。


      了解人体常识可改善生活方式


      很多第一次听说人体密码的网友也纷纷跟帖留言。


      网友小白:居然可以排出那么多的汗,那我得多喝水,好补充身体。


      网友阳光小子:这些科学常识了解后,对身体健康有好处。


      网友王女士说,“冬天出汗少,不喝水补充,所以皮肤特别干燥,这下知道了。”


      说起人体密码,沈阳市健康教育所社教一部主任王永顺称,近年来,国内外一些科研机构热衷研究这样的问题,一些数据不一定完全准确,但是在临床治疗上可以作为参考。目前,人们生活的环境在改善,居民也向老龄化、城市化发展,由于生活方式的改变,慢性非传染性病增多,人们了解人体常识后,可以避免一些疾病的发生。


      “了解一些人体常识之后,就能适当地改善生活方式,把不健康的生活方式改掉,让自己生活得更加健康,减少疾病的发生。”王主任说。

  • 公交车上的极品对白(不笑不用留言)

    1:  一个外地人拿一张50圆的票子,在售票员面前晃着:见过没?见过没 ?……
    卖票的傻了,干脆拿出一张100的Show了一下:你见过没?
    最后才搞明白,那人是想去“建国门!”

    2 要钱

    一次乘公交车回家,上车后发现钱包里没有一元零钞,一着急,便掏出一张十元大票进投币口。后来越想越觉得窝囊,便跟司机商量,能不能让我守在门口,将下一站乘客本应投进投币口的钱据为己有?司机同意了。

       车很快驶到下一站,很多人争着上车。我挡在门口,对第一位乘客说:“把钱给我。”对方一愣:“凭啥?”三言两语也解释不请,我就说:“给我就行了,别的不用管。”对方瞅瞅司机,司机点头默许。于是,一元钱到手。依法炮制,很快收了八个一元钱。接着上来一位大汉,虎背熊腰,剃着板寸,露着刺青。见我拦着他,怒道:“干吗呢? 哥们儿?”我说:“一会儿再跟你说,先把钱给我。”对方眼珠子都圆了:“说啥呢?”我说:“把钱给我!”对方张大了嘴,冲司机问:“这小子干吗的?”大汉堵在门口,后面的人上不来,而车厢里的人急着发车,所以大家七嘴八舌地嚷起来了:“啰唆什么呢!快给钱!”大汉很快瘪了下去。只见他从口袋里掏出钱包递过来,哭丧着脸说:“老大,身上就这点钱,你们人多,我服了。”

    3 小偷

       某君乘公车常掉钱包,一天上车前,某君把厚厚的一叠纸折好放进信封,下车后发现信封被偷。第二天,某君刚上车不久,觉得腰间有一硬物,摸来一看,是昨天的那个信封,信封上写着:请不要开这样的玩笑,影响正常工作,谢谢!

    4 下车

       公交车在等红灯时,一男子叫道:“司机,开一下门,我要下车。

       “这里是站牌吗?”司机怒道。

       “就因为这里不是站牌我才给你说一声——司机无语。

    5 追车

       早上赶公共汽车,到站台的时候,汽车已经启动了。于是我只好边追边喊:“师傅,等等我!师傅,等等我呀!“这时一乘客从车窗探出头来冲我说了一句:“八戒你就别追了。”

    6 拉环

       一个很胖的女人上了公交车,找不到座位,只能拉着车上的拉环,不料司机一个急刹车,胖女人把拉环拉断了,并一下子扑到了司机面前,司机看着她和她手上的拉环,没好气的说:“集满三个,送司机签名照一张!”

    7 座位

       有一个漂亮小姐,上公交车后从包里拿出纸巾使劲的擦了擦座位,正要坐下时,放了一个屁,旁边的一个先生听到了,打趣地说:小姐真是爱卫生,擦了那么久,还要吹一下!
  • AOP之道(jdon.com)

    AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中。

    AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

      举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。

      为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再供其它访问类访问。

      使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继承这个抽象父类,如下:

    abstract class Worker{

      abstract void locked();
      abstract void accessDataObject();
      abstract void unlocked();

    }

     缺点:

    • accessDataObject()方法需要有“锁”状态之类的相关代码。
    • Java只提供了单继承,因此具体访问类只能继承这个父类,如果具体访问类还要继承其它父类,比如另外一个如Worker的父类,将无法方便实现。
    • 重用被打折扣,具体访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄。

      仔细研究这个应用的“锁”,它其实有下列特性:
    • “锁”功能不是具体访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作。
    • “锁”行为其实是和具体访问类的主要功能可以独立、区分开来的。
    • “锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方法。如下图:
      因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能,这个新的程序结构就是aspect(方面)

        在这个应用中,“锁”方面(aspect)应该有以下职责:

        提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

      AOP应用范围

        很明显,AOP非常适合开发J2EE容器服务器,目前JBoss 4.0正是使用AOP框架进行开发。
        具体功能如下:
      Authentication 权限
      Caching 缓存
      Context passing 内容传递
      Error handling 错误处理
      Lazy loading 懒加载
      Debugging  调试
      logging, tracing, profiling and monitoring 记录跟踪 优化 校准
      Performance optimization 性能优化
      Persistence  持久化
      Resource pooling 资源池
      Synchronization 同步
      Transactions 事务

      AOP有必要吗?

        当然,上述应用范例在没有使用AOP情况下,也得到了解决,例如JBoss 3.XXX也提供了上述应用功能,但是没有使用AOP。

        但是,使用AOP可以让我们从一个更高的抽象概念来理解软件系统,AOP也许提供一种有价值的工具。可以这么说:因为使用AOP结构,现在JBoss 4.0的源码要比JBoss 3.X容易理解多了,这对于一个大型复杂系统来说是非常重要的。

        从另外一个方面说,好像不是所有的人都需要关心AOP,它可能是一种架构设计的选择,如果选择J2EE系统,AOP关注的上述通用方面都已经被J2EE容器实现了,J2EE应用系统开发者可能需要更多地关注行业应用方面aspect。


      AOP具体实现

        AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java),目前AOP具体实现有以下几个项目:

        AspectJ (TM): 创建于Xerox PARC. 有近十年历史,成熟
        缺点:过于复杂;破坏封装;需要专门的Java编译器。

        动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

        基于动态代理API的具体项目有:
       JBoss 4.0服务器
      这是以中国南宁命名的一个项目,搞不清楚为什么和中国相关?是中国人发起的?

        基于字节码的项目有:aspectwerkz,spring

  • 用javascript进行拖拽(摘自sohotx.com)

             网页开发经常会有实现拖拽效果的需求.要实现移动一个元素首先需要知道鼠标坐标,其次需要知道鼠标点击哪个网页元素最后就是借助DOM对象控制其位移,

            最简单的一种拖拽就是排列元素.例如:对有一个序列的内容页面,用拖拽改变顺序.就像MSN的编辑页面一样.

    脚本代码片段如下:

    var Demos       = [  ];
    var nDemos      = 8;

    var mouseOffset = null;
    var iMouseDown  = false;
    var lMouseState = false;
    var dragObject  = null;


    var DragDrops   = [  ];
    var curTarget   = null;
    var lastTarget  = null;
    var dragHelper  = null;
    var tempDiv     = null;
    var rootParent  = null;
    var rootSibling = null;
    var nImg        = new Image();


    var D1Target    = null;

    Number.prototype.NaN0=function(){return isNaN(this)?0:this;}

    function CreateDragContainer(){

     var cDrag        = DragDrops.length;
     DragDrops[ cDrag ] = [  ];

     for(var i=0; i<arguments.length; i++){
      var cObj = arguments[ i ];
      DragDrops[ cDrag ].push(cObj);
      cObj.setAttribute('DropObj', cDrag);


      for(var j=0; j<cObj.childNodes.length; j++){


       if(cObj.childNodes[ j ].nodeName=='#text') continue;

       cObj.childNodes[ j ].setAttribute('DragObj', cDrag);
      }
     }
    }

    function getPosition(e){
     var left = 0;
     var top  = 0;
     while (e.offsetParent){
      left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
      top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
      e     = e.offsetParent;
     }


     left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
     top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

     return {x:left, y:top};

    }

    function mouseCoords(ev){
     if(ev.pageX || ev.pageY){
      return {x:ev.pageX, y:ev.pageY};
     }
     return {
      x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
      y:ev.clientY + document.body.scrollTop  - document.body.clientTop
     };
    }

    function writeHistory(object, message){
     if(!object || !object.parentNode || !object.parentNode.getAttribute) return;
     var historyDiv = object.parentNode.getAttribute('history');
     if(historyDiv){
      historyDiv = document.getElementById(historyDiv);
      historyDiv.appendChild(document.createTextNode(object.id+': '+message));
      historyDiv.appendChild(document.createElement('BR'));

      historyDiv.scrollTop += 50;
     }
    }

    function getMouseOffset(target, ev){
     ev = ev || window.event;

     var docPos    = getPosition(target);
     var mousePos  = mouseCoords(ev);
     return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
    }

    function mouseMove(ev){
     ev         = ev || window.event;

     var target   = ev.target || ev.srcElement;
     var mousePos = mouseCoords(ev);

     if(Demos[ 0 ] || Demos[ 4 ]){
       if(lastTarget && (target!==lastTarget)){
       writeHistory(lastTarget, 'Mouse Out Fired');

       var origClass = lastTarget.getAttribute('origClass');
       if(origClass) lastTarget.className = origClass;
      }

       var dragObj = target.getAttribute('DragObj');


      if(dragObj!=null){

        if(target!=lastTarget){
        writeHistory(target, 'Mouse Over Fired');

        var oClass = target.getAttribute('overClass');
        if(oClass){
         target.setAttribute('origClass', target.className);
         target.className = oClass;
        }
       }

       if(iMouseDown && !lMouseState){
        writeHistory(target, 'Start Dragging');

        curTarget     = target;

        rootParent    = curTarget.parentNode;
        rootSibling   = curTarget.nextSibling;

        mouseOffset   = getMouseOffset(target, ev);

          for(var i=0; i<dragHelper.childNodes.length; i++) dragHelper.removeChild(dragHelper.childNodes[ i ]);

           dragHelper.appendChild(curTarget.cloneNode(true));
        dragHelper.style.display = 'block';

            var dragClass = curTarget.getAttribute('dragClass');
        if(dragClass){
         dragHelper.firstChild.className = dragClass;
        }

        dragHelper.firstChild.removeAttribute('DragObj');

          var dragConts = DragDrops[ dragObj ];

        curTarget.setAttribute('startWidth',  parseInt(curTarget.offsetWidth));
        curTarget.setAttribute('startHeight', parseInt(curTarget.offsetHeight));
        curTarget.style.display  = 'none';

         for(var i=0; i<dragConts.length; i++){
         with(dragConts[ i ]){
          var pos = getPosition(dragConts[ i ]);

          setAttribute('startWidth',  parseInt(offsetWidth));
          setAttribute('startHeight', parseInt(offsetHeight));
          setAttribute('startLeft',   pos.x);
          setAttribute('startTop',    pos.y);
         }

          for(var j=0; j<dragConts[ i ].childNodes.length; j++){
          with(dragConts[ i ].childNodes[ j ]){
           if((nodeName=='#text') || (dragConts[ i ].childNodes[ j ]==curTarget)) continue;

           var pos = getPosition(dragConts[ i ].childNodes[ j ]);

           setAttribute('startWidth',  parseInt(offsetWidth));
           setAttribute('startHeight', parseInt(offsetHeight));
           setAttribute('startLeft',   pos.x);
           setAttribute('startTop',    pos.y);
          }
         }
        }
       }
      }

      if(curTarget){
       dragHelper.style.top  = mousePos.y - mouseOffset.y;
       dragHelper.style.left = mousePos.x - mouseOffset.x;

       var dragConts  = DragDrops[ curTarget.getAttribute('DragObj') ];
       var activeCont = null;

       var xPos = mousePos.x - mouseOffset.x + (parseInt(curTarget.getAttribute('startWidth')) /2);
       var yPos = mousePos.y - mouseOffset.y + (parseInt(curTarget.getAttribute('startHeight'))/2);

       for(var i=0; i<dragConts.length; i++){
        with(dragConts[ i ]){
         if((parseInt(getAttribute('startLeft'))                                           < xPos) &&
          (parseInt(getAttribute('startTop'))                                            < yPos) &&
          ((parseInt(getAttribute('startLeft')) + parseInt(getAttribute('startWidth')))  > xPos) &&
          ((parseInt(getAttribute('startTop'))  + parseInt(getAttribute('startHeight'))) > yPos)){

           activeCont = dragConts[ i ];

           break;
         }
        }
       }

        if(activeCont){
        if(activeCont!=curTarget.parentNode){
         writeHistory(curTarget, 'Moved into '+activeCont.id);
        }

           var beforeNode = null;

          for(var i=activeCont.childNodes.length-1; i>=0; i--){
         with(activeCont.childNodes[ i ]){
          if(nodeName=='#text') continue;

          if(curTarget != activeCont.childNodes[ i ]                                                  &&
           ((parseInt(getAttribute('startLeft')) + parseInt(getAttribute('startWidth')))  > xPos) &&
           ((parseInt(getAttribute('startTop'))  + parseInt(getAttribute('startHeight'))) > yPos)){
            beforeNode = activeCont.childNodes[ i ];
          }
         }
        }

         if(beforeNode){
         if(beforeNode!=curTarget.nextSibling){
          writeHistory(curTarget, 'Inserted Before '+beforeNode.id);

          activeCont.insertBefore(curTarget, beforeNode);
         }

        } else {
         if((curTarget.nextSibling) || (curTarget.parentNode!=activeCont)){
          writeHistory(curTarget, 'Inserted at end of '+activeCont.id);

          activeCont.appendChild(curTarget);
         }
        }

        setTimeout(function(){
        var contPos = getPosition(activeCont);
        activeCont.setAttribute('startWidth',  parseInt(activeCont.offsetWidth));
        activeCont.setAttribute('startHeight', parseInt(activeCont.offsetHeight));
        activeCont.setAttribute('startLeft',   contPos.x);
        activeCont.setAttribute('startTop',    contPos.y);}, 5);

         if(curTarget.style.display!=''){
         writeHistory(curTarget, 'Made Visible');
         curTarget.style.display    = '';
         curTarget.style.visibility = 'hidden';
        }
       } else {

         if(curTarget.style.display!='none'){
         writeHistory(curTarget, 'Hidden');
         curTarget.style.display  = 'none';
        }
       }
      }

       lMouseState = iMouseDown;

      lastTarget  = target;
     }
     if(Demos[ 2 ]){
      document.getElementById('MouseXPosition').value = mousePos.x;
      document.getElementById('MouseYPosition').value = mousePos.y;
     }

     if(dragObject){
      dragObject.style.position = 'absolute';
      dragObject.style.top      = mousePos.y - mouseOffset.y;
      dragObject.style.left     = mousePos.x - mouseOffset.x;
     }

      lMouseState = iMouseDown;

     if(curTarget || dragObject) return false;
    }

    function mouseUp(ev){

     if(Demos[ 0 ] || Demos[ 4 ]){
      if(curTarget){
       writeHistory(curTarget, 'Mouse Up Fired');

       dragHelper.style.display = 'none';
       if(curTarget.style.display == 'none'){
        if(rootSibling){
         rootParent.insertBefore(curTarget, rootSibling);
        } else {
         rootParent.appendChild(curTarget);
        }
       }
       curTarget.style.display    = '';
       curTarget.style.visibility = 'visible';
      }
      curTarget  = null;
     }
     if(Demos[ 6 ] && dragObject){
      ev           = ev || window.event;
      var mousePos = mouseCoords(ev);

      var dT = dragObject.getAttribute('droptarget');
      if(dT){
       var targObj = document.getElementById(dT);
       var objPos  = getPosition(targObj);
       if((mousePos.x > objPos.x) && (mousePos.y > objPos.y) && (mousePos.x<(objPos.x+parseInt(targObj.offsetWidth))) && (mousePos.y<(objPos.y+parseInt(targObj.offsetHeight)))){
        var nSrc = targObj.getAttribute('newSrc');
        if(nSrc){
         dragObject.src = nSrc;
         setTimeout(function(){
          if(!dragObject || !dragObject.parentNode) return;
          dragObject.parentNode.removeChild(dragObject);
          dragObject = null;
         }, parseInt(targObj.getAttribute('timeout')));
        } else {
         dragObject.parentNode.removeChild(dragObject);
        }
       }
      }
     }

     dragObject = null;

     iMouseDown = false;
    }

    function mouseDown(ev){
     ev         = ev || window.event;
     var target = ev.target || ev.srcElement;

     iMouseDown = true;
     if(Demos[ 0 ] || Demos[ 4 ]){
      if(lastTarget){
       writeHistory(lastTarget, 'Mouse Down Fired');
      }
     }
     if(target.onmousedown || target.getAttribute('DragObj')){
      return false;
     }
    }

    function makeDraggable(item){
     if(!item) return;
     item.onmousedown = function(ev){
      dragObject  = this;
      mouseOffset = getMouseOffset(this, ev);
      return false;
     }
    }

    function makeClickable(item){
     if(!item) return;
     item.onmousedown = function(ev){
      document.getElementById('ClickImage').value = this.name;
     }
    }

    function addDropTarget(item, target){
     item.setAttribute('droptarget', target);
    }

    document.onmousemove = mouseMove;
    document.onmousedown = mouseDown;
    document.onmouseup   = mouseUp;

    window.onload = function(){
     for(var i=0; i<nDemos; i++){
      Demos[ i ] = document.getElementById('Demo'+i);
     }

     if(Demos[ 0 ]){
      CreateDragContainer(document.getElementById('DragContainer1'), document.getElementById('DragContainer2'), document.getElementById('DragContainer3'));
      CreateDragContainer(document.getElementById('DragContainer7'));
      CreateDragContainer(document.getElementById('DragContainer8'));
     }
     if(Demos[ 4 ]){
      CreateDragContainer(document.getElementById('DragContainer4'), document.getElementById('DragContainer5'), document.getElementById('DragContainer6'));
     }
     if(Demos[ 0 ] || Demos[ 4 ]){
      dragHelper = document.createElement('DIV');
      dragHelper.style.cssText = 'position:absolute;display:none;';

      document.body.appendChild(dragHelper);
     }
     if(Demos[ 1 ]){
      makeDraggable(document.getElementById('DragImage1'));
      makeDraggable(document.getElementById('DragImage2'));
      makeDraggable(document.getElementById('DragImage3'));
      makeDraggable(document.getElementById('DragImage4'));
     }
     if(Demos[ 5 ]){
      makeDraggable(document.getElementById('DragImage5'));
      makeDraggable(document.getElementById('DragImage6'));
      makeDraggable(document.getElementById('DragImage7'));
      makeDraggable(document.getElementById('DragImage8'));
     }
     if(Demos[ 6 ]){
      makeDraggable(document.getElementById('DragImage9'));
      makeDraggable(document.getElementById('DragImage10'));
      makeDraggable(document.getElementById('DragImage11'));
      makeDraggable(document.getElementById('DragImage12'));

      addDropTarget(document.getElementById('DragImage9'),  'TrashImage1');
      addDropTarget(document.getElementById('DragImage10'), 'TrashImage1');
      addDropTarget(document.getElementById('DragImage11'), 'TrashImage1');
      addDropTarget(document.getElementById('DragImage12'), 'TrashImage1');
     }
     if(Demos[ 3 ]){
      makeClickable(document.getElementById('ClickImage1'));
      makeClickable(document.getElementById('ClickImage2'));
      makeClickable(document.getElementById('ClickImage3'));
      makeClickable(document.getElementById('ClickImage4'));
     }
    }

  • 长期损害硬盘的几款软件

    硬盘是计算机中最重要的存储介质,关于硬盘的维护保养,相信每个电脑用户都有所了解。不过,以前的很多文章都是针对拨号时代的单 机用户,在宽带逐渐普及、大硬盘不断降价的今天,很多人一打开电脑就会让硬盘满负荷运转:看高清晰的DVDRip影片、进行不间 断的BT下载、使用Windows的系统还原功能…… 

    不过,你可能并不清楚,这些新软件带来的新的应用模式,会给硬盘带来新的伤害!新应用模式带来的隐患 

    1.频繁地整理磁盘碎片 

    磁盘碎片整理和系统还原本来是Windows提供的正常功能,不过如果你频繁地做这些操作,对硬盘是有害无利的。磁盘整理要 对硬盘进行底层分析,判断哪些数据可以移动、哪些数据不可以移动,再对文件进行分类排序。在正式安排好硬盘数据结构前,它不断随机读取写入数据到其他簇,排好顺序后再把数据移回适当位置,这些操作都会占用大量的CPU和磁盘资源。 

    其实,对现在的大硬盘而言 ,文档和邮件占用的空间比例非常小,多数人买大硬盘是用来装电影和音乐的,这些分区根本无需频繁整理——因为播放多媒体文件的效 果和磁盘结构根本没有关系,播放速度是由显卡和CPU决定的。 

    2. Windows XP的自动重启 

    Windows XP的自动重启功能可以自动关闭无响应的进程,自动退出非法操作的程序,从而减少用户的操作步骤。不过,这个功能也有一个很大的 问题:它会在自动重新启动前关闭硬盘电源,在重新启动机器的时候再打开硬盘电源!这样一来,硬盘在不到10秒的时间间隔内,受到 电流两次冲击,很可能会发生突然“死亡”的故障。为了节省一些能源设置成让系统自动关闭硬盘,对硬盘来说也是弊大于利的。 

    3.编码错误的DVDRip 

    现在网上由DVD转录压缩的DVDRip格式的影片相当受欢迎。这种格式的影片清晰度和DVD相差无几,但下载一部影片只有 700MB~1.3GB大小,因此很多用户喜欢将DVDRip格式的影片下载到硬盘上慢慢欣赏。不过,播放这种格式的影片对系统 有较高的要求:除了CPU、显卡要求足够强劲以保证播放流畅外,硬盘负荷也非常大——因为播放DVDRip就是一个不断解码解压 缩,再输送到显示系统的过程。 

    笔者发现,在遇到有编码错误的DVDRip文件时,Windows会出现磁盘占用率非常高的现象: 系统不断想要把编码转换为视频信号,但编码错误的文件索引和相应的信号段是不匹配的——此时,硬盘灯会不断地闪烁,整个系统对用 户的操作响应极慢,用户点击菜单但几乎没有反应。如果编码错误较多,系统有时候甚至会死机。很多用户在此时非常不耐烦,直接按下 机箱上的RESET键甚至是直接关闭计算机电源,在硬盘磁头没有正常复位的情况下,这种操作相当危险! 

    提示:Windows XP的用户需要特别注意,当我们在Windows XP中自动预览一些体积较大的ASF、WMV等文件时,虽然没有进行正式播放,但也会出现计算机速度突然变慢、硬盘灯不断闪烁等 现象,其罪魁祸首仍然是视频文件错误编码! 

    4. PQMAGIC转换的危险 

    PQMAGIC是大名鼎鼎的分区魔术师,能在不破坏数据的情况下自由调整分区大小及格式。不过,PQMAGIC刚刚推出的时 候,一般用户的硬盘也就2GB左右,而现在60~80GB的硬盘已是随处可见,PQMAGIC早就力不从心了:调整带数据的、5 GB以上的分区,通常都需要1小时以上! 

    除了容量因素影响外,PQMAGIC调整硬盘分区时,大量的时间都花在校验数据和检测硬盘上,可以看出,在这种情况下“无损 分区”是很难保证的:由于转换的速度很慢,耗时过长,转换调整过程中,很容易因为计算机断电、死机等因素造成数据丢失。这种损失 通常是一个或数个分区丢失,或是容量变得异常,严重时甚至会导致整个硬盘的数据无法读取。 

    5.硬盘保护软件造成的异常 

    容易造成硬盘异常的,还有硬盘保护软件。比如“还原精灵”,由于很多人不注意在重装系统或是重新分区前将它正常卸载,往往会 发生系统无法完全安装等情况。此时再想安装并卸载“还原精灵”,却又提示软件已经安装,无法继续,陷入死循环中。这种故障是由于 “还原精灵”接管了INT13中断,在操作系统之前就控制了硬盘的引导,用FDISK/MBR指令也无法解决。 

    本来这只是软件的故障,但很多人经验不足,出了问题会找各种分区工具“试验”,甚至轻率地低级格式化,在这样的折腾之下,硬盘很可能提前夭折!

  • 社交场合不被接受的英语

            是节日聚会的时节了,但是你是否准备好用英语交谈了吗?在你遇到朋友,同事和新认识的朋友并和他们打招呼时,你自己语言中的某些话题就可能在英语中不合时宜了。这有一张社交场合可能引起侮辱和尴尬的语言表。

    You've put on weight.
    避免指出某人很胖或对体重发表意见,除非你试图用粗鲁的方式对待别人。谈论体重常常是非常敏感的话题,而类似"You're getting fat"评论是非常之粗鲁且侮辱人的。

    Oh you're pregnant!
    除非这是非常的明显,没有必要故意提起这事。如果你说错了的话,可能就会让对方感到非常的侮辱。看以上的内容。

    Is this your daughter?
    但是,如果她恰巧是他的女朋友怎么办呢?避免对对方关系的任何猜测,而是等待对方介绍,或是大胆的介绍自己。

    Your sister is so much prettier than you.
    在一些文化传统中这也许是没有任何问题的评论,但这可能会伤害你正在与之谈话的人。 取而代之,不要比较,只是提到他的姐姐非常漂亮就可以了。

    That color doesn't suit you.
    对某人外表否定的评论可能会破坏整个夜晚的气氛-特别是他们已经在着装上花费了很多心血。通过赞赏你喜欢的一件衣服或饰品试着让别人感到非常愉快。

    How much money do you make?
    这可能并不是侮辱,然而却是能让人尴尬的私人话题。在许多地方谈论钱或薪水都是不和时宜的。

    You look sick.
    如果这么直接说的话,可能会变成一种侮辱了。如果某人的确看起来不太健康,你可以问,"Are you feeling ok?"

    How old are you?
    对许多人来说,年龄是敏感的话题,很多人不愿透露他们的具体年龄。不要问这样的问题-除非你是和一个6岁的小孩在谈话。他们可愿意告诉别人年龄了!

    总之话题不要太私人化或否定。在社交场合,甚至在所有的场合,能按照一句英国流行的谚语做是非常得体聪明的:"If you can't say anything nice, don't say anything at all."

  • 你忘记了多少密码?(NewHua)

            在日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器、打不开文件、不能聊天...。

       也许还会造成很大的损失!下面我们就介绍电脑操作中常用密码的破解方法,希望能解你燃眉之急!

       一、遗忘了SYSTEM密码

       如果你遗忘了CMOS设置中的SYSTEM密码,就无法启动机器了,解决的办法只能是:打开机箱,把电池取下、正负极短接,给CMOS放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置。

       注意:有些主板设置了CMOS密码清除跳线,请参照主板说明书将该跳线短接,这样也可以清除CMOS密码。

       二、遗忘了SETUP密码

       遗忘了该密码,就不能进行CMOS设置了。如果你能使用计算机,但不能进入CMOS设置,可以这样解决:在DOS状态下启动DEBUG,然后输入如下命令手工清除SETUP密码:

      _ o 70 16

       _ o 71 16

       _ q


       你也可以 用CMOS密码破解软件来显示CMOS密码,这样的软件有很多,例如Cmospwd(点击下载),它支持Acer、AMI、AWARD、COMPAQ、DELL、IBM、PACKARD BELL、PHOENIX、ZENITH AMI等多种BIOS),在DOS下启动该程序,CMOS密码就会显示出来。

       三、遗忘了Windows登录密码

       WinMe/98下对策:开机后按F8键选择DOS启动,然后删除Windows安装目录下的*.PWL密码文件、以及Profiles子目录下的所有个人信息文件,重新启动Windows后,系统会弹出一个不包含任何用户名的密码设置框,此时无需输入任何内容,直接单击“确定”,登录密码即被删除。

       另外,将注册表数据库HKEY_LOCAL_MACHINE、Network、Logon分支下的UserProfiles修改为“0”,然后重新启动Windows也可达到同样目的。

      WinXP/2000下对策:删除系统安装目录\system32\config下的SAM文件,重新启动,此时管理员Administrator账号已经没有密码了,用Administrator帐户登陆系统,不用输入任何密码,进入系统后再重新设置登陆帐户密码即可。

       四、遗忘了Windows屏保密码

       解决方法:在开机后按F8键,选择安全模式启动,进入Windows后,右击桌面空白处,从弹出的快捷菜单中选择“属性”/屏幕保护,取消“密码保护”即可。

       五、遗忘了Windows电源管理密码

       Windows的电源管理功能也可以设置密码,启用此功能后,当系统从节能状态返回时就会要求输入密码。

       如果你遗忘了该密码,可以使用前面破解Windows登录密码的那种方法去破解。

       六、遗忘了微软Office密码

       解决方法:使用破解Office系列文档密码的软件,这样的软件有很多,例如AOPR(下载网址http://www.elcomsoft.com/),该软件可以同时对微软Office系列Word、Excel及Access等软件所生成的密码进行破解,还可以对Word的*.DOT模板文件的密码进行搜索。
      
       七、遗忘了WinZip压缩包密码

       解决方法:用软件UZPC(Ultra Zip Password Cracker,点击下载)找回丢失的密码。使用该软件时要先设置适当的解密方式,例如“后门方式”、“穷举方式”、“字典方式”和“模式匹配方式”等,一般采用“Brute Force穷举方式”,然后软件就会对所有可能的密码进行测试,直至找出最后的结果。

       八、遗忘了RAR压缩包密码

       遗忘了RAR压缩包密码后,你可(点击这里)下载一个CRARK软件来对其进行破解,它主要通过命令行来实现对RAR压缩包的密码进行破解。使用时一般只需直接使用“CRARK RAR压缩包文件名”命令,利用缺省参数即可进行破解。

       九、遗忘了QQ/ICQ密码

       为保护QQ密码,你应该赶快到这里申请密码保护。假如你忘记了QQ密码、或者密码被盗时,只需填写正确的信息即可取回。

       如果你要找回ICQ密码,可以使用软件ICQ Password Revealer(http://www.encrsoft.com/),这是一个DOS下的命令行实用软件,你只需在ICQ安装文件夹的NEWDB子文件夹下执行该文件,然后按照屏幕提示输入自己的UIN,系统即会找回“久违”的ICQ密码。

       十、遗忘了OE密码

       如果你忘了密码,无法进入OutLook Express阅读收到的邮件、使用通讯簿等,可以这样破解:重启计算机并按F8,选择“安全模式”,再启动OE就不需要密码了,然后你可以重建一个用户(不能修改密码),把信息导入新用户信箱即可。

       十一、遗忘了Foxmail帐户密码

       解决方法:消除忘记的Foxmail帐户密码。首先打开Foxmail,新建一个帐户(帐户名任意,例如如lacl1),然后退出Foxmail;运行Windows资源管理器,找到Foxmail\MAIL\lacl1文件夹,里边有个“account.stg”,把它复制到忘记密码的帐户(例如“lacl”)目录中,直接覆盖原来的“account.stg”文件;再重新运行Foxmail,打开忘记密码的帐户,呵呵,怎么连“口令提示框”也没有?现在你就可以直接打开忘记密码的帐户,而且帐户中原来的邮件一封都不会少!

  • 几种常见的字符串格式化输出

    可以使用 Format 方法将字符串表示为规定格式。规定格式的一般形式为:

    {N [, M][: formatCode]}

    其中:

    N 是从零开始的整数,表示第几个参数。
    M 是一个可选整数,表示最小宽度。若该参数的长度小于M ,就用空格填充。
    如果 M 为负,则左对齐;
    如果 M 为正,则右对齐。
    如果未指定 M,则默认为零。

    formatCode 是可选的格式化代码字符串。(详细内容请搜索“格式化字符串”查看)
    必须用“{”和“}”将格式与其他字符分开。如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即: “{{”或者“}}”。

    常用格式举例:

    (1) int i=12345;
    this.textBox1.Text=i.ToString();
    //结果 12345(this指当前对象,或叫当前类的实例)
    this.textBox2.Text=i.ToString("d8");
    //结果 00012345

    (2) int i=123;
    double j=123.45;
    string s1=string.Format("the value is {0,7:d}",i);
    string s2=string.Format("the value is {0,7:f3}",j);
    this.textBox1.Text=s1 ;
    //结果 the value is 123
    this.textBox2.Text=s2;
    //结果 the value is 123.450

    (3)double i=12345.6789;
    this.textBox1.Text=i.ToString("f2"); //结果 12345.68
    this.textBox2.Text=i.ToString("f6");
    //结果 12345.678900

    (4)double i=12345.6789;
    this.textBox1.Text=i.ToString("n"); //结果 12,345.68
    this.textBox2.Text=i.ToString(“n4”); //结果 12,345.6789

    (5)double i=0.126;
    string s=string.Format("the value is {0:p}",i);
    this.textBox1.Text=i.ToString("p"); //结果 12.6%
    this.textBox2.Text=s; //结果 the value is 12.6%

    (6) DateTime dt =new DateTime(2003,5,25);
    this.textBox1.Text=dt.ToString("yy.M.d");
    //结果 03.5.25
    this.textBox2.Text=dt.ToString(“yyyy年M月”);
    //结果 2003年5月

    (7) int i=123;
    double j=123.45;
    string s=string.Format("i:{0,-7},j:{1,7}",i,j);
    //-7表示左对齐,占7位
    this.textBox1.Text=s ;
    //结果i:123 ,j: 123.45
  • ADO.NET 2.0 Dataset和Datatable 特性体验(ChinaITLab)

    1.新的索引引擎更快的执行效率,下面这段代码在2003中需要157秒,在2005中只要11秒就可以完成:


                DataSet ds = new DataSet();

                ds.Tables.Add("BigTable");
                ds.Tables[0].Columns.Add("ID", Type.GetType("System.Int32"));
                ds.Tables[0].Columns["ID"].Unique = true;
                ds.Tables[0].Columns.Add("Value", Type.GetType("System.Int32"));

                Cursor.Current = Cursors.WaitCursor;

                DateTime datBegin = DateTime.Now;

                Random rand = new Random();
                int i, intValue;
                DataRow dr;

                for (i = 1; i <= 500000; i++)
                {
                    try
                    {
                        intValue = rand.Next();

                        dr = ds.Tables[0].NewRow();

                        dr["ID"] = intValue;
                        dr["Value"] = intValue;

                        ds.Tables[0].Rows.Add(dr);
                    }
                    catch { }
                }

                Cursor.Current = Cursors.Default;

                MessageBox.Show("Elapsed Time: " + (DateTime.Now - datBegin).Seconds.ToString());
                MessageBox.Show("count = " + ds.Tables[0].Rows.Count.ToString());


    2.Dataset可以序列化为二进制文件


     string connstr = "server=(local);database=northwind;integrated security=true;async=true";

                DataSet ds = new DataSet();
                SqlDataAdapter dadpt = new SqlDataAdapter("select * from [order details]", connstr);
                dadpt.Fill(ds);

                BinaryFormatter bf = new BinaryFormatter();
                FileStream fs = new FileStream(@"c:\xml1.txt",FileMode.OpenOrCreate);

                ds.RemotingFormat = SerializationFormat.Binary;

                bf.Serialize(fs,ds);    

     3.更独立的Datatable


               DataTable Write XML  string connstr = "server=(local);database=northwind;integrated security=true;async=true";
                SqlDataAdapter dadpt = new SqlDataAdapter("select * from [order details]", connstr);
                DataTable dt = new DataTable("Customer");
                dadpt.Fill(dt);

                dt.WriteXml(@"c:\DataTable.xml",true);
                dt.WriteXmlSchema(@"c:\DataTableSchema.xml");   DataTable Read XML
     StreamReader sr = new StreamReader(@"C:\DataTableSchema.xml");

                DataTable dt = new DataTable();
                dt.ReadXmlSchema(sr);

                dt.ReadXml(new StreamReader(@"c:\dataTable.xml"));

                this.dataGridView1.DataSource = dt;    DataTable Merge
     string connstr = "server=(local);database=northwind;integrated security=true;async=true";
                SqlDataAdapter dadpt = new SqlDataAdapter("select * from customers", connstr);
                DataTable dt = new DataTable("Customer");
                dadpt.Fill(dt);

                SqlDataAdapter dadpt1 = new SqlDataAdapter("select * from customers", connstr);
                DataTable dt1 = new DataTable("Customer1");
                dadpt1.Fill(dt1);

                dt.Merge(dt1);

                this.dataGridView1.DataSource = dt;  DataTable Load DataReader
     string connstr = "server=(local);database=northwind;integrated security=true;async=true";
                SqlConnection conn = new SqlConnection(connstr);
                conn.Open();
                SqlCommand cmd = new SqlCommand("select * from [order details]", conn);
                SqlDataReader dr = cmd.ExecuteReader();

                DataTable dt = new DataTable("Customer");
                dt.Load(dr);

                this.dataGridView1.DataSource = dt;

  • 将Asp.net页面输出为HTML

    将Asp.net页面输出为HTML 的代码片段:(C#)

    WebRequest mywebrq;

    WebResponse mywebresp;

    StreamReader sr;

    Streamwriter sw;

    Private void Page_Load(object sender,EventArgs e)

    {

    mywebreq=WebRequest.Create(http://localhost/Test.aspx);

    mywebresp=mywebreq.GetResponse();

    sr=new streamReader(mywebresp.GetResponsestream());

    strHtml=sr.ReadToEnd();

    sw=File.CreateText(server.mappath("Test.htm"));

    sw.writeling(strHtml);

    sw.close();

    Response.writeFile(Server.Mappath("Test.htm"));

    }

  • ADO.NET命名规则

    数据类型

      数据类型简写

         标准命名举例

    Connection

        con

             conNorthwind

    Command

        cmd

             cmdReturnProducts

    Parameter

        parm

             parmProductID

    DataAdapter

        dad

             dadProducts

    DataReader

        dtr

             dtrProducts

    DataSet

        dst

             dstNorthWind

    DataTable

        dtbl 

             dtblProduct

    DataRow

        drow

             drowRow98

    DataColumn

        dcol 

             dcolProductID

    DataRelation

        drel

             drelMasterDetail

    DataView

        dvw 

             dvwFilteredProducts

  • 微软首席软件设计师:网络服务不会取代软件(转自新浪)

            北京时间7月30日消息,据国外媒体报道,微软首席软件设计师雷·奥齐(Ray Ozzie)本周表示,网络服务是传统软件的有益补充,但并不会取代传统软件。

      奥齐在微软分析师会议上表示,该公司正在考虑将现有软件转换为网络服务。他说:“网络服务商机可以看作是一种添加剂,它有助于增加微软现有软件授权模式和服务业务模式的营收。”微软的战略是将不同设备连接到不同网络上,使消费者可以通过计算机、手机、电视和游戏机等不同系统获得同样的信息和娱乐。今年6月,奥齐取代比尔·盖茨成为微软新任首席软件设计师,盖茨将继续担任微软董事会主席。

      一些业内人士表示,网络服务将彻底取代传统计算机软件。奥齐并不赞同这一说法,他认为二者是一种相辅相成的关系,网络服务不会取代传统软件。Google、Salesforce.com以及数千家新兴网络公司都声称,“服务型软件”才是未来的发展方向。奥齐和其它微软高管则认为,未来的行业模式是“软件加服务”。

      据奥齐称,微软新推出的互联网服务平台Windows Live将担当集中服务中心的角色,把微软的企业软件、消费服务和娱乐系统联系在一起。除微软之外,IBM、甲骨文和SAP等软件巨头也一直致力于通过网络为客户提供服务,而不只是产品。奥齐表示,对于任何科技公司来说,向服务转型都非常必要。

  • 如何在 DotNet 中操作 IIS [ChinaITLab]

        编程控制IIS实际上很简单,和ASP一样,。Net中需要使用ADSI来操作IIS,但是此时我们不再需要GetObject,因为。Net为我们提供了更加强大功能的新东西。

        System.DirectoryServices命名空间中包括了些强大的——DirectoryEntry,DirectoryEntries,它们为我们提供了访问活动目录的强大功能,在这些类允许我们操作IIS、LDAP、NDS以及WinNT.

        不过我们此处只谈IIS的控制,一般来说,我们操作IIS一般都是对虚拟目录的操作,因此我将此列为主要的内容来讲。

        为了搞清楚IIS的控制语法,我们就必须了解IIS元数据(Metabase)的层次结构。其中的每一个节点称之Key,而每个Key可以包含一个或多个值,这些值就是我们说的属性(properties),IIS元数据中的Key与IIS中的元素是相符的,因此元数据中的属性值的设定是会影响IIS中的设置。这就是我们编程的基本思路和核心。

        另外还要了解一下Schema这个概念。它表示IIS中构架的名称,即可以理解IIS元数据中Key的类型,具体点说就是指每个结点的类型。我们知道,IIS中有虚拟目录,普通目录,以及文件这些东东,而这些都属于IIS的元素,区分的他们的标帜就是Schema.比如虚拟目录的Schema就是"IIsVirtualDir",普通目录就是"IIsWebDir".这样我们添加、删除目录时,IIS就知道我们添加的是虚拟目录还是普通目录。

        创建虚拟目录

        DirectoryEntry是。Net给我们的一大礼物,他的名字我们就知道他的功能——目录入口。使用过ADSI的人都知道操作IIS,WinNT这些时,我们还需要提供他们的Path,操作IIS时,这个Path的格式为:

        IIS://ComputerName/Service/Website/Directory

        ComputerName:即操作的服务器的名字,可以是名字也可以是IP,经常用的就是localhost

        Service:即操作的服务器,IIS中有Web,也有FTP,还有SMTP这些服务,我们主要是操作IIS的Web功能,因此此处就是"W3SVC",如果是FTP则应是"MSFTPSVC"

        WebSite:一个IIS服务中可以包括很多的站点,这个就用于设置操作的站点。他的值是一个数字,默认是1,表示缺省站点,如果有其它,则从1开始依次类推。

        Directory:不用说,即操作的目录名称,一个站点一般顶层目录为"ROOT",其它目录则是他的孩子(Child)。

        首先我们获取一个站点的顶层目录(根目录):

        DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");

        如果我们创建这个对象是没有发生异常,则表示这个目录是真实存在的。

        下面我们来添加新的虚拟目录,比如我们要加的是"Aspcn":

        DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn","IIsWebVirtualDir");

        newVirDir.Invoke("AppCreate",true);

        newVirDir.CommitChanges();

        rootfolder.CommitChanges();

        创建目录的思路很简单,即在根目录的子集(rootfolder.Children)中再添加一条记录,这里使用的是DirectoryEntries类中的Add方法,它返回的是一个DirectoryEntry,表示新加入的目录,第一个参数是虚拟目录的名字,第二个则是Schema的类名以表明我们加入的目录类型。然后再使用DirectoryEntry的Invoke方法,调用ADSI中的"AppCreate"方法将目录真正创建(似乎不走这一步也可以创建目录成功,但是为了保险起见,大家还是用吧),最后便是依次调用新、根目录的CommitChanges方法,确认此次操作。

        在创建新目录时,我们也可以同时给这个目录的属性赋值,但是我的实战经验告诉我,最好不要这样做,如果创建时就赋值,将有很多属性不能赋值成功,比如重要的表示真实目录的Path属性。因此飞刀建议大家最好是先创建目录,然后再赋值,即更新目录信息。

    更新虚拟目录

        相信大家对IIS都比较熟悉,了解IIS中一些重要的设置,如可读(AccessRead)、可写(AccessWrite)、可执行(AccessExecute)等。这些都可通过对DirectoryEntry的Properties属性集合的赋值来实现。赋值可以通过两种方式来完成:

        第一种是调用Properties集合的Add方法,如:

        dir.Properties["AccessRead"].Add(true);

        第二种是对第一个索引值赋值:

        dir.Properties["AccessRead"][0] = true;

        这两种方法都是可行的。具体是要看你的喜好了。

        在进行赋值之前我们还是要确定要要赋值的目标吧:)这里我们使用DirectoryEntries类的Find方法,如:

        DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");

        找到了,我们就可以赋值了。赋值时一定要好好看看啊,虚拟目录的属性值可以超多,一查一大堆……:(太多了,飞刀我也不重复了,大家去微软的站点上查:)

        比较常用的有:AccessRead,AccessWrite,AccessExecute,AccessScript,DefaultDoc,EnableDefaultDoc,Path

        删除虚拟目录

        删除虚拟目录的方法也很简单,就是找到你要删除的虚拟目录,然后调用AppDelete方法。

        DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");

        de.Invoke("AppDelete",true);

        rootfolder.CommitChanges();

        还有一种方法,就是调用Root目录的Delete方法。

        object[] paras = new object[2];

        paras[0] = "IIsWebVirtualDir"; //表示操作的是虚拟目录

        paras[1] = "Aspcn";

        rootfolder.Invoke("Delete",paras);

        rootfolder.CommitChanges();

  • .Net 缓存代理类的浅析(ChinaItLab)

    EntityData为实体数据类

        我们这里将实体数据进行缓存,缓存方法是

        //从Web.Config取得对缓存过期的设置

        ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();

        //获得缓冲对象

        CacheManager cm=CacheManager.GetCacheManager();

        存储

        cm.Add(EntityKeyCreator.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

        此类可以做实体代理类

        using Microsoft.ApplicationBlocks.Cache;

        /// <summary>

        /// 缓冲实体

        /// </summary>

        /// <param name="entity">实体数据</param>

        public static void CacheEntity(EntityData entity)

        {

        if(entity.IsEmpty)

        return;

        ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();

        //获得缓冲对象

        CacheManager cm=CacheManager.GetCacheManager();

        //存储

        cm.Add(ExpireTerm.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

        }

        ExpireTerm.class

        using Microsoft.ApplicationBlocks.Cache;

        internal static ICacheItemExpiration[] GetExpirationPolicy()

        {

        if(Object.Equals(configSetting,null))

        {

        configSetting = (ICacheItemExpiration[])ConfigurationSettings.GetConfig("TopCoolExpireTerm");

        }

        return configSetting;

        }

        internal static string CreateKey(EntityData entity)

        {

        DataSet ds = new DataSet();

        DataColumn[] keyColumns;

        if(entity.Tables.Contains(entity.MainTableName))

        keyColumns = entity.Tables[entity.MainTableName].PrimaryKey;

        else

        keyColumns = entity.CurrentTable.PrimaryKey;//

        StringBuilder sb = new StringBuilder(entity.EntityTypeName);

        //用:分隔实体类列名

        for(int i=0;i<keyColumns.Length;i++)

        {

        sb.Append(":");

        sb.Append(entity[keyColumns [ i ].ColumnName].ToString());

        }

        return sb.ToString();

        }

        注意:EntityData从DataSet 继承过来。

  • 让VisualStudio的StartPage关联自己的博客

            使用过VS2003的朋友一定对start page印象深刻吧.它可以加载msdn的技术文档,加载最新的新闻列表,但必须将列表的XML文件手动放在IDE/HTML/2052/CUSTOM之下,改变起来也是十分麻烦.
            自从VS2005出来后,WEB风格的环境使得StartPage更像是一个浏览器,并且启动时加载的内容完全由自已的喜好来定义,简单而且随时可以变更.
            在Tools--Optons--StartUp--StartPage News Channel一栏填上自己获取博客的RSS列表的URL,在At StartUp一栏选择Show Start Page一项,等待更新的时间间隔一过(默认是60秒),重起一遍就能看到效果了.赶紧来试试吧.
  • 深度发掘智能ABC(推荐)

            许多朋友在输入中文时,都使用智能ABC输入法,可是要想更快速、更方便,你就一定得了解其中“v”和“i”这两个字母的秘密。


      “v”的妙用

      用智能ABC输入含有英文的中文语句时,使用Ctrl+Space切换中英文输入状态十分麻烦。其实智能ABC在输入拼音的过程中,如果需要输入英文,可以不必切换到英文方式。键入“v”再输入想输入的英文,按空格键,英文字母就会出现,而“v”不会显现出来。比如输入“venglish”按空格,就会得到“english”。

      “v”也可输入图形符号。在智能ABC输入法的中文输入状态下只要输入“v1-v9”就可以输入GB-2312字符集1-9区各种符号。比如想输入“Δ”,就可以输入“v6”然后选择“4”就得到了“Δ”;想输入“&&”,输入“v3”然后选择“6”等等,非常方便。

      “i”也神奇 

      字母和量词的对应

      a 秒 b 百 c 厘 d 第 e 亿 f 分    g 个
            h 时 i 毫    j 斤 k 克 l 里 m 米   n 年
            o 度 p 磅 q 千 r 日 s 十 t 吨
      u 微 w 万 x 升 y 月 z 兆

      智能ABC还提供了阿拉伯数字和中文大小写数字的转换能力,可以对一些常用量词简化输入。“i”为输入小写中文数字的前导字符,“I”为输入大写中文数字的前导字符。比如输入“i7”就可以得到“七”,输入“I7”就会得到“柒”。输入“i2000”就会得到“二○○○”这几个困扰很多人的数字。输入“i+”会得到“加”,同样“i-”、“i*”、“i/”对应“减”、“乘”、“除”。

      对一些常用量词也可简化输入,输入“ig”,按空格键,将显示“个”;“ij”得到“斤”(系统规定数字输入中字母的含义见上)。“i”或“I”后面直接按空格键或回车键,则转换为“一”或“壹”;“i”或“I”后面直接按中文标点符号键(除“”外),则转换为“一+该标点”或“壹+该标点”。

  • Windows自带的一个无敌命令(推荐)

            杀进程很容易,随便找个工具都行。比如IceSword。关键是找到这个进程的启动方式,不然下次重启它又出来了。顺便教大家一招狠的。其实用Windows自带的工具就能杀大部分进程:  

      c:\>ntsd -c q -p PID  

      只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。ntsd从2000开始就是系统自带的用户态调试工具。被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简单的命令,比如退出(q),用-c参数从命令行传递就行了。Ntsd 按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。用法:开个cmd.exe窗口,输入:  

      ntsd -c q -p PID  

      把最后那个PID,改成你要终止的进程的ID。如果你不知道进程的ID,任务管理器->进程选项卡->查看->选择列->勾上"PID(进程标识符)",然后就能看见了。

            xp下还有两个好东东tasklist和tskill。tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,语法很简单:tskill 程序名。如果觉得有不想看到的进程,不妨一试.

  • Google可当编译器使---利用Google查找程序中的错误(风行社区)

    似乎Google现在已经成了万能的代名词,Google大学,利用Google搜索恶意软件, Google盲人搜索等等,Google的功能我们数也数不清.如今,国外的一个站点Bugle利用Google来代替编译器,利用google,用户可以查找代码中一些常见的错误.


    似乎Google现在已经成了万能的代名词,google大学,利用google搜索恶意软件, google盲人搜索等等,Google的功能我们数也数不清.如今,国外的一个站点Bugle利用Google来代替编译器,利用google,用户可以查找代码中一些常见的错误,例如:缓冲区溢出、格式化字符串等等.用法如下例所示:

    简单的字符串拷贝:strcpy(buf,str)

    这是一个简单的C格式的字符串拷贝函数的应用,目的是将str中的字符串拷贝到buf变量中.假如你想尝试使用strcpy(buffer|buf,str),但是你又不知道这是否是错误的,你可以尝试在google中进行一下内容的搜索:

    "strcpy(buffer|buf,str)" filetype:c

    Google返回了互联网上公开的C源代码中含有strcpy(buf,str)的内容进行检索,我们发现,并没有我们所搜索的内容信息,于是,我们基本可以断定我们的语法有错误.

    当然,Google的这个功能只是局限于将你的代码与互联网上现有代码进行一个比较,然后给出一个参考,它只能进行简单的判断,对于复杂的逻辑错误等并不能进行判断.

    但是,Google的这个功能还是使我们看到了 Google功能的强大.
  • 受益匪浅的42句话(转)

    1. 生气是拿别人做错的事来惩罚自己。

    2.明天的希望,让我们忘了今天的痛苦。

    3.发光并非太阳的专利,你也可以发光。

    4.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。

    5.你可以用爱得到全世界,你也可以用恨失去全世界。

    6.真正的爱,应该超越生命的长度、心灵的宽度、灵魂的深

    度。

    7.爱的力量大到可以使人忘记一切,却又小到连一粒嫉妒的沙石也不能容纳。

    8.不论你在什么时候开始,重要的是开始之后就不要停止;不论你在什么时候结束,重要的是结束之后就不要悔恨。

    9.抱最大的希望,尽最大的努力,做最坏的打算。

    10.有理想在的地方,地狱就是天堂。有希望在的地方,痛苦也成欢乐。

    11.上帝从不埋怨人们的愚昧,人们却埋怨上帝的不公平。

    12.美好的生命应该充满期待、惊喜和感激。

    13.世上最累人的事,莫过于虚伪地过日子。

    14.觉得自己做得到和做不到,其实只在一念之间。

    15.少一点预设的期待,那份对人的关怀会更自在。

    16.人只要不失去方向,就不会失去自己。

    17.如果你曾歌颂黎明,那么也请你拥抱黑夜。

    18.问候不一定要慎重其事,但一定要真诚感人。

    19.人生重要的不是所站的位置,而是所朝的方向。

    20.当你能飞的时候就不要放弃飞。当你能梦的时候就不要放弃梦。当你能爱的时候就不要放弃爱。

    21.人总是珍惜未得到的,而遗忘了所拥有的。

    22.一个今天胜过两个明天。

    23.要铭记在心;每天都是一年中最美好的日子。

    24.乐观者在灾祸中看到机会;悲观者在机会中看到灾祸。

    25.有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧。

    26.人生最大的错误是不断担心会犯错。

    27.把你的脸迎向阳光,那就不会有阴影。

    28.经验是由痛苦中粹取出来的。

    29.用最少的悔恨面对过去。用最少的浪费面对现在。用最多的梦面对未来。

    30.如你想要拥有完美无瑕的友谊,可能一辈子找不到朋友。

    31.不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

    32.要纠正别人之前,先反省自己有没有犯错。

    33.因害怕失败而不敢放手一搏,永远不会成功。

    34.要克服生活的焦虑和沮丧,得先学会做自己的主人。

    35.你不能左右天气,但你能转变你的心情。

    36.孤单寂寞与被遗弃感是最可怕的贫穷。

    37.得意时应善待他人,因为你失意时会需要他们。

    38.希望,是一种甜蜜的等待;想念,是一份温馨的心情;朋友,是一生修来的福分;爱情,是一世难解的缘分。祝你在人生的道路上多点快乐!多点开心!

    39.世界上有两种人:索取者和给予者。前者也许能吃得更好,但后者绝对能睡得更香。

    40.分离对爱情的作用和风对火的作用相同:熊熊烈火被风越吹越旺,小火苗被风一吹就灭。

    41.1头狮子领导下的100只绵羊,要比1只绵羊领导的100头狮子可怕得多。

    42.我们向来喜欢崇拜自己的人,但我们不一定喜欢自己。

  • 夏天对付蚊子的三大"损招"(广为流传)

    所需工具:电蚊拍一支,小剪刀一把(越小越好)。


    第一招:活活饿死法

        先用电蚊拍电一只蚊子,时间要短,只需把它电晕,电死了可不好玩。

        再抓起晕蚊,用小剪刀小心翼翼地把蚊嘴(吸管)剪去,小心,不要剪去蚊头,不然

    蚊子死了可没的玩。再把蚊子放进蚊帐(为什么?),稍后再交待。

      过了一会儿,蚊子醒了,咦……嘴巴没了!还会飞,哈哈~~它再也吸不了你的血了,只好活活饿死。


    第二招:活活气死法

        用电蚊拍电晕一只蚊子,用剪刀小心剪去蚊子最前面的两条腿(蚊子共有6条腿, 比金封运放少两条)。经本人N次研究,发现蚊子要吸血一定要靠最前面两条腿才能平衡支撑蚊嘴,瞄准血管插入。好了,把剪去两条前腿的蚊子放进蚊帐。

        蚊子醒后,还好!嘴巴还在,再看,前腿没了,无论它怎么努力,都不能将蚊嘴准确地插进你的血管(功夫还没到家,又不会拄拐杖)。有嘴巴却吸不到美味的鲜血,还不把蚊子活活气死?!


    第三招:活活累死法

        电晕一只蚊子,用剪刀小心地剪去蚊子全部腿,一点不留。好了,蚊子没腿,就像一粒米,我就称它做“蚊米”。

        “蚊米”醒后,飞起来,以为自己逃脱了,因为没腿却不能停下来,只能躺下(蚊子从来没试过躺下睡觉)。因为害怕,只好拼命地飞……。最后,活活累死。

        好了,你现在可以钻进蚊帐,舒服地躺下。蚊帐里面有几只给你动过“大手术”的蚊子在飞。

        此时此刻,你再也不觉得蚊子讨厌,反而觉得蚊子“嗡嗡”的叫声是最美妙,最动听的音乐,可以安稳地睡一觉。

        最后一招,非常绝!以后或者不会再有蚊子进你的房子。

        将被你“修理”过的蚊子放走,让它飞出你家。离开你家的蚊子或者会对其它想飞进你家的蚊子说:这家人变态的,进去的同胞不是给剪去嘴巴,就是没了。

更多内容 下一页 »