代码之家  ›  专栏  ›  技术社区  ›  hvgotcodes

node.js节点误解?[关闭]

  •  4
  • hvgotcodes  · 技术社区  · 15 年前

    开发快速系统。

    或者,更现实地说,某人做事效率低下,处理请求需要很长时间(比如说半秒钟或其他时间)。感觉“无障碍”的说法——“快速系统”存在根本缺陷。

    有人能解释一下在这种情况下系统是如何避免性能问题的吗?好像会。。。

    2 回复  |  直到 14 年前
        1
  •  7
  •   MathGladiator    15 年前

    基本上,你的CPU速度很快。太快了。

    你的记忆也快疯了。

    你的硬盘不快。

    node.js节点目的是确保你的CPU在所有的时间都很忙,使缓慢的事情事件。也就是说,而不是

    var html = download_file_from_slow_internet(url);
     /* do what-ever-what-ever to that poor HTML */
    

    你会做一些像

    download_file_from_slow_internet_with_an_awesome_callback(url, function(html) {
     /* do what-ever-what-ever to that poor HTML */
    });
    

    做你想做的事情中最有可能受到CPU限制的事情。无论是谁,只要使用awesome回调函数从慢速互联网下载文件,就有责任确保它在某个时候调用你的回调函数。

    记住,“不太专业的程序员”是相对的。专业程序员知道并理解线程、锁定、条件、互斥、竞争条件。如果不使用多个线程,则可以避免所有问题。那么,为什么一开始就引入线程呢?

    你不得不使用状态机,而状态机在非专家的手中是令人不快的,而且极其麻烦的。如果你曾经在C语言中使用过低级别的socket状态机,那么你知道我在说什么。

    这里就是node.js节点骑着白马进来。与node.js节点,状态机是隐式的,使用闭包进行回调。它也被称为连续传递。

    现在的想法是,我说这样做,然后在其中传递一个函数,说“当你完成了,调用这个”。由于JavaScript支持闭包,因此可以使用该语言隐式地传递状态并构建状态机。

    我建议将它用于服务器原型,如果您担心JavaScript的性能问题,那么您可以帮助我 node.ocaml

        2
  •  3
  •   Mike Dunlavey    15 年前

    写了什么并不意味着它是对的。 你得用常识。