加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

你必须收藏的Python 50个正则表达式写法

发布时间:2021-01-31 16:33:51 所属栏目:外闻 来源:互联网
导读:把TestService1的test1方法上的@Async注解去掉,TestService1和TestService2都需要注入对方的实例,同样构成了循环依赖。 但是重新启动项目,发现它能够正常运行。这又是为什么? 带着这两个问题,让我们一起开始spring循环依赖的探秘之旅。 2.什么是循环依赖

把TestService1的test1方法上的@Async注解去掉,TestService1和TestService2都需要注入对方的实例,同样构成了循环依赖。

但是重新启动项目,发现它能够正常运行。这又是为什么?

带着这两个问题,让我们一起开始spring循环依赖的探秘之旅。

2.什么是循环依赖?

循环依赖:说白是一个或多个对象实例之间存在直接或间接的依赖关系,这种依赖关系构成了构成一个环形调用。

第一种情况:自己依赖自己的直接依赖
 

总结

更详细的事件循环算法(尽管与 规范[3] 相比仍然是简化过的):

1.从 宏任务 队列(例如 "script")中出队(dequeue)并执行最早的任务。

2.执行所有 微任务:

  • 出队(dequeue)并执行最早的微任务。
  • 当微任务队列非空时:

3.执行渲染,如果有。

4.如果宏任务队列为空,则休眠直到出现宏任务。

5.转到步骤 1。

安排(schedule)一个新的 宏任务:

  • 使用零延迟的 setTimeout(f)。

它可被用于将繁重的计算任务拆分成多个部分,以使浏览器能够对用户事件作出反应,并在任务的各部分之间显示任务进度。

此外,也被用于在事件处理程序中,将一个行为(action)安排(schedule)在事件被完全处理(冒泡完成)后。

安排一个新的 微任务:

  • 使用 queueMicrotask(f)。
  • promise 处理程序也会通过微任务队列。

在微任务之间没有 UI 或网络事件的处理:它们一个立即接一个地执行。

所以,我们可以使用 queueMicrotask 来在保持环境状态一致的情况下,异步地执行一个函数。

Web Workers:

对于不应该阻塞事件循环的耗时长的繁重计算任务,我们可以使用 Web Workers[4]。

这是在另一个并行线程中运行代码的方式。

Web Workers 可以与主线程交换消息,但是它们具有自己的变量和事件循环。

Web Workers 没有访问 DOM 的权限,因此,它们对于同时使用多个 CPU 内核的计算非常有用。

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读