小编pap*_*iro的帖子

如果将文件可写流传递给Node.js中的Console构造函数,是否异步写入它?

我已经阅读了有关Console对象的文档和关于进程I/O的说明,但无法确定以下是否会导致同步或异步操作:

const out = fs.createWriteStream('./out.log')
const logger = new Console(out)

logger.log('foo')
Run Code Online (Sandbox Code Playgroud)

我很好奇它是如何起作用的,特别是在*Nix系统上.但我不希望这在Windows上采取不同的行为.我问的原因是因为我已经构建了一个利用Console对象的记录器,但我不希望在生产过程中将日志写入文件时阻塞记录器.

logging asynchronous node.js

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

JavaScript中为什么~5 === -6?

注意:应从右到左阅读以下所有二进制表示.我不确定为什么我这样想他们,但我实际上并不知道人们也从左到右代表二元.混乱!

在MDN关于JavaScript的按位运算符(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_NOT)的文章中,它表示~运算符是按位运算NOT符.

在维基百科(https://en.wikipedia.org/wiki/Bitwise_operation#NOT)上,它表示"按位NOT或补码,是一个对每个位执行逻辑否定的一元运算,形成给定二进制的'补码' 0的位变为1,1的位变为0.

现在,取二进制数字5: 0101

如果我输入~5我的浏览器控制台,我会得到-6其二进制表示形式1110.我期望否定0101变成1010,实际上是10(如果最左边的数字被视为符号,则为-2).

我读到的JavaScript ~运算符的所有解释都说它将数字计算为 - (x + 1),但这并不能从逻辑上向我解释该运算符在"按位"级别上的作用.

基本上,0101成为1110.

目睹这种转变的中间步骤是什么?我看到前导位被翻转,从而改变了标志.但这就是我能收集的全部内容.

javascript binary bit-manipulation bitwise-operators

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

找不到宝石轨道(> = 0.a)(Gem :: GemNotFoundException)

我看到了其他一些问题,尝试了他们的建议,但没有一个对我有用。

我已经使用Rails大约一年了,刚开始一个新的Rails项目,突然遇到了问题。我卸载并尝试重新安装所有Ruby和Rails。Ruby很好,但Rails不好。

当我进入时rails s,我得到了can't find gem railties。我目前的Ruby版本是ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15],即使我一直试图通过rbenv设置ruby 2.3.0。

如果我尝试rails -v查看运行的版本,则会收到相同的错误。我正在使用Mac OS X El Capitan 10.11.6版。

ruby macos ruby-on-rails

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

是否对任何非延迟加载的模块使用@Injectable提供的In和提供的In:“ root”相同?

我已经仔细阅读了文档,尽管找不到确切的引用位置,但我的印象是,在急切加载的模块providers数组中声明服务将使单例适用于应用程序范围。如果这是真的,

是使用@Injectable providedIn任何非延迟加载模块一样providedIn: "root"

angular angular-di

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

CSS 中一个数字可以有多少个有效数字?

我的问题很简单,在浏览器在解释它时对数字进行舍入之前,我可以在 CSS 样式表中使用的值中包含多少(非零)小数位?

注意:我知道任何十进制像素都是四舍五入的(不同浏览器会有所不同),因为屏幕无法显示子像素单位。我要问的是四舍五入之前,将保留多少小数位以开始执行最终的浏览器渲染计算/四舍五入。

css

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

为什么我不能在64位机器上以无符号长整数存储2 ^ 64?

我错过了什么吗?我运行了以下内容:

$ uname -a
Linux archlinux 4.16.6-1-ARCH #1 SMP PREEMPT Mon Apr 30 12:30:03 UTC 2018 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

然后在C程序中:

long l;
printf("sizeof long: %d\n", sizeof l);
Run Code Online (Sandbox Code Playgroud)

哪个输出:

sizeof long: 8
Run Code Online (Sandbox Code Playgroud)

这是不是意味着每个long包含64位?但是当我执行以下代码行时:

printf("2^64: %ld\n",  1UL<<64);
Run Code Online (Sandbox Code Playgroud)

我从gcc收到以下警告:

sizeof.c:14:29:警告:左移计数> =类型宽度[-Wshift-count-overflow]

如果我将左移位减少到63,则警告消失,但输出:

2 ^ 64:-9223372036854775808

这让我相信我的无符号长度为64个可用位的假设是不正确的,但为什么呢?

c binary unsigned integer x86-64

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

如何在1字节的char中存储2个数字?

我有标题的问题,但如果没有,我怎么能只使用4位表示整数?

编辑真的我的问题是如何.我知道像c这样的语言有1个字节的数据结构,但是我怎么能用char之类的东西来存储两个整数呢?

c c++ binary fortran bcd

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

try catch javascript 语句中的未识别错​​误

我正在尝试实现一个(非常)简单的 try{}catch{} 块,如下所示:

try{
    var invoice = parseInt(localStorage[0]);
    if(invoice == NaN)
       throw "invoice not a number";
    localStorage[invoice] = Ticket;
    console.log("localStorage["+invoice+'] : '+localStorage[invoice]);
   }
   catch (e){
      console.log(e);
      this.test();
   }
Run Code Online (Sandbox Code Playgroud)

我所做的是用另一个函数手动清除 localStorage,从而将 localStorage[0] 设置为 undefined。当我 parseInt(localStorage[0]) 时,它返回 NaN,并将其存储到发票中。我在发票和 NaN 上使用了双重等于条件,所以,以防万一,即使 NaN 是一个字符串(它不应该是),它也应该是真的。

我的问题是:为什么当我说“throw...”时它不调用块的 catch 部分?

当我运行以下代码时,我在 Chrome 的控制台中得到以下输出:

localStorage[NaN] : [对象对象]

它甚至不运行 catch 块,事实上,它继续运行 try 块,即使它应该抛出异常。

为什么是这样?

html javascript

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

无法将结构转换为具有相同基础字段的不同类型

type Req struct {
    apiVersion       string
    path             string
    resourceEndpoint string
    accessKey        string
    log              *logrus.Entry
    incomingReq      interface{}
    httpClient       lib.HTTPClient
    redisClient      redis.Cmdable
    ctx              context.Context
} 

type TestReq struct {
    Req
}
Run Code Online (Sandbox Code Playgroud)

根据this this question及其答案,我觉得我应该能够做到以下几点:

req := &Req{}
req = TestReq(req)
Run Code Online (Sandbox Code Playgroud)

但是我在 VsCode 中收到此错误:

无法将 req(*Req 类型的变量)转换为 TestReq 编译器(InvalidConversion)

这两个结构体是否具有相同的底层字段?如果是这样,为什么第一个不能转换为第二个?

struct embedding type-conversion go

-2
推荐指数
1
解决办法
102
查看次数