小编Gui*_* Li的帖子

反应生命周期方法的理解

我是React.js的新手,我正在努力理解反应生命周期方法中的几种方法.

到目前为止,我仍然有一些让我困惑的事情:

1)

据我了解,之间的差别componentWillUpdate,并componentWillReceiveProps 是,componentWillReceiveProps当父母改变的道具,我们可以使用的setState(这里面孩子的setState会叫componentWillReceiveProps).

例如:https: //github.com/bgerm/react-table-sorter-demo/blob/master/jsx/app.jsx

var App = React.createClass({
  getInitialState: function() {
    return {source: {limit: "200", source: "source1"}};
  },
  handleSourceChange: function(source) {
    this.setState({source: source});
  },
  render: function() {
    return (
      <div>
        <DataSourceSelectors onSourceChange={this.handleSourceChange} source={this.state.source} />
        <TableSorter dataSource={urlForDataSource(this.state.source)} config={CONFIG} headerRepeat="5" />
      </div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

在TableSorter中,我们有

componentWillReceiveProps: function(nextProps) {
    // Load new data when the dataSource property changes.
    if (nextProps.dataSource != this.props.dataSource) {
      this.loadData(nextProps.dataSource);
    }
  }
Run Code Online (Sandbox Code Playgroud)

意思是当我们改变时this.state.source,我们期望componentWillReceiveProps …

javascript lifecycle reactjs

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

Java Garbage Collect是否总是要"停止世界"?

我想更深入地了解Java的垃圾收集.

在HotSpot JVM世代集合中,在堆中,有三个区域(Young generation,Old generation和permanent generation).此外,还有两种算法:

1)Mark Sweep Compact.

2)并发标记和扫描.

GC是否需要"Stop-the-world"取决于它使用的算法而不是它运行的是哪一代,这是真的吗?换句话说,如果我在所有三个区域使用1)作为GC算法,STW将永远发生?

此外,我理解不同的是第二个GC算法不需要压缩,最终会导致碎片.那么第二个问题就是为什么压缩需要STW暂停?

java algorithm garbage-collection

9
推荐指数
2
解决办法
7018
查看次数

易失性保证安全发布可变对象?

通过阅读Java Concurrency in Practice

我可以看到:

要安全地发布对象,必须同时使对象的引用和对象的状态对其他线程可见.正确构造的对象可以通过以下方式安全发布:

  • 从静态初始化程序初始化对象引用
  • 将对它的引用存储到volatile字段或AtomicReference中
  • 将对它的引用存储到正确构造的对象的最终字段中
  • 将对它的引用存储到由锁正确保护的字段中.

但是,我对第二个成语感到困惑.因为volatile只能保证引用对另一个线程可见,它没有引用的对象构造的同步.那么如何保证可变对象被正确构造,构造该对象的线程被另一个线程中断了?

java concurrency multithreading volatile safe-publication

7
推荐指数
2
解决办法
515
查看次数

未找到给定的测试包括:[***Test](filter.includeTestsMatching)

我正在使用Intellij 2019.2运行 gradle 测试用例,但是,我不断收到以下异常。根据一些帖子,我做了以下事情:

  1. 添加junit(junit-jupiter-api:5.3.1)依赖项testImplementation
  2. useJUnitPlatform()build.gradle文件
  3. 将 Intellij 的 gradle runner 设置为使用 Gradle(Default) 来运行我的测试用例。

经过以上步骤,问题依然存在。

有人能给我一些关于如何摆脱这个错误的提示吗?非常感谢

   Caused by: org.gradle.api.tasks.testing.TestExecutionException: No tests found for given includes: [***Test](filter.includeTestsMatching)
                at org.gradle.api.internal.tasks.testing.NoMatchingTestsReporter.afterSuite(NoMatchingTestsReporter.java:37)
                at jdk.internal.reflect.GeneratedMethodAccessor307.invoke(Unknown Source)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
                at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
                at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
                at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
                at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
                at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
                at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
                at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
                at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
                at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
                at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
                at com.sun.proxy.$Proxy99.afterSuite(Unknown Source)
                at org.gradle.api.internal.tasks.testing.results.TestListenerAdapter.completed(TestListenerAdapter.java:48)
                at jdk.internal.reflect.GeneratedMethodAccessor325.invoke(Unknown Source)
                at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
                at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
                at …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea testcase gradle

7
推荐指数
4
解决办法
2万
查看次数

Chrome开发人员工具跟踪功能序列

我是Chrome开发人员工具的新手,我发现它非常强大.目前,我正在寻找一种方法来跟踪打开网页时的功能流程,而且,我想知道如何在单击时找到元素触发的功能.这里有些例子:

1)跟踪功能序列:例如,我的脚本中有20个功能.某些功能会调用其他功能.我想跟踪函数调用.就像首先调用哪个函数一样,然后调用此函数调用的函数.由于这20个函数非常庞大,因此只需查看脚本就很难遵循这个序列.

2)元素在javascript中触发哪个函数:例如,我在网页上有一个按钮,有一个或多个与此元素关联的函数.通过使用Chrome开发者工具的事件监听器,我只能在"点击"下看到一些DOM元素,而不是与之关联的功能.

有没有办法找到相关的功能?

我感谢你的帮助!

javascript google-chrome google-chrome-devtools

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

arr1[i++] = arr2[j++] 背后的逻辑是什么?

我明白如果我有以下任务

arr[i++] = 1 相当于

arr[i] = 1; 
i++;
Run Code Online (Sandbox Code Playgroud)

但确实

arr1[i++] = arr2[j++]

相当于

arr1[i] = arr2[j];
i++;
j++;
Run Code Online (Sandbox Code Playgroud)

关于什么

int i = 0;
while(i++ < 5){ 
    // do something...
}
Run Code Online (Sandbox Code Playgroud)

机器是否执行 //do something一个然后增加 1 然后评估 i 当前是否 < 5?

有人可以帮我理解这一点吗?

java algorithm

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