小编D. *_*dal的帖子

忘记在做... while 循环

我有一个烦人的错误,我忘记写do一个do ... while循环。

int main() {
  int status=1;
  /*do*/ {
    status = foo();
  } while (status);
}
Run Code Online (Sandbox Code Playgroud)

为什么这仍然编译和运行?在我看来,编译器应该拒绝这是荒谬的或至少发出警告(-Wall我的编译器选项中有)。我正在使用 C++11。

据我所知,大括号代码运行{ ... },然后程序检查 while 子句中的条件。

c++

59
推荐指数
3
解决办法
5891
查看次数

JavaScript:"TypeError:非法调用"但我没有调用任何函数

注意:我已经搜索过这个错误,但我发现的一切都是关于调用函数的.我没有打电话给任何功能.我只是想要访问一个属性.


我执行这个简单代码时遇到错误:

var a = document.getElementById("something");
var b = Object.create(a);
console.log(b.baseURI) //Throws error with any property of a
Run Code Online (Sandbox Code Playgroud)
<p id="something">Hi! I exist just for demo purposes. This error can occur with any element.</p>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.如果我试图从b... 的原型获取属性,代码工作正常

var a = document.getElementById("something");
var b = Object.create(a);
console.log( Object.getPrototypeOf(b.baseURI) ) //Works
Run Code Online (Sandbox Code Playgroud)

......还使用普通物体.

var a = {foo: "Foo!"};
var b = Object.create(a);
console.log(b.foo) //Works
Run Code Online (Sandbox Code Playgroud)

为什么会这样?对我来说完全是无稽之谈.MDN说:

在尝试访问对象的属性时,不仅要在对象上搜索属性,还要在对象的原型,原型的原型等上查找属性,直到找到具有匹配名称的属性或结束为止.到达了原型链.

b(在第一个例子中)的原型链是:

HTMLParagraphElement --> HTMLParagraphElement (the actual element object) --> HTMLParagraphElement --> HTMLElement --> …
Run Code Online (Sandbox Code Playgroud)

javascript

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

构造函数和类有什么区别?

所以我打算建立一个小型图书馆,但这个问题有多种应用。

我想知道使用构造函数和类创建对象之间的区别。例如,这段代码...

function Thing (name) {
    this.name = name;
    this.doSomething = function (){};
    alert("A new thing was created.");
}

var x = new Thing();
Run Code Online (Sandbox Code Playgroud)

...以及这段代码...

class Thing {
    constructor(name) {
        this.name = name;
        alert("A new thing was created.");
    }
    doSomething() {}
}

var x = new Thing();
Run Code Online (Sandbox Code Playgroud)

...产生相同的结果,但以不同的方式。

但是,我更熟悉构造函数,但我需要使用 getter 和 setter 创建对象。尽管MDN将类定义为“语法糖”,但我不知道是否可以使用构造函数定义 getter 和 setter。

还有,女巫的性能是最好的?

注意:我不是指使用Thing.prototype. 我想知道构造函数和类之间的区别。

javascript ecmascript-6

5
推荐指数
0
解决办法
2634
查看次数

添加新属性时,映射类型出现 ts(1170) 错误

我有以下代码:

enum A {
    FOO = 0,
    BAR = 1,
    BAZ = 2
}
type B = {
    [key in A]: number
}
declare let b: B;
Run Code Online (Sandbox Code Playgroud)

效果很好。我可以使用b[A.FOO]但不能b[123]。但是,我也希望能够使用b.length,但是当我向 type 添加属性时B,就像这样......

type B = {
    length: number,
    [key in A]: number
}
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误

类型文字中的计算属性名称必须引用类型为文字类型或“唯一符号”type.ts(1170) 的表达式
计算属性名称必须为“string”、“number”、“symbol”或“any”类型。ts(2464)

我该如何解决这个问题?

typescript

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

使用nodemailer通过zimbra smtp发送没有密码的电子邮件

我使用 nodemailer 在 web 应用程序中使用 keystonejs 作为 cms 发送电子邮件。Web 应用程序存储在一个服务器中,而电子邮件服务器存储在另一个服务器中,但服务器之间的 SMTP 通信不需要密码。现在,我需要在需要时使用没有密码字段的通用帐户向其他人发送电子邮件,因为这不是必需的。这是我的 nodemailer 配置:

var selfSignedConfig = {
            host: 'smtp.abc.cu',
            port: 25,
            secure: false, // use TLS
            auth: {
                user: email.email,
                pass: email.password //NOT REQUIRED
            },
            tls: {
                // do not fail on invalid certs
                rejectUnauthorized: false
            }
        };

        var transporter = nodemailer.createTransport(selfSignedConfig);
        // verify connection configuration
Run Code Online (Sandbox Code Playgroud)

和:

"email": {
    "email": "abcde@abc.cu",
    "password": ""
  }
Run Code Online (Sandbox Code Playgroud)

我卡在这,我曾尝试与"password": """password": " "并没有什么作品。电子邮件服务器是 Zimbra。这给了我以下错误:

*-------------------------*
The server IS NOT READY …
Run Code Online (Sandbox Code Playgroud)

email node.js nodemailer

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

AWS 中的 HDFS 或 S3 数据湖有什么区别?

我需要在AWS上构建一个数据湖,但我不知道S3与HDFS到底有什么不同。我在互联网上找到了一些答案,但我仍然不明白真正的区别。

我还需要知道是否有人有AWS中HDFS和S3的数据湖架构。

amazon-s3 amazon-ec2 hdfs data-lake

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

Rust 如何为向量分配更多空间?

考虑以下代码:

fn main() {
  let mut vec: Vec<u8> = Vec::new();
  vec.push(0);
  vec.push(1);
  vec.push(2);
  vec.push(3);
  vec.push(4);
  vec.push(5);
  vec.push(6);
  vec.push(7);
  vec.push(8);
}
Run Code Online (Sandbox Code Playgroud)

Vec::new()被调用时,Rust 不知道分配多少,每次它需要为一个向量分配更多空间时,它malloc以新的大小调用,然后将堆中旧位置的所有数据克隆到新位置,对?

Rust 知道要分配的新大小的策略是什么?

例如,每次将某些东西推送到向量上时,Rust 是否会像这样分配?

[]
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
etc...
Run Code Online (Sandbox Code Playgroud)

这似乎效率低下。也许 Rust 会做这样的事情:

[]
[0, <empty>]
[0, 1] 
[0, 1, 2, <empty>, <empty>, <empty>, <empty>, <empty>]
[0, 1, 2, 3, <empty>, <empty>, <empty>, <empty>]
[0, 1, 2, 3, 4, <empty>, <empty>, <empty>]
etc...
Run Code Online (Sandbox Code Playgroud)

memory-management vector rust

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

我是否正确理解了这个关于 getter 函数的规范?

在关于getter 的MDN 文档中,我看到:

它不得与另一个 get 或同一属性的数据条目一起出现在对象文字中({ get x() { }, get x() { } }并且{ x: ..., get x() { } }被禁止)。

我将此解释为一个对象中不能有超过 1 个 getter 方法,但这似乎不是问题。

o1 = {

get fun1() {console.log(5)},
get fun2() {console.log(6)},

};

o1.fun1;
o1.fun2;
Run Code Online (Sandbox Code Playgroud)

我的理解对吗?

javascript

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