当前位置: 首页 > news >正文

JavaScript事件循环

目录

JavaScript 执行机制与事件循环

一、同步与异步代码

1. 同步代码(Synchronous Code)

2. 异步代码(Asynchronous Code)

二、事件循环(Event Loop)

1. 核心组成

2. 事件循环基本流程

3. 运行机制

三、异步操作分类

1. 任务类型对比

2. 宏任务(Macrotasks)

3. 微任务(Microtasks)

4. 执行顺序规则

5. 代码执行顺序示例

6. 常见问题

四、Promise的同步异步问题

五、Node.js 与浏览器的事件循环差异

六、关键总结

示例


JavaScript 是单线程语言,但其通过 事件循环(Event Loop) 和 任务队列(Task Queue) 实现了非阻塞异步执行。


一、同步与异步代码

1. 同步代码(Synchronous Code)

  • 特点

    • 顺序执行,阻塞后续代码

    • 直接在主线程(调用栈)执行

    • 典型场景:普通函数调用、数学运算

    console.log('Start');
    let sum = 0;
    for (let i = 0; i < 1e6; i++) sum += i;
    console.log('End'); // 必须等待循环执行完

2. 异步代码(Asynchronous Code)

  • 特点

    • 非阻塞执行,后续代码无需等待

    • 通过任务队列管理

    • 典型场景:setTimeoutfetchPromiseDOM事件

    console.log('Start');
    setTimeout(() => console.log('Timeout'), 0);
    console.log('End'); 
    // 输出顺序:Start → End → Timeout

二、事件循环(Event Loop)

1. 核心组成

组件作用
调用栈 (Call Stack)存放同步执行代码(LIFO结构)
任务队列 (Task Queue)存放待处理的异步任务
Web APIs浏览器提供的异步API(如DOM、定时器)

2. 事件循环基本流程

事件循环是 JavaScript 处理异步代码的核心机制,其基本流程如下:

  1. 执行同步代码
    先执行当前调用栈中的所有同步任务(如函数调用、变量赋值)。

  2. 处理微任务队列
    同步代码执行完毕后,立即清空微任务队列(Microtask Queue)中的所有任务(如 Promise.then)。

  3. 渲染页面(如有需要)
    执行 UI 渲染(布局、绘制),但浏览器会智能合并渲染操作以优化性能。

  4. 处理宏任务队列
    宏任务队列(Macrotask Queue)中取出一个任务执行,回到步骤 1 开始新的事件循环。

3. 运行机制

st=>start: 开始执行
op1=>operation: 执行同步代码
op2=>operation: 遇到异步任务
op3=>operation: 注册到Web APIs
op4=>operation: Web API完成,回调推入任务队列
cond=>condition: 调用栈是否为空?
op5=>operation: 取出队列首个任务推入调用栈
e=>end: 结束st->op1->op2->op3->op4->cond
cond(yes)->op5->cond
cond(no)->e

三、异步操作分类

1. 任务类型对比

特性宏任务(Macrotask)微任务(Microtask)
常见类型setTimeoutsetInterval、I/O操作、UI渲染Promise.thenMutationObserverprocess.nextTick(Node.js)
执行时机每轮事件循环执行一个宏任务当前宏任务执行完毕后立即执行所有微任务
优先级

2. 宏任务(Macrotasks)

  • 常见类型

    • setTimeout / setInterval

    • I/O 操作(文件读写、网络请求)

    • UI 渲染(浏览器)

    • requestAnimationFrame(浏览器)

  • 特点:每次事件循环处理一个宏任务。

  • 微任务优先级高于宏任务:每执行完一个宏任务后,会立即清空所有微任务。

3. 微任务(Microtasks)

  • 常见类型

    • Promise.then / catch / finally

    • MutationObserver(浏览器)

    • queueMicrotask

  • 特点:在当前宏任务结束后、下一个宏任务开始前执行所有微任务。

  • 微任务可嵌套:若在微任务中生成新的微任务,新微任务会在当前事件循环中被执行。

4. 执行顺序规则

  1. 执行当前宏任务中的同步代码

  2. 执行该宏任务产生的所有微任务

  3. 执行下一个宏任务

  4. 循环往复(每次循环称为一个"tick")

5. 代码执行顺序示例

console.log('Start');setTimeout(() => {console.log('Timeout');
}, 0);Promise.resolve().then(() => console.log('Promise 1')).then(() => console.log('Promise 2'));console.log('End');

输出顺序

Start
End
Promise 1
Promise 2
Timeout

执行步骤

  1. 同步代码依次执行,输出 Start 和 End

  2. setTimeout 回调进入宏任务队列。

  3. Promise.then 回调进入微任务队列。

  4. 同步代码执行完毕,执行所有微任务(Promise 1Promise 2)。

  5. 执行下一个宏任务(Timeout)。

6. 常见问题

  1. 为什么微任务优先级高?
    微任务通常用于更紧急的更新(如 Promise 状态变更),确保在渲染前完成数据更新,提升用户体验。

  2. 如何避免微任务饥饿?
    避免在微任务中无限递归添加微任务,否则宏任务无法执行,导致页面卡死。

  3. requestAnimationFrame 是宏任务还是微任务?
    它属于渲染阶段的宏任务,用于在下次重绘前执行动画更新,优先级高于普通宏任务(如 setTimeout)。


四、Promise的同步异步问题

1. 同步执行:Promise 的构造函数和其执行器函数中的代码是同步执行的。

2. 异步回调.then().catch() 等回调函数是异步的微任务,会在当前同步代码执行完毕后执行。

3. 示例

console.log('1. 同步代码开始');const promise = new Promise((resolve) => {console.log('2. Promise 执行器函数(同步)');resolve('resolve 的值');
});promise.then((value) => {console.log('4. .then 回调(异步微任务):', value);
});console.log('3. 同步代码结束');// 输出顺序:
// 1. 同步代码开始
// 2. Promise 执行器函数(同步)
// 3. 同步代码结束
// 4. .then 回调(异步微任务): resolve 的值

4. 异步操作的嵌套

console.log('1. 同步代码开始');const promise = new Promise((resolve) => {console.log('2. Promise 执行器函数(同步)');setTimeout(() => {console.log('5. setTimeout 回调(异步宏任务)');resolve('resolve 的值');}, 0);
});promise.then((value) => {console.log('6. .then 回调(异步微任务):', value);
});console.log('3. 同步代码结束');// 输出顺序:
// 1. 同步代码开始
// 2. Promise 执行器函数(同步)
// 3. 同步代码结束
// 5. setTimeout 回调(异步宏任务)
// 6. .then 回调(异步微任务): resolve 的值

五、Node.js 与浏览器的事件循环差异

特性浏览器Node.js
微任务类型PromiseMutationObserverPromiseprocess.nextTick
微任务优先级同层级按注册顺序process.nextTick 优先级最高
宏任务分层单层任务队列多阶段分层(timers → pending → poll → check → close)

六、关键总结

  1. 执行顺序铁律
    同步代码 → 微任务 → 宏任务 → 渲染(浏览器)

  2. 微任务优先
    每个宏任务执行完毕后,必须清空所有微任务队列

  3. 任务嵌套规则

    • 微任务中产生的微任务会继续在当前批次执行

    • 宏任务中产生的任务会进入下一轮循环

  4. 性能优化建议

    • 避免在微任务中进行耗时操作

    • 合理分配任务类型(密集计算使用宏任务分片)

问答:

  1. 什么是事件循环?

    ​答案​:执行代码和收集异步任务,在调用栈空闲时,反复调用任务队列里回调函数执行机制。
  2. 为什么有事件循环?

    ​答案​:JavaScript 是单线程的,为了不阻塞 JS 引擎,设计执行代码的模型。
  3. JavaScript 内代码如何执行?

    ​答案​:执行同步代码,遇到异步代码交给宿主浏览器环境执行 异步有了结果后,把回调函数放入任务队列排队 当调用栈空闲后,反复调用任务队列里的回调函数。
  4. 什么是宏任务?

    ​答案​:浏览器执行的异步代码,例如:JS 执行脚本事件,setTimeout/setInterval,AJAX请求完成事件,用户交互事件等。
  5. 什么是微任务?

    ​答案​:JS 引擎执行的异步代码,例如:Promise对象.then()的回调。

示例

回答下面代码执行顺序:

console.log(1)
setTimeout(() => {console.log(2)const p = new Promise(resolve => resolve(3))p.then(result => console.log(result))
}, 0)
const p = new Promise(resolve => {setTimeout(() => {console.log(4)}, 0)resolve(5)
})
p.then(result => console.log(result))
const p2 = new Promise(resolve => resolve(6))
p2.then(result => console.log(result))
console.log(7)

输出结果: 

1
7
5
6
2
3
4

相关文章:

JavaScript事件循环

目录 JavaScript 执行机制与事件循环 一、同步与异步代码 1. 同步代码&#xff08;Synchronous Code&#xff09; 2. 异步代码&#xff08;Asynchronous Code&#xff09; 二、事件循环&#xff08;Event Loop&#xff09; 1. 核心组成 2. 事件循环基本流程 3. 运行机制…...

Linux》》bash 、sh 执行脚本

通常使用shell去运行脚本&#xff0c;两种方法 》bash xxx.sh 或 bash “xxx.sh” 、sh xxx.sh 或 sh “xxx.sh” 》bash -c “cmd string” 引号不能省略 我们知道 -c 的意思是 command&#xff0c;所以 bash -c 或 sh -c 后面应该跟一个 command。...

Git完全指南:从入门到精通版本控制 ------- Git 查看提交历史(8)

Git提交历史深度解析&#xff1a;从代码考古到精准回退 前言 在软件开发的生命周期中&#xff0c;提交历史是团队协作的时空胶囊。Git作为分布式版本控制系统&#xff0c;其强大的历史追溯能力可帮助开发者&#xff1a; 精准定位引入Bug的提交分析代码演进趋势恢复误删的重要…...

精益数据分析(2/126):解锁数据驱动的商业成功密码

精益数据分析&#xff08;2/126&#xff09;&#xff1a;解锁数据驱动的商业成功密码 大家好&#xff01;在如今这个数据爆炸的时代&#xff0c;数据就像一座蕴含无限宝藏的矿山&#xff0c;等待着我们去挖掘和利用。最近我在深入研读《精益数据分析》这本书&#xff0c;收获了…...

【ssti模板注入基础】

一、ssti模板注入简介 二、模板在开发中的应用 为什么要使用模板 为什么要用模板来提升效率&#xff1a; 不管我们输入什么&#xff0c;有一部分内容都是不会变的 除了内容之外其他都不会变&#xff0c;如果我们有成千上万的页面&#xff0c;如果不用模板&#xff0c;就算复…...

如何在 Kali 上解决使用 evil-winrm 时 Ruby Reline 的 quoting_detection_proc 警告

在使用 Kali Linux 运行 Ruby 工具&#xff08;例如 evil-winrm&#xff09;时&#xff0c;你可能会遇到以下警告&#xff1a; Warning: Remote path completions is disabled due to ruby limitation: undefined method quoting_detection_proc for module Reline这个警告会导…...

从零开始搭建PyTorch环境(支持CUDA)

从零开始搭建PyTorch环境&#xff08;支持CUDA&#xff09; 本文将详细介绍如何在Windows系统上为RTX 3050显卡配置支持CUDA的PyTorch环境。 环境准备 本教程基于以下环境&#xff1a; 显卡&#xff1a;NVIDIA RTX 3050操作系统&#xff1a;WindowsPython版本&#xff1a;3.1…...

【扩散模型连载 · 第 2 期】逆向扩散建模与神经网络的角色

上期回顾 我们在第 1 期中介绍了 正向扩散过程&#xff08;Forward Process&#xff09;&#xff0c;并用 CIFAR-10 图像演示了加噪过程&#xff1a; 正向过程是固定的&#xff0c;无需训练&#xff0c;但我们感兴趣的是&#xff1a;如何从纯噪声一步步“还原”出真实图像&…...

Mysql约束

约束其实就是创建表的时候给表的某些列加上限制条件。 主键约束和自增长约束比较重要 一、Mysql约束-主键约束 简介 指定的主键不能重复也不可以出现空值 1.添加单列主键 语法1&#xff1a;create table 表名&#xff08;字段名 数据类型 primary key&#xff09;; 点开…...

力扣热题100—滑动窗口(c++)

3.无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 unordered_set<char> charSet; // 用于保存当前窗口的字符int left 0; // 窗口左指针int maxLength 0; // 最长子串的长度for (int right 0; right < s.siz…...

Linux网络编程第一课:深入浅出TCP/IP协议簇与网络寻址系统

知识点1【网络发展简史】 **网络节点&#xff1a;**路由器和交换机组成 交换机的作用&#xff1a;拓展网络接口 路由&#xff1a;网络通信路径 1、分组交换 分组的目的&#xff1a; 数据量大&#xff0c;不能一次型传输&#xff0c;只能分批次传输&#xff0c;这里的每一批…...

论文阅读笔记:Generative Modeling by Estimating Gradients of the Data Distribution

1、参考来源 论文《Generative Modeling by Estimating Gradients of the Data Distribution》 来源&#xff1a;NeurIPS 2019 论文链接&#xff1a;https://arxiv.org/abs/1907.05600 参考链接&#xff1a; 【AI知识分享】真正搞懂扩散模型Score Matching一定要理解的三大核心…...

C++零基础实践教程 函数 数组、字符串与 Vector

模块四&#xff1a;函数 (代码复用与模块化) 随着程序变得越来越复杂&#xff0c;把所有代码都堆在 main 函数里会变得难以管理和阅读。函数 (Function) 允许你将代码分解成逻辑上独立、可重用的块。这就像把一个大任务分解成几个小任务&#xff0c;每个小任务交给一个专门的“…...

照片处理工具:基于HTML与JavaScript实现详解

在当今数字时代,处理照片已成为日常需求。 本文将详细介绍一个基于HTML和JavaScript的照片处理工具的实现原理,这个工具可以调整图片尺寸、格式,并精确控制输出文件大小。 实现如下,不需要任何编辑器,txt文本、浏览器就行!! 工具功能概述 这个照片处理工具提供以下核心…...

MyBatis-OGNL表达式

介绍 OGNL&#xff08;Object-Graph Navigation Language&#xff09;是一种强大的表达式语言&#xff0c;用于获取和设置Java对象图中的属性。在MyBatis中&#xff0c;OGNL常用于动态SQL构建&#xff0c;如条件判断、循环等。以下是关于OGNL表达式的整合信息&#xff0c;包括…...

Web Worker在uniapp鸿蒙APP中的深度应用

文章目录 一、Web Worker核心概念解析1.1 什么是Web Worker&#xff1f;1.2 为什么在鸿蒙APP中使用Web Worker&#xff1f;1.3 性能对比实测 二、uniapp中的Web Worker完整实现2.1 基础配置步骤2.1.1 项目结构准备2.1.2 鸿蒙平台特殊配置 2.2 Worker脚本编写规范2.3 主线程通信…...

无人机故障冗余设计技术要点与难点!

一、技术要点 1. 冗余架构设计 硬件冗余&#xff1a;关键部件&#xff08;飞控、电机、电池、通信模块&#xff09;采用双余度或三余度设计&#xff0c;例如&#xff1a; 双飞控系统&#xff1a;主飞控失效时&#xff0c;备用飞控无缝接管。 电机动力冗余&#xff1a;六轴无…...

MySQL数据库表查询

测试表company.employee5 mysql> create database company; #创建一个库&#xff1b; 创建一个测试表: mysql> CREATE TABLE company.employee5(id int primary key auto_increment not null,name varchar(30) not null,sex enum(male,female) default male not null,hi…...

ADB的安装及抓取日志(2)

三、ADB抓取日志 在使用ADB抓取日志前&#xff0c;首先要保证电脑已经安装并配置ADB&#xff0c;在上一节已经验证完成。连接设备&#xff1a;可通过USB或者WI-FI&#xff0c;将安卓设备与电脑连接&#xff0c;并启用USB调试模式&#xff0c;此处我选择的是通过电脑与安卓设备…...

【C++】 —— 笔试刷题day_17

一、小乐乐改数字 题目解析 这道题&#xff0c;它们给定一个数&#xff0c;我们要对它进行修改&#xff1b;如果某一位是奇数&#xff0c;就把它变成1,&#xff1b;如果是偶数&#xff0c;就把它变成0&#xff1b; 让我们输出最后得到的数。 算法思路 这道题&#xff0c;总体…...

traceId传递

1、应用内传递通过ThreadLocal,InheritableThreadLocal传递 2、跨进程的应用间传递&#xff0c;这种会涉及到远程rpc通信&#xff0c;mq通信&#xff0c;数据库通信等。 feign:拦截器中改变请求头 feign.RequestInterceptor, 这个机制能够实现修改请求对象的目的&#xff0c…...

自然科技部分详解

光的反射 凸面镜与凹面镜 凸透镜和凹透镜 空气开关原理 短路是指电路中突然的电流过大&#xff0c;这会让线圈的磁性增大&#xff0c;来克服内设的弹簧导致断开 过载会让电流增大&#xff0c;两金属片受热膨胀触发断开 核电荷数是指原子核所带的电荷数。 在原子中&#xf…...

蓝桥杯 9. 九宫幻方

九宫幻方 原题目链接 题目描述 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分。 三阶幻方是指将 1 ~ 9 不重复地填入一个 33 的矩阵中&#xff0c;使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格&#x…...

算法——希尔排序

目录 一、希尔排序定义 二、希尔排序原理 三、希尔排序特点 四、两种解法 五、代码实现 一、希尔排序定义 希尔排序是一种基于插入排序的排序算法&#xff0c;也被称为缩小增量排序。它通过将待排序的数组分割成若干个子序列&#xff0c;对子序列进行排序&#xff0c;然后…...

亚马逊热销变维权?5步搭建跨境产品的安全防火墙

“产品热卖&#xff0c;引来维权”——这已经悄然成为越来越多跨境卖家的“热销烦恼”。曾经拼品拼量&#xff0c;如今却要步步谨慎。商标侵权、专利投诉、图片盗用……这些问题一旦发生&#xff0c;轻则下架、账号被限&#xff0c;重则冻结资金甚至封店。 别让“热销”变“受…...

20250416-Python 中常见的填充 `pad` 方法

Python 中常见的填充 pad 方法 在 Python 中&#xff0c;pad 方法通常与字符串或数组操作相关&#xff0c;用于在数据的前后填充特定的值&#xff0c;以达到指定的长度或格式。以下是几种常见的与 pad 相关的用法&#xff1a; 1. 字符串的 pad 操作 虽然 Python 的字符串没有…...

JavaEE-0416

今天修复了一个查询数据时数据显示哈希码&#xff1a; 搜索检阅后得到显示该格式的原因&#xff1a; 重写 POJO 类的 toString 方法 在 Java 编程中&#xff0c;默认情况下&#xff0c;对象的 toString() 方法会返回类似于 com.cz.pojo.Score2a266d09 的字符串。这是由于默认…...

团体程序设计天梯赛L2-008 最长对称子串

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定Is PAT&TAP symmetric?&#xff0c;最长对称子串为s PAT&TAP s&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...

命令模式 (Command Pattern)

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。该模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 一、基础 1.1 意图 将请求封…...

Elasticsearch 8.18 中提供了原生连接 (Native Joins)

作者&#xff1a;来自 Elastic Costin Leau 探索 LOOKUP JOIN&#xff0c;这是一条在 Elasticsearch 8.18 的技术预览中提供的新 ES|QL 命令。 很高兴宣布 LOOKUP JOIN —— 这是一条在 Elasticsearch 8.18 的技术预览中提供的新 ES|QL 命令&#xff0c;旨在执行左 joins 以进行…...

在线终端(一个基于 Spring Boot 的在线终端模拟器,实现了类 Linux 命令行操作功能)

Online Terminal 一个基于 Spring Boot 的在线终端模拟器,实现了类 Linux 命令行操作功能。 功能特点 模拟 Linux 文件系统操作支持基础的文件和目录管理命令提供文件内容查看和编辑功能支持文件压缩和解压缩操作 快速开始 环境要求 JDK 8Maven 3.6 运行项目 克隆项目到…...

vue+electron ipc+sql相关开发(三)

在 Electron 中使用 IPC(Inter-Process Communication)与 SQLite 数据库进行通信是一个常见的模式,特别是在需要将数据库操作从渲染进程(Vue.js)移到主进程(Electron)的情况下。这样可以更好地管理数据库连接和提高安全性。下一篇介绍结合axios写成通用接口形式,虽然没…...

C++静态变量多线程中的未定义行为

静态变量&#xff0c;是 C 程序员最早接触的语言特性之一。它有状态、生命周期长、初始化一次&#xff0c;用起来真是香。 但只要程序一旦进入多线程的世界&#xff0c;很多你原以为“稳定可靠”的写法&#xff0c;可能就突然开始“不对劲”了。静态变量首当其冲。 今天我们就…...

黑马商城项目(二) Docker

一、Docker快速入门 安装Docker - 飞书云文档 二、命令解读 常见命令&#xff1a; 数据卷&#xff1a; 案例1 数据卷挂载&#xff1a; 案例2 本地目录挂载&#xff1a; 挂载到指定目录能够保存数据&#xff08;即使Mysql容器被删除&#xff09; docker run -d \--name mysql …...

玩转Docker | 使用Docker部署Memos笔记工具

玩转Docker | 使用Docker部署Memos笔记工具 前言一、Memos介绍Memos简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Memos服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问Memos服务访问Memos首页注册账号五、基本使用…...

c#从ftp服务器下载文件读取csv

从 FTP 服务器下载文件的功能&#xff0c;并且支持根据文件名称的前缀或直接文件名进行查找和下载。以下是对代码的一些建议和修改&#xff0c;以确保它能够满足您的需求&#xff0c;尤其是如果您希望仅下载特定类型的文件&#xff08;例如 .csv 文件&#xff09; using Syste…...

电脑知识 | TCP通俗易懂详解 <三>tcp首部中ACK、SYN、FIN等信息填写案例_握手时

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f91d;&#x1f3fb;握手时的快递单 1.&#x1f46b;第一次握手&#xff08;发送方&#xff09; 2.&#x1f46b;第二次握手&#xff08;收件方&#xff09; 3.&#x1f46b;第三次握手&#xff08;发件方&#xff09;…...

go学习记录(第二天)

Java里面的类对象可以对应go里面的结构体吗 表格对比 Java 类 (Class)​​​​Go 结构体 (Struct)​​封装数据和行为&#xff08;字段方法&#xff09;主要封装数据&#xff08;字段&#xff09;&#xff0c;方法通过​​接收者​​关联支持继承&#xff08;extends&#xf…...

Docker 中启动 Nginx 容器

文章目录 1. 快速运行 Nginx 容器从 Docker Hub 拉取官方镜像并运行&#xff1a;验证访问&#xff1a; 2. 挂载自定义配置和静态文件步骤&#xff1a; 3. 常用操作命令4. 生产环境建议使用 Docker Compose关键优化&#xff1a; 5. 调试技巧6. 常见问题解决 1. 快速运行 Nginx 容…...

windows 11 安装 redis

在 Windows 11 上安装 Redis 可以采用几种不同的方法&#xff0c;这里介绍几种常见的方法&#xff1a; 方法 1&#xff1a;使用 Microsoft Store Windows 11 提供了 Microsoft Store&#xff0c;你可以直接从那里安装 Redis。 打开 Microsoft Store。 在搜索框中输入 “Redi…...

5. k8s 之 pod原理与使用

Kubernetes Pod 原理详解 1. Pod 的部署方式 Pod 是 Kubernetes 的最小调度单元&#xff0c;其部署方式分为 声明式&#xff08;YAML&#xff09; 和 命令式&#xff08;kubectl&#xff09; 两种&#xff1a; (1) 声明式部署&#xff08;推荐&#xff09; 通过 YAML 文件定…...

人形机器人动作策略 ∼ 人类动作策略

25年3月来自UCSD、CMU、西雅图 UW、MIT 和 Apple 公司的论文“Humanoid Policy ∼ Human Policy”。 利用多样化数据训练人形机器人的操作策略&#xff0c;可以增强其在跨任务和平台的鲁棒性和泛化能力。然而&#xff0c;仅从机器人演示中学习需要耗费大量的人力&#xff0c;需…...

MySQL事务详解:从5.7到8.0的变化

MySQL事务详解&#xff1a;从5.7到8.0的变化 引言 在关系型数据库管理系统&#xff08;RDBMS&#xff09;中&#xff0c;事务是一个核心概念&#xff0c;它确保了数据的一致性和可靠性。MySQL作为最流行的开源RDBMS之一&#xff0c;其事务处理机制在不同的版本中经历了重要的…...

conda常用命令简解

以下是conda常用命令的汇总: 创建一个新环境&#xff1a; conda create -n your_env_name pythonX.X 激活某个环境&#xff1a; activate your_env_name 安装包&#xff1a; conda install [package] 查看安装了哪些包&#xff1a; conda list 查看当前有哪些虚拟环境&…...

数据科学与机器学习:前沿技术研究

数据科学与机器学习:前沿技术研究 摘要 本文探讨了数据科学与机器学习领域的三个前沿方向:自适应机器学习模型、联邦学习隐私与保护以及多模态数据处理。通过理论分析、算法设计和实验验证,展示了这些技术在解决实际问题中的潜力和挑战。自适应机器学习模型能够根据数据变化…...

个人博客测试报告

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

Sentinel源码—3.ProcessorSlot的执行过程一

大纲 1.NodeSelectorSlot构建资源调用树 2.LogSlot和StatisticSlot采集资源的数据 3.Sentinel监听器模式的规则对象与规则管理 4.AuthoritySlot控制黑白名单权限 5.SystemSlot根据系统保护规则进行流控 1.NodeSelectorSlot构建资源调用树 (1)Entry的处理链的执行入口 (2…...

datagrip连接mysql问题5.7.26

1.Case sensitivity: plainmixed, delimitedexac Remote host terminated the handshake. 区分大小写&#xff1a;plain混合&#xff0c;分隔exac 远程主机终止了握手。 原因:usessl 参数用于指定是否使用 SSL&#xff08;Secure Sockets Layer&#xff09;加密来保护数据传…...

【电路笔记】-变压器构造

变压器构造 文章目录 变压器构造1、概述2、变压器铁芯的构造3、变压器叠片4、变压器绕组排列5、变压器点定位6、变压器铁芯损耗6.1 磁滞损耗6.2 涡流损耗6.3 铜损耗一个简单的双绕组变压器构造包括每个绕组分别缠绕在一个独立的软铁肢或磁芯上,这提供了必要的磁路。 1、概述 …...

阿里云集群开启debug

1、安装 kubectl Macos brew install kubectl Windows&#xff1a; https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下载后&#xff0c;放到任意目录 2、配置连接信息 mac 将以下内容复制到计算机 $HOME/.kube/config 文件下: windows 不同集…...