小编Dom*_*omi的帖子

C&C++:数组的指针和地址有什么区别?

C++ 11代码:

int a[3];
auto b = a;       // b is of type int*
auto c = &a;      // c is of type int(*)[1]
Run Code Online (Sandbox Code Playgroud)

C代码:

int a[3];
int *b = a;
int (*c)[3] = &a;
Run Code Online (Sandbox Code Playgroud)

的价值观bc是相同的.

b和之间有什么区别c?为什么他们不是同一类型?

更新:我将数组大小从1更改为3.

c c++ arrays pointers auto

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

Sequelize更新不再起作用:"缺少传递给更新的options参数中的属性"

官方API文档建议使用Model.update如下:

var gid = ...;
var uid = ...;

var values = { gid: gid };
var where = { uid: uid };
myModel.update(values, where)
.then(function() {
    // update callback
});
Run Code Online (Sandbox Code Playgroud)

但是这给了我:"缺少options参数中的属性传递给更新".文档还提到这种用法已被弃用.看到这个错误让我觉得,他们已经改变了它.我究竟做错了什么?

javascript node.js sequelize.js

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

检查在C++ 11中返回的std :: function是否为"valid"

我想像这样实现一个动态任务队列:

typedef std::function<void(void)> Job;
typedef std::function<Job(void)> JobGenerator;

// ..

JobGenerator gen = ...;
auto job = gen(); 
while (IsValidFunction(job))
{
    job();
}
Run Code Online (Sandbox Code Playgroud)

我该如何实施IsValidFunction?是否有一种默认值可供std::function检查?

c++ task-queue c++11

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

如何在Javascript中预先分配密集数组?

当使用new Array(size)构造函数,如果size不是一个常数,JS似乎产生了一个稀疏数组在某些浏览器(至少在铬),造成访问是使用默认的构造函数时相比要慢得多,如图所示这里.

这与我想要的完全相反:我预先分配给定大小的数组,以避免动态重新分配,从而提高性能.有没有办法实现这个目标?

请注意,这个问题不是关于new Array(size)ctor 的模糊性.我在这里发布了一个推荐.

javascript arrays performance

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

Web Worker 文件被缓存并且不会在 IE 11 中重新加载

我正在运行一个可以在 Chrome 和 Firefox 中运行的简单 HTML5 应用程序。它使用网络工作者,如下所示:

\n\n
var worker = new Worker("the/worker/URL/Code.js");\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在IE中实验了一个多小时,终于发现webworker的代码永远不会重新加载。当我获得它所具有的版本时,为了引发错误,调试器会向我显示工作代码文件的完全过时的版本,尽管所有其他文件都已正确重新加载。

\n\n

我刷新了缓存,使用随处可见的标准建议:安全 -> 删除浏览历史记录 -> 选择项目 -> 确定 -> 等待 -> Ctrl+F5 重新加载 -> BAM,调试器仍然显示与多个文件 100% 相同的文件几小时前(请记住,在 Chrome 和 FF 中重新加载按预期进行)。

\n\n

当我查看网络分析器时,我看到:

\n\n
URL Protocol    Method  Result  Type    Received    Taken   Initiator   Wait\xe2\x80\x8e\xe2\x80\x8e  Start\xe2\x80\x8e\xe2\x80\x8e Request\xe2\x80\x8e\xe2\x80\x8e   Response\xe2\x80\x8e\xe2\x80\x8e  Cache read\xe2\x80\x8e\xe2\x80\x8e    Gap\xe2\x80\x8e\xe2\x80\x8e\n/js/core/WorkerScriptCode.js    (Pending...)    GET (Pending...)    (Pending...)    0 B (Pending...)    webworker   1311    0   0   0   0   31\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不知道为什么它显示“待处理”;我可以看到工作人员已经运行:我可以看到工作人员正在完成的工作(例如importScripts显示,并且还有上面提到的堆栈跟踪)。但它只是运行一个完全过时的版本,即使我刷新了整个缓存数十次。

\n\n

这是一个超级错误,还是我很愚蠢?

\n

html javascript internet-explorer caching web-worker

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

Node.js 中的内存泄漏 - 如何分析分配树/根?

查找内存泄漏是一项非常困难的任务,尤其是在涉及使用许多第三方库的现代 JS 代码时。

例如,我目前在 rollup 中面临内存泄漏,涉及 babel 和自定义 babel 插件。

我正在探索几种常见的策略来追捕它们:

  1. 了解您的运行时及其内存取消分配方案,并遵循有关该方案的最佳实践。
    • 本文声称所有现代 JS 运行时实现都使用标记和清除垃圾收集器。它的主要优势之一是它可以正确处理循环引用。(这篇文章还链接了这篇非常过时的研讨会论文。不要太在意它,因为它都是关于循环引用的,这应该不再是问题了。)
    • 这篇文章深入探讨了 V8 内存管理(注意:Node 和 Chrome 都基于 V8)。
  2. 如果您发现内存或 GC 使用量超出您的预期,请分析您的堆内存配置文件以找出内存分配的位置。
    • 这个 SO answer解释了如何在 Chrome 中做到这一点,但它的链接已经过时了。是指向相关 Chrome 文档的直接链接(截至 2021 年)。
    • 对于Node,我发现了很多过时的信息。目前,分析堆内存配置文件的最简单方法似乎是使用实验性的--heap-prof命令行参数(例如node --heap-prof node_modules/rollup/dist/bin/rollup -c分析汇总构建)。然后在 Chrome Dev Tools 中打开它,通过Memory-> Load
    • 分析后,我们可以了解大部分内存是在哪里/如何分配的;但一个关键问题尚未得到解答:
  3. 既然你知道谁是罪魁祸首(记忆猪),你怎么能找出他们为什么/在哪里仍然挥之不去?而且,更重要的是:内存占用对象的 GC 根(堆栈指针)是什么?

最后一个问题也是我在这里的问题:我们如何分析 Node(或一般的 V8)中的对象分配树?我怎样才能找出我在步骤 (2) 中识别的对象在哪里踢?

通常,这个问题的答案会告诉我们在哪里更改代码以阻止泄漏。(当然,如果您的问题是内存流失,而不是内存泄漏,那么这个问题可能不是那么重要。)

在我的例子中,我知道内存被 Babel …

javascript profiling memory-leaks v8 node.js

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

使 Tailwind 类成为非全局类(自动!)

我有一个由两部分组成的应用程序:

  • ( A) 遗留应用程序 (AngularJs) 及其自己的 CSS 类。
  • ( B)div包含一个全新的应用程序 (React)。B使用 webpack、postcss 和 Tailwind 构建。

我能否确保 的BTailwind 类不受 的A样式表影响,反之亦然,而不对代码库进行任何重大更改?

糟糕的解决方案

我目前发现两种可能的解决方案需要进行重大更改:

  1. 我知道 Tailwind 有一个前缀配置选项,但我不想为数千个类添加前缀(特别是考虑到前缀比类名本身长)。
  2. 将css-modules与本地导入一起使用。我也不喜欢这种方法,因为:
    • (i) 我不确定这与 Tailwind 的效果如何,并且
    • (ii)即使它有效,我也不想从各种地方本地导入,因为这会让事情变得更加冗长:
      • 例如className="x" ... className="y"变成:
        • import s1 from 's1'; import s2 from 's2'; ... className="s1.x" ... className="s2.y"

更多相关方法

我发现了另外两个相关的 postcss 插件,但它们还不够:

  1. postcss-rename很棒,但它不能修复*.js文件中的名称。
  2. purgecss可以根据*.js文件中的存在找到类,然后将它们从输出类列表中删除,但它们不允许重命名。

我特别发现最关键的缺失功能似乎*.jspurgecss. 似乎还没有其他解决方案能够做到这一点。

未解决的问题 …

javascript css reactjs tailwind-css css-in-js

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

如何通过不允许java中的泛型原语来维护向后兼容性

我知道Java不允许在泛型中使用原始数据类型,即

List<int> l  = new List<int>();
Run Code Online (Sandbox Code Playgroud)

不被允许.

我已阅读一篇相关文章,其中指出这是为了向后兼容.任何人都可以解释如何不允许在泛型中使用原语保持向后兼容性?我非常感谢一个例子的小解释.

一个子问题:在java中如何实现泛型的主要/次要缺点是什么.

非常感谢您的回复.

java generics backwards-compatibility

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

使用Express时出现"错误:套接字挂断"

当客户端在仍然加载页面时刷新(因此套接字被终止,而我仍在处理请求)时,节点会一直退出.错误:

[ERROR] - Error: socket hang up
   at createHangUpError (http.js:1472:15)
   at Socket.socketCloseListener (http.js:1522:23)
   at Socket.EventEmitter.emit (events.js:95:17)
   at TCP.close (net.js:465:12) (at lib/Maintenance.js:38)
Run Code Online (Sandbox Code Playgroud)

我尝试附加on('error', ...到:

  1. req 对象
  2. listen(我使用Express)的返回值
  3. 我的返回值get,usepost方法.

然而,我似乎无法捕捉到这个错误; 它仍然被抛出,我的错误处理程序都没有反应.我可能会错过什么?

sockets io http node.js express

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

使用`Promise.all`和大量异步操作的性能考虑因素

当使用Promise.all异步代码时(在同步代码的情况下,没有什么可担心的),你可能会遇到严重的性能(如果不是其他类型的)问题,当你想要发送一大堆(数十,数百)鉴于异步操作的接收端(例如本地文件系统,HTTP服务器,数据库等),请求,数千甚至数百万个请求不能正常处理那么多并行请求.

对于那种情况,如果我们能够告诉Promise.all我们希望同时在飞行中有多少承诺,那将是完美的.但是,由于A +应该是精益的,添加这些奇特的功能肯定没有意义.

那么实现这一目标的更好方法是什么呢?

javascript performance promise bluebird

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