小编Anu*_*ena的帖子

Chrome开发工具中的监听工具的性能分析结果

我一直在使用Chrome开发工具分析一个React应用程序,我发现了一个线性增加的Listener计数.看一下下面的截图.该Listeners是橙色.

听众是橙色的,并且线性上升

我将其缩小为p标签内部的简单倒计时值渲染.剩余时间是每隔1000毫秒使用setInterval函数生成的,然后在p标记内格式化和渲染.

我创建了一个简单的React应用程序,使用create-react-app并修改了App.js的App组件中的代码,每秒更新Date.now()的值,当我在其上运行探查器时,我得到了相同的结果.

class App extends Component {
  state = {
    text: '',
  };

  loop() {
    this.setState({ text: Date.now() });
  }

  componentWillMount() {
    this.timer = setInterval(this.loop.bind(this), 1000);
  }

  componentWillUnmount() {
    clearInterval(this.timer);
  }

  render() {
    return (
      <div className="App">
        <p>{this.state.text}</p>
      </div>
    );
  }
}

export default App;
Run Code Online (Sandbox Code Playgroud)
  • 这些所谓Listeners的开头是什么?

  • 增加的倾听者是否可以指示memory leak

  • 如果是,如果你必须显示倒计时或计时器来更新每秒或更快的时间/剩余时间,你怎么能避免这种情况?

顺便说一下,你是否也看到JS Heap的用法似乎也在上升,尽管所有这些垃圾收集?这很奇怪,不是吗?

干杯

javascript profiling setinterval google-chrome-devtools reactjs

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

推荐的方法在C中的单个函数中处理多个malloc错误

处理可能按顺序发生的多个malloc错误的推荐方法是什么,如下面的代码所示?

bool myFunc(int x, int y)
{
    int *pBufX = null;
    int *pBufY = null;

    if((x <= 0) || (y <= 0))
    {
        return false;
    }

    pBufX = (int*)malloc(sizeof(int) * x);
    if(pBufX == null)
    {
        return false; 
    }

    pBufY = (int*)malloc(sizeof(int) * y);
    if(pBufY == null)
    {
        free(pBufX) //free the previously allocated pBufX 
        return false; 
    }

    //do something useful

    free(pBufX);
    free(pBufY);

    return true; 
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,如果malloc的数量很高,您可能会忘记释放一些并导致内存泄漏.此外,如果在发生错误时需要输出某种日志,则代码会变得很长.

我已经看到了用goto处理这些代码的代码,你可以在一个地方清除所有的mallocs,只有一次.代码不长,但我不喜欢使用gotos.

有没有比这两种方法更好的方法?

也许问题在于设计首先.在设计函数时,最小化多个mallocs是否有经验法则?

编辑:我已经看到并使用过另一种方式.您不保留使用goto,而是保留程序的状态,并仅在状态为OK时继续.类似于goto但不使用goto.但是这增加了可能使代码运行速度变慢的if语句数.

bool myFunc(int x, int y)
{
    int *pBufX = null;
    int …
Run Code Online (Sandbox Code Playgroud)

c malloc error-handling

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

我的 webpack-dev-middleware 设置无法获取/错误

首先,我在这里找到了许多类似的主题,但即使参考了它们,我仍然无法让它工作。

所以,我的问题只是Cannot GET /localhost:3000在运行我的快速服务器(使用npm run serve)后访问时进入了 Chrome 。不是找不到bundle.js文件;它根本找不到index.html。

当我npm run serve在 package.json 文件中运行脚本时,我在服务器控制台上没有看到任何错误。Webpack 构建(从 Webpack-dev-middleware 调用)日志也没有显示错误。

如果我直接从终端运行 webpack-dev-server 并访问相同的 URL,它可以正常工作。(我已经覆盖了主机和端口,以配合我使用的Express服务器,通过者devServer中选择webpack.config.js。)

我究竟做错了什么?

文件夹结构

/client
    /main.js    
/dist
    /index.html
    /assets/
/server
    /server.js
/webpack.config.js
/package.json
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

const path = require('path');

module.exports = {
  entry: './client/main.js',

  output: {
    path: path.resolve(__dirname, 'dist/assets'),
    filename: 'bundle.js',
    publicPath: '/assets/'
  },

  module: {
    rules: [
      {
        use: 'babel-loader',
        test: /\.jsx?$/,
        exclude: /node_modules/,
      },
      {
        use: ['style-loader', 'css-loader', 'sass-loader'], …
Run Code Online (Sandbox Code Playgroud)

express webpack webpack-dev-server webpack-dev-middleware

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

MongoDB Aggregate 如何配对相关记录进行处理

我在 MongoDB 数据库中捕获了一些事件数据,其中一些事件成对发生。

例如:DOOR_OPEN 和 DOOR_CLOSE 是两个成对发生的事件

事件集合:

{ _id: 1, name: "DOOR_OPEN", userID: "user1", timestamp: t }
{ _id: 2, name: "DOOR_OPEN", userID: "user2", timestamp: t+5 }
{ _id: 3, name: "DOOR_CLOSE", userID: "user1", timestamp:t+10 }
{ _id: 4, name: "DOOR_OPEN", userID: "user1", timestamp:t+30 }
{ _id: 5, name: "SOME_OTHER_EVENT", userID: "user3", timestamp:t+35 }
{ _id: 6, name: "DOOR_CLOSE", userID: "user2", timestamp:t+40 }
...
Run Code Online (Sandbox Code Playgroud)

假设记录按时间戳排序, _id: 1 和 _id: 3 是“user1”的“配对”。_id: 2 和 _id: 6 是“user2”。

我想为每个用户获取所有这些 DOOR_OPEN 和 …

aggregate mongodb

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

在React.js中隐藏组件的正确方法

假设您正在传递一个称为show组件的prop 。如果prop值为true,则应正常渲染整个组件。如果为假,则不应显示任何内容。

您可以通过两种方式执行此操作。

  1. 在组件的render方法中返回null。
  2. 将包含display: none属性的CSS类应用于组件的DOM元素。

哪种方法是正确的或首选的方法?

javascript render reactjs

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

尝试在 IE11 中打开时,某些站点如何在 Edge 中自动打开?

当我尝试在 IE11(在 Windows 10 上)中浏览 netflix.com(例如)时,IE11 显示标题为“我们建议在 Microsoft Edge 中查看此网站”的页面,并且该站点会自动在 Edge 中打开。

有谁知道这是如何工作的?它是通过内部编译的站点列表还是我可以在我的网站上设置的内容完成的?

谢谢

internet-explorer-11 microsoft-edge

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