小编Tam*_*mil的帖子

Nodejs事件循环

nodejs架构内部有两个事件循环吗?

  • libev/libuv
  • v8 javascript事件循环

在I/O请求上,节点将请求排队到libeio,后者又通过使用libev的事件通知数据的可用性,最后这些事件是由v8事件循环使用回调来处理的吗?

基本上,libev和libeio如何集成在nodejs架构中?

有没有可用于提供nodejs内部架构清晰图片的文档?

javascript event-loop node.js libev

137
推荐指数
5
解决办法
3万
查看次数

javascript中的obj.length === + obj.length

在我遇到的许多地方的underscore.js源代码中

if (obj.length === +obj.length)
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,他们为什么要用它?

javascript underscore.js

28
推荐指数
2
解决办法
3989
查看次数

防止window.onload被覆盖javascript

如何克服事件处理程序被覆盖?我有一个剧本说a.js

window.onload = function () {
   //Handler in a.js
}
Run Code Online (Sandbox Code Playgroud)

另一个剧本说b.js

window.onload = function () {
   //Handler in b.js
}
Run Code Online (Sandbox Code Playgroud)

哪里,

a.js是我建立的第三方图书馆

b.js是使用我的脚本的发布者[我不能在这里做任何更改]

b.js中的onload处理程序是否会覆盖a.js的处理程序?

如果是,如何防止这种情况发生?

是否会在a.js中构建所有事件处理程序的队列,并在事件帮助中将它们解除?

但是a.js是否会知道事件的所有事件处理程序,直到事先b.js被加载?

思考和参考将有所帮助

javascript javascript-events

17
推荐指数
2
解决办法
7612
查看次数

RabbitMQ +内存限制

我只是查看RabbitMQ的配置细节并且遇到了

[{rabbit, [{vm_memory_high_watermark, 0}, 
           {disk_free_limit, {mem_relative, 1.0}}
          ]
}]
Run Code Online (Sandbox Code Playgroud)

这个配置是什么意思?

vm_memory_high_watermark设置为0表示=>立即阻止所有发布者启动rabbitmq应用程序?但我们仍然看到rabbitmq能够排队我们发送的任何消息.

16720 rabbitmq  20   0  142m  62m 2408 S    0  **1.6**   0:06.88 beam.smp
Run Code Online (Sandbox Code Playgroud)

每当我们向代理发送消息时,我们都会将此进程的内存使用量增加.那么,这是否意味着msgs在内存中虽然水印设置为0?

我们很想知道如果RAM的内存限制达到并且仍然发送消息会发生什么?发布商是否被封锁?或者如果可用,消息将被换出到磁盘?

memory memory-management rabbitmq

14
推荐指数
1
解决办法
2万
查看次数

Backbone渲染模型更新视图

我正在使用backbone.js编写示例应用程序.

在更新我的模型时,我以这种方式重新渲染我的视图

$('.target').html("");
$('.target').append(this.$el.html(this.template(model)))
Run Code Online (Sandbox Code Playgroud)

一旦在模型更新[在变化事件]之后重新渲染视图,附加到el孩子的事件就会丢失[似乎不像jQuery现场].这是一个已知问题还是我错过了什么?我应该尝试替换html而不是append小提琴

javascript backbone.js

12
推荐指数
1
解决办法
1万
查看次数

使用CQL jdbc驱动程序时应该是什么连接字符串

使用CQL jdbc驱动程序时连接字符串应该是什么?

我能在Java在线使用CQL JDBC驱动程序找到适当/完整的CQL示例吗?

java cql cassandra

8
推荐指数
1
解决办法
1万
查看次数

什么是package.json中的依赖 - nodejs

在我的节点项目中,我将独立模块构建到文件夹中,并将main.js作为入口点,并在与不同文件相同的文件夹中找到该模块的帮助程序.

Ex:
Aggregator:
     |___package.json
     |___main.js
     |___node_modules
         |_____helper1.js
         |_____helper2.js
Run Code Online (Sandbox Code Playgroud)

因此,node将从本地node_modules文件夹解析所有帮助程序对模块[Ex:Aggregator]的依赖性.以上结构的原因是,我不需要关心路径require

我使用package.json来指定入口点是main.js require,用于Aggregator

Ex:
//Sample.js
require('Aggregator'); // Resolves to Aggregator/main.js
Run Code Online (Sandbox Code Playgroud)

例如:Aggregator模块的package.json

  {
        "name": "Aggregator"
      , "description": "Returns Aggregates"
      , "keywords": ["aggregate"]
      , "author": "Tamil"
      , "contributors": []
      , "dependencies": {
            "redis": "0.6.7"
        }
      , "lib"           : "."
      , "main"          : "./main.js"
      , "version"       : "1.0"
    }
Run Code Online (Sandbox Code Playgroud)

这里的依赖列是什么?我提到了这个链接.即使我将redis的版本指定为10000而没有任何警告,我的代码似乎也能正常工作.我尝试从项目中删除我的redis模块,以测试节点是否接收它并解决依赖性,但事实并非如此.何时在package.json中使用该依赖属性?这只是一张备注供将来参考吗?

npm版本1.1.0-beta-4; 节点版本v0.6.6

package node.js npm

8
推荐指数
1
解决办法
1万
查看次数

Apache Drill通过Java连接

在整个Apache Drill的Wiki中,我只能看到通过SqlLine客户端运行的查询.除了REST API之外,是否有任何编程方式在Drill中运行查询?任何样品或指针?

或者它是否与使用JDBC驱动程序运行SQL查询等效?

apache hadoop apache-drill

6
推荐指数
1
解决办法
4476
查看次数

Redis连接从关闭事件中消失了

在我们的redis配置中,我们设置了超时:7秒

node_redis中,我们处理redis连接就绪和结束事件

client.on("ready", function() {
      logger.info("Connection Successfully Established to ", this.host, this.port);
}
client.on("end", function() {
    logger.fatal("Connection Terminated to ", this.host, this.port);
}
Run Code Online (Sandbox Code Playgroud)

样本日志

[2012-07-11 08:21:29.545] [FATAL]生产-连接终止端上为'xxx9' '6399'
[2012-07-11 08:21:29.803] [INFO]生产-连接成功建立' xxx9''6399'

但在某些情况下(最有可能的Redis正在关闭不通知客户端的连接),我们看到的命令队列越来越越积越多,并请求占用过多的时间来作出答复,直到时间节点Redis的客户能够感知的关闭事件].在所有这些情况下,返回带有此错误的命令回调Redis connection gone from close event.即使经过这么多等待.由于没有触发通常的结束事件,因为超时看起来好像这不是问题.

问题似乎与此类似 - http://code.google.com/p/redis/issues/detail?id=368

这是redis中发生的已知事情吗?

有没有办法指定执行命令[发送和接收回复]不应超过阈值并在这种情况下回复错误,而不是让客户端停止?

或者在socket_timeout这样的情况下是否还有另一种触发close事件的方法?

或者我们应该从redis方面检查一下?我们监控了我们的redis日志debug级别,我们发现与此问题无关

当我们在调试模式下运行node-redis时,我们显然能够看到客户端因命令队列中堆积的请求而停滞不前.我们在flush_on_error函数中记录了原因和队列长度.我们一直禁用offline_queuing.

样本日志

Redis连接已从关闭事件中消失.offline queue 0命令队列8

请求失败的响应时间:30388 ms [根据命令队列中的等待而变化.第一个排队的人有最大的响应时间和跟随他的人较少]

通常的Resonse时间:1毫秒

PS:我们也在node_redis中提出了一个问题

redis node.js node-redis

5
推荐指数
1
解决办法
5019
查看次数

根据其他属性动态限制 TypeScript 中对象属性的类型

type MatchOperator = "==" | ">" | "<";

type Criteria<T, P extends keyof T> = {
    field: P,
    value: T[P],
    operator: MatchOperator,
}

interface User {
    name: string;
    age: number;
    id: number;
}

const adultCriteria: Criteria<User, "age"> = {
    field: "age",
    operator: ">",
    value: 18
}
Run Code Online (Sandbox Code Playgroud)

value有没有更好的方法来限制基于使用 Typescript的类型,field如下所述?

const adultCriteria: Criteria<User> = {
    field: "age",
    operator: ">",
    value: 18
}
Run Code Online (Sandbox Code Playgroud)

javascript static-typing typescript

5
推荐指数
1
解决办法
2808
查看次数