小编Krr*_*Raj的帖子

NodeJS事件循环中的轮询阶段

我正在通过节点文档进行事件循环,我感到非常困惑.它说 -

timers: this phase executes callbacks scheduled by setTimeout() and 
setInterval().
I/O callbacks: executes almost all callbacks with the exception of close callbacks, the ones scheduled by timers, and setImmediate().
idle, prepare: only used internally.
poll: retrieve new I/O events; node will block here when appropriate.
check: setImmediate() callbacks are invoked here.
close callbacks: e.g. socket.on('close', ...).
Run Code Online (Sandbox Code Playgroud)

然后在详细的轮询阶段,他们说它执行使用计时器调度的计时器,并且还处理轮询队列中的i/o事件.我的困惑是,我们已经有那些回调的计时器阶段和i/o回调阶段,然后轮询阶段完成的工作是什么.它还说线程可能在轮询阶段睡觉,但我没有正确.
我的问题是 -

  1. 当我们已经有定时器和i/o回调阶段时,为什么轮询阶段正在执行定时器和i/o的脚本?
  2. 是否轮询阶段代表定时器执行回调和i/o回调阶段和定时器和回调阶段仅用于内部处理在此阶段没有执行回调?
  3. 我们在哪里可以将承诺放在这个循环中?之前我认为promises可以简单地认为是回调,我们可以将它们视为回调,但是在这个视频中,他说promises会进入内部事件循环,但是没有详细说明.

在这一点上我很困惑.任何帮助将不胜感激.

javascript event-loop node.js

7
推荐指数
2
解决办法
973
查看次数

将char指针指定给数组

 void fun(char arr[]){
 cout<<arr;//successfully received and printed

 }

main(){


   char *ptr="hello";
   fun(ptr);

   /*
   char arr2[]=ptr;  throws error....initialiser fails to determine size of arr2
   */

   getch();
   }`
Run Code Online (Sandbox Code Playgroud)

为什么我被允许传递一个char指针并在数组中接收它,但是不能直接将char指针指向array.据我所知,当我们将参数传递给一个函数时,赋值会隐式发生.所以为什么这种行为不同?

c++ arrays pointers

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

NodeJS 中抛出异常与错误对象

我正在尝试在 nodeJS 中实现一个实用程序库,我可以在不同的项目中使用它。我对如何正确处理错误感到困惑。
例如假设我有一个函数

function dateCompare(date1,operator,date2) // it can take either a date object or valid date string.
Run Code Online (Sandbox Code Playgroud)

现在假设提供了无效的输入 -
1.我可以像异步逻辑一样在结果中返回错误 - {error:true,result:""},但这会阻止我将我的函数用作 2.if((date1,'eq',date2) || (date3,'l3',date4)

如果我在这里抛出自定义异常,那么恐怕节点是单线程的并且创建错误上下文非常昂贵。

我们如何处理它既易于使用又不太昂贵?

在什么情况下抛出异常会更合适,即使代价太高?一些实际用例会非常有帮助。

node.js

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

B 树减少了多少磁盘访问?

我刚刚阅读了 B 树数据结构,我有一些问题。我心中有一个疑问,在任何博客中都没有解释(也许它太明显了,我错过了)。

B 树应该通过降低树的高度来减少磁盘访问。那么,如果减少磁盘访问次数是主要关注点,那么它有多大区别?假设我只使用二叉树,那么我的节点比 n 元 B 树的节点需要更少的空间。所以我可以在一个页面中容纳更多的节点,就像我可以处理胖 B 树节点一样。它究竟如何影响磁盘访问?我们只是在谈论最坏的情况吗?

b-tree data-structures

3
推荐指数
1
解决办法
2111
查看次数

无符号的int表示

 main() {

       unsigned int a=-9;
       printf("%d",a);//gives output -9


       cout<<a;// gives output 9429967287
       getch();

   }
Run Code Online (Sandbox Code Playgroud)

为什么它在两种情况下都提供不同的输出

'printf'和'cout'以不同的方式处理位模式吗?

为什么'printf'没有给出肯定答案?

c c++

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

Java中的AES加密 - 什么模式?

我需要一些端口代码javajavascript它处理加密.在给定相同密钥的情况下,我无法根据现有代码重现相同的密文.

我怀疑我无法弄清楚正确的模式.附上代码段 -

public String encrypt(String message, String enc_key) throws Exception {
    try {
        initEncrypt(enc_key);

        byte[] encstr = cipher.doFinal(message.getBytes());
        return HexUtil.HextoString(encstr);
    } catch (BadPaddingException nse) {
        throw new Exception("Invalid input String");
    }
}

public void initEncrypt(String key) throws Exception {
    try {
        skeySpec = new SecretKeySpec(HexUtil.HexfromString(key), "AES");
        cipher = Cipher.getInstance("AES");
        // cipher.
        cipher.init(1, skeySpec);
        System.out.println(cipher.getAlgorithm());
    } catch (NoSuchAlgorithmException nsae) {
        throw new Exception("Invalid Java Version");
    } catch (NoSuchPaddingException nse) {
        throw new Exception("Invalid Key");
    }
} …
Run Code Online (Sandbox Code Playgroud)

javascript java encryption

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