从这个页面,我们知道:
链式比较比使用
and
运算符更快.写x < y < z
而不是x < y and y < z
.
但是,我得到了不同的结果测试以下代码片段:
$ python -m timeit "x = 1.2" "y = 1.3" "z = 1.8" "x < y < z"
1000000 loops, best of 3: 0.322 usec per loop
$ python -m timeit "x = 1.2" "y = 1.3" "z = 1.8" "x < y and y < z"
1000000 loops, best of 3: 0.22 usec per loop
$ python -m …
Run Code Online (Sandbox Code Playgroud) 目前,我正在阅读源代码Protocol Buffer
,我发现这里enum
定义了一个奇怪的代码
~scoped_ptr() {
enum { type_must_be_complete = sizeof(C) };
delete ptr_;
}
void reset(C* p = NULL) {
if (p != ptr_) {
enum { type_must_be_complete = sizeof(C) };
delete ptr_;
ptr_ = p;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么enum { type_must_be_complete = sizeof(C) };
定义在这里?它是干什么用的?
通过安装最新的 mongo docker 镜像后
docker pull mongo:latest
docker run --name mongo -d mongo:latest
Run Code Online (Sandbox Code Playgroud)
然后进入这个docker容器并运行mongo
docker exec -it mongo /bin/sh
# mongo
/bin/sh: 2: mongo: not found
# env
HOSTNAME=2ffb8dac9717
HOME=/data/db
TERM=xterm
MONGO_PACKAGE=mongodb-org
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MONGO_MAJOR=6.0
JSYAML_VERSION=3.13.1
GOSU_VERSION=1.12
MONGO_REPO=repo.mongodb.org
PWD=/
MONGO_VERSION=6.0.1
Run Code Online (Sandbox Code Playgroud)
检查完文件夹后/usr/bin
,下面没有了mongo
。这里有什么遗漏吗?如何在mongodb 6.0 docker中运行mongo shell?
根据这篇文章,我们可以通过以下代码获得数字的所有除数.
for (int i = 1; i <= num; ++i){
if (num % i == 0)
cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)
例如,数字的除数24
是1 2 3 4 6 8 12 24
.
在搜索了一些相关帖子后,我没有找到任何好的解决方案.有没有有效的方法来实现这一目标?
我的解决方案
但是,它似乎不是一个好的.
对于此代码
var sum = () => {console.log(arguments); ... }
sum(2, 3)
Run Code Online (Sandbox Code Playgroud)
得到错误Uncaught ReferenceError: arguments is not defined
.
为什么arguments
没有在箭头功能中定义?
我们知道,[[0, 1], [2, 3], [4, 5]]
使用该方法展平数组reduce()
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
return a.concat(b);
});
Run Code Online (Sandbox Code Playgroud)
因此,如何扁平化这个数组[[[0], [1]], [[2], [3]], [[4], [5]]]
来[0, 1, 2, 3, 4, 5]
?
我尝试理解doc {} == true
部分后面的表达式.7.2.12
Ecma-262
- 如果Type(y)是布尔值,则返回比较结果
x == ToNumber(y)
结果ToNumber(true)
是1
,然后
{} == 1
- 如果Type(x)是Object而Type(y)是String,Number或Symbol,则返回比较结果
ToPrimitive(x) == y
.
我现在很困惑ToPrimitive({})
.
如果提示是"字符串",那么
一个.让methodNames为«"toString","valueOf"».
其他,
一个.让methodNames为«"valueOf","toString"».
应该ToPrimitive({})
被解释为{}.toString()
或{}.valueOf()
?
假设toString()
被调用.
如果Type(x)是String而Type(y)是Number,则返回比较结果
ToNumber(x) == y
那{} == true
可能是ToNumber(ToPrimitive({})) == ToNumber(true)
吗?
我发现strncpy_s()
在VS2013下定义为
errno_t __cdecl strncpy_s
(
_Out_writes_z_(_SizeInBytes) char * _Dst,
_In_ rsize_t _SizeInBytes,
_In_reads_or_z_(_MaxCount) const char * _Src,
_In_ rsize_t _MaxCount
);
Run Code Online (Sandbox Code Playgroud)
rsize_t
是:
typedef size_t rsize_t;
Run Code Online (Sandbox Code Playgroud)
我认为这是Visual Studio的一个技巧.但是,我发现此功能在此页面上定义如下
errno_t strncpy_s
(
char *restrict dest,
rsize_t destsz,
const char *restrict src,
rsize_t count
);
Run Code Online (Sandbox Code Playgroud)
为什么rsize_t
定义在这里?如果size_t
在这里使用怎么办?有什么特殊情况可以使用rsize_t
吗?
根据这篇文章,运行以下代码
> ~function () { console.log('foo');}()
foo
-1
Run Code Online (Sandbox Code Playgroud)
众所周知,上述匿名函数的返回值是undefined
.为什么~undefined
是-1
?我找不到任何类似的问题.
首先,我知道后面谈到的表达方式side-effects
,不应该在生产环境中使用.我只想JavaScript
通过他们了解.所有这些都经过测试Chrome
.
var a = 42;
var b = "42";
a + ++b; // result is 85
Run Code Online (Sandbox Code Playgroud)
这是我的理解a + ++b
,
根据运算符优先级,Prefix Increment (++)
(优先级15)优先级高于Addition(+)
(优先级13).可以解析VAR 来,请参阅.然后结果可能是.++b
ToNumber(GetValue(expr))
43
12.5.7 Prefix Increment Operator
a + 43
85
然而,
var a = 42;
var b = "42";
a++ + b; // "4242"
Run Code Online (Sandbox Code Playgroud)
为什么结果a++ + b
是"4242"
?
我试着理解结果"4242"
,似乎首先a++
返回42
,然后是42 + '42'
,首先 …
javascript ×5
c++ ×3
algorithm ×1
arrays ×1
docker ×1
ecmascript-6 ×1
enums ×1
math ×1
mongodb ×1
performance ×1
python ×1
size-t ×1
tr24731 ×1
undefined ×1